@esfaenza/text-editors 20.3.5 → 20.3.7

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.
@@ -491,15 +491,16 @@ class EditorComponent {
491
491
  this.EditorRef?.commands.insertContent(this.value);
492
492
  }
493
493
  setTypography(selectElement) {
494
- switch (selectElement.target.value) {
494
+ const select = selectElement.target;
495
+ switch (select.value) {
495
496
  case "paragraph":
496
497
  this.EditorRef?.chain().focus().setParagraph().run();
497
498
  break;
498
499
  default:
499
- this.EditorRef?.chain().focus().setHeading({ level: parseInt(selectElement.target.value.charAt(1)) }).run();
500
+ this.EditorRef?.chain().focus().setHeading({ level: parseInt(select.value.charAt(1)) }).run();
500
501
  break;
501
502
  }
502
- selectElement.target.value = "";
503
+ select.value = "";
503
504
  }
504
505
  setBold() {
505
506
  this.EditorRef?.chain().focus().toggleBold().run();
@@ -538,21 +539,22 @@ class EditorComponent {
538
539
  this.EditorRef?.chain().focus().deleteColumn().run();
539
540
  }
540
541
  setEmoji(selectElement) {
541
- this.EditorRef?.chain().focus().insertContent(selectElement.target.value).run();
542
- selectElement.target.value = "";
542
+ const select = selectElement.target;
543
+ this.EditorRef?.chain().focus().insertContent(select.value).run();
544
+ select.value = "";
543
545
  }
544
546
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
545
547
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: EditorComponent, isStandalone: true, selector: "es-editor", inputs: { EmojiSupport: { classPropertyName: "EmojiSupport", publicName: "EmojiSupport", isSignal: true, isRequired: false, transformFunction: null }, BulletListSupport: { classPropertyName: "BulletListSupport", publicName: "BulletListSupport", isSignal: true, isRequired: false, transformFunction: null }, TablesSupport: { classPropertyName: "TablesSupport", publicName: "TablesSupport", isSignal: true, isRequired: false, transformFunction: null }, Mode: { classPropertyName: "Mode", publicName: "Mode", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, MentionEntities: { classPropertyName: "MentionEntities", publicName: "MentionEntities", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { inputChange: "inputChange", inputFocus: "inputFocus", inputFinalized: "inputFinalized" }, providers: [
546
548
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditorComponent), multi: true },
547
549
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => EditorComponent), multi: true }
548
- ], viewQueries: [{ propertyName: "element", first: true, predicate: ["element"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"editor-shell\" [class.readonly]=\"readonly()\" [attr.style]=\"style()\">\r\n @if(!readonly()){\r\n <div class=\"editor-toolbar\">\r\n\r\n <!-- Typography -->\r\n <select id=\"heading-select\" (change)=\"setTypography($event)\">\r\n <option value=\"\" selected hidden>Pragrafo</option>\r\n <option value=\"paragraph\">Pragrafo</option>\r\n <option value=\"h1\">Intestazione 1</option>\r\n <option value=\"h2\">Intestazione 2</option>\r\n <option value=\"h3\">Intestazione 3</option>\r\n <option value=\"h4\">Intestazione 4</option>\r\n <option value=\"h5\">Intestazione 5</option>\r\n <option value=\"h6\">Intestazione 6</option>\r\n </select>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <!-- Formatting -->\r\n <button (click)=\"setBold()\"><b>B</b></button>\r\n <button (click)=\"setItalic()\"><i>I</i></button>\r\n <button (click)=\"setUnderlined()\"><u>U</u></button>\r\n\r\n <!-- Lists -->\r\n @if(BulletListSupport()){\r\n <button (click)=\"setBulletList()\">\u2022 Lista</button>\r\n }\r\n\r\n <div class=\"divider\"></div>\r\n\r\n @if(Mode() == \"html\" && TablesSupport())\r\n {\r\n <button (click)=\"addTable()\">\u229E<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button (click)=\"deleteTable()\">\u229E<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <button (click)=\"addRow()\">\uD83D\uDDA8<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button (click)=\"deleteRow()\">\uD83D\uDDA8<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <button (click)=\"addColumn()\">\uD83D\uDDC4<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button (click)=\"deleteColumn()\">\uD83D\uDDC4<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <div class=\"divider\"></div>\r\n }\r\n\r\n <!-- History -->\r\n <button (click)=\"undoAction()\">\u21B6</button>\r\n <button (click)=\"redoAction()\">\u21B7</button>\r\n\r\n @if(EmojiSupport()){\r\n <select id=\"emoji-select\" (change)=\"setEmoji($event)\">\r\n <option value=\"\" hidden selected>\uD83D\uDE0A</option>\r\n <option value=\"\uD83D\uDE0A\">\uD83D\uDE0A</option>\r\n <option value=\"\uD83D\uDE00\">\uD83D\uDE00</option>\r\n <option value=\"\uD83D\uDE02\">\uD83D\uDE02</option>\r\n <option value=\"\uD83D\uDD25\">\uD83D\uDD25</option>\r\n <option value=\"\uD83C\uDF89\">\uD83C\uDF89</option>\r\n <option value=\"\uD83D\uDE80\">\uD83D\uDE80</option>\r\n <option value=\"\u2764\uFE0F\">\u2764\uFE0F</option>\r\n <option value=\"\uD83D\uDC4D\">\uD83D\uDC4D</option>\r\n </select>\r\n }\r\n </div>\r\n }\r\n <div #element></div>\r\n</div>", styles: [".editor-shell{border:1px solid #dcdcdc;border-radius:10px;background:#fff;overflow:hidden;isolation:isolate;box-shadow:0 1px 2px #0000000a,0 6px 24px #0000000d;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.editor-shell.readonly{border:none;overflow:visible;box-shadow:none}.editor-toolbar{display:flex;align-items:center;gap:4px;padding:4px;background:linear-gradient(to bottom,#fafafa,#f3f3f3);border-bottom:1px solid #e5e5e5;flex-wrap:wrap}.editor-toolbar button{display:inline-flex;align-items:center;justify-content:center;line-height:1;min-width:36px;height:36px;padding:0 12px;border:1px solid #ddd;border-radius:8px;background:transparent;color:#333;font-size:18px;font-weight:500;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.editor-toolbar button:hover{background:#e9e9e9}.editor-toolbar button:active{transform:translateY(1px)}.editor-toolbar button.is-active{background:#dfe7ff;border-color:#c7d2fe;color:#2342c0}.editor-toolbar select{height:36px;padding:0 12px;border:1px solid #d6d6d6;border-radius:8px;background:#fff;font-size:14px;color:#222;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease,background .12s ease}.editor-toolbar select:hover{background:#fafafa}.editor-toolbar select:focus{outline:none;border-color:#8ba8ff;box-shadow:0 0 0 3px #6082ff26}.editor-toolbar .divider{width:1px;height:24px;background:#ddd;margin:0 2px}.ProseMirror{min-height:60px;padding:12px;outline:none;font-size:16px;line-height:1.7;color:#1f1f1f;caret-color:#2563eb}.ProseMirror h1,.ProseMirror h2,.ProseMirror h3{line-height:1.2;margin-top:.8em;margin-bottom:.4em;font-weight:700;letter-spacing:-.02em}.ProseMirror h1{font-size:2rem}.ProseMirror h2{font-size:1.5rem}.ProseMirror h3{font-size:1.25rem}.ProseMirror p{margin:0}.ProseMirror ul,.ProseMirror ol{padding-left:1.5rem;margin:5px 0}.ProseMirror li{margin:0}.ProseMirror blockquote{margin:1.4rem 0;padding-left:1rem;border-left:4px solid #c7d2fe;color:#555}.ProseMirror code{background:#f3f4f6;color:#d63384;padding:.15em .35em;border-radius:4px;font-size:.92em}.ProseMirror pre{background:#1f2937;color:#f9fafb;padding:16px 18px;border-radius:10px;overflow-x:auto;margin:1.2rem 0}.ProseMirror pre code{background:transparent;color:inherit;padding:0}.ProseMirror a{color:#2563eb;text-decoration:underline}.ProseMirror hr{border:none;border-top:1px solid #e2e2e2;margin:2rem 0}.ProseMirror table{width:100%;border-collapse:collapse;margin:1.2rem 0}.ProseMirror th,.ProseMirror td{border:1px solid #ddd;padding:5px;position:relative}.ProseMirror th{background:#f5f5f5;text-align:left}.ProseMirror .column-resize-handle{position:absolute;top:0;right:-2px;width:5px;height:100%;cursor:col-resize;background:transparent;z-index:20}.ProseMirror ::selection{background:#6082ff40}.suggestion-popup{display:flex;flex-direction:column;min-width:220px;padding:6px;background:#fff;z-index:99999999;border:1px solid #e5e5e5;border-radius:10px;box-shadow:0 12px 30px #00000014,0 2px 8px #0000000d}.suggestion-popup button{border:none;background:transparent;border-radius:8px;padding:8px 10px;text-align:left;cursor:pointer;font-size:14px}.suggestion-popup button:hover,.suggestion-popup button.is-selected{background:#eef2ff}.mention{display:inline-flex;align-items:center;background:#eef2ff;color:#304ffe;padding:2px 6px;border-radius:5px;font-weight:500}.img-wrapper{position:relative;display:inline-block;margin:12px 0}.img-wrapper img{max-width:100%;border-radius:10px;transition:opacity .2s ease}.img-toolbar{position:absolute;top:8px;left:8px;display:flex;gap:6px;background:#fffffff2;border:1px solid #e5e5e5;border-radius:8px;padding:4px;box-shadow:0 8px 20px #00000014}.img-toolbar.readonly{display:none}.img-toolbar button{border:none;background:transparent;padding:4px 6px;cursor:pointer;font-size:12px}.img-toolbar button:hover{background:#eef2ff;border-radius:6px}.img-resize-handle{position:absolute;right:0;bottom:0;width:12px;height:12px;background:#2563eb;border-radius:3px;cursor:se-resize}.img-resize-handle.readonly{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], encapsulation: i0.ViewEncapsulation.None }); }
550
+ ], viewQueries: [{ propertyName: "element", first: true, predicate: ["element"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"editor-shell\" [class.readonly]=\"readonly()\" [attr.style]=\"style()\">\r\n @if(!readonly()){\r\n <div class=\"editor-toolbar\">\r\n\r\n <!-- Typography -->\r\n <select id=\"heading-select\" (change)=\"setTypography($event)\">\r\n <option value=\"\" selected hidden>Pragrafo</option>\r\n <option value=\"paragraph\">Pragrafo</option>\r\n <option value=\"h1\">Intestazione 1</option>\r\n <option value=\"h2\">Intestazione 2</option>\r\n <option value=\"h3\">Intestazione 3</option>\r\n <option value=\"h4\">Intestazione 4</option>\r\n <option value=\"h5\">Intestazione 5</option>\r\n <option value=\"h6\">Intestazione 6</option>\r\n </select>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <!-- Formatting -->\r\n <button type=\"button\" (click)=\"setBold()\"><b>B</b></button>\r\n <button type=\"button\" (click)=\"setItalic()\"><i>I</i></button>\r\n <button type=\"button\" (click)=\"setUnderlined()\"><u>U</u></button>\r\n\r\n <!-- Lists -->\r\n @if(BulletListSupport()){\r\n <button type=\"button\" (click)=\"setBulletList()\">\u2022 Lista</button>\r\n }\r\n\r\n <div class=\"divider\"></div>\r\n\r\n @if(Mode() == \"html\" && TablesSupport())\r\n {\r\n <button type=\"button\" (click)=\"addTable()\">\u229E<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button type=\"button\" (click)=\"deleteTable()\">\u229E<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <button type=\"button\" (click)=\"addRow()\">\uD83D\uDDA8<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button type=\"button\" (click)=\"deleteRow()\">\uD83D\uDDA8<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <button type=\"button\" (click)=\"addColumn()\">\uD83D\uDDC4<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button type=\"button\" (click)=\"deleteColumn()\">\uD83D\uDDC4<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <div class=\"divider\"></div>\r\n }\r\n\r\n <!-- History -->\r\n <button type=\"button\" (click)=\"undoAction()\">\u21B6</button>\r\n <button type=\"button\" (click)=\"redoAction()\">\u21B7</button>\r\n\r\n @if(EmojiSupport()){\r\n <select id=\"emoji-select\" (change)=\"setEmoji($event)\">\r\n <option value=\"\" hidden selected>\uD83D\uDE0A</option>\r\n <option value=\"\uD83D\uDE0A\">\uD83D\uDE0A</option>\r\n <option value=\"\uD83D\uDE00\">\uD83D\uDE00</option>\r\n <option value=\"\uD83D\uDE02\">\uD83D\uDE02</option>\r\n <option value=\"\uD83D\uDD25\">\uD83D\uDD25</option>\r\n <option value=\"\uD83C\uDF89\">\uD83C\uDF89</option>\r\n <option value=\"\uD83D\uDE80\">\uD83D\uDE80</option>\r\n <option value=\"\u2764\uFE0F\">\u2764\uFE0F</option>\r\n <option value=\"\uD83D\uDC4D\">\uD83D\uDC4D</option>\r\n </select>\r\n }\r\n </div>\r\n }\r\n <div #element></div>\r\n</div>", styles: [".editor-shell{border:1px solid #dcdcdc;border-radius:10px;background:#fff;overflow:hidden;isolation:isolate;box-shadow:0 1px 2px #0000000a,0 6px 24px #0000000d;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.editor-shell.readonly{border:none;overflow:visible;box-shadow:none}.editor-toolbar{display:flex;align-items:center;gap:4px;padding:4px;background:linear-gradient(to bottom,#fafafa,#f3f3f3);border-bottom:1px solid #e5e5e5;flex-wrap:wrap}.editor-toolbar button{display:inline-flex;align-items:center;justify-content:center;line-height:1;min-width:36px;height:36px;padding:0 12px;border:1px solid #ddd;border-radius:8px;background:transparent;color:#333;font-size:18px;font-weight:500;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.editor-toolbar button:hover{background:#e9e9e9}.editor-toolbar button:active{transform:translateY(1px)}.editor-toolbar button.is-active{background:#dfe7ff;border-color:#c7d2fe;color:#2342c0}.editor-toolbar select{height:36px;padding:0 12px;border:1px solid #d6d6d6;border-radius:8px;background:#fff;font-size:14px;color:#222;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease,background .12s ease}.editor-toolbar select:hover{background:#fafafa}.editor-toolbar select:focus{outline:none;border-color:#8ba8ff;box-shadow:0 0 0 3px #6082ff26}.editor-toolbar .divider{width:1px;height:24px;background:#ddd;margin:0 2px}.ProseMirror{min-height:60px;padding:12px;outline:none;font-size:16px;line-height:1.7;color:#1f1f1f;caret-color:#2563eb}.ProseMirror h1,.ProseMirror h2,.ProseMirror h3{line-height:1.2;margin-top:.8em;margin-bottom:.4em;font-weight:700;letter-spacing:-.02em}.ProseMirror h1{font-size:2rem}.ProseMirror h2{font-size:1.5rem}.ProseMirror h3{font-size:1.25rem}.ProseMirror p{margin:0}.ProseMirror ul,.ProseMirror ol{padding-left:1.5rem;margin:5px 0}.ProseMirror li{margin:0}.ProseMirror blockquote{margin:1.4rem 0;padding-left:1rem;border-left:4px solid #c7d2fe;color:#555}.ProseMirror code{background:#f3f4f6;color:#d63384;padding:.15em .35em;border-radius:4px;font-size:.92em}.ProseMirror pre{background:#1f2937;color:#f9fafb;padding:16px 18px;border-radius:10px;overflow-x:auto;margin:1.2rem 0}.ProseMirror pre code{background:transparent;color:inherit;padding:0}.ProseMirror a{color:#2563eb;text-decoration:underline}.ProseMirror hr{border:none;border-top:1px solid #e2e2e2;margin:2rem 0}.ProseMirror table{width:100%;border-collapse:collapse;margin:1.2rem 0}.ProseMirror th,.ProseMirror td{border:1px solid #ddd;padding:5px;position:relative}.ProseMirror th{background:#f5f5f5;text-align:left}.ProseMirror .column-resize-handle{position:absolute;top:0;right:-2px;width:5px;height:100%;cursor:col-resize;background:transparent;z-index:20}.ProseMirror ::selection{background:#6082ff40}.suggestion-popup{display:flex;flex-direction:column;min-width:220px;padding:6px;background:#fff;z-index:99999999;border:1px solid #e5e5e5;border-radius:10px;box-shadow:0 12px 30px #00000014,0 2px 8px #0000000d}.suggestion-popup button{border:none;background:transparent;border-radius:8px;padding:8px 10px;text-align:left;cursor:pointer;font-size:14px}.suggestion-popup button:hover,.suggestion-popup button.is-selected{background:#eef2ff}.mention{display:inline-flex;align-items:center;background:#eef2ff;color:#304ffe;padding:2px 6px;border-radius:5px;font-weight:500}.img-wrapper{position:relative;display:inline-block;margin:12px 0}.img-wrapper img{max-width:100%;border-radius:10px;transition:opacity .2s ease}.img-toolbar{position:absolute;top:8px;left:8px;display:flex;gap:6px;background:#fffffff2;border:1px solid #e5e5e5;border-radius:8px;padding:4px;box-shadow:0 8px 20px #00000014}.img-toolbar.readonly{display:none}.img-toolbar button{border:none;background:transparent;padding:4px 6px;cursor:pointer;font-size:12px}.img-toolbar button:hover{background:#eef2ff;border-radius:6px}.img-resize-handle{position:absolute;right:0;bottom:0;width:12px;height:12px;background:#2563eb;border-radius:3px;cursor:se-resize}.img-resize-handle.readonly{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], encapsulation: i0.ViewEncapsulation.None }); }
549
551
  }
550
552
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EditorComponent, decorators: [{
551
553
  type: Component,
552
554
  args: [{ selector: "es-editor", standalone: true, imports: [CommonModule, FormsModule], encapsulation: ViewEncapsulation.None, providers: [
553
555
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditorComponent), multi: true },
554
556
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => EditorComponent), multi: true }
555
- ], template: "<div class=\"editor-shell\" [class.readonly]=\"readonly()\" [attr.style]=\"style()\">\r\n @if(!readonly()){\r\n <div class=\"editor-toolbar\">\r\n\r\n <!-- Typography -->\r\n <select id=\"heading-select\" (change)=\"setTypography($event)\">\r\n <option value=\"\" selected hidden>Pragrafo</option>\r\n <option value=\"paragraph\">Pragrafo</option>\r\n <option value=\"h1\">Intestazione 1</option>\r\n <option value=\"h2\">Intestazione 2</option>\r\n <option value=\"h3\">Intestazione 3</option>\r\n <option value=\"h4\">Intestazione 4</option>\r\n <option value=\"h5\">Intestazione 5</option>\r\n <option value=\"h6\">Intestazione 6</option>\r\n </select>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <!-- Formatting -->\r\n <button (click)=\"setBold()\"><b>B</b></button>\r\n <button (click)=\"setItalic()\"><i>I</i></button>\r\n <button (click)=\"setUnderlined()\"><u>U</u></button>\r\n\r\n <!-- Lists -->\r\n @if(BulletListSupport()){\r\n <button (click)=\"setBulletList()\">\u2022 Lista</button>\r\n }\r\n\r\n <div class=\"divider\"></div>\r\n\r\n @if(Mode() == \"html\" && TablesSupport())\r\n {\r\n <button (click)=\"addTable()\">\u229E<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button (click)=\"deleteTable()\">\u229E<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <button (click)=\"addRow()\">\uD83D\uDDA8<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button (click)=\"deleteRow()\">\uD83D\uDDA8<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <button (click)=\"addColumn()\">\uD83D\uDDC4<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button (click)=\"deleteColumn()\">\uD83D\uDDC4<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <div class=\"divider\"></div>\r\n }\r\n\r\n <!-- History -->\r\n <button (click)=\"undoAction()\">\u21B6</button>\r\n <button (click)=\"redoAction()\">\u21B7</button>\r\n\r\n @if(EmojiSupport()){\r\n <select id=\"emoji-select\" (change)=\"setEmoji($event)\">\r\n <option value=\"\" hidden selected>\uD83D\uDE0A</option>\r\n <option value=\"\uD83D\uDE0A\">\uD83D\uDE0A</option>\r\n <option value=\"\uD83D\uDE00\">\uD83D\uDE00</option>\r\n <option value=\"\uD83D\uDE02\">\uD83D\uDE02</option>\r\n <option value=\"\uD83D\uDD25\">\uD83D\uDD25</option>\r\n <option value=\"\uD83C\uDF89\">\uD83C\uDF89</option>\r\n <option value=\"\uD83D\uDE80\">\uD83D\uDE80</option>\r\n <option value=\"\u2764\uFE0F\">\u2764\uFE0F</option>\r\n <option value=\"\uD83D\uDC4D\">\uD83D\uDC4D</option>\r\n </select>\r\n }\r\n </div>\r\n }\r\n <div #element></div>\r\n</div>", styles: [".editor-shell{border:1px solid #dcdcdc;border-radius:10px;background:#fff;overflow:hidden;isolation:isolate;box-shadow:0 1px 2px #0000000a,0 6px 24px #0000000d;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.editor-shell.readonly{border:none;overflow:visible;box-shadow:none}.editor-toolbar{display:flex;align-items:center;gap:4px;padding:4px;background:linear-gradient(to bottom,#fafafa,#f3f3f3);border-bottom:1px solid #e5e5e5;flex-wrap:wrap}.editor-toolbar button{display:inline-flex;align-items:center;justify-content:center;line-height:1;min-width:36px;height:36px;padding:0 12px;border:1px solid #ddd;border-radius:8px;background:transparent;color:#333;font-size:18px;font-weight:500;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.editor-toolbar button:hover{background:#e9e9e9}.editor-toolbar button:active{transform:translateY(1px)}.editor-toolbar button.is-active{background:#dfe7ff;border-color:#c7d2fe;color:#2342c0}.editor-toolbar select{height:36px;padding:0 12px;border:1px solid #d6d6d6;border-radius:8px;background:#fff;font-size:14px;color:#222;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease,background .12s ease}.editor-toolbar select:hover{background:#fafafa}.editor-toolbar select:focus{outline:none;border-color:#8ba8ff;box-shadow:0 0 0 3px #6082ff26}.editor-toolbar .divider{width:1px;height:24px;background:#ddd;margin:0 2px}.ProseMirror{min-height:60px;padding:12px;outline:none;font-size:16px;line-height:1.7;color:#1f1f1f;caret-color:#2563eb}.ProseMirror h1,.ProseMirror h2,.ProseMirror h3{line-height:1.2;margin-top:.8em;margin-bottom:.4em;font-weight:700;letter-spacing:-.02em}.ProseMirror h1{font-size:2rem}.ProseMirror h2{font-size:1.5rem}.ProseMirror h3{font-size:1.25rem}.ProseMirror p{margin:0}.ProseMirror ul,.ProseMirror ol{padding-left:1.5rem;margin:5px 0}.ProseMirror li{margin:0}.ProseMirror blockquote{margin:1.4rem 0;padding-left:1rem;border-left:4px solid #c7d2fe;color:#555}.ProseMirror code{background:#f3f4f6;color:#d63384;padding:.15em .35em;border-radius:4px;font-size:.92em}.ProseMirror pre{background:#1f2937;color:#f9fafb;padding:16px 18px;border-radius:10px;overflow-x:auto;margin:1.2rem 0}.ProseMirror pre code{background:transparent;color:inherit;padding:0}.ProseMirror a{color:#2563eb;text-decoration:underline}.ProseMirror hr{border:none;border-top:1px solid #e2e2e2;margin:2rem 0}.ProseMirror table{width:100%;border-collapse:collapse;margin:1.2rem 0}.ProseMirror th,.ProseMirror td{border:1px solid #ddd;padding:5px;position:relative}.ProseMirror th{background:#f5f5f5;text-align:left}.ProseMirror .column-resize-handle{position:absolute;top:0;right:-2px;width:5px;height:100%;cursor:col-resize;background:transparent;z-index:20}.ProseMirror ::selection{background:#6082ff40}.suggestion-popup{display:flex;flex-direction:column;min-width:220px;padding:6px;background:#fff;z-index:99999999;border:1px solid #e5e5e5;border-radius:10px;box-shadow:0 12px 30px #00000014,0 2px 8px #0000000d}.suggestion-popup button{border:none;background:transparent;border-radius:8px;padding:8px 10px;text-align:left;cursor:pointer;font-size:14px}.suggestion-popup button:hover,.suggestion-popup button.is-selected{background:#eef2ff}.mention{display:inline-flex;align-items:center;background:#eef2ff;color:#304ffe;padding:2px 6px;border-radius:5px;font-weight:500}.img-wrapper{position:relative;display:inline-block;margin:12px 0}.img-wrapper img{max-width:100%;border-radius:10px;transition:opacity .2s ease}.img-toolbar{position:absolute;top:8px;left:8px;display:flex;gap:6px;background:#fffffff2;border:1px solid #e5e5e5;border-radius:8px;padding:4px;box-shadow:0 8px 20px #00000014}.img-toolbar.readonly{display:none}.img-toolbar button{border:none;background:transparent;padding:4px 6px;cursor:pointer;font-size:12px}.img-toolbar button:hover{background:#eef2ff;border-radius:6px}.img-resize-handle{position:absolute;right:0;bottom:0;width:12px;height:12px;background:#2563eb;border-radius:3px;cursor:se-resize}.img-resize-handle.readonly{display:none}\n"] }]
557
+ ], template: "<div class=\"editor-shell\" [class.readonly]=\"readonly()\" [attr.style]=\"style()\">\r\n @if(!readonly()){\r\n <div class=\"editor-toolbar\">\r\n\r\n <!-- Typography -->\r\n <select id=\"heading-select\" (change)=\"setTypography($event)\">\r\n <option value=\"\" selected hidden>Pragrafo</option>\r\n <option value=\"paragraph\">Pragrafo</option>\r\n <option value=\"h1\">Intestazione 1</option>\r\n <option value=\"h2\">Intestazione 2</option>\r\n <option value=\"h3\">Intestazione 3</option>\r\n <option value=\"h4\">Intestazione 4</option>\r\n <option value=\"h5\">Intestazione 5</option>\r\n <option value=\"h6\">Intestazione 6</option>\r\n </select>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <!-- Formatting -->\r\n <button type=\"button\" (click)=\"setBold()\"><b>B</b></button>\r\n <button type=\"button\" (click)=\"setItalic()\"><i>I</i></button>\r\n <button type=\"button\" (click)=\"setUnderlined()\"><u>U</u></button>\r\n\r\n <!-- Lists -->\r\n @if(BulletListSupport()){\r\n <button type=\"button\" (click)=\"setBulletList()\">\u2022 Lista</button>\r\n }\r\n\r\n <div class=\"divider\"></div>\r\n\r\n @if(Mode() == \"html\" && TablesSupport())\r\n {\r\n <button type=\"button\" (click)=\"addTable()\">\u229E<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button type=\"button\" (click)=\"deleteTable()\">\u229E<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <button type=\"button\" (click)=\"addRow()\">\uD83D\uDDA8<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button type=\"button\" (click)=\"deleteRow()\">\uD83D\uDDA8<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <button type=\"button\" (click)=\"addColumn()\">\uD83D\uDDC4<span style=\"font-size: 10px;\">\u271A</span></button>\r\n <button type=\"button\" (click)=\"deleteColumn()\">\uD83D\uDDC4<span style=\"font-size: 10px;\">\u25AC</span></button>\r\n <div class=\"divider\"></div>\r\n }\r\n\r\n <!-- History -->\r\n <button type=\"button\" (click)=\"undoAction()\">\u21B6</button>\r\n <button type=\"button\" (click)=\"redoAction()\">\u21B7</button>\r\n\r\n @if(EmojiSupport()){\r\n <select id=\"emoji-select\" (change)=\"setEmoji($event)\">\r\n <option value=\"\" hidden selected>\uD83D\uDE0A</option>\r\n <option value=\"\uD83D\uDE0A\">\uD83D\uDE0A</option>\r\n <option value=\"\uD83D\uDE00\">\uD83D\uDE00</option>\r\n <option value=\"\uD83D\uDE02\">\uD83D\uDE02</option>\r\n <option value=\"\uD83D\uDD25\">\uD83D\uDD25</option>\r\n <option value=\"\uD83C\uDF89\">\uD83C\uDF89</option>\r\n <option value=\"\uD83D\uDE80\">\uD83D\uDE80</option>\r\n <option value=\"\u2764\uFE0F\">\u2764\uFE0F</option>\r\n <option value=\"\uD83D\uDC4D\">\uD83D\uDC4D</option>\r\n </select>\r\n }\r\n </div>\r\n }\r\n <div #element></div>\r\n</div>", styles: [".editor-shell{border:1px solid #dcdcdc;border-radius:10px;background:#fff;overflow:hidden;isolation:isolate;box-shadow:0 1px 2px #0000000a,0 6px 24px #0000000d;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.editor-shell.readonly{border:none;overflow:visible;box-shadow:none}.editor-toolbar{display:flex;align-items:center;gap:4px;padding:4px;background:linear-gradient(to bottom,#fafafa,#f3f3f3);border-bottom:1px solid #e5e5e5;flex-wrap:wrap}.editor-toolbar button{display:inline-flex;align-items:center;justify-content:center;line-height:1;min-width:36px;height:36px;padding:0 12px;border:1px solid #ddd;border-radius:8px;background:transparent;color:#333;font-size:18px;font-weight:500;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.editor-toolbar button:hover{background:#e9e9e9}.editor-toolbar button:active{transform:translateY(1px)}.editor-toolbar button.is-active{background:#dfe7ff;border-color:#c7d2fe;color:#2342c0}.editor-toolbar select{height:36px;padding:0 12px;border:1px solid #d6d6d6;border-radius:8px;background:#fff;font-size:14px;color:#222;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease,background .12s ease}.editor-toolbar select:hover{background:#fafafa}.editor-toolbar select:focus{outline:none;border-color:#8ba8ff;box-shadow:0 0 0 3px #6082ff26}.editor-toolbar .divider{width:1px;height:24px;background:#ddd;margin:0 2px}.ProseMirror{min-height:60px;padding:12px;outline:none;font-size:16px;line-height:1.7;color:#1f1f1f;caret-color:#2563eb}.ProseMirror h1,.ProseMirror h2,.ProseMirror h3{line-height:1.2;margin-top:.8em;margin-bottom:.4em;font-weight:700;letter-spacing:-.02em}.ProseMirror h1{font-size:2rem}.ProseMirror h2{font-size:1.5rem}.ProseMirror h3{font-size:1.25rem}.ProseMirror p{margin:0}.ProseMirror ul,.ProseMirror ol{padding-left:1.5rem;margin:5px 0}.ProseMirror li{margin:0}.ProseMirror blockquote{margin:1.4rem 0;padding-left:1rem;border-left:4px solid #c7d2fe;color:#555}.ProseMirror code{background:#f3f4f6;color:#d63384;padding:.15em .35em;border-radius:4px;font-size:.92em}.ProseMirror pre{background:#1f2937;color:#f9fafb;padding:16px 18px;border-radius:10px;overflow-x:auto;margin:1.2rem 0}.ProseMirror pre code{background:transparent;color:inherit;padding:0}.ProseMirror a{color:#2563eb;text-decoration:underline}.ProseMirror hr{border:none;border-top:1px solid #e2e2e2;margin:2rem 0}.ProseMirror table{width:100%;border-collapse:collapse;margin:1.2rem 0}.ProseMirror th,.ProseMirror td{border:1px solid #ddd;padding:5px;position:relative}.ProseMirror th{background:#f5f5f5;text-align:left}.ProseMirror .column-resize-handle{position:absolute;top:0;right:-2px;width:5px;height:100%;cursor:col-resize;background:transparent;z-index:20}.ProseMirror ::selection{background:#6082ff40}.suggestion-popup{display:flex;flex-direction:column;min-width:220px;padding:6px;background:#fff;z-index:99999999;border:1px solid #e5e5e5;border-radius:10px;box-shadow:0 12px 30px #00000014,0 2px 8px #0000000d}.suggestion-popup button{border:none;background:transparent;border-radius:8px;padding:8px 10px;text-align:left;cursor:pointer;font-size:14px}.suggestion-popup button:hover,.suggestion-popup button.is-selected{background:#eef2ff}.mention{display:inline-flex;align-items:center;background:#eef2ff;color:#304ffe;padding:2px 6px;border-radius:5px;font-weight:500}.img-wrapper{position:relative;display:inline-block;margin:12px 0}.img-wrapper img{max-width:100%;border-radius:10px;transition:opacity .2s ease}.img-toolbar{position:absolute;top:8px;left:8px;display:flex;gap:6px;background:#fffffff2;border:1px solid #e5e5e5;border-radius:8px;padding:4px;box-shadow:0 8px 20px #00000014}.img-toolbar.readonly{display:none}.img-toolbar button{border:none;background:transparent;padding:4px 6px;cursor:pointer;font-size:12px}.img-toolbar button:hover{background:#eef2ff;border-radius:6px}.img-resize-handle{position:absolute;right:0;bottom:0;width:12px;height:12px;background:#2563eb;border-radius:3px;cursor:se-resize}.img-resize-handle.readonly{display:none}\n"] }]
556
558
  }], propDecorators: { element: [{ type: i0.ViewChild, args: ["element", { isSignal: true }] }], EmojiSupport: [{ type: i0.Input, args: [{ isSignal: true, alias: "EmojiSupport", required: false }] }], BulletListSupport: [{ type: i0.Input, args: [{ isSignal: true, alias: "BulletListSupport", required: false }] }], TablesSupport: [{ type: i0.Input, args: [{ isSignal: true, alias: "TablesSupport", required: false }] }], Mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "Mode", required: true }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], MentionEntities: [{ type: i0.Input, args: [{ isSignal: true, alias: "MentionEntities", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], inputChange: [{
557
559
  type: Output
558
560
  }], inputFocus: [{
@@ -1 +1 @@
1
- {"version":3,"file":"esfaenza-text-editors.mjs","sources":["../../../projects/text-editors/src/lib/editor/extensions/CustomMention.ts","../../../projects/text-editors/src/lib/editor/extensions/CustomeImageWithView.ts","../../../projects/text-editors/src/lib/editor/extensions/FontFamily.ts","../../../projects/text-editors/src/lib/editor/extensions/LineHeight.ts","../../../projects/text-editors/src/lib/editor/extensions/Suggestion.ts","../../../projects/text-editors/src/lib/editor/extensions/FontSize.ts","../../../projects/text-editors/src/lib/editor/editor.component.ts","../../../projects/text-editors/src/lib/editor/editor.component.html","../../../projects/text-editors/src/lib/tokens.ts","../../../projects/text-editors/src/public-api.ts","../../../projects/text-editors/src/esfaenza-text-editors.ts"],"sourcesContent":["import Mention from '@tiptap/extension-mention'\r\nimport { marked } from 'marked'\r\n\r\nexport const CustomMention = Mention.extend({\r\n renderMarkdown(node) { return `@${node.attrs?.id || node.attrs?.label}` },\r\n parseMarkdown(token) { return { type: token.type, attrs: { id: token.text, label: token.text } } },\r\n});\r\n\r\nmarked.use({\r\n extensions: [\r\n {\r\n name: 'mention',\r\n level: 'inline',\r\n\r\n start(src) {\r\n const match = /(^|\\s)@/.exec(src)\r\n return match ? match.index + match[1].length : undefined\r\n },\r\n\r\n tokenizer(src) {\r\n const match = /^@([a-zA-Z]+)(?=\\s|:|$)/.exec(src)\r\n if (match && match[1].length == 7)\r\n return { type: 'mention', raw: match[0], text: match[1] }\r\n },\r\n\r\n renderer(token) { return token.raw },\r\n },\r\n ],\r\n})\r\n\r\nexport const mymarked = marked;\r\n","import { Image } from '@tiptap/extension-image'\r\nimport { Plugin } from '@tiptap/pm/state'\r\n\r\nlet handleFiles = async (view: any, files: FileList | undefined) => {\r\n\r\n const file = Array.from(files || []).find(f => f.type.startsWith('image/'));\r\n\r\n if (!file) return;\r\n\r\n const reader = new FileReader();\r\n\r\n reader.onload = () => {\r\n\r\n const base64 = reader.result as string;\r\n const img = new window.Image();\r\n img.onload = () => {\r\n const { schema } = view.state;\r\n const node = schema.nodes.image.create({ src: base64, width: img.naturalWidth, float: \"none\" });\r\n const tr = view.state.tr.replaceSelectionWith(node);\r\n view.dispatch(tr);\r\n }\r\n img.src = base64;\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n}\r\n\r\nconst CustomImage = Image.extend({\r\n draggable: true,\r\n selectable: true,\r\n addAttributes() {\r\n return {\r\n ...this.parent?.(),\r\n width: { default: null, },\r\n float: { default: \"none\" }, // 'left' | 'right' | 'none'\r\n src: {\r\n default: null,\r\n parseHTML: element => { return element.getAttribute('src') },\r\n renderHTML: attributes => { return { src: attributes.src, } },\r\n },\r\n };\r\n },\r\n renderMarkdown(node, _) {\r\n const src = node.attrs?.src\r\n const width = node.attrs?.width\r\n const float = node.attrs?.float\r\n\r\n // fallback to normal markdown when possible\r\n if ((!width || width === 'auto') && float === 'none') {\r\n return `![image](${src})`\r\n }\r\n\r\n // otherwise emit raw HTML\r\n const style = float === 'left' ? 'float:left; margin-right:10px;' : float === 'right' ? 'float:right; margin-left:10px;' : '';\r\n return `<img src=\"${src}\" width=\"${width || ''}\" style=\"${style}\" />`\r\n },\r\n\r\n parseMarkdown(token, helpers) {\r\n return helpers.createNode(\"image\", { src: token[\"href\"] || token[\"src\"], alt: token.content, float: token['float'] || 'none' })\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n const { float } = HTMLAttributes\r\n let style = ''\r\n if (float === 'left')\r\n style = 'float:left; display:block; margin-right: 10px'\r\n else if (float === 'right')\r\n style = 'float:right; display:block; margin-left: 10px'\r\n else\r\n style = `display: inline-block; float: none; vertical-align: middle;`\r\n\r\n return ['img', { ...HTMLAttributes, style }]\r\n },\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'img[src]',\r\n getAttrs: element => {\r\n const el = element as HTMLImageElement;\r\n const src = el.getAttribute('src')\r\n\r\n if (!src) return false\r\n\r\n // allow both normal URLs AND base64\r\n if (src.startsWith('http') || src.startsWith('data:image'))\r\n return { src, float: el.style.float || null, width: el.style.width ? parseInt(el.style.width) : null, }\r\n\r\n return false\r\n },\r\n },\r\n ]\r\n },\r\n addProseMirrorPlugins: () => {\r\n return [\r\n new Plugin({\r\n props: {\r\n handleDrop: (view, event) => {\r\n const files = event.dataTransfer?.files;\r\n if (!files?.length) return false;\r\n\r\n handleFiles(view, files);\r\n\r\n return true;\r\n },\r\n\r\n handlePaste: (view, event) => {\r\n const files = event.clipboardData?.files;\r\n if (!files?.length) return false;\r\n\r\n handleFiles(view, files);\r\n\r\n return true;\r\n },\r\n },\r\n })\r\n ]\r\n },\r\n});\r\n\r\nconst CustomImageWithView = CustomImage.extend({\r\n addNodeView: () => {\r\n return ({ node, getPos, editor }) => {\r\n\r\n let updateImage = (img: HTMLImageElement, node: any) => {\r\n img.draggable = false;\r\n img.src = node.attrs.src\r\n img.style.width = node.attrs.width ? `${node.attrs.width}px` : '';\r\n if (node.attrs.float === 'left' || node.attrs.float === 'right') {\r\n img.style.display = 'block'\r\n if (node.attrs.float === 'left')\r\n img.style.margin = \"0 10px 0 0\";\r\n else if (node.attrs.float === 'right')\r\n img.style.margin = \"0 0 0 10px\"\r\n } else {\r\n img.style.display = 'inline-block'\r\n img.style.verticalAlign = 'middle'\r\n }\r\n };\r\n\r\n let updateWrapper = (wrapper: HTMLDivElement, node: any) => {\r\n wrapper.draggable = true;\r\n wrapper.contentEditable = \"false\";\r\n\r\n wrapper.className = `img-wrapper`;\r\n wrapper.style.float = node.attrs.float;\r\n\r\n if (node.attrs.float === 'left' || node.attrs.float === 'right') {\r\n wrapper.style.width = \"auto\";\r\n wrapper.style.textAlign = \"auto\";\r\n }\r\n else {\r\n wrapper.style.width = \"100%\";\r\n wrapper.style.textAlign = \"center\";\r\n }\r\n }\r\n\r\n const wrapper = document.createElement('div')\r\n updateWrapper(wrapper, node);\r\n\r\n const img = document.createElement('img')\r\n updateImage(img, node);\r\n\r\n const toolbar = document.createElement('div')\r\n toolbar.className = `img-toolbar ${editor.isEditable ? '' : 'readonly'}`;\r\n\r\n const btn = (t: any, fn: any) => {\r\n const b = document.createElement('button');\r\n b.type = \"button\";\r\n b.textContent = t;\r\n b.onclick = fn;\r\n return b;\r\n }\r\n\r\n toolbar.append(\r\n\r\n btn('Centro', () => editor.view.dispatch(editor.view.state.tr.setNodeMarkup(getPos()!, undefined, { ...node.attrs, ...{ float: 'none' } }))),\r\n btn('Sinistra', () => editor.view.dispatch(editor.view.state.tr.setNodeMarkup(getPos()!, undefined, { ...node.attrs, ...{ float: 'left' } }))),\r\n btn('Destra', () => editor.view.dispatch(editor.view.state.tr.setNodeMarkup(getPos()!, undefined, { ...node.attrs, ...{ float: 'right' } }))),\r\n\r\n btn('Elimina', () => {\r\n const nodePos = getPos()!;\r\n editor.view.dispatch(editor.view.state.tr.delete(nodePos, nodePos + node.nodeSize))\r\n }));\r\n\r\n // resize\r\n let startX = 0;\r\n let startW = 0;\r\n\r\n const handle = document.createElement('div');\r\n handle.className = `img-resize-handle ${editor.isEditable ? '' : 'readonly'}`;\r\n\r\n handle.onmousedown = (e) => {\r\n startX = e.clientX\r\n startW = img.offsetWidth\r\n\r\n let latestWidth: number | null = null\r\n let ticking = false\r\n\r\n const move = (e: any) => {\r\n latestWidth = Math.max(80, startW + (e.clientX - startX));\r\n\r\n if (!ticking) {\r\n ticking = true\r\n\r\n requestAnimationFrame(() => {\r\n const nodePos = getPos()!;\r\n editor.view.dispatch(editor.view.state.tr.setNodeMarkup(nodePos, undefined, { ...node.attrs, width: latestWidth }))\r\n ticking = false\r\n });\r\n }\r\n }\r\n\r\n const up = () => {\r\n window.removeEventListener('mousemove', move);\r\n window.removeEventListener('mouseup', up);\r\n }\r\n\r\n window.addEventListener('mousemove', move);\r\n window.addEventListener('mouseup', up);\r\n\r\n // Per evitare che si attivi il drag dell'elemento sotto. Dal resizer si usa solo il resizer\r\n e.preventDefault();\r\n }\r\n\r\n wrapper.append(img, toolbar, handle);\r\n\r\n return {\r\n dom: wrapper,\r\n destroy() { wrapper.remove() },\r\n update(updatedNode) {\r\n\r\n // different node type -> recreate NodeView\r\n if (updatedNode.type !== node.type)\r\n return false\r\n\r\n node = updatedNode\r\n updateImage(img, node);\r\n updateWrapper(wrapper, node);\r\n\r\n return true\r\n },\r\n };\r\n }\r\n },\r\n});\r\n\r\nexport default CustomImageWithView;","import { Extension } from \"@tiptap/core\";\r\n\r\nconst FontFamily = Extension.create({\r\n name: 'fontFamily',\r\n\r\n addGlobalAttributes() {\r\n return [\r\n {\r\n types: ['textStyle'],\r\n attributes: {\r\n fontFamily: {\r\n default: null,\r\n parseHTML: element => element.style.fontFamily,\r\n renderHTML: attributes => {\r\n if (!attributes.fontFamily) return {};\r\n return { style: `font-family: ${attributes.fontFamily}` };\r\n },\r\n },\r\n },\r\n },\r\n ]\r\n },\r\n addCommands() {\r\n return {\r\n setFontFamily: (fontFamily: string) => ({ chain }) => { return chain().setMark('textStyle', { fontFamily }).run(); },\r\n unsetFontFamily: () => ({ chain }) => { return chain().setMark('textStyle', { fontFamily: null, }).removeEmptyTextStyle().run() },\r\n }\r\n },\r\n});\r\n\r\nexport default FontFamily;","import { Extension } from \"@tiptap/core\";\r\n\r\nconst LineHeight = Extension.create({\r\n name: 'lineHeight',\r\n\r\n addGlobalAttributes() {\r\n return [\r\n {\r\n types: ['paragraph', 'heading'],\r\n attributes: {\r\n lineHeight: {\r\n default: null,\r\n parseHTML: element => element.style.lineHeight,\r\n renderHTML: attributes => {\r\n if (!attributes.lineHeight) return {};\r\n return { style: `line-height: ${attributes.lineHeight}` };\r\n },\r\n },\r\n },\r\n },\r\n ]\r\n },\r\n addCommands() {\r\n return {\r\n setLineHeight: (lineHeight: string) => ({ commands }) => { return commands.updateAttributes('paragraph', { lineHeight }) },\r\n unsetLineHeight: () => ({ commands }) => { return commands.updateAttributes('paragraph', { lineHeight: null }) },\r\n }\r\n },\r\n});\r\n\r\nexport default LineHeight;","let Suggestion = (choiches: { id: string, description: string }[]) => {\r\n \r\n\r\n return {\r\n char: '@',\r\n\r\n items: ({ query }: { query: string }) => {\r\n return choiches.filter(item => item.description.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5);\r\n },\r\n\r\n render: () => {\r\n let popup: HTMLDivElement;\r\n let selectedIndex = 0\r\n let currentProps: any\r\n\r\n return {\r\n onStart: (props: any) => {\r\n popup = document.createElement('div')\r\n popup.classList.add('suggestion-popup')\r\n\r\n document.body.appendChild(popup)\r\n\r\n currentProps = props;\r\n updatePopup();\r\n },\r\n onKeyDown(props: any) {\r\n if (props.event.key === 'ArrowUp') {\r\n selectedIndex = (selectedIndex + currentProps.items.length - 1) % currentProps.items.length\r\n updatePopup()\r\n return true\r\n }\r\n\r\n if (props.event.key === 'ArrowDown') {\r\n selectedIndex = (selectedIndex + 1) % currentProps.items.length\r\n updatePopup()\r\n return true\r\n }\r\n\r\n if (props.event.key === 'Enter') {\r\n selectItem()\r\n return true\r\n }\r\n\r\n return false\r\n },\r\n onUpdate(props: any) { \r\n currentProps = props;\r\n updatePopup();\r\n },\r\n onExit() { popup.remove(); },\r\n }\r\n\r\n function updatePopup() {\r\n if (!currentProps.clientRect)\r\n return\r\n\r\n popup.innerHTML = '';\r\n\r\n currentProps.items.forEach((item: { id: string, description: string }, index: number) => {\r\n const button = document.createElement('button')\r\n\r\n button.textContent = item.description\r\n\r\n if (index === selectedIndex)\r\n button.classList.add('is-selected')\r\n\r\n button.addEventListener('click', () => {\r\n selectedIndex = index\r\n selectItem()\r\n })\r\n\r\n popup.appendChild(button)\r\n });\r\n\r\n const rect = currentProps.clientRect();\r\n popup.style.position = 'fixed'\r\n popup.style.left = `${rect.left}px`\r\n popup.style.top = `${rect.bottom + 5}px`\r\n }\r\n\r\n function selectItem() {\r\n const item = currentProps.items[selectedIndex]\r\n\r\n if (item)\r\n currentProps.command({ id: item.id, description: item.description, });\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Suggestion;","import { Extension } from \"@tiptap/core\";\r\n\r\nconst FontSize = Extension.create({\r\n name: 'fontSize',\r\n\r\n addGlobalAttributes() {\r\n return [\r\n {\r\n types: ['textStyle'],\r\n attributes: {\r\n fontSize: {\r\n default: null,\r\n parseHTML: element => {\r\n const size = element.style.fontSize;\r\n if (!size) return null;\r\n // normalize pt → px\r\n if (size.endsWith('pt'))\r\n return `${Math.round(parseFloat(size) * 1.333)}px`;\r\n return size;\r\n },\r\n renderHTML: attributes => {\r\n if (!attributes.fontSize) return {};\r\n\r\n return { style: `font-size: ${attributes.fontSize}` }\r\n },\r\n },\r\n },\r\n },\r\n ]\r\n },\r\n addCommands() {\r\n return {\r\n setFontSize: (fontSize: string) => ({ chain }) => { return chain().setMark('textStyle', { fontSize }).run() },\r\n unsetFontSize: () => ({ chain }) => { return chain().setMark('textStyle', { fontSize: null }).removeEmptyTextStyle().run() },\r\n }\r\n },\r\n})\r\n\r\nexport default FontSize;","import { CommonModule } from \"@angular/common\";\r\nimport { booleanAttribute, Component, ElementRef, EventEmitter, forwardRef, input, Output, viewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { AbstractControl, ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from \"@angular/forms\";\r\n\r\nimport { Editor } from '@tiptap/core'\r\nimport { Markdown } from '@tiptap/markdown'\r\nimport { StarterKit } from '@tiptap/starter-kit'\r\nimport { TextStyle } from '@tiptap/extension-text-style'\r\nimport { Color } from '@tiptap/extension-color'\r\nimport { Table } from '@tiptap/extension-table'\r\nimport { TableRow } from '@tiptap/extension-table-row'\r\nimport { TableCell } from '@tiptap/extension-table-cell'\r\nimport { TableHeader } from '@tiptap/extension-table-header'\r\nimport { TextAlign } from '@tiptap/extension-text-align'\r\n\r\nimport { CustomMention, mymarked } from \"./extensions/CustomMention\";\r\nimport CustomImageWithView from \"./extensions/CustomeImageWithView\";\r\nimport FontFamily from \"./extensions/FontFamily\";\r\nimport LineHeight from \"./extensions/LineHeight\";\r\nimport Suggestion from \"./extensions/Suggestion\";\r\nimport FontSize from \"./extensions/FontSize\";\r\n\r\n@Component({\r\n selector: \"es-editor\",\r\n templateUrl: \"./editor.component.html\",\r\n styleUrls: [\"./editor.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditorComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => EditorComponent), multi: true }\r\n ]\r\n})\r\nexport class EditorComponent implements ControlValueAccessor, Validator {\r\n\r\n protected onChange = (_: any) => { };\r\n public onTouched = () => { };\r\n public registerOnChange(fn: any): void { this.onChange = fn; }\r\n public registerOnTouched(fn: any): void { this.onTouched = fn; }\r\n\r\n validate(_: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n\r\n private element = viewChild.required<ElementRef<HTMLDivElement>>(\"element\");\r\n\r\n public EmojiSupport = input<boolean>(false);\r\n public BulletListSupport = input<boolean>(false);\r\n public TablesSupport = input<boolean>(false);\r\n public Mode = input.required<'html' | 'markdown' | 'text'>();\r\n public readonly = input(false, { transform: booleanAttribute });\r\n public disabled = input(false, { transform: booleanAttribute });\r\n public required = input(false, { transform: booleanAttribute });\r\n public style = input(\"\");\r\n\r\n public MentionEntities = input<{ id: string, description: string }[]>([]);\r\n\r\n public name = input.required<string>();\r\n\r\n private EditorRef?: Editor;\r\n public value: any;\r\n\r\n @Output() inputChange: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() inputFocus: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() inputFinalized: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n ngOnInit() {\r\n let config = [];\r\n\r\n config.push(...[\r\n StarterKit,\r\n TextStyle,\r\n Color,\r\n FontSize,\r\n FontFamily,\r\n LineHeight,\r\n TextAlign.configure({ types: ['heading', 'paragraph'] }),\r\n CustomImageWithView\r\n ]);\r\n\r\n if (this.Mode() == \"markdown\")\r\n config.push(Markdown.configure({ marked: mymarked }));\r\n\r\n if (this.Mode() == \"html\") {\r\n if (this.TablesSupport())\r\n config.push(...[Table.configure({ lastColumnResizable: true, resizable: true }), TableRow, TableHeader, TableCell]);\r\n }\r\n\r\n if ((this.MentionEntities()?.length || 0) > 0)\r\n config.push(CustomMention.configure({\r\n deleteTriggerWithBackspace: true,\r\n HTMLAttributes: { class: 'mention' },\r\n renderText({ options, node }) { return `${options.suggestion.char}${node.attrs.description ?? node.attrs.id}` },\r\n suggestion: Suggestion(this.MentionEntities()),\r\n }),);\r\n\r\n this.EditorRef = new Editor({\r\n element: this.element().nativeElement,\r\n extensions: config,\r\n editable: !this.readonly(),\r\n onUpdate: (_) => {\r\n let value = \"\";\r\n switch (this.Mode()) {\r\n case \"html\":\r\n value = this.EditorRef?.getHTML() || \"\";\r\n // Emissione del valore vuoto trimmato per bene\r\n if (value.trim() === \"<p></p>\")\r\n value = \"\";\r\n break;\r\n case \"markdown\": value = this.EditorRef?.getMarkdown() || \"\"; break;\r\n case \"text\": value = this.EditorRef?.getText() || \"\"; break;\r\n }\r\n\r\n this.onChange(value);\r\n }\r\n });\r\n }\r\n\r\n public async writeValue(obj: any): Promise<void> {\r\n // Coercizione di tutti i valori \"vuoti\" all'unico \"null\"\r\n if (obj === null || obj === undefined) obj = null;\r\n\r\n this.value = obj;\r\n\r\n // normalizzazione per la firma di merda di CEA\r\n this.value = this.value?.replace(/^\\*\\*\\*\\*\\*\\*\\s\\s/g, '') || \"\"\r\n this.value = this.value?.replace(/^\\*\\*\\s\\s/g, '') || \"\"\r\n\r\n this.EditorRef?.commands.clearContent();\r\n if (this.Mode() === \"markdown\")\r\n this.EditorRef?.commands.setContent(this.value, { contentType: \"markdown\" });\r\n else if (this.Mode() === \"html\")\r\n this.EditorRef?.commands.setContent(this.value, { contentType: \"html\" });\r\n else\r\n this.EditorRef?.commands.insertContent(this.value);\r\n }\r\n\r\n setTypography(selectElement: { target: { value: string } }) {\r\n switch (selectElement.target.value) {\r\n case \"paragraph\": this.EditorRef?.chain().focus().setParagraph().run(); break;\r\n default: this.EditorRef?.chain().focus().setHeading({ level: parseInt(selectElement.target.value.charAt(1)) as any }).run(); break;\r\n }\r\n selectElement.target.value = \"\";\r\n }\r\n setBold() {\r\n this.EditorRef?.chain().focus().toggleBold().run();\r\n }\r\n setItalic() {\r\n this.EditorRef?.chain().focus().toggleItalic().run();\r\n }\r\n setUnderlined() {\r\n this.EditorRef?.chain().focus().toggleUnderline().run();\r\n }\r\n setBulletList() {\r\n this.EditorRef?.chain().focus().toggleBulletList().run();\r\n }\r\n undoAction() {\r\n this.EditorRef?.chain().focus().undo().run();\r\n }\r\n redoAction() {\r\n this.EditorRef?.chain().focus().redo().run();\r\n }\r\n addTable() {\r\n this.EditorRef?.chain().focus().insertTable({ rows: 1, cols: 2, withHeaderRow: false }).run()\r\n }\r\n deleteTable() {\r\n this.EditorRef?.chain().focus().deleteTable().run();\r\n }\r\n addRow() {\r\n this.EditorRef?.chain().focus().addRowAfter().run();\r\n }\r\n deleteRow() {\r\n this.EditorRef?.chain().focus().deleteRow().run();\r\n }\r\n addColumn() {\r\n this.EditorRef?.chain().focus().addColumnAfter().run();\r\n }\r\n deleteColumn() {\r\n this.EditorRef?.chain().focus().deleteColumn().run();\r\n }\r\n setEmoji(selectElement: { target: { value: string } }) {\r\n this.EditorRef?.chain().focus().insertContent(selectElement.target.value).run();\r\n selectElement.target.value = \"\";\r\n }\r\n}","<div class=\"editor-shell\" [class.readonly]=\"readonly()\" [attr.style]=\"style()\">\r\n @if(!readonly()){\r\n <div class=\"editor-toolbar\">\r\n\r\n <!-- Typography -->\r\n <select id=\"heading-select\" (change)=\"setTypography($event)\">\r\n <option value=\"\" selected hidden>Pragrafo</option>\r\n <option value=\"paragraph\">Pragrafo</option>\r\n <option value=\"h1\">Intestazione 1</option>\r\n <option value=\"h2\">Intestazione 2</option>\r\n <option value=\"h3\">Intestazione 3</option>\r\n <option value=\"h4\">Intestazione 4</option>\r\n <option value=\"h5\">Intestazione 5</option>\r\n <option value=\"h6\">Intestazione 6</option>\r\n </select>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <!-- Formatting -->\r\n <button (click)=\"setBold()\"><b>B</b></button>\r\n <button (click)=\"setItalic()\"><i>I</i></button>\r\n <button (click)=\"setUnderlined()\"><u>U</u></button>\r\n\r\n <!-- Lists -->\r\n @if(BulletListSupport()){\r\n <button (click)=\"setBulletList()\">• Lista</button>\r\n }\r\n\r\n <div class=\"divider\"></div>\r\n\r\n @if(Mode() == \"html\" && TablesSupport())\r\n {\r\n <button (click)=\"addTable()\">⊞<span style=\"font-size: 10px;\">✚</span></button>\r\n <button (click)=\"deleteTable()\">⊞<span style=\"font-size: 10px;\">▬</span></button>\r\n <button (click)=\"addRow()\">🖨<span style=\"font-size: 10px;\">✚</span></button>\r\n <button (click)=\"deleteRow()\">🖨<span style=\"font-size: 10px;\">▬</span></button>\r\n <button (click)=\"addColumn()\">🗄<span style=\"font-size: 10px;\">✚</span></button>\r\n <button (click)=\"deleteColumn()\">🗄<span style=\"font-size: 10px;\">▬</span></button>\r\n <div class=\"divider\"></div>\r\n }\r\n\r\n <!-- History -->\r\n <button (click)=\"undoAction()\">↶</button>\r\n <button (click)=\"redoAction()\">↷</button>\r\n\r\n @if(EmojiSupport()){\r\n <select id=\"emoji-select\" (change)=\"setEmoji($event)\">\r\n <option value=\"\" hidden selected>😊</option>\r\n <option value=\"😊\">😊</option>\r\n <option value=\"😀\">😀</option>\r\n <option value=\"😂\">😂</option>\r\n <option value=\"🔥\">🔥</option>\r\n <option value=\"🎉\">🎉</option>\r\n <option value=\"🚀\">🚀</option>\r\n <option value=\"❤️\">❤️</option>\r\n <option value=\"👍\">👍</option>\r\n </select>\r\n }\r\n </div>\r\n }\r\n <div #element></div>\r\n</div>","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const TXE_DEBUG = new InjectionToken<boolean>('TXE_DEBUG');","/*\r\n * Public API Surface of text-editors\r\n */\r\n\r\nexport * from './lib/editor/editor.component';\r\n\r\nexport * from \"./lib/tokens\"","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAGO,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;AACxC,IAAA,cAAc,CAAC,IAAI,EAAA,EAAI,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAA,CAAE,CAAA,CAAC,CAAC;AACzE,IAAA,aAAa,CAAC,KAAK,EAAA,EAAI,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAA,CAAC,CAAC;AACrG,CAAA,CAAC;AAEF,MAAM,CAAC,GAAG,CAAC;AACP,IAAA,UAAU,EAAE;AACR,QAAA;AACI,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,QAAQ;AAEf,YAAA,KAAK,CAAC,GAAG,EAAA;gBACL,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,SAAS;YAC5D,CAAC;AAED,YAAA,SAAS,CAAC,GAAG,EAAA;gBACT,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC;gBACjD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC;AAC7B,oBAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;YACjE,CAAC;YAED,QAAQ,CAAC,KAAK,EAAA,EAAI,OAAO,KAAK,CAAC,GAAG,CAAA,CAAC,CAAC;AACvC,SAAA;AACJ,KAAA;AACJ,CAAA,CAAC;AAEK,MAAM,QAAQ,GAAG,MAAM;;AC3B9B,IAAI,WAAW,GAAG,OAAO,IAAS,EAAE,KAA2B,KAAI;IAE/D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAE3E,IAAA,IAAI,CAAC,IAAI;QAAE;AAEX,IAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAE/B,IAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AAEjB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE;AAC9B,QAAA,GAAG,CAAC,MAAM,GAAG,MAAK;AACd,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC/F,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACrB,QAAA,CAAC;AACD,QAAA,GAAG,CAAC,GAAG,GAAG,MAAM;AACpB,IAAA,CAAC;AAED,IAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,UAAU,EAAE,IAAI;IAChB,aAAa,GAAA;QACT,OAAO;AACH,YAAA,GAAG,IAAI,CAAC,MAAM,IAAI;AAClB,YAAA,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG;AACzB,YAAA,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC1B,YAAA,GAAG,EAAE;AACD,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,SAAS,EAAE,OAAO,MAAM,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;AAC5D,gBAAA,UAAU,EAAE,UAAU,MAAM,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC;AAChE,aAAA;SACJ;IACL,CAAC;IACD,cAAc,CAAC,IAAI,EAAE,CAAC,EAAA;AAClB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK;AAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK;;AAG/B,QAAA,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,EAAE;YAClD,OAAO,CAAA,SAAA,EAAY,GAAG,CAAA,CAAA,CAAG;QAC7B;;QAGA,MAAM,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG,gCAAgC,GAAG,KAAK,KAAK,OAAO,GAAG,gCAAgC,GAAG,EAAE;QAC7H,OAAO,CAAA,UAAA,EAAa,GAAG,CAAA,SAAA,EAAY,KAAK,IAAI,EAAE,CAAA,SAAA,EAAY,KAAK,CAAA,IAAA,CAAM;IACzE,CAAC;IAED,aAAa,CAAC,KAAK,EAAE,OAAO,EAAA;AACxB,QAAA,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;IACnI,CAAC;IACD,UAAU,CAAC,EAAE,cAAc,EAAE,EAAA;AACzB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc;QAChC,IAAI,KAAK,GAAG,EAAE;QACd,IAAI,KAAK,KAAK,MAAM;YAChB,KAAK,GAAG,+CAA+C;aACtD,IAAI,KAAK,KAAK,OAAO;YACtB,KAAK,GAAG,+CAA+C;;YAEvD,KAAK,GAAG,6DAA6D;QAEzE,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IACD,SAAS,GAAA;QACL,OAAO;AACH,YAAA;AACI,gBAAA,GAAG,EAAE,UAAU;gBACf,QAAQ,EAAE,OAAO,IAAG;oBAChB,MAAM,EAAE,GAAG,OAA2B;oBACtC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;AAElC,oBAAA,IAAI,CAAC,GAAG;AAAE,wBAAA,OAAO,KAAK;;AAGtB,oBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;AACtD,wBAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG;AAE3G,oBAAA,OAAO,KAAK;gBAChB,CAAC;AACJ,aAAA;SACJ;IACL,CAAC;IACD,qBAAqB,EAAE,MAAK;QACxB,OAAO;AACH,YAAA,IAAI,MAAM,CAAC;AACP,gBAAA,KAAK,EAAE;AACH,oBAAA,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;AACxB,wBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK;wBACvC,IAAI,CAAC,KAAK,EAAE,MAAM;AAAE,4BAAA,OAAO,KAAK;AAEhC,wBAAA,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;AAExB,wBAAA,OAAO,IAAI;oBACf,CAAC;AAED,oBAAA,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;AACzB,wBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,KAAK;wBACxC,IAAI,CAAC,KAAK,EAAE,MAAM;AAAE,4BAAA,OAAO,KAAK;AAEhC,wBAAA,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;AAExB,wBAAA,OAAO,IAAI;oBACf,CAAC;AACJ,iBAAA;aACJ;SACJ;IACL,CAAC;AACJ,CAAA,CAAC;AAEF,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC;IAC3C,WAAW,EAAE,MAAK;QACd,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAI;AAEhC,YAAA,IAAI,WAAW,GAAG,CAAC,GAAqB,EAAE,IAAS,KAAI;AACnD,gBAAA,GAAG,CAAC,SAAS,GAAG,KAAK;gBACrB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG;gBACxB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,EAAE;AACjE,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE;AAC7D,oBAAA,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;AAC3B,oBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AAC3B,wBAAA,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY;AAC9B,yBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO;AACjC,wBAAA,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY;gBACvC;qBAAO;AACH,oBAAA,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc;AAClC,oBAAA,GAAG,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ;gBACtC;AACJ,YAAA,CAAC;AAED,YAAA,IAAI,aAAa,GAAG,CAAC,OAAuB,EAAE,IAAS,KAAI;AACvD,gBAAA,OAAO,CAAC,SAAS,GAAG,IAAI;AACxB,gBAAA,OAAO,CAAC,eAAe,GAAG,OAAO;AAEjC,gBAAA,OAAO,CAAC,SAAS,GAAG,CAAA,WAAA,CAAa;gBACjC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AAEtC,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE;AAC7D,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AAC5B,oBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM;gBACpC;qBACK;AACD,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AAC5B,oBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ;gBACtC;AACJ,YAAA,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,YAAA,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;YAE5B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,YAAA,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;YAEtB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,YAAA,OAAO,CAAC,SAAS,GAAG,CAAA,YAAA,EAAe,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE;AAExE,YAAA,MAAM,GAAG,GAAG,CAAC,CAAM,EAAE,EAAO,KAAI;gBAC5B,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC1C,gBAAA,CAAC,CAAC,IAAI,GAAG,QAAQ;AACjB,gBAAA,CAAC,CAAC,WAAW,GAAG,CAAC;AACjB,gBAAA,CAAC,CAAC,OAAO,GAAG,EAAE;AACd,gBAAA,OAAO,CAAC;AACZ,YAAA,CAAC;AAED,YAAA,OAAO,CAAC,MAAM,CAEV,GAAG,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAG,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAC5I,GAAG,CAAC,UAAU,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAG,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAC9I,GAAG,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAG,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAE7I,GAAG,CAAC,SAAS,EAAE,MAAK;AAChB,gBAAA,MAAM,OAAO,GAAG,MAAM,EAAG;gBACzB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvF,CAAC,CAAC,CAAC;;YAGP,IAAI,MAAM,GAAG,CAAC;YACd,IAAI,MAAM,GAAG,CAAC;YAEd,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,YAAA,MAAM,CAAC,SAAS,GAAG,CAAA,kBAAA,EAAqB,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE;AAE7E,YAAA,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,KAAI;AACvB,gBAAA,MAAM,GAAG,CAAC,CAAC,OAAO;AAClB,gBAAA,MAAM,GAAG,GAAG,CAAC,WAAW;gBAExB,IAAI,WAAW,GAAkB,IAAI;gBACrC,IAAI,OAAO,GAAG,KAAK;AAEnB,gBAAA,MAAM,IAAI,GAAG,CAAC,CAAM,KAAI;AACpB,oBAAA,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;oBAEzD,IAAI,CAAC,OAAO,EAAE;wBACV,OAAO,GAAG,IAAI;wBAEd,qBAAqB,CAAC,MAAK;AACvB,4BAAA,MAAM,OAAO,GAAG,MAAM,EAAG;AACzB,4BAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;4BACnH,OAAO,GAAG,KAAK;AACnB,wBAAA,CAAC,CAAC;oBACN;AACJ,gBAAA,CAAC;gBAED,MAAM,EAAE,GAAG,MAAK;AACZ,oBAAA,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC;AAC7C,oBAAA,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC;AAC7C,gBAAA,CAAC;AAED,gBAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC;AAC1C,gBAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC;;gBAGtC,CAAC,CAAC,cAAc,EAAE;AACtB,YAAA,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC;YAEpC,OAAO;AACH,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE,CAAA,CAAC,CAAC;AAC9B,gBAAA,MAAM,CAAC,WAAW,EAAA;;AAGd,oBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAC9B,wBAAA,OAAO,KAAK;oBAEhB,IAAI,GAAG,WAAW;AAClB,oBAAA,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;AACtB,oBAAA,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AAE5B,oBAAA,OAAO,IAAI;gBACf,CAAC;aACJ;AACL,QAAA,CAAC;IACL,CAAC;AACJ,CAAA,CAAC;;ACjPF,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC,IAAA,IAAI,EAAE,YAAY;IAElB,mBAAmB,GAAA;QACf,OAAO;AACH,YAAA;gBACI,KAAK,EAAE,CAAC,WAAW,CAAC;AACpB,gBAAA,UAAU,EAAE;AACR,oBAAA,UAAU,EAAE;AACR,wBAAA,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU;wBAC9C,UAAU,EAAE,UAAU,IAAG;4BACrB,IAAI,CAAC,UAAU,CAAC,UAAU;AAAE,gCAAA,OAAO,EAAE;4BACrC,OAAO,EAAE,KAAK,EAAE,CAAA,aAAA,EAAgB,UAAU,CAAC,UAAU,CAAA,CAAE,EAAE;wBAC7D,CAAC;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;SACJ;IACL,CAAC;IACD,WAAW,GAAA;QACP,OAAO;AACH,YAAA,aAAa,EAAE,CAAC,UAAkB,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACpH,YAAA,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAI,EAAG,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,CAAA,CAAC,CAAC;SACpI;IACL,CAAC;AACJ,CAAA,CAAC;;AC1BF,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC,IAAA,IAAI,EAAE,YAAY;IAElB,mBAAmB,GAAA;QACf,OAAO;AACH,YAAA;AACI,gBAAA,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AAC/B,gBAAA,UAAU,EAAE;AACR,oBAAA,UAAU,EAAE;AACR,wBAAA,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU;wBAC9C,UAAU,EAAE,UAAU,IAAG;4BACrB,IAAI,CAAC,UAAU,CAAC,UAAU;AAAE,gCAAA,OAAO,EAAE;4BACrC,OAAO,EAAE,KAAK,EAAE,CAAA,aAAA,EAAgB,UAAU,CAAC,UAAU,CAAA,CAAE,EAAE;wBAC7D,CAAC;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;SACJ;IACL,CAAC;IACD,WAAW,GAAA;QACP,OAAO;YACH,aAAa,EAAE,CAAC,UAAkB,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAI,EAAG,OAAO,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA,CAAC,CAAC;YAC1H,eAAe,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAI,EAAG,OAAO,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;SACnH;IACL,CAAC;AACJ,CAAA,CAAC;;AC5BF,IAAI,UAAU,GAAG,CAAC,QAA+C,KAAI;IAGjE,OAAO;AACH,QAAA,IAAI,EAAE,GAAG;AAET,QAAA,KAAK,EAAE,CAAC,EAAE,KAAK,EAAqB,KAAI;AACpC,YAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9G,CAAC;QAED,MAAM,EAAE,MAAK;AACT,YAAA,IAAI,KAAqB;YACzB,IAAI,aAAa,GAAG,CAAC;AACrB,YAAA,IAAI,YAAiB;YAErB,OAAO;AACH,gBAAA,OAAO,EAAE,CAAC,KAAU,KAAI;AACpB,oBAAA,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACrC,oBAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAEvC,oBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;oBAEhC,YAAY,GAAG,KAAK;AACpB,oBAAA,WAAW,EAAE;gBACjB,CAAC;AACD,gBAAA,SAAS,CAAC,KAAU,EAAA;oBAChB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AAC/B,wBAAA,aAAa,GAAG,CAAC,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM;AAC3F,wBAAA,WAAW,EAAE;AACb,wBAAA,OAAO,IAAI;oBACf;oBAEA,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AACjC,wBAAA,aAAa,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM;AAC/D,wBAAA,WAAW,EAAE;AACb,wBAAA,OAAO,IAAI;oBACf;oBAEA,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AAC7B,wBAAA,UAAU,EAAE;AACZ,wBAAA,OAAO,IAAI;oBACf;AAEA,oBAAA,OAAO,KAAK;gBAChB,CAAC;AACD,gBAAA,QAAQ,CAAC,KAAU,EAAA;oBACf,YAAY,GAAG,KAAK;AACpB,oBAAA,WAAW,EAAE;gBAChB,CAAC;AACF,gBAAA,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;aAC/B;AAED,YAAA,SAAS,WAAW,GAAA;gBAChB,IAAI,CAAC,YAAY,CAAC,UAAU;oBACxB;AAEJ,gBAAA,KAAK,CAAC,SAAS,GAAG,EAAE;gBAEpB,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAyC,EAAE,KAAa,KAAI;oBACpF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAE/C,oBAAA,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;oBAErC,IAAI,KAAK,KAAK,aAAa;AACvB,wBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;AAEvC,oBAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;wBAClC,aAAa,GAAG,KAAK;AACrB,wBAAA,UAAU,EAAE;AAChB,oBAAA,CAAC,CAAC;AAEF,oBAAA,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;AAC7B,gBAAA,CAAC,CAAC;AAEF,gBAAA,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,EAAE;AACtC,gBAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;gBAC9B,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI;AACnC,gBAAA,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA,EAAA,CAAI;YAC5C;AAEA,YAAA,SAAS,UAAU,GAAA;gBACf,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC;AAE9C,gBAAA,IAAI,IAAI;AACJ,oBAAA,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC;YAC7E;QACJ;KACH;AACL,CAAC;;ACtFD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAA,IAAI,EAAE,UAAU;IAEhB,mBAAmB,GAAA;QACf,OAAO;AACH,YAAA;gBACI,KAAK,EAAE,CAAC,WAAW,CAAC;AACpB,gBAAA,UAAU,EAAE;AACR,oBAAA,QAAQ,EAAE;AACN,wBAAA,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,OAAO,IAAG;AACjB,4BAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ;AACnC,4BAAA,IAAI,CAAC,IAAI;AAAE,gCAAA,OAAO,IAAI;;AAEtB,4BAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,gCAAA,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI;AACtD,4BAAA,OAAO,IAAI;wBACf,CAAC;wBACD,UAAU,EAAE,UAAU,IAAG;4BACrB,IAAI,CAAC,UAAU,CAAC,QAAQ;AAAE,gCAAA,OAAO,EAAE;4BAEnC,OAAO,EAAE,KAAK,EAAE,CAAA,WAAA,EAAc,UAAU,CAAC,QAAQ,CAAA,CAAE,EAAE;wBACzD,CAAC;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;SACJ;IACL,CAAC;IACD,WAAW,GAAA;QACP,OAAO;AACH,YAAA,WAAW,EAAE,CAAC,QAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA,CAAC,CAAC;AAC7G,YAAA,aAAa,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAI,EAAG,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,CAAA,CAAC,CAAC;SAC/H;IACL,CAAC;AACJ,CAAA,CAAC;;MCFW,eAAe,CAAA;AAZ5B,IAAA,WAAA,GAAA;AAcc,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,EAAG,CAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAG,CAAC;AAQpB,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAA6B,SAAS,CAAC;AAEpE,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAU,KAAK,wDAAC;AACpC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,6DAAC;AACzC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;AACrC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAgC;AACrD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACxD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACxD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACxD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAEjB,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAwC,EAAE,2DAAC;AAElE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAU;AAK5B,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAU;AAC9D,QAAA,IAAA,CAAA,UAAU,GAAsB,IAAI,YAAY,EAAO;AACvD,QAAA,IAAA,CAAA,cAAc,GAAyB,IAAI,YAAY,EAAU;AAwH9E,IAAA;IAnJU,gBAAgB,CAAC,EAAO,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACtD,iBAAiB,CAAC,EAAO,EAAA,EAAU,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AAE/D,IAAA,QAAQ,CAAC,CAAkB,EAAA;AACvB,QAAA,OAAO,IAAI;IACf;IAwBA,QAAQ,GAAA;QACJ,IAAI,MAAM,GAAG,EAAE;QAEf,MAAM,CAAC,IAAI,CAAC,GAAG;YACX,UAAU;YACV,SAAS;YACT,KAAK;YACL,QAAQ;YACR,UAAU;YACV,UAAU;AACV,YAAA,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;YACxD;AACH,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,UAAU;AACzB,YAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEzD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,MAAM,EAAE;YACvB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC3H;QAEA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;AACzC,YAAA,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAChC,gBAAA,0BAA0B,EAAE,IAAI;AAChC,gBAAA,cAAc,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;AACpC,gBAAA,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAA,EAAI,OAAO,CAAA,EAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA,CAAE,CAAA,CAAC,CAAC;AAC/G,gBAAA,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AACjD,aAAA,CAAC,CAAE;AAER,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,CAAC;AACxB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa;AACrC,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC1B,YAAA,QAAQ,EAAE,CAAC,CAAC,KAAI;gBACZ,IAAI,KAAK,GAAG,EAAE;AACd,gBAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACf,oBAAA,KAAK,MAAM;wBACP,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;;AAEvC,wBAAA,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,SAAS;4BAC1B,KAAK,GAAG,EAAE;wBACd;AACJ,oBAAA,KAAK,UAAU;wBAAE,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE;wBAAE;AAC9D,oBAAA,KAAK,MAAM;wBAAE,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;wBAAE;;AAG1D,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxB;AACH,SAAA,CAAC;IACN;IAEO,MAAM,UAAU,CAAC,GAAQ,EAAA;;AAE5B,QAAA,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,GAAG,GAAG,IAAI;AAEjD,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG;;AAGhB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,IAAI,EAAE;AAChE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,EAAE;AAExD,QAAA,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE;AACvC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU;AAC1B,YAAA,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC3E,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM;AAC3B,YAAA,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;;YAExE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1D;AAEA,IAAA,aAAa,CAAC,aAA4C,EAAA;AACtD,QAAA,QAAQ,aAAa,CAAC,MAAM,CAAC,KAAK;AAC9B,YAAA,KAAK,WAAW;AAAE,gBAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;gBAAE;AACxE,YAAA;AAAS,gBAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAQ,EAAE,CAAC,CAAC,GAAG,EAAE;gBAAE;;AAEjI,QAAA,aAAa,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;IACnC;IACA,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE;IACtD;IACA,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;IACxD;IACA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE;IAC3D;IACA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE;IAC5D;IACA,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE;IAChD;IACA,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE;IAChD;IACA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE;IACjG;IACA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE;IACvD;IACA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE;IACvD;IACA,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE;IACrD;IACA,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE;IAC1D;IACA,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;IACxD;AACA,IAAA,QAAQ,CAAC,aAA4C,EAAA;QACjD,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;AAC/E,QAAA,aAAa,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;IACnC;+GAtJS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EALb;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI;AACxF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCL,o6FA6DM,EAAA,MAAA,EAAA,CAAA,+/HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlCQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAO1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EAGT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,CAAC,EAAA,aAAA,EACrB,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI;AACxF,qBAAA,EAAA,QAAA,EAAA,o6FAAA,EAAA,MAAA,EAAA,CAAA,+/HAAA,CAAA,EAAA;qEAagE,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA;sBAkBzE;;sBACA;;sBACA;;;ME/DQ,SAAS,GAAG,IAAI,cAAc,CAAU,WAAW;;ACFhE;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"esfaenza-text-editors.mjs","sources":["../../../projects/text-editors/src/lib/editor/extensions/CustomMention.ts","../../../projects/text-editors/src/lib/editor/extensions/CustomeImageWithView.ts","../../../projects/text-editors/src/lib/editor/extensions/FontFamily.ts","../../../projects/text-editors/src/lib/editor/extensions/LineHeight.ts","../../../projects/text-editors/src/lib/editor/extensions/Suggestion.ts","../../../projects/text-editors/src/lib/editor/extensions/FontSize.ts","../../../projects/text-editors/src/lib/editor/editor.component.ts","../../../projects/text-editors/src/lib/editor/editor.component.html","../../../projects/text-editors/src/lib/tokens.ts","../../../projects/text-editors/src/public-api.ts","../../../projects/text-editors/src/esfaenza-text-editors.ts"],"sourcesContent":["import Mention from '@tiptap/extension-mention'\r\nimport { marked } from 'marked'\r\n\r\nexport const CustomMention = Mention.extend({\r\n renderMarkdown(node) { return `@${node.attrs?.id || node.attrs?.label}` },\r\n parseMarkdown(token) { return { type: token.type, attrs: { id: token.text, label: token.text } } },\r\n});\r\n\r\nmarked.use({\r\n extensions: [\r\n {\r\n name: 'mention',\r\n level: 'inline',\r\n\r\n start(src) {\r\n const match = /(^|\\s)@/.exec(src)\r\n return match ? match.index + match[1].length : undefined\r\n },\r\n\r\n tokenizer(src) {\r\n const match = /^@([a-zA-Z]+)(?=\\s|:|$)/.exec(src)\r\n if (match && match[1].length == 7)\r\n return { type: 'mention', raw: match[0], text: match[1] }\r\n },\r\n\r\n renderer(token) { return token.raw },\r\n },\r\n ],\r\n})\r\n\r\nexport const mymarked = marked;\r\n","import { Image } from '@tiptap/extension-image'\r\nimport { Plugin } from '@tiptap/pm/state'\r\n\r\nlet handleFiles = async (view: any, files: FileList | undefined) => {\r\n\r\n const file = Array.from(files || []).find(f => f.type.startsWith('image/'));\r\n\r\n if (!file) return;\r\n\r\n const reader = new FileReader();\r\n\r\n reader.onload = () => {\r\n\r\n const base64 = reader.result as string;\r\n const img = new window.Image();\r\n img.onload = () => {\r\n const { schema } = view.state;\r\n const node = schema.nodes.image.create({ src: base64, width: img.naturalWidth, float: \"none\" });\r\n const tr = view.state.tr.replaceSelectionWith(node);\r\n view.dispatch(tr);\r\n }\r\n img.src = base64;\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n}\r\n\r\nconst CustomImage = Image.extend({\r\n draggable: true,\r\n selectable: true,\r\n addAttributes() {\r\n return {\r\n ...this.parent?.(),\r\n width: { default: null, },\r\n float: { default: \"none\" }, // 'left' | 'right' | 'none'\r\n src: {\r\n default: null,\r\n parseHTML: element => { return element.getAttribute('src') },\r\n renderHTML: attributes => { return { src: attributes.src, } },\r\n },\r\n };\r\n },\r\n renderMarkdown(node, _) {\r\n const src = node.attrs?.src\r\n const width = node.attrs?.width\r\n const float = node.attrs?.float\r\n\r\n // fallback to normal markdown when possible\r\n if ((!width || width === 'auto') && float === 'none') {\r\n return `![image](${src})`\r\n }\r\n\r\n // otherwise emit raw HTML\r\n const style = float === 'left' ? 'float:left; margin-right:10px;' : float === 'right' ? 'float:right; margin-left:10px;' : '';\r\n return `<img src=\"${src}\" width=\"${width || ''}\" style=\"${style}\" />`\r\n },\r\n\r\n parseMarkdown(token, helpers) {\r\n return helpers.createNode(\"image\", { src: token[\"href\"] || token[\"src\"], alt: token.content, float: token['float'] || 'none' })\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n const { float } = HTMLAttributes\r\n let style = ''\r\n if (float === 'left')\r\n style = 'float:left; display:block; margin-right: 10px'\r\n else if (float === 'right')\r\n style = 'float:right; display:block; margin-left: 10px'\r\n else\r\n style = `display: inline-block; float: none; vertical-align: middle;`\r\n\r\n return ['img', { ...HTMLAttributes, style }]\r\n },\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'img[src]',\r\n getAttrs: element => {\r\n const el = element as HTMLImageElement;\r\n const src = el.getAttribute('src')\r\n\r\n if (!src) return false\r\n\r\n // allow both normal URLs AND base64\r\n if (src.startsWith('http') || src.startsWith('data:image'))\r\n return { src, float: el.style.float || null, width: el.style.width ? parseInt(el.style.width) : null, }\r\n\r\n return false\r\n },\r\n },\r\n ]\r\n },\r\n addProseMirrorPlugins: () => {\r\n return [\r\n new Plugin({\r\n props: {\r\n handleDrop: (view, event) => {\r\n const files = event.dataTransfer?.files;\r\n if (!files?.length) return false;\r\n\r\n handleFiles(view, files);\r\n\r\n return true;\r\n },\r\n\r\n handlePaste: (view, event) => {\r\n const files = event.clipboardData?.files;\r\n if (!files?.length) return false;\r\n\r\n handleFiles(view, files);\r\n\r\n return true;\r\n },\r\n },\r\n })\r\n ]\r\n },\r\n});\r\n\r\nconst CustomImageWithView = CustomImage.extend({\r\n addNodeView: () => {\r\n return ({ node, getPos, editor }) => {\r\n\r\n let updateImage = (img: HTMLImageElement, node: any) => {\r\n img.draggable = false;\r\n img.src = node.attrs.src\r\n img.style.width = node.attrs.width ? `${node.attrs.width}px` : '';\r\n if (node.attrs.float === 'left' || node.attrs.float === 'right') {\r\n img.style.display = 'block'\r\n if (node.attrs.float === 'left')\r\n img.style.margin = \"0 10px 0 0\";\r\n else if (node.attrs.float === 'right')\r\n img.style.margin = \"0 0 0 10px\"\r\n } else {\r\n img.style.display = 'inline-block'\r\n img.style.verticalAlign = 'middle'\r\n }\r\n };\r\n\r\n let updateWrapper = (wrapper: HTMLDivElement, node: any) => {\r\n wrapper.draggable = true;\r\n wrapper.contentEditable = \"false\";\r\n\r\n wrapper.className = `img-wrapper`;\r\n wrapper.style.float = node.attrs.float;\r\n\r\n if (node.attrs.float === 'left' || node.attrs.float === 'right') {\r\n wrapper.style.width = \"auto\";\r\n wrapper.style.textAlign = \"auto\";\r\n }\r\n else {\r\n wrapper.style.width = \"100%\";\r\n wrapper.style.textAlign = \"center\";\r\n }\r\n }\r\n\r\n const wrapper = document.createElement('div')\r\n updateWrapper(wrapper, node);\r\n\r\n const img = document.createElement('img')\r\n updateImage(img, node);\r\n\r\n const toolbar = document.createElement('div')\r\n toolbar.className = `img-toolbar ${editor.isEditable ? '' : 'readonly'}`;\r\n\r\n const btn = (t: any, fn: any) => {\r\n const b = document.createElement('button');\r\n b.type = \"button\";\r\n b.textContent = t;\r\n b.onclick = fn;\r\n return b;\r\n }\r\n\r\n toolbar.append(\r\n\r\n btn('Centro', () => editor.view.dispatch(editor.view.state.tr.setNodeMarkup(getPos()!, undefined, { ...node.attrs, ...{ float: 'none' } }))),\r\n btn('Sinistra', () => editor.view.dispatch(editor.view.state.tr.setNodeMarkup(getPos()!, undefined, { ...node.attrs, ...{ float: 'left' } }))),\r\n btn('Destra', () => editor.view.dispatch(editor.view.state.tr.setNodeMarkup(getPos()!, undefined, { ...node.attrs, ...{ float: 'right' } }))),\r\n\r\n btn('Elimina', () => {\r\n const nodePos = getPos()!;\r\n editor.view.dispatch(editor.view.state.tr.delete(nodePos, nodePos + node.nodeSize))\r\n }));\r\n\r\n // resize\r\n let startX = 0;\r\n let startW = 0;\r\n\r\n const handle = document.createElement('div');\r\n handle.className = `img-resize-handle ${editor.isEditable ? '' : 'readonly'}`;\r\n\r\n handle.onmousedown = (e) => {\r\n startX = e.clientX\r\n startW = img.offsetWidth\r\n\r\n let latestWidth: number | null = null\r\n let ticking = false\r\n\r\n const move = (e: any) => {\r\n latestWidth = Math.max(80, startW + (e.clientX - startX));\r\n\r\n if (!ticking) {\r\n ticking = true\r\n\r\n requestAnimationFrame(() => {\r\n const nodePos = getPos()!;\r\n editor.view.dispatch(editor.view.state.tr.setNodeMarkup(nodePos, undefined, { ...node.attrs, width: latestWidth }))\r\n ticking = false\r\n });\r\n }\r\n }\r\n\r\n const up = () => {\r\n window.removeEventListener('mousemove', move);\r\n window.removeEventListener('mouseup', up);\r\n }\r\n\r\n window.addEventListener('mousemove', move);\r\n window.addEventListener('mouseup', up);\r\n\r\n // Per evitare che si attivi il drag dell'elemento sotto. Dal resizer si usa solo il resizer\r\n e.preventDefault();\r\n }\r\n\r\n wrapper.append(img, toolbar, handle);\r\n\r\n return {\r\n dom: wrapper,\r\n destroy() { wrapper.remove() },\r\n update(updatedNode) {\r\n\r\n // different node type -> recreate NodeView\r\n if (updatedNode.type !== node.type)\r\n return false\r\n\r\n node = updatedNode\r\n updateImage(img, node);\r\n updateWrapper(wrapper, node);\r\n\r\n return true\r\n },\r\n };\r\n }\r\n },\r\n});\r\n\r\nexport default CustomImageWithView;","import { Extension } from \"@tiptap/core\";\r\n\r\nconst FontFamily = Extension.create({\r\n name: 'fontFamily',\r\n\r\n addGlobalAttributes() {\r\n return [\r\n {\r\n types: ['textStyle'],\r\n attributes: {\r\n fontFamily: {\r\n default: null,\r\n parseHTML: element => element.style.fontFamily,\r\n renderHTML: attributes => {\r\n if (!attributes.fontFamily) return {};\r\n return { style: `font-family: ${attributes.fontFamily}` };\r\n },\r\n },\r\n },\r\n },\r\n ]\r\n },\r\n addCommands() {\r\n return {\r\n setFontFamily: (fontFamily: string) => ({ chain }) => { return chain().setMark('textStyle', { fontFamily }).run(); },\r\n unsetFontFamily: () => ({ chain }) => { return chain().setMark('textStyle', { fontFamily: null, }).removeEmptyTextStyle().run() },\r\n }\r\n },\r\n});\r\n\r\nexport default FontFamily;","import { Extension } from \"@tiptap/core\";\r\n\r\nconst LineHeight = Extension.create({\r\n name: 'lineHeight',\r\n\r\n addGlobalAttributes() {\r\n return [\r\n {\r\n types: ['paragraph', 'heading'],\r\n attributes: {\r\n lineHeight: {\r\n default: null,\r\n parseHTML: element => element.style.lineHeight,\r\n renderHTML: attributes => {\r\n if (!attributes.lineHeight) return {};\r\n return { style: `line-height: ${attributes.lineHeight}` };\r\n },\r\n },\r\n },\r\n },\r\n ]\r\n },\r\n addCommands() {\r\n return {\r\n setLineHeight: (lineHeight: string) => ({ commands }) => { return commands.updateAttributes('paragraph', { lineHeight }) },\r\n unsetLineHeight: () => ({ commands }) => { return commands.updateAttributes('paragraph', { lineHeight: null }) },\r\n }\r\n },\r\n});\r\n\r\nexport default LineHeight;","let Suggestion = (choiches: { id: string, description: string }[]) => {\r\n \r\n\r\n return {\r\n char: '@',\r\n\r\n items: ({ query }: { query: string }) => {\r\n return choiches.filter(item => item.description.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5);\r\n },\r\n\r\n render: () => {\r\n let popup: HTMLDivElement;\r\n let selectedIndex = 0\r\n let currentProps: any\r\n\r\n return {\r\n onStart: (props: any) => {\r\n popup = document.createElement('div')\r\n popup.classList.add('suggestion-popup')\r\n\r\n document.body.appendChild(popup)\r\n\r\n currentProps = props;\r\n updatePopup();\r\n },\r\n onKeyDown(props: any) {\r\n if (props.event.key === 'ArrowUp') {\r\n selectedIndex = (selectedIndex + currentProps.items.length - 1) % currentProps.items.length\r\n updatePopup()\r\n return true\r\n }\r\n\r\n if (props.event.key === 'ArrowDown') {\r\n selectedIndex = (selectedIndex + 1) % currentProps.items.length\r\n updatePopup()\r\n return true\r\n }\r\n\r\n if (props.event.key === 'Enter') {\r\n selectItem()\r\n return true\r\n }\r\n\r\n return false\r\n },\r\n onUpdate(props: any) { \r\n currentProps = props;\r\n updatePopup();\r\n },\r\n onExit() { popup.remove(); },\r\n }\r\n\r\n function updatePopup() {\r\n if (!currentProps.clientRect)\r\n return\r\n\r\n popup.innerHTML = '';\r\n\r\n currentProps.items.forEach((item: { id: string, description: string }, index: number) => {\r\n const button = document.createElement('button')\r\n\r\n button.textContent = item.description\r\n\r\n if (index === selectedIndex)\r\n button.classList.add('is-selected')\r\n\r\n button.addEventListener('click', () => {\r\n selectedIndex = index\r\n selectItem()\r\n })\r\n\r\n popup.appendChild(button)\r\n });\r\n\r\n const rect = currentProps.clientRect();\r\n popup.style.position = 'fixed'\r\n popup.style.left = `${rect.left}px`\r\n popup.style.top = `${rect.bottom + 5}px`\r\n }\r\n\r\n function selectItem() {\r\n const item = currentProps.items[selectedIndex]\r\n\r\n if (item)\r\n currentProps.command({ id: item.id, description: item.description, });\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Suggestion;","import { Extension } from \"@tiptap/core\";\r\n\r\nconst FontSize = Extension.create({\r\n name: 'fontSize',\r\n\r\n addGlobalAttributes() {\r\n return [\r\n {\r\n types: ['textStyle'],\r\n attributes: {\r\n fontSize: {\r\n default: null,\r\n parseHTML: element => {\r\n const size = element.style.fontSize;\r\n if (!size) return null;\r\n // normalize pt → px\r\n if (size.endsWith('pt'))\r\n return `${Math.round(parseFloat(size) * 1.333)}px`;\r\n return size;\r\n },\r\n renderHTML: attributes => {\r\n if (!attributes.fontSize) return {};\r\n\r\n return { style: `font-size: ${attributes.fontSize}` }\r\n },\r\n },\r\n },\r\n },\r\n ]\r\n },\r\n addCommands() {\r\n return {\r\n setFontSize: (fontSize: string) => ({ chain }) => { return chain().setMark('textStyle', { fontSize }).run() },\r\n unsetFontSize: () => ({ chain }) => { return chain().setMark('textStyle', { fontSize: null }).removeEmptyTextStyle().run() },\r\n }\r\n },\r\n})\r\n\r\nexport default FontSize;","import { CommonModule } from \"@angular/common\";\r\nimport { booleanAttribute, Component, ElementRef, EventEmitter, forwardRef, input, Output, viewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { AbstractControl, ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from \"@angular/forms\";\r\n\r\nimport { Editor } from '@tiptap/core'\r\nimport { Markdown } from '@tiptap/markdown'\r\nimport { StarterKit } from '@tiptap/starter-kit'\r\nimport { TextStyle } from '@tiptap/extension-text-style'\r\nimport { Color } from '@tiptap/extension-color'\r\nimport { Table } from '@tiptap/extension-table'\r\nimport { TableRow } from '@tiptap/extension-table-row'\r\nimport { TableCell } from '@tiptap/extension-table-cell'\r\nimport { TableHeader } from '@tiptap/extension-table-header'\r\nimport { TextAlign } from '@tiptap/extension-text-align'\r\n\r\nimport { CustomMention, mymarked } from \"./extensions/CustomMention\";\r\nimport CustomImageWithView from \"./extensions/CustomeImageWithView\";\r\nimport FontFamily from \"./extensions/FontFamily\";\r\nimport LineHeight from \"./extensions/LineHeight\";\r\nimport Suggestion from \"./extensions/Suggestion\";\r\nimport FontSize from \"./extensions/FontSize\";\r\n\r\n@Component({\r\n selector: \"es-editor\",\r\n templateUrl: \"./editor.component.html\",\r\n styleUrls: [\"./editor.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditorComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => EditorComponent), multi: true }\r\n ]\r\n})\r\nexport class EditorComponent implements ControlValueAccessor, Validator {\r\n\r\n protected onChange = (_: any) => { };\r\n public onTouched = () => { };\r\n public registerOnChange(fn: any): void { this.onChange = fn; }\r\n public registerOnTouched(fn: any): void { this.onTouched = fn; }\r\n\r\n validate(_: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n\r\n private element = viewChild.required<ElementRef<HTMLDivElement>>(\"element\");\r\n\r\n public EmojiSupport = input<boolean>(false);\r\n public BulletListSupport = input<boolean>(false);\r\n public TablesSupport = input<boolean>(false);\r\n public Mode = input.required<'html' | 'markdown' | 'text'>();\r\n public readonly = input(false, { transform: booleanAttribute });\r\n public disabled = input(false, { transform: booleanAttribute });\r\n public required = input(false, { transform: booleanAttribute });\r\n public style = input(\"\");\r\n\r\n public MentionEntities = input<{ id: string, description: string }[]>([]);\r\n\r\n public name = input.required<string>();\r\n\r\n private EditorRef?: Editor;\r\n public value: any;\r\n\r\n @Output() inputChange: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() inputFocus: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() inputFinalized: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n ngOnInit() {\r\n let config = [];\r\n\r\n config.push(...[\r\n StarterKit,\r\n TextStyle,\r\n Color,\r\n FontSize,\r\n FontFamily,\r\n LineHeight,\r\n TextAlign.configure({ types: ['heading', 'paragraph'] }),\r\n CustomImageWithView\r\n ]);\r\n\r\n if (this.Mode() == \"markdown\")\r\n config.push(Markdown.configure({ marked: mymarked }));\r\n\r\n if (this.Mode() == \"html\") {\r\n if (this.TablesSupport())\r\n config.push(...[Table.configure({ lastColumnResizable: true, resizable: true }), TableRow, TableHeader, TableCell]);\r\n }\r\n\r\n if ((this.MentionEntities()?.length || 0) > 0)\r\n config.push(CustomMention.configure({\r\n deleteTriggerWithBackspace: true,\r\n HTMLAttributes: { class: 'mention' },\r\n renderText({ options, node }) { return `${options.suggestion.char}${node.attrs.description ?? node.attrs.id}` },\r\n suggestion: Suggestion(this.MentionEntities()),\r\n }),);\r\n\r\n this.EditorRef = new Editor({\r\n element: this.element().nativeElement,\r\n extensions: config,\r\n editable: !this.readonly(),\r\n onUpdate: (_) => {\r\n let value = \"\";\r\n switch (this.Mode()) {\r\n case \"html\":\r\n value = this.EditorRef?.getHTML() || \"\";\r\n // Emissione del valore vuoto trimmato per bene\r\n if (value.trim() === \"<p></p>\")\r\n value = \"\";\r\n break;\r\n case \"markdown\": value = this.EditorRef?.getMarkdown() || \"\"; break;\r\n case \"text\": value = this.EditorRef?.getText() || \"\"; break;\r\n }\r\n\r\n this.onChange(value);\r\n }\r\n });\r\n }\r\n\r\n public async writeValue(obj: any): Promise<void> {\r\n // Coercizione di tutti i valori \"vuoti\" all'unico \"null\"\r\n if (obj === null || obj === undefined) obj = null;\r\n\r\n this.value = obj;\r\n\r\n // normalizzazione per la firma di merda di CEA\r\n this.value = this.value?.replace(/^\\*\\*\\*\\*\\*\\*\\s\\s/g, '') || \"\"\r\n this.value = this.value?.replace(/^\\*\\*\\s\\s/g, '') || \"\"\r\n\r\n this.EditorRef?.commands.clearContent();\r\n if (this.Mode() === \"markdown\")\r\n this.EditorRef?.commands.setContent(this.value, { contentType: \"markdown\" });\r\n else if (this.Mode() === \"html\")\r\n this.EditorRef?.commands.setContent(this.value, { contentType: \"html\" });\r\n else\r\n this.EditorRef?.commands.insertContent(this.value);\r\n }\r\n\r\n setTypography(selectElement: Event) {\r\n const select = selectElement.target as HTMLSelectElement\r\n switch (select.value) {\r\n case \"paragraph\": this.EditorRef?.chain().focus().setParagraph().run(); break;\r\n default: this.EditorRef?.chain().focus().setHeading({ level: parseInt(select.value.charAt(1)) as any }).run(); break;\r\n }\r\n select.value = \"\";\r\n }\r\n setBold() {\r\n this.EditorRef?.chain().focus().toggleBold().run();\r\n }\r\n setItalic() {\r\n this.EditorRef?.chain().focus().toggleItalic().run();\r\n }\r\n setUnderlined() {\r\n this.EditorRef?.chain().focus().toggleUnderline().run();\r\n }\r\n setBulletList() {\r\n this.EditorRef?.chain().focus().toggleBulletList().run();\r\n }\r\n undoAction() {\r\n this.EditorRef?.chain().focus().undo().run();\r\n }\r\n redoAction() {\r\n this.EditorRef?.chain().focus().redo().run();\r\n }\r\n addTable() {\r\n this.EditorRef?.chain().focus().insertTable({ rows: 1, cols: 2, withHeaderRow: false }).run()\r\n }\r\n deleteTable() {\r\n this.EditorRef?.chain().focus().deleteTable().run();\r\n }\r\n addRow() {\r\n this.EditorRef?.chain().focus().addRowAfter().run();\r\n }\r\n deleteRow() {\r\n this.EditorRef?.chain().focus().deleteRow().run();\r\n }\r\n addColumn() {\r\n this.EditorRef?.chain().focus().addColumnAfter().run();\r\n }\r\n deleteColumn() {\r\n this.EditorRef?.chain().focus().deleteColumn().run();\r\n }\r\n setEmoji(selectElement: Event) {\r\n const select = selectElement.target as HTMLSelectElement;\r\n this.EditorRef?.chain().focus().insertContent(select.value).run();\r\n select.value = \"\";\r\n }\r\n}","<div class=\"editor-shell\" [class.readonly]=\"readonly()\" [attr.style]=\"style()\">\r\n @if(!readonly()){\r\n <div class=\"editor-toolbar\">\r\n\r\n <!-- Typography -->\r\n <select id=\"heading-select\" (change)=\"setTypography($event)\">\r\n <option value=\"\" selected hidden>Pragrafo</option>\r\n <option value=\"paragraph\">Pragrafo</option>\r\n <option value=\"h1\">Intestazione 1</option>\r\n <option value=\"h2\">Intestazione 2</option>\r\n <option value=\"h3\">Intestazione 3</option>\r\n <option value=\"h4\">Intestazione 4</option>\r\n <option value=\"h5\">Intestazione 5</option>\r\n <option value=\"h6\">Intestazione 6</option>\r\n </select>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <!-- Formatting -->\r\n <button type=\"button\" (click)=\"setBold()\"><b>B</b></button>\r\n <button type=\"button\" (click)=\"setItalic()\"><i>I</i></button>\r\n <button type=\"button\" (click)=\"setUnderlined()\"><u>U</u></button>\r\n\r\n <!-- Lists -->\r\n @if(BulletListSupport()){\r\n <button type=\"button\" (click)=\"setBulletList()\">• Lista</button>\r\n }\r\n\r\n <div class=\"divider\"></div>\r\n\r\n @if(Mode() == \"html\" && TablesSupport())\r\n {\r\n <button type=\"button\" (click)=\"addTable()\">⊞<span style=\"font-size: 10px;\">✚</span></button>\r\n <button type=\"button\" (click)=\"deleteTable()\">⊞<span style=\"font-size: 10px;\">▬</span></button>\r\n <button type=\"button\" (click)=\"addRow()\">🖨<span style=\"font-size: 10px;\">✚</span></button>\r\n <button type=\"button\" (click)=\"deleteRow()\">🖨<span style=\"font-size: 10px;\">▬</span></button>\r\n <button type=\"button\" (click)=\"addColumn()\">🗄<span style=\"font-size: 10px;\">✚</span></button>\r\n <button type=\"button\" (click)=\"deleteColumn()\">🗄<span style=\"font-size: 10px;\">▬</span></button>\r\n <div class=\"divider\"></div>\r\n }\r\n\r\n <!-- History -->\r\n <button type=\"button\" (click)=\"undoAction()\">↶</button>\r\n <button type=\"button\" (click)=\"redoAction()\">↷</button>\r\n\r\n @if(EmojiSupport()){\r\n <select id=\"emoji-select\" (change)=\"setEmoji($event)\">\r\n <option value=\"\" hidden selected>😊</option>\r\n <option value=\"😊\">😊</option>\r\n <option value=\"😀\">😀</option>\r\n <option value=\"😂\">😂</option>\r\n <option value=\"🔥\">🔥</option>\r\n <option value=\"🎉\">🎉</option>\r\n <option value=\"🚀\">🚀</option>\r\n <option value=\"❤️\">❤️</option>\r\n <option value=\"👍\">👍</option>\r\n </select>\r\n }\r\n </div>\r\n }\r\n <div #element></div>\r\n</div>","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const TXE_DEBUG = new InjectionToken<boolean>('TXE_DEBUG');","/*\r\n * Public API Surface of text-editors\r\n */\r\n\r\nexport * from './lib/editor/editor.component';\r\n\r\nexport * from \"./lib/tokens\"","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -29,11 +29,7 @@ declare class EditorComponent implements ControlValueAccessor, Validator {
29
29
  inputFinalized: EventEmitter<string>;
30
30
  ngOnInit(): void;
31
31
  writeValue(obj: any): Promise<void>;
32
- setTypography(selectElement: {
33
- target: {
34
- value: string;
35
- };
36
- }): void;
32
+ setTypography(selectElement: Event): void;
37
33
  setBold(): void;
38
34
  setItalic(): void;
39
35
  setUnderlined(): void;
@@ -46,11 +42,7 @@ declare class EditorComponent implements ControlValueAccessor, Validator {
46
42
  deleteRow(): void;
47
43
  addColumn(): void;
48
44
  deleteColumn(): void;
49
- setEmoji(selectElement: {
50
- target: {
51
- value: string;
52
- };
53
- }): void;
45
+ setEmoji(selectElement: Event): void;
54
46
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditorComponent, never>;
55
47
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditorComponent, "es-editor", never, { "EmojiSupport": { "alias": "EmojiSupport"; "required": false; "isSignal": true; }; "BulletListSupport": { "alias": "BulletListSupport"; "required": false; "isSignal": true; }; "TablesSupport": { "alias": "TablesSupport"; "required": false; "isSignal": true; }; "Mode": { "alias": "Mode"; "required": true; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "MentionEntities": { "alias": "MentionEntities"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; }, { "inputChange": "inputChange"; "inputFocus": "inputFocus"; "inputFinalized": "inputFinalized"; }, never, never, true, never>;
56
48
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esfaenza/text-editors",
3
- "version": "20.3.5",
3
+ "version": "20.3.7",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },