{"version":3,"file":"asoftwareworld-qrcode.mjs","sources":["../../../projects/qr-code/src/lib/api/modes.ts","../../../projects/qr-code/src/lib/tools/getMode.ts","../../../projects/qr-code/src/lib/tools/merge.ts","../../../projects/qr-code/src/lib/tools/downloadURI.ts","../../../projects/qr-code/src/lib/tools/calculateImageSize.ts","../../../projects/qr-code/src/lib/api/errorCorrectionPercents.ts","../../../projects/qr-code/src/lib/api/middleShapeTypes.ts","../../../projects/qr-code/src/lib/draw/middle-shape/canvas/qr-middle-shape.ts","../../../projects/qr-code/src/lib/api/cornerOuterShapeTypes.ts","../../../projects/qr-code/src/lib/draw/corner-outer-shape/canvas/qr-corner-outer-shape.ts","../../../projects/qr-code/src/lib/api/cornerInnerShapeTypes.ts","../../../projects/qr-code/src/lib/draw/corner-inner-shape/canvas/qr-corner-inner-shape.ts","../../../projects/qr-code/src/lib/api/gradientTypes.ts","../../../projects/qr-code/src/lib/core/qr-canvas.ts","../../../projects/qr-code/src/lib/draw/middle-shape/svg/qr-middle-shape.ts","../../../projects/qr-code/src/lib/draw/corner-outer-shape/svg/qr-corner-outer-shape.ts","../../../projects/qr-code/src/lib/draw/corner-inner-shape/svg/qr-corner-inner-shape.ts","../../../projects/qr-code/src/lib/core/qr-svg.ts","../../../projects/qr-code/src/lib/api/drawTypes.ts","../../../projects/qr-code/src/lib/api/qrTypes.ts","../../../projects/qr-code/src/lib/api/errorCorrectionLevels.ts","../../../projects/qr-code/src/lib/core/qr-options.ts","../../../projects/qr-code/src/lib/tools/sanitizeOptions.ts","../../../projects/qr-code/src/lib/core/qr-code-maker.ts","../../../projects/qr-code/src/lib/qr-code.component.ts","../../../projects/qr-code/src/lib/qr-code.module.ts","../../../projects/qr-code/src/public-api.ts","../../../projects/qr-code/src/asoftwareworld-qrcode.ts"],"sourcesContent":["/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport { Mode } from '../types/type';\r\n\r\ninterface Modes {\r\n    [key: string]: Mode;\r\n}\r\n\r\nexport default {\r\n    numeric: 'Numeric',\r\n    alphanumeric: 'Alphanumeric',\r\n    byte: 'Byte',\r\n    kanji: 'Kanji'\r\n} as Modes;\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport modes from '../api/modes';\r\nimport { Mode } from '../types/type';\r\n\r\nexport default function getMode(data: string): Mode {\r\n    switch (true) {\r\n        case /^[0-9]*$/.test(data):\r\n            return modes['numeric'];\r\n        case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\r\n            return modes['alphanumeric'];\r\n        default:\r\n            return modes['byte'];\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport { UnknownObject } from '../types/type';\r\n\r\nconst isObject = (obj: Record<string, unknown>): boolean => !!obj && typeof obj === 'object' && !Array.isArray(obj);\r\n\r\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\r\n    if (!sources.length) return target;\r\n    const source = sources.shift();\r\n    if (source === undefined || !isObject(target) || !isObject(source)) return target;\r\n    target = { ...target };\r\n    Object.keys(source).forEach((key: string): void => {\r\n        const targetValue = target[key];\r\n        const sourceValue = source[key];\r\n\r\n        if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\r\n            target[key] = sourceValue;\r\n        } else if (isObject(targetValue) && isObject(sourceValue)) {\r\n            target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\r\n        } else {\r\n            target[key] = sourceValue;\r\n        }\r\n    });\r\n\r\n    return mergeDeep(target, ...sources);\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nexport default function downloadURI(uri: string, name: string): void {\r\n    const link = document.createElement('a');\r\n    link.download = name;\r\n    link.href = uri;\r\n    document.body.appendChild(link);\r\n    link.click();\r\n    document.body.removeChild(link);\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\ninterface ImageSizeOptions {\r\n    originalHeight: number;\r\n    originalWidth: number;\r\n    maxHiddenDots: number;\r\n    maxHiddenAxisDots?: number;\r\n    dotSize: number;\r\n}\r\n\r\ninterface ImageSizeResult {\r\n    height: number;\r\n    width: number;\r\n    hideYDots: number;\r\n    hideXDots: number;\r\n}\r\n\r\nexport default function calculateImageSize({\r\n    originalHeight,\r\n    originalWidth,\r\n    maxHiddenDots,\r\n    maxHiddenAxisDots,\r\n    dotSize\r\n}: ImageSizeOptions): ImageSizeResult {\r\n    const hideDots = { x: 0, y: 0 };\r\n    const imageSize = { x: 0, y: 0 };\r\n\r\n    if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\r\n        return {\r\n            height: 0,\r\n            width: 0,\r\n            hideYDots: 0,\r\n            hideXDots: 0\r\n        };\r\n    }\r\n\r\n    const k = originalHeight / originalWidth;\r\n\r\n    //Getting the maximum possible axis hidden dots\r\n    hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\r\n    //The count of hidden dot's can't be less than 1\r\n    if (hideDots.x <= 0) hideDots.x = 1;\r\n    //Check the limit of the maximum allowed axis hidden dots\r\n    if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\r\n    //The count of dots should be odd\r\n    if (hideDots.x % 2 === 0) hideDots.x--;\r\n    imageSize.x = hideDots.x * dotSize;\r\n    //Calculate opposite axis hidden dots based on axis value.\r\n    //The value will be odd.\r\n    //We use ceil to prevent dots covering by the image.\r\n    hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\r\n    imageSize.y = Math.round(imageSize.x * k);\r\n    //If the result dots count is bigger than max - then decrease size and calculate again\r\n    if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\r\n        if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\r\n            hideDots.y = maxHiddenAxisDots;\r\n            if (hideDots.y % 2 === 0) hideDots.x--;\r\n        } else {\r\n            hideDots.y -= 2;\r\n        }\r\n        imageSize.y = hideDots.y * dotSize;\r\n        hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\r\n        imageSize.x = Math.round(imageSize.y / k);\r\n    }\r\n\r\n    return {\r\n        height: imageSize.y,\r\n        width: imageSize.x,\r\n        hideYDots: hideDots.y,\r\n        hideXDots: hideDots.x\r\n    };\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\ninterface ErrorCorrectionPercents {\r\n    [key: string]: number;\r\n}\r\n\r\nexport default {\r\n    L: 0.07,\r\n    M: 0.15,\r\n    Q: 0.25,\r\n    H: 0.3\r\n} as ErrorCorrectionPercents;\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport { MiddleShapeTypes } from '../types/type';\r\n\r\nexport default {\r\n    circle: 'circle',\r\n    rounded: 'rounded',\r\n    smooth: 'smooth',\r\n    smoothRounded: 'smooth-rounded',\r\n    square: 'square',\r\n    thinRounded: 'thin-rounded'\r\n} as MiddleShapeTypes;\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport middleShapeTypes from '../../../api/middleShapeTypes';\r\nimport {\r\n    MiddleShapeType,\r\n    GetNeighbor,\r\n    RotateFigureArgsCanvas,\r\n    BasicFigureDrawArgsCanvas,\r\n    DrawArgsCanvas\r\n} from '../../../types/type';\r\n\r\nexport default class QRMiddleShape {\r\n    _context: CanvasRenderingContext2D;\r\n    _type: MiddleShapeType;\r\n\r\n    constructor({ context, type }: { context: CanvasRenderingContext2D; type: MiddleShapeType }) {\r\n        this._context = context;\r\n        this._type = type;\r\n    }\r\n\r\n    draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\r\n        const context = this._context;\r\n        const type = this._type;\r\n        let drawFunction;\r\n\r\n        switch (type) {\r\n            case middleShapeTypes['circle']:\r\n                drawFunction = this._drawCircle;\r\n                break;\r\n            case middleShapeTypes['smooth']:\r\n                drawFunction = this._drawSmooth;\r\n                break;\r\n            case middleShapeTypes['smoothRounded']:\r\n                drawFunction = this._drawSmoothRounded;\r\n                break;\r\n            case middleShapeTypes['rounded']:\r\n                drawFunction = this._drawRounded;\r\n                break;\r\n            case middleShapeTypes['thinRounded']:\r\n                drawFunction = this._drawThinRounded;\r\n                break;\r\n            case middleShapeTypes['square']:\r\n            default:\r\n                drawFunction = this._drawSquare;\r\n        }\r\n\r\n        drawFunction.call(this, { x, y, size, context, getNeighbor });\r\n    }\r\n\r\n    _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\r\n        const cx = x + size / 2;\r\n        const cy = y + size / 2;\r\n\r\n        context.translate(cx, cy);\r\n        rotation && context.rotate(rotation);\r\n        draw();\r\n        context.closePath();\r\n        rotation && context.rotate(-rotation);\r\n        context.translate(-cx, -cy);\r\n    }\r\n\r\n    _basicCircle(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.arc(0, 0, size / 2, 0, Math.PI * 2);\r\n            }\r\n        });\r\n    }\r\n\r\n    _basicSquare(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.rect(-size / 2, -size / 2, size, size);\r\n            }\r\n        });\r\n    }\r\n\r\n    //if rotation === 0 - right side is rounded\r\n    _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\r\n                context.lineTo(-size / 2, size / 2);\r\n                context.lineTo(-size / 2, -size / 2);\r\n                context.lineTo(0, -size / 2);\r\n            }\r\n        });\r\n    }\r\n\r\n    //if rotation === 0 - top right corner is rounded\r\n    _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.arc(0, 0, size / 2, -Math.PI / 2, 0);\r\n                context.lineTo(size / 2, size / 2);\r\n                context.lineTo(-size / 2, size / 2);\r\n                context.lineTo(-size / 2, -size / 2);\r\n                context.lineTo(0, -size / 2);\r\n            }\r\n        });\r\n    }\r\n\r\n    //if rotation === 0 - top right corner is rounded\r\n    _basicCornerThinRounded(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\r\n                context.lineTo(-size / 2, size / 2);\r\n                context.lineTo(-size / 2, -size / 2);\r\n            }\r\n        });\r\n    }\r\n\r\n    _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.arc(0, 0, size / 2, -Math.PI / 2, 0);\r\n                context.lineTo(size / 2, size / 2);\r\n                context.lineTo(0, size / 2);\r\n                context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\r\n                context.lineTo(-size / 2, -size / 2);\r\n                context.lineTo(0, -size / 2);\r\n            }\r\n        });\r\n    }\r\n\r\n    _basicCornersThinRounded(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\r\n                context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\r\n            }\r\n        });\r\n    }\r\n\r\n    _drawCircle({ x, y, size, context }: DrawArgsCanvas): void {\r\n        this._basicCircle({ x, y, size, context, rotation: 0 });\r\n    }\r\n\r\n    _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\r\n        this._basicSquare({ x, y, size, context, rotation: 0 });\r\n    }\r\n\r\n    _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\r\n        const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\r\n        const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\r\n        const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\r\n        const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\r\n\r\n        const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\r\n\r\n        if (neighborsCount === 0) {\r\n            this._basicCircle({ x, y, size, context, rotation: 0 });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\r\n            this._basicSquare({ x, y, size, context, rotation: 0 });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount === 2) {\r\n            let rotation = 0;\r\n\r\n            if (leftNeighbor && topNeighbor) {\r\n                rotation = Math.PI / 2;\r\n            } else if (topNeighbor && rightNeighbor) {\r\n                rotation = Math.PI;\r\n            } else if (rightNeighbor && bottomNeighbor) {\r\n                rotation = -Math.PI / 2;\r\n            }\r\n\r\n            this._basicCornerRounded({ x, y, size, context, rotation });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount === 1) {\r\n            let rotation = 0;\r\n\r\n            if (topNeighbor) {\r\n                rotation = Math.PI / 2;\r\n            } else if (rightNeighbor) {\r\n                rotation = Math.PI;\r\n            } else if (bottomNeighbor) {\r\n                rotation = -Math.PI / 2;\r\n            }\r\n\r\n            this._basicSideRounded({ x, y, size, context, rotation });\r\n            return;\r\n        }\r\n    }\r\n\r\n    _drawThinRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\r\n        const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\r\n        const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\r\n        const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\r\n        const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\r\n\r\n        const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\r\n\r\n        if (neighborsCount === 0) {\r\n            this._basicCircle({ x, y, size, context, rotation: 0 });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\r\n            this._basicSquare({ x, y, size, context, rotation: 0 });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount === 2) {\r\n            let rotation = 0;\r\n\r\n            if (leftNeighbor && topNeighbor) {\r\n                rotation = Math.PI / 2;\r\n            } else if (topNeighbor && rightNeighbor) {\r\n                rotation = Math.PI;\r\n            } else if (rightNeighbor && bottomNeighbor) {\r\n                rotation = -Math.PI / 2;\r\n            }\r\n\r\n            this._basicCornerThinRounded({ x, y, size, context, rotation });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount === 1) {\r\n            let rotation = 0;\r\n\r\n            if (topNeighbor) {\r\n                rotation = Math.PI / 2;\r\n            } else if (rightNeighbor) {\r\n                rotation = Math.PI;\r\n            } else if (bottomNeighbor) {\r\n                rotation = -Math.PI / 2;\r\n            }\r\n\r\n            this._basicSideRounded({ x, y, size, context, rotation });\r\n            return;\r\n        }\r\n    }\r\n\r\n    _drawSmooth({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\r\n        const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\r\n        const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\r\n        const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\r\n        const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\r\n\r\n        const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\r\n\r\n        if (neighborsCount === 0) {\r\n            this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        if (!leftNeighbor && !topNeighbor) {\r\n            this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        if (!rightNeighbor && !bottomNeighbor) {\r\n            this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        this._basicSquare({ x, y, size, context, rotation: 0 });\r\n    }\r\n\r\n    _drawSmoothRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\r\n        const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\r\n        const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\r\n        const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\r\n        const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\r\n\r\n        const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\r\n\r\n        if (neighborsCount === 0) {\r\n            this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        if (!leftNeighbor && !topNeighbor) {\r\n            this._basicCornerThinRounded({ x, y, size, context, rotation: -Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        if (!rightNeighbor && !bottomNeighbor) {\r\n            this._basicCornerThinRounded({ x, y, size, context, rotation: Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        this._basicSquare({ x, y, size, context, rotation: 0 });\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport { CornerOuterShapeTypes } from '../types/type';\r\n\r\nexport default {\r\n    circle: 'circle',\r\n    square: 'square',\r\n    rounded: 'rounded'\r\n} as CornerOuterShapeTypes;\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport cornerOuterShapeTypes from '../../../api/cornerOuterShapeTypes';\r\nimport { CornerOuterShapeType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from '../../../types/type';\r\n\r\nexport default class QRCornerOuterShape {\r\n    _context: CanvasRenderingContext2D;\r\n    _type: CornerOuterShapeType;\r\n\r\n    constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerOuterShapeType }) {\r\n        this._context = context;\r\n        this._type = type;\r\n    }\r\n\r\n    draw(x: number, y: number, size: number, rotation: number): void {\r\n        const context = this._context;\r\n        const type = this._type;\r\n        let drawFunction;\r\n\r\n        switch (type) {\r\n            case cornerOuterShapeTypes['square']:\r\n                drawFunction = this._drawSquare;\r\n                break;\r\n            case cornerOuterShapeTypes['rounded']:\r\n                drawFunction = this._drawRounded;\r\n                break;\r\n            case cornerOuterShapeTypes['circle']:\r\n            default:\r\n                drawFunction = this._drawCircle;\r\n        }\r\n\r\n        drawFunction.call(this, { x, y, size, context, rotation });\r\n    }\r\n\r\n    _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\r\n        const cx = x + size / 2;\r\n        const cy = y + size / 2;\r\n\r\n        context.translate(cx, cy);\r\n        rotation && context.rotate(rotation);\r\n        draw();\r\n        context.closePath();\r\n        rotation && context.rotate(-rotation);\r\n        context.translate(-cx, -cy);\r\n    }\r\n\r\n    _basicCircle(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n        const dotSize = size / 7;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.arc(0, 0, size / 2, 0, Math.PI * 2);\r\n                context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\r\n            }\r\n        });\r\n    }\r\n\r\n    _basicSquare(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n        const dotSize = size / 7;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.rect(-size / 2, -size / 2, size, size);\r\n                context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\r\n            }\r\n        });\r\n    }\r\n\r\n    _basicRounded(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n        const dotSize = size / 7;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\r\n                context.lineTo(dotSize, -3.5 * dotSize);\r\n                context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\r\n                context.lineTo(3.5 * dotSize, -dotSize);\r\n                context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\r\n                context.lineTo(-dotSize, 3.5 * dotSize);\r\n                context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\r\n                context.lineTo(-3.5 * dotSize, -dotSize);\r\n\r\n                context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\r\n                context.lineTo(dotSize, -2.5 * dotSize);\r\n                context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\r\n                context.lineTo(2.5 * dotSize, -dotSize);\r\n                context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\r\n                context.lineTo(-dotSize, 2.5 * dotSize);\r\n                context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\r\n                context.lineTo(-2.5 * dotSize, -dotSize);\r\n            }\r\n        });\r\n    }\r\n\r\n    _drawCircle({ x, y, size, context, rotation }: DrawArgsCanvas): void {\r\n        this._basicCircle({ x, y, size, context, rotation });\r\n    }\r\n\r\n    _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\r\n        this._basicSquare({ x, y, size, context, rotation });\r\n    }\r\n\r\n    _drawRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\r\n        this._basicRounded({ x, y, size, context, rotation });\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { CornerInnerShapeTypes } from '../types/type';\r\n\r\nexport default {\r\n    circle: 'circle',\r\n    square: 'square'\r\n} as CornerInnerShapeTypes;\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport cornerInnerShapeTypes from '../../../api/cornerInnerShapeTypes';\r\nimport { CornerInnerShapeType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from '../../../types/type';\r\n\r\nexport default class QRCornerInnerShape {\r\n    _context: CanvasRenderingContext2D;\r\n    _type: CornerInnerShapeType;\r\n\r\n    constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerInnerShapeType }) {\r\n        this._context = context;\r\n        this._type = type;\r\n    }\r\n\r\n    draw(x: number, y: number, size: number, rotation: number): void {\r\n        const context = this._context;\r\n        const type = this._type;\r\n        let drawFunction;\r\n\r\n        switch (type) {\r\n            case cornerInnerShapeTypes['square']:\r\n                drawFunction = this._drawSquare;\r\n                break;\r\n            case cornerInnerShapeTypes['circle']:\r\n            default:\r\n                drawFunction = this._drawCircle;\r\n        }\r\n\r\n        drawFunction.call(this, { x, y, size, context, rotation });\r\n    }\r\n\r\n    _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\r\n        const cx = x + size / 2;\r\n        const cy = y + size / 2;\r\n\r\n        context.translate(cx, cy);\r\n        rotation && context.rotate(rotation);\r\n        draw();\r\n        context.closePath();\r\n        rotation && context.rotate(-rotation);\r\n        context.translate(-cx, -cy);\r\n    }\r\n\r\n    _basicCircle(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.arc(0, 0, size / 2, 0, Math.PI * 2);\r\n            }\r\n        });\r\n    }\r\n\r\n    _basicSquare(args: BasicFigureDrawArgsCanvas): void {\r\n        const { size, context } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                context.rect(-size / 2, -size / 2, size, size);\r\n            }\r\n        });\r\n    }\r\n\r\n    _drawCircle({ x, y, size, context, rotation }: DrawArgsCanvas): void {\r\n        this._basicCircle({ x, y, size, context, rotation });\r\n    }\r\n\r\n    _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\r\n        this._basicSquare({ x, y, size, context, rotation });\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport { GradientTypes } from '../types/type';\r\n\r\nexport default {\r\n    radial: 'radial',\r\n    linear: 'linear'\r\n} as GradientTypes;\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport calculateImageSize from '../tools/calculateImageSize';\r\nimport errorCorrectionPercents from '../api/errorCorrectionPercents';\r\nimport QRMiddleShape from '../draw/middle-shape/canvas/qr-middle-shape';\r\nimport QRCornerOuterShape from '../draw/corner-outer-shape/canvas/qr-corner-outer-shape';\r\nimport QRCornerInnerShape from '../draw/corner-inner-shape/canvas/qr-corner-inner-shape';\r\nimport { RequiredSettings } from './qr-options';\r\nimport gradientTypes from '../api/gradientTypes';\r\nimport { QRCode, Gradient, FilterFunction } from '../types/type';\r\n\r\nconst squareMask = [\r\n    [1, 1, 1, 1, 1, 1, 1],\r\n    [1, 0, 0, 0, 0, 0, 1],\r\n    [1, 0, 0, 0, 0, 0, 1],\r\n    [1, 0, 0, 0, 0, 0, 1],\r\n    [1, 0, 0, 0, 0, 0, 1],\r\n    [1, 0, 0, 0, 0, 0, 1],\r\n    [1, 1, 1, 1, 1, 1, 1]\r\n];\r\n\r\nconst dotMask = [\r\n    [0, 0, 0, 0, 0, 0, 0],\r\n    [0, 0, 0, 0, 0, 0, 0],\r\n    [0, 0, 1, 1, 1, 0, 0],\r\n    [0, 0, 1, 1, 1, 0, 0],\r\n    [0, 0, 1, 1, 1, 0, 0],\r\n    [0, 0, 0, 0, 0, 0, 0],\r\n    [0, 0, 0, 0, 0, 0, 0]\r\n];\r\n\r\nexport default class AswQrCanvas {\r\n    _canvas: HTMLCanvasElement;\r\n    _options: RequiredSettings;\r\n    _qr?: QRCode;\r\n    _image?: HTMLImageElement;\r\n\r\n    //TODO don't pass all options to this class\r\n    constructor(options: RequiredSettings) {\r\n        this._canvas = document.createElement('canvas');\r\n        this._canvas.width = options.width;\r\n        this._canvas.height = options.height;\r\n        this._options = options;\r\n    }\r\n\r\n    get context(): CanvasRenderingContext2D | null {\r\n        return this._canvas.getContext('2d');\r\n    }\r\n\r\n    get width(): number {\r\n        return this._canvas.width;\r\n    }\r\n\r\n    get height(): number {\r\n        return this._canvas.height;\r\n    }\r\n\r\n    getCanvas(): HTMLCanvasElement {\r\n        return this._canvas;\r\n    }\r\n\r\n    clear(): void {\r\n        const canvasContext = this.context;\r\n\r\n        if (canvasContext) {\r\n            canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\r\n        }\r\n    }\r\n\r\n    async drawQR(qr: QRCode): Promise<void> {\r\n        const count = qr.getModuleCount();\r\n        const minSize = Math.min(this._options.width, this._options.height) - this._options.outerMargin * 2;\r\n        const dotSize = Math.floor(minSize / count);\r\n        let drawImageSize = {\r\n            hideXDots: 0,\r\n            hideYDots: 0,\r\n            width: 0,\r\n            height: 0\r\n        };\r\n\r\n        this._qr = qr;\r\n\r\n        if (this._options.logo) {\r\n            await this.loadImage();\r\n            if (!this._image) return;\r\n            const { logoStyle, density } = this._options;\r\n            const coverLevel = logoStyle.logoSize * errorCorrectionPercents[density.errorCorrectionLevel];\r\n            const maxHiddenDots = Math.floor(coverLevel * count * count);\r\n\r\n            drawImageSize = calculateImageSize({\r\n                originalWidth: this._image.width,\r\n                originalHeight: this._image.height,\r\n                maxHiddenDots,\r\n                maxHiddenAxisDots: count - 14,\r\n                dotSize\r\n            });\r\n        }\r\n\r\n        this.clear();\r\n        this.drawBackground();\r\n        this.drawDots((i: number, j: number): boolean => {\r\n            if (this._options.logoStyle.hideBackgroundCircle) {\r\n                if (\r\n                    i >= (count - drawImageSize.hideXDots) / 2 &&\r\n                    i < (count + drawImageSize.hideXDots) / 2 &&\r\n                    j >= (count - drawImageSize.hideYDots) / 2 &&\r\n                    j < (count + drawImageSize.hideYDots) / 2\r\n                ) {\r\n                    return false;\r\n                }\r\n            }\r\n\r\n            if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\r\n                return false;\r\n            }\r\n\r\n            if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\r\n                return false;\r\n            }\r\n\r\n            return true;\r\n        });\r\n        this.drawCorners();\r\n\r\n        if (this._options.logo) {\r\n            this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\r\n        }\r\n    }\r\n\r\n    drawBackground(): void {\r\n        const canvasContext = this.context;\r\n        const options = this._options;\r\n\r\n        if (canvasContext) {\r\n            if (options.backgroundStyle.gradient) {\r\n                const gradientOptions = options.backgroundStyle.gradient;\r\n                const gradient = this._createGradient({\r\n                    context: canvasContext,\r\n                    options: gradientOptions,\r\n                    additionalRotation: 0,\r\n                    x: 0,\r\n                    y: 0,\r\n                    size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\r\n                });\r\n\r\n                gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\r\n                    gradient.addColorStop(offset, color);\r\n                });\r\n\r\n                canvasContext.fillStyle = gradient;\r\n            } else if (options.backgroundStyle.color) {\r\n                canvasContext.fillStyle = options.backgroundStyle.color;\r\n            }\r\n            canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\r\n        }\r\n    }\r\n\r\n    drawDots(filter?: FilterFunction): void {\r\n        if (!this._qr) {\r\n            throw 'QR code is not defined';\r\n        }\r\n\r\n        const canvasContext = this.context;\r\n\r\n        if (!canvasContext) {\r\n            throw 'QR code is not defined';\r\n        }\r\n\r\n        const options = this._options;\r\n        const count = this._qr.getModuleCount();\r\n\r\n        if (count > options.width || count > options.height) {\r\n            throw 'The canvas is too small.';\r\n        }\r\n\r\n        const minSize = Math.min(options.width, options.height) - options.outerMargin * 2;\r\n        const dotSize = Math.floor(minSize / count);\r\n        const xBeginning = Math.floor((options.width - count * dotSize) / 2);\r\n        const yBeginning = Math.floor((options.height - count * dotSize) / 2);\r\n        const dot = new QRMiddleShape({ context: canvasContext, type: options.middleShape.type });\r\n\r\n        canvasContext.beginPath();\r\n\r\n        for (let i = 0; i < count; i++) {\r\n            for (let j = 0; j < count; j++) {\r\n                if (filter && !filter(i, j)) {\r\n                    continue;\r\n                }\r\n                if (!this._qr.isDark(i, j)) {\r\n                    continue;\r\n                }\r\n                dot.draw(\r\n                    xBeginning + j * dotSize,\r\n                    yBeginning + i * dotSize,\r\n                    dotSize,\r\n                    (xOffset: number, yOffset: number): boolean => {\r\n                        if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\r\n                        if (filter && !filter(i + xOffset, j + yOffset)) return false;\r\n                        return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\r\n                    }\r\n                );\r\n            }\r\n        }\r\n\r\n        if (options.middleShape.gradient) {\r\n            const gradientOptions = options.middleShape.gradient;\r\n            const gradient = this._createGradient({\r\n                context: canvasContext,\r\n                options: gradientOptions,\r\n                additionalRotation: 0,\r\n                x: xBeginning,\r\n                y: yBeginning,\r\n                size: count * dotSize\r\n            });\r\n\r\n            gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\r\n                gradient.addColorStop(offset, color);\r\n            });\r\n\r\n            canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\r\n        } else if (options.middleShape.color) {\r\n            canvasContext.fillStyle = canvasContext.strokeStyle = options.middleShape.color;\r\n        }\r\n\r\n        canvasContext.fill('evenodd');\r\n    }\r\n\r\n    drawCorners(filter?: FilterFunction): void {\r\n        if (!this._qr) {\r\n            throw 'QR code is not defined';\r\n        }\r\n\r\n        const canvasContext = this.context;\r\n\r\n        if (!canvasContext) {\r\n            throw 'QR code is not defined';\r\n        }\r\n\r\n        const options = this._options;\r\n\r\n        const count = this._qr.getModuleCount();\r\n        const minSize = Math.min(options.width, options.height) - options.outerMargin * 2;\r\n        const dotSize = Math.floor(minSize / count);\r\n        const cornersSquareSize = dotSize * 7;\r\n        const cornersDotSize = dotSize * 3;\r\n        const xBeginning = Math.floor((options.width - count * dotSize) / 2);\r\n        const yBeginning = Math.floor((options.height - count * dotSize) / 2);\r\n\r\n        [\r\n            [0, 0, 0],\r\n            [1, 0, Math.PI / 2],\r\n            [0, 1, -Math.PI / 2]\r\n        ].forEach(([column, row, rotation]) => {\r\n            if (filter && !filter(column, row)) {\r\n                return;\r\n            }\r\n\r\n            const x = xBeginning + column * dotSize * (count - 7);\r\n            const y = yBeginning + row * dotSize * (count - 7);\r\n\r\n            if (options.cornerOuterShape?.type) {\r\n                const cornersSquare = new QRCornerOuterShape({ context: canvasContext, type: options.cornerOuterShape?.type });\r\n\r\n                canvasContext.beginPath();\r\n                cornersSquare.draw(x, y, cornersSquareSize, rotation);\r\n            } else {\r\n                const dot = new QRMiddleShape({ context: canvasContext, type: options.middleShape.type });\r\n\r\n                canvasContext.beginPath();\r\n\r\n                for (let i = 0; i < squareMask.length; i++) {\r\n                    for (let j = 0; j < squareMask[i].length; j++) {\r\n                        if (!squareMask[i]?.[j]) {\r\n                            continue;\r\n                        }\r\n\r\n                        dot.draw(\r\n                            x + i * dotSize,\r\n                            y + j * dotSize,\r\n                            dotSize,\r\n                            (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\r\n                        );\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (options.cornerOuterShape?.gradient) {\r\n                const gradientOptions = options.cornerOuterShape.gradient;\r\n                const gradient = this._createGradient({\r\n                    context: canvasContext,\r\n                    options: gradientOptions,\r\n                    additionalRotation: rotation,\r\n                    x,\r\n                    y,\r\n                    size: cornersSquareSize\r\n                });\r\n\r\n                gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\r\n                    gradient.addColorStop(offset, color);\r\n                });\r\n\r\n                canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\r\n            } else if (options.cornerOuterShape?.color) {\r\n                canvasContext.fillStyle = canvasContext.strokeStyle = options.cornerOuterShape.color;\r\n            }\r\n\r\n            canvasContext.fill('evenodd');\r\n\r\n            if (options.cornerInnerShape?.type) {\r\n                const cornersDot = new QRCornerInnerShape({ context: canvasContext, type: options.cornerInnerShape?.type });\r\n\r\n                canvasContext.beginPath();\r\n                cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\r\n            } else {\r\n                const dot = new QRMiddleShape({ context: canvasContext, type: options.middleShape.type });\r\n\r\n                canvasContext.beginPath();\r\n\r\n                for (let i = 0; i < dotMask.length; i++) {\r\n                    for (let j = 0; j < dotMask[i].length; j++) {\r\n                        if (!dotMask[i]?.[j]) {\r\n                            continue;\r\n                        }\r\n\r\n                        dot.draw(\r\n                            x + i * dotSize,\r\n                            y + j * dotSize,\r\n                            dotSize,\r\n                            (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\r\n                        );\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (options.cornerInnerShape?.gradient) {\r\n                const gradientOptions = options.cornerInnerShape.gradient;\r\n                const gradient = this._createGradient({\r\n                    context: canvasContext,\r\n                    options: gradientOptions,\r\n                    additionalRotation: rotation,\r\n                    x: x + dotSize * 2,\r\n                    y: y + dotSize * 2,\r\n                    size: cornersDotSize\r\n                });\r\n\r\n                gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\r\n                    gradient.addColorStop(offset, color);\r\n                });\r\n\r\n                canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\r\n            } else if (options.cornerInnerShape?.color) {\r\n                canvasContext.fillStyle = canvasContext.strokeStyle = options.cornerInnerShape.color;\r\n            }\r\n\r\n            canvasContext.fill('evenodd');\r\n        });\r\n    }\r\n\r\n    loadImage(): Promise<void> {\r\n        return new Promise((resolve, reject) => {\r\n            const options = this._options;\r\n            const image = new Image();\r\n\r\n            if (!options.logo) {\r\n                return reject('Image is not defined');\r\n            }\r\n\r\n            if (typeof options.logoStyle.crossOrigin === 'string') {\r\n                image.crossOrigin = options.logoStyle.crossOrigin;\r\n            }\r\n\r\n            this._image = image;\r\n            image.onload = (): void => {\r\n                resolve();\r\n            };\r\n            image.src = options.logo;\r\n        });\r\n    }\r\n\r\n    drawImage({\r\n        width,\r\n        height,\r\n        count,\r\n        dotSize\r\n    }: {\r\n        width: number;\r\n        height: number;\r\n        count: number;\r\n        dotSize: number;\r\n    }): void {\r\n        const canvasContext = this.context;\r\n\r\n        if (!canvasContext) {\r\n            throw 'canvasContext is not defined';\r\n        }\r\n\r\n        if (!this._image) {\r\n            throw 'image is not defined';\r\n        }\r\n\r\n        const options = this._options;\r\n        const xBeginning = Math.floor((options.width - count * dotSize) / 2);\r\n        const yBeginning = Math.floor((options.height - count * dotSize) / 2);\r\n        const dx = xBeginning + options.logoStyle.logoMargin + (count * dotSize - width) / 2;\r\n        const dy = yBeginning + options.logoStyle.logoMargin + (count * dotSize - height) / 2;\r\n        const dw = width - options.logoStyle.logoMargin * 2;\r\n        const dh = height - options.logoStyle.logoMargin * 2;\r\n\r\n        canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\r\n    }\r\n\r\n    _createGradient({\r\n        context,\r\n        options,\r\n        additionalRotation,\r\n        x,\r\n        y,\r\n        size\r\n    }: {\r\n        context: CanvasRenderingContext2D;\r\n        options: Gradient;\r\n        additionalRotation: number;\r\n        x: number;\r\n        y: number;\r\n        size: number;\r\n    }): CanvasGradient {\r\n        let gradient;\r\n\r\n        if (options.type === gradientTypes['radial']) {\r\n            gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\r\n        } else {\r\n            const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\r\n            const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\r\n            let x0 = x + size / 2;\r\n            let y0 = y + size / 2;\r\n            let x1 = x + size / 2;\r\n            let y1 = y + size / 2;\r\n\r\n            if (\r\n                (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\r\n                (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\r\n            ) {\r\n                x0 = x0 - size / 2;\r\n                y0 = y0 - (size / 2) * Math.tan(rotation);\r\n                x1 = x1 + size / 2;\r\n                y1 = y1 + (size / 2) * Math.tan(rotation);\r\n            } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\r\n                y0 = y0 - size / 2;\r\n                x0 = x0 - size / 2 / Math.tan(rotation);\r\n                y1 = y1 + size / 2;\r\n                x1 = x1 + size / 2 / Math.tan(rotation);\r\n            } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\r\n                x0 = x0 + size / 2;\r\n                y0 = y0 + (size / 2) * Math.tan(rotation);\r\n                x1 = x1 - size / 2;\r\n                y1 = y1 - (size / 2) * Math.tan(rotation);\r\n            } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\r\n                y0 = y0 + size / 2;\r\n                x0 = x0 + size / 2 / Math.tan(rotation);\r\n                y1 = y1 - size / 2;\r\n                x1 = x1 - size / 2 / Math.tan(rotation);\r\n            }\r\n\r\n            gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\r\n        }\r\n\r\n        return gradient;\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport middleShapeTypes from '../../../api/middleShapeTypes';\r\nimport { MiddleShapeType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from '../../../types/type';\r\n\r\nexport default class QRMiddleShape {\r\n    _element?: SVGElement;\r\n    _svg: SVGElement;\r\n    _type: MiddleShapeType;\r\n\r\n    constructor({ svg, type }: { svg: SVGElement; type: MiddleShapeType }) {\r\n        this._svg = svg;\r\n        this._type = type;\r\n    }\r\n\r\n    draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\r\n        const type = this._type;\r\n        let drawFunction;\r\n\r\n        switch (type) {\r\n            case middleShapeTypes['circle']:\r\n                drawFunction = this._drawCircle;\r\n                break;\r\n            case middleShapeTypes['smooth']:\r\n                drawFunction = this._drawSmooth;\r\n                break;\r\n            case middleShapeTypes['smoothRounded']:\r\n                drawFunction = this._drawSmoothRounded;\r\n                break;\r\n            case middleShapeTypes['rounded']:\r\n                drawFunction = this._drawRounded;\r\n                break;\r\n            case middleShapeTypes['thinRounded']:\r\n                drawFunction = this._drawThinRounded;\r\n                break;\r\n            case middleShapeTypes['square']:\r\n            default:\r\n                drawFunction = this._drawSquare;\r\n        }\r\n\r\n        drawFunction.call(this, { x, y, size, getNeighbor });\r\n    }\r\n\r\n    _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\r\n        const cx = x + size / 2;\r\n        const cy = y + size / 2;\r\n\r\n        draw();\r\n        this._element?.setAttribute('transform', `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\r\n    }\r\n\r\n    _basicCircle(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\r\n                this._element.setAttribute('cx', String(x + size / 2));\r\n                this._element.setAttribute('cy', String(y + size / 2));\r\n                this._element.setAttribute('r', String(size / 2));\r\n            }\r\n        });\r\n    }\r\n\r\n    _basicSquare(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n                this._element.setAttribute('x', String(x));\r\n                this._element.setAttribute('y', String(y));\r\n                this._element.setAttribute('width', String(size));\r\n                this._element.setAttribute('height', String(size));\r\n            }\r\n        });\r\n    }\r\n\r\n    //if rotation === 0 - right side is rounded\r\n    _basicSideRounded(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n                this._element.setAttribute(\r\n                    'd',\r\n                    `M ${x} ${y}` + //go to top left position\r\n                    `v ${size}` + //draw line to left bottom corner\r\n                    `h ${size / 2}` + //draw line to left bottom corner + half of size right\r\n                    `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    //if rotation === 0 - top right corner is rounded\r\n    _basicCornerRounded(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n                this._element.setAttribute(\r\n                    'd',\r\n                    `M ${x} ${y}` + //go to top left position\r\n                    `v ${size}` + //draw line to left bottom corner\r\n                    `h ${size}` + //draw line to right bottom corner\r\n                    `v ${-size / 2}` + //draw line to right bottom corner + half of size top\r\n                    `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    //if rotation === 0 - top right corner is rounded\r\n    _basicCornerThinRounded(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n                this._element.setAttribute(\r\n                    'd',\r\n                    `M ${x} ${y}` + //go to top left position\r\n                    `v ${size}` + //draw line to left bottom corner\r\n                    `h ${size}` + //draw line to right bottom corner\r\n                    `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    //if rotation === 0 - left bottom and right top corners are rounded\r\n    _basicCornersRounded(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n                this._element.setAttribute(\r\n                    'd',\r\n                    `M ${x} ${y}` + //go to left top position\r\n                    `v ${size / 2}` + //draw line to left top corner + half of size bottom\r\n                    `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\r\n                    `h ${size / 2}` + //draw line to right bottom corner\r\n                    `v ${-size / 2}` + //draw line to right bottom corner + half of size top\r\n                    `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    _drawCircle({ x, y, size }: DrawArgs): void {\r\n        this._basicCircle({ x, y, size, rotation: 0 });\r\n    }\r\n\r\n    _drawSquare({ x, y, size }: DrawArgs): void {\r\n        this._basicSquare({ x, y, size, rotation: 0 });\r\n    }\r\n\r\n    _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\r\n        const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\r\n        const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\r\n        const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\r\n        const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\r\n\r\n        const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\r\n\r\n        if (neighborsCount === 0) {\r\n            this._basicCircle({ x, y, size, rotation: 0 });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\r\n            this._basicSquare({ x, y, size, rotation: 0 });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount === 2) {\r\n            let rotation = 0;\r\n\r\n            if (leftNeighbor && topNeighbor) {\r\n                rotation = Math.PI / 2;\r\n            } else if (topNeighbor && rightNeighbor) {\r\n                rotation = Math.PI;\r\n            } else if (rightNeighbor && bottomNeighbor) {\r\n                rotation = -Math.PI / 2;\r\n            }\r\n\r\n            this._basicCornerRounded({ x, y, size, rotation });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount === 1) {\r\n            let rotation = 0;\r\n\r\n            if (topNeighbor) {\r\n                rotation = Math.PI / 2;\r\n            } else if (rightNeighbor) {\r\n                rotation = Math.PI;\r\n            } else if (bottomNeighbor) {\r\n                rotation = -Math.PI / 2;\r\n            }\r\n\r\n            this._basicSideRounded({ x, y, size, rotation });\r\n            return;\r\n        }\r\n    }\r\n\r\n    _drawThinRounded({ x, y, size, getNeighbor }: DrawArgs): void {\r\n        const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\r\n        const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\r\n        const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\r\n        const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\r\n\r\n        const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\r\n\r\n        if (neighborsCount === 0) {\r\n            this._basicCircle({ x, y, size, rotation: 0 });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\r\n            this._basicSquare({ x, y, size, rotation: 0 });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount === 2) {\r\n            let rotation = 0;\r\n\r\n            if (leftNeighbor && topNeighbor) {\r\n                rotation = Math.PI / 2;\r\n            } else if (topNeighbor && rightNeighbor) {\r\n                rotation = Math.PI;\r\n            } else if (rightNeighbor && bottomNeighbor) {\r\n                rotation = -Math.PI / 2;\r\n            }\r\n\r\n            this._basicCornerThinRounded({ x, y, size, rotation });\r\n            return;\r\n        }\r\n\r\n        if (neighborsCount === 1) {\r\n            let rotation = 0;\r\n\r\n            if (topNeighbor) {\r\n                rotation = Math.PI / 2;\r\n            } else if (rightNeighbor) {\r\n                rotation = Math.PI;\r\n            } else if (bottomNeighbor) {\r\n                rotation = -Math.PI / 2;\r\n            }\r\n\r\n            this._basicSideRounded({ x, y, size, rotation });\r\n            return;\r\n        }\r\n    }\r\n\r\n    _drawSmooth({ x, y, size, getNeighbor }: DrawArgs): void {\r\n        const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\r\n        const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\r\n        const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\r\n        const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\r\n\r\n        const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\r\n\r\n        if (neighborsCount === 0) {\r\n            this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        if (!leftNeighbor && !topNeighbor) {\r\n            this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        if (!rightNeighbor && !bottomNeighbor) {\r\n            this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        this._basicSquare({ x, y, size, rotation: 0 });\r\n    }\r\n\r\n    _drawSmoothRounded({ x, y, size, getNeighbor }: DrawArgs): void {\r\n        const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\r\n        const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\r\n        const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\r\n        const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\r\n\r\n        const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\r\n\r\n        if (neighborsCount === 0) {\r\n            this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        if (!leftNeighbor && !topNeighbor) {\r\n            this._basicCornerThinRounded({ x, y, size, rotation: -Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        if (!rightNeighbor && !bottomNeighbor) {\r\n            this._basicCornerThinRounded({ x, y, size, rotation: Math.PI / 2 });\r\n            return;\r\n        }\r\n\r\n        this._basicSquare({ x, y, size, rotation: 0 });\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport cornerOuterShapeTypes from '../../../api/cornerOuterShapeTypes';\r\nimport { CornerOuterShapeType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from '../../../types/type';\r\n\r\nexport default class QRCornerOuterShape {\r\n    _element?: SVGElement;\r\n    _svg: SVGElement;\r\n    _type: CornerOuterShapeType;\r\n\r\n    constructor({ svg, type }: { svg: SVGElement; type: CornerOuterShapeType }) {\r\n        this._svg = svg;\r\n        this._type = type;\r\n    }\r\n\r\n    draw(x: number, y: number, size: number, rotation: number): void {\r\n        const type = this._type;\r\n        let drawFunction;\r\n\r\n        switch (type) {\r\n            case cornerOuterShapeTypes['square']:\r\n                drawFunction = this._drawSquare;\r\n                break;\r\n            case cornerOuterShapeTypes['rounded']:\r\n                drawFunction = this._drawRounded;\r\n                break;\r\n            case cornerOuterShapeTypes['circle']:\r\n            default:\r\n                drawFunction = this._drawCircle;\r\n        }\r\n\r\n        drawFunction.call(this, { x, y, size, rotation });\r\n    }\r\n\r\n    _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\r\n        const cx = x + size / 2;\r\n        const cy = y + size / 2;\r\n\r\n        draw();\r\n        this._element?.setAttribute('transform', `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\r\n    }\r\n\r\n    _basicCircle(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n        const dotSize = size / 7;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n                this._element.setAttribute('clip-rule', 'evenodd');\r\n                this._element.setAttribute(\r\n                    'd',\r\n                    `M ${x + size / 2} ${y}` + // M cx, y //  Move to top of ring\r\n                    `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\r\n                    `z` + // Z // Close the outer shape\r\n                    `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\r\n                    `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\r\n                    `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    _basicSquare(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n        const dotSize = size / 7;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n                this._element.setAttribute('clip-rule', 'evenodd');\r\n                this._element.setAttribute(\r\n                    'd',\r\n                    `M ${x} ${y}` +\r\n                    `v ${size}` +\r\n                    `h ${size}` +\r\n                    `v ${-size}` +\r\n                    `z` +\r\n                    `M ${x + dotSize} ${y + dotSize}` +\r\n                    `h ${size - 2 * dotSize}` +\r\n                    `v ${size - 2 * dotSize}` +\r\n                    `h ${-size + 2 * dotSize}` +\r\n                    `z`\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    _basicRounded(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n        const dotSize = size / 7;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n                this._element.setAttribute('clip-rule', 'evenodd');\r\n                this._element.setAttribute(\r\n                    'd',\r\n                    `M ${x} ${y + 2.5 * dotSize}` +\r\n                    `v ${2 * dotSize}` +\r\n                    `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\r\n                    `h ${2 * dotSize}` +\r\n                    `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\r\n                    `v ${-2 * dotSize}` +\r\n                    `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\r\n                    `h ${-2 * dotSize}` +\r\n                    `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\r\n                    `M ${x + 2.5 * dotSize} ${y + dotSize}` +\r\n                    `h ${2 * dotSize}` +\r\n                    `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\r\n                    `v ${2 * dotSize}` +\r\n                    `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\r\n                    `h ${-2 * dotSize}` +\r\n                    `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\r\n                    `v ${-2 * dotSize}` +\r\n                    `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    _drawCircle({ x, y, size, rotation }: DrawArgs): void {\r\n        this._basicCircle({ x, y, size, rotation });\r\n    }\r\n\r\n    _drawSquare({ x, y, size, rotation }: DrawArgs): void {\r\n        this._basicSquare({ x, y, size, rotation });\r\n    }\r\n\r\n    _drawRounded({ x, y, size, rotation }: DrawArgs): void {\r\n        this._basicRounded({ x, y, size, rotation });\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport cornerInnerShapeTypes from '../../../api/cornerInnerShapeTypes';\r\nimport { CornerInnerShapeType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from '../../../types/type';\r\n\r\nexport default class QRCornerInnerShape {\r\n    _element?: SVGElement;\r\n    _svg: SVGElement;\r\n    _type: CornerInnerShapeType;\r\n\r\n    constructor({ svg, type }: { svg: SVGElement; type: CornerInnerShapeType }) {\r\n        this._svg = svg;\r\n        this._type = type;\r\n    }\r\n\r\n    draw(x: number, y: number, size: number, rotation: number): void {\r\n        const type = this._type;\r\n        let drawFunction;\r\n\r\n        switch (type) {\r\n            case cornerInnerShapeTypes['square']:\r\n                drawFunction = this._drawSquare;\r\n                break;\r\n            case cornerInnerShapeTypes['circle']:\r\n            default:\r\n                drawFunction = this._drawCircle;\r\n        }\r\n\r\n        drawFunction.call(this, { x, y, size, rotation });\r\n    }\r\n\r\n    _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\r\n        const cx = x + size / 2;\r\n        const cy = y + size / 2;\r\n\r\n        draw();\r\n        this._element?.setAttribute('transform', `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\r\n    }\r\n\r\n    _basicCircle(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\r\n                this._element.setAttribute('cx', String(x + size / 2));\r\n                this._element.setAttribute('cy', String(y + size / 2));\r\n                this._element.setAttribute('r', String(size / 2));\r\n            }\r\n        });\r\n    }\r\n\r\n    _basicSquare(args: BasicFigureDrawArgs): void {\r\n        const { size, x, y } = args;\r\n\r\n        this._rotateFigure({\r\n            ...args,\r\n            draw: () => {\r\n                this._element = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n                this._element.setAttribute('x', String(x));\r\n                this._element.setAttribute('y', String(y));\r\n                this._element.setAttribute('width', String(size));\r\n                this._element.setAttribute('height', String(size));\r\n            }\r\n        });\r\n    }\r\n\r\n    _drawCircle({ x, y, size, rotation }: DrawArgs): void {\r\n        this._basicCircle({ x, y, size, rotation });\r\n    }\r\n\r\n    _drawSquare({ x, y, size, rotation }: DrawArgs): void {\r\n        this._basicSquare({ x, y, size, rotation });\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport calculateImageSize from '../tools/calculateImageSize';\r\nimport errorCorrectionPercents from '../api/errorCorrectionPercents';\r\nimport QRMiddleShape from '../draw/middle-shape/svg/qr-middle-shape';\r\nimport QRCornerOuterShape from '../draw/corner-outer-shape/svg/qr-corner-outer-shape';\r\nimport QRCornerInnerShape from '../draw/corner-inner-shape/svg/qr-corner-inner-shape';\r\nimport { RequiredSettings } from './qr-options';\r\nimport gradientTypes from '../api/gradientTypes';\r\nimport { QRCode, FilterFunction, Gradient } from '../types/type';\r\n\r\nconst squareMask = [\r\n    [1, 1, 1, 1, 1, 1, 1],\r\n    [1, 0, 0, 0, 0, 0, 1],\r\n    [1, 0, 0, 0, 0, 0, 1],\r\n    [1, 0, 0, 0, 0, 0, 1],\r\n    [1, 0, 0, 0, 0, 0, 1],\r\n    [1, 0, 0, 0, 0, 0, 1],\r\n    [1, 1, 1, 1, 1, 1, 1]\r\n];\r\n\r\nconst dotMask = [\r\n    [0, 0, 0, 0, 0, 0, 0],\r\n    [0, 0, 0, 0, 0, 0, 0],\r\n    [0, 0, 1, 1, 1, 0, 0],\r\n    [0, 0, 1, 1, 1, 0, 0],\r\n    [0, 0, 1, 1, 1, 0, 0],\r\n    [0, 0, 0, 0, 0, 0, 0],\r\n    [0, 0, 0, 0, 0, 0, 0]\r\n];\r\n\r\nexport default class AswQrSVG {\r\n    _element: SVGElement;\r\n    _defs: SVGElement;\r\n    _dotsClipPath?: SVGElement;\r\n    _cornersSquareClipPath?: SVGElement;\r\n    _cornersDotClipPath?: SVGElement;\r\n    _options: RequiredSettings;\r\n    _qr?: QRCode;\r\n    _image?: HTMLImageElement;\r\n\r\n    //TODO don't pass all options to this class\r\n    constructor(options: RequiredSettings) {\r\n        this._element = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n        this._element.setAttribute('width', String(options.width));\r\n        this._element.setAttribute('height', String(options.height));\r\n        this._defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n        this._element.appendChild(this._defs);\r\n\r\n        this._options = options;\r\n    }\r\n\r\n    get width(): number {\r\n        return this._options.width;\r\n    }\r\n\r\n    get height(): number {\r\n        return this._options.height;\r\n    }\r\n\r\n    getElement(): SVGElement {\r\n        return this._element;\r\n    }\r\n\r\n    clear(): void {\r\n        const oldElement = this._element;\r\n        this._element = oldElement.cloneNode(false) as SVGElement;\r\n        oldElement?.parentNode?.replaceChild(this._element, oldElement);\r\n        this._defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n        this._element.appendChild(this._defs);\r\n    }\r\n\r\n    async drawQR(qr: QRCode): Promise<void> {\r\n        const count = qr.getModuleCount();\r\n        const minSize = Math.min(this._options.width, this._options.height) - this._options.outerMargin * 2;\r\n        const dotSize = Math.floor(minSize / count);\r\n        let drawImageSize = {\r\n            hideXDots: 0,\r\n            hideYDots: 0,\r\n            width: 0,\r\n            height: 0\r\n        };\r\n\r\n        this._qr = qr;\r\n\r\n        if (this._options.logo) {\r\n            //We need it to get image size\r\n            await this.loadImage();\r\n            if (!this._image) return;\r\n            const { logoStyle, density } = this._options;\r\n            const coverLevel = logoStyle.logoSize * errorCorrectionPercents[density.errorCorrectionLevel];\r\n            const maxHiddenDots = Math.floor(coverLevel * count * count);\r\n\r\n            drawImageSize = calculateImageSize({\r\n                originalWidth: this._image.width,\r\n                originalHeight: this._image.height,\r\n                maxHiddenDots,\r\n                maxHiddenAxisDots: count - 14,\r\n                dotSize\r\n            });\r\n        }\r\n\r\n        this.clear();\r\n        this.drawBackground();\r\n        this.drawDots((i: number, j: number): boolean => {\r\n            if (this._options.logoStyle.hideBackgroundCircle) {\r\n                if (\r\n                    i >= (count - drawImageSize.hideXDots) / 2 &&\r\n                    i < (count + drawImageSize.hideXDots) / 2 &&\r\n                    j >= (count - drawImageSize.hideYDots) / 2 &&\r\n                    j < (count + drawImageSize.hideYDots) / 2\r\n                ) {\r\n                    return false;\r\n                }\r\n            }\r\n\r\n            if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\r\n                return false;\r\n            }\r\n\r\n            if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\r\n                return false;\r\n            }\r\n\r\n            return true;\r\n        });\r\n        this.drawCorners();\r\n\r\n        if (this._options.logo) {\r\n            this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\r\n        }\r\n    }\r\n\r\n    drawBackground(): void {\r\n        const element = this._element;\r\n        const options = this._options;\r\n\r\n        if (element) {\r\n            const gradientOptions = options.backgroundStyle?.gradient;\r\n            const color = options.backgroundStyle?.color;\r\n\r\n            if (gradientOptions || color) {\r\n                this._createColor({\r\n                    options: gradientOptions,\r\n                    color: color,\r\n                    additionalRotation: 0,\r\n                    x: 0,\r\n                    y: 0,\r\n                    height: options.height,\r\n                    width: options.width,\r\n                    name: 'background-color'\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    drawDots(filter?: FilterFunction): void {\r\n        if (!this._qr) {\r\n            throw 'QR code is not defined';\r\n        }\r\n\r\n        const options = this._options;\r\n        const count = this._qr.getModuleCount();\r\n\r\n        if (count > options.width || count > options.height) {\r\n            throw 'The canvas is too small.';\r\n        }\r\n\r\n        const minSize = Math.min(options.width, options.height) - options.outerMargin * 2;\r\n        const dotSize = Math.floor(minSize / count);\r\n        const xBeginning = Math.floor((options.width - count * dotSize) / 2);\r\n        const yBeginning = Math.floor((options.height - count * dotSize) / 2);\r\n        const dot = new QRMiddleShape({ svg: this._element, type: options.middleShape.type });\r\n\r\n        this._dotsClipPath = document.createElementNS('http://www.w3.org/2000/svg', 'clipPath');\r\n        this._dotsClipPath.setAttribute('id', 'clip-path-dot-color');\r\n        this._defs.appendChild(this._dotsClipPath);\r\n\r\n        this._createColor({\r\n            options: options.middleShape?.gradient,\r\n            color: options.middleShape.color,\r\n            additionalRotation: 0,\r\n            x: xBeginning,\r\n            y: yBeginning,\r\n            height: count * dotSize,\r\n            width: count * dotSize,\r\n            name: 'dot-color'\r\n        });\r\n\r\n        for (let i = 0; i < count; i++) {\r\n            for (let j = 0; j < count; j++) {\r\n                if (filter && !filter(i, j)) {\r\n                    continue;\r\n                }\r\n                if (!this._qr?.isDark(i, j)) {\r\n                    continue;\r\n                }\r\n\r\n                dot.draw(\r\n                    xBeginning + j * dotSize,\r\n                    yBeginning + i * dotSize,\r\n                    dotSize,\r\n                    (xOffset: number, yOffset: number): boolean => {\r\n                        if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\r\n                        if (filter && !filter(i + xOffset, j + yOffset)) return false;\r\n                        return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\r\n                    }\r\n                );\r\n\r\n                if (dot._element && this._dotsClipPath) {\r\n                    this._dotsClipPath.appendChild(dot._element);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    drawCorners(): void {\r\n        if (!this._qr) {\r\n            throw 'QR code is not defined';\r\n        }\r\n\r\n        const element = this._element;\r\n        const options = this._options;\r\n\r\n        if (!element) {\r\n            throw 'Element code is not defined';\r\n        }\r\n\r\n        const count = this._qr.getModuleCount();\r\n        const minSize = Math.min(options.width, options.height) - options.outerMargin * 2;\r\n        const dotSize = Math.floor(minSize / count);\r\n        const cornersSquareSize = dotSize * 7;\r\n        const cornersDotSize = dotSize * 3;\r\n        const xBeginning = Math.floor((options.width - count * dotSize) / 2);\r\n        const yBeginning = Math.floor((options.height - count * dotSize) / 2);\r\n\r\n        [\r\n            [0, 0, 0],\r\n            [1, 0, Math.PI / 2],\r\n            [0, 1, -Math.PI / 2]\r\n        ].forEach(([column, row, rotation]) => {\r\n            const x = xBeginning + column * dotSize * (count - 7);\r\n            const y = yBeginning + row * dotSize * (count - 7);\r\n            let cornersSquareClipPath = this._dotsClipPath;\r\n            let cornersDotClipPath = this._dotsClipPath;\r\n\r\n            if (options.cornerOuterShape?.gradient || options.cornerOuterShape?.color) {\r\n                cornersSquareClipPath = document.createElementNS('http://www.w3.org/2000/svg', 'clipPath');\r\n                cornersSquareClipPath.setAttribute('id', `clip-path-corners-square-color-${column}-${row}`);\r\n                this._defs.appendChild(cornersSquareClipPath);\r\n                this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\r\n\r\n                this._createColor({\r\n                    options: options.cornerOuterShape?.gradient,\r\n                    color: options.cornerOuterShape?.color,\r\n                    additionalRotation: rotation,\r\n                    x,\r\n                    y,\r\n                    height: cornersSquareSize,\r\n                    width: cornersSquareSize,\r\n                    name: `corners-square-color-${column}-${row}`\r\n                });\r\n            }\r\n\r\n            if (options.cornerOuterShape?.type) {\r\n                const cornersSquare = new QRCornerOuterShape({ svg: this._element, type: options.cornerOuterShape.type });\r\n\r\n                cornersSquare.draw(x, y, cornersSquareSize, rotation);\r\n\r\n                if (cornersSquare._element && cornersSquareClipPath) {\r\n                    cornersSquareClipPath.appendChild(cornersSquare._element);\r\n                }\r\n            } else {\r\n                const dot = new QRMiddleShape({ svg: this._element, type: options.middleShape.type });\r\n\r\n                for (let i = 0; i < squareMask.length; i++) {\r\n                    for (let j = 0; j < squareMask[i].length; j++) {\r\n                        if (!squareMask[i]?.[j]) {\r\n                            continue;\r\n                        }\r\n\r\n                        dot.draw(\r\n                            x + i * dotSize,\r\n                            y + j * dotSize,\r\n                            dotSize,\r\n                            (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\r\n                        );\r\n\r\n                        if (dot._element && cornersSquareClipPath) {\r\n                            cornersSquareClipPath.appendChild(dot._element);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (options.cornerInnerShape?.gradient || options.cornerInnerShape?.color) {\r\n                cornersDotClipPath = document.createElementNS('http://www.w3.org/2000/svg', 'clipPath');\r\n                cornersDotClipPath.setAttribute('id', `clip-path-corners-dot-color-${column}-${row}`);\r\n                this._defs.appendChild(cornersDotClipPath);\r\n                this._cornersDotClipPath = cornersDotClipPath;\r\n\r\n                this._createColor({\r\n                    options: options.cornerInnerShape?.gradient,\r\n                    color: options.cornerInnerShape?.color,\r\n                    additionalRotation: rotation,\r\n                    x: x + dotSize * 2,\r\n                    y: y + dotSize * 2,\r\n                    height: cornersDotSize,\r\n                    width: cornersDotSize,\r\n                    name: `corners-dot-color-${column}-${row}`\r\n                });\r\n            }\r\n\r\n            if (options.cornerInnerShape?.type) {\r\n                const cornersDot = new QRCornerInnerShape({ svg: this._element, type: options.cornerInnerShape.type });\r\n\r\n                cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\r\n\r\n                if (cornersDot._element && cornersDotClipPath) {\r\n                    cornersDotClipPath.appendChild(cornersDot._element);\r\n                }\r\n            } else {\r\n                const dot = new QRMiddleShape({ svg: this._element, type: options.middleShape.type });\r\n\r\n                for (let i = 0; i < dotMask.length; i++) {\r\n                    for (let j = 0; j < dotMask[i].length; j++) {\r\n                        if (!dotMask[i]?.[j]) {\r\n                            continue;\r\n                        }\r\n\r\n                        dot.draw(\r\n                            x + i * dotSize,\r\n                            y + j * dotSize,\r\n                            dotSize,\r\n                            (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\r\n                        );\r\n\r\n                        if (dot._element && cornersDotClipPath) {\r\n                            cornersDotClipPath.appendChild(dot._element);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    loadImage(): Promise<void> {\r\n        return new Promise((resolve, reject) => {\r\n            const options = this._options;\r\n            const image = new Image();\r\n\r\n            if (!options.logo) {\r\n                return reject('Image is not defined');\r\n            }\r\n\r\n            if (typeof options.logoStyle.crossOrigin === 'string') {\r\n                image.crossOrigin = options.logoStyle.crossOrigin;\r\n            }\r\n\r\n            this._image = image;\r\n            image.onload = (): void => {\r\n                resolve();\r\n            };\r\n            image.src = options.logo;\r\n        });\r\n    }\r\n\r\n    drawImage({\r\n        width,\r\n        height,\r\n        count,\r\n        dotSize\r\n    }: {\r\n        width: number;\r\n        height: number;\r\n        count: number;\r\n        dotSize: number;\r\n    }): void {\r\n        const options = this._options;\r\n        const xBeginning = Math.floor((options.width - count * dotSize) / 2);\r\n        const yBeginning = Math.floor((options.height - count * dotSize) / 2);\r\n        const dx = xBeginning + options.logoStyle.logoMargin + (count * dotSize - width) / 2;\r\n        const dy = yBeginning + options.logoStyle.logoMargin + (count * dotSize - height) / 2;\r\n        const dw = width - options.logoStyle.logoMargin * 2;\r\n        const dh = height - options.logoStyle.logoMargin * 2;\r\n\r\n        const image = document.createElementNS('http://www.w3.org/2000/svg', 'image');\r\n        image.setAttribute('href', options.logo || '');\r\n        image.setAttribute('x', String(dx));\r\n        image.setAttribute('y', String(dy));\r\n        image.setAttribute('width', `${dw}px`);\r\n        image.setAttribute('height', `${dh}px`);\r\n\r\n        this._element.appendChild(image);\r\n    }\r\n\r\n    _createColor({\r\n        options,\r\n        color,\r\n        additionalRotation,\r\n        x,\r\n        y,\r\n        height,\r\n        width,\r\n        name\r\n    }: {\r\n        options?: Gradient;\r\n        color?: string;\r\n        additionalRotation: number;\r\n        x: number;\r\n        y: number;\r\n        height: number;\r\n        width: number;\r\n        name: string;\r\n    }): void {\r\n        const size = width > height ? width : height;\r\n        const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n        rect.setAttribute('x', String(x));\r\n        rect.setAttribute('y', String(y));\r\n        rect.setAttribute('height', String(height));\r\n        rect.setAttribute('width', String(width));\r\n        rect.setAttribute('clip-path', `url('#clip-path-${name}')`);\r\n\r\n        if (options) {\r\n            let gradient: SVGElement;\r\n            if (options.type === gradientTypes['radial']) {\r\n                gradient = document.createElementNS('http://www.w3.org/2000/svg', 'radialGradient');\r\n                gradient.setAttribute('id', name);\r\n                gradient.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n                gradient.setAttribute('fx', String(x + width / 2));\r\n                gradient.setAttribute('fy', String(y + height / 2));\r\n                gradient.setAttribute('cx', String(x + width / 2));\r\n                gradient.setAttribute('cy', String(y + height / 2));\r\n                gradient.setAttribute('r', String(size / 2));\r\n            } else {\r\n                const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\r\n                const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\r\n                let x0 = x + width / 2;\r\n                let y0 = y + height / 2;\r\n                let x1 = x + width / 2;\r\n                let y1 = y + height / 2;\r\n\r\n                if (\r\n                    (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\r\n                    (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\r\n                ) {\r\n                    x0 = x0 - width / 2;\r\n                    y0 = y0 - (height / 2) * Math.tan(rotation);\r\n                    x1 = x1 + width / 2;\r\n                    y1 = y1 + (height / 2) * Math.tan(rotation);\r\n                } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\r\n                    y0 = y0 - height / 2;\r\n                    x0 = x0 - width / 2 / Math.tan(rotation);\r\n                    y1 = y1 + height / 2;\r\n                    x1 = x1 + width / 2 / Math.tan(rotation);\r\n                } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\r\n                    x0 = x0 + width / 2;\r\n                    y0 = y0 + (height / 2) * Math.tan(rotation);\r\n                    x1 = x1 - width / 2;\r\n                    y1 = y1 - (height / 2) * Math.tan(rotation);\r\n                } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\r\n                    y0 = y0 + height / 2;\r\n                    x0 = x0 + width / 2 / Math.tan(rotation);\r\n                    y1 = y1 - height / 2;\r\n                    x1 = x1 - width / 2 / Math.tan(rotation);\r\n                }\r\n\r\n                gradient = document.createElementNS('http://www.w3.org/2000/svg', 'linearGradient');\r\n                gradient.setAttribute('id', name);\r\n                gradient.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n                gradient.setAttribute('x1', String(Math.round(x0)));\r\n                gradient.setAttribute('y1', String(Math.round(y0)));\r\n                gradient.setAttribute('x2', String(Math.round(x1)));\r\n                gradient.setAttribute('y2', String(Math.round(y1)));\r\n            }\r\n\r\n            options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\r\n                const stop = document.createElementNS('http://www.w3.org/2000/svg', 'stop');\r\n                stop.setAttribute('offset', `${100 * offset}%`);\r\n                stop.setAttribute('stop-color', color);\r\n                gradient.appendChild(stop);\r\n            });\r\n\r\n            rect.setAttribute('fill', `url('#${name}')`);\r\n            this._defs.appendChild(gradient);\r\n        } else if (color) {\r\n            rect.setAttribute('fill', color);\r\n        }\r\n\r\n        this._element.appendChild(rect);\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport { DrawTypes } from '../types/type';\r\n\r\nexport default {\r\n    canvas: 'canvas',\r\n    svg: 'svg'\r\n} as DrawTypes;\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport { TypeNumber } from '../types/type';\r\n\r\ninterface TypesMap {\r\n    [key: number]: TypeNumber;\r\n}\r\n\r\nconst qrTypes: TypesMap = {};\r\n\r\nfor (let type = 0; type <= 40; type++) {\r\n    qrTypes[type] = type as TypeNumber;\r\n}\r\n\r\n// 0 types is autodetect\r\n\r\n// types = {\r\n//     0: 0,\r\n//     1: 1,\r\n//     ...\r\n//     40: 40\r\n// }\r\n\r\nexport default qrTypes;\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport { ErrorCorrectionLevel } from '../types/type';\r\n\r\ninterface ErrorCorrectionLevels {\r\n    [key: string]: ErrorCorrectionLevel;\r\n}\r\n\r\nexport default {\r\n    L: 'L',\r\n    M: 'M',\r\n    Q: 'Q',\r\n    H: 'H'\r\n} as ErrorCorrectionLevels;\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport qrTypes from '../api/qrTypes';\r\nimport drawTypes from '../api/drawTypes';\r\nimport errorCorrectionLevels from '../api/errorCorrectionLevels';\r\nimport { MiddleShapeType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from '../types/type';\r\n\r\nexport interface RequiredSettings extends Options {\r\n    type: DrawType;\r\n    width: number;\r\n    height: number;\r\n    outerMargin: number;\r\n    data: string;\r\n    density: {\r\n        typeNumber: TypeNumber;\r\n        mode?: Mode;\r\n        errorCorrectionLevel: ErrorCorrectionLevel;\r\n    };\r\n    logoStyle: {\r\n        hideBackgroundCircle: boolean;\r\n        logoSize: number;\r\n        crossOrigin?: string;\r\n        logoMargin: number;\r\n    };\r\n    middleShape: {\r\n        type: MiddleShapeType;\r\n        color: string;\r\n        gradient?: Gradient;\r\n    };\r\n    backgroundStyle: {\r\n        color: string;\r\n        gradient?: Gradient;\r\n    };\r\n}\r\n\r\nconst defaultSettings: RequiredSettings = {\r\n    type: drawTypes['canvas'],\r\n    width: 300,\r\n    height: 300,\r\n    data: '',\r\n    outerMargin: 0,\r\n    density: {\r\n        typeNumber: qrTypes[0],\r\n        mode: undefined,\r\n        errorCorrectionLevel: errorCorrectionLevels['Q']\r\n    },\r\n    logoStyle: {\r\n        hideBackgroundCircle: true,\r\n        logoSize: 0.4,\r\n        crossOrigin: undefined,\r\n        logoMargin: 0\r\n    },\r\n    middleShape: {\r\n        type: 'square',\r\n        color: '#000'\r\n    },\r\n    backgroundStyle: {\r\n        color: '#fff'\r\n    }\r\n};\r\n\r\nexport default defaultSettings;\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport { RequiredSettings } from '../core/qr-options';\r\nimport { Gradient } from '../types/type';\r\n\r\nfunction sanitizeGradient(gradient: Gradient): Gradient {\r\n    const newGradient = { ...gradient };\r\n\r\n    if (!newGradient.colorStops || !newGradient.colorStops.length) {\r\n        throw \"Field 'colorStops' is required in gradient\";\r\n    }\r\n\r\n    if (newGradient.rotation) {\r\n        newGradient.rotation = Number(newGradient.rotation);\r\n    } else {\r\n        newGradient.rotation = 0;\r\n    }\r\n\r\n    newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\r\n        ...colorStop,\r\n        offset: Number(colorStop.offset)\r\n    }));\r\n\r\n    return newGradient;\r\n}\r\n\r\nexport default function sanitizeOptions(options: RequiredSettings): RequiredSettings {\r\n    const newOptions = { ...options };\r\n\r\n    newOptions.width = Number(newOptions.width);\r\n    newOptions.height = Number(newOptions.height);\r\n    newOptions.outerMargin = Number(newOptions.outerMargin);\r\n    newOptions.logoStyle = {\r\n        ...newOptions.logoStyle,\r\n        hideBackgroundCircle: Boolean(newOptions.logoStyle.hideBackgroundCircle),\r\n        logoSize: Number(newOptions.logoStyle.logoSize),\r\n        logoMargin: Number(newOptions.logoStyle.logoMargin)\r\n    };\r\n\r\n    if (newOptions.outerMargin > Math.min(newOptions.width, newOptions.height)) {\r\n        newOptions.outerMargin = Math.min(newOptions.width, newOptions.height);\r\n    }\r\n\r\n    newOptions.middleShape = {\r\n        ...newOptions.middleShape\r\n    };\r\n    if (newOptions.middleShape.gradient) {\r\n        newOptions.middleShape.gradient = sanitizeGradient(newOptions.middleShape.gradient);\r\n    }\r\n\r\n    if (newOptions.cornerOuterShape) {\r\n        newOptions.cornerOuterShape = {\r\n            ...newOptions.cornerOuterShape\r\n        };\r\n        if (newOptions.cornerOuterShape.gradient) {\r\n            newOptions.cornerOuterShape.gradient = sanitizeGradient(newOptions.cornerOuterShape.gradient);\r\n        }\r\n    }\r\n\r\n    if (newOptions.cornerInnerShape) {\r\n        newOptions.cornerInnerShape = {\r\n            ...newOptions.cornerInnerShape\r\n        };\r\n        if (newOptions.cornerInnerShape.gradient) {\r\n            newOptions.cornerInnerShape.gradient = sanitizeGradient(newOptions.cornerInnerShape.gradient);\r\n        }\r\n    }\r\n\r\n    if (newOptions.backgroundStyle) {\r\n        newOptions.backgroundStyle = {\r\n            ...newOptions.backgroundStyle\r\n        };\r\n        if (newOptions.backgroundStyle.gradient) {\r\n            newOptions.backgroundStyle.gradient = sanitizeGradient(newOptions.backgroundStyle.gradient);\r\n        }\r\n    }\r\n\r\n    return newOptions;\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\nimport getMode from '../tools/getMode';\r\nimport mergeDeep from '../tools/merge';\r\nimport downloadURI from '../tools/downloadURI';\r\nimport AswQrCanvas from './qr-canvas';\r\nimport AswQrSVG from './qr-svg';\r\nimport drawTypes from '../api/drawTypes';\r\n\r\nimport defaultOptions, { RequiredSettings } from './qr-options';\r\nimport sanitizeOptions from '../tools/sanitizeOptions';\r\nimport { Extension, QRCode, Options, DownloadOptions } from '../types/type';\r\nimport qrcode from 'qrcode-generator';\r\n\r\nexport default class AswQrCodeMaker {\r\n    _options: RequiredSettings;\r\n    _container?: HTMLElement;\r\n    _canvas?: AswQrCanvas;\r\n    _svg?: AswQrSVG;\r\n    _qr?: QRCode | any;\r\n    _canvasDrawingPromise?: Promise<void>;\r\n    _svgDrawingPromise?: Promise<void>;\r\n\r\n    constructor(options?: Partial<Options>) {\r\n        this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredSettings) : defaultOptions;\r\n        this.update();\r\n    }\r\n\r\n    static _clearContainer(container?: HTMLElement): void {\r\n        if (container) {\r\n            container.innerHTML = '';\r\n        }\r\n    }\r\n\r\n    async _getQRStylingElement(extension: Extension = 'png'): Promise<AswQrCanvas | AswQrSVG> {\r\n        if (!this._qr) throw 'QR code is empty';\r\n\r\n        if (extension.toLowerCase() === 'svg') {\r\n            let promise, svg: AswQrSVG;\r\n\r\n            if (this._svg && this._svgDrawingPromise) {\r\n                svg = this._svg;\r\n                promise = this._svgDrawingPromise;\r\n            } else {\r\n                svg = new AswQrSVG(this._options);\r\n                promise = svg.drawQR(this._qr);\r\n            }\r\n\r\n            await promise;\r\n\r\n            return svg;\r\n        } else {\r\n            let promise, canvas: AswQrCanvas;\r\n\r\n            if (this._canvas && this._canvasDrawingPromise) {\r\n                canvas = this._canvas;\r\n                promise = this._canvasDrawingPromise;\r\n            } else {\r\n                canvas = new AswQrCanvas(this._options);\r\n                promise = canvas.drawQR(this._qr);\r\n            }\r\n\r\n            await promise;\r\n\r\n            return canvas;\r\n        }\r\n    }\r\n\r\n    update(options?: Partial<Options>): void {\r\n        AswQrCodeMaker._clearContainer(this._container);\r\n        this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredSettings) : this._options;\r\n\r\n        if (!this._options.data) {\r\n            return;\r\n        }\r\n\r\n        qrcode.stringToBytes = qrcode.stringToBytesFuncs['UTF-8'];\r\n        this._qr = qrcode(this._options.density.typeNumber, this._options.density.errorCorrectionLevel);\r\n        this._qr.addData(this._options.data, this._options.density.mode || getMode(this._options.data));\r\n        this._qr.make();\r\n\r\n        if (this._options.type === drawTypes['canvas']) {\r\n            this._canvas = new AswQrCanvas(this._options);\r\n            this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\r\n            this._svgDrawingPromise = undefined;\r\n            this._svg = undefined;\r\n        } else {\r\n            this._svg = new AswQrSVG(this._options);\r\n            this._svgDrawingPromise = this._svg.drawQR(this._qr);\r\n            this._canvasDrawingPromise = undefined;\r\n            this._canvas = undefined;\r\n        }\r\n\r\n        this.append(this._container);\r\n    }\r\n\r\n    append(container?: HTMLElement): void {\r\n        if (!container) {\r\n            return;\r\n        }\r\n\r\n        if (typeof container.appendChild !== 'function') {\r\n            throw 'Container should be a single DOM node';\r\n        }\r\n\r\n        if (this._options.type === drawTypes['canvas']) {\r\n            if (this._canvas) {\r\n                container.appendChild(this._canvas.getCanvas());\r\n            }\r\n        } else {\r\n            if (this._svg) {\r\n                container.appendChild(this._svg.getElement());\r\n            }\r\n        }\r\n\r\n        this._container = container;\r\n    }\r\n\r\n    async getRawData(extension: Extension = 'png'): Promise<Blob | null> {\r\n        if (!this._qr) throw 'QR code is empty';\r\n        const element = await this._getQRStylingElement(extension);\r\n\r\n        if (extension.toLowerCase() === 'svg') {\r\n            const serializer = new XMLSerializer();\r\n            const source = serializer.serializeToString(((element as unknown) as AswQrSVG).getElement());\r\n\r\n            return new Blob([\"<?xml version='1.0' standalone='no'?>\\r\\n'\" + source], { type: 'image/svg+xml' });\r\n        } else {\r\n            return new Promise((resolve) =>\r\n                ((element as unknown) as AswQrCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1)\r\n            );\r\n        }\r\n    }\r\n\r\n    async download(downloadOptions?: Partial<DownloadOptions> | string): Promise<void> {\r\n        if (!this._qr) throw 'QR code is empty';\r\n        let extension = 'png' as Extension;\r\n        let name = 'asw-qr';\r\n\r\n        //TODO remove deprecated code in the v2\r\n        if (typeof downloadOptions === 'string') {\r\n            extension = downloadOptions as Extension;\r\n            console.warn(\r\n                \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\r\n            );\r\n        } else if (typeof downloadOptions === 'object' && downloadOptions !== null) {\r\n            if (downloadOptions.name) {\r\n                name = downloadOptions.name;\r\n            }\r\n            if (downloadOptions.extension) {\r\n                extension = downloadOptions.extension;\r\n            }\r\n        }\r\n\r\n        const element = await this._getQRStylingElement(extension);\r\n\r\n        if (extension.toLowerCase() === 'svg') {\r\n            const serializer = new XMLSerializer();\r\n            let source = serializer.serializeToString(((element as unknown) as AswQrSVG).getElement());\r\n\r\n            source = \"<?xml version='1.0' standalone='no'?>\\r\\n\" + source;\r\n            const url = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(source);\r\n            downloadURI(url, `${name}.svg`);\r\n        } else {\r\n            const url = ((element as unknown) as AswQrCanvas).getCanvas().toDataURL(`image/${extension}`);\r\n            downloadURI(url, `${name}.${extension}`);\r\n        }\r\n    }\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport {\r\n    AfterViewInit,\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    OnChanges,\r\n    Output,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport AswQrCodeMaker from './core/qr-code-maker';\r\nimport { CornerInnerShape, CornerOuterShape, Density, DownloadOptions, DrawType, LogoStyle, MiddleShape } from './types/type';\r\n\r\n\r\n@Component({\r\n    selector: 'asw-qr-code',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    template: `<div id=\"aswQRCodeElement-{{uniqueId}}\"></div>`,\r\n})\r\nexport class AswQrCodeComponent implements OnChanges, AfterViewInit {\r\n    uniqueId = new Date().getTime();\r\n    @Input() type?: DrawType = 'canvas';\r\n    @Input() width?: number = 200;\r\n    @Input() height?: number = 200;\r\n    @Input() outerMargin?: number = 0;\r\n    @Input() qrData: string = '';\r\n    @Input() public logo?: string;\r\n    @Input() public allowEmptyString = false;\r\n    @Input() density?: Density = {\r\n        typeNumber: 0,\r\n        mode: 'Byte',\r\n        errorCorrectionLevel: 'Q'\r\n    };\r\n    @Input() logoStyle?: LogoStyle = {\r\n        hideBackgroundCircle: true,\r\n        logoSize: 0.4,\r\n        logoMargin: 20,\r\n        crossOrigin: 'anonymous',\r\n    };\r\n    @Input() middleShape?: MiddleShape = {\r\n        color: '#000',\r\n        type: 'smooth'\r\n    };\r\n    @Input() backgroundColor? = '#fff';\r\n    @Input() cornerInnerShape?: CornerInnerShape = {\r\n        color: '#000',\r\n    };\r\n    @Input() cornerOuterShape?: CornerOuterShape = {\r\n        color: '#000',\r\n    };\r\n\r\n    private config: any\r\n\r\n    viewInitialized = true;\r\n    @Output() qrCodeURL = new EventEmitter<boolean>();\r\n\r\n    constructor(@Inject(DOCUMENT) private document: Document, private sanitizer: DomSanitizer) { }\r\n\r\n    async ngOnChanges(): Promise<void> {\r\n        if (this.viewInitialized) {\r\n            return;\r\n        }\r\n        await this.createQRCode();\r\n    }\r\n\r\n    async ngAfterViewInit(): Promise<void> {\r\n        this.config = new AswQrCodeMaker({\r\n            height: this.height,\r\n            outerMargin: this.outerMargin,\r\n            width: this.width,\r\n            logo: this.logo,\r\n            type: this.type,\r\n            data: this.qrData,\r\n            density: this.density,\r\n            logoStyle: this.logoStyle,\r\n            middleShape: this.middleShape,\r\n            backgroundStyle: {\r\n                color: this.backgroundColor\r\n            }\r\n        });\r\n        await this.createQRCode();\r\n    }\r\n\r\n    protected isValidQrCodeText(data: string | null): boolean {\r\n        if (this.allowEmptyString === false) {\r\n            return !(\r\n                typeof data === 'undefined' ||\r\n                data === '' ||\r\n                data === 'null' ||\r\n                data === null\r\n            )\r\n        }\r\n        return !(typeof data === 'undefined')\r\n    }\r\n\r\n    private async createQRCode(): Promise<void> {\r\n        // Set sensitive defaults\r\n        if (this.density?.typeNumber && this.density.typeNumber > 40) {\r\n            console.warn('[asw-qr-code] max value for `typeNumber` is 40')\r\n            this.density.typeNumber = 40\r\n        } else if (this.density?.typeNumber && this.density.typeNumber < 1) {\r\n            console.warn('[asw-qr-code]`min value for `typeNumber` is 1')\r\n            this.density.typeNumber = 1\r\n        } else if (this.density?.typeNumber !== undefined && isNaN(this.density.typeNumber)) {\r\n            console.warn(\r\n                '[asw-qr-code] typeNumber should be a number, defaulting to auto.'\r\n            )\r\n            this.density.typeNumber = undefined\r\n        }\r\n        try {\r\n            if (!this.isValidQrCodeText(this.qrData)) {\r\n                throw new Error(\r\n                    \"[asw-qr-code] Field `qrdata` is empty, set 'allowEmptyString=\\\"true\\\"' to overwrite this behaviour.\"\r\n                )\r\n            }\r\n\r\n            // This is a workaround to allow an empty string as qrdata\r\n            if (this.isValidQrCodeText(this.qrData) && this.qrData === '') {\r\n                this.qrData = ' '\r\n            }\r\n            this.config.update({\r\n                height: this.height,\r\n                outerMargin: this.outerMargin,\r\n                width: this.width,\r\n                type: this.type,\r\n                logo: this.logo,\r\n                data: this.qrData,\r\n                density: this.density,\r\n                logoStyle: this.logoStyle,\r\n                middleShape: this.middleShape,\r\n                backgroundStyle: {\r\n                    color: this.backgroundColor\r\n                },\r\n                cornerInnerShape: this.cornerInnerShape,\r\n                cornerOuterShape: this.cornerOuterShape\r\n            });\r\n            if (this.viewInitialized) {\r\n                this.viewInitialized = false;\r\n                const container: any = this.document.getElementById('aswQRCodeElement-' + this.uniqueId);\r\n                this.config.append(container);\r\n            }\r\n            this.qrCodeURL.emit(true);\r\n        } catch (e: any) {\r\n            console.error('[asw-qr-code] Error generating QR Code:', e.message)\r\n        }\r\n    }\r\n\r\n    download(downloadOptions?: Partial<DownloadOptions> | string): void {\r\n        this.config.download(downloadOptions);\r\n    }\r\n}\r\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AswQrCodeComponent } from './qr-code.component';\n\n@NgModule({\n    declarations: [\n        AswQrCodeComponent\n    ],\n    imports: [\n        CommonModule\n    ],\n    exports: [\n        AswQrCodeComponent\n    ]\n})\nexport class AswQrCodeModule { }\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nexport * from './lib/qr-code.component';\r\nexport * from './lib/qr-code.module';\r\n\r\nimport AswQrCodeMaker from './lib/core/qr-code-maker';\r\nimport middleShapeTypes from './lib/api/middleShapeTypes';\r\nimport cornerInnerShapeTypes from './lib/api/cornerInnerShapeTypes';\r\nimport cornerOuterShapeTypes from './lib/api/cornerOuterShapeTypes';\r\nimport errorCorrectionLevels from './lib/api/errorCorrectionLevels';\r\nimport errorCorrectionPercents from './lib/api/errorCorrectionPercents';\r\nimport modes from './lib/api/modes';\r\nimport qrTypes from './lib/api/qrTypes';\r\nimport drawTypes from './lib/api/drawTypes';\r\n\r\nexport * from './lib/types/type';\r\n\r\nexport {\r\n    middleShapeTypes,\r\n    cornerInnerShapeTypes,\r\n    cornerOuterShapeTypes,\r\n    errorCorrectionLevels,\r\n    errorCorrectionPercents,\r\n    modes,\r\n    qrTypes,\r\n    drawTypes\r\n};\r\n\r\nexport default AswQrCodeMaker;\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["squareMask","dotMask","QRMiddleShape","QRCornerOuterShape","QRCornerInnerShape","defaultOptions"],"mappings":"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"}