el-header-and-footer 0.0.16 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/el-header-and-footer.component.mjs +6 -6
- package/esm2020/lib/el-header-and-footer.module.mjs +4 -4
- package/esm2020/lib/el-header-and-footer.service.mjs +3 -3
- package/fesm2015/el-header-and-footer.mjs +12 -12
- package/fesm2015/el-header-and-footer.mjs.map +1 -1
- package/fesm2020/el-header-and-footer.mjs +12 -12
- package/fesm2020/el-header-and-footer.mjs.map +1 -1
- package/package.json +1 -1
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"el-header-and-footer.mjs","sources":["../../../projects/el-header-and-footer/src/lib/el-header-and-footer.service.ts","../../../projects/el-header-and-footer/src/lib/el-header-and-footer.component.ts","../../../projects/el-header-and-footer/src/lib/el-header-and-footer.component.html","../../../projects/el-header-and-footer/src/lib/el-header-and-footer.module.ts","../../../projects/el-header-and-footer/src/public-api.ts","../../../projects/el-header-and-footer/src/el-header-and-footer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ElHeaderAndFooterService {\n\n  constructor() { }\n}\n","import { AfterViewInit, Component, EventEmitter, forwardRef, Input, OnChanges, OnInit, Output, Renderer2, SimpleChanges, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SafeHtml, DomSanitizer } from '@angular/platform-browser';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n  selector: 'el-header-and-footer',\n  templateUrl: './el-header-and-footer.component.html',\n  styleUrls: ['./el-header-and-footer.component.scss'],\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => ElHeaderAndFooterComponent),\n    multi: true\n  }]\n})\nexport class ElHeaderAndFooterComponent implements  ControlValueAccessor, OnChanges, AfterViewInit {\n\n @ViewChild(NgbDropdown, { static: true }) dropdown!: NgbDropdown;\n\n  @Input() editorId: string = '';\n  @Input() editorText: string = '';\n  @Input() editorFrom: string = '';\n  @Input() clear: boolean = false;\n  @Input() editorAction: any;\n  @Input() style: any;\n  @Input() bgColor: any;\n  @Input() toolbarMode: 'fixed' | 'bubble' | 'none' = 'fixed';\n  @Output() editorTextChange = new EventEmitter<string>();\n  @Output() editorActionResponse = new EventEmitter<any>();\n  \n  @Input() value: string = '';\n    \n  @Output() editorTextClear = new EventEmitter<any>();\n\n  sanitizedContent!: SafeHtml;\n\n\n  showToolbar = false;\n  toolbarTop = 0;\n  toolbarLeft = 0;\n\n  fonts = ['Arial', 'Courier New', 'Georgia', 'Times New Roman', 'Verdana'];\n  fontSizes = [10, 12, 14, 16, 18, 20, 24, 28, 32, 36];\n  selectedFont = 'Arial';\n  selectedFontSize = 14;\n  isTableSelected = false;\n  tableAdded = false;\n  selectedTable: HTMLTableElement | null = null;\n  isPlaceholderVisible = true;\n  selectedCell: HTMLTableCellElement | null = null;\n  \n  isBoldActive: boolean = false;\n  isItalicActive: boolean = false;\n  isUnderlineActive: boolean = false;\n  isStrikethroughActive: boolean = false;\n  isSubscriptActive: boolean = false;\n  isSuperscriptActive: boolean = false;\n\n  selectedFormatBlock: string = 'normal'\n\n  undoStack: string[] = [];\n  redoStack: string[] = [];\n  history: string[] = [];\n  historyIndex = -1;\n\n  selectedImage: HTMLImageElement | null = null;\n  imageEditUrl: string = '';\n  imagePositionX = 0;\n  imagePositionY = 0;\n  imageResizeStartX = 0;\n  imageResizeStartY = 0;\n  imageResizeStartWidth = 0;\n  imageResizeStartHeight = 0;\n  imageResizeDirection: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | null = null;\n\n  // editorText1 = ``;\n  selectedTextColor: any;\n  onChange: any = () => {};\n  onTouched: any = () => {};\n  color: any = '#ddd';\n  colorFormControl!: FormControl;\n  backgroundColor: any;\n  selectedItemIndex: number | null = null;\n\n  parsedTable: { headers: string[], rows: string[][] } | null = null;\n\n  isFullScreen: boolean = false;\n  today: string = '';\n  CanvasColor: string = '#fff';\n\n  constructor(\n    private router: Router,\n    private route: ActivatedRoute,\n    private renderer: Renderer2,\n    private sanitizer: DomSanitizer\n  ) { }\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['bgColor']) {\n      const event = { color:{ hex : this.bgColor} }\n      this.setCanvasBackgroundColor(event, this.editorId)\n    }\n  }\n   ngAfterViewInit() {\n    this.initEditor();\n    this.checkPlaceholder();\n    this.setupHistory(); \n  }\n\n  ngOnInit(): void {\n    this.init_Func(this.editorText)\n    document.addEventListener('selectionchange', () => {\n      this.checkActiveStates();\n      this.checkFormatBlock(this.editorId);\n    });\n    this.addClickListenerToImages();\n    this.addClickListenerToElements();\n    // this.route.queryParams.subscribe(params => {\n    //   const data = JSON.parse(params['data']);\n    //   if (data.editedIMG) {\n    //     const imgUrl = sessionStorage.getItem('editImageFromTemp');\n    //     if (imgUrl) {\n    //       this.replaceImageSrc(imgUrl, data.index.index)\n    //     }\n    //     sessionStorage.removeItem('editImageFromTemp');\n    //   }\n    // })\n\n    \n  }\n\n  writeValue(value: any): void {\n    if (value !== undefined) {\n      this.editorText = value;\n      this.initEditor();\n      this.init_Func(this.editorText);\n    }\n  }\n\n  // private addClickListenerToImages() {\n  //   const editor = document.getElementById('editor');\n  //   if (editor) {\n  //     editor.addEventListener('click', (event) => {\n  //       const target = event.target as HTMLElement;\n  //       if (target.tagName === 'IMG') {\n  //         this.selectedImage = target as HTMLImageElement;\n  //         this.imageEditUrl = this.selectedImage.src;\n  //         // Position the edit button near the selected image\n  //       } else {\n  //         this.selectedImage = null;\n  //       }\n  //     });\n  //   }\n  // }\n  \n  private addClickListenerToImages() {\n  const editor = document.getElementById(this.editorId);\n  if (editor) {\n    editor.addEventListener('click', (event) => {\n      const target = event.target as HTMLElement;\n      if (target.tagName === 'IMG') {\n        this.selectedImage = target as HTMLImageElement;\n        this.imageEditUrl = this.selectedImage.src;\n\n        // Get the index of the selected image\n        const images = editor.getElementsByTagName('img');\n        for (let i = 0; i < images.length; i++) {\n          if (images[i] === this.selectedImage) {\n            this.selectedItemIndex = i;\n            break;\n          }\n        }\n\n        if (this.toolbarMode === 'bubble') {\n          this.onTextSelect();\n        }\n      } else {\n        this.selectedImage = null;\n        this.selectedItemIndex = null;\n      }\n    });\n  }\n  }\n  \n  private addClickListenerToElements() {\n  const editor = document.getElementById(this.editorId);\n  if (editor) {\n    editor.addEventListener('click', (event) => {\n      const target = event.target as HTMLElement;\n\n      // Handle images\n      if (target.tagName === 'IMG') {\n        this.selectedImage = target as HTMLImageElement;\n        this.imageEditUrl = this.selectedImage.src;\n\n        // Get the index of the selected image\n        const images = editor.getElementsByTagName('img');\n        for (let i = 0; i < images.length; i++) {\n          if (images[i] === this.selectedImage) {\n            this.selectedItemIndex = i;\n            break;\n          }\n        }\n      } else {\n        this.selectedImage = null;\n      }\n      if (target.tagName === 'TD' || target.tagName === 'TH') {\n        this.selectedTable = target.closest('table') as HTMLTableElement;\n\n        const cells = this.selectedTable.getElementsByTagName(target.tagName);\n        for (let i = 0; i < cells.length; i++) {\n          if (cells[i] === target) {\n            this.selectedItemIndex = i;\n            break;\n          }\n        }\n      } else {\n        this.selectedTable = null;\n      }\n\n      if (target.tagName === 'P' || target.tagName === 'SPAN' || target.tagName === 'DIV') {\n        const paragraphs = editor.getElementsByTagName(target.tagName);\n        for (let i = 0; i < paragraphs.length; i++) {\n          if (paragraphs[i] === target) {\n            this.selectedItemIndex = i;\n            break;\n          }\n        }\n      } else {\n      }\n    });\n  }\n  }\n\nreplaceImageSrc(newSrc: string, index: number) {\n  const editor = document.getElementById(this.editorId);\n  if (editor) {\n    editor.focus()\n    const images = editor.getElementsByTagName('IMG');\n\n    if (index >= 0 ) {\n      images[index].setAttribute('src', newSrc);\n    } else {\n      console.warn(`Index ${index} is out of bounds. Total images: ${images.length}`);\n    }\n  } else {\n    console.error('Editor element not found');\n  }\n}\n\n\n\n  private initEditor() {\n    // Initialize editor content and listeners\n    const editor = document.getElementById(this.editorId);\n\n    if (editor) {\n      editor.innerHTML = this.editorText;\n      editor.addEventListener('input', () => {\n        this.onModelChange(editor.innerHTML);\n      });\n    }\n    this.checkPlaceholder();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    // Handle the disabled state if necessary\n  }\n\n  onModelChange(value: any): void {\n    if (value) {\n      const VALUE = value\n      // this.editorText = this.mainCanvas(VALUE);\n      // this.onChange(this.mainCanvas(VALUE));\n      // this.editorTextChange.emit(this.mainCanvas(VALUE));\n          this.editorText = `<div style=\"padding: 10px 60px;\">${this.mainCanvas(VALUE)}</div>`;\n      this.onChange(`<div style=\"padding: 10px 60px;\">${this.mainCanvas(VALUE)}</div>`);\n      this.editorTextChange.emit(`<div style=\"padding: 10px 60px;\">${this.mainCanvas(VALUE)}</div>`);\n      \n    } else {\n      this.selectedImage = null;\n    }\n  }\n\n  applyImageStyles(content: string): string {\n    const div = document.createElement('div');\n    div.innerHTML = content;\n    const images = div.querySelectorAll('img');\n    images.forEach(img => {\n      if (img.style.maxWidth >= '700px') {\n        img.style.maxWidth = '700px';\n        // img.width = 300;\n        img.style.height = 'auto';\n      } else {\n        img.style.maxWidth = '100%';\n        img.style.height = 'auto';\n      }\n    });\n    return div.innerHTML;\n  }\n\n  init_Func(html: any) {\n    if (html) {\n      let editor = document.getElementById(this.editorId);\n      if (editor) { \n        editor.focus()\n         this.setEditorContent(html);\n\n      // Set up a MutationObserver to handle content changes\n      this.setupMutationObserver(editor);\n\n      // Move the caret to the end after initial content setup\n      this.moveCaretToEnd(editor);\n        // editor.focus()\n        // editor.innerHTML = html;\n        // this.sanitizedContent = this.sanitizer.bypassSecurityTrustHtml(this.applyImageStyles(html));\n        // editor.innerHTML = this.sanitizedContent as string;\n        // editor.addEventListener('input', () => {\n        //   if (editor) {\n        //     editor.focus()\n        //     this.onModelChange(editor.innerHTML);\n        //   }\n        // });\n      }\n    } else {\n      this.selectedImage = null;\n    }\n  }\n\n  private setEditorContent(html: string) {\n  let editor = document.getElementById(this.editorId);\n  if (editor) {\n    // Sanitize and apply styles to the HTML\n    this.sanitizedContent = this.sanitizer.bypassSecurityTrustHtml(this.applyImageStyles(html));\n    editor.innerHTML = this.sanitizedContent as string;\n  }\n}\n\nprivate setupMutationObserver(editor: HTMLElement) {\n  const observer = new MutationObserver(() => {\n    // Move the caret to the end after content changes\n    this.moveCaretToEnd(editor);\n    // Update model with the current content\n    this.onModelChange(editor.innerHTML);\n  });\n\n  observer.observe(editor, { childList: true, subtree: true, characterData: true });\n}\n\nprivate moveCaretToEnd(editor: HTMLElement) {\n  const selection = window.getSelection();\n  const range = document.createRange();\n  \n  if (editor.lastChild) {\n    range.selectNodeContents(editor);\n    range.collapse(false); // Collapse to the end\n    selection?.removeAllRanges();\n    selection?.addRange(range);\n  }\n}\n  // format(command: string, value?: any) {\n  //   document.execCommand(command, false, value ?? '');\n  //   //  if (command === 'underline') {\n  //   //     // Toggle underline\n  //   //     const isUnderlined = document.queryCommandState('underline');\n  //   //     document.execCommand('underline', false, isUnderlined ? 'false' : 'true');\n  //   // } else {\n  //   //     document.execCommand(command, false, '');\n  //   // }\n  // }\n\n  onFormatChange(data: any) {\n    const value = data;\n    this.selectedFormatBlock = value;\n  if (value) {\n    this.format('formatBlock', this.editorId, value);\n  }\n}\n\n\n  format(command: string, editorId: string, value?: any) {\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      editor.focus();\n      if (command === 'subscript') {\n        this.isSubscriptActive = !this.isSubscriptActive;\n        document.execCommand('subscript', false, '');\n      } else if (command === 'superscript') {\n        this.isSuperscriptActive = !this.isSuperscriptActive;\n        document.execCommand('superscript', false, '');;\n      } else {\n        document.execCommand(command, false, value ?? '');\n        if (value) {\n          const tag = value.toLowerCase().replace(/[<>]/g, '')\n          const toolbar = document.getElementById(editorId + 'toolbar');\n          if (toolbar) {\n            this.selectedFormatBlock = this.formatBlockDecode(tag);\n          }\n        }\n      }\n    }\n     this.checkActiveStates();\n     this.checkFormatBlock(editorId);\n  }\n\n  checkActiveStates() {\n    this.isBoldActive = document.queryCommandState('bold');\n    this.isItalicActive = document.queryCommandState('italic');\n    this.isUnderlineActive = document.queryCommandState('underline');\n    this.isStrikethroughActive = document.queryCommandState('strikethrough');\n    this.isSubscriptActive = document.queryCommandState('subscript');\n    this.isSuperscriptActive = document.queryCommandState('superscript');\n  }\n\n  checkFormatBlock(editorId: string) {\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      const formatBlock = document.queryCommandValue('formatBlock');\n       const toolbar = document.getElementById(editorId + 'toolbar');\n      if (toolbar) {\n        this.selectedFormatBlock = this.formatBlockDecode(formatBlock);\n      }\n      // You can further handle the formatBlock value as needed\n    }\n  }\n\n  formatBlockDecode(data: string): any {\n    switch (data) {\n      case 'h1':\n        return 'heading 1';\n        break;\n      case 'h2':\n        return 'heading 2';\n        break;\n      case 'h3':\n        return 'heading 3';\n        break;\n      case 'h4':\n        return 'heading 4';\n        break;\n      case 'h5':\n        return 'heading 5';\n        break;\n      case 'h6':\n        return 'heading 6';\n        break;\n      case 'p':\n        return 'normal';\n        break;\n      default:\n        return 'normal';\n        break;\n    }\n  }\n\n  changeFont(event: any) {\n    this.selectedFont = event\n    document.execCommand('fontName', false, this.selectedFont);\n  }\n\n  insertCodeBlock() {\n    const code = `\n      <pre style=\"font-size: 12px;\n                  color: white;\n                  background-color: black;\n                  overflow-x: auto;\n                  margin-bottom: 5px;\n                  margin-top: 5px;\n                  padding: 5px 10px;\">\n        <code style=\"display: block;\n                     white-space: pre-wrap;\n                     height: auto;\n                     font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;\n                     font-size: 14px;\" class=\"language-html\">Insert code here...</code>\n      </pre>\n    `;\n    document.execCommand('insertHTML', false, code);\n  }\n\n  // changeFontSize(event: any) {\n  //   document.execCommand('fontSize', false, '7');\n  //   let editor = document.getElementById('editor');\n  //   if (editor) {\n  //     let fontElements = editor.getElementsByTagName('font');\n  //     for (let i = 0; i < fontElements.length; i++) {\n  //       if (fontElements[i].size == \"7\") {\n  //         fontElements[i].removeAttribute(\"size\");\n  //         fontElements[i].style.fontSize = this.selectedFontSize + 'px';\n  //       }\n  //     }\n  //   }\n  // }\n  changeFontSize(event: any) {\n    const selectedText = window.getSelection();\n    \n    if (selectedText && selectedText.rangeCount > 0) {\n        const range = selectedText.getRangeAt(0);\n        const span = document.createElement('span');\n        span.style.fontSize = this.selectedFontSize + 'px';\n        range.surroundContents(span);\n    }\n  }\n\n  addLink() {\n    let url = prompt(\"Enter the link here: \", \"http://\");\n    if (url) {\n      document.execCommand(\"createLink\", false, url);\n    }\n  }\n\n  insertsImage(editorId: string) {\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      editor.focus();\n      let imageInput = document.getElementById('imageInput') as HTMLInputElement;\n      if (imageInput) {\n        imageInput.click();\n      }\n    }\n  }\n\n   handleImageUpload(event: any) {\n  const file = event.target.files[0];\n  if (file) {\n    const reader = new FileReader();\n    reader.onload = (e: any) => {\n      const img = new Image();\n      img.src = e.target.result;\n      img.onload = () => {\n        // Create the HTML string with the exact width and height\n        const imgHTML = `<img src=\"${img.src}\" width=\"${img.width}\" height=\"${img.height}\">`;\n        // Insert the image into the editor\n        document.execCommand('insertHTML', false, imgHTML);\n      };\n    };\n    reader.readAsDataURL(file);\n  }\n}\n\n\n  addTable(editorId: string) {\n    const tableWidth = 825; // Table width in pixels\n    const cols = 3; // Number of columns\n    const cellMinWidth = tableWidth / cols; // Calculate minimum width for each cell\n\n    let table = `<br /><table style=\"border-collapse: collapse; width: ${tableWidth}px; border: 1px solid black;\">`;\n    for (let i = 0; i < 3; i++) { // Number of rows\n      table += '<tr>';\n      for (let j = 0; j < cols; j++) {\n        table += `<td style=\"border: 1px solid #000; word-wrap: break-word; word-break: break-all; white-space: normal; min-width: ${cellMinWidth}px;\"> </td>`;\n      }\n      table += '</tr>';\n    }\n      table += '</table><br/ >';\n      // document.execCommand('insertHTML', false, table);\n      const editor = document.getElementById(editorId);\n    if (editor) {\n      editor.focus();\n      document.execCommand('insertHTML', false, table);\n    }\n    this.tableAdded = true;\n    this.checkTableSelection();\n  }\n\n\n\n  checkTableSelection(event?: MouseEvent) {\n    let target = event?.target as HTMLElement;\n    if (target && (target.tagName === 'TD' || target.tagName === 'TH')) {\n      this.isTableSelected = true;\n      this.selectedTable = target.closest('table') as HTMLTableElement;\n    } else {\n      this.isTableSelected = false;\n      this.selectedTable = null;\n    }\n    \n    this.checkPlaceholder();\n  }\n\n  checkPlaceholder() {\n    // let editor = document.getElementById('editor');\n    // if (editor) {\n    //   this.isPlaceholderVisible = editor.innerHTML === '' || editor.innerHTML === '<br>';\n    //   if (this.isPlaceholderVisible) {\n    //     // editor.innerHTML = '<span class=\"placeholder\" style=\"background: transparent; color: #000000\">Insert text here ...</span>';\n    //   } else {\n    //     let placeholder = editor.querySelector('.placeholder');\n    //     if (placeholder) {\n    //       editor.removeChild(placeholder);\n    //     }\n    //   }\n    // }\n  }\n\n  onFocus() {\n    // let editor = document.getElementById('editor');\n    // if (editor && this.isPlaceholderVisible) {\n    //   editor.innerHTML = '';\n    //   this.isPlaceholderVisible = false;\n    // }\n  }\n\n  // colorChange(newColor: string) {\n  //   this.color = newColor;\n  // }\n\n  onBlur() {\n    this.checkPlaceholder();\n  }\n\n  addRow() {\n    if (this.selectedTable) {\n      let row = this.selectedTable.insertRow();\n      for (let i = 0; i < this.selectedTable.rows[0].cells.length; i++) {\n        let cell = row.insertCell(i);\n        cell.innerHTML = ' ';\n        cell.style.border = '1px solid black';\n      }\n    }\n  }\n\n  // deleteRow() {\n  //   if (this.selectedTable) {\n  //     this.selectedTable.deleteRow(-1);\n  //   }\n  // }\n\n//   deleteRow() {\n//   if (this.selectedTable) {\n//     let rowIndex = this.selectedTable.rows.length - 1; \n//     if (window.getSelection) {\n//       let selection = window.getSelection();\n//       if (selection) {\n//         let row = selection.anchorNode?.parentElement?.closest('tr');\n//         if (row) {\n//           rowIndex = row.rowIndex;\n//         }\n//       }\n//     }\n//     this.selectedTable.deleteRow(rowIndex);\n//   }\n// }\n\n  deleteRow() {\n  const selection = window.getSelection();\n    if (selection) {\n    if (!selection.rangeCount) return;\n\n    const range = selection.getRangeAt(0);\n    const selectedNode = range.startContainer;\n    const row = selectedNode.parentElement?.closest('tr');\n\n    if (row) {\n      const table = row.closest('table');\n      if (table) {\n        table.deleteRow(row.rowIndex);\n      }\n    }\n  }\n}\n\n\n  // addColumn() {\n  //   if (this.selectedTable) {\n  //     for (let i = 0; i < this.selectedTable.rows.length; i++) {\n  //       let cell = this.selectedTable.rows[i].insertCell(-1);\n  //       cell.innerHTML = ' ';\n  //       cell.style.border = '1px solid black';\n  //     }\n  //   }\n  // }\n\n  addColumn() {\n  if (this.selectedTable) {\n    const columnCount = this.selectedTable.rows[0].cells.length + 1; // New column count\n    const tableWidth = this.selectedTable.offsetWidth;\n    const minWidth = tableWidth / columnCount;\n\n    for (let i = 0; i < this.selectedTable.rows.length; i++) {\n      let cell = this.selectedTable.rows[i].insertCell(-1);\n      cell.innerHTML = ' ';\n      cell.style.border = '1px solid black';\n      cell.style.minWidth = `${minWidth}px`;\n      cell.style.wordWrap = 'break-word';\n      cell.style.wordBreak = 'break-all';\n      cell.style.whiteSpace = 'normal';\n    }\n\n    // Update existing cells' minWidth\n    for (let i = 0; i < this.selectedTable.rows.length; i++) {\n      for (let j = 0; j < this.selectedTable.rows[i].cells.length; j++) {\n        this.selectedTable.rows[i].cells[j].style.minWidth = `${minWidth}px`;\n      }\n    }\n  }\n}\n\n\n  deleteColumn() {\n  if (this.selectedTable) {\n    if (window.getSelection) {\n      let selection = window.getSelection();\n      if (selection) {\n        let cell = selection.anchorNode?.parentElement?.closest('td, th') as HTMLTableCellElement;\n        if (cell) {\n          let cellIndex = cell.cellIndex;\n          for (let i = 0; i < this.selectedTable.rows.length; i++) {\n            this.selectedTable.rows[i].deleteCell(cellIndex);\n          }\n        }\n      }\n    }\n  }\n}\n\n  // deleteColumn() {\n  //   if (this.selectedTable) {\n  //     for (let i = 0; i < this.selectedTable.rows.length; i++) {\n  //       this.selectedTable.rows[i].deleteCell(-1);\n  //     }\n  //   }\n  // }\n\n  adjustTableWidth(event: any) {\n    if (this.selectedTable) {\n      this.selectedTable.style.width = event.target.value + 'px';\n    }\n  }\n\n  adjustCellWidth(event: any) {\n    if (this.selectedTable) {\n      for (let i = 0; i < this.selectedTable.rows.length; i++) {\n        for (let j = 0; j < this.selectedTable.rows[i].cells.length; j++) {\n          this.selectedTable.rows[i].cells[j].style.width = event.target.value + 'px';\n        }\n      }\n    }\n  }\n\n  adjustCellHeight(event: any) {\n    if (this.selectedTable) {\n      for (let i = 0; i < this.selectedTable.rows.length; i++) {\n        for (let j = 0; j < this.selectedTable.rows[i].cells.length; j++) {\n          this.selectedTable.rows[i].cells[j].style.height = event.target.value + 'px';\n        }\n      }\n    }\n  }\n\n  private setCaretToEnd(element: HTMLElement) {\n    const range = document.createRange();\n    const sel = window.getSelection();\n      if (sel) {\n      range.selectNodeContents(element);\n    range.collapse(false);\n    sel.removeAllRanges();\n    sel.addRange(range);\n    }\n  }\n\n  openColorPicker(inputId: string) {\n    const inputElement = document.getElementById(inputId);\n    if (inputElement) {\n      inputElement.click();\n    }\n  }\n\n  setTextColor(event: any, editorId: any) {\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      editor.focus();\n      const color = event.color.hex;\n      this.selectedTextColor = color;\n      document.execCommand('foreColor', true, color);\n      if (this.dropdown) {\n        this.dropdown.close();\n      }\n    }\n  }\n\n  setBackgroundColor(event: any, editorId: string) {\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      editor.focus();\n      const color = event.color.hex;\n      this.backgroundColor = color;\n      document.execCommand('hiliteColor', true, color);\n      if (this.dropdown) {\n        this.dropdown.close();\n      }\n    }\n  }\n\n  // colorChanged(event: any) {\n  //   this.color = event.color.hex; \n  // }\n\n  public logEvent(event: any, trigger: any) {\n    const color = event;\n    this.setTextColor(color, this.editorId)\n    this.selectedTextColor = event\n    document.execCommand('foreColor', false, event);\n    // this.logs.unshift([this.logs.length + 1, trigger, event]);\n  }\n\n  editImage() {\n    let data \n    switch (this.editorFrom) {\n      case 'section-content':\n        data = { editIMG: true, from: 'htmlEditor', index: this.selectedItemIndex };\n        this.navigateToIMGEditor(data);\n        sessionStorage.setItem('editImageFromTemp', JSON.stringify(this.imageEditUrl));\n        sessionStorage.setItem('textEditor', this.editorText);\n        break;\n      case 'template':\n        data = { editIMG: true, from: 'templateEditor', index: this.selectedItemIndex };\n        this.navigateToIMGEditor(data);\n        // sessionStorage.setItem('editImageFromTemp2', JSON.stringify(this.imageEditUrl));\n        sessionStorage.setItem('templateEditor', this.editorText);\n        break;\n      default:\n        sessionStorage.removeItem('editImageFromTemp');\n        // sessionStorage.removeItem('editImageFromTemp2');\n        sessionStorage.removeItem('templateEditor');\n        sessionStorage.removeItem('textEditor');\n        break;\n    }\n    // if (this.editorFrom === 'section-content') {\n    //   const data = {editIMG: true, from: 'htmlEditor', index: this.selectedItemIndex}\n    //   this.navigateToIMGEditor(data)\n    //   sessionStorage.setItem('editImageFromTemp', JSON.stringify(this.imageEditUrl))\n    //   sessionStorage.setItem('textEditor', this.editorText)\n    // } \n    \n  }\n\n  navigateToIMGEditor(data: any) {\n    this.router.navigate(['/admin/image-editor'], { queryParams: {data : JSON.stringify(data)} })\n  }\n\n  //  onTextSelect(event: MouseEvent): void {\n  //   if (this.toolbarMode === 'bubble') {\n  //     const selection = window.getSelection();\n  //     if (selection && selection.rangeCount > 0) {\n  //       const range = selection.getRangeAt(0);\n  //       if (!range.collapsed) {\n  //         const rect = range.getBoundingClientRect();\n  //         this.toolbarTop = rect.bottom + window.scrollY + 10;\n  //         this.toolbarLeft = rect.left + window.scrollX + (rect.width / 2) - 50;\n  //         this.showToolbar = true;\n  //       } else {\n  //         this.showToolbar = false;\n  //       }\n  //     }\n  //   }\n  // }\n\n onTextSelect(event?: MouseEvent): void {\n  if (this.toolbarMode === 'bubble') {\n    const selection = window.getSelection();\n    if (selection && selection.rangeCount > 0) {\n      const range = selection.getRangeAt(0);\n      if (!range.collapsed) {\n        const rect = range.getBoundingClientRect();\n        const scrollY =  document.documentElement.scrollTop;\n        const scrollX =  document.documentElement.scrollLeft;\n        this.toolbarTop = rect.top + scrollY - 75;\n        this.toolbarLeft = rect.left + scrollX + (rect.width / 2) - 325;\n        this.showToolbar = true;\n      } else {\n        this.showToolbar = false;\n      }\n    } else {\n      this.showToolbar = false;\n    }\n  }\n}\n\n\nonPaste(event: ClipboardEvent) {\n    event.preventDefault();\n    const clipboardData = event.clipboardData;\n    if (clipboardData) {\n      const pastedText = clipboardData.getData('text/plain');\n      if (this.isTableData(pastedText)) {\n        const html = this.convertTextToTable(pastedText);\n        this.insertHtmlAtCaret(html);\n      } else {\n        this.insertHtmlAtCaret(pastedText);\n      }\n    }\n  }\n\n  isTableData(text: string): boolean {\n    const rows = text.split('\\n');\n    return rows.length > 1 && rows[0].split('\\t').length > 1;\n  }\n\n  convertTextToTable(text: string): string {\n    const rows = text.split('\\n').filter(row => row.trim() !== '');\n    const tableRows = rows.map(row => {\n      const cells = row.split('\\t').map(cell => `<td class=\"px-1 py-1  style=\"border: 1px solid #000\">${cell}</td>`).join('');\n      return `<tr >${cells}</tr>`;\n    }).join('');\n    return `<table>${tableRows}</table>`;\n  }\n\n  insertHtmlAtCaret(html: string) {\n    const range = window.getSelection()?.getRangeAt(0);\n    if (range) {\n      range.deleteContents();\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = html;\n      const frag = document.createDocumentFragment();\n      let node;\n      while ((node = tempDiv.firstChild)) {\n        frag.appendChild(node);\n      }\n      range.insertNode(frag);\n      range.collapse(false);\n    }\n  }\n\n \n  public openFullscreen() {\n    var elem: any = document.getElementById(\"textEditor\");\n    this.isFullScreen = true;\n    if (elem.requestFullscreen) {\n      elem.requestFullscreen();\n    } else if (elem.mozRequestFullScreen) {\n      elem.mozRequestFullScreen();\n    } else if (elem.webkitRequestFullscreen) {\n      elem.webkitRequestFullscreen();\n    } else if (elem.msRequestFullscreen) {\n      elem.msRequestFullscreen();\n    }\n    this.style = {\n      'min-height': '90vh',\n      'max-height': '90vh',\n    }\n  }\n\n  public closeFullscreen() {\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n      this.isFullScreen = false;\n      this.style = {\n        'min-height': '400px',\n        'max-height': '400px',\n      }\n    }\n  }\n\n  openCanvasColorPicker(inputId: string) {\n    const inputElement = document.getElementById(inputId);\n    if (inputElement) {\n      inputElement.click();\n    }\n  }\n\n  setCanvasBackgroundColor(event: any, editorId: string): void {\n    this.CanvasColor = event.color.hex;\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      let color = '';\n      editor.style.backgroundColor = this.themeModeBgClr()\n      color = event.color.hex || event\n      editor.style.backgroundColor = color;\n      this.mainCanvas()\n      // this.init_Func(`<div style=\"background-color: ${color};\">${this.editorText}</div>`);\n      if (this.dropdown) {\n        this.dropdown.close();\n      }\n    }\n  }\n\n  getToday() {\n    const currentDate = new Date();\n    const day = currentDate.getDate() ;\n    const month = currentDate.getMonth() + 1; \n    const year = currentDate.getFullYear();\n    const formattedDate = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;\n    this.today = formattedDate;\n    // const label = `{(${this.today})}`;\n    const label = `{(date)}`;\n    const htmlContent = ` ${label} `;\n    const editor = document.getElementById(this.editorId);\n    if (editor) {\n      this.editorText += `<div> ${htmlContent} </div>`;\n      this.sanitizedContent = this.editorText;\n    } else {\n      this.editorText += `<div> ${htmlContent} </div>`;\n      this.sanitizedContent = this.editorText;\n    }\n  }\n\n  insertPageNumber() {\n    const pageNumber = '{(page)}';\n    const editor = document.getElementById(this.editorId);\n    if (editor) {\n      this.editorText += `<div> ${pageNumber} </div>`;\n      this.sanitizedContent = this.editorText;\n    } else {\n      this.editorText += `<div> ${pageNumber} </div>`;\n      this.sanitizedContent = this.editorText;\n    }\n  }\n\n  clearTextEditor() {\n    const editor = document.getElementById(this.editorId);\n    if (editor) {\n      this.editorTextClear.emit()\n      let data: any;\n      // data.color.hex = '#ffffff'\n      data = {\n        color: {\n          hex: ''\n        }\n      }\n      document.execCommand('hiliteColor', true, this.themeModeBgClr())\n      editor.innerHTML = ''\n      this.setCanvasBackgroundColor(data, this.editorId)\n    }\n  }\n\n  \n  setupHistory() {\n    this.saveState();\n     const editor = document.getElementById(this.editorId);\n  \n    if (editor) {\n      editor.addEventListener('input', () => this.onInput());\n    }\n  }\n\n  onInput() {\n    this.saveState();\n  }\n\n  saveState() {\n    const editor = document.getElementById(this.editorId);\n  \n    if (editor) {\n      const editorContent = editor.innerHTML;\n      if (this.historyIndex === this.history.length - 1) {\n        this.history.push(editorContent);\n        this.redoStack = [];\n      } else {\n        this.history = this.history.slice(0, this.historyIndex + 1);\n        this.history.push(editorContent);\n        this.redoStack = [];\n      }\n      this.historyIndex++;\n    }\n  }\n  undo() {\n    if (this.historyIndex > 0) {\n      this.redoStack.push(this.history[this.historyIndex]);\n      this.historyIndex--;\n      const editor = document.getElementById(this.editorId);\n  \n      if (editor) {\n        this.sanitizedContent = this.history[this.historyIndex];\n      }\n    }\n  }\n\n  redo() {\n    if (this.redoStack.length > 0) {\n      const redoContent = this.redoStack.pop();\n      this.history.push(redoContent!);\n      this.historyIndex++;\n      const editor = document.getElementById(this.editorId);\n  \n      if (editor) {\n        this.sanitizedContent = redoContent!;\n      }\n    }\n  }\n\n  mainCanvas(data?: any) {\n    let BG = ''\n    const editor = document.getElementById(this.editorId);\n    if (editor) {\n      editor.focus()\n      if (editor.style.backgroundColor === 'rgb(53, 51, 67)') {\n        BG = 'rgb(255, 255, 255)'\n      } else {\n        BG = editor.style.backgroundColor;\n      } \n      return `${data}`\n     }\n    else {\n      return `<div>${data}</div>`\n     }\n    \n  }\n\n   themeMode() {\n    const clrMode = document.body.getAttribute('data-layout-color')\n    if (clrMode == 'dark') {\n      return '2px solid #414141 !important'\n    } else {\n      return '2px solid #D0D0D0 !important'\n    }\n  }\n\n  themeModeClr() {\n    const clrMode = document.body.getAttribute('data-layout-color')\n    if (clrMode == 'dark') {\n      return '#fff !important'\n    } else {\n      return '#000 !important'\n    }\n  }\n\n  themeModeBgClr() {\n    const clrMode = document.body.getAttribute('data-layout-color')\n    if (clrMode == 'dark') {\n      return '#282828 !important'\n    } else {\n      return '#F3F3F3 !important'\n    }\n  }\n\n  themeModeClrVerticalLine() {\n    const clrMode = document.body.getAttribute('data-layout-color')\n    if (clrMode == 'dark') {\n      return '2px solid #FFFFFF !important'\n    } else {\n      return '2px solid #D0D0D0 !important'\n    }\n  }\n\n\n  themeModeBorderTop() {\n    const clrMode = document.body.getAttribute('data-layout-color')\n    if (clrMode == 'dark') {\n      return '2px solid #000 !important'\n    } else {\n      return '2px solid #fff !important'\n    }\n  }\n\n}\n","<div class=\"container els-text-editor px-0\" style=\"border-radius: 20px !important;\">\r\n    <div class=\"btn-toolbar els-btn-toolbar p-2 py-2 mb-0\" role=\"toolbar\" [id]=\"editorId+'toolbar'\"\r\n        [style.background]=\"themeModeBgClr()\" aria-label=\"Toolbar with button groups\" style=\"border-top-left-radius: 20px !important; border-top-right-radius: 20px !important;\">\r\n        <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Header Options\">\r\n            <!-- <div class=\"dropdown\">\r\n                <select class=\"els-form-select \" style=\" font-weight: 700 !important; color: #fff; width: 150px; border: 2px solid #7D6D6D !important;\" (change)=\"onFormatChange($event)\">\r\n                    <option [value]=\"'<h1>'\">Heading 1</option>v\r\n                    <option [value]=\"'<h2>'\">Heading 2</option>\r\n                    <option [value]=\"'<h3>'\">Heading 3</option>\r\n                    <option [value]=\"'<h4>'\">Heading 4</option>\r\n                    <option [value]=\"'<h5>'\">Heading 5</option>\r\n                    <option [value]=\"'<h6>'\">Heading 6</option>\r\n                    <option selected [value]=\"'<p>'\">Normal</option>\r\n                </select>\r\n            </div> -->\r\n            <div ngbDropdown class=\"dropdown\">\r\n                <button\r\n                    class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n                    id=\"headerDropdown\" [style.border]=\"themeMode()\" [style.color]=\"themeModeClr()\" ngbDropdownToggle>\r\n                    <span>{{selectedFormatBlock | titlecase}}</span> <i class=\"mdi mdi-chevron-down \"></i>\r\n                </button>\r\n                <div ngbDropdownMenu aria-labelledby=\"headerDropdown\" class=\"els-text-format\"\r\n                    [style.border]=\"themeMode()\">\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h1>')\">\r\n                        <h1>Heading 1</h1>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h2>')\">\r\n                        <h2>Heading 2</h2>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h3>')\">\r\n                        <h3>Heading 3</h3>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h4>')\">\r\n                        <h4>Heading 4</h4>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h5>')\">\r\n                        <h5>Heading 5</h5>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h6>')\">\r\n                        <h6>Heading 6</h6>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<p>')\">\r\n                        <p>Normal</p>\r\n                    </button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div ngbDropdown class=\"dropdown\">\r\n            <button class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n                id=\"headerDropdown\" style=\"width: 100px\" [style.border]=\"themeMode()\" [style.color]=\"themeModeClr()\"\r\n                ngbDropdownToggle>\r\n                <span style=\"width: 85px; font-weight: 700 !important;\" class=\"text-truncate\">{{selectedFont |\r\n                    titlecase}}</span>\r\n                <i class=\"mdi mdi-chevron-down \"></i>\r\n            </button>\r\n            <div ngbDropdownMenu aria-labelledby=\"headerDropdown\" class=\"els-text-format\" [style.border]=\"themeMode()\">\r\n                <button class=\"dropdown-item pb-0\" type=\"button\" *ngFor=\"let font of fonts\" (click)=\"changeFont(font)\"\r\n                    [style.color]=\"themeModeClr()\">\r\n                    <span>{{ font }}</span>\r\n                </button>\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"py-0\" style=\"height: fit-content;\" [style.color]=\"themeModeClr()\">\r\n            <div class=\"btn-group els-button-group mr-2 \" role=\"group\" aria-label=\"Text Formatting\">\r\n                <button type=\"button\" class=\"btn btn-sm els-toolbar-button\" [class.active]=\"isBoldActive\"\r\n                    (click)=\"format('bold', editorId)\">\r\n                    <i class=\"mdi mdi-format-bold\"></i>\r\n                </button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isItalicActive\"\r\n                    (click)=\"format('italic', editorId)\">\r\n                    <i class=\"mdi mdi-format-italic\"></i>\r\n                </button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isUnderlineActive\"\r\n                    (click)=\"format('underline', editorId)\">\r\n                    <i class=\"mdi mdi-format-underline\"></i>\r\n                </button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isStrikethroughActive\"\r\n                    (click)=\"format('strikethrough', editorId)\">\r\n                    <i class=\"mdi mdi-format-strikethrough-variant\"></i>\r\n                </button>\r\n                <div class=\"btn-group\" role=\"group\" aria-label=\"Text Color\">\r\n                    <!-- <input type=\"color\" id=\"textColorPicker\"\r\n                                style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n                                (change)=\"setTextColor($event)\">\r\n                            <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"position: relative;\"\r\n                                (click)=\"openColorPicker('textColorPicker')\">\r\n                                <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"selectedTextColor\"></i>\r\n                            </button> -->\r\n                    <div ngbDropdown class=\"ql-align\">\r\n                        <button type=\"button\"\r\n                            class=\"btn btn-outline-primary els-toolbar-button arrow-none text-secondary border-none p-0\"\r\n                            id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n                            <i class=\"mdi mdi-format-color-text icon-with-underline\"\r\n                                [style.color]=\"selectedTextColor\"></i>\r\n                        </button>\r\n                        <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 200px;\">\r\n                            <color-sketch color=\"#fff\" [presetColors]=\"[]\"\r\n                                (onChangeComplete)=\"setTextColor($event, editorId)\"></color-sketch>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"btn-group\" role=\"group\" aria-label=\"Background Color\" style=\"position: relative;\">\r\n                    <!-- <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [style.color]=\"backgroundColor\"\r\n                                (click)=\"openColorPicker('bgColorPicker')\">\r\n                                <i class=\"mdi mdi-alpha-a-box\"></i>\r\n                            </button>\r\n                            <input type=\"color\" id=\"bgColorPicker\"\r\n                                style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n                                (change)=\"setBackgroundColor($event)\"> -->\r\n                    <div ngbDropdown class=\"ql-align\">\r\n                        <button type=\"button\"\r\n                            class=\"btn btn-outline-primary els-toolbar-button arrow-none text-secondary border-none p-0\"\r\n                            id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n                            <i class=\"mdi mdi-alpha-a-box\" [style.color]=\"backgroundColor\"></i>\r\n                        </button>\r\n                        <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 200px;\">\r\n                            <color-sketch color=\"#fff\" [presetColors]=\"[]\"\r\n                                (onChangeComplete)=\"setBackgroundColor($event, editorId)\"></color-sketch>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"vertical-line ms-2 border\" [style.border-left]=\"themeModeClrVerticalLine()\"></div>\r\n            </div>\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n                    (click)=\"format('insertOrderedList', editorId)\"><i\r\n                        class=\"mdi mdi-format-list-numbered\"></i></button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n                    (click)=\"format('insertUnorderedList', editorId)\"><i\r\n                        class=\"mdi mdi-format-list-bulleted\"></i></button>\r\n                <div ngbDropdown class=\"ql-align\">\r\n                    <button type=\"button\" class=\"btn btn-white els-toolbar-button arrow-none text-secondary\"\r\n                        id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n                        <i class=\"mdi mdi-format-align-left \"></i>\r\n                    </button>\r\n                    <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 3px;\">\r\n                        <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"color: #7A7982;\"\r\n                            (click)=\"format('justifyLeft', editorId)\"><i class=\"mdi mdi-format-align-left\"></i></button>\r\n                        <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"color: #7A7982;\"\r\n                            (click)=\"format('justifyCenter', editorId)\"><i\r\n                                class=\"mdi mdi-format-align-center\"></i></button>\r\n                        <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"color: #7A7982;\"\r\n                            (click)=\"format('justifyRight', editorId)\"><i\r\n                                class=\"mdi mdi-format-align-right\"></i></button>\r\n                        <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"color: #7A7982;\"\r\n                            (click)=\"format('justifyFull', editorId)\"><i\r\n                                class=\"mdi mdi-format-align-justify\"></i></button>\r\n                    </div>\r\n                </div>\r\n                <div class=\"vertical-line ms-2 border\" [style.border-left]=\"themeModeClrVerticalLine()\"></div>\r\n            </div>\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSubscriptActive\"\r\n                    (click)=\"format('subscript', editorId)\">\r\n                    <i class=\"mdi mdi-format-subscript\"></i>\r\n                </button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSuperscriptActive\"\r\n                    (click)=\"format('superscript', editorId)\">\r\n                    <i class=\"mdi mdi-format-superscript\"></i>\r\n                </button>\r\n\r\n            </div>\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n\r\n                <div ngbDropdown class=\"ql-align\">\r\n                    <button type=\"button\" class=\"btn btn-outline-primary arrow-none els-toolbar-button  border-none p-0\"\r\n                        id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n                        <i class=\"mdi mdi-format-color-fill\"></i>\r\n                    </button>\r\n                    <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 200px;\">\r\n                        <color-sketch color=\"#fff\"\r\n                            (onChangeComplete)=\"setCanvasBackgroundColor($event, editorId)\"></color-sketch>\r\n                    </div>\r\n                </div>\r\n\r\n            </div>\r\n            <div class=\"btn-group els-button-group-2 mr-3\" role=\"group\" aria-label=\"Table Options\">\r\n                <button class=\"btn btn-white  px-1\" style=\"height: 24px;\" (click)=\"getToday()\">Date</button>\r\n            </div>\r\n            <div class=\"btn-group els-button-group-2\" role=\"group\" aria-label=\"Table Options\">\r\n                <button class=\"btn btn-white  px-1\" style=\"height: 24px;\" (click)=\"insertPageNumber()\">Page\r\n                    No</button>\r\n\r\n            </div>\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addLink()\"><i\r\n                        class=\"mdi mdi-link-variant\"></i></button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"insertsImage(editorId)\"><i\r\n                        class=\"mdi mdi-image\"></i></button>\r\n                <input type=\"file\" id=\"imageInput\" style=\"display: none;\" (change)=\"handleImageUpload($event)\">\r\n\r\n            </div>\r\n            <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n                        <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addTable()\"><i\r\n                                class=\"mdi mdi-table\"></i></button>\r\n                        <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addRow()\"><i\r\n                                class=\"mdi mdi-table-row-plus-after\"></i></button>\r\n                        <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n                            (click)=\"deleteRow()\"><i class=\"mdi mdi-table-row-remove\"></i></button>\r\n                        <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n                            (click)=\"addColumn()\"><i class=\"mdi mdi-table-column-plus-after\"></i></button>\r\n                        <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n                            (click)=\"deleteColumn()\"><i class=\"mdi mdi-table-column-remove\"></i></button>\r\n                    </div>\r\n                    <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n                        <button *ngIf=\"selectedImage\" class=\"btn btn-white els-toolbar-button-2\" (click)=\"editImage()\"\r\n                            style=\"position: absolute;\">Edit Image</button>\r\n                    </div> -->\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"undo()\">\r\n                    <i class=\"mdi mdi-undo\"></i>\r\n                </button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"redo()\">\r\n                    <i class=\"mdi mdi-redo\"></i>\r\n                </button>\r\n\r\n            </div>\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n                <!-- <button *ngIf=\"selectedImage\" class=\"btn btn-white els-toolbar-button-2\" (click)=\"editImage()\"\r\n                                    style=\"position: absolute;\">Edit Image</button> -->\r\n                <button class=\"btn btn-white els-toolbar-button\" (click)=\"clearTextEditor()\">\r\n                    <i class=\"mdi mdi-close-circle\"></i>\r\n                </button>\r\n            </div>\r\n\r\n        </div>\r\n    </div>\r\n\r\n\r\n    <div contenteditable=\"true\" [id]=\"editorId\" class=\"els-border p-3\" #editor\r\n        style=\"position: relative !important; height: 130px; max-width: 100%; overflow: hidden; border-bottom-left-radius: 20px !important; border-bottom-right-radius: 20px !important; border-bottom-left-radius: 20px !important;\"\r\n        [style.background]=\"themeModeBgClr()\" [style.border-top]=\"themeModeBorderTop()\"\r\n        [ngStyle]=\"{'font-family': selectedFont, 'font-size': selectedFontSize + 'px'}\" [style]=\"style\"\r\n        contenteditable=\"true\" (input)=\"onModelChange($event)\" placeholder=\"Insert text here ...\"\r\n        (mouseup)=\"onTextSelect($event)\" [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\" (focus)=\"onFocus()\"\r\n        (blur)=\"onBlur()\" (click)=\"checkTableSelection($event)\">\r\n    </div>\r\n    <table *ngIf=\"parsedTable\">\r\n        <thead>\r\n            <tr>\r\n                <th *ngFor=\"let header of parsedTable.headers\">{{ header }}</th>\r\n            </tr>\r\n        </thead>\r\n        <tbody>\r\n            <tr *ngFor=\"let row of parsedTable.rows\">\r\n                <td *ngFor=\"let cell of row\">{{ cell }}</td>\r\n            </tr>\r\n        </tbody>\r\n    </table>\r\n</div>","import { NgModule } from '@angular/core';\nimport { ElHeaderAndFooterComponent } from './el-header-and-footer.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ColorPickerModule } from 'ngx-color-picker';\nimport { ColorSketchModule } from 'ngx-color/sketch';\nimport { NgxColorsModule } from 'ngx-colors';\n\n\n\n@NgModule({\n  declarations: [\n    ElHeaderAndFooterComponent\n  ],\n  imports: [\n        CommonModule,\n    NgxColorsModule,\n    FormsModule,\n    ReactiveFormsModule,\n    NgbDropdownModule,\n    ColorSketchModule,\n    ColorPickerModule\n  ],\n  exports: [\n    ElHeaderAndFooterComponent\n  ]\n})\nexport class ElHeaderAndFooterModule { }\n","/*\n * Public API Surface of el-header-and-footer\n */\n\nexport * from './lib/el-header-and-footer.service';\nexport * from './lib/el-header-and-footer.component';\nexport * from './lib/el-header-and-footer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
         | 
| 1 | 
            +
            {"version":3,"file":"el-header-and-footer.mjs","sources":["../../../projects/el-header-and-footer/src/lib/el-header-and-footer.service.ts","../../../projects/el-header-and-footer/src/lib/el-header-and-footer.component.ts","../../../projects/el-header-and-footer/src/lib/el-header-and-footer.component.html","../../../projects/el-header-and-footer/src/lib/el-header-and-footer.module.ts","../../../projects/el-header-and-footer/src/public-api.ts","../../../projects/el-header-and-footer/src/el-header-and-footer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ElHeaderAndFooterService {\n\n  constructor() { }\n}\n","import { AfterViewInit, Component, EventEmitter, forwardRef, Input, OnChanges, OnInit, Output, Renderer2, SimpleChanges, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SafeHtml, DomSanitizer } from '@angular/platform-browser';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n  selector: 'el-header-and-footer',\n  templateUrl: './el-header-and-footer.component.html',\n  styleUrls: ['./el-header-and-footer.component.scss'],\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => ElHeaderAndFooterComponent),\n    multi: true\n  }]\n})\nexport class ElHeaderAndFooterComponent implements  ControlValueAccessor, OnChanges, AfterViewInit {\n\n @ViewChild(NgbDropdown, { static: true }) dropdown!: NgbDropdown;\n\n  @Input() editorId: string = '';\n  @Input() editorText: string = '';\n  @Input() editorFrom: string = '';\n  @Input() clear: boolean = false;\n  @Input() editorAction: any;\n  @Input() style: any;\n  @Input() bgColor: any;\n  @Input() toolbarMode: 'fixed' | 'bubble' | 'none' = 'fixed';\n  @Output() editorTextChange = new EventEmitter<string>();\n  @Output() editorActionResponse = new EventEmitter<any>();\n  \n  @Input() value: string = '';\n    \n  @Output() editorTextClear = new EventEmitter<any>();\n\n  sanitizedContent!: SafeHtml;\n\n\n  showToolbar = false;\n  toolbarTop = 0;\n  toolbarLeft = 0;\n\n  fonts = ['Arial', 'Courier New', 'Georgia', 'Times New Roman', 'Verdana'];\n  fontSizes = [10, 12, 14, 16, 18, 20, 24, 28, 32, 36];\n  selectedFont = 'Arial';\n  selectedFontSize = 14;\n  isTableSelected = false;\n  tableAdded = false;\n  selectedTable: HTMLTableElement | null = null;\n  isPlaceholderVisible = true;\n  selectedCell: HTMLTableCellElement | null = null;\n  \n  isBoldActive: boolean = false;\n  isItalicActive: boolean = false;\n  isUnderlineActive: boolean = false;\n  isStrikethroughActive: boolean = false;\n  isSubscriptActive: boolean = false;\n  isSuperscriptActive: boolean = false;\n\n  selectedFormatBlock: string = 'normal'\n\n  undoStack: string[] = [];\n  redoStack: string[] = [];\n  history: string[] = [];\n  historyIndex = -1;\n\n  selectedImage: HTMLImageElement | null = null;\n  imageEditUrl: string = '';\n  imagePositionX = 0;\n  imagePositionY = 0;\n  imageResizeStartX = 0;\n  imageResizeStartY = 0;\n  imageResizeStartWidth = 0;\n  imageResizeStartHeight = 0;\n  imageResizeDirection: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | null = null;\n\n  // editorText1 = ``;\n  selectedTextColor: any;\n  onChange: any = () => {};\n  onTouched: any = () => {};\n  color: any = '#ddd';\n  colorFormControl!: FormControl;\n  backgroundColor: any;\n  selectedItemIndex: number | null = null;\n\n  parsedTable: { headers: string[], rows: string[][] } | null = null;\n\n  isFullScreen: boolean = false;\n  today: string = '';\n  CanvasColor: string = '#fff';\n\n  constructor(\n    private router: Router,\n    private route: ActivatedRoute,\n    private renderer: Renderer2,\n    private sanitizer: DomSanitizer\n  ) { }\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['bgColor']) {\n      const event = { color:{ hex : this.bgColor} }\n      this.setCanvasBackgroundColor(event, this.editorId)\n    }\n  }\n   ngAfterViewInit() {\n    this.initEditor();\n    this.checkPlaceholder();\n    this.setupHistory(); \n  }\n\n  ngOnInit(): void {\n    this.init_Func(this.editorText)\n    document.addEventListener('selectionchange', () => {\n      this.checkActiveStates();\n      this.checkFormatBlock(this.editorId);\n    });\n    this.addClickListenerToImages();\n    this.addClickListenerToElements();\n    // this.route.queryParams.subscribe(params => {\n    //   const data = JSON.parse(params['data']);\n    //   if (data.editedIMG) {\n    //     const imgUrl = sessionStorage.getItem('editImageFromTemp');\n    //     if (imgUrl) {\n    //       this.replaceImageSrc(imgUrl, data.index.index)\n    //     }\n    //     sessionStorage.removeItem('editImageFromTemp');\n    //   }\n    // })\n\n    \n  }\n\n  writeValue(value: any): void {\n    if (value !== undefined) {\n      this.editorText = value;\n      this.initEditor();\n      this.init_Func(this.editorText);\n    }\n  }\n\n  // private addClickListenerToImages() {\n  //   const editor = document.getElementById('editor');\n  //   if (editor) {\n  //     editor.addEventListener('click', (event) => {\n  //       const target = event.target as HTMLElement;\n  //       if (target.tagName === 'IMG') {\n  //         this.selectedImage = target as HTMLImageElement;\n  //         this.imageEditUrl = this.selectedImage.src;\n  //         // Position the edit button near the selected image\n  //       } else {\n  //         this.selectedImage = null;\n  //       }\n  //     });\n  //   }\n  // }\n  \n  private addClickListenerToImages() {\n  const editor = document.getElementById(this.editorId);\n  if (editor) {\n    editor.addEventListener('click', (event) => {\n      const target = event.target as HTMLElement;\n      if (target.tagName === 'IMG') {\n        this.selectedImage = target as HTMLImageElement;\n        this.imageEditUrl = this.selectedImage.src;\n\n        // Get the index of the selected image\n        const images = editor.getElementsByTagName('img');\n        for (let i = 0; i < images.length; i++) {\n          if (images[i] === this.selectedImage) {\n            this.selectedItemIndex = i;\n            break;\n          }\n        }\n\n        if (this.toolbarMode === 'bubble') {\n          this.onTextSelect();\n        }\n      } else {\n        this.selectedImage = null;\n        this.selectedItemIndex = null;\n      }\n    });\n  }\n  }\n  \n  private addClickListenerToElements() {\n  const editor = document.getElementById(this.editorId);\n  if (editor) {\n    editor.addEventListener('click', (event) => {\n      const target = event.target as HTMLElement;\n\n      // Handle images\n      if (target.tagName === 'IMG') {\n        this.selectedImage = target as HTMLImageElement;\n        this.imageEditUrl = this.selectedImage.src;\n\n        // Get the index of the selected image\n        const images = editor.getElementsByTagName('img');\n        for (let i = 0; i < images.length; i++) {\n          if (images[i] === this.selectedImage) {\n            this.selectedItemIndex = i;\n            break;\n          }\n        }\n      } else {\n        this.selectedImage = null;\n      }\n      if (target.tagName === 'TD' || target.tagName === 'TH') {\n        this.selectedTable = target.closest('table') as HTMLTableElement;\n\n        const cells = this.selectedTable.getElementsByTagName(target.tagName);\n        for (let i = 0; i < cells.length; i++) {\n          if (cells[i] === target) {\n            this.selectedItemIndex = i;\n            break;\n          }\n        }\n      } else {\n        this.selectedTable = null;\n      }\n\n      if (target.tagName === 'P' || target.tagName === 'SPAN' || target.tagName === 'DIV') {\n        const paragraphs = editor.getElementsByTagName(target.tagName);\n        for (let i = 0; i < paragraphs.length; i++) {\n          if (paragraphs[i] === target) {\n            this.selectedItemIndex = i;\n            break;\n          }\n        }\n      } else {\n      }\n    });\n  }\n  }\n\nreplaceImageSrc(newSrc: string, index: number) {\n  const editor = document.getElementById(this.editorId);\n  if (editor) {\n    editor.focus()\n    const images = editor.getElementsByTagName('IMG');\n\n    if (index >= 0 ) {\n      images[index].setAttribute('src', newSrc);\n    } else {\n      console.warn(`Index ${index} is out of bounds. Total images: ${images.length}`);\n    }\n  } else {\n    console.error('Editor element not found');\n  }\n}\n\n\n\n  private initEditor() {\n    // Initialize editor content and listeners\n    const editor = document.getElementById(this.editorId);\n\n    if (editor) {\n      editor.innerHTML = this.editorText;\n      editor.addEventListener('input', () => {\n        this.onModelChange(editor.innerHTML);\n      });\n    }\n    this.checkPlaceholder();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    // Handle the disabled state if necessary\n  }\n\n  onModelChange(value: any): void {\n    if (value) {\n      const VALUE = value\n      // this.editorText = this.mainCanvas(VALUE);\n      // this.onChange(this.mainCanvas(VALUE));\n      // this.editorTextChange.emit(this.mainCanvas(VALUE));\n          this.editorText = `<div style=\"padding: 10px 60px;\">${this.mainCanvas(VALUE)}</div>`;\n      this.onChange(`<div style=\"padding: 10px 60px;\">${this.mainCanvas(VALUE)}</div>`);\n      this.editorTextChange.emit(`<div style=\"padding: 10px 60px;\">${this.mainCanvas(VALUE)}</div>`);\n      \n    } else {\n      this.selectedImage = null;\n    }\n  }\n\n  applyImageStyles(content: string): string {\n    const div = document.createElement('div');\n    div.innerHTML = content;\n    const images = div.querySelectorAll('img');\n    images.forEach(img => {\n      if (img.style.maxWidth >= '700px') {\n        img.style.maxWidth = '700px';\n        // img.width = 300;\n        img.style.height = 'auto';\n      } else {\n        img.style.maxWidth = '100%';\n        img.style.height = 'auto';\n      }\n    });\n    return div.innerHTML;\n  }\n\n  init_Func(html: any) {\n    if (html) {\n      let editor = document.getElementById(this.editorId);\n      if (editor) { \n        editor.focus()\n         this.setEditorContent(html);\n\n      // Set up a MutationObserver to handle content changes\n      this.setupMutationObserver(editor);\n\n      // Move the caret to the end after initial content setup\n      this.moveCaretToEnd(editor);\n        // editor.focus()\n        // editor.innerHTML = html;\n        // this.sanitizedContent = this.sanitizer.bypassSecurityTrustHtml(this.applyImageStyles(html));\n        // editor.innerHTML = this.sanitizedContent as string;\n        // editor.addEventListener('input', () => {\n        //   if (editor) {\n        //     editor.focus()\n        //     this.onModelChange(editor.innerHTML);\n        //   }\n        // });\n      }\n    } else {\n      this.selectedImage = null;\n    }\n  }\n\n  private setEditorContent(html: string) {\n  let editor = document.getElementById(this.editorId);\n  if (editor) {\n    // Sanitize and apply styles to the HTML\n    this.sanitizedContent = this.sanitizer.bypassSecurityTrustHtml(this.applyImageStyles(html));\n    editor.innerHTML = this.sanitizedContent as string;\n  }\n}\n\nprivate setupMutationObserver(editor: HTMLElement) {\n  const observer = new MutationObserver(() => {\n    // Move the caret to the end after content changes\n    this.moveCaretToEnd(editor);\n    // Update model with the current content\n    this.onModelChange(editor.innerHTML);\n  });\n\n  observer.observe(editor, { childList: true, subtree: true, characterData: true });\n}\n\nprivate moveCaretToEnd(editor: HTMLElement) {\n  const selection = window.getSelection();\n  const range = document.createRange();\n  \n  if (editor.lastChild) {\n    range.selectNodeContents(editor);\n    range.collapse(false); // Collapse to the end\n    selection?.removeAllRanges();\n    selection?.addRange(range);\n  }\n}\n  // format(command: string, value?: any) {\n  //   document.execCommand(command, false, value ?? '');\n  //   //  if (command === 'underline') {\n  //   //     // Toggle underline\n  //   //     const isUnderlined = document.queryCommandState('underline');\n  //   //     document.execCommand('underline', false, isUnderlined ? 'false' : 'true');\n  //   // } else {\n  //   //     document.execCommand(command, false, '');\n  //   // }\n  // }\n\n  onFormatChange(data: any) {\n    const value = data;\n    this.selectedFormatBlock = value;\n  if (value) {\n    this.format('formatBlock', this.editorId, value);\n  }\n}\n\n\n  format(command: string, editorId: string, value?: any) {\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      editor.focus();\n      if (command === 'subscript') {\n        this.isSubscriptActive = !this.isSubscriptActive;\n        document.execCommand('subscript', false, '');\n      } else if (command === 'superscript') {\n        this.isSuperscriptActive = !this.isSuperscriptActive;\n        document.execCommand('superscript', false, '');;\n      } else {\n        document.execCommand(command, false, value ?? '');\n        if (value) {\n          const tag = value.toLowerCase().replace(/[<>]/g, '')\n          const toolbar = document.getElementById(editorId + 'toolbar');\n          if (toolbar) {\n            this.selectedFormatBlock = this.formatBlockDecode(tag);\n          }\n        }\n      }\n    }\n     this.checkActiveStates();\n     this.checkFormatBlock(editorId);\n  }\n\n  checkActiveStates() {\n    this.isBoldActive = document.queryCommandState('bold');\n    this.isItalicActive = document.queryCommandState('italic');\n    this.isUnderlineActive = document.queryCommandState('underline');\n    this.isStrikethroughActive = document.queryCommandState('strikethrough');\n    this.isSubscriptActive = document.queryCommandState('subscript');\n    this.isSuperscriptActive = document.queryCommandState('superscript');\n  }\n\n  checkFormatBlock(editorId: string) {\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      const formatBlock = document.queryCommandValue('formatBlock');\n       const toolbar = document.getElementById(editorId + 'toolbar');\n      if (toolbar) {\n        this.selectedFormatBlock = this.formatBlockDecode(formatBlock);\n      }\n      // You can further handle the formatBlock value as needed\n    }\n  }\n\n  formatBlockDecode(data: string): any {\n    switch (data) {\n      case 'h1':\n        return 'heading 1';\n        break;\n      case 'h2':\n        return 'heading 2';\n        break;\n      case 'h3':\n        return 'heading 3';\n        break;\n      case 'h4':\n        return 'heading 4';\n        break;\n      case 'h5':\n        return 'heading 5';\n        break;\n      case 'h6':\n        return 'heading 6';\n        break;\n      case 'p':\n        return 'normal';\n        break;\n      default:\n        return 'normal';\n        break;\n    }\n  }\n\n  changeFont(event: any) {\n    this.selectedFont = event\n    document.execCommand('fontName', false, this.selectedFont);\n  }\n\n  insertCodeBlock() {\n    const code = `\n      <pre style=\"font-size: 12px;\n                  color: white;\n                  background-color: black;\n                  overflow-x: auto;\n                  margin-bottom: 5px;\n                  margin-top: 5px;\n                  padding: 5px 10px;\">\n        <code style=\"display: block;\n                     white-space: pre-wrap;\n                     height: auto;\n                     font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;\n                     font-size: 14px;\" class=\"language-html\">Insert code here...</code>\n      </pre>\n    `;\n    document.execCommand('insertHTML', false, code);\n  }\n\n  // changeFontSize(event: any) {\n  //   document.execCommand('fontSize', false, '7');\n  //   let editor = document.getElementById('editor');\n  //   if (editor) {\n  //     let fontElements = editor.getElementsByTagName('font');\n  //     for (let i = 0; i < fontElements.length; i++) {\n  //       if (fontElements[i].size == \"7\") {\n  //         fontElements[i].removeAttribute(\"size\");\n  //         fontElements[i].style.fontSize = this.selectedFontSize + 'px';\n  //       }\n  //     }\n  //   }\n  // }\n  changeFontSize(event: any) {\n    const selectedText = window.getSelection();\n    \n    if (selectedText && selectedText.rangeCount > 0) {\n        const range = selectedText.getRangeAt(0);\n        const span = document.createElement('span');\n        span.style.fontSize = this.selectedFontSize + 'px';\n        range.surroundContents(span);\n    }\n  }\n\n  addLink() {\n    let url = prompt(\"Enter the link here: \", \"http://\");\n    if (url) {\n      document.execCommand(\"createLink\", false, url);\n    }\n  }\n\n  insertsImage(editorId: string) {\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      editor.focus();\n      let imageInput = document.getElementById('imageInput') as HTMLInputElement;\n      if (imageInput) {\n        imageInput.click();\n      }\n    }\n  }\n\n   handleImageUpload(event: any) {\n  const file = event.target.files[0];\n  if (file) {\n    const reader = new FileReader();\n    reader.onload = (e: any) => {\n      const img = new Image();\n      img.src = e.target.result;\n      img.onload = () => {\n        // Create the HTML string with the exact width and height\n        const imgHTML = `<img src=\"${img.src}\" width=\"${img.width}\" height=\"${img.height}\">`;\n        // Insert the image into the editor\n        document.execCommand('insertHTML', false, imgHTML);\n      };\n    };\n    reader.readAsDataURL(file);\n  }\n}\n\n\n  addTable(editorId: string) {\n    const tableWidth = 825; // Table width in pixels\n    const cols = 3; // Number of columns\n    const cellMinWidth = tableWidth / cols; // Calculate minimum width for each cell\n\n    let table = `<br /><table style=\"border-collapse: collapse; width: ${tableWidth}px; border: 1px solid black;\">`;\n    for (let i = 0; i < 3; i++) { // Number of rows\n      table += '<tr>';\n      for (let j = 0; j < cols; j++) {\n        table += `<td style=\"border: 1px solid #000; word-wrap: break-word; word-break: break-all; white-space: normal; min-width: ${cellMinWidth}px;\"> </td>`;\n      }\n      table += '</tr>';\n    }\n      table += '</table><br/ >';\n      // document.execCommand('insertHTML', false, table);\n      const editor = document.getElementById(editorId);\n    if (editor) {\n      editor.focus();\n      document.execCommand('insertHTML', false, table);\n    }\n    this.tableAdded = true;\n    this.checkTableSelection();\n  }\n\n\n\n  checkTableSelection(event?: MouseEvent) {\n    let target = event?.target as HTMLElement;\n    if (target && (target.tagName === 'TD' || target.tagName === 'TH')) {\n      this.isTableSelected = true;\n      this.selectedTable = target.closest('table') as HTMLTableElement;\n    } else {\n      this.isTableSelected = false;\n      this.selectedTable = null;\n    }\n    \n    this.checkPlaceholder();\n  }\n\n  checkPlaceholder() {\n    // let editor = document.getElementById('editor');\n    // if (editor) {\n    //   this.isPlaceholderVisible = editor.innerHTML === '' || editor.innerHTML === '<br>';\n    //   if (this.isPlaceholderVisible) {\n    //     // editor.innerHTML = '<span class=\"placeholder\" style=\"background: transparent; color: #000000\">Insert text here ...</span>';\n    //   } else {\n    //     let placeholder = editor.querySelector('.placeholder');\n    //     if (placeholder) {\n    //       editor.removeChild(placeholder);\n    //     }\n    //   }\n    // }\n  }\n\n  onFocus() {\n    // let editor = document.getElementById('editor');\n    // if (editor && this.isPlaceholderVisible) {\n    //   editor.innerHTML = '';\n    //   this.isPlaceholderVisible = false;\n    // }\n  }\n\n  // colorChange(newColor: string) {\n  //   this.color = newColor;\n  // }\n\n  onBlur() {\n    this.checkPlaceholder();\n  }\n\n  addRow() {\n    if (this.selectedTable) {\n      let row = this.selectedTable.insertRow();\n      for (let i = 0; i < this.selectedTable.rows[0].cells.length; i++) {\n        let cell = row.insertCell(i);\n        cell.innerHTML = ' ';\n        cell.style.border = '1px solid black';\n      }\n    }\n  }\n\n  // deleteRow() {\n  //   if (this.selectedTable) {\n  //     this.selectedTable.deleteRow(-1);\n  //   }\n  // }\n\n//   deleteRow() {\n//   if (this.selectedTable) {\n//     let rowIndex = this.selectedTable.rows.length - 1; \n//     if (window.getSelection) {\n//       let selection = window.getSelection();\n//       if (selection) {\n//         let row = selection.anchorNode?.parentElement?.closest('tr');\n//         if (row) {\n//           rowIndex = row.rowIndex;\n//         }\n//       }\n//     }\n//     this.selectedTable.deleteRow(rowIndex);\n//   }\n// }\n\n  deleteRow() {\n  const selection = window.getSelection();\n    if (selection) {\n    if (!selection.rangeCount) return;\n\n    const range = selection.getRangeAt(0);\n    const selectedNode = range.startContainer;\n    const row = selectedNode.parentElement?.closest('tr');\n\n    if (row) {\n      const table = row.closest('table');\n      if (table) {\n        table.deleteRow(row.rowIndex);\n      }\n    }\n  }\n}\n\n\n  // addColumn() {\n  //   if (this.selectedTable) {\n  //     for (let i = 0; i < this.selectedTable.rows.length; i++) {\n  //       let cell = this.selectedTable.rows[i].insertCell(-1);\n  //       cell.innerHTML = ' ';\n  //       cell.style.border = '1px solid black';\n  //     }\n  //   }\n  // }\n\n  addColumn() {\n  if (this.selectedTable) {\n    const columnCount = this.selectedTable.rows[0].cells.length + 1; // New column count\n    const tableWidth = this.selectedTable.offsetWidth;\n    const minWidth = tableWidth / columnCount;\n\n    for (let i = 0; i < this.selectedTable.rows.length; i++) {\n      let cell = this.selectedTable.rows[i].insertCell(-1);\n      cell.innerHTML = ' ';\n      cell.style.border = '1px solid black';\n      cell.style.minWidth = `${minWidth}px`;\n      cell.style.wordWrap = 'break-word';\n      cell.style.wordBreak = 'break-all';\n      cell.style.whiteSpace = 'normal';\n    }\n\n    // Update existing cells' minWidth\n    for (let i = 0; i < this.selectedTable.rows.length; i++) {\n      for (let j = 0; j < this.selectedTable.rows[i].cells.length; j++) {\n        this.selectedTable.rows[i].cells[j].style.minWidth = `${minWidth}px`;\n      }\n    }\n  }\n}\n\n\n  deleteColumn() {\n  if (this.selectedTable) {\n    if (window.getSelection) {\n      let selection = window.getSelection();\n      if (selection) {\n        let cell = selection.anchorNode?.parentElement?.closest('td, th') as HTMLTableCellElement;\n        if (cell) {\n          let cellIndex = cell.cellIndex;\n          for (let i = 0; i < this.selectedTable.rows.length; i++) {\n            this.selectedTable.rows[i].deleteCell(cellIndex);\n          }\n        }\n      }\n    }\n  }\n}\n\n  // deleteColumn() {\n  //   if (this.selectedTable) {\n  //     for (let i = 0; i < this.selectedTable.rows.length; i++) {\n  //       this.selectedTable.rows[i].deleteCell(-1);\n  //     }\n  //   }\n  // }\n\n  adjustTableWidth(event: any) {\n    if (this.selectedTable) {\n      this.selectedTable.style.width = event.target.value + 'px';\n    }\n  }\n\n  adjustCellWidth(event: any) {\n    if (this.selectedTable) {\n      for (let i = 0; i < this.selectedTable.rows.length; i++) {\n        for (let j = 0; j < this.selectedTable.rows[i].cells.length; j++) {\n          this.selectedTable.rows[i].cells[j].style.width = event.target.value + 'px';\n        }\n      }\n    }\n  }\n\n  adjustCellHeight(event: any) {\n    if (this.selectedTable) {\n      for (let i = 0; i < this.selectedTable.rows.length; i++) {\n        for (let j = 0; j < this.selectedTable.rows[i].cells.length; j++) {\n          this.selectedTable.rows[i].cells[j].style.height = event.target.value + 'px';\n        }\n      }\n    }\n  }\n\n  private setCaretToEnd(element: HTMLElement) {\n    const range = document.createRange();\n    const sel = window.getSelection();\n      if (sel) {\n      range.selectNodeContents(element);\n    range.collapse(false);\n    sel.removeAllRanges();\n    sel.addRange(range);\n    }\n  }\n\n  openColorPicker(inputId: string) {\n    const inputElement = document.getElementById(inputId);\n    if (inputElement) {\n      inputElement.click();\n    }\n  }\n\n  setTextColor(event: any, editorId: any) {\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      editor.focus();\n      const color = event.color.hex;\n      this.selectedTextColor = color;\n      document.execCommand('foreColor', true, color);\n      if (this.dropdown) {\n        this.dropdown.close();\n      }\n    }\n  }\n\n  setBackgroundColor(event: any, editorId: string) {\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      editor.focus();\n      const color = event.color.hex;\n      this.backgroundColor = color;\n      document.execCommand('hiliteColor', true, color);\n      if (this.dropdown) {\n        this.dropdown.close();\n      }\n    }\n  }\n\n  // colorChanged(event: any) {\n  //   this.color = event.color.hex; \n  // }\n\n  public logEvent(event: any, trigger: any) {\n    const color = event;\n    this.setTextColor(color, this.editorId)\n    this.selectedTextColor = event\n    document.execCommand('foreColor', false, event);\n    // this.logs.unshift([this.logs.length + 1, trigger, event]);\n  }\n\n  editImage() {\n    let data \n    switch (this.editorFrom) {\n      case 'section-content':\n        data = { editIMG: true, from: 'htmlEditor', index: this.selectedItemIndex };\n        this.navigateToIMGEditor(data);\n        sessionStorage.setItem('editImageFromTemp', JSON.stringify(this.imageEditUrl));\n        sessionStorage.setItem('textEditor', this.editorText);\n        break;\n      case 'template':\n        data = { editIMG: true, from: 'templateEditor', index: this.selectedItemIndex };\n        this.navigateToIMGEditor(data);\n        // sessionStorage.setItem('editImageFromTemp2', JSON.stringify(this.imageEditUrl));\n        sessionStorage.setItem('templateEditor', this.editorText);\n        break;\n      default:\n        sessionStorage.removeItem('editImageFromTemp');\n        // sessionStorage.removeItem('editImageFromTemp2');\n        sessionStorage.removeItem('templateEditor');\n        sessionStorage.removeItem('textEditor');\n        break;\n    }\n    // if (this.editorFrom === 'section-content') {\n    //   const data = {editIMG: true, from: 'htmlEditor', index: this.selectedItemIndex}\n    //   this.navigateToIMGEditor(data)\n    //   sessionStorage.setItem('editImageFromTemp', JSON.stringify(this.imageEditUrl))\n    //   sessionStorage.setItem('textEditor', this.editorText)\n    // } \n    \n  }\n\n  navigateToIMGEditor(data: any) {\n    this.router.navigate(['/admin/image-editor'], { queryParams: {data : JSON.stringify(data)} })\n  }\n\n  //  onTextSelect(event: MouseEvent): void {\n  //   if (this.toolbarMode === 'bubble') {\n  //     const selection = window.getSelection();\n  //     if (selection && selection.rangeCount > 0) {\n  //       const range = selection.getRangeAt(0);\n  //       if (!range.collapsed) {\n  //         const rect = range.getBoundingClientRect();\n  //         this.toolbarTop = rect.bottom + window.scrollY + 10;\n  //         this.toolbarLeft = rect.left + window.scrollX + (rect.width / 2) - 50;\n  //         this.showToolbar = true;\n  //       } else {\n  //         this.showToolbar = false;\n  //       }\n  //     }\n  //   }\n  // }\n\n onTextSelect(event?: MouseEvent): void {\n  if (this.toolbarMode === 'bubble') {\n    const selection = window.getSelection();\n    if (selection && selection.rangeCount > 0) {\n      const range = selection.getRangeAt(0);\n      if (!range.collapsed) {\n        const rect = range.getBoundingClientRect();\n        const scrollY =  document.documentElement.scrollTop;\n        const scrollX =  document.documentElement.scrollLeft;\n        this.toolbarTop = rect.top + scrollY - 75;\n        this.toolbarLeft = rect.left + scrollX + (rect.width / 2) - 325;\n        this.showToolbar = true;\n      } else {\n        this.showToolbar = false;\n      }\n    } else {\n      this.showToolbar = false;\n    }\n  }\n}\n\n\nonPaste(event: ClipboardEvent) {\n    event.preventDefault();\n    const clipboardData = event.clipboardData;\n    if (clipboardData) {\n      const pastedText = clipboardData.getData('text/plain');\n      if (this.isTableData(pastedText)) {\n        const html = this.convertTextToTable(pastedText);\n        this.insertHtmlAtCaret(html);\n      } else {\n        this.insertHtmlAtCaret(pastedText);\n      }\n    }\n  }\n\n  isTableData(text: string): boolean {\n    const rows = text.split('\\n');\n    return rows.length > 1 && rows[0].split('\\t').length > 1;\n  }\n\n  convertTextToTable(text: string): string {\n    const rows = text.split('\\n').filter(row => row.trim() !== '');\n    const tableRows = rows.map(row => {\n      const cells = row.split('\\t').map(cell => `<td class=\"px-1 py-1  style=\"border: 1px solid #000\">${cell}</td>`).join('');\n      return `<tr >${cells}</tr>`;\n    }).join('');\n    return `<table>${tableRows}</table>`;\n  }\n\n  insertHtmlAtCaret(html: string) {\n    const range = window.getSelection()?.getRangeAt(0);\n    if (range) {\n      range.deleteContents();\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = html;\n      const frag = document.createDocumentFragment();\n      let node;\n      while ((node = tempDiv.firstChild)) {\n        frag.appendChild(node);\n      }\n      range.insertNode(frag);\n      range.collapse(false);\n    }\n  }\n\n \n  public openFullscreen() {\n    var elem: any = document.getElementById(\"textEditor\");\n    this.isFullScreen = true;\n    if (elem.requestFullscreen) {\n      elem.requestFullscreen();\n    } else if (elem.mozRequestFullScreen) {\n      elem.mozRequestFullScreen();\n    } else if (elem.webkitRequestFullscreen) {\n      elem.webkitRequestFullscreen();\n    } else if (elem.msRequestFullscreen) {\n      elem.msRequestFullscreen();\n    }\n    this.style = {\n      'min-height': '90vh',\n      'max-height': '90vh',\n    }\n  }\n\n  public closeFullscreen() {\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n      this.isFullScreen = false;\n      this.style = {\n        'min-height': '400px',\n        'max-height': '400px',\n      }\n    }\n  }\n\n  openCanvasColorPicker(inputId: string) {\n    const inputElement = document.getElementById(inputId);\n    if (inputElement) {\n      inputElement.click();\n    }\n  }\n\n  setCanvasBackgroundColor(event: any, editorId: string): void {\n    this.CanvasColor = event.color.hex;\n    const editor = document.getElementById(editorId);\n    if (editor) {\n      let color = '';\n      editor.style.backgroundColor = this.themeModeBgClr()\n      color = event.color.hex || event\n      editor.style.backgroundColor = color;\n      this.mainCanvas()\n      // this.init_Func(`<div style=\"background-color: ${color};\">${this.editorText}</div>`);\n      if (this.dropdown) {\n        this.dropdown.close();\n      }\n    }\n  }\n\n  getToday() {\n    const currentDate = new Date();\n    const day = currentDate.getDate() ;\n    const month = currentDate.getMonth() + 1; \n    const year = currentDate.getFullYear();\n    const formattedDate = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;\n    this.today = formattedDate;\n    // const label = `{(${this.today})}`;\n    const label = `{(date)}`;\n    const htmlContent = ` ${label} `;\n    const editor = document.getElementById(this.editorId);\n    if (editor) {\n      this.editorText += `<div> ${htmlContent} </div>`;\n      this.sanitizedContent = this.editorText;\n    } else {\n      this.editorText += `<div> ${htmlContent} </div>`;\n      this.sanitizedContent = this.editorText;\n    }\n  }\n\n  insertPageNumber() {\n    const pageNumber = '{(page)}';\n    const editor = document.getElementById(this.editorId);\n    if (editor) {\n      this.editorText += `<div> ${pageNumber} </div>`;\n      this.sanitizedContent = this.editorText;\n    } else {\n      this.editorText += `<div> ${pageNumber} </div>`;\n      this.sanitizedContent = this.editorText;\n    }\n  }\n\n  clearTextEditor() {\n    const editor = document.getElementById(this.editorId);\n    if (editor) {\n      this.editorTextClear.emit()\n      let data: any;\n      // data.color.hex = '#ffffff'\n      data = {\n        color: {\n          hex: ''\n        }\n      }\n      document.execCommand('hiliteColor', true, this.themeModeBgClr())\n      editor.innerHTML = ''\n      this.setCanvasBackgroundColor(data, this.editorId)\n    }\n  }\n\n  \n  setupHistory() {\n    this.saveState();\n     const editor = document.getElementById(this.editorId);\n  \n    if (editor) {\n      editor.addEventListener('input', () => this.onInput());\n    }\n  }\n\n  onInput() {\n    this.saveState();\n  }\n\n  saveState() {\n    const editor = document.getElementById(this.editorId);\n  \n    if (editor) {\n      const editorContent = editor.innerHTML;\n      if (this.historyIndex === this.history.length - 1) {\n        this.history.push(editorContent);\n        this.redoStack = [];\n      } else {\n        this.history = this.history.slice(0, this.historyIndex + 1);\n        this.history.push(editorContent);\n        this.redoStack = [];\n      }\n      this.historyIndex++;\n    }\n  }\n  undo() {\n    if (this.historyIndex > 0) {\n      this.redoStack.push(this.history[this.historyIndex]);\n      this.historyIndex--;\n      const editor = document.getElementById(this.editorId);\n  \n      if (editor) {\n        this.sanitizedContent = this.history[this.historyIndex];\n      }\n    }\n  }\n\n  redo() {\n    if (this.redoStack.length > 0) {\n      const redoContent = this.redoStack.pop();\n      this.history.push(redoContent!);\n      this.historyIndex++;\n      const editor = document.getElementById(this.editorId);\n  \n      if (editor) {\n        this.sanitizedContent = redoContent!;\n      }\n    }\n  }\n\n  mainCanvas(data?: any) {\n    let BG = ''\n    const editor = document.getElementById(this.editorId);\n    if (editor) {\n      editor.focus()\n      if (editor.style.backgroundColor === 'rgb(53, 51, 67)') {\n        BG = 'rgb(255, 255, 255)'\n      } else {\n        BG = editor.style.backgroundColor;\n      } \n      return `${data}`\n     }\n    else {\n      return `<div>${data}</div>`\n     }\n    \n  }\n\n   themeMode() {\n    const clrMode = document.body.getAttribute('data-layout-color')\n    if (clrMode == 'dark') {\n      return '2px solid #414141 !important'\n    } else {\n      return '2px solid #D0D0D0 !important'\n    }\n  }\n\n  themeModeClr() {\n    const clrMode = document.body.getAttribute('data-layout-color')\n    if (clrMode == 'dark') {\n      return '#fff !important'\n    } else {\n      return '#000 !important'\n    }\n  }\n\n  themeModeBgClr() {\n    const clrMode = document.body.getAttribute('data-layout-color')\n    if (clrMode == 'dark') {\n      return '#282828 !important'\n    } else {\n      return '#F3F3F3 !important'\n    }\n  }\n\n  themeModeClrVerticalLine() {\n    const clrMode = document.body.getAttribute('data-layout-color')\n    if (clrMode == 'dark') {\n      return '2px solid #FFFFFF !important'\n    } else {\n      return '2px solid #D0D0D0 !important'\n    }\n  }\n\n\n  themeModeBorderTop() {\n    const clrMode = document.body.getAttribute('data-layout-color')\n    if (clrMode == 'dark') {\n      return '2px solid #000 !important'\n    } else {\n      return '2px solid #fff !important'\n    }\n  }\n\n}\n","<div class=\"container els-text-editor px-0\" style=\"border-radius: 20px !important;\">\r\n    <div class=\"btn-toolbar els-btn-toolbar p-2 py-2 mb-0\" role=\"toolbar\" [id]=\"editorId+'toolbar'\"\r\n        [style.background]=\"themeModeBgClr()\" aria-label=\"Toolbar with button groups\" style=\"border-top-left-radius: 20px !important; border-top-right-radius: 20px !important;\">\r\n        <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Header Options\">\r\n            <!-- <div class=\"dropdown\">\r\n                <select class=\"els-form-select \" style=\" font-weight: 700 !important; color: #fff; width: 150px; border: 2px solid #7D6D6D !important;\" (change)=\"onFormatChange($event)\">\r\n                    <option [value]=\"'<h1>'\">Heading 1</option>v\r\n                    <option [value]=\"'<h2>'\">Heading 2</option>\r\n                    <option [value]=\"'<h3>'\">Heading 3</option>\r\n                    <option [value]=\"'<h4>'\">Heading 4</option>\r\n                    <option [value]=\"'<h5>'\">Heading 5</option>\r\n                    <option [value]=\"'<h6>'\">Heading 6</option>\r\n                    <option selected [value]=\"'<p>'\">Normal</option>\r\n                </select>\r\n            </div> -->\r\n            <div ngbDropdown class=\"dropdown\">\r\n                <button\r\n                    class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n                    id=\"headerDropdown\" [style.border]=\"themeMode()\" [style.color]=\"themeModeClr()\" ngbDropdownToggle>\r\n                    <span>{{selectedFormatBlock | titlecase}}</span> <i class=\"mdi mdi-chevron-down \"></i>\r\n                </button>\r\n                <div ngbDropdownMenu aria-labelledby=\"headerDropdown\" class=\"els-text-format\"\r\n                    [style.border]=\"themeMode()\">\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h1>')\">\r\n                        <h1>Heading 1</h1>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h2>')\">\r\n                        <h2>Heading 2</h2>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h3>')\">\r\n                        <h3>Heading 3</h3>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h4>')\">\r\n                        <h4>Heading 4</h4>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h5>')\">\r\n                        <h5>Heading 5</h5>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<h6>')\">\r\n                        <h6>Heading 6</h6>\r\n                    </button>\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n                        (click)=\"format('formatBlock', editorId, '<p>')\">\r\n                        <p>Normal</p>\r\n                    </button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <!-- <div ngbDropdown class=\"dropdown\">\r\n            <button class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n                id=\"headerDropdown\" style=\"width: 100px\" [style.border]=\"themeMode()\" [style.color]=\"themeModeClr()\"\r\n                ngbDropdownToggle>\r\n                <span style=\"width: 85px; font-weight: 700 !important;\" class=\"text-truncate\">{{selectedFont |\r\n                    titlecase}}</span>\r\n                <i class=\"mdi mdi-chevron-down \"></i>\r\n            </button>\r\n            <div ngbDropdownMenu aria-labelledby=\"headerDropdown\" class=\"els-text-format\" [style.border]=\"themeMode()\">\r\n                <button class=\"dropdown-item pb-0\" type=\"button\" *ngFor=\"let font of fonts\" (click)=\"changeFont(font)\"\r\n                    [style.color]=\"themeModeClr()\">\r\n                    <span>{{ font }}</span>\r\n                </button>\r\n            </div>\r\n        </div> -->\r\n        <div class=\"btn-group els-button-group\" role=\"group\" aria-label=\"Font Options\">\r\n            <!-- <select class=\"els-form-select \" style=\" font-weight: 700 !important; color: #fff;border: 2px solid #7D6D6D !important;\" \r\n                        [(ngModel)]=\"selectedFont\" (change)=\"changeFont($event)\">\r\n                        <option class=\"els-form-option\" *ngFor=\"let font of fonts\" [value]=\"font\">{{ font }}</option>\r\n                    </select> -->\r\n            <div ngbDropdown class=\"dropdown\">\r\n                <button class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n                    id=\"headerDropdown\" style=\"width: 100px\" [style.border]=\"themeMode()\" [style.color]=\"themeModeClr()\"\r\n                    ngbDropdownToggle>\r\n                    <span style=\"width: 85px; font-weight: 700 !important;\" class=\"text-truncate\">{{selectedFont |\r\n                        titlecase}}</span>\r\n                    <i class=\"mdi mdi-chevron-down \"></i>\r\n                </button>\r\n                <div ngbDropdownMenu aria-labelledby=\"headerDropdown\" class=\"els-text-format\" [style.border]=\"themeMode()\">\r\n                    <button class=\"dropdown-item pb-0\" type=\"button\" *ngFor=\"let font of fonts\" (click)=\"changeFont(font)\"\r\n                        [style.color]=\"themeModeClr()\">\r\n                        <span>{{ font }}</span>\r\n                    </button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"py-0\" style=\"height: fit-content;\" [style.color]=\"themeModeClr()\">\r\n            <div class=\"btn-group els-button-group mr-2 \" role=\"group\" aria-label=\"Text Formatting\">\r\n                <button type=\"button\" class=\"btn btn-sm els-toolbar-button\" [class.active]=\"isBoldActive\"\r\n                    (click)=\"format('bold', editorId)\">\r\n                    <i class=\"mdi mdi-format-bold\"></i>\r\n                </button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isItalicActive\"\r\n                    (click)=\"format('italic', editorId)\">\r\n                    <i class=\"mdi mdi-format-italic\"></i>\r\n                </button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isUnderlineActive\"\r\n                    (click)=\"format('underline', editorId)\">\r\n                    <i class=\"mdi mdi-format-underline\"></i>\r\n                </button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isStrikethroughActive\"\r\n                    (click)=\"format('strikethrough', editorId)\">\r\n                    <i class=\"mdi mdi-format-strikethrough-variant\"></i>\r\n                </button>\r\n                <div class=\"btn-group\" role=\"group\" aria-label=\"Text Color\">\r\n                    <!-- <input type=\"color\" id=\"textColorPicker\"\r\n                                style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n                                (change)=\"setTextColor($event)\">\r\n                            <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"position: relative;\"\r\n                                (click)=\"openColorPicker('textColorPicker')\">\r\n                                <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"selectedTextColor\"></i>\r\n                            </button> -->\r\n                    <div ngbDropdown class=\"ql-align\">\r\n                        <button type=\"button\"\r\n                            class=\"btn btn-outline-primary els-toolbar-button arrow-none text-secondary border-none p-0\"\r\n                            id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n                            <i class=\"mdi mdi-format-color-text icon-with-underline\"\r\n                                [style.color]=\"selectedTextColor\"></i>\r\n                        </button>\r\n                        <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 200px;\">\r\n                            <color-sketch color=\"#fff\" [presetColors]=\"[]\"\r\n                                (onChangeComplete)=\"setTextColor($event, editorId)\"></color-sketch>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"btn-group\" role=\"group\" aria-label=\"Background Color\" style=\"position: relative;\">\r\n                    <!-- <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [style.color]=\"backgroundColor\"\r\n                                (click)=\"openColorPicker('bgColorPicker')\">\r\n                                <i class=\"mdi mdi-alpha-a-box\"></i>\r\n                            </button>\r\n                            <input type=\"color\" id=\"bgColorPicker\"\r\n                                style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n                                (change)=\"setBackgroundColor($event)\"> -->\r\n                    <div ngbDropdown class=\"ql-align\">\r\n                        <button type=\"button\"\r\n                            class=\"btn btn-outline-primary els-toolbar-button arrow-none text-secondary border-none p-0\"\r\n                            id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n                            <i class=\"mdi mdi-alpha-a-box\" [style.color]=\"backgroundColor\"></i>\r\n                        </button>\r\n                        <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 200px;\">\r\n                            <color-sketch color=\"#fff\" [presetColors]=\"[]\"\r\n                                (onChangeComplete)=\"setBackgroundColor($event, editorId)\"></color-sketch>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"vertical-line ms-2 border\" [style.border-left]=\"themeModeClrVerticalLine()\"></div>\r\n            </div>\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n                    (click)=\"format('insertOrderedList', editorId)\"><i\r\n                        class=\"mdi mdi-format-list-numbered\"></i></button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n                    (click)=\"format('insertUnorderedList', editorId)\"><i\r\n                        class=\"mdi mdi-format-list-bulleted\"></i></button>\r\n                <div ngbDropdown class=\"ql-align\">\r\n                    <button type=\"button\" class=\"btn btn-white els-toolbar-button arrow-none text-secondary\"\r\n                        id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n                        <i class=\"mdi mdi-format-align-left \"></i>\r\n                    </button>\r\n                    <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 3px;\">\r\n                        <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"color: #7A7982;\"\r\n                            (click)=\"format('justifyLeft', editorId)\"><i class=\"mdi mdi-format-align-left\"></i></button>\r\n                        <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"color: #7A7982;\"\r\n                            (click)=\"format('justifyCenter', editorId)\"><i\r\n                                class=\"mdi mdi-format-align-center\"></i></button>\r\n                        <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"color: #7A7982;\"\r\n                            (click)=\"format('justifyRight', editorId)\"><i\r\n                                class=\"mdi mdi-format-align-right\"></i></button>\r\n                        <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"color: #7A7982;\"\r\n                            (click)=\"format('justifyFull', editorId)\"><i\r\n                                class=\"mdi mdi-format-align-justify\"></i></button>\r\n                    </div>\r\n                </div>\r\n                <div class=\"vertical-line ms-2 border\" [style.border-left]=\"themeModeClrVerticalLine()\"></div>\r\n            </div>\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSubscriptActive\"\r\n                    (click)=\"format('subscript', editorId)\">\r\n                    <i class=\"mdi mdi-format-subscript\"></i>\r\n                </button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSuperscriptActive\"\r\n                    (click)=\"format('superscript', editorId)\">\r\n                    <i class=\"mdi mdi-format-superscript\"></i>\r\n                </button>\r\n\r\n            </div>\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n\r\n                <div ngbDropdown class=\"ql-align\">\r\n                    <button type=\"button\" class=\"btn btn-outline-primary arrow-none els-toolbar-button  border-none p-0\"\r\n                        id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n                        <i class=\"mdi mdi-format-color-fill\"></i>\r\n                    </button>\r\n                    <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 200px;\">\r\n                        <color-sketch color=\"#fff\"\r\n                            (onChangeComplete)=\"setCanvasBackgroundColor($event, editorId)\"></color-sketch>\r\n                    </div>\r\n                </div>\r\n\r\n            </div>\r\n            <div class=\"btn-group els-button-group-2 mr-3\" role=\"group\" aria-label=\"Table Options\">\r\n                <button class=\"btn btn-white  px-1\" style=\"height: 24px;\" (click)=\"getToday()\">Date</button>\r\n            </div>\r\n            <div class=\"btn-group els-button-group-2\" role=\"group\" aria-label=\"Table Options\">\r\n                <button class=\"btn btn-white  px-1\" style=\"height: 24px;\" (click)=\"insertPageNumber()\">Page\r\n                    No</button>\r\n\r\n            </div>\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addLink()\"><i\r\n                        class=\"mdi mdi-link-variant\"></i></button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"insertsImage(editorId)\"><i\r\n                        class=\"mdi mdi-image\"></i></button>\r\n                <input type=\"file\" id=\"imageInput\" style=\"display: none;\" (change)=\"handleImageUpload($event)\">\r\n\r\n            </div>\r\n            <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n                        <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addTable()\"><i\r\n                                class=\"mdi mdi-table\"></i></button>\r\n                        <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addRow()\"><i\r\n                                class=\"mdi mdi-table-row-plus-after\"></i></button>\r\n                        <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n                            (click)=\"deleteRow()\"><i class=\"mdi mdi-table-row-remove\"></i></button>\r\n                        <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n                            (click)=\"addColumn()\"><i class=\"mdi mdi-table-column-plus-after\"></i></button>\r\n                        <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n                            (click)=\"deleteColumn()\"><i class=\"mdi mdi-table-column-remove\"></i></button>\r\n                    </div>\r\n                    <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n                        <button *ngIf=\"selectedImage\" class=\"btn btn-white els-toolbar-button-2\" (click)=\"editImage()\"\r\n                            style=\"position: absolute;\">Edit Image</button>\r\n                    </div> -->\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"undo()\">\r\n                    <i class=\"mdi mdi-undo\"></i>\r\n                </button>\r\n                <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"redo()\">\r\n                    <i class=\"mdi mdi-redo\"></i>\r\n                </button>\r\n\r\n            </div>\r\n            <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n                <!-- <button *ngIf=\"selectedImage\" class=\"btn btn-white els-toolbar-button-2\" (click)=\"editImage()\"\r\n                                    style=\"position: absolute;\">Edit Image</button> -->\r\n                <button class=\"btn btn-white els-toolbar-button\" (click)=\"clearTextEditor()\">\r\n                    <i class=\"mdi mdi-close-circle\"></i>\r\n                </button>\r\n            </div>\r\n\r\n        </div>\r\n    </div>\r\n\r\n\r\n    <div contenteditable=\"true\" [id]=\"editorId\" class=\"els-border p-3\" #editor\r\n        style=\"position: relative !important; height: 130px; max-width: 100%; overflow: hidden; border-bottom-left-radius: 20px !important; border-bottom-right-radius: 20px !important; border-bottom-left-radius: 20px !important;\"\r\n        [style.background]=\"themeModeBgClr()\" [style.border-top]=\"themeModeBorderTop()\"\r\n        [ngStyle]=\"{'font-family': selectedFont, 'font-size': selectedFontSize + 'px'}\" [style]=\"style\"\r\n        contenteditable=\"true\" (input)=\"onModelChange($event)\" placeholder=\"Insert text here ...\"\r\n        (mouseup)=\"onTextSelect($event)\" [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\" (focus)=\"onFocus()\"\r\n        (blur)=\"onBlur()\" (click)=\"checkTableSelection($event)\">\r\n    </div>\r\n    <table *ngIf=\"parsedTable\">\r\n        <thead>\r\n            <tr>\r\n                <th *ngFor=\"let header of parsedTable.headers\">{{ header }}</th>\r\n            </tr>\r\n        </thead>\r\n        <tbody>\r\n            <tr *ngFor=\"let row of parsedTable.rows\">\r\n                <td *ngFor=\"let cell of row\">{{ cell }}</td>\r\n            </tr>\r\n        </tbody>\r\n    </table>\r\n</div>","import { NgModule } from '@angular/core';\nimport { ElHeaderAndFooterComponent } from './el-header-and-footer.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ColorPickerModule } from 'ngx-color-picker';\nimport { ColorSketchModule } from 'ngx-color/sketch';\nimport { NgxColorsModule } from 'ngx-colors';\n\n\n\n@NgModule({\n  declarations: [\n    ElHeaderAndFooterComponent\n  ],\n  imports: [\n        CommonModule,\n    NgxColorsModule,\n    FormsModule,\n    ReactiveFormsModule,\n    NgbDropdownModule,\n    ColorSketchModule,\n    ColorPickerModule\n  ],\n  exports: [\n    ElHeaderAndFooterComponent\n  ]\n})\nexport class ElHeaderAndFooterModule { }\n","/*\n * Public API Surface of el-header-and-footer\n */\n\nexport * from './lib/el-header-and-footer.service';\nexport * from './lib/el-header-and-footer.component';\nexport * from './lib/el-header-and-footer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
         |