{"version":3,"file":"ngx-pdf-editor.mjs","sources":["../../../projects/ngx-pdf-editor/src/lib/models/Editor.ts","../../../projects/ngx-pdf-editor/src/lib/ngx-pdf-editor.service.ts","../../../projects/ngx-pdf-editor/src/lib/components/tool-button/tool-button.component.ts","../../../projects/ngx-pdf-editor/src/lib/components/tool-button/tool-button.component.html","../../../projects/ngx-pdf-editor/src/lib/ngx-pdf-editor.component.ts","../../../projects/ngx-pdf-editor/src/lib/ngx-pdf-editor.component.html","../../../projects/ngx-pdf-editor/src/lib/components/text-element/text-element.component.ts","../../../projects/ngx-pdf-editor/src/lib/components/text-element/text-element.component.html","../../../projects/ngx-pdf-editor/src/lib/components/signature-element/signature-element.component.ts","../../../projects/ngx-pdf-editor/src/lib/components/signature-element/signature-element.component.html","../../../projects/ngx-pdf-editor/src/lib/components/image-element/image-element.component.ts","../../../projects/ngx-pdf-editor/src/lib/components/image-element/image-element.component.html","../../../projects/ngx-pdf-editor/src/lib/components/form-textfield/form-textfield.component.ts","../../../projects/ngx-pdf-editor/src/lib/components/form-textfield/form-textfield.component.html","../../../projects/ngx-pdf-editor/src/lib/ngx-pdf-editor.module.ts","../../../projects/ngx-pdf-editor/src/public-api.ts","../../../projects/ngx-pdf-editor/src/ngx-pdf-editor.ts"],"sourcesContent":["import {\r\n  ComponentPortal,\r\n  ComponentType,\r\n  DomPortalOutlet,\r\n} from '@angular/cdk/portal';\r\nimport { ComponentRef } from '@angular/core';\r\n\r\nexport interface EditorConfig {\r\n  title?: string;\r\n  file?: File;\r\n  language?: string;\r\n}\r\n\r\nexport interface RenderedPage {\r\n  cssTransform: boolean;\r\n  pageNumber: number;\r\n  source: PDFPageView;\r\n  portalOutlet: DomPortalOutlet;\r\n  viewport: PageViewport;\r\n}\r\n\r\nexport interface PDFPageView {\r\n  canvas: HTMLCanvasElement;\r\n  div: HTMLDivElement;\r\n  id: number;\r\n  pdfPage: any;\r\n  renderer: string;\r\n  renderingId: string;\r\n  scale: number;\r\n  viewport: PageViewport;\r\n}\r\n\r\n// Clone of the pdfjs-dist lib PageViewport Class\r\nexport interface PageViewport {\r\n  viewBox: number[];\r\n  scale: number;\r\n  rotation: number;\r\n  offsetX: number;\r\n  offsetY: number;\r\n  transform: number[];\r\n  width: number;\r\n  height: number;\r\n}\r\n\r\nexport class Editor {\r\n  tools: EditorTool[] = [];\r\n  selectedTool: EditorTool | null = null;\r\n  elements: PDFElement<any, any>[] = [];\r\n  pdf: string | null = null;\r\n  pages: RenderedPage[] = [];\r\n  pagesData: any[] = [];\r\n  selectedPage: number = 1;\r\n  viewportScale: number = 1;\r\n  filename: string = 'my-pdf';\r\n  mouseTracker: ComponentRef<any> | null = null;\r\n}\r\n\r\nexport class EditorTool {\r\n  static count = 0;\r\n  id: number = EditorTool.count++;\r\n  type!: string;\r\n  name!: string;\r\n  icon!: string;\r\n  callback!: (event: MouseEvent) => void;\r\n  mouseTrackerType!: ComponentType<any>;\r\n\r\n  constructor(\r\n    _type: string,\r\n    _name: string,\r\n    _icon: string,\r\n    _action: (event: MouseEvent) => void,\r\n    _mouseTracker: ComponentType<any>\r\n  ) {\r\n    this.type = _type;\r\n    this.name = _name;\r\n    this.icon = _icon;\r\n    this.callback = _action;\r\n    this.mouseTrackerType = _mouseTracker;\r\n  }\r\n}\r\n\r\n// J is the props type, but is optional\r\nexport interface PDFElement<T, J = {}> {\r\n  id: number;\r\n  value: string;\r\n  width: string;\r\n  height: string;\r\n  x: string;\r\n  y: string;\r\n  page: number;\r\n  type: string;\r\n  parent: HTMLDivElement;\r\n  componentRef: ComponentRef<PDFElementHost<T, J>>;\r\n  componentPortal: ComponentPortal<T>;\r\n  render: boolean;\r\n  fontSize: string;\r\n  textColor: string;\r\n  props?: J;\r\n}\r\n\r\nexport type PDFElementJSON<J = {}> = Omit<\r\n  PDFElement<any, J>,\r\n  | 'componentRef'\r\n  | 'componentPortal'\r\n  | 'parent'\r\n  | 'width'\r\n  | 'height'\r\n  | 'x'\r\n  | 'y'\r\n  | 'fontSize'\r\n> & {\r\n  width: number;\r\n  height: number;\r\n  x: number;\r\n  y: number;\r\n  fontSize: number;\r\n};\r\n\r\nexport interface PDFElementHost<T, J = {}> {\r\n  element: PDFElement<T, J>;\r\n  left: string;\r\n  top: string;\r\n  export: (element: PDFElement<T, J>) => PDFElementJSON<J>;\r\n  deleteElement: () => void;\r\n}\r\n\r\nexport interface PDFRenderResult {\r\n  pdf: string;\r\n  json: PDFElementJSON[];\r\n  filename: string;\r\n}\r\n","import { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable } from '@angular/core';\nimport { PageSizes, PDFDocument, PDFForm, PDFImage, RGB, rgb } from 'pdf-lib';\nimport { Editor, EditorTool, PDFElement, PDFElementHost, PDFElementJSON, RenderedPage } from './models/Editor';\nimport { FormTextFieldProps } from './models/Form';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxPdfEditorService {\n  static idCounter: number = 0;\n  private editor: Editor = new Editor();\n  originalFile: File | undefined;\n\n  constructor() {\n\n  }\n\n  fileToURL(file: File): string {\n    return URL.createObjectURL(file);\n  }\n\n  toBase64 = (file: File) => new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.readAsDataURL(file);\n    reader.onload = () => resolve(reader.result);\n    reader.onerror = error => reject(error);\n  });\n\n  getPDF(): string | null {\n    return this.editor.pdf;\n  }\n\n  setPDF(file: File) {\n    this.originalFile = file;\n    this.editor.pdf = this.fileToURL(file);\n  }\n\n  nextPage(): void {\n    this.editor.selectedPage === this.editor.pages.length ? this.editor.selectedPage = 1 : this.editor.selectedPage++;\n    this.toogleMouseTracker();\n  }\n\n  previousPage(): void {\n    this.editor.selectedPage === 1 ? this.editor.selectedPage = this.editor.pages.length : this.editor.selectedPage--;\n    this.toogleMouseTracker();\n  }\n\n  getEditor(): Editor {\n    return this.editor;\n  }\n\n  addTool(tool: EditorTool): void {\n    this.editor.tools.push(tool);\n  }\n\n  removeTool(tool: EditorTool): void {\n    this.editor.tools = this.editor.tools.filter(t => t.id !== tool.id);\n  }\n\n  toggleTool(tool: EditorTool): void {\n    this.editor.selectedTool?.id !== tool.id ? this.editor.selectedTool = tool : this.editor.selectedTool = null;\n    this.toogleMouseTracker();\n  }\n\n  private getCurrentPage(){\n    return this.editor.pages.find(p => (p.pageNumber === this.editor.selectedPage)) as RenderedPage;\n  }\n\n  private toogleMouseTracker(): void {\n    if (this.editor.selectedTool) {\n      if (!this.editor.mouseTracker) {\n        const trackerPortal = new ComponentPortal(this.editor.selectedTool?.mouseTrackerType);\n        console.log(this.editor.pages);\n        const pagePortalOutlet = this.getCurrentPage().portalOutlet;\n        const outletElement = pagePortalOutlet.outletElement as HTMLElement;\n        this.editor.mouseTracker = pagePortalOutlet.attachComponentPortal(trackerPortal);\n        const mouseTrackerElement = (this.editor.mouseTracker.location.nativeElement as HTMLElement);\n        mouseTrackerElement.style.position = 'absolute';\n        mouseTrackerElement.style.opacity = '40%';\n        mouseTrackerElement.style.pointerEvents = \"none\";\n        outletElement.onmousemove = (ev: MouseEvent) => {\n          const target = ev.target as HTMLElement;\n          if (target.tagName === 'CANVAS') {\n            mouseTrackerElement.style.top = `${ev.offsetY}px`;\n            mouseTrackerElement.style.left = `${ev.offsetX}px`;\n          } else {\n            mouseTrackerElement.style.visibility = 'hidden';\n          }\n        };\n\n        outletElement.onmouseout = () => {\n          mouseTrackerElement.style.visibility = 'hidden';\n        };\n\n        outletElement.onmouseover = () => {\n          mouseTrackerElement.style.visibility = 'visible';\n        };\n\n      } else {\n        this.editor.mouseTracker.destroy();\n        this.editor.mouseTracker = null;\n        this.toogleMouseTracker();\n      }\n    } else {\n      this.editor.mouseTracker?.destroy();\n      this.editor.mouseTracker = null;\n    }\n\n  }\n\n  unselectTool(): void {\n    this.editor.selectedTool = null;\n    this.toogleMouseTracker();\n  }\n\n  addElement<T, J = {}>(component: ComponentType<T>, event: MouseEvent, value?: string, props?: J, render?: boolean): void {\n    const currentPage = this.getCurrentPage();\n    const portal = new ComponentPortal(component);\n    const element: PDFElement<T, J> = {\n      id: NgxPdfEditorService.idCounter++,\n      value: value ? value : '',\n      x: `${event.offsetX}px`,\n      y: `${event.offsetY}px`,\n      page: this.editor.selectedPage,\n      width: '',\n      height: '',\n      type: this.editor.selectedTool ? this.editor.selectedTool.type : 'undefined',\n      parent: currentPage.source.div,\n      componentRef: ((currentPage.portalOutlet.attachComponentPortal(portal) as unknown) as ComponentRef<PDFElementHost<T, J>>),\n      componentPortal: portal,\n      render: render ? render : false,\n      fontSize: '16px',\n      textColor: '#000000',\n      props\n    };\n    element.width = `${element.componentRef.location.nativeElement.offsetWidth}px`;\n    element.height = `${element.componentRef.location.nativeElement.offsetHeight}px`;\n    element.componentRef.instance.element = element;\n    this.editor.elements.push(element);\n    this.unselectTool();\n  }\n\n  deleteElement(elementToDelete: PDFElement<any>): void {\n    elementToDelete.componentRef.destroy();\n    this.editor.elements = this.editor.elements.filter(el => el.id !== elementToDelete.id);\n  }\n\n  updatePosition<T>(element: PDFElement<T>): void {\n    const bounding = element.componentRef.location.nativeElement.getBoundingClientRect();\n    const parentPosition = this.getParentPosition(element.parent);\n    element.x = `${bounding.x - parentPosition.left}px`;\n    element.y = `${bounding.y - parentPosition.top}px`;\n    element.width = `${bounding.width}px`;\n    element.height = `${bounding.height}px`;\n    element.componentRef.instance.left = element.x;\n    element.componentRef.instance.top = element.y;\n    console.log(\"::ELEMENT UPDATED::\", element);\n  }\n\n  private getParentPosition(parent: HTMLElement) {\n    let element = parent;\n    let x = 0, y = 0;\n    while (element && !isNaN(element.offsetLeft) && !isNaN(element.offsetTop)) {\n      x += element.offsetLeft - element.scrollLeft;\n      y += element.offsetTop - element.scrollTop;\n      element = element.offsetParent as HTMLElement;\n    }\n    return { left: x, top: y };\n  }\n\n  export<T, J = {}>(element: PDFElement<T, J>): PDFElementJSON<J> {\n    const elementToJson: PDFElementJSON<J> = {\n      id: element.id,\n      value: element.value,\n      width: this.pxStringToNumber(element.width),\n      height: this.normalizeDimension(this.pxStringToNumber(element.height)),\n      x: this.normalizeDimension(this.pxStringToNumber(element.x)),\n      y: this.normalizeDimension(this.pxStringToNumber(element.y)),\n      page: element.page,\n      type: element.type,\n      render: element.render,\n      fontSize: this.normalizeDimension(this.pxStringToNumber(element.fontSize)),\n      textColor: element.textColor,\n      props: element.props\n    }\n    return elementToJson;\n  }\n\n  async render() {\n    if (this.originalFile) {\n      const pdfbase64 = await this.toBase64(this.originalFile) as string;\n      const origin = await PDFDocument.load(pdfbase64);\n      const elementsJSON = this.editor.elements.map(el => el.componentRef.instance.export(el));\n      const elementsToRender = elementsJSON.filter(el => el.render);\n      console.log(elementsJSON);\n      elementsToRender.forEach(async el => {\n        const page = origin.getPage(el.page - 1);\n        const form = origin.getForm();\n        switch (el.type) {\n          case 'text':\n            page.drawText(el.value, {\n              x: el.x,\n              y: this.yToPdfOrigin(el.y, page.getHeight(), el.fontSize),\n              maxWidth: el.width,\n              color: this.HEXtoRGB(el.textColor),\n              size: el.fontSize\n            });\n            break;\n          case 'image':\n            console.log(el.value);\n            const img = await (el.value.includes('jpeg') ? origin.embedJpg(el.value) : origin.embedPng(el.value));\n            const scaled = img.scaleToFit(this.normalizeDimension(el.width), el.height);\n            page.drawImage(img, {\n              width: scaled.width,\n              height: scaled.height,\n              x: el.x,\n              y: this.yToPdfOrigin(el.y, page.getHeight(), this.normalizeDimension(scaled.height)),\n            })\n            break;\n            case 'textfield':\n              const field = form.createTextField(el.value);\n              (el.props as FormTextFieldProps).required ? field.enableRequired() : null;\n              field.addToPage(page, {\n                  x: el.x,\n                  y: this.yToPdfOrigin(el.y, page.getHeight(), el.height / 2),\n                  width: this.normalizeDimension(el.width),\n                  height: this.normalizeDimension(el.height),\n                  textColor: this.HEXtoRGB(el.textColor)\n              });\n              break;\n        }\n      });\n\n      return { pdf: await origin.saveAsBase64({ dataUri: true }), json: elementsJSON, filename: this.editor.filename }\n    } else {\n      throw Error('No PDF found!')\n    }\n  }\n\n  reset(): void {\n    this.editor = new Editor();\n    this.originalFile = undefined;\n    NgxPdfEditorService.idCounter = 0;\n  }\n\n  // async addBlankPage() {\n  //   if (this.originalFile) {\n  //     const pdfbase64 = await this.toBase64(this.originalFile) as string;\n  //     const origin = await PDFDocument.load(pdfbase64);\n  //     origin.addPage(PageSizes.A4);\n  //     const newPdf = await origin.save();\n  //     this.originalFile = new File([newPdf], this.originalFile.name, { type: this.originalFile.type });\n  //     this.editor.pdf = await this.toBase64(this.originalFile) as string;\n  //   } else {\n  //     throw Error('No PDF found!')\n  //   }\n  // }\n\n\n  //FORM UTILS\n    getInputCounter(): number{\n      return this.editor.elements.filter(el => el.type === \"textfield\").length;\n    }\n\n\n  //UTILS\n  pxStringToNumber(cord: string): number {\n    return Number.parseFloat(cord.replace('px', ''));\n  }\n\n  yToPdfOrigin(y: number, height: number, fontSize: number): number {\n    return (y + fontSize) * (0 - height) / (height - 0) + height;\n  }\n\n  normalizeDimension(dimension: number): number {\n    return dimension / this.editor.viewportScale;\n  }\n\n  HEXtoRGB(hex: string): RGB {\n    const aRgbHex = hex.replace('#', '').match(/.{1,2}/g);\n    if (aRgbHex) {\n      return rgb(parseInt(aRgbHex[0], 16) / 255, parseInt(aRgbHex[1], 16) / 255, parseInt(aRgbHex[2], 16) / 255);\n    }\n    return rgb(0, 0, 0);\n  }\n\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { EditorTool } from '../../models/Editor';\n\n@Component({\n  selector: 'editor-tool-button',\n  templateUrl: './tool-button.component.html',\n  styleUrls: ['./tool-button.component.css']\n})\nexport class ToolButtonComponent implements OnInit {\n  @Input() tool!: EditorTool;\n  @Input() selectedTool!: EditorTool;\n\n  constructor() { }\n\n\n  ngOnInit(): void {\n  }\n\n}\n","<div class=\"pdf-editor-w-20 pdf-editor-h-16 pdf-editor-shadow-sm pdf-editor-border pdf-editor-border-gray-300 pdf-editor-rounded-md pdf-editor-flex pdf-editor-flex-col pdf-editor-items-center pdf-editor-justify-center pdf-editor-cursor-pointer\"\n    [ngClass]=\"{'pdf-editor-bg-blue-200' : selectedTool?.id === tool.id, 'hover:pdf-editor-bg-blue-200' : selectedTool?.id !== tool.id}\">\n    <mat-icon class=\"pdf-editor-text-xl pdf-editor-w-auto pdf-editor-h-auto\">{{tool.icon}}</mat-icon>\n    <p class=\"pdf-editor-text-sm\">{{tool.name}}</p>\n</div>","import { DomPortalOutlet } from '@angular/cdk/portal';\nimport {\n  ApplicationRef,\n  Component,\n  ComponentFactoryResolver,\n  Inject,\n  Injector,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport {\n  NgxExtendedPdfViewerComponent,\n  PageRenderedEvent,\n  PagesLoadedEvent,\n  pdfDefaultOptions,\n} from 'ngx-extended-pdf-viewer';\nimport { Editor, EditorConfig, RenderedPage } from './models/Editor';\nimport { NgxPdfEditorService } from './ngx-pdf-editor.service';\n\n@Component({\n  selector: 'ngx-pdf-editor',\n  templateUrl: './ngx-pdf-editor.component.html',\n  styleUrls: ['./ngx-pdf-editor.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class NgxPdfEditorComponent implements OnInit, OnDestroy {\n  pdfRenderCompleted: boolean = false;\n  editor!: Editor;\n  totalPagesNumber: number = 1;\n\n  @ViewChild('pdfViewerHost') pdfViewerHost!: NgxExtendedPdfViewerComponent;\n\n  constructor(\n    @Inject(MAT_DIALOG_DATA) public editorConfig: EditorConfig,\n    private _componentFactoryResolver: ComponentFactoryResolver,\n    private _appRef: ApplicationRef,\n    private _defInjector: Injector,\n    public pdfEditorService: NgxPdfEditorService,\n    private dialogRef: MatDialogRef<NgxPdfEditorComponent>\n  ) {\n    pdfDefaultOptions.doubleTapZoomFactor = '100%';\n    pdfDefaultOptions.annotationMode = 1;\n    if (editorConfig.file) {\n      this.pdfEditorService.setPDF(editorConfig.file);\n      this.editor = this.pdfEditorService.getEditor();\n      this.editor.filename = editorConfig.file.name;\n    }\n  }\n\n  ngOnInit(): void {}\n\n  ngOnDestroy(): void {\n    this.pdfEditorService.reset();\n  }\n\n  pageRendered(page: PageRenderedEvent) {\n    let pageRendered: RenderedPage = page as unknown as RenderedPage;\n    pageRendered.viewport = pageRendered.source.viewport;\n    if (pageRendered.pageNumber === 1) {\n      this.editor.viewportScale = pageRendered.viewport.scale;\n    }\n    pageRendered.portalOutlet = new DomPortalOutlet(\n      pageRendered.source.div,\n      this._componentFactoryResolver,\n      this._appRef,\n      this._defInjector,\n      document\n    );\n    this.editor.pages.push(pageRendered);\n\n    pageRendered.source.div.onclick = (event) => {\n      console.log('EXEC. CLICK EVENT:', event);\n      const target = event.target as HTMLElement;\n      if (target.tagName === 'CANVAS') {\n        this.editor.selectedTool?.callback(event);\n      } else {\n        this.pdfEditorService.unselectTool();\n      }\n    };\n\n    console.log('PAGE RENDERED', pageRendered);\n  }\n\n  pagesLoaded(event: PagesLoadedEvent) {\n    this.totalPagesNumber = event.pagesCount;\n    this.pdfRenderCompleted = true;\n  }\n\n  getTotalPagesNumberArray() {\n    return Array(this.totalPagesNumber)\n      .fill(0)\n      .map((x, i) => i + 1);\n  }\n\n  render() {\n    this.pdfEditorService.render().then((renderResult) => {\n      console.log('RENDERED COMPLETED');\n      console.log(renderResult);\n      this.dialogRef.close(renderResult);\n    });\n  }\n\n  changeName(name: string): void {\n    this.editor.filename = name;\n  }\n\n  makeItAbsolute(index: number) {\n    console.log('PAGE ABS:', index);\n    const pdfPreview = document.getElementById(`pdf-preview-${index}`);\n    if (pdfPreview) {\n      pdfPreview.firstElementChild?.classList.add('relative');\n    }\n  }\n\n  // addBlankPage() {\n  //   this.pdfRenderCompleted = false;\n  //   this.pdfEditorService.addBlankPage().then(() => console.log(\"BLANK PAGE ADDED.\"));\n  // }\n}\n","<div\r\n  class=\"pdf-editor-flex pdf-editor-w-full pdf-editor-h-full pdf-editor-p-0 pdf-editor-bg-white\"\r\n>\r\n  <div\r\n    class=\"pdf-editor-w-2/12 pdf-editor-h-full pdf-editor-border-r pdf-editor-border-solid pdf-editor-flex pdf-editor-flex-col pdf-editor-p-4 pdf-editor-space-y-4\"\r\n    #toolside\r\n  >\r\n    <h2 class=\"pdf-editor-text-lg pdf-editor-font-semibold\">\r\n      {{ editorConfig.title }}\r\n    </h2>\r\n    <div\r\n      class=\"pdf-editor-flex pdf-editor-flex-col pdf-editor-text-xl pdf-editor-space-y-1\"\r\n    >\r\n      <p class=\"pdf-editor-font-medium\">{{ \"PDFEDITOR.Name\" | translate }}</p>\r\n      <p\r\n        contenteditable=\"true\"\r\n        class=\"pdf-editor-p-1 pdf-editor-outline-none pdf-editor-border pdf-editor-border-dashed pdf-editor-border-gray-300 pdf-editor-cursor-text pdf-editor-break-words\"\r\n        (input)=\"changeName($event.target.innerHTML)\"\r\n      >\r\n        {{ editorConfig.file?.name || editor.filename }}\r\n      </p>\r\n    </div>\r\n\r\n    <div\r\n      class=\"pdf-editor-w-full pdf-editor-h-0.5 pdf-editor-border-b pdf-editor-border-solid pdf-editor-border-gray-300 pdf-editor-my-1\"\r\n    ></div>\r\n\r\n    <div class=\"pdf-editor-flex pdf-editor-flex-row pdf-editor-flex-wrap\">\r\n      <editor-tool-button\r\n        class=\"pdf-editor-p-1\"\r\n        *ngFor=\"let tool of editor.tools\"\r\n        [tool]=\"tool\"\r\n        [selectedTool]=\"editor.selectedTool\"\r\n        (click)=\"pdfEditorService.toggleTool(tool)\"\r\n      ></editor-tool-button>\r\n    </div>\r\n\r\n    <div\r\n      class=\"pdf-editor-w-full pdf-editor-h-0.5 pdf-editor-border-b pdf-editor-border-solid pdf-editor-border-gray-300 pdf-editor-my-1\"\r\n    ></div>\r\n\r\n    <button\r\n      mat-button\r\n      (click)=\"render()\"\r\n      class=\"pdf-editor-rounded pdf-editor-bg-purple-600 pdf-editor-text-white pdf-editor-font-semibold pdf-editor-shadow pdf-editor-p-2\"\r\n    >\r\n      {{ \"PDFEDITOR.Save\" | translate }}\r\n    </button>\r\n    <button\r\n      mat-button\r\n      class=\"pdf-editor-rounded pdf-editor-bg-red-500 pdf-editor-text-white pdf-editor-font-semibold pdf-editor-shadow\"\r\n      matDialogClose\r\n    >\r\n      {{ \"PDFEDITOR.Close\" | translate }}\r\n    </button>\r\n  </div>\r\n\r\n  <div\r\n    class=\"pdf-editor-w-10/12 pdf-editor-h-full pdf-editor-flex pdf-editor-flex-col pdf-editor-bg-gray-50 pdf-editor-overflow-y-hidden\"\r\n    #pdfside\r\n  >\r\n    <ngx-extended-pdf-viewer\r\n      *ngIf=\"editor.pdf\"\r\n      [src]=\"editor.pdf\"\r\n      [useBrowserLocale]=\"true\"\r\n      [language]=\"editorConfig.language\"\r\n      class=\"pdf-editor-w-full pdf-editor-relative\"\r\n      [(page)]=\"editor.selectedPage\"\r\n      pageViewMode=\"single\"\r\n      (pageRendered)=\"pageRendered($event)\"\r\n      (pagesLoaded)=\"pagesLoaded($event)\"\r\n      [showBorders]=\"true\"\r\n      [showToolbar]=\"true\"\r\n      [sidebarVisible]=\"true\"\r\n      [showSidebarButton]=\"false\"\r\n      [showOpenFileButton]=\"false\"\r\n      [showPrintButton]=\"false\"\r\n      [showDownloadButton]=\"false\"\r\n      [showRotateButton]=\"false\"\r\n      [showScrollingButton]=\"false\"\r\n      [showSpreadButton]=\"false\"\r\n      [showPropertiesButton]=\"false\"\r\n      [showUnverifiedSignatures]=\"true\"\r\n      [enableDragAndDrop]=\"false\"\r\n      [showTextEditor]=\"false\"\r\n      [showDrawEditor]=\"false\"\r\n      [handTool]=\"false\"\r\n      [textLayer]=\"false\"\r\n      [showZoomButtons]=\"false\"\r\n      [ignoreKeyboard]=\"true\"\r\n      zoom=\"page-actual\"\r\n      #pdfViewerHost\r\n    >\r\n    </ngx-extended-pdf-viewer>\r\n  </div>\r\n</div>\r\n","import { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport {\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\nimport {\n  PDFElement,\n  PDFElementHost,\n  PDFElementJSON,\n} from '../../models/Editor';\nimport { NgxPdfEditorService } from '../../ngx-pdf-editor.service';\n\n@Component({\n  selector: 'pdf-text-element',\n  templateUrl: './text-element.component.html',\n  styleUrls: ['./text-element.component.css'],\n  host: {\n    class: 'pdfElement textElement',\n  },\n})\nexport class PDFTextElement\n  implements OnInit, OnDestroy, PDFElementHost<PDFTextElement>\n{\n  @Input() element!: PDFElement<PDFTextElement>;\n  @HostBinding('style.left') left = '0px';\n  @HostBinding('style.top') top = '0px';\n  @HostBinding('style.fontSize') fontSize = '16px';\n  @HostBinding('style.color') textColor = '#000000';\n\n  // @HostBinding('style.fontWeight') fontWeight = 'normal';\n\n  @ViewChild('text', { static: true }) text!: ElementRef<HTMLParagraphElement>;\n\n  contentEditable: boolean = false;\n\n  dragRef!: DragRef;\n\n  isStyleEditorOpen: boolean = false;\n\n  constructor(\n    private ngxPdfEditorService: NgxPdfEditorService,\n    private dragDrop: DragDrop\n  ) {}\n\n  onClick() {\n    this.isStyleEditorOpen = true;\n  }\n\n  onDoubleClick() {\n    this.onClick();\n    this.contentEditable = true;\n    this.dragRef.disabled = true;\n    this.placeCaretAtEnd();\n  }\n\n  onBlur(event: FocusEvent) {\n    console.log(event);\n    const target = event.relatedTarget as HTMLElement;\n    if (!target || !target.classList.contains('unfocusable')) {\n      this.contentEditable = false;\n      this.dragRef.disabled = false;\n      this.element.value = this.text.nativeElement.textContent || '';\n      this.isStyleEditorOpen = false;\n    } else {\n      event.preventDefault();\n      this.text.nativeElement.focus();\n    }\n  }\n\n  ngOnInit(): void {\n    if (this.element) {\n      this.left = this.element.x;\n      this.top = this.element.y;\n      this.initializeDrag();\n      setTimeout(() => this.onDoubleClick(), 10);\n    }\n    // this.onDoubleClick();\n  }\n\n  ngOnDestroy(): void {\n    this.dragRef ? this.dragRef.dispose() : null;\n    this.isStyleEditorOpen = false;\n  }\n\n  private initializeDrag(): void {\n    this.dragRef = this.dragDrop.createDrag(this.element.componentRef.location);\n    this.dragRef.withBoundaryElement(this.element.parent);\n\n    this.dragRef.started.subscribe(() => {\n      this.isStyleEditorOpen = false;\n    });\n\n    this.dragRef.ended.subscribe((_dragRef: any) => {\n      this.ngxPdfEditorService.updatePosition<PDFTextElement>(this.element);\n      _dragRef.source.reset();\n      this.isStyleEditorOpen = true;\n    });\n  }\n\n  private placeCaretAtEnd(): void {\n    const selection = window.getSelection();\n    const range = document.createRange();\n    selection?.removeAllRanges();\n    range.selectNodeContents(this.text.nativeElement);\n    range.collapse(false);\n    selection?.addRange(range);\n    this.text.nativeElement.focus();\n  }\n\n  export(): PDFElementJSON {\n    return this.ngxPdfEditorService.export<PDFTextElement>(this.element);\n  }\n\n  // setFontBold() {\n  //   this.fontWeight === 'normal' ? this.fontWeight = 'bold' : this.fontWeight = 'normal';\n  // }\n\n  setFontSize(n: number) {\n    this.fontSize = `${Number.parseInt(this.fontSize.replace('px', '')) + n}px`;\n    this.element.fontSize = this.fontSize;\n  }\n\n  changeTextColor(event: Event) {\n    const target = event.target as HTMLInputElement;\n    this.textColor = target.value;\n    this.element.textColor = this.textColor;\n  }\n\n  deleteElement(): void {\n    this.ngxPdfEditorService.deleteElement(this.element);\n  }\n}\n","<p\n  [contentEditable]=\"contentEditable\"\n  #text\n  #textOverlayOrigin=\"cdkOverlayOrigin\"\n  tabindex=\"0\"\n  class=\"textElement pdf-editor-z-10 pdf-editor-outline-none pdf-editor-border-opacity-0 pdf-editor-border pdf-editor-border-dashed focus:pdf-editor-border-gray-500 focus:pdf-editor-border-opacity-100\"\n  (click)=\"onClick()\"\n  (dblclick)=\"onDoubleClick()\"\n  (blur)=\"onBlur($event)\"\n  cdkOverlayOrigin\n>\n  {{ \"PDFEDITOR.YourText\" | translate }}\n</p>\n\n<ng-template\n  cdkConnectedOverlay\n  [cdkConnectedOverlayOrigin]=\"textOverlayOrigin\"\n  [cdkConnectedOverlayOpen]=\"isStyleEditorOpen\"\n>\n  <div\n    class=\"pdf-editor-h-12 pdf-editor-shadow-md pdf-editor-rounded-md pdf-editor-w-auto pdf-editor-flex pdf-editor-flex-row pdf-editor-items-center pdf-editor-p-1 pdf-editor-space-x-1 unfocusable pdf-editor-z-50 pdf-editor-bg-white\"\n  >\n    <!-- <button class=\"font-bold rounded-md border border-solid text-lg p-1 unfocusable\" (click)=\"setFontBold()\">\n            <mat-icon>format_bold</mat-icon>\n        </button> -->\n    <button\n      class=\"pdf-editor-font-bold pdf-editor-rounded-md pdf-editor-border pdf-editor-border-solid pdf-editor-text-lg pdf-editor-p-1 pdf-editor-flex pdf-editor-justify-center pdf-editor-items-center unfocusable\"\n      (click)=\"setFontSize(1)\"\n    >\n      <mat-icon>text_increase</mat-icon>\n    </button>\n    <button\n      class=\"pdf-editor-font-bold pdf-editor-rounded-md pdf-editor-border pdf-editor-border-solid pdf-editor-text-lg pdf-editor-p-1 pdf-editor-flex pdf-editor-justify-center pdf-editor-items-center unfocusable\"\n      (click)=\"setFontSize(-1)\"\n    >\n      <mat-icon>text_decrease</mat-icon>\n    </button>\n    <div\n      class=\"pdf-editor-flex pdf-editor-flex-row pdf-editor-items-center pdf-editor-rounded-md pdf-editor-border pdf-editor-border-solid pdf-editor-text-lg p-1 unfocusable pdf-editor-space-x-1\"\n    >\n      <p class=\"font-medium unfocusable\">Colore</p>\n      <input\n        type=\"color\"\n        class=\"unfocusable\"\n        (input)=\"changeTextColor($event)\"\n        [value]=\"textColor\"\n      />\n    </div>\n    <button\n      class=\"pdf-editor-font-bold pdf-editor-rounded-md pdf-editor-border pdf-editor-border-solid pdf-editor-text-lg pdf-editor-p-1 pdf-editor-flex pdf-editor-justify-center pdf-editor-items-center unfocusable\"\n      (click)=\"deleteElement()\"\n    >\n      <mat-icon>delete</mat-icon>\n    </button>\n  </div>\n</ng-template>\n","import { DragDrop, DragRef } from '@angular/cdk/drag-drop';\r\nimport {\r\n  Component,\r\n  ElementRef,\r\n  HostBinding,\r\n  OnDestroy,\r\n  OnInit,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n  PDFElement,\r\n  PDFElementHost,\r\n  PDFElementJSON,\r\n} from '../../models/Editor';\r\nimport { SignatureElementProps } from '../../models/Signature';\r\nimport { NgxPdfEditorService } from '../../ngx-pdf-editor.service';\r\n\r\n@Component({\r\n  selector: 'signature-element',\r\n  templateUrl: './signature-element.component.html',\r\n  styleUrls: ['./signature-element.component.css'],\r\n  host: {\r\n    class: 'pdfElement signatureElement',\r\n  },\r\n})\r\nexport class PDFSignatureElement\r\n  implements OnInit, OnDestroy, PDFElementHost<PDFSignatureElement>\r\n{\r\n  element!: PDFElement<PDFSignatureElement, SignatureElementProps>;\r\n  @HostBinding('style.left') left = '0px';\r\n  @HostBinding('style.top') top = '0px';\r\n\r\n  @ViewChild('signature', { static: true })\r\n  signature!: ElementRef<HTMLDivElement>;\r\n\r\n  dragRef!: DragRef;\r\n  isOverlayOpen: boolean = false;\r\n\r\n  constructor(\r\n    private ngxPdfEditorService: NgxPdfEditorService,\r\n    private dragDrop: DragDrop\r\n  ) {}\r\n\r\n  onClick() {\r\n    this.signature.nativeElement.focus();\r\n    this.isOverlayOpen = true;\r\n    setTimeout(() => {\r\n      const overlay = document.getElementById('signature-overlay');\r\n      if (overlay) {\r\n        const group = overlay.getElementsByTagName('select')[0];\r\n        (group as HTMLElement).click();\r\n      }\r\n    }, 200);\r\n  }\r\n\r\n  onBlur(event: FocusEvent) {\r\n    console.log('ON BLUR', event);\r\n\r\n    const target = event.relatedTarget as HTMLElement;\r\n    if (!target || !target.classList.contains('unfocusable')) {\r\n      // this.element.value = this.text.nativeElement.textContent || '';\r\n      this.isOverlayOpen = false;\r\n    } else {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.element) {\r\n      this.left = this.element.x;\r\n      this.top = this.element.y;\r\n      this.initializeDrag();\r\n      setTimeout(() => this.onClick(), 10);\r\n      if (this.element.props) {\r\n        this.element.value = this.element.props?.signers[0].order.toString();\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.dragRef ? this.dragRef.dispose() : null;\r\n    this.isOverlayOpen = false;\r\n  }\r\n\r\n  private initializeDrag(): void {\r\n    this.dragRef = this.dragDrop.createDrag(this.element.componentRef.location);\r\n    this.dragRef.withBoundaryElement(this.element.parent);\r\n    this.dragRef.started.subscribe(() => {\r\n      this.isOverlayOpen = false;\r\n    });\r\n\r\n    this.dragRef.ended.subscribe((_dragRef: any) => {\r\n      this.ngxPdfEditorService.updatePosition<PDFSignatureElement>(\r\n        this.element\r\n      );\r\n      _dragRef.source.reset();\r\n      this.isOverlayOpen = true;\r\n    });\r\n  }\r\n\r\n  changeSigner(signerValue: string): void {\r\n    this.element.value = signerValue;\r\n    this.signature.nativeElement.focus();\r\n  }\r\n\r\n  getNameFromSignerOrder(signerOrder: string) {\r\n    if (signerOrder) {\r\n      return this.element.props?.signers.find(\r\n        (signer) => signer.order === Number.parseInt(signerOrder)\r\n      )?.name;\r\n    } else {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  export(): PDFElementJSON {\r\n    return this.ngxPdfEditorService.export<PDFSignatureElement>(this.element);\r\n  }\r\n\r\n  deleteElement(): void {\r\n    this.ngxPdfEditorService.deleteElement(this.element);\r\n  }\r\n}\r\n","<div\r\n  #signature\r\n  #signatureOverlayOrigin=\"cdkOverlayOrigin\"\r\n  cdkOverlayOrigin\r\n  (click)=\"onClick()\"\r\n  (blur)=\"onBlur($event)\"\r\n  tabindex=\"0\"\r\n  class=\"pdf-editor-border-pink-500 pdf-editor-border-dashed pdf-editor-border-2 pdf-editor-w-48 pdf-editor-h-14 pdf-editor-text-center pdf-editor-flex pdf-editor-flex-col pdf-editor-items-center pdf-editor-justify-center pdf-editor-font-medium\"\r\n>\r\n  <span>Firma</span>\r\n  <span\r\n    >({{\r\n      getNameFromSignerOrder(element?.value) ||\r\n        (\"PDFEDITOR.SelectSigner\" | translate)\r\n    }})</span\r\n  >\r\n</div>\r\n\r\n<ng-template\r\n  cdkConnectedOverlay\r\n  [cdkConnectedOverlayOrigin]=\"signatureOverlayOrigin\"\r\n  [cdkConnectedOverlayOpen]=\"isOverlayOpen\"\r\n>\r\n  <div\r\n    id=\"signature-overlay\"\r\n    class=\"pdf-editor-h-auto pdf-editor-shadow-md pdf-editor-rounded-md pdf-editor-w-auto pdf-editor-flex pdf-editor-flex-row pdf-editor-items-center pdf-editor-p-1 pdf-editor-space-x-1 unfocusable pdf-editor-z-50 pdf-editor-bg-white\"\r\n  >\r\n    <select\r\n      class=\"unfocusable\"\r\n      (change)=\"changeSigner($event.target.value)\"\r\n      [value]=\"element.value\"\r\n    >\r\n      <option\r\n        class=\"unfocusable\"\r\n        *ngFor=\"let signer of element.props?.signers\"\r\n        [value]=\"signer.order.toString()\"\r\n        [selected]=\"signer.order.toString() === element.value\"\r\n      >\r\n        {{ signer.name }}\r\n      </option>\r\n    </select>\r\n    <button\r\n      class=\"pdf-editor-font-bold pdf-editor-rounded-md pdf-editor-border pdf-editor-border-solid pdf-editor-text-lg pdf-editor-p-1 pdf-editor-flex pdf-editor-justify-center pdf-editor-items-center unfocusable\"\r\n      (click)=\"deleteElement()\"\r\n    >\r\n      <mat-icon>delete</mat-icon>\r\n    </button>\r\n  </div>\r\n</ng-template>\r\n","import { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport { Component, ElementRef, HostBinding, OnInit, ViewChild } from '@angular/core';\nimport { PDFElement, PDFElementHost, PDFElementJSON } from '../../models/Editor';\nimport { NgxPdfEditorService } from '../../ngx-pdf-editor.service';\n\nconst PLACEHOLDER64 = \"data:image/png;base64,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\";\n\n@Component({\n  selector: 'image-element',\n  templateUrl: './image-element.component.html',\n  styleUrls: ['./image-element.component.css'],\n  host: {\n    class: 'pdfElement',\n  }\n})\nexport class PDFImageElement implements OnInit, PDFElementHost<PDFImageElement> {\n  element!: PDFElement<PDFImageElement, {}>;\n  @HostBinding('style.top') top = '0px';\n  @HostBinding('style.left') left = '0px';\n  @HostBinding('style.width') width = '50%';\n\n  @ViewChild('imageInput', { static: true }) imageInput!: ElementRef<HTMLInputElement>;\n  @ViewChild('image', { static: true }) image!: ElementRef<HTMLImageElement>;\n\n\n  dragRef!: DragRef;\n  isStyleEditorOpen: boolean = false;\n\n  currentImage: string = PLACEHOLDER64;\n\n  constructor(\n    private ngxPdfEditorService: NgxPdfEditorService,\n    private dragDrop: DragDrop\n  ) {\n  }\n\n  onClick() {\n    this.isStyleEditorOpen = true;\n    this.image.nativeElement.focus();\n  }\n\n  onBlur(event: FocusEvent) {\n    const target = event.relatedTarget as HTMLElement;\n\n    if (!target || !target.classList.contains('unfocusable')) {\n      this.dragRef.disabled = false;\n      this.isStyleEditorOpen = false;\n    } else {\n      event.preventDefault();\n    }\n  }\n\n  ngOnInit(): void {\n    if (this.element) {\n      this.imageInput.nativeElement.oninput = (ev) => this.setImage(ev);\n      this.left = this.element.x;\n      this.top = this.element.y;\n      this.initializeDrag();\n      this.imageInput.nativeElement.click();\n    }\n  }\n\n\n  private initializeDrag(): void {\n    this.dragRef = this.dragDrop.createDrag(this.element.componentRef.location);\n    this.dragRef.withBoundaryElement(this.element.parent);\n\n    this.dragRef.started.subscribe(() => {\n      this.isStyleEditorOpen = false;\n    });\n\n    this.dragRef.ended.subscribe((_dragRef: any) => {\n      this.ngxPdfEditorService.updatePosition<PDFImageElement>(this.element);\n      _dragRef.source.reset();\n      this.isStyleEditorOpen = true;\n    });\n  }\n\n  export(): PDFElementJSON {\n    return this.ngxPdfEditorService.export<PDFImageElement>(this.element);\n  }\n\n  deleteElement(): void {\n    this.ngxPdfEditorService.deleteElement(this.element);\n  }\n\n  setImage(ev: Event) {\n    const element = ev.target as HTMLInputElement;\n    const image = element.files ? element.files[0] : null;\n    if (image) {\n      this.ngxPdfEditorService.toBase64(image).then(base64Image => {\n        this.currentImage = base64Image as string;\n        this.element.value = this.currentImage;\n        this.width = '50%';\n        this.element.width = `${this.image.nativeElement.width}px`;\n        this.element.height = `${this.image.nativeElement.height}px`;\n        this.ngxPdfEditorService.updatePosition<PDFImageElement>(this.element);\n        this.image.nativeElement.click();\n      });\n    }\n  }\n\n  updateDimension(event: Event) {\n    const target = event.target as HTMLInputElement;\n    this.width = `${target.value}%`;\n    this.element.width = `${this.image.nativeElement.width}px`;\n    this.element.height = `${this.image.nativeElement.height}px`;\n    this.ngxPdfEditorService.updatePosition<PDFImageElement>(this.element);\n    this.image.nativeElement.focus();\n  }\n\n}\n","<div\n  #image\n  #imageOverlayOrigin=\"cdkOverlayOrigin\"\n  cdkOverlayOrigin\n  tabindex=\"1\"\n  (click)=\"onClick()\"\n  (blur)=\"onBlur($event)\"\n>\n  <input type=\"file\" hidden #imageInput />\n  <img [src]=\"currentImage\" class=\"pdf-editor-w-full pdf-editor-h-full\" />\n</div>\n\n<ng-template\n  cdkConnectedOverlay\n  [cdkConnectedOverlayOrigin]=\"imageOverlayOrigin\"\n  [cdkConnectedOverlayOpen]=\"isStyleEditorOpen\"\n>\n  <div\n    class=\"pdf-editor-h-12 pdf-editor-shadow-md pdf-editor-rounded-md pdf-editor-w-auto pdf-editor-flex pdf-editor-flex-row pdf-editor-items-center pdf-editor-p-1 pdf-editor-space-x-1 unfocusable pdf-editor-z-50 pdf-editor-bg-white\"\n  >\n    <div\n      class=\"pdf-editor-flex pdf-editor-items-center pdf-editor-p-1 unfocusable\"\n    >\n      <input\n        type=\"range\"\n        min=\"1\"\n        max=\"100\"\n        [value]=\"width.replace('%', '')\"\n        class=\"slider unfocusable\"\n        #slider\n        (input)=\"updateDimension($event)\"\n      />\n      <p class=\"unfocusable\">{{ \"PDFEDITOR.Dimension\" | translate }}</p>\n    </div>\n\n    <button\n      class=\"pdf-editor-font-bold pdf-editor-rounded-md pdf-editor-border pdf-editor-border-solid pdf-editor-text-lg pdf-editor-p-1 pdf-editor-flex pdf-editor-justify-center pdf-editor-items-center unfocusable\"\n      (click)=\"deleteElement()\"\n    >\n      <mat-icon>delete</mat-icon>\n    </button>\n  </div>\n</ng-template>\n","import { DragRef, DragDrop } from '@angular/cdk/drag-drop';\nimport { Component, ElementRef, HostBinding, Input, OnInit, ViewChild } from '@angular/core';\nimport { PDFElement, PDFElementHost, PDFElementJSON } from '../../models/Editor';\nimport { FormTextFieldProps } from '../../models/Form';\nimport { NgxPdfEditorService } from '../../ngx-pdf-editor.service';\nimport { PDFTextElement } from '../text-element/text-element.component';\n\n@Component({\n  selector: 'lib-form-textfield',\n  templateUrl: './form-textfield.component.html',\n  styleUrls: ['./form-textfield.component.css'],\n  host: {\n    class: 'pdfElement',\n  }\n})\nexport class PDFFormTextfieldElement implements OnInit, PDFElementHost<PDFFormTextfieldElement> {\n\n  @Input() element!: PDFElement<PDFFormTextfieldElement, FormTextFieldProps>;\n  @HostBinding('style.left') left = '0px';\n  @HostBinding('style.top') top = '0px';\n\n  @ViewChild('textfield', { static: true }) textfield!: ElementRef<HTMLInputElement>;\n\n  dragRef!: DragRef;\n\n  isStyleEditorOpen: boolean = false;\n\n  constructor(\n    private ngxPdfEditorService: NgxPdfEditorService,\n    private dragDrop: DragDrop,\n  ) {\n  }\n\n  onClick() {\n    this.isStyleEditorOpen = true;\n    \n  }\n\n  onDoubleClick() {\n    this.onClick();\n    this.dragRef.disabled = true;\n  }\n\n  onBlur(event: FocusEvent) {\n    console.log(event);\n    const target = event.relatedTarget as HTMLElement;\n    if (!target || !target.classList.contains('unfocusable')) {\n      this.dragRef.disabled = false;\n      this.isStyleEditorOpen = false;\n    }else {\n      event.preventDefault();\n      // this.textfield.nativeElement.focus();\n    }\n  }\n\n  ngOnInit(): void {\n    if (this.element) {\n      this.left = this.element.x;\n      this.top = this.element.y;\n      this.initializeDrag();\n      this.textfield.nativeElement.name = `${this.textfield.nativeElement.name}_${this.ngxPdfEditorService.getInputCounter()}`;\n      this.element.value = this.textfield.nativeElement.name;\n      this.element.props = {required: false};\n    }\n  }\n\n\n  private initializeDrag(): void {\n    this.dragRef = this.dragDrop.createDrag(this.element.componentRef.location);\n    this.dragRef.withBoundaryElement(this.element.parent);\n\n    this.dragRef.started.subscribe(() => {\n      this.isStyleEditorOpen = false;\n    });\n\n    this.dragRef.ended.subscribe((_dragRef: any) => {\n      this.ngxPdfEditorService.updatePosition<PDFFormTextfieldElement>(this.element);\n      _dragRef.source.reset();\n      this.isStyleEditorOpen = true;\n    })\n  }\n\n  export(): PDFElementJSON {\n    return this.ngxPdfEditorService.export<PDFFormTextfieldElement, FormTextFieldProps>(this.element);\n  }\n\n\n  deleteElement(): void {\n    this.ngxPdfEditorService.deleteElement(this.element);\n  }\n\n  changeInputName(event: Event){\n    const name = (event.target as HTMLInputElement).value;\n    this.textfield.nativeElement.name = name;\n    this.element.value = name;\n  }\n\n  changeRequired(event: Event){\n    if(this.element.props){\n      this.element.props.required = (event.target as HTMLInputElement).checked;\n    }\n    this.textfield.nativeElement.focus();\n  }\n}\n","<input\n  type=\"text\"\n  #textfield\n  #textOverlayOrigin=\"cdkOverlayOrigin\"\n  tabindex=\"0\"\n  name=\"input\"\n  class=\"pdf-editor-z-10 pdf-editor-outline-none pdf-editor-p-2 pdf-editor-rounded-md pdf-editor-border pdf-editor-border-solid pdf-editor-border-black focus:pdf-editor-border-gray-600 focus:pdf-editor-border-opacity-100 pdf-editor-cursor-move\"\n  (click)=\"onClick()\"\n  (dblclick)=\"onDoubleClick()\"\n  (blur)=\"onBlur($event)\"\n  cdkOverlayOrigin\n  [placeholder]=\"textfield.name\"\n  readonly\n/>\n\n<ng-template\n  cdkConnectedOverlay\n  [cdkConnectedOverlayOrigin]=\"textOverlayOrigin\"\n  [cdkConnectedOverlayOpen]=\"isStyleEditorOpen\"\n>\n  <div\n    class=\"pdf-editor-h-12 pdf-editor-shadow-md pdf-editor-rounded-md pdf-editor-w-auto pdf-editor-flex pdf-editor-flex-row pdf-editor-items-center pdf-editor-p-1 pdf-editor-space-x-1 unfocusable pdf-editor-z-50 pdf-editor-bg-white\"\n  >\n    <div\n      class=\"pdf-editor-flex pdf-editor-flex-row pdf-editor-items-center pdf-editor-rounded-md pdf-editor-text-lg pdf-editor-p-1 unfocusable pdf-editor-space-x-2\"\n    >\n      <p class=\"font-medium unfocusable\">\n        {{ \"PDFEDITOR.FieldName\" | translate }}\n      </p>\n      <input\n        type=\"text\"\n        class=\"unfocusable pdf-editor-border pdf-editor-border-solid pdf-editor-p-1\"\n        (input)=\"changeInputName($event)\"\n        [value]=\"textfield.name\"\n      />\n    </div>\n    <div\n      class=\"pdf-editor-flex pdf-editor-flex-row pdf-editor-items-center pdf-editor-rounded-md pdf-editor-text-lg pdf-editor-p-1 unfocusable pdf-editor-space-x-2\"\n    >\n      <p class=\"font-medium unfocusable\">\n        {{ \"PDFEDITOR.Required\" | translate }}\n      </p>\n      <input\n        type=\"checkbox\"\n        class=\"unfocusable\"\n        (input)=\"changeRequired($event)\"\n        [checked]=\"element.props?.required\"\n      />\n    </div>\n    <button\n      class=\"pdf-editor-font-bold pdf-editor-rounded-md pdf-editor-border pdf-editor-border-solid pdf-editor-text-lg pdf-editor-p-1 pdf-editor-flex pdf-editor-justify-center pdf-editor-items-center unfocusable\"\n      (click)=\"deleteElement()\"\n    >\n      <mat-icon>delete</mat-icon>\n    </button>\n  </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\r\nimport { NgxPdfEditorComponent } from './ngx-pdf-editor.component';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { PDFTextElement } from './components/text-element/text-element.component';\r\nimport { ToolButtonComponent } from './components/tool-button/tool-button.component';\r\nimport { PDFSignatureElement } from './components/signature-element/signature-element.component';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { PDFImageElement } from './components/image-element/image-element.component';\r\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\r\nimport { PDFFormTextfieldElement } from './components/form-textfield/form-textfield.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nexport function HttpLoaderFactory(httpClient: HttpClient) {\r\n  return new TranslateHttpLoader(httpClient, '/assets/locales/', '.json');\r\n}\r\n\r\n@NgModule({\r\n  declarations: [\r\n    NgxPdfEditorComponent,\r\n    PDFTextElement,\r\n    ToolButtonComponent,\r\n    PDFSignatureElement,\r\n    PDFImageElement,\r\n    PDFFormTextfieldElement,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    MatExpansionModule,\r\n    MatButtonModule,\r\n    MatIconModule,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatSelectModule,\r\n    MatRadioModule,\r\n    MatDialogModule,\r\n    DragDropModule,\r\n    OverlayModule,\r\n    PortalModule,\r\n    NgxExtendedPdfViewerModule,\r\n    TranslateModule,\r\n  ],\r\n  exports: [NgxPdfEditorComponent],\r\n})\r\nexport class NgxPdfEditorModule {}\r\n","/*\n * Public API Surface of ngx-pdf-editor\n */\n\nexport * from './lib/ngx-pdf-editor.service';\nexport * from './lib/ngx-pdf-editor.component';\nexport * from './lib/ngx-pdf-editor.module';\nexport * from './lib/components/text-element/text-element.component';\nexport * from './lib/components/signature-element/signature-element.component';\nexport * from './lib/components/image-element/image-element.component';\nexport * from './lib/components/form-textfield/form-textfield.component';\nexport * from './lib/models/Editor';\nexport * from './lib/models/Signature';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i1.NgxPdfEditorService","i6.ToolButtonComponent","i7","i3","i4","i5","i6"],"mappings":"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"}