@eui/components 16.2.15-snapshot-1710126701259 → 16.2.15-snapshot-1710213077290

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.
@@ -668,9 +668,7 @@ class EuiEditorComponent {
668
668
  return contentToReplace.replace(/[\u200B-\u200D\uFEFF]/g, '');
669
669
  }
670
670
  cleanHtml(content) {
671
- const exceptTags = /<strong>|<\/strong>|<b>|<\/b>|<i>|<\/i>|<em>|<\/em>|<s>|<\/s>|<strike>|<\/strike>|<u>|<\/u>/gm;
672
- const regex = /(<([^>]+)>)/gm;
673
- const contentToReplace = content.replace(exceptTags, '').replace(regex, ' ').replace(' ', ' ');
671
+ const contentToReplace = content.replace(/<[^>]*>/g, '');
674
672
  return contentToReplace.replace(/[\u200B-\u200D\uFEFF]/g, '');
675
673
  }
676
674
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EuiEditorComponent, deps: [{ token: i1$2.EuiDialogService }, { token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -1069,10 +1067,8 @@ const euiEditorMinWords = (minWords) => (control) => {
1069
1067
  actual = jsonStrippedContent.trim().split(/\s+/).length;
1070
1068
  }
1071
1069
  else {
1072
- const exceptTags = /<strong>|<\/strong>|<b>|<\/b>|<i>|<\/i>|<em>|<\/em>|<s>|<\/s>|<strike>|<\/strike>|<u>|<\/u>/gm;
1073
- const regex = /(<([^>]+)>)/gi;
1074
- const tagsStrippedContent = control.value.replace(exceptTags, '').replace(regex, ' ').replace(' ', ' ');
1075
- actual = tagsStrippedContent.trim().split(/\s+/).filter(t => t !== '').length;
1070
+ const tagsStrippedContent = control.value.replace(/<[^>]*>/g, '');
1071
+ actual = tagsStrippedContent.replace(/[\u200B-\u200D\uFEFF]/g, '').trim().split(/\s+/).filter(t => t !== '').length;
1076
1072
  }
1077
1073
  return actual < minWords ? { minWords: { minWords, actual } } : null;
1078
1074
  }
@@ -1104,10 +1100,8 @@ const euiEditorMaxWords = (maxWords) => (control) => {
1104
1100
  actual = jsonStrippedContent.trim().split(/\s+/).length;
1105
1101
  }
1106
1102
  else {
1107
- const exceptTags = /<strong>|<\/strong>|<b>|<\/b>|<i>|<\/i>|<em>|<\/em>|<s>|<\/s>|<strike>|<\/strike>|<u>|<\/u>/gm;
1108
- const regex = /(<([^>]+)>)/gi;
1109
- const tagsStrippedContent = control.value.replace(exceptTags, '').replace(regex, ' ').replace(' ', ' ');
1110
- actual = tagsStrippedContent.trim().split(/\s+/).filter(t => t !== '').length;
1103
+ const tagsStrippedContent = control.value.replace(/<[^>]*>/g, '');
1104
+ actual = tagsStrippedContent.replace(/[\u200B-\u200D\uFEFF]/g, '').trim().split(/\s+/).filter(t => t !== '').length;
1111
1105
  }
1112
1106
  return actual > maxWords ? { maxWords: { maxWords, actual } } : null;
1113
1107
  }
@@ -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})\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 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 changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorJsonViewComponent implements AfterViewInit, OnChanges {\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 this.quillEditor = new QuillType(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 } 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 changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorHtmlViewComponent implements OnChanges {\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 { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor-counters',\n templateUrl: './eui-editor-counters.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorCountersComponent {\n @Input() charactersCounter: number;\n @Input() charactersLabel = 'characters';\n @Input() wordsCounter: number;\n @Input() wordsLabel = 'words';\n @Input()\n get isMaxLengthValid(): boolean {\n return this._isMaxLengthValid;\n }\n set isMaxLengthValid(value: BooleanInput) {\n this._isMaxLengthValid = coerceBooleanProperty(value);\n }\n private _isMaxLengthValid = true;\n @Input()\n get hasCharactersCounter(): boolean {\n return this._hasCharactersCounter;\n }\n set hasCharactersCounter(value: BooleanInput) {\n this._hasCharactersCounter = coerceBooleanProperty(value);\n }\n private _hasCharactersCounter = true;\n @Input()\n get hasWordsCounter(): boolean {\n return this._hasWordsCounter;\n }\n set hasWordsCounter(value: BooleanInput) {\n this._hasWordsCounter = coerceBooleanProperty(value);\n }\n private _hasWordsCounter = true;\n}\n","<button class=\"editor-counters\">\n <div *ngIf=\"hasCharactersCounter\" class=\"eui-u-flex eui-u-flex-column\" [class.eui-u-mr-2xs]=\"hasWordsCounter\">\n <span class=\"chars-counter\" [class.chars-counter--error]=\"!isMaxLengthValid\">{{ charactersCounter }}</span>\n <span class=\"chars-label\">{{ charactersLabel }}</span>\n </div>\n <div *ngIf=\"hasWordsCounter\" class=\"eui-u-flex eui-u-flex-column eui-u-mv-2xs\">\n <span class=\"words-counter\">{{ wordsCounter }}</span>\n <span class=\"words-label\">{{ wordsLabel }}</span>\n </div>\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} 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 { 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 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 {\n @Input() e2eAttr = 'eui-editor';\n @Input() id: string;\n @Input() styleClass = '';\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 @Input() tabindex = '0';\n @Input() modules: QuillModules;\n /** @deprecated This will be removed in next version of eui */\n @Input() style: any = null;\n @Input() formats?: string[] | null;\n /** @deprecated This will be removed in next version of eui */\n @Input() customToolbarOptions?: any;\n /** @deprecated This will be removed in next version of eui */\n @Input() maxLength?: number;\n /** @deprecated This will be removed in next version of eui */\n @Input() minLength?: number;\n /** @deprecated This will be removed in next version of eui */\n @Input() formControlName: string;\n /** @deprecated This will be removed in next version of eui */\n @Input() feedbackTypeClass = 'danger';\n /** @deprecated This will be removed in next version of eui */\n @Input() validationErrorMessage: string;\n /** @deprecated This will be removed in next version of eui */\n @Input() scrollingContainer?: HTMLElement | string | null;\n /** @deprecated This will be removed in next version of eui */\n @Input() bounds?: HTMLElement | string;\n /** @deprecated This will be removed in next version of eui */\n @Input() customOptions: any[] = [];\n /** @deprecated This will be removed in next version of eui */\n @Input() trackChanges?: 'user' | 'all';\n // NEW EUI INPUTS\n @Input() customToolbarConfig: ToolbarItemConfig[];\n @Input() height: string;\n\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onInit: EventEmitter<any> = new EventEmitter();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onTextChange: EventEmitter<any> = new EventEmitter();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onSelectionChange: EventEmitter<any> = new EventEmitter();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onEditorCreated = new EventEmitter<typeof QuillType>();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onEditorChanged = new EventEmitter<EditorChangeSelection | ContentChange>();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onContentChanged = new EventEmitter<ContentChange>();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onSelectionChanged = new EventEmitter<SelectionChange>();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onFocus = new EventEmitter<Focus>();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onBlur = new EventEmitter<Blur>();\n /** @deprecated This will be removed in next version of eui */\n @Output() getCharactersCounter = new EventEmitter<number>();\n /** @deprecated This will be removed in next version of eui */\n @Output() getWordsCounter = new EventEmitter<number>();\n\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 // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() focus = new EventEmitter<Focus>();\n // eslint-disable-next-line @angular-eslint/no-output-native\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\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 /** @deprecated This will be removed in next version of eui */\n @Input()\n get isRequired(): boolean {\n return this._isRequired;\n }\n set isRequired(value: BooleanInput) {\n this._isRequired = coerceBooleanProperty(value);\n }\n private _isRequired = false;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get isEditable(): boolean {\n return this._isEditable;\n }\n set isEditable(value: BooleanInput) {\n this._isEditable = coerceBooleanProperty(value);\n }\n private _isEditable = false;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get hasReadOnlyStyles(): boolean {\n return this._hasReadOnlyStyles;\n }\n set hasReadOnlyStyles(value: BooleanInput) {\n this._hasReadOnlyStyles = coerceBooleanProperty(value);\n }\n private _hasReadOnlyStyles = false;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get strict(): boolean {\n return this._strict;\n }\n set strict(value: BooleanInput) {\n this._strict = coerceBooleanProperty(value);\n }\n private _strict = true;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get preserveWhitespace(): boolean {\n return this._preserveWhitespace;\n }\n set preserveWhitespace(value: BooleanInput) {\n this._preserveWhitespace = coerceBooleanProperty(value);\n }\n private _preserveWhitespace = false;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get spellcheck(): boolean {\n return this._spellcheck;\n }\n set spellcheck(value: BooleanInput) {\n this._spellcheck = coerceBooleanProperty(value);\n }\n private _spellcheck = false;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get isImageUrl(): boolean {\n return this._isImageUrl;\n }\n set isImageUrl(value: BooleanInput) {\n this._isImageUrl = coerceBooleanProperty(value);\n }\n private _isImageUrl = 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, private ngControl: NgControl) {\n this.ngControl.valueAccessor = this;\n }\n\n ngOnInit(): void {\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 }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n public enableEditorOnFocus(): void {\n if (this.isEnabledOnFocus) {\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 this.onEditorCreated.emit(quill); // DEPRECATED in eUI15+\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 this.onEditorChanged.emit(event as ContentChange); // DEPRECATED in eUI15+\n }\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 this.onChange(this.htmlEntitiesDecode(this.value as string));\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 this.onChange(this.jsonToHtmlContent);\n } else {\n this.value = null;\n this.calculateCounters('');\n this.jsonToHtmlContent = '';\n this.onChange(null);\n }\n }\n this.contentChange.emit(event); // New emitter\n this.onContentChanged.emit(event); // DEPRECATED in eUI15+\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 this.onSelectionChanged.emit(event); // DEPRECATED in eUI15+\n }\n\n public _onFocus(event: Focus): void {\n this.isFocused = true;\n this.focus.emit(event);\n this.onFocus.emit(event); // DEPRECATED in eUI15+\n }\n\n public _onBlur(event: Blur): void {\n this.isFocused = false;\n this.onTouch();\n this.blur.emit(event);\n this.onBlur.emit(event); // DEPRECATED in eUI15+\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 this.value = value || null;\n this.jsonToHtmlContent = this.value;\n\n setTimeout(() => {\n if (this.quill) {\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 this.calculateCounters(this.value);\n }\n });\n }\n\n private get tableModule(): BetterTableModule {\n return this.quill.getModule('better-table');\n }\n\n private onChange: any = () => {};\n\n private onTouch: any = () => {};\n\n private htmlEntitiesDecode(content: string): string {\n let c = content;\n if (c) {\n c = c.replace('&amp;', '&');\n c = c.replace('&nbsp;', ' ');\n }\n\n return c;\n }\n\n get hasCharactersCounter(): boolean {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'characters');\n }\n\n get charactersCounterLabel(): string {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'characters')?.label;\n }\n\n get hasWordsCounter(): boolean {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'words');\n }\n\n get wordsCounterLabel(): string {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'words')?.label;\n }\n\n private calculateCounters(content: string): void {\n let text: string;\n const regex = /\\s+/;\n if (this.format === 'html') {\n if (content && content.length > 0 && this.quill) {\n text = this.stripHtml(content);\n this.charactersCount = text.length;\n text = this.cleanHtml(content);\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.cleanHtml(this.quill.root.innerHTML);\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.getCharactersCounter.emit(this.charactersCount); // DEPRECATED\n\n this.wordsCountChange.emit(this.wordsCount);\n this.getWordsCounter.emit(this.wordsCount); // DEPRECATED\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 exceptTags = /<strong>|<\\/strong>|<b>|<\\/b>|<i>|<\\/i>|<em>|<\\/em>|<s>|<\\/s>|<strike>|<\\/strike>|<u>|<\\/u>/gm;\n const regex = /(<([^>]+)>)/gm;\n const contentToReplace = content.replace(exceptTags, '').replace(regex, ' ').replace(' ', ' ');\n return contentToReplace.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n }\n}\n\n/* eslint-disable */\n@Directive({ selector: 'euiEditorCustomToolbar' })\nexport class EuiEditorCustomToolbarTagDirective {\n @HostBinding('class') elementClass = 'eui-editor-custom-toolbar';\n\n constructor(public elementRef: ElementRef) {}\n}\n/* eslint-enable */\n","<div [hidden]=\"isReadOnly\" class=\"eui-editor-wrapper\" [style.height]=\"height + 'px'\">\n <quill-editor\n [id]=\"generatedId\"\n class=\"eui-editor {{ styleClass }}\"\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 [styles]=\"style\"\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>\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-image-add\"></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\"></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-delete-forever\"></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=\"eui-undo\"></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=\"eui-redo\"></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>\n <ng-content select=\"euiEditorCustomToolbar\"></ng-content>\n </div>\n </quill-editor>\n</div>\n\n<!-- READONLY MODE -->\n<div\n [hidden]=\"!isReadOnly\"\n class=\"eui-editor eui-editor--readonly {{ styleClass }}\"\n [class.eui-editor--empty]=\"!value\"\n tabindex=\"{{ tabindex }}\"\n (click)=\"enableEditorOnFocus()\"\n (focusin)=\"enableEditorOnFocus()\">\n <eui-editor-html-view *ngIf=\"format === 'html'\" [content]=\"value\" [theme]=\"theme\"></eui-editor-html-view>\n <eui-editor-json-view *ngIf=\"format === 'json'\" [content]=\"jsonToHtmlContent\" [theme]=\"theme\"></eui-editor-json-view>\n</div>\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})\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 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): { minWords: { minWords: 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.trim().split(/\\s+/).length;\n } else {\n const exceptTags = /<strong>|<\\/strong>|<b>|<\\/b>|<i>|<\\/i>|<em>|<\\/em>|<s>|<\\/s>|<strike>|<\\/strike>|<u>|<\\/u>/gm;\n const regex = /(<([^>]+)>)/gi;\n const tagsStrippedContent: string = control.value.replace(exceptTags, '').replace(regex, ' ').replace(' ', ' ');\n actual = tagsStrippedContent.trim().split(/\\s+/).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): { maxWords: { maxWords: 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.trim().split(/\\s+/).length;\n } else {\n const exceptTags = /<strong>|<\\/strong>|<b>|<\\/b>|<i>|<\\/i>|<em>|<\\/em>|<s>|<\\/s>|<strike>|<\\/strike>|<u>|<\\/u>/gm;\n const regex = /(<([^>]+)>)/gi;\n const tagsStrippedContent: string = control.value.replace(exceptTags, '').replace(regex, ' ').replace(' ', ' ');\n actual = tagsStrippedContent.trim().split(/\\s+/).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 { 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\nconst QuillBetterTable = window['quillBetterTable'];\nwindow['Quill'].register({ 'modules/better-table': 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 keyboard: {\n bindings: QuillBetterTable.keyboardBindings,\n },\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 ],\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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"}
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})\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 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 changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorJsonViewComponent implements AfterViewInit, OnChanges {\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 this.quillEditor = new QuillType(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 } 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 changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorHtmlViewComponent implements OnChanges {\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 { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line\n selector: 'eui-editor-counters',\n templateUrl: './eui-editor-counters.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiEditorCountersComponent {\n @Input() charactersCounter: number;\n @Input() charactersLabel = 'characters';\n @Input() wordsCounter: number;\n @Input() wordsLabel = 'words';\n @Input()\n get isMaxLengthValid(): boolean {\n return this._isMaxLengthValid;\n }\n set isMaxLengthValid(value: BooleanInput) {\n this._isMaxLengthValid = coerceBooleanProperty(value);\n }\n private _isMaxLengthValid = true;\n @Input()\n get hasCharactersCounter(): boolean {\n return this._hasCharactersCounter;\n }\n set hasCharactersCounter(value: BooleanInput) {\n this._hasCharactersCounter = coerceBooleanProperty(value);\n }\n private _hasCharactersCounter = true;\n @Input()\n get hasWordsCounter(): boolean {\n return this._hasWordsCounter;\n }\n set hasWordsCounter(value: BooleanInput) {\n this._hasWordsCounter = coerceBooleanProperty(value);\n }\n private _hasWordsCounter = true;\n}\n","<button class=\"editor-counters\">\n <div *ngIf=\"hasCharactersCounter\" class=\"eui-u-flex eui-u-flex-column\" [class.eui-u-mr-2xs]=\"hasWordsCounter\">\n <span class=\"chars-counter\" [class.chars-counter--error]=\"!isMaxLengthValid\">{{ charactersCounter }}</span>\n <span class=\"chars-label\">{{ charactersLabel }}</span>\n </div>\n <div *ngIf=\"hasWordsCounter\" class=\"eui-u-flex eui-u-flex-column eui-u-mv-2xs\">\n <span class=\"words-counter\">{{ wordsCounter }}</span>\n <span class=\"words-label\">{{ wordsLabel }}</span>\n </div>\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} 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 { 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 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 {\n @Input() e2eAttr = 'eui-editor';\n @Input() id: string;\n @Input() styleClass = '';\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 @Input() tabindex = '0';\n @Input() modules: QuillModules;\n /** @deprecated This will be removed in next version of eui */\n @Input() style: any = null;\n @Input() formats?: string[] | null;\n /** @deprecated This will be removed in next version of eui */\n @Input() customToolbarOptions?: any;\n /** @deprecated This will be removed in next version of eui */\n @Input() maxLength?: number;\n /** @deprecated This will be removed in next version of eui */\n @Input() minLength?: number;\n /** @deprecated This will be removed in next version of eui */\n @Input() formControlName: string;\n /** @deprecated This will be removed in next version of eui */\n @Input() feedbackTypeClass = 'danger';\n /** @deprecated This will be removed in next version of eui */\n @Input() validationErrorMessage: string;\n /** @deprecated This will be removed in next version of eui */\n @Input() scrollingContainer?: HTMLElement | string | null;\n /** @deprecated This will be removed in next version of eui */\n @Input() bounds?: HTMLElement | string;\n /** @deprecated This will be removed in next version of eui */\n @Input() customOptions: any[] = [];\n /** @deprecated This will be removed in next version of eui */\n @Input() trackChanges?: 'user' | 'all';\n // NEW EUI INPUTS\n @Input() customToolbarConfig: ToolbarItemConfig[];\n @Input() height: string;\n\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onInit: EventEmitter<any> = new EventEmitter();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onTextChange: EventEmitter<any> = new EventEmitter();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onSelectionChange: EventEmitter<any> = new EventEmitter();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onEditorCreated = new EventEmitter<typeof QuillType>();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onEditorChanged = new EventEmitter<EditorChangeSelection | ContentChange>();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onContentChanged = new EventEmitter<ContentChange>();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onSelectionChanged = new EventEmitter<SelectionChange>();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onFocus = new EventEmitter<Focus>();\n /** @deprecated This will be removed in next version of eui */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onBlur = new EventEmitter<Blur>();\n /** @deprecated This will be removed in next version of eui */\n @Output() getCharactersCounter = new EventEmitter<number>();\n /** @deprecated This will be removed in next version of eui */\n @Output() getWordsCounter = new EventEmitter<number>();\n\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 // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() focus = new EventEmitter<Focus>();\n // eslint-disable-next-line @angular-eslint/no-output-native\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\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 /** @deprecated This will be removed in next version of eui */\n @Input()\n get isRequired(): boolean {\n return this._isRequired;\n }\n set isRequired(value: BooleanInput) {\n this._isRequired = coerceBooleanProperty(value);\n }\n private _isRequired = false;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get isEditable(): boolean {\n return this._isEditable;\n }\n set isEditable(value: BooleanInput) {\n this._isEditable = coerceBooleanProperty(value);\n }\n private _isEditable = false;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get hasReadOnlyStyles(): boolean {\n return this._hasReadOnlyStyles;\n }\n set hasReadOnlyStyles(value: BooleanInput) {\n this._hasReadOnlyStyles = coerceBooleanProperty(value);\n }\n private _hasReadOnlyStyles = false;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get strict(): boolean {\n return this._strict;\n }\n set strict(value: BooleanInput) {\n this._strict = coerceBooleanProperty(value);\n }\n private _strict = true;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get preserveWhitespace(): boolean {\n return this._preserveWhitespace;\n }\n set preserveWhitespace(value: BooleanInput) {\n this._preserveWhitespace = coerceBooleanProperty(value);\n }\n private _preserveWhitespace = false;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get spellcheck(): boolean {\n return this._spellcheck;\n }\n set spellcheck(value: BooleanInput) {\n this._spellcheck = coerceBooleanProperty(value);\n }\n private _spellcheck = false;\n /** @deprecated This will be removed in next version of eui */\n @Input()\n get isImageUrl(): boolean {\n return this._isImageUrl;\n }\n set isImageUrl(value: BooleanInput) {\n this._isImageUrl = coerceBooleanProperty(value);\n }\n private _isImageUrl = 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, private ngControl: NgControl) {\n this.ngControl.valueAccessor = this;\n }\n\n ngOnInit(): void {\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 }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n public enableEditorOnFocus(): void {\n if (this.isEnabledOnFocus) {\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 this.onEditorCreated.emit(quill); // DEPRECATED in eUI15+\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 this.onEditorChanged.emit(event as ContentChange); // DEPRECATED in eUI15+\n }\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 this.onChange(this.htmlEntitiesDecode(this.value as string));\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 this.onChange(this.jsonToHtmlContent);\n } else {\n this.value = null;\n this.calculateCounters('');\n this.jsonToHtmlContent = '';\n this.onChange(null);\n }\n }\n this.contentChange.emit(event); // New emitter\n this.onContentChanged.emit(event); // DEPRECATED in eUI15+\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 this.onSelectionChanged.emit(event); // DEPRECATED in eUI15+\n }\n\n public _onFocus(event: Focus): void {\n this.isFocused = true;\n this.focus.emit(event);\n this.onFocus.emit(event); // DEPRECATED in eUI15+\n }\n\n public _onBlur(event: Blur): void {\n this.isFocused = false;\n this.onTouch();\n this.blur.emit(event);\n this.onBlur.emit(event); // DEPRECATED in eUI15+\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 this.value = value || null;\n this.jsonToHtmlContent = this.value;\n\n setTimeout(() => {\n if (this.quill) {\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 this.calculateCounters(this.value);\n }\n });\n }\n\n private get tableModule(): BetterTableModule {\n return this.quill.getModule('better-table');\n }\n\n private onChange: any = () => {};\n\n private onTouch: any = () => {};\n\n private htmlEntitiesDecode(content: string): string {\n let c = content;\n if (c) {\n c = c.replace('&amp;', '&');\n c = c.replace('&nbsp;', ' ');\n }\n\n return c;\n }\n\n get hasCharactersCounter(): boolean {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'characters');\n }\n\n get charactersCounterLabel(): string {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'characters')?.label;\n }\n\n get hasWordsCounter(): boolean {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'words');\n }\n\n get wordsCounterLabel(): string {\n return this.toolbarConfig.counters.options.find((o) => o.name === 'words')?.label;\n }\n\n private calculateCounters(content: string): void {\n let text: string;\n const regex = /\\s+/;\n if (this.format === 'html') {\n if (content && content.length > 0 && this.quill) {\n text = this.stripHtml(content);\n this.charactersCount = text.length;\n text = this.cleanHtml(content);\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.cleanHtml(this.quill.root.innerHTML);\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.getCharactersCounter.emit(this.charactersCount); // DEPRECATED\n\n this.wordsCountChange.emit(this.wordsCount);\n this.getWordsCounter.emit(this.wordsCount); // DEPRECATED\n }\n\n private stripHtml(content: string): string {\n const regex = /(<([^>]+)>)/gm;\n const contentToReplace = content.replace(regex, '');\n return contentToReplace.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n }\n\n private cleanHtml(content: string): string {\n const contentToReplace = content.replace(/<[^>]*>/g, '');\n return contentToReplace.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n }\n}\n\n/* eslint-disable */\n@Directive({ selector: 'euiEditorCustomToolbar' })\nexport class EuiEditorCustomToolbarTagDirective {\n @HostBinding('class') elementClass = 'eui-editor-custom-toolbar';\n\n constructor(public elementRef: ElementRef) {}\n}\n/* eslint-enable */\n","<div [hidden]=\"isReadOnly\" class=\"eui-editor-wrapper\" [style.height]=\"height + 'px'\">\n <quill-editor\n [id]=\"generatedId\"\n class=\"eui-editor {{ styleClass }}\"\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 [styles]=\"style\"\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>\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-image-add\"></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\"></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-delete-forever\"></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=\"eui-undo\"></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=\"eui-redo\"></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>\n <ng-content select=\"euiEditorCustomToolbar\"></ng-content>\n </div>\n </quill-editor>\n</div>\n\n<!-- READONLY MODE -->\n<div\n [hidden]=\"!isReadOnly\"\n class=\"eui-editor eui-editor--readonly {{ styleClass }}\"\n [class.eui-editor--empty]=\"!value\"\n tabindex=\"{{ tabindex }}\"\n (click)=\"enableEditorOnFocus()\"\n (focusin)=\"enableEditorOnFocus()\">\n <eui-editor-html-view *ngIf=\"format === 'html'\" [content]=\"value\" [theme]=\"theme\"></eui-editor-html-view>\n <eui-editor-json-view *ngIf=\"format === 'json'\" [content]=\"jsonToHtmlContent\" [theme]=\"theme\"></eui-editor-json-view>\n</div>\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})\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 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): { minWords: { minWords: 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.trim().split(/\\s+/).length;\n } else {\n const tagsStrippedContent = control.value.replace(/<[^>]*>/g, '');\n actual = tagsStrippedContent.replace(/[\\u200B-\\u200D\\uFEFF]/g, '').trim().split(/\\s+/).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): { maxWords: { maxWords: 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.trim().split(/\\s+/).length;\n } else {\n const tagsStrippedContent = control.value.replace(/<[^>]*>/g, '');\n actual = tagsStrippedContent.replace(/[\\u200B-\\u200D\\uFEFF]/g, '').trim().split(/\\s+/).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 { 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\nconst QuillBetterTable = window['quillBetterTable'];\nwindow['Quill'].register({ 'modules/better-table': 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 keyboard: {\n bindings: QuillBetterTable.keyboardBindings,\n },\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 ],\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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"}