{"version":3,"file":"mr-samani-ngx-signature-pad.mjs","sources":["../../../projects/ngx-signature-pad/src/lib/ngx-signature-pad.component.ts","../../../projects/ngx-signature-pad/src/lib/ngx-signature-pad.component.html","../../../projects/ngx-signature-pad/src/lib/ngx-signature-pad.module.ts","../../../projects/ngx-signature-pad/src/public-api.ts","../../../projects/ngx-signature-pad/src/mr-samani-ngx-signature-pad.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ngx-signature-pad',\r\n  templateUrl: './ngx-signature-pad.component.html',\r\n  styles: [\r\n    `canvas{   \r\n       border: #5c5c5c dashed 1px;\r\n       border-radius: 3px;\r\n       background-color: #fff;\r\n    }\r\n      `\r\n  ]\r\n})\r\nexport class NgxSignaturePadComponent implements AfterViewInit {\r\n  @Input() height = 240;\r\n  @Input() width = 240;\r\n  @Input() lineStroke = 3;\r\n  @Input() lineColor = \"#222222\";\r\n  @Input() containerStyle = '';\r\n  @Output() signature = new EventEmitter<string>();\r\n  private drawing = false;\r\n  private mousePos = {\r\n    x: 0,\r\n    y: 0\r\n  };\r\n  private lastPos = this.mousePos;\r\n  private ctx?: CanvasRenderingContext2D | null;\r\n  @ViewChild('signature') canvas!: ElementRef<HTMLCanvasElement>;\r\n  constructor() { }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (this.canvas) {\r\n      this.ctx = this.canvas.nativeElement.getContext(\"2d\");\r\n      if (this.ctx) {\r\n        this.ctx.strokeStyle = this.lineColor;\r\n        this.ctx.lineWidth = this.lineStroke;\r\n      }\r\n\r\n    }\r\n  }\r\n\r\n\r\n  @HostListener('mousedown', ['$event'])\r\n  private onMouseDown(e: MouseEvent): void {\r\n    this.drawing = true;\r\n    this.lastPos = this.getMousePos(e);\r\n  }\r\n  @HostListener('document:mouseup', ['$event'])\r\n  private onMouseUp(e: MouseEvent): void {\r\n    this.drawing = false;\r\n    this.signature.emit(this.getSignature());\r\n  }\r\n\r\n  @HostListener('mousemove', ['$event'])\r\n  private onMouseMove(e: MouseEvent): void {\r\n    this.mousePos = this.getMousePos(e);\r\n    this.renderCanvas();\r\n  }\r\n\r\n\r\n  @HostListener('touchstart', ['$event'])\r\n  private onTouchStart(e: TouchEvent): void {\r\n    this.lastPos = this.getTouchPos(e);\r\n    this.drawing = true;\r\n  }\r\n\r\n  @HostListener('document:touchend', ['$event'])\r\n  private onTouchEnd(e: TouchEvent): void {\r\n    var me = new MouseEvent(\"mouseup\", {});\r\n    this.drawing = false;\r\n    this.signature.emit(this.getSignature());\r\n  }\r\n\r\n  @HostListener('touchmove', ['$event'])\r\n  private onTouchMove(e: TouchEvent): void {\r\n    this.mousePos = this.getTouchPos(e);\r\n    this.renderCanvas();\r\n  }\r\n\r\n\r\n\r\n\r\n  private getMousePos(mouseEvent: MouseEvent) {\r\n    var rect = this.canvas.nativeElement.getBoundingClientRect();\r\n    return {\r\n      x: mouseEvent.clientX - rect.left,\r\n      y: mouseEvent.clientY - rect.top\r\n    }\r\n  }\r\n\r\n  private getTouchPos(touchEvent: TouchEvent) {\r\n    var rect = this.canvas.nativeElement.getBoundingClientRect();\r\n    return {\r\n      x: touchEvent.touches[0].clientX - rect.left,\r\n      y: touchEvent.touches[0].clientY - rect.top\r\n    }\r\n  }\r\n\r\n  private renderCanvas() {\r\n    if (this.drawing && this.ctx) {\r\n      this.ctx.beginPath();\r\n      this.ctx.moveTo(this.lastPos.x, this.lastPos.y);\r\n      this.ctx.lineCap = 'round';\r\n      this.ctx.lineTo(this.mousePos.x, this.mousePos.y);\r\n      this.ctx.stroke();\r\n      this.lastPos = this.mousePos;\r\n    }\r\n  }\r\n\r\n\r\n\r\n\r\n\r\n  public clearSignaturePad(): void {\r\n    this.canvas.nativeElement.width = this.canvas.nativeElement.width;\r\n    this.ngAfterViewInit();\r\n  }\r\n\r\n  public getSignature(): string {\r\n    var dataUrl = this.canvas.nativeElement.toDataURL();\r\n    return dataUrl;\r\n  }\r\n\r\n  public download(): void {\r\n    var a = document.createElement(\"a\");\r\n    a.href = this.getSignature();\r\n    a.download = \"signature.png\";\r\n    a.click();\r\n  }\r\n\r\n\r\n  public getSignatureFile(filename = 'signature'): File {\r\n    var arr = this.getSignature().split(',');\r\n    let bstr = atob(arr[1]);\r\n    let n = bstr.length;\r\n    let u8arr = new Uint8Array(n);\r\n\r\n    while (n--) {\r\n      u8arr[n] = bstr.charCodeAt(n);\r\n    }\r\n    return new File([u8arr], filename, { type: 'image/png' });\r\n  }\r\n\r\n\r\n}\r\n","<canvas #signature [width]=\"width\" [height]=\"height\" [style]=\"containerStyle\"></canvas>","import { NgModule } from '@angular/core';\nimport { NgxSignaturePadComponent } from './ngx-signature-pad.component';\n\n\n\n@NgModule({\n  declarations: [\n    NgxSignaturePadComponent\n  ],\n  imports: [\n  ],\n  exports: [\n    NgxSignaturePadComponent\n  ]\n})\nexport class NgxSignaturePadModule { }\n","/*\n * Public API Surface of ngx-signature-pad\n */\n\nexport * from './lib/ngx-signature-pad.component';\nexport * from './lib/ngx-signature-pad.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}