{"version":3,"file":"qrcodesdk-angular.mjs","names":[],"sources":["../../../src/lib/render-element.ts","../../../src/lib/split-options.ts","../../../src/lib/QRCodeCanvas.ts","../../../src/lib/QRCodeImage.ts","../../../src/lib/QRCodeSVG.ts"],"sourcesContent":["import type {ElementRef, Renderer2} from '@angular/core';\n\nexport function replaceElementChildren<TElement extends HTMLElement>(\n  renderer: Renderer2,\n  element: ElementRef<TElement>,\n  child: Element,\n): void {\n  const nativeElement = element.nativeElement;\n\n  while (nativeElement.firstChild) {\n    renderer.removeChild(nativeElement, nativeElement.firstChild);\n  }\n\n  renderer.appendChild(nativeElement, child);\n}\n","import type {QRCodeMatrixOptions} from '@qrcodesdk/core';\n\nexport function splitOptions<T extends {readonly matrix?: QRCodeMatrixOptions}>(\n  options: T | undefined,\n): readonly [QRCodeMatrixOptions | undefined, Omit<T, 'matrix'> | undefined] {\n  if (!options) return [undefined, undefined];\n  const {matrix, ...renderer} = options;\n  return [matrix, renderer];\n}\n","import {isPlatformBrowser} from '@angular/common';\nimport {\n  Component,\n  ElementRef,\n  PLATFORM_ID,\n  Renderer2,\n  computed,\n  effect,\n  inject,\n  input,\n} from '@angular/core';\n\nimport {type QRCodeCanvasOptions, QRCodeCanvasRenderer} from '@qrcodesdk/browser';\nimport {type QRCodePayload, qrcode} from '@qrcodesdk/core';\n\nimport {replaceElementChildren} from './render-element';\nimport {splitOptions} from './split-options';\n\n@Component({\n  selector: 'qrcode-canvas',\n  template: '',\n})\nexport class QRCodeCanvas {\n  private readonly renderer = inject(Renderer2);\n  private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n  private readonly qrcode = inject(ElementRef);\n\n  readonly payload = input.required<QRCodePayload>();\n\n  readonly options = input<QRCodeCanvasOptions>();\n\n  private readonly resolvedOptions = computed(() => splitOptions(this.options()));\n  private readonly canvasRenderer = computed(() => QRCodeCanvasRenderer(this.resolvedOptions()[1]));\n\n  private readonly qrcodeBuilder = computed(() =>\n    qrcode(this.payload()).options(this.resolvedOptions()[0]).renderer(this.canvasRenderer()),\n  );\n\n  constructor() {\n    effect(() => {\n      if (!this.isBrowser) return;\n\n      const canvas = this.qrcodeBuilder().render();\n\n      replaceElementChildren(this.renderer, this.qrcode, canvas);\n    });\n  }\n}\n","import {isPlatformBrowser} from '@angular/common';\nimport {\n  Component,\n  ElementRef,\n  PLATFORM_ID,\n  Renderer2,\n  computed,\n  effect,\n  inject,\n  input,\n} from '@angular/core';\n\nimport {\n  QRCodeDownloadImageRenderer,\n  type QRCodeImageOptions,\n  QRCodeImageRenderer,\n} from '@qrcodesdk/browser';\nimport {type QRCodePayload, qrcode} from '@qrcodesdk/core';\n\nimport {replaceElementChildren} from './render-element';\nimport {splitOptions} from './split-options';\n\n@Component({\n  selector: 'qrcode-image',\n  template: '',\n})\nexport class QRCodeImage {\n  private readonly renderer = inject(Renderer2);\n  private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n  private readonly qrcode = inject(ElementRef);\n\n  readonly payload = input.required<QRCodePayload>();\n\n  readonly options = input<QRCodeImageOptions>();\n\n  private readonly resolvedOptions = computed(() => splitOptions(this.options()));\n  private readonly imageRenderer = computed(() => QRCodeImageRenderer(this.resolvedOptions()[1]));\n\n  private readonly qrcodeBuilder = computed(() =>\n    qrcode(this.payload()).options(this.resolvedOptions()[0]).renderer(this.imageRenderer()),\n  );\n\n  constructor() {\n    effect(() => {\n      if (!this.isBrowser) return;\n\n      const image = this.qrcodeBuilder().render();\n\n      replaceElementChildren(this.renderer, this.qrcode, image);\n    });\n  }\n\n  public download(filename?: string): void {\n    if (!this.isBrowser) return;\n\n    this.qrcodeBuilder().render(\n      QRCodeDownloadImageRenderer({\n        renderer: this.imageRenderer(),\n        filename,\n      }),\n    );\n  }\n}\n","import {isPlatformBrowser} from '@angular/common';\nimport {\n  Component,\n  ElementRef,\n  PLATFORM_ID,\n  Renderer2,\n  computed,\n  effect,\n  inject,\n  input,\n} from '@angular/core';\n\nimport {QRCodeDownloadSVGRenderer} from '@qrcodesdk/browser';\nimport {\n  type QRCodePayload,\n  type QRCodeSVGOptions,\n  QRCodeSVGRenderer,\n  qrcode,\n} from '@qrcodesdk/core';\n\nimport {splitOptions} from './split-options';\n\n@Component({\n  selector: 'qrcode-svg',\n  template: '',\n})\nexport class QRCodeSVG {\n  private readonly renderer = inject(Renderer2);\n  private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n  private readonly qrcode = inject(ElementRef);\n\n  readonly payload = input.required<QRCodePayload>();\n\n  readonly options = input<QRCodeSVGOptions>();\n\n  private readonly resolvedOptions = computed(() => splitOptions(this.options()));\n  private readonly svgRenderer = computed(() => QRCodeSVGRenderer(this.resolvedOptions()[1]));\n\n  private readonly qrcodeBuilder = computed(() =>\n    qrcode(this.payload()).options(this.resolvedOptions()[0]).renderer(this.svgRenderer()),\n  );\n\n  constructor() {\n    effect(() => {\n      const qrcodeBuilder = this.qrcodeBuilder();\n      const svg = qrcodeBuilder.render();\n\n      this.renderer.setProperty(this.qrcode.nativeElement, 'innerHTML', svg);\n    });\n  }\n\n  public download(filename?: string): void {\n    if (!this.isBrowser) return;\n\n    this.qrcodeBuilder().render(\n      QRCodeDownloadSVGRenderer({\n        renderer: this.svgRenderer(),\n        filename,\n      }),\n    );\n  }\n}\n"],"mappings":"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"}