{"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, QRCodeMaskPattern, RGBAColor } from \"./types\"\n\nconst validColorRegex = /^#(?:[0-9a-fA-F]{3,4}){1,2}$/\n\nconst validNumberRegex = /^[0-9.]+$/\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 | string\n  @Input() height?: number | string\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?: number = 16\n\n  @Input()\n  qrScale?: number | undefined\n\n  @Input()\n  qrCodeMaskPattern?: QRCodeMaskPattern | undefined\n\n  private centerImage?: HTMLImageElement\n\n  constructor(\n    // eslint-disable-next-line @angular-eslint/prefer-inject\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 = this.darkColor && validColorRegex.test(this.darkColor) ? this.darkColor : undefined\n    const light = this.lightColor && 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\n    await qrcode\n      .toCanvas(canvas, this.value, {\n        version: this.version,\n        errorCorrectionLevel,\n        width: getOptionalInt(this.width),\n        margin: this.margin,\n        scale: this.qrScale,\n        maskPattern: this.qrCodeMaskPattern,\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\nexport function getOptionalInt(value: string | number): number;\nexport function getOptionalInt(value: string | number | undefined): number | undefined;\nexport function getOptionalInt(value: string | number | undefined): number | undefined {\n  if (value === undefined || value === \"\") {\n    return undefined\n  }\n\n  if (typeof value === \"string\") {\n\n    if (!validNumberRegex.test(value)) {\n      throw new Error(`'${ value }' is not a valid number`)\n    }\n\n    return parseFloat(value)\n  }\n\n  return value\n}\n\nexport function getIntOrDefault(value: string | number | undefined, defaultValue: number): number {\n  if (value === undefined || value === \"\") {\n    return defaultValue\n  }\n\n  return getOptionalInt(value)\n}\n","import { CommonModule } from \"@angular/common\"\nimport { Component, Input } from \"@angular/core\"\nimport { QrCodeDirective } from \"./qr-code.directive\"\nimport { QrCodeErrorCorrectionLevel, QRCodeMaskPattern, RGBAColor } from \"./types\"\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\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        [qrScale]=\"scale\"\n        [qrCodeMaskPattern]=\"maskPattern\"\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  @Input()\n  scale?: number\n\n  @Input()\n  maskPattern?: QRCodeMaskPattern\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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"}