{"version":3,"file":"cc-photo-editor.mjs","sources":["../../../projects/cc-photo-editor/src/lib/material.module.ts","../../../projects/cc-photo-editor/src/lib/canvas/canvas.component.ts","../../../projects/cc-photo-editor/src/lib/canvas/canvas.component.html","../../../projects/cc-photo-editor/src/lib/layers/layers.component.ts","../../../projects/cc-photo-editor/src/lib/layers/layers.component.html","../../../projects/cc-photo-editor/src/lib/layers/delete-layer-dialog.html","../../../projects/cc-photo-editor/src/lib/tools/tools.component.ts","../../../projects/cc-photo-editor/src/lib/tools/tools.component.html","../../../projects/cc-photo-editor/src/lib/cc-photo-editor.module.ts","../../../projects/cc-photo-editor/src/lib/cc-photo-editor.service.ts","../../../projects/cc-photo-editor/src/lib/cc-photo-editor.component.ts","../../../projects/cc-photo-editor/src/lib/cc-photo-editor.component.html","../../../projects/cc-photo-editor/src/public-api.ts","../../../projects/cc-photo-editor/src/cc-photo-editor.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatBottomSheetModule, MatBottomSheetRef, MAT_BOTTOM_SHEET_DATA } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatNativeDateModule, MatRippleModule } from '@angular/material/core';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\n\n@NgModule({\n  exports: [\n    ClipboardModule,\n    CdkStepperModule,\n    CdkTableModule,\n    CdkTreeModule,\n    DragDropModule,\n    MatAutocompleteModule,\n    MatBadgeModule,\n    MatBottomSheetModule,\n    MatButtonModule,\n    MatButtonToggleModule,\n    MatCardModule,\n    MatCheckboxModule,\n    MatChipsModule,\n    MatStepperModule,\n    MatDatepickerModule,\n    MatDialogModule,\n    MatDividerModule,\n    MatExpansionModule,\n    MatGridListModule,\n    MatIconModule,\n    MatInputModule,\n    MatListModule,\n    MatMenuModule,\n    MatNativeDateModule,\n    MatPaginatorModule,\n    MatProgressBarModule,\n    MatProgressSpinnerModule,\n    MatRadioModule,\n    MatRippleModule,\n    MatSelectModule,\n    MatSidenavModule,\n    MatSliderModule,\n    MatSlideToggleModule,\n    MatSnackBarModule,\n    MatSortModule,\n    MatTableModule,\n    MatTabsModule,\n    MatToolbarModule,\n    MatTooltipModule,\n    MatTreeModule,\n    ScrollingModule\n  ],\n  providers: [\n    { provide: MatBottomSheetRef, useValue: {} },\n    { provide: MAT_BOTTOM_SHEET_DATA, useValue: {} },\n    { provide: MatDialogRef, useValue: {} }\n  ]\n})\nexport class MaterialModule\n{\n}\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { fromEvent} from 'rxjs';\nimport { PathObj, CcPhotoEditorService, ShapeObj, point } from '../../public-api';\n\n@Component({\n  selector: 'app-canvas',\n  templateUrl: './canvas.component.html',\n  styleUrls: ['./canvas.component.scss'],\n})\nexport class CanvasComponent implements OnDestroy, OnInit {\n  @ViewChild('imgcanvas') ImageCanvas!: ElementRef<HTMLCanvasElement>;\n  @Output() TouchEndEvent : EventEmitter<any> = new EventEmitter();\n  Context!: CanvasRenderingContext2D | null;\n  DPI = window.devicePixelRatio;\n  StartX: number = 0.0;\n  StartY: number = 0.0;\n  EndX: number = 0.0;\n  EndY: number = 0.0;\n  TouchEvEnabled = false;\n  PathObj:PathObj | undefined = undefined;\n\n  constructor(public _ccPhotoEditorService: CcPhotoEditorService) {}\n  get ImageEditSvc(){\n    return this._ccPhotoEditorService\n  }\n  async ngOnInit(): Promise<void> {\n    //reset Defaults\n    this.StartX = 0;\n    this.StartY = 0;\n    this.EndX = 0;\n    this.EndY = 0;\n    this.TouchEvEnabled = false;\n    this.PathObj = undefined;\n\n    //set canvas size and background image\n    if(this.ImageEditSvc.Photo){\n      this.ImageEditSvc.RawImage = this.ImageEditSvc.Photo;\n      await this._setCanvasDimensions();\n    }\n    //subscribe to undo emitter\n    this.ImageEditSvc.UndoEmitter.subscribe( async emitter => {\n      await this._drawObjects();\n    });\n    //subscribe to redraw emitter\n    this.ImageEditSvc.RedrawEmitter.subscribe( async emitter => {\n      await this._drawObjects();\n    });\n    //subscribe to resize emitter\n    this.ImageEditSvc.resizeObservable$ = fromEvent(window, 'resize');\n    this.ImageEditSvc.resizeSubscription$ = this.ImageEditSvc.resizeObservable$.subscribe( async evt => {\n      await this._setCanvasDimensions();\n      await this._drawObjects();\n    })\n\n  }\n  ngOnDestroy() {\n    //unsubscribe from emitters\n    this.ImageEditSvc.UndoEmitter.unsubscribe();\n    this.ImageEditSvc.RedrawEmitter.unsubscribe();\n    this.ImageEditSvc.resizeSubscription$.unsubscribe();\n  }\n  GetBGimage = () => {\n    if(this.ImageEditSvc.MyObjects.length && this.ImageEditSvc.IsTouching){\n      return 'url(' + this.ImageEditSvc.AnnotatedImage + ')';\n    } else {\n      return 'url(' + this.ImageEditSvc.RawImage + ')';\n    }\n  }\n  TouchStart = async (e: TouchEvent) => {\n    this.TouchEvEnabled = true;\n    this.Context = this.ImageCanvas.nativeElement.getContext('2d');\n    const rect = this.Context?.canvas.getBoundingClientRect();\n    this.StartX = (e.touches[0].clientX - rect!.x)*this.ImageEditSvc.CanvasScale; \n    this.StartY = (e.touches[0].clientY - rect!.y)*this.ImageEditSvc.CanvasScale;\n    this.EndX = this.StartX;\n    this.EndY = this.StartY;\n    if(this.ImageEditSvc.SelectedShape?.Label !== 'path'){\n      if (!this.ImageEditSvc.IsTouchProcessing && this.ImageEditSvc.SelectedShape) {\n        this.ImageEditSvc.IsTouching = true;\n        //await this._drawObjects();\n      } else {\n        e.stopImmediatePropagation();\n        e.preventDefault();\n      }\n    } else {\n      //is path\n      this.ImageEditSvc.IsTouching = true;\n      this.PathObj = undefined;\n      this.PathObj = {\n        Fill:this.ImageEditSvc.ShapeColor,\n        Stroke:this.ImageEditSvc.ShapeColor,\n        StrokeWidth:this.ImageEditSvc.StrokeSize,\n        Points:[\n          {\n            StartX: this.StartX,\n            EndX: this.EndX,\n            StartY: this.StartY,\n            EndY: this.EndY,\n          }\n        ]\n      }\n    }\n  };\n  TouchMove = async (e: TouchEvent) => {\n    this.Context = this.ImageCanvas.nativeElement.getContext('2d');\n    const rect = this.Context?.canvas.getBoundingClientRect();\n    this.EndX = (e.touches[0].clientX - rect!.x)*this.ImageEditSvc.CanvasScale ;\n    this.EndY = (e.touches[0].clientY - rect!.y)*this.ImageEditSvc.CanvasScale ;\n    if(this.ImageEditSvc.SelectedShape?.Label !== 'path'){\n      this._drawObject();    \n    } else {\n      //is path\n      this.ImageEditSvc.Draw(this.Context, this.StartX, this.StartY, this.EndX, this.EndY, this.ImageEditSvc.ShapeColor, this.ImageEditSvc.ShapeColor, this.ImageEditSvc.StrokeSize)\n      const point:point = {\n        StartX: this.StartX,\n        EndX: this.EndX,\n        StartY: this.StartY,\n        EndY: this.EndY,\n      }\n      this.PathObj!.Points.push(point);\n      this.StartX = this.EndX;\n      this.StartY = this.EndY;\n\n    }\n  }\n  ClickStart = async (e: MouseEvent) => {\n    this.Context = this.ImageCanvas.nativeElement.getContext('2d');\n    const rect = this.Context?.canvas.getBoundingClientRect();\n    this.StartX = (e.clientX - rect!.x)*this.ImageEditSvc.CanvasScale; \n    this.StartY = (e.clientY - rect!.y)*this.ImageEditSvc.CanvasScale;\n    this.EndX = this.StartX;\n    this.EndY = this.StartY;\n    if(this.ImageEditSvc.SelectedShape?.Label !== 'path'){\n      if (!this.ImageEditSvc.IsTouchProcessing && this.ImageEditSvc.SelectedShape) {\n        this.ImageEditSvc.IsTouching = true;\n        //await this._drawObjects();\n      } else {\n        e.stopImmediatePropagation();\n        e.preventDefault();\n      }\n    } else {\n      //is path\n      this.ImageEditSvc.IsTouching = true;\n      this.PathObj = undefined;\n      this.PathObj = {\n        Fill:this.ImageEditSvc.ShapeColor,\n        Stroke:this.ImageEditSvc.ShapeColor,\n        StrokeWidth:this.ImageEditSvc.StrokeSize,\n        Points:[\n          {\n            StartX: this.StartX,\n            EndX: this.EndX,\n            StartY: this.StartY,\n            EndY: this.EndY,\n          }\n        ]\n      }\n    }\n  }\n  ClickMove = async (e: MouseEvent) => {\n    if(!this.TouchEvEnabled && this.ImageEditSvc.IsTouching){\n      this.Context = this.ImageCanvas.nativeElement.getContext('2d');\n      const rect = this.Context?.canvas.getBoundingClientRect();\n      this.EndX = (e.clientX - rect!.x)*this.ImageEditSvc.CanvasScale ;\n      this.EndY = (e.clientY - rect!.y)*this.ImageEditSvc.CanvasScale ;\n      if(this.ImageEditSvc.SelectedShape?.Label !== 'path'){\n        this._drawObject();    \n      } else {\n        //is path\n        this.ImageEditSvc.Draw(this.Context, this.StartX, this.StartY, this.EndX, this.EndY, this.ImageEditSvc.ShapeColor, this.ImageEditSvc.ShapeColor, this.ImageEditSvc.StrokeSize)\n        const point:point = {\n          StartX: this.StartX,\n          EndX: this.EndX,\n          StartY: this.StartY,\n          EndY: this.EndY,\n        }\n        this.PathObj!.Points.push(point);\n        this.StartX = this.EndX;\n        this.StartY = this.EndY;\n      }\n    }\n  }\n  End = async () => {    \n    this.TouchEvEnabled = false;\n    this.ImageEditSvc.IsTouchProcessing = true;\n    let fill = false;\n    if (this.ImageEditSvc.SelectedShape?.Label === 'circle' && this.ImageEditSvc.FillCircle) {\n      fill = true;\n    } else if (this.ImageEditSvc.SelectedShape?.Label === 'square' && this.ImageEditSvc.FillSquare) {\n      fill = true;\n    } else if (this.ImageEditSvc.SelectedShape?.Label === 'line' || this.ImageEditSvc.SelectedShape?.Label === 'arrow') {\n      fill = false;\n    }\n    let shapeObj:ShapeObj = {\n      Shape: JSON.parse(JSON.stringify(this.ImageEditSvc.SelectedShape?.Label)),\n      StartX: this.StartX,\n      StartY: this.StartY,\n      EndX: this.EndX,\n      EndY: this.EndY,\n      StrokeSize: JSON.parse(JSON.stringify(this.ImageEditSvc.StrokeSize)),\n      CircleRadius: JSON.parse(JSON.stringify(this.ImageEditSvc.CircleRadius)),\n      ShapeColor: this.ImageEditSvc.ShapeColor,\n      Fill: fill,\n      Visible: true,\n      CanvasWidth: this.ImageEditSvc.EditorWidth,\n      Points : []\n    };\n    if(this.ImageEditSvc.SelectedShape?.Label === 'path'){\n      shapeObj.Points = JSON.parse(JSON.stringify(this.PathObj!.Points));\n      this.ImageEditSvc.MyObjects.push(shapeObj); \n    } else {\n      const xMovement = Math.abs(shapeObj.StartX - shapeObj.EndX);\n      const yMovement = Math.abs(shapeObj.StartY - shapeObj.EndY);\n      if(xMovement > 3 || yMovement > 3){\n        this.ImageEditSvc.MyObjects.push(shapeObj); \n      }\n    }\n    this.ImageEditSvc.IsTouching = false;\n    this.ImageEditSvc.IsTouchProcessing = false;\n    this._drawObjects();\n    this.TouchEndEvent.emit(shapeObj)\n  };\n\n  // image set\n  private _setCanvasDimensions = async () => {\n    this.Context = this.ImageCanvas?.nativeElement?.getContext('2d');\n    let image = new Image();\n    if (this.ImageEditSvc?.RawImage) {\n      image.src = this.ImageEditSvc.RawImage;\n    }\n    return new Promise<void>((resolve, reject) => {\n      image.onload = async () =>\n      {\n        this.ImageEditSvc.RawWidth = image.width;\n        this.ImageEditSvc.RawHeight = image.height;\n        //clear the canvas\n        this.Context?.clearRect(0, 0, this.ImageEditSvc.RawWidth, this.ImageEditSvc.RawHeight);\n\n        //set original size\n        if(image.width >= image.height){\n          this.ImageEditSvc.ImageWidth = this.ImageEditSvc.EditorWidth;\n          this.ImageEditSvc.Scale = this.ImageEditSvc.ImageWidth/image.width;\n          this.ImageEditSvc.ImageHeight = Math.floor(image.height * this.ImageEditSvc.Scale);\n        } else {\n          this.ImageEditSvc.ImageHeight = this.ImageEditSvc.EditorHeight;\n          this.ImageEditSvc.Scale = this.ImageEditSvc.ImageHeight/image.height;\n          this.ImageEditSvc.ImageWidth = Math.floor(image.width * this.ImageEditSvc.Scale);\n        }\n        //set dimensions\n        this.ImageCanvas.nativeElement.width = this.ImageEditSvc.ImageWidth;\n        this.ImageCanvas.nativeElement.height = this.ImageEditSvc.ImageHeight;\n        this.ImageEditSvc.CanvasScale = this.ImageEditSvc.RawWidth/this.ImageCanvas?.nativeElement.width;\n\n        //check if it scales past bounds and rescale if necessary\n        if(this.ImageEditSvc.EditorHeight < this.ImageEditSvc.ImageHeight){\n          this.ImageEditSvc.ImageHeight = this.ImageEditSvc.EditorHeight;\n          this.ImageEditSvc.Scale = this.ImageEditSvc.ImageHeight/image.height;\n          this.ImageEditSvc.ImageWidth = Math.floor(image.width * this.ImageEditSvc.Scale);\n\n          this.ImageCanvas.nativeElement.width = this.ImageEditSvc.ImageWidth;\n          this.ImageCanvas.nativeElement.height = this.ImageEditSvc.ImageHeight;\n          this.ImageEditSvc.CanvasScale = this.ImageEditSvc.RawWidth/this.ImageCanvas?.nativeElement.width;\n\n        }else if(this.ImageEditSvc.EditorWidth < this.ImageEditSvc.ImageWidth){\n          this.ImageEditSvc.ImageWidth = this.ImageEditSvc.EditorWidth;\n          this.ImageEditSvc.Scale = this.ImageEditSvc.ImageWidth/image.width;\n          this.ImageEditSvc.ImageHeight = Math.floor(image.height * this.ImageEditSvc.Scale);\n\n          this.ImageCanvas.nativeElement.width = this.ImageEditSvc.ImageWidth;\n          this.ImageCanvas.nativeElement.height = this.ImageEditSvc.ImageHeight;\n          this.ImageEditSvc.CanvasScale = this.ImageEditSvc.RawWidth/this.ImageCanvas?.nativeElement.width;\n        }\n        \n        //draw the image as a bg\n        this._drawBgImage();\n\n        //set default stroke properties\n        if(this.ImageEditSvc.RawWidth > 2000 || this.ImageEditSvc.RawHeight > 2000){\n          this.ImageEditSvc.MaxStroke = 40;\n          this.ImageEditSvc.StrokeSize = 12;\n        } else if(this.ImageEditSvc.RawWidth > 3000 || this.ImageEditSvc.RawHeight > 3000){\n          this.ImageEditSvc.MaxStroke = 50;\n          this.ImageEditSvc.StrokeSize = 18;\n        } else if(this.ImageEditSvc.RawWidth > 4000 || this.ImageEditSvc.RawHeight > 4000){\n          this.ImageEditSvc.MaxStroke = 60;\n          this.ImageEditSvc.StrokeSize = 24;\n        } else {\n          this.ImageEditSvc.MaxStroke = 20;\n          this.ImageEditSvc.StrokeSize = 6;\n        }\n        resolve();\n      };\n      image.onabort = reject;\n      image.onerror = reject;\n    });\n  }\n  private _drawObject = async (object?: ShapeObj) => {\n    const canvas = this.ImageCanvas.nativeElement;\n    const ctx:CanvasRenderingContext2D  | null = canvas.getContext('2d');\n    let fill = this.ImageEditSvc.Colors[0];\n    let fillShape = false;\n    if (object) {\n      if (object.Fill) {\n        fill = object.ShapeColor;\n        fillShape = true;\n      }\n      let StartX = object.StartX ;\n      let EndX = object.EndX;\n      let StartY = object.StartY ;\n      let EndY = object.EndY;\n      let StrokeSize = object?.StrokeSize;\n      let CircleRadius = object?.CircleRadius;\n      const Text = object.Text;\n      const TextSize = object.TextSize;\n\n      if(object?.CanvasWidth !== this.ImageEditSvc.RawWidth){\n        StartX = object.StartX;\n        EndX = object.EndX;\n        StartY = object.StartY;\n        EndY = object.EndY;\n        StrokeSize = object?.StrokeSize;\n        CircleRadius = object?.CircleRadius;\n      }\n\n      if (object.Shape === 'circle') {\n        this.ImageEditSvc.DrawCircle(ctx, StartX, StartY, CircleRadius, fill, object.ShapeColor, StrokeSize, fillShape);\n      } else if (object.Shape === 'square') {\n        this.ImageEditSvc.DrawSquare(ctx, StartX, StartY, EndX - StartX, EndY - StartY, fill, object.ShapeColor, StrokeSize, fillShape);\n      } else if (object.Shape === 'arrow') {\n        this.ImageEditSvc.DrawArrow(ctx, StartX, StartY, EndX, EndY, fill, object.ShapeColor, StrokeSize);\n      } else if (object.Shape === 'line') {\n        this.ImageEditSvc.DrawLine(ctx, StartX, StartY, EndX, EndY, fill, object.ShapeColor, StrokeSize);\n      } else if (object.Shape === 'path') {\n        if(object.Points?.length){\n          for(let point of object.Points){\n            this.ImageEditSvc.Draw(ctx, point.StartX, point.StartY, point.EndX, point.EndY, object.ShapeColor, object.ShapeColor, StrokeSize)\n          }\n        }\n      } else if (object.Shape === 'text') {\n        if(Text?.length && TextSize){\n          await this.ImageEditSvc.AddText(ctx, EndX, EndY, fill, Text, TextSize);\n        }\n      }\n    } else {\n      if(this.ImageEditSvc.IsTouching){\n        this.Context?.clearRect(0, 0, this.ImageEditSvc.RawWidth, this.ImageEditSvc.RawHeight);\n      }\n      if (this.ImageEditSvc.MyObjects.length) {\n        this._drawObjects()\n      }\n      if (this.ImageEditSvc.SelectedShape?.Label === 'circle') {\n        if (12 > Math.abs(this.StartX - this.EndX) && 12 > Math.abs(this.StartY - this.EndY)) {\n          this.ImageEditSvc.CircleRadius = 12;\n        } else {\n          let xMove = Math.abs(this.StartX - this.EndX);\n          let yMove = Math.abs(this.StartY - this.EndY);\n          if (xMove > yMove) {\n            this.ImageEditSvc.CircleRadius = xMove;\n          } else {\n            this.ImageEditSvc.CircleRadius = yMove;\n          }\n        }\n\n        if (this.ImageEditSvc.FillCircle) {\n            fill = this.ImageEditSvc.ShapeColor;\n            fillShape = true;\n        }\n        await this.ImageEditSvc.DrawCircle(ctx, this.StartX, this.StartY, this.ImageEditSvc.CircleRadius, fill, this.ImageEditSvc.ShapeColor, this.ImageEditSvc.StrokeSize, fillShape);\n      } else if (this.ImageEditSvc.SelectedShape?.Label === 'square') {\n        if (this.ImageEditSvc.FillSquare) {\n          fill = this.ImageEditSvc.ShapeColor;\n          fillShape = true;\n        }\n        await this.ImageEditSvc.DrawSquare(ctx, this.StartX, this.StartY, this.EndX - this.StartX, this.EndY - this.StartY, fill, this.ImageEditSvc.ShapeColor, this.ImageEditSvc.StrokeSize, fillShape);\n      } else if (this.ImageEditSvc.SelectedShape?.Label === 'arrow') {\n        if (5 > this.StartX - this.EndX) {\n          this.EndX += 5;\n        }\n        await this.ImageEditSvc.DrawArrow(ctx, this.StartX, this.StartY, this.EndX, this.EndY, fill, this.ImageEditSvc.ShapeColor, this.ImageEditSvc.StrokeSize);\n      } else if (this.ImageEditSvc.SelectedShape?.Label === 'line') {\n        if (5 > this.StartX - this.EndX) {\n          this.EndX += 5;\n        }\n        await this.ImageEditSvc.DrawLine(ctx, this.StartX, this.StartY, this.EndX, this.EndY, '#ffffff00', this.ImageEditSvc.ShapeColor, this.ImageEditSvc.StrokeSize);\n      } else if (this.ImageEditSvc.SelectedShape?.Label === 'path') {\n        await this.ImageEditSvc.DrawLine(ctx, this.StartX, this.StartY, this.EndX, this.EndY, '#ffffff00', this.ImageEditSvc.ShapeColor, this.ImageEditSvc.StrokeSize);\n      } else if (this.ImageEditSvc.SelectedShape?.Label === 'text') {\n        //text\n      }   \n    }\n  };\n  private _drawObjects = async () => {\n    this.Context?.clearRect(0, 0, this.ImageEditSvc.RawWidth, this.ImageEditSvc.RawHeight);\n    await this._drawBgImage();\n    for (let object of this.ImageEditSvc.MyObjects) {\n      if(object.Visible){\n        this._drawObject(object);\n      }\n    }\n    this._updateAnnotatedImage()\n  }\n  private _updateAnnotatedImage = async () => {\n    //create a new canvas\n    var newCanvas = document.createElement('canvas');\n    newCanvas.id = 'duplicateCanvas';\n    var context = newCanvas.getContext('2d');\n\n    //set dimensions\n    newCanvas.width = this.ImageEditSvc.RawWidth;\n    newCanvas.height = this.ImageEditSvc.RawHeight;\n\n    //apply the old canvas to the new one\n    context?.drawImage(this.ImageCanvas.nativeElement, 0, 0);\n\n    //save the new canvas\n    this.ImageEditSvc.AnnotatedImage = newCanvas.toDataURL(\"image/jpeg\");\n    document.getElementById(\"duplicateCanvas\")?.remove();\n  }\n  private _drawBgImage = async () => {\n    this.Context = this.ImageCanvas?.nativeElement?.getContext('2d');\n    let image = new Image();\n    if (this.ImageEditSvc?.RawImage) {\n      image.src = this.ImageEditSvc.RawImage;\n    }\n    return new Promise<void>((resolve, reject) => {\n      image.onload = () =>\n      {\n        this.ImageCanvas.nativeElement.width = this.ImageEditSvc.RawWidth;\n        this.ImageCanvas.nativeElement.height = this.ImageEditSvc.RawHeight;\n        this.Context?.clearRect(0, 0, this.ImageEditSvc.RawWidth, this.ImageEditSvc.RawHeight);\n        this.Context?.drawImage(image,0,0);\n        resolve();\n      };\n      image.onabort = reject;\n      image.onerror = reject;\n    });\n  }\n  \n}","<div class=\"flexWrapper ccPhotoEditor\">\n  <div class=\"flexColumn\">\n    <div class=\"shrink\">\n      <canvas #imgcanvas class=\"imageCanvas mat-elevation-z10\"\n        (touchstart)=\"TouchStart($event)\"\n        (touchmove)=\"TouchMove($event)\"\n        (touchend)=\"End()\"\n        (mousedown)=\"ClickStart($event)\"\n        (mousemove)=\"ClickMove($event)\" \n        (mouseup)=\"End()\"\n        [style.background-image]=\"GetBGimage()\"\n        [style.width.px]=\"ImageEditSvc.ImageWidth\"\n        [style.height.px]=\"ImageEditSvc.ImageHeight\">\n      </canvas>\n    </div>\n  </div>\n</div>","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, inject, OnInit } from '@angular/core';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogActions, MatDialogClose, MatDialogTitle, MatDialogContent, MatDialogRef, MatDialog } from '@angular/material/dialog';\nimport { CcPhotoEditorService } from '../../public-api';\nimport { ShapeObj } from '../cc-photo-editor.service';\n\n\n@Component({\n  selector: 'app-layers',\n  templateUrl: './layers.component.html',\n  styleUrls: ['./layers.component.scss'],\n})\nexport class LayersComponent  implements OnInit, AfterViewInit {\n  readonly dialog = inject(MatDialog);\n  Layers:Array<any> = [];\n  SelectedLayerIndex = -1;\n  CanvasWidth = 155;\n  CanvasHeight = 0;\n  constructor(\n    private el:ElementRef,private _ccPhotoEditorService:CcPhotoEditorService) { \n\n  }\n  get ImageEditSvc(){\n    return this._ccPhotoEditorService\n  }\n  ngOnInit() {\n    this.Layers = JSON.parse(JSON.stringify(this.ImageEditSvc.MyObjects)).reverse();\n    const hScale = this.ImageEditSvc.RawHeight/this.ImageEditSvc.RawWidth;\n    this.CanvasHeight = this.CanvasWidth * hScale;\n  }\n  async ngAfterViewInit(): Promise<void> {\n    await this._drawLayers();\n  }\n  ToggleLayers = () => {\n    this.ImageEditSvc.ShowLayers = !this.ImageEditSvc.ShowLayers;\n    if(!this.ImageEditSvc.ShowLayers){\n      this.ImageEditSvc.SelectedLayerIndex = -1;\n    }\n  }\n  ToggleLayer = (i:number) => {\n    this.Layers[i].Visible = !this.Layers[i].Visible;\n    setTimeout(() => {\n      this._rebaseLayers();\n    }, 1);\n  }\n  DeleteLayer = async (i:number) => {\n    const dialogRef = this.dialog.open(DeleteLayerDialog, {\n      width: '250px'\n    });\n\n    dialogRef.afterClosed().subscribe(result => {\n      if(result === 'Delete'){\n        this.Layers.splice(i,1);\n          setTimeout(() => {\n            this._rebaseLayers();\n          }, 1);\n      }\n    });\n  }\n  async Drop(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.Layers, event.previousIndex, event.currentIndex);\n    setTimeout(() => {\n      this._rebaseLayers();\n    }, 1);\n    this.ImageEditSvc.SelectedLayerIndex = -1;\n  }\n  SelectLayer = (i:number) => {\n    this.ImageEditSvc.SelectedLayerIndex = i;\n  }\n  ChangeColor = (i:number, color:string) => {\n    this.Layers[i].ShapeColor = color;\n    setTimeout(() => {\n      this._rebaseLayers();\n    }, 1);\n  }\n  CopyLayer = (i:number) => {\n    this.ImageEditSvc.SelectedLayerIndex = -1;\n    const newLayer = JSON.parse(JSON.stringify(this.Layers[i]));\n    this.Layers.push(newLayer);\n    moveItemInArray(this.Layers, this.Layers.length-1, i);\n    setTimeout(() => {\n      this._rebaseLayers();\n    }, 1);\n  }\n  ToggleLayerFill = (i:number) => {\n    this.Layers[i].Fill = !this.Layers[i].Fill;\n    setTimeout(() => {\n      this._rebaseLayers();\n    }, 1);\n  }\n  ChangeStroke = () => {\n    this._rebaseLayers();\n  }\n  private _drawLayers = async () => {\n    for(let i = 0; i < this.Layers.length; i++){\n      const obj = this.Layers[i];\n      await this._drawObject(obj,i);\n    }\n    if(this.ImageEditSvc.SelectedLayerIndex > -1){\n      let canvas = <HTMLCanvasElement>this.el.nativeElement.querySelector('#canvas' + this.ImageEditSvc.SelectedLayerIndex);\n      canvas.click();\n    }\n  }\n  private _rebaseLayers = async () => {\n    this.ImageEditSvc.MyObjects = JSON.parse(JSON.stringify(this.Layers.reverse()));\n    this.ImageEditSvc.ShowLayers = false;\n    setTimeout(() => {\n      this.ImageEditSvc.RefreshLayers();\n    }, 1);\n    \n  }\n  private _drawObject = async (object: ShapeObj, canvasIndex:number) => {\n    let canvas = <HTMLCanvasElement>this.el.nativeElement.querySelector('#canvas' + canvasIndex);\n    const ctx:CanvasRenderingContext2D | null = canvas.getContext('2d');\n    canvas.width = this.ImageEditSvc.RawWidth;\n    canvas.height = this.ImageEditSvc.RawHeight;\n    ctx?.clearRect(0, 0, this.ImageEditSvc.RawWidth, this.ImageEditSvc.RawHeight);\n    \n    const fill = object.ShapeColor;\n    const fillShape = object.Fill;\n\n    const StartX = object.StartX;\n    const EndX = object.EndX;\n    const StartY = object.StartY;\n    const EndY = object.EndY;\n\n    const StrokeSize = object.StrokeSize;\n    const CircleRadius = object.CircleRadius;\n\n    const Text = object.Text;\n    const TextSize = object.TextSize;\n\n    if (object.Shape === 'circle') {\n      await this.ImageEditSvc.DrawCircle(ctx, StartX, StartY, CircleRadius, fill, fill, StrokeSize, fillShape);\n    } else if (object.Shape === 'square') {\n      await this.ImageEditSvc.DrawSquare(ctx, StartX, StartY, EndX - StartX, EndY - StartY, fill, fill, StrokeSize, fillShape);\n    } else if (object.Shape === 'arrow') {\n      await this.ImageEditSvc.DrawArrow(ctx, StartX, StartY, EndX, EndY, fill, fill, StrokeSize);\n    } else if (object.Shape === 'line') {\n      await this.ImageEditSvc.DrawLine(ctx, StartX, StartY, EndX, EndY, fill, fill, StrokeSize);\n    } else if (object.Shape === 'path') {\n      if(object.Points?.length){\n        for(let point of object.Points){\n          this.ImageEditSvc.Draw(ctx, point.StartX, point.StartY, point.EndX, point.EndY, object.ShapeColor, object.ShapeColor, StrokeSize)\n        }\n      }\n    } else if (object.Shape === 'text') {\n      if(Text?.length && TextSize){\n        await this.ImageEditSvc.AddText(ctx, EndX, EndY, fill, Text, TextSize);\n      }\n    }\n  };\n  \n}\n\n@Component({\n  selector: 'app-delete-layer-dialog',\n  templateUrl: 'delete-layer-dialog.html',\n  standalone: true,\n  imports: [MatButtonModule, MatDialogActions, MatDialogClose, MatDialogContent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class DeleteLayerDialog {\n  readonly dialogRef = inject(MatDialogRef<DeleteLayerDialog>);\n  DeleteClick = () => {\n    this.dialogRef.close('Delete')\n  }\n}\n","<div class=\"flexWrapper ccPhotoEditor\" style=\"overflow: hidden;\">\n  <div class=\"flexRow\">\n    <div class=\"grow\" (click)=\"ToggleLayers()\">\n    </div>\n    <div class=\"shrink flexColumn white-text layers\">\n      <div class=\"shrink\" [ngClass]=\"{'pt50': ImageEditSvc.Config.StandaloneMode}\">\n        <div [ngClass]=\"{'iosTop': ImageEditSvc.Config.StandaloneMode}\"></div>\n      </div>\n      <div class=\"shrink flexRow p5 purple darken-4\">\n        <div class=\"shrink align left p5 pl8\">\n          <fa-icon icon=\"layer-group\"></fa-icon>\n        </div>\n        <div class=\"grow align left p5\">\n          Layers\n        </div>\n        <div class=\"shrink p5 align\">\n          <button mat-icon-button class=\"smIconBtn white-text\" (click)=\"ToggleLayers()\">\n            <fa-icon icon=\"close\"></fa-icon>\n          </button>\n        </div>\n      </div>\n      <div class=\"grow\">\n        <div class=\"flexColumn scrollY\" cdkDropList (cdkDropListDropped)=\"Drop($event)\">\n          <div class=\"shrink flexColumn\" *ngFor=\"let layer of Layers; let i=index; let last=last\" [ngClass]=\"{'activeLayer': SelectedLayerIndex === i}\">\n            <div class=\"shrink flexRow draggable\" cdkDrag cdkDragLockAxis=\"y\" style=\"overflow: hidden;\" [style.height.px]=\"CanvasHeight\" [style.width.px]=\"CanvasWidth\">\n              <div class=\"shrink\" style=\"background-color: #600042bd;\" *cdkDragPlaceholder>\n                <div [style.height.px]=\"CanvasHeight + 16\"></div>\n              </div>\n              <div class=\"shrink flexRow hideOnDrag\">\n                <div class=\"shrink p5 align\">\n                  <button mat-icon-button class=\"xsIconBtn white-text\" (click)=\"ToggleLayer(i)\">\n                    <fa-icon icon=\"eye\" *ngIf=\"layer.Visible\"></fa-icon>\n                    <fa-icon icon=\"eye-slash\" *ngIf=\"!layer.Visible\" class=\"grey-text text-darken-2\"></fa-icon>\n                  </button>\n                </div>\n                <div class=\"grow p5\" [ngClass]=\"{'op25': !layer.Visible}\" (click)=\"SelectLayer(i)\">\n                  <canvas id=\"canvas{{i}}\" [style.height.px]=\"CanvasHeight\" [style.width.px]=\"CanvasWidth\" [mat-menu-trigger-for]=\"colorMenu\" style=\"border: 1px solid #ccc;\" class=\"checkeredBg\"></canvas>\n                  <mat-menu #colorMenu=\"matMenu\" yPosition=\"below\" class=\"minBtn grey darken-3 rounded\">\n                    <div class=\"flexWrapper lh10\">\n                      <div class=\"flexColumn p5\">\n                        <div class=\"shrink p5 pb0 f10 white-text\">\n                          Color\n                        </div>\n                        <div class=\"shrink flexRow p5\" style=\"overflow: hidden;\">\n                          <div class=\"shrink p5\" *ngFor=\"let color of ImageEditSvc.Colors\">\n                            <button mat-icon-button class=\"xsIconBtn\" (click)=\"ChangeColor(i,color)\" [style.background-color]=\"color\">\n                              <fa-icon icon=\"check\" *ngIf=\"color === layer.ShapeColor\"></fa-icon>\n                              <fa-icon icon=\"check\" *ngIf=\"color !== layer.ShapeColor\" [style.color]=\"color\"></fa-icon>\n                            </button>\n                          </div>\n                        </div>\n                        <div class=\"shrink pt5 flexRow\">\n                          <div class=\"shrink flexColumn\" *ngIf=\"layer.Shape === 'square' || layer.Shape === 'circle'\">\n                            <div class=\"shrink p5 pb0 f10 white-text ion-text-nowrap\">\n                              Fill Shape\n                            </div>\n                            <div class=\"shrink p5 pt0\">\n                              <button mat-icon-button class=\"smIconBtn\" (click)=\"ToggleLayerFill(i)\" [ngClass]=\"{'blue-text': layer.Fill, 'white-text': !layer.Fill}\">\n                                <fa-icon icon=\"check-circle\" *ngIf=\"layer.Fill\"></fa-icon>\n                                <fa-icon [icon]=\"['far', 'circle']\" *ngIf=\"!layer.Fill\"></fa-icon>\n                              </button>\n                            </div>\n                          </div>\n                          <div class=\"grow flexColumn pl10\" (click)=\"ToggleLayerFill(i)\" *ngIf=\"!layer.Fill\">\n                            <div class=\"shrink p5 pb0 f10 white-text ion-text-nowrap\">\n                              Line Width\n                            </div>\n                            <div class=\"shrink p5\">\n                              <input type=\"range\" min=\"1\" [max]=\"ImageEditSvc.MaxStroke\" step=\"1\" [(ngModel)]=\"layer.StrokeSize\" (change)=\"ChangeStroke()\"/>\n                            </div>\n                          </div>\n                        </div>\n                        <mat-divider></mat-divider>\n                        <div class=\"shrink p5 pt0 pb0 center\">\n                          <button mat-button class=\"minBtn grey darken-3 white-text\" (click)=\"CopyLayer(i)\">\n                            <div class=\"flexRow pl10 pr10\">\n                              <div class=\"shrink p5\">\n                                <fa-icon icon=\"copy\"></fa-icon>\n                              </div>\n                              <div class=\"shrink p5\">\n                                Duplicate\n                              </div>\n                            </div>\n                          </button>\n                        </div>\n                      </div>\n                    </div>\n                  </mat-menu>\n                </div>\n                <div class=\"shrink align p5 pr10\">\n                  <button mat-icon-button class=\"xsIconBtn white-text\" (click)=\"DeleteLayer(i)\">\n                    <fa-icon icon=\"trash\"></fa-icon>\n                  </button>\n                </div>\n              </div>\n            </div>\n            <div class=\"shrink\">\n              <mat-divider></mat-divider>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>","<mat-dialog-content>\n    Are you sure you want to delete this layer?\n</mat-dialog-content>\n<mat-dialog-actions>\n  <button mat-button mat-dialog-close>Cancel</button>\n  <button mat-button cdkFocusInitial (click)=\"DeleteClick()\">Delete</button>\n</mat-dialog-actions>","import { Component, ElementRef, ViewChild } from \"@angular/core\"; \nimport { CcPhotoEditorService, shape } from \"../../public-api\";\n\n@Component({\n  selector: 'app-tools',\n  templateUrl: './tools.component.html',\n  styleUrls: ['./tools.component.scss'],\n})\nexport class ToolsComponent {\n  @ViewChild('colorPicker') ColorPicker!: ElementRef<any>;\n  constructor(private _ccPhotoEditorService: CcPhotoEditorService) {\n    \n  }\n  get ImageEditSvc(){\n    return this._ccPhotoEditorService\n  }\n  SetColor = (color:string) => {\n    this.ImageEditSvc.ShapeColor = color;\n    this.ToggleColors();\n  }\n  ToggleColors = () => {\n    this.ImageEditSvc.ShowColors = !this.ImageEditSvc.ShowColors;\n  }\n  AddColor = () => {\n    this.ColorPicker.nativeElement.click();\n  }\n  ChangeColorPicker = () => {\n    if(this.ImageEditSvc.ShapeColor){\n      if(this.ImageEditSvc.Colors.length > this.ImageEditSvc.ColorLength){\n        this.ImageEditSvc.Colors.pop()\n      }\n      let foundMatch = false;\n      for(const c of this.ImageEditSvc.Colors){\n        if(c === this.ImageEditSvc.ShapeColor){\n          foundMatch = true\n        }\n      }\n      if(!foundMatch){\n        this.ImageEditSvc.Colors.push(this.ImageEditSvc.ShapeColor);\n      }\n      this.SetColor(this.ImageEditSvc.ShapeColor);\n    }\n  }\n  SetShape = async (shape: shape) => {\n    await this.ToggleShapeFill(shape);\n    this.ImageEditSvc.ShowStrokeSize = false;  \n    this.ImageEditSvc.IsTouching = false;\n  };\n  ToggleShapeFill = async (shape:shape) => {\n    if(shape?.Label === this.ImageEditSvc.SelectedShape?.Label){\n      if (shape?.Label === 'circle' || shape?.Label === 'square') {\n        if (shape.Label === 'circle') {\n          if (shape.IconLib === 'fas') {\n            shape.IconLib = 'far';\n            this.ImageEditSvc.FillCircle = false;\n          } else  {\n            shape.IconLib = 'fas';\n            this.ImageEditSvc.FillCircle = true;\n          }\n        } else if (shape.Label === 'square') {\n          if (shape.IconLib === 'fas') {\n            shape.IconLib = 'far';\n            this.ImageEditSvc.FillSquare = false;\n          } else  {\n            shape.IconLib = 'fas';\n            this.ImageEditSvc.FillSquare = true;\n          }\n        }\n      }\n    }\n    this.ImageEditSvc.SelectedShape = shape;\n  }\n  ChangeTextSize = () => {\n    \n  }\n}","<div class=\"shrink grey darken-4 pb10 white-text ccPhotoEditor flexColumn\">\n  <!-- text tools -->\n  <div class=\"flexColumn\" *ngIf=\"ImageEditSvc.TextModeActive\">\n    <div class=\"shrink p5\">\n      <input type=\"range\" min=\"10\" max=\"200\" step=\"10\" [(ngModel)]=\"ImageEditSvc.TextSize\" (change)=\"ChangeTextSize()\"/>\n    </div>\n  </div>\n  <div class=\"shrink flexRow align\" style=\"height: 72px;\">\n    <div class=\"grow flexRow align right p5\">\n      <div class=\"shrink p5\" *ngIf=\"!ImageEditSvc.ShowColors && ImageEditSvc.MyObjects.length && !ImageEditSvc.TextModeActive\">\n        <button mat-icon-button (click)=\"ImageEditSvc.Undo()\" class=\"smIconBtn white-text\">\n          <fa-icon icon=\"undo\"></fa-icon>\n        </button>\n      </div>\n    </div>\n    <div class=\"shrink grey darken-3 white-text rounded50 align p5 flexRow\" style=\"box-shadow: inset 0px 1px 2px 1px #000;\">\n      <ng-container *ngIf=\"!ImageEditSvc.ShowColors\">\n        <div class=\"shrink p5\" *ngFor=\"let shape of ImageEditSvc.Shapes\">\n          <button mat-icon-button class=\"smIconBtn\" [ngClass]=\"{'grey darken-4': ImageEditSvc.SelectedShape?.Label === shape.Label}\" \n                  (click)=\"SetShape(shape)\">\n              <ng-container *ngIf=\"shape.Label !== 'text'\">\n                <fa-icon [icon]=\"[shape.IconLib, shape.Icon]\" \n                          [ngStyle]=\"{'color': (ImageEditSvc.SelectedShape?.Label === shape.Label) ? ImageEditSvc.ShapeColor : '#ffffff'}\">\n                </fa-icon>\n              </ng-container>\n              <ng-container *ngIf=\"shape.Label === 'text'\">\n                <span [ngStyle]=\"{'color': (ImageEditSvc.SelectedShape?.Label === shape.Label) ? ImageEditSvc.ShapeColor : '#ffffff'}\">T</span>\n              </ng-container>\n          </button>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"ImageEditSvc.ShowColors\">\n        <div class=\"shrink p5\" *ngFor=\"let color of ImageEditSvc.Colors\">\n          <button mat-icon-button class=\"xsIconBtn\" (click)=\"SetColor(color)\" [style.background-color]=\"color\">\n            <fa-icon icon=\"check\" *ngIf=\"color === ImageEditSvc.ShapeColor\"></fa-icon>\n            <fa-icon icon=\"check\" *ngIf=\"color !== ImageEditSvc.ShapeColor\" [style.color]=\"color\"></fa-icon>\n          </button>\n        </div>\n        <div class=\"shrink p5\">\n          <button mat-icon-button class=\"xsIconBtn grey-text\" (click)=\"AddColor()\">\n            <fa-icon icon=\"plus\"></fa-icon>\n          </button>\n        </div>\n      </ng-container>\n    </div>\n    <div class=\"grow flexRow align left p5\">\n      <div class=\"shrink p5\" *ngIf=\"!ImageEditSvc.ShowColors\">\n        <button mat-icon-button (click)=\"ToggleColors()\" class=\"smIconBtn\">\n          <fa-icon icon=\"palette\" [style.color]=\"ImageEditSvc.ShapeColor\"></fa-icon>\n        </button>\n      </div>\n      <div class=\"shrink p5\">\n        <input #colorPicker [(colorPicker)]=\"ImageEditSvc.ShapeColor\" style=\"height: 0px;width: 0px;opacity: 0;\" (colorPickerClose)=\"ChangeColorPicker()\"/>\n      </div>\n    </div>\n  </div>\n  \n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { ColorPickerModule } from 'ngx-color-picker';\n\nimport { MaterialModule } from './material.module';\nimport { fas } from '@fortawesome/free-solid-svg-icons'\nimport { far } from '@fortawesome/free-regular-svg-icons'\nimport { fab } from '@fortawesome/free-brands-svg-icons'\nimport { CanvasComponent } from './canvas/canvas.component';\nimport { LayersComponent } from './layers/layers.component';\nimport { ToolsComponent } from './tools/tools.component';\n\n\n@NgModule({\n  declarations: [\n    CanvasComponent,\n    LayersComponent,\n    ToolsComponent\n  ],\n  imports: [\n    CommonModule,\n    MaterialModule, \n    FormsModule,\n    FontAwesomeModule,\n    ColorPickerModule,\n  ],\n  exports: [\n    CanvasComponent,\n    LayersComponent,\n    ToolsComponent,\n  ]\n})\nexport class CcPhotoEditorModule { \n  constructor(library: FaIconLibrary) { \n\t\tlibrary.addIconPacks(fas, fab, far);\n\t}\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { CcPhotoEditorComponent } from './cc-photo-editor.component';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CcPhotoEditorService {\n  //config\n  Config:EditorConfig = new EditorConfig();\n\n  //Observables\n  resizeObservable$!: Observable<Event>;\n  resizeSubscription$!: Subscription;\n\n  //emitters\n  UndoEmitter: EventEmitter<any> = new EventEmitter();\n  RedrawEmitter: EventEmitter<any> = new EventEmitter();\n  CancelEmitter: EventEmitter<any> = new EventEmitter();\n  SaveEmitter: EventEmitter<any> = new EventEmitter();\n  \n  Photo:any;\n  RawImage:any;\n  AnnotatedImage:any;\n  \n  IsMobile:boolean = false;\n  EditorWidth:number = 0;\n  EditorHeight:number = 0;\n  ImageHeight:number = 200;\n  ImageWidth:number = 200;\n  RawWidth:number = 0;\n  RawHeight:number = 0;\n  Scale:number = 1;\n  CanvasScale:number = 1;\n\n  ShapeColor:string = '#ffeb3b';\n  Colors: Array<string> = []\n  ColorLength = 0;\n  ShowColors:boolean = false;\n  Shapes: Array<shape> = [];\n   // set to false to force all shapes to have the same color\n  MultipleColors: boolean = true;\n  SelectedShape:shape | undefined;\n  //drawing tools\n  MinStroke: number = 2;\n  MaxStroke: number = 20;\n  StokeStartX: number = 0.0;\n  ShowStrokeSize: boolean = false;\n  StrokeSize: number = 4;\n  CircleRadius: number = 12;\n  FillCircle: boolean = false;\n  FillSquare: boolean = false;\n  IsTouching: boolean = false;\n  IsTouchProcessing: boolean = false;\n  MyObjects:Array<any> = [];\n  ShowLayers:boolean = false;\n  DPI = window.devicePixelRatio;\n  SelectedLayerIndex = -1;\n\n  TextModeActive:boolean = false;\n  TextFocus:boolean = false;\n  ActiveTextObj:ShapeObj | null = null;\n  TextSize = 50;\n  TextToAdd = '';\n  \n  constructor (private _modal: MatDialog) {\n   \n  }\n  _initializeEditor = () => {\n    this.MyObjects = [];\n    this.AnnotatedImage = '';\n    this.ImageHeight = 200;\n    this.ImageWidth = 200;\n    this.MaxStroke = 20;\n    this.StrokeSize = 4;\n    this.CircleRadius = 12;\n    this.ShowLayers = false;\n    this.ShowColors = false;\n    this.ShowStrokeSize = false;\n    this.UndoEmitter = new EventEmitter();\n    this.RedrawEmitter = new EventEmitter();\n    this.CancelEmitter = new EventEmitter();\n    this.SaveEmitter = new EventEmitter();\n\n    if(!this.Colors.length) {\n      this.Colors = ['#2196F3','#4CAF50','#ffeb3b','#ff9800','#9c27b0','#F44336']\n    }\n    if(!this.Shapes.length){\n      this.Shapes= [\n        {\n          Label: 'circle',\n          Icon: 'circle',\n          IconLib: 'far'\n        },\n        {\n          Label: 'square',\n          Icon: 'square',\n          IconLib: 'far'\n        },\n        {\n          Label: 'arrow',\n          Icon: 'long-arrow-right',\n          IconLib: 'fas'\n        },\n        {\n          Label: 'line',\n          Icon: 'slash',\n          IconLib: 'fas'\n        },\n        {\n          Label:'path',\n          Icon:'paint-brush',\n          IconLib: 'fas'\n        },\n        {\n          Label:'text',\n          Icon:'fa-t',\n          IconLib: 'fas'\n        }\n      ]\n    }\n    if(!this.SelectedShape){\n      this.SelectedShape = this.Shapes[0];\n    }\n    this.ColorLength = this.Colors.length;\n    this.FillCircle = false;\n    this.FillSquare = false;\n    this.IsTouching = false;\n    this.IsTouchProcessing = false;\n    this.SelectedLayerIndex = -1;\n  }\n  GetWidth = () => {\n    return this.ImageWidth\n  }\n  GetHeight = () => {\n    return this.ImageHeight\n  }\n  Undo = () => {\n    if (this.MyObjects.length) {\n      this.MyObjects.pop();\n    }\n    this.UndoEmitter.emit();\n  }\n  Redraw = () => {\n    this.RedrawEmitter.emit();\n  }\n  RefreshLayers = () => {\n    if(this.MyObjects.length){\n      this.ShowLayers = true;\n    }\n    this.Redraw();\n  }\n  HideLayers = () => {\n    this.ShowLayers = false;\n  }\n  CancelEdit = () => {\n    this.CancelEmitter.emit();\n  }\n  ExportEdit = () => {\n    this.SaveEmitter.emit({\n      RawImage:this.RawImage,\n      EditedImage:this.AnnotatedImage,\n      EditObjects:this.MyObjects\n    });\n  }\n  Close = () => {\n    this._modal.closeAll();\n    \n  }\n  EditPhoto = async (photoSrc:string, config?:EditorConfig) => {\n    this._initializeEditor();\n    this.Photo = photoSrc;\n    if(config){\n      this.Config = config;\n      if(config.Colors){\n        this.Colors = config.Colors;\n        this.ColorLength = this.Colors.length;\n      }\n      if(config.Shapes){\n        this.Shapes = config.Shapes;\n        this.SelectedShape = this.Shapes[0];\n      }\n      if(config.IsMobile){\n        this.IsMobile = true;\n      }\n    } else {\n      this.Config = new EditorConfig();\n    }\n    //open modal\n    const modal = this._modal.open(CcPhotoEditorComponent,{panelClass:'fullScreen'});\n  }\n  GetSaveEmitter() {\n    return this.SaveEmitter;\n  }\n  GetCancelEmitter() {\n    return this.CancelEmitter;\n  }\n  //drawing tools\n  DrawCircle = async (Context:CanvasRenderingContext2D | null, x: number, y: number, radius: number, fill: string, stroke: string, strokeWidth: number, fillShape: boolean) => {\n    if(Context){\n      Context.beginPath();\n      // precision adjustments so the circle matches the point we're touching\n      x = x - 0;\n      y = y - 0;\n      Context.arc(x, y, radius, 0, 2 * Math.PI, false);\n      if (fillShape) {\n        if (this.MultipleColors) {\n          Context.fillStyle = fill;\n        } else {\n          Context.fillStyle = this.ShapeColor;\n        }\n        Context.fill();\n      } else {\n        Context.lineWidth = strokeWidth;\n        if (this.MultipleColors) {\n          Context.strokeStyle = stroke;\n        } else {\n          Context.strokeStyle = this.ShapeColor;\n        }\n        Context.stroke();\n      }\n      Context.font = '14pt';\n      Context.fillStyle = 'white';\n    }\n  }\n  DrawSquare = async (Context:CanvasRenderingContext2D | null, fromx: number, fromy: number, width: number, height: number, fill: string, stroke: string, strokeWidth: number, fillShape: boolean) => {\n    if(Context){\n      // precision adjustments so the circle matches the point we're touching\n      fromx = fromx - this.StrokeSize;\n      fromy = fromy - this.StrokeSize;\n      Context.fillStyle = fill;\n      if (fillShape) {\n        if (this.MultipleColors) {\n          Context.fillStyle = fill;\n        } else {\n          Context.fillStyle = this.ShapeColor;\n        }\n        Context.fillRect(fromx, fromy, width, height);\n      } else {\n        Context.lineWidth = strokeWidth;\n        if (this.MultipleColors) {\n          Context.strokeStyle = stroke;\n        } else {\n          Context.strokeStyle = this.ShapeColor;\n        }\n        Context.strokeRect(fromx, fromy, width, height);\n      }\n      Context.font = '14pt';\n      Context.fillStyle = 'white';\n    }\n  }\n  DrawArrow = async (Context:CanvasRenderingContext2D | null, fromx:number, fromy:number, tox:number, toy:number, fill: string, stroke: string, strokeWidth: number) => {\n    if(Context){\n      // precision adjustments so the arrow matches the point we're touching     \n      fromy = fromy - 2;\n      toy = toy - 2;\n      fromx = fromx - 7;\n      //variables to be used when creating the arrow\n      const width = strokeWidth;\n      let headlen = strokeWidth * 2;\n      let angle = Math.atan2(toy - fromy, tox - fromx);\n      // This makes it so the end of the arrow head is located at tox, toy, don't ask where 1.15 comes from\n      tox -= Math.cos(angle) * ((width * 1.15));\n      toy -= Math.sin(angle) * ((width * 1.15));\n  \n      //starting path of the arrow from the start square to the end square and drawing the stroke\n      Context.beginPath();\n      Context.moveTo(fromx, fromy);\n      Context.lineTo(tox, toy);\n  \n      if (this.MultipleColors) {\n        Context.strokeStyle = stroke;\n      } else {\n        Context.strokeStyle = this.ShapeColor;\n      }\n      Context.lineWidth = width;\n      Context.stroke();\n  \n      //starting a new path from the head of the arrow to one of the sides of the point\n      Context.beginPath();\n      Context.moveTo(tox, toy);\n      Context.lineTo(tox - headlen * Math.cos(angle - Math.PI / 7), toy - headlen * Math.sin(angle - Math.PI / 7));\n  \n      //path from the side point of the arrow, to the other side point\n      Context.lineTo(tox - headlen * Math.cos(angle + Math.PI / 7), toy - headlen * Math.sin(angle + Math.PI / 7));\n  \n      //path from the side point back to the tip of the arrow, and then again to the opposite side point\n      Context.lineTo(tox, toy);\n      Context.lineTo(tox - headlen * Math.cos(angle - Math.PI / 7), toy - headlen * Math.sin(angle - Math.PI / 7));\n  \n      //draws the paths created above\n      if (this.MultipleColors) {\n        Context.strokeStyle = stroke;\n      } else {\n        Context.strokeStyle = this.ShapeColor;\n      }\n      Context.lineWidth = width;\n      Context.stroke();\n      if (this.MultipleColors) {\n        Context.fillStyle = stroke;\n      } else {\n        Context.fillStyle = this.ShapeColor;\n      }\n  \n      Context.fill();\n    }\n  }\n  DrawLine = async (Context:CanvasRenderingContext2D | null, fromx:number, fromy:number, tox:number, toy:number, fill: string, stroke: string, strokeWidth: number) => {\n    if(Context){\n      // precision adjustments so the line matches the point we're touching     \n      fromy = fromy - 2;\n      toy = toy - 4;\n      fromx = fromx - 7;\n  \n      Context.beginPath();\n      Context.moveTo(fromx, fromy);\n      Context.lineTo(tox, toy);\n      if (this.MultipleColors) {\n        Context.strokeStyle = stroke;\n      } else {\n        Context.strokeStyle = this.ShapeColor;\n      }\n      Context.lineWidth = strokeWidth;\n      Context.stroke();\n      Context.closePath();\n    }\n  }\n  Draw = async (Context:CanvasRenderingContext2D | null, fromx:number, fromy:number, tox:number, toy:number, fill: string, stroke: string, strokeWidth: number) => {\n    if(Context){\n      Context.beginPath();\n      Context.strokeStyle = stroke;\n      Context.lineWidth = strokeWidth;\n      Context.lineCap = 'round';\n      Context.moveTo(fromx, fromy);\n      Context.lineTo(tox, toy);\n      Context.stroke();\n      Context.closePath();\n    }\n  }\n  AddText = async (Context:CanvasRenderingContext2D | null, fromx:number, fromy:number, fill: string, text: string, textSize:number) => {\n    if(Context){\n      Context.font = textSize + 'px Arial';\n      Context.fillStyle = fill;\n      Context.fillText(text,fromx,fromy);\n    }\n  }\n}\nexport class shape {\n  Label!: string\n  Icon!: string\n  IconLib!: string;\n}\nexport class point  {\n  StartX!: number\n  EndX!: number\n  StartY!: number\n  EndY!: number\n}\nexport class ShapeObj {\n  Shape!: string\n  StartX!: number\n  StartY!: number\n  EndX!: number\n  EndY!: number\n  StrokeSize!: number\n  CircleRadius!: number\n  ShapeColor!: string\n  Fill!: boolean\n  Visible!: boolean\n  CanvasWidth!: number\n  Points? : Array<point>\n  Text?: string\n  TextSize?: number\n}\nexport class PathObj {\n  Fill! : string\n  Stroke! : string\n  StrokeWidth! : number\n  Points! : Array<point>\n}\nexport class EditorConfig {\n  LayersEnabled : boolean\n  StandaloneMode : boolean\n  Title : string\n  TitleBackgroundColor : string\n  TitleTextColor : string\n  SaveButtonColor : string\n  SaveButtonTextColor : string\n  Padding : number\n  Colors? : Array<string>\n  Shapes? : Array<shape>\n  IsMobile? : boolean\n\n  constructor(){\n    this.LayersEnabled = true;\n    this.StandaloneMode = true;\n    this.Title = 'Edit Image';\n    this.TitleBackgroundColor = '#000';\n    this.TitleTextColor = '#fff'\n    this.SaveButtonColor = '#3139ce'\n    this.SaveButtonTextColor = '#fff'\n    this.Padding = 0;\n  }\n}\n","import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\nimport { CcPhotoEditorModule } from \"./cc-photo-editor.module\";\nimport { fromEvent } from \"rxjs\";\nimport { CcPhotoEditorService, ShapeObj } from \"./cc-photo-editor.service\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\nimport { MaterialModule } from \"./material.module\";\n\n@Component({\n  selector: 'lib-cc-photo-editor',\n  standalone: true,\n  templateUrl: 'cc-photo-editor.component.html',\n  styleUrl: 'cc-photo-editor.component.scss',\n  imports: [CommonModule, MaterialModule, FormsModule, FontAwesomeModule, CcPhotoEditorModule]\n})\nexport class CcPhotoEditorComponent implements AfterViewInit, OnInit{\n  @ViewChild('editor') _editor!: ElementRef<HTMLElement>;\n  @ViewChild('wrapper') Wrapper!: ElementRef<HTMLElement>;\n  @ViewChild('textInput') public TextInput!: ElementRef<HTMLInputElement>;\n\n  constructor(private _ccPhotoEditorService: CcPhotoEditorService) {\n    \n  }\n  get ImageEditSvc(){\n    return this._ccPhotoEditorService\n  }\n  ngOnInit(): void {\n    this.ImageEditSvc.resizeObservable$ = fromEvent(window, 'resize');\n    this.ImageEditSvc.resizeSubscription$ = this.ImageEditSvc.resizeObservable$.subscribe( async evt => {\n      this._recordSize();\n    })\n  }\n  ngAfterViewInit(): void {\n    this._recordSize();\n  }\n  ToggleLayers = () => {\n    this.ImageEditSvc.ShowLayers = !this.ImageEditSvc.ShowLayers;\n  }\n  Save = () => {\n    this.ImageEditSvc.ExportEdit();\n  }\n  Cancel = () => {\n    this.ImageEditSvc.CancelEdit();\n  }\n  CanvasTouchEnd = async (e:ShapeObj) => {\n    if(e.Shape === 'text' && !this.ImageEditSvc.TextToAdd.length && !this.ImageEditSvc.TextModeActive){\n      this.ImageEditSvc.TextModeActive = true;\n      await this._focusText()\n    }\n  }\n  private _focusText = async () => {\n    this.ImageEditSvc.TextFocus = true;\n    setTimeout(async () => {\n      this.TextInput.nativeElement.focus();\n    }, 500);\n  }\n  CancelAddText = async () => {\n    await this._resetText();\n    await this._redrawImageAndObjects()\n  }\n  CommitText = async (keepTextInput:boolean) => {\n    this.ImageEditSvc.TextFocus = keepTextInput;\n    setTimeout(async () => {\n      this._redrawImageAndObjects();\n    }, 1);\n  }\n  public DisableInputWrapperClick = (e:Event) => {\n    //disabled anything from happening on a click\n    if(this.ImageEditSvc.TextFocus){\n      e.preventDefault();\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n      this.TextInput.nativeElement.focus();\n    }\n  }\n  private _resetText = async () => {\n    this.ImageEditSvc.ActiveTextObj = null;\n    this.ImageEditSvc.TextToAdd = '';\n    this.ImageEditSvc.TextSize = 50;\n    this.ImageEditSvc.TextModeActive = false;\n    this.ImageEditSvc.TextFocus = false;\n    this.ImageEditSvc.SelectedShape = this.ImageEditSvc.Shapes[0];\n  }\n  private _redrawImageAndObjects = async () => {\n    //call redraw\n  }\n  private _recordSize = () => {\n    this.ImageEditSvc.EditorWidth = this._editor.nativeElement.offsetWidth;\n    this.ImageEditSvc.EditorHeight = this._editor.nativeElement.offsetHeight;\n  }\n}\n","<div class=\"flexWrapper ccPhotoEditor\" #wrapper>\n  <div class=\"flexColumn grey darken-4\" (click)=\"DisableInputWrapperClick($event)\">\n    <div class=\"shrink\" *ngIf=\"ImageEditSvc.Config.StandaloneMode\" \n          [style.background-color]=\"ImageEditSvc.Config.TitleBackgroundColor\"\n          [style.color]=\"ImageEditSvc.Config.TitleTextColor\">\n      <div class=\"flexRow iosTop\">\n        <div class=\"grow align left p5 pl10 truncate\">\n          {{ImageEditSvc.Config.Title}}\n        </div>\n        <ng-container *ngIf=\"!ImageEditSvc.TextModeActive\">\n          <div class=\"shrink p5\">\n            <button mat-button class=\"minBtn\" (click)=\"Cancel()\">\n              <div class=\"flexRow pl10 pr10\"  [style.color]=\"ImageEditSvc.Config.TitleTextColor\">\n                <div class=\"shrink p5\">\n                  <fa-icon icon=\"arrow-rotate-left\"></fa-icon>\n                </div>\n                <div class=\"shrink noWrap p5\">Cancel</div>\n              </div>\n            </button>\n          </div>\n          <div class=\"shrink p5\">\n            <button mat-button class=\"minBtn\" (click)=\"Save()\" [style.background-color]=\"ImageEditSvc.Config.SaveButtonColor\">\n              <div class=\"flexRow pl10 pr10\" [style.color]=\"ImageEditSvc.Config.SaveButtonTextColor\">\n                <div class=\"shrink p5\">\n                  <fa-icon icon=\"floppy-disk\"></fa-icon>\n                </div>\n                <div class=\"shrink noWrap p5\">Save</div>\n              </div>\n            </button>\n          </div>\n        </ng-container>\n      </div>\n    </div>\n    <div class=\"shrink p10\" *ngIf=\"ImageEditSvc.Config.StandaloneMode\"></div>\n    <div class=\"grow flexColumn\">\n      <div class=\"shrink\" [style.padding.px]=\"ImageEditSvc.Config.Padding/2\"></div>\n      <div class=\"grow flexColumn\" [style.padding.px]=\"ImageEditSvc.Config.Padding/2\">\n        <div class=\"grow align\" #editor>\n          <app-canvas class=\"shrink\" (TouchEndEvent)=\"CanvasTouchEnd($event)\"></app-canvas>\n        </div>\n      </div>\n      <div class=\"shrink\" [style.padding.px]=\"ImageEditSvc.Config.Padding/2\"></div>\n    </div>\n    <ng-container *ngIf=\"ImageEditSvc.TextModeActive && ImageEditSvc.TextFocus\">\n      <div class=\"shrink flexRow p5 grey darken-2\">\n        <div class=\"grow p5\">\n          <input #textInput class=\"addTextInputCtrl w100 styledInput\" type=\"text\"\n                             placeholder=\"Enter Text\" \n                             [(ngModel)]=\"ImageEditSvc.TextToAdd\"><!-- (ngModelChange)=\"CommitText(true)\" -->\n        </div>\n        <div class=\"shrink align p5\">\n          <ng-container *ngIf=\"ImageEditSvc.TextToAdd?.length\">\n            <button mat-button class=\"showFloorBlue white-text\" (click)=\"CommitText(false)\">\n              <div class=\"flexRow pl10 pr10\">\n                <div class=\"shrink p5\">\n                  <fa-icon icon=\"check-circle\"></fa-icon>\n                </div>\n                <div class=\"shrink noWrap p5\">OK</div>\n              </div>\n            </button>\n          </ng-container>\n          <ng-container *ngIf=\"!ImageEditSvc.TextToAdd?.length\">\n            <button mat-button class=\"grey lighten-2 red-text\" (click)=\"CancelAddText()\">\n              <div class=\"flexRow pl10 pr10\">\n                <div class=\"shrink p5\">\n                  <fa-icon icon=\"undo\"></fa-icon>\n                </div>\n                <div class=\"shrink noWrap p5\">Cancel</div>\n              </div>\n            </button>\n          </ng-container>\n        </div>\n      </div>\n    </ng-container>\n    <div class=\"shrink\" *ngIf=\"!ImageEditSvc.TextFocus\">\n      <app-tools ></app-tools>\n    </div>\n    <div class=\"shrink\" *ngIf=\"ImageEditSvc.Config.StandaloneMode\">\n      <div class=\"iosBottom\"></div>\n    </div>\n  </div>\n  <ng-container *ngIf=\"ImageEditSvc.Config?.LayersEnabled && !ImageEditSvc.TextModeActive\">\n    <div class=\"layerBtn z1\" [ngClass]=\"{'standalone': ImageEditSvc.Config.StandaloneMode}\">\n      <div [ngClass]=\"{'iosTop': ImageEditSvc.Config.StandaloneMode}\">\n        <button mat-icon-button class=\"smIconBtn\" (click)=\"ToggleLayers()\" *ngIf=\"!ImageEditSvc.ShowLayers && ImageEditSvc.MyObjects.length\">\n          <img src=\"assets/icons/layer-group-solid.svg\" class=\"whiteSvgIcon\" alt=\"layers\">\n        </button>\n      </div>\n    </div>\n    <app-layers *ngIf=\"ImageEditSvc.ShowLayers\" class=\"z1\"></app-layers>\n  </ng-container>\n</div>","/*\n * Public API Surface of cc-photo-editor\n */\n\nexport * from './lib/cc-photo-editor.component';\nexport * from './lib/cc-photo-editor.service';\nexport * from './lib/cc-photo-editor.module'\nexport * from './lib/canvas/canvas.component';\nexport * from './lib/layers/layers.component';\nexport * from './lib/tools/tools.component';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CcPhotoEditorService","i7","i8","i3","i4","i5","i6","i1","i6.CanvasComponent","i7.LayersComponent","i8.ToolsComponent"],"mappings":"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"}