{"version":3,"file":"angular2-signaturepad.mjs","sources":["../../../projects/angular2-signaturepad/src/lib/angular2-signaturepad.component.ts","../../../projects/angular2-signaturepad/src/lib/angular2-signaturepad.module.ts","../../../projects/angular2-signaturepad/src/public-api.ts","../../../projects/angular2-signaturepad/src/angular2-signaturepad.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})\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  declarations: [SignaturePad],\n  imports: [],\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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"}