@eui/components 19.2.0-snapshot-1745313759588 → 19.2.0-snapshot-1745320402511
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.
- package/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +22 -154
- package/eui-badge/index.d.ts +1 -1
- package/eui-badge/index.d.ts.map +1 -1
- package/eui-block-content/index.d.ts +1 -1
- package/eui-block-content/index.d.ts.map +1 -1
- package/eui-block-document/index.d.ts +1 -1
- package/eui-block-document/index.d.ts.map +1 -1
- package/eui-button/index.d.ts +1 -1
- package/eui-button/index.d.ts.map +1 -1
- package/eui-button-group/index.d.ts +1 -1
- package/eui-button-group/index.d.ts.map +1 -1
- package/eui-dashboard-button/index.d.ts +2 -2
- package/eui-dashboard-button/index.d.ts.map +1 -1
- package/eui-dashboard-card/index.d.ts +2 -1
- package/eui-dashboard-card/index.d.ts.map +1 -1
- package/eui-disable-content/index.d.ts +1 -1
- package/eui-disable-content/index.d.ts.map +1 -1
- package/eui-feedback-message/index.d.ts +1 -1
- package/eui-feedback-message/index.d.ts.map +1 -1
- package/eui-fieldset/index.d.ts +2 -2
- package/eui-fieldset/index.d.ts.map +1 -1
- package/eui-icon-toggle/index.d.ts +1 -1
- package/eui-icon-toggle/index.d.ts.map +1 -1
- package/eui-input-checkbox/index.d.ts +1 -1
- package/eui-input-checkbox/index.d.ts.map +1 -1
- package/eui-input-number/index.d.ts +1 -1
- package/eui-input-number/index.d.ts.map +1 -1
- package/eui-input-radio/index.d.ts +1 -1
- package/eui-input-radio/index.d.ts.map +1 -1
- package/eui-input-text/index.d.ts +1 -1
- package/eui-input-text/index.d.ts.map +1 -1
- package/eui-label/index.d.ts +1 -1
- package/eui-label/index.d.ts.map +1 -1
- package/eui-progress-bar/index.d.ts +1 -1
- package/eui-progress-bar/index.d.ts.map +1 -1
- package/eui-progress-circle/index.d.ts +1 -1
- package/eui-progress-circle/index.d.ts.map +1 -1
- package/eui-sidebar-menu/index.d.ts +1 -1
- package/eui-sidebar-menu/index.d.ts.map +1 -1
- package/eui-skeleton/index.d.ts +1 -1
- package/eui-skeleton/index.d.ts.map +1 -1
- package/eui-slide-toggle/index.d.ts +1 -1
- package/eui-slide-toggle/index.d.ts.map +1 -1
- package/eui-tabs-v2/eui-tabs-v2.component.d.ts.map +1 -1
- package/eui-tabs-v2/index.d.ts +1 -1
- package/eui-tabs-v2/index.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-badge.mjs.map +1 -1
- package/fesm2022/eui-components-eui-block-content.mjs.map +1 -1
- package/fesm2022/eui-components-eui-block-document.mjs.map +1 -1
- package/fesm2022/eui-components-eui-button-group.mjs.map +1 -1
- package/fesm2022/eui-components-eui-button.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dashboard-button.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dashboard-card.mjs.map +1 -1
- package/fesm2022/eui-components-eui-disable-content.mjs.map +1 -1
- package/fesm2022/eui-components-eui-feedback-message.mjs.map +1 -1
- package/fesm2022/eui-components-eui-fieldset.mjs.map +1 -1
- package/fesm2022/eui-components-eui-icon-toggle.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-checkbox.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-number.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-radio.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-text.mjs.map +1 -1
- package/fesm2022/eui-components-eui-label.mjs.map +1 -1
- package/fesm2022/eui-components-eui-progress-bar.mjs.map +1 -1
- package/fesm2022/eui-components-eui-progress-circle.mjs.map +1 -1
- package/fesm2022/eui-components-eui-sidebar-menu.mjs.map +1 -1
- package/fesm2022/eui-components-eui-skeleton.mjs.map +1 -1
- package/fesm2022/eui-components-eui-slide-toggle.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tabs-v2.mjs.map +1 -1
- package/fesm2022/eui-components-externals-eui-editor.mjs +2 -2
- package/fesm2022/eui-components-externals-eui-editor.mjs.map +1 -1
- package/package.json +3 -3
@@ -1 +1 @@
|
|
1
|
-
{"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/json-view/eui-editor-json-view.component.ts","../../externals/eui-editor/html-view/eui-editor-html-view.component.ts","../../externals/eui-editor/html-view/eui-editor-html-view.component.html","../../externals/eui-editor/counters/eui-editor-counters.component.ts","../../externals/eui-editor/counters/eui-editor-counters.component.html","../../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 } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nimport { DIALOG_COMPONENT_CONFIG } from '@eui/components/eui-dialog';\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 standalone: false,\n})\nexport class EuiEditorImageDialogComponent implements OnInit, OnDestroy {\n public form: FormGroup;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(@Inject(DIALOG_COMPONENT_CONFIG) private config: EuiEditorImageDialogConfig) {}\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\" />\n</form>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\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 standalone: false,\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\n constructor(@Inject(ElementRef) private 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 { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor-html-view',\n templateUrl: './eui-editor-html-view.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorHtmlViewComponent implements OnChanges {\n @HostBinding('class') string = 'eui-editor__html-view';\n\n @Input() content = '';\n @Input() theme = 'snow';\n\n public innerHTML: SafeHtml = '';\n public themeClass = 'ql-snow';\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.content && changes.content?.currentValue) {\n this.innerHTML = this.sanitizer.bypassSecurityTrustHtml(changes.content.currentValue);\n } else {\n this.innerHTML = '';\n }\n }\n}\n","<div #editor class=\"ql-container\" [ngClass]=\"themeClass\">\n <div class=\"ql-editor\" [innerHTML]=\"innerHTML\"></div>\n</div>\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 standalone: false,\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","<button 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</button>\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} from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NgControl } from '@angular/forms';\nimport { ContentChange, QuillModules } from '@eui/components/externals/quill';\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';\n// eslint-disable-next-line prefer-const\nlet QuillBetterTable = window['quillBetterTable'];\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 standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n // TODO: Check to change the providing way. Provide with injector reference\n EuiDialogService,\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 ].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 @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\n constructor(private euiDialogService: EuiDialogService,\n private cdr: ChangeDetectorRef,\n private ngControl: NgControl,\n private loader: LoaderService) {\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 @HostListener('click')\n @HostListener('focusin')\n public enableEditorOnFocus(): void {\n if (this.isEnabledOnFocus && this.isReadOnly) {\n this.isReadOnly = false;\n }\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) {\n this.quill.focus();\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 public _onEditorChanged(event: EditorChangeSelection | ContentChange | Event): void {\n console.warn('onEditorChanged() event is DEPRECATED please use contentChange() event instead.');\n this.editorChange.emit(event as EditorChangeSelection);\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 this._onEditorChanged(event); // Sync with editor change event since it's duplicated event\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.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('&', '&');\n c = c.replace(' ', ' ');\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', standalone: false, })\nexport class EuiEditorCustomToolbarTagDirective {\n @HostBinding('class') elementClass = 'eui-editor-custom-toolbar';\n\n constructor(public elementRef: ElementRef) {}\n}\n/* eslint-enable */\n\n/**\n * Pipe to remove classes from the editor\n */\n@Pipe({ name: 'classFilter', standalone: false, })\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","<ng-container *ngIf=\"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 <quill-editor\n [ngStyle]=\"{display: isReadOnly ? 'none' : null}\"\n [id]=\"generatedId\"\n class=\"{{ class | classFilter }}\"\n [class.eui-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 (onEditorChanged)=\"_onEditorChanged($event)\"\n (onContentChanged)=\"_onContentChanged($event)\"\n (onSelectionChanged)=\"_onSelectionChanged($event)\"\n (onFocus)=\"_onFocus($event)\"\n (onBlur)=\"_onBlur($event)\">\n <div *ngIf=\"!euiEditorCustomToolbar\" quill-editor-toolbar class=\"eui-u-flex-gap-s\">\n <div\n *ngIf=\"toolbarConfig.headings\"\n class=\"ql-formats\"\n role=\"application\"\n aria-label=\"Select headings style\"\n euiTooltip=\"{{ toolbarConfig.headings.label }}\">\n <select class=\"ql-header\" [attr.aria-label]=\"toolbarConfig.headings.label\">\n <option value=\"{{ value }}\" *ngFor=\"let value of toolbarConfig.headings.options\">Heading {{ value }}</option>\n <option selected>Normal</option>\n </select>\n </div>\n <div\n *ngIf=\"toolbarConfig.font\"\n class=\"ql-formats\"\n role=\"application\"\n aria-label=\"Select font style\"\n euiTooltip=\"{{ toolbarConfig.font.label }}\">\n <select class=\"ql-font\" [attr.aria-label]=\"toolbarConfig.font.label\">\n <option selected>Sans Serif</option>\n <option value=\"serif\">Serif</option>\n <option value=\"monospace\">Monospace</option>\n </select>\n </div>\n <div *ngIf=\"toolbarConfig.bold || toolbarConfig.italic || toolbarConfig.underline || toolbarConfig.strike\" class=\"ql-formats\">\n <button\n *ngIf=\"toolbarConfig.bold\"\n class=\"ql-bold\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.bold.label\"\n euiTooltip=\"{{ toolbarConfig.bold.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.italic\"\n class=\"ql-italic\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.italic.label\"\n euiTooltip=\"{{ toolbarConfig.italic.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.underline\"\n class=\"ql-underline\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.underline.label\"\n euiTooltip=\"{{ toolbarConfig.underline.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.strike\"\n class=\"ql-strike\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.strike.label\"\n euiTooltip=\"{{ toolbarConfig.strike.label }}\">\n </button>\n </div>\n <div *ngIf=\"toolbarConfig.fontColor || toolbarConfig.fontBackground\" class=\"ql-formats\">\n <span *ngIf=\"toolbarConfig.fontColor\" euiTooltip=\"{{ toolbarConfig.fontColor.label }}\">\n <select class=\"ql-color\" [attr.aria-label]=\"toolbarConfig.fontColor.label\"></select>\n </span>\n <span *ngIf=\"toolbarConfig.fontBackground\" euiTooltip=\"{{ toolbarConfig.fontBackground.label }}\">\n <select class=\"ql-background\" [attr.aria-label]=\"toolbarConfig.fontBackground.label\"></select>\n </span>\n </div>\n <div *ngIf=\"toolbarConfig.subscript || toolbarConfig.superscript\" class=\"ql-formats\">\n <button\n *ngIf=\"toolbarConfig.subscript\"\n class=\"ql-script\"\n value=\"sub\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.subscript.label\"\n euiTooltip=\"{{ toolbarConfig.subscript.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.superscript\"\n class=\"ql-script\"\n value=\"super\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.superscript.label\"\n euiTooltip=\"{{ toolbarConfig.superscript.label }}\">\n </button>\n </div>\n <div *ngIf=\"toolbarConfig.textAlign\" class=\"ql-formats\">\n <span euiTooltip=\"{{ toolbarConfig.textAlign.label }}\">\n <select class=\"ql-align\" [attr.aria-label]=\"toolbarConfig.textAlign.label\">\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 <div\n *ngIf=\"toolbarConfig.orderedList || toolbarConfig.bulletList || toolbarConfig.indentLess || toolbarConfig.indentMore\"\n class=\"ql-formats\">\n <button\n *ngIf=\"toolbarConfig.orderedList\"\n class=\"ql-list\"\n value=\"ordered\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.orderedList.label\"\n euiTooltip=\"{{ toolbarConfig.orderedList.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.bulletList\"\n class=\"ql-list\"\n value=\"bullet\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.bulletList.label\"\n euiTooltip=\"{{ toolbarConfig.bulletList.label }}\">\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.indentLess\"\n class=\"ql-indent\"\n value=\"-1\"\n [attr.aria-label]=\"toolbarConfig.indentLess.label\"\n euiTooltip=\"{{ toolbarConfig.indentLess.label }}\">\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.indentMore\"\n class=\"ql-indent\"\n value=\"+1\"\n [attr.aria-label]=\"toolbarConfig.indentMore.label\"\n euiTooltip=\"{{ toolbarConfig.indentMore.label }}\">\n </button>\n </div>\n <div\n *ngIf=\"\n toolbarConfig.blockquote ||\n toolbarConfig.codeBlock ||\n toolbarConfig.link ||\n toolbarConfig.image ||\n toolbarConfig.imageUrl ||\n toolbarConfig.video ||\n toolbarConfig.table\n \"\n class=\"ql-formats\">\n <button\n *ngIf=\"toolbarConfig.blockquote\"\n class=\"ql-blockquote\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.blockquote.label\"\n euiTooltip=\"{{ toolbarConfig.blockquote.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.codeBlock\"\n class=\"ql-code-block\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.codeBlock.label\"\n euiTooltip=\"{{ toolbarConfig.codeBlock.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.link\"\n class=\"ql-link\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.link.label\"\n euiTooltip=\"{{ toolbarConfig.link.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.image\"\n class=\"ql-image\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.image.label\"\n euiTooltip=\"{{ toolbarConfig.image.label }}\">\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.imageUrl\"\n [attr.aria-label]=\"toolbarConfig.imageUrl.label\"\n euiTooltip=\"{{ toolbarConfig.imageUrl.label }}\"\n (click)=\"imageUrlHandler()\">\n <eui-icon-svg icon=\"eui-ecl-image\" size=\"s\"></eui-icon-svg>\n </button>\n <button\n *ngIf=\"toolbarConfig.video\"\n class=\"ql-video\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.video.label\"\n euiTooltip=\"{{ toolbarConfig.video.label }}\">\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.table\"\n [attr.aria-label]=\"toolbarConfig.table.label\"\n euiTooltip=\"{{ toolbarConfig.table.label }}\"\n (click)=\"insertTable()\">\n <eui-icon-svg icon=\"eui-ecl-spreadsheet\" size=\"s\"></eui-icon-svg>\n </button>\n </div>\n <div *ngIf=\"toolbarConfig.clean || toolbarConfig.delete\" class=\"ql-formats\">\n <button\n *ngIf=\"toolbarConfig.clean\"\n class=\"ql-clean\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.clean.label\"\n euiTooltip=\"{{ toolbarConfig.clean.label }}\">\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.delete\"\n [attr.aria-label]=\"toolbarConfig.delete.label\"\n euiTooltip=\"{{ toolbarConfig.delete.label }}\"\n (click)=\"editorDeleteContent()\">\n <eui-icon-svg icon=\"eui-ecl-trash\" size=\"s\"></eui-icon-svg>\n </button>\n </div>\n <div *ngIf=\"toolbarConfig.undo || toolbarConfig.redo\" class=\"ql-formats\">\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.undo\"\n [attr.aria-label]=\"toolbarConfig.undo.label\"\n euiTooltip=\"{{ toolbarConfig.undo.label }}\"\n (click)=\"editorUndo()\">\n <eui-icon-svg icon=\"arrow-undo:outline\" size=\"s\"></eui-icon-svg>\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.redo\"\n [attr.aria-label]=\"toolbarConfig.redo.label\"\n euiTooltip=\"{{ toolbarConfig.redo.label }}\"\n (click)=\"editorRedo()\">\n <eui-icon-svg icon=\"arrow-redo:outline\" size=\"s\"></eui-icon-svg>\n </button>\n </div>\n <div *ngIf=\"toolbarConfig.counters\" 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 [attr.aria-label]=\"toolbarConfig.counters.label\"\n role=\"button\"\n euiTooltip=\"{{ toolbarConfig.counters.label }}\">\n </eui-editor-counters>\n </div>\n </div>\n <div *ngIf=\"euiEditorCustomToolbar\" quill-editor-toolbar class=\"ql-toolbar ql-snow\">\n <ng-content select=\"euiEditorCustomToolbar\"></ng-content>\n </div>\n </quill-editor>\n \n <!-- READONLY MODE -->\n @if (isReadOnly && format === 'html') {\n <eui-editor-html-view\n [content]=\"value\"\n [theme]=\"theme\" />\n }\n @if (isReadOnly && format === 'json') {\n <eui-editor-json-view \n [content]=\"jsonToHtmlContent\"\n [theme]=\"theme\" />\n }\n</ng-container>\n","import { Directive, ElementRef, Input, AfterContentInit, OnDestroy, Self, OnChanges, SimpleChanges, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { coerceBooleanProperty, coerceNumberProperty, BooleanInput, NumberInput } from '@angular/cdk/coercion';\n\n@Directive({\n /* eslint-disable-next-line */\n selector: '[formControlName][euiEditorMaxlength]',\n standalone: false,\n})\nexport class EuiEditorMaxlengthDirective implements AfterContentInit, OnDestroy, OnChanges {\n @Input() format: 'html' | 'json' = 'html';\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 @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\n constructor(private el: ElementRef, private renderer: Renderer2, @Self() private control: NgControl) {}\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 { EuiDialogModule } from '@eui/components/eui-dialog';\nimport { EuiTooltipDirectiveModule } from '@eui/components/directives';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { QuillConfig, QuillModule } from '@eui/components/externals/quill';\nimport { EuiInputTextModule } from '@eui/components/eui-input-text';\n\nimport { EuiEditorCountersComponent } from './counters/eui-editor-counters.component';\nimport { EuiEditorHtmlViewComponent } from './html-view/eui-editor-html-view.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 EuiTooltipDirectiveModule,\n QuillModule.forRoot(quillConfig),\n EuiDialogModule,\n EuiIconModule,\n EuiInputTextModule,\n ],\n declarations: [\n EuiEditorComponent,\n EuiEditorJsonViewComponent,\n EuiEditorHtmlViewComponent,\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","i1","i2","QuillBetterTable","i7.EuiEditorJsonViewComponent","i8.EuiEditorHtmlViewComponent","i9.EuiEditorCountersComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,YAAY,GAAG,CAAC,OAAwB,KAAkC;AAC5E,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS;AACvD,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU;AAEzD,IAAA,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI;AAC7D,CAAC;MAUY,6BAA6B,CAAA;AAKtC,IAAA,WAAA,CAAqD,MAAkC,EAAA;QAAlC,IAAM,CAAA,MAAA,GAAN,MAAM;AAFnD,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW;;IAI3D,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AACtB,YAAA,GAAG,EAAE,IAAI,WAAW,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACxE,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACjE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5C,SAAC,CAAC;;IAGN,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;;AAnBtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,kBAKlB,uBAAuB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AALlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,yECtB1C,4FAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDmBa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;iCAEM,KAAK,EAAA,QAAA,EAAA,4FAAA,EAAA;;0BAOJ,MAAM;2BAAC,uBAAuB;;;AEd/C,MAAMA,WAAS,GAAQ,MAAM,CAAC,OAAO,CAAC;MAUzB,0BAA0B,CAAA;AAQnC,IAAA,WAAA,CAAwC,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;QAP5B,IAAM,CAAA,MAAA,GAAG,uBAAuB;QAC7C,IAAK,CAAA,KAAA,GAAG,MAAM;AAQvB,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,WAA6B,EAAE,KAAa,KAAU;YACjE,IAAI,OAAO,GAAQ,KAAK;AACxB,YAAA,IAAI;AACA,gBAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;YAC7B,OAAO,CAAC,EAAE;AACR,gBAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;;AAErC,YAAA,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC;AACrC,SAAC;;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE;AAC7D,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;;;IAIxE,eAAe,GAAA;QACX,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,YAAY,EAAE,gCAAgC,CAAC;AAEhG,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC;AAErF,QAAA,MAAM,KAAK,GAAQ,MAAM,CAAC,OAAO,CAAC;QAElC,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1C,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAC3B,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,KAAK,EAAE,MAAM;AAChB,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC;;;AA3C/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAQf,UAAU,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AARrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,wMALzB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKH,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,UAAU,EAAE,KAAK;oBACjB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAClD,iBAAA;;0BASgB,MAAM;2BAAC,UAAU;yCAPR,MAAM,EAAA,CAAA;sBAA3B,WAAW;uBAAC,OAAO;gBACX,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;MCfQ,0BAA0B,CAAA;AASnC,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;QARP,IAAM,CAAA,MAAA,GAAG,uBAAuB;QAE7C,IAAO,CAAA,OAAA,GAAG,EAAE;QACZ,IAAK,CAAA,KAAA,GAAG,MAAM;QAEhB,IAAS,CAAA,SAAA,GAAa,EAAE;QACxB,IAAU,CAAA,UAAA,GAAG,SAAS;;AAI7B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE;AAC7D,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;;aAClF;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;;8GAflB,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,wMCXvC,wIAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDQa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;+BAEI,sBAAsB,EAAA,aAAA,EAEjB,iBAAiB,CAAC,IAAI,cACzB,KAAK,EAAA,eAAA,EACA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wIAAA,EAAA;mFAGzB,MAAM,EAAA,CAAA;sBAA3B,WAAW;uBAAC,OAAO;gBAEX,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;MELQ,0BAA0B,CAAA;AARvC,IAAA,WAAA,GAAA;QAUa,IAAe,CAAA,eAAA,GAAG,YAAY;QAE9B,IAAU,CAAA,UAAA,GAAG,OAAO;QACW,IAAgB,CAAA,gBAAA,GAAG,IAAI;QACvB,IAAoB,CAAA,oBAAA,GAAG,IAAI;QAC3B,IAAe,CAAA,eAAA,GAAG,IAAI;AACjE;8GARY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,iQAKf,gBAAgB,CAAA,EAAA,oBAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EAChB,gBAAgB,CAChB,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,gBAAgB,6BCjBxC,6jBAcA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDJa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;+BAEI,qBAAqB,EAAA,aAAA,EAEhB,iBAAiB,CAAC,IAAI,cACzB,KAAK,EAAA,eAAA,EACA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6jBAAA,EAAA;8BAGtC,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACuC,gBAAgB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,oBAAoB,EAAA,CAAA;sBAA3D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACE,eAAe,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;AEO1C;AACA,MAAM,SAAS,GAAQ,MAAM,CAAC,OAAO,CAAC;AAStC;AACA,IAAIC,kBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;MAepC,kBAAkB,CAAA;AAC3B,IAAA,IACI,KAAK,GAAA;QACL,OAAO;YACH,YAAY;YACZ,IAAI,CAAC,UAAU,GAAG,sBAAsB,GAAG,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,GAAE,mBAAmB;YACvD,CAAC,IAAI,CAAC,UAAU,GAAG,oBAAoB,GAAG,EAAE;AAC/C,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;;AA6BtB,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,IAAI;;AAkB9C,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;;IAE3B,IAAI,UAAU,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAGnD,IAAA,IACI,YAAY,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa;;IAE7B,IAAI,YAAY,CAAC,KAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAGrD,IAAA,IACI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB;;IAEjC,IAAI,gBAAgB,CAAC,KAAK,EAAA;AACtB,QAAA,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAGzD,IAAA,IACI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB;;IAEjC,IAAI,gBAAgB,CAAC,KAAmB,EAAA;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAIzD,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU;;IAE1B,IAAI,SAAS,CAAC,KAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AA2DlD,IAAA,WAAA,CAAoB,gBAAkC,EAClC,GAAsB,EACtB,SAAoB,EACpB,MAAqB,EAAA;QAHrB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAM,CAAA,MAAA,GAAN,MAAM;QAnJjB,IAAO,CAAA,OAAA,GAAG,YAAY;QAEtB,IAAW,CAAA,WAAA,GAAG,EAAE;QAChB,IAAM,CAAA,MAAA,GAAoB,MAAM;QAChC,IAAK,CAAA,KAAA,GAAsB,MAAM;QACjC,IAAK,CAAA,KAAA,GAAqC,KAAK;QAC/C,IAAqB,CAAA,qBAAA,GAAqB,KAAK;QAE/C,IAAQ,CAAA,QAAA,GAAG,GAAG;;AAQb,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAoB;AACnD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAyC;AACxE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAiB;AACjD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAmB;AACrD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAS;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ;AAC/B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAU;AAClD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;QAShD,IAAK,CAAA,KAAA,GAAiB,EAAE;QACxB,IAAe,CAAA,eAAA,GAAG,CAAC;QACnB,IAAU,CAAA,UAAA,GAAG,CAAC;QACd,IAAU,CAAA,UAAA,GAAG,CAAC;QACd,IAAS,CAAA,SAAA,GAAG,KAAK;AAEjB,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE;QAGzC,IAAa,CAAA,aAAA,GAAY,KAAK;QAahC,IAAW,CAAA,WAAA,GAAG,KAAK;QAQnB,IAAa,CAAA,aAAA,GAAG,IAAI;QAQpB,IAAiB,CAAA,iBAAA,GAAG,KAAK;QAQzB,IAAiB,CAAA,iBAAA,GAAG,KAAK;QASzB,IAAU,CAAA,UAAA,GAAG,KAAK;AAGlB,QAAA,IAAA,CAAA,oBAAoB,GAAwB;YAChD,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB,EAAE,IAAI,EAAE,MAAM,EAAE;YAChB,EAAE,IAAI,EAAE,QAAQ,EAAE;YAClB,EAAE,IAAI,EAAE,WAAW,EAAE;YACrB,EAAE,IAAI,EAAE,WAAW,EAAE;YACrB,EAAE,IAAI,EAAE,WAAW,EAAE;YACrB,EAAE,IAAI,EAAE,MAAM,EAAE;YAChB,EAAE,IAAI,EAAE,OAAO,EAAE;YACjB,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB,EAAE,IAAI,EAAE,OAAO,EAAE;YACjB,EAAE,IAAI,EAAE,QAAQ,EAAE;YAClB,EAAE,IAAI,EAAE,MAAM,EAAE;YAChB,EAAE,IAAI,EAAE,MAAM,EAAE;YAChB,EAAE,IAAI,EAAE,UAAU,EAAE;SACvB;AACO,QAAA,IAAA,CAAA,oBAAoB,GAAwB;YAChD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,6DAA6D,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACvH,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,EAAE;AACtD,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,+CAA+C,EAAE;AACxE,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,iDAAiD,EAAE;AAC5E,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,oDAAoD,EAAE;AAClF,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gEAAgE,EAAE;AAC3F,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,oCAAoC,EAAE;AAClE,YAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,oDAAoD,EAAE;AACvF,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,2DAA2D,EAAE;AACzF,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,+DAA+D,EAAE;AAC/F,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,gGAAgG,EAAE;AAC9H,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,mCAAmC,EAAE;AACnE,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iCAAiC,EAAE;AAChE,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,8DAA8D,EAAE;AAC7F,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,8DAA8D,EAAE;AAC7F,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,yDAAyD,EAAE;AACxF,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,oEAAoE,EAAE;AAClG,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,sGAAsG,EAAE;AAC/H,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,+CAA+C,EAAE;YACzE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,8DAA8D,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAClI,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,2CAA2C,EAAE;AACrE,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,6CAA6C,EAAE;AACvE,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,wDAAwD,EAAE;AAClF,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,wDAAwD,EAAE;AACnF,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,+CAA+C,EAAE;AACxE,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oDAAoD,EAAE;AAC7E,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,0DAA0D;AACjE,gBAAA,OAAO,EAAE;AACL,oBAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC3C,oBAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AACpC,iBAAA;AACJ,aAAA;SACJ;AACO,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAW;AAqLjC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC;AA2FxB,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,GAAG;AAExB,QAAA,IAAA,CAAA,OAAO,GAAQ,MAAK,GAAG;AA5Q3B,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;;AAGvC,IAAA,WAAW,CAAC,CAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE;AAC7B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAI1C,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC;YACzB,QAAQ,EAAE,MAAK;AACX,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,gBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACvH,oBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,KAAK,OAAO;AACvC,iBAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE;AAE3G,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBACrD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;wBACpC,IAAI,CAAC,aAAa,GAAG;4BACjB,GAAG,IAAI,CAAC,aAAa;4BACrB,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE;yBACnF;AACL,qBAAC,CAAC;;gBAGN,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBACpD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACnC,wBAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACjG,wBAAA,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;AACvG,wBAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa;AAErH,wBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;AACvB,4BAAA,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;gCACZ,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO;;iCACvE;gCACH,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AAC/B,oCAAA,MAAM,WAAW,GAAG,MAAM,CAAC;0CACrB,MAAM,CAAC;0CACP,IAAI,CAAC;6CACF,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,UAAU;AACrC,6CAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;oCAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;AACpD,iCAAC,CAAC;;;wBAIV,IAAI,CAAC,aAAa,GAAG;4BACjB,GAAG,IAAI,CAAC,aAAa;AACrB,4BAAA,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;yBACjD;AACL,qBAAC,CAAC;;AAGN,gBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACvB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACpC,wBAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACjG,wBAAA,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;AACzG,wBAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa;wBAErH,IAAI,CAAC,aAAa,GAAG;4BACjB,GAAG,IAAI,CAAC,aAAa;AACrB,4BAAA,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;yBACjD;AACL,qBAAC,CAAC;;AAEN,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAE9B,SAAA,CAAC;;IAGN,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;;IAKxB,mBAAmB,GAAA;QACtB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU,EAAE;AAC1C,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;;IAIxB,eAAe,GAAA;QAClB,IAAI,kBAAkB,GAAc,IAAI;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAC5B,IAAI,eAAe,CAAC;AAChB,YAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa;AAChD,YAAA,qBAAqB,EAAE,IAAI;AAC3B,YAAA,aAAa,EAAE;AACX,gBAAA,SAAS,EAAE,6BAA6B;AACxC,gBAAA,MAAM,EAAE;AACJ,oBAAA,iBAAiB,EAAE,CAAC,IAAe,KAAU;wBACzC,kBAAkB,GAAG,IAAI;qBAC5B;AACJ,iBAAA;AACJ,aAAA;YACD,MAAM,EAAE,MAAW;AACf,gBAAA,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAChD,oBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AAEnC,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;oBAClE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC;;aAEhG;AACJ,SAAA,CAAC,CACL;;IAGE,UAAU,GAAA;QACb,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;;IAGzB,UAAU,GAAA;QACb,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;;IAGzB,mBAAmB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;AAC/B,YAAA,KAAK,EAAE,gBAAgB;AACvB,YAAA,OAAO,EAAE,0DAA0D;AACnE,YAAA,cAAc,EAAE,KAAK;YACrB,MAAM,EAAE,MAAW;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;aAC/B;AACJ,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;;IAGrC,WAAW,GAAA;QACd,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGtC,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC;AACR,cAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW;AACjF,cAAE,IAAI,CAAC,aAAa,CAAC,KAAK;;AAG3B,IAAA,gBAAgB,CAAC,KAAuB,EAAA;AAC3C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;;AAGtB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAe,EAAE,CAAC;AAC1E,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;;AAGjC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAGlD,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,OAAgB,EAAE,KAAY,KAAK,IAAI,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7F,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,OAAgB,EAAE,KAAY,KAAK,IAAI,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;;AAGrG,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG1B,IAAA,gBAAgB,CAAC,KAAoD,EAAA;AACxE,QAAA,OAAO,CAAC,IAAI,CAAC,iFAAiF,CAAC;AAC/F,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAA8B,CAAC;;AAKnD,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAe,CAAC;;AAE5C,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;;;AAGpE,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACrB,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;AAClC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAE5E,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;;;iBAEtC;AACH,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;;AAE3B,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;;;;QAI/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;;AAG1B,IAAA,mBAAmB,CAAC,KAAsB,EAAA;AAC7C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG7B,IAAA,QAAQ,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGnB,IAAA,OAAO,CAAC,KAAW,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGlB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGf,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGd,IAAA,UAAU,CAAC,KAAa,EAAA;;AAE3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK;;AAGnC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEZ,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAe,EAAE,CAAC;AAC1E,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACxD,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;;YAGjC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACtC,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;;AAIjE,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;;YAGlC,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAChC,aAAC,CAAC;;;AAIV,IAAA,IAAY,WAAW,GAAA;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC;;AAOvC,IAAA,kBAAkB,CAAC,OAAe,EAAA;QACtC,IAAI,CAAC,GAAG,OAAO;QACf,IAAI,CAAC,EAAE;YACH,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;YAC3B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;;AAGhC,QAAA,OAAO,CAAC;;AAGZ,IAAA,IAAI,oBAAoB,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;;AAGnF,IAAA,IAAI,sBAAsB,GAAA;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,KAAK;;AAG1F,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;;AAG9E,IAAA,IAAI,iBAAiB,GAAA;QACjB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK;;AAG7E,IAAA,iBAAiB,CAAC,OAAe,EAAA;AACrC,QAAA,IAAI,IAAY;QAChB,MAAM,KAAK,GAAG,SAAS;AAEvB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACxB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,gBAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAC9B,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM;AAElC,gBAAA,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACjF,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;iBAChF;AACH,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC;AACxB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;;;AAI3B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE;AACvB,gBAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAChD,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM;gBAElC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACnG,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;iBAChF;AACH,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC;AACxB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;;;QAI3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGvC,IAAA,SAAS,CAAC,OAAe,EAAA;QAC7B,MAAM,KAAK,GAAG,eAAe;QAC7B,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnD,OAAO,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;;AAGzD,IAAA,SAAS,CAAC,OAAe,EAAA;QAC7B,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACxD,OAAO,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;;8GAlfxD,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EALhB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;;YAEP,gBAAgB;AACnB,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAwD8B,kCAAkC,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxGrE,u/aA4RA,EAAA,MAAA,EAAA,CAAA,g6nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAE,0BAAA,CAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAC,0BAAA,CAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAC,0BAAA,CAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MDyRa,eAAe,CAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAngBf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;+BAEI,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;;wBAEP,gBAAgB;AACnB,qBAAA,EAAA,QAAA,EAAA,u/aAAA,EAAA,MAAA,EAAA,CAAA,g6nBAAA,CAAA,EAAA;2KAIG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,OAAO;gBASX,OAAO,EAAA,CAAA;sBAAf;gBACQ,EAAE,EAAA,CAAA;sBAAV;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAEQ,QAAQ,EAAA,CAAA;sBADhB,WAAW;uBAAC,eAAe;;sBAC3B;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAEQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAEQ,MAAM,EAAA,CAAA;sBADd,WAAW;uBAAC,cAAc;;sBAC1B;gBAES,YAAY,EAAA,CAAA;sBAArB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,KAAK,EAAA,CAAA;sBAAd;gBACS,IAAI,EAAA,CAAA;sBAAb;gBACS,qBAAqB,EAAA,CAAA;sBAA9B;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBAEgC,IAAI,EAAA,CAAA;sBAApC,WAAW;uBAAC,kBAAkB;gBAG3B,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,eAAe;gBAkB5B,sBAAsB,EAAA,CAAA;sBADrB,YAAY;uBAAC,UAAU,CAAC,MAAM,kCAAkC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAIjF,UAAU,EAAA,CAAA;sBADb;gBASG,YAAY,EAAA,CAAA;sBADf;gBASG,gBAAgB,EAAA,CAAA;sBADnB;gBASG,gBAAgB,EAAA,CAAA;sBADnB;gBAUG,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,mBAAmB;gBAqJzB,mBAAmB,EAAA,CAAA;sBAFzB,YAAY;uBAAC,OAAO;;sBACpB,YAAY;uBAAC,SAAS;;AAwQ3B;MAEa,kCAAkC,CAAA;AAG3C,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;QAFP,IAAY,CAAA,YAAA,GAAG,2BAA2B;;8GADvD,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,wBAAwB,EAAE,UAAU,EAAE,KAAK,GAAG;+EAE3C,YAAY,EAAA,CAAA;sBAAjC,WAAW;uBAAC,OAAO;;AAIxB;AAEA;;AAEG;MAEU,eAAe,CAAA;AACxB,IAAA,SAAS,CAAC,KAAa,EAAA;AACnB,QAAA,OAAO;AACF,aAAA,OAAO,CAAC,qBAAqB,EAAE,EAAE;AACjC,aAAA,OAAO,CAAC,uBAAuB,EAAE,EAAE;AACnC,aAAA,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;;8GALjC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,GAAG;;;ME1iBpC,2BAA2B,CAAA;AAEpC,IAAA,IACI,kBAAkB,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB;;IAEnC,IAAI,kBAAkB,CAAC,KAAkB,EAAA;AACrC,QAAA,IAAI,CAAC,mBAAmB,GAAG,oBAAoB,CAAC,KAAK,CAAC;;AAG1D,IAAA,IACI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB;;IAEhC,IAAI,eAAe,CAAC,KAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAQxD,IAAA,WAAA,CAAoB,EAAc,EAAU,QAAmB,EAAkB,OAAkB,EAAA;QAA/E,IAAE,CAAA,EAAA,GAAF,EAAE;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAA6B,IAAO,CAAA,OAAA,GAAP,OAAO;QAtB/E,IAAM,CAAA,MAAA,GAAoB,MAAM;QAgBjC,IAAgB,CAAA,gBAAA,GAAG,IAAI;;AAQ/B,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAClD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,YAAY,EAAE;;iBAChB;gBACH,IAAI,CAAC,mBAAmB,EAAE;;;;IAKtC,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,YAAY,EAAE;;AAGvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;gBACrE,IAAI,CAAC,YAAY,EAAE;AACvB,aAAC,CAAC;;;IAIV,WAAW,GAAA;QACP,IAAI,CAAC,mBAAmB,EAAE;AAE1B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AAC/B,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE;;;IAI3C,YAAY,GAAA;QAChB,IAAI,WAAW,GAAG,CAAC;QACnB,IAAI,eAAe,GAAG,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACxB,MAAM,KAAK,GAAG,eAAe;YAC7B,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE;AAC3F,YAAA,WAAW,GAAG,mBAAmB,CAAC,MAAM;AACxC,YAAA,eAAe,GAAG,IAAI,CAAC,kBAAkB,GAAG,WAAW;;aACpD;AACH,YAAA,MAAM,OAAO,GACT,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK;kBACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;AACxB,qBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAyC,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;AACtF,qBAAA,GAAG,CAAC,CAAC,CAAyC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACrF,kBAAE,CAAC,EAAE,CAAC;YAEd,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,YAAA,WAAW,GAAG,mBAAmB,CAAC,MAAM;AACxC,YAAA,eAAe,GAAG,IAAI,CAAC,kBAAkB,GAAG,WAAW;;QAG3D,IAAI,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;YAC3C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AACzC,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,GAAG;;aAC/B;YACH,IAAI,eAAe,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5C,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAG,WAAW,EAAE,QAAQ,EAAE;gBACjF,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;;;;IAKhD,kBAAkB,GAAA;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;AAE/F,QAAA,MAAM,aAAa,GAAgB,IAAI,CAAC,EAAE,CAAC,aAAa;AACxD,QAAA,IAAI,aAAa,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC;AACtD,YAAA,MAAM,MAAM,GAAS,aAAa,CAAC,UAAU;YAC7C,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC;gBAC/D,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;gBAChD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;AACtD,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC;;;;IAK/D,mBAAmB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;;AAGnF,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,MAAM,MAAM,GAAS,IAAI,CAAC,OAAO,CAAC,UAAU;AAC5C,YAAA,MAAM,aAAa,GAAgB,IAAI,CAAC,EAAE,CAAC,aAAa;YACxD,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;;;8GAtHlE,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;0BAwBqE;yCAtBzD,MAAM,EAAA,CAAA;sBAAd;gBAEG,kBAAkB,EAAA,CAAA;sBADrB;gBASG,eAAe,EAAA,CAAA;sBADlB;;;AClBL,MAAM,MAAM,GAAG,CAAC,KAAa,KAAa;AACtC,IAAA,IAAI;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;IACnB,OAAO,CAAC,EAAE;AACR,QAAA,OAAO,KAAK;;AAEhB,IAAA,OAAO,IAAI;AACf,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,KAAa,KAAY;;AAEzC,IAAA,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM;AACpB,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE;AAC9B,YAAA,CAAC,EAAE;;aACA,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE;YACvC,CAAC,IAAI,CAAC;;QAEV,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;AAClC,YAAA,CAAC,EAAE;;;AAGX,IAAA,OAAO,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;;AAeG;AACI,MAAM,kBAAkB,GAC3B,CAAC,SAAiB,KAClB,CAAC,OAAwB,KAAiE;AACtF,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AACnC,iBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAyC,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;AACtF,iBAAA,GAAG,CAAC,CAAC,CAAyC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEpF,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,YAAA,MAAM,GAAG,mBAAmB,CAAC,MAAM;;aAChC;YACH,MAAM,KAAK,GAAG,eAAe;AAC7B,YAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC5D,YAAA,MAAM,GAAG,mBAAmB,CAAC,MAAM;;AAGvC,QAAA,OAAO,MAAM,GAAG,SAAS,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE/E;AAEJ;;;;;;;;;;;;;;;AAeG;AACI,MAAM,kBAAkB,GAC3B,CAAC,SAAiB,KAClB,CAAC,OAAwB,KAAiE;AACtF,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AACnC,iBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAyC,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;AACtF,iBAAA,GAAG,CAAC,CAAC,CAAyC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEpF,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,YAAA,MAAM,GAAG,mBAAmB,CAAC,MAAM;;aAChC;YACH,MAAM,KAAK,GAAG,eAAe;AAC7B,YAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC5D,YAAA,MAAM,GAAG,mBAAmB,CAAC,MAAM;;AAGvC,QAAA,OAAO,MAAM,GAAG,SAAS,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE/E;AAEJ;;;;;;;;;;;;;;;AAeG;AACI,MAAM,iBAAiB,GAC1B,CAAC,QAAgB,KACjB,CAAC,OAAgC,KAA+D;IAC5F,MAAM,KAAK,GAAG,SAAS;AACvB,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AACnC,iBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAqB,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;iBAClE,GAAG,CAAC,CAAC,CAAqB,KAAK,CAAC,CAAC,MAAM,CAAC;YAE7C,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;aACvF;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACnI,YAAA,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;AAG9E,QAAA,OAAO,MAAM,GAAG,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE5E;AAEJ;;;;;;;;;;;;;;;AAeG;AACI,MAAM,iBAAiB,GAC1B,CAAC,QAAgB,KACjB,CAAC,OAAgC,KAA+D;IAC5F,MAAM,KAAK,GAAG,SAAS;AACvB,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AACnC,iBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAqB,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;iBAClE,GAAG,CAAC,CAAC,CAAqB,KAAK,CAAC,CAAC,MAAM,CAAC;YAE7C,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;aACvF;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACnI,YAAA,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;;AAG9E,QAAA,OAAO,MAAM,GAAG,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE5E;AAEJ;;;;;;;;;;;;;;;AAeG;AACI,MAAM,iBAAiB,GAC1B,CAAC,QAAgB,KACjB,CAAC,OAAwB,KAA+D;AACpF,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,MAAM,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QAC/D,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAElD,QAAA,OAAO,MAAM,GAAG,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE5E;AAEJ;;;;;;;;;;;;;;;AAeG;AACI,MAAM,iBAAiB,GAC1B,CAAC,QAAgB,KACjB,CAAC,OAAwB,KAA+D;AACpF,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;;aAC/B;AACH,YAAA,MAAM,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;YAC/D,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;;AAGtD,QAAA,OAAO,MAAM,GAAG,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;;AAE5E;;AC9NJ;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEnD,MAAM,WAAW,GAAgB;AAC7B,IAAA,OAAO,EAAE;AACL,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,cAAc,EAAE;AACZ,YAAA,aAAa,EAAE;AACX,gBAAA,KAAK,EAAE;AACH,oBAAA,YAAY,EAAE;AACV,wBAAA,IAAI,EAAE,4BAA4B;AACrC,qBAAA;AACJ,iBAAA;AACD,gBAAA,KAAK,EAAE;AACH,oBAAA,MAAM,EAAE;wBACJ,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,SAAS;AACZ,qBAAA;AACD,oBAAA,IAAI,EAAE,mBAAmB;AAC5B,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;CACJ;AAED,IAAG,gBAAgB,EAAE;AACjB,IAAA,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG;QAC3B,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB;KAC/C;AACL;MAyBa,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAXpB,kBAAkB;YAClB,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,6BAA6B;YAC7B,2BAA2B;YAC3B,kCAAkC;AAClC,YAAA,eAAe,aAjBf,YAAY;YACZ,WAAW;YACX,mBAAmB;AACnB,YAAA,yBAAyB,kBAEzB,eAAe;YACf,aAAa;AACb,YAAA,kBAAkB,aAYZ,kBAAkB,EAAE,2BAA2B,EAAE,kCAAkC,EAAE,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAEhH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YArBpB,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,yBAAyB;AACzB,YAAA,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC;YAChC,eAAe;YACf,aAAa;YACb,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAcb,eAAe,EAAA,UAAA,EAAA,CAAA;kBAvB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,yBAAyB;AACzB,wBAAA,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC;wBAChC,eAAe;wBACf,aAAa;wBACb,kBAAkB;AACrB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,kBAAkB;wBAClB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,0BAA0B;wBAC1B,6BAA6B;wBAC7B,2BAA2B;wBAC3B,kCAAkC;wBAClC,eAAe;AAClB,qBAAA;oBACD,OAAO,EAAE,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,kCAAkC,EAAE,0BAA0B,CAAC;AAC7H,iBAAA;;;ACxGD;;AAEG;;;;"}
|
1
|
+
{"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/json-view/eui-editor-json-view.component.ts","../../externals/eui-editor/html-view/eui-editor-html-view.component.ts","../../externals/eui-editor/html-view/eui-editor-html-view.component.html","../../externals/eui-editor/counters/eui-editor-counters.component.ts","../../externals/eui-editor/counters/eui-editor-counters.component.html","../../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 } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nimport { DIALOG_COMPONENT_CONFIG } from '@eui/components/eui-dialog';\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 standalone: false,\n})\nexport class EuiEditorImageDialogComponent implements OnInit, OnDestroy {\n public form: FormGroup;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(@Inject(DIALOG_COMPONENT_CONFIG) private config: EuiEditorImageDialogConfig) {}\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\" />\n</form>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\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 standalone: false,\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\n constructor(@Inject(ElementRef) private 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 { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor-html-view',\n templateUrl: './eui-editor-html-view.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorHtmlViewComponent implements OnChanges {\n @HostBinding('class') string = 'eui-editor__html-view';\n\n @Input() content = '';\n @Input() theme = 'snow';\n\n public innerHTML: SafeHtml = '';\n public themeClass = 'ql-snow';\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.content && changes.content?.currentValue) {\n this.innerHTML = this.sanitizer.bypassSecurityTrustHtml(changes.content.currentValue);\n } else {\n this.innerHTML = '';\n }\n }\n}\n","<div #editor class=\"ql-container\" [ngClass]=\"themeClass\">\n <div class=\"ql-editor\" [innerHTML]=\"innerHTML\"></div>\n</div>\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 standalone: false,\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","<button 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</button>\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} from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NgControl } from '@angular/forms';\nimport { ContentChange, QuillModules } from '@eui/components/externals/quill';\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';\n// eslint-disable-next-line prefer-const\nlet QuillBetterTable = window['quillBetterTable'];\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 standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n // TODO: Check to change the providing way. Provide with injector reference\n EuiDialogService,\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 ].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 @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\n constructor(private euiDialogService: EuiDialogService,\n private cdr: ChangeDetectorRef,\n private ngControl: NgControl,\n private loader: LoaderService) {\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 @HostListener('click')\n @HostListener('focusin')\n public enableEditorOnFocus(): void {\n if (this.isEnabledOnFocus && this.isReadOnly) {\n this.isReadOnly = false;\n }\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) {\n this.quill.focus();\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 public _onEditorChanged(event: EditorChangeSelection | ContentChange | Event): void {\n console.warn('onEditorChanged() event is DEPRECATED please use contentChange() event instead.');\n this.editorChange.emit(event as EditorChangeSelection);\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 this._onEditorChanged(event); // Sync with editor change event since it's duplicated event\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.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('&', '&');\n c = c.replace(' ', ' ');\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', standalone: false, })\nexport class EuiEditorCustomToolbarTagDirective {\n @HostBinding('class') elementClass = 'eui-editor-custom-toolbar';\n\n constructor(public elementRef: ElementRef) {}\n}\n/* eslint-enable */\n\n/**\n * Pipe to remove classes from the editor\n */\n@Pipe({ name: 'classFilter', standalone: false, })\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","<ng-container *ngIf=\"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 <quill-editor\n [ngStyle]=\"{display: isReadOnly ? 'none' : null}\"\n [id]=\"generatedId\"\n class=\"{{ class | classFilter }}\"\n [class.eui-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 (onEditorChanged)=\"_onEditorChanged($event)\"\n (onContentChanged)=\"_onContentChanged($event)\"\n (onSelectionChanged)=\"_onSelectionChanged($event)\"\n (onFocus)=\"_onFocus($event)\"\n (onBlur)=\"_onBlur($event)\">\n <div *ngIf=\"!euiEditorCustomToolbar\" quill-editor-toolbar class=\"eui-u-flex-gap-s\">\n <div\n *ngIf=\"toolbarConfig.headings\"\n class=\"ql-formats\"\n role=\"application\"\n aria-label=\"Select headings style\"\n euiTooltip=\"{{ toolbarConfig.headings.label }}\">\n <select class=\"ql-header\" [attr.aria-label]=\"toolbarConfig.headings.label\">\n <option value=\"{{ value }}\" *ngFor=\"let value of toolbarConfig.headings.options\">Heading {{ value }}</option>\n <option selected>Normal</option>\n </select>\n </div>\n <div\n *ngIf=\"toolbarConfig.font\"\n class=\"ql-formats\"\n role=\"application\"\n aria-label=\"Select font style\"\n euiTooltip=\"{{ toolbarConfig.font.label }}\">\n <select class=\"ql-font\" [attr.aria-label]=\"toolbarConfig.font.label\">\n <option selected>Sans Serif</option>\n <option value=\"serif\">Serif</option>\n <option value=\"monospace\">Monospace</option>\n </select>\n </div>\n <div *ngIf=\"toolbarConfig.bold || toolbarConfig.italic || toolbarConfig.underline || toolbarConfig.strike\" class=\"ql-formats\">\n <button\n *ngIf=\"toolbarConfig.bold\"\n class=\"ql-bold\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.bold.label\"\n euiTooltip=\"{{ toolbarConfig.bold.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.italic\"\n class=\"ql-italic\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.italic.label\"\n euiTooltip=\"{{ toolbarConfig.italic.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.underline\"\n class=\"ql-underline\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.underline.label\"\n euiTooltip=\"{{ toolbarConfig.underline.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.strike\"\n class=\"ql-strike\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.strike.label\"\n euiTooltip=\"{{ toolbarConfig.strike.label }}\">\n </button>\n </div>\n <div *ngIf=\"toolbarConfig.fontColor || toolbarConfig.fontBackground\" class=\"ql-formats\">\n <span *ngIf=\"toolbarConfig.fontColor\" euiTooltip=\"{{ toolbarConfig.fontColor.label }}\">\n <select class=\"ql-color\" [attr.aria-label]=\"toolbarConfig.fontColor.label\"></select>\n </span>\n <span *ngIf=\"toolbarConfig.fontBackground\" euiTooltip=\"{{ toolbarConfig.fontBackground.label }}\">\n <select class=\"ql-background\" [attr.aria-label]=\"toolbarConfig.fontBackground.label\"></select>\n </span>\n </div>\n <div *ngIf=\"toolbarConfig.subscript || toolbarConfig.superscript\" class=\"ql-formats\">\n <button\n *ngIf=\"toolbarConfig.subscript\"\n class=\"ql-script\"\n value=\"sub\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.subscript.label\"\n euiTooltip=\"{{ toolbarConfig.subscript.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.superscript\"\n class=\"ql-script\"\n value=\"super\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.superscript.label\"\n euiTooltip=\"{{ toolbarConfig.superscript.label }}\">\n </button>\n </div>\n <div *ngIf=\"toolbarConfig.textAlign\" class=\"ql-formats\">\n <span euiTooltip=\"{{ toolbarConfig.textAlign.label }}\">\n <select class=\"ql-align\" [attr.aria-label]=\"toolbarConfig.textAlign.label\">\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 <div\n *ngIf=\"toolbarConfig.orderedList || toolbarConfig.bulletList || toolbarConfig.indentLess || toolbarConfig.indentMore\"\n class=\"ql-formats\">\n <button\n *ngIf=\"toolbarConfig.orderedList\"\n class=\"ql-list\"\n value=\"ordered\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.orderedList.label\"\n euiTooltip=\"{{ toolbarConfig.orderedList.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.bulletList\"\n class=\"ql-list\"\n value=\"bullet\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.bulletList.label\"\n euiTooltip=\"{{ toolbarConfig.bulletList.label }}\">\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.indentLess\"\n class=\"ql-indent\"\n value=\"-1\"\n [attr.aria-label]=\"toolbarConfig.indentLess.label\"\n euiTooltip=\"{{ toolbarConfig.indentLess.label }}\">\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.indentMore\"\n class=\"ql-indent\"\n value=\"+1\"\n [attr.aria-label]=\"toolbarConfig.indentMore.label\"\n euiTooltip=\"{{ toolbarConfig.indentMore.label }}\">\n </button>\n </div>\n <div\n *ngIf=\"\n toolbarConfig.blockquote ||\n toolbarConfig.codeBlock ||\n toolbarConfig.link ||\n toolbarConfig.image ||\n toolbarConfig.imageUrl ||\n toolbarConfig.video ||\n toolbarConfig.table\n \"\n class=\"ql-formats\">\n <button\n *ngIf=\"toolbarConfig.blockquote\"\n class=\"ql-blockquote\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.blockquote.label\"\n euiTooltip=\"{{ toolbarConfig.blockquote.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.codeBlock\"\n class=\"ql-code-block\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.codeBlock.label\"\n euiTooltip=\"{{ toolbarConfig.codeBlock.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.link\"\n class=\"ql-link\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.link.label\"\n euiTooltip=\"{{ toolbarConfig.link.label }}\">\n </button>\n <button\n *ngIf=\"toolbarConfig.image\"\n class=\"ql-image\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.image.label\"\n euiTooltip=\"{{ toolbarConfig.image.label }}\">\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.imageUrl\"\n [attr.aria-label]=\"toolbarConfig.imageUrl.label\"\n euiTooltip=\"{{ toolbarConfig.imageUrl.label }}\"\n (click)=\"imageUrlHandler()\">\n <eui-icon-svg icon=\"eui-ecl-image\" size=\"s\"></eui-icon-svg>\n </button>\n <button\n *ngIf=\"toolbarConfig.video\"\n class=\"ql-video\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.video.label\"\n euiTooltip=\"{{ toolbarConfig.video.label }}\">\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.table\"\n [attr.aria-label]=\"toolbarConfig.table.label\"\n euiTooltip=\"{{ toolbarConfig.table.label }}\"\n (click)=\"insertTable()\">\n <eui-icon-svg icon=\"eui-ecl-spreadsheet\" size=\"s\"></eui-icon-svg>\n </button>\n </div>\n <div *ngIf=\"toolbarConfig.clean || toolbarConfig.delete\" class=\"ql-formats\">\n <button\n *ngIf=\"toolbarConfig.clean\"\n class=\"ql-clean\"\n type=\"button\"\n [attr.aria-label]=\"toolbarConfig.clean.label\"\n euiTooltip=\"{{ toolbarConfig.clean.label }}\">\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.delete\"\n [attr.aria-label]=\"toolbarConfig.delete.label\"\n euiTooltip=\"{{ toolbarConfig.delete.label }}\"\n (click)=\"editorDeleteContent()\">\n <eui-icon-svg icon=\"eui-ecl-trash\" size=\"s\"></eui-icon-svg>\n </button>\n </div>\n <div *ngIf=\"toolbarConfig.undo || toolbarConfig.redo\" class=\"ql-formats\">\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.undo\"\n [attr.aria-label]=\"toolbarConfig.undo.label\"\n euiTooltip=\"{{ toolbarConfig.undo.label }}\"\n (click)=\"editorUndo()\">\n <eui-icon-svg icon=\"arrow-undo:outline\" size=\"s\"></eui-icon-svg>\n </button>\n <button\n type=\"button\"\n *ngIf=\"toolbarConfig.redo\"\n [attr.aria-label]=\"toolbarConfig.redo.label\"\n euiTooltip=\"{{ toolbarConfig.redo.label }}\"\n (click)=\"editorRedo()\">\n <eui-icon-svg icon=\"arrow-redo:outline\" size=\"s\"></eui-icon-svg>\n </button>\n </div>\n <div *ngIf=\"toolbarConfig.counters\" 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 [attr.aria-label]=\"toolbarConfig.counters.label\"\n role=\"button\"\n euiTooltip=\"{{ toolbarConfig.counters.label }}\">\n </eui-editor-counters>\n </div>\n </div>\n <div *ngIf=\"euiEditorCustomToolbar\" quill-editor-toolbar class=\"ql-toolbar ql-snow\">\n <ng-content select=\"euiEditorCustomToolbar\"></ng-content>\n </div>\n </quill-editor>\n \n <!-- READONLY MODE -->\n @if (isReadOnly && format === 'html') {\n <eui-editor-html-view\n [content]=\"value\"\n [theme]=\"theme\" />\n }\n @if (isReadOnly && format === 'json') {\n <eui-editor-json-view \n [content]=\"jsonToHtmlContent\"\n [theme]=\"theme\" />\n }\n</ng-container>\n","import { Directive, ElementRef, Input, AfterContentInit, OnDestroy, Self, OnChanges, SimpleChanges, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { coerceBooleanProperty, coerceNumberProperty, BooleanInput, NumberInput } from '@angular/cdk/coercion';\n\n@Directive({\n /* eslint-disable-next-line */\n selector: '[formControlName][euiEditorMaxlength]',\n standalone: false,\n})\nexport class EuiEditorMaxlengthDirective implements AfterContentInit, OnDestroy, OnChanges {\n @Input() format: 'html' | 'json' = 'html';\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 @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\n constructor(private el: ElementRef, private renderer: Renderer2, @Self() private control: NgControl) {}\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 { EuiDialogModule } from '@eui/components/eui-dialog';\nimport { EuiTooltipDirectiveModule } from '@eui/components/directives';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { QuillConfig, QuillModule } from '@eui/components/externals/quill';\nimport { EuiInputTextModule } from '@eui/components/eui-input-text';\n\nimport { EuiEditorCountersComponent } from './counters/eui-editor-counters.component';\nimport { EuiEditorHtmlViewComponent } from './html-view/eui-editor-html-view.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 EuiTooltipDirectiveModule,\n QuillModule.forRoot(quillConfig),\n EuiDialogModule,\n EuiIconModule,\n EuiInputTextModule,\n ],\n declarations: [\n EuiEditorComponent,\n EuiEditorJsonViewComponent,\n EuiEditorHtmlViewComponent,\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","i1","i2","QuillBetterTable","i7.EuiEditorJsonViewComponent","i8.EuiEditorHtmlViewComponent","i9.EuiEditorCountersComponent"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@eui/components",
|
3
|
-
"version": "19.2.0-snapshot-
|
3
|
+
"version": "19.2.0-snapshot-1745320402511",
|
4
4
|
"tag": "snapshot",
|
5
5
|
"description": "eUI components package",
|
6
6
|
"homepage": "https://eui.ecdevops.eu",
|
@@ -10,8 +10,8 @@
|
|
10
10
|
"url": "https://citnet.tech.ec.europa.eu/CITnet/stash/projects/CSDR/repos/eui/browse/packages/components"
|
11
11
|
},
|
12
12
|
"peerDependencies": {
|
13
|
-
"@eui/core": "19.2.0-snapshot-
|
14
|
-
"@eui/base": "19.2.0-snapshot-
|
13
|
+
"@eui/core": "19.2.0-snapshot-1745320402511",
|
14
|
+
"@eui/base": "19.2.0-snapshot-1745320402511",
|
15
15
|
"@angular/common": "^18.0.0 || ^19.0.0",
|
16
16
|
"@angular/core": "^18.0.0 || ^19.0.0",
|
17
17
|
"@angular/forms": "^18.0.0 || ^19.0.0",
|