@libs-ui/components-inputs-quill 0.2.350-1 → 0.2.351-0

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-quill.mjs","sources":["../../../../../../libs-ui/components/inputs/quill/src/link/link.component.ts","../../../../../../libs-ui/components/inputs/quill/src/link/link.component.html","../../../../../../libs-ui/components/inputs/quill/src/upload-image/upload-image.component.ts","../../../../../../libs-ui/components/inputs/quill/src/upload-image/upload-image.component.html","../../../../../../libs-ui/components/inputs/quill/src/utils/quill.define.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/div.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/mention.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/image.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/indent-attributor.component.ts","../../../../../../libs-ui/components/inputs/quill/src/quill.component.ts","../../../../../../libs-ui/components/inputs/quill/src/quill.component.html","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/mention2x.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/image2x.component.ts","../../../../../../libs-ui/components/inputs/quill/src/utils/quill2x.define.ts","../../../../../../libs-ui/components/inputs/quill/src/quill2x.component.ts","../../../../../../libs-ui/components/inputs/quill/src/quill2x.component.html","../../../../../../libs-ui/components/inputs/quill/src/libs-ui-components-inputs-quill.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 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 { IQuillUploadImageConfig } from '../interfaces/quill.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 // private mediaFile =signal<IMediaFile | undefined>(undefined);\n // private mediaUploadFunctionControl =signal<IMediaUploadBaseFunctionControlEvent | undefined>(undefined);\n\n readonly uploadImageConfig = input.required<IQuillUploadImageConfig>();\n\n readonly outClose = output<string | void>();\n\n // protected handlerFunctionsControl(event: IMediaUploadBaseFunctionControlEvent) {\n // this.mediaUploadFunctionControl.set(event);\n // }\n\n // protected handlerChangeFile(event: IChangeFile) {\n // this.mediaFile.set(event.files[0]);\n // }\n\n private async handlerSaveImage() {\n // if (!await this.mediaUploadFunctionControl()?.checkIsValid()) {\n // return;\n // }\n // if (this.mediaFile?.origin_url) {\n // this.moClose.emit(this.mediaFile.origin_url);\n // return;\n // }\n // const body: IOptionsUploadMedia = {\n // do_not_delete: true,\n // file: this.mediaFile?.file,\n // option: 'thumb',\n // size: [{ 'width': '200', 'height': '200' }]\n // };\n // this.disable = true;\n // try {\n // const params = new HttpParamsRequest({ fromObject: { pem: BUILD_PEM_OBJECT({ isCheck: 0, action: DefineConstants.PERMISSION_ACTION_VIEW, pathCheck: '/other' }) } });\n // const res = await this.mediaService.uploadImage(params, body);\n // this.moClose.emit(res.data?.url);\n // } catch (error) {\n // console.log(error);\n // this.pushMessageService.showCompTypeText('i18n_notification_manipulation_not_success', undefined, undefined, { timeRemove: 2000, type: 'error' });\n // this.moClose.emit();\n // } finally {\n // this.disable = false;\n // }\n }\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 <!-- <libs-uicomponents-media-upload [zIndex]=\"zIndex+1\"\n [labelConfig]=\"labelConfig\"\n [multiple]=\"false\"\n [fileType]=\"'image'\"\n [doNotDelete]=\"true\"\n [maxImageSize]=\"maxImageSize || 1048576\"\n [limitFile]=\"10\"\n [validRequired]=\"{isRequired: true}\"\n (moChangeFile)=\"handlerChangeFile($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\">\n </libs-uicomponents-media-upload> -->\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, decodeEscapeHtml } from '@libs-ui/utils';\nimport Quill from 'quill';\nimport Delta from 'quill-delta';\nimport { lastValueFrom } from 'rxjs/internal/lastValueFrom';\nimport { timer } from 'rxjs/internal/observable/timer';\nimport { IQuillLink, IQuillToolbarConfig, IQuillUploadImageConfig, TYPE_MODE_BAR_CONFIG_OPTION } from '../interfaces/quill.interface';\nlet quill: Quill | null = null;\nlet timeout: number | undefined = undefined;\nlet timeout2: number | undefined = undefined;\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: TYPE_MODE_BAR_CONFIG_OPTION, hasIconImage: boolean, hasIconPersonalize: boolean): Array<IQuillToolbarConfig> => {\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<IQuillToolbarConfig>\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 = (): IQuillUploadImageConfig => {\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 = (): IQuillLink => {\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 getHTMLFromDeltaOfQuill = (\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 (!quill) {\n quill = new Quill(document.createElement('div'));\n }\n const { replaceNewLineTo = '<br>', replaceTagBRTo, replaceTags, replaceBrToDiv } = options || {};\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}>`) as string;\n op.insert = op.insert.replace(new RegExp(`</${tag.tag}>`, 'g'), `</${tag.replaceTo}>`) as string;\n }\n }\n }\n }\n });\n quill.setContents(delta);\n let htmlText = options?.getRootHtml ? quill.root.innerHTML : quill.root.firstElementChild?.innerHTML;\n if (replaceBrToDiv) {\n htmlText = convertHtmlToDivBlocks(htmlText || '');\n }\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n quill = null;\n }, 10000);\n return decodeEscapeHtml(htmlText || '');\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 getDeltaOfQuillFromHTML = async (html: string): Promise<Delta> => {\n if (!quill) {\n quill = new Quill(document.createElement('div'));\n }\n quill.root.innerHTML = html;\n\n await lastValueFrom(timer(1000));\n clearTimeout(timeout2);\n timeout2 = setTimeout(() => {\n quill = null;\n }, 10000);\n return quill.getContents();\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 // Sử dụng Quill để clean HTML content\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 getDeltaOfQuillFromHTML(htmlContent);\n contentToInsert = getHTMLFromDeltaOfQuill(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","import Quill from 'quill';\n\nconst Block = Quill.import('blots/block');\n\nexport class QuillDivBlot extends Block {\n static tagName = 'div';\n}\n","import Quill from 'quill';\n\nconst Embed = Quill.import('blots/embed');\n\nexport class QuillMentionBlot extends Embed {\n static blotName = 'mention';\n static tagName = 'span';\n static 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 Quill from 'quill';\n\nconst ImageFormat = Quill.import('formats/image');\n\nexport class CustomImageBlot 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","import Quill from 'quill';\n\nconst parchment = Quill.import('parchment');\nconst pixelLevels = [1, 2, 3, 4, 5, 6, 7, 8];\nconst tabMultiplier = 3;\n\nclass IndentAttributor extends (parchment.Attributor.Style as {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (formatName: string, styleProperty: string, attributorOptions: unknown): any;\n}) {\n constructor(formatName: string, styleProperty: string, attributorOptions: unknown) {\n super(formatName, styleProperty, attributorOptions);\n }\n\n public add(node: HTMLElement, value: string): boolean {\n return super.add(node, `${+value * tabMultiplier}em`);\n }\n\n public value(node: HTMLElement): number | undefined {\n return parseFloat(super.value(node)) / tabMultiplier || undefined; // Don't return NaN\n }\n}\n\nexport const CustomIndentStyleBlot = new IndentAttributor('indent', 'margin-left', {\n scope: parchment.Scope.BLOCK,\n whitelist: pixelLevels.map((value) => `${value * tabMultiplier}em`),\n});\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n WritableSignal,\n} from '@angular/core';\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 { 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 { IPopoverFunctionControlEvent, 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 { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';\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, isNil, patternUrl, set, xssFilter } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport Quill, { RangeStatic, Sources, StringMap } from 'quill';\nimport { fromEvent, lastValueFrom, Subject, takeUntil, timer } from 'rxjs';\nimport { IQuillBlotRegister, IQuillFunctionControlEvent, IQuillLink, IQuillSelectionChange, IQuillTextChange, IQuillToolbarConfig, IQuillUploadImageConfig, TYPE_MODE_BAR_CONFIG_OPTION } from './interfaces/quill.interface';\nimport { LibsUiComponentsInputsQuillLinkComponent } from './link/link.component';\nimport { LibsUiComponentsInputsQuillUploadImageComponent } from './upload-image/upload-image.component';\nimport { iconList, linkDefault, listConfigAlign, listConfigFont, listConfigHeader, listFont, toolBarOptions, uploadImageConfigDefault, fontSizeWhiteList } from './utils/quill.define';\nimport { CustomImageBlot, QuillDivBlot, QuillMentionBlot, CustomIndentStyleBlot } from './blots-custom';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './quill.component.html',\n styleUrl: './quill.component.scss',\n imports: [\n TranslateModule,\n NgTemplateOutlet,\n LibsUiComponentsInputsMentionDirective,\n LibsUiComponentsScrollOverlayDirective,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsDropdownComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsSelectColorComponent,\n LibsUiComponentsInputsValidComponent,\n LibsUiComponentsEmojiComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsSpinnerComponent,\n LibsUiComponentsSkeletonComponent,\n ],\n})\nexport class LibsUiComponentsInputsQuillComponent implements OnInit, AfterViewInit, OnDestroy {\n protected qlEditorElement = signal<HTMLElement | undefined>(undefined);\n private timeoutScrollToSelectionWithElementScrollHeightAuto = signal<number | undefined>(undefined);\n protected loadingUploadImage = signal<boolean>(false);\n protected readonly timeDelayInit = signal<number>(20);\n protected messageError = signal<string>('');\n protected display = signal<boolean>(false);\n protected listConfigAlign = signal<IListConfigItem>(listConfigAlign());\n protected alignSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected iconAlignSelectedComputed = computed(() => get<unknown>(this.alignSelected(), 'item.icon'));\n protected listConfigFont = signal<IListConfigItem>(listConfigFont());\n protected fontSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected labelFontSelectedComputed = computed(() => get<unknown>(this.fontSelected(), 'item.label') || 'Sans Serif');\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 protected size = signal<{ value: number }>({ value: 14 });\n protected showMoreAction = signal<boolean>(false);\n protected link = signal<IQuillLink>(linkDefault());\n protected toolbarOptionsConfig: WritableSignal<Array<IQuillToolbarConfig>> = signal([]);\n\n protected displayShowMoreToolbar = computed(() => this.toolbarOptionsConfig().some((item) => item.display === false));\n protected displaySkeleton = computed(() => this.toolbarOptionsConfig().every((item) => item.display === undefined));\n\n private timeCalculationToolBar = signal<number | undefined>(undefined);\n private timerCalculatorToolbar = signal<number | undefined>(undefined);\n private totalRecallCalculatorToolbar = signal<number>(0);\n private popoverFunctionControl = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private quill = signal<Quill | undefined>(undefined);\n private handlers = signal<Record<string, (...params: Array<unknown>) => void>>({ undo: this.handleUndo.bind(this), redo: this.handleRedo.bind(this) });\n private showMention = signal<boolean>(false);\n private addEditLinkComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillLinkComponent> | undefined>(undefined);\n private uploadImageComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillUploadImageComponent> | undefined>(undefined);\n private onDestroy = new Subject<void>();\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private translate = inject(TranslateService);\n\n readonly isShowToolBar = input<boolean, boolean | undefined>(true, { transform: (val) => val ?? true });\n readonly isToolbarPositionFixed = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly classIncludeToolbar = input<string>('');\n readonly stylesIncludeToolbar = input<TYPE_OBJECT>();\n readonly toolbarConfig = input<{\n type: TYPE_MODE_BAR_CONFIG_OPTION;\n config?: Array<IQuillToolbarConfig>;\n }>();\n readonly placeholder = input<string, string | undefined>('i18n_import_content', { transform: (value) => value || 'i18n_import_content' });\n readonly label = input<ILabel | undefined>();\n readonly item = model<TYPE_OBJECT>();\n /**đặt cờ này bằng false để tối ưu hiệu năng, và chỉ lấy dữ liệu ra khi có yêu cầu lấy dữ liệu để gửi lên server , gọi refreshItemValue để cập nhật giá tri thủ công*/\n readonly autoUpdateValueWhenTextChange = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n readonly fieldNameBind = input<string>('value');\n readonly readonly = input<boolean>();\n readonly showErrorLabel = input<boolean>(true);\n readonly showErrorBorder = input<boolean>(false);\n readonly onlyShowErrorBorderInContent = input<boolean>(false);\n readonly classIncludeTemplate = input<string>();\n readonly classInclude = input<string>();\n readonly handlersExpand = input<Array<{ title: string; action: () => void }>>();\n readonly validRequired = input<IValidRequired>();\n readonly validMinLength = input<IValidLength>();\n readonly validMaxLength = input<IValidLength>();\n readonly zIndex = input<number, number | undefined>(1250, { transform: (value) => value || 1250 });\n readonly dataConfigMention = input<IMentionConfig>();\n readonly blotsRegister = input<Array<IQuillBlotRegister>>();\n readonly autoFocus = input<boolean>();\n readonly focusBottom = input<boolean>();\n readonly blockUndoRedoKeyboard = input<boolean>();\n readonly templateToolBarPersonalize = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly template = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly uploadImageConfig = input<IQuillUploadImageConfig, IQuillUploadImageConfig | undefined>(uploadImageConfigDefault(), { transform: (value) => value || uploadImageConfigDefault() });\n readonly heightAuto = input<boolean>();\n readonly elementScrollHeightAuto = input<HTMLElement>();\n readonly ignoreShowPopupEditLink = input<boolean>();\n readonly ignoreCommunicateMicroEventPopup = input<boolean>();\n readonly outShowPopupEditLink = output<{\n dataLink: IQuillLink;\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 outFunctionsControl = output<IQuillFunctionControlEvent>();\n readonly outSelectionChange = output<IQuillSelectionChange>();\n readonly outTextChange = output<IQuillTextChange>();\n readonly outContextMenu = output<MouseEvent>();\n\n readonly wrapperEditorEl = viewChild.required<ElementRef>('wrapperEditor');\n readonly editorEl = viewChild.required<ElementRef>('editor');\n readonly quillOptionEl = viewChild.required<ElementRef>('quillOption');\n readonly quillEditorEl = viewChild.required<ElementRef>('quillEditor');\n readonly toolbarItemsEl = viewChild.required<ElementRef>('toolbarItems');\n\n private notificationService = inject(LibsUiNotificationService);\n private cdr = inject(ChangeDetectorRef);\n\n constructor() {\n effect(() => {\n setTimeout(() => {\n const classes = `${this.classInclude() || ''} h-full w-full`\n .split(' ')\n .map((item) => item.trim())\n .filter((item) => item);\n this.getQlEditorElement()?.classList.add(...classes);\n }, this.timeDelayInit() + 10);\n });\n\n effect(() => {\n const type = this.toolbarConfig()?.type || 'default';\n const hasIconImage = this.uploadImageConfig().showIcon ?? false;\n const hasIconPersonalize = !!this.templateToolBarPersonalize();\n untracked(() => {\n this.toolbarOptionsConfig.set(this.toolbarConfig()?.config || toolBarOptions(type, hasIconImage, hasIconPersonalize));\n this.cdr.detectChanges();\n this.calculatorToolbar();\n });\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n public get FunctionsControl(): IQuillFunctionControlEvent {\n return {\n checkIsValid: this.validate.bind(this),\n refreshItemValue: this.updateValueByRootQuillHtml.bind(this),\n setContent: this.setContent.bind(this),\n insertText: this.insertText.bind(this),\n insertLink: this.insertLink.bind(this),\n insertImage: this.insertImage.bind(this),\n setFontSize: this.setFontSize.bind(this),\n setColor: async (color: string) => this.setStyle('color', color),\n setBackground: async (color: string) => this.setStyle('background', color),\n quill: () => this.quill() as Quill,\n scrollToSelectionWithElementScrollHeightAuto: this.scrollToSelectionWithElementScrollHeightAuto.bind(this),\n insertEmbed: async (range: { index: number; indexSelect: number; length?: number }, type: string, data: unknown, sources?: Sources) => {\n this.quill()?.insertEmbed(range.index, type, data, sources || Quill.sources.USER);\n this.quill()?.setSelection(range.indexSelect, range.length || 0, Quill.sources.USER);\n this.scrollToSelectionWithElementScrollHeightAuto(range.indexSelect);\n return;\n },\n reCalculatorToolbar: async () => this.calculatorToolbar(true),\n };\n }\n\n async ngAfterViewInit() {\n this.setHandlerFunction();\n await lastValueFrom(timer(this.timeDelayInit()));\n this.initQuill();\n\n this.setContent(get(this.item() as unknown, this.fieldNameBind(), ''));\n this.handlerTextChange();\n this.handlerSelectionChange();\n this.handlerPaste();\n // gọi hàm này để quill đánh dấu là đã focus trong khi quill chưa khởi tạo xong để không bị scroll xuống dưới.sau khi quill khởi tạo xong và check nếu đang focus đang được bật thì nó không gọi lại hàm focus nữa\n this.quill()?.focus();\n if (this.autoFocus()) {\n this.display.set(true);\n this.quill()?.blur();\n }\n fromEvent(window, 'resize')\n .pipe(takeUntil(this.onDestroy))\n .subscribe(() => this.calculatorToolbar(true));\n await lastValueFrom(timer(400));\n this.display.set(true);\n const cursorSpan = this.quill()?.root.querySelector('.ql-cursor');\n if (cursorSpan) {\n cursorSpan.remove();\n }\n }\n\n private initQuill() {\n const size = Quill.import('attributors/style/size');\n const alignStyle = Quill.import('attributors/style/align');\n const icons = Quill.import('ui/icons');\n const italic = Quill.import('formats/italic');\n const bold = Quill.import('formats/bold');\n size.whitelist = fontSizeWhiteList();\n\n italic.tagName = 'i';\n bold.tagName = 'b';\n Quill.register(bold, true);\n Quill.register(italic, true);\n Quill.register(size, true);\n Quill.register(CustomImageBlot, true);\n Quill.register(QuillDivBlot, true);\n Quill.register(alignStyle, true);\n Quill.register(QuillMentionBlot, true);\n this.blotsRegister()?.forEach((item) => {\n Quill.register(item.component, true);\n });\n Quill.register({ 'formats/indent': CustomIndentStyleBlot }, true);\n fromEvent<MouseEvent>(this.quillEditorEl()?.nativeElement, 'contextmenu')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e) => this.outContextMenu.emit(e));\n iconList().forEach((element) => set(icons, element.key, `<span class=\"${element.icon} hover:text-[var(--libs-ui-color-light-1)] text-[16px] text-[#6a7383]\"></span>`));\n this.quill.set(\n new Quill(this.quillEditorEl()?.nativeElement, {\n modules: {\n toolbar: {\n container: this.quillOptionEl()?.nativeElement,\n handlers: this.handlers(),\n },\n clipboard: {\n matchVisual: false,\n },\n history: {\n delay: 1000,\n maxStack: 100,\n userOnly: false,\n },\n keyboard: {\n bindings: {\n enter: {\n key: 13,\n handler: () => (this.showMention() ? false : true),\n },\n },\n },\n },\n readOnly: this.readonly(),\n placeholder: this.translate.instant(this.placeholder()),\n theme: 'snow',\n bounds: this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : this.quillEditorEl()?.nativeElement,\n scrollingContainer: this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : null,\n })\n );\n\n this.quill()?.keyboard.addBinding({ key: 'Backspace' }, this.noPreventEmbedDeletion.bind(this));\n this.quill()?.keyboard.addBinding({ key: 'Delete' }, this.noPreventEmbedDeletion.bind(this));\n this.setupUndoRedoBlocking();\n }\n\n private setupUndoRedoBlocking(): void {\n const editorRoot = this.quill()?.root;\n if (editorRoot && this.blockUndoRedoKeyboard()) {\n const keydownHandler = (e: KeyboardEvent) => {\n const isUndo = (e.key === 'z' || e.key === 'Z') && (e.ctrlKey || e.metaKey) && !e.shiftKey;\n const isRedo = ((e.key === 'z' || e.key === 'Z') && (e.ctrlKey || e.metaKey) && e.shiftKey) || ((e.key === 'y' || e.key === 'Y') && e.ctrlKey);\n\n if (isUndo || isRedo) {\n e.preventDefault();\n e.stopPropagation();\n console.log(`Blocking ${isUndo ? 'undo' : 'redo'} keyboard shortcut`);\n }\n };\n\n editorRoot.addEventListener('keydown', keydownHandler, true);\n\n this.onDestroy.subscribe(() => {\n editorRoot.removeEventListener('keydown', keydownHandler, true);\n });\n }\n }\n\n private noPreventEmbedDeletion(range: RangeStatic): 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 setHandlerFunction() {\n this.handlers.update((item) => ({\n ...item,\n image: this.handlerShowUploadImage.bind(this),\n emoji: () => {\n return;\n },\n }));\n let link = false;\n const handlersExpand = this.handlersExpand();\n if (handlersExpand && handlersExpand.length) {\n handlersExpand.forEach((element) => {\n if (element.title && element.action) {\n if (element.title === 'link') {\n link = true;\n }\n this.handlers.update((item) => ({ ...item, [element.title]: element.action }));\n }\n });\n }\n if (!link) {\n this.handlers.update((item) => ({ ...item, link: this.handleShowUploadLink.bind(this), unLink: this.handlerUnInsertLink.bind(this) }));\n }\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 handlerSelectionChange() {\n this.quill()?.on('selection-change', (range: RangeStatic, oldRange: RangeStatic, source: Sources) => {\n if (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 const format = this.quill()?.getFormat();\n if (format) {\n this.getFont(format);\n this.getFontSize(format);\n }\n this.outSelectionChange.emit({\n quill: this.quill() as Quill,\n range,\n oldRange,\n source,\n });\n if (range.length === 0 && format?.link && source === 'user') {\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 if (linkNode && linkNode.tagName === 'A') {\n const linkText = linkNode.innerText;\n const linksIndices: Array<number> = [];\n let indexReturn: number | undefined = -1;\n while (!isNil(indexReturn) && indexReturn < range.index) {\n const textContent = this.quill()?.getText();\n const linkIndex = textContent?.indexOf(linkText, linksIndices.length > 0 ? linksIndices[linksIndices.length - 1] + linkText.length : 0);\n if (!isNil(linkIndex)) {\n if (linkIndex !== -1) {\n linksIndices.push(linkIndex);\n indexReturn = linkIndex + linkText.length;\n }\n if (linkIndex === -1) {\n indexReturn = undefined;\n }\n }\n }\n if (linksIndices && linksIndices.length) {\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 this.popoverFunctionControl()?.showPopover(linkNode);\n }, 250);\n }\n }\n }\n });\n }\n\n private handlerPaste() {\n set<any>(this.quill, 'root.onpaste', async (event: ClipboardEvent) => {\n if (!event || !event.clipboardData) {\n return;\n }\n const files = event.clipboardData.files;\n if (!files.length) {\n if (event.clipboardData.getData('text')) {\n this.scrollToSelectionWithElementScrollHeightAuto();\n }\n return;\n }\n event.preventDefault();\n await this.uploadImagesAndInsert(files);\n });\n }\n\n private handlerTextChange() {\n this.quill()?.on('text-change', (event) => {\n this.outTextChange.emit({\n quill: this.quill() as Quill,\n delta: event,\n });\n setTimeout(() => {\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];\n const nextLeaf = this.quill()?.getLeaf(range.index + 1)[0];\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, Quill.sources.SILENT);\n }\n });\n if (!this.autoUpdateValueWhenTextChange()) {\n return;\n }\n this.updateValueByRootQuillHtml();\n });\n }\n\n private updateValueByRootQuillHtml() {\n if (!this.quill()?.root.getElementsByTagName('img').length && !this.quill()?.getText()) {\n set<any>(this.item(), this.fieldNameBind(), '');\n this.validate();\n this.outChange.emit(get<unknown>(this.item(), this.fieldNameBind()));\n return;\n }\n this.convertInnerHTMLAndSetValue();\n this.validate();\n this.outChange.emit(get<unknown>(this.item(), this.fieldNameBind()));\n }\n\n protected handlerPopoverFunctionControl(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControl.set(event);\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n if (event === 'remove') {\n this.link.set(linkDefault());\n }\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.popoverFunctionControl()?.removePopoverOverlay();\n }\n\n protected handlerEdit(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, Quill.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.popoverFunctionControl()?.removePopoverOverlay();\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 toolbarWidth = this.quillEditorEl().nativeElement.offsetWidth || 0;\n let totalWidth = 60;\n\n if (this.totalRecallCalculatorToolbar() < 10 && toolbarWidth <= totalWidth) {\n this.totalRecallCalculatorToolbar.update((val) => val + 1);\n this.timerCalculatorToolbar.set(\n setTimeout(() => {\n this.calculatorToolbar();\n }, 250)\n );\n return;\n }\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 return;\n }\n });\n return [...configs];\n });\n this.cdr.detectChanges();\n }\n\n protected setStyle(type: string, data: string | number) {\n this.quill()?.format(type, data);\n }\n\n private getFontSize(format: StringMap) {\n const fontSize = format?.size?.toString()?.replace('px', '');\n if (isNaN(parseFloat(fontSize))) {\n this.size.set({ value: 14 });\n return;\n }\n this.size.set({ value: parseFloat(fontSize) });\n }\n\n private getFont(format: StringMap) {\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 protected handleUndo() {\n this.quill()?.history?.undo();\n }\n\n protected handleRedo() {\n this.quill()?.history?.redo();\n }\n\n protected async setContent(content: string) {\n const contentXssFilter = await xssFilter(this.removeUnwantedPart(content || ''));\n await lastValueFrom(timer(1));\n (this.quill()?.root as HTMLElement).innerHTML = contentXssFilter;\n if (!this.autoFocus()) {\n return;\n }\n await lastValueFrom(timer(100));\n const target = this.quillEditorEl()?.nativeElement.querySelector('[contenteditable=\"true\"]');\n const contentScroll = this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : target;\n contentScroll.scrollTop = contentScroll.scrollHeight;\n if (this.focusBottom()) {\n this.quill()?.setSelection(contentXssFilter.length, 0, Quill.sources.SILENT);\n return;\n }\n this.quill()?.setSelection(0, 0, Quill.sources.SILENT);\n }\n\n protected handlerAddEmoji(emoji: unknown) {\n this.insertText(emoji as string, undefined, true);\n }\n\n protected 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 IQuillLink | 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, Quill.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.remove(this.addEditLinkComponentRef()));\n this.dynamicComponentService.addToBody(this.addEditLinkComponentRef());\n }\n\n protected handlerUnInsertLink() {\n const selection = this.quill()?.getSelection(true);\n if (!isNil(selection)) {\n this.quill()?.formatText(selection, 'link', false);\n }\n }\n\n protected async validate() {\n this.messageError.set('');\n const validRequired = this.validRequired();\n const item = this.item();\n const fieldNameBind = this.fieldNameBind();\n const value = get<any>(item, fieldNameBind);\n if (validRequired && validRequired.isRequired && (!fieldNameBind || !value || !value.trim())) {\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 protected 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 private async insertText(content: string, index?: number, focusLast?: boolean) {\n index = index ?? this.quill()?.getSelection(true).index;\n if (!isNil(index)) {\n this.quill()?.insertText(index, content, Quill.sources.USER);\n if (focusLast) {\n await lastValueFrom(timer(0));\n this.quill()?.setSelection(index + content.length, 0, Quill.sources.USER);\n }\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, Quill.sources.USER);\n }\n if (!isNil(indexInsert)) {\n this.quill()?.insertText(indexInsert, text, 'link', url);\n }\n }\n\n private convertInnerHTMLAndSetValue() {\n this.setStyleForContent();\n set<any>(this.item(), this.fieldNameBind(), this.removeUnwantedPart(this.quill()?.root.innerHTML || ''));\n }\n\n private setStyleForContent() {\n const styleArray = [\n { selector: '.ql-font-Arial', style: 'font-family: Arial' },\n { selector: '.ql-font-sans-serif', style: 'font-family: sans-serif' },\n { selector: '.ql-font-serif', style: 'font-family: serif' },\n { selector: '.ql-font-monospace', style: 'font-family: monospace' },\n { selector: '.ql-font-Helvetica', style: 'font-family: Helvetica' },\n { selector: '.libs-ui-quill-format-image', style: 'max-width: 100%; height: auto', overrideStyle: true },\n { selector: '.libs-ui-quill-mention', style: 'font-weight: 600;-moz-osx-font-smoothing: grayscale;-webkit-font-smoothing: antialiased; color: #7239EA', overrideStyle: true },\n { selector: 'blockquote', style: 'border-left: 4px solid #ccc; margin-bottom: 5px; margin-top: 5px; padding-left: 16px', overrideStyle: true },\n ];\n this.blotsRegister()?.forEach((item) => {\n styleArray.push({ selector: `.${item.className}`, style: item.style, overrideStyle: true });\n });\n styleArray.forEach((item) => {\n const elements = this.quill()?.root.querySelectorAll(item.selector);\n elements?.forEach((element) => {\n if (item.overrideStyle) {\n element.setAttribute('style', item.style);\n return;\n }\n // Fixbug issue: https://admin-cv.mobio.vn/issues/49092\n let styleExist = element.getAttribute('style');\n if (styleExist) {\n ['font-family: Arial', 'font-family: sans-serif', 'font-family: serif', 'font-family: monospace', 'font-family: Helvetica'].forEach((font) => {\n styleExist = (styleExist?.includes(`${font};`) ? styleExist?.replace(`${font};`, '') : styleExist?.replace(font, '')) as string;\n });\n }\n element.setAttribute('style', styleExist ? `${styleExist}${styleExist[styleExist.length - 1] === ';' ? '' : ';'}${item.style};` : item.style);\n });\n });\n }\n\n protected handleToggleMention(show: boolean) {\n this.showMention.set(show);\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.remove(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 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 this.scrollToSelectionWithElementScrollHeightAuto(indexInsert);\n } catch (error) {\n console.error(error);\n } finally {\n this.loadingUploadImage.set(false);\n }\n return;\n }\n\n private insertMention(event: IMentionInsert) {\n const range = this.quill()?.getSelection();\n if (!range) {\n return;\n }\n const cursorPos = range.index;\n const startPosInsert = cursorPos - event.lengthKey;\n this.quill()?.deleteText(startPosInsert, event.lengthKey, Quill.sources.USER);\n this.quill()?.insertEmbed(startPosInsert, 'mention', event.data, Quill.sources.USER);\n this.insertText(' ', startPosInsert + 1);\n this.quill()?.setSelection(startPosInsert + 2, 0, Quill.sources.USER);\n }\n\n protected handlerInsertMention(data: IMentionInsert) {\n this.insertMention(data);\n }\n\n protected async setFontSize(size: number) {\n this.quill()?.format('size', `${size}px`);\n }\n\n protected handlerValueChange(value: number | string) {\n this.size.update((item) => ({ ...item, value: value as number }));\n this.quill()?.format('size', `${this.size().value}px`);\n }\n\n protected handleSelectAlign(event: IEmitSelectKey | undefined) {\n this.alignSelected.set(event);\n this.setStyle('align', event?.key as string);\n }\n\n protected handleSelectFont(event: IEmitSelectKey | undefined) {\n this.fontSelected.set(event);\n this.setStyle('font', event?.key as string);\n }\n\n protected handlerChangeShowMoreAction(event: Event) {\n event.stopPropagation();\n this.showMoreAction.update((item) => !item);\n }\n\n private scrollToSelectionWithElementScrollHeightAuto(index?: number) {\n clearTimeout(this.timeoutScrollToSelectionWithElementScrollHeightAuto());\n if (!this.elementScrollHeightAuto()) {\n return;\n }\n this.timeoutScrollToSelectionWithElementScrollHeightAuto.set(\n setTimeout(() => {\n index = index ?? this.quill()?.getSelection(true).index;\n if (!isNil(index)) {\n const bounds = this.quill()?.getBounds(index, 1);\n this.elementScrollHeightAuto()?.scrollTo(0, (bounds?.top || 0) - 20);\n }\n }, 100)\n );\n }\n\n private getQlEditorElement() {\n if (this.qlEditorElement()) {\n return this.qlEditorElement();\n }\n for (const elementNode of this.quillEditorEl().nativeElement.getElementsByClassName('ql-editor')) {\n this.qlEditorElement.set(elementNode as HTMLElement);\n break;\n }\n return this.qlEditorElement();\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 protected handleSelectHeader(event: IEmitSelectKey | undefined) {\n this.headerSelected.set(event);\n this.setStyle('header', event?.key as string);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n this.dynamicComponentService.remove(this.addEditLinkComponentRef());\n this.dynamicComponentService.remove(this.uploadImageComponentRef());\n clearTimeout(this.timeCalculationToolBar());\n clearTimeout(this.timeoutScrollToSelectionWithElementScrollHeightAuto());\n }\n}\n","<div class=\"flex flex-col w-full h-full\">\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 #wrapperEditor\n [attr.heightAuto]=\"heightAuto()\"\n [attr.isToolbarPositionFixed]=\"isToolbarPositionFixed()\"\n class=\"libs-ui-quill-wrapper w-full h-full relative flex flex-col\"\n [class.libs-ui-border-error-general]=\"messageError() && showErrorBorder() && !onlyShowErrorBorderInContent()\"\n [class.rounded-[4px]]=\"messageError() && showErrorBorder() && !onlyShowErrorBorderInContent()\">\n <div\n #editor\n class=\"libs-ui-quill\"\n [attr.showError]=\"messageError() && showErrorBorder() && onlyShowErrorBorderInContent()\"\n [class.!hidden]=\"!display()\">\n <div\n #quillOption\n [class.!top-[-9999px]]=\"!isShowToolBar()\"\n [class.!left-[-9999px]]=\"!isShowToolBar()\"\n [style]=\"stylesIncludeToolbar()\"\n [class.pointer-events-none]=\"readonly() || loadingUploadImage()\"\n class=\"{{ isToolbarPositionFixed() ? 'fixed !z-10 w-[510px] shadow-[0px_4px_16px_0px_rgba(0,20,51,0.10)] rounded-[4px] bg-[#ffffff] libs-ui-quill-toolbar-animation' : '' }} {{ classIncludeToolbar() }} h-[44px] shrink-0\"\n [class.bg-[#f8f9fa]]=\"!readonly() && !loadingUploadImage()\"\n [class.libs-ui-readonly-background]=\"readonly() || loadingUploadImage()\">\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\n </div>\n <div\n #quillEditor\n LibsUiComponentsInputsMentionDirective\n [timeDelayInit]=\"timeDelayInit() + 50\"\n [mentionConfig]=\"dataConfigMention()\"\n [class.libs-ui-readonly-background]=\"readonly() || loadingUploadImage()\"\n [class.pointer-events-none]=\"loadingUploadImage()\"\n (outToggle)=\"handleToggleMention($event)\"\n (outInsertMention)=\"handlerInsertMention($event)\"></div>\n <ng-container\n #qlEditorScroll\n LibsUiComponentsScrollOverlayDirective\n [ignoreInit]=\"!qlEditorElement()\"\n [elementScroll]=\"qlEditorElement()\" />\n </div>\n @if (template(); as template) {\n <div [class]=\"classIncludeTemplate()\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </div>\n }\n @if (loadingUploadImage()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n @if (messageError() && showErrorLabel()) {\n <div class=\"flex items-center leading-normal mt-[8px]\">\n <span class=\"text-[#ff5454] libs-ui-font-h7r\">{{ messageError() | translate }}</span>\n </div>\n }\n</div>\n\n<ng-template #toolbar>\n <div\n class=\"toolbar h-full w-full shrink-0\"\n #toolbarItems>\n @if (displaySkeleton()) {\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]\">\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=\"itemTemplate; context: { option, $index, $last }\"></ng-container>\n </div>\n }\n <div class=\"relative\">\n @if (displayShowMoreToolbar()) {\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=\"itemTemplate; context: { option, $index, $last }\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template\n #itemTemplate\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 [listMaxItemShow]=\"8\"\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 [listConfig]=\"listConfigHeader()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [listMaxItemShow]=\"8\"\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=\"ql-picker {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-inputs-valid\n [dataType]=\"'int'\"\n [(item)]=\"size\"\n [fieldNameBind]=\"'value'\"\n [valueUpDownNumber]=\"1\"\n [maxValueNumber]=\"72\"\n [minValueNumber]=\"8\"\n [readonly]=\"readonly() || loadingUploadImage()\"\n [classContainerInput]=\"'w-[72px] h-[32px]'\"\n (outValueChange)=\"handlerValueChange($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 (outColorChange)=\"setStyle('color', $event)\">\n <div class=\"libs-ui-icon-editor-color-text libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"></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 (outColorChange)=\"setStyle('background', $event)\">\n <div class=\"libs-ui-icon-editor-color-background libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"></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\"></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\"></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\"></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\"></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 [listMaxItemShow]=\"8\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectAlign($event)\">\n @if (alignSelected(); as alignSelected) {\n <div class=\"flex items-center cursor-pointer\">\n <i [class]=\"iconAlignSelectedComputed()\"></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 === '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\"></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 === 'emoji') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <libs_ui-components-emoji\n [zIndex]=\"zIndex()\"\n [isNgContent]=\"true\"\n (outEventEmoji)=\"handlerAddEmoji($event)\">\n <button class=\"ql-emoji\"></button>\n </libs_ui-components-emoji>\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 [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{ template: viewLink, whiteTheme: true, ignoreArrow: true, zIndex: zIndex() }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControl($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)=\"handlerEdit($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","/* 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 blotName = 'mention';\n static tagName = 'span';\n static 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, 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/index2x';\nimport { convertHtmlToDivBlocks, fontSizeWhiteList, iconList } from './quill.define';\nlet quill2x: Quill2x | null = null;\nlet timeout: number | undefined = undefined;\nlet timeout1: number | undefined = undefined;\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 || !delta.ops || !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}>`) as string;\n op.insert = op.insert.replace(new RegExp(`</${tag.tag}>`, 'g'), `</${tag.replaceTo}>`) as string;\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","/* 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, patternUrl, patterProtocolUrl, 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, timer } from 'rxjs';\nimport { TYPE_MODE_BAR_CONFIG_OPTION } from './interfaces/quill.interface';\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 { linkDefault, listConfigAlign, listConfigFont, listConfigHeader, listFont, toolBarOptions, uploadImageConfigDefault } from './utils/quill.define';\nimport { createContextMenuOptionTable, createTableSelector, enableTableSelection, getAllTablesWithSpan, isEmptyQuill2x, getHTMLFromDeltaOfQuill2x, registerQuill2x } from './utils/quill2x.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 styleUrl: './quill2x.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 displayEditor = signal<boolean>(false);\n private isPaste = signal<boolean>(false);\n private quill: Quill2x | null = null;\n private addEditLinkComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillLinkComponent> | undefined>(undefined);\n private uploadImageComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillUploadImageComponent> | undefined>(undefined);\n private 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 timerSetFontSize = signal<number | undefined>(undefined);\n private timerCalculatorToolbar = signal<number | undefined>(undefined);\n private totalRecallCalculatorToolbar = signal<number>(0);\n private isCalculatorToolbarSuccess = signal<boolean>(false);\n private showMention = signal<boolean>(false);\n private handlerTextChangeBind = this.handlerTextChange.bind(this);\n private 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() as IQuill2xCustomConfig, '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() as IQuill2xCustomConfig, 'toolbar.classCustomContainerToolbar') || ''} ${get(this.quillCustomConfig() as IQuill2xCustomConfig, 'toolbar.positionFixed') ? ' fixed ' : ' '}`\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() as IQuill2xCustomConfig, 'editor.classCustomContainerEditor') || ''} ${get(this.quillCustomConfig() as IQuill2xCustomConfig, '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 readonly autoUpdateValueWhenTextChange = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\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\n async ngOnInit() {\n const type = get(this.quillCustomConfig() as IQuill2xCustomConfig, 'toolbar.type', 'default') as TYPE_MODE_BAR_CONFIG_OPTION;\n const hasIconImage = this.uploadImageConfig().showIcon ?? false;\n const hasIconPersonalize = !!this.templateToolBarPersonalize();\n this.toolbarOptionsConfig.set(get(this.quillCustomConfig() as IQuill2xCustomConfig, '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 [Node.TEXT_NODE, (node: { data: string }) => new Delta().insert(node.data)],\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() ? false : true),\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(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 as Quill2x, 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 as Quill2x,\n checkIsValid: this.validate.bind(this),\n refreshItemValue: this.updateValueByRootQuillHtml.bind(this),\n setContent: this.setContent.bind(this),\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 };\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 const button = this.htmlContainer().nativeElement.querySelector?.('button.ql-table') as HTMLElement | null;\n createTableSelector(this.quill as Quill2x, 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.remove(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.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 as Quill2x,\n range,\n oldRange,\n source,\n });\n\n if (range.length !== 0 || !format?.link || source !== 'user') {\n return;\n }\n\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: Array<number> = [];\n let indexReturn: number | undefined = -1;\n while (!isNil(indexReturn) && indexReturn < range.index) {\n const textContent = this.quill?.getText();\n const linkIndex = textContent?.indexOf(linkText, linksIndices.length > 0 ? linksIndices[linksIndices.length - 1] + linkText.length : 0);\n if (!isNil(linkIndex)) {\n if (linkIndex !== -1) {\n linksIndices.push(linkIndex);\n indexReturn = linkIndex + linkText.length;\n }\n if (linkIndex === -1) {\n indexReturn = undefined;\n }\n }\n }\n if (linksIndices && linksIndices.length) {\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 this.inputLinkRef().FunctionsControl?.showPopover(linkNode);\n });\n }\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 as 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 || !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 this.outTextChange.emit({\n quill: this.quill as Quill2x,\n delta: event,\n });\n\n setTimeout(() => {\n this.detectLink(source);\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 if (!this.autoUpdateValueWhenTextChange()) {\n return;\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 && 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 = format?.size?.toString()?.replace('px', '');\n if (isNaN(parseFloat(fontSize as string))) {\n this.fontSize.set({ value: this.fontSizeDefault() });\n // this.handlerValueChangeFontSize();\n return;\n }\n this.fontSize.set({ value: parseFloat(fontSize as string) });\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 toolbarWidth = this.toolbarContainer().nativeElement.offsetWidth || 0;\n let totalWidth = 84;\n if (!this.isCalculatorToolbarSuccess() && this.totalRecallCalculatorToolbar() < 10 && toolbarWidth < get(this.quillCustomConfig() as IQuill2xCustomConfig, '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 return;\n }\n });\n return [...configs];\n });\n this.cdr.detectChanges();\n }\n\n private setStyleForContent() {\n const styleArray = [\n { selector: '.ql-font-Arial', style: 'font-family: Arial' },\n { selector: '.ql-font-sans-serif', style: 'font-family: sans-serif' },\n { selector: '.ql-font-serif', style: 'font-family: serif' },\n { selector: '.ql-font-monospace', style: 'font-family: monospace' },\n { selector: '.ql-font-Helvetica', style: 'font-family: Helvetica' },\n { selector: '.libs-ui-quill-format-image', style: 'max-width: 100%; height: auto', overrideStyle: true },\n { selector: '.libs-ui-quill-mention', style: 'font-weight: 600;-moz-osx-font-smoothing: grayscale;-webkit-font-smoothing: antialiased; color: #7239EA', overrideStyle: true },\n { selector: 'blockquote', style: 'border-left: 4px solid #ccc; margin-bottom: 5px; margin-top: 5px; padding-left: 16px', overrideStyle: true },\n ];\n this.blotsRegister()?.forEach((item) => {\n styleArray.push({ selector: `.${item.className}`, style: item.style, overrideStyle: true });\n });\n styleArray.forEach((item) => {\n const elements = this.quill?.root.querySelectorAll(item.selector);\n elements?.forEach((element) => {\n if (item.overrideStyle) {\n element.setAttribute('style', item.style);\n return;\n }\n // Fixbug issue: https://admin-cv.mobio.vn/issues/49092\n let styleExist = element.getAttribute('style');\n if (styleExist) {\n ['font-family: Arial', 'font-family: sans-serif', 'font-family: serif', 'font-family: monospace', 'font-family: Helvetica'].forEach((font) => {\n styleExist = (styleExist?.includes(`${font};`) ? styleExist?.replace(`${font};`, '') : styleExist?.replace(font, '')) as string;\n });\n }\n element.setAttribute('style', styleExist ? `${styleExist}${styleExist[styleExist.length - 1] === ';' ? '' : ';'}${item.style};` : item.style);\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 return;\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 setTimeout(() => {\n if (event === 'remove') {\n this.link.set(linkDefault());\n }\n }, 100);\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.remove(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 (!this.quill?.root.getElementsByTagName('img').length && !this.quill?.getText()) {\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(), 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(patterProtocolUrl());\n if (indexof < 0) {\n return;\n }\n this.quill?.formatText(item.start + indexof, item.text.length, { link: item.text, color: false }, Quill2x.sources.SILENT);\n });\n }\n\n private getIndexUrlMatch(fullText: string): Array<{ start: number; end: number; text: string }> {\n const textMatch = fullText.match(new RegExp(patternUrl().toString().replace('/^', '').replace('$/', ''), 'ig'));\n const indexes: Array<{ start: number; end: number; text: string; preCharacter: string }> = [];\n let index = 0;\n\n textMatch?.forEach((text) => {\n const indexOfTextMatch = fullText.indexOf(text, index);\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 //endregion\n\n ngOnDestroy(): void {\n clearTimeout(this.timerSetFontSize());\n clearTimeout(this.timerCalculatorToolbar());\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 && 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\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\">\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":["timeout","Embed","ImageFormat","lastValueFrom","timer"],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-inputs-quill.mjs","sources":["../../../../../../libs-ui/components/inputs/quill/src/link/link.component.ts","../../../../../../libs-ui/components/inputs/quill/src/link/link.component.html","../../../../../../libs-ui/components/inputs/quill/src/upload-image/upload-image.component.ts","../../../../../../libs-ui/components/inputs/quill/src/upload-image/upload-image.component.html","../../../../../../libs-ui/components/inputs/quill/src/utils/quill.define.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/div.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/mention.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/image.component.ts","../../../../../../libs-ui/components/inputs/quill/src/blots-custom/indent-attributor.component.ts","../../../../../../libs-ui/components/inputs/quill/src/quill.component.ts","../../../../../../libs-ui/components/inputs/quill/src/quill.component.html","../../../../../../libs-ui/components/inputs/quill/src/libs-ui-components-inputs-quill.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 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 { IQuillUploadImageConfig } from '../interfaces/quill.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 // private mediaFile =signal<IMediaFile | undefined>(undefined);\n // private mediaUploadFunctionControl =signal<IMediaUploadBaseFunctionControlEvent | undefined>(undefined);\n\n readonly uploadImageConfig = input.required<IQuillUploadImageConfig>();\n\n readonly outClose = output<string | void>();\n\n // protected handlerFunctionsControl(event: IMediaUploadBaseFunctionControlEvent) {\n // this.mediaUploadFunctionControl.set(event);\n // }\n\n // protected handlerChangeFile(event: IChangeFile) {\n // this.mediaFile.set(event.files[0]);\n // }\n\n private async handlerSaveImage() {\n // if (!await this.mediaUploadFunctionControl()?.checkIsValid()) {\n // return;\n // }\n // if (this.mediaFile?.origin_url) {\n // this.moClose.emit(this.mediaFile.origin_url);\n // return;\n // }\n // const body: IOptionsUploadMedia = {\n // do_not_delete: true,\n // file: this.mediaFile?.file,\n // option: 'thumb',\n // size: [{ 'width': '200', 'height': '200' }]\n // };\n // this.disable = true;\n // try {\n // const params = new HttpParamsRequest({ fromObject: { pem: BUILD_PEM_OBJECT({ isCheck: 0, action: DefineConstants.PERMISSION_ACTION_VIEW, pathCheck: '/other' }) } });\n // const res = await this.mediaService.uploadImage(params, body);\n // this.moClose.emit(res.data?.url);\n // } catch (error) {\n // console.log(error);\n // this.pushMessageService.showCompTypeText('i18n_notification_manipulation_not_success', undefined, undefined, { timeRemove: 2000, type: 'error' });\n // this.moClose.emit();\n // } finally {\n // this.disable = false;\n // }\n }\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 <!-- <libs-uicomponents-media-upload [zIndex]=\"zIndex+1\"\n [labelConfig]=\"labelConfig\"\n [multiple]=\"false\"\n [fileType]=\"'image'\"\n [doNotDelete]=\"true\"\n [maxImageSize]=\"maxImageSize || 1048576\"\n [limitFile]=\"10\"\n [validRequired]=\"{isRequired: true}\"\n (moChangeFile)=\"handlerChangeFile($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\">\n </libs-uicomponents-media-upload> -->\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, decodeEscapeHtml } from '@libs-ui/utils';\nimport Quill from 'quill';\nimport Delta from 'quill-delta';\nimport { lastValueFrom } from 'rxjs/internal/lastValueFrom';\nimport { timer } from 'rxjs/internal/observable/timer';\nimport { IQuillLink, IQuillToolbarConfig, IQuillUploadImageConfig, TYPE_MODE_BAR_CONFIG_OPTION } from '../interfaces/quill.interface';\nlet quill: Quill | null = null;\nlet timeout: number | undefined = undefined;\nlet timeout2: number | undefined = undefined;\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: TYPE_MODE_BAR_CONFIG_OPTION, hasIconImage: boolean, hasIconPersonalize: boolean): Array<IQuillToolbarConfig> => {\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<IQuillToolbarConfig>\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 = (): IQuillUploadImageConfig => {\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 = (): IQuillLink => {\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 getHTMLFromDeltaOfQuill = (\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 (!quill) {\n quill = new Quill(document.createElement('div'));\n }\n const { replaceNewLineTo = '<br>', replaceTagBRTo, replaceTags, replaceBrToDiv } = options || {};\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}>`) as string;\n op.insert = op.insert.replace(new RegExp(`</${tag.tag}>`, 'g'), `</${tag.replaceTo}>`) as string;\n }\n }\n }\n }\n });\n quill.setContents(delta);\n let htmlText = options?.getRootHtml ? quill.root.innerHTML : quill.root.firstElementChild?.innerHTML;\n if (replaceBrToDiv) {\n htmlText = convertHtmlToDivBlocks(htmlText || '');\n }\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n quill = null;\n }, 10000);\n return decodeEscapeHtml(htmlText || '');\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 getDeltaOfQuillFromHTML = async (html: string): Promise<Delta> => {\n if (!quill) {\n quill = new Quill(document.createElement('div'));\n }\n quill.root.innerHTML = html;\n\n await lastValueFrom(timer(1000));\n clearTimeout(timeout2);\n timeout2 = setTimeout(() => {\n quill = null;\n }, 10000);\n return quill.getContents();\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 // Sử dụng Quill để clean HTML content\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 getDeltaOfQuillFromHTML(htmlContent);\n contentToInsert = getHTMLFromDeltaOfQuill(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","import Quill from 'quill';\n\nconst Block = Quill.import('blots/block');\n\nexport class QuillDivBlot extends Block {\n static tagName = 'div';\n}\n","import Quill from 'quill';\n\nconst Embed = Quill.import('blots/embed');\n\nexport class QuillMentionBlot extends Embed {\n static blotName = 'mention';\n static tagName = 'span';\n static 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 Quill from 'quill';\n\nconst ImageFormat = Quill.import('formats/image');\n\nexport class CustomImageBlot 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","import Quill from 'quill';\n\nconst parchment = Quill.import('parchment');\nconst pixelLevels = [1, 2, 3, 4, 5, 6, 7, 8];\nconst tabMultiplier = 3;\n\nclass IndentAttributor extends (parchment.Attributor.Style as {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (formatName: string, styleProperty: string, attributorOptions: unknown): any;\n}) {\n constructor(formatName: string, styleProperty: string, attributorOptions: unknown) {\n super(formatName, styleProperty, attributorOptions);\n }\n\n public add(node: HTMLElement, value: string): boolean {\n return super.add(node, `${+value * tabMultiplier}em`);\n }\n\n public value(node: HTMLElement): number | undefined {\n return parseFloat(super.value(node)) / tabMultiplier || undefined; // Don't return NaN\n }\n}\n\nexport const CustomIndentStyleBlot = new IndentAttributor('indent', 'margin-left', {\n scope: parchment.Scope.BLOCK,\n whitelist: pixelLevels.map((value) => `${value * tabMultiplier}em`),\n});\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n WritableSignal,\n} from '@angular/core';\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 { 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 { IPopoverFunctionControlEvent, 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 { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';\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, isNil, patternUrl, set, xssFilter } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport Quill, { RangeStatic, Sources, StringMap } from 'quill';\nimport { fromEvent, lastValueFrom, Subject, takeUntil, timer } from 'rxjs';\nimport { IQuillBlotRegister, IQuillFunctionControlEvent, IQuillLink, IQuillSelectionChange, IQuillTextChange, IQuillToolbarConfig, IQuillUploadImageConfig, TYPE_MODE_BAR_CONFIG_OPTION } from './interfaces/quill.interface';\nimport { LibsUiComponentsInputsQuillLinkComponent } from './link/link.component';\nimport { LibsUiComponentsInputsQuillUploadImageComponent } from './upload-image/upload-image.component';\nimport { iconList, linkDefault, listConfigAlign, listConfigFont, listConfigHeader, listFont, toolBarOptions, uploadImageConfigDefault, fontSizeWhiteList } from './utils/quill.define';\nimport { CustomImageBlot, QuillDivBlot, QuillMentionBlot, CustomIndentStyleBlot } from './blots-custom';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './quill.component.html',\n styleUrl: './quill.component.scss',\n imports: [\n TranslateModule,\n NgTemplateOutlet,\n LibsUiComponentsInputsMentionDirective,\n LibsUiComponentsScrollOverlayDirective,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsDropdownComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsSelectColorComponent,\n LibsUiComponentsInputsValidComponent,\n LibsUiComponentsEmojiComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsSpinnerComponent,\n LibsUiComponentsSkeletonComponent,\n ],\n})\nexport class LibsUiComponentsInputsQuillComponent implements OnInit, AfterViewInit, OnDestroy {\n protected qlEditorElement = signal<HTMLElement | undefined>(undefined);\n private timeoutScrollToSelectionWithElementScrollHeightAuto = signal<number | undefined>(undefined);\n protected loadingUploadImage = signal<boolean>(false);\n protected readonly timeDelayInit = signal<number>(20);\n protected messageError = signal<string>('');\n protected display = signal<boolean>(false);\n protected listConfigAlign = signal<IListConfigItem>(listConfigAlign());\n protected alignSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected iconAlignSelectedComputed = computed(() => get<unknown>(this.alignSelected(), 'item.icon'));\n protected listConfigFont = signal<IListConfigItem>(listConfigFont());\n protected fontSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected labelFontSelectedComputed = computed(() => get<unknown>(this.fontSelected(), 'item.label') || 'Sans Serif');\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 protected size = signal<{ value: number }>({ value: 14 });\n protected showMoreAction = signal<boolean>(false);\n protected link = signal<IQuillLink>(linkDefault());\n protected toolbarOptionsConfig: WritableSignal<Array<IQuillToolbarConfig>> = signal([]);\n\n protected displayShowMoreToolbar = computed(() => this.toolbarOptionsConfig().some((item) => item.display === false));\n protected displaySkeleton = computed(() => this.toolbarOptionsConfig().every((item) => item.display === undefined));\n\n private timeCalculationToolBar = signal<number | undefined>(undefined);\n private timerCalculatorToolbar = signal<number | undefined>(undefined);\n private totalRecallCalculatorToolbar = signal<number>(0);\n private popoverFunctionControl = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private quill = signal<Quill | undefined>(undefined);\n private handlers = signal<Record<string, (...params: Array<unknown>) => void>>({ undo: this.handleUndo.bind(this), redo: this.handleRedo.bind(this) });\n private showMention = signal<boolean>(false);\n private addEditLinkComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillLinkComponent> | undefined>(undefined);\n private uploadImageComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillUploadImageComponent> | undefined>(undefined);\n private onDestroy = new Subject<void>();\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private translate = inject(TranslateService);\n\n readonly isShowToolBar = input<boolean, boolean | undefined>(true, { transform: (val) => val ?? true });\n readonly isToolbarPositionFixed = input<boolean, boolean | undefined>(false, { transform: (val) => val ?? false });\n readonly classIncludeToolbar = input<string>('');\n readonly stylesIncludeToolbar = input<TYPE_OBJECT>();\n readonly toolbarConfig = input<{\n type: TYPE_MODE_BAR_CONFIG_OPTION;\n config?: Array<IQuillToolbarConfig>;\n }>();\n readonly placeholder = input<string, string | undefined>('i18n_import_content', { transform: (value) => value || 'i18n_import_content' });\n readonly label = input<ILabel | undefined>();\n readonly item = model<TYPE_OBJECT>();\n /**đặt cờ này bằng false để tối ưu hiệu năng, và chỉ lấy dữ liệu ra khi có yêu cầu lấy dữ liệu để gửi lên server , gọi refreshItemValue để cập nhật giá tri thủ công*/\n readonly autoUpdateValueWhenTextChange = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n readonly fieldNameBind = input<string>('value');\n readonly readonly = input<boolean>();\n readonly showErrorLabel = input<boolean>(true);\n readonly showErrorBorder = input<boolean>(false);\n readonly onlyShowErrorBorderInContent = input<boolean>(false);\n readonly classIncludeTemplate = input<string>();\n readonly classInclude = input<string>();\n readonly handlersExpand = input<Array<{ title: string; action: () => void }>>();\n readonly validRequired = input<IValidRequired>();\n readonly validMinLength = input<IValidLength>();\n readonly validMaxLength = input<IValidLength>();\n readonly zIndex = input<number, number | undefined>(1250, { transform: (value) => value || 1250 });\n readonly dataConfigMention = input<IMentionConfig>();\n readonly blotsRegister = input<Array<IQuillBlotRegister>>();\n readonly autoFocus = input<boolean>();\n readonly focusBottom = input<boolean>();\n readonly blockUndoRedoKeyboard = input<boolean>();\n readonly templateToolBarPersonalize = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly template = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly uploadImageConfig = input<IQuillUploadImageConfig, IQuillUploadImageConfig | undefined>(uploadImageConfigDefault(), { transform: (value) => value || uploadImageConfigDefault() });\n readonly heightAuto = input<boolean>();\n readonly elementScrollHeightAuto = input<HTMLElement>();\n readonly ignoreShowPopupEditLink = input<boolean>();\n readonly ignoreCommunicateMicroEventPopup = input<boolean>();\n readonly outShowPopupEditLink = output<{\n dataLink: IQuillLink;\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 outFunctionsControl = output<IQuillFunctionControlEvent>();\n readonly outSelectionChange = output<IQuillSelectionChange>();\n readonly outTextChange = output<IQuillTextChange>();\n readonly outContextMenu = output<MouseEvent>();\n\n readonly wrapperEditorEl = viewChild.required<ElementRef>('wrapperEditor');\n readonly editorEl = viewChild.required<ElementRef>('editor');\n readonly quillOptionEl = viewChild.required<ElementRef>('quillOption');\n readonly quillEditorEl = viewChild.required<ElementRef>('quillEditor');\n readonly toolbarItemsEl = viewChild.required<ElementRef>('toolbarItems');\n\n private notificationService = inject(LibsUiNotificationService);\n private cdr = inject(ChangeDetectorRef);\n\n constructor() {\n effect(() => {\n setTimeout(() => {\n const classes = `${this.classInclude() || ''} h-full w-full`\n .split(' ')\n .map((item) => item.trim())\n .filter((item) => item);\n this.getQlEditorElement()?.classList.add(...classes);\n }, this.timeDelayInit() + 10);\n });\n\n effect(() => {\n const type = this.toolbarConfig()?.type || 'default';\n const hasIconImage = this.uploadImageConfig().showIcon ?? false;\n const hasIconPersonalize = !!this.templateToolBarPersonalize();\n untracked(() => {\n this.toolbarOptionsConfig.set(this.toolbarConfig()?.config || toolBarOptions(type, hasIconImage, hasIconPersonalize));\n this.cdr.detectChanges();\n this.calculatorToolbar();\n });\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n public get FunctionsControl(): IQuillFunctionControlEvent {\n return {\n checkIsValid: this.validate.bind(this),\n refreshItemValue: this.updateValueByRootQuillHtml.bind(this),\n setContent: this.setContent.bind(this),\n insertText: this.insertText.bind(this),\n insertLink: this.insertLink.bind(this),\n insertImage: this.insertImage.bind(this),\n setFontSize: this.setFontSize.bind(this),\n setColor: async (color: string) => this.setStyle('color', color),\n setBackground: async (color: string) => this.setStyle('background', color),\n quill: () => this.quill() as Quill,\n scrollToSelectionWithElementScrollHeightAuto: this.scrollToSelectionWithElementScrollHeightAuto.bind(this),\n insertEmbed: async (range: { index: number; indexSelect: number; length?: number }, type: string, data: unknown, sources?: Sources) => {\n this.quill()?.insertEmbed(range.index, type, data, sources || Quill.sources.USER);\n this.quill()?.setSelection(range.indexSelect, range.length || 0, Quill.sources.USER);\n this.scrollToSelectionWithElementScrollHeightAuto(range.indexSelect);\n return;\n },\n reCalculatorToolbar: async () => this.calculatorToolbar(true),\n };\n }\n\n async ngAfterViewInit() {\n this.setHandlerFunction();\n await lastValueFrom(timer(this.timeDelayInit()));\n this.initQuill();\n\n this.setContent(get(this.item() as unknown, this.fieldNameBind(), ''));\n this.handlerTextChange();\n this.handlerSelectionChange();\n this.handlerPaste();\n // gọi hàm này để quill đánh dấu là đã focus trong khi quill chưa khởi tạo xong để không bị scroll xuống dưới.sau khi quill khởi tạo xong và check nếu đang focus đang được bật thì nó không gọi lại hàm focus nữa\n this.quill()?.focus();\n if (this.autoFocus()) {\n this.display.set(true);\n this.quill()?.blur();\n }\n fromEvent(window, 'resize')\n .pipe(takeUntil(this.onDestroy))\n .subscribe(() => this.calculatorToolbar(true));\n await lastValueFrom(timer(400));\n this.display.set(true);\n const cursorSpan = this.quill()?.root.querySelector('.ql-cursor');\n if (cursorSpan) {\n cursorSpan.remove();\n }\n }\n\n private initQuill() {\n const size = Quill.import('attributors/style/size');\n const alignStyle = Quill.import('attributors/style/align');\n const icons = Quill.import('ui/icons');\n const italic = Quill.import('formats/italic');\n const bold = Quill.import('formats/bold');\n size.whitelist = fontSizeWhiteList();\n\n italic.tagName = 'i';\n bold.tagName = 'b';\n Quill.register(bold, true);\n Quill.register(italic, true);\n Quill.register(size, true);\n Quill.register(CustomImageBlot, true);\n Quill.register(QuillDivBlot, true);\n Quill.register(alignStyle, true);\n Quill.register(QuillMentionBlot, true);\n this.blotsRegister()?.forEach((item) => {\n Quill.register(item.component, true);\n });\n Quill.register({ 'formats/indent': CustomIndentStyleBlot }, true);\n fromEvent<MouseEvent>(this.quillEditorEl()?.nativeElement, 'contextmenu')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e) => this.outContextMenu.emit(e));\n iconList().forEach((element) => set(icons, element.key, `<span class=\"${element.icon} hover:text-[var(--libs-ui-color-light-1)] text-[16px] text-[#6a7383]\"></span>`));\n this.quill.set(\n new Quill(this.quillEditorEl()?.nativeElement, {\n modules: {\n toolbar: {\n container: this.quillOptionEl()?.nativeElement,\n handlers: this.handlers(),\n },\n clipboard: {\n matchVisual: false,\n },\n history: {\n delay: 1000,\n maxStack: 100,\n userOnly: false,\n },\n keyboard: {\n bindings: {\n enter: {\n key: 13,\n handler: () => (this.showMention() ? false : true),\n },\n },\n },\n },\n readOnly: this.readonly(),\n placeholder: this.translate.instant(this.placeholder()),\n theme: 'snow',\n bounds: this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : this.quillEditorEl()?.nativeElement,\n scrollingContainer: this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : null,\n })\n );\n\n this.quill()?.keyboard.addBinding({ key: 'Backspace' }, this.noPreventEmbedDeletion.bind(this));\n this.quill()?.keyboard.addBinding({ key: 'Delete' }, this.noPreventEmbedDeletion.bind(this));\n this.setupUndoRedoBlocking();\n }\n\n private setupUndoRedoBlocking(): void {\n const editorRoot = this.quill()?.root;\n if (editorRoot && this.blockUndoRedoKeyboard()) {\n const keydownHandler = (e: KeyboardEvent) => {\n const isUndo = (e.key === 'z' || e.key === 'Z') && (e.ctrlKey || e.metaKey) && !e.shiftKey;\n const isRedo = ((e.key === 'z' || e.key === 'Z') && (e.ctrlKey || e.metaKey) && e.shiftKey) || ((e.key === 'y' || e.key === 'Y') && e.ctrlKey);\n\n if (isUndo || isRedo) {\n e.preventDefault();\n e.stopPropagation();\n console.log(`Blocking ${isUndo ? 'undo' : 'redo'} keyboard shortcut`);\n }\n };\n\n editorRoot.addEventListener('keydown', keydownHandler, true);\n\n this.onDestroy.subscribe(() => {\n editorRoot.removeEventListener('keydown', keydownHandler, true);\n });\n }\n }\n\n private noPreventEmbedDeletion(range: RangeStatic): 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 setHandlerFunction() {\n this.handlers.update((item) => ({\n ...item,\n image: this.handlerShowUploadImage.bind(this),\n emoji: () => {\n return;\n },\n }));\n let link = false;\n const handlersExpand = this.handlersExpand();\n if (handlersExpand && handlersExpand.length) {\n handlersExpand.forEach((element) => {\n if (element.title && element.action) {\n if (element.title === 'link') {\n link = true;\n }\n this.handlers.update((item) => ({ ...item, [element.title]: element.action }));\n }\n });\n }\n if (!link) {\n this.handlers.update((item) => ({ ...item, link: this.handleShowUploadLink.bind(this), unLink: this.handlerUnInsertLink.bind(this) }));\n }\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 handlerSelectionChange() {\n this.quill()?.on('selection-change', (range: RangeStatic, oldRange: RangeStatic, source: Sources) => {\n if (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 const format = this.quill()?.getFormat();\n if (format) {\n this.getFont(format);\n this.getFontSize(format);\n }\n this.outSelectionChange.emit({\n quill: this.quill() as Quill,\n range,\n oldRange,\n source,\n });\n if (range.length === 0 && format?.link && source === 'user') {\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 if (linkNode && linkNode.tagName === 'A') {\n const linkText = linkNode.innerText;\n const linksIndices: Array<number> = [];\n let indexReturn: number | undefined = -1;\n while (!isNil(indexReturn) && indexReturn < range.index) {\n const textContent = this.quill()?.getText();\n const linkIndex = textContent?.indexOf(linkText, linksIndices.length > 0 ? linksIndices[linksIndices.length - 1] + linkText.length : 0);\n if (!isNil(linkIndex)) {\n if (linkIndex !== -1) {\n linksIndices.push(linkIndex);\n indexReturn = linkIndex + linkText.length;\n }\n if (linkIndex === -1) {\n indexReturn = undefined;\n }\n }\n }\n if (linksIndices && linksIndices.length) {\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 this.popoverFunctionControl()?.showPopover(linkNode);\n }, 250);\n }\n }\n }\n });\n }\n\n private handlerPaste() {\n set<any>(this.quill, 'root.onpaste', async (event: ClipboardEvent) => {\n if (!event || !event.clipboardData) {\n return;\n }\n const files = event.clipboardData.files;\n if (!files.length) {\n if (event.clipboardData.getData('text')) {\n this.scrollToSelectionWithElementScrollHeightAuto();\n }\n return;\n }\n event.preventDefault();\n await this.uploadImagesAndInsert(files);\n });\n }\n\n private handlerTextChange() {\n this.quill()?.on('text-change', (event) => {\n this.outTextChange.emit({\n quill: this.quill() as Quill,\n delta: event,\n });\n setTimeout(() => {\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];\n const nextLeaf = this.quill()?.getLeaf(range.index + 1)[0];\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, Quill.sources.SILENT);\n }\n });\n if (!this.autoUpdateValueWhenTextChange()) {\n return;\n }\n this.updateValueByRootQuillHtml();\n });\n }\n\n private updateValueByRootQuillHtml() {\n if (!this.quill()?.root.getElementsByTagName('img').length && !this.quill()?.getText()) {\n set<any>(this.item(), this.fieldNameBind(), '');\n this.validate();\n this.outChange.emit(get<unknown>(this.item(), this.fieldNameBind()));\n return;\n }\n this.convertInnerHTMLAndSetValue();\n this.validate();\n this.outChange.emit(get<unknown>(this.item(), this.fieldNameBind()));\n }\n\n protected handlerPopoverFunctionControl(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControl.set(event);\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n if (event === 'remove') {\n this.link.set(linkDefault());\n }\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.popoverFunctionControl()?.removePopoverOverlay();\n }\n\n protected handlerEdit(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, Quill.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.popoverFunctionControl()?.removePopoverOverlay();\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 toolbarWidth = this.quillEditorEl().nativeElement.offsetWidth || 0;\n let totalWidth = 60;\n\n if (this.totalRecallCalculatorToolbar() < 10 && toolbarWidth <= totalWidth) {\n this.totalRecallCalculatorToolbar.update((val) => val + 1);\n this.timerCalculatorToolbar.set(\n setTimeout(() => {\n this.calculatorToolbar();\n }, 250)\n );\n return;\n }\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 return;\n }\n });\n return [...configs];\n });\n this.cdr.detectChanges();\n }\n\n protected setStyle(type: string, data: string | number) {\n this.quill()?.format(type, data);\n }\n\n private getFontSize(format: StringMap) {\n const fontSize = format?.size?.toString()?.replace('px', '');\n if (isNaN(parseFloat(fontSize))) {\n this.size.set({ value: 14 });\n return;\n }\n this.size.set({ value: parseFloat(fontSize) });\n }\n\n private getFont(format: StringMap) {\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 protected handleUndo() {\n this.quill()?.history?.undo();\n }\n\n protected handleRedo() {\n this.quill()?.history?.redo();\n }\n\n protected async setContent(content: string) {\n const contentXssFilter = await xssFilter(this.removeUnwantedPart(content || ''));\n await lastValueFrom(timer(1));\n (this.quill()?.root as HTMLElement).innerHTML = contentXssFilter;\n if (!this.autoFocus()) {\n return;\n }\n await lastValueFrom(timer(100));\n const target = this.quillEditorEl()?.nativeElement.querySelector('[contenteditable=\"true\"]');\n const contentScroll = this.heightAuto() ? this.wrapperEditorEl()?.nativeElement : target;\n contentScroll.scrollTop = contentScroll.scrollHeight;\n if (this.focusBottom()) {\n this.quill()?.setSelection(contentXssFilter.length, 0, Quill.sources.SILENT);\n return;\n }\n this.quill()?.setSelection(0, 0, Quill.sources.SILENT);\n }\n\n protected handlerAddEmoji(emoji: unknown) {\n this.insertText(emoji as string, undefined, true);\n }\n\n protected 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 IQuillLink | 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, Quill.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.remove(this.addEditLinkComponentRef()));\n this.dynamicComponentService.addToBody(this.addEditLinkComponentRef());\n }\n\n protected handlerUnInsertLink() {\n const selection = this.quill()?.getSelection(true);\n if (!isNil(selection)) {\n this.quill()?.formatText(selection, 'link', false);\n }\n }\n\n protected async validate() {\n this.messageError.set('');\n const validRequired = this.validRequired();\n const item = this.item();\n const fieldNameBind = this.fieldNameBind();\n const value = get<any>(item, fieldNameBind);\n if (validRequired && validRequired.isRequired && (!fieldNameBind || !value || !value.trim())) {\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 protected 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 private async insertText(content: string, index?: number, focusLast?: boolean) {\n index = index ?? this.quill()?.getSelection(true).index;\n if (!isNil(index)) {\n this.quill()?.insertText(index, content, Quill.sources.USER);\n if (focusLast) {\n await lastValueFrom(timer(0));\n this.quill()?.setSelection(index + content.length, 0, Quill.sources.USER);\n }\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, Quill.sources.USER);\n }\n if (!isNil(indexInsert)) {\n this.quill()?.insertText(indexInsert, text, 'link', url);\n }\n }\n\n private convertInnerHTMLAndSetValue() {\n this.setStyleForContent();\n set<any>(this.item(), this.fieldNameBind(), this.removeUnwantedPart(this.quill()?.root.innerHTML || ''));\n }\n\n private setStyleForContent() {\n const styleArray = [\n { selector: '.ql-font-Arial', style: 'font-family: Arial' },\n { selector: '.ql-font-sans-serif', style: 'font-family: sans-serif' },\n { selector: '.ql-font-serif', style: 'font-family: serif' },\n { selector: '.ql-font-monospace', style: 'font-family: monospace' },\n { selector: '.ql-font-Helvetica', style: 'font-family: Helvetica' },\n { selector: '.libs-ui-quill-format-image', style: 'max-width: 100%; height: auto', overrideStyle: true },\n { selector: '.libs-ui-quill-mention', style: 'font-weight: 600;-moz-osx-font-smoothing: grayscale;-webkit-font-smoothing: antialiased; color: #7239EA', overrideStyle: true },\n { selector: 'blockquote', style: 'border-left: 4px solid #ccc; margin-bottom: 5px; margin-top: 5px; padding-left: 16px', overrideStyle: true },\n ];\n this.blotsRegister()?.forEach((item) => {\n styleArray.push({ selector: `.${item.className}`, style: item.style, overrideStyle: true });\n });\n styleArray.forEach((item) => {\n const elements = this.quill()?.root.querySelectorAll(item.selector);\n elements?.forEach((element) => {\n if (item.overrideStyle) {\n element.setAttribute('style', item.style);\n return;\n }\n // Fixbug issue: https://admin-cv.mobio.vn/issues/49092\n let styleExist = element.getAttribute('style');\n if (styleExist) {\n ['font-family: Arial', 'font-family: sans-serif', 'font-family: serif', 'font-family: monospace', 'font-family: Helvetica'].forEach((font) => {\n styleExist = (styleExist?.includes(`${font};`) ? styleExist?.replace(`${font};`, '') : styleExist?.replace(font, '')) as string;\n });\n }\n element.setAttribute('style', styleExist ? `${styleExist}${styleExist[styleExist.length - 1] === ';' ? '' : ';'}${item.style};` : item.style);\n });\n });\n }\n\n protected handleToggleMention(show: boolean) {\n this.showMention.set(show);\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.remove(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 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 this.scrollToSelectionWithElementScrollHeightAuto(indexInsert);\n } catch (error) {\n console.error(error);\n } finally {\n this.loadingUploadImage.set(false);\n }\n return;\n }\n\n private insertMention(event: IMentionInsert) {\n const range = this.quill()?.getSelection();\n if (!range) {\n return;\n }\n const cursorPos = range.index;\n const startPosInsert = cursorPos - event.lengthKey;\n this.quill()?.deleteText(startPosInsert, event.lengthKey, Quill.sources.USER);\n this.quill()?.insertEmbed(startPosInsert, 'mention', event.data, Quill.sources.USER);\n this.insertText(' ', startPosInsert + 1);\n this.quill()?.setSelection(startPosInsert + 2, 0, Quill.sources.USER);\n }\n\n protected handlerInsertMention(data: IMentionInsert) {\n this.insertMention(data);\n }\n\n protected async setFontSize(size: number) {\n this.quill()?.format('size', `${size}px`);\n }\n\n protected handlerValueChange(value: number | string) {\n this.size.update((item) => ({ ...item, value: value as number }));\n this.quill()?.format('size', `${this.size().value}px`);\n }\n\n protected handleSelectAlign(event: IEmitSelectKey | undefined) {\n this.alignSelected.set(event);\n this.setStyle('align', event?.key as string);\n }\n\n protected handleSelectFont(event: IEmitSelectKey | undefined) {\n this.fontSelected.set(event);\n this.setStyle('font', event?.key as string);\n }\n\n protected handlerChangeShowMoreAction(event: Event) {\n event.stopPropagation();\n this.showMoreAction.update((item) => !item);\n }\n\n private scrollToSelectionWithElementScrollHeightAuto(index?: number) {\n clearTimeout(this.timeoutScrollToSelectionWithElementScrollHeightAuto());\n if (!this.elementScrollHeightAuto()) {\n return;\n }\n this.timeoutScrollToSelectionWithElementScrollHeightAuto.set(\n setTimeout(() => {\n index = index ?? this.quill()?.getSelection(true).index;\n if (!isNil(index)) {\n const bounds = this.quill()?.getBounds(index, 1);\n this.elementScrollHeightAuto()?.scrollTo(0, (bounds?.top || 0) - 20);\n }\n }, 100)\n );\n }\n\n private getQlEditorElement() {\n if (this.qlEditorElement()) {\n return this.qlEditorElement();\n }\n for (const elementNode of this.quillEditorEl().nativeElement.getElementsByClassName('ql-editor')) {\n this.qlEditorElement.set(elementNode as HTMLElement);\n break;\n }\n return this.qlEditorElement();\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 protected handleSelectHeader(event: IEmitSelectKey | undefined) {\n this.headerSelected.set(event);\n this.setStyle('header', event?.key as string);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n this.dynamicComponentService.remove(this.addEditLinkComponentRef());\n this.dynamicComponentService.remove(this.uploadImageComponentRef());\n clearTimeout(this.timeCalculationToolBar());\n clearTimeout(this.timeoutScrollToSelectionWithElementScrollHeightAuto());\n }\n}\n","<div class=\"flex flex-col w-full h-full\">\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 #wrapperEditor\n [attr.heightAuto]=\"heightAuto()\"\n [attr.isToolbarPositionFixed]=\"isToolbarPositionFixed()\"\n class=\"libs-ui-quill-wrapper w-full h-full relative flex flex-col\"\n [class.libs-ui-border-error-general]=\"messageError() && showErrorBorder() && !onlyShowErrorBorderInContent()\"\n [class.rounded-[4px]]=\"messageError() && showErrorBorder() && !onlyShowErrorBorderInContent()\">\n <div\n #editor\n class=\"libs-ui-quill\"\n [attr.showError]=\"messageError() && showErrorBorder() && onlyShowErrorBorderInContent()\"\n [class.!hidden]=\"!display()\">\n <div\n #quillOption\n [class.!top-[-9999px]]=\"!isShowToolBar()\"\n [class.!left-[-9999px]]=\"!isShowToolBar()\"\n [style]=\"stylesIncludeToolbar()\"\n [class.pointer-events-none]=\"readonly() || loadingUploadImage()\"\n class=\"{{ isToolbarPositionFixed() ? 'fixed !z-10 w-[510px] shadow-[0px_4px_16px_0px_rgba(0,20,51,0.10)] rounded-[4px] bg-[#ffffff] libs-ui-quill-toolbar-animation' : '' }} {{ classIncludeToolbar() }} h-[44px] shrink-0\"\n [class.bg-[#f8f9fa]]=\"!readonly() && !loadingUploadImage()\"\n [class.libs-ui-readonly-background]=\"readonly() || loadingUploadImage()\">\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\n </div>\n <div\n #quillEditor\n LibsUiComponentsInputsMentionDirective\n [timeDelayInit]=\"timeDelayInit() + 50\"\n [mentionConfig]=\"dataConfigMention()\"\n [class.libs-ui-readonly-background]=\"readonly() || loadingUploadImage()\"\n [class.pointer-events-none]=\"loadingUploadImage()\"\n (outToggle)=\"handleToggleMention($event)\"\n (outInsertMention)=\"handlerInsertMention($event)\"></div>\n <ng-container\n #qlEditorScroll\n LibsUiComponentsScrollOverlayDirective\n [ignoreInit]=\"!qlEditorElement()\"\n [elementScroll]=\"qlEditorElement()\" />\n </div>\n @if (template(); as template) {\n <div [class]=\"classIncludeTemplate()\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </div>\n }\n @if (loadingUploadImage()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n @if (messageError() && showErrorLabel()) {\n <div class=\"flex items-center leading-normal mt-[8px]\">\n <span class=\"text-[#ff5454] libs-ui-font-h7r\">{{ messageError() | translate }}</span>\n </div>\n }\n</div>\n\n<ng-template #toolbar>\n <div\n class=\"toolbar h-full w-full shrink-0\"\n #toolbarItems>\n @if (displaySkeleton()) {\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]\">\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=\"itemTemplate; context: { option, $index, $last }\"></ng-container>\n </div>\n }\n <div class=\"relative\">\n @if (displayShowMoreToolbar()) {\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=\"itemTemplate; context: { option, $index, $last }\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template\n #itemTemplate\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 [listMaxItemShow]=\"8\"\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 [listConfig]=\"listConfigHeader()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [listMaxItemShow]=\"8\"\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=\"ql-picker {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-inputs-valid\n [dataType]=\"'int'\"\n [(item)]=\"size\"\n [fieldNameBind]=\"'value'\"\n [valueUpDownNumber]=\"1\"\n [maxValueNumber]=\"72\"\n [minValueNumber]=\"8\"\n [readonly]=\"readonly() || loadingUploadImage()\"\n [classContainerInput]=\"'w-[72px] h-[32px]'\"\n (outValueChange)=\"handlerValueChange($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 (outColorChange)=\"setStyle('color', $event)\">\n <div class=\"libs-ui-icon-editor-color-text libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"></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 (outColorChange)=\"setStyle('background', $event)\">\n <div class=\"libs-ui-icon-editor-color-background libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"></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\"></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\"></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\"></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\"></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 [listMaxItemShow]=\"8\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectAlign($event)\">\n @if (alignSelected(); as alignSelected) {\n <div class=\"flex items-center cursor-pointer\">\n <i [class]=\"iconAlignSelectedComputed()\"></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 === '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\"></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 === 'emoji') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <libs_ui-components-emoji\n [zIndex]=\"zIndex()\"\n [isNgContent]=\"true\"\n (outEventEmoji)=\"handlerAddEmoji($event)\">\n <button class=\"ql-emoji\"></button>\n </libs_ui-components-emoji>\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 [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{ template: viewLink, whiteTheme: true, ignoreArrow: true, zIndex: zIndex() }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControl($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)=\"handlerEdit($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":["lastValueFrom","timer"],"mappings":"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"}