{"version":3,"file":"ng-qrcode.mjs","sources":["../../../projects/ng-qrcode/src/lib/qr-code.directive.ts","../../../projects/ng-qrcode/src/lib/qr-code.component.ts","../../../projects/ng-qrcode/src/lib/qr-code.module.ts","../../../projects/ng-qrcode/src/public-api.ts","../../../projects/ng-qrcode/src/ng-qrcode.ts"],"sourcesContent":["import { Directive, Input, isDevMode, OnChanges, ViewContainerRef } from \"@angular/core\"\nimport qrcode from \"qrcode\"\nimport { QrCodeErrorCorrectionLevel, RGBAColor } from \"./types\"\n\nconst validColorRegex = /^#(?:[0-9a-fA-F]{3,4}){1,2}$/\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: `canvas[qrCode]`,\n  standalone: true,\n})\nexport class QrCodeDirective implements OnChanges {\n\n  static readonly DEFAULT_ERROR_CORRECTION_LEVEL: QrCodeErrorCorrectionLevel = \"M\"\n  static readonly DEFAULT_CENTER_IMAGE_SIZE = 40\n\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input(\"qrCode\") value!: string\n\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input(\"qrCodeVersion\") version?: number\n\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input(\"qrCodeErrorCorrectionLevel\") errorCorrectionLevel: QrCodeErrorCorrectionLevel = QrCodeDirective.DEFAULT_ERROR_CORRECTION_LEVEL\n\n  @Input() width?: number\n  @Input() height?: number\n  @Input() darkColor: RGBAColor = \"#000000FF\"\n  @Input() lightColor: RGBAColor = \"#FFFFFFFF\"\n\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input(\"qrCodeCenterImageSrc\") centerImageSrc?: string\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input(\"qrCodeCenterImageWidth\") centerImageWidth?: number | string\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input(\"qrCodeCenterImageHeight\") centerImageHeight?: number | string\n\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input(\"qrCodeMargin\") margin = 16\n\n  private centerImage?: HTMLImageElement\n\n  constructor(\n    private viewContainerRef: ViewContainerRef,\n  ) {\n  }\n\n  async ngOnChanges() {\n    if (!this.value) {\n      return\n    }\n\n    if (this.version && this.version > 40) {\n      console.warn(\"[qrCode] max version is 40, clamping\")\n      this.version = 40\n    } else if (this.version && this.version < 1) {\n      console.warn(\"[qrCode] min version is 1, clamping\")\n      this.version = 1\n    } else if (this.version !== undefined && isNaN(this.version)) {\n      console.warn(\"[qrCode] version should be set to a number, defaulting to auto\")\n      this.version = undefined\n    }\n\n    const canvas = this.viewContainerRef.element.nativeElement as HTMLCanvasElement | null\n\n    if (!canvas) {\n      // native element not available on server side rendering\n      return\n    }\n\n    const context = canvas.getContext(\"2d\")\n\n    if (context) {\n      context.clearRect(0, 0, context.canvas.width, context.canvas.height)\n    }\n\n    const errorCorrectionLevel = this.errorCorrectionLevel ?? QrCodeDirective.DEFAULT_ERROR_CORRECTION_LEVEL\n\n    const dark = validColorRegex.test(this.darkColor) ? this.darkColor : undefined\n    const light = validColorRegex.test(this.lightColor) ? this.lightColor : undefined\n\n    if (isDevMode()) {\n      if (!dark && this.darkColor) {\n        console.error(\"[ng-qrcode] darkColor set to invalid value, must be RGBA hex color string, eg: #3050A1FF\")\n      }\n\n      if (!light && this.lightColor) {\n        console.error(\"[ng-qrcode] lightColor set to invalid value, must be RGBA hex color string, eg: #3050A130\")\n      }\n    }\n    await qrcode\n      .toCanvas(canvas, this.value, {\n        version: this.version,\n        errorCorrectionLevel,\n        width: this.width,\n        margin: this.margin,\n        color: {\n          dark,\n          light,\n        },\n      })\n\n    const centerImageSrc = this.centerImageSrc\n    const centerImageWidth = getIntOrDefault(this.centerImageWidth, QrCodeDirective.DEFAULT_CENTER_IMAGE_SIZE)\n    const centerImageHeight = getIntOrDefault(this.centerImageHeight, QrCodeDirective.DEFAULT_CENTER_IMAGE_SIZE)\n\n    if (centerImageSrc && context) {\n\n      if (!this.centerImage) {\n        this.centerImage = new Image(centerImageWidth, centerImageHeight)\n      }\n\n      const centerImage = this.centerImage\n\n      if (centerImageSrc !== this.centerImage.src) {\n        centerImage.src = centerImageSrc\n      }\n\n      if (centerImageWidth !== this.centerImage.width) {\n        centerImage.width = centerImageWidth\n      }\n\n      if (centerImageHeight !== this.centerImage.height) {\n        centerImage.height = centerImageHeight\n      }\n\n      const doDrawImage = () => {\n        context.drawImage(\n          centerImage,\n          canvas.width / 2 - centerImageWidth / 2,\n          canvas.height / 2 - centerImageHeight / 2, centerImageWidth, centerImageHeight,\n        )\n      }\n\n      centerImage.onload = doDrawImage\n\n      if (centerImage.complete) {\n        doDrawImage()\n      }\n\n    }\n\n  }\n\n}\n\nfunction getIntOrDefault(value: string | number | undefined, defaultValue: number): number {\n  if (value === undefined || value === \"\") {\n    return defaultValue\n  }\n\n  if (typeof value === \"string\") {\n    return parseInt(value, 10)\n  }\n\n  return value\n}\n","import { CommonModule } from \"@angular/common\"\nimport { Component, Input } from \"@angular/core\"\nimport { QrCodeDirective } from \"./qr-code.directive\"\nimport { QrCodeErrorCorrectionLevel, RGBAColor } from \"./types\"\n\n@Component({\n  selector: \"qr-code\",\n  template: `\n    @if (value) {\n      <canvas\n        [qrCode]=\"value\"\n        [qrCodeErrorCorrectionLevel]=\"errorCorrectionLevel\"\n        [qrCodeCenterImageSrc]=\"centerImageSrc\"\n        [qrCodeCenterImageWidth]=\"centerImageSize\"\n        [qrCodeCenterImageHeight]=\"centerImageSize\"\n        [qrCodeMargin]=\"margin\"\n        [width]=\"size\"\n        [height]=\"size\"\n        [class]=\"styleClass\"\n        [ngStyle]=\"style\"\n        [darkColor]=\"darkColor\"\n        [lightColor]=\"lightColor\"\n      >\n      </canvas>\n    }\n  `,\n  styles: [],\n  standalone: true,\n  imports: [QrCodeDirective, CommonModule]\n})\nexport class QrCodeComponent {\n\n  @Input()\n  value?: string\n\n  @Input()\n  size?: string | number\n\n  @Input()\n  style?: {\n    // matches type of ngStyle https://angular.io/api/common/NgStyle\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    [klass: string]: any\n  } | null\n\n  @Input()\n  styleClass?: string\n\n  @Input()\n  darkColor?: RGBAColor\n\n  @Input()\n  lightColor?: RGBAColor\n\n  @Input()\n  errorCorrectionLevel?: QrCodeErrorCorrectionLevel\n\n  @Input()\n  centerImageSrc?: string\n\n  @Input()\n  centerImageSize?: string | number\n\n  @Input()\n  margin?: number\n\n}\n","import { CommonModule } from \"@angular/common\"\nimport { NgModule } from \"@angular/core\"\nimport { QrCodeComponent } from \"./qr-code.component\"\nimport { QrCodeDirective } from \"./qr-code.directive\"\n\n/**\n * @deprecated prefer importing `QrCodeComponent` or `QrCodeDirective` directly\n */\n@NgModule({\n  declarations: [\n  ],\n  imports: [\n    CommonModule,\n    QrCodeComponent,\n    QrCodeDirective,\n  ],\n  exports: [\n    QrCodeComponent,\n    QrCodeDirective,\n  ],\n})\nexport class QrCodeModule {\n}\n","/*\n * Public API Surface of ng-qrcode\n */\n\nexport * from \"./lib/qr-code.component\"\nexport * from \"./lib/qr-code.directive\"\nexport * from './lib/qr-code.module'\nexport * from \"./lib/types\"\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}