{"version":3,"file":"ngx-qrcode-styling.mjs","sources":["../../../projects/ngx-qrcode-styling/src/lib/ngx-qrcode-styling.templates.ts","../../../projects/ngx-qrcode-styling/src/lib/ngx-qrcode-styling.helper.ts","../../../projects/ngx-qrcode-styling/src/lib/ngx-qrcode-styling.service.ts","../../../projects/ngx-qrcode-styling/src/lib/ngx-qrcode-styling.component.ts","../../../projects/ngx-qrcode-styling/src/public-api.ts","../../../projects/ngx-qrcode-styling/src/ngx-qrcode-styling.ts"],"sourcesContent":["import { Options } from './ngx-qrcode-styling.options';\r\n\r\nexport const Templates = (name: string) => {\r\n  switch (name) {\r\n    case 'default':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#202020',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n      } as Options;\r\n    case 'ocean':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          type: 'dots',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#36CDA5',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#1582AE',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#0277BD',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n        cornersSquareOptions: {\r\n          type: 'square',\r\n        },\r\n      } as Options;\r\n    case 'sunflower':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          type: 'dots',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#BB8412',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#4D762E',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#2F702F',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n        cornersDotOptions: {\r\n          color: '#006B3B',\r\n          type: 'dot',\r\n        },\r\n        cornersSquareOptions: {\r\n          color: '#006B3B',\r\n          type: 'extra-rounded',\r\n        },\r\n      } as Options;\r\n    case 'luxury':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          type: 'classy-rounded',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#E29C0F',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#913C0C',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#732E0C',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n        cornersDotOptions: {\r\n          color: '#732E0C',\r\n          type: 'dot',\r\n        },\r\n        cornersSquareOptions: {\r\n          color: '#732E0C',\r\n          type: 'extra-rounded',\r\n        },\r\n      } as Options;\r\n    case 'bitcoin':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#3a3a3a',\r\n          type: 'dots',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n        cornersDotOptions: {\r\n          color: '#ff9900',\r\n        },\r\n        cornersSquareOptions: {\r\n          type: 'extra-rounded',\r\n        },\r\n      } as Options;\r\n    case 'starbucks':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#3a3a3a',\r\n          type: 'dots',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n        cornersDotOptions: {\r\n          color: '#00643C',\r\n          type: 'dot',\r\n        },\r\n        cornersSquareOptions: {\r\n          color: '#00643C',\r\n          type: 'extra-rounded',\r\n        },\r\n      } as Options;\r\n    case 'angular':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#c3002f',\r\n          type: 'dots',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n      } as Options;\r\n    case 'facebook':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#4D72A9',\r\n          type: 'dots',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n      } as Options;\r\n    case 'beans':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#416B2C',\r\n          type: 'dots',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n        cornersDotOptions: {\r\n          color: '#60A541',\r\n          type: 'dot',\r\n        },\r\n        cornersSquareOptions: {\r\n          type: 'extra-rounded',\r\n        },\r\n      } as Options;\r\n    case 'green':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#006B3B',\r\n          type: 'dots',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n        cornersDotOptions: {\r\n          color: '#006B3B',\r\n          type: 'dot',\r\n        },\r\n        cornersSquareOptions: {\r\n          color: '#006B3B',\r\n          type: 'extra-rounded',\r\n        },\r\n      } as Options;\r\n    case 'sky':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#2c7597',\r\n          type: 'rounded',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n      } as Options;\r\n    case 'mosaic':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          type: 'rounded',\r\n          gradient: {\r\n            rotation: 190,\r\n            type: 'linear',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#0277BD',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#943A40',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#A13535',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n      } as Options;\r\n    case 'coffee':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#5E4F39',\r\n          type: 'dots',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#FAEDE7',\r\n        },\r\n      } as Options;\r\n    case 'vintage':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#2D7363',\r\n          type: 'extra-rounded',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#E7E5C5',\r\n        },\r\n        cornersDotOptions: {\r\n          color: '#BE8C49',\r\n        },\r\n        cornersSquareOptions: {\r\n          color: '#2D7363',\r\n        },\r\n      } as Options;\r\n    case 'stamp':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#2a3c16',\r\n          type: 'square',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#9cc66e',\r\n        },\r\n        cornersDotOptions: {\r\n          color: '#4c692c',\r\n        },\r\n        cornersSquareOptions: {\r\n          color: '#2a3c16',\r\n        },\r\n      } as Options;\r\n    case 'chess':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#F4EAA5',\r\n          type: 'dots',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#494B49',\r\n        },\r\n      } as Options;\r\n    case 'jungle':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          type: 'classy-rounded',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#84b931',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#537234',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#537234',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n        cornersSquareOptions: {\r\n          color: '#434343',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#84b931',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#537234',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#537234',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n      } as Options;\r\n    case 'arabic':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          type: 'classy-rounded',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#393939',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#393939',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#393939',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n        cornersSquareOptions: {\r\n          color: '#434343',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#393939',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#72a28b',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#72a28b',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n      } as Options;\r\n    case 'tea':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          type: 'extra-rounded',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#72b0b4',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#035558',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#035558',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n        cornersSquareOptions: {\r\n          color: '#434343',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#72b0b4',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#035558',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#035558',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n      } as Options;\r\n    case 'grape':\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          type: 'rounded',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#7076ae',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#2a3240',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#2a3240',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n        cornersSquareOptions: {\r\n          color: '#434343',\r\n          gradient: {\r\n            type: 'radial',\r\n            colorStops: [\r\n              {\r\n                offset: 0,\r\n                color: '#7b7cb5',\r\n              },\r\n              {\r\n                offset: 1,\r\n                color: '#2a3240',\r\n              },\r\n              {\r\n                offset: 2,\r\n                color: '#2a3240',\r\n              },\r\n            ],\r\n          },\r\n        },\r\n      } as Options;\r\n    default:\r\n      return {\r\n        data: '',\r\n        qrOptions: {\r\n          errorCorrectionLevel: 'Q',\r\n        },\r\n        dotsOptions: {\r\n          color: '#202020',\r\n        },\r\n        backgroundOptions: {\r\n          color: '#ffffff',\r\n        },\r\n      } as Options;\r\n  }\r\n};\r\n","import QRCodeStyling from 'qr-code-styling';\r\nimport { AsyncSubject } from 'rxjs';\r\n\r\nimport { Options } from './ngx-qrcode-styling.options';\r\nimport { Templates } from './ngx-qrcode-styling.templates';\r\n\r\n/**\r\n * drawQrcode\r\n * @param config\r\n * @param container\r\n * @returns\r\n */\r\nexport function drawQrcode(\r\n  config: Options,\r\n  container:\r\n    | HTMLElement\r\n    | HTMLVideoElement\r\n    | HTMLCanvasElement\r\n    | SVGElement\r\n    | any\r\n): AsyncSubject<any> {\r\n  const subject = new AsyncSubject();\r\n\r\n  // Reject\r\n  if (!config || !container) {\r\n    subject.error('Container or Config not available!');\r\n    subject.complete();\r\n    return subject;\r\n  }\r\n\r\n  const element = document.createElement('div');\r\n\r\n  /**\r\n   * QRCODE_NONE_FRAME\r\n   * @returns\r\n   */\r\n  const QRCODE_NONE_FRAME = () => {\r\n    if (config?.frameOptions) {\r\n      return false;\r\n    } else {\r\n      const encodeConfig = () => {\r\n        let deep = config && JSON.parse(JSON.stringify(config)); // deep\r\n        return Object.assign(\r\n          {\r\n            data: (window as any).unescape(\r\n              encodeURIComponent(deep?.data ?? '')\r\n            ),\r\n          },\r\n          deep\r\n        );\r\n      };\r\n      // removeChild\r\n      while (container.firstChild) {\r\n        container.removeChild(container.lastChild);\r\n      }\r\n      const CR = new QRCodeStyling(encodeConfig() as Options);\r\n      // append to container\r\n      CR.append(container);\r\n      return true;\r\n    }\r\n  };\r\n\r\n  const styleName = config?.frameOptions?.style ?? 'F_020';\r\n  const height = config?.frameOptions?.height ?? 300;\r\n  const width = config?.frameOptions?.width ?? 300;\r\n  const x = config?.frameOptions?.x ?? 50;\r\n  const y = config?.frameOptions?.y ?? 50;\r\n\r\n  /**\r\n   * ADD_FRAME_SVG_TO_ELEMENT\r\n   * @returns\r\n   */\r\n  const ADD_FRAME_SVG_TO_ELEMENT = () => {\r\n    const http = fetch(\r\n      `https://cdn.jsdelivr.net/gh/id1945/ngx-qrcode-styling/svg/1.2.9/${styleName}.svg`,\r\n      { method: 'GET' }\r\n    );\r\n    return new Promise((resolve, reject) => {\r\n      http\r\n        .then((response) => response.text())\r\n        .then((result) => {\r\n          if (result !== '404: Not Found') {\r\n            upgradeSvg(result);\r\n          }\r\n          resolve(result);\r\n        })\r\n        .catch((error) => {\r\n          console.error(error);\r\n          reject(error);\r\n        });\r\n    });\r\n  };\r\n\r\n  const upgradeSvg = (result: string) => {\r\n    const parser = new DOMParser();\r\n    const doc = parser.parseFromString(result, 'image/svg+xml');\r\n    if (doc) {\r\n      const svgEl = (doc.documentElement.children as any)[styleName + '_svg'];\r\n      if (!svgEl) return;\r\n      const textEls = svgEl.getElementsByClassName('frame-text');\r\n      const contentEls = svgEl.getElementsByClassName('frame-content');\r\n      const containerEls = svgEl.getElementsByClassName('frame-container');\r\n      config?.frameOptions?.background &&\r\n        svgEl.setAttribute(\r\n          'style',\r\n          `background: ${\r\n            config?.frameOptions?.background\r\n          };${svgEl?.getAttribute('style')}`\r\n        );\r\n      const updateStyle = (el: any, config: any) => {\r\n        if (el) {\r\n          for (const key in config) {\r\n            if ((['x', 'y', 'transform'] as any).includes(key)) {\r\n              el.setAttribute(key, config && config[key]);\r\n            } else if ((['textContent'] as any).includes(key)) {\r\n              el[key] = config && config[key];\r\n            } else {\r\n              el.style[key] = config && config[key];\r\n            }\r\n          }\r\n        }\r\n      };\r\n\r\n      const createElementNS = (config: any) => {\r\n        const svgNS = 'http://www.w3.org/2000/svg';\r\n        const newText = document.createElementNS(svgNS, 'text');\r\n        updateStyle(newText, config);\r\n        svgEl.appendChild(newText);\r\n      };\r\n\r\n      if (config?.frameOptions?.texts) {\r\n        [...config.frameOptions.texts].forEach((text: any, i: any) => {\r\n          const el = [...textEls]?.[i];\r\n          el ? updateStyle(el, text) : createElementNS(text);\r\n        });\r\n      }\r\n\r\n      if (config?.frameOptions?.containers) {\r\n        [...containerEls].forEach((el: any, i: any) => {\r\n          updateStyle(el, config?.frameOptions?.containers?.[i]);\r\n        });\r\n      }\r\n\r\n      if (config?.frameOptions?.contents) {\r\n        [...contentEls].forEach((el: any, i: any) => {\r\n          updateStyle(el, config?.frameOptions?.contents?.[i]);\r\n        });\r\n      }\r\n\r\n      element.appendChild(doc.documentElement);\r\n    }\r\n  };\r\n\r\n  /**\r\n   * UPDATE_POSITION_QRCODE_ON_FRAME\r\n   * @returns HTMLElement\r\n   */\r\n  const UPDATE_POSITION_QRCODE_ON_FRAME = () => {\r\n    const after = element.querySelector('.ngx_qrcode_styling_after');\r\n    if (after && config?.zIndex === 1) {\r\n      after?.setAttribute('transform', `translate(${x},${y})`);\r\n      return after as HTMLElement;\r\n    }\r\n    const before = element.querySelector('.ngx_qrcode_styling_before');\r\n    before?.setAttribute('transform', `translate(${x},${y})`);\r\n    return before as HTMLElement;\r\n  };\r\n\r\n  /**\r\n   * UPDATE_ROTATE_SCALE_QRCODE_ON_FRAME\r\n   * @param svg\r\n   * @returns void\r\n   */\r\n  const UPDATE_ROTATE_SCALE_QRCODE_ON_FRAME = (svg: HTMLElement) => {\r\n    if (svg && config?.rotate) {\r\n      svg?.childNodes?.[0]?.childNodes?.forEach((node: any) => {\r\n        if (node.nodeName === 'rect') {\r\n          node.style.transformOrigin = `50% 50%`;\r\n          node.style.transform = `rotate(${config?.rotate ?? 0}deg)`;\r\n        }\r\n      });\r\n    }\r\n    if (svg && config?.scale) {\r\n      svg?.childNodes?.[0]?.childNodes?.forEach((node: any) => {\r\n        if (node.nodeName === 'rect') {\r\n          node.style.scale = config?.scale ?? 0;\r\n        }\r\n      });\r\n    }\r\n  };\r\n\r\n  /**\r\n   * CREATE_QRCODE_INTO_FRAME\r\n   * @param addsvg\r\n   * @returns\r\n   */\r\n  const CREATE_QRCODE_INTO_FRAME = (addsvg: HTMLElement) => {\r\n    const defaultConfig = () => {\r\n      let deep = config && JSON.parse(JSON.stringify(config)); // deep\r\n      deep = {\r\n        ...deep,\r\n        ...{\r\n          type: 'svg',\r\n          data: (window as any).unescape(encodeURIComponent(deep?.data ?? '')),\r\n        },\r\n      };\r\n      delete deep.frameOptions;\r\n      delete deep.template;\r\n      return deep;\r\n    };\r\n    // removeChild\r\n    while (container?.firstChild) {\r\n      container.removeChild(container.lastChild);\r\n    }\r\n    const CR = new QRCodeStyling(defaultConfig() as Options);\r\n    return CR?._svgDrawingPromise\r\n      ?.then(() => {\r\n        CR.append(addsvg);\r\n      })\r\n      .catch((error: any) => console.error(error));\r\n  };\r\n\r\n  /**\r\n   * QRCODE_TYPE_SVG\r\n   * @returns\r\n   */\r\n  const QRCODE_TYPE_SVG = () => {\r\n    if (config?.type === 'svg') {\r\n      UPDATE_SIZE_SVG();\r\n      container.appendChild(element);\r\n      return true;\r\n    }\r\n    return false;\r\n  };\r\n\r\n  /**\r\n   * CREATE_CANVAS_WITH_SIZE\r\n   * @returns\r\n   */\r\n  const CREATE_CANVAS_WITH_SIZE = () => {\r\n    const canvas = document.createElement('canvas');\r\n    canvas.height = height;\r\n    canvas.width = width;\r\n    container.appendChild(canvas);\r\n    return canvas;\r\n  };\r\n\r\n  /**\r\n   * ELEMENT_CONVERT_TO_BASE64\r\n   * @param s1\r\n   * @returns\r\n   */\r\n  const ELEMENT_CONVERT_TO_BASE64 = (s1: HTMLElement) => {\r\n    let b64 = 'data:image/svg+xml;base64,';\r\n    const xml = s1 && new XMLSerializer().serializeToString(s1);\r\n    return (b64 += xml && btoa(unescape(encodeURIComponent(xml))));\r\n  };\r\n\r\n  /**\r\n   * UPDATE_SIZE_SVG\r\n   * @returns\r\n   */\r\n  const UPDATE_SIZE_SVG = () => {\r\n    const s1 = element.querySelector(`#${styleName}_svg`);\r\n    s1 && s1.setAttribute('height', `${height}px`);\r\n    s1 && s1.setAttribute('width', `${width}px`);\r\n    return s1 as HTMLElement;\r\n  };\r\n\r\n  /**\r\n   * BASE64_TO_BLOB\r\n   * @param base64Image\r\n   * @returns\r\n   */\r\n  const BASE64_TO_BLOB = (base64Image: string) => {\r\n    // Split into two parts\r\n    const parts = base64Image.split(';base64,');\r\n    // Hold the content type\r\n    const imageType = parts[0].split(':')[1];\r\n    // Decode Base64 string\r\n    const decodedData = window.atob(parts[1]);\r\n    // Create UNIT8ARRAY of size same as row data length\r\n    const uInt8Array = new Uint8Array(decodedData.length);\r\n    // Insert all character code into uInt8Array\r\n    for (let i = 0; i < decodedData.length; ++i) {\r\n      uInt8Array[i] = decodedData.charCodeAt(i);\r\n    }\r\n    // Return BLOB image after conversion\r\n    return new Blob([uInt8Array], { type: imageType });\r\n  };\r\n\r\n  /**\r\n   * CREATE_IMAGE\r\n   */\r\n  const CREATE_IMAGE = () => {\r\n    const img = new Image();\r\n    const ctx = CREATE_CANVAS_WITH_SIZE().getContext('2d');\r\n    img.onload = function () {\r\n      ctx && ctx.drawImage(img, 0, 0);\r\n    };\r\n    const blob = BASE64_TO_BLOB(ELEMENT_CONVERT_TO_BASE64(UPDATE_SIZE_SVG()));\r\n    const blobUrl = URL.createObjectURL(blob);\r\n    img.src = blobUrl;\r\n  };\r\n\r\n  /**\r\n   * MAIN\r\n   */\r\n  (async function () {\r\n    if (QRCODE_NONE_FRAME()) {\r\n      subject.next({ config, container });\r\n      subject.complete();\r\n      return; // Mode qrcode basic\r\n    } else {\r\n      await ADD_FRAME_SVG_TO_ELEMENT();\r\n      const ADDSVG = UPDATE_POSITION_QRCODE_ON_FRAME();\r\n      await CREATE_QRCODE_INTO_FRAME(ADDSVG);\r\n      UPDATE_ROTATE_SCALE_QRCODE_ON_FRAME(ADDSVG);\r\n      if (QRCODE_TYPE_SVG()) {\r\n        // Mode qrcode + frame type svg\r\n        subject.next({ config, container });\r\n        subject.complete();\r\n      } else {\r\n        // Mode qrcode + frame type canvas\r\n        CREATE_IMAGE();\r\n        subject.next({ config, container });\r\n        subject.complete();\r\n      }\r\n    }\r\n  })();\r\n\r\n  return subject;\r\n}\r\n\r\n/**\r\n * defaultTemplate\r\n * @param config\r\n * @returns\r\n */\r\nexport const defaultTemplate = (config?: Options): Options => {\r\n  let deep = config && JSON.parse(JSON.stringify(config));\r\n  return config?.template\r\n    ? { ...Templates(config.template.toLocaleLowerCase()), ...deep }\r\n    : deep;\r\n};\r\n\r\n/**\r\n * deepUpdate\r\n * @param config\r\n * @param configUpdate\r\n * @returns\r\n */\r\nexport const deepUpdate = async (\r\n  config: Options,\r\n  configUpdate: Options\r\n): Promise<Options> => {\r\n  const origin = config && JSON.parse(JSON.stringify(config));\r\n  let clone = { ...origin, ...configUpdate };\r\n  const keys = [\r\n    'frameOptions',\r\n    'qrOptions',\r\n    'imageOptions',\r\n    'dotsOptions',\r\n    'cornersSquareOptions',\r\n    'cornersDotOptions',\r\n    'backgroundOptions',\r\n  ];\r\n  for await (const key of keys) {\r\n    if (key in configUpdate) {\r\n      const update = {\r\n        [key]: { ...origin[key], ...(configUpdate as any)[key] },\r\n      };\r\n      clone = { ...clone, ...update };\r\n    }\r\n  }\r\n  return clone;\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { AsyncSubject } from 'rxjs';\r\n\r\nimport {\r\n  deepUpdate,\r\n  defaultTemplate,\r\n  drawQrcode,\r\n} from './ngx-qrcode-styling.helper';\r\nimport { Options } from './ngx-qrcode-styling.options';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class NgxQrcodeStylingService {\r\n  /**\r\n   * create\r\n   * @param config\r\n   * @param container\r\n   * @returns\r\n   */\r\n  public create(\r\n    config: Options,\r\n    container:\r\n      | HTMLElement\r\n      | HTMLVideoElement\r\n      | HTMLCanvasElement\r\n      | SVGElement\r\n      | any\r\n  ): AsyncSubject<any> {\r\n    return drawQrcode(defaultTemplate(config), container);\r\n  }\r\n\r\n  /**\r\n   * update\r\n   * @param config\r\n   * @param configUpdate\r\n   * @param container\r\n   * @returns\r\n   */\r\n  public update(\r\n    config: Options,\r\n    configUpdate: Options,\r\n    container:\r\n      | HTMLElement\r\n      | HTMLVideoElement\r\n      | HTMLCanvasElement\r\n      | SVGElement\r\n      | any\r\n  ): AsyncSubject<any> {\r\n    const subject = new AsyncSubject();\r\n    (async function () {\r\n      const conf = await deepUpdate(\r\n        defaultTemplate(config),\r\n        defaultTemplate(configUpdate)\r\n      );\r\n      drawQrcode(conf, container).subscribe((s) => {\r\n        subject.next(s);\r\n        subject.complete();\r\n      });\r\n    })();\r\n    return subject;\r\n  }\r\n\r\n  /**\r\n   * download image\r\n   * @param fileName eg: demo.png\r\n   * @param container\r\n   * @param timeout\r\n   * @returns\r\n   */\r\n  public download(\r\n    container:\r\n      | HTMLElement\r\n      | HTMLVideoElement\r\n      | HTMLCanvasElement\r\n      | SVGElement\r\n      | any,\r\n    fileName = '',\r\n    timeout = 0\r\n  ): AsyncSubject<any> {\r\n    const subject = new AsyncSubject();\r\n\r\n    const _fileName = (type: string) => {\r\n      if (!fileName) {\r\n        fileName = `ngx_qrcode_styling_${Date.now()}.${type}`;\r\n      }\r\n    };\r\n\r\n    const _download = (dataURL: string) => {\r\n      const link = document.createElement('a');\r\n      link.download = fileName;\r\n      link.href = dataURL;\r\n      link.click();\r\n      link.remove();\r\n    };\r\n\r\n    const _complete = (url: string) => {\r\n      if (url) {\r\n        _download(url);\r\n        subject.next({ fileName, container, url: url });\r\n        subject.complete();\r\n      } else {\r\n        subject.error('Container not found!');\r\n        subject.complete();\r\n      }\r\n    };\r\n\r\n    setTimeout(() => {\r\n      const canvas = container?.querySelector('canvas');\r\n      if (canvas) {\r\n        _fileName('png');\r\n        const typeImg = fileName\r\n          ? fileName?.split('.')?.slice(-1)?.toString()\r\n          : 'png';\r\n        canvas.toBlob(\r\n          (blob: any) => _complete(URL.createObjectURL(blob)),\r\n          'image/' + typeImg\r\n        );\r\n      } else {\r\n        const svg = container?.querySelector('svg');\r\n        if (svg) {\r\n          _fileName('svg');\r\n          const svgData = svg.outerHTML;\r\n          const svgBlob = new Blob([svgData], {\r\n            type: 'image/svg+xml;charset=utf-8',\r\n          });\r\n          const svgUrl = URL.createObjectURL(svgBlob);\r\n          _complete(svgUrl);\r\n        } else {\r\n          _complete('');\r\n        }\r\n      }\r\n    }, timeout);\r\n    return subject;\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnInit,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AsyncSubject } from 'rxjs';\r\n\r\nimport {\r\n  CornerDotType,\r\n  CornerSquareType,\r\n  DotType,\r\n  DrawType,\r\n  ErrorCorrectionLevel,\r\n  FrameStyle,\r\n  Gradient,\r\n  Mode,\r\n  Options,\r\n  ShapeType,\r\n  TemplateType,\r\n  TypeNumber,\r\n  UnknownObject,\r\n} from './ngx-qrcode-styling.options';\r\nimport { NgxQrcodeStylingService } from './ngx-qrcode-styling.service';\r\n\r\n@Component({\r\n  selector: 'ngx-qrcode-styling',\r\n  template: '<ng-content></ng-content>',\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NgxQrcodeStylingComponent implements OnInit {\r\n  /**\r\n   * Options\r\n   */\r\n  @Input()\r\n  public config!: Options;\r\n\r\n  /**\r\n   * TemplateType\r\n   */\r\n  @Input()\r\n  public template: TemplateType = 'default';\r\n\r\n  /**\r\n   * DrawType\r\n   */\r\n  @Input()\r\n  public type!: DrawType;\r\n\r\n  /**\r\n   * ShapeType\r\n   */\r\n  @Input()\r\n  public shape!: ShapeType;\r\n\r\n  /**\r\n   * number\r\n   */\r\n  @Input()\r\n  public width!: number;\r\n\r\n  /**\r\n   * number\r\n   */\r\n  @Input()\r\n  public height!: number;\r\n\r\n  /**\r\n   * number\r\n   */\r\n  @Input()\r\n  public margin!: number;\r\n\r\n  /**\r\n   * string\r\n   */\r\n  @Input()\r\n  public data!: string;\r\n\r\n  /**\r\n   * string\r\n   */\r\n  @Input()\r\n  public image!: string;\r\n\r\n  /**\r\n   * number\r\n   */\r\n  @Input()\r\n  public scale: number = 0;\r\n\r\n  /**\r\n   * number\r\n   */\r\n  @Input()\r\n  public rotate: number = 0;\r\n\r\n  /**\r\n   * number\r\n   */\r\n  @Input()\r\n  public zIndex: 1 | 2 = 2;\r\n\r\n  /**\r\n   * object\r\n   */\r\n  @Input()\r\n  public frameOptions!: {\r\n    style?: FrameStyle;\r\n    height?: number;\r\n    width?: number;\r\n    x?: number;\r\n    y?: number;\r\n    background?: string;\r\n    texts?: UnknownObject[];\r\n    contents?: UnknownObject[];\r\n    containers?: UnknownObject[];\r\n  };\r\n\r\n  /**\r\n   * object\r\n   */\r\n  @Input()\r\n  qrOptions!: {\r\n    typeNumber?: TypeNumber;\r\n    mode?: Mode;\r\n    errorCorrectionLevel?: ErrorCorrectionLevel;\r\n  };\r\n\r\n  /**\r\n   * object\r\n   */\r\n  @Input()\r\n  imageOptions!: {\r\n    hideBackgroundDots?: boolean;\r\n    imageSize?: number;\r\n    crossOrigin?: string;\r\n    margin?: number;\r\n  };\r\n\r\n  /**\r\n   * object\r\n   */\r\n  @Input()\r\n  dotsOptions!: {\r\n    type?: DotType;\r\n    color?: string;\r\n    gradient?: Gradient;\r\n  };\r\n\r\n  /**\r\n   * object\r\n   */\r\n  @Input()\r\n  cornersSquareOptions!: {\r\n    type?: CornerSquareType;\r\n    color?: string;\r\n    gradient?: Gradient;\r\n  };\r\n\r\n  /**\r\n   * object\r\n   */\r\n  @Input()\r\n  cornersDotOptions!: {\r\n    type?: CornerDotType;\r\n    color?: string;\r\n    gradient?: Gradient;\r\n  };\r\n\r\n  /**\r\n   * object\r\n   */\r\n  @Input()\r\n  backgroundOptions!: {\r\n    round?: number;\r\n    color?: string;\r\n    gradient?: Gradient;\r\n  };\r\n\r\n  constructor(\r\n    private canvas: ElementRef,\r\n    private service: NgxQrcodeStylingService\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    if (this.canvas) {\r\n      /**\r\n       * @Input override\r\n       */\r\n      if (this.template)\r\n        this.config = {\r\n          ...this.config,\r\n          template: this.template,\r\n        };\r\n\r\n      if (this.type)\r\n        this.config = {\r\n          ...this.config,\r\n          type: this.type,\r\n        };\r\n\r\n      if (this.shape)\r\n        this.config = {\r\n          ...this.config,\r\n          shape: this.shape,\r\n        };\r\n\r\n      if (this.width)\r\n        this.config = {\r\n          ...this.config,\r\n          width: this.width,\r\n        };\r\n\r\n      if (this.height)\r\n        this.config = {\r\n          ...this.config,\r\n          height: this.height,\r\n        };\r\n\r\n      if (this.margin)\r\n        this.config = {\r\n          ...this.config,\r\n          margin: this.margin,\r\n        };\r\n\r\n      if (this.data)\r\n        this.config = {\r\n          ...this.config,\r\n          data: this.data,\r\n        };\r\n\r\n      if (this.image)\r\n        this.config = {\r\n          ...this.config,\r\n          image: this.image,\r\n        };\r\n\r\n      if (this.scale)\r\n        this.config = {\r\n          ...this.config,\r\n          scale: this.scale,\r\n        };\r\n\r\n      if (this.rotate)\r\n        this.config = {\r\n          ...this.config,\r\n          rotate: this.rotate,\r\n        };\r\n\r\n      if (this.zIndex)\r\n        this.config = {\r\n          ...this.config,\r\n          zIndex: this.zIndex,\r\n        };\r\n\r\n      if (this.frameOptions)\r\n        this.config = {\r\n          ...this.config,\r\n          frameOptions: this.frameOptions,\r\n        };\r\n\r\n      if (this.qrOptions)\r\n        this.config = {\r\n          ...this.config,\r\n          qrOptions: this.qrOptions,\r\n        };\r\n\r\n      if (this.imageOptions)\r\n        this.config = {\r\n          ...this.config,\r\n          imageOptions: this.imageOptions,\r\n        };\r\n\r\n      if (this.dotsOptions)\r\n        this.config = {\r\n          ...this.config,\r\n          dotsOptions: this.dotsOptions,\r\n        };\r\n\r\n      if (this.cornersSquareOptions)\r\n        this.config = {\r\n          ...this.config,\r\n          cornersSquareOptions: this.cornersSquareOptions,\r\n        };\r\n\r\n      if (this.cornersDotOptions)\r\n        this.config = {\r\n          ...this.config,\r\n          cornersDotOptions: this.cornersDotOptions,\r\n        };\r\n\r\n      if (this.backgroundOptions)\r\n        this.config = {\r\n          ...this.config,\r\n          backgroundOptions: this.backgroundOptions,\r\n        };\r\n\r\n      this.create(this.config);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * create\r\n   * @param config\r\n   * @returns\r\n   */\r\n  public create(config: Options): AsyncSubject<any> {\r\n    return this.service.create(config, this.canvas.nativeElement);\r\n  }\r\n\r\n  /**\r\n   * update\r\n   * @param config\r\n   * @param configUpdate\r\n   * @returns\r\n   */\r\n  public update(config: Options, configUpdate: Options): AsyncSubject<any> {\r\n    return this.service.update(config, configUpdate, this.canvas.nativeElement);\r\n  }\r\n\r\n  /**\r\n   * download image\r\n   * @param fileName eg: demo.png\r\n   * @param timeout\r\n   * @returns\r\n   */\r\n  public download(fileName?: string, timeout = 0): AsyncSubject<any> {\r\n    return this.service.download(this.canvas.nativeElement, fileName, timeout);\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ngx-qrcode-styling\r\n */\r\n\r\nexport * from './lib/ngx-qrcode-styling.templates';\r\nexport * from './lib/ngx-qrcode-styling.options';\r\nexport * from './lib/ngx-qrcode-styling.service';\r\nexport * from './lib/ngx-qrcode-styling.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxQrcodeStylingService"],"mappings":"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"}