@libs-ui/components-inputs-quill2x 0.2.357-2 → 0.2.357-4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-inputs-quill2x.mjs","sources":["../../../../../../libs-ui/components/inputs/quill2x/src/link/link.component.ts","../../../../../../libs-ui/components/inputs/quill2x/src/link/link.component.html","../../../../../../libs-ui/components/inputs/quill2x/src/upload-image/upload-image.component.ts","../../../../../../libs-ui/components/inputs/quill2x/src/upload-image/upload-image.component.html","../../../../../../libs-ui/components/inputs/quill2x/src/utils/data.define.ts","../../../../../../libs-ui/components/inputs/quill2x/src/blots-custom/mention2x.component.ts","../../../../../../libs-ui/components/inputs/quill2x/src/blots-custom/image2x.component.ts","../../../../../../libs-ui/components/inputs/quill2x/src/utils/functions.define.ts","../../../../../../libs-ui/components/inputs/quill2x/src/quill2x.component.ts","../../../../../../libs-ui/components/inputs/quill2x/src/quill2x.component.html","../../../../../../libs-ui/components/inputs/quill2x/src/libs-ui-components-inputs-quill2x.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, OnInit, output, signal } from '@angular/core';\nimport { IInputValidFunctionControlEvent, LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\nimport { patternUrl } from '@libs-ui/utils';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill-link',\n templateUrl: './link.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LibsUiComponentsModalComponent, LibsUiComponentsInputsValidComponent],\n})\nexport class LibsUiComponentsInputsQuillLinkComponent implements OnInit {\n protected dataLink = signal<{ title: string; link: string }>({ title: '', link: '' });\n protected patternLink = signal<RegExp>(patternUrl());\n\n private readonly inputValidFunctionControl = signal<Array<IInputValidFunctionControlEvent>>([]);\n\n readonly zIndex = input<number>(1200);\n readonly title = input<string>();\n readonly link = input<string>();\n readonly ignoreCommunicateMicroEvent = input<boolean>();\n\n readonly outClose = output<void>();\n readonly outSaveLink = output<{ title: string; link: string }>();\n\n ngOnInit() {\n const title = this.title();\n const link = this.link();\n if (title || link) {\n this.dataLink.update((item) => ({ ...item, title: title || '', link: link || '' }));\n }\n }\n\n protected async handlerFunctionsControl(event: IInputValidFunctionControlEvent) {\n this.inputValidFunctionControl.update((items) => [...items, event]);\n }\n\n private async validate() {\n let valid = true;\n for (const control of this.inputValidFunctionControl()) {\n if (!(await control.checkIsValid())) {\n valid = false;\n }\n }\n return valid;\n }\n\n protected async handlerEvent(event: TYPE_MODAL_EVENT) {\n if (event !== 'agree') {\n this.outClose.emit();\n return;\n }\n if (await this.validate()) {\n this.outSaveLink.emit(this.dataLink());\n this.outClose.emit();\n }\n }\n}\n","<libs_ui-components-modal\n [title]=\"'i18n_insert_link'\"\n [mode]=\"'center'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [zIndex]=\"zIndex()\"\n (outEvent)=\"handlerEvent($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'i18n_content', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'title'\"\n [placeholder]=\"'i18n_import_content'\"\n [validRequired]=\"{ isRequired: true }\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n <div class=\"mt-[16px]\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'Link', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https://example.com'\"\n [validRequired]=\"{ isRequired: true }\"\n [validPattern]=\"[{ pattern: patternLink(), valuePatternShowError: false }]\"\n [keySelectedUnitLeft]=\"'1'\"\n [unitsLeft]=\"[{ id: '1', label: 'URL' }]\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n </div>\n </div>\n</libs_ui-components-modal>\n","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { IButton } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\nimport { IQuill2xUploadImageConfig } from '../interfaces/quill2x.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill-upload_image',\n templateUrl: './upload-image.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LibsUiComponentsModalComponent],\n})\nexport class LibsUiComponentsInputsQuillUploadImageComponent {\n protected buttonFooter = signal<Array<IButton>>([\n {\n type: 'button-third',\n label: 'i18n_cancel',\n action: async () => this.outClose.emit(),\n },\n {\n label: 'i18n_save',\n action: () => this.handlerSaveImage(),\n },\n ]);\n protected disable = signal<boolean>(false);\n readonly ignoreCommunicateMicroEvent = input<boolean>();\n\n readonly uploadImageConfig = input.required<IQuill2xUploadImageConfig>();\n\n readonly outClose = output<string | void>();\n\n private async handlerSaveImage() {}\n\n protected handlerEventModal(event: TYPE_MODAL_EVENT) {\n if (event === 'close') {\n this.outClose.emit();\n }\n }\n}\n","<libs_ui-components-modal\n [title]=\"'i18n_upload_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"uploadImageConfig().zIndex || 1203\"\n [disable]=\"disable()\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n </div>\n</libs_ui-components-modal>\n","import { signal } from '@angular/core';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { IHttpRequestConfig, returnListObject } from '@libs-ui/services-http-request';\nimport { convertFileToBase64_ObjectUrl } from '@libs-ui/utils';\nimport { IQuill2xLink, IQuill2xToolbarConfig, IQuill2xUploadImageConfig, QUILL2X_TYPE_MODE_BAR_CONFIG_OPTION } from '../interfaces/quill2x.interface';\n\nexport const listDataAlign = () => {\n return [\n { key: '', icon: 'libs-ui-icon-align-left text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'right', icon: 'libs-ui-icon-align-right text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'center', icon: 'libs-ui-icon-align-center text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'justify', icon: 'libs-ui-icon-align-justify text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n ];\n};\n\nexport const listFont = () => {\n return [\n { key: '', label: 'Sans Serif' },\n { key: 'serif', label: 'Serif' },\n { key: 'monospace', label: 'Monospace' },\n ];\n};\n\nexport const listHeader = () => {\n return [\n { key: '', label: 'Normal' },\n { key: '1', label: 'Heading 1' },\n { key: '2', label: 'Heading 2' },\n { key: '3', label: 'Heading 3' },\n { key: '4', label: 'Heading 4' },\n { key: '5', label: 'Heading 5' },\n { key: '6', label: 'Heading 6' },\n ];\n};\n\nexport const listConfigAlign = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(listDataAlign()),\n functionName: 'list',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getClassItem: () => '!px-[8px] !py-[4px]',\n getValue: (item) => `<i class='flex ${item.icon}'></i>`,\n ignoreIconSelected: true,\n }),\n };\n};\n\nexport const listConfigFont = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(listFont()),\n functionName: 'list',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getValue: (item) => item.label,\n ignoreIconSelected: true,\n }),\n };\n};\n\nexport const listConfigHeader = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(listHeader()),\n functionName: 'list',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getValue: (item) => {\n switch (item?.key) {\n case '':\n return `<span class=\"libs-ui-font-h5r\">${item?.label}</span>`;\n case '1':\n return `<span class=\"libs-ui-font-h1r\">${item?.label}</span>`;\n case '2':\n return `<span class=\"libs-ui-font-h2r\">${item?.label}</span>`;\n case '3':\n return `<span class=\"libs-ui-font-h3r\">${item?.label}</span>`;\n case '4':\n return `<span class=\"libs-ui-font-h4r\">${item?.label}</span>`;\n case '5':\n return `<span class=\"libs-ui-font-h5r\">${item?.label}</span>`;\n case '6':\n return `<span class=\"libs-ui-font-h6r\">${item?.label}</span>`;\n }\n return item?.label;\n },\n ignoreIconSelected: true,\n }),\n };\n};\n\nexport const toolBarOptions = (mode: QUILL2X_TYPE_MODE_BAR_CONFIG_OPTION, hasIconImage: boolean, hasIconPersonalize: boolean): Array<IQuill2xToolbarConfig> => {\n return (\n [\n {\n type: 'undo',\n classInclude: 'mr-[8px]',\n mode: ['all', 'default', 'basic'],\n width: 24,\n },\n {\n type: 'redo',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'line',\n mode: ['all', 'default', 'basic'],\n width: 1,\n },\n {\n type: 'header',\n classInclude: 'ml-[8px]',\n mode: ['all'],\n width: 146,\n },\n {\n type: 'fontFamily',\n classInclude: 'ml-[8px]',\n mode: ['all', 'default'],\n width: 136,\n },\n {\n type: 'fontSize',\n classInclude: 'ml-[8px] mr-[8px]',\n mode: ['all', 'default'],\n width: 82,\n },\n {\n type: 'line',\n mode: ['all', 'default'],\n width: 1,\n },\n {\n type: 'color',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'background',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'line',\n mode: ['all', 'default', 'basic'],\n width: 1,\n },\n {\n type: 'bold',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'italic',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'underline',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'strikeThrough',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'line',\n mode: ['all', 'default', 'basic'],\n width: 1,\n },\n {\n type: 'script.sub',\n mode: ['all'],\n width: 32,\n },\n {\n type: 'script.super',\n mode: ['all'],\n width: 32,\n },\n {\n type: 'line',\n mode: ['all'],\n width: 1,\n },\n {\n type: 'adjust',\n mode: ['all', 'default'],\n width: 52,\n },\n {\n type: 'line',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'indentIncrease',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'indentDecrease',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'listBulleted',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'listNumbered',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'listChecked',\n mode: ['all'],\n width: 32,\n },\n {\n type: 'line',\n mode: ['all', 'default'],\n width: 1,\n },\n {\n type: 'personalize',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'blockquote',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'link',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'unLink',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'image',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'video',\n mode: ['all'],\n width: 32,\n },\n {\n type: 'emoji',\n classInclude: 'ml-[8px]',\n mode: ['all', 'default'],\n width: 24,\n },\n { type: 'table', width: 32, mode: ['all'] },\n ] as Array<IQuill2xToolbarConfig>\n ).filter((item) => {\n if (!item.mode?.includes(mode)) {\n return false;\n }\n if (item.type === 'image') {\n return hasIconImage;\n }\n if (item.type === 'personalize') {\n return hasIconPersonalize;\n }\n\n return true;\n });\n};\nexport const iconList = (): Array<{ key: string; icon: string }> => {\n return [\n {\n key: 'bold',\n icon: 'libs-ui-icon-editor-bold',\n },\n {\n key: 'italic',\n icon: 'libs-ui-icon-editor-italic',\n },\n {\n key: 'underline',\n icon: 'libs-ui-icon-editor-underlined',\n },\n {\n key: 'image',\n icon: 'libs-ui-icon-image-solid',\n },\n {\n key: 'link',\n icon: 'libs-ui-icon-link',\n },\n {\n key: 'undo',\n icon: 'libs-ui-icon-undo',\n },\n {\n key: 'redo',\n icon: 'libs-ui-icon-redo',\n },\n {\n key: 'strike',\n icon: 'libs-ui-icon-editor-strike-through',\n },\n {\n key: 'blockquote',\n icon: 'libs-ui-icon-quote',\n },\n {\n key: 'ordered',\n icon: 'libs-ui-icon-list-numbered',\n },\n {\n key: 'bullet',\n icon: 'libs-ui-icon-list-bulleted',\n },\n {\n key: 'background',\n icon: 'libs-ui-icon-editor-color-background',\n },\n {\n key: 'color',\n icon: 'libs-ui-icon-editor-color-text',\n },\n {\n key: 'indent.-1',\n icon: 'libs-ui-icon-indent-decrease',\n },\n {\n key: 'indent.+1',\n icon: 'libs-ui-icon-indent-increase',\n },\n {\n key: 'align.',\n icon: 'align-quill libs-ui-icon-align-left',\n },\n {\n key: 'align.center',\n icon: 'align-quill libs-ui-icon-align-center',\n },\n {\n key: 'align.right',\n icon: 'align-quill libs-ui-icon-align-right',\n },\n {\n key: 'align.justify',\n icon: 'align-quill libs-ui-icon-align-justify',\n },\n {\n key: 'unLink',\n icon: 'libs-ui-icon-link-broken',\n },\n {\n key: 'emoji',\n icon: 'libs-ui-icon-face-smile',\n },\n {\n key: 'table',\n icon: 'libs-ui-icon-table',\n },\n {\n key: 'check',\n icon: 'libs-ui-icon-task-list',\n },\n {\n key: 'video',\n icon: 'libs-ui-icon-video-outline',\n },\n ];\n};\n\nexport const uploadImageConfigDefault = (): IQuill2xUploadImageConfig => {\n return {\n modeCustom: false,\n zIndex: 1202,\n showIcon: true,\n maxImageSize: 5 * 1024 * 1024,\n onlyAcceptImageHttpsLink: false,\n functionUploadImage: async (files: Array<File>) => {\n const data = [];\n for (const file of files) {\n data.push(await convertFileToBase64_ObjectUrl(file));\n }\n return data;\n },\n };\n};\n\nexport const linkDefault = (): IQuill2xLink => {\n return {\n title: '',\n url: '',\n range: {\n index: 0,\n length: 0,\n },\n };\n};\n\nexport const fontSizeWhiteList = () => [\n '8px',\n '9px',\n '10px',\n '11px',\n '12px',\n '13px',\n '14px',\n '15px',\n '16px',\n '17px',\n '18px',\n '19px',\n '20px',\n '21px',\n '22px',\n '23px',\n '24px',\n '25px',\n '26px',\n '27px',\n '28px',\n '29px',\n '30px',\n '31px',\n '32px',\n '33px',\n '34px',\n '35px',\n '36px',\n '37px',\n '38px',\n '39px',\n '40px',\n '41px',\n '42px',\n '43px',\n '44px',\n '45px',\n '46px',\n '47px',\n '48px',\n '49px',\n '50px',\n '51px',\n '52px',\n '53px',\n '54px',\n '55px',\n '56px',\n '57px',\n '58px',\n '59px',\n '60px',\n '61px',\n '62px',\n '63px',\n '64px',\n '65px',\n '66px',\n '67px',\n '68px',\n '69px',\n '70px',\n '71px',\n '72px',\n];\n\nexport const getStylesConvertInline = (): Array<{ selector: string; styles: Array<{ key: string; value: string }> }> => {\n return [\n { selector: '.ql-font-Arial', styles: [{ key: 'font-family', value: 'Arial' }] },\n { selector: '.ql-font-sans-serif', styles: [{ key: 'font-family', value: 'sans-serif' }] },\n { selector: '.ql-font-serif', styles: [{ key: 'font-family', value: 'serif' }] },\n { selector: '.ql-font-monospace', styles: [{ key: 'font-family', value: 'monospace' }] },\n { selector: '.ql-font-Helvetica', styles: [{ key: 'font-family', value: 'Helvetica' }] },\n { selector: '.ql-indent-1', styles: [{ key: 'padding-left', value: '4.5em' }] },\n { selector: '.ql-indent-2', styles: [{ key: 'padding-left', value: '7.5rem' }] },\n { selector: '.ql-indent-3', styles: [{ key: 'padding-left', value: '10.5em' }] },\n { selector: '.ql-indent-4', styles: [{ key: 'padding-left', value: '13.5em' }] },\n { selector: '.ql-indent-5', styles: [{ key: 'padding-left', value: '16.5em' }] },\n { selector: '.ql-indent-6', styles: [{ key: 'padding-left', value: '19.5em' }] },\n { selector: '.ql-indent-7', styles: [{ key: 'padding-left', value: '22.5em' }] },\n { selector: '.ql-indent-8', styles: [{ key: 'padding-left', value: '25.5em' }] },\n { selector: 'a', styles: [{ key: 'color', value: '#06c' }] },\n { selector: 'span', styles: [{ key: 'white-space', value: 'pre-wrap' }] },\n { selector: 'div', styles: [{ key: 'white-space', value: 'pre-wrap' }] },\n { selector: 'p', styles: [{ key: 'white-space', value: 'pre-wrap' }] },\n {\n selector: 'h1',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-site', value: '2em' },\n ],\n },\n {\n selector: 'h2',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-size', value: '1.5em' },\n ],\n },\n {\n selector: 'h3',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-size', value: '1.25em' },\n ],\n },\n {\n selector: 'h4',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-size', value: '1em' },\n ],\n },\n {\n selector: 'h5',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-size', value: '0.875em' },\n ],\n },\n {\n selector: 'h6',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-size', value: '0.75em' },\n ],\n },\n { selector: 'ol', styles: [{ key: 'white-space', value: 'pre-wrap' }] },\n { selector: 'li', styles: [{ key: 'white-space', value: 'pre-wrap' }] },\n {\n selector: '.libs-ui-quill-format-image',\n styles: [\n { key: 'max-width', value: '100%' },\n { key: 'height', value: 'auto' },\n ],\n },\n {\n selector: '.libs-ui-quill-mention',\n styles: [\n { key: 'font-weight', value: '600' },\n { key: 'moz-osx-font-smoothing', value: 'grayscale' },\n { key: 'webkit-font-smoothing', value: 'antialiased' },\n { key: 'color', value: '#7239EA' },\n ],\n },\n {\n selector: 'blockquote',\n styles: [\n { key: 'border-left', value: '4px solid #ccc' },\n { key: 'margin-bottom', value: '5px' },\n { key: 'margin-top', value: '5px' },\n { key: 'padding-left', value: '16px' },\n ],\n },\n ];\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport Quill2x from 'quill2x';\n\nconst Embed = Quill2x.import('blots/embed') as any;\n\nexport class QuillMention2xBlot extends Embed {\n static readonly blotName = 'mention';\n static readonly tagName = 'span';\n static readonly className = 'libs-ui-quill-mention';\n static create(data: { id: string; feId: string; value: string }) {\n const node = super.create();\n node.innerText += data.value;\n node.setAttribute('id', data.id);\n node.setAttribute('feId', data.feId);\n node.setAttribute('value', data.value);\n return node;\n }\n\n static value(domNode: HTMLElement) {\n return {\n id: domNode.getAttribute('id'),\n feId: domNode.getAttribute('feId'),\n value: domNode.getAttribute('value'),\n };\n }\n\n attach() {\n super.attach();\n if (!this.mounted) {\n this.mounted = true;\n this.clickHandler = this.getClickHandler;\n this.domNode.addEventListener('click', this.clickHandler, false);\n }\n }\n\n getClickHandler(event: Event) {\n event.stopPropagation();\n }\n}\n","import Quill2x from 'quill2x';\n\nconst ImageFormat = Quill2x.import('formats/image') as any;\n\nexport class CustomImage2xBlot extends ImageFormat {\n static create(value: string) {\n const node = super.create(value);\n node.classList.add('libs-ui-quill-format-image');\n return node;\n }\n\n formats() {\n return {}; // Tránh Quill tự động thêm thẻ `<span>`\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { decodeEscapeHtml, getDocumentByString, set, setStylesElement } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport ResizeModule from '@ssumo/quill-resize-module';\nimport Delta from 'quill-delta';\nimport Quill2x from 'quill2x';\nimport { fromEvent, lastValueFrom, timer } from 'rxjs';\nimport { CustomImage2xBlot, QuillMention2xBlot } from '../blots-custom';\nimport { fontSizeWhiteList, iconList } from './data.define';\nlet quill2x: Quill2x | null = null;\nlet timeout: number | undefined = undefined;\nlet timeout1: number | undefined = undefined;\n\nlet startCell: HTMLElement | null = null;\nlet endCell: HTMLElement | null = null;\nlet isSelecting = false;\n\n//region Function Table\nexport const createTableSelector = (quill: Quill2x, anchorEl: HTMLElement | null, translate: TranslateService) => {\n // Đóng popup cũ nếu còn tồn tại\n document.querySelectorAll('.manual-table-creator').forEach((el) => el.parentElement?.removeChild(el));\n\n const popup = document.createElement('div');\n popup.className = 'manual-table-creator';\n popup.style.position = 'absolute';\n popup.style.background = '#fff';\n popup.style.border = '1px solid #ddd';\n popup.style.borderRadius = '6px';\n popup.style.boxShadow = '0 6px 16px rgba(0,0,0,0.12)';\n popup.style.padding = '12px';\n popup.style.zIndex = '10000';\n popup.style.minWidth = '200px';\n setStylesElement(popup, {\n position: 'absolute',\n background: '#fff',\n border: '1px solid #ddd',\n borderRadius: '6px',\n boxShadow: '0 6px 16px rgba(0,0,0,0.12)',\n padding: '12px',\n zIndex: '10000',\n minWidth: '200px',\n });\n\n const info = document.createElement('div');\n info.textContent = translate.instant('i18n_select_cell');\n setStylesElement(info, {\n fontSize: '12px',\n color: '#333',\n marginBottom: '10px',\n textAlign: 'center',\n fontWeight: '600',\n });\n popup.appendChild(info);\n\n const grid = document.createElement('div');\n setStylesElement(grid, {\n display: 'grid',\n gridTemplateColumns: 'repeat(8, 18px)',\n gap: '4px',\n });\n\n const max = 8;\n for (let row = 1; row <= max; row++) {\n for (let col = 1; col <= max; col++) {\n const cell = document.createElement('div');\n cell.style.width = '18px';\n cell.style.height = '18px';\n cell.style.border = '1px solid #e5e7eb';\n cell.style.background = '#fff';\n cell.style.cursor = 'pointer';\n\n cell.addEventListener('mouseenter', () => {\n info.textContent = `${row} × ${col}`;\n Array.from(grid.children).forEach((el, idx) => {\n const rr = Math.floor(idx / max) + 1;\n const cc = (idx % max) + 1;\n (el as HTMLElement).style.background = rr <= row && cc <= col ? '#dbeafe' : '#fff';\n (el as HTMLElement).style.borderColor = rr <= row && cc <= col ? '#93c5fd' : '#e5e7eb';\n });\n });\n\n cell.addEventListener('click', () => {\n try {\n quill.focus();\n const tableModule = quill.getModule('table') as any;\n if (tableModule && typeof tableModule.insertTable === 'function') {\n tableModule.insertTable(row, col);\n getAllTablesWithSpan(quill);\n }\n } finally {\n if (document.body.contains(popup)) {\n document.body.removeChild(popup);\n }\n document.removeEventListener('click', onOutsideClick, true);\n }\n });\n\n grid.appendChild(cell);\n }\n }\n popup.appendChild(grid);\n\n const placePopup = () => {\n const rect = anchorEl?.getBoundingClientRect();\n const top = rect ? rect.bottom + window.scrollY + 6 : 100;\n const left = rect ? rect.left + window.scrollX : 100;\n popup.style.top = `${top}px`;\n popup.style.left = `${left}px`;\n };\n\n const onOutsideClick = (ev: MouseEvent) => {\n if (!popup.contains(ev.target as Node)) {\n if (document.body.contains(popup)) {\n document.body.removeChild(popup);\n }\n document.removeEventListener('click', onOutsideClick, true);\n }\n };\n\n document.body.appendChild(popup);\n placePopup();\n setTimeout(() => document.addEventListener('click', onOutsideClick, true));\n};\n\nexport const createContextMenuOptionTable = (quill: Quill2x, translate: TranslateService) => {\n let lastContextIndex: number | null = null;\n\n const closeAnyMenu = () => {\n document.querySelectorAll('.manual-table-menu').forEach((el) => el.parentElement?.removeChild(el));\n };\n\n const runWithSelection = (fn: () => void) => {\n try {\n quill.focus();\n if (typeof lastContextIndex === 'number') {\n quill.setSelection(lastContextIndex, 0, 'silent');\n }\n } catch {\n /* no-op: giữ yên nếu không thể set selection */\n }\n fn();\n };\n\n const createMenuItem = (label: string, onClick: () => void) => {\n const item = document.createElement('div');\n item.textContent = label;\n item.style.padding = '6px 12px';\n item.style.cursor = 'pointer';\n item.addEventListener('click', () => {\n runWithSelection(onClick);\n closeAnyMenu();\n });\n item.addEventListener('mouseenter', () => {\n item.style.background = '#f5f5f5';\n });\n item.addEventListener('mouseleave', () => {\n item.style.background = 'transparent';\n });\n return item;\n };\n\n const openContextMenu = (pageX: number, pageY: number) => {\n closeAnyMenu();\n\n const menu = document.createElement('div');\n menu.className = 'manual-table-menu';\n menu.style.position = 'absolute';\n menu.style.top = `${pageY}px`;\n menu.style.left = `${pageX}px`;\n menu.style.background = '#fff';\n menu.style.border = '1px solid #ccc';\n menu.style.borderRadius = '4px';\n menu.style.boxShadow = '0 4px 12px rgba(0,0,0,0.2)';\n menu.style.zIndex = '10001';\n menu.style.padding = '4px';\n menu.style.minWidth = '180px';\n\n const tableModule = quill.getModule('table') as Record<string, any> | null;\n const safeCall = (method: string, ...args: any[]) => {\n if (method === 'mergeCells') {\n const [startCell, endCell] = args;\n mergeCells(startCell, endCell);\n closeAnyMenu();\n return;\n }\n if (method === 'splitCells') {\n const [startCell] = args;\n splitCells(startCell);\n closeAnyMenu();\n return;\n }\n if (tableModule && typeof tableModule[method] === 'function') {\n tableModule[method](...args);\n getAllTablesWithSpan(quill);\n }\n };\n\n menu.appendChild(createMenuItem(translate.instant('i18n_add_new_row_above'), () => safeCall('insertRowAbove')));\n menu.appendChild(createMenuItem(translate.instant('i18n_add_new_row_below'), () => safeCall('insertRowBelow')));\n menu.appendChild(createMenuItem(translate.instant('i18n_add_new_column_left'), () => safeCall('insertColumnLeft')));\n menu.appendChild(createMenuItem(translate.instant('i18n_add_new_column_right'), () => safeCall('insertColumnRight')));\n const divider = document.createElement('div');\n divider.style.height = '1px';\n divider.style.background = '#eee';\n divider.style.margin = '4px 0';\n menu.appendChild(divider);\n if (startCell && endCell) {\n const startCellStore = startCell;\n const endCellStore = endCell;\n const colspan = parseInt(startCellStore.getAttribute('colspan') || '1', 10);\n const rowspan = parseInt(startCellStore.getAttribute('rowspan') || '1', 10);\n let totalMenu = 0;\n if (startCell !== endCell) {\n menu.appendChild(createMenuItem(translate.instant('i18n_merge_cells'), () => safeCall('mergeCells', startCellStore, endCellStore)));\n totalMenu++;\n }\n if (startCell === endCell && (colspan > 1 || rowspan > 1)) {\n menu.appendChild(createMenuItem(translate.instant('i18n_split_cells'), () => safeCall('splitCells', startCellStore)));\n totalMenu++;\n }\n\n if (totalMenu > 0) {\n const divider2 = document.createElement('div');\n divider2.style.height = '1px';\n divider2.style.background = '#eee';\n divider2.style.margin = '4px 0';\n menu.appendChild(divider2);\n }\n }\n menu.appendChild(createMenuItem(translate.instant('i18n_delete_row'), () => safeCall('deleteRow')));\n menu.appendChild(createMenuItem(translate.instant('i18n_delete_column'), () => safeCall('deleteColumn')));\n menu.appendChild(createMenuItem(translate.instant('i18n_delete_table'), () => safeCall('deleteTable')));\n\n document.body.appendChild(menu);\n\n const onOutside = (ev: MouseEvent) => {\n if (!menu.contains(ev.target as Node) || (ev.target as HTMLElement).getElementsByTagName('table').length < 0) {\n closeAnyMenu();\n document.removeEventListener('click', onOutside, true);\n }\n };\n setTimeout(() => document.addEventListener('click', onOutside, true));\n\n const onScroll = () => {\n closeAnyMenu();\n window.removeEventListener('scroll', onScroll, true);\n window.removeEventListener('resize', onScroll, true);\n };\n window.addEventListener('scroll', onScroll, true);\n window.addEventListener('resize', onScroll, true);\n };\n\n fromEvent<MouseEvent>(quill.root, 'contextmenu').subscribe((ev: MouseEvent) => {\n const target = ev.target as HTMLElement;\n const isCell = !!target.closest('td,th,table,.ql-table');\n if (!isCell) return;\n ev.preventDefault();\n try {\n // Ưu tiên lấy index từ blot tương ứng node\n const QuillAny = Quill2x as any;\n const blot = QuillAny?.find?.(target);\n if (blot && typeof blot.offset === 'function') {\n lastContextIndex = blot.offset(quill.scroll);\n } else {\n // Fallback: đặt selection hiện tại nếu không xác định được\n const sel = quill.getSelection(true);\n lastContextIndex = sel ? sel.index : 0;\n }\n } catch {\n const sel = quill.getSelection(true);\n lastContextIndex = sel ? sel.index : 0;\n }\n quill.focus();\n openContextMenu(ev.pageX, ev.pageY);\n });\n};\n\n// ===============================\n// Utils: clear và select cells\n// ===============================\n\nconst clearSelection = () => {\n document.querySelectorAll('.selected-cell').forEach((c) => {\n c.classList.remove('selected-cell');\n });\n};\n\nconst selectRangeCells = (start: HTMLElement, end: HTMLElement) => {\n clearSelection();\n const table = start.closest('table');\n if (!table || table !== end.closest('table')) return;\n\n const rows = Array.from(table.querySelectorAll('tr'));\n const startRow = rows.indexOf(start.parentElement as HTMLTableRowElement);\n const endRow = rows.indexOf(end.parentElement as HTMLTableRowElement);\n\n const minRow = Math.min(startRow, endRow);\n const maxRow = Math.max(startRow, endRow);\n\n const startCol = Array.from(start.parentElement!.children).indexOf(start);\n const endCol = Array.from(end.parentElement!.children).indexOf(end);\n\n const minCol = Math.min(startCol, endCol);\n const maxCol = Math.max(startCol, endCol);\n\n for (let r = minRow; r <= maxRow; r++) {\n const row = rows[r];\n const cells = Array.from(row.children);\n for (let c = minCol; c <= maxCol; c++) {\n (cells[c] as HTMLElement).classList.add('selected-cell');\n }\n }\n};\n\n// ===============================\n// Enable selection trên table\n// ===============================\nexport function enableTableSelection(container: HTMLElement) {\n container.addEventListener('mousedown', (e) => {\n const target = e.target as HTMLElement;\n if ((target.tagName === 'TD' && e.button !== 2) || (e.button === 2 && !target.classList.contains('selected-cell'))) {\n clearSelection();\n isSelecting = true;\n startCell = target;\n endCell = target;\n selectRangeCells(startCell, endCell);\n }\n });\n\n container.addEventListener('mousemove', (e) => {\n if (!isSelecting) return;\n const target = e.target as HTMLElement;\n if (target.tagName === 'TD' && startCell) {\n endCell = target;\n selectRangeCells(startCell, endCell);\n }\n });\n\n container.addEventListener('mouseup', () => {\n isSelecting = false;\n });\n}\nconst onOutside = (ev: MouseEvent) => {\n const target = ev.target as HTMLElement;\n if (target.tagName !== 'TD' && target.tagName !== 'TR' && target.tagName !== 'TBODY' && target.tagName !== 'THEAD' && target.tagName !== 'TABLE') {\n isSelecting = false;\n startCell = null;\n endCell = null;\n clearSelection();\n }\n};\ndocument.addEventListener('click', onOutside, true);\n\n// ===============================\n// Merge cells\n// ===============================\nexport const mergeCells = (startCell: HTMLElement, endCell: HTMLElement) => {\n const startCellIndex = startCell.getAttribute('index');\n const endCellIndex = endCell.getAttribute('index');\n const startCellRow = parseInt(startCellIndex?.split('-')[0] || '0', 10);\n const endCellRow = parseInt(endCellIndex?.split('-')[0] || '0', 10);\n const startCellCol = parseInt(startCellIndex?.split('-')[1] || '0', 10);\n const endCellCol = parseInt(endCellIndex?.split('-')[1] || '0', 10);\n const minRow = Math.min(startCellRow, endCellRow);\n const maxRow = Math.max(startCellRow, endCellRow);\n const minCol = Math.min(startCellCol, endCellCol);\n const maxCol = Math.max(startCellCol, endCellCol);\n\n const rows = startCell.closest('table')?.querySelectorAll('tr');\n rows?.forEach((rowEl, rowIndex) => {\n if (rowIndex < minRow || rowIndex > maxRow) return;\n\n const cells = rowEl.querySelectorAll('td, th');\n cells.forEach((cellEl, colIndex) => {\n if (colIndex < minCol || colIndex > maxCol) return;\n if (rowIndex === minRow && colIndex === minCol) {\n cellEl.setAttribute('colspan', String(maxCol - minCol + 1));\n cellEl.setAttribute('rowspan', String(maxRow - minRow + 1));\n return;\n }\n cellEl.classList.add('hidden');\n });\n });\n};\n\n// ===============================\n// Split cells\n// ===============================\nexport function splitCells(cellSplit: HTMLElement) {\n const index = cellSplit.getAttribute('index');\n let colSpan = parseInt(cellSplit.getAttribute('colspan') || '1', 10);\n let rowSpan = parseInt(cellSplit.getAttribute('rowspan') || '1', 10);\n const totalCellSplit = rowSpan * colSpan;\n let countCellSplit = 0;\n const rowStart = parseInt(index?.split('-')[0] || '0', 10);\n const colStart = parseInt(index?.split('-')[1] || '0', 10);\n const colIncrement = new Set<number>();\n const rowIncrement = new Set<number>();\n\n const rows = cellSplit.closest('table')?.querySelectorAll('tr');\n rows?.forEach((rowEl, rowIndex) => {\n if (rowIndex < rowStart) return;\n\n const cells = rowEl.querySelectorAll('td, th');\n cells.forEach((cellEl, colIndex) => {\n if (rowIndex < rowStart || colIndex < colStart || rowStart + rowSpan < rowIndex || colStart + colSpan < colIndex || countCellSplit >= totalCellSplit) return;\n if (rowIndex === rowStart && colIndex === colStart) {\n countCellSplit++;\n cellEl.setAttribute('colspan', '1');\n cellEl.setAttribute('rowspan', '1');\n return;\n }\n if (!cellEl.classList.contains('hidden')) {\n if (!rowIncrement.has(rowIndex)) {\n rowSpan++;\n }\n if (!colIncrement.has(colIndex)) {\n colSpan++;\n }\n rowIncrement.add(rowIndex);\n colIncrement.add(colIndex);\n return;\n }\n cellEl.classList.remove('hidden');\n countCellSplit++;\n });\n });\n}\n\nexport const getAllTablesWithSpan = (quill: any) => {\n const root = quill.root;\n\n // Tìm tất cả table trong quill\n const tableEls = root.querySelectorAll('table');\n\n tableEls.forEach((tableEl: HTMLElement) => {\n const rows = tableEl.querySelectorAll('tr');\n rows.forEach((rowEl, rIndex) => {\n rowEl.setAttribute('index', `${rIndex}`);\n const cells = rowEl.querySelectorAll('td, th');\n cells.forEach((cellEl, cIndex) => {\n cellEl.setAttribute('index', `${rIndex}-${cIndex}`);\n const rowspan = parseInt(cellEl.getAttribute('rowspan') || '1', 10);\n const colspan = parseInt(cellEl.getAttribute('colspan') || '1', 10);\n\n cellEl.setAttribute('rowspan', String(rowspan));\n cellEl.setAttribute('colspan', String(colspan));\n });\n });\n });\n};\n\n//-------------------------------------------\n\nlet register = false;\nexport const registerQuill2x = () => {\n if (register) return;\n register = true;\n\n const Quill = Quill2x as any;\n\n const size = Quill.import('attributors/style/size');\n const alignStyle = Quill.import('attributors/style/align');\n const italic = Quill.import('formats/italic');\n const bold = Quill.import('formats/bold');\n const icons = Quill.import('ui/icons');\n size.whitelist = fontSizeWhiteList();\n\n italic.tagName = 'i';\n bold.tagName = 'b';\n\n Quill.register(bold, true);\n Quill.register(italic, true);\n Quill.register(size, true);\n Quill.register(alignStyle, true);\n Quill.register(QuillMention2xBlot, true);\n Quill.register(CustomImage2xBlot, true);\n Quill.register('modules/resize', ResizeModule);\n [...iconList()].forEach((element) => set(icons, element.key, `<span class=\"${element.icon} ${element.key === 'unLink' ? 'hover:text-[#ee2d41] ' : 'hover:text-[var(--libs-ui-color-light-1)]'} text-[16px] text-[#6a7383]\"></span>`));\n};\n\nexport const isEmptyQuill2x = (quill: Quill2x | null) => {\n const rootElement = quill?.root;\n if (!rootElement) return true;\n const html = rootElement.innerHTML.trim();\n return html === '<p><br></p>' || html === '<p></p>' || html === '' || html === '<p><span class=\"ql-cursor\"></span><br></p>' || rootElement.classList.contains('ql-blank');\n};\n\nexport const getHTMLFromDeltaOfQuill2x = (\n delta: Delta,\n options?: {\n getRootHtml?: boolean;\n replaceNewLineTo?: string;\n replaceTagBRTo?: string;\n replaceBrToDiv?: boolean;\n functionReplaceDelta?: (op: Delta) => void;\n replaceTags?: {\n tag: string;\n replaceTo: string;\n }[];\n }\n): string => {\n if (!delta?.ops?.length) {\n return '';\n }\n if (!quill2x) {\n quill2x = new Quill2x(document.createElement('div'));\n }\n const { replaceNewLineTo = '<br>', replaceTagBRTo, replaceTags, replaceBrToDiv } = options || {};\n\n if (options?.functionReplaceDelta) {\n options.functionReplaceDelta(delta);\n }\n\n delta.ops.forEach((op) => {\n if (op.insert) {\n if (typeof op.insert === 'string') {\n if (replaceNewLineTo) {\n op.insert = op.insert.replace(/\\n/g, replaceNewLineTo);\n }\n if (replaceTagBRTo) {\n op.insert = op.insert.replace(/<br>/g, replaceTagBRTo);\n }\n\n if (replaceTags?.length) {\n for (const tag of replaceTags) {\n op.insert = op.insert.replace(new RegExp(`<${tag.tag}>`, 'g'), `<${tag.replaceTo}>`);\n op.insert = op.insert.replace(new RegExp(`</${tag.tag}>`, 'g'), `</${tag.replaceTo}>`);\n }\n }\n }\n }\n });\n quill2x.setContents(delta);\n let htmlText = options?.getRootHtml ? quill2x.root.innerHTML : quill2x.root.firstElementChild?.innerHTML;\n if (replaceBrToDiv) {\n htmlText = convertHtmlToDivBlocks(htmlText || '');\n }\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n quill2x = null;\n }, 10000);\n return decodeEscapeHtml(htmlText || '');\n};\n\nexport const getDeltaOfQuill2xFromHTML = async (html: string): Promise<Delta> => {\n if (!quill2x) {\n quill2x = new Quill2x(document.createElement('div'));\n }\n quill2x.root.innerHTML = html;\n\n await lastValueFrom(timer(1000));\n clearTimeout(timeout1);\n timeout1 = setTimeout(() => {\n quill2x = null;\n }, 10000);\n return quill2x.getContents();\n};\n\nexport const convertHtmlToDivBlocks = (html: string): string => {\n const BREAK_TOKEN = '<<<BREAK>>>';\n // Bước 1: thay <br> thành token tạm\n const normalizedHtml = html.replace(/<br\\s*\\/?>/gi, BREAK_TOKEN);\n\n // Bước 2: tách theo token\n const parts = normalizedHtml.split(BREAK_TOKEN);\n\n const parser = new DOMParser();\n const divs: string[] = [];\n\n for (const raw of parts) {\n const trimmed = raw.trim();\n if (!trimmed) continue;\n\n // parse mỗi phần nhỏ như một document riêng\n const doc = parser.parseFromString(trimmed, 'text/html');\n const body = doc.body;\n\n // Lấy lại nội dung bên trong body\n divs.push(`<div>${body.innerHTML}</div>`);\n }\n\n return divs.join('');\n};\n\nexport const processPasteData = async (\n e: ClipboardEvent,\n config: {\n element: HTMLElement;\n handlerPasteFile?: (files: FileList) => void;\n callBack?: (positonReturn: 'file' | 'range' | 'content' | 'no-content') => void;\n }\n) => {\n const element = config.element;\n const files = e.clipboardData?.files;\n if (files?.length) {\n e.preventDefault();\n config.handlerPasteFile?.(files);\n config.callBack?.('file');\n return;\n }\n // Lưu selection TRƯỚC khi prevent default\n const selection = window.getSelection();\n let savedRange: Range | null = null;\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n // Chỉ lưu nếu range nằm trong contentText element\n const container = range.commonAncestorContainer;\n const isInContentElement = element.contains(container.nodeType === Node.TEXT_NODE ? container.parentNode : container);\n if (isInContentElement) {\n savedRange = range.cloneRange();\n }\n }\n // Prevent default để tự xử lý paste\n e.preventDefault();\n const htmlContent = e.clipboardData?.getData('text/html') || '';\n const plainText = e.clipboardData?.getData('text/plain') || '';\n let contentToInsert = (plainText || '').replace(/\\n/g, '<br>');\n if (htmlContent) {\n const delta = await getDeltaOfQuill2xFromHTML(htmlContent);\n contentToInsert = getHTMLFromDeltaOfQuill2x(delta);\n }\n\n if (!contentToInsert) {\n config.callBack?.('no-content');\n return;\n }\n\n if (savedRange) {\n insertContentWithRange(contentToInsert, savedRange, element);\n config.callBack?.('range');\n return;\n }\n element.innerHTML += contentToInsert;\n config.callBack?.('content');\n};\n\nexport const insertContentWithRange = (content: string, savedRange: Range, element: HTMLElement): void => {\n const selection = window.getSelection();\n if (!selection) {\n // Fallback: append vào cuối\n element.innerHTML += content;\n return;\n }\n // Restore selection\n selection.removeAllRanges();\n selection.addRange(savedRange);\n // Xóa nội dung đã select (nếu có)\n savedRange.deleteContents();\n // Tạo document fragment từ HTML content\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = content;\n const fragment = document.createDocumentFragment();\n while (tempDiv.firstChild) {\n fragment.appendChild(tempDiv.firstChild);\n }\n // Insert fragment tại vị trí range\n savedRange.insertNode(fragment);\n // Di chuyển cursor đến cuối nội dung vừa insert\n if (fragment.lastChild) {\n savedRange.setStartAfter(fragment.lastChild);\n }\n savedRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(savedRange);\n};\n\nexport const convertStandardList = (html: string): string => {\n const dom = getDocumentByString(html);\n const liElements = dom.querySelectorAll('li[data-list=\"bullet\"]:not(ul li)');\n liElements.forEach((element) => {\n if (element.closest('ul')) {\n return;\n }\n const ul = document.createElement('ul');\n const elementClone = element.cloneNode(true) as HTMLElement;\n ul.setAttribute('data-list', 'disc');\n if (!elementClone.style.getPropertyValue('padding-left')) {\n ul.style.setProperty('padding-left', '1.5em', 'important');\n }\n ul.style.setProperty('list-style-type', 'disc', 'important');\n ul.appendChild(elementClone);\n element.replaceWith(ul);\n });\n return dom.body.innerHTML;\n};\n\nexport const convertStandardListToQuill2x = (html: string): string => {\n const dom = getDocumentByString(html);\n const ulElements = dom.querySelectorAll('ul[data-list=\"disc\"]');\n ulElements.forEach((element) => {\n const bulletLis = element.querySelectorAll('li[data-list=\"bullet\"]');\n if (!bulletLis.length) return;\n const parent = element.parentNode;\n\n bulletLis.forEach((li) => {\n parent?.insertBefore(li, element);\n });\n\n element.remove();\n });\n return dom.body.innerHTML;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, computed, DestroyRef, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, TemplateRef, untracked, viewChild, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsButtonsSelectColorComponent } from '@libs-ui/components-buttons-select-color';\nimport { IEmitSelectKey, LibsUiComponentsDropdownComponent } from '@libs-ui/components-dropdown';\nimport { LibsUiComponentsEmojiComponent } from '@libs-ui/components-inputs-emoji';\nimport { IFocusAndBlurEvent } from '@libs-ui/components-inputs-input';\nimport { IMentionConfig, IMentionInsert, LibsUiComponentsInputsMentionDirective } from '@libs-ui/components-inputs-mention';\nimport { IValidLength, IValidRequired, LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { LibsUiComponentsSkeletonComponent } from '@libs-ui/components-skeleton';\nimport { TYPE_OBJECT, TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { LibsUiNotificationService } from '@libs-ui/services-notification';\nimport { ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MIN_LENGTH, get, getLabelBySizeFile, isNearWhite, isNil, patternProtocolUrl, patternUrl, set, UtilsKeyCodeConstant, xssFilter } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { IOutputColorChangeMultipleType } from '@libs-ui/components-color-picker';\nimport Quill2x, { Delta, EmitterSource, Range } from 'quill2x';\nimport { fromEvent, lastValueFrom, merge, Subscription, timer } from 'rxjs';\nimport { IQuill2xBlotRegister, IQuill2xCustomConfig, IQuill2xFunctionControlEvent, IQuill2xLink, IQuill2xSelectionChange, IQuill2xTextChange, IQuill2xToolbarConfig, IQuill2xUploadImageConfig } from './interfaces/quill2x.interface';\nimport { LibsUiComponentsInputsQuillLinkComponent } from './link/link.component';\nimport { LibsUiComponentsInputsQuillUploadImageComponent } from './upload-image/upload-image.component';\nimport { getStylesConvertInline, linkDefault, listConfigAlign, listConfigFont, listConfigHeader, listFont, toolBarOptions, uploadImageConfigDefault } from './utils/data.define';\nimport { convertStandardList, convertStandardListToQuill2x, createContextMenuOptionTable, createTableSelector, enableTableSelection, getAllTablesWithSpan, getHTMLFromDeltaOfQuill2x, isEmptyQuill2x, registerQuill2x } from './utils/functions.define';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill2x',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './quill2x.component.html',\n styleUrls: ['./quill2x.component.scss', '../../quill2x-preview/src/inputs-quill2x-preview.component.scss'],\n imports: [\n NgStyle,\n TranslateModule,\n NgTemplateOutlet,\n LibsUiComponentsDropdownComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsSkeletonComponent,\n LibsUiComponentsScrollOverlayDirective,\n LibsUiComponentsEmojiComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsInputsValidComponent,\n LibsUiComponentsButtonsSelectColorComponent,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsInputsMentionDirective,\n ],\n})\nexport class LibsUiComponentsInputsQuill2xComponent implements OnInit, OnDestroy {\n //region Private\n private subscriptionElementShowToolbar?: Subscription;\n private readonly timeoutRemoveLink = signal<number | undefined>(undefined);\n private readonly displayEditor = signal<boolean>(false);\n private readonly isPaste = signal<boolean>(false);\n private quill: Quill2x | null = null;\n private readonly addEditLinkComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillLinkComponent> | undefined>(undefined);\n private readonly uploadImageComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillUploadImageComponent> | undefined>(undefined);\n private readonly handlers = signal<Record<string, (...params: Array<unknown>) => void>>({\n link: this.handleShowUploadLink.bind(this),\n undo: this.handleUndo.bind(this),\n redo: this.handleRedo.bind(this),\n table: this.handleTable.bind(this),\n image: this.handlerShowUploadImage.bind(this),\n });\n private readonly timerSetFontSize = signal<number | undefined>(undefined);\n private readonly timerCalculatorToolbar = signal<number | undefined>(undefined);\n private readonly totalRecallCalculatorToolbar = signal<number>(0);\n private readonly isCalculatorToolbarSuccess = signal<boolean>(false);\n private readonly showMention = signal<boolean>(false);\n private readonly handlerTextChangeBind = this.handlerTextChange.bind(this);\n private readonly handlerSelectionChangeBind = this.handlerSelectionChange.bind(this);\n //endregion\n\n //region Protected\n protected borderColor = computed<string>(() => (this.messageError() && this.showErrorBorder() ? ' !border-[var(--libs-ui-color-border-error,#ee2d41)] ' : '!border-[#e5e7eb] '));\n protected containerClass = computed(() => `quill-container flex flex-col h-full w-full ${get(this.quillCustomConfig(), 'classContainer') || ''}`);\n protected containerToolbarClass = computed(\n () =>\n `h-full border-t border-l border-r ${this.ignoreShowBorderErrorToolbar() ? '!border-[#e5e7eb] ' : this.borderColor()}rounded-t-[4px] ${this.readonly() ? ' libs-ui-readonly-background cursor-default pointer-events-none ' : ' '} ${get(this.quillCustomConfig(), 'toolbar.classCustomContainerToolbar') || ''} ${get(this.quillCustomConfig(), 'toolbar.positionFixed') ? ' !bg-white border-none w-full shadow-[0px_4px_16px_0px_rgba(0,20,51,0.10)] !rounded-[4px] ' : ' !bg-[#f8f9fa] '}`\n );\n protected containerEditorClass = computed(\n () =>\n `${this.displayEditor() ? 'h-full' : 'hidden'} !border ${this.borderColor()} !rounded-b-[4px] ${this.readonly() ? ' libs-ui-readonly-background ' : ' '} ${get(this.quillCustomConfig(), 'editor.classCustomContainerEditor') || ''} ${get(this.quillCustomConfig(), 'toolbar.positionFixed') ? ' rounded-t-[4px] ' : ' '}`\n );\n\n protected showButtonMoreToolbar = computed(() => this.toolbarOptionsConfig().some((item) => item.display === false));\n protected displaySkeletonToolbar = computed(() => this.toolbarOptionsConfig().every((item) => item.display === undefined));\n\n protected labelFontSelectedComputed = computed(() => get<unknown>(this.fontSelected(), 'item.label') || 'Sans Serif');\n protected fontSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected listConfigFont = signal<IListConfigItem>(listConfigFont());\n\n protected listConfigHeader = signal<IListConfigItem>(listConfigHeader());\n protected headerSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected labelHeaderSelectedComputed = computed(() => get<unknown>(this.headerSelected(), 'item.label') || 'Normal');\n\n protected listConfigAlign = signal<IListConfigItem>(listConfigAlign());\n protected alignSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected iconAlignSelectedComputed = computed(() => get(this.alignSelected() as unknown, 'item.icon'));\n\n protected colorSelected = signal<string | undefined>(undefined);\n protected backgroundSelected = signal<string | undefined>(undefined);\n protected listCheckboxSelected = signal<boolean>(false);\n protected adjustSelected = signal<string | undefined>(undefined);\n\n protected messageError = signal<string>('');\n protected fontSize = signal<{ value: number }>({ value: 14 });\n protected link = signal<IQuill2xLink>(linkDefault());\n\n protected showMoreAction = signal<boolean>(false);\n protected toolbarOptionsConfig: WritableSignal<Array<IQuill2xToolbarConfig>> = signal([]);\n\n protected loadingUploadImage = signal<boolean>(false);\n readonly uploadImageConfig = input<IQuill2xUploadImageConfig, IQuill2xUploadImageConfig | undefined>(uploadImageConfigDefault(), { transform: (value) => value || uploadImageConfigDefault() });\n\n //region Inputs\n readonly displayToolbar = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n\n readonly placeholder = input<string, string | undefined>('i18n_import_content', { transform: (value) => value || 'i18n_import_content' });\n readonly blotsRegister = input<Array<IQuill2xBlotRegister>>();\n readonly readonly = input<boolean, boolean | undefined>(false, { transform: (value) => value ?? false });\n readonly quillCustomConfig = input<IQuill2xCustomConfig>();\n\n readonly label = input<ILabel | undefined>();\n readonly item = model.required<TYPE_OBJECT>();\n readonly fieldBind = input.required<string>();\n\n readonly dataConfigMention = input<IMentionConfig>();\n readonly templateToolBarPersonalize = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n\n readonly zIndex = input<number, number | undefined>(1250, { transform: (value) => value ?? 1250 });\n readonly ignoreShowPopupEditLink = input<boolean>();\n readonly ignoreCommunicateMicroEventPopup = input<boolean>();\n readonly handlersExpand = input<Array<{ title: string; action: () => void }>>();\n readonly resizeImagePlugin = input<boolean>();\n\n readonly fontSizeDefault = input<number, number | undefined>(14, { transform: (value) => value ?? 14 });\n readonly heightEditorContentDefault = input<number>();\n readonly minHeightEditorContentDefault = input<number>();\n readonly maxHeightEditorContentDefault = input<number>();\n\n readonly removeNearWhiteColorsOnPaste = input<boolean>(true);\n\n readonly resize = input<'vertical' | 'none', 'vertical' | 'none' | undefined>('none', { transform: (value) => value ?? 'none' });\n readonly autoFocus = input<boolean>();\n readonly focusTimerOnInit = input<number, number | undefined>(750, { transform: (value) => value ?? 750 });\n readonly focusBottom = input<boolean>();\n\n readonly validRequired = input<IValidRequired>();\n readonly validMinLength = input<IValidLength>();\n readonly validMaxLength = input<IValidLength>();\n readonly showErrorLabel = input<boolean, boolean | undefined>(true, { transform: (val) => val ?? true });\n readonly showErrorBorder = input<boolean | undefined>(true);\n readonly ignoreShowBorderErrorToolbar = input<boolean>();\n\n //endregion\n\n //region Outputs\n readonly outShowPopupEditLink = output<{\n dataLink: IQuill2xLink;\n callback: (linkEdit: { title: string; link: string }) => Promise<void>;\n }>();\n readonly outMessageError = output<string>();\n readonly outBlur = output<void>();\n readonly outFocus = output<void>();\n readonly outChange = output<string>();\n readonly outSelectionChange = output<IQuill2xSelectionChange>();\n readonly outTextChange = output<IQuill2xTextChange>();\n readonly outContextMenu = output<MouseEvent>();\n readonly outFunctionsControl = output<IQuill2xFunctionControlEvent>();\n //endregion\n\n //region ViewChild\n private readonly htmlContainer = viewChild.required<ElementRef<HTMLDivElement>>('htmlContainer');\n private readonly quillBodyContainer = viewChild.required<ElementRef<HTMLDivElement>>('snowContainer');\n private readonly toolbarContainer = viewChild.required<ElementRef<HTMLDivElement>>('toolbarContainer');\n private readonly inputLinkRef = viewChild.required<LibsUiComponentsPopoverComponent>('inputLinkRef');\n //endregion\n\n //region Inject\n private readonly destroyRef = inject(DestroyRef);\n private readonly notificationService = inject(LibsUiNotificationService);\n private readonly translate = inject(TranslateService);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly dynamicComponentService = inject(LibsUiDynamicComponentService);\n //endregion\n\n constructor() {\n effect(() => {\n if (this.fontSizeDefault()) {\n untracked(() => {\n this.fontSize.set({ value: this.fontSizeDefault() });\n this.handlerValueChangeFontSize();\n });\n }\n });\n\n effect(() => {\n const elementEditor = this.quillBodyContainer().nativeElement.getElementsByClassName('ql-editor')?.[0] as HTMLElement;\n if (this.heightEditorContentDefault()) {\n untracked(() => {\n if (elementEditor) {\n elementEditor.style.height = `${this.heightEditorContentDefault()}px`;\n }\n });\n }\n if (this.minHeightEditorContentDefault()) {\n untracked(() => {\n if (elementEditor) {\n elementEditor.style.minHeight = `${this.minHeightEditorContentDefault()}px`;\n }\n });\n }\n if (this.maxHeightEditorContentDefault()) {\n untracked(() => {\n if (elementEditor) {\n elementEditor.style.maxHeight = `${this.maxHeightEditorContentDefault()}px`;\n }\n });\n }\n });\n\n effect(() => {\n const zIndex = get(this.quillCustomConfig, 'toolbar.positionFixed.zIndex');\n\n if (!zIndex) {\n return;\n }\n\n untracked(() => {\n const styles = this.getStylesToolbar();\n styles.update((styles) => ({ ...styles, zIndex: zIndex }));\n });\n });\n\n effect(() => {\n const width = get(this.quillCustomConfig, 'toolbar.positionFixed.width');\n\n if (!width) {\n return;\n }\n\n untracked(() => {\n const styles = this.getStylesToolbar();\n styles.update((styles) => ({ ...styles, width: `${width}px` }));\n this.calculatorToolbar();\n });\n });\n\n effect(() => {\n const gapVertical = get(this.quillCustomConfig, 'toolbar.positionFixed.gapVertical');\n const gapHorizontal = get(this.quillCustomConfig, 'toolbar.positionFixed.gapHorizontal');\n\n if (!gapVertical && !gapHorizontal) {\n return;\n }\n\n untracked(() => {\n const styles = this.getStylesToolbar();\n\n if (styles().top) {\n styles.update((styles) => ({ ...styles, top: Number(styles.top as string) + (gapVertical || 0), left: Number(styles.left as string) + (gapHorizontal || 0) }));\n }\n });\n });\n\n effect(() => {\n const elementShow = get(this.quillCustomConfig, 'toolbar.positionFixed.elementShow');\n const event = get(this.quillCustomConfig, 'toolbar.positionFixed.event');\n untracked(() => {\n if (!elementShow || !event) {\n return;\n }\n elementShow.classList.add('cursor-pointer');\n const styles = this.getStylesToolbar();\n if (this.subscriptionElementShowToolbar) {\n this.subscriptionElementShowToolbar.unsubscribe();\n }\n\n styles.update((styles) => ({ ...styles, display: 'none' }));\n this.subscriptionElementShowToolbar = fromEvent(elementShow, event)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handlerToolbarElementVisibility(styles, elementShow));\n });\n });\n }\n\n async ngOnInit() {\n const type = get(this.quillCustomConfig(), 'toolbar.type', 'default');\n const hasIconImage = this.uploadImageConfig().showIcon ?? false;\n const hasIconPersonalize = !!this.templateToolBarPersonalize();\n this.toolbarOptionsConfig.set(get(this.quillCustomConfig(), 'toolbar.options', toolBarOptions(type, hasIconImage, hasIconPersonalize)));\n\n this.calculatorToolbar();\n registerQuill2x();\n this.blotsRegister()?.forEach((item) => {\n Quill2x.register(item.component, true);\n });\n\n this.updateHandlerFunction();\n\n const options = {\n theme: 'snow',\n placeholder: this.translate.instant(this.placeholder()),\n readOnly: this.readonly(),\n modules: {\n toolbar: {\n container: this.toolbarContainer().nativeElement,\n handlers: this.handlers(),\n },\n resize: this.resizeImagePlugin()\n ? {\n locale: {\n altTip: this.translate.instant('i18n_keep_alt_key_to_change_the_ratio_when_changing_the_size'),\n inputTip: this.translate.instant('i18n_press_enter_to_confirm'),\n floatLeft: this.translate.instant('i18n_left_align'),\n floatRight: this.translate.instant('i18n_right_align'),\n center: this.translate.instant('i18n_center_align'),\n restore: this.translate.instant('i18n_restore_to_default'),\n },\n }\n : undefined,\n table: true,\n clipboard: {\n matchers: [\n [\n Node.TEXT_NODE,\n (node: { data: string }) => {\n if (/^\\s+$/.test(node.data)) {\n return { ops: [] }; // bỏ toàn bộ whitespace text node\n }\n return new Delta().insert(node.data);\n },\n ],\n this.removeNearWhiteColorsOnPaste()\n ? [\n Node.ELEMENT_NODE,\n (node: HTMLElement, delta: any) => {\n const style = node.getAttribute('style');\n if (style && this.isPaste()) {\n const newOps = delta.ops.map((op: any) => {\n if (op.attributes) {\n const newAttrs = { ...op.attributes };\n const color = newAttrs.color as string;\n const background = newAttrs.background as string;\n\n if (color && isNearWhite(color)) {\n delete newAttrs.color;\n }\n\n if (background && isNearWhite(background)) {\n delete newAttrs.background;\n }\n\n return { ...op, attributes: Object.keys(newAttrs).length ? newAttrs : undefined };\n }\n return op;\n });\n\n return new Delta(newOps);\n }\n return delta;\n },\n ]\n : [],\n ],\n },\n keyboard: {\n bindings: {\n backspace: {\n key: UtilsKeyCodeConstant.BACKSPACE,\n handler: (range: Range) => this.noPreventEmbedDeletion(range),\n },\n delete: {\n key: UtilsKeyCodeConstant.DELETE,\n handler: (range: Range) => this.noPreventEmbedDeletion(range),\n },\n enter: {\n key: 13,\n handler: () => !this.showMention(),\n },\n },\n },\n history: {\n delay: 2000,\n maxStack: 500,\n userOnly: true,\n },\n },\n } as const;\n\n this.quill = new Quill2x(this.quillBodyContainer().nativeElement, options);\n this.quill?.on('text-change', this.handlerTextChangeBind);\n this.quill?.on('selection-change', this.handlerSelectionChangeBind);\n\n fromEvent<ClipboardEvent>(this.quill?.root, 'copy').pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.handlerCopy.bind(this));\n fromEvent<ClipboardEvent>(this.quill?.root, 'paste', { capture: true }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.handlerPaste.bind(this));\n fromEvent<MouseEvent>(this.quillBodyContainer()?.nativeElement, 'contextmenu')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((e) => this.outContextMenu.emit(e));\n fromEvent<MouseEvent>(window, 'resize')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.calculatorToolbar(true));\n\n this.outFunctionsControl.emit(this.FunctionsControl);\n await this.setContent(convertStandardListToQuill2x((this.item()[this.fieldBind()] as string) || ''));\n\n timer(this.autoFocus() ? 0 : 250)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.displayEditor.set(true));\n\n this.setStyleForContent();\n\n if (this.autoFocus()) {\n timer(this.focusTimerOnInit() + 250)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.focus());\n }\n createContextMenuOptionTable(this.quill, this.translate);\n enableTableSelection(this.quill.root);\n getAllTablesWithSpan(this.quill);\n\n const rootElement = this.quill?.root;\n if (!rootElement) {\n return;\n }\n\n merge(fromEvent(rootElement, 'compositionstart'), fromEvent(rootElement, 'compositionend'))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((e) => {\n if (e.type === 'compositionstart') {\n rootElement.classList.remove('ql-blank');\n return;\n }\n if (isEmptyQuill2x(this.quill)) {\n rootElement.classList.add('ql-blank');\n return;\n }\n rootElement.classList.remove('ql-blank');\n });\n }\n\n public get FunctionsControl(): IQuill2xFunctionControlEvent {\n return {\n quill: () => this.quill ?? undefined,\n checkIsValid: this.validate.bind(this),\n refreshItemValue: this.updateValueByRootQuillHtml.bind(this),\n setContent: (content: string) => this.setContent(convertStandardListToQuill2x(content)),\n insertText: this.insertText.bind(this),\n insertLink: this.insertLink.bind(this),\n insertImage: this.insertImage.bind(this),\n setFontSize: async (size: number) => this.quill?.format('size', `${size}px`),\n setColor: async (color: string) => this.quill?.format('color', color),\n setBackground: async (color: string) => this.quill?.format('background', color),\n setMessageError: async (message: string) => this.messageError.set(message),\n reCalculatorToolbar: async () => this.calculatorToolbar(true),\n updatePositionToolbar: async () => this.updatePositionToolbar(),\n };\n }\n\n //region handler Event HTML\n\n protected handlerChangeShowMoreAction(event: Event) {\n event.stopPropagation();\n this.showMoreAction.update((showMoreAction) => !showMoreAction);\n }\n\n protected handleSelectFont(event: IEmitSelectKey | undefined) {\n this.fontSelected.set(event);\n this.quill?.format('font', event?.key as string);\n }\n\n protected handleSelectHeader(event: IEmitSelectKey | undefined) {\n this.headerSelected.set(event);\n this.quill?.format('header', event?.key as string);\n }\n\n protected handlerValueChangeFontSize(event?: IFocusAndBlurEvent) {\n if (!event || event?.name === 'blur') {\n this.quill?.format('size', `${this.fontSize().value}px`);\n }\n }\n\n protected handleSelectAlign(event: IEmitSelectKey | undefined) {\n this.alignSelected.set(event);\n this.quill?.format('align', event?.key as string);\n }\n\n protected handlerSetFormat(type: string, data: IOutputColorChangeMultipleType) {\n if (!data.alpha) {\n this.quill?.format(type, undefined);\n return;\n }\n this.quill?.format(type, data.hex);\n }\n\n protected handlerInsertEmoji(emoji: unknown) {\n this.insertText(emoji as string, undefined, true);\n }\n\n protected handlerUnlink(event: Event) {\n event.stopPropagation();\n const link = this.link();\n this.quill?.formatText(link.range.index, link.range.length, { link: false });\n this.inputLinkRef().FunctionsControl?.removePopoverOverlay();\n }\n\n protected handlerEditLink(event: Event) {\n event.stopPropagation();\n const link = this.link();\n if (this.ignoreShowPopupEditLink()) {\n this.outShowPopupEditLink.emit({\n dataLink: link,\n callback: async (linkEdit: { title: string; link: string }) => {\n if (link instanceof Object && link.url) {\n this.quill?.deleteText(link.range.index, link.range.length, Quill2x.sources.USER);\n this.quill?.insertText(link.range.index, linkEdit.title, 'link', linkEdit.link);\n return;\n }\n this.insertLink(linkEdit.title, linkEdit.link);\n },\n });\n return;\n }\n this.handleShowUploadLink(link);\n this.inputLinkRef().FunctionsControl?.removePopoverOverlay();\n }\n\n protected handleToggleMention(show: boolean) {\n this.showMention.set(show);\n }\n\n protected handlerInsertMention(data: IMentionInsert) {\n this.insertMention(data);\n }\n\n //endregion\n\n //region Private Method\n\n //region Quill Methods\n private handleTable() {\n if (!this.quill) return;\n const button = this.htmlContainer().nativeElement.querySelector?.('button.ql-table') as HTMLElement | null;\n createTableSelector(this.quill, button, this.translate);\n }\n\n private handleUndo() {\n this.quill?.history?.undo();\n }\n\n private handleRedo() {\n this.quill?.history?.redo();\n }\n\n private handlerShowUploadImage() {\n if (this.uploadImageConfig().modeCustom) {\n this.uploadImageComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsQuillUploadImageComponent));\n const instance = this.uploadImageComponentRef()?.instance;\n this.uploadImageComponentRef()?.setInput('uploadImageConfig', this.uploadImageConfig());\n this.uploadImageComponentRef()?.setInput('ignoreCommunicateMicroEvent', this.ignoreCommunicateMicroEventPopup());\n instance?.outClose.subscribe((link: string | void) => {\n this.dynamicComponentService.delete(this.uploadImageComponentRef());\n if (link) {\n this.insertImage(link);\n }\n });\n this.dynamicComponentService.addToBody(this.uploadImageComponentRef());\n\n return;\n }\n\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('accept', 'image/*');\n input.click();\n input.onchange = async () => {\n await this.uploadImagesAndInsert(input?.files);\n };\n }\n\n private async insertText(content: string, index?: number, focusLastValueInsert?: boolean) {\n index = index ?? this.quill?.getSelection(true).index;\n if (!isNil(index)) {\n this.quill?.insertText(index, content, Quill2x.sources.USER);\n if (focusLastValueInsert) {\n await lastValueFrom(timer(0));\n this.quill?.setSelection(index + content.length, 0, Quill2x.sources.USER);\n }\n }\n }\n\n private handlerSelectionChange(range: Range, oldRange: Range, source: EmitterSource) {\n if (!this.quill || this.readonly()) {\n return;\n }\n if (range === null && oldRange !== null) {\n this.outBlur.emit();\n return;\n }\n if (range !== null && oldRange === null) {\n this.outFocus.emit();\n return;\n }\n\n const format = this.updateStateToolbarByFormatInCursor();\n this.outSelectionChange.emit({\n quill: this.quill,\n range,\n oldRange,\n source,\n });\n\n if (range.length !== 0 || !format?.link || source !== 'user') {\n return;\n }\n\n this.processLinkOnCursorChange(range);\n }\n\n private processLinkOnCursorChange(range: Range) {\n const selection = document.getSelection();\n const anchorNode = selection?.anchorNode;\n let linkNode = anchorNode as HTMLAnchorElement;\n while (linkNode && linkNode.tagName !== 'A') {\n linkNode = linkNode.parentNode as HTMLAnchorElement;\n }\n\n if (!linkNode || linkNode.tagName !== 'A') {\n return;\n }\n\n const linkText = linkNode.innerText;\n const linksIndices = this.findLinkIndices(linkText, range.index);\n if (!linksIndices.length) {\n return;\n }\n const rangeIndex = linksIndices[linksIndices.length - 1];\n const countImage = this.adjustIndexForImages(rangeIndex);\n setTimeout(() => {\n this.link.set({\n title: linkText,\n url: linkNode.href,\n range: {\n index: rangeIndex + countImage,\n length: linkText.length,\n },\n });\n clearTimeout(this.timeoutRemoveLink());\n this.inputLinkRef().FunctionsControl?.showPopover(linkNode);\n });\n }\n\n private findLinkIndices(linkText: string, rangeIndex: number): number[] {\n const linksIndices: number[] = [];\n let indexReturn: number | undefined = -1;\n while (!isNil(indexReturn) && indexReturn < rangeIndex) {\n const startSearch = linksIndices.length > 0 ? linksIndices[linksIndices.length - 1] + linkText.length : 0;\n const linkIndex = this.quill?.getText()?.indexOf(linkText, startSearch);\n if (isNil(linkIndex) || linkIndex === -1) {\n indexReturn = undefined;\n continue;\n }\n linksIndices.push(linkIndex);\n indexReturn = linkIndex + linkText.length;\n }\n return linksIndices;\n }\n\n private handlerCopy(e: ClipboardEvent): void {\n if (!this.quill) return;\n const sel = this.quill.getSelection();\n if (!sel || sel.length === 0) return;\n\n e.preventDefault();\n const delta = this.quill.getContents(sel.index, sel.length);\n const html2x = getHTMLFromDeltaOfQuill2x(delta);\n\n if (e.clipboardData) {\n e.clipboardData.setData('text/html', html2x);\n }\n }\n\n private async handlerPaste(event: ClipboardEvent) {\n this.isPaste.set(true);\n setTimeout(() => this.isPaste.set(false), 0);\n if (!event?.clipboardData) {\n return;\n }\n const files = event.clipboardData.files;\n if (!files.length) {\n return;\n }\n event.preventDefault();\n await this.uploadImagesAndInsert(files);\n }\n\n private handlerTextChange(event: any, _: any, source: EmitterSource) {\n if (!this.quill) return;\n this.outTextChange.emit({\n quill: this.quill,\n delta: event,\n });\n\n this.detectLink(source);\n setTimeout(() => {\n this.updateStateToolbarByFormatInCursor();\n\n if (event?.ops[1]?.insert === '\\n') {\n const range = { index: event?.ops[0].retain as number };\n const currentLeaf = this.quill?.getLeaf(range.index)[0] as any;\n const nextLeaf = this.quill?.getLeaf(range.index + 1)[0] as any;\n this.quill?.insertEmbed(range.index, 'break', true, 'user');\n if (nextLeaf === null || currentLeaf.parent !== nextLeaf.parent) {\n this.quill?.insertEmbed(range.index, 'break', true, 'user');\n }\n this.quill?.setSelection((range.index || 0) + 1, 0, Quill2x.sources.SILENT);\n }\n });\n this.updateValueByRootQuillHtml();\n }\n\n //endregion\n\n private updateStateToolbarByFormatInCursor(): { [format: string]: unknown } | undefined {\n try {\n const format = this.quill?.getFormat();\n if (format) {\n this.setFontSizeSelected(format);\n this.setFontSelected(format);\n this.setColorSelected(format);\n this.listCheckboxSelected.set(format?.list === 'unchecked' || format?.list === 'checked');\n this.adjustSelected.set(format?.align as string);\n }\n return format;\n } catch (error) {\n console.log(error);\n\n return undefined;\n }\n }\n private async validate() {\n this.messageError.set('');\n const validRequired = this.validRequired();\n const item = this.item();\n const fieldNameBind = this.fieldBind();\n const value = get<unknown>(item, fieldNameBind);\n if (validRequired && validRequired.isRequired && !this.readonly() && isEmptyQuill2x(this.quill)) {\n this.messageError.set(validRequired.message || ERROR_MESSAGE_EMPTY_VALID);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n const validMinLength = this.validMinLength();\n if (validMinLength && fieldNameBind && value && value.trim().length < validMinLength.length) {\n this.messageError.set(validMinLength.message || ERROR_MESSAGE_MIN_LENGTH);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n const validMaxLength = this.validMaxLength();\n if (validMaxLength && fieldNameBind && value && value.trim().length > this.validMaxLength.length) {\n this.messageError.set(validMaxLength.message || ERROR_MESSAGE_MAX_LENGTH);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n this.outMessageError.emit(this.messageError());\n return true;\n }\n\n private updateHandlerFunction() {\n const handlersExpand = this.handlersExpand();\n\n if (handlersExpand?.length) {\n handlersExpand.forEach((element) => {\n if (element.title && element.action) {\n this.handlers.update((item) => ({ ...item, [element.title]: element.action }));\n }\n });\n }\n }\n\n private noPreventEmbedDeletion(range: Range): boolean {\n if (!this.quill) return false;\n const delta = this.quill?.getContents(range.index, 1);\n\n if (delta?.ops.some((option) => this.blotsRegister()?.find((item) => get(option.insert, item.component['blotName']) && item.ignoreDelete))) {\n return false; // Ngăn không cho Quill xử lý xóa\n }\n\n return true;\n }\n\n private setFontSizeSelected(format: Record<string, unknown>) {\n const fontSize = this.extractFontSize(format?.size);\n if (fontSize === null) {\n this.fontSize.set({ value: this.fontSizeDefault() });\n return;\n }\n this.fontSize.set({ value: fontSize });\n }\n\n private extractFontSize(raw: unknown): number | null {\n if (typeof raw === 'number') return isNaN(raw) ? null : raw;\n if (typeof raw === 'string') {\n const num = parseFloat(raw.replace('px', '').trim());\n return isNaN(num) ? null : num;\n }\n return null;\n }\n\n private setFontSelected(format: Record<string, unknown>) {\n const font = listFont().find((item) => item.key === format.font);\n if (!font) {\n this.fontSelected.set({ key: '', item: listFont().find((item) => item.key === '') });\n return;\n }\n this.fontSelected.set({ key: format.font, item: font });\n }\n\n private setColorSelected(format: Record<string, unknown>) {\n this.colorSelected.set(format?.color as string);\n this.backgroundSelected.set(format?.background as string);\n }\n\n private async calculatorToolbar(resetTotalRecall?: boolean) {\n clearTimeout(this.timerCalculatorToolbar());\n if (resetTotalRecall) {\n this.totalRecallCalculatorToolbar.set(0);\n }\n this.cdr.detectChanges();\n const toolbarPositionFixed = get(this.quillCustomConfig(), 'toolbar.positionFixed.width', 0);\n const toolbarWidth = toolbarPositionFixed || this.toolbarContainer().nativeElement.offsetWidth || 0;\n let totalWidth = 84;\n if (!this.isCalculatorToolbarSuccess() && this.totalRecallCalculatorToolbar() < 10 && toolbarWidth < get(this.quillCustomConfig(), 'toolbar.lessWidthToolbarRecallCalculator', totalWidth)) {\n this.totalRecallCalculatorToolbar.update((val) => val + 1);\n this.timerCalculatorToolbar.set(\n setTimeout(() => {\n this.calculatorToolbar();\n }, 250)\n );\n\n return;\n }\n this.isCalculatorToolbarSuccess.set(true);\n this.toolbarOptionsConfig.update((configs) => {\n configs.forEach((item, index) => {\n item.display = true;\n totalWidth += item.width;\n if (item.type === 'line') {\n const nextItemWidth = totalWidth + this.toolbarOptionsConfig()[+index + 1].width;\n const preItem = this.toolbarOptionsConfig()[+index - 1];\n if (nextItemWidth > toolbarWidth && preItem.display === true) {\n item.display = undefined;\n return;\n }\n }\n if (totalWidth > toolbarWidth) {\n item.display = false;\n }\n });\n return [...configs];\n });\n this.cdr.detectChanges();\n }\n\n private setStyleForContent() {\n const stylesConvertInline = getStylesConvertInline();\n this.blotsRegister()?.forEach((item) => {\n stylesConvertInline.push({\n selector: `.${item.className}`,\n styles: item.style.split(';').map((style) => {\n const [key, value] = style.split(':');\n return { key, value };\n }),\n });\n });\n stylesConvertInline.forEach((item) => {\n const elements = this.quill?.root.querySelectorAll<HTMLElement>(item.selector);\n elements?.forEach((element) => {\n element.style.setProperty('font-family', 'inherit');\n\n item.styles.forEach((style) => {\n element.style.setProperty(style.key, style.value);\n });\n });\n });\n }\n\n private async setContent(content: string) {\n if (!this.quill) {\n return;\n }\n const contentXssFilter = await xssFilter(this.removeUnwantedPart(content || ''));\n this.quill.clipboard.dangerouslyPasteHTML(contentXssFilter, Quill2x.sources.SILENT);\n this.quill.blur();\n }\n\n private adjustIndexForImages(index: number) {\n const content = this.quill?.root;\n let imageCount = 0;\n let adjustedIndex = 0;\n const adjustTextIndex = (node: Node) => {\n if (adjustedIndex > index) {\n return;\n }\n if (node.nodeType === Node.TEXT_NODE) {\n adjustedIndex += node.textContent?.length || 0;\n return;\n }\n if (node.nodeType === Node.ELEMENT_NODE && node.nodeName === 'IMG') {\n if (adjustedIndex <= index) {\n imageCount++;\n }\n return;\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n Array.from(node.childNodes).forEach(adjustTextIndex);\n }\n };\n adjustTextIndex(content as Node);\n return imageCount;\n }\n\n private async uploadImagesAndInsert(files?: FileList | null) {\n if (!files) {\n return;\n }\n const maxImageSize = this.uploadImageConfig()?.maxImageSize || 5 * 1024 * 1024;\n const images = Array.from(files).filter((file) => file && file.type.split('/')[0] === 'image' && (!this.uploadImageConfig().maxImageSize || file.size <= maxImageSize));\n if (!images.length) {\n this.notificationService.showCompTypeTextWarning(this.translate.instant('i18n_note_upload_image_volume', { value: getLabelBySizeFile(maxImageSize) }), { timeRemove: 8000 });\n return;\n }\n try {\n this.loadingUploadImage.set(true);\n const indexInsert = this.quill?.getSelection(true).index;\n const links = await this.uploadImageConfig().functionUploadImage?.(images);\n if (!links?.length) {\n return;\n }\n links.forEach((link) => {\n if (!link || (this.uploadImageConfig().onlyAcceptImageHttpsLink && (link instanceof ArrayBuffer || !new RegExp(patternUrl()).test(link)))) {\n return;\n }\n this.insertImage(link as string, indexInsert);\n });\n } catch (error) {\n console.error(error);\n } finally {\n this.loadingUploadImage.set(false);\n }\n }\n\n private async insertImage(content: string, index?: number) {\n const selection = index ?? this.quill?.getSelection(true).index;\n if (!isNil(selection)) {\n this.quill?.insertEmbed(selection, 'image', content);\n this.quill?.setSelection(selection + 1, 0);\n }\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n this.timeoutRemoveLink.set(\n setTimeout(() => {\n if (event === 'remove') {\n this.link.set(linkDefault());\n }\n }, 100)\n );\n }\n\n private async insertLink(text: string, url: string, index?: number) {\n const selection = this.quill?.getSelection(true);\n const indexInsert = index ?? selection?.index;\n if (selection?.length) {\n this.quill?.deleteText(selection.index, selection.length, Quill2x.sources.USER);\n }\n if (!isNil(indexInsert)) {\n this.quill?.insertText(indexInsert, text, {\n link: url,\n color: false,\n });\n }\n }\n\n private handleShowUploadLink(event: unknown) {\n this.addEditLinkComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsQuillLinkComponent));\n const instance = this.addEditLinkComponentRef()?.instance;\n const selection = this.quill?.getSelection();\n const textSelected = selection?.length ? this.quill?.getText(selection?.index, selection?.length) : '';\n const data = event as IQuill2xLink | undefined;\n this.addEditLinkComponentRef()?.setInput('zIndex', this.zIndex());\n this.addEditLinkComponentRef()?.setInput('title', data?.title || textSelected);\n this.addEditLinkComponentRef()?.setInput('link', data?.url || '');\n this.addEditLinkComponentRef()?.setInput('ignoreCommunicateMicroEvent', this.ignoreCommunicateMicroEventPopup());\n instance?.outSaveLink.subscribe((item: { title: string; link: string }) => {\n if (data instanceof Object && data.url) {\n this.quill?.deleteText(data.range.index, data.range.length, Quill2x.sources.USER);\n this.quill?.insertText(data.range.index, item.title, 'link', item.link);\n return;\n }\n this.insertLink(item.title, item.link);\n });\n instance?.outClose.subscribe(() => this.dynamicComponentService.delete(this.addEditLinkComponentRef()));\n this.dynamicComponentService.addToBody(this.addEditLinkComponentRef());\n }\n\n private insertMention(event: IMentionInsert) {\n const range = this.quill?.getSelection();\n if (!range) {\n return;\n }\n const indexSubtract = this.quill?.getText(range.index - 1, 1)?.includes('@') ? 0 : 1;\n const cursorPos = range.index - indexSubtract;\n const startPosInsert = cursorPos - event.lengthKey;\n this.quill?.deleteText(startPosInsert, event.lengthKey, Quill2x.sources.SILENT);\n this.quill?.insertEmbed(startPosInsert, 'mention', event.data, Quill2x.sources.SILENT);\n this.insertText(' ', startPosInsert + 1);\n if (indexSubtract) {\n this.quill?.deleteText(startPosInsert + 3, 1, Quill2x.sources.SILENT);\n }\n this.quill?.setSelection(startPosInsert + 2, 0, Quill2x.sources.SILENT);\n }\n\n private updateValueByRootQuillHtml() {\n if (isEmptyQuill2x(this.quill)) {\n set<unknown>(this.item(), this.fieldBind(), '');\n this.validate();\n this.outChange.emit(get<unknown>(this.item, this.fieldBind()));\n return;\n }\n this.convertInnerHTMLAndSetValue();\n this.validate();\n this.outChange.emit(get<unknown>(this.item, this.fieldBind()));\n }\n\n private convertInnerHTMLAndSetValue() {\n this.setStyleForContent();\n set<unknown>(this.item(), this.fieldBind(), convertStandardList(this.removeUnwantedPart(this.quill?.root.innerHTML || '')));\n }\n\n private removeUnwantedPart(html: string) {\n if (!html) {\n return '';\n }\n return html\n .replace(/^\\s*<p><br><\\/p>/, '')\n .replace(/<div><br><\\/div>/gi, '')\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n }\n\n private detectLink(source: EmitterSource) {\n if (source !== 'user') {\n return;\n }\n const fullText = this.quill?.getText();\n const indexes = this.getIndexUrlMatch(fullText || '');\n if (isNil(fullText) || !indexes.length) {\n return;\n }\n indexes.forEach((item) => {\n const textSelection = this.quill?.getText(item.start, item.end - item.start);\n if (!textSelection) {\n return;\n }\n const indexof = textSelection.search(patternProtocolUrl());\n if (indexof < 0) {\n return;\n }\n this.quill?.formatText(item.start + indexof, item.text.length, { link: item.text }, Quill2x.sources.SILENT);\n });\n }\n\n private getIndexUrlMatch(fullText: string): Array<{ start: number; end: number; text: string }> {\n const urlRegex = new RegExp(patternUrl().source.slice(1, -1), 'ig');\n const textMatch: string[] = [];\n let execResult: RegExpExecArray | null;\n while ((execResult = urlRegex.exec(fullText)) !== null) {\n textMatch.push(execResult[0]);\n }\n const indexes: Array<{ start: number; end: number; text: string; preCharacter: string }> = [];\n let index = 0;\n textMatch.forEach((text) => {\n const indexOfTextMatch = fullText.indexOf(text, index);\n\n if (indexOfTextMatch === 0) {\n index = indexOfTextMatch + text.length;\n indexes.push({ start: indexOfTextMatch, end: indexOfTextMatch + text.length, text, preCharacter: fullText[indexOfTextMatch] });\n return;\n }\n const indexPreCharacter = indexOfTextMatch - 1;\n index = indexOfTextMatch + text.length;\n if (indexOfTextMatch < 0 || !new RegExp(/^\\s|^\\t|^\\n/).test(fullText[indexPreCharacter] || '')) {\n return;\n }\n indexes.push({ start: indexOfTextMatch, end: indexOfTextMatch + text.length, text, preCharacter: fullText[indexPreCharacter] });\n });\n\n return indexes;\n }\n\n private focus() {\n if (this.focusBottom()) {\n this.quill?.setSelection(this.quill.root.innerHTML.length, 0, Quill2x.sources.SILENT);\n return;\n }\n this.quill?.setSelection(0, 0, Quill2x.sources.SILENT);\n }\n\n private getStylesToolbar(): WritableSignal<Record<string, unknown>> {\n let styles = get(this.quillCustomConfig, 'toolbar.styles', undefined, true);\n if (!styles) {\n styles = signal({});\n set(this.quillCustomConfig, 'toolbar.styles', styles);\n }\n return styles;\n }\n\n private updatePositionToolbar() {\n const elementShow = get(this.quillCustomConfig, 'toolbar.positionFixed.elementShow');\n const styles = this.getStylesToolbar();\n\n if (!elementShow || styles().display === 'none') {\n return;\n }\n\n this.updateStylesToolbar(elementShow, styles);\n }\n\n private handlerToolbarElementVisibility(styles: WritableSignal<Record<string, unknown>>, elementShow: HTMLElement) {\n if (styles().display === 'flex') {\n styles.update((s) => ({ ...s, display: 'none' }));\n this.showMoreAction.set(false);\n return;\n }\n this.updateStylesToolbar(elementShow, styles);\n }\n\n private updateStylesToolbar(elementShow: HTMLElement, styles: WritableSignal<Record<string, unknown>>) {\n const gapVertical = get(this.quillCustomConfig, 'toolbar.positionFixed.gapVertical');\n const gapHorizontal = get(this.quillCustomConfig, 'toolbar.positionFixed.gapHorizontal');\n const boundingClientRect = elementShow.getBoundingClientRect();\n\n const multiplier = get(this.quillCustomConfig, 'toolbar.positionFixed.position', 'top') === 'top' ? -1 : 1;\n\n styles.update((styles) => ({\n ...styles,\n display: 'flex',\n position: 'fixed',\n top: `${boundingClientRect.top + (gapVertical || 2) * multiplier + 44 * multiplier}px`,\n left: `${boundingClientRect.left + (gapHorizontal || 0)}px`,\n }));\n }\n\n //endregion\n\n ngOnDestroy(): void {\n clearTimeout(this.timerSetFontSize());\n clearTimeout(this.timerCalculatorToolbar());\n clearTimeout(this.timeoutRemoveLink());\n this.subscriptionElementShowToolbar?.unsubscribe();\n this.dynamicComponentService.delete(this.addEditLinkComponentRef());\n this.dynamicComponentService.delete(this.uploadImageComponentRef());\n this.quill?.off('text-change', this.handlerTextChangeBind);\n this.quill?.off('selection-change', this.handlerSelectionChangeBind);\n const editorDom = this.quill?.root.parentElement;\n if (editorDom?.parentElement) {\n editorDom.parentElement.removeChild(editorDom);\n }\n this.quill = null;\n }\n}\n","<div\n #htmlContainer\n [class]=\"containerClass()\"\n [style.--resize]=\"resize()\">\n @if (label(); as label) {\n <libs_ui-components-label\n [classInclude]=\"label.classInclude\"\n [required]=\"label.required\"\n [labelLeft]=\"label.labelLeft\" />\n }\n <div\n #toolbarContainer\n class=\"relative h-[44px]\"\n [class.hidden]=\"!displayToolbar()\"\n [ngStyle]=\"quillCustomConfig()?.toolbar?.()?.styles?.() || {}\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\" />\n </div>\n <div\n #snowContainer\n LibsUiComponentsScrollOverlayDirective\n LibsUiComponentsInputsMentionDirective\n [options]=\"{ ignoreTransparentScrollBarColorDefault: resize() !== 'none' }\"\n [mentionConfig]=\"dataConfigMention()\"\n (outToggle)=\"handleToggleMention($event)\"\n (outInsertMention)=\"handlerInsertMention($event)\"\n [class]=\"containerEditorClass()\"></div>\n @if (messageError() && showErrorLabel()) {\n <div class=\"flex items-center mt-[8px]\">\n <span class=\"text-[#ff5454] libs-ui-font-h7r\">{{ messageError() | translate }}</span>\n </div>\n }\n</div>\n\n<ng-template #toolbarTemplate>\n <div\n [class]=\"containerToolbarClass()\"\n #toolbarItems>\n @if (displaySkeletonToolbar()) {\n <libs_ui-components-skeleton\n class=\"w-full h-full\"\n [config]=\"{\n rows: [\n {\n item: { classIncludeItem: '!rounded-none' },\n },\n ],\n }\" />\n }\n <div class=\"ql-formats items-center px-[16px] py-[4px] !flex !mr-0\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div\n class=\"items-center\"\n [class.hidden]=\"!option.display\"\n [class.flex]=\"option.display\">\n <ng-container *ngTemplateOutlet=\"itemToolbarTemplate; context: { option, $index, $last }\" />\n </div>\n }\n <div class=\"relative\">\n @if (showButtonMoreToolbar()) {\n <libs_ui-components-buttons-button\n [type]=\"showMoreAction() ? 'button-secondary' : 'button-third'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[1px] !h-[20px] ml-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-move-right rotate-90'\"\n (outClick)=\"handlerChangeShowMoreAction($event)\" />\n }\n <!-- Build toolbar khi click xem thêm-->\n <div\n [class.hidden]=\"!showMoreAction()\"\n class=\"absolute bg-[#ffffff] shadow-[0px_4px_16px_0px_rgba(0,20,51,0.10)] z-[1] flex items-center pl-[8px] pr-[16px] py-[4px] rounded-[8px] top-[31px] right-[0px]\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div\n class=\"items-center\"\n [class.hidden]=\"option.display !== false\"\n [class.flex]=\"option.display === false\">\n <ng-container *ngTemplateOutlet=\"itemToolbarTemplate; context: { option, $index, $last }\" />\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template\n #itemToolbarTemplate\n let-$index=\"$index\"\n let-$last=\"$last\"\n let-option=\"option\">\n @if (option.type === 'undo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_undo', zIndex: zIndex() }\"\n class=\"ql-undo\"></button>\n </div>\n }\n @if (option.type === 'redo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_redo', zIndex: zIndex() }\"\n class=\"ql-redo\"></button>\n </div>\n }\n @if (option.type === 'fontFamily') {\n <div\n class=\"relative w-[132px] h-full rounded-[4px] libs-ui-border-general {{ option.classInclude || 'mx-[8px]' }}\"\n [class.bg-white]=\"!readonly() && !loadingUploadImage()\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigFont()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [readonly]=\"readonly()\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectFont($event)\">\n @if (fontSelected(); as fontSelected) {\n <div class=\"flex items-center cursor-pointer py-[7px] libs-ui-font-h5r pl-[16px] pr-[40px]\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ labelFontSelectedComputed() }}\n </libs_ui-components-popover>\n <i class=\"libs-ui-icon-move-right rotate-90 absolute right-[12px] text-[#6a7383] text-[16px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </div>\n }\n @if (option.type === 'header') {\n <div\n class=\"relative w-[138px] h-full rounded-[4px] libs-ui-border-general {{ option.classInclude || 'mx-[8px]' }}\"\n [class.bg-white]=\"!readonly() && !loadingUploadImage()\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [popoverCustomConfig]=\"{ widthByParent: false, width: 200, classInclude: 'h-[254px]', classIncludeOverlayBody: 'h-full', position: { mode: 'start', distance: -8 } }\"\n [listConfig]=\"listConfigHeader()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [readonly]=\"readonly()\"\n [listMaxItemShow]=\"-1\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectHeader($event)\">\n @if (headerSelected(); as headerSelected) {\n <div class=\"flex items-center cursor-pointer py-[7px] libs-ui-font-h5r pl-[16px] pr-[40px] {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ labelHeaderSelectedComputed() }}\n </libs_ui-components-popover>\n <i class=\"libs-ui-icon-move-right rotate-90 absolute right-[12px] text-[#6a7383] text-[16px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </div>\n }\n @if (option.type === 'fontSize') {\n <div class=\" {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-inputs-valid\n #inputSizeRef\n [dataType]=\"'int'\"\n [(item)]=\"fontSize\"\n [fieldNameBind]=\"'value'\"\n [valueUpDownNumber]=\"1\"\n [maxValueNumber]=\"72\"\n [minValueNumber]=\"8\"\n [readonly]=\"readonly() || loadingUploadImage()\"\n [classContainerInput]=\"'w-[72px] h-[32px]'\"\n (outChangeValueByButtonUpDown)=\"handlerValueChangeFontSize()\"\n (outFocusAndBlur)=\"handlerValueChangeFontSize($event)\" />\n </div>\n }\n @if (option.type === 'color') {\n <div class=\"ql-color ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_text_color', zIndex: zIndex() }\">\n <libs_ui-components-buttons-select_color\n [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [customOptions]=\"{\n showAlpha: true,\n }\"\n [applyNow]=\"false\"\n (outColorChangeMultipleType)=\"handlerSetFormat('color', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-text libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"\n [class.libs-ui-icon-editor-color-text-active]=\"!!colorSelected()\"\n [style.--color-selected]=\"colorSelected()\"></div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'background') {\n <div class=\"ql-background ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_background_color', zIndex: zIndex() }\">\n <libs_ui-components-buttons-select_color\n [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [applyNow]=\"false\"\n [customOptions]=\"{\n showAlpha: true,\n }\"\n (outColorChangeMultipleType)=\"handlerSetFormat('background', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-background libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"\n [class.libs-ui-icon-editor-color-background-active]=\"!!backgroundSelected()\"\n [style.--background-selected]=\"backgroundSelected()\"></div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'bold') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_font_weight_bold', zIndex: zIndex() }\"\n class=\"ql-bold !flex\"></button>\n </div>\n }\n @if (option.type === 'italic') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_font_style_italic', zIndex: zIndex() }\"\n class=\"ql-italic !flex\"></button>\n </div>\n }\n @if (option.type === 'underline') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_text_decoration_underline', zIndex: zIndex() }\"\n class=\"ql-underline !flex\"></button>\n </div>\n }\n @if (option.type === 'strikeThrough') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_text_line_through', zIndex: zIndex() }\"\n class=\"ql-strike !flex\"></button>\n </div>\n }\n @if (option.type === 'script.sub') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_script_sub', zIndex: zIndex() }\"\n class=\"ql-script flex\"\n value=\"sub\"></button>\n </div>\n }\n @if (option.type === 'script.super') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_script_super', zIndex: zIndex() }\"\n class=\"ql-script flex\"\n value=\"super\"></button>\n </div>\n }\n @if (option.type === 'adjust') {\n <div class=\"relative !flex items-center ql-align ql-picker ql-icon-picker !w-max {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_adjust', zIndex: zIndex() }\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [ignoreStopPropagationEvent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigAlign()\"\n [listHiddenInputSearch]=\"true\"\n [popoverCustomConfig]=\"{ ignoreArrow: true, classInclude: '!w-[32px] overflow-hidden !py-[4px]', position: { mode: 'start', distance: 0 }, paddingLeftItem: false }\"\n [listHasButtonUnSelectOption]=\"false\"\n [zIndex]=\"zIndex() + 1\"\n [listKeySelected]=\"adjustSelected()\"\n (outSelectKey)=\"handleSelectAlign($event)\">\n @if (alignSelected(); as alignSelected) {\n <div class=\"flex items-center cursor-pointer\">\n <i\n [class]=\"iconAlignSelectedComputed()\"\n [class.text-[var(--libs-ui-color-light-1)]]=\"adjustSelected() !== undefined\"></i>\n <i class=\"libs-ui-icon-move-right rotate-90 text-[#6a7383] text-[16px] ml-[4px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'indentIncrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_indent_increase', zIndex: zIndex() }\"\n class=\"ql-indent\"\n value=\"+1\"></button>\n </div>\n }\n @if (option.type === 'indentDecrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_indent_decrease', zIndex: zIndex() }\"\n class=\"ql-indent\"\n value=\"-1\"></button>\n </div>\n }\n @if (option.type === 'listBulleted') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_bulleted', zIndex: zIndex() }\"\n class=\"ql-list ql-bullet\"\n value=\"bullet\"></button>\n </div>\n }\n @if (option.type === 'listNumbered') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_numbered', zIndex: zIndex() }\"\n class=\"ql-list ql-ordered\"\n value=\"ordered\"></button>\n </div>\n }\n @if (option.type === 'listChecked') {\n <div\n [class]=\"option.classInclude || 'mx-[8px]'\"\n [class.ql-active]=\"listCheckboxSelected()\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_numbered', zIndex: zIndex() }\"\n class=\"ql-list ql-check\"\n value=\"check\"></button>\n </div>\n }\n @if (option.type === 'personalize' && templateToolBarPersonalize(); as templateToolBarPersonalize) {\n <div class=\"flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <ng-container *ngTemplateOutlet=\"templateToolBarPersonalize\"></ng-container>\n </div>\n }\n @if (option.type === 'blockquote') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_quote', zIndex: zIndex() }\"\n class=\"ql-blockquote\"></button>\n </div>\n }\n @if (option.type === 'link') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_insert_link', zIndex: zIndex() }\"\n class=\"ql-link\"></button>\n </div>\n }\n @if (option.type === 'unLink') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_unlink', zIndex: zIndex() }\"\n class=\"ql-unLink\"\n (click)=\"handlerUnlink($event)\"></button>\n </div>\n }\n @if (option.type === 'image') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_image', zIndex: zIndex() }\"\n class=\"ql-image\"></button>\n </div>\n }\n @if (option.type === 'video') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_video', zIndex: zIndex() }\"\n class=\"ql-video\"></button>\n </div>\n }\n @if (option.type === 'emoji') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <libs_ui-components-emoji\n [zIndex]=\"zIndex()\"\n [isNgContent]=\"true\"\n (outEventEmoji)=\"handlerInsertEmoji($event)\">\n <button class=\"ql-emoji\"></button>\n </libs_ui-components-emoji>\n </div>\n }\n @if (option.type === 'table') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_table', zIndex: zIndex() }\"\n class=\"ql-table\"></button>\n </div>\n }\n @if (option.type === 'line') {\n <div class=\"w-[1px] h-[16px] libs-ui-border-right-general\"></div>\n }\n</ng-template>\n\n<libs_ui-components-popover\n #inputLinkRef\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{ template: viewLink, whiteTheme: true, ignoreArrow: true, zIndex: zIndex() }\"\n (outEvent)=\"handlerPopoverEvent($event)\" />\n\n<ng-template #viewLink>\n <div class=\"flex justify-between items-center px-[16px] py-[8px] rounded-[8px]\">\n <div\n class=\"w-full min-w-0 libs-ui-font-h5r\"\n [type]=\"'text'\"\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: link().url, zIndex: zIndex() + 1 }\">\n {{ link().url }}\n </div>\n <div class=\"flex items-center ml-[16px]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-edit-line'\"\n [classInclude]=\"'!p-0'\"\n (outClick)=\"handlerEditLink($event)\" />\n <libs_ui-components-buttons-button\n [type]=\"'button-link-custom'\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#071631',\n text_hover: '#ee2d41',\n text_active: '#ee2d41',\n text_disable: '071631',\n },\n rootColor: '#071631',\n }\"\n [classInclude]=\"'!p-0 ml-[12px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-link-broken'\"\n (outClick)=\"handlerUnlink($event)\" />\n </div>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-inputs-quill2x.mjs","sources":["../../../../../../libs-ui/components/inputs/quill2x/src/link/link.component.ts","../../../../../../libs-ui/components/inputs/quill2x/src/link/link.component.html","../../../../../../libs-ui/components/inputs/quill2x/src/upload-image/upload-image.component.ts","../../../../../../libs-ui/components/inputs/quill2x/src/upload-image/upload-image.component.html","../../../../../../libs-ui/components/inputs/quill2x/src/utils/data.define.ts","../../../../../../libs-ui/components/inputs/quill2x/src/blots-custom/mention2x.component.ts","../../../../../../libs-ui/components/inputs/quill2x/src/blots-custom/image2x.component.ts","../../../../../../libs-ui/components/inputs/quill2x/src/utils/functions.define.ts","../../../../../../libs-ui/components/inputs/quill2x/src/quill2x.component.ts","../../../../../../libs-ui/components/inputs/quill2x/src/quill2x.component.html","../../../../../../libs-ui/components/inputs/quill2x/src/libs-ui-components-inputs-quill2x.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, OnInit, output, signal } from '@angular/core';\nimport { IInputValidFunctionControlEvent, LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\nimport { patternUrl } from '@libs-ui/utils';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill2x-link',\n templateUrl: './link.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LibsUiComponentsModalComponent, LibsUiComponentsInputsValidComponent],\n})\nexport class LibsUiComponentsInputsQuill2xLinkComponent implements OnInit {\n protected dataLink = signal<{ title: string; link: string }>({ title: '', link: '' });\n protected patternLink = signal<RegExp>(patternUrl());\n\n private readonly inputValidFunctionControl = signal<Array<IInputValidFunctionControlEvent>>([]);\n\n readonly zIndex = input<number>(1200);\n readonly title = input<string>();\n readonly link = input<string>();\n readonly ignoreCommunicateMicroEvent = input<boolean>();\n\n readonly outClose = output<void>();\n readonly outSaveLink = output<{ title: string; link: string }>();\n\n ngOnInit() {\n const title = this.title();\n const link = this.link();\n if (title || link) {\n this.dataLink.update((item) => ({ ...item, title: title || '', link: link || '' }));\n }\n }\n\n protected async handlerFunctionsControl(event: IInputValidFunctionControlEvent) {\n this.inputValidFunctionControl.update((items) => [...items, event]);\n }\n\n private async validate() {\n let valid = true;\n for (const control of this.inputValidFunctionControl()) {\n if (!(await control.checkIsValid())) {\n valid = false;\n }\n }\n return valid;\n }\n\n protected async handlerEvent(event: TYPE_MODAL_EVENT) {\n if (event !== 'agree') {\n this.outClose.emit();\n return;\n }\n if (await this.validate()) {\n this.outSaveLink.emit(this.dataLink());\n this.outClose.emit();\n }\n }\n}\n","<libs_ui-components-modal\n [title]=\"'i18n_insert_link'\"\n [mode]=\"'center'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [zIndex]=\"zIndex()\"\n (outEvent)=\"handlerEvent($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'i18n_content', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'title'\"\n [placeholder]=\"'i18n_import_content'\"\n [validRequired]=\"{ isRequired: true }\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n <div class=\"mt-[16px]\">\n <libs_ui-components-inputs-valid\n [labelConfig]=\"{ labelLeft: 'Link', required: true }\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https://example.com'\"\n [validRequired]=\"{ isRequired: true }\"\n [validPattern]=\"[{ pattern: patternLink(), valuePatternShowError: false }]\"\n [keySelectedUnitLeft]=\"'1'\"\n [unitsLeft]=\"[{ id: '1', label: 'URL' }]\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n </div>\n </div>\n</libs_ui-components-modal>\n","import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\nimport { IButton } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\nimport { IQuill2xUploadImageConfig } from '../interfaces/quill2x.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill2x-upload_image',\n templateUrl: './upload-image.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LibsUiComponentsModalComponent],\n})\nexport class LibsUiComponentsInputsQuill2xUploadImageComponent {\n protected buttonFooter = signal<Array<IButton>>([\n {\n type: 'button-third',\n label: 'i18n_cancel',\n action: async () => this.outClose.emit(),\n },\n {\n label: 'i18n_save',\n action: () => this.handlerSaveImage(),\n },\n ]);\n protected disable = signal<boolean>(false);\n readonly ignoreCommunicateMicroEvent = input<boolean>();\n\n readonly uploadImageConfig = input.required<IQuill2xUploadImageConfig>();\n\n readonly outClose = output<string | void>();\n\n private async handlerSaveImage() {}\n\n protected handlerEventModal(event: TYPE_MODAL_EVENT) {\n if (event === 'close') {\n this.outClose.emit();\n }\n }\n}\n","<libs_ui-components-modal\n [title]=\"'i18n_upload_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"uploadImageConfig().zIndex || 1203\"\n [disable]=\"disable()\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n </div>\n</libs_ui-components-modal>\n","import { signal } from '@angular/core';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { IHttpRequestConfig, returnListObject } from '@libs-ui/services-http-request';\nimport { convertFileToBase64_ObjectUrl } from '@libs-ui/utils';\nimport { IQuill2xLink, IQuill2xToolbarConfig, IQuill2xUploadImageConfig, QUILL2X_TYPE_MODE_BAR_CONFIG_OPTION } from '../interfaces/quill2x.interface';\n\nexport const listDataAlign = () => {\n return [\n { key: '', icon: 'libs-ui-icon-align-left text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'right', icon: 'libs-ui-icon-align-right text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'center', icon: 'libs-ui-icon-align-center text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'justify', icon: 'libs-ui-icon-align-justify text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n ];\n};\n\nexport const listFont = () => {\n return [\n { key: '', label: 'Sans Serif' },\n { key: 'serif', label: 'Serif' },\n { key: 'monospace', label: 'Monospace' },\n ];\n};\n\nexport const listHeader = () => {\n return [\n { key: '', label: 'Normal' },\n { key: '1', label: 'Heading 1' },\n { key: '2', label: 'Heading 2' },\n { key: '3', label: 'Heading 3' },\n { key: '4', label: 'Heading 4' },\n { key: '5', label: 'Heading 5' },\n { key: '6', label: 'Heading 6' },\n ];\n};\n\nexport const listConfigAlign = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(listDataAlign()),\n functionName: 'list',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getClassItem: () => '!px-[8px] !py-[4px]',\n getValue: (item) => `<i class='flex ${item.icon}'></i>`,\n ignoreIconSelected: true,\n }),\n };\n};\n\nexport const listConfigFont = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(listFont()),\n functionName: 'list',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getValue: (item) => item.label,\n ignoreIconSelected: true,\n }),\n };\n};\n\nexport const listConfigHeader = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(listHeader()),\n functionName: 'list',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getValue: (item) => {\n switch (item?.key) {\n case '':\n return `<span class=\"libs-ui-font-h5r\">${item?.label}</span>`;\n case '1':\n return `<span class=\"libs-ui-font-h1r\">${item?.label}</span>`;\n case '2':\n return `<span class=\"libs-ui-font-h2r\">${item?.label}</span>`;\n case '3':\n return `<span class=\"libs-ui-font-h3r\">${item?.label}</span>`;\n case '4':\n return `<span class=\"libs-ui-font-h4r\">${item?.label}</span>`;\n case '5':\n return `<span class=\"libs-ui-font-h5r\">${item?.label}</span>`;\n case '6':\n return `<span class=\"libs-ui-font-h6r\">${item?.label}</span>`;\n }\n return item?.label;\n },\n ignoreIconSelected: true,\n }),\n };\n};\n\nexport const toolBarOptions = (mode: QUILL2X_TYPE_MODE_BAR_CONFIG_OPTION, hasIconImage: boolean, hasIconPersonalize: boolean): Array<IQuill2xToolbarConfig> => {\n return (\n [\n {\n type: 'undo',\n classInclude: 'mr-[8px]',\n mode: ['all', 'default', 'basic'],\n width: 24,\n },\n {\n type: 'redo',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'line',\n mode: ['all', 'default', 'basic'],\n width: 1,\n },\n {\n type: 'header',\n classInclude: 'ml-[8px]',\n mode: ['all'],\n width: 146,\n },\n {\n type: 'fontFamily',\n classInclude: 'ml-[8px]',\n mode: ['all', 'default'],\n width: 136,\n },\n {\n type: 'fontSize',\n classInclude: 'ml-[8px] mr-[8px]',\n mode: ['all', 'default'],\n width: 82,\n },\n {\n type: 'line',\n mode: ['all', 'default'],\n width: 1,\n },\n {\n type: 'color',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'background',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'line',\n mode: ['all', 'default', 'basic'],\n width: 1,\n },\n {\n type: 'bold',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'italic',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'underline',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'strikeThrough',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'line',\n mode: ['all', 'default', 'basic'],\n width: 1,\n },\n {\n type: 'script.sub',\n mode: ['all'],\n width: 32,\n },\n {\n type: 'script.super',\n mode: ['all'],\n width: 32,\n },\n {\n type: 'line',\n mode: ['all'],\n width: 1,\n },\n {\n type: 'adjust',\n mode: ['all', 'default'],\n width: 52,\n },\n {\n type: 'line',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'indentIncrease',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'indentDecrease',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'listBulleted',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'listNumbered',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'listChecked',\n mode: ['all'],\n width: 32,\n },\n {\n type: 'line',\n mode: ['all', 'default'],\n width: 1,\n },\n {\n type: 'personalize',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'blockquote',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'link',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'unLink',\n mode: ['all', 'default', 'basic'],\n width: 32,\n },\n {\n type: 'image',\n mode: ['all', 'default'],\n width: 32,\n },\n {\n type: 'video',\n mode: ['all'],\n width: 32,\n },\n {\n type: 'emoji',\n classInclude: 'ml-[8px]',\n mode: ['all', 'default'],\n width: 24,\n },\n { type: 'table', width: 32, mode: ['all'] },\n ] as Array<IQuill2xToolbarConfig>\n ).filter((item) => {\n if (!item.mode?.includes(mode)) {\n return false;\n }\n if (item.type === 'image') {\n return hasIconImage;\n }\n if (item.type === 'personalize') {\n return hasIconPersonalize;\n }\n\n return true;\n });\n};\nexport const iconList = (): Array<{ key: string; icon: string }> => {\n return [\n {\n key: 'bold',\n icon: 'libs-ui-icon-editor-bold',\n },\n {\n key: 'italic',\n icon: 'libs-ui-icon-editor-italic',\n },\n {\n key: 'underline',\n icon: 'libs-ui-icon-editor-underlined',\n },\n {\n key: 'image',\n icon: 'libs-ui-icon-image-solid',\n },\n {\n key: 'link',\n icon: 'libs-ui-icon-link',\n },\n {\n key: 'undo',\n icon: 'libs-ui-icon-undo',\n },\n {\n key: 'redo',\n icon: 'libs-ui-icon-redo',\n },\n {\n key: 'strike',\n icon: 'libs-ui-icon-editor-strike-through',\n },\n {\n key: 'blockquote',\n icon: 'libs-ui-icon-quote',\n },\n {\n key: 'ordered',\n icon: 'libs-ui-icon-list-numbered',\n },\n {\n key: 'bullet',\n icon: 'libs-ui-icon-list-bulleted',\n },\n {\n key: 'background',\n icon: 'libs-ui-icon-editor-color-background',\n },\n {\n key: 'color',\n icon: 'libs-ui-icon-editor-color-text',\n },\n {\n key: 'indent.-1',\n icon: 'libs-ui-icon-indent-decrease',\n },\n {\n key: 'indent.+1',\n icon: 'libs-ui-icon-indent-increase',\n },\n {\n key: 'align.',\n icon: 'align-quill libs-ui-icon-align-left',\n },\n {\n key: 'align.center',\n icon: 'align-quill libs-ui-icon-align-center',\n },\n {\n key: 'align.right',\n icon: 'align-quill libs-ui-icon-align-right',\n },\n {\n key: 'align.justify',\n icon: 'align-quill libs-ui-icon-align-justify',\n },\n {\n key: 'unLink',\n icon: 'libs-ui-icon-link-broken',\n },\n {\n key: 'emoji',\n icon: 'libs-ui-icon-face-smile',\n },\n {\n key: 'table',\n icon: 'libs-ui-icon-table',\n },\n {\n key: 'check',\n icon: 'libs-ui-icon-task-list',\n },\n {\n key: 'video',\n icon: 'libs-ui-icon-video-outline',\n },\n ];\n};\n\nexport const uploadImageConfigDefault = (): IQuill2xUploadImageConfig => {\n return {\n modeCustom: false,\n zIndex: 1202,\n showIcon: true,\n maxImageSize: 5 * 1024 * 1024,\n onlyAcceptImageHttpsLink: false,\n functionUploadImage: async (files: Array<File>) => {\n const data = [];\n for (const file of files) {\n data.push(await convertFileToBase64_ObjectUrl(file));\n }\n return data;\n },\n };\n};\n\nexport const linkDefault = (): IQuill2xLink => {\n return {\n title: '',\n url: '',\n range: {\n index: 0,\n length: 0,\n },\n };\n};\n\nexport const fontSizeWhiteList = () => [\n '8px',\n '9px',\n '10px',\n '11px',\n '12px',\n '13px',\n '14px',\n '15px',\n '16px',\n '17px',\n '18px',\n '19px',\n '20px',\n '21px',\n '22px',\n '23px',\n '24px',\n '25px',\n '26px',\n '27px',\n '28px',\n '29px',\n '30px',\n '31px',\n '32px',\n '33px',\n '34px',\n '35px',\n '36px',\n '37px',\n '38px',\n '39px',\n '40px',\n '41px',\n '42px',\n '43px',\n '44px',\n '45px',\n '46px',\n '47px',\n '48px',\n '49px',\n '50px',\n '51px',\n '52px',\n '53px',\n '54px',\n '55px',\n '56px',\n '57px',\n '58px',\n '59px',\n '60px',\n '61px',\n '62px',\n '63px',\n '64px',\n '65px',\n '66px',\n '67px',\n '68px',\n '69px',\n '70px',\n '71px',\n '72px',\n];\n\nexport const getStylesConvertInline = (): Array<{ selector: string; styles: Array<{ key: string; value: string }> }> => {\n return [\n { selector: '.ql-font-Arial', styles: [{ key: 'font-family', value: 'Arial' }] },\n { selector: '.ql-font-sans-serif', styles: [{ key: 'font-family', value: 'sans-serif' }] },\n { selector: '.ql-font-serif', styles: [{ key: 'font-family', value: 'serif' }] },\n { selector: '.ql-font-monospace', styles: [{ key: 'font-family', value: 'monospace' }] },\n { selector: '.ql-font-Helvetica', styles: [{ key: 'font-family', value: 'Helvetica' }] },\n { selector: '.ql-indent-1', styles: [{ key: 'padding-left', value: '4.5em' }] },\n { selector: '.ql-indent-2', styles: [{ key: 'padding-left', value: '7.5rem' }] },\n { selector: '.ql-indent-3', styles: [{ key: 'padding-left', value: '10.5em' }] },\n { selector: '.ql-indent-4', styles: [{ key: 'padding-left', value: '13.5em' }] },\n { selector: '.ql-indent-5', styles: [{ key: 'padding-left', value: '16.5em' }] },\n { selector: '.ql-indent-6', styles: [{ key: 'padding-left', value: '19.5em' }] },\n { selector: '.ql-indent-7', styles: [{ key: 'padding-left', value: '22.5em' }] },\n { selector: '.ql-indent-8', styles: [{ key: 'padding-left', value: '25.5em' }] },\n { selector: 'a', styles: [{ key: 'color', value: '#06c' }] },\n { selector: 'span', styles: [{ key: 'white-space', value: 'pre-wrap' }] },\n { selector: 'div', styles: [{ key: 'white-space', value: 'pre-wrap' }] },\n { selector: 'p', styles: [{ key: 'white-space', value: 'pre-wrap' }] },\n {\n selector: 'h1',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-site', value: '2em' },\n ],\n },\n {\n selector: 'h2',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-size', value: '1.5em' },\n ],\n },\n {\n selector: 'h3',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-size', value: '1.25em' },\n ],\n },\n {\n selector: 'h4',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-size', value: '1em' },\n ],\n },\n {\n selector: 'h5',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-size', value: '0.875em' },\n ],\n },\n {\n selector: 'h6',\n styles: [\n { key: 'white-space', value: 'pre-wrap' },\n { key: 'font-size', value: '0.75em' },\n ],\n },\n { selector: 'ol', styles: [{ key: 'white-space', value: 'pre-wrap' }] },\n { selector: 'li', styles: [{ key: 'white-space', value: 'pre-wrap' }] },\n {\n selector: '.libs-ui-quill-format-image',\n styles: [\n { key: 'max-width', value: '100%' },\n { key: 'height', value: 'auto' },\n ],\n },\n {\n selector: '.libs-ui-quill-mention',\n styles: [\n { key: 'font-weight', value: '600' },\n { key: 'moz-osx-font-smoothing', value: 'grayscale' },\n { key: 'webkit-font-smoothing', value: 'antialiased' },\n { key: 'color', value: '#7239EA' },\n ],\n },\n {\n selector: 'blockquote',\n styles: [\n { key: 'border-left', value: '4px solid #ccc' },\n { key: 'margin-bottom', value: '5px' },\n { key: 'margin-top', value: '5px' },\n { key: 'padding-left', value: '16px' },\n ],\n },\n ];\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport Quill2x from 'quill2x';\n\nconst Embed = Quill2x.import('blots/embed') as any;\n\nexport class QuillMention2xBlot extends Embed {\n static readonly blotName = 'mention';\n static readonly tagName = 'span';\n static readonly className = 'libs-ui-quill-mention';\n static create(data: { id: string; feId: string; value: string }) {\n const node = super.create();\n node.innerText += data.value;\n node.setAttribute('id', data.id);\n node.setAttribute('feId', data.feId);\n node.setAttribute('value', data.value);\n return node;\n }\n\n static value(domNode: HTMLElement) {\n return {\n id: domNode.getAttribute('id'),\n feId: domNode.getAttribute('feId'),\n value: domNode.getAttribute('value'),\n };\n }\n\n attach() {\n super.attach();\n if (!this.mounted) {\n this.mounted = true;\n this.clickHandler = this.getClickHandler;\n this.domNode.addEventListener('click', this.clickHandler, false);\n }\n }\n\n getClickHandler(event: Event) {\n event.stopPropagation();\n }\n}\n","import Quill2x from 'quill2x';\n\nconst ImageFormat = Quill2x.import('formats/image') as any;\n\nexport class CustomImage2xBlot extends ImageFormat {\n static create(value: string) {\n const node = super.create(value);\n node.classList.add('libs-ui-quill-format-image');\n return node;\n }\n\n formats() {\n return {}; // Tránh Quill tự động thêm thẻ `<span>`\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { decodeEscapeHtml, getDocumentByString, set, setStylesElement } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport ResizeModule from '@ssumo/quill-resize-module';\nimport Delta from 'quill-delta';\nimport Quill2x from 'quill2x';\nimport { fromEvent, lastValueFrom, timer } from 'rxjs';\nimport { CustomImage2xBlot, QuillMention2xBlot } from '../blots-custom';\nimport { fontSizeWhiteList, iconList } from './data.define';\nlet quill2x: Quill2x | null = null;\nlet timeout: number | undefined = undefined;\nlet timeout1: number | undefined = undefined;\n\nlet startCell: HTMLElement | null = null;\nlet endCell: HTMLElement | null = null;\nlet isSelecting = false;\n\n//region Function Table\nexport const createTableSelector = (quill: Quill2x, anchorEl: HTMLElement | null, translate: TranslateService) => {\n // Đóng popup cũ nếu còn tồn tại\n document.querySelectorAll('.manual-table-creator').forEach((el) => el.parentElement?.removeChild(el));\n\n const popup = document.createElement('div');\n popup.className = 'manual-table-creator';\n popup.style.position = 'absolute';\n popup.style.background = '#fff';\n popup.style.border = '1px solid #ddd';\n popup.style.borderRadius = '6px';\n popup.style.boxShadow = '0 6px 16px rgba(0,0,0,0.12)';\n popup.style.padding = '12px';\n popup.style.zIndex = '10000';\n popup.style.minWidth = '200px';\n setStylesElement(popup, {\n position: 'absolute',\n background: '#fff',\n border: '1px solid #ddd',\n borderRadius: '6px',\n boxShadow: '0 6px 16px rgba(0,0,0,0.12)',\n padding: '12px',\n zIndex: '10000',\n minWidth: '200px',\n });\n\n const info = document.createElement('div');\n info.textContent = translate.instant('i18n_select_cell');\n setStylesElement(info, {\n fontSize: '12px',\n color: '#333',\n marginBottom: '10px',\n textAlign: 'center',\n fontWeight: '600',\n });\n popup.appendChild(info);\n\n const grid = document.createElement('div');\n setStylesElement(grid, {\n display: 'grid',\n gridTemplateColumns: 'repeat(8, 18px)',\n gap: '4px',\n });\n\n const max = 8;\n for (let row = 1; row <= max; row++) {\n for (let col = 1; col <= max; col++) {\n const cell = document.createElement('div');\n cell.style.width = '18px';\n cell.style.height = '18px';\n cell.style.border = '1px solid #e5e7eb';\n cell.style.background = '#fff';\n cell.style.cursor = 'pointer';\n\n cell.addEventListener('mouseenter', () => {\n info.textContent = `${row} × ${col}`;\n Array.from(grid.children).forEach((el, idx) => {\n const rr = Math.floor(idx / max) + 1;\n const cc = (idx % max) + 1;\n (el as HTMLElement).style.background = rr <= row && cc <= col ? '#dbeafe' : '#fff';\n (el as HTMLElement).style.borderColor = rr <= row && cc <= col ? '#93c5fd' : '#e5e7eb';\n });\n });\n\n cell.addEventListener('click', () => {\n try {\n quill.focus();\n const tableModule = quill.getModule('table') as any;\n if (tableModule && typeof tableModule.insertTable === 'function') {\n tableModule.insertTable(row, col);\n getAllTablesWithSpan(quill);\n }\n } finally {\n if (document.body.contains(popup)) {\n document.body.removeChild(popup);\n }\n document.removeEventListener('click', onOutsideClick, true);\n }\n });\n\n grid.appendChild(cell);\n }\n }\n popup.appendChild(grid);\n\n const placePopup = () => {\n const rect = anchorEl?.getBoundingClientRect();\n const top = rect ? rect.bottom + window.scrollY + 6 : 100;\n const left = rect ? rect.left + window.scrollX : 100;\n popup.style.top = `${top}px`;\n popup.style.left = `${left}px`;\n };\n\n const onOutsideClick = (ev: MouseEvent) => {\n if (!popup.contains(ev.target as Node)) {\n if (document.body.contains(popup)) {\n document.body.removeChild(popup);\n }\n document.removeEventListener('click', onOutsideClick, true);\n }\n };\n\n document.body.appendChild(popup);\n placePopup();\n setTimeout(() => document.addEventListener('click', onOutsideClick, true));\n};\n\nexport const createContextMenuOptionTable = (quill: Quill2x, translate: TranslateService) => {\n let lastContextIndex: number | null = null;\n\n const closeAnyMenu = () => {\n document.querySelectorAll('.manual-table-menu').forEach((el) => el.parentElement?.removeChild(el));\n };\n\n const runWithSelection = (fn: () => void) => {\n try {\n quill.focus();\n if (typeof lastContextIndex === 'number') {\n quill.setSelection(lastContextIndex, 0, 'silent');\n }\n } catch {\n /* no-op: giữ yên nếu không thể set selection */\n }\n fn();\n };\n\n const createMenuItem = (label: string, onClick: () => void) => {\n const item = document.createElement('div');\n item.textContent = label;\n item.style.padding = '6px 12px';\n item.style.cursor = 'pointer';\n item.addEventListener('click', () => {\n runWithSelection(onClick);\n closeAnyMenu();\n });\n item.addEventListener('mouseenter', () => {\n item.style.background = '#f5f5f5';\n });\n item.addEventListener('mouseleave', () => {\n item.style.background = 'transparent';\n });\n return item;\n };\n\n const openContextMenu = (pageX: number, pageY: number) => {\n closeAnyMenu();\n\n const menu = document.createElement('div');\n menu.className = 'manual-table-menu';\n menu.style.position = 'absolute';\n menu.style.top = `${pageY}px`;\n menu.style.left = `${pageX}px`;\n menu.style.background = '#fff';\n menu.style.border = '1px solid #ccc';\n menu.style.borderRadius = '4px';\n menu.style.boxShadow = '0 4px 12px rgba(0,0,0,0.2)';\n menu.style.zIndex = '10001';\n menu.style.padding = '4px';\n menu.style.minWidth = '180px';\n\n const tableModule = quill.getModule('table') as Record<string, any> | null;\n const safeCall = (method: string, ...args: any[]) => {\n if (method === 'mergeCells') {\n const [startCell, endCell] = args;\n mergeCells(startCell, endCell);\n closeAnyMenu();\n return;\n }\n if (method === 'splitCells') {\n const [startCell] = args;\n splitCells(startCell);\n closeAnyMenu();\n return;\n }\n if (tableModule && typeof tableModule[method] === 'function') {\n tableModule[method](...args);\n getAllTablesWithSpan(quill);\n }\n };\n\n menu.appendChild(createMenuItem(translate.instant('i18n_add_new_row_above'), () => safeCall('insertRowAbove')));\n menu.appendChild(createMenuItem(translate.instant('i18n_add_new_row_below'), () => safeCall('insertRowBelow')));\n menu.appendChild(createMenuItem(translate.instant('i18n_add_new_column_left'), () => safeCall('insertColumnLeft')));\n menu.appendChild(createMenuItem(translate.instant('i18n_add_new_column_right'), () => safeCall('insertColumnRight')));\n const divider = document.createElement('div');\n divider.style.height = '1px';\n divider.style.background = '#eee';\n divider.style.margin = '4px 0';\n menu.appendChild(divider);\n if (startCell && endCell) {\n const startCellStore = startCell;\n const endCellStore = endCell;\n const colspan = parseInt(startCellStore.getAttribute('colspan') || '1', 10);\n const rowspan = parseInt(startCellStore.getAttribute('rowspan') || '1', 10);\n let totalMenu = 0;\n if (startCell !== endCell) {\n menu.appendChild(createMenuItem(translate.instant('i18n_merge_cells'), () => safeCall('mergeCells', startCellStore, endCellStore)));\n totalMenu++;\n }\n if (startCell === endCell && (colspan > 1 || rowspan > 1)) {\n menu.appendChild(createMenuItem(translate.instant('i18n_split_cells'), () => safeCall('splitCells', startCellStore)));\n totalMenu++;\n }\n\n if (totalMenu > 0) {\n const divider2 = document.createElement('div');\n divider2.style.height = '1px';\n divider2.style.background = '#eee';\n divider2.style.margin = '4px 0';\n menu.appendChild(divider2);\n }\n }\n menu.appendChild(createMenuItem(translate.instant('i18n_delete_row'), () => safeCall('deleteRow')));\n menu.appendChild(createMenuItem(translate.instant('i18n_delete_column'), () => safeCall('deleteColumn')));\n menu.appendChild(createMenuItem(translate.instant('i18n_delete_table'), () => safeCall('deleteTable')));\n\n document.body.appendChild(menu);\n\n const onOutside = (ev: MouseEvent) => {\n if (!menu.contains(ev.target as Node) || (ev.target as HTMLElement).getElementsByTagName('table').length < 0) {\n closeAnyMenu();\n document.removeEventListener('click', onOutside, true);\n }\n };\n setTimeout(() => document.addEventListener('click', onOutside, true));\n\n const onScroll = () => {\n closeAnyMenu();\n window.removeEventListener('scroll', onScroll, true);\n window.removeEventListener('resize', onScroll, true);\n };\n window.addEventListener('scroll', onScroll, true);\n window.addEventListener('resize', onScroll, true);\n };\n\n fromEvent<MouseEvent>(quill.root, 'contextmenu').subscribe((ev: MouseEvent) => {\n const target = ev.target as HTMLElement;\n const isCell = !!target.closest('td,th,table,.ql-table');\n if (!isCell) return;\n ev.preventDefault();\n try {\n // Ưu tiên lấy index từ blot tương ứng node\n const QuillAny = Quill2x as any;\n const blot = QuillAny?.find?.(target);\n if (blot && typeof blot.offset === 'function') {\n lastContextIndex = blot.offset(quill.scroll);\n } else {\n // Fallback: đặt selection hiện tại nếu không xác định được\n const sel = quill.getSelection(true);\n lastContextIndex = sel ? sel.index : 0;\n }\n } catch {\n const sel = quill.getSelection(true);\n lastContextIndex = sel ? sel.index : 0;\n }\n quill.focus();\n openContextMenu(ev.pageX, ev.pageY);\n });\n};\n\n// ===============================\n// Utils: clear và select cells\n// ===============================\n\nconst clearSelection = () => {\n document.querySelectorAll('.selected-cell').forEach((c) => {\n c.classList.remove('selected-cell');\n });\n};\n\nconst selectRangeCells = (start: HTMLElement, end: HTMLElement) => {\n clearSelection();\n const table = start.closest('table');\n if (!table || table !== end.closest('table')) return;\n\n const rows = Array.from(table.querySelectorAll('tr'));\n const startRow = rows.indexOf(start.parentElement as HTMLTableRowElement);\n const endRow = rows.indexOf(end.parentElement as HTMLTableRowElement);\n\n const minRow = Math.min(startRow, endRow);\n const maxRow = Math.max(startRow, endRow);\n\n const startCol = Array.from(start.parentElement!.children).indexOf(start);\n const endCol = Array.from(end.parentElement!.children).indexOf(end);\n\n const minCol = Math.min(startCol, endCol);\n const maxCol = Math.max(startCol, endCol);\n\n for (let r = minRow; r <= maxRow; r++) {\n const row = rows[r];\n const cells = Array.from(row.children);\n for (let c = minCol; c <= maxCol; c++) {\n (cells[c] as HTMLElement).classList.add('selected-cell');\n }\n }\n};\n\n// ===============================\n// Enable selection trên table\n// ===============================\nexport function enableTableSelection(container: HTMLElement) {\n container.addEventListener('mousedown', (e) => {\n const target = e.target as HTMLElement;\n if ((target.tagName === 'TD' && e.button !== 2) || (e.button === 2 && !target.classList.contains('selected-cell'))) {\n clearSelection();\n isSelecting = true;\n startCell = target;\n endCell = target;\n selectRangeCells(startCell, endCell);\n }\n });\n\n container.addEventListener('mousemove', (e) => {\n if (!isSelecting) return;\n const target = e.target as HTMLElement;\n if (target.tagName === 'TD' && startCell) {\n endCell = target;\n selectRangeCells(startCell, endCell);\n }\n });\n\n container.addEventListener('mouseup', () => {\n isSelecting = false;\n });\n}\nconst onOutside = (ev: MouseEvent) => {\n const target = ev.target as HTMLElement;\n if (target.tagName !== 'TD' && target.tagName !== 'TR' && target.tagName !== 'TBODY' && target.tagName !== 'THEAD' && target.tagName !== 'TABLE') {\n isSelecting = false;\n startCell = null;\n endCell = null;\n clearSelection();\n }\n};\ndocument.addEventListener('click', onOutside, true);\n\n// ===============================\n// Merge cells\n// ===============================\nexport const mergeCells = (startCell: HTMLElement, endCell: HTMLElement) => {\n const startCellIndex = startCell.getAttribute('index');\n const endCellIndex = endCell.getAttribute('index');\n const startCellRow = parseInt(startCellIndex?.split('-')[0] || '0', 10);\n const endCellRow = parseInt(endCellIndex?.split('-')[0] || '0', 10);\n const startCellCol = parseInt(startCellIndex?.split('-')[1] || '0', 10);\n const endCellCol = parseInt(endCellIndex?.split('-')[1] || '0', 10);\n const minRow = Math.min(startCellRow, endCellRow);\n const maxRow = Math.max(startCellRow, endCellRow);\n const minCol = Math.min(startCellCol, endCellCol);\n const maxCol = Math.max(startCellCol, endCellCol);\n\n const rows = startCell.closest('table')?.querySelectorAll('tr');\n rows?.forEach((rowEl, rowIndex) => {\n if (rowIndex < minRow || rowIndex > maxRow) return;\n\n const cells = rowEl.querySelectorAll('td, th');\n cells.forEach((cellEl, colIndex) => {\n if (colIndex < minCol || colIndex > maxCol) return;\n if (rowIndex === minRow && colIndex === minCol) {\n cellEl.setAttribute('colspan', String(maxCol - minCol + 1));\n cellEl.setAttribute('rowspan', String(maxRow - minRow + 1));\n return;\n }\n cellEl.classList.add('hidden');\n });\n });\n};\n\n// ===============================\n// Split cells\n// ===============================\nexport function splitCells(cellSplit: HTMLElement) {\n const index = cellSplit.getAttribute('index');\n let colSpan = parseInt(cellSplit.getAttribute('colspan') || '1', 10);\n let rowSpan = parseInt(cellSplit.getAttribute('rowspan') || '1', 10);\n const totalCellSplit = rowSpan * colSpan;\n let countCellSplit = 0;\n const rowStart = parseInt(index?.split('-')[0] || '0', 10);\n const colStart = parseInt(index?.split('-')[1] || '0', 10);\n const colIncrement = new Set<number>();\n const rowIncrement = new Set<number>();\n\n const rows = cellSplit.closest('table')?.querySelectorAll('tr');\n rows?.forEach((rowEl, rowIndex) => {\n if (rowIndex < rowStart) return;\n\n const cells = rowEl.querySelectorAll('td, th');\n cells.forEach((cellEl, colIndex) => {\n if (rowIndex < rowStart || colIndex < colStart || rowStart + rowSpan < rowIndex || colStart + colSpan < colIndex || countCellSplit >= totalCellSplit) return;\n if (rowIndex === rowStart && colIndex === colStart) {\n countCellSplit++;\n cellEl.setAttribute('colspan', '1');\n cellEl.setAttribute('rowspan', '1');\n return;\n }\n if (!cellEl.classList.contains('hidden')) {\n if (!rowIncrement.has(rowIndex)) {\n rowSpan++;\n }\n if (!colIncrement.has(colIndex)) {\n colSpan++;\n }\n rowIncrement.add(rowIndex);\n colIncrement.add(colIndex);\n return;\n }\n cellEl.classList.remove('hidden');\n countCellSplit++;\n });\n });\n}\n\nexport const getAllTablesWithSpan = (quill: any) => {\n const root = quill.root;\n\n // Tìm tất cả table trong quill\n const tableEls = root.querySelectorAll('table');\n\n tableEls.forEach((tableEl: HTMLElement) => {\n const rows = tableEl.querySelectorAll('tr');\n rows.forEach((rowEl, rIndex) => {\n rowEl.setAttribute('index', `${rIndex}`);\n const cells = rowEl.querySelectorAll('td, th');\n cells.forEach((cellEl, cIndex) => {\n cellEl.setAttribute('index', `${rIndex}-${cIndex}`);\n const rowspan = parseInt(cellEl.getAttribute('rowspan') || '1', 10);\n const colspan = parseInt(cellEl.getAttribute('colspan') || '1', 10);\n\n cellEl.setAttribute('rowspan', String(rowspan));\n cellEl.setAttribute('colspan', String(colspan));\n });\n });\n });\n};\n\n//-------------------------------------------\n\nlet register = false;\nexport const registerQuill2x = () => {\n if (register) return;\n register = true;\n\n const Quill = Quill2x as any;\n\n const size = Quill.import('attributors/style/size');\n const alignStyle = Quill.import('attributors/style/align');\n const italic = Quill.import('formats/italic');\n const bold = Quill.import('formats/bold');\n const icons = Quill.import('ui/icons');\n size.whitelist = fontSizeWhiteList();\n\n italic.tagName = 'i';\n bold.tagName = 'b';\n\n Quill.register(bold, true);\n Quill.register(italic, true);\n Quill.register(size, true);\n Quill.register(alignStyle, true);\n Quill.register(QuillMention2xBlot, true);\n Quill.register(CustomImage2xBlot, true);\n Quill.register('modules/resize', ResizeModule);\n [...iconList()].forEach((element) => set(icons, element.key, `<span class=\"${element.icon} ${element.key === 'unLink' ? 'hover:text-[#ee2d41] ' : 'hover:text-[var(--libs-ui-color-light-1)]'} text-[16px] text-[#6a7383]\"></span>`));\n};\n\nexport const isEmptyQuill2x = (quill: Quill2x | null) => {\n const rootElement = quill?.root;\n if (!rootElement) return true;\n const html = rootElement.innerHTML.trim();\n return html === '<p><br></p>' || html === '<p></p>' || html === '' || html === '<p><span class=\"ql-cursor\"></span><br></p>' || rootElement.classList.contains('ql-blank');\n};\n\nexport const getHTMLFromDeltaOfQuill2x = (\n delta: Delta,\n options?: {\n getRootHtml?: boolean;\n replaceNewLineTo?: string;\n replaceTagBRTo?: string;\n replaceBrToDiv?: boolean;\n functionReplaceDelta?: (op: Delta) => void;\n replaceTags?: {\n tag: string;\n replaceTo: string;\n }[];\n }\n): string => {\n if (!delta?.ops?.length) {\n return '';\n }\n if (!quill2x) {\n quill2x = new Quill2x(document.createElement('div'));\n }\n const { replaceNewLineTo = '<br>', replaceTagBRTo, replaceTags, replaceBrToDiv } = options || {};\n\n if (options?.functionReplaceDelta) {\n options.functionReplaceDelta(delta);\n }\n\n delta.ops.forEach((op) => {\n if (op.insert) {\n if (typeof op.insert === 'string') {\n if (replaceNewLineTo) {\n op.insert = op.insert.replace(/\\n/g, replaceNewLineTo);\n }\n if (replaceTagBRTo) {\n op.insert = op.insert.replace(/<br>/g, replaceTagBRTo);\n }\n\n if (replaceTags?.length) {\n for (const tag of replaceTags) {\n op.insert = op.insert.replace(new RegExp(`<${tag.tag}>`, 'g'), `<${tag.replaceTo}>`);\n op.insert = op.insert.replace(new RegExp(`</${tag.tag}>`, 'g'), `</${tag.replaceTo}>`);\n }\n }\n }\n }\n });\n quill2x.setContents(delta);\n let htmlText = options?.getRootHtml ? quill2x.root.innerHTML : quill2x.root.firstElementChild?.innerHTML;\n if (replaceBrToDiv) {\n htmlText = convertHtmlToDivBlocks(htmlText || '');\n }\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n quill2x = null;\n }, 10000);\n return decodeEscapeHtml(htmlText || '');\n};\n\nexport const getDeltaOfQuill2xFromHTML = async (html: string): Promise<Delta> => {\n if (!quill2x) {\n quill2x = new Quill2x(document.createElement('div'));\n }\n quill2x.root.innerHTML = html;\n\n await lastValueFrom(timer(1000));\n clearTimeout(timeout1);\n timeout1 = setTimeout(() => {\n quill2x = null;\n }, 10000);\n return quill2x.getContents();\n};\n\nexport const convertHtmlToDivBlocks = (html: string): string => {\n const BREAK_TOKEN = '<<<BREAK>>>';\n // Bước 1: thay <br> thành token tạm\n const normalizedHtml = html.replace(/<br\\s*\\/?>/gi, BREAK_TOKEN);\n\n // Bước 2: tách theo token\n const parts = normalizedHtml.split(BREAK_TOKEN);\n\n const parser = new DOMParser();\n const divs: string[] = [];\n\n for (const raw of parts) {\n const trimmed = raw.trim();\n if (!trimmed) continue;\n\n // parse mỗi phần nhỏ như một document riêng\n const doc = parser.parseFromString(trimmed, 'text/html');\n const body = doc.body;\n\n // Lấy lại nội dung bên trong body\n divs.push(`<div>${body.innerHTML}</div>`);\n }\n\n return divs.join('');\n};\n\nexport const processPasteData = async (\n e: ClipboardEvent,\n config: {\n element: HTMLElement;\n handlerPasteFile?: (files: FileList) => void;\n callBack?: (positonReturn: 'file' | 'range' | 'content' | 'no-content') => void;\n }\n) => {\n const element = config.element;\n const files = e.clipboardData?.files;\n if (files?.length) {\n e.preventDefault();\n config.handlerPasteFile?.(files);\n config.callBack?.('file');\n return;\n }\n // Lưu selection TRƯỚC khi prevent default\n const selection = window.getSelection();\n let savedRange: Range | null = null;\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n // Chỉ lưu nếu range nằm trong contentText element\n const container = range.commonAncestorContainer;\n const isInContentElement = element.contains(container.nodeType === Node.TEXT_NODE ? container.parentNode : container);\n if (isInContentElement) {\n savedRange = range.cloneRange();\n }\n }\n // Prevent default để tự xử lý paste\n e.preventDefault();\n const htmlContent = e.clipboardData?.getData('text/html') || '';\n const plainText = e.clipboardData?.getData('text/plain') || '';\n let contentToInsert = (plainText || '').replace(/\\n/g, '<br>');\n if (htmlContent) {\n const delta = await getDeltaOfQuill2xFromHTML(htmlContent);\n contentToInsert = getHTMLFromDeltaOfQuill2x(delta);\n }\n\n if (!contentToInsert) {\n config.callBack?.('no-content');\n return;\n }\n\n if (savedRange) {\n insertContentWithRange(contentToInsert, savedRange, element);\n config.callBack?.('range');\n return;\n }\n element.innerHTML += contentToInsert;\n config.callBack?.('content');\n};\n\nexport const insertContentWithRange = (content: string, savedRange: Range, element: HTMLElement): void => {\n const selection = window.getSelection();\n if (!selection) {\n // Fallback: append vào cuối\n element.innerHTML += content;\n return;\n }\n // Restore selection\n selection.removeAllRanges();\n selection.addRange(savedRange);\n // Xóa nội dung đã select (nếu có)\n savedRange.deleteContents();\n // Tạo document fragment từ HTML content\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = content;\n const fragment = document.createDocumentFragment();\n while (tempDiv.firstChild) {\n fragment.appendChild(tempDiv.firstChild);\n }\n // Insert fragment tại vị trí range\n savedRange.insertNode(fragment);\n // Di chuyển cursor đến cuối nội dung vừa insert\n if (fragment.lastChild) {\n savedRange.setStartAfter(fragment.lastChild);\n }\n savedRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(savedRange);\n};\n\nexport const convertStandardList = (html: string): string => {\n const dom = getDocumentByString(html);\n const liElements = dom.querySelectorAll('li[data-list=\"bullet\"]:not(ul li)');\n liElements.forEach((element) => {\n if (element.closest('ul')) {\n return;\n }\n const ul = document.createElement('ul');\n const elementClone = element.cloneNode(true) as HTMLElement;\n ul.setAttribute('data-list', 'disc');\n if (!elementClone.style.getPropertyValue('padding-left')) {\n ul.style.setProperty('padding-left', '1.5em', 'important');\n }\n ul.style.setProperty('list-style-type', 'disc', 'important');\n ul.appendChild(elementClone);\n element.replaceWith(ul);\n });\n return dom.body.innerHTML;\n};\n\nexport const convertStandardListToQuill2x = (html: string): string => {\n const dom = getDocumentByString(html);\n const ulElements = dom.querySelectorAll('ul[data-list=\"disc\"]');\n ulElements.forEach((element) => {\n const bulletLis = element.querySelectorAll('li[data-list=\"bullet\"]');\n if (!bulletLis.length) return;\n const parent = element.parentNode;\n\n bulletLis.forEach((li) => {\n parent?.insertBefore(li, element);\n });\n\n element.remove();\n });\n return dom.body.innerHTML;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, computed, DestroyRef, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, TemplateRef, untracked, viewChild, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsButtonsSelectColorComponent } from '@libs-ui/components-buttons-select-color';\nimport { IEmitSelectKey, LibsUiComponentsDropdownComponent } from '@libs-ui/components-dropdown';\nimport { LibsUiComponentsEmojiComponent } from '@libs-ui/components-inputs-emoji';\nimport { IFocusAndBlurEvent } from '@libs-ui/components-inputs-input';\nimport { IMentionConfig, IMentionInsert, LibsUiComponentsInputsMentionDirective } from '@libs-ui/components-inputs-mention';\nimport { IValidLength, IValidRequired, LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { LibsUiComponentsSkeletonComponent } from '@libs-ui/components-skeleton';\nimport { TYPE_OBJECT, TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { LibsUiNotificationService } from '@libs-ui/services-notification';\nimport { ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MIN_LENGTH, get, getLabelBySizeFile, isNearWhite, isNil, patternProtocolUrl, patternUrl, set, UtilsKeyCodeConstant, xssFilter } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { IOutputColorChangeMultipleType } from '@libs-ui/components-color-picker';\nimport Quill2x, { Delta, EmitterSource, Range } from 'quill2x';\nimport { fromEvent, lastValueFrom, merge, Subscription, timer } from 'rxjs';\nimport { IQuill2xBlotRegister, IQuill2xCustomConfig, IQuill2xFunctionControlEvent, IQuill2xLink, IQuill2xSelectionChange, IQuill2xTextChange, IQuill2xToolbarConfig, IQuill2xUploadImageConfig } from './interfaces/quill2x.interface';\nimport { LibsUiComponentsInputsQuill2xLinkComponent } from './link/link.component';\nimport { LibsUiComponentsInputsQuill2xUploadImageComponent } from './upload-image/upload-image.component';\nimport { getStylesConvertInline, linkDefault, listConfigAlign, listConfigFont, listConfigHeader, listFont, toolBarOptions, uploadImageConfigDefault } from './utils/data.define';\nimport { convertStandardList, convertStandardListToQuill2x, createContextMenuOptionTable, createTableSelector, enableTableSelection, getAllTablesWithSpan, getHTMLFromDeltaOfQuill2x, isEmptyQuill2x, registerQuill2x } from './utils/functions.define';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill2x',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './quill2x.component.html',\n styleUrls: ['./quill2x.component.scss', '../../quill2x-preview/src/inputs-quill2x-preview.component.scss'],\n imports: [\n NgStyle,\n TranslateModule,\n NgTemplateOutlet,\n LibsUiComponentsDropdownComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsSkeletonComponent,\n LibsUiComponentsScrollOverlayDirective,\n LibsUiComponentsEmojiComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsInputsValidComponent,\n LibsUiComponentsButtonsSelectColorComponent,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsInputsMentionDirective,\n ],\n})\nexport class LibsUiComponentsInputsQuill2xComponent implements OnInit, OnDestroy {\n //region Private\n private subscriptionElementShowToolbar?: Subscription;\n private readonly timeoutRemoveLink = signal<number | undefined>(undefined);\n private readonly displayEditor = signal<boolean>(false);\n private readonly isPaste = signal<boolean>(false);\n private quill: Quill2x | null = null;\n private readonly addEditLinkComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuill2xLinkComponent> | undefined>(undefined);\n private readonly uploadImageComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuill2xUploadImageComponent> | undefined>(undefined);\n private readonly handlers = signal<Record<string, (...params: Array<unknown>) => void>>({\n link: this.handleShowUploadLink.bind(this),\n undo: this.handleUndo.bind(this),\n redo: this.handleRedo.bind(this),\n table: this.handleTable.bind(this),\n image: this.handlerShowUploadImage.bind(this),\n });\n private readonly timerSetFontSize = signal<number | undefined>(undefined);\n private readonly timerCalculatorToolbar = signal<number | undefined>(undefined);\n private readonly totalRecallCalculatorToolbar = signal<number>(0);\n private readonly isCalculatorToolbarSuccess = signal<boolean>(false);\n private readonly showMention = signal<boolean>(false);\n private readonly handlerTextChangeBind = this.handlerTextChange.bind(this);\n private readonly handlerSelectionChangeBind = this.handlerSelectionChange.bind(this);\n //endregion\n\n //region Protected\n protected borderColor = computed<string>(() => (this.messageError() && this.showErrorBorder() ? ' !border-[var(--libs-ui-color-border-error,#ee2d41)] ' : '!border-[#e5e7eb] '));\n protected containerClass = computed(() => `quill-container flex flex-col h-full w-full ${get(this.quillCustomConfig(), 'classContainer') || ''}`);\n protected containerToolbarClass = computed(\n () =>\n `h-full border-t border-l border-r ${this.ignoreShowBorderErrorToolbar() ? '!border-[#e5e7eb] ' : this.borderColor()}rounded-t-[4px] ${this.readonly() ? ' libs-ui-readonly-background cursor-default pointer-events-none ' : ' '} ${get(this.quillCustomConfig(), 'toolbar.classCustomContainerToolbar') || ''} ${get(this.quillCustomConfig(), 'toolbar.positionFixed') ? ' !bg-white border-none w-full shadow-[0px_4px_16px_0px_rgba(0,20,51,0.10)] !rounded-[4px] ' : ' !bg-[#f8f9fa] '}`\n );\n protected containerEditorClass = computed(\n () =>\n `${this.displayEditor() ? 'h-full' : 'hidden'} !border ${this.borderColor()} !rounded-b-[4px] ${this.readonly() ? ' libs-ui-readonly-background ' : ' '} ${get(this.quillCustomConfig(), 'editor.classCustomContainerEditor') || ''} ${get(this.quillCustomConfig(), 'toolbar.positionFixed') ? ' rounded-t-[4px] ' : ' '}`\n );\n\n protected showButtonMoreToolbar = computed(() => this.toolbarOptionsConfig().some((item) => item.display === false));\n protected displaySkeletonToolbar = computed(() => this.toolbarOptionsConfig().every((item) => item.display === undefined));\n\n protected labelFontSelectedComputed = computed(() => get<unknown>(this.fontSelected(), 'item.label') || 'Sans Serif');\n protected fontSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected listConfigFont = signal<IListConfigItem>(listConfigFont());\n\n protected listConfigHeader = signal<IListConfigItem>(listConfigHeader());\n protected headerSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected labelHeaderSelectedComputed = computed(() => get<unknown>(this.headerSelected(), 'item.label') || 'Normal');\n\n protected listConfigAlign = signal<IListConfigItem>(listConfigAlign());\n protected alignSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected iconAlignSelectedComputed = computed(() => get(this.alignSelected() as unknown, 'item.icon'));\n\n protected colorSelected = signal<string | undefined>(undefined);\n protected backgroundSelected = signal<string | undefined>(undefined);\n protected listCheckboxSelected = signal<boolean>(false);\n protected adjustSelected = signal<string | undefined>(undefined);\n\n protected messageError = signal<string>('');\n protected fontSize = signal<{ value: number }>({ value: 14 });\n protected link = signal<IQuill2xLink>(linkDefault());\n\n protected showMoreAction = signal<boolean>(false);\n protected toolbarOptionsConfig: WritableSignal<Array<IQuill2xToolbarConfig>> = signal([]);\n\n protected loadingUploadImage = signal<boolean>(false);\n readonly uploadImageConfig = input<IQuill2xUploadImageConfig, IQuill2xUploadImageConfig | undefined>(uploadImageConfigDefault(), { transform: (value) => value || uploadImageConfigDefault() });\n\n //region Inputs\n readonly displayToolbar = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n\n readonly placeholder = input<string, string | undefined>('i18n_import_content', { transform: (value) => value || 'i18n_import_content' });\n readonly blotsRegister = input<Array<IQuill2xBlotRegister>>();\n readonly readonly = input<boolean, boolean | undefined>(false, { transform: (value) => value ?? false });\n readonly quillCustomConfig = input<IQuill2xCustomConfig>();\n\n readonly label = input<ILabel | undefined>();\n readonly item = model.required<TYPE_OBJECT>();\n readonly fieldBind = input.required<string>();\n\n readonly dataConfigMention = input<IMentionConfig>();\n readonly templateToolBarPersonalize = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n\n readonly zIndex = input<number, number | undefined>(1250, { transform: (value) => value ?? 1250 });\n readonly ignoreShowPopupEditLink = input<boolean>();\n readonly ignoreCommunicateMicroEventPopup = input<boolean>();\n readonly handlersExpand = input<Array<{ title: string; action: () => void }>>();\n readonly resizeImagePlugin = input<boolean>();\n\n readonly fontSizeDefault = input<number, number | undefined>(14, { transform: (value) => value ?? 14 });\n readonly heightEditorContentDefault = input<number>();\n readonly minHeightEditorContentDefault = input<number>();\n readonly maxHeightEditorContentDefault = input<number>();\n\n readonly removeNearWhiteColorsOnPaste = input<boolean>(true);\n\n readonly resize = input<'vertical' | 'none', 'vertical' | 'none' | undefined>('none', { transform: (value) => value ?? 'none' });\n readonly autoFocus = input<boolean>();\n readonly focusTimerOnInit = input<number, number | undefined>(750, { transform: (value) => value ?? 750 });\n readonly focusBottom = input<boolean>();\n\n readonly validRequired = input<IValidRequired>();\n readonly validMinLength = input<IValidLength>();\n readonly validMaxLength = input<IValidLength>();\n readonly showErrorLabel = input<boolean, boolean | undefined>(true, { transform: (val) => val ?? true });\n readonly showErrorBorder = input<boolean | undefined>(true);\n readonly ignoreShowBorderErrorToolbar = input<boolean>();\n\n //endregion\n\n //region Outputs\n readonly outShowPopupEditLink = output<{\n dataLink: IQuill2xLink;\n callback: (linkEdit: { title: string; link: string }) => Promise<void>;\n }>();\n readonly outMessageError = output<string>();\n readonly outBlur = output<void>();\n readonly outFocus = output<void>();\n readonly outChange = output<string>();\n readonly outSelectionChange = output<IQuill2xSelectionChange>();\n readonly outTextChange = output<IQuill2xTextChange>();\n readonly outContextMenu = output<MouseEvent>();\n readonly outFunctionsControl = output<IQuill2xFunctionControlEvent>();\n //endregion\n\n //region ViewChild\n private readonly htmlContainer = viewChild.required<ElementRef<HTMLDivElement>>('htmlContainer');\n private readonly quillBodyContainer = viewChild.required<ElementRef<HTMLDivElement>>('snowContainer');\n private readonly toolbarContainer = viewChild.required<ElementRef<HTMLDivElement>>('toolbarContainer');\n private readonly inputLinkRef = viewChild.required<LibsUiComponentsPopoverComponent>('inputLinkRef');\n //endregion\n\n //region Inject\n private readonly destroyRef = inject(DestroyRef);\n private readonly notificationService = inject(LibsUiNotificationService);\n private readonly translate = inject(TranslateService);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly dynamicComponentService = inject(LibsUiDynamicComponentService);\n //endregion\n\n constructor() {\n effect(() => {\n if (this.fontSizeDefault()) {\n untracked(() => {\n this.fontSize.set({ value: this.fontSizeDefault() });\n this.handlerValueChangeFontSize();\n });\n }\n });\n\n effect(() => {\n const elementEditor = this.quillBodyContainer().nativeElement.getElementsByClassName('ql-editor')?.[0] as HTMLElement;\n if (this.heightEditorContentDefault()) {\n untracked(() => {\n if (elementEditor) {\n elementEditor.style.height = `${this.heightEditorContentDefault()}px`;\n }\n });\n }\n if (this.minHeightEditorContentDefault()) {\n untracked(() => {\n if (elementEditor) {\n elementEditor.style.minHeight = `${this.minHeightEditorContentDefault()}px`;\n }\n });\n }\n if (this.maxHeightEditorContentDefault()) {\n untracked(() => {\n if (elementEditor) {\n elementEditor.style.maxHeight = `${this.maxHeightEditorContentDefault()}px`;\n }\n });\n }\n });\n\n effect(() => {\n const zIndex = get(this.quillCustomConfig, 'toolbar.positionFixed.zIndex');\n\n if (!zIndex) {\n return;\n }\n\n untracked(() => {\n const styles = this.getStylesToolbar();\n styles.update((styles) => ({ ...styles, zIndex: zIndex }));\n });\n });\n\n effect(() => {\n const width = get(this.quillCustomConfig, 'toolbar.positionFixed.width');\n\n if (!width) {\n return;\n }\n\n untracked(() => {\n const styles = this.getStylesToolbar();\n styles.update((styles) => ({ ...styles, width: `${width}px` }));\n this.calculatorToolbar();\n });\n });\n\n effect(() => {\n const gapVertical = get(this.quillCustomConfig, 'toolbar.positionFixed.gapVertical');\n const gapHorizontal = get(this.quillCustomConfig, 'toolbar.positionFixed.gapHorizontal');\n\n if (!gapVertical && !gapHorizontal) {\n return;\n }\n\n untracked(() => {\n const styles = this.getStylesToolbar();\n\n if (styles().top) {\n styles.update((styles) => ({ ...styles, top: Number(styles.top as string) + (gapVertical || 0), left: Number(styles.left as string) + (gapHorizontal || 0) }));\n }\n });\n });\n\n effect(() => {\n const elementShow = get(this.quillCustomConfig, 'toolbar.positionFixed.elementShow');\n const event = get(this.quillCustomConfig, 'toolbar.positionFixed.event');\n untracked(() => {\n if (!elementShow || !event) {\n return;\n }\n elementShow.classList.add('cursor-pointer');\n const styles = this.getStylesToolbar();\n if (this.subscriptionElementShowToolbar) {\n this.subscriptionElementShowToolbar.unsubscribe();\n }\n\n styles.update((styles) => ({ ...styles, display: 'none' }));\n this.subscriptionElementShowToolbar = fromEvent(elementShow, event)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handlerToolbarElementVisibility(styles, elementShow));\n });\n });\n }\n\n async ngOnInit() {\n const type = get(this.quillCustomConfig(), 'toolbar.type', 'default');\n const hasIconImage = this.uploadImageConfig().showIcon ?? false;\n const hasIconPersonalize = !!this.templateToolBarPersonalize();\n this.toolbarOptionsConfig.set(get(this.quillCustomConfig(), 'toolbar.options', toolBarOptions(type, hasIconImage, hasIconPersonalize)));\n\n this.calculatorToolbar();\n registerQuill2x();\n this.blotsRegister()?.forEach((item) => {\n Quill2x.register(item.component, true);\n });\n\n this.updateHandlerFunction();\n\n const options = {\n theme: 'snow',\n placeholder: this.translate.instant(this.placeholder()),\n readOnly: this.readonly(),\n modules: {\n toolbar: {\n container: this.toolbarContainer().nativeElement,\n handlers: this.handlers(),\n },\n resize: this.resizeImagePlugin()\n ? {\n locale: {\n altTip: this.translate.instant('i18n_keep_alt_key_to_change_the_ratio_when_changing_the_size'),\n inputTip: this.translate.instant('i18n_press_enter_to_confirm'),\n floatLeft: this.translate.instant('i18n_left_align'),\n floatRight: this.translate.instant('i18n_right_align'),\n center: this.translate.instant('i18n_center_align'),\n restore: this.translate.instant('i18n_restore_to_default'),\n },\n }\n : undefined,\n table: true,\n clipboard: {\n matchers: [\n [\n Node.TEXT_NODE,\n (node: { data: string }) => {\n if (/^\\s+$/.test(node.data)) {\n return { ops: [] }; // bỏ toàn bộ whitespace text node\n }\n return new Delta().insert(node.data);\n },\n ],\n this.removeNearWhiteColorsOnPaste()\n ? [\n Node.ELEMENT_NODE,\n (node: HTMLElement, delta: any) => {\n const style = node.getAttribute('style');\n if (style && this.isPaste()) {\n const newOps = delta.ops.map((op: any) => {\n if (op.attributes) {\n const newAttrs = { ...op.attributes };\n const color = newAttrs.color as string;\n const background = newAttrs.background as string;\n\n if (color && isNearWhite(color)) {\n delete newAttrs.color;\n }\n\n if (background && isNearWhite(background)) {\n delete newAttrs.background;\n }\n\n return { ...op, attributes: Object.keys(newAttrs).length ? newAttrs : undefined };\n }\n return op;\n });\n\n return new Delta(newOps);\n }\n return delta;\n },\n ]\n : [],\n ],\n },\n keyboard: {\n bindings: {\n backspace: {\n key: UtilsKeyCodeConstant.BACKSPACE,\n handler: (range: Range) => this.noPreventEmbedDeletion(range),\n },\n delete: {\n key: UtilsKeyCodeConstant.DELETE,\n handler: (range: Range) => this.noPreventEmbedDeletion(range),\n },\n enter: {\n key: 13,\n handler: () => !this.showMention(),\n },\n },\n },\n history: {\n delay: 2000,\n maxStack: 500,\n userOnly: true,\n },\n },\n } as const;\n\n this.quill = new Quill2x(this.quillBodyContainer().nativeElement, options);\n this.quill?.on('text-change', this.handlerTextChangeBind);\n this.quill?.on('selection-change', this.handlerSelectionChangeBind);\n\n fromEvent<ClipboardEvent>(this.quill?.root, 'copy').pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.handlerCopy.bind(this));\n fromEvent<ClipboardEvent>(this.quill?.root, 'paste', { capture: true }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.handlerPaste.bind(this));\n fromEvent<MouseEvent>(this.quillBodyContainer()?.nativeElement, 'contextmenu')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((e) => this.outContextMenu.emit(e));\n fromEvent<MouseEvent>(window, 'resize')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.calculatorToolbar(true));\n\n this.outFunctionsControl.emit(this.FunctionsControl);\n await this.setContent(convertStandardListToQuill2x((this.item()[this.fieldBind()] as string) || ''));\n\n timer(this.autoFocus() ? 0 : 250)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.displayEditor.set(true));\n\n this.setStyleForContent();\n\n if (this.autoFocus()) {\n timer(this.focusTimerOnInit() + 250)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.focus());\n }\n createContextMenuOptionTable(this.quill, this.translate);\n enableTableSelection(this.quill.root);\n getAllTablesWithSpan(this.quill);\n\n const rootElement = this.quill?.root;\n if (!rootElement) {\n return;\n }\n\n merge(fromEvent(rootElement, 'compositionstart'), fromEvent(rootElement, 'compositionend'))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((e) => {\n if (e.type === 'compositionstart') {\n rootElement.classList.remove('ql-blank');\n return;\n }\n if (isEmptyQuill2x(this.quill)) {\n rootElement.classList.add('ql-blank');\n return;\n }\n rootElement.classList.remove('ql-blank');\n });\n }\n\n public get FunctionsControl(): IQuill2xFunctionControlEvent {\n return {\n quill: () => this.quill ?? undefined,\n checkIsValid: this.validate.bind(this),\n refreshItemValue: this.updateValueByRootQuillHtml.bind(this),\n setContent: (content: string) => this.setContent(convertStandardListToQuill2x(content)),\n insertText: this.insertText.bind(this),\n insertLink: this.insertLink.bind(this),\n insertImage: this.insertImage.bind(this),\n setFontSize: async (size: number) => this.quill?.format('size', `${size}px`),\n setColor: async (color: string) => this.quill?.format('color', color),\n setBackground: async (color: string) => this.quill?.format('background', color),\n setMessageError: async (message: string) => this.messageError.set(message),\n reCalculatorToolbar: async () => this.calculatorToolbar(true),\n updatePositionToolbar: async () => this.updatePositionToolbar(),\n };\n }\n\n //region handler Event HTML\n\n protected handlerChangeShowMoreAction(event: Event) {\n event.stopPropagation();\n this.showMoreAction.update((showMoreAction) => !showMoreAction);\n }\n\n protected handleSelectFont(event: IEmitSelectKey | undefined) {\n this.fontSelected.set(event);\n this.quill?.format('font', event?.key as string);\n }\n\n protected handleSelectHeader(event: IEmitSelectKey | undefined) {\n this.headerSelected.set(event);\n this.quill?.format('header', event?.key as string);\n }\n\n protected handlerValueChangeFontSize(event?: IFocusAndBlurEvent) {\n if (!event || event?.name === 'blur') {\n this.quill?.format('size', `${this.fontSize().value}px`);\n }\n }\n\n protected handleSelectAlign(event: IEmitSelectKey | undefined) {\n this.alignSelected.set(event);\n this.quill?.format('align', event?.key as string);\n }\n\n protected handlerSetFormat(type: string, data: IOutputColorChangeMultipleType) {\n if (!data.alpha) {\n this.quill?.format(type, undefined);\n return;\n }\n this.quill?.format(type, data.hex);\n }\n\n protected handlerInsertEmoji(emoji: unknown) {\n this.insertText(emoji as string, undefined, true);\n }\n\n protected handlerUnlink(event: Event) {\n event.stopPropagation();\n const link = this.link();\n this.quill?.formatText(link.range.index, link.range.length, { link: false });\n this.inputLinkRef().FunctionsControl?.removePopoverOverlay();\n }\n\n protected handlerEditLink(event: Event) {\n event.stopPropagation();\n const link = this.link();\n if (this.ignoreShowPopupEditLink()) {\n this.outShowPopupEditLink.emit({\n dataLink: link,\n callback: async (linkEdit: { title: string; link: string }) => {\n if (link instanceof Object && link.url) {\n this.quill?.deleteText(link.range.index, link.range.length, Quill2x.sources.USER);\n this.quill?.insertText(link.range.index, linkEdit.title, 'link', linkEdit.link);\n return;\n }\n this.insertLink(linkEdit.title, linkEdit.link);\n },\n });\n return;\n }\n this.handleShowUploadLink(link);\n this.inputLinkRef().FunctionsControl?.removePopoverOverlay();\n }\n\n protected handleToggleMention(show: boolean) {\n this.showMention.set(show);\n }\n\n protected handlerInsertMention(data: IMentionInsert) {\n this.insertMention(data);\n }\n\n //endregion\n\n //region Private Method\n\n //region Quill Methods\n private handleTable() {\n if (!this.quill) return;\n const button = this.htmlContainer().nativeElement.querySelector?.('button.ql-table') as HTMLElement | null;\n createTableSelector(this.quill, button, this.translate);\n }\n\n private handleUndo() {\n this.quill?.history?.undo();\n }\n\n private handleRedo() {\n this.quill?.history?.redo();\n }\n\n private handlerShowUploadImage() {\n if (this.uploadImageConfig().modeCustom) {\n this.uploadImageComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsQuill2xUploadImageComponent));\n const instance = this.uploadImageComponentRef()?.instance;\n this.uploadImageComponentRef()?.setInput('uploadImageConfig', this.uploadImageConfig());\n this.uploadImageComponentRef()?.setInput('ignoreCommunicateMicroEvent', this.ignoreCommunicateMicroEventPopup());\n instance?.outClose.subscribe((link: string | void) => {\n this.dynamicComponentService.delete(this.uploadImageComponentRef());\n if (link) {\n this.insertImage(link);\n }\n });\n this.dynamicComponentService.addToBody(this.uploadImageComponentRef());\n\n return;\n }\n\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('accept', 'image/*');\n input.click();\n input.onchange = async () => {\n await this.uploadImagesAndInsert(input?.files);\n };\n }\n\n private async insertText(content: string, index?: number, focusLastValueInsert?: boolean) {\n index = index ?? this.quill?.getSelection(true).index;\n if (!isNil(index)) {\n this.quill?.insertText(index, content, Quill2x.sources.USER);\n if (focusLastValueInsert) {\n await lastValueFrom(timer(0));\n this.quill?.setSelection(index + content.length, 0, Quill2x.sources.USER);\n }\n }\n }\n\n private handlerSelectionChange(range: Range, oldRange: Range, source: EmitterSource) {\n if (!this.quill || this.readonly()) {\n return;\n }\n if (range === null && oldRange !== null) {\n this.outBlur.emit();\n return;\n }\n if (range !== null && oldRange === null) {\n this.outFocus.emit();\n return;\n }\n\n const format = this.updateStateToolbarByFormatInCursor();\n this.outSelectionChange.emit({\n quill: this.quill,\n range,\n oldRange,\n source,\n });\n\n if (range.length !== 0 || !format?.link || source !== 'user') {\n return;\n }\n\n this.processLinkOnCursorChange(range);\n }\n\n private processLinkOnCursorChange(range: Range) {\n const selection = document.getSelection();\n const anchorNode = selection?.anchorNode;\n let linkNode = anchorNode as HTMLAnchorElement;\n while (linkNode && linkNode.tagName !== 'A') {\n linkNode = linkNode.parentNode as HTMLAnchorElement;\n }\n\n if (!linkNode || linkNode.tagName !== 'A') {\n return;\n }\n\n const linkText = linkNode.innerText;\n const linksIndices = this.findLinkIndices(linkText, range.index);\n if (!linksIndices.length) {\n return;\n }\n const rangeIndex = linksIndices[linksIndices.length - 1];\n const countImage = this.adjustIndexForImages(rangeIndex);\n setTimeout(() => {\n this.link.set({\n title: linkText,\n url: linkNode.href,\n range: {\n index: rangeIndex + countImage,\n length: linkText.length,\n },\n });\n clearTimeout(this.timeoutRemoveLink());\n this.inputLinkRef().FunctionsControl?.showPopover(linkNode);\n });\n }\n\n private findLinkIndices(linkText: string, rangeIndex: number): number[] {\n const linksIndices: number[] = [];\n let indexReturn: number | undefined = -1;\n while (!isNil(indexReturn) && indexReturn < rangeIndex) {\n const startSearch = linksIndices.length > 0 ? linksIndices[linksIndices.length - 1] + linkText.length : 0;\n const linkIndex = this.quill?.getText()?.indexOf(linkText, startSearch);\n if (isNil(linkIndex) || linkIndex === -1) {\n indexReturn = undefined;\n continue;\n }\n linksIndices.push(linkIndex);\n indexReturn = linkIndex + linkText.length;\n }\n return linksIndices;\n }\n\n private handlerCopy(e: ClipboardEvent): void {\n if (!this.quill) return;\n const sel = this.quill.getSelection();\n if (!sel || sel.length === 0) return;\n\n e.preventDefault();\n const delta = this.quill.getContents(sel.index, sel.length);\n const html2x = getHTMLFromDeltaOfQuill2x(delta);\n\n if (e.clipboardData) {\n e.clipboardData.setData('text/html', html2x);\n }\n }\n\n private async handlerPaste(event: ClipboardEvent) {\n this.isPaste.set(true);\n setTimeout(() => this.isPaste.set(false), 0);\n if (!event?.clipboardData) {\n return;\n }\n const files = event.clipboardData.files;\n if (!files.length) {\n return;\n }\n event.preventDefault();\n await this.uploadImagesAndInsert(files);\n }\n\n private handlerTextChange(event: any, _: any, source: EmitterSource) {\n if (!this.quill) return;\n this.outTextChange.emit({\n quill: this.quill,\n delta: event,\n });\n\n this.detectLink(source);\n setTimeout(() => {\n this.updateStateToolbarByFormatInCursor();\n\n if (event?.ops[1]?.insert === '\\n') {\n const range = { index: event?.ops[0].retain as number };\n const currentLeaf = this.quill?.getLeaf(range.index)[0] as any;\n const nextLeaf = this.quill?.getLeaf(range.index + 1)[0] as any;\n this.quill?.insertEmbed(range.index, 'break', true, 'user');\n if (nextLeaf === null || currentLeaf.parent !== nextLeaf.parent) {\n this.quill?.insertEmbed(range.index, 'break', true, 'user');\n }\n this.quill?.setSelection((range.index || 0) + 1, 0, Quill2x.sources.SILENT);\n }\n });\n this.updateValueByRootQuillHtml();\n }\n\n //endregion\n\n private updateStateToolbarByFormatInCursor(): { [format: string]: unknown } | undefined {\n try {\n const format = this.quill?.getFormat();\n if (format) {\n this.setFontSizeSelected(format);\n this.setFontSelected(format);\n this.setColorSelected(format);\n this.listCheckboxSelected.set(format?.list === 'unchecked' || format?.list === 'checked');\n this.adjustSelected.set(format?.align as string);\n }\n return format;\n } catch (error) {\n console.log(error);\n\n return undefined;\n }\n }\n private async validate() {\n this.messageError.set('');\n const validRequired = this.validRequired();\n const item = this.item();\n const fieldNameBind = this.fieldBind();\n const value = get<unknown>(item, fieldNameBind);\n if (validRequired && validRequired.isRequired && !this.readonly() && isEmptyQuill2x(this.quill)) {\n this.messageError.set(validRequired.message || ERROR_MESSAGE_EMPTY_VALID);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n const validMinLength = this.validMinLength();\n if (validMinLength && fieldNameBind && value && value.trim().length < validMinLength.length) {\n this.messageError.set(validMinLength.message || ERROR_MESSAGE_MIN_LENGTH);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n const validMaxLength = this.validMaxLength();\n if (validMaxLength && fieldNameBind && value && value.trim().length > this.validMaxLength.length) {\n this.messageError.set(validMaxLength.message || ERROR_MESSAGE_MAX_LENGTH);\n this.outMessageError.emit(this.messageError());\n return false;\n }\n this.outMessageError.emit(this.messageError());\n return true;\n }\n\n private updateHandlerFunction() {\n const handlersExpand = this.handlersExpand();\n\n if (handlersExpand?.length) {\n handlersExpand.forEach((element) => {\n if (element.title && element.action) {\n this.handlers.update((item) => ({ ...item, [element.title]: element.action }));\n }\n });\n }\n }\n\n private noPreventEmbedDeletion(range: Range): boolean {\n if (!this.quill) return false;\n const delta = this.quill?.getContents(range.index, 1);\n\n if (delta?.ops.some((option) => this.blotsRegister()?.find((item) => get(option.insert, item.component['blotName']) && item.ignoreDelete))) {\n return false; // Ngăn không cho Quill xử lý xóa\n }\n\n return true;\n }\n\n private setFontSizeSelected(format: Record<string, unknown>) {\n const fontSize = this.extractFontSize(format?.size);\n if (fontSize === null) {\n this.fontSize.set({ value: this.fontSizeDefault() });\n return;\n }\n this.fontSize.set({ value: fontSize });\n }\n\n private extractFontSize(raw: unknown): number | null {\n if (typeof raw === 'number') return isNaN(raw) ? null : raw;\n if (typeof raw === 'string') {\n const num = parseFloat(raw.replace('px', '').trim());\n return isNaN(num) ? null : num;\n }\n return null;\n }\n\n private setFontSelected(format: Record<string, unknown>) {\n const font = listFont().find((item) => item.key === format.font);\n if (!font) {\n this.fontSelected.set({ key: '', item: listFont().find((item) => item.key === '') });\n return;\n }\n this.fontSelected.set({ key: format.font, item: font });\n }\n\n private setColorSelected(format: Record<string, unknown>) {\n this.colorSelected.set(format?.color as string);\n this.backgroundSelected.set(format?.background as string);\n }\n\n private async calculatorToolbar(resetTotalRecall?: boolean) {\n clearTimeout(this.timerCalculatorToolbar());\n if (resetTotalRecall) {\n this.totalRecallCalculatorToolbar.set(0);\n }\n this.cdr.detectChanges();\n const toolbarPositionFixed = get(this.quillCustomConfig(), 'toolbar.positionFixed.width', 0);\n const toolbarWidth = toolbarPositionFixed || this.toolbarContainer().nativeElement.offsetWidth || 0;\n let totalWidth = 84;\n if (!this.isCalculatorToolbarSuccess() && this.totalRecallCalculatorToolbar() < 10 && toolbarWidth < get(this.quillCustomConfig(), 'toolbar.lessWidthToolbarRecallCalculator', totalWidth)) {\n this.totalRecallCalculatorToolbar.update((val) => val + 1);\n this.timerCalculatorToolbar.set(\n setTimeout(() => {\n this.calculatorToolbar();\n }, 250)\n );\n\n return;\n }\n this.isCalculatorToolbarSuccess.set(true);\n this.toolbarOptionsConfig.update((configs) => {\n configs.forEach((item, index) => {\n item.display = true;\n totalWidth += item.width;\n if (item.type === 'line') {\n const nextItemWidth = totalWidth + this.toolbarOptionsConfig()[+index + 1].width;\n const preItem = this.toolbarOptionsConfig()[+index - 1];\n if (nextItemWidth > toolbarWidth && preItem.display === true) {\n item.display = undefined;\n return;\n }\n }\n if (totalWidth > toolbarWidth) {\n item.display = false;\n }\n });\n return [...configs];\n });\n this.cdr.detectChanges();\n }\n\n private setStyleForContent() {\n const stylesConvertInline = getStylesConvertInline();\n this.blotsRegister()?.forEach((item) => {\n stylesConvertInline.push({\n selector: `.${item.className}`,\n styles: item.style.split(';').map((style) => {\n const [key, value] = style.split(':');\n return { key, value };\n }),\n });\n });\n stylesConvertInline.forEach((item) => {\n const elements = this.quill?.root.querySelectorAll<HTMLElement>(item.selector);\n elements?.forEach((element) => {\n element.style.setProperty('font-family', 'inherit');\n\n item.styles.forEach((style) => {\n element.style.setProperty(style.key, style.value);\n });\n });\n });\n }\n\n private async setContent(content: string) {\n if (!this.quill) {\n return;\n }\n const contentXssFilter = await xssFilter(this.removeUnwantedPart(content || ''));\n this.quill.clipboard.dangerouslyPasteHTML(contentXssFilter, Quill2x.sources.SILENT);\n this.quill.blur();\n }\n\n private adjustIndexForImages(index: number) {\n const content = this.quill?.root;\n let imageCount = 0;\n let adjustedIndex = 0;\n const adjustTextIndex = (node: Node) => {\n if (adjustedIndex > index) {\n return;\n }\n if (node.nodeType === Node.TEXT_NODE) {\n adjustedIndex += node.textContent?.length || 0;\n return;\n }\n if (node.nodeType === Node.ELEMENT_NODE && node.nodeName === 'IMG') {\n if (adjustedIndex <= index) {\n imageCount++;\n }\n return;\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n Array.from(node.childNodes).forEach(adjustTextIndex);\n }\n };\n adjustTextIndex(content as Node);\n return imageCount;\n }\n\n private async uploadImagesAndInsert(files?: FileList | null) {\n if (!files) {\n return;\n }\n const maxImageSize = this.uploadImageConfig()?.maxImageSize || 5 * 1024 * 1024;\n const images = Array.from(files).filter((file) => file && file.type.split('/')[0] === 'image' && (!this.uploadImageConfig().maxImageSize || file.size <= maxImageSize));\n if (!images.length) {\n this.notificationService.showCompTypeTextWarning(this.translate.instant('i18n_note_upload_image_volume', { value: getLabelBySizeFile(maxImageSize) }), { timeRemove: 8000 });\n return;\n }\n try {\n this.loadingUploadImage.set(true);\n const indexInsert = this.quill?.getSelection(true).index;\n const links = await this.uploadImageConfig().functionUploadImage?.(images);\n if (!links?.length) {\n return;\n }\n links.forEach((link) => {\n if (!link || (this.uploadImageConfig().onlyAcceptImageHttpsLink && (link instanceof ArrayBuffer || !new RegExp(patternUrl()).test(link)))) {\n return;\n }\n this.insertImage(link as string, indexInsert);\n });\n } catch (error) {\n console.error(error);\n } finally {\n this.loadingUploadImage.set(false);\n }\n }\n\n private async insertImage(content: string, index?: number) {\n const selection = index ?? this.quill?.getSelection(true).index;\n if (!isNil(selection)) {\n this.quill?.insertEmbed(selection, 'image', content);\n this.quill?.setSelection(selection + 1, 0);\n }\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n this.timeoutRemoveLink.set(\n setTimeout(() => {\n if (event === 'remove') {\n this.link.set(linkDefault());\n }\n }, 100)\n );\n }\n\n private async insertLink(text: string, url: string, index?: number) {\n const selection = this.quill?.getSelection(true);\n const indexInsert = index ?? selection?.index;\n if (selection?.length) {\n this.quill?.deleteText(selection.index, selection.length, Quill2x.sources.USER);\n }\n if (!isNil(indexInsert)) {\n this.quill?.insertText(indexInsert, text, {\n link: url,\n color: false,\n });\n }\n }\n\n private handleShowUploadLink(event: unknown) {\n this.addEditLinkComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsQuill2xLinkComponent));\n const instance = this.addEditLinkComponentRef()?.instance;\n const selection = this.quill?.getSelection();\n const textSelected = selection?.length ? this.quill?.getText(selection?.index, selection?.length) : '';\n const data = event as IQuill2xLink | undefined;\n this.addEditLinkComponentRef()?.setInput('zIndex', this.zIndex());\n this.addEditLinkComponentRef()?.setInput('title', data?.title || textSelected);\n this.addEditLinkComponentRef()?.setInput('link', data?.url || '');\n this.addEditLinkComponentRef()?.setInput('ignoreCommunicateMicroEvent', this.ignoreCommunicateMicroEventPopup());\n instance?.outSaveLink.subscribe((item: { title: string; link: string }) => {\n if (data instanceof Object && data.url) {\n this.quill?.deleteText(data.range.index, data.range.length, Quill2x.sources.USER);\n this.quill?.insertText(data.range.index, item.title, 'link', item.link);\n return;\n }\n this.insertLink(item.title, item.link);\n });\n instance?.outClose.subscribe(() => this.dynamicComponentService.delete(this.addEditLinkComponentRef()));\n this.dynamicComponentService.addToBody(this.addEditLinkComponentRef());\n }\n\n private insertMention(event: IMentionInsert) {\n const range = this.quill?.getSelection();\n if (!range) {\n return;\n }\n const indexSubtract = this.quill?.getText(range.index - 1, 1)?.includes('@') ? 0 : 1;\n const cursorPos = range.index - indexSubtract;\n const startPosInsert = cursorPos - event.lengthKey;\n this.quill?.deleteText(startPosInsert, event.lengthKey, Quill2x.sources.SILENT);\n this.quill?.insertEmbed(startPosInsert, 'mention', event.data, Quill2x.sources.SILENT);\n this.insertText(' ', startPosInsert + 1);\n if (indexSubtract) {\n this.quill?.deleteText(startPosInsert + 3, 1, Quill2x.sources.SILENT);\n }\n this.quill?.setSelection(startPosInsert + 2, 0, Quill2x.sources.SILENT);\n }\n\n private updateValueByRootQuillHtml() {\n if (isEmptyQuill2x(this.quill)) {\n set<unknown>(this.item(), this.fieldBind(), '');\n this.validate();\n this.outChange.emit(get<unknown>(this.item, this.fieldBind()));\n return;\n }\n this.convertInnerHTMLAndSetValue();\n this.validate();\n this.outChange.emit(get<unknown>(this.item, this.fieldBind()));\n }\n\n private convertInnerHTMLAndSetValue() {\n this.setStyleForContent();\n set<unknown>(this.item(), this.fieldBind(), convertStandardList(this.removeUnwantedPart(this.quill?.root.innerHTML || '')));\n }\n\n private removeUnwantedPart(html: string) {\n if (!html) {\n return '';\n }\n return html\n .replace(/^\\s*<p><br><\\/p>/, '')\n .replace(/<div><br><\\/div>/gi, '')\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n }\n\n private detectLink(source: EmitterSource) {\n if (source !== 'user') {\n return;\n }\n const fullText = this.quill?.getText();\n const indexes = this.getIndexUrlMatch(fullText || '');\n if (isNil(fullText) || !indexes.length) {\n return;\n }\n indexes.forEach((item) => {\n const textSelection = this.quill?.getText(item.start, item.end - item.start);\n if (!textSelection) {\n return;\n }\n const indexof = textSelection.search(patternProtocolUrl());\n if (indexof < 0) {\n return;\n }\n this.quill?.formatText(item.start + indexof, item.text.length, { link: item.text }, Quill2x.sources.SILENT);\n });\n }\n\n private getIndexUrlMatch(fullText: string): Array<{ start: number; end: number; text: string }> {\n const urlRegex = new RegExp(patternUrl().source.slice(1, -1), 'ig');\n const textMatch: string[] = [];\n let execResult: RegExpExecArray | null;\n while ((execResult = urlRegex.exec(fullText)) !== null) {\n textMatch.push(execResult[0]);\n }\n const indexes: Array<{ start: number; end: number; text: string; preCharacter: string }> = [];\n let index = 0;\n textMatch.forEach((text) => {\n const indexOfTextMatch = fullText.indexOf(text, index);\n\n if (indexOfTextMatch === 0) {\n index = indexOfTextMatch + text.length;\n indexes.push({ start: indexOfTextMatch, end: indexOfTextMatch + text.length, text, preCharacter: fullText[indexOfTextMatch] });\n return;\n }\n const indexPreCharacter = indexOfTextMatch - 1;\n index = indexOfTextMatch + text.length;\n if (indexOfTextMatch < 0 || !new RegExp(/^\\s|^\\t|^\\n/).test(fullText[indexPreCharacter] || '')) {\n return;\n }\n indexes.push({ start: indexOfTextMatch, end: indexOfTextMatch + text.length, text, preCharacter: fullText[indexPreCharacter] });\n });\n\n return indexes;\n }\n\n private focus() {\n if (this.focusBottom()) {\n this.quill?.setSelection(this.quill.root.innerHTML.length, 0, Quill2x.sources.SILENT);\n return;\n }\n this.quill?.setSelection(0, 0, Quill2x.sources.SILENT);\n }\n\n private getStylesToolbar(): WritableSignal<Record<string, unknown>> {\n let styles = get(this.quillCustomConfig, 'toolbar.styles', undefined, true);\n if (!styles) {\n styles = signal({});\n set(this.quillCustomConfig, 'toolbar.styles', styles);\n }\n return styles;\n }\n\n private updatePositionToolbar() {\n const elementShow = get(this.quillCustomConfig, 'toolbar.positionFixed.elementShow');\n const styles = this.getStylesToolbar();\n\n if (!elementShow || styles().display === 'none') {\n return;\n }\n\n this.updateStylesToolbar(elementShow, styles);\n }\n\n private handlerToolbarElementVisibility(styles: WritableSignal<Record<string, unknown>>, elementShow: HTMLElement) {\n if (styles().display === 'flex') {\n styles.update((s) => ({ ...s, display: 'none' }));\n this.showMoreAction.set(false);\n return;\n }\n this.updateStylesToolbar(elementShow, styles);\n }\n\n private updateStylesToolbar(elementShow: HTMLElement, styles: WritableSignal<Record<string, unknown>>) {\n const gapVertical = get(this.quillCustomConfig, 'toolbar.positionFixed.gapVertical');\n const gapHorizontal = get(this.quillCustomConfig, 'toolbar.positionFixed.gapHorizontal');\n const boundingClientRect = elementShow.getBoundingClientRect();\n\n const multiplier = get(this.quillCustomConfig, 'toolbar.positionFixed.position', 'top') === 'top' ? -1 : 1;\n\n styles.update((styles) => ({\n ...styles,\n display: 'flex',\n position: 'fixed',\n top: `${boundingClientRect.top + (gapVertical || 2) * multiplier + 44 * multiplier}px`,\n left: `${boundingClientRect.left + (gapHorizontal || 0)}px`,\n }));\n }\n\n //endregion\n\n ngOnDestroy(): void {\n clearTimeout(this.timerSetFontSize());\n clearTimeout(this.timerCalculatorToolbar());\n clearTimeout(this.timeoutRemoveLink());\n this.subscriptionElementShowToolbar?.unsubscribe();\n this.dynamicComponentService.delete(this.addEditLinkComponentRef());\n this.dynamicComponentService.delete(this.uploadImageComponentRef());\n this.quill?.off('text-change', this.handlerTextChangeBind);\n this.quill?.off('selection-change', this.handlerSelectionChangeBind);\n const editorDom = this.quill?.root.parentElement;\n if (editorDom?.parentElement) {\n editorDom.parentElement.removeChild(editorDom);\n }\n this.quill = null;\n }\n}\n","<div\n #htmlContainer\n [class]=\"containerClass()\"\n [style.--resize]=\"resize()\">\n @if (label(); as label) {\n <libs_ui-components-label\n [classInclude]=\"label.classInclude\"\n [required]=\"label.required\"\n [labelLeft]=\"label.labelLeft\" />\n }\n <div\n #toolbarContainer\n class=\"relative h-[44px]\"\n [class.hidden]=\"!displayToolbar()\"\n [ngStyle]=\"quillCustomConfig()?.toolbar?.()?.styles?.() || {}\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\" />\n </div>\n <div\n #snowContainer\n LibsUiComponentsScrollOverlayDirective\n LibsUiComponentsInputsMentionDirective\n [options]=\"{ ignoreTransparentScrollBarColorDefault: resize() !== 'none' }\"\n [mentionConfig]=\"dataConfigMention()\"\n (outToggle)=\"handleToggleMention($event)\"\n (outInsertMention)=\"handlerInsertMention($event)\"\n [class]=\"containerEditorClass()\"></div>\n @if (messageError() && showErrorLabel()) {\n <div class=\"flex items-center mt-[8px]\">\n <span class=\"text-[#ff5454] libs-ui-font-h7r\">{{ messageError() | translate }}</span>\n </div>\n }\n</div>\n\n<ng-template #toolbarTemplate>\n <div\n [class]=\"containerToolbarClass()\"\n #toolbarItems>\n @if (displaySkeletonToolbar()) {\n <libs_ui-components-skeleton\n class=\"w-full h-full\"\n [config]=\"{\n rows: [\n {\n item: { classIncludeItem: '!rounded-none' },\n },\n ],\n }\" />\n }\n <div class=\"ql-formats items-center px-[16px] py-[4px] !flex !mr-0\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div\n class=\"items-center\"\n [class.hidden]=\"!option.display\"\n [class.flex]=\"option.display\">\n <ng-container *ngTemplateOutlet=\"itemToolbarTemplate; context: { option, $index, $last }\" />\n </div>\n }\n <div class=\"relative\">\n @if (showButtonMoreToolbar()) {\n <libs_ui-components-buttons-button\n [type]=\"showMoreAction() ? 'button-secondary' : 'button-third'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[1px] !h-[20px] ml-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-move-right rotate-90'\"\n (outClick)=\"handlerChangeShowMoreAction($event)\" />\n }\n <!-- Build toolbar khi click xem thêm-->\n <div\n [class.hidden]=\"!showMoreAction()\"\n class=\"absolute bg-[#ffffff] shadow-[0px_4px_16px_0px_rgba(0,20,51,0.10)] z-[1] flex items-center pl-[8px] pr-[16px] py-[4px] rounded-[8px] top-[31px] right-[0px]\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div\n class=\"items-center\"\n [class.hidden]=\"option.display !== false\"\n [class.flex]=\"option.display === false\">\n <ng-container *ngTemplateOutlet=\"itemToolbarTemplate; context: { option, $index, $last }\" />\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template\n #itemToolbarTemplate\n let-$index=\"$index\"\n let-$last=\"$last\"\n let-option=\"option\">\n @if (option.type === 'undo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_undo', zIndex: zIndex() }\"\n class=\"ql-undo\"></button>\n </div>\n }\n @if (option.type === 'redo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_redo', zIndex: zIndex() }\"\n class=\"ql-redo\"></button>\n </div>\n }\n @if (option.type === 'fontFamily') {\n <div\n class=\"relative w-[132px] h-full rounded-[4px] libs-ui-border-general {{ option.classInclude || 'mx-[8px]' }}\"\n [class.bg-white]=\"!readonly() && !loadingUploadImage()\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigFont()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [readonly]=\"readonly()\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectFont($event)\">\n @if (fontSelected(); as fontSelected) {\n <div class=\"flex items-center cursor-pointer py-[7px] libs-ui-font-h5r pl-[16px] pr-[40px]\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ labelFontSelectedComputed() }}\n </libs_ui-components-popover>\n <i class=\"libs-ui-icon-move-right rotate-90 absolute right-[12px] text-[#6a7383] text-[16px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </div>\n }\n @if (option.type === 'header') {\n <div\n class=\"relative w-[138px] h-full rounded-[4px] libs-ui-border-general {{ option.classInclude || 'mx-[8px]' }}\"\n [class.bg-white]=\"!readonly() && !loadingUploadImage()\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [popoverCustomConfig]=\"{ widthByParent: false, width: 200, classInclude: 'h-[254px]', classIncludeOverlayBody: 'h-full', position: { mode: 'start', distance: -8 } }\"\n [listConfig]=\"listConfigHeader()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [readonly]=\"readonly()\"\n [listMaxItemShow]=\"-1\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectHeader($event)\">\n @if (headerSelected(); as headerSelected) {\n <div class=\"flex items-center cursor-pointer py-[7px] libs-ui-font-h5r pl-[16px] pr-[40px] {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ labelHeaderSelectedComputed() }}\n </libs_ui-components-popover>\n <i class=\"libs-ui-icon-move-right rotate-90 absolute right-[12px] text-[#6a7383] text-[16px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </div>\n }\n @if (option.type === 'fontSize') {\n <div class=\" {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-inputs-valid\n #inputSizeRef\n [dataType]=\"'int'\"\n [(item)]=\"fontSize\"\n [fieldNameBind]=\"'value'\"\n [valueUpDownNumber]=\"1\"\n [maxValueNumber]=\"72\"\n [minValueNumber]=\"8\"\n [readonly]=\"readonly() || loadingUploadImage()\"\n [classContainerInput]=\"'w-[72px] h-[32px]'\"\n (outChangeValueByButtonUpDown)=\"handlerValueChangeFontSize()\"\n (outFocusAndBlur)=\"handlerValueChangeFontSize($event)\" />\n </div>\n }\n @if (option.type === 'color') {\n <div class=\"ql-color ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_text_color', zIndex: zIndex() }\">\n <libs_ui-components-buttons-select_color\n [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [customOptions]=\"{\n showAlpha: true,\n }\"\n [applyNow]=\"false\"\n (outColorChangeMultipleType)=\"handlerSetFormat('color', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-text libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"\n [class.libs-ui-icon-editor-color-text-active]=\"!!colorSelected()\"\n [style.--color-selected]=\"colorSelected()\"></div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'background') {\n <div class=\"ql-background ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_background_color', zIndex: zIndex() }\">\n <libs_ui-components-buttons-select_color\n [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [applyNow]=\"false\"\n [customOptions]=\"{\n showAlpha: true,\n }\"\n (outColorChangeMultipleType)=\"handlerSetFormat('background', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-background libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"\n [class.libs-ui-icon-editor-color-background-active]=\"!!backgroundSelected()\"\n [style.--background-selected]=\"backgroundSelected()\"></div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'bold') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_font_weight_bold', zIndex: zIndex() }\"\n class=\"ql-bold !flex\"></button>\n </div>\n }\n @if (option.type === 'italic') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_font_style_italic', zIndex: zIndex() }\"\n class=\"ql-italic !flex\"></button>\n </div>\n }\n @if (option.type === 'underline') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_text_decoration_underline', zIndex: zIndex() }\"\n class=\"ql-underline !flex\"></button>\n </div>\n }\n @if (option.type === 'strikeThrough') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_text_line_through', zIndex: zIndex() }\"\n class=\"ql-strike !flex\"></button>\n </div>\n }\n @if (option.type === 'script.sub') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_script_sub', zIndex: zIndex() }\"\n class=\"ql-script flex\"\n value=\"sub\"></button>\n </div>\n }\n @if (option.type === 'script.super') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_script_super', zIndex: zIndex() }\"\n class=\"ql-script flex\"\n value=\"super\"></button>\n </div>\n }\n @if (option.type === 'adjust') {\n <div class=\"relative !flex items-center ql-align ql-picker ql-icon-picker !w-max {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_adjust', zIndex: zIndex() }\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [ignoreStopPropagationEvent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigAlign()\"\n [listHiddenInputSearch]=\"true\"\n [popoverCustomConfig]=\"{ ignoreArrow: true, classInclude: '!w-[32px] overflow-hidden !py-[4px]', position: { mode: 'start', distance: 0 }, paddingLeftItem: false }\"\n [listHasButtonUnSelectOption]=\"false\"\n [zIndex]=\"zIndex() + 1\"\n [listKeySelected]=\"adjustSelected()\"\n (outSelectKey)=\"handleSelectAlign($event)\">\n @if (alignSelected(); as alignSelected) {\n <div class=\"flex items-center cursor-pointer\">\n <i\n [class]=\"iconAlignSelectedComputed()\"\n [class.text-[var(--libs-ui-color-light-1)]]=\"adjustSelected() !== undefined\"></i>\n <i class=\"libs-ui-icon-move-right rotate-90 text-[#6a7383] text-[16px] ml-[4px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'indentIncrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_indent_increase', zIndex: zIndex() }\"\n class=\"ql-indent\"\n value=\"+1\"></button>\n </div>\n }\n @if (option.type === 'indentDecrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_indent_decrease', zIndex: zIndex() }\"\n class=\"ql-indent\"\n value=\"-1\"></button>\n </div>\n }\n @if (option.type === 'listBulleted') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_bulleted', zIndex: zIndex() }\"\n class=\"ql-list ql-bullet\"\n value=\"bullet\"></button>\n </div>\n }\n @if (option.type === 'listNumbered') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_numbered', zIndex: zIndex() }\"\n class=\"ql-list ql-ordered\"\n value=\"ordered\"></button>\n </div>\n }\n @if (option.type === 'listChecked') {\n <div\n [class]=\"option.classInclude || 'mx-[8px]'\"\n [class.ql-active]=\"listCheckboxSelected()\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_numbered', zIndex: zIndex() }\"\n class=\"ql-list ql-check\"\n value=\"check\"></button>\n </div>\n }\n @if (option.type === 'personalize' && templateToolBarPersonalize(); as templateToolBarPersonalize) {\n <div class=\"flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <ng-container *ngTemplateOutlet=\"templateToolBarPersonalize\"></ng-container>\n </div>\n }\n @if (option.type === 'blockquote') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_quote', zIndex: zIndex() }\"\n class=\"ql-blockquote\"></button>\n </div>\n }\n @if (option.type === 'link') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_insert_link', zIndex: zIndex() }\"\n class=\"ql-link\"></button>\n </div>\n }\n @if (option.type === 'unLink') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_unlink', zIndex: zIndex() }\"\n class=\"ql-unLink\"\n (click)=\"handlerUnlink($event)\"></button>\n </div>\n }\n @if (option.type === 'image') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_image', zIndex: zIndex() }\"\n class=\"ql-image\"></button>\n </div>\n }\n @if (option.type === 'video') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_video', zIndex: zIndex() }\"\n class=\"ql-video\"></button>\n </div>\n }\n @if (option.type === 'emoji') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <libs_ui-components-emoji\n [zIndex]=\"zIndex()\"\n [isNgContent]=\"true\"\n (outEventEmoji)=\"handlerInsertEmoji($event)\">\n <button class=\"ql-emoji\"></button>\n </libs_ui-components-emoji>\n </div>\n }\n @if (option.type === 'table') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_table', zIndex: zIndex() }\"\n class=\"ql-table\"></button>\n </div>\n }\n @if (option.type === 'line') {\n <div class=\"w-[1px] h-[16px] libs-ui-border-right-general\"></div>\n }\n</ng-template>\n\n<libs_ui-components-popover\n #inputLinkRef\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{ template: viewLink, whiteTheme: true, ignoreArrow: true, zIndex: zIndex() }\"\n (outEvent)=\"handlerPopoverEvent($event)\" />\n\n<ng-template #viewLink>\n <div class=\"flex justify-between items-center px-[16px] py-[8px] rounded-[8px]\">\n <div\n class=\"w-full min-w-0 libs-ui-font-h5r\"\n [type]=\"'text'\"\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: link().url, zIndex: zIndex() + 1 }\">\n {{ link().url }}\n </div>\n <div class=\"flex items-center ml-[16px]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-edit-line'\"\n [classInclude]=\"'!p-0'\"\n (outClick)=\"handlerEditLink($event)\" />\n <libs_ui-components-buttons-button\n [type]=\"'button-link-custom'\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#071631',\n text_hover: '#ee2d41',\n text_active: '#ee2d41',\n text_disable: '071631',\n },\n rootColor: '#071631',\n }\"\n [classInclude]=\"'!p-0 ml-[12px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-link-broken'\"\n (outClick)=\"handlerUnlink($event)\" />\n </div>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}