{"version":3,"file":"angularx-qrcode.mjs","sources":["../../../projects/angularx-qrcode/src/lib/angularx-qrcode.component.ts","../../../projects/angularx-qrcode/src/lib/angularx-qrcode.module.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n Renderer2,\n ViewChild,\n} from \"@angular/core\"\nimport { DomSanitizer, SafeUrl } from \"@angular/platform-browser\"\nimport {\n QRCodeErrorCorrectionLevel,\n QRCodeRenderersOptions,\n QRCodeToDataURLOptions,\n QRCodeToStringOptions,\n toCanvas,\n toDataURL,\n toString,\n} from \"qrcode\"\nimport { QRCodeVersion, QRCodeElementType, FixMeLater } from \"./types\"\n\n@Component({\n selector: \"qrcode\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `
`,\n})\nexport class QRCodeComponent implements OnChanges {\n @Input() public allowEmptyString = false\n @Input() public colorDark = \"#000000ff\"\n @Input() public colorLight = \"#ffffffff\"\n @Input() public cssClass = \"qrcode\"\n @Input() public elementType: QRCodeElementType = \"canvas\"\n @Input()\n public errorCorrectionLevel: QRCodeErrorCorrectionLevel = \"M\"\n @Input() public imageSrc?: string\n @Input() public imageHeight?: number\n @Input() public imageWidth?: number\n @Input() public margin = 4\n @Input() public qrdata = \"\"\n @Input() public scale = 4\n @Input() public version?: QRCodeVersion\n @Input() public width = 10\n\n // Accessibility features introduced in 13.0.4+\n @Input() public alt?: string\n @Input() public ariaLabel?: string\n @Input() public title?: string\n\n @Output() qrCodeURL = new EventEmitter()\n\n @ViewChild(\"qrcElement\", { static: true }) public qrcElement!: ElementRef\n\n public context: CanvasRenderingContext2D | null = null\n private centerImage?: HTMLImageElement\n\n constructor(private renderer: Renderer2, private sanitizer: DomSanitizer) {}\n\n public async ngOnChanges(): Promise {\n await this.createQRCode()\n }\n\n protected isValidQrCodeText(data: string | null): boolean {\n if (this.allowEmptyString === false) {\n return !(\n typeof data === \"undefined\" ||\n data === \"\" ||\n data === \"null\" ||\n data === null\n )\n }\n return !(typeof data === \"undefined\")\n }\n\n private toDataURL(qrCodeConfig: QRCodeToDataURLOptions): Promise {\n return new Promise(\n (\n resolve: (arg: FixMeLater) => FixMeLater,\n reject: (arg: FixMeLater) => FixMeLater\n ) => {\n toDataURL(\n this.qrdata,\n qrCodeConfig,\n (err: Error | null | undefined, url: string) => {\n if (err) {\n reject(err)\n } else {\n resolve(url)\n }\n }\n )\n }\n )\n }\n\n private toCanvas(\n canvas: HTMLCanvasElement,\n qrCodeConfig: QRCodeRenderersOptions\n ): Promise {\n return new Promise(\n (\n resolve: (arg: FixMeLater) => FixMeLater,\n reject: (arg: FixMeLater) => FixMeLater\n ) => {\n toCanvas(\n canvas,\n this.qrdata,\n qrCodeConfig,\n (error: Error | null | undefined) => {\n if (error) {\n reject(error)\n } else {\n resolve(\"success\")\n }\n }\n )\n }\n )\n }\n\n private toSVG(qrCodeConfig: QRCodeToStringOptions): Promise {\n return new Promise(\n (\n resolve: (arg: FixMeLater) => FixMeLater,\n reject: (arg: FixMeLater) => FixMeLater\n ) => {\n toString(\n this.qrdata,\n qrCodeConfig,\n (err: Error | null | undefined, url: string) => {\n if (err) {\n reject(err)\n } else {\n resolve(url)\n }\n }\n )\n }\n )\n }\n\n private renderElement(element: Element): void {\n for (const node of this.qrcElement.nativeElement.childNodes) {\n this.renderer.removeChild(this.qrcElement.nativeElement, node)\n }\n this.renderer.appendChild(this.qrcElement.nativeElement, element)\n }\n\n private async createQRCode(): Promise {\n // Set sensitive defaults\n if (this.version && this.version > 40) {\n console.warn(\"[angularx-qrcode] max value for `version` is 40\")\n this.version = 40\n } else if (this.version && this.version < 1) {\n console.warn(\"[angularx-qrcode]`min value for `version` is 1\")\n this.version = 1\n } else if (this.version !== undefined && isNaN(this.version)) {\n console.warn(\n \"[angularx-qrcode] version should be a number, defaulting to auto.\"\n )\n this.version = undefined\n }\n\n try {\n if (!this.isValidQrCodeText(this.qrdata)) {\n throw new Error(\n \"[angularx-qrcode] Field `qrdata` is empty, set 'allowEmptyString=\\\"true\\\"' to overwrite this behaviour.\"\n )\n }\n\n // This is a workaround to allow an empty string as qrdata\n if (this.isValidQrCodeText(this.qrdata) && this.qrdata === \"\") {\n this.qrdata = \" \"\n }\n\n const config = {\n color: {\n dark: this.colorDark,\n light: this.colorLight,\n },\n errorCorrectionLevel: this.errorCorrectionLevel,\n margin: this.margin,\n scale: this.scale,\n version: this.version,\n width: this.width,\n }\n\n const centerImageSrc = this.imageSrc\n const centerImageHeight = this.imageHeight || 40\n const centerImageWidth = this.imageWidth || 40\n\n switch (this.elementType) {\n case \"canvas\": {\n const canvasElement: HTMLCanvasElement =\n this.renderer.createElement(\"canvas\")\n this.context = canvasElement.getContext(\"2d\")\n this.toCanvas(canvasElement, config)\n .then(() => {\n if (this.ariaLabel) {\n this.renderer.setAttribute(\n canvasElement,\n \"aria-label\",\n `${this.ariaLabel}`\n )\n }\n if (this.title) {\n this.renderer.setAttribute(\n canvasElement,\n \"title\",\n `${this.title}`\n )\n }\n\n if (centerImageSrc && this.context) {\n this.centerImage = new Image(\n centerImageWidth,\n centerImageHeight\n )\n\n if (centerImageSrc !== this.centerImage.src) {\n this.centerImage.src = centerImageSrc\n }\n\n if (centerImageHeight !== this.centerImage.height) {\n this.centerImage.height = centerImageHeight\n }\n\n if (centerImageWidth !== this.centerImage.width) {\n this.centerImage.width = centerImageWidth\n }\n\n const centerImage = this.centerImage\n\n if (centerImage) {\n centerImage.onload = () => {\n this.context?.drawImage(\n centerImage,\n canvasElement.width / 2 - centerImageWidth / 2,\n canvasElement.height / 2 - centerImageHeight / 2,\n centerImageWidth,\n centerImageHeight\n )\n }\n }\n }\n\n this.renderElement(canvasElement)\n this.emitQRCodeURL(canvasElement as HTMLCanvasElement)\n })\n .catch((e) => {\n console.error(\"[angularx-qrcode] canvas error:\", e)\n })\n break\n }\n case \"svg\": {\n const svgParentElement: HTMLElement =\n this.renderer.createElement(\"div\")\n this.toSVG(config)\n .then((svgString: string) => {\n this.renderer.setProperty(\n svgParentElement,\n \"innerHTML\",\n svgString\n )\n const svgElement = svgParentElement.firstChild as SVGSVGElement\n this.renderer.setAttribute(svgElement, \"height\", `${this.width}`)\n this.renderer.setAttribute(svgElement, \"width\", `${this.width}`)\n this.renderElement(svgElement)\n this.emitQRCodeURL(svgElement)\n })\n .catch((e) => {\n console.error(\"[angularx-qrcode] svg error:\", e)\n })\n break\n }\n case \"url\":\n case \"img\":\n default: {\n const imgElement: HTMLImageElement =\n this.renderer.createElement(\"img\")\n this.toDataURL(config)\n .then((dataUrl: string) => {\n if (this.alt) {\n imgElement.setAttribute(\"alt\", this.alt)\n }\n if (this.ariaLabel) {\n imgElement.setAttribute(\"aria-label\", this.ariaLabel)\n }\n imgElement.setAttribute(\"src\", dataUrl)\n if (this.title) {\n imgElement.setAttribute(\"title\", this.title)\n }\n this.renderElement(imgElement)\n this.emitQRCodeURL(imgElement)\n })\n .catch((e) => {\n console.error(\"[angularx-qrcode] img/url error:\", e)\n })\n }\n }\n } catch (e: FixMeLater) {\n console.error(\"[angularx-qrcode] Error generating QR Code:\", e.message)\n }\n }\n\n emitQRCodeURL(element: HTMLCanvasElement | HTMLImageElement | SVGSVGElement) {\n const className = element.constructor.name\n if (className === SVGSVGElement.name) {\n const svgHTML = element.outerHTML\n const blob = new Blob([svgHTML], { type: \"image/svg+xml\" })\n const urlSvg = URL.createObjectURL(blob)\n const urlSanitized = this.sanitizer.bypassSecurityTrustUrl(urlSvg)\n this.qrCodeURL.emit(urlSanitized)\n return\n }\n\n let urlImage = \"\"\n\n if (className === HTMLCanvasElement.name) {\n urlImage = (element as HTMLCanvasElement).toDataURL(\"image/png\")\n }\n\n if (className === HTMLImageElement.name) {\n urlImage = (element as HTMLImageElement).src\n }\n\n fetch(urlImage)\n .then((urlResponse: Response) => urlResponse.blob())\n .then((blob: Blob) => URL.createObjectURL(blob))\n .then((url: string) => this.sanitizer.bypassSecurityTrustUrl(url))\n .then((urlSanitized: SafeUrl) => {\n this.qrCodeURL.emit(urlSanitized)\n })\n .catch((error) => {\n console.error(\n \"[angularx-qrcode] Error when fetching image/png URL: \" + error\n )\n })\n }\n}\n","import { NgModule } from \"@angular/core\"\nimport { QRCodeComponent } from \"./angularx-qrcode.component\"\n\n@NgModule({\n providers: [],\n declarations: [QRCodeComponent],\n exports: [QRCodeComponent],\n})\nexport class QRCodeModule {}\n"],"names":[],"mappings":"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"}