{"version":3,"file":"eui-components-externals-eui-editor.mjs","sources":["../../externals/eui-editor/image-url-dialog/image-url-dialog.component.ts","../../externals/eui-editor/image-url-dialog/image-url-dialog.component.html","../../externals/eui-editor/counters/eui-editor-counters.component.ts","../../externals/eui-editor/counters/eui-editor-counters.component.html","../../externals/eui-editor/json-view/eui-editor-json-view.component.ts","../../externals/eui-editor/eui-editor.component.ts","../../externals/eui-editor/eui-editor.component.html","../../externals/eui-editor/directives/eui-editor-maxlength.directive.ts","../../externals/eui-editor/validators/eui-editor.validators.ts","../../externals/eui-editor/eui-editor.module.ts","../../externals/eui-editor/eui-components-externals-eui-editor.ts"],"sourcesContent":["import { Component, OnInit, OnDestroy, inject } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { AbstractControl, Validators, FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nimport { DIALOG_COMPONENT_CONFIG } from '@eui/components/eui-dialog';\nimport { EuiInputTextComponent } from '@eui/components/eui-input-text';\n\nconst urlValidator = (control: AbstractControl): { isUrlValid: false } | null => {\n    const isHttp = control.value.substr(0, 7) === 'http://';\n    const isHttps = control.value.substr(0, 8) === 'https://';\n\n    return !isHttp && !isHttps ? { isUrlValid: false } : null;\n};\n\nexport interface EuiEditorImageDialogConfig {\n    onFormValueChange: (form: FormGroup) => void;\n}\n\n@Component({\n    templateUrl: 'image-url-dialog.component.html',\n    imports: [\n        ReactiveFormsModule,\n        EuiInputTextComponent,\n    ],\n})\nexport class EuiEditorImageDialogComponent implements OnInit, OnDestroy {\n    public form: FormGroup;\n\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private config = inject<EuiEditorImageDialogConfig>(DIALOG_COMPONENT_CONFIG);\n\n    ngOnInit(): void {\n        this.form = new FormGroup({\n            url: new FormControl<string>('', [Validators.required, urlValidator]),\n        });\n\n        this.form.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            this.config.onFormValueChange(this.form);\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n}\n","<form [formGroup]=\"form\">\n    <input euiInputText formControlName=\"url\" aria-label=\"Image URL\" />\n</form>\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    // eslint-disable-next-line\n    selector: 'eui-editor-counters',\n    templateUrl: './eui-editor-counters.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorCountersComponent {\n    @Input() charactersCounter: number;\n    @Input() charactersLabel = 'characters';\n    @Input() wordsCounter: number;\n    @Input() wordsLabel = 'words';\n    @Input({ transform: booleanAttribute }) isMaxLengthValid = true;\n    @Input({ transform: booleanAttribute }) hasCharactersCounter = true;\n    @Input({ transform: booleanAttribute }) hasWordsCounter = true;\n}\n","<div class=\"editor-counters\">\n    @if ( hasCharactersCounter ) {\n    <div class=\"editor-counters-chars-container\">\n        <span class=\"chars-counter\" [class.chars-counter--error]=\"!isMaxLengthValid\">{{ charactersCounter }}</span>\n        <span class=\"chars-label\">{{ charactersLabel }}</span>\n    </div>\n    }\n    @if ( hasWordsCounter ) {\n    <div class=\"editor-counters-words-container\">\n        <span class=\"words-counter\">{{ wordsCounter }}</span>\n        <span class=\"words-label\">{{ wordsLabel }}</span>\n    </div>\n    }\n</div>\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    HostBinding,\n    Input,\n    OnChanges,\n    SimpleChanges,\n    ViewEncapsulation,\n    inject,\n} from '@angular/core';\n\nconst QuillType: any = window['Quill'];\n\n@Component({\n    // eslint-disable-next-line\n    selector: 'eui-editor-json-view',\n    template: '',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorJsonViewComponent implements AfterViewInit, OnChanges {\n    @HostBinding('class') string = 'eui-editor__json-view';\n    @Input() theme = 'snow';\n    @Input() content: string;\n\n    private quillEditor: typeof QuillType;\n    private editorElem: HTMLElement;\n    private elementRef = inject<ElementRef>(ElementRef);\n\n    valueSetter = (quillEditor: typeof QuillType, value: string): void => {\n        let content: any = value;\n        try {\n            content = JSON.parse(value);\n        } catch (e) {\n            console.warn('JSON parse error!');\n        }\n        quillEditor?.setContents(content);\n    };\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes && changes.content && changes.content?.currentValue) {\n            this.valueSetter(this.quillEditor, changes.content.currentValue);\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.elementRef.nativeElement.insertAdjacentHTML('afterbegin', '<div quill-view-element></div>');\n\n        this.editorElem = this.elementRef.nativeElement.querySelector('[quill-view-element]');\n\n        const Quill: any = window['Quill'];\n\n        this.quillEditor = new Quill(this.editorElem, {\n            debug: false,\n            formats: null,\n            modules: { toolbar: false },\n            readOnly: true,\n            strict: true,\n            theme: 'snow',\n        });\n\n        if (this.content) {\n            this.valueSetter(this.quillEditor, this.content);\n        }\n    }\n}\n","import {\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n    OnInit,\n    ViewEncapsulation,\n    ChangeDetectionStrategy,\n    HostBinding,\n    OnDestroy,\n    Directive,\n    ContentChild,\n    forwardRef,\n    ElementRef,\n    HostListener,\n    Pipe,\n    ChangeDetectorRef,\n    OnChanges,\n    SimpleChanges,\n    inject,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { ContentChange, QuillModules, QuillModule } from '@eui/components/externals/quill';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\n// eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-denylist,id-match\nconst QuillType: any = window['Quill'];\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport Delta from 'quill-delta';\n\nimport { EuiDialogConfig, EuiDialogService } from '@eui/components/eui-dialog';\n\nimport { LoaderService, BetterTableModule, Blur, EditorChangeSelection, Focus, SelectionChange, ToolbarItemConfig } from '@eui/components/externals/quill';\nimport { EuiEditorImageDialogComponent } from './image-url-dialog/image-url-dialog.component';\nimport { NgStyle } from '@angular/common';\nimport { EuiTooltipDirective } from '@eui/components/directives';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EuiEditorCountersComponent } from './counters/eui-editor-counters.component';\nimport { EuiEditorJsonViewComponent } from './json-view/eui-editor-json-view.component';\n// eslint-disable-next-line prefer-const\nlet QuillBetterTable = window['quillBetterTable'];\n\n/**\n * @description\n * Rich text editor component based on Quill with customizable toolbar and formatting options.\n * Provides WYSIWYG editing capabilities with support for text formatting, images, tables, links, and code blocks.\n * Implements ControlValueAccessor for seamless integration with Angular forms.\n * Supports both HTML and JSON output formats with character and word counting.\n * Commonly used for content management, document editing, comment systems, and rich text input fields.\n * Dependencies: Quill editor library, EuiDialogService for image URL dialogs.\n */\n@Component({\n    // eslint-disable-next-line\n    selector: 'eui-editor',\n    templateUrl: './eui-editor.component.html',\n    styleUrls: ['./styles/_index.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        // TODO: Check to change the providing way. Provide with injector reference\n        EuiDialogService,\n    ],\n    imports: [\n        QuillModule,\n        NgStyle,\n        ReactiveFormsModule,\n        EuiTooltipDirective,\n        EuiEditorCountersComponent,\n        EuiEditorJsonViewComponent,\n        TranslateModule,\n        forwardRef(() => ClassFilterPipe),\n        ...EUI_ICON,\n    ],\n})\nexport class EuiEditorComponent implements ControlValueAccessor, OnInit, OnDestroy, OnChanges {\n    @HostBinding('class')\n    get class(): string {\n        return [\n            'eui-editor',\n            this.isReadOnly ? 'eui-editor--readonly' : '',\n            this.isReadOnly && this.value ? '': 'eui-editor--empty',\n            !this.isReadOnly ? 'eui-editor-wrapper' : '',\n            this.isFocused ? 'eui-editor--focused' : '',\n            this.isEnabledOnFocus ? 'eui-editor--enabled-on-focus' : '',\n        ].join(' ').trim();\n    }\n    @Input() e2eAttr = 'eui-editor';\n    @Input() id: string;\n    @Input() placeholder = '';\n    @Input() format: 'html' | 'json' = 'html';\n    @Input() theme: 'snow' | 'bubble' = 'snow';\n    @Input() debug: 'warn' | 'log' | 'error' | false = false;\n    @Input() customToolbarPosition: 'top' | 'bottom' = 'top';\n    @HostBinding('attr.tabindex')\n    @Input() tabindex = '0';\n    @Input() modules: QuillModules;\n    @Input() formats?: string[] | null;\n    // NEW EUI INPUTS\n    @Input() customToolbarConfig: ToolbarItemConfig[];\n    @HostBinding('style.height')\n    @Input() height: string;\n    // NEW OUTPUTS => eUI13+ only\n    @Output() editorCreate = new EventEmitter<typeof QuillType>();\n    @Output() editorChange = new EventEmitter<EditorChangeSelection | ContentChange>();\n    @Output() contentChange = new EventEmitter<ContentChange>();\n    @Output() selectionChange = new EventEmitter<SelectionChange>();\n    @Output() focus = new EventEmitter<Focus>();\n    @Output() blur = new EventEmitter<Blur>();\n    @Output() charactersCountChange = new EventEmitter<number>();\n    @Output() wordsCountChange = new EventEmitter<number>();\n\n    @HostBinding('class.eui-editor') true: boolean;\n\n    @HostBinding('attr.readonly')\n    get readonly(): string {\n        return this.isReadOnly ? 'readonly' : null;\n    }\n\n    public value: string | any = '';\n    public charactersCount = 0;\n    public wordsCount = 0;\n    public bytesCount = 0;\n    public isFocused = false;\n    public generatedId: string;\n    public formControl: FormControl = new FormControl();\n    public jsonToHtmlContent: string;\n    public toolbarConfig: { [id: string]: { label: string; options: any[]; dialogMessage: string } };\n    protected readyToRender: boolean = false;\n\n    // eslint-disable-next-line max-len\n    @ContentChild(forwardRef(() => EuiEditorCustomToolbarTagDirective), { static: false })\n    euiEditorCustomToolbar: EuiEditorCustomToolbarTagDirective;\n\n    @Input()\n    get isReadOnly(): boolean {\n        return this._isReadOnly;\n    }\n    set isReadOnly(value: BooleanInput) {\n        this._isReadOnly = coerceBooleanProperty(value);\n    }\n    private _isReadOnly = false;\n    @Input()\n    get showCounters(): boolean {\n        return this._showCounters;\n    }\n    set showCounters(value: BooleanInput) {\n        this._showCounters = coerceBooleanProperty(value);\n    }\n    private _showCounters = true;\n    \n     /** @deprecated The input isEnabledOnFocus will be deprecated in next major version of eUI.\n     * Please check the showcase sample in order to replace this feature using the focus emitter.\n    */\n    @Input()\n    get isEnabledOnFocus(): boolean {\n        return this._isEnabledOnFocus;\n    }\n    set isEnabledOnFocus(value) {\n        this._isEnabledOnFocus = coerceBooleanProperty(value);\n    }\n    private _isEnabledOnFocus = false;\n    @Input()\n    get isMinimalToolbar(): boolean {\n        return this._isMinimalToolbar;\n    }\n    set isMinimalToolbar(value: BooleanInput) {\n        this._isMinimalToolbar = coerceBooleanProperty(value);\n    }\n    private _isMinimalToolbar = false;\n\n    @HostBinding('attr.aria-invalid')\n    get isInvalid(): boolean {\n        return this._isInvalid;\n    }\n    set isInvalid(value: BooleanInput) {\n        this._isInvalid = coerceBooleanProperty(value);\n    }\n    private _isInvalid = false;\n\n    private quill: typeof QuillType;\n    private minimalToolbarConfig: ToolbarItemConfig[] = [\n        { name: 'headings' },\n        { name: 'bold' },\n        { name: 'italic' },\n        { name: 'underline' },\n        { name: 'fontColor' },\n        { name: 'textAlign' },\n        { name: 'link' },\n        { name: 'image' },\n        { name: 'imageUrl' },\n        { name: 'clean' },\n        { name: 'delete' },\n        { name: 'undo' },\n        { name: 'redo' },\n        { name: 'counters' },\n    ];\n    private defaultToolbarConfig: ToolbarItemConfig[] = [\n        { name: 'headings', label: 'Style - Apply an HTML tag or CSS class to the selected text', options: [1, 2, 3, 4, 5, 6] },\n        { name: 'font', label: 'Font - Change the font face' },\n        { name: 'bold', label: 'Bold (Ctrl + B) - Make the selected text bold' },\n        { name: 'italic', label: 'Italic (Ctrl + I) - Italicize the selected text' },\n        { name: 'underline', label: 'Underline (Ctrl + U) - Underline the selected text' },\n        { name: 'strike', label: 'Strikethrough - Draw a line to the middle of the selected text' },\n        { name: 'fontColor', label: 'Font Color - Change the text color' },\n        { name: 'fontBackground', label: 'Font Background - Change the text background color' },\n        { name: 'subscript', label: 'Subscript - Create ssmall letters below the text baseline' },\n        { name: 'superscript', label: 'Superscript - Create small letters above the line of the text' },\n        { name: 'textAlign', label: 'Text Align - Align the text to the selected position: left (default), center, right or justify' },\n        { name: 'orderedList', label: 'Numbering - Start an ordered list' },\n        { name: 'bulletList', label: 'Bullets - Start a bulleted list' },\n        { name: 'indentLess', label: 'Decrease Indent - Decrease the indent level of the paragraph' },\n        { name: 'indentMore', label: 'Increase Indent - Increase the indent level of the paragraph' },\n        { name: 'blockquote', label: 'Blockquote - Create a quoted block of the selected text' },\n        { name: 'codeBlock', label: 'Insert Code Block - Insert a code block at the cursor row position' },\n        { name: 'link', label: 'Insert Hyperlink (Ctrl + K) - Create a link to a Web page, a picture, an e-mail address or a program' },\n        { name: 'image', label: 'Insert Picture - Insert a picture from a file' },\n        { name: 'imageUrl', label: 'Insert Picture from URL - Insert a picture from a remote URL', dialogMessage: 'Enter image link URL' },\n        { name: 'video', label: 'Insert Video - Insert a video from a file' },\n        { name: 'table', label: 'Insert Table - Insert a 3x3 rows/cols table' },\n        { name: 'clean', label: 'Remove Styles - Remove the styles of the selected text' },\n        { name: 'delete', label: \"Delete content - Permanently deletes editor's contents\" },\n        { name: 'undo', label: 'Undo (Ctrl + Z) - Cancels the previous action' },\n        { name: 'redo', label: 'Redo (Ctrl + Y) - Do the next history action again' },\n        {\n            name: 'counters',\n            label: 'Counters - Characters and words counters (stripped Html)',\n            options: [\n                { name: 'characters', label: 'Characters' },\n                { name: 'words', label: 'Words' },\n            ],\n        },\n    ];\n    private destroy$ = new Subject<boolean>();\n    private euiDialogService = inject(EuiDialogService);\n    private cdr = inject(ChangeDetectorRef);\n    private ngControl = inject(NgControl);\n    private loader = inject(LoaderService);\n\n    constructor() {\n        this.ngControl.valueAccessor = this;\n    }\n\n    ngOnChanges(c: SimpleChanges) {\n        if (!c.isReadOnly?.currentValue) {\n            this.calculateCounters(this.value);\n        }\n    }\n\n    ngOnInit(): void {\n        this.loader.load().subscribe({\n            complete: () => {\n                this.readyToRender = true;\n                this.ngControl.statusChanges.pipe(startWith(this.ngControl.control.status), takeUntil(this.destroy$)).subscribe((status) => {\n                    this.isInvalid = status !== 'VALID';\n                });\n\n                this.generatedId = this.id ? this.id : 'eui-editor-' + (Math.floor(Math.random() * 1000000) + 1).toString();\n\n                this.toolbarConfig = {};\n                if (!this.customToolbarConfig && !this.isMinimalToolbar) {\n                    this.defaultToolbarConfig.forEach((t) => {\n                        this.toolbarConfig = {\n                            ...this.toolbarConfig,\n                            [t.name]: { label: t.label, options: t.options, dialogMessage: t.dialogMessage },\n                        };\n                    });\n                }\n\n                if (this.customToolbarConfig && !this.isMinimalToolbar) {\n                    this.customToolbarConfig.forEach((t) => {\n                        const label = !t.label ? this.defaultToolbarConfig.find((c) => c.name === t.name).label : t.label;\n                        let options = !t.options ? this.defaultToolbarConfig.find((c) => c.name === t.name).options : t.options;\n                        const d = !t.dialogMessage ? this.defaultToolbarConfig.find((c) => c.name === t.name).dialogMessage : t.dialogMessage;\n\n                        if (t.name === 'counters') {\n                            if (!t.options) {\n                                options = this.defaultToolbarConfig.find((c) => c.name === t.name).options;\n                            } else {\n                                options = t.options.map((option) => {\n                                    const optionLabel = option.label\n                                        ? option.label\n                                        : this.defaultToolbarConfig\n                                            .find((dtc) => dtc.name === 'counters')\n                                            .options.find((o) => o.name === option.name).label;\n                                    return { name: option.name, label: optionLabel };\n                                });\n                            }\n                        }\n\n                        this.toolbarConfig = {\n                            ...this.toolbarConfig,\n                            [t.name]: { label, options, dialogMessage: d },\n                        };\n                    });\n                }\n\n                if (this.isMinimalToolbar) {\n                    this.minimalToolbarConfig.forEach((t) => {\n                        const label = !t.label ? this.defaultToolbarConfig.find((c) => c.name === t.name).label : t.label;\n                        const options = !t.options ? this.defaultToolbarConfig.find((c) => c.name === t.name).options : t.options;\n                        const d = !t.dialogMessage ? this.defaultToolbarConfig.find((c) => c.name === t.name).dialogMessage : t.dialogMessage;\n\n                        this.toolbarConfig = {\n                            ...this.toolbarConfig,\n                            [t.name]: { label, options, dialogMessage: d },\n                        };\n                    });\n                }\n                this.cdr.markForCheck();\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n\n    public enableEditorOnFocus(event: any): void {\n        this.isReadOnly = false;\n        this.isFocused = true;\n    }\n\n    public imageUrlHandler(): void {\n        let imageUrlDialogForm: FormGroup = null;\n        this.euiDialogService.openDialog(\n            new EuiDialogConfig({\n                title: this.toolbarConfig.imageUrl.dialogMessage,\n                isHandleCloseOnAccept: true,\n                bodyComponent: {\n                    component: EuiEditorImageDialogComponent,\n                    config: {\n                        onFormValueChange: (form: FormGroup): void => {\n                            imageUrlDialogForm = form;\n                        },\n                    },\n                },\n                accept: (): void => {\n                    if (imageUrlDialogForm && imageUrlDialogForm.valid) {\n                        this.euiDialogService.closeDialog();\n\n                        const range = this.quill.getSelection() || { index: 0, length: 0 };\n                        this.quill.insertEmbed(range.index, 'image', imageUrlDialogForm.get('url').value, 'user');\n                    }\n                },\n            })\n        );\n    }\n\n    public editorUndo(): void {\n        this.quill['history'].undo();\n    }\n\n    public editorRedo(): void {\n        this.quill['history'].redo();\n    }\n\n    public editorDeleteContent(): void {\n        const config = new EuiDialogConfig({\n            title: 'Delete content',\n            content: \"<p>Are you sure you want to delete editor's content?</p>\",\n            hasCloseButton: false,\n            accept: (): void => {\n                this.quill.setContents(null);\n            },\n        });\n\n        this.euiDialogService.openDialog(config);\n    }\n\n    public insertTable(): void {\n        this.tableModule.insertTable(3, 3);\n    }\n\n    get hasImageFeature(): boolean {\n        return this.euiEditorCustomToolbar\n            ? this.euiEditorCustomToolbar?.elementRef.nativeElement.querySelector('.ql-image')\n            : !!this.toolbarConfig?.image;\n    }\n\n    public _onEditorCreated(quill: typeof QuillType): void {\n        this.quill = quill;\n\n        if (this.isEnabledOnFocus && !this.isReadOnly) {\n            this.quill.focus();     // places the focus cursor visible\n        }\n\n        if (this.format === 'html') {\n            const delta = this.quill.clipboard.convert({ html: this.value as string });\n            this.formControl.patchValue(delta);\n            this.quill.setContents(delta);\n        }\n\n        if (this.format === 'json') {\n            this.formControl.patchValue(this.value);\n            this.quill.setContents(JSON.parse(this.value));\n        }\n\n        if (!this.hasImageFeature) {\n            quill.clipboard.addMatcher('IMG', (element: Element, delta: Delta) => new Delta().insert(''));\n            quill.clipboard.addMatcher('PICTURE', (element: Element, delta: Delta) => new Delta().insert(''));\n        }\n\n        this.editorCreate.emit(quill);\n    }\n\n    private _internalChange = false;  // Add this property to the class\n\n    public _onContentChanged(event: ContentChange): void {\n        if (this.format === 'html') {\n            this.value = event.html;\n            this.calculateCounters(this.value as string);\n            // Only call onChange if it's not an internal change\n            if (!this._internalChange) {\n                this.onChange(this.htmlEntitiesDecode(this.value as string));\n            }\n        }\n        if (this.format === 'json') {\n            if (event.text !== '\\n') {\n                this.value = event.content;\n                this.calculateCounters(event.text);\n                this.jsonToHtmlContent = this.htmlEntitiesDecode(JSON.stringify(this.value));\n                // Only call onChange if it's not an internal change\n                if (!this._internalChange) {\n                    this.onChange(this.jsonToHtmlContent);\n                }\n            } else {\n                this.value = null;\n                this.calculateCounters('');\n                this.jsonToHtmlContent = '';\n                // Only call onChange if it's not an internal change\n                if (!this._internalChange) {\n                    this.onChange(null);\n                }\n            }\n        }\n        this.contentChange.emit(event); // New emitter\n    }\n\n    public _onSelectionChanged(event: SelectionChange): void {\n        this.selectionChange.emit(event);\n    }\n\n    public _onFocus(event: Focus): void {\n        this.isFocused = true;\n        this.calculateCounters(this.value);\n        this.focus.emit(event);\n    }\n\n    public _onBlur(event: Blur): void {\n        this.isFocused = false;\n        this.onTouch();\n        this.blur.emit(event);\n    }\n\n    public registerOnChange(fn: any): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: any): void {\n        this.onTouch = fn;\n    }\n\n    public writeValue(value: string): void {\n        // Store the value\n        this.value = value || null;\n        this.jsonToHtmlContent = this.value;\n\n        // Skip triggering onChange during writeValue operations\n        if (this.quill) {\n            // Use a flag to prevent triggering onChange in _onContentChanged\n            this._internalChange = true;\n\n            if (this.format === 'html') {\n                const delta = this.quill.clipboard.convert({ html: this.value as string });\n                this.formControl.patchValue(delta, { emitEvent: false });\n                this.quill.setContents(delta);\n            }\n\n            if (this.format === 'json' && this.value) {\n                this.formControl.patchValue(this.value, { emitEvent: false });\n                // this.quill.setContents(JSON.parse(this.value));\n            }\n\n            this.calculateCounters(this.value);\n\n            // Reset the flag after a short delay to allow Quill to complete its operations\n            setTimeout(() => {\n                this._internalChange = false;\n            });\n        }\n    }\n\n    private get tableModule(): BetterTableModule {\n        return this.quill.getModule('better-table');\n    }\n\n    private onChange: any = () => {};\n\n    private onTouch: any = () => {};\n\n    private htmlEntitiesDecode(content: string): string {\n        let c = content;\n        if (c) {\n            c = c.replace('&amp;', '&');\n            c = c.replace('&nbsp;', ' ');\n        }\n\n        return c;\n    }\n\n    get hasCharactersCounter(): boolean {\n        return this.toolbarConfig.counters.options.find((o) => o.name === 'characters');\n    }\n\n    get charactersCounterLabel(): string {\n        return this.toolbarConfig.counters.options.find((o) => o.name === 'characters')?.label;\n    }\n\n    get hasWordsCounter(): boolean {\n        return this.toolbarConfig.counters.options.find((o) => o.name === 'words');\n    }\n\n    get wordsCounterLabel(): string {\n        return this.toolbarConfig.counters.options.find((o) => o.name === 'words')?.label;\n    }\n\n    private calculateCounters(content: string): void {\n        let text: string;\n        const regex = /[\\s\\n]+/;\n\n        if (this.format === 'html') {\n            if (content && content.length > 0) {\n                text = this.stripHtml(content);\n                this.charactersCount = text.length;\n\n                text = content.replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n                this.wordsCount = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n            } else {\n                this.charactersCount = 0;\n                this.wordsCount = 0;\n                this.bytesCount = 0;\n            }\n        }\n\n        if (this.format === 'json') {\n            if (content && this.quill) {\n                text = this.stripHtml(this.quill.root.innerHTML);\n                this.charactersCount = text.length;\n\n                text = this.quill.root.innerHTML.replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n                this.wordsCount = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n            } else {\n                this.charactersCount = 0;\n                this.wordsCount = 0;\n                this.bytesCount = 0;\n            }\n        }\n\n        this.charactersCountChange.emit(this.charactersCount);\n        this.wordsCountChange.emit(this.wordsCount);\n    }\n\n    private stripHtml(content: string): string {\n        const regex = /(<([^>]+)>)/gm;\n        const contentToReplace = content.replace(regex, '');\n        return contentToReplace.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n    }\n\n    private cleanHtml(content: string): string {\n        const contentToReplace = content.replace(/<[^>]*>/g, '');\n        return contentToReplace.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n    }\n}\n\n/* eslint-disable */\n@Directive({ selector: 'euiEditorCustomToolbar', })\nexport class EuiEditorCustomToolbarTagDirective {\n    elementRef = inject(ElementRef);\n\n    @HostBinding('class') elementClass = 'eui-editor-custom-toolbar';\n}\n/* eslint-enable */\n\n/**\n * Pipe to remove classes from the editor\n */\n@Pipe({ name: 'classFilter', })\nexport class ClassFilterPipe {\n    transform(value: string): string {\n        return value\n            .replace(/eui-editor-wrapper/g, '')\n            .replace(/eui-editor--readonly/g, '')\n            .replace(/eui-editor--empty/g, '');\n    }\n}\n","@if (readyToRender) {\n<!-- NOTE: We need to create the editor instance even for readonly mode.\n     This is because we rely on the editor to format HTML/JSON content\n     into a properly structured HTML output that can't be done another way.\n     Future improvement: Consider completely replacing Quill with a\n     markdown-only editor, which would be a better solution. -->\n    @if (!isReadOnly) {\n        <quill-editor\n            [ngStyle]=\"{display: isReadOnly ? 'none' : null}\"\n            [id]=\"generatedId\"\n            class=\"{{ class | classFilter }}\"\n            [class.eui-quill-editor--focused]=\"isFocused\"\n            [format]=\"format\"\n            [formats]=\"formats\"\n            [sanitize]=\"true\"\n            [modules]=\"modules\"\n            [theme]=\"theme\"\n            [placeholder]=\"placeholder\"\n            [customToolbarPosition]=\"customToolbarPosition\"\n            [formControl]=\"formControl\"\n            [debug]=\"debug\"\n            [tabindex]=\"tabindex\"\n            [preserveWhitespace]=\"true\"\n            [hasImageFeature]=\"hasImageFeature\"\n            (onEditorCreated)=\"_onEditorCreated($event)\"\n            (onContentChanged)=\"_onContentChanged($event)\"\n            (onSelectionChanged)=\"_onSelectionChanged($event)\"\n            (onFocus)=\"_onFocus($event)\"\n            (onBlur)=\"_onBlur($event)\">\n\n            @if (!euiEditorCustomToolbar) {\n            <div quill-editor-toolbar class=\"ql-toolbar ql-snow eui-u-flex-gap-xs\">\n                @if (toolbarConfig.headings) {\n                <div\n                    class=\"ql-formats\"\n                    role=\"application\"\n                    aria-label=\"Select headings style\"\n                    euiTooltip=\"{{ toolbarConfig.headings.label | translate }}\">\n                    <select class=\"ql-header\" [attr.aria-label]=\"toolbarConfig.headings.label | translate\">\n                        @for (value of toolbarConfig.headings.options; track value) {\n                            <option value=\"{{ value }}\">Heading {{ value }}</option>\n                        }\n                        <option selected>Normal</option>\n                    </select>\n                </div>\n                }\n                @if (toolbarConfig.font) {\n                <div\n                    class=\"ql-formats\"\n                    role=\"application\"\n                    aria-label=\"Select font style\"\n                    euiTooltip=\"{{ toolbarConfig.font.label | translate }}\">\n                    <select class=\"ql-font\" [attr.aria-label]=\"toolbarConfig.font.label | translate\">\n                        <option selected>Sans Serif</option>\n                        <option value=\"serif\">Serif</option>\n                        <option value=\"monospace\">Monospace</option>\n                    </select>\n                </div>\n                }\n                @if (toolbarConfig.bold || toolbarConfig.italic || toolbarConfig.underline || toolbarConfig.strike) {\n                <div class=\"ql-formats\">\n                    @if (toolbarConfig.bold) {\n                    <button\n                        class=\"ql-bold\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.bold.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.bold.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.italic) {\n                    <button\n                        class=\"ql-italic\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.italic.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.italic.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.underline) {\n                    <button\n\n                        class=\"ql-underline\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.underline.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.underline.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.strike) {\n                    <button\n                        class=\"ql-strike\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.strike.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.strike.label | translate }}\">\n                    </button>\n                    }\n                </div>\n                }\n                @if (toolbarConfig.fontColor || toolbarConfig.fontBackground) {\n                <div class=\"ql-formats\">\n                    @if (toolbarConfig.fontColor) {\n                    <span euiTooltip=\"{{ toolbarConfig.fontColor.label | translate }}\">\n                        <select class=\"ql-color\" [attr.aria-label]=\"toolbarConfig.fontColor.label | translate\"></select>\n                    </span>\n                    }\n                    @if (toolbarConfig.fontBackground) {\n                    <span euiTooltip=\"{{ toolbarConfig.fontBackground.label | translate }}\">\n                        <select class=\"ql-background\" [attr.aria-label]=\"toolbarConfig.fontBackground.label | translate\"></select>\n                    </span>\n                    }\n                </div>\n                }\n                @if (toolbarConfig.subscript || toolbarConfig.superscript) {\n                <div class=\"ql-formats\">\n                    @if (toolbarConfig.subscript) {\n                    <button\n                        class=\"ql-script\"\n                        value=\"sub\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.subscript.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.subscript.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.superscript) {\n                    <button\n                        class=\"ql-script\"\n                        value=\"super\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.superscript.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.superscript.label | translate }}\">\n                    </button>\n                    }\n                </div>\n                }\n                @if (toolbarConfig.textAlign) {\n                <div class=\"ql-formats\">\n                    <span euiTooltip=\"{{ toolbarConfig.textAlign.label | translate }}\">\n                        <select class=\"ql-align\" [attr.aria-label]=\"toolbarConfig.textAlign.label | translate\">\n                            <option selected></option>\n                            <option value=\"center\"></option>\n                            <option value=\"right\"></option>\n                            <option value=\"justify\"></option>\n                        </select>\n                    </span>\n                </div>\n                }\n                @if (toolbarConfig.orderedList || toolbarConfig.bulletList || toolbarConfig.indentLess || toolbarConfig.indentMore) {\n                <div\n                    class=\"ql-formats\">\n                    @if (toolbarConfig.orderedList) {\n                    <button\n                        class=\"ql-list\"\n                        value=\"ordered\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.orderedList.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.orderedList.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.bulletList) {\n                    <button\n                        class=\"ql-list\"\n                        value=\"bullet\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.bulletList.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.bulletList.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.indentLess) {\n                    <button\n                        type=\"button\"\n                        class=\"ql-indent\"\n                        value=\"-1\"\n                        [attr.aria-label]=\"toolbarConfig.indentLess.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.indentLess.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.indentMore) {\n                    <button\n                        type=\"button\"\n                        class=\"ql-indent\"\n                        value=\"+1\"\n                        [attr.aria-label]=\"toolbarConfig.indentMore.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.indentMore.label | translate }}\">\n                    </button>\n                    }\n                </div>\n                }\n                @if (\n                        toolbarConfig.blockquote ||\n                        toolbarConfig.codeBlock ||\n                        toolbarConfig.link ||\n                        toolbarConfig.image ||\n                        toolbarConfig.imageUrl ||\n                        toolbarConfig.video ||\n                        toolbarConfig.table\n                    ) {\n                    <div class=\"ql-formats\">\n                    @if (toolbarConfig.blockquote) {\n                    <button\n                        class=\"ql-blockquote\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.blockquote.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.blockquote.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.codeBlock) {\n                    <button\n                        class=\"ql-code-block\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.codeBlock.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.codeBlock.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.link) {\n                    <button\n                        class=\"ql-link\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.link.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.link.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.image) {\n                    <button\n                        class=\"ql-image\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.image.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.image.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.imageUrl) {\n                    <button\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.imageUrl.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.imageUrl.label | translate }}\"\n                        (click)=\"imageUrlHandler()\">\n                        <eui-icon-svg icon=\"eui-image\" />\n                    </button>\n                    }\n                    @if (toolbarConfig.video) {\n                    <button\n                        class=\"ql-video\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.video.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.video.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.table) {\n                    <button\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.table.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.table.label | translate }}\"\n                        (click)=\"insertTable()\">\n                        <eui-icon-svg icon=\"eui-table\" />\n                    </button>\n                    }\n                </div>\n                }\n                @if (toolbarConfig.clean || toolbarConfig.delete) {\n                <div class=\"ql-formats\">\n                    @if (toolbarConfig.clean) {\n                    <button\n                        class=\"ql-clean\"\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.clean.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.clean.label | translate }}\">\n                    </button>\n                    }\n                    @if (toolbarConfig.delete) {\n                    <button\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.delete.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.delete.label | translate }}\"\n                        (click)=\"editorDeleteContent()\">\n                        <eui-icon-svg icon=\"eui-trash\" size=\"s\" />\n                    </button>\n                    }\n                </div>\n                }\n                @if (toolbarConfig.undo || toolbarConfig.redo) {\n                <div class=\"ql-formats\">\n                    @if (toolbarConfig.undo) {\n                    <button\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.undo.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.undo.label | translate }}\"\n                        (click)=\"editorUndo()\">\n                        <eui-icon-svg icon=\"eui-undo\" size=\"s\" />\n                    </button>\n                    }\n                    @if (toolbarConfig.redo) {\n                    <button\n                        type=\"button\"\n                        [attr.aria-label]=\"toolbarConfig.redo.label | translate\"\n                        euiTooltip=\"{{ toolbarConfig.redo.label | translate }}\"\n                        (click)=\"editorRedo()\">\n                        <eui-icon-svg icon=\"eui-redo\" size=\"s\" />\n                    </button>\n                    }\n                </div>\n                }\n                @if (toolbarConfig.counters) {\n                <div class=\"ql-formats\">\n                    <eui-editor-counters\n                        [hasCharactersCounter]=\"hasCharactersCounter\"\n                        [charactersCounter]=\"charactersCount\"\n                        [charactersLabel]=\"charactersCounterLabel\"\n                        [hasWordsCounter]=\"hasWordsCounter\"\n                        [wordsCounter]=\"wordsCount\"\n                        [wordsLabel]=\"wordsCounterLabel\"\n                        euiTooltip=\"{{ toolbarConfig.counters.label | translate }}\">\n                    </eui-editor-counters>\n                </div>\n                }\n            </div>\n            }\n            @if (euiEditorCustomToolbar) {\n            <div quill-editor-toolbar class=\"ql-toolbar ql-snow\">\n                <ng-content select=\"euiEditorCustomToolbar\"></ng-content>\n            </div>\n            }\n        </quill-editor>\n    }\n    \n    <!-- READONLY MODE -->\n    @if (isReadOnly) {\n        @if (format === 'json') {\n            <eui-editor-json-view\n                [content]=\"jsonToHtmlContent\"\n                [theme]=\"theme\" />\n\n        } @else {\n            <quill-editor\n                [id]=\"generatedId\"\n                class=\"eui-quill-editor\"\n                [readOnly]=\"isReadOnly\"\n                [class.eui-quill-editor--readonly]=\"isReadOnly\"\n                [class.eui-quill-editor--enabled-on-focus]=\"isEnabledOnFocus\"\n                [class.eui-quill-editor--focused]=\"isFocused && isEnabledOnFocus\"\n                [class.eui-quill-editor--empty]=\"!value ? true : false\"\n\n                [formControl]=\"formControl\"\n                [format]=\"format\"\n                [sanitize]=\"true\"\n                [theme]=\"theme\"\n                [tabindex]=\"tabindex\"\n\n                (onEditorCreated)=\"_onEditorCreated($event)\"\n                (onContentChanged)=\"_onContentChanged($event)\"\n                (onSelectionChanged)=\"_onSelectionChanged($event)\"\n                (onFocus)=\"_onFocus($event)\"\n                (onBlur)=\"_onBlur($event)\"\n                (click)=\"isEnabledOnFocus ? enableEditorOnFocus($event) : null\"\n            />\n        }\n    }\n\n}\n","import { Directive, ElementRef, Input, AfterContentInit, OnDestroy, OnChanges, SimpleChanges, Renderer2, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { coerceBooleanProperty, coerceNumberProperty, BooleanInput, NumberInput } from '@angular/cdk/coercion';\n\n/**\n * @description\n * Directive for enforcing maximum character length on eui-editor components.\n * Displays remaining character count indicator and prevents exceeding the specified limit.\n * Strips HTML tags when counting characters in HTML format mode.\n * Must be used with formControlName on eui-editor elements.\n * Automatically updates counter as content changes and applies error styling when limit exceeded.\n */\n@Directive({\n    /* eslint-disable-next-line */\n    selector: '[formControlName][euiEditorMaxlength]', })\nexport class EuiEditorMaxlengthDirective implements AfterContentInit, OnDestroy, OnChanges {\n    /**\n     * Content format of the editor being validated.\n     * Determines how content is parsed for character counting.\n     * 'html' strips HTML tags, 'json' parses Quill Delta format.\n     * @default 'html'\n     */\n    @Input() format: 'html' | 'json' = 'html';\n    /**\n     * Maximum allowed character count for editor content.\n     * Characters are counted after stripping HTML tags or formatting.\n     * Required for directive to function.\n     */\n    @Input()\n    get euiEditorMaxlength(): number {\n        return this._euiEditorMaxlength;\n    }\n    set euiEditorMaxlength(value: NumberInput) {\n        this._euiEditorMaxlength = coerceNumberProperty(value);\n    }\n    private _euiEditorMaxlength: number;\n    /**\n     * Shows or hides the remaining character count indicator.\n     * When true, displays counter below editor showing characters remaining.\n     * Counter turns red when limit is exceeded.\n     * @default true\n     */\n    @Input()\n    get isShowMaxlength(): boolean {\n        return this._isShowMaxlength;\n    }\n    set isShowMaxlength(value: BooleanInput) {\n        this._isShowMaxlength = coerceBooleanProperty(value);\n    }\n    private _isShowMaxlength = true;\n\n    private valueChangesSubscription: Subscription;\n    private maxLengthSpan: HTMLSpanElement;\n    private wrapper: HTMLDivElement;\n    private el = inject(ElementRef);\n    private renderer = inject(Renderer2);\n    private control = inject(NgControl, { self: true });\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['isShowMaxlength'] && this.maxLengthSpan) {\n            if (this.isShowMaxlength) {\n                this.createMaxLengthBox();\n                this.refreshValue();\n            } else {\n                this.destroyMaxLengthBox();\n            }\n        }\n    }\n\n    ngAfterContentInit(): void {\n        if (this.euiEditorMaxlength) {\n            this.createMaxLengthBox();\n            this.refreshValue();\n        }\n\n        if (this.control?.valueChanges) {\n            this.valueChangesSubscription = this.control.valueChanges.subscribe(() => {\n                this.refreshValue();\n            });\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroyMaxLengthBox();\n\n        if (this.valueChangesSubscription) {\n            this.valueChangesSubscription.unsubscribe();\n        }\n    }\n\n    private refreshValue(): void {\n        let valueLength = 0;\n        let remainingLength = 0;\n\n        if (this.format === 'html') {\n            const regex = /(<([^>]+)>)/gi;\n            const tagsStrippedContent = this.control.value ? this.control.value.replace(regex, '') : '';\n            valueLength = tagsStrippedContent.length;\n            remainingLength = this.euiEditorMaxlength - valueLength;\n        } else {\n            const content =\n                this.control.value && this.control.value !== ''\n                    ? JSON.parse(this.control.value)\n                          .ops.filter((c: { attributes: string; insert: string }) => typeof c.insert === 'string')\n                          .map((c: { attributes: string; insert: string }) => c.insert.replace(/\\n/g, ''))\n                    : [''];\n\n            const jsonStrippedContent = content.join('');\n            valueLength = jsonStrippedContent.length;\n            remainingLength = this.euiEditorMaxlength - valueLength;\n        }\n\n        if (remainingLength < 0 && this.maxLengthSpan) {\n            this.maxLengthSpan.classList.add('error');\n            this.maxLengthSpan.innerHTML = '0';\n        } else {\n            if (remainingLength >= 0 && this.maxLengthSpan) {\n                this.maxLengthSpan.innerHTML = (this.euiEditorMaxlength - valueLength).toString();\n                this.maxLengthSpan.classList.remove('error');\n            }\n        }\n    }\n\n    private createMaxLengthBox(): void {\n        this.maxLengthSpan = this.renderer.createElement('span');\n        this.renderer.addClass(this.maxLengthSpan, 'input-maxlength');\n        this.renderer.setAttribute(this.maxLengthSpan, 'innerHTML', this.euiEditorMaxlength.toString());\n\n        const nativeElement: HTMLElement = this.el.nativeElement;\n        if (nativeElement != null) {\n            this.renderer.setStyle(nativeElement, 'width', '100%');\n            const parent: Node = nativeElement.parentNode;\n            if (parent != null && this.isShowMaxlength) {\n                this.wrapper = this.renderer.createElement('div');\n                this.renderer.addClass(this.wrapper, 'input-maxlength-wrapper');\n                parent.replaceChild(this.wrapper, nativeElement);\n                this.renderer.appendChild(this.wrapper, nativeElement);\n                this.renderer.appendChild(this.wrapper, this.maxLengthSpan);\n            }\n        }\n    }\n\n    private destroyMaxLengthBox(): void {\n        if (this.maxLengthSpan) {\n            this.renderer.removeChild(this.maxLengthSpan.parentElement, this.maxLengthSpan);\n        }\n\n        if (this.wrapper) {\n            const parent: Node = this.wrapper.parentNode;\n            const nativeElement: HTMLElement = this.el.nativeElement;\n            parent.replaceChild(nativeElement, this.wrapper);\n            this.renderer.removeChild(this.wrapper.parentElement, this.wrapper);\n        }\n    }\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\n\nconst isJson = (value: string): boolean => {\n    try {\n        JSON.parse(value);\n    } catch (e) {\n        return false;\n    }\n    return true;\n};\n\nconst byteLength = (value: string): number => {\n    // returns the byte length of an utf8 string\n    let s = value.length;\n    for (let i = value.length - 1; i >= 0; i--) {\n        const code = value.charCodeAt(i);\n        if (code > 0x7f && code <= 0x7ff) {\n            s++;\n        } else if (code > 0x7ff && code <= 0xffff) {\n            s += 2;\n        }\n        if (code >= 0xdc00 && code <= 0xdfff) {\n            i--;\n        }\n    }\n    return s;\n};\n\n/**\n * @description\n * Validator that requires the length of the editor's content, out of HTML tags or JSON structure, to be greater than or equal\n * to the provided minimum length.\n *\n * @usageNotes\n * Validate that the editor has a minimum of 5 characters:\n *\n * ```typescript\n * const editor = new FormControl('ng', euiEditorMinLength(5));\n * console.log(editor.errors); // { minlength: { minLength: 5, actual: 2 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minlength` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMinLength =\n    (minLength: number): ValidatorFn =>\n    (control: AbstractControl): { minLength: { minLength: number; actual: number } } | null => {\n        if (control.value) {\n            let actual = 0;\n            if (isJson(control.value)) {\n                const content = JSON.parse(control.value)\n                    .ops.filter((c: { attributes: string; insert: string }) => typeof c.insert === 'string')\n                    .map((c: { attributes: string; insert: string }) => c.insert.replace(/\\n/g, ''));\n\n                const jsonStrippedContent = content.join('');\n                actual = jsonStrippedContent.length;\n            } else {\n                const regex = /(<([^>]+)>)/gi;\n                const tagsStrippedContent = control.value.replace(regex, '');\n                actual = tagsStrippedContent.length;\n            }\n\n            return actual < minLength ? { minLength: { minLength, actual } } : null;\n        }\n    };\n\n/**\n * @description\n * Validator that requires the length of the editor's content, out of HTML tags or JSON structure, to be less than or equal\n * to the provided maximum length.\n *\n * @usageNotes\n * Validate that the editor has a maximum of 10 characters:\n *\n * ```typescript\n * const editor = new FormControl('ng angular reactive', euiEditorMaxLength(10));\n * console.log(editor.errors); // { maxLength: { maxLength: 10, actual: 19 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxlength` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMaxLength =\n    (maxLength: number): ValidatorFn =>\n    (control: AbstractControl): { maxLength: { maxLength: number; actual: number } } | null => {\n        if (control.value) {\n            let actual = 0;\n            if (isJson(control.value)) {\n                const content = JSON.parse(control.value)\n                    .ops.filter((c: { attributes: string; insert: string }) => typeof c.insert === 'string')\n                    .map((c: { attributes: string; insert: string }) => c.insert.replace(/\\n/g, ''));\n\n                const jsonStrippedContent = content.join('');\n                actual = jsonStrippedContent.length;\n            } else {\n                const regex = /(<([^>]+)>)/gi;\n                const tagsStrippedContent = control.value.replace(regex, '');\n                actual = tagsStrippedContent.length;\n            }\n\n            return actual > maxLength ? { maxLength: { maxLength, actual } } : null;\n        }\n    };\n\n/**\n * @description\n * Validator that requires the number of words in the editor, out of HTML tags or JSON structure, to be greater than or equal\n * to the provided minimum number.\n *\n * @usageNotes\n * Validate that the editor has a minimum of 5 words:\n *\n * ```typescript\n * const editor = new FormControl('ng angular', euiEditorMinWords(5));\n * console.log(editor.errors); // { minWords: { minWords: 5, actual: 2 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minWords` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMinWords =\n    (minWords: number): ValidatorFn =>\n    (control: AbstractControl<string>): { minWords: { minWords: number; actual: number } } | null => {\n        const regex = /[\\s\\n]+/;\n        if (control.value) {\n            let actual = 0;\n            if (isJson(control.value)) {\n                const content = JSON.parse(control.value)\n                    .ops.filter((c: { insert: string }) => typeof c.insert === 'string')\n                    .map((c: { insert: string }) => c.insert);\n\n                const jsonStrippedContent = content.join('');\n                actual = jsonStrippedContent.replace(/\\n/g, ' ').split(/\\s+/).filter(t => t !== '').length;\n            } else {\n                const text = control.value.replace(/[\\u200B-\\u200D\\uFEFF]/g, '').replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n                actual = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n            }\n\n            return actual < minWords ? { minWords: { minWords, actual } } : null;\n        }\n    };\n\n/**\n * @description\n * Validator that requires the number of words in the editor, out of HTML tags or JSON structure, to be less than or equal\n * to the provided maximum number.\n *\n * @usageNotes\n * Validate that the editor has a maximum of 10 words:\n *\n * ```typescript\n * const editor = new FormControl('ng angular reactive forms editor wysiwyg eui ec europa npm node', euiEditorMaxWords(10));\n * console.log(editor.errors); // { maxWords: { maxWords: 10, actual: 11 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxWords` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMaxWords =\n    (maxWords: number): ValidatorFn =>\n    (control: AbstractControl<string>): { maxWords: { maxWords: number; actual: number } } | null => {\n        const regex = /[\\s\\n]+/;\n        if (control.value) {\n            let actual = 0;\n            if (isJson(control.value)) {\n                const content = JSON.parse(control.value)\n                    .ops.filter((c: { insert: string }) => typeof c.insert === 'string')\n                    .map((c: { insert: string }) => c.insert);\n\n                const jsonStrippedContent = content.join('');\n                actual = jsonStrippedContent.replace(/\\n/g, ' ').split(/\\s+/).filter(t => t !== '').length;\n            } else {\n                const text = control.value.replace(/[\\u200B-\\u200D\\uFEFF]/g, '').replace(/<\\/(p|div|br|li|h[1-6])>/gi, ' ').replace(/<[^>]+>/g, '');\n                actual = !text ? 0 : text.trim().split(regex).filter(t => t !== '').length;\n            }\n\n            return actual > maxWords ? { maxWords: { maxWords, actual } } : null;\n        }\n    };\n\n/**\n * @description\n * Validator that requires the number of bytes in the editor, with HTML tags or JSON structure, to be greater than or equal\n * to the provided minimum number.\n *\n * @usageNotes\n * Validate that the editor has a minimum of 20 bytes:\n *\n * ```typescript\n * const editor = new FormControl('<p>europa.eu</p>', euiEditorMinBytes(20));\n * console.log(editor.errors); // { minBytes: { minBytes: 20, actual: 16 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minBytes` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMinBytes =\n    (minBytes: number): ValidatorFn =>\n    (control: AbstractControl): { minBytes: { minBytes: number; actual: number } } | null => {\n        if (control.value) {\n            let actual = 0;\n            const m = encodeURIComponent(control.value).match(/%[89ABab]/g);\n            actual = control.value.length + (m ? m.length : 0);\n\n            return actual < minBytes ? { minBytes: { minBytes, actual } } : null;\n        }\n    };\n\n/**\n * @description\n * Validator that requires the number of bytes in the editor, with HTML tags or JSON structure, to be less than or equal\n * to the provided minimum number.\n *\n * @usageNotes\n * Validate that the editor has a maximum of 20 bytes:\n *\n * ```typescript\n * const editor = new FormControl('<p>europa.eu site</p>', euiEditorMinBytes(20));\n * console.log(editor.errors); // { maxBytes: { maxBytes: 20, actual: 21 } }\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxBytes` if the validation check fails, otherwise `null`.\n */\nexport const euiEditorMaxBytes =\n    (maxBytes: number): ValidatorFn =>\n    (control: AbstractControl): { maxBytes: { maxBytes: number; actual: number } } | null => {\n        if (control.value) {\n            let actual = 0;\n            if (isJson(control.value)) {\n                actual = byteLength(control.value);\n            } else {\n                const m = encodeURIComponent(control.value).match(/%[89ABab]/g);\n                actual = control.value.length + (m ? m.length : 0);\n            }\n\n            return actual > maxBytes ? { maxBytes: { maxBytes, actual } } : null;\n        }\n    };\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EUI_DIALOG } from '@eui/components/eui-dialog';\nimport { EuiTooltipDirective } from '@eui/components/directives';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { QuillConfig, QuillModule } from '@eui/components/externals/quill';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\n\nimport { EuiEditorCountersComponent } from './counters/eui-editor-counters.component';\nimport { EuiEditorJsonViewComponent } from './json-view/eui-editor-json-view.component';\nimport { ClassFilterPipe, EuiEditorComponent, EuiEditorCustomToolbarTagDirective } from \"./eui-editor.component\";\nimport { EuiEditorImageDialogComponent } from './image-url-dialog/image-url-dialog.component';\nimport { EuiEditorMaxlengthDirective } from './directives/eui-editor-maxlength.directive';\n\n// In case of dynamic loading this will not be available at this stage.\n// Thus the config for BetterTable keyboardBindings needs to be set at a later\n// stage. Same as the registration.\nconst QuillBetterTable = window['quillBetterTable'];\n\nconst quillConfig: QuillConfig = {\n    modules: {\n        table: false,\n        'better-table': {\n            operationMenu: {\n                items: {\n                    unmergeCells: {\n                        text: 'Another unmerge cells name',\n                    },\n                },\n                color: {\n                    colors: [\n                        '#000000',\n                        '#e60000',\n                        '#ff9900',\n                        '#ffff00',\n                        '#008a00',\n                        '#0066cc',\n                        '#9933ff',\n                        '#ffffff',\n                        '#facccc',\n                        '#ffebcc',\n                        '#ffffcc',\n                        '#cce8cc',\n                        '#cce0f5',\n                        '#ebd6ff',\n                        '#bbbbbb',\n                        '#f06666',\n                        '#ffc266',\n                        '#ffff66',\n                        '#66b966',\n                        '#66a3e0',\n                        '#c285ff',\n                        '#888888',\n                        '#a10000',\n                        '#b26b00',\n                        '#b2b200',\n                        '#006100',\n                        '#0047b2',\n                        '#6b24b2',\n                        '#444444',\n                        '#5c0000',\n                        '#663d00',\n                        '#666600',\n                        '#003700',\n                        '#002966',\n                        '#3d1466',\n                    ],\n                    text: 'Background Colors',\n                },\n            },\n        },\n    },\n};\n\nif(QuillBetterTable) {\n    quillConfig.modules.keyboard = {\n        bindings: QuillBetterTable?.keyboardBindings,\n    };\n}\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        EuiTooltipDirective,\n        QuillModule.forRoot(quillConfig),\n        ...EUI_DIALOG,\n        ...EUI_ICON,\n        ...EUI_INPUT_TEXT,\n        EuiEditorComponent,\n        EuiEditorJsonViewComponent,\n        EuiEditorCountersComponent,\n        EuiEditorImageDialogComponent,\n        EuiEditorMaxlengthDirective,\n        EuiEditorCustomToolbarTagDirective,\n        ClassFilterPipe,\n    ],\n    exports: [EuiEditorComponent, EuiEditorMaxlengthDirective, EuiEditorCustomToolbarTagDirective, EuiEditorCountersComponent],\n})\nexport class EuiEditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["QuillType","QuillBetterTable","i2"],"mappings":"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"}