el-header-and-footer 0.0.52 → 0.0.54

Sign up to get free protection for your applications and to get access to all the features.
@@ -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, ChangeDetectorRef, 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 @Output() editorColourChange = 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 isTableBordered: 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 = '';\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private renderer: Renderer2,\n private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n ) { }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['bgColor']) {\n const event = { color:{ hex : this.bgColor} }\n this.setCanvasBackgroundColor(event, this.editorId)\n // const editor = document.getElementById(this.editorId);\n // if (editor) {\n // editor.style.backgroundColor = this.bgColor;\n // }\n }\n // else {\n // const editor = document.getElementById(this.editorId);\n\n // if (editor) {\n // editor.style.backgroundColor = this.bgColor? this.bgColor : this.themeModeBgClr();\n // document.execCommand('backColor', true, this.themeModeBgClr())\n // }\n // }\n }\n ngAfterViewInit() {\n this.initEditor();\n this.checkPlaceholder();\n this.setupHistory(); \n \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\n \n // document.execCommand('hiliteColor', true, this.themeModeBgClr())\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 } \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.style.backgroundColor = this.themeModeBgClr();\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 \nonModelChange(event: any): void {\n const value = event; // Get the innerHTML content\n if (value) {\n const canvasHTML = this.mainCanvas(value); // Get the updated content with styles\n const editor = document.getElementById(this.editorId)\n const hasPadding = canvasHTML.includes('padding: 10px 60px;');\n this.editorText = hasPadding\n ? canvasHTML\n : `${value}`;\n\n // this.editorTextChange.emit(this.mainCanvas(value))\n // this.editorText = hasPadding\n // ? canvasHTML\n // : `<div style=\"background-color: ${ editor?.style.backgroundColor|| this.bgColor ? this.bgColor : this.themeModeBgClr}\">${value}</div>`;\n\n this.onChange(this.editorText);\n this.editorTextChange.emit(this.editorText);\n\n } else {\n this.selectedImage = null;\n }\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 let editor = document.getElementById(this.editorId);\n if (editor) {\n editor.focus()\n const color = this.bgColor\n editor.style.backgroundColor = color ? color : this.themeModeBgClr();\n // }\n // if (editor) {\n const existingTable = editor.querySelector('table');\n if (existingTable) {\n this.toggleTableBorders()\n // Exit if a table is already present\n }\n }\n if (html) {\n let editor = document.getElementById(this.editorId);\n if (editor) { \n editor.focus()\n // editor.style.backgroundColor = this.themeModeBgClr();\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 const selection = window.getSelection();\n if (selection?.rangeCount) {\n const range = selection.getRangeAt(0);\n if (editor.contains(range.commonAncestorContainer)) {\n return range.cloneRange(); // Return the current caret range\n }\n }\n return null;\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 themeModeClrVerticalLineForTable() {\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 #5F5F5F !important'\n }\n }\n\n themeModeClrBorderForTable() {\n const clrMode = document.body.getAttribute('data-layout-color')\n if (clrMode == 'dark') {\n return '#414141'\n } else {\n return '#5F5F5F'\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 = '&nbsp;';\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 = '&nbsp;';\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 = '&nbsp;';\n cell.style.border = this.themeModeClrVerticalLineForTable();\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 document.execCommand('hiliteColor', true, this.backgroundColor);\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 document.execCommand('foreColor', true, this.selectedTextColor);\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 this.bgColor = event.color.hex\n color = event.color.hex \n this.editorColourChange.emit({\n config: editorId,\n color: this.bgColor\n })\n editor.style.backgroundColor = color;\n // this.bgColor = this.CanvasColor;\n this.mainCanvas()\n // onModelChange\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 style=\"background-color: ${BG}>${data}</div>`\n // }\n \n // }\n // mainCanvas(data?: any): string {\n // const editor = document.getElementById(this.editorId);\n // if (editor) {\n // editor.style.backgroundColor = this.CanvasColor ? this.CanvasColor : this.themeModeBgClr()\n // this.cdr.detectChanges()\n\n // }\n \n // const BG = editor?.style?.backgroundColor;\n // return `${data}`;\n // }[674px]\n \n mainCanvas(data?: any): string {\n const editor = document.getElementById(this.editorId);\n\n if (editor) {\n editor.style.backgroundColor = this.CanvasColor ? this.CanvasColor : this.themeModeBgClr();\n \n const table = editor.querySelector('table');\n if (table) {\n table.style.width = '100%'; \n }\n this.cdr.detectChanges();\n }\n\n const BG = editor?.style?.backgroundColor; \n return `${data}`;\n}\n\n \n addTable() {\n const cols = 3; // Number of columns\n const cellHeight = '100px'; // Set a fixed height for cells\n\n // Check if a table already exists in the editor\n const editor = document.getElementById(this.editorId);\n if (editor) {\n const existingTable = editor.querySelector('table');\n if (existingTable) {\n return; // Exit if a table is already present\n }\n\n // Create the table HTML\n let table = `<table style=\"\n width: 100%; \n border-collapse: collapse;\n table-layout: fixed;\n margin: 0 auto;\n \">`;\n\n table += `<tr>`; // Set row height\n\n for (let j = 0; j < cols; j++) {\n table += `<td style=\"\n border: ${this.themeModeClrVerticalLineForTable()};\n word-wrap: break-word;\n word-break: break-word;\n white-space: normal;\n text-align: left; /* Align text to the left */\n vertical-align: top; /* Align content to the top */\n \">&nbsp;</td>`; // Use non-breaking space to keep the cell content\n }\n\n table += '</tr>';\n table += '</table>';\n this.isTableBordered = true;\n // Insert the table into the editor\n editor.focus();\n document.execCommand('insertHTML', false, table);\n\n this.tableAdded = true;\n this.checkTableSelection();\n }\n}\n\n\n // removeTableBorders() {\n // const editor = document.getElementById(this.editorId);\n\n // if (editor) {\n // const table = editor.querySelector('table'); // Find the first table inside the editor\n\n // if (table) {\n // const cells = table.querySelectorAll('td'); // Select all table cells\n // cells.forEach((cell) => {\n // cell.style.border = 'none'; // Remove the border by setting it to 'none'\n // });\n\n // // Convert the table element back to HTML string\n // const tableHTML = table.outerHTML;\n\n // // Insert the updated HTML into the editor\n // editor.focus();\n // document.execCommand('insertHTML', false, tableHTML); // Pass the HTML string, not the element\n // } \n // }\n // }\n\n toggleTableBorders() {\n const editor = document.getElementById(this.editorId);\n\n if (editor) {\n const table = editor.querySelector('table'); // Find the first table inside the editor\n if (table) {\n const cells = table.querySelectorAll('td'); // Select all table cells\n let hasBorders = false;\n\n // Check if any cell currently has a border\n cells.forEach((cell) => {\n const borderStyle = cell.style.border; // Check the inline style for borders\n if (borderStyle && borderStyle !== 'none') {\n hasBorders = true;\n }\n });\n const existingTable = editor.querySelector('table');\n if (existingTable) {\n // return; // Exit if a table is already present\n }\n\n // Toggle borders\n if (hasBorders || this.isTableBordered) {\n // Remove borders\n cells.forEach((cell) => {\n cell.style.border = 'none'; // Set border to 'none'\n });\n this.isTableBordered = false;\n } else {\n // Add borders\n cells.forEach((cell) => {\n cell.style.border = '2px solid '+this.themeModeClrBorderForTable(); // Add a default border style\n });\n this.isTableBordered = true;\n }\n } \n }\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'\n } else {\n return '#F3F3F3'\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 #000000 !important'\n } else {\n return '2px solid #ffffff !important'\n }\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\"\r\n 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\r\n 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\"\r\n [style.border]=\"themeMode()\">\r\n <button class=\"dropdown-item pb-0\" type=\"button\" *ngFor=\"let font of fonts\"\r\n (click)=\"changeFont(font)\" [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 class=\"btn btn-white els-toolbar-button\" (click)=\"toggleTableBorders()\"><i \r\n class=\"mdi\" [ngClass]=\"{ isTableBordered ? 'mdi-border-none' : 'mdi-border-all' }\"></i>\r\n </button> -->\r\n <button class=\"btn btn-white els-toolbar-button\" (click)=\"toggleTableBorders()\">\r\n <i class=\"mdi\" [ngClass]=\"isTableBordered ? 'mdi-border-none' : 'mdi-border-all'\"></i>\r\n </button>\r\n\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\" (click)=\"deleteRow()\"><i\r\n 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 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\" #editorHeader style=\"position: relative !important; \r\n height: 130px; \r\n max-width: 100%; \r\n overflow: hidden; \r\n border-bottom-left-radius: 20px !important; \r\n border-bottom-right-radius: 20px !important; \r\n border-bottom-left-radius: 20px !important;\" [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, ChangeDetectorRef, 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 @Output() editorColourChange = 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 isTableBordered: 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 = '';\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private renderer: Renderer2,\n private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n ) { }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['bgColor']) {\n const event = { color:{ hex : this.bgColor} }\n this.setCanvasBackgroundColor(event, this.editorId)\n // const editor = document.getElementById(this.editorId);\n // if (editor) {\n // editor.style.backgroundColor = this.bgColor;\n // }\n }\n // else {\n // const editor = document.getElementById(this.editorId);\n\n // if (editor) {\n // editor.style.backgroundColor = this.bgColor? this.bgColor : this.themeModeBgClr();\n // document.execCommand('backColor', true, this.themeModeBgClr())\n // }\n // }\n }\n ngAfterViewInit() {\n this.initEditor();\n this.checkPlaceholder();\n this.setupHistory(); \n \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\n \n // document.execCommand('hiliteColor', true, this.themeModeBgClr())\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 } \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.style.backgroundColor = this.themeModeBgClr();\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 \nonModelChange(event: any): void {\n const value = event; // Get the innerHTML content\n if (value) {\n const canvasHTML = this.mainCanvas(value); // Get the updated content with styles\n const editor = document.getElementById(this.editorId)\n const hasPadding = canvasHTML.includes('padding: 10px 60px;');\n this.editorText = hasPadding\n ? canvasHTML\n : `${value}`;\n\n // this.editorTextChange.emit(this.mainCanvas(value))\n // this.editorText = hasPadding\n // ? canvasHTML\n // : `<div style=\"background-color: ${ editor?.style.backgroundColor|| this.bgColor ? this.bgColor : this.themeModeBgClr}\">${value}</div>`;\n\n this.onChange(this.editorText);\n this.editorTextChange.emit(this.editorText);\n\n } else {\n this.selectedImage = null;\n }\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 let editor = document.getElementById(this.editorId);\n if (editor) {\n editor.focus()\n const color = this.bgColor\n editor.style.backgroundColor = color ? color : this.themeModeBgClr();\n // }\n // if (editor) {\n const existingTable = editor.querySelector('table');\n if (existingTable) {\n this.toggleTableBorders()\n // Exit if a table is already present\n }\n }\n if (html) {\n let editor = document.getElementById(this.editorId);\n if (editor) { \n editor.focus()\n // editor.style.backgroundColor = this.themeModeBgClr();\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 const selection = window.getSelection();\n if (selection?.rangeCount) {\n const range = selection.getRangeAt(0);\n if (editor.contains(range.commonAncestorContainer)) {\n return range.cloneRange(); // Return the current caret range\n }\n }\n return null;\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 themeModeClrVerticalLineForTable() {\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 #5F5F5F !important'\n }\n }\n\n themeModeClrBorderForTable() {\n const clrMode = document.body.getAttribute('data-layout-color')\n if (clrMode == 'dark') {\n return '#414141'\n } else {\n return '#5F5F5F'\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 = '&nbsp;';\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 = '&nbsp;';\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 = '&nbsp;';\n// cell.style.border = this.themeModeClrVerticalLineForTable();\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 \n addColumn() {\n if (this.selectedTable) {\n const columnCount = this.selectedTable.rows[0].cells.length; // Get current column count\n\n if (columnCount >= 3) {\n console.warn(\"Maximum column limit (3) reached!\");\n return; // Stop adding columns if the limit is reached\n }\n\n const newColumnCount = columnCount + 1; // New column count after adding\n const tableWidth = this.selectedTable.offsetWidth;\n const minWidth = tableWidth / newColumnCount;\n\n for (let i = 0; i < this.selectedTable.rows.length; i++) {\n let cell = this.selectedTable.rows[i].insertCell(-1);\n cell.innerHTML = '&nbsp;';\n cell.style.border = `1px solid #000`; // Set border color (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 and border color\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 this.selectedTable.rows[i].cells[j].style.border = `1px solid${this.themeModeClrBorderForTable()}`; // Apply border color\n }\n }\n }\n}\n\n\n\n\n deleteColumn() {\n if (this.selectedTable) {\n const columnCount = this.selectedTable.rows[0].cells.length; // Get current column count\n\n if (columnCount <= 1) {\n console.warn(\"Cannot delete the last column!\");\n return; // Stop deleting if only one column is left\n }\n\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 handleTabKey(event: any) {\n if (event.key === \"Tab\") {\n event.preventDefault(); // Stop default tabbing behavior\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return;\n\n const range = selection.getRangeAt(0);\n const tabNode = document.createElement(\"span\"); // Create a span element for the tab space\n tabNode.innerHTML = \"&nbsp;&nbsp;&nbsp;&nbsp;\"; // Four non-breaking spaces to mimic tab\n \n range.deleteContents(); // Remove any selected text\n range.insertNode(tabNode); // Insert the tab space as span\n range.setStartAfter(tabNode); // Move cursor after the inserted span\n range.setEndAfter(tabNode);\n selection.removeAllRanges();\n selection.addRange(range);\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 document.execCommand('hiliteColor', true, this.backgroundColor);\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 document.execCommand('foreColor', true, this.selectedTextColor);\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 this.bgColor = event.color.hex\n color = event.color.hex \n this.editorColourChange.emit({\n config: editorId,\n color: this.bgColor\n })\n editor.style.backgroundColor = color;\n // this.bgColor = this.CanvasColor;\n this.mainCanvas()\n // onModelChange\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 style=\"background-color: ${BG}>${data}</div>`\n // }\n \n // }\n // mainCanvas(data?: any): string {\n // const editor = document.getElementById(this.editorId);\n // if (editor) {\n // editor.style.backgroundColor = this.CanvasColor ? this.CanvasColor : this.themeModeBgClr()\n // this.cdr.detectChanges()\n\n // }\n \n // const BG = editor?.style?.backgroundColor;\n // return `${data}`;\n // }[674px]\n \n mainCanvas(data?: any): string {\n const editor = document.getElementById(this.editorId);\n\n if (editor) {\n editor.style.backgroundColor = this.CanvasColor ? this.CanvasColor : this.themeModeBgClr();\n \n const table = editor.querySelector('table');\n if (table) {\n table.style.width = '100%'; \n }\n this.cdr.detectChanges();\n }\n\n const BG = editor?.style?.backgroundColor; \n return `${data}`;\n}\n\n \n addTable() {\n const cols = 3; // Number of columns\n const cellHeight = '100px'; // Set a fixed height for cells\n\n // Check if a table already exists in the editor\n const editor = document.getElementById(this.editorId);\n if (editor) {\n const existingTable = editor.querySelector('table');\n if (existingTable) {\n return; // Exit if a table is already present\n }\n\n // Create the table HTML\n let table = `<table style=\"\n width: 100%; \n border-collapse: collapse;\n table-layout: fixed;\n margin: 0 auto;\n \">`;\n\n table += `<tr>`; // Set row height\n\n for (let j = 0; j < cols; j++) {\n table += `<td style=\"\n border: ${this.themeModeClrVerticalLineForTable()};\n word-wrap: break-word;\n word-break: break-word;\n white-space: normal;\n text-align: left; /* Align text to the left */\n vertical-align: top; /* Align content to the top */\n \">&nbsp;</td>`; // Use non-breaking space to keep the cell content\n }\n\n table += '</tr>';\n table += '</table>';\n this.isTableBordered = true;\n // Insert the table into the editor\n editor.focus();\n document.execCommand('insertHTML', false, table);\n\n this.tableAdded = true;\n this.checkTableSelection();\n }\n}\n\n\n // removeTableBorders() {\n // const editor = document.getElementById(this.editorId);\n\n // if (editor) {\n // const table = editor.querySelector('table'); // Find the first table inside the editor\n\n // if (table) {\n // const cells = table.querySelectorAll('td'); // Select all table cells\n // cells.forEach((cell) => {\n // cell.style.border = 'none'; // Remove the border by setting it to 'none'\n // });\n\n // // Convert the table element back to HTML string\n // const tableHTML = table.outerHTML;\n\n // // Insert the updated HTML into the editor\n // editor.focus();\n // document.execCommand('insertHTML', false, tableHTML); // Pass the HTML string, not the element\n // } \n // }\n // }\n\n toggleTableBorders() {\n const editor = document.getElementById(this.editorId);\n\n if (editor) {\n const table = editor.querySelector('table'); // Find the first table inside the editor\n if (table) {\n const cells = table.querySelectorAll('td'); // Select all table cells\n let hasBorders = false;\n\n // Check if any cell currently has a border\n cells.forEach((cell) => {\n const borderStyle = cell.style.border; // Check the inline style for borders\n if (borderStyle && borderStyle !== 'none') {\n hasBorders = true;\n }\n });\n const existingTable = editor.querySelector('table');\n if (existingTable) {\n // return; // Exit if a table is already present\n }\n\n // Toggle borders\n if (hasBorders || this.isTableBordered) {\n // Remove borders\n cells.forEach((cell) => {\n cell.style.border = 'none'; // Set border to 'none'\n });\n this.isTableBordered = false;\n } else {\n // Add borders\n cells.forEach((cell) => {\n cell.style.border = '2px solid '+this.themeModeClrBorderForTable(); // Add a default border style\n });\n this.isTableBordered = true;\n }\n } \n }\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'\n } else {\n return '#F3F3F3'\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 #000000 !important'\n } else {\n return '2px solid #ffffff !important'\n }\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\"\r\n 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\r\n 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\"\r\n [style.border]=\"themeMode()\">\r\n <button class=\"dropdown-item pb-0\" type=\"button\" *ngFor=\"let font of fonts\"\r\n (click)=\"changeFont(font)\" [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 class=\"btn btn-white els-toolbar-button\" (click)=\"toggleTableBorders()\"><i \r\n class=\"mdi\" [ngClass]=\"{ isTableBordered ? 'mdi-border-none' : 'mdi-border-all' }\"></i>\r\n </button> -->\r\n <button class=\"btn btn-white els-toolbar-button\" (click)=\"toggleTableBorders()\">\r\n <i class=\"mdi\" [ngClass]=\"isTableBordered ? 'mdi-border-none' : 'mdi-border-all'\"></i>\r\n </button>\r\n\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\" (click)=\"deleteRow()\"><i\r\n 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 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\" #editorHeader style=\"position: relative !important; \r\n height: 130px; \r\n max-width: 100%; \r\n overflow: hidden; \r\n border-bottom-left-radius: 20px !important; \r\n border-bottom-right-radius: 20px !important; \r\n border-bottom-left-radius: 20px !important;\" [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)\" (keydown.Tab)=\"handleTabKey($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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"}
@@ -111,6 +111,7 @@ export declare class ElHeaderAndFooterComponent implements ControlValueAccessor,
111
111
  deleteRow(): void;
112
112
  addColumn(): void;
113
113
  deleteColumn(): void;
114
+ handleTabKey(event: any): void;
114
115
  adjustTableWidth(event: any): void;
115
116
  adjustCellWidth(event: any): void;
116
117
  adjustCellHeight(event: any): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "el-header-and-footer",
3
- "version": "0.0.52",
3
+ "version": "0.0.54",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.2.0",
6
6
  "@angular/core": "^13.2.0"