{"version":3,"file":"erospingani1-ng-opendraw.mjs","sources":["../../../projects/ng-opendraw/src/lib/models/command-type.ts","../../../projects/ng-opendraw/src/lib/models/device-type.ts","../../../projects/ng-opendraw/src/lib/models/draw-command.ts","../../../projects/ng-opendraw/src/lib/models/draw-style.ts","../../../projects/ng-opendraw/src/lib/ng-opendraw.service.ts","../../../projects/ng-opendraw/src/lib/ng-opendraw.component.ts","../../../projects/ng-opendraw/src/lib/ng-opendraw.component.html","../../../projects/ng-opendraw/src/lib/ng-opendraw.module.ts","../../../projects/ng-opendraw/src/public-api.ts","../../../projects/ng-opendraw/src/erospingani1-ng-opendraw.ts"],"sourcesContent":["export enum CommandType {\n    CLEAR_ALL,\n    CLEAR_BG,\n    CLEAR_FG,\n    //UNDO,\n    //REDO,\n    EXPORT\n    // LAYER\n}","export enum DeviceType {\n    PEN = 'pen',\n    TOUCH = 'touch',\n    MOUSE = 'mouse',\n    ALL = '.*'\n}","import { CommandType } from './command-type';\n\nexport class DrawCommand {\n    constructor(public type: CommandType, public parameters: CommandZone = null) {}\n}\n\nexport class CommandZone {\n    constructor(public sx:number = null, public sy:number = null, public dx:number = null, public dy:number = null){}\n}","export enum DrawStyle {\n    NORMAL,\n    CIRCLE,\n    RECTANGLE,\n    ELLIPSE,\n    LINE\n}","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgOpendrawService {\n\n  constructor() { }\n}\n","import { Component, OnInit, ViewChild, ElementRef, Input, EventEmitter, Output } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { DrawCommand } from './models/draw-command';\nimport { DeviceType } from './models/device-type';\nimport { DrawStyle } from './models/draw-style';\nimport { CommandType } from './models/command-type';\n\n@Component({\n  selector: 'ng-opendraw',\n  templateUrl: './ng-opendraw.component.html',\n  styleUrls: ['./ng-opendraw.component.css']\n})\nexport class NgOpendrawComponent implements OnInit {\n\n  private _canHeight: number = 500;\n\n  @Input()\n  public set canHeight(v: number) {\n    if(this.ctxFg) {\n      this.ctxFg.save();\n    }\n    this._canHeight = v;   \n    if(this.ctxFg) {\n      this.ctxFg.restore();\n    }\n  }\n\n  public get canHeight() {\n    return this._canHeight;\n  }\n\n  private _canWidth: number = 500;\n\n  @Input()\n  public set canWidth(v: number) {\n    if(this.ctxFg) {\n      this.ctxFg.save();\n    }\n    this._canWidth = v;\n    if(this.ctxFg) {\n      this.ctxFg.restore();\n    }\n  }\n\n  public get canWidth() {\n    return this._canWidth;\n  }\n\n  private _lineColor: string = 'black';\n\n  @Input()\n  public set lineColor(v: string) {\n    this._lineColor = v;\n  }\n\n  public get lineColor() {\n    return this._lineColor;\n  }\n\n  private _lineWidth: number = 3;\n\n  @Input()\n  public set lineWidth(v: number) {\n    this._lineWidth = v;\n  }\n\n  public get lineWidth() {\n    return this._lineWidth;\n  }\n\n  private _fillShape: boolean = false;\n\n  @Input()\n  public set fillShape(v: boolean) {\n    this._fillShape = v;\n  }\n\n  public get fillShape() {\n    return this._fillShape;\n  }\n\n  private _drawStyle: DrawStyle = DrawStyle.NORMAL;\n\n  @Input()\n  public set drawStyle(v: DrawStyle) {\n      this._drawStyle = v;\n  }\n\n  public get drawStyle() {\n    return Number(this._drawStyle);\n  }\n\n  private _eraser: boolean = false;\n\n  @Input()\n  public set eraser(v: boolean) {\n    this._eraser = v;\n  }\n\n  public get eraser() {\n    return this._eraser;\n  }\n\n  private _allowedDeviceType: DeviceType = DeviceType.ALL;\n\n  @Input()\n  public set allowedDeviceType(v: DeviceType) {\n    this._allowedDeviceType = v;\n  }\n\n  public get allowedDeviceType() {\n    return this._allowedDeviceType;\n  }\n\n  private _backgroundImage: HTMLImageElement = null;\n\n  @Input()\n  public set backgroundImage(v: HTMLImageElement) {\n    if(v !== null) {\n      this._backgroundImage = v;\n      if(this.canvasLoaded) {\n        v.onload = () => this.drawBackgroundImage()\n      } else {\n        this.canvasLoaded$.subscribe(\n          () => {\n            v.onload = () => this.drawBackgroundImage()\n          }\n        )\n      }\n    }\n  }\n\n  public get backgroundImage() {\n    return this._backgroundImage;\n  }\n\n  private _backgroundColor: string = null;\n\n  @Input()\n  public set backgroundColor(v: string){\n    this._backgroundColor = v;\n    if(this.canvasLoaded) {\n      this.drawBackground();\n    } else {\n      this.canvasLoaded$.subscribe(\n        () => {\n          this.drawBackground();\n        }\n      )\n    }\n\n  }\n\n  public get backgroundColor() {\n    return this._backgroundColor;\n  }\n\n  private _commandObs$: Observable<DrawCommand>;\n\n  @Input()\n  public set commandObs(v: Observable<DrawCommand>) {\n    this._commandObs$ = v;\n    this._commandObs$.subscribe(\n      (cmd) => this.handleCommand(cmd)\n    )\n  }\n\n  @Output()\n  readonly outputEvent: EventEmitter<any> = new EventEmitter<string>();\n\n  @Output()\n  readonly errorEvent: EventEmitter<any> = new EventEmitter<string>();\n\n  @ViewChild('foreground', {static : true})\n  canvasFg: ElementRef<HTMLCanvasElement>;\n  @ViewChild('background', {static: true})\n  canvasBg: ElementRef<HTMLCanvasElement>;\n\n  private ctxFg: CanvasRenderingContext2D;\n  private ctxBg: CanvasRenderingContext2D;\n\n  private canvasLoaded$: Subject<void> = new Subject();\n  private canvasLoaded: boolean = false;\n  private drawingActive = false;\n  private lastPointerX: number;\n  private lastPointerY: number;\n\n  // TODO : active layer : default last\n  // TODO : number of layers : min 2\n  \n  constructor() {\n    // TODO: create 2 default layers bg and fg\n  }\n\n  ngOnInit() {\n    if (this.canvasFg.nativeElement.getContext) {\n      this.ctxFg = this.canvasFg.nativeElement.getContext('2d');\n      this.ctxBg = this.canvasBg.nativeElement.getContext('2d');\n      this.canvasLoaded$.next();\n      this.canvasLoaded = true;\n      this.canvasLoaded$.complete();\n    } else {\n      // canvas-unsupported\n      // console.log('Canvas unsupported in your browser');\n      this.errorEvent.emit('Canvas unsupported in your browser');\n    }\n  }\n\n  handleDeviceDrawing(event) {\n    event.preventDefault();\n    let deviceType = \"mouse\";\n    if(event.pointerType) {\n      deviceType = event.pointerType;\n    }\n    if(!deviceType.match(this._allowedDeviceType)) {\n      return;\n    }\n    switch(event.pointerType) {\n      case 'mouse':\n      case 'touch':\n        switch (event.type) {\n          case 'pointermove':\n            if(this.drawStyle === DrawStyle.NORMAL) {\n              if(this.drawingActive) {\n                this.draw(event.offsetX, event.offsetY);\n              }\n            }\n          break;\n          case 'pointerup':\n            if(this.drawStyle === DrawStyle.ELLIPSE || this.drawStyle === DrawStyle.CIRCLE || this.drawStyle === DrawStyle.LINE || this.drawStyle === DrawStyle.RECTANGLE) {\n              this.draw(event.offsetX, event.offsetY);\n            }\n            this.drawingActive = false;\n            this.lastPointerX = null;\n            this.lastPointerY = null;\n          break;\n          case 'pointerdown':\n            this.drawingActive = true;\n            this.lastPointerX = event.offsetX; \n            this.lastPointerY = event.offsetY;\n            if(this.drawStyle === DrawStyle.NORMAL) {\n              this.draw(event.offsetX, event.offsetY);\n            }\n          break;\n          case 'pointerleave':\n            if(this.drawStyle === DrawStyle.ELLIPSE || this.drawStyle === DrawStyle.CIRCLE || this.drawStyle === DrawStyle.LINE || this.drawStyle === DrawStyle.RECTANGLE) {\n              this.draw(event.offsetX, event.offsetY);\n            }\n            this.drawingActive = false;\n            this.lastPointerX = null;\n            this.lastPointerY = null;\n          break;\n          case 'pointerout':\n            if(this.drawStyle === DrawStyle.ELLIPSE || this.drawStyle === DrawStyle.CIRCLE || this.drawStyle === DrawStyle.LINE || this.drawStyle === DrawStyle.RECTANGLE) {\n              this.draw(event.offsetX, event.offsetY);\n            }\n            this.drawingActive = false;\n            this.lastPointerX = null;\n            this.lastPointerY = null;\n          break;\n        }  \n      break;\n      case 'pen':\n        switch (event.type) {\n          case 'pointermove':\n            if(this.drawStyle === DrawStyle.NORMAL) {\n              if(this.drawingActive) {\n                this.draw(event.offsetX, event.offsetY);\n              }\n            }\n          break;\n          case 'pointerdown':\n            this.drawingActive = true;\n            this.lastPointerX = event.offsetX; \n            this.lastPointerY = event.offsetY;\n            if(this.drawStyle === DrawStyle.NORMAL) {\n              this.draw(event.offsetX, event.offsetY);\n            }\n          break;\n          case 'pointerup':\n          case 'panend':\n            if(this.drawStyle === DrawStyle.ELLIPSE || this.drawStyle === DrawStyle.CIRCLE || this.drawStyle === DrawStyle.LINE || this.drawStyle === DrawStyle.RECTANGLE) {\n              this.draw(event.srcEvent.offsetX, event.srcEvent.offsetY);\n            }\n            this.drawingActive = false;\n            this.lastPointerX = null;\n            this.lastPointerY = null;\n          break;\n        }\n      break;\n    }\n  }\n\n  private draw(x: number, y: number) {\n    if(this.lastPointerX && this.lastPointerY) {\n      this.ctxFg.beginPath();\n      if(this._eraser) {\n        this.ctxFg.save();\n        this.ctxFg.globalCompositeOperation = \"destination-out\";\n        this.ctxFg.strokeStyle = \"rgba(0,0,0,1)\";\n        this.ctxFg.fillStyle = \"rgba(0,0,0,1)\";\n      } else {\n        this.ctxFg.strokeStyle = this._lineColor;\n        this.ctxFg.fillStyle = this._lineColor;\n      }\n      this.ctxFg.lineWidth = this._lineWidth;\n      this.ctxFg.lineCap = \"round\";\n      this.ctxFg.lineJoin = \"round\";\n      if(this.drawStyle === DrawStyle.NORMAL || this.drawStyle === DrawStyle.LINE) {\n        this.ctxFg.moveTo(this.lastPointerX, this.lastPointerY);\n        this.ctxFg.lineTo(x, y);\n      } else if(this.drawStyle === DrawStyle.RECTANGLE) {\n        let startX, startY, endX, endY;\n        if(this.lastPointerX < x) {\n          startX = this.lastPointerX;\n          endX = x - startX;\n        } else {\n          startX = x;\n          endX = this.lastPointerX - startX;\n        }\n        if(this.lastPointerY < y) {\n          startY = this.lastPointerY;\n          endY = y - startY;\n        } else {\n          startY = y;\n          endY = this.lastPointerY - startY;\n        }\n        this.ctxFg.rect(startX, startY, endX, endY);\n      } else if(this.drawStyle === DrawStyle.CIRCLE) {\n        let radius = Math.pow(Math.abs(y - this.lastPointerY), 2);\n        radius += Math.pow(Math.abs(x - this.lastPointerX), 2);\n        radius = Math.sqrt(radius);\n        this.ctxFg.arc(this.lastPointerX, this.lastPointerY, radius, 0, 2 * Math.PI);\n      }else if(this.drawStyle === DrawStyle.ELLIPSE) {\n        this.ctxFg.ellipse(this.lastPointerX, this.lastPointerY, Math.abs(x - this.lastPointerX), Math.abs(y - this.lastPointerY), Math.PI * .25, 0, Math.PI * 2);\n      }\n      if(this.fillShape && (this.drawStyle === DrawStyle.ELLIPSE || this.drawStyle === DrawStyle.CIRCLE || this.drawStyle === DrawStyle.RECTANGLE)) {\n        this.ctxFg.fill();\n      }else {\n        this.ctxFg.stroke();\n      }\n      this.ctxFg.closePath();\n      if(this._eraser) {\n        this.ctxFg.restore();\n      }\n    }\n    this.lastPointerX = x; \n    this.lastPointerY = y;\n  }\n\n  private clear(ctx: CanvasRenderingContext2D, sx: number = 0, sy: number = 0, dx: number = this._canWidth, dy: number = this._canHeight) {\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.clearRect(sx, sy, dx, dy);\n  }\n\n  private drawBackground() {\n    if(this._backgroundColor !== null) {\n      this.ctxBg.beginPath();\n      this.ctxBg.fillStyle = this._backgroundColor;\n      this.ctxBg.fillRect(0, 0, this._canWidth, this._canHeight);\n      this.ctxBg.closePath();\n      this.ctxBg.stroke();\n    }\n  }\n\n  private drawBackgroundImage() {\n    if(this._backgroundImage !== null) {\n      this.ctxBg.drawImage(this._backgroundImage, 0, 0, this._canWidth, this._canHeight);\n    }\n  }\n\n  private exportCanvas(sx: number = 0, sy: number = 0, dx: number = this._canWidth, dy: number = this._canHeight) {\n    if(sx >= 0 && sy >=0 && sx <= this._canWidth && sy <= this._canHeight\n      && dx >= 0 && dy >= 0 && dx <= this._canWidth && dy <= this._canHeight && sx < dx && sy < dy) {\n        const can = document.createElement('canvas');\n        can.width = dx - sx;\n        can.height = dy - sy;\n        const ctx: CanvasRenderingContext2D = can.getContext('2d');\n        // background\n        ctx.drawImage(this.canvasBg.nativeElement, sx, sy, dx, dy);\n        // foreground\n        ctx.drawImage(this.canvasFg.nativeElement, sx, sy, dx, dy);\n        this.outputEvent.emit(can.toDataURL('image/png',1));\n    }\n  }\n\n  private handleCommand(cmd: DrawCommand) {\n    let sx = 0, sy = 0, dx = this._canWidth, dy = this._canHeight;\n    if(cmd.parameters !== null) {\n      if(cmd.parameters.sx !== null && cmd.parameters.sy != null) {\n        sx = cmd.parameters.sx;\n        sy = cmd.parameters.sy;\n      }else if(cmd.parameters.dx !== null && cmd.parameters.dy !== null) {\n        dx = cmd.parameters.dx;\n        dy = cmd.parameters.dy;\n      } else if(cmd.parameters.dx !== null && cmd.parameters.dy !== null && cmd.parameters.sx !== null && cmd.parameters.sy !== null) {\n        sx = cmd.parameters.sx;\n        sy = cmd.parameters.sy;\n        dx = cmd.parameters.dx;\n        dy = cmd.parameters.dy;\n      }\n    }\n    switch(cmd.type) {\n      case CommandType.CLEAR_ALL:\n        this.clear(this.ctxBg, sx, sy, dx, dy);\n        this.clear(this.ctxFg, sx, sy, dx, dy);\n      case CommandType.CLEAR_BG:\n        this.clear(this.ctxBg, sx, sy, dx, dy);\n      break;\n      case CommandType.CLEAR_FG:\n        this.clear(this.ctxFg, sx, sy, dx, dy);\n      break;\n      case CommandType.EXPORT:\n        this.exportCanvas(sx, sy, dx, dy);\n      break;\n    }\n  }\n\n}\n","<div class=\"layers\" \n    [style.height.px]='this.canHeight'\n    [style.width.px]='this.canWidth'\n    [style.borderColor]='this.lineColor'>\n    <canvas \n        #background\n        class=\"background-layer opencanvas\"\n        [width]=\"this.canWidth\" \n        [height]=\"this.canHeight\" \n    >\n    </canvas>\n    <canvas \n        #foreground\n        class='foreground-layer opencanvas'\n        (pointermove)='handleDeviceDrawing($event)'\n        (pointerdown)='handleDeviceDrawing($event)'\n        (pointerout)='handleDeviceDrawing($event)'\n        (pointerup)='handleDeviceDrawing($event)'\n        (panend)='handleDeviceDrawing($event)'\n        [width]=\"this.canWidth\" \n        [height]=\"this.canHeight\"\n    >\n    </canvas>\n</div>\n","import { NgModule } from '@angular/core';\nimport { NgOpendrawComponent } from './ng-opendraw.component';\nimport 'hammerjs';\nimport 'hammer-timejs';\n\n\n@NgModule({\n  declarations: [NgOpendrawComponent],\n  imports: [\n  ],\n  exports: [NgOpendrawComponent]\n})\nexport class NgOpendrawModule { }\n","/*\n * Public API Surface of ng-opendraw\n */\n\nexport * from './lib/models/command-type';\nexport * from './lib/models/device-type';\nexport * from './lib/models/draw-command';\nexport * from './lib/models/draw-style';\nexport * from './lib/ng-opendraw.service';\nexport * from './lib/ng-opendraw.component';\nexport * from './lib/ng-opendraw.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}