@libs-ui/components-inputs-quill 0.2.75

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libs-ui-components-inputs-quill.mjs","sources":["../../../../../../libs-ui/components/inputs/quill/src/custom-upload-image/custom-upload-image.component.ts","../../../../../../libs-ui/components/inputs/quill/src/custom-upload-image/custom-upload-image.component.html","../../../../../../libs-ui/components/inputs/quill/src/indent-attributor/indent-attributor.component.ts","../../../../../../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/mention/mention.component.ts","../../../../../../libs-ui/components/inputs/quill/src/utils/quill.define.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, output, signal } from '@angular/core';\nimport { IButton } from '@libs-ui/components-buttons-button';\nimport { ILabel } from '@libs-ui/components-label';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-quill-custom_upload_image',\n templateUrl: './custom-upload-image.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsModalComponent\n ]\n})\nexport class LibsUiComponentsInputsQuillCustomUploadImageComponent {\n\n protected buttonFooter = signal<Array<IButton>>([{\n label: 'i18n_save',\n action: () => this.handlerSaveImage()\n },\n {\n type: 'button-third',\n label: 'i18n_cancel',\n action: async () => this.outClose.emit()\n }]);\n protected disable = signal<boolean>(false);\n\n // private mediaFile =signal<IMediaFile | undefined>(undefined);\n // private mediaUploadFunctionControl =signal<IMediaUploadBaseFunctionControlEvent | undefined>(undefined);\n\n zIndex = input<number, number | undefined>(1202, { transform: (value) => value ? value + 1 : 1202 });\n maxImageSize = input<number, number | undefined>(1048576, { transform: (value) => value ?? 1048576 });\n labelConfig = input<ILabel>();\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()?.valid()) {\n // return;\n // }\n // if (this.mediaFile?.origin_url) {\n // this.moClose.emit(this.mediaFile.origin_url);\n\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\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\n // this.moClose.emit(res.data?.url);\n // } catch (error) {\n // console.log(error);\n\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 [title]=\"'i18n_download_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ignoreHeaderTheme:true}\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"zIndex()\"\n [disable]=\"disable()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <!-- <mo-libs-shared-components-media-upload [zIndex]=\"zIndex+1\"\n [labelConfig]=\"labelConfig\"\n [multiple]=\"false\"\n [fileType]=\"'image'\"\n [doNotDelete]=\"true\"\n [maxImageSize]=\"maxImageSize\"\n [limitFile]=\"10\"\n [validRequired]=\"{isRequired: true}\"\n (moChangeFile)=\"handlerChangeFile($event)\"\n (moFunctionsControl)=\"handlerFunctionsControl($event)\">\n </mo-libs-shared-components-media-upload> -->\n </div>\n</libs_ui-components-modal>\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 indentStyle = new IndentAttributor('indent', 'margin-left', {\n scope: parchment.Scope.BLOCK,\n whitelist: pixelLevels.map(value => `${value * tabMultiplier}em`),\n});","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 { PATTERN_URL } 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: [\n LibsUiComponentsModalComponent,\n LibsUiComponentsInputsValidComponent\n ]\n})\nexport class LibsUiComponentsInputsQuillLinkComponent implements OnInit {\n\n protected dataLink = signal<{ title: string, link: string }>({ title: '', link: '' });\n protected patternLink = signal<RegExp>(PATTERN_URL());\n\n private inputValidFunctionControl = signal<Array<IInputValidFunctionControlEvent>>([]);\n\n zIndex = input<number, number | undefined>(1200, { transform: (value) => value ? value + 1 : 1200 });\n textSelected = input<string>();\n\n readonly outClose = output<void>();\n readonly outSaveLink = output<{ title: string, link: string }>();\n\n ngOnInit() {\n const textSelected = this.textSelected();\n if (textSelected) {\n this.dataLink.update(item => ({ ...item, title: textSelected }));\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}\n","<libs_ui-components-modal [title]=\"'i18n_insert_link'\"\n [height]=\"'auto'\"\n [width]=\"'598px'\"\n [zIndex]=\"zIndex()\"\n (outEvent)=\"handlerEvent($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <libs_ui-components-inputs-valid [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 [labelConfig]=\"{labelLeft: 'Link', required: true}\"\n [(item)]=\"dataLink\"\n [fieldNameBind]=\"'link'\"\n [placeholder]=\"'https:/…'\"\n [validRequired]=\"{isRequired:true}\"\n [validPattern]=\"[{pattern:patternLink}]\"\n keySelectedUnitLeft=\"1\"\n [unitsLeft]=\"[{id:'1',label:'URL'}]\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\" />\n </div>\n </div>\n</libs_ui-components-modal>\n","import Quill from \"quill\";\n\nconst Embed = Quill.import(\"blots/embed\");\n\nexport class QuillMentionBlot extends Embed {\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\nQuillMentionBlot.blotName = \"mention\";\nQuillMentionBlot.tagName = \"span\";\nQuillMentionBlot.className = \"libs-ui-quill-mention\";","import { signal } from '@angular/core';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { returnListObject } from '@libs-ui/services-http-request';\nimport { IToolbarConfig } from '../interfaces/quill.interface';\n\nexport const listDataAlign = () => {\n return [\n { key: '', icon: 'libs-ui-align-left text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'right', icon: 'libs-ui-align-right text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'center', icon: 'libs-ui-align-center text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },\n { key: 'justify', icon: 'libs-ui-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 listConfigAlign = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal({\n serviceOther: returnListObject(listDataAlign()),\n functionName: 'list',\n argumentsValue: []\n }),\n configTemplateText: signal({\n fieldKey: 'key',\n getValue: item => `<i class=\"${item.icon} ml-[6px]\"></i>`,\n ignoreIconSelected: true\n })\n };\n};\n\nexport const listConfigFont = (): IListConfigItem => {\n return {\n type: 'text',\n autoSelectFirstItem: true,\n httpRequestData: signal({\n serviceOther: 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 toolBarOptionDefault: Array<IToolbarConfig> = [\n { undo: true, redo: true },\n { fontFamily: true, fontSize: true, styleGapItem: 'gap-2' },\n { color: true, background: true },\n { bold: true, italic: true, underline: true, strikeThrough: true },\n { adjust: true },\n { indentIncrease: true, indentDecrease: true, listBulleted: true, listNumbered: true },\n { personalize: true, blockquote: true, link: true, unLink: true, image: true, emoji: true }\n];\n\nexport const iconList = [\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-undo scale-x-[-1]'\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]","import { NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ComponentRef, computed, ElementRef, inject, input, InputSignal, InputSignalWithTransform, ModelSignal, OnDestroy, OnInit, output, signal, TemplateRef, viewChild } from '@angular/core';\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 { 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 } from '@libs-ui/components-popover';\nimport { TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MIN_LENGTH, get, isNil, set, xssFilter } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport Quill, { RangeStatic, Sources, StringMap } from 'quill';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\nimport { LibsUiComponentsInputsQuillCustomUploadImageComponent } from './custom-upload-image/custom-upload-image.component';\nimport { indentStyle } from './indent-attributor/indent-attributor.component';\nimport { ICustomUploadImage, IQuillFunctionControl, IToolbarConfig } from './interfaces/quill.interface';\nimport { LibsUiComponentsInputsQuillLinkComponent } from './link/link.component';\nimport { QuillMentionBlot } from './mention/mention.component';\nimport { iconList, listConfigAlign, listConfigFont, listFont, toolBarOptionDefault } from './utils/quill.define';\n\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, NgTemplateOutlet,\n LibsUiComponentsLabelComponent, LibsUiComponentsDropdownComponent,\n LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsSelectColorComponent,\n LibsUiComponentsInputsValidComponent, LibsUiComponentsEmojiComponent\n ]\n})\nexport class LibsUiComponentsInputsQuillComponent implements OnInit, AfterViewInit, OnDestroy {\n\n protected quill = signal<Quill | undefined>(undefined);\n protected messageErr = signal<string>('');\n protected display = signal<boolean>(false);\n protected handlers = signal<Record<string, (...params: Array<unknown>) => void>>({ undo: this.handleUndo, redo: this.handleRedo });\n protected listConfigAlign = signal<IListConfigItem>(listConfigAlign());\n protected alignSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected iconAlignSelectedComputed = computed(() => get(this.alignSelected(), 'item.icon'));\n protected listConfigFont = signal<IListConfigItem>(listConfigFont());\n protected fontSelected = signal<IEmitSelectKey | undefined>(undefined);\n protected labelFontSelectedComputed = computed(() => get(this.fontSelected(), 'item.label') || 'Sans Serif');\n protected size = signal<{ value: number }>({ value: 14 });\n protected headingKeySelected = signal<number | undefined>(undefined);\n\n private addLinkComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillLinkComponent> | undefined>(undefined);\n private mediaUploadComponentRef = signal<ComponentRef<LibsUiComponentsInputsQuillCustomUploadImageComponent> | undefined>(undefined);\n private showMention = signal<boolean>(false);\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private translate = inject(TranslateService);\n private onDestroy = new Subject<void>();\n\n readonly optionsToolbar = input<Array<IToolbarConfig>, Array<IToolbarConfig> | undefined>(toolBarOptionDefault, { transform: value => value || toolBarOptionDefault });\n readonly placeholder = input<string, string | undefined>('i18n_import_content', { transform: (value) => value || 'i18n_import_content' });\n readonly labelConfig = input<ILabel | undefined>();\n readonly item = input<Record<string, unknown>>();\n readonly fieldNameBind = input<string>('value');\n readonly readonly = input<boolean>(false);\n readonly typeOutPutContent = input<'style' | 'class'>('style');\n readonly ignoreShowErrorLabel = input<boolean>(false);\n readonly showErrorBorder = input<boolean>(false);\n readonly template = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly classIncludeTemplate = input<string>();\n readonly classInclude = input<string>();\n readonly handlerClickHeader = input<Array<{ title: string, action: () => void }>>();\n readonly validRequired = input<IValidRequired>();\n readonly validMinLength = input<IValidLength>();\n readonly validMaxLength = input<IValidLength>();\n readonly onlyShowContent = input<boolean>(false);\n readonly zIndex = input<number, number | undefined>(1201, { transform: (value) => value || 1201 });\n // readonly dataConfigMention: IMentionsConfig | undefined;\n readonly notAllowUploadImage = input<boolean>();\n readonly isHeightAuto = input<boolean>();\n readonly customUploadImage = input<ICustomUploadImage, ICustomUploadImage | undefined>({ modeCustom: true, zIndex: 1202 }, { transform: (value) => value || { modeCustom: true, zIndex: 1202 } });\n readonly autoFocus = input<boolean>();\n readonly autoFocusBottom = input<boolean>();\n readonly isShowToolBar = input<boolean>();\n readonly classIncludeToolbar = input<string>('bottom-[-66px] left-[18px]');\n readonly templateToolBarPersonalize = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly onlyShowErrorBorderInContent = input<boolean>(false);\n readonly functionUploadImage = input<(files: Array<File>) => Promise<void>>(); // cần truyền nếu cho phép tải ảnh lên, yêu cầu tải xong ảnh phải gọi hàm insertImage để thêm ảnh vào content\n\n readonly outLabelError = output<string>();\n readonly outBlur = output<void>();\n readonly outFocus = output<void>();\n readonly outChange = output<string>();\n readonly outFunctionsControl = output<IQuillFunctionControl>();\n readonly outImagePaste = output<Array<File>>();\n readonly outSelectionChange = output<boolean>();\n\n readonly wrapperEditorEl = viewChild<ElementRef>('wrapperEditor');\n readonly editorEl = viewChild<ElementRef>('editor');\n readonly quillOptionEl = viewChild<ElementRef>('quillOption');\n readonly quillEditorEl = viewChild<ElementRef>('quillEditor');\n readonly quillToolbarEl = viewChild<ElementRef>('quillToolbar');\n\n ngOnInit() {\n this.outFunctionsControl.emit({\n setContent: this.setContent.bind(this),\n checkIsValid: this.validate.bind(this),\n insertContent: this.handleAddContentText.bind(this),\n insertLink: this.handleAddLinkQuill.bind(this),\n insertImage: this.insertImage.bind(this),\n setFontSize: this.setFontSize.bind(this),\n setColor: this.setColor.bind(this),\n setBackground: this.setBackground.bind(this)\n });\n }\n\n ngAfterViewInit(): void {\n if (this.autoFocus()) {\n this.display.set(true);\n }\n if (this.customUploadImage().modeCustom) {\n this.handlers.update(item => ({ ...item, image: this.handlerShowUploadImage.bind(this), emoji: this.handlerAddEmoji.bind(this) }));\n }\n let handlerClickLink = false;\n const handlerClickHeader = this.handlerClickHeader();\n if (handlerClickHeader && handlerClickHeader.length) {\n handlerClickHeader.forEach(element => {\n if (element.title && element.action) {\n if (element.title === 'link') {\n handlerClickLink = true;\n }\n this.handlers.update(item => ({ ...item, [element.title]: element.action }));\n }\n });\n }\n if (!handlerClickLink) {\n this.handlers.update(item => ({ ...item, link: this.handleShowUploadLink.bind(this), unLink: this.handlerUnInsertLink.bind(this) }));\n }\n const size = Quill.import('attributors/style/size');\n const image = Quill.import('formats/image');\n const parchment = Quill.import('parchment');\n const alignStyle = Quill.import('attributors/style/align');\n const icons = Quill.import('ui/icons');\n const block = parchment.query('block');\n const italic = Quill.import('formats/italic');\n const bold = Quill.import('formats/bold');\n size.whitelist = ['8px', '9px', '10px', '11px', '12px', '13px', '14px', '15px', '16px', '17px', '18px', '19px', '20px', '21px', '22px', '23px', '24px', '25px', '26px', '27px', '28px', '29px', '30px', '31px', '32px', '33px', '34px', '35px', '36px', '37px', '38px', '39px', '40px', '41px', '42px', '43px', '44px', '45px', '46px', '47px', '48px', '49px', '50px', '51px', '52px', '53px', '54px', '55px', '56px', '57px', '58px', '59px', '60px', '61px', '62px', '63px', '64px', '65px', '66px', '67px', '68px', '69px', '70px', '71px', '72px'];\n image.className = 'libs-ui-quill-format-image';\n block.tagName = 'DIV';\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(image, true);\n Quill.register(block, true);\n Quill.register(alignStyle, true);\n Quill.register(QuillMentionBlot, true);\n Quill.register({ 'formats/indent': indentStyle }, true);\n iconList.forEach(element => {\n set(icons, element.key, `<span class=\"${element.icon} hover:text-[var(--libs-ui-color-light-1)] text-[16px] text-[#6a7383]\"></span>`);\n });\n this.quill.set(new Quill(this.quillEditorEl()?.nativeElement, {\n modules: {\n toolbar: {\n container: this.onlyShowContent() && this.quillToolbarEl() ? this.quillToolbarEl()?.nativeElement : 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.isHeightAuto() ? this.wrapperEditorEl()?.nativeElement : this.quillEditorEl()?.nativeElement,\n scrollingContainer: this.isHeightAuto() ? this.wrapperEditorEl()?.nativeElement : null\n }));\n if (!this.autoFocus()) {\n setTimeout(() => this.display.set(true), 200);\n }\n const editorEl = this.editorEl();\n const classInclude = this.classInclude();\n const readonly = this.readonly();\n if (editorEl) {\n if (classInclude || readonly) {\n for (const elementNode of editorEl.nativeElement.lastElementChild.children) {\n if (!elementNode.className.includes('ql-editor')) {\n continue;\n }\n if (classInclude) {\n elementNode.classList.add(classInclude);\n }\n if (readonly) {\n elementNode.classList.add('!bg-[#f8f9fa]');\n }\n }\n }\n if (readonly) {\n for (const elementNode of editorEl.nativeElement.children) {\n if (elementNode.className.includes('ql-toolbar')) {\n elementNode.classList.add('pointer-events-none');\n }\n }\n }\n }\n this.setContent(get(this.item(), this.fieldNameBind(), ''));\n this.quill()?.on('text-change', (event) => {\n const html = this.quill()?.root.innerHTML;\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.setSelection((range.index || 0) + 1, 0, Quill.sources.SILENT);\n }\n });\n if (html === '<div><br></div>' || html === '<div style=\"text-align: justify;\"><br></div>' || !this.quill()?.getText()) {\n set(this.item(), this.fieldNameBind(), '');\n this.validate();\n this.outChange.emit(get(this.item(), this.fieldNameBind()));\n return;\n }\n this.convertInnerHTML();\n this.validate();\n this.outChange.emit(get(this.item(), this.fieldNameBind()));\n });\n this.quill()?.on('selection-change', (range: RangeStatic, oldRange: RangeStatic) => {\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 this.getHeading(format);\n }\n this.outSelectionChange.emit(range && range.length ? true : false);\n });\n set(this.quill(), 'root.onpaste', (event: ClipboardEvent) => {\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 const images: Array<File> = [];\n Array.from(files).forEach((file) => {\n if (file && file.type.split('/')[0] === 'image') {\n images.push(file);\n }\n });\n if (this.notAllowUploadImage()) {\n this.outImagePaste.emit(images);\n return;\n }\n this.functionUploadImage()?.(images);\n });\n if (this.autoFocus()) {\n this.quill()?.focus();\n }\n const alignPicker = document.getElementsByClassName('align-quill');\n Array.from(alignPicker).forEach(picker => {\n picker.innerHTML = '<i class=\"absolute -top-[2px] left-[16px] libs-ui-icon-move-right rotate-90 text-[6a7383] text-[16px] pl-[4px] pt-[4px]\"></i>';\n });\n const alignPickerOptions = document.getElementById('ql-picker-options-3');\n if (alignPickerOptions?.className) {\n alignPickerOptions.className = 'ql-picker-options overflow-hidden';\n }\n fromEvent<MouseEvent>(this.quillEditorEl()?.nativeElement.querySelector('.ql-tooltip'), 'mousedown').pipe(takeUntil(this.onDestroy)).subscribe(event => event.stopPropagation());\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 private getHeading(format: StringMap) {\n if (!format.header || format.header instanceof Array) {\n return;\n }\n this.headingKeySelected = format.header;\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 if (!content) {\n setTimeout(() => set(this.quill(), 'root.innerHTML', ''));\n return;\n }\n const contentXssFilter = await xssFilter(content);\n setTimeout(() => set(this.quill(), 'root.innerHTML', contentXssFilter));\n if (!this.autoFocusBottom()) {\n return;\n }\n setTimeout(() => {\n this.quill()?.blur();\n const range = document.createRange();\n const sel = window.getSelection();\n const target = this.quillEditorEl()?.nativeElement.querySelector('[contenteditable=\"true\"]');\n const contentScroll = this.isHeightAuto() ? this.wrapperEditorEl()?.nativeElement : target;\n range.selectNodeContents(target);\n range.collapse(false);\n sel?.removeAllRanges();\n sel?.addRange(range);\n target.focus();\n contentScroll.scrollTop = contentScroll.scrollHeight;\n }, 100);\n }\n\n protected handlerAddEmoji(emoji: unknown) {\n const selection = this.quill()?.getSelection(true).index;\n if (!isNil(selection)) {\n this.quill()?.insertText(selection, emoji as string);\n }\n }\n\n protected handleShowUploadLink() {\n this.addLinkComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsQuillLinkComponent));\n const instance = this.addLinkComponentRef()?.instance;\n const selection = this.quill()?.getSelection();\n const textSelected = selection?.length ? this.quill()?.getText(selection?.index, selection?.length) : '';\n if (instance) {\n instance.zIndex = this.zIndex;\n instance.textSelected = signal(textSelected) as ModelSignal<string | undefined>;\n instance.outSaveLink.subscribe((item: { title: string, link: string }) => {\n this.handleAddLinkQuill(item.title, item.link);\n });\n instance.outClose.subscribe(() => this.dynamicComponentService.remove(this.addLinkComponentRef()));\n }\n this.dynamicComponentService.addToBody(this.addLinkComponentRef());\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.messageErr.set('');\n const validRequired = this.validRequired();\n const item = this.item();\n const fieldNameBind = this.fieldNameBind();\n const value = get(item, fieldNameBind);\n if (validRequired && validRequired.isRequired && (!fieldNameBind || !value || !value.trim())) {\n this.messageErr.set(validRequired.message || ERROR_MESSAGE_EMPTY_VALID);\n this.outLabelError.emit(this.messageErr());\n return false;\n }\n const validMinLength = this.validMinLength();\n if (validMinLength && fieldNameBind && value && value.trim().length < validMinLength.length) {\n this.messageErr.set(validMinLength.message || ERROR_MESSAGE_MIN_LENGTH);\n this.outLabelError.emit(this.messageErr());\n return false;\n }\n const validMaxLength = this.validMaxLength();\n if (validMaxLength && fieldNameBind && value && value.trim().length > this.validMaxLength.length) {\n this.messageErr.set(validMaxLength.message || ERROR_MESSAGE_MAX_LENGTH);\n this.outLabelError.emit(this.messageErr());\n return false;\n }\n this.outLabelError.emit(this.messageErr());\n return true;\n }\n\n protected handleAddContentHTML(tagName: string, content: string, index?: number) {\n const selection = (index || index === 0) ? index : this.quill()?.getSelection(true).index;\n if (!isNil(selection)) {\n this.quill()?.insertEmbed(selection, tagName, content);\n this.setSelection(selection, content.length);\n }\n }\n\n private async handleAddContentText(content: string, index?: number) {\n const selection = (index || index === 0) ? index : this.quill()?.getSelection(true).index;\n if (!isNil(selection)) {\n this.quill()?.insertText(selection, content);\n }\n }\n\n private async handleAddLinkQuill(text: string, url: string, index?: number) {\n const selection = this.quill()?.getSelection(true);\n const indexInsert = (index || index === 0) ? 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 convertInnerHTML() {\n this.setStyleForContent();\n set(this.item(), this.fieldNameBind(), 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' },\n { selector: '.libs-ui-quill-mention', style: 'font-weight: 600;-moz-osx-font-smoothing: grayscale;-webkit-font-smoothing: antialiased; color: #7239EA' },\n { selector: 'blockquote', style: 'border-left: 4px solid #ccc; margin-bottom: 5px; margin-top: 5px; padding-left: 16px' }\n ];\n styleArray.forEach((item) => {\n const elements = this.quill()?.root.querySelectorAll(item.selector);\n elements?.forEach((element) => {\n if (item.selector === '.libs-ui-quill-format-image' || item.selector === '.libs-ui-quill-mention' || item.selector === 'blockquote') {\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 async insertImage(image: HTMLImageElement) {\n const sel = window.getSelection();\n if (!sel) {\n return;\n }\n const range = sel.getRangeAt(0);\n if (!this.quill()?.root.contains(range.commonAncestorContainer)) {\n return;\n }\n const selection = this.quill()?.getSelection(true);\n if (!isNil(selection?.index)) {\n this.quill()?.clipboard.dangerouslyPasteHTML(selection.index, image.outerHTML);\n }\n image.remove();\n }\n\n private handlerShowUploadImage() {\n this.mediaUploadComponentRef.set(this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsInputsQuillCustomUploadImageComponent));\n const instance = this.mediaUploadComponentRef()?.instance;\n if (instance) {\n instance.zIndex = input(this.customUploadImage().zIndex || 1203, { transform: value => value }) as InputSignalWithTransform<number, number | undefined>;\n instance.maxImageSize = input(this.customUploadImage().maxImageSize || 1048576, { transform: value => value }) as InputSignalWithTransform<number, number | undefined>;\n instance.labelConfig = input(this.customUploadImage().labelConfig) as InputSignal<ILabel | undefined>;\n instance.outClose.subscribe((event: string | void) => {\n this.dynamicComponentService.remove(this.mediaUploadComponentRef());\n if (event) {\n this.handleAddContentHTML('image', event);\n }\n });\n }\n this.dynamicComponentService.addToBody(this.mediaUploadComponentRef());\n }\n\n private setSelection(index: number, length: number, sources?: Sources) {\n this.quill()?.setSelection(index, length, sources);\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.quill()?.insertText(startPosInsert + 1, ' ', Quill.sources.USER);\n // this.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 async setColor(color: string) {\n this.quill()?.format('color', color);\n }\n\n protected async setBackground(color: string) {\n this.quill()?.format('background', color);\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 ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n this.dynamicComponentService.remove(this.addLinkComponentRef());\n this.dynamicComponentService.remove(this.mediaUploadComponentRef());\n }\n}\n\n","<div class=\"flex flex-col w-full h-full\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [required]=\"labelConfig.required\"\n [labelLeft]=\"labelConfig.labelLeft\" />\n }\n <div #wrapperEditor\n [attr.isHeightAuto]=\"isHeightAuto()\"\n [attr.hiddenToolBar]=\"onlyShowContent()\"\n class=\"libs-ui-quill-wrapper w-full h-full relative flex flex-col\"\n [class.libs-ui-border-error-general]=\"messageErr() && showErrorBorder() && !onlyShowErrorBorderInContent()\"\n [class.rounded-[4px]]=\"messageErr() && showErrorBorder() && !onlyShowErrorBorderInContent()\">\n <div #editor\n class=\"libs-ui-quill\"\n [attr.showError]=\"messageErr() && showErrorBorder() && onlyShowErrorBorderInContent()\"\n [class.!hidden]=\"!display()\">\n @if (!onlyShowContent()) {\n <div #quillOption\n class=\"'ql-toolbar ql-snow bg-[#f8f9fa] {{ classIncludeToolbar() }}\">\n <ng-container *ngTemplateOutlet=\"toolbarRef\"></ng-container>\n </div>\n }\n <div #quillEditor></div>\n <!-- MoLibsCoreUIMentionConfig\n [mentionConfig]=\"dataConfigMention\"\n (moToggle)=\"handleToggleMention($event)\"\n (moInsertMention)=\"handlerInsertMention($event)\" -->\n </div>\n @if (template(); as template) {\n <div [class]=\"classIncludeTemplate()\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </div>\n }\n </div>\n @if (messageErr() && !ignoreShowErrorLabel()) {\n <div class=\"flex items-center leading-normal mt-[8px]\">\n <span class=\"text-[#ff5454] libs-ui-font-h7r\"> {{ messageErr() | translate }}</span>\n </div>\n }\n</div>\n<div #quillToolbar\n [class]=\"'ql-snow absolute px-[8px] py-[4px] p-0 w-[500px] rounded-[4px] bg-[#ffffff] libs-ui-quill-toolbar-animation ' + classIncludeToolbar() + (isShowToolBar() ? ' block' : ' hidden')\">\n <ng-container *ngTemplateOutlet=\"toolbarRef\"></ng-container>\n</div>\n\n<ng-template #toolbarRef>\n <div class=\"toolbar\">\n <div class=\"ql-formats items-center\">\n @for (option of optionsToolbar(); track $index) {\n <div class=\"flex items-center h-[32px] {{ option.styleGapItem ? option.styleGapItem : 'gap-4' }}\">\n @if (option.undo) {\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content: 'i18n_undo', zIndex: 1250}\"\n class=\"ql-undo\"></button>\n }\n @if (option.redo) {\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content: 'i18n_redo', zIndex: 1250}\"\n class=\"ql-redo\"></button>\n }\n @if (option.fontFamily) {\n <div class=\"relative w-[117px] h-full bg-[#ffffff] rounded-[4px] libs-ui-border-general\">\n <libs_ui-components-dropdown [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-[8px] libs-ui-font-h5r pl-[16px] pr-[40px]\">\n <libs_ui-components-popover [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{zIndex:1250}\">\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.fontSize) {\n <div class=\"ql-picker\">\n <libs_ui-components-inputs-valid [dataType]=\"'int'\"\n [(item)]=\"size\"\n [fieldNameBind]=\"'value'\"\n [defaultHeight]=\"32\"\n [valueUpDownNumber]=\"1\"\n [maxValueNumber]=\"72\"\n [minValueNumber]=\"8\"\n [readonly]=\"readonly()\"\n [classContainerInput]=\"'w-[72px] h-[32px]'\"\n (outValueChange)=\"handlerValueChange($event)\" />\n </div>\n }\n @if (option.color) {\n <div class=\"ql-color ql-picker ql-color-picker !flex items-center\">\n <libs_ui-components-popover [config]=\"{content:'i18n_text_color', zIndex:1250}\">\n <libs_ui-components-buttons-select_color [zIndex]=\"zIndex()\"\n [externalContent]=\"true\"\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)]\">\n </div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.background) {\n <div class=\"ql-background ql-picker ql-color-picker !flex items-center\">\n <libs_ui-components-popover [config]=\"{content:'i18n_background_color', zIndex:1250}\">\n <libs_ui-components-buttons-select_color [zIndex]=\"zIndex()\"\n [externalContent]=\"true\"\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)]\">\n </div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.bold) {\n <div class=\"flex items-center\">\n <libs_ui-components-popover [config]=\"{content:'i18n_font_weight_bold', zIndex:1250}\">\n <button class=\"ql-bold\"></button>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.italic) {\n <div class=\"flex items-center\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_font_style_italic', zIndex:1250}\"\n class=\"ql-italic\"></button>\n </div>\n }\n @if (option.underline) {\n <div class=\"flex items-center\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_text_decoration_underline', zIndex:1250}\"\n class=\"ql-underline\"></button>\n </div>\n }\n @if (option.strikeThrough) {\n <div class=\"flex items-center\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_text_line_through', zIndex:1250}\"\n class=\"ql-strike\"></button>\n </div>\n }\n @if (option.adjust) {\n <div class=\"relative !flex items-center ql-align ql-picker ql-icon-picker !w-max\">\n <libs_ui-components-popover [config]=\"{content:'i18n_adjust', zIndex:1250}\">\n <libs_ui-components-dropdown [isNgContent]=\"true\"\n [ignoreStopPropagationEvent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigAlign()\"\n [listHiddenInputSearch]=\"true\"\n [popoverCustomConfig]=\"{ignoreArrow: true, classInclude: 'w-[32px] overflow-hidden', 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.indentIncrease) {\n <div class=\"flex items-center\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_indent_increase', zIndex:1250}\"\n class=\"ql-indent\"\n value=\"+1\"></button>\n </div>\n }\n @if (option.indentDecrease) {\n <div class=\"flex items-center\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_indent_decrease', zIndex:1250}\"\n class=\"ql-indent\"\n value=\"-1\"></button>\n </div>\n }\n @if (option.listBulleted) {\n <div class=\"flex items-center\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_list_bulleted', zIndex:1250}\"\n class=\"ql-list ql-bullet\"\n value=\"bullet\"></button>\n </div>\n }\n @if (option.listNumbered) {\n <div class=\"flex items-center\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_list_numbered', zIndex:1250}\"\n class=\"ql-list ql-ordered\"\n value=\"ordered\"></button>\n </div>\n }\n @if (option.personalize && templateToolBarPersonalize(); as templateToolBarPersonalize) {\n <div class=\"flex items-center\">\n <ng-container *ngTemplateOutlet=\"templateToolBarPersonalize\"></ng-container>\n </div>\n }\n @if (option.blockquote) {\n <div class=\"flex items-center\">\n <button LibsUiComponentsPopoverDirective\n [config]=\"{content:'i18n_quote', zIndex:1250}\"\n class=\"ql-blockquote\"></button>\n </div>\n }\n @if (option.link) {\n <div class=\"flex items-center\">\n <libs_ui-components-popover [config]=\"{content:'i18n_insert_link', zIndex:1250}\">\n <button class=\"ql-link\"></button>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.unLink) {\n <div class=\"flex items-center\">\n <libs_ui-components-popover [config]=\"{content:'i18n_unlink', zIndex:1250}\">\n <button class=\"ql-unLink\"></button>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.image && customUploadImage().showIconUploadImage) {\n <div class=\"flex items-center\">\n <libs_ui-components-popover [config]=\"{content:'i18n_image', zIndex:1250}\">\n <button class=\"ql-image\"></button>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.emoji) {\n <div class=\"flex items-center\">\n <libs_ui-components-emoji [zIndex]=\"1250\"\n [isNgContent]=\"true\"\n (outEventEmoji)=\"handlerAddEmoji($event)\">\n <button class=\"ql-emoji\"></button>\n </libs_ui-components-emoji>\n </div>\n }\n </div>\n @if (!$last) {\n <div class=\"w-[1px] h-[16px] libs-ui-border-right-general mx-[8px]\"></div>\n }\n }\n </div>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ declare const IndentAttributor_base: new (formatName: string, styleProperty: string, attributorOptions: unknown) => any;
2
+ declare class IndentAttributor extends IndentAttributor_base {
3
+ constructor(formatName: string, styleProperty: string, attributorOptions: unknown);
4
+ add(node: HTMLElement, value: string): boolean;
5
+ value(node: HTMLElement): number | undefined;
6
+ }
7
+ export declare const indentStyle: IndentAttributor;
8
+ export {};
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './quill.component';
@@ -0,0 +1,47 @@
1
+ import { ILabel } from "@libs-ui/components-label";
2
+ export interface IToolbarConfig {
3
+ undo?: boolean;
4
+ redo?: boolean;
5
+ fontFamily?: boolean;
6
+ fontSize?: boolean;
7
+ color?: boolean;
8
+ background?: boolean;
9
+ bold?: boolean;
10
+ italic?: boolean;
11
+ underline?: boolean;
12
+ strikeThrough?: boolean;
13
+ adjust?: boolean;
14
+ indentIncrease?: boolean;
15
+ indentDecrease?: boolean;
16
+ listBulleted?: boolean;
17
+ listNumbered?: boolean;
18
+ blockquote?: boolean;
19
+ link?: boolean;
20
+ unLink?: boolean;
21
+ emoji?: boolean;
22
+ personalize?: boolean;
23
+ image?: boolean;
24
+ styleGapItem?: string;
25
+ }
26
+ export interface IEventSave {
27
+ link: string;
28
+ width?: number;
29
+ height?: number;
30
+ }
31
+ export interface ICustomUploadImage {
32
+ modeCustom: boolean;
33
+ showIconUploadImage?: boolean;
34
+ zIndex?: number;
35
+ maxImageSize?: number;
36
+ labelConfig?: ILabel;
37
+ }
38
+ export interface IQuillFunctionControl {
39
+ setContent: (content: string) => Promise<void>;
40
+ checkIsValid: () => Promise<boolean>;
41
+ insertContent: (content: string, index?: number) => Promise<void>;
42
+ insertLink: (text: string, url: string, index?: number) => Promise<void>;
43
+ insertImage: (img: HTMLImageElement) => Promise<void>;
44
+ setFontSize: (size: number) => Promise<void>;
45
+ setColor: (color: string) => Promise<void>;
46
+ setBackground: (color: string) => Promise<void>;
47
+ }
@@ -0,0 +1,25 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { IInputValidFunctionControlEvent } from '@libs-ui/components-inputs-valid';
3
+ import { TYPE_MODAL_EVENT } from '@libs-ui/components-modal';
4
+ import * as i0 from "@angular/core";
5
+ export declare class LibsUiComponentsInputsQuillLinkComponent implements OnInit {
6
+ protected dataLink: import("@angular/core").WritableSignal<{
7
+ title: string;
8
+ link: string;
9
+ }>;
10
+ protected patternLink: import("@angular/core").WritableSignal<RegExp>;
11
+ private inputValidFunctionControl;
12
+ zIndex: import("@angular/core").InputSignalWithTransform<number, number | undefined>;
13
+ textSelected: import("@angular/core").InputSignal<string | undefined>;
14
+ readonly outClose: import("@angular/core").OutputEmitterRef<void>;
15
+ readonly outSaveLink: import("@angular/core").OutputEmitterRef<{
16
+ title: string;
17
+ link: string;
18
+ }>;
19
+ ngOnInit(): void;
20
+ protected handlerFunctionsControl(event: IInputValidFunctionControlEvent): Promise<void>;
21
+ private validate;
22
+ protected handlerEvent(event: TYPE_MODAL_EVENT): Promise<void>;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsInputsQuillLinkComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsInputsQuillLinkComponent, "libs_ui-components-inputs-quill-link", never, { "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "textSelected": { "alias": "textSelected"; "required": false; "isSignal": true; }; }, { "outClose": "outClose"; "outSaveLink": "outSaveLink"; }, never, never, true, never>;
25
+ }
@@ -0,0 +1,16 @@
1
+ declare const Embed: any;
2
+ export declare class QuillMentionBlot extends Embed {
3
+ static create(data: {
4
+ id: string;
5
+ feId: string;
6
+ value: string;
7
+ }): any;
8
+ static value(domNode: HTMLElement): {
9
+ id: string | null;
10
+ feId: string | null;
11
+ value: string | null;
12
+ };
13
+ attach(): void;
14
+ getClickHandler(event: Event): void;
15
+ }
16
+ export {};
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@libs-ui/components-inputs-quill",
3
+ "version": "0.2.75",
4
+ "peerDependencies": {
5
+ "@angular/common": "^18.2.0",
6
+ "@angular/core": "^18.2.0"
7
+ },
8
+ "sideEffects": false,
9
+ "module": "fesm2022/libs-ui-components-inputs-quill.mjs",
10
+ "typings": "index.d.ts",
11
+ "exports": {
12
+ "./package.json": {
13
+ "default": "./package.json"
14
+ },
15
+ ".": {
16
+ "types": "./index.d.ts",
17
+ "esm2022": "./esm2022/libs-ui-components-inputs-quill.mjs",
18
+ "esm": "./esm2022/libs-ui-components-inputs-quill.mjs",
19
+ "default": "./fesm2022/libs-ui-components-inputs-quill.mjs"
20
+ }
21
+ },
22
+ "dependencies": {
23
+ "tslib": "^2.3.0"
24
+ }
25
+ }
@@ -0,0 +1,104 @@
1
+ import { AfterViewInit, ElementRef, InputSignal, InputSignalWithTransform, OnDestroy, OnInit, TemplateRef } from '@angular/core';
2
+ import { IEmitSelectKey } from '@libs-ui/components-dropdown';
3
+ import { IValidLength, IValidRequired } from '@libs-ui/components-inputs-valid';
4
+ import { ILabel } from '@libs-ui/components-label';
5
+ import { IListConfigItem } from '@libs-ui/components-list';
6
+ import Quill from 'quill';
7
+ import { ICustomUploadImage, IQuillFunctionControl, IToolbarConfig } from './interfaces/quill.interface';
8
+ import * as i0 from "@angular/core";
9
+ export declare class LibsUiComponentsInputsQuillComponent implements OnInit, AfterViewInit, OnDestroy {
10
+ protected quill: import("@angular/core").WritableSignal<Quill | undefined>;
11
+ protected messageErr: import("@angular/core").WritableSignal<string>;
12
+ protected display: import("@angular/core").WritableSignal<boolean>;
13
+ protected handlers: import("@angular/core").WritableSignal<Record<string, (...params: Array<unknown>) => void>>;
14
+ protected listConfigAlign: import("@angular/core").WritableSignal<IListConfigItem>;
15
+ protected alignSelected: import("@angular/core").WritableSignal<IEmitSelectKey | undefined>;
16
+ protected iconAlignSelectedComputed: import("@angular/core").Signal<any>;
17
+ protected listConfigFont: import("@angular/core").WritableSignal<IListConfigItem>;
18
+ protected fontSelected: import("@angular/core").WritableSignal<IEmitSelectKey | undefined>;
19
+ protected labelFontSelectedComputed: import("@angular/core").Signal<any>;
20
+ protected size: import("@angular/core").WritableSignal<{
21
+ value: number;
22
+ }>;
23
+ protected headingKeySelected: import("@angular/core").WritableSignal<number | undefined>;
24
+ private addLinkComponentRef;
25
+ private mediaUploadComponentRef;
26
+ private showMention;
27
+ private dynamicComponentService;
28
+ private translate;
29
+ private onDestroy;
30
+ readonly optionsToolbar: InputSignalWithTransform<IToolbarConfig[], IToolbarConfig[] | undefined>;
31
+ readonly placeholder: InputSignalWithTransform<string, string | undefined>;
32
+ readonly labelConfig: InputSignal<ILabel | undefined>;
33
+ readonly item: InputSignal<Record<string, unknown> | undefined>;
34
+ readonly fieldNameBind: InputSignal<string>;
35
+ readonly readonly: InputSignal<boolean>;
36
+ readonly typeOutPutContent: InputSignal<"style" | "class">;
37
+ readonly ignoreShowErrorLabel: InputSignal<boolean>;
38
+ readonly showErrorBorder: InputSignal<boolean>;
39
+ readonly template: InputSignal<TemplateRef<any> | undefined>;
40
+ readonly classIncludeTemplate: InputSignal<string | undefined>;
41
+ readonly classInclude: InputSignal<string | undefined>;
42
+ readonly handlerClickHeader: InputSignal<{
43
+ title: string;
44
+ action: () => void;
45
+ }[] | undefined>;
46
+ readonly validRequired: InputSignal<IValidRequired | undefined>;
47
+ readonly validMinLength: InputSignal<IValidLength | undefined>;
48
+ readonly validMaxLength: InputSignal<IValidLength | undefined>;
49
+ readonly onlyShowContent: InputSignal<boolean>;
50
+ readonly zIndex: InputSignalWithTransform<number, number | undefined>;
51
+ readonly notAllowUploadImage: InputSignal<boolean | undefined>;
52
+ readonly isHeightAuto: InputSignal<boolean | undefined>;
53
+ readonly customUploadImage: InputSignalWithTransform<ICustomUploadImage, ICustomUploadImage | undefined>;
54
+ readonly autoFocus: InputSignal<boolean | undefined>;
55
+ readonly autoFocusBottom: InputSignal<boolean | undefined>;
56
+ readonly isShowToolBar: InputSignal<boolean | undefined>;
57
+ readonly classIncludeToolbar: InputSignal<string>;
58
+ readonly templateToolBarPersonalize: InputSignal<TemplateRef<any> | undefined>;
59
+ readonly onlyShowErrorBorderInContent: InputSignal<boolean>;
60
+ readonly functionUploadImage: InputSignal<((files: Array<File>) => Promise<void>) | undefined>;
61
+ readonly outLabelError: import("@angular/core").OutputEmitterRef<string>;
62
+ readonly outBlur: import("@angular/core").OutputEmitterRef<void>;
63
+ readonly outFocus: import("@angular/core").OutputEmitterRef<void>;
64
+ readonly outChange: import("@angular/core").OutputEmitterRef<string>;
65
+ readonly outFunctionsControl: import("@angular/core").OutputEmitterRef<IQuillFunctionControl>;
66
+ readonly outImagePaste: import("@angular/core").OutputEmitterRef<File[]>;
67
+ readonly outSelectionChange: import("@angular/core").OutputEmitterRef<boolean>;
68
+ readonly wrapperEditorEl: import("@angular/core").Signal<ElementRef<any> | undefined>;
69
+ readonly editorEl: import("@angular/core").Signal<ElementRef<any> | undefined>;
70
+ readonly quillOptionEl: import("@angular/core").Signal<ElementRef<any> | undefined>;
71
+ readonly quillEditorEl: import("@angular/core").Signal<ElementRef<any> | undefined>;
72
+ readonly quillToolbarEl: import("@angular/core").Signal<ElementRef<any> | undefined>;
73
+ ngOnInit(): void;
74
+ ngAfterViewInit(): void;
75
+ protected setStyle(type: string, data: string | number): void;
76
+ private getFontSize;
77
+ private getFont;
78
+ private getHeading;
79
+ protected handleUndo(): void;
80
+ protected handleRedo(): void;
81
+ protected setContent(content: string): Promise<void>;
82
+ protected handlerAddEmoji(emoji: unknown): void;
83
+ protected handleShowUploadLink(): void;
84
+ protected handlerUnInsertLink(): void;
85
+ protected validate(): Promise<boolean>;
86
+ protected handleAddContentHTML(tagName: string, content: string, index?: number): void;
87
+ private handleAddContentText;
88
+ private handleAddLinkQuill;
89
+ private convertInnerHTML;
90
+ private setStyleForContent;
91
+ protected handleToggleMention(show: boolean): void;
92
+ private insertImage;
93
+ private handlerShowUploadImage;
94
+ private setSelection;
95
+ protected setFontSize(size: number): Promise<void>;
96
+ protected setColor(color: string): Promise<void>;
97
+ protected setBackground(color: string): Promise<void>;
98
+ protected handlerValueChange(value: number | string): void;
99
+ protected handleSelectAlign(event: IEmitSelectKey | undefined): void;
100
+ protected handleSelectFont(event: IEmitSelectKey | undefined): void;
101
+ ngOnDestroy(): void;
102
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsInputsQuillComponent, never>;
103
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsInputsQuillComponent, "libs_ui-components-inputs-quill", never, { "optionsToolbar": { "alias": "optionsToolbar"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "labelConfig": { "alias": "labelConfig"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "fieldNameBind": { "alias": "fieldNameBind"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "typeOutPutContent": { "alias": "typeOutPutContent"; "required": false; "isSignal": true; }; "ignoreShowErrorLabel": { "alias": "ignoreShowErrorLabel"; "required": false; "isSignal": true; }; "showErrorBorder": { "alias": "showErrorBorder"; "required": false; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; "classIncludeTemplate": { "alias": "classIncludeTemplate"; "required": false; "isSignal": true; }; "classInclude": { "alias": "classInclude"; "required": false; "isSignal": true; }; "handlerClickHeader": { "alias": "handlerClickHeader"; "required": false; "isSignal": true; }; "validRequired": { "alias": "validRequired"; "required": false; "isSignal": true; }; "validMinLength": { "alias": "validMinLength"; "required": false; "isSignal": true; }; "validMaxLength": { "alias": "validMaxLength"; "required": false; "isSignal": true; }; "onlyShowContent": { "alias": "onlyShowContent"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "notAllowUploadImage": { "alias": "notAllowUploadImage"; "required": false; "isSignal": true; }; "isHeightAuto": { "alias": "isHeightAuto"; "required": false; "isSignal": true; }; "customUploadImage": { "alias": "customUploadImage"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; "autoFocusBottom": { "alias": "autoFocusBottom"; "required": false; "isSignal": true; }; "isShowToolBar": { "alias": "isShowToolBar"; "required": false; "isSignal": true; }; "classIncludeToolbar": { "alias": "classIncludeToolbar"; "required": false; "isSignal": true; }; "templateToolBarPersonalize": { "alias": "templateToolBarPersonalize"; "required": false; "isSignal": true; }; "onlyShowErrorBorderInContent": { "alias": "onlyShowErrorBorderInContent"; "required": false; "isSignal": true; }; "functionUploadImage": { "alias": "functionUploadImage"; "required": false; "isSignal": true; }; }, { "outLabelError": "outLabelError"; "outBlur": "outBlur"; "outFocus": "outFocus"; "outChange": "outChange"; "outFunctionsControl": "outFunctionsControl"; "outImagePaste": "outImagePaste"; "outSelectionChange": "outSelectionChange"; }, never, never, true, never>;
104
+ }
@@ -0,0 +1,17 @@
1
+ import { IListConfigItem } from '@libs-ui/components-list';
2
+ import { IToolbarConfig } from '../interfaces/quill.interface';
3
+ export declare const listDataAlign: () => {
4
+ key: string;
5
+ icon: string;
6
+ }[];
7
+ export declare const listFont: () => {
8
+ key: string;
9
+ label: string;
10
+ }[];
11
+ export declare const listConfigAlign: () => IListConfigItem;
12
+ export declare const listConfigFont: () => IListConfigItem;
13
+ export declare const toolBarOptionDefault: Array<IToolbarConfig>;
14
+ export declare const iconList: {
15
+ key: string;
16
+ icon: string;
17
+ }[];