@esfaenza/text-editors 19.2.5 → 19.2.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.
@@ -1,17 +1,219 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, forwardRef, Output, Input, ViewEncapsulation, Component } from '@angular/core';
2
+ import { InjectionToken, EventEmitter, inject, forwardRef, Output, Input, ViewEncapsulation, Component, input, viewChild } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { FormsModule, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
6
6
  import * as i2 from '@ckeditor/ckeditor5-angular';
7
- import { loadCKEditorCloud, CKEditorModule } from '@ckeditor/ckeditor5-angular';
7
+ import { CKEditorModule, loadCKEditorCloud } from '@ckeditor/ckeditor5-angular';
8
8
 
9
- const cloudConfig$1 = {
9
+ const TXE_DEBUG = new InjectionToken('TXE_DEBUG');
10
+
11
+ class HtmlEditorComponent {
12
+ constructor() {
13
+ this.Readonly = false; // Angular19 -> [disabled]
14
+ this.Required = false;
15
+ this.Validation = false;
16
+ this.onEditorLoaded = new EventEmitter();
17
+ this.EditorModel = null;
18
+ this.DEBUG = inject(TXE_DEBUG, { optional: true }) || false;
19
+ //#region Forms
20
+ this.onTouched = () => { };
21
+ this.propagateChange = (_) => { };
22
+ }
23
+ initializeEditor() {
24
+ if (!this.PersistentEditor) {
25
+ if (this.DEBUG)
26
+ console.error("@ HTML-Editor @: Impossibile inizializzare l'editor HTML senza PersistentEditor");
27
+ }
28
+ else
29
+ this.PersistentEditor?.iInitializeEditor();
30
+ this.onEditorLoaded.emit();
31
+ }
32
+ ngOnInit() {
33
+ if (this.DEBUG)
34
+ console.info("@ HTML-Editor @: Il componente HtmlEditorComponent è stato creato");
35
+ }
36
+ ngOnDestroy() {
37
+ if (this.DEBUG)
38
+ console.info("@ HTML-Editor @: Il componente HtmlEditorComponent è stato distrutto");
39
+ }
40
+ registerOnChange(fn) {
41
+ this.propagateChange = fn;
42
+ }
43
+ registerOnTouched(fn) {
44
+ this.onTouched = fn;
45
+ }
46
+ writeValue(obj) {
47
+ let value = "";
48
+ if (obj !== undefined)
49
+ value = obj;
50
+ if (this.DEBUG)
51
+ console.log("@ HTML-Editor @: Writevalue pre-refresh: " + value);
52
+ if (value === this.EditorModel?.value) {
53
+ if (this.DEBUG)
54
+ console.log("@ HTML-Editor @: Writevalue ridondante");
55
+ return;
56
+ }
57
+ this.EditorModel = null;
58
+ requestAnimationFrame(() => {
59
+ if (this.DEBUG)
60
+ console.log("@ HTML-Editor @: Writevalue post-refresh: " + value);
61
+ this.EditorModel = { value: value, onEditorChange: this.onEditorChange.bind(this) };
62
+ });
63
+ }
64
+ validate(c) {
65
+ let ret = null;
66
+ if (this.EditorModel?.value || this.Readonly || !this.Required)
67
+ ret = null;
68
+ ret = null;
69
+ if (this.DEBUG)
70
+ console.log("@ HTML-Editor @: Validate post-validate: " + ret);
71
+ return ret;
72
+ }
73
+ onEditorChange({ editor }) {
74
+ if (!this.EditorModel)
75
+ return;
76
+ let data = editor?.getData();
77
+ if (this.DEBUG)
78
+ console.log("@ HTML-Editor @: changed: " + data);
79
+ this.propagateChange(data);
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HtmlEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HtmlEditorComponent, isStandalone: true, selector: "html-editor", inputs: { PersistentEditor: "PersistentEditor", Readonly: "Readonly", Required: "Required", Validation: "Validation" }, outputs: { onEditorLoaded: "onEditorLoaded" }, providers: [
83
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorComponent), multi: true },
84
+ { provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorComponent), multi: true }
85
+ ], ngImport: i0, template: "<div class=\"html-editor\" *ngIf=\"EditorModel && PersistentEditor\">\r\n <ng-content *ngIf=\"PersistentEditor.EditorTemplate()\">\r\n <ng-content *ngTemplateOutlet=\"PersistentEditor.EditorTemplate(); context: {$implicit: EditorModel}\"></ng-content>\r\n </ng-content>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap\";:root{--ck-content-font-family: \"Lato\"}@media print{body{margin:0!important}}.main-container{font-family:var(--ck-content-font-family);width:fit-content;margin-left:auto;margin-right:auto}.editor-container_classic-editor .editor-container__editor{min-width:795px;max-width:795px}.html-editor .ck-content{overflow-x:hidden!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CKEditorModule }], encapsulation: i0.ViewEncapsulation.None }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HtmlEditorComponent, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: "html-editor", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
90
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorComponent), multi: true },
91
+ { provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorComponent), multi: true }
92
+ ], template: "<div class=\"html-editor\" *ngIf=\"EditorModel && PersistentEditor\">\r\n <ng-content *ngIf=\"PersistentEditor.EditorTemplate()\">\r\n <ng-content *ngTemplateOutlet=\"PersistentEditor.EditorTemplate(); context: {$implicit: EditorModel}\"></ng-content>\r\n </ng-content>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap\";:root{--ck-content-font-family: \"Lato\"}@media print{body{margin:0!important}}.main-container{font-family:var(--ck-content-font-family);width:fit-content;margin-left:auto;margin-right:auto}.editor-container_classic-editor .editor-container__editor{min-width:795px;max-width:795px}.html-editor .ck-content{overflow-x:hidden!important}\n"] }]
93
+ }], propDecorators: { PersistentEditor: [{
94
+ type: Input
95
+ }], Readonly: [{
96
+ type: Input
97
+ }], Required: [{
98
+ type: Input
99
+ }], Validation: [{
100
+ type: Input
101
+ }], onEditorLoaded: [{
102
+ type: Output
103
+ }] } });
104
+
105
+ class MarkdownEditorComponent {
106
+ constructor() {
107
+ this.Readonly = false; // Angular19 -> [disabled]
108
+ this.Required = false;
109
+ this.Validation = false;
110
+ // Mention
111
+ this.MentionMarker = "@";
112
+ this.MentionEntities = [];
113
+ this.onEditorLoaded = new EventEmitter();
114
+ this.DEBUG = inject(TXE_DEBUG, { optional: true }) || false;
115
+ this.EditorModel = null;
116
+ //#region Forms
117
+ this.onTouched = () => { };
118
+ this.propagateChange = (_) => { };
119
+ }
120
+ get NormalizedMentionEntities() {
121
+ return this.MentionEntities.map(m => {
122
+ return { id: this.MentionMarker + m.id, description: m.description };
123
+ });
124
+ }
125
+ initializeEditor() {
126
+ if (!this.PersistentEditor) {
127
+ if (this.DEBUG)
128
+ console.error("@ Markdown-Editor @: Impossibile inizializzare l'editor HTML senza PersistentEditor");
129
+ }
130
+ else
131
+ this.PersistentEditor?.iInitializeEditor(this.MentionMarker, this.NormalizedMentionEntities);
132
+ this.onEditorLoaded.emit();
133
+ }
134
+ ngOnInit() {
135
+ if (this.DEBUG)
136
+ console.info("@ Markdown-Editor @: Il componente MarkdownEditor è stato creato");
137
+ }
138
+ ngOnDestroy() {
139
+ if (this.DEBUG)
140
+ console.info("@ Markdown-Editor @: Il componente MarkdownEditor è stato distrutto");
141
+ }
142
+ registerOnChange(fn) {
143
+ this.propagateChange = fn;
144
+ }
145
+ registerOnTouched(fn) {
146
+ this.onTouched = fn;
147
+ }
148
+ writeValue(obj) {
149
+ let value = "";
150
+ if (obj !== undefined)
151
+ value = obj;
152
+ if (this.DEBUG)
153
+ console.log("@ Markdown-Editor @: Writevalue pre-refresh: " + value);
154
+ if (value === this.EditorModel?.value) {
155
+ if (this.DEBUG)
156
+ console.log("@ Markdown-Editor @: Writevalue ridondante");
157
+ return;
158
+ }
159
+ this.EditorModel = null;
160
+ requestAnimationFrame(() => {
161
+ if (this.DEBUG)
162
+ console.log("@ Markdown-Editor @: Writevalue post-refresh: " + value);
163
+ this.EditorModel = { value: value, onEditorChange: this.onEditorChange.bind(this) };
164
+ });
165
+ }
166
+ validate(c) {
167
+ let ret = null;
168
+ if (this.EditorModel?.value || this.Readonly || !this.Required)
169
+ ret = null;
170
+ ret = null;
171
+ if (this.DEBUG)
172
+ console.log("@ Markdown-Editor @: Validate post-validate: " + ret);
173
+ return ret;
174
+ }
175
+ onEditorChange({ editor }) {
176
+ if (!this.EditorModel)
177
+ return;
178
+ let data = editor?.getData();
179
+ if (this.DEBUG)
180
+ console.log("@ Markdown-Editor @: changed: " + data);
181
+ this.propagateChange(data);
182
+ }
183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
184
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: MarkdownEditorComponent, isStandalone: true, selector: "markdown-editor", inputs: { PersistentEditor: "PersistentEditor", Readonly: "Readonly", Required: "Required", Validation: "Validation", MentionMarker: "MentionMarker", MentionEntities: "MentionEntities" }, outputs: { onEditorLoaded: "onEditorLoaded" }, providers: [
185
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MarkdownEditorComponent), multi: true },
186
+ { provide: NG_VALIDATORS, useExisting: forwardRef(() => MarkdownEditorComponent), multi: true }
187
+ ], ngImport: i0, template: "<div class=\"html-editor\" *ngIf=\"EditorModel && PersistentEditor\">\r\n <ng-content *ngIf=\"PersistentEditor.EditorTemplate()\">\r\n <ng-content *ngTemplateOutlet=\"PersistentEditor.EditorTemplate(); context: {$implicit: EditorModel}\"></ng-content>\r\n </ng-content>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap\";:root{--ck-content-font-family: \"Lato\"}@media print{body{margin:0!important}}.main-container{font-family:var(--ck-content-font-family);width:fit-content;margin-left:auto;margin-right:auto}.editor-container_classic-editor .editor-container__editor{min-width:795px;max-width:795px}.markdown-editor .ck-content{overflow-x:hidden!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CKEditorModule }], encapsulation: i0.ViewEncapsulation.None }); }
188
+ }
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
190
+ type: Component,
191
+ args: [{ selector: "markdown-editor", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
192
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MarkdownEditorComponent), multi: true },
193
+ { provide: NG_VALIDATORS, useExisting: forwardRef(() => MarkdownEditorComponent), multi: true }
194
+ ], template: "<div class=\"html-editor\" *ngIf=\"EditorModel && PersistentEditor\">\r\n <ng-content *ngIf=\"PersistentEditor.EditorTemplate()\">\r\n <ng-content *ngTemplateOutlet=\"PersistentEditor.EditorTemplate(); context: {$implicit: EditorModel}\"></ng-content>\r\n </ng-content>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap\";:root{--ck-content-font-family: \"Lato\"}@media print{body{margin:0!important}}.main-container{font-family:var(--ck-content-font-family);width:fit-content;margin-left:auto;margin-right:auto}.editor-container_classic-editor .editor-container__editor{min-width:795px;max-width:795px}.markdown-editor .ck-content{overflow-x:hidden!important}\n"] }]
195
+ }], propDecorators: { PersistentEditor: [{
196
+ type: Input
197
+ }], Readonly: [{
198
+ type: Input
199
+ }], Required: [{
200
+ type: Input
201
+ }], Validation: [{
202
+ type: Input
203
+ }], MentionMarker: [{
204
+ type: Input
205
+ }], MentionEntities: [{
206
+ type: Input
207
+ }], onEditorLoaded: [{
208
+ type: Output
209
+ }] } });
210
+
211
+ const cloudConfig$2 = {
10
212
  version: '46.1.1',
11
213
  translations: ['it']
12
214
  };
13
- const LICENSE_KEY$1 = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';
14
- class HtmlEditorComponent {
215
+ const LICENSE_KEY$2 = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';
216
+ class HtmlEditorStandaloneComponent {
15
217
  constructor() {
16
218
  this.Readonly = false; // Angular19 -> [disabled]
17
219
  this.Required = false;
@@ -28,7 +230,7 @@ class HtmlEditorComponent {
28
230
  }
29
231
  initializeEditor() {
30
232
  if (!this.Editor) {
31
- loadCKEditorCloud(cloudConfig$1).then(this.internalInitializeEditor.bind(this));
233
+ loadCKEditorCloud(cloudConfig$2).then(this.internalInitializeEditor.bind(this));
32
234
  this.onEditorLoaded.emit();
33
235
  }
34
236
  }
@@ -70,7 +272,7 @@ class HtmlEditorComponent {
70
272
  },
71
273
  initialData: "",
72
274
  language: 'it',
73
- licenseKey: LICENSE_KEY$1,
275
+ licenseKey: LICENSE_KEY$2,
74
276
  link: {
75
277
  addTargetToExternalLinks: true,
76
278
  defaultProtocol: 'https://',
@@ -111,19 +313,21 @@ class HtmlEditorComponent {
111
313
  changed() {
112
314
  this.propagateChange(this.value);
113
315
  }
114
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HtmlEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HtmlEditorComponent, isStandalone: true, selector: "html-editor", inputs: { Readonly: "Readonly", Required: "Required", Validation: "Validation" }, outputs: { onEditorLoaded: "onEditorLoaded" }, providers: [
116
- { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorComponent), multi: true },
117
- { provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorComponent), multi: true }
316
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HtmlEditorStandaloneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
317
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HtmlEditorStandaloneComponent, isStandalone: true, selector: "html-editor-standalone", inputs: { PersistentEditor: "PersistentEditor", Readonly: "Readonly", Required: "Required", Validation: "Validation" }, outputs: { onEditorLoaded: "onEditorLoaded" }, providers: [
318
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorStandaloneComponent), multi: true },
319
+ { provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorStandaloneComponent), multi: true }
118
320
  ], ngImport: i0, template: "<div class=\"html-editor\">\r\n <ckeditor *ngIf=\"Editor && EditorConfig\"\r\n [data]=\"value\"\r\n [editor]=\"Editor\"\r\n [config]=\"EditorConfig\"\r\n (change)=\"onEditorChange($event)\">\r\n </ckeditor>\r\n <div *ngIf=\"!Editor && !EditorConfig\">\r\n Editor in caricamento...\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap\";:root{--ck-content-font-family: \"Lato\"}@media print{body{margin:0!important}}.main-container{font-family:var(--ck-content-font-family);width:fit-content;margin-left:auto;margin-right:auto}.editor-container_classic-editor .editor-container__editor{min-width:795px;max-width:795px}.html-editor .ck-content{overflow-x:hidden!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CKEditorModule }, { kind: "component", type: i2.CKEditorComponent, selector: "ckeditor", inputs: ["editor", "config", "data", "tagName", "watchdog", "editorWatchdogConfig", "disableTwoWayDataBinding", "disabled"], outputs: ["ready", "change", "blur", "focus", "error"] }], encapsulation: i0.ViewEncapsulation.None }); }
119
321
  }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HtmlEditorComponent, decorators: [{
322
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HtmlEditorStandaloneComponent, decorators: [{
121
323
  type: Component,
122
- args: [{ selector: "html-editor", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
123
- { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorComponent), multi: true },
124
- { provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorComponent), multi: true }
324
+ args: [{ selector: "html-editor-standalone", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
325
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorStandaloneComponent), multi: true },
326
+ { provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorStandaloneComponent), multi: true }
125
327
  ], template: "<div class=\"html-editor\">\r\n <ckeditor *ngIf=\"Editor && EditorConfig\"\r\n [data]=\"value\"\r\n [editor]=\"Editor\"\r\n [config]=\"EditorConfig\"\r\n (change)=\"onEditorChange($event)\">\r\n </ckeditor>\r\n <div *ngIf=\"!Editor && !EditorConfig\">\r\n Editor in caricamento...\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap\";:root{--ck-content-font-family: \"Lato\"}@media print{body{margin:0!important}}.main-container{font-family:var(--ck-content-font-family);width:fit-content;margin-left:auto;margin-right:auto}.editor-container_classic-editor .editor-container__editor{min-width:795px;max-width:795px}.html-editor .ck-content{overflow-x:hidden!important}\n"] }]
126
- }], propDecorators: { Readonly: [{
328
+ }], propDecorators: { PersistentEditor: [{
329
+ type: Input
330
+ }], Readonly: [{
127
331
  type: Input
128
332
  }], Required: [{
129
333
  type: Input
@@ -133,12 +337,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
133
337
  type: Output
134
338
  }] } });
135
339
 
136
- const cloudConfig = {
340
+ const cloudConfig$1 = {
137
341
  version: '46.1.1',
138
342
  translations: ['it']
139
343
  };
140
- const LICENSE_KEY = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';
141
- class MarkdownEditorComponent {
344
+ const LICENSE_KEY$1 = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';
345
+ class MarkdownEditorStandaloneComponent {
142
346
  constructor() {
143
347
  this.Readonly = false; // Angular19 -> [disabled]
144
348
  this.Required = false;
@@ -163,7 +367,7 @@ class MarkdownEditorComponent {
163
367
  }
164
368
  initializeEditor() {
165
369
  if (!this.Editor) {
166
- loadCKEditorCloud(cloudConfig).then(this.internalInitializeEditor.bind(this));
370
+ loadCKEditorCloud(cloudConfig$1).then(this.internalInitializeEditor.bind(this));
167
371
  this.onEditorLoaded.emit();
168
372
  }
169
373
  }
@@ -205,7 +409,7 @@ class MarkdownEditorComponent {
205
409
  },
206
410
  initialData: "",
207
411
  language: 'it',
208
- licenseKey: LICENSE_KEY,
412
+ licenseKey: LICENSE_KEY$1,
209
413
  link: {
210
414
  addTargetToExternalLinks: true,
211
415
  defaultProtocol: 'https://',
@@ -275,31 +479,31 @@ class MarkdownEditorComponent {
275
479
  changed() {
276
480
  this.propagateChange(this.value);
277
481
  }
278
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
279
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: MarkdownEditorComponent, isStandalone: true, selector: "markdown-editor", inputs: { Readonly: "Readonly", Required: "Required", Validation: "Validation", MentionMarker: "MentionMarker", MentionEntities: "MentionEntities" }, outputs: { onEditorLoaded: "onEditorLoaded" }, providers: [
482
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MarkdownEditorStandaloneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
483
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: MarkdownEditorStandaloneComponent, isStandalone: true, selector: "markdown-editor-standalone", inputs: { Readonly: "Readonly", Required: "Required", Validation: "Validation", MentionMarker: "MentionMarker", MentionEntities: "MentionEntities", PersistentEditor: "PersistentEditor" }, outputs: { onEditorLoaded: "onEditorLoaded" }, providers: [
280
484
  {
281
485
  provide: NG_VALUE_ACCESSOR,
282
- useExisting: forwardRef(() => MarkdownEditorComponent),
486
+ useExisting: forwardRef(() => MarkdownEditorStandaloneComponent),
283
487
  multi: true
284
488
  },
285
489
  {
286
490
  provide: NG_VALIDATORS,
287
- useExisting: forwardRef(() => MarkdownEditorComponent),
491
+ useExisting: forwardRef(() => MarkdownEditorStandaloneComponent),
288
492
  multi: true
289
493
  }
290
494
  ], ngImport: i0, template: "<div class=\"markdown-editor\">\r\n <ckeditor *ngIf=\"Editor && EditorConfig\"\r\n [data]=\"value\"\r\n [editor]=\"Editor\"\r\n [config]=\"EditorConfig\"\r\n (change)=\"onEditorChange($event)\">\r\n </ckeditor>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap\";:root{--ck-content-font-family: \"Lato\"}@media print{body{margin:0!important}}.main-container{font-family:var(--ck-content-font-family);width:fit-content;margin-left:auto;margin-right:auto}.editor-container_classic-editor .editor-container__editor{min-width:795px;max-width:795px}.markdown-editor .ck-content{overflow-x:hidden!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CKEditorModule }, { kind: "component", type: i2.CKEditorComponent, selector: "ckeditor", inputs: ["editor", "config", "data", "tagName", "watchdog", "editorWatchdogConfig", "disableTwoWayDataBinding", "disabled"], outputs: ["ready", "change", "blur", "focus", "error"] }], encapsulation: i0.ViewEncapsulation.None }); }
291
495
  }
292
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
496
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MarkdownEditorStandaloneComponent, decorators: [{
293
497
  type: Component,
294
- args: [{ selector: "markdown-editor", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
498
+ args: [{ selector: "markdown-editor-standalone", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
295
499
  {
296
500
  provide: NG_VALUE_ACCESSOR,
297
- useExisting: forwardRef(() => MarkdownEditorComponent),
501
+ useExisting: forwardRef(() => MarkdownEditorStandaloneComponent),
298
502
  multi: true
299
503
  },
300
504
  {
301
505
  provide: NG_VALIDATORS,
302
- useExisting: forwardRef(() => MarkdownEditorComponent),
506
+ useExisting: forwardRef(() => MarkdownEditorStandaloneComponent),
303
507
  multi: true
304
508
  }
305
509
  ], template: "<div class=\"markdown-editor\">\r\n <ckeditor *ngIf=\"Editor && EditorConfig\"\r\n [data]=\"value\"\r\n [editor]=\"Editor\"\r\n [config]=\"EditorConfig\"\r\n (change)=\"onEditorChange($event)\">\r\n </ckeditor>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap\";:root{--ck-content-font-family: \"Lato\"}@media print{body{margin:0!important}}.main-container{font-family:var(--ck-content-font-family);width:fit-content;margin-left:auto;margin-right:auto}.editor-container_classic-editor .editor-container__editor{min-width:795px;max-width:795px}.markdown-editor .ck-content{overflow-x:hidden!important}\n"] }]
@@ -315,8 +519,140 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
315
519
  type: Input
316
520
  }], onEditorLoaded: [{
317
521
  type: Output
522
+ }], PersistentEditor: [{
523
+ type: Input
318
524
  }] } });
319
525
 
526
+ const cloudConfig = {
527
+ version: '46.1.1',
528
+ translations: ['it']
529
+ };
530
+ const LICENSE_KEY = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';
531
+ class PersistentEditor {
532
+ constructor() {
533
+ this.Mode = input.required();
534
+ this.EditorTemplate = viewChild("template");
535
+ this.DEBUG = inject(TXE_DEBUG, { optional: true }) || false;
536
+ this.Editor = null;
537
+ this.EditorConfig = null;
538
+ this.MentionMarker = "@";
539
+ this.MentionEntities = [];
540
+ }
541
+ iInitializeEditor(mentionmarker, mentionentitis) {
542
+ if (this.Editor && this.EditorConfig) {
543
+ if (this.DEBUG)
544
+ console.log("@ Persistent Editor @ Editor is already initialized");
545
+ }
546
+ else {
547
+ loadCKEditorCloud(cloudConfig).then(this.internalInitializeEditor.bind(this));
548
+ if (this.DEBUG)
549
+ console.log(`@ Persistent Editor @ Editor is initialized (${this.Mode()} mode). loadCKEditorCloud has been called`);
550
+ }
551
+ this.MentionMarker = mentionmarker ?? "@";
552
+ this.MentionEntities = mentionentitis ?? [];
553
+ if ((this.MentionEntities?.length || 0) > 0) {
554
+ if (this.DEBUG)
555
+ console.log(`@ Persistent Editor @ Editor is using ${this.MentionEntities?.length} mentions possibilities`);
556
+ }
557
+ }
558
+ internalInitializeEditor(cloudConfig) {
559
+ const { ClassicEditor,
560
+ // Plugin generali
561
+ Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, Heading, ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic, Link, List, Paragraph, PasteFromOffice,
562
+ // Plugin specifici modalità HTML
563
+ GeneralHtmlSupport, Underline, SourceEditing,
564
+ // Plugin specifici modalità Markdown
565
+ Mention, Emoji, Markdown, PasteFromMarkdownExperimental } = cloudConfig.CKEditor;
566
+ let markdownPlugins = [Mention, Emoji, Markdown, PasteFromMarkdownExperimental];
567
+ let htmlPlugins = [GeneralHtmlSupport, Underline, SourceEditing];
568
+ this.Editor = ClassicEditor;
569
+ this.EditorConfig = {
570
+ toolbar: {
571
+ items: this.Mode() == "html" ?
572
+ ['heading', '|', 'bold', 'italic', 'underline', '|', 'undo', 'redo', '|', 'insertImage', 'imageStyle:block', 'imageStyle:alignLeft', 'imageStyle:alignRight', '|', 'sourceEditing'] :
573
+ ['heading', '|', 'bold', 'italic', 'bulletedList', '|', 'undo', 'redo', '|', 'emoji'],
574
+ shouldNotGroupWhenFull: false
575
+ },
576
+ plugins: [
577
+ Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials,
578
+ Heading, ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,
579
+ Link, List, Paragraph, PasteFromOffice,
580
+ ...(this.Mode() == "html" ? htmlPlugins : markdownPlugins)
581
+ ],
582
+ heading: {
583
+ options: [
584
+ { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },
585
+ { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },
586
+ { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },
587
+ { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },
588
+ { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },
589
+ { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },
590
+ { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }
591
+ ]
592
+ },
593
+ htmlSupport: {
594
+ allow: [{ name: /^.*$/, styles: true, attributes: true, classes: true }]
595
+ },
596
+ image: {
597
+ toolbar: ['imageStyle:block', 'imageStyle:side', '|', 'resizeImage:original'],
598
+ insert: { type: 'auto' }
599
+ },
600
+ initialData: "",
601
+ language: 'it',
602
+ licenseKey: LICENSE_KEY,
603
+ link: {
604
+ addTargetToExternalLinks: true,
605
+ defaultProtocol: 'https://',
606
+ decorators: {
607
+ toggleDownloadable: {
608
+ mode: 'manual',
609
+ label: 'Downloadable',
610
+ attributes: { download: 'file' }
611
+ }
612
+ }
613
+ },
614
+ placeholder: 'Scrivi o incolla il tuo contenuto qui!'
615
+ };
616
+ if (this.Mode() == "markdown")
617
+ this.setupMentions();
618
+ }
619
+ setupMentions() {
620
+ if (!this.EditorConfig)
621
+ return;
622
+ this.EditorConfig.mention = {
623
+ feeds: [
624
+ {
625
+ marker: this.MentionMarker ?? "@",
626
+ feed: (filter) => {
627
+ return this.MentionEntities?.filter(t => t.id.toLowerCase().includes(filter.toLowerCase())) || [];
628
+ },
629
+ minimumCharacters: 1,
630
+ // Callback per stile
631
+ itemRenderer: (item) => {
632
+ let dropdownElement = document.createElement('div');
633
+ dropdownElement.classList.add("ck-mention-dropdown");
634
+ dropdownElement.id = `mention-list-item-id-${item.id}`;
635
+ let useridElement = document.createElement('div');
636
+ useridElement.classList.add("ck-username-id");
637
+ useridElement.textContent = `${item.id.substr(1, item.id.length)}`;
638
+ let userdescElement = document.createElement('div');
639
+ userdescElement.textContent = ` ● ${item.description}`;
640
+ dropdownElement.appendChild(useridElement);
641
+ dropdownElement.appendChild(userdescElement);
642
+ return dropdownElement;
643
+ }
644
+ },
645
+ ]
646
+ };
647
+ }
648
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PersistentEditor, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
649
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.15", type: PersistentEditor, isStandalone: true, selector: "persistent-ckeditor", inputs: { Mode: { classPropertyName: "Mode", publicName: "Mode", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "EditorTemplate", first: true, predicate: ["template"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #template let-EditorModel>\r\n <ckeditor \r\n *ngIf=\"Editor && EditorConfig\" \r\n [editor]=\"Editor\" \r\n [config]=\"EditorConfig\" \r\n [data]=\"EditorModel.value\" \r\n (change)=\"EditorModel.onEditorChange($event)\"></ckeditor>\r\n</ng-template>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap\";:root{--ck-content-font-family: \"Lato\"}@media print{body{margin:0!important}}.main-container{font-family:var(--ck-content-font-family);width:fit-content;margin-left:auto;margin-right:auto}.editor-container_classic-editor .editor-container__editor{min-width:795px;max-width:795px}.html-editor .ck-content{overflow-x:hidden!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CKEditorModule }, { kind: "component", type: i2.CKEditorComponent, selector: "ckeditor", inputs: ["editor", "config", "data", "tagName", "watchdog", "editorWatchdogConfig", "disableTwoWayDataBinding", "disabled"], outputs: ["ready", "change", "blur", "focus", "error"] }], encapsulation: i0.ViewEncapsulation.None }); }
650
+ }
651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PersistentEditor, decorators: [{
652
+ type: Component,
653
+ args: [{ selector: "persistent-ckeditor", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, template: "<ng-template #template let-EditorModel>\r\n <ckeditor \r\n *ngIf=\"Editor && EditorConfig\" \r\n [editor]=\"Editor\" \r\n [config]=\"EditorConfig\" \r\n [data]=\"EditorModel.value\" \r\n (change)=\"EditorModel.onEditorChange($event)\"></ckeditor>\r\n</ng-template>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap\";:root{--ck-content-font-family: \"Lato\"}@media print{body{margin:0!important}}.main-container{font-family:var(--ck-content-font-family);width:fit-content;margin-left:auto;margin-right:auto}.editor-container_classic-editor .editor-container__editor{min-width:795px;max-width:795px}.html-editor .ck-content{overflow-x:hidden!important}\n"] }]
654
+ }] });
655
+
320
656
  /*
321
657
  * Public API Surface of text-editors
322
658
  */
@@ -325,5 +661,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
325
661
  * Generated bundle index. Do not edit.
326
662
  */
327
663
 
328
- export { HtmlEditorComponent, MarkdownEditorComponent };
664
+ export { HtmlEditorComponent, HtmlEditorStandaloneComponent, MarkdownEditorComponent, MarkdownEditorStandaloneComponent, PersistentEditor, TXE_DEBUG };
329
665
  //# sourceMappingURL=esfaenza-text-editors.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"esfaenza-text-editors.mjs","sources":["../../../projects/text-editors/src/lib/html-editor/html-editor.component.ts","../../../projects/text-editors/src/lib/html-editor/html-editor.component.html","../../../projects/text-editors/src/lib/markdown-editor/markdown-editor.component.ts","../../../projects/text-editors/src/lib/markdown-editor/markdown-editor.component.html","../../../projects/text-editors/src/public-api.ts","../../../projects/text-editors/src/esfaenza-text-editors.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, ViewEncapsulation, forwardRef } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { loadCKEditorCloud, CKEditorModule, type CKEditorCloudResult, type CKEditorCloudConfig } from '@ckeditor/ckeditor5-angular';\r\n\r\nimport { EditorConfig } from \"ckeditor5\"\r\n\r\nconst cloudConfig = {\r\n version: '46.1.1',\r\n translations: ['it']\r\n} satisfies CKEditorCloudConfig;\r\n\r\nconst LICENSE_KEY = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';\r\n\r\n@Component({\r\n selector: \"html-editor\",\r\n templateUrl: \"./html-editor.component.html\",\r\n styleUrls: [\"./html-editor.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, CKEditorModule],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorComponent), multi: true }\r\n ]\r\n})\r\nexport class HtmlEditorComponent implements ControlValueAccessor, Validator {\r\n @Input() Readonly: boolean = false; // Angular19 -> [disabled]\r\n @Input() Required: boolean = false;\r\n @Input() Validation: boolean = false;\r\n\r\n @Output() onEditorLoaded: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public value: string;\r\n\r\n public initializeEditor() {\r\n if (!this.Editor) {\r\n loadCKEditorCloud(cloudConfig).then(this.internalInitializeEditor.bind(this));\r\n this.onEditorLoaded.emit();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n console.warn(\"Il componente HtmlEditorComponent è stato distrutto\");\r\n }\r\n\r\n //#region CKEditor5\r\n public Editor: any = null;\r\n public EditorConfig: EditorConfig = null;\r\n public EditorModel = { editorDataText: '', };\r\n\r\n private internalInitializeEditor(cloudConfig: CKEditorCloudResult<CKEditorCloudConfig>) {\r\n const {\r\n ClassicEditor,\r\n /* Plugins */\r\n Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, GeneralHtmlSupport,\r\n Heading, ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,\r\n Link, List, Paragraph, PasteFromOffice, Underline, SourceEditing\r\n } = cloudConfig.CKEditor;\r\n\r\n this.Editor = ClassicEditor;\r\n this.EditorConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', 'underline', '|', 'undo', 'redo', '|', 'insertImage', 'imageStyle:block', 'imageStyle:alignLeft', 'imageStyle:alignRight', '|', 'sourceEditing'],\r\n shouldNotGroupWhenFull: false\r\n },\r\n plugins: [\r\n Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, GeneralHtmlSupport,\r\n Heading, ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,\r\n Link, List, Paragraph, PasteFromOffice, Underline, SourceEditing\r\n ],\r\n heading: {\r\n options: [\r\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\r\n { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },\r\n { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },\r\n { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },\r\n { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },\r\n { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },\r\n { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }\r\n ]\r\n },\r\n htmlSupport: {\r\n allow: [{ name: /^.*$/, styles: true, attributes: true, classes: true }]\r\n },\r\n image: {\r\n toolbar: ['imageStyle:block', 'imageStyle:side', '|', 'resizeImage:original'],\r\n insert: { type: 'auto' }\r\n },\r\n initialData: \"\",\r\n language: 'it',\r\n licenseKey: LICENSE_KEY,\r\n link: {\r\n addTargetToExternalLinks: true,\r\n defaultProtocol: 'https://',\r\n decorators: {\r\n toggleDownloadable: {\r\n mode: 'manual',\r\n label: 'Downloadable',\r\n attributes: { download: 'file' }\r\n }\r\n }\r\n },\r\n placeholder: 'Scrivi o incolla il tuo contenuto qui!'\r\n };\r\n }\r\n\r\n public onEditorChange({ editor }) {\r\n let data = editor?.getData();\r\n\r\n if (data !== undefined)\r\n this.propagateChange(data);\r\n }\r\n //#endregion\r\n\r\n //#region Forms\r\n onTouched = () => { };\r\n propagateChange = (_: any) => { };\r\n\r\n public registerOnChange(fn): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public writeValue(obj): void {\r\n if (obj !== undefined) {\r\n this.value = obj;\r\n } else\r\n this.value = \"\";\r\n }\r\n\r\n validate(c: FormControl): any {\r\n if (this.value || this.Readonly || !this.Required)\r\n return null;\r\n\r\n return null;\r\n }\r\n\r\n changed() {\r\n this.propagateChange(this.value);\r\n }\r\n //#endregion\r\n}","<div class=\"html-editor\">\r\n <ckeditor *ngIf=\"Editor && EditorConfig\"\r\n [data]=\"value\"\r\n [editor]=\"Editor\"\r\n [config]=\"EditorConfig\"\r\n (change)=\"onEditorChange($event)\">\r\n </ckeditor>\r\n <div *ngIf=\"!Editor && !EditorConfig\">\r\n Editor in caricamento...\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output, ViewEncapsulation, forwardRef } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { loadCKEditorCloud, CKEditorModule, type CKEditorCloudResult, type CKEditorCloudConfig } from '@ckeditor/ckeditor5-angular';\r\n\r\nimport { EditorConfig } from \"ckeditor5\"\r\n\r\nconst cloudConfig = {\r\n version: '46.1.1',\r\n translations: ['it']\r\n} satisfies CKEditorCloudConfig;\r\n\r\nconst LICENSE_KEY = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';\r\n\r\n@Component({\r\n selector: \"markdown-editor\",\r\n templateUrl: \"./markdown-editor.component.html\",\r\n styleUrls: [\"./markdown-editor.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, CKEditorModule],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MarkdownEditorComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MarkdownEditorComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MarkdownEditorComponent implements ControlValueAccessor, Validator {\r\n @Input() Readonly: boolean = false; // Angular19 -> [disabled]\r\n @Input() Required: boolean = false;\r\n @Input() Validation: boolean = false;\r\n\r\n // Mention\r\n @Input() MentionMarker: string = \"@\";\r\n @Input() MentionEntities: { id: string, description: string }[] = [];\r\n\r\n @Output() onEditorLoaded: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n private get mentionEntities() {\r\n return this.MentionEntities.map(m => {\r\n return { id: this.MentionMarker + m.id, description: m.description }\r\n });\r\n }\r\n\r\n public value: string;\r\n\r\n public initializeEditor() {\r\n if (!this.Editor) {\r\n loadCKEditorCloud(cloudConfig).then(this.internalInitializeEditor.bind(this));\r\n this.onEditorLoaded.emit();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n console.warn(\"Il componente MarkdownEditorComponent è stato distrutto\");\r\n }\r\n\r\n //#region CKEditor5\r\n public Editor: any = null;\r\n public EditorConfig: EditorConfig = null;\r\n public EditorModel = { editorDataText: '', };\r\n\r\n private internalInitializeEditor(cloudConfig: CKEditorCloudResult<CKEditorCloudConfig>) {\r\n const {\r\n ClassicEditor,\r\n /* Plugins */\r\n Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, Heading,\r\n ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,\r\n Link, List, Paragraph, PasteFromOffice, Mention, Emoji, Markdown, PasteFromMarkdownExperimental\r\n } = cloudConfig.CKEditor;\r\n\r\n this.Editor = ClassicEditor;\r\n this.EditorConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', 'bulletedList', '|', 'undo', 'redo', '|', 'emoji'],\r\n shouldNotGroupWhenFull: false\r\n },\r\n plugins: [\r\n Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, Heading,\r\n ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,\r\n Link, List, Paragraph, PasteFromOffice, Mention, Emoji, Markdown, PasteFromMarkdownExperimental\r\n ],\r\n heading: {\r\n options: [\r\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\r\n { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },\r\n { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },\r\n { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },\r\n { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },\r\n { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },\r\n { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }\r\n ]\r\n },\r\n htmlSupport: {\r\n allow: [{ name: /^.*$/, styles: true, attributes: true, classes: true }]\r\n },\r\n image: {\r\n toolbar: ['imageStyle:block', 'imageStyle:side', '|', 'resizeImage:original'],\r\n insert: { type: 'auto' }\r\n },\r\n initialData: \"\",\r\n language: 'it',\r\n licenseKey: LICENSE_KEY,\r\n link: {\r\n addTargetToExternalLinks: true,\r\n defaultProtocol: 'https://',\r\n decorators: {\r\n toggleDownloadable: {\r\n mode: 'manual',\r\n label: 'Downloadable',\r\n attributes: { download: 'file' }\r\n }\r\n }\r\n },\r\n placeholder: 'Scrivi o incolla il tuo contenuto qui!'\r\n };\r\n\r\n // Attivo le Mention se sono presenti \"MentionEntities\"\r\n // \"Mention\" serve sempre per \"Emoji\"\r\n if (this.MentionEntities?.length > 0) {\r\n this.EditorConfig.mention = {\r\n feeds: [\r\n {\r\n marker: this.MentionMarker,\r\n feed: (filter: string) => {\r\n return this.mentionEntities.filter(t => t.id.toLowerCase().includes(filter.toLowerCase()));\r\n },\r\n minimumCharacters: 1,\r\n // Callback per stile\r\n itemRenderer: (item) => {\r\n let dropdownElement = document.createElement('div');\r\n dropdownElement.classList.add(\"ck-mention-dropdown\");\r\n dropdownElement.id = `mention-list-item-id-${item.id}`;\r\n\r\n let useridElement = document.createElement('div');\r\n useridElement.classList.add(\"ck-username-id\");\r\n useridElement.textContent = `${item.id.substr(1, item.id.length)}`;\r\n\r\n let userdescElement = document.createElement('div');\r\n userdescElement.textContent = ` ● ${(<any>item).description}`;\r\n\r\n dropdownElement.appendChild(useridElement);\r\n dropdownElement.appendChild(userdescElement);\r\n return dropdownElement;\r\n }\r\n },\r\n ]\r\n };\r\n }\r\n }\r\n\r\n public onEditorChange({ editor }) {\r\n let data = editor?.getData();\r\n\r\n if (data !== undefined)\r\n this.propagateChange(data);\r\n }\r\n //#endregion\r\n\r\n //#region Forms\r\n onTouched = () => { };\r\n propagateChange = (_: any) => { };\r\n\r\n public registerOnChange(fn): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public writeValue(obj): void {\r\n if (obj !== undefined) {\r\n this.value = obj;\r\n } else\r\n this.value = \"\";\r\n }\r\n\r\n validate(c: FormControl): any {\r\n if (this.value || this.Readonly || !this.Required)\r\n return null;\r\n\r\n return null;\r\n }\r\n\r\n changed() {\r\n this.propagateChange(this.value);\r\n }\r\n //#endregion\r\n}","<div class=\"markdown-editor\">\r\n <ckeditor *ngIf=\"Editor && EditorConfig\"\r\n [data]=\"value\"\r\n [editor]=\"Editor\"\r\n [config]=\"EditorConfig\"\r\n (change)=\"onEditorChange($event)\">\r\n </ckeditor>\r\n</div>","/*\r\n * Public API Surface of text-editors\r\n */\r\n\r\nexport * from './lib/html-editor/html-editor.component';\r\nexport * from './lib/markdown-editor/markdown-editor.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["cloudConfig","LICENSE_KEY"],"mappings":"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"}
1
+ {"version":3,"file":"esfaenza-text-editors.mjs","sources":["../../../projects/text-editors/src/lib/tokens.ts","../../../projects/text-editors/src/lib/html-editor/html-editor.component.ts","../../../projects/text-editors/src/lib/html-editor/html-editor.component.html","../../../projects/text-editors/src/lib/markdown-editor/markdown-editor.component.ts","../../../projects/text-editors/src/lib/markdown-editor/markdown-editor.component.html","../../../projects/text-editors/src/lib/standalone/html-editor/html-editor-standalone.component.ts","../../../projects/text-editors/src/lib/standalone/html-editor/html-editor-standalone.component.html","../../../projects/text-editors/src/lib/standalone/markdown-editor/markdown-editor-standalone.component.ts","../../../projects/text-editors/src/lib/standalone/markdown-editor/markdown-editor-standalone.component.html","../../../projects/text-editors/src/lib/persistent-editor/persistent-editor.component.ts","../../../projects/text-editors/src/lib/persistent-editor/persistent-editor.component.html","../../../projects/text-editors/src/public-api.ts","../../../projects/text-editors/src/esfaenza-text-editors.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const TXE_DEBUG = new InjectionToken<boolean>('TXE_DEBUG');","import { Component, EventEmitter, Input, Output, ViewEncapsulation, forwardRef, inject } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { CKEditorModule } from '@ckeditor/ckeditor5-angular';\r\n\r\nimport { PersistentEditor } from \"../persistent-editor/persistent-editor.component\";\r\nimport { TXE_DEBUG } from \"../tokens\";\r\n\r\n@Component({\r\n selector: \"html-editor\",\r\n templateUrl: \"./html-editor.component.html\",\r\n styleUrls: [\"./html-editor.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, CKEditorModule],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorComponent), multi: true }\r\n ]\r\n})\r\nexport class HtmlEditorComponent implements ControlValueAccessor, Validator {\r\n\r\n @Input() PersistentEditor?: PersistentEditor;\r\n\r\n @Input() Readonly: boolean = false; // Angular19 -> [disabled]\r\n @Input() Required: boolean = false;\r\n @Input() Validation: boolean = false;\r\n\r\n @Output() onEditorLoaded: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public EditorModel: { value: string, onEditorChange: any } | null = null;\r\n\r\n private DEBUG = inject(TXE_DEBUG, { optional: true }) || false;\r\n\r\n public initializeEditor() {\r\n if (!this.PersistentEditor)\r\n {\r\n if(this.DEBUG) \r\n console.error(\"@ HTML-Editor @: Impossibile inizializzare l'editor HTML senza PersistentEditor\");\r\n }\r\n else\r\n this.PersistentEditor?.iInitializeEditor();\r\n\r\n this.onEditorLoaded.emit();\r\n }\r\n\r\n ngOnInit() {\r\n if(this.DEBUG) console.info(\"@ HTML-Editor @: Il componente HtmlEditorComponent è stato creato\");\r\n }\r\n\r\n ngOnDestroy() {\r\n if(this.DEBUG) console.info(\"@ HTML-Editor @: Il componente HtmlEditorComponent è stato distrutto\");\r\n }\r\n\r\n //#region Forms\r\n onTouched = () => { };\r\n propagateChange = (_: any) => { };\r\n\r\n public registerOnChange(fn: (_: any) => {}): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => {}): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public writeValue(obj: string): void {\r\n let value = \"\";\r\n\r\n if (obj !== undefined)\r\n value = obj;\r\n\r\n if(this.DEBUG) console.log(\"@ HTML-Editor @: Writevalue pre-refresh: \" + value);\r\n\r\n if(value === this.EditorModel?.value){\r\n if(this.DEBUG) console.log(\"@ HTML-Editor @: Writevalue ridondante\")\r\n return;\r\n }\r\n\r\n this.EditorModel = null;\r\n requestAnimationFrame(() => {\r\n if(this.DEBUG) console.log(\"@ HTML-Editor @: Writevalue post-refresh: \" + value)\r\n this.EditorModel = { value: value, onEditorChange: this.onEditorChange.bind(this) }\r\n });\r\n }\r\n\r\n validate(c: FormControl): any {\r\n let ret = null;\r\n\r\n if (this.EditorModel?.value || this.Readonly || !this.Required)\r\n ret = null;\r\n\r\n ret = null;\r\n\r\n if(this.DEBUG) console.log(\"@ HTML-Editor @: Validate post-validate: \" + ret)\r\n return ret;\r\n }\r\n\r\n onEditorChange({editor}){\r\n if(!this.EditorModel)\r\n return;\r\n\r\n let data = editor?.getData();\r\n if(this.DEBUG) console.log(\"@ HTML-Editor @: changed: \" + data)\r\n this.propagateChange(data);\r\n }\r\n //#endregion\r\n}","<div class=\"html-editor\" *ngIf=\"EditorModel && PersistentEditor\">\r\n <ng-content *ngIf=\"PersistentEditor.EditorTemplate()\">\r\n <ng-content *ngTemplateOutlet=\"PersistentEditor.EditorTemplate(); context: {$implicit: EditorModel}\"></ng-content>\r\n </ng-content>\r\n</div>","import { Component, EventEmitter, Input, Output, ViewEncapsulation, forwardRef, inject } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { CKEditorModule } from '@ckeditor/ckeditor5-angular';\r\n\r\nimport { PersistentEditor } from \"../persistent-editor/persistent-editor.component\";\r\nimport { TXE_DEBUG } from \"../tokens\";\r\n\r\n@Component({\r\n selector: \"markdown-editor\",\r\n templateUrl: \"./markdown-editor.component.html\",\r\n styleUrls: [\"./markdown-editor.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, CKEditorModule],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MarkdownEditorComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => MarkdownEditorComponent), multi: true }\r\n ]\r\n})\r\nexport class MarkdownEditorComponent implements ControlValueAccessor, Validator {\r\n\r\n @Input() PersistentEditor?: PersistentEditor;\r\n\r\n @Input() Readonly: boolean = false; // Angular19 -> [disabled]\r\n @Input() Required: boolean = false;\r\n @Input() Validation: boolean = false;\r\n\r\n // Mention\r\n @Input() MentionMarker: string = \"@\";\r\n @Input() MentionEntities: { id: string, description: string }[] = [];\r\n\r\n @Output() onEditorLoaded: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n private DEBUG = inject(TXE_DEBUG, { optional: true }) || false;\r\n\r\n private get NormalizedMentionEntities() {\r\n return this.MentionEntities.map(m => {\r\n return { id: this.MentionMarker + m.id, description: m.description }\r\n });\r\n }\r\n\r\n public EditorModel: { value: string, onEditorChange: any } | null = null;\r\n\r\n public initializeEditor() {\r\n if (!this.PersistentEditor) {\r\n if (this.DEBUG) console.error(\"@ Markdown-Editor @: Impossibile inizializzare l'editor HTML senza PersistentEditor\");\r\n }\r\n else\r\n this.PersistentEditor?.iInitializeEditor(this.MentionMarker, this.NormalizedMentionEntities);\r\n\r\n this.onEditorLoaded.emit();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.DEBUG) console.info(\"@ Markdown-Editor @: Il componente MarkdownEditor è stato creato\");\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.DEBUG) console.info(\"@ Markdown-Editor @: Il componente MarkdownEditor è stato distrutto\");\r\n }\r\n\r\n //#region Forms\r\n onTouched = () => { };\r\n propagateChange = (_: any) => { };\r\n\r\n public registerOnChange(fn: (_: any) => {}): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => {}): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public writeValue(obj: string): void {\r\n let value = \"\";\r\n\r\n if (obj !== undefined)\r\n value = obj;\r\n\r\n if (this.DEBUG) console.log(\"@ Markdown-Editor @: Writevalue pre-refresh: \" + value);\r\n\r\n if (value === this.EditorModel?.value) {\r\n if (this.DEBUG) console.log(\"@ Markdown-Editor @: Writevalue ridondante\")\r\n return;\r\n }\r\n\r\n this.EditorModel = null;\r\n requestAnimationFrame(() => {\r\n if (this.DEBUG) console.log(\"@ Markdown-Editor @: Writevalue post-refresh: \" + value)\r\n this.EditorModel = { value: value, onEditorChange: this.onEditorChange.bind(this) }\r\n });\r\n }\r\n\r\n validate(c: FormControl): any {\r\n let ret = null;\r\n\r\n if (this.EditorModel?.value || this.Readonly || !this.Required)\r\n ret = null;\r\n\r\n ret = null;\r\n\r\n if (this.DEBUG) console.log(\"@ Markdown-Editor @: Validate post-validate: \" + ret)\r\n return ret;\r\n }\r\n\r\n onEditorChange({ editor }) {\r\n if (!this.EditorModel)\r\n return;\r\n\r\n let data = editor?.getData();\r\n if (this.DEBUG) console.log(\"@ Markdown-Editor @: changed: \" + data)\r\n this.propagateChange(data);\r\n }\r\n //#endregion\r\n}","<div class=\"html-editor\" *ngIf=\"EditorModel && PersistentEditor\">\r\n <ng-content *ngIf=\"PersistentEditor.EditorTemplate()\">\r\n <ng-content *ngTemplateOutlet=\"PersistentEditor.EditorTemplate(); context: {$implicit: EditorModel}\"></ng-content>\r\n </ng-content>\r\n</div>","import { Component, EventEmitter, Input, Output, ViewEncapsulation, forwardRef } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { loadCKEditorCloud, CKEditorModule, type CKEditorCloudResult, type CKEditorCloudConfig } from '@ckeditor/ckeditor5-angular';\r\n\r\nimport { EditorConfig } from \"ckeditor5\"\r\nimport { PersistentEditor } from \"../../persistent-editor/persistent-editor.component\";\r\n\r\nconst cloudConfig = {\r\n version: '46.1.1',\r\n translations: ['it']\r\n} satisfies CKEditorCloudConfig;\r\n\r\nconst LICENSE_KEY = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';\r\n\r\n@Component({\r\n selector: \"html-editor-standalone\",\r\n templateUrl: \"./html-editor-standalone.component.html\",\r\n styleUrls: [\"./html-editor-standalone.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, CKEditorModule],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorStandaloneComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorStandaloneComponent), multi: true }\r\n ]\r\n})\r\nexport class HtmlEditorStandaloneComponent implements ControlValueAccessor, Validator {\r\n\r\n // Retrocompatibilità assoluta per switchare i componenti da legacy a nuovi\r\n @Input() PersistentEditor?: PersistentEditor;\r\n\r\n @Input() Readonly: boolean = false; // Angular19 -> [disabled]\r\n @Input() Required: boolean = false;\r\n @Input() Validation: boolean = false;\r\n\r\n @Output() onEditorLoaded: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public value: string;\r\n\r\n public initializeEditor() {\r\n if (!this.Editor) {\r\n loadCKEditorCloud(cloudConfig).then(this.internalInitializeEditor.bind(this));\r\n this.onEditorLoaded.emit();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n console.warn(\"Il componente HtmlEditorComponent è stato distrutto\");\r\n }\r\n\r\n //#region CKEditor5\r\n public Editor: any = null;\r\n public EditorConfig: EditorConfig = null;\r\n public EditorModel = { editorDataText: '', };\r\n\r\n private internalInitializeEditor(cloudConfig: CKEditorCloudResult<CKEditorCloudConfig>) {\r\n const {\r\n ClassicEditor,\r\n /* Plugins */\r\n Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, GeneralHtmlSupport,\r\n Heading, ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,\r\n Link, List, Paragraph, PasteFromOffice, Underline, SourceEditing\r\n } = cloudConfig.CKEditor;\r\n\r\n this.Editor = ClassicEditor;\r\n this.EditorConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', 'underline', '|', 'undo', 'redo', '|', 'insertImage', 'imageStyle:block', 'imageStyle:alignLeft', 'imageStyle:alignRight', '|', 'sourceEditing'],\r\n shouldNotGroupWhenFull: false\r\n },\r\n plugins: [\r\n Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, GeneralHtmlSupport,\r\n Heading, ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,\r\n Link, List, Paragraph, PasteFromOffice, Underline, SourceEditing\r\n ],\r\n heading: {\r\n options: [\r\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\r\n { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },\r\n { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },\r\n { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },\r\n { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },\r\n { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },\r\n { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }\r\n ]\r\n },\r\n htmlSupport: {\r\n allow: [{ name: /^.*$/, styles: true, attributes: true, classes: true }]\r\n },\r\n image: {\r\n toolbar: ['imageStyle:block', 'imageStyle:side', '|', 'resizeImage:original'],\r\n insert: { type: 'auto' }\r\n },\r\n initialData: \"\",\r\n language: 'it',\r\n licenseKey: LICENSE_KEY,\r\n link: {\r\n addTargetToExternalLinks: true,\r\n defaultProtocol: 'https://',\r\n decorators: {\r\n toggleDownloadable: {\r\n mode: 'manual',\r\n label: 'Downloadable',\r\n attributes: { download: 'file' }\r\n }\r\n }\r\n },\r\n placeholder: 'Scrivi o incolla il tuo contenuto qui!'\r\n };\r\n }\r\n\r\n public onEditorChange({ editor }) {\r\n let data = editor?.getData();\r\n\r\n if (data !== undefined)\r\n this.propagateChange(data);\r\n }\r\n //#endregion\r\n\r\n //#region Forms\r\n onTouched = () => { };\r\n propagateChange = (_: any) => { };\r\n\r\n public registerOnChange(fn): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public writeValue(obj): void {\r\n if (obj !== undefined) {\r\n this.value = obj;\r\n } else\r\n this.value = \"\";\r\n }\r\n\r\n validate(c: FormControl): any {\r\n if (this.value || this.Readonly || !this.Required)\r\n return null;\r\n\r\n return null;\r\n }\r\n\r\n changed() {\r\n this.propagateChange(this.value);\r\n }\r\n //#endregion\r\n}","<div class=\"html-editor\">\r\n <ckeditor *ngIf=\"Editor && EditorConfig\"\r\n [data]=\"value\"\r\n [editor]=\"Editor\"\r\n [config]=\"EditorConfig\"\r\n (change)=\"onEditorChange($event)\">\r\n </ckeditor>\r\n <div *ngIf=\"!Editor && !EditorConfig\">\r\n Editor in caricamento...\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output, ViewEncapsulation, forwardRef } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from \"@angular/forms\";\r\nimport { loadCKEditorCloud, CKEditorModule, type CKEditorCloudResult, type CKEditorCloudConfig } from '@ckeditor/ckeditor5-angular';\r\n\r\nimport { EditorConfig } from \"ckeditor5\"\r\nimport { PersistentEditor } from \"../../persistent-editor/persistent-editor.component\";\r\n\r\nconst cloudConfig = {\r\n version: '46.1.1',\r\n translations: ['it']\r\n} satisfies CKEditorCloudConfig;\r\n\r\nconst LICENSE_KEY = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';\r\n\r\n@Component({\r\n selector: \"markdown-editor-standalone\",\r\n templateUrl: \"./markdown-editor-standalone.component.html\",\r\n styleUrls: [\"./markdown-editor-standalone.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, CKEditorModule],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MarkdownEditorStandaloneComponent),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MarkdownEditorStandaloneComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MarkdownEditorStandaloneComponent implements ControlValueAccessor, Validator {\r\n @Input() Readonly: boolean = false; // Angular19 -> [disabled]\r\n @Input() Required: boolean = false;\r\n @Input() Validation: boolean = false;\r\n\r\n // Mention\r\n @Input() MentionMarker: string = \"@\";\r\n @Input() MentionEntities: { id: string, description: string }[] = [];\r\n\r\n @Output() onEditorLoaded: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n // Retrocompatibilità assoluta per switchare i componenti da legacy a nuovi\r\n @Input() PersistentEditor?: PersistentEditor;\r\n\r\n private get mentionEntities() {\r\n return this.MentionEntities.map(m => {\r\n return { id: this.MentionMarker + m.id, description: m.description }\r\n });\r\n }\r\n\r\n public value: string;\r\n\r\n public initializeEditor() {\r\n if (!this.Editor) {\r\n loadCKEditorCloud(cloudConfig).then(this.internalInitializeEditor.bind(this));\r\n this.onEditorLoaded.emit();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n console.warn(\"Il componente MarkdownEditorComponent è stato distrutto\");\r\n }\r\n\r\n //#region CKEditor5\r\n public Editor: any = null;\r\n public EditorConfig: EditorConfig = null;\r\n public EditorModel = { editorDataText: '', };\r\n\r\n private internalInitializeEditor(cloudConfig: CKEditorCloudResult<CKEditorCloudConfig>) {\r\n const {\r\n ClassicEditor,\r\n /* Plugins */\r\n Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, Heading,\r\n ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,\r\n Link, List, Paragraph, PasteFromOffice, Mention, Emoji, Markdown, PasteFromMarkdownExperimental\r\n } = cloudConfig.CKEditor;\r\n\r\n this.Editor = ClassicEditor;\r\n this.EditorConfig = {\r\n toolbar: {\r\n items: ['heading', '|', 'bold', 'italic', 'bulletedList', '|', 'undo', 'redo', '|', 'emoji'],\r\n shouldNotGroupWhenFull: false\r\n },\r\n plugins: [\r\n Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, Heading,\r\n ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,\r\n Link, List, Paragraph, PasteFromOffice, Mention, Emoji, Markdown, PasteFromMarkdownExperimental\r\n ],\r\n heading: {\r\n options: [\r\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\r\n { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },\r\n { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },\r\n { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },\r\n { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },\r\n { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },\r\n { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }\r\n ]\r\n },\r\n htmlSupport: {\r\n allow: [{ name: /^.*$/, styles: true, attributes: true, classes: true }]\r\n },\r\n image: {\r\n toolbar: ['imageStyle:block', 'imageStyle:side', '|', 'resizeImage:original'],\r\n insert: { type: 'auto' }\r\n },\r\n initialData: \"\",\r\n language: 'it',\r\n licenseKey: LICENSE_KEY,\r\n link: {\r\n addTargetToExternalLinks: true,\r\n defaultProtocol: 'https://',\r\n decorators: {\r\n toggleDownloadable: {\r\n mode: 'manual',\r\n label: 'Downloadable',\r\n attributes: { download: 'file' }\r\n }\r\n }\r\n },\r\n placeholder: 'Scrivi o incolla il tuo contenuto qui!'\r\n };\r\n\r\n // Attivo le Mention se sono presenti \"MentionEntities\"\r\n // \"Mention\" serve sempre per \"Emoji\"\r\n if (this.MentionEntities?.length > 0) {\r\n this.EditorConfig.mention = {\r\n feeds: [\r\n {\r\n marker: this.MentionMarker,\r\n feed: (filter: string) => {\r\n return this.mentionEntities.filter(t => t.id.toLowerCase().includes(filter.toLowerCase()));\r\n },\r\n minimumCharacters: 1,\r\n // Callback per stile\r\n itemRenderer: (item) => {\r\n let dropdownElement = document.createElement('div');\r\n dropdownElement.classList.add(\"ck-mention-dropdown\");\r\n dropdownElement.id = `mention-list-item-id-${item.id}`;\r\n\r\n let useridElement = document.createElement('div');\r\n useridElement.classList.add(\"ck-username-id\");\r\n useridElement.textContent = `${item.id.substr(1, item.id.length)}`;\r\n\r\n let userdescElement = document.createElement('div');\r\n userdescElement.textContent = ` ● ${(<any>item).description}`;\r\n\r\n dropdownElement.appendChild(useridElement);\r\n dropdownElement.appendChild(userdescElement);\r\n return dropdownElement;\r\n }\r\n },\r\n ]\r\n };\r\n }\r\n }\r\n\r\n public onEditorChange({ editor }) {\r\n let data = editor?.getData();\r\n\r\n if (data !== undefined)\r\n this.propagateChange(data);\r\n }\r\n //#endregion\r\n\r\n //#region Forms\r\n onTouched = () => { };\r\n propagateChange = (_: any) => { };\r\n\r\n public registerOnChange(fn): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public writeValue(obj): void {\r\n if (obj !== undefined) {\r\n this.value = obj;\r\n } else\r\n this.value = \"\";\r\n }\r\n\r\n validate(c: FormControl): any {\r\n if (this.value || this.Readonly || !this.Required)\r\n return null;\r\n\r\n return null;\r\n }\r\n\r\n changed() {\r\n this.propagateChange(this.value);\r\n }\r\n //#endregion\r\n}","<div class=\"markdown-editor\">\r\n <ckeditor *ngIf=\"Editor && EditorConfig\"\r\n [data]=\"value\"\r\n [editor]=\"Editor\"\r\n [config]=\"EditorConfig\"\r\n (change)=\"onEditorChange($event)\">\r\n </ckeditor>\r\n</div>","import { Component, TemplateRef, ViewEncapsulation, inject, input, viewChild } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { loadCKEditorCloud, CKEditorModule, type CKEditorCloudResult, type CKEditorCloudConfig } from '@ckeditor/ckeditor5-angular';\r\n\r\nimport { EditorConfig } from \"ckeditor5\"\r\nimport { TXE_DEBUG } from \"../tokens\";\r\n\r\nconst cloudConfig = {\r\n version: '46.1.1',\r\n translations: ['it']\r\n} satisfies CKEditorCloudConfig;\r\n\r\nconst LICENSE_KEY = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';\r\n\r\n@Component({\r\n selector: \"persistent-ckeditor\",\r\n templateUrl: \"./persistent-editor.component.html\",\r\n styleUrls: [\"./persistent-editor.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, CKEditorModule],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PersistentEditor {\r\n\r\n public Mode = input.required<'html' | 'markdown'>();\r\n\r\n public EditorTemplate = viewChild<TemplateRef<any>>(\"template\");\r\n public value?: string;\r\n\r\n private DEBUG = inject(TXE_DEBUG, { optional: true }) || false;\r\n\r\n public iInitializeEditor(mentionmarker?: string, mentionentitis?: { id: string, description: string }[]) {\r\n if (this.Editor && this.EditorConfig) {\r\n if (this.DEBUG) console.log(\"@ Persistent Editor @ Editor is already initialized\");\r\n }\r\n else {\r\n loadCKEditorCloud(cloudConfig).then(this.internalInitializeEditor.bind(this));\r\n if (this.DEBUG) console.log(`@ Persistent Editor @ Editor is initialized (${this.Mode()} mode). loadCKEditorCloud has been called`);\r\n }\r\n\r\n this.MentionMarker = mentionmarker ?? \"@\";\r\n this.MentionEntities = mentionentitis ?? [];\r\n\r\n if ((this.MentionEntities?.length || 0) > 0) {\r\n if (this.DEBUG) console.log(`@ Persistent Editor @ Editor is using ${this.MentionEntities?.length} mentions possibilities`);\r\n }\r\n }\r\n\r\n public Editor: any = null;\r\n public EditorConfig: EditorConfig | null = null;\r\n\r\n private MentionMarker?: string = \"@\";\r\n private MentionEntities?: { id: string, description: string }[] = [];\r\n\r\n private internalInitializeEditor(cloudConfig: CKEditorCloudResult<CKEditorCloudConfig>) {\r\n const {\r\n ClassicEditor,\r\n\r\n // Plugin generali\r\n Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, Heading,\r\n ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,\r\n Link, List, Paragraph, PasteFromOffice,\r\n\r\n // Plugin specifici modalità HTML\r\n GeneralHtmlSupport, Underline, SourceEditing,\r\n\r\n // Plugin specifici modalità Markdown\r\n Mention, Emoji, Markdown, PasteFromMarkdownExperimental\r\n } = cloudConfig.CKEditor;\r\n\r\n let markdownPlugins = [Mention, Emoji, Markdown, PasteFromMarkdownExperimental];\r\n let htmlPlugins = [GeneralHtmlSupport, Underline, SourceEditing];\r\n\r\n this.Editor = ClassicEditor;\r\n this.EditorConfig = {\r\n toolbar: {\r\n items:\r\n this.Mode() == \"html\" ?\r\n ['heading', '|', 'bold', 'italic', 'underline', '|', 'undo', 'redo', '|', 'insertImage', 'imageStyle:block', 'imageStyle:alignLeft', 'imageStyle:alignRight', '|', 'sourceEditing'] :\r\n ['heading', '|', 'bold', 'italic', 'bulletedList', '|', 'undo', 'redo', '|', 'emoji'],\r\n shouldNotGroupWhenFull: false\r\n },\r\n plugins: [\r\n Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials,\r\n Heading, ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,\r\n Link, List, Paragraph, PasteFromOffice,\r\n\r\n ...(this.Mode() == \"html\" ? htmlPlugins : markdownPlugins)\r\n ],\r\n heading: {\r\n options: [\r\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\r\n { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },\r\n { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },\r\n { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },\r\n { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },\r\n { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },\r\n { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }\r\n ]\r\n },\r\n htmlSupport: {\r\n allow: [{ name: /^.*$/, styles: true, attributes: true, classes: true }]\r\n },\r\n image: {\r\n toolbar: ['imageStyle:block', 'imageStyle:side', '|', 'resizeImage:original'],\r\n insert: { type: 'auto' }\r\n },\r\n initialData: \"\",\r\n language: 'it',\r\n licenseKey: LICENSE_KEY,\r\n link: {\r\n addTargetToExternalLinks: true,\r\n defaultProtocol: 'https://',\r\n decorators: {\r\n toggleDownloadable: {\r\n mode: 'manual',\r\n label: 'Downloadable',\r\n attributes: { download: 'file' }\r\n }\r\n }\r\n },\r\n placeholder: 'Scrivi o incolla il tuo contenuto qui!'\r\n };\r\n\r\n if (this.Mode() == \"markdown\")\r\n this.setupMentions();\r\n }\r\n\r\n private setupMentions() {\r\n if (!this.EditorConfig)\r\n return;\r\n\r\n this.EditorConfig.mention = {\r\n feeds: [\r\n {\r\n marker: this.MentionMarker ?? \"@\",\r\n feed: (filter: string) => {\r\n return this.MentionEntities?.filter(t => t.id.toLowerCase().includes(filter.toLowerCase())) || [];\r\n },\r\n minimumCharacters: 1,\r\n // Callback per stile\r\n itemRenderer: (item) => {\r\n let dropdownElement = document.createElement('div');\r\n dropdownElement.classList.add(\"ck-mention-dropdown\");\r\n dropdownElement.id = `mention-list-item-id-${item.id}`;\r\n\r\n let useridElement = document.createElement('div');\r\n useridElement.classList.add(\"ck-username-id\");\r\n useridElement.textContent = `${item.id.substr(1, item.id.length)}`;\r\n\r\n let userdescElement = document.createElement('div');\r\n userdescElement.textContent = ` ● ${(<any>item).description}`;\r\n\r\n dropdownElement.appendChild(useridElement);\r\n dropdownElement.appendChild(userdescElement);\r\n return dropdownElement;\r\n }\r\n },\r\n ]\r\n };\r\n }\r\n}","<ng-template #template let-EditorModel>\r\n <ckeditor \r\n *ngIf=\"Editor && EditorConfig\" \r\n [editor]=\"Editor\" \r\n [config]=\"EditorConfig\" \r\n [data]=\"EditorModel.value\" \r\n (change)=\"EditorModel.onEditorChange($event)\"></ckeditor>\r\n</ng-template>","/*\r\n * Public API Surface of text-editors\r\n */\r\n\r\nexport * from './lib/html-editor/html-editor.component';\r\nexport * from './lib/markdown-editor/markdown-editor.component';\r\nexport * from './lib/standalone/html-editor/html-editor-standalone.component';\r\nexport * from './lib/standalone/markdown-editor/markdown-editor-standalone.component';\r\nexport * from './lib/persistent-editor/persistent-editor.component';\r\nexport * from \"./lib/tokens\"","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["cloudConfig","LICENSE_KEY"],"mappings":"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"}
@@ -1,31 +1,30 @@
1
1
  import { EventEmitter } from "@angular/core";
2
2
  import { ControlValueAccessor, FormControl, Validator } from "@angular/forms";
3
- import { EditorConfig } from "ckeditor5";
3
+ import { PersistentEditor } from "../persistent-editor/persistent-editor.component";
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class HtmlEditorComponent implements ControlValueAccessor, Validator {
6
+ PersistentEditor?: PersistentEditor;
6
7
  Readonly: boolean;
7
8
  Required: boolean;
8
9
  Validation: boolean;
9
10
  onEditorLoaded: EventEmitter<void>;
10
- value: string;
11
+ EditorModel: {
12
+ value: string;
13
+ onEditorChange: any;
14
+ } | null;
15
+ private DEBUG;
11
16
  initializeEditor(): void;
17
+ ngOnInit(): void;
12
18
  ngOnDestroy(): void;
13
- Editor: any;
14
- EditorConfig: EditorConfig;
15
- EditorModel: {
16
- editorDataText: string;
17
- };
18
- private internalInitializeEditor;
19
- onEditorChange({ editor }: {
20
- editor: any;
21
- }): void;
22
19
  onTouched: () => void;
23
20
  propagateChange: (_: any) => void;
24
- registerOnChange(fn: any): void;
25
- registerOnTouched(fn: any): void;
26
- writeValue(obj: any): void;
21
+ registerOnChange(fn: (_: any) => {}): void;
22
+ registerOnTouched(fn: () => {}): void;
23
+ writeValue(obj: string): void;
27
24
  validate(c: FormControl): any;
28
- changed(): void;
25
+ onEditorChange({ editor }: {
26
+ editor: any;
27
+ }): void;
29
28
  static ɵfac: i0.ɵɵFactoryDeclaration<HtmlEditorComponent, never>;
30
- static ɵcmp: i0.ɵɵComponentDeclaration<HtmlEditorComponent, "html-editor", never, { "Readonly": { "alias": "Readonly"; "required": false; }; "Required": { "alias": "Required"; "required": false; }; "Validation": { "alias": "Validation"; "required": false; }; }, { "onEditorLoaded": "onEditorLoaded"; }, never, never, true, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<HtmlEditorComponent, "html-editor", never, { "PersistentEditor": { "alias": "PersistentEditor"; "required": false; }; "Readonly": { "alias": "Readonly"; "required": false; }; "Required": { "alias": "Required"; "required": false; }; "Validation": { "alias": "Validation"; "required": false; }; }, { "onEditorLoaded": "onEditorLoaded"; }, never, ["*", "*"], true, never>;
31
30
  }
@@ -1,8 +1,9 @@
1
1
  import { EventEmitter } from "@angular/core";
2
2
  import { ControlValueAccessor, FormControl, Validator } from "@angular/forms";
3
- import { EditorConfig } from "ckeditor5";
3
+ import { PersistentEditor } from "../persistent-editor/persistent-editor.component";
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class MarkdownEditorComponent implements ControlValueAccessor, Validator {
6
+ PersistentEditor?: PersistentEditor;
6
7
  Readonly: boolean;
7
8
  Required: boolean;
8
9
  Validation: boolean;
@@ -12,26 +13,24 @@ export declare class MarkdownEditorComponent implements ControlValueAccessor, Va
12
13
  description: string;
13
14
  }[];
14
15
  onEditorLoaded: EventEmitter<void>;
15
- private get mentionEntities();
16
- value: string;
16
+ private DEBUG;
17
+ private get NormalizedMentionEntities();
18
+ EditorModel: {
19
+ value: string;
20
+ onEditorChange: any;
21
+ } | null;
17
22
  initializeEditor(): void;
23
+ ngOnInit(): void;
18
24
  ngOnDestroy(): void;
19
- Editor: any;
20
- EditorConfig: EditorConfig;
21
- EditorModel: {
22
- editorDataText: string;
23
- };
24
- private internalInitializeEditor;
25
- onEditorChange({ editor }: {
26
- editor: any;
27
- }): void;
28
25
  onTouched: () => void;
29
26
  propagateChange: (_: any) => void;
30
- registerOnChange(fn: any): void;
31
- registerOnTouched(fn: any): void;
32
- writeValue(obj: any): void;
27
+ registerOnChange(fn: (_: any) => {}): void;
28
+ registerOnTouched(fn: () => {}): void;
29
+ writeValue(obj: string): void;
33
30
  validate(c: FormControl): any;
34
- changed(): void;
31
+ onEditorChange({ editor }: {
32
+ editor: any;
33
+ }): void;
35
34
  static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownEditorComponent, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<MarkdownEditorComponent, "markdown-editor", never, { "Readonly": { "alias": "Readonly"; "required": false; }; "Required": { "alias": "Required"; "required": false; }; "Validation": { "alias": "Validation"; "required": false; }; "MentionMarker": { "alias": "MentionMarker"; "required": false; }; "MentionEntities": { "alias": "MentionEntities"; "required": false; }; }, { "onEditorLoaded": "onEditorLoaded"; }, never, never, true, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<MarkdownEditorComponent, "markdown-editor", never, { "PersistentEditor": { "alias": "PersistentEditor"; "required": false; }; "Readonly": { "alias": "Readonly"; "required": false; }; "Required": { "alias": "Required"; "required": false; }; "Validation": { "alias": "Validation"; "required": false; }; "MentionMarker": { "alias": "MentionMarker"; "required": false; }; "MentionEntities": { "alias": "MentionEntities"; "required": false; }; }, { "onEditorLoaded": "onEditorLoaded"; }, never, ["*", "*"], true, never>;
37
36
  }
@@ -0,0 +1,21 @@
1
+ import { TemplateRef } from "@angular/core";
2
+ import { EditorConfig } from "ckeditor5";
3
+ import * as i0 from "@angular/core";
4
+ export declare class PersistentEditor {
5
+ Mode: import("@angular/core").InputSignal<"html" | "markdown">;
6
+ EditorTemplate: import("@angular/core").Signal<TemplateRef<any>>;
7
+ value?: string;
8
+ private DEBUG;
9
+ iInitializeEditor(mentionmarker?: string, mentionentitis?: {
10
+ id: string;
11
+ description: string;
12
+ }[]): void;
13
+ Editor: any;
14
+ EditorConfig: EditorConfig | null;
15
+ private MentionMarker?;
16
+ private MentionEntities?;
17
+ private internalInitializeEditor;
18
+ private setupMentions;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<PersistentEditor, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<PersistentEditor, "persistent-ckeditor", never, { "Mode": { "alias": "Mode"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
21
+ }
@@ -0,0 +1,33 @@
1
+ import { EventEmitter } from "@angular/core";
2
+ import { ControlValueAccessor, FormControl, Validator } from "@angular/forms";
3
+ import { EditorConfig } from "ckeditor5";
4
+ import { PersistentEditor } from "../../persistent-editor/persistent-editor.component";
5
+ import * as i0 from "@angular/core";
6
+ export declare class HtmlEditorStandaloneComponent implements ControlValueAccessor, Validator {
7
+ PersistentEditor?: PersistentEditor;
8
+ Readonly: boolean;
9
+ Required: boolean;
10
+ Validation: boolean;
11
+ onEditorLoaded: EventEmitter<void>;
12
+ value: string;
13
+ initializeEditor(): void;
14
+ ngOnDestroy(): void;
15
+ Editor: any;
16
+ EditorConfig: EditorConfig;
17
+ EditorModel: {
18
+ editorDataText: string;
19
+ };
20
+ private internalInitializeEditor;
21
+ onEditorChange({ editor }: {
22
+ editor: any;
23
+ }): void;
24
+ onTouched: () => void;
25
+ propagateChange: (_: any) => void;
26
+ registerOnChange(fn: any): void;
27
+ registerOnTouched(fn: any): void;
28
+ writeValue(obj: any): void;
29
+ validate(c: FormControl): any;
30
+ changed(): void;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<HtmlEditorStandaloneComponent, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<HtmlEditorStandaloneComponent, "html-editor-standalone", never, { "PersistentEditor": { "alias": "PersistentEditor"; "required": false; }; "Readonly": { "alias": "Readonly"; "required": false; }; "Required": { "alias": "Required"; "required": false; }; "Validation": { "alias": "Validation"; "required": false; }; }, { "onEditorLoaded": "onEditorLoaded"; }, never, never, true, never>;
33
+ }
@@ -0,0 +1,39 @@
1
+ import { EventEmitter } from "@angular/core";
2
+ import { ControlValueAccessor, FormControl, Validator } from "@angular/forms";
3
+ import { EditorConfig } from "ckeditor5";
4
+ import { PersistentEditor } from "../../persistent-editor/persistent-editor.component";
5
+ import * as i0 from "@angular/core";
6
+ export declare class MarkdownEditorStandaloneComponent implements ControlValueAccessor, Validator {
7
+ Readonly: boolean;
8
+ Required: boolean;
9
+ Validation: boolean;
10
+ MentionMarker: string;
11
+ MentionEntities: {
12
+ id: string;
13
+ description: string;
14
+ }[];
15
+ onEditorLoaded: EventEmitter<void>;
16
+ PersistentEditor?: PersistentEditor;
17
+ private get mentionEntities();
18
+ value: string;
19
+ initializeEditor(): void;
20
+ ngOnDestroy(): void;
21
+ Editor: any;
22
+ EditorConfig: EditorConfig;
23
+ EditorModel: {
24
+ editorDataText: string;
25
+ };
26
+ private internalInitializeEditor;
27
+ onEditorChange({ editor }: {
28
+ editor: any;
29
+ }): void;
30
+ onTouched: () => void;
31
+ propagateChange: (_: any) => void;
32
+ registerOnChange(fn: any): void;
33
+ registerOnTouched(fn: any): void;
34
+ writeValue(obj: any): void;
35
+ validate(c: FormControl): any;
36
+ changed(): void;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownEditorStandaloneComponent, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<MarkdownEditorStandaloneComponent, "markdown-editor-standalone", never, { "Readonly": { "alias": "Readonly"; "required": false; }; "Required": { "alias": "Required"; "required": false; }; "Validation": { "alias": "Validation"; "required": false; }; "MentionMarker": { "alias": "MentionMarker"; "required": false; }; "MentionEntities": { "alias": "MentionEntities"; "required": false; }; "PersistentEditor": { "alias": "PersistentEditor"; "required": false; }; }, { "onEditorLoaded": "onEditorLoaded"; }, never, never, true, never>;
39
+ }
@@ -0,0 +1,2 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export declare const TXE_DEBUG: InjectionToken<boolean>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esfaenza/text-editors",
3
- "version": "19.2.5",
3
+ "version": "19.2.7",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },
package/public-api.d.ts CHANGED
@@ -1,2 +1,6 @@
1
1
  export * from './lib/html-editor/html-editor.component';
2
2
  export * from './lib/markdown-editor/markdown-editor.component';
3
+ export * from './lib/standalone/html-editor/html-editor-standalone.component';
4
+ export * from './lib/standalone/markdown-editor/markdown-editor-standalone.component';
5
+ export * from './lib/persistent-editor/persistent-editor.component';
6
+ export * from "./lib/tokens";