{"version":3,"file":"angular-signature-pad-v2.mjs","sources":["../../../projects/angular-signature-pad-v2/src/lib/angular2-signaturepad.component.ts","../../../projects/angular-signature-pad-v2/src/lib/angular2-signaturepad.module.ts","../../../projects/angular-signature-pad-v2/src/public-api.ts","../../../projects/angular-signature-pad-v2/src/angular-signature-pad-v2.ts"],"sourcesContent":["import {\n  AfterContentInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  OnDestroy,\n} from '@angular/core';\n\nimport * as SignaturePadNative from 'signature_pad';\n\nexport interface Point {\n  x: number;\n  y: number;\n  time: number;\n}\n\nexport type PointGroup = Array<Point>;\n\n@Component({\n  template: '<canvas></canvas>',\n  selector: 'signature-pad',\n  standalone: true\n})\nexport class SignaturePad implements AfterContentInit, OnDestroy {\n  @Input() public options: any;\n  @Output() public onBeginEvent: EventEmitter<boolean>;\n  @Output() public onEndEvent: EventEmitter<boolean>;\n\n  private signaturePad: any;\n  private elementRef: ElementRef;\n\n  constructor(elementRef: ElementRef) {\n    // no op\n    this.elementRef = elementRef;\n    this.options = this.options || {};\n    this.onBeginEvent = new EventEmitter();\n    this.onEndEvent = new EventEmitter();\n  }\n\n  public ngAfterContentInit(): void {\n    const canvas: any = this.elementRef.nativeElement.querySelector('canvas');\n\n    if ((this.options as any).canvasHeight) {\n      canvas.height = (this.options as any).canvasHeight;\n    }\n\n    if ((this.options as any).canvasWidth) {\n      canvas.width = (this.options as any).canvasWidth;\n    }\n\n    this.signaturePad = new SignaturePadNative.default(canvas, this.options);\n    this.signaturePad.onBegin = this.onBegin.bind(this);\n    this.signaturePad.onEnd = this.onEnd.bind(this);\n  }\n\n  public ngOnDestroy(): void {\n    const canvas: any = this.elementRef.nativeElement.querySelector('canvas');\n    canvas.width = 0;\n    canvas.height = 0;\n  }\n\n  public resizeCanvas(): void {\n    // When zoomed out to less than 100%, for some very strange reason,\n    // some browsers report devicePixelRatio as less than 1\n    // and only part of the canvas is cleared then.\n    const ratio: number = Math.max(window.devicePixelRatio || 1, 1);\n    const canvas: any = this.signaturePad.canvas;\n    canvas.width = canvas.offsetWidth * ratio;\n    canvas.height = canvas.offsetHeight * ratio;\n    canvas.getContext('2d').scale(ratio, ratio);\n    this.signaturePad.clear(); // otherwise isEmpty() might return incorrect value\n  }\n\n  // Returns signature image as an array of point groups\n  public toData(): Array<PointGroup> {\n    if (this.signaturePad) {\n      return this.signaturePad.toData();\n    } else {\n      return [];\n    }\n  }\n\n  // Draws signature image from an array of point groups\n  public fromData(points: Array<PointGroup>): void {\n    this.signaturePad.fromData(points as any);\n  }\n\n  // Returns signature image as data URL (see https://mdn.io/todataurl for the list of possible paramters)\n  public toDataURL(imageType?: string, quality?: number): string {\n    return this.signaturePad.toDataURL(imageType, quality); // save image as data URL\n  }\n\n  // Draws signature image from data URL\n  public fromDataURL(dataURL: string, options: any = {}): void {\n    // set default height and width on read data from URL\n    if (\n      !options.hasOwnProperty('height') &&\n      (this.options as any).canvasHeight\n    ) {\n      options.height = (this.options as any).canvasHeight;\n    }\n    if (!options.hasOwnProperty('width') && (this.options as any).canvasWidth) {\n      options.width = (this.options as any).canvasWidth;\n    }\n    this.signaturePad.fromDataURL(dataURL, options);\n  }\n\n  // Clears the canvas\n  public clear(): void {\n    this.signaturePad.clear();\n  }\n\n  // Returns true if canvas is empty, otherwise returns false\n  public isEmpty(): boolean {\n    return this.signaturePad.isEmpty();\n  }\n\n  // Unbinds all event handlers\n  public off(): void {\n    this.signaturePad.off();\n  }\n\n  // Rebinds all event handlers\n  public on(): void {\n    this.signaturePad.on();\n  }\n\n  // set an option on the signaturePad - e.g. set('minWidth', 50);\n  public set(option: string, value: any): void {\n    switch (option) {\n      case 'canvasHeight':\n        this.signaturePad.canvas.height = value;\n        break;\n      case 'canvasWidth':\n        this.signaturePad.canvas.width = value;\n        break;\n      default:\n        this.signaturePad[option] = value;\n    }\n  }\n\n  // notify subscribers on signature begin\n  public onBegin(): void {\n    this.onBeginEvent.emit(true);\n  }\n\n  // notify subscribers on signature end\n  public onEnd(): void {\n    this.onEndEvent.emit(true);\n  }\n\n  public queryPad(): any {\n    return this.signaturePad;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { SignaturePad } from './angular2-signaturepad.component';\n\n@NgModule({\n  imports: [SignaturePad],\n  exports: [SignaturePad],\n})\nexport class SignaturePadModule {}\n","/*\n * Public API Surface of angular2-signaturepad\n */\n\nexport * from './lib/angular2-signaturepad.component';\nexport * from './lib/angular2-signaturepad.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}