@festo-ui/angular 10.1.0-dev.871 → 10.1.0-dev.874

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ViewEncapsulation, Component, ContentChild, SimpleChange, ContentChildren, Input, EventEmitter, ViewChild, Output, HostListener, Directive, HostBinding, Optional, TemplateRef, Injector, Injectable, Pipe, signal, output, DOCUMENT, Inject, ChangeDetectionStrategy, inject, ViewContainerRef, ElementRef, NgModule, forwardRef, CUSTOM_ELEMENTS_SCHEMA, LOCALE_ID, SecurityContext } from '@angular/core';
2
+ import { ViewEncapsulation, Component, ContentChild, SimpleChange, ContentChildren, Input, EventEmitter, ViewChild, Output, HostListener, Directive, HostBinding, Optional, TemplateRef, Injector, Injectable, Pipe, signal, output, DOCUMENT, Inject, ChangeDetectionStrategy, inject, ViewContainerRef, ElementRef, NgModule, forwardRef, CUSTOM_ELEMENTS_SCHEMA, LOCALE_ID, Renderer2, SecurityContext } from '@angular/core';
3
3
  import { Subject, BehaviorSubject, noop, Subscription } from 'rxjs';
4
4
  import * as i1 from '@angular/router';
5
5
  import { RouterModule, NavigationStart } from '@angular/router';
6
6
  import * as i1$1 from '@angular/common';
7
- import { CommonModule, NgClass, formatDate, DecimalPipe } from '@angular/common';
7
+ import { CommonModule, NgClass, formatDate, DecimalPipe, DOCUMENT as DOCUMENT$1 } from '@angular/common';
8
8
  import { takeUntil, take, delay, filter, debounceTime } from 'rxjs/operators';
9
9
  import * as i1$2 from '@angular/cdk/overlay';
10
10
  import { OverlayConfig, Overlay, ConnectionPositionPair, OverlayModule } from '@angular/cdk/overlay';
@@ -12,6 +12,7 @@ import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
12
12
  import SimpleBar from 'simplebar';
13
13
  import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
14
14
  import * as i1$3 from '@angular/platform-browser';
15
+ import { DomSanitizer } from '@angular/platform-browser';
15
16
  import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
16
17
  import * as i1$4 from '@angular/forms';
17
18
  import { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
@@ -21,9 +22,9 @@ import { DragDropModule } from '@angular/cdk/drag-drop';
21
22
  import flatpickr from 'flatpickr';
22
23
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
23
24
  import QuillType from 'quill';
25
+ import Delta from 'quill-delta';
24
26
  import { ObserversModule } from '@angular/cdk/observers';
25
27
  import { ScrollingModule } from '@angular/cdk/scrolling';
26
- import Delta from 'quill-delta';
27
28
 
28
29
  class FngAccordionItemBodyComponent {
29
30
  constructor() {
@@ -6733,24 +6734,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
6733
6734
  }] } });
6734
6735
 
6735
6736
  class FngTextEditorComponent extends FngValueAccessorBaseDirective {
6736
- set value(value) {
6737
- if (this.innerValue !== value) {
6738
- this.innerValue = value;
6739
- this.changed.forEach(f => {
6740
- this.fngChange.emit(this.innerValue);
6741
- this.change.emit(this.innerValue);
6742
- return f(value);
6743
- });
6744
- }
6745
- }
6746
- get value() {
6747
- return this.innerValue;
6748
- }
6749
- constructor(elementRef, renderer, domSanitizer) {
6750
- super();
6751
- this.elementRef = elementRef;
6752
- this.renderer = renderer;
6753
- this.domSanitizer = domSanitizer;
6737
+ constructor() {
6738
+ super(...arguments);
6754
6739
  this.defaultConfig = {
6755
6740
  toolbar: {
6756
6741
  bold: true,
@@ -6785,22 +6770,59 @@ class FngTextEditorComponent extends FngValueAccessorBaseDirective {
6785
6770
  };
6786
6771
  // needed to access editor content
6787
6772
  this.valueSetter = (quillEditor, value) => {
6788
- const sanitizeConfig = this.config?.sanitizing || this.defaultConfig.sanitizing;
6789
- if (sanitizeConfig?.sanitizingFn) {
6790
- value = sanitizeConfig.sanitizingFn(this.domSanitizer, value);
6791
- }
6792
- if (sanitizeConfig && !sanitizeConfig.skipDefaultSanitizing) {
6793
- value = this.domSanitizer.sanitize(SecurityContext.HTML, value);
6794
- }
6795
- if (sanitizeConfig && !sanitizeConfig.skipWhitespaceHandling) {
6796
- value = this.handleWhitespace(value);
6797
- }
6798
- return quillEditor.clipboard.convert({ html: value });
6773
+ const sanitized = this.sanitizeHtml(value || '');
6774
+ return quillEditor.clipboard.convert({ html: sanitized });
6799
6775
  };
6776
+ this.elementRef = inject(ElementRef);
6777
+ this.renderer = inject(Renderer2);
6778
+ this.domSanitizer = inject(DomSanitizer);
6779
+ this.document = inject(DOCUMENT$1);
6780
+ }
6781
+ set value(value) {
6782
+ if (this.innerValue !== value) {
6783
+ this.innerValue = value;
6784
+ this.changed.forEach(f => {
6785
+ this.fngChange.emit(this.innerValue);
6786
+ this.change.emit(this.innerValue);
6787
+ return f(value);
6788
+ });
6789
+ }
6790
+ }
6791
+ get value() {
6792
+ return this.innerValue;
6793
+ }
6794
+ // sanitizes HTML content
6795
+ sanitizeHtml(value) {
6796
+ if (!value) {
6797
+ return '';
6798
+ }
6799
+ const originalValue = value;
6800
+ const sanitizeConfig = this.config?.sanitizing || this.defaultConfig.sanitizing;
6801
+ if (sanitizeConfig?.sanitizingFn) {
6802
+ value = sanitizeConfig.sanitizingFn(this.domSanitizer, value);
6803
+ }
6804
+ if (sanitizeConfig && !sanitizeConfig.skipDefaultSanitizing) {
6805
+ value = this.domSanitizer.sanitize(SecurityContext.HTML, value) || '';
6806
+ }
6807
+ if (sanitizeConfig && !sanitizeConfig.skipWhitespaceHandling) {
6808
+ value = this.handleWhitespace(value);
6809
+ }
6810
+ if (value !== originalValue) {
6811
+ console.warn('[TextEditor] Content was sanitized');
6812
+ }
6813
+ return value;
6800
6814
  }
6801
6815
  ngOnInit() {
6802
6816
  this.id = (Math.random() * Date.now()).toString().replace('.', '-');
6803
6817
  }
6818
+ ngOnDestroy() {
6819
+ if (this.pasteListener) {
6820
+ this.document.removeEventListener('paste', this.pasteListener, true);
6821
+ }
6822
+ if (this.dropListener) {
6823
+ this.document.removeEventListener('drop', this.dropListener, true);
6824
+ }
6825
+ }
6804
6826
  ngAfterViewInit() {
6805
6827
  this.editorElem = this.elementRef.nativeElement.querySelector(`#editor-${this.id}`);
6806
6828
  this.quillEditor = new QuillType(this.editorElem, {
@@ -6809,13 +6831,22 @@ class FngTextEditorComponent extends FngValueAccessorBaseDirective {
6809
6831
  });
6810
6832
  this.setEditorLabel();
6811
6833
  this.addWhitespaceMatcher();
6812
- this.addImageMatcher();
6834
+ this.addImageBlockerMatcher();
6835
+ this.addImagePasteHandler();
6836
+ this.addDropHandler();
6813
6837
  const content = this.valueSetter(this.quillEditor, this.innerValue || '');
6814
6838
  this.quillEditor.setContents(content, 'silent');
6815
6839
  this.quillEditor.getModule('history').clear();
6816
6840
  this.handle();
6817
6841
  this.quillEditor.on('text-change', () => {
6818
- this.value = this.valueGetter(this.editorElem);
6842
+ const rawHtml = this.valueGetter(this.editorElem);
6843
+ const sanitized = this.sanitizeHtml(rawHtml);
6844
+ // if content was sanitized, update the editor to show the sanitized version
6845
+ if (sanitized !== rawHtml) {
6846
+ const content = this.quillEditor.clipboard.convert({ html: sanitized });
6847
+ this.quillEditor.setContents(content, 'silent');
6848
+ }
6849
+ this.value = sanitized;
6819
6850
  });
6820
6851
  }
6821
6852
  ngOnChanges(changes) {
@@ -6943,22 +6974,60 @@ class FngTextEditorComponent extends FngValueAccessorBaseDirective {
6943
6974
  return delta;
6944
6975
  });
6945
6976
  }
6946
- addImageMatcher() {
6947
- // set up a matcher that does allow/disallow to paste images corresponding to config settings
6977
+ addImageBlockerMatcher() {
6978
+ // prevent image inserts at the Delta level when images are disabled
6979
+ // this catches all image inserts regardless of source (file paste, HTML paste, drag-drop)
6948
6980
  this.quillEditor.clipboard.addMatcher('IMG', (_node, delta) => {
6949
- // allowed, passthru delta
6950
- if (this.config?.toolbar?.image === true) {
6951
- return delta;
6981
+ if (this.config?.toolbar?.image === false) {
6982
+ console.warn('[TextEditor] Image insert prevented because image uploads are disabled in the toolbar configuration.');
6983
+ return new Delta(); // return empty delta to block the image
6952
6984
  }
6953
- // not allowed, remove image by setting up a new delta
6954
- return new Delta().insert('');
6985
+ return delta;
6955
6986
  });
6956
6987
  }
6988
+ addImagePasteHandler() {
6989
+ // prevent images from being pasted when images are disabled
6990
+ this.pasteListener = (e) => {
6991
+ const isOurEditor = this.editorElem?.contains(e.target);
6992
+ if (isOurEditor && this.config?.toolbar?.image === false && e.clipboardData?.types.includes('Files')) {
6993
+ const items = e.clipboardData.items;
6994
+ for (let i = 0; i < items.length; i++) {
6995
+ if (items[i].kind === 'file' && items[i].type.startsWith('image/')) {
6996
+ console.warn('[TextEditor] Image paste prevented because image uploads are disabled in the toolbar configuration.');
6997
+ e.preventDefault();
6998
+ e.stopPropagation();
6999
+ e.stopImmediatePropagation();
7000
+ break;
7001
+ }
7002
+ }
7003
+ }
7004
+ };
7005
+ this.document.addEventListener('paste', this.pasteListener, true);
7006
+ }
7007
+ addDropHandler() {
7008
+ // prevent drag-drop of images when images are disabled
7009
+ this.dropListener = (e) => {
7010
+ const isOurEditor = this.editorElem?.contains(e.target);
7011
+ if (isOurEditor && this.config?.toolbar?.image === false && e.dataTransfer?.types.includes('Files')) {
7012
+ const items = e.dataTransfer.items;
7013
+ for (let i = 0; i < items.length; i++) {
7014
+ if (items[i].kind === 'file' && items[i].type.startsWith('image/')) {
7015
+ console.warn('[TextEditor] Image drop prevented because image uploads are disabled in the toolbar configuration.');
7016
+ e.preventDefault();
7017
+ e.stopPropagation();
7018
+ e.stopImmediatePropagation();
7019
+ break;
7020
+ }
7021
+ }
7022
+ }
7023
+ };
7024
+ this.document.addEventListener('drop', this.dropListener, true);
7025
+ }
6957
7026
  handleWhitespace(value) {
6958
7027
  // set a placeholder for tab entity to avoid that quill removes it
6959
7028
  return value.replace(/&#9;/gi, '###tab###');
6960
7029
  }
6961
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: FngTextEditorComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
7030
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: FngTextEditorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6962
7031
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: FngTextEditorComponent, isStandalone: true, selector: "fng-text-editor", inputs: { config: "config", modules: "modules", label: "label", readOnly: "readOnly", maxLength: "maxLength", error: "error", hint: "hint", value: "value" }, outputs: { fngChange: "fngChange", change: "change" }, providers: [
6963
7032
  {
6964
7033
  provide: NG_VALUE_ACCESSOR,
@@ -6976,7 +7045,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
6976
7045
  multi: true
6977
7046
  }
6978
7047
  ], template: "<label class=\"fwe-input-text\" [class.fwe-disabled]=\"disabled\">\n <div class=\"fng-editor-toolbar\" [id]=\"'editor-toolbar-' + id\">\n <span class=\"ql-formats fwe-d-none\">\n <select class=\"ql-size\" aria-hidden=\"true\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n <span class=\"ql-formats fng-editor-toolbar-buttons-container fwe-mr-3\">\n @if (config?.toolbar?.bold) {\n <button type=\"button\" #btnBold class=\"ql-bold fwe-d-none action-bold\" aria-hidden=\"true\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.underline || config?.toolbar?.italic\"\n (click)=\"delegate($event, 'bold')\"\n [disabled]=\"disabled\"\n >\n <div class=\"fng-button-text fng-text-bold\">B</div>\n </button>\n }\n @if (config?.toolbar?.italic) {\n <button type=\"button\" #btnItalic class=\"ql-italic fwe-d-none action-italic\" aria-hidden=\"true\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.underline\"\n (click)=\"delegate($event, 'italic')\"\n [disabled]=\"disabled\"\n >\n <div class=\"fng-button-text fng-text-italic\">I</div>\n </button>\n }\n @if (config?.toolbar?.underline) {\n <button type=\"button\" #btnUnderline class=\"ql-underline fwe-d-none action-underline\" aria-hidden=\"true\"></button>\n <button type=\"button\" class=\"fwe-btn fng-button\" (click)=\"delegate($event, 'underline')\" [disabled]=\"disabled\">\n <div class=\"fng-button-text fng-text-underline\">U</div>\n </button>\n }\n\n @if (!hideDivider('typo')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (config?.toolbar?.alignCenter) {\n <button type=\"button\" #btnAlignCenter class=\"ql-align fwe-d-none action-align-center\" aria-hidden=\"true\" value=\"center\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-btn-toolbar-list fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.alignRight\"\n (click)=\"delegate($event, 'align-center')\"\n [disabled]=\"disabled\"\n >\n <i class=\"fng-icon-svg-text-align-center\" [class.fng-gray]=\"disabled\"></i>\n </button>\n }\n\n @if (config?.toolbar?.alignRight) {\n <button type=\"button\" #btnAlignRight class=\"ql-align fwe-d-none action-align-right\" aria-hidden=\"true\" value=\"right\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-btn-toolbar-list fng-button\"\n (click)=\"delegate($event, 'align-right')\"\n [disabled]=\"disabled\"\n >\n <i class=\"fng-icon-svg-text-align-right\" [class.fng-gray]=\"disabled\"></i>\n </button>\n }\n\n @if (!hideDivider('text-align')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (config?.toolbar?.bulletList) {\n <button type=\"button\" #btnUl class=\"ql-list fwe-d-none action-ul\" aria-hidden=\"true\" value=\"bullet\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-btn-toolbar-list fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.orderedList\"\n (click)=\"delegate($event, 'ul')\"\n [disabled]=\"disabled\"\n >\n <i class=\"fng-icon-svg-list-view\"></i>\n </button>\n }\n @if (config?.toolbar?.orderedList) {\n <button type=\"button\" #btnOl class=\"ql-list fwe-d-none action-ol\" aria-hidden=\"true\" value=\"ordered\"></button>\n <button type=\"button\" class=\"fwe-btn fng-btn-toolbar-list fng-button\" (click)=\"delegate($event, 'ol')\" [disabled]=\"disabled\">\n <i class=\"fng-icon-svg-enumeration\"></i>\n </button>\n }\n\n @if (!hideDivider('lists')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (config?.toolbar?.image) {\n <button type=\"button\" class=\"fwe-btn fng-btn-toolbar-list fng-button\" (click)=\"delegate($event, 'image')\" [disabled]=\"disabled\">\n <i class=\"fng-icon-svg-image\"></i>\n </button>\n <button type=\"button\" #btnImage class=\"ql-image fwe-d-none\" aria-hidden=\"true\"></button>\n }\n\n @if (!hideDivider('image')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (config?.toolbar?.link) {\n <button type=\"button\" class=\"fwe-btn fng-btn-toolbar-list fng-button\" (click)=\"delegate($event, 'link')\" [disabled]=\"disabled\">\n <i class=\"fng-icon-svg-link\"></i>\n </button>\n <button type=\"button\" #btnLink class=\"ql-link fwe-d-none\" aria-hidden=\"true\"></button>\n }\n </span>\n </div>\n <div class=\"fng-editor-container\" [id]=\"'editor-container-' + id\">\n <div class=\"fng-editor\" [id]=\"'editor-' + id\"></div>\n </div>\n <span class=\"fwe-input-text-label\" [id]=\"'editor-label-' + id\">{{ label }}</span>\n @if (hint) {\n <span class=\"fng-text-editor-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fng-text-editor-invalid\">{{ error }}</span>\n }\n @if (maxLength > 0 && value != null) {\n <span class=\"fwe-input-text-count\">{{ currentLength() }} / {{ maxLength }}</span>\n }\n</label>\n", styles: ["@charset \"UTF-8\";.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container:not(.ql-disabled) li[data-list=checked]>.ql-ui,.ql-container:not(.ql-disabled) li[data-list=unchecked]>.ql-ui{cursor:pointer}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0}@supports (counter-set: none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-set:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set: none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor table{border-collapse:collapse}.ql-editor td{border:1px solid #000;padding:2px 5px}.ql-editor ol{padding-left:1.5em}.ql-editor li{list-style-type:none;padding-left:1.5em;position:relative}.ql-editor li>.ql-ui:before{display:inline-block;margin-left:-1.5em;margin-right:.3em;text-align:right;white-space:nowrap;width:1.2em}.ql-editor li[data-list=checked]>.ql-ui,.ql-editor li[data-list=unchecked]>.ql-ui{color:#777}.ql-editor li[data-list=bullet]>.ql-ui:before{content:\"\\2022\"}.ql-editor li[data-list=checked]>.ql-ui:before{content:\"\\2611\"}.ql-editor li[data-list=unchecked]>.ql-ui:before{content:\"\\2610\"}@supports (counter-set: none){.ql-editor li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set: none){.ql-editor li[data-list]{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered]{counter-increment:list-0}.ql-editor li[data-list=ordered]>.ql-ui:before{content:counter(list-0,decimal) \". \"}.ql-editor li[data-list=ordered].ql-indent-1{counter-increment:list-1}.ql-editor li[data-list=ordered].ql-indent-1>.ql-ui:before{content:counter(list-1,lower-alpha) \". \"}@supports (counter-set: none){.ql-editor li[data-list].ql-indent-1{counter-set:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set: none){.ql-editor li[data-list].ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-2{counter-increment:list-2}.ql-editor li[data-list=ordered].ql-indent-2>.ql-ui:before{content:counter(list-2,lower-roman) \". \"}@supports (counter-set: none){.ql-editor li[data-list].ql-indent-2{counter-set:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set: none){.ql-editor li[data-list].ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-3{counter-increment:list-3}.ql-editor li[data-list=ordered].ql-indent-3>.ql-ui:before{content:counter(list-3,decimal) \". \"}@supports (counter-set: none){.ql-editor li[data-list].ql-indent-3{counter-set:list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set: none){.ql-editor li[data-list].ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-4{counter-increment:list-4}.ql-editor li[data-list=ordered].ql-indent-4>.ql-ui:before{content:counter(list-4,lower-alpha) \". \"}@supports (counter-set: none){.ql-editor li[data-list].ql-indent-4{counter-set:list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set: none){.ql-editor li[data-list].ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-5{counter-increment:list-5}.ql-editor li[data-list=ordered].ql-indent-5>.ql-ui:before{content:counter(list-5,lower-roman) \". \"}@supports (counter-set: none){.ql-editor li[data-list].ql-indent-5{counter-set:list-6 list-7 list-8 list-9}}@supports not (counter-set: none){.ql-editor li[data-list].ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-6{counter-increment:list-6}.ql-editor li[data-list=ordered].ql-indent-6>.ql-ui:before{content:counter(list-6,decimal) \". \"}@supports (counter-set: none){.ql-editor li[data-list].ql-indent-6{counter-set:list-7 list-8 list-9}}@supports not (counter-set: none){.ql-editor li[data-list].ql-indent-6{counter-reset:list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-7{counter-increment:list-7}.ql-editor li[data-list=ordered].ql-indent-7>.ql-ui:before{content:counter(list-7,lower-alpha) \". \"}@supports (counter-set: none){.ql-editor li[data-list].ql-indent-7{counter-set:list-8 list-9}}@supports not (counter-set: none){.ql-editor li[data-list].ql-indent-7{counter-reset:list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-8{counter-increment:list-8}.ql-editor li[data-list=ordered].ql-indent-8>.ql-ui:before{content:counter(list-8,lower-roman) \". \"}@supports (counter-set: none){.ql-editor li[data-list].ql-indent-8{counter-set:list-9}}@supports not (counter-set: none){.ql-editor li[data-list].ql-indent-8{counter-reset:list-9}}.ql-editor li[data-list=ordered].ql-indent-9{counter-increment:list-9}.ql-editor li[data-list=ordered].ql-indent-9>.ql-ui:before{content:counter(list-9,decimal) \". \"}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor li.ql-direction-rtl{padding-right:1.5em}.ql-editor li.ql-direction-rtl>.ql-ui:before{margin-left:.3em;margin-right:-1.5em;text-align:left}.ql-editor table{table-layout:fixed;width:100%}.ql-editor table td{outline:none}.ql-editor .ql-code-block-container{font-family:monospace}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor .ql-ui{position:absolute}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:\"\";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer: coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:\"\";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor .ql-code-block-container{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor .ql-code-block-container{margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor .ql-code-block-container{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=\"\"]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{content:\"Heading 1\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{content:\"Heading 2\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{content:\"Heading 3\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{content:\"Heading 4\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{content:\"Heading 5\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{content:\"Heading 6\"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:\"Sans Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:\"Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:\"Monospace\"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:\"Small\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:\"Large\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:\"Huge\"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-code-block-container{position:relative}.ql-code-block-container .ql-ui{right:5px;top:5px}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:\"Visit URL:\";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:\"Edit\";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:\"Remove\";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:\"Save\";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:\"Enter link:\"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:\"Enter formula:\"}.ql-snow .ql-tooltip[data-mode=video]:before{content:\"Enter video:\"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}fng-text-editor .fng-divider-y{display:inline-flex;flex:0 0 1px;height:24px;width:1px;background-color:var(--fwe-gray-400)}fng-text-editor .fng-editor{min-height:100%}fng-text-editor .fng-editor-container{order:2;height:160px;min-height:100%;overflow-y:auto;padding-top:4px;padding-bottom:4px;padding-left:8px;border:var(--fwe-control-border) solid 1px}@-moz-document url-prefix(){fng-text-editor .fng-editor-container{scrollbar-width:thin;scrollbar-color:var(--fwe-control-scrollbar) transparent}}@media (pointer: fine){fng-text-editor .fng-editor-container::-webkit-scrollbar{width:14px}fng-text-editor .fng-editor-container::-webkit-scrollbar-track{background:transparent}fng-text-editor .fng-editor-container::-webkit-scrollbar-thumb{overflow:visible;background-color:var(--fwe-control-scrollbar);border:3px solid rgba(242,243,245,0);-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:8px}}fng-text-editor .fng-editor-container:hover{border-color:var(--fwe-hero)}fng-text-editor .fng-editor-container[contenteditable=true]{outline:none}fng-text-editor .fng-editor-container[contenteditable=true]:focus{border-color:var(--fwe-hero)}fng-text-editor label.fwe-input-text{line-height:24px}fng-text-editor label.fwe-input-text .fwe-input-text-count{display:inline-block;line-height:var(--fwe-line-height-base);position:absolute;right:0;bottom:0;z-index:1;color:var(--fwe-text-disabled);font-size:var(--fwe-font-size-small)}fng-text-editor label.fwe-input-text .fwe-input-text-label{order:-1}fng-text-editor label.fwe-input-text .fng-text-editor-info{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:var(--fwe-line-height-base);position:absolute;left:0;top:unset;bottom:0;z-index:2;color:var(--fwe-text-disabled);font-size:var(--fwe-font-size-small)}fng-text-editor label.fwe-input-text.fwe-disabled{color:var(--fwe-text-disabled)}fng-text-editor label.fwe-input-text.fwe-disabled .fwe-input-text-label{color:var(--fwe-text-disabled)}fng-text-editor label.fwe-input-text.fwe-disabled .fng-editor-container{border-color:var(--fwe-control-disabled)!important}fng-text-editor label.fwe-input-text.fwe-disabled .fng-editor-container:hover{border-color:var(--fwe-control-disabled)!important}fng-text-editor label.fwe-input-text.fwe-disabled .fng-divider-y{background-color:var(--fwe-text-disabled)}fng-text-editor .fng-text-editor-invalid{display:none;line-height:1.5;position:absolute;left:0;bottom:0;z-index:2;color:var(--fwe-red);font-size:var(--fwe-font-size-small)}fng-text-editor.ng-dirty.ng-invalid label.fwe-input-text .fng-editor{box-shadow:none;outline:none}fng-text-editor.ng-dirty.ng-invalid label.fwe-input-text .fng-editor:disabled{border-bottom:1px solid var(--fwe-control-disabled)!important}fng-text-editor.ng-dirty.ng-invalid label.fwe-input-text .fng-editor:disabled~.fwe-input-text-label,fng-text-editor.ng-dirty.ng-invalid label.fwe-input-text .fng-editor:disabled~.fng-text-editor-invalid,fng-text-editor.ng-dirty.ng-invalid label.fwe-input-text .fng-editor:disabled~.fng-text-editor-info{color:var(--fwe-text-disabled)}fng-text-editor.ng-dirty.ng-invalid label.fwe-input-text .fng-editor:disabled~.fwe-input-text-label:after,fng-text-editor.ng-dirty.ng-invalid label.fwe-input-text .fng-editor:disabled~.fng-text-editor-invalid:after,fng-text-editor.ng-dirty.ng-invalid label.fwe-input-text .fng-editor:disabled~.fng-text-editor-info:after{color:var(--fwe-text-disabled)}fng-text-editor.ng-dirty.ng-invalid label.fwe-input-text .fng-editor-container{border-color:var(--fwe-red)}fng-text-editor.ng-dirty.ng-invalid .fng-text-editor-info{display:none!important}fng-text-editor.ng-dirty.ng-invalid .fng-text-editor-invalid{display:block!important}fng-text-editor .fng-text-bold{font-weight:var(--fwe-font-weight-bold)}fng-text-editor .fng-text-italic{font-style:italic}fng-text-editor .fng-text-underline{text-decoration:underline}fng-text-editor .fng-icon-svg-list-view{display:inline-block;min-width:16px;height:16px;background-repeat:no-repeat;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4NCiAgPGcgaWQ9Imxpc3Rfdmlld18xNi1nIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4IDgpIj4NCiAgICA8ZyBpZD0ibGlzdF92aWV3XzE2LWctMiIgZGF0YS1uYW1lPSJsaXN0X3ZpZXdfMTYtZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTggLTgpIj4NCiAgICAgIDxnIGlkPSJ3aGl0ZV9iYWNrZ3JvdW5kIiBkYXRhLW5hbWU9IndoaXRlIGJhY2tncm91bmQiPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI0OTY2IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNDk2NiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJub25lIi8+DQogICAgICA8L2c+DQogICAgICA8ZyBpZD0iY29udGVudCI+DQogICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMjQ5NjciIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDI0OTY3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDMpIiBmaWxsPSIjMzMzIi8+DQogICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMjQ5NjgiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDI0OTY4IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSAzKSIgZmlsbD0iIzMzMyIvPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI0OTY5IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNDk2OSIgd2lkdGg9IjIiIGhlaWdodD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSA3KSIgZmlsbD0iIzMzMyIvPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI0OTcwIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNDk3MCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUgNykiIGZpbGw9IiMzMzMiLz4NCiAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8yNDk3MSIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMjQ5NzEiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMTEpIiBmaWxsPSIjMzMzIi8+DQogICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMjQ5NzIiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDI0OTcyIiB3aWR0aD0iMTAiIGhlaWdodD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSAxMSkiIGZpbGw9IiMzMzMiLz4NCiAgICAgIDwvZz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPg0K)}fng-text-editor .fng-icon-svg-list-view.fng-gray{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4NCiAgPGcgaWQ9Imxpc3Rfdmlld18xNi1nIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4IDgpIj4NCiAgICA8ZyBpZD0ibGlzdF92aWV3XzE2LWctMiIgZGF0YS1uYW1lPSJsaXN0X3ZpZXdfMTYtZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTggLTgpIj4NCiAgICAgIDxnIGlkPSJ3aGl0ZV9iYWNrZ3JvdW5kIiBkYXRhLW5hbWU9IndoaXRlIGJhY2tncm91bmQiPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI0OTgwIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNDk4MCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJub25lIi8+DQogICAgICA8L2c+DQogICAgICA8ZyBpZD0iY29udGVudCI+DQogICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMjQ5ODEiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDI0OTgxIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDMpIiBmaWxsPSIjYjliYWJiIi8+DQogICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMjQ5ODIiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDI0OTgyIiB3aWR0aD0iMTAiIGhlaWdodD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSAzKSIgZmlsbD0iI2I5YmFiYiIvPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI0OTgzIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNDk4MyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSA3KSIgZmlsbD0iI2I5YmFiYiIvPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI0OTg0IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNDk4NCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUgNykiIGZpbGw9IiNiOWJhYmIiLz4NCiAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8yNDk4NSIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMjQ5ODUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMTEpIiBmaWxsPSIjYjliYWJiIi8+DQogICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMjQ5ODYiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDI0OTg2IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSAxMSkiIGZpbGw9IiNiOWJhYmIiLz4NCiAgICAgIDwvZz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPg0K)}fng-text-editor .fng-icon-svg-enumeration{display:inline-block;min-width:16px;height:16px;background-repeat:no-repeat;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4NCiAgPGcgaWQ9ImVudW1lcmF0aW9uXzE2LWciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDggOCkiPg0KICAgIDxnIGlkPSJlbnVtZXJhdGlvbl8xNi1nLTIiIGRhdGEtbmFtZT0iZW51bWVyYXRpb25fMTYtZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTggLTgpIj4NCiAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMjQ5OTQiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDI0OTk0IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNiAzKSIgZmlsbD0iIzMzMyIvPg0KICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8yNDk5NSIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMjQ5OTUiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2IDcpIiBmaWxsPSIjMzMzIi8+DQogICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI0OTk2IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNDk5NiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYgMTEpIiBmaWxsPSIjMzMzIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8zNjM2NSIgZGF0YS1uYW1lPSJQYXRoIDM2MzY1IiBkPSJNMi4xNCwxMS45NjlsLjItLjFjLjMtLjE4Ljc1Ny0uNDEzLDEuMDI3LS42MTVhMS40NzUsMS40NzUsMCwwLDAsLjcwNS0xLjIxNWMwLS43MzUtLjU3LTEuMjMtMS40NjMtMS4yM2EyLjY4NCwyLjY4NCwwLDAsMC0xLjg5Ljc0MmwuNi42MjJhMS41OCwxLjU4LDAsMCwxLDEuMDItLjQ4Yy4zNTIsMCwuNi4xNzMuNi41LDAsLjM0NS0uMjYyLjY4My0xLjMsMS4yNjgtLjQ0My4yNTUtLjUxLjI1NS0uNjM3LjM5VjEzSDMuOTkybC4yMTgtMVMyLjMsMTEuOTQ2LDIuMTQsMTEuOTY5WiIgZmlsbD0iIzMzMyIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMzYzNjYiIGRhdGEtbmFtZT0iUGF0aCAzNjM2NiIgZD0iTTIsNC4xMThWNkgxVjdINFY2SDNWM0gyLjNMLjgwNiw0LjAxN2wuMjYzLjUyM0E0LjYxNCw0LjYxNCwwLDAsMCwyLDQuMTE4WiIgZmlsbD0iIzMzMyIvPg0KICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8yNDk5NyIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMjQ5OTciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSIvPg0KICAgIDwvZz4NCiAgPC9nPg0KPC9zdmc+DQo=)}fng-text-editor .fng-icon-svg-enumeration.fng-gray{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4NCiAgPGcgaWQ9ImVudW1lcmF0aW9uXzE2LWciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDggOCkiPg0KICAgIDxnIGlkPSJlbnVtZXJhdGlvbl8xNi1nLTIiIGRhdGEtbmFtZT0iZW51bWVyYXRpb25fMTYtZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTggLTgpIj4NCiAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMjQ5OTQiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDI0OTk0IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNiAzKSIgZmlsbD0iI2I5YmFiYiIvPg0KICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8yNDk5NSIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMjQ5OTUiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2IDcpIiBmaWxsPSIjYjliYWJiIi8+DQogICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI0OTk2IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNDk5NiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYgMTEpIiBmaWxsPSIjYjliYWJiIi8+DQogICAgICA8cGF0aCBpZD0iUGF0aF8zNjM2NSIgZGF0YS1uYW1lPSJQYXRoIDM2MzY1IiBkPSJNMi4xNCwxMS45NjlsLjItLjFjLjMtLjE4Ljc1Ny0uNDEzLDEuMDI3LS42MTVhMS40NzUsMS40NzUsMCwwLDAsLjcwNS0xLjIxNWMwLS43MzUtLjU3LTEuMjMtMS40NjMtMS4yM2EyLjY4NCwyLjY4NCwwLDAsMC0xLjg5Ljc0MmwuNi42MjJhMS41OCwxLjU4LDAsMCwxLDEuMDItLjQ4Yy4zNTIsMCwuNi4xNzMuNi41LDAsLjM0NS0uMjYyLjY4My0xLjMsMS4yNjgtLjQ0My4yNTUtLjUxLjI1NS0uNjM3LjM5VjEzSDMuOTkybC4yMTgtMVMyLjMsMTEuOTQ2LDIuMTQsMTEuOTY5WiIgZmlsbD0iI2I5YmFiYiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMzYzNjYiIGRhdGEtbmFtZT0iUGF0aCAzNjM2NiIgZD0iTTIsNC4xMThWNkgxVjdINFY2SDNWM0gyLjNMLjgwNiw0LjAxN2wuMjYzLjUyM0E0LjYxNCw0LjYxNCwwLDAsMCwyLDQuMTE4WiIgZmlsbD0iI2I5YmFiYiIvPg0KICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8yNDk5NyIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMjQ5OTciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSIvPg0KICAgIDwvZz4NCiAgPC9nPg0KPC9zdmc+DQo=)}fng-text-editor .fng-icon-svg-image{display:inline-block;min-width:16px;height:16px;background-repeat:no-repeat;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4NCiAgPGcgaWQ9ImltYWdlXzE2LWciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDggOCkiPg0KICAgIDxnIGlkPSJpbWFnZV8xNi1nLTIiIGRhdGEtbmFtZT0iaW1hZ2VfMTYtZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTggLTgpIj4NCiAgICAgIDxnIGlkPSJ3aGl0ZV9iYWNrZ3JvdW5kIiBkYXRhLW5hbWU9IndoaXRlIGJhY2tncm91bmQiPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI1MDAyIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNTAwMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJub25lIi8+DQogICAgICA8L2c+DQogICAgICA8ZyBpZD0iY29udGVudCI+DQogICAgICAgIDxwYXRoIGlkPSJQYXRoXzM2MzY5IiBkYXRhLW5hbWU9IlBhdGggMzYzNjkiIGQ9Ik0xNCwzVjEzSDJWM0gxNG0xLTFIMVYxNEgxNVoiIGZpbGw9IiMzMzMiLz4NCiAgICAgICAgPGNpcmNsZSBpZD0iRWxsaXBzZV8xMzU1IiBkYXRhLW5hbWU9IkVsbGlwc2UgMTM1NSIgY3g9IjEuNSIgY3k9IjEuNSIgcj0iMS41IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzIDQpIiBmaWxsPSIjMzMzIi8+DQogICAgICAgIDxwYXRoIGlkPSJQYXRoXzM2MzcwIiBkYXRhLW5hbWU9IlBhdGggMzYzNzAiIGQ9Ik05LjUsN2wtMyw0TDUsOS41LDMsMTJIMTNaIiBmaWxsPSIjMzMzIi8+DQogICAgICA8L2c+DQogICAgPC9nPg0KICA8L2c+DQo8L3N2Zz4NCg==)}fng-text-editor .fng-icon-svg-image.fng-gray{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4NCiAgPGcgaWQ9ImltYWdlXzE2LWciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDggOCkiPg0KICAgIDxnIGlkPSJpbWFnZV8xNi1nLTIiIGRhdGEtbmFtZT0iaW1hZ2VfMTYtZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTggLTgpIj4NCiAgICAgIDxnIGlkPSJ3aGl0ZV9iYWNrZ3JvdW5kIiBkYXRhLW5hbWU9IndoaXRlIGJhY2tncm91bmQiPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI1MDAyIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNTAwMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJub25lIi8+DQogICAgICA8L2c+DQogICAgICA8ZyBpZD0iY29udGVudCI+DQogICAgICAgIDxwYXRoIGlkPSJQYXRoXzM2MzY5IiBkYXRhLW5hbWU9IlBhdGggMzYzNjkiIGQ9Ik0xNCwzVjEzSDJWM0gxNG0xLTFIMVYxNEgxNVoiIGZpbGw9IiNiOWJhYmIiLz4NCiAgICAgICAgPGNpcmNsZSBpZD0iRWxsaXBzZV8xMzU1IiBkYXRhLW5hbWU9IkVsbGlwc2UgMTM1NSIgY3g9IjEuNSIgY3k9IjEuNSIgcj0iMS41IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzIDQpIiBmaWxsPSIjYjliYWJiIi8+DQogICAgICAgIDxwYXRoIGlkPSJQYXRoXzM2MzcwIiBkYXRhLW5hbWU9IlBhdGggMzYzNzAiIGQ9Ik05LjUsN2wtMyw0TDUsOS41LDMsMTJIMTNaIiBmaWxsPSIjYjliYWJiIi8+DQogICAgICA8L2c+DQogICAgPC9nPg0KICA8L2c+DQo8L3N2Zz4NCg==)}fng-text-editor .fng-icon-svg-link{display:inline-block;min-width:16px;height:16px;background-repeat:no-repeat;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4NCiAgPGcgaWQ9ImxpbmtfMTYtZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA4KSI+DQogICAgPGcgaWQ9ImxpbmtfMTYtZy0yIiBkYXRhLW5hbWU9ImxpbmtfMTYtZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTggLTgpIj4NCiAgICAgIDxnIGlkPSJ3aGl0ZV9iYWNrZ3JvdW5kIiBkYXRhLW5hbWU9IndoaXRlIGJhY2tncm91bmQiPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI1MDA0IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNTAwNCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJub25lIi8+DQogICAgICA8L2c+DQogICAgICA8ZyBpZD0iY29udGVudCI+DQogICAgICAgIDxwYXRoIGlkPSJQYXRoXzM2MzczIiBkYXRhLW5hbWU9IlBhdGggMzYzNzMiIGQ9Ik01LjMsNy41MzdhMi40OCwyLjQ4LDAsMCwxLC43MzItMS43NjhMOS4yLDIuNmEyLjUsMi41LDAsMCwxLDMuNTM1LDBsLjE3Mi4xNzJhMi41LDIuNSwwLDAsMSwwLDMuNTM1bC0uNTg2LjU4Ni0uNzA3LS43MDdMMTIuMiw1LjZhMS41LDEuNSwwLDAsMCwwLTIuMTIxTDEyLjAyOSwzLjNhMS41LDEuNSwwLDAsMC0yLjEyMSwwTDYuNzM2LDYuNDc2YTEuNTM2LDEuNTM2LDAsMCwwLDAsMi4xMjFsLjU4Ni41ODYtLjcwNy43MDdMNi4wMjksOS4zQTIuNDgsMi40OCwwLDAsMSw1LjMsNy41MzdaIiBmaWxsPSIjMzMzIi8+DQogICAgICAgIDxwYXRoIGlkPSJQYXRoXzM2Mzc0IiBkYXRhLW5hbWU9IlBhdGggMzYzNzQiIGQ9Ik0yLjM2MiwxMS40NjJhMi40ODQsMi40ODQsMCwwLDEsLjczMi0xLjc2OGwuNTg2LS41ODYuNzA3LjcwN0wzLjgsMTAuNGExLjUzNSwxLjUzNSwwLDAsMCwwLDIuMTIxbC4xNzIuMTcyYTEuNSwxLjUsMCwwLDAsMi4xMjEsMGgwTDkuMjY1LDkuNTIyYTEuNTM2LDEuNTM2LDAsMCwwLDAtMi4xMjFsLS41ODYtLjU4Ni43MDctLjcwNy41ODYuNTg2YTIuNTU5LDIuNTU5LDAsMCwxLDAsMy41MzVMNi44LDEzLjRhMi41LDIuNSwwLDAsMS0zLjUzNCwwaDBsLS4xNzItLjE3MmEyLjQ4LDIuNDgsMCwwLDEtLjczMi0xLjc2OFoiIGZpbGw9IiMzMzMiLz4NCiAgICAgIDwvZz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPg0K)}fng-text-editor .fng-icon-svg-link.fng-gray{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4NCiAgPGcgaWQ9ImxpbmtfMTYtZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA4KSI+DQogICAgPGcgaWQ9ImxpbmtfMTYtZy0yIiBkYXRhLW5hbWU9ImxpbmtfMTYtZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTggLTgpIj4NCiAgICAgIDxnIGlkPSJ3aGl0ZV9iYWNrZ3JvdW5kIiBkYXRhLW5hbWU9IndoaXRlIGJhY2tncm91bmQiPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzI1MDA0IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAyNTAwNCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJub25lIi8+DQogICAgICA8L2c+DQogICAgICA8ZyBpZD0iY29udGVudCI+DQogICAgICAgIDxwYXRoIGlkPSJQYXRoXzM2MzczIiBkYXRhLW5hbWU9IlBhdGggMzYzNzMiIGQ9Ik01LjMsNy41MzdhMi40OCwyLjQ4LDAsMCwxLC43MzItMS43NjhMOS4yLDIuNmEyLjUsMi41LDAsMCwxLDMuNTM1LDBsLjE3Mi4xNzJhMi41LDIuNSwwLDAsMSwwLDMuNTM1bC0uNTg2LjU4Ni0uNzA3LS43MDdMMTIuMiw1LjZhMS41LDEuNSwwLDAsMCwwLTIuMTIxTDEyLjAyOSwzLjNhMS41LDEuNSwwLDAsMC0yLjEyMSwwTDYuNzM2LDYuNDc2YTEuNTM2LDEuNTM2LDAsMCwwLDAsMi4xMjFsLjU4Ni41ODYtLjcwNy43MDdMNi4wMjksOS4zQTIuNDgsMi40OCwwLDAsMSw1LjMsNy41MzdaIiBmaWxsPSIjYjliYWJiIi8+DQogICAgICAgIDxwYXRoIGlkPSJQYXRoXzM2Mzc0IiBkYXRhLW5hbWU9IlBhdGggMzYzNzQiIGQ9Ik0yLjM2MiwxMS40NjJhMi40ODQsMi40ODQsMCwwLDEsLjczMi0xLjc2OGwuNTg2LS41ODYuNzA3LjcwN0wzLjgsMTAuNGExLjUzNSwxLjUzNSwwLDAsMCwwLDIuMTIxbC4xNzIuMTcyYTEuNSwxLjUsMCwwLDAsMi4xMjEsMGgwTDkuMjY1LDkuNTIyYTEuNTM2LDEuNTM2LDAsMCwwLDAtMi4xMjFsLS41ODYtLjU4Ni43MDctLjcwNy41ODYuNTg2YTIuNTU5LDIuNTU5LDAsMCwxLDAsMy41MzVMNi44LDEzLjRhMi41LDIuNSwwLDAsMS0zLjUzNCwwaDBsLS4xNzItLjE3MmEyLjQ4LDIuNDgsMCwwLDEtLjczMi0xLjc2OFoiIGZpbGw9IiNiOWJhYmIiLz4NCiAgICAgIDwvZz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPg0K)}fng-text-editor .fng-icon-svg-text-align-center{width:12px;height:10px;background:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"10\" fill=\"rgb(51, 51, 51)\" viewBox=\"0 0 12 10\"><path d=\"M2,3H14V5H2Z\" transform=\"translate(-2 -3)\"/><path d=\"M5,7h6V9H5Z\" transform=\"translate(-2 -3)\"/><path d=\"M2,11H14v2H2Z\" transform=\"translate(-2 -3)\"/></svg>')}fng-text-editor .fng-icon-svg-text-align-center.fng-gray{background:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"10\" fill=\"rgb(185, 186, 187)\" viewBox=\"0 0 12 10\"><path d=\"M2,3H14V5H2Z\" transform=\"translate(-2 -3)\"/><path d=\"M5,7h6V9H5Z\" transform=\"translate(-2 -3)\"/><path d=\"M2,11H14v2H2Z\" transform=\"translate(-2 -3)\"/></svg>')}fng-text-editor .fng-icon-svg-text-align-right{width:12px;height:10px;background:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"10\" fill=\"rgb(51, 51, 51)\" viewBox=\"0 0 12 10\"><path d=\"M2,3H14V5H2Z\" transform=\"translate(-2 -3)\"/><path d=\"M8,7h6V9H8Z\" transform=\"translate(-2 -3)\"/><path d=\"M2,11H14v2H2Z\" transform=\"translate(-2 -3)\"/></svg>')}fng-text-editor .fng-icon-svg-text-align-right.fng-gray{background:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"10\" fill=\"rgb(185, 186, 187)\" viewBox=\"0 0 12 10\"><path d=\"M2,3H14V5H2Z\" transform=\"translate(-2 -3)\"/><path d=\"M8,7h6V9H8Z\" transform=\"translate(-2 -3)\"/><path d=\"M2,11H14v2H2Z\" transform=\"translate(-2 -3)\"/></svg>')}fng-text-editor .fng-editor-container{background:#fff;padding-right:8px}fng-text-editor .ql-tooltip{z-index:var(--fwe-z-index-tooltip)}fng-text-editor .ql-editor{font-family:var(--fwe-font-family-sans-serif);font-size:var(--fwe-font-size-base);padding:0;min-height:72px;overflow-x:hidden}fng-text-editor .ql-editor p::selection,fng-text-editor .ql-editor strong::selection,fng-text-editor .ql-editor em::selection,fng-text-editor .ql-editor u::selection,fng-text-editor .ql-editor ul::selection,fng-text-editor .ql-editor ol::selection,fng-text-editor .ql-editor li::selection,fng-text-editor .ql-editor a::selection{background:var(--fwe-sucaerul)}fng-text-editor .ql-container.ql-snow{border:0;background-color:var(--fwe-white)}fng-text-editor .ql-container.ql-snow .ql-tooltip{transform:translate(160px,12px);color:var(--fwe-black);box-shadow:-1px 1px 4px -1px #3333;border:1px solid var(--fwe-gray-200)}fng-text-editor .ql-container.ql-snow .ql-tooltip input{border:1px solid var(--fwe-gray-200)}fng-text-editor .ql-container.ql-snow .ql-tooltip input::selection{background:var(--fwe-sucaerul)}fng-text-editor .ql-container.ql-snow a{color:var(--fwe-caerul)}fng-text-editor .ql-toolbar.ql-snow{border:0;padding:4px 0}fng-text-editor .ql-toolbar.ql-snow .ql-formats.fng-editor-toolbar-buttons-container{display:flex;align-items:center;flex-wrap:wrap}fng-text-editor .ql-toolbar.ql-snow button{line-height:normal;box-sizing:border-box;display:inline-flex;text-align:center;padding:0 8px;height:32px;min-height:unset;color:var(--fwe-black);background:none;border-radius:4px;cursor:pointer;border:none;width:unset;max-width:24px;justify-content:center;align-items:center;float:unset}@media (hover: hover) and (pointer: fine){fng-text-editor .ql-toolbar.ql-snow button:hover{background-color:var(--fwe-control-hover);color:var(--fwe-black)}}fng-text-editor .ql-toolbar.ql-snow button:active{background-color:var(--fwe-control-active)}fng-text-editor .ql-toolbar.ql-snow button.ql-active+button{background-color:var(--fwe-control)}fng-text-editor .ql-toolbar.ql-snow button.fng-btn-toolbar-list{padding:0 6px}fng-text-editor .ql-toolbar.ql-snow button.fng-button i{pointer-events:none}fng-text-editor .ql-toolbar.ql-snow button.fng-button div{pointer-events:none}fng-text-editor .ql-toolbar .fng-button-text{min-width:12px;line-height:16px}fng-text-editor label.fwe-input-text.fwe-disabled .ql-toolbar{pointer-events:none}fng-text-editor label.fwe-input-text.fwe-disabled .ql-toolbar button{color:var(--fwe-text-disabled)}@media screen and (max-width: 375px){fng-text-editor label.fwe-input-text{padding-left:16px;padding-top:16px;padding-bottom:34px;background:var(--fwe-gray-200)}fng-text-editor label.fwe-input-text .fng-text-editor-info{bottom:8px;left:16px;color:var(--fwe-text)}fng-text-editor .fng-editor-container{margin-left:-16px;padding-top:12px;padding-left:16px;border:0}fng-text-editor .ql-toolbar.ql-snow .ql-formats.fng-editor-toolbar-buttons-container{flex-wrap:nowrap;overflow-x:auto}}\n/*!\n * Quill Editor v2.0.3\n * https://quilljs.com\n * Copyright (c) 2017-2024, Slab\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n"] }]
6979
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$3.DomSanitizer }], propDecorators: { btnBold: [{
7048
+ }], propDecorators: { btnBold: [{
6980
7049
  type: ViewChild,
6981
7050
  args: ['btnBold']
6982
7051
  }], btnItalic: [{