@esfaenza/text-editors 19.2.5 → 19.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/esfaenza-text-editors.mjs +359 -29
- package/fesm2022/esfaenza-text-editors.mjs.map +1 -1
- package/lib/html-editor/html-editor.component.d.ts +15 -16
- package/lib/markdown-editor/markdown-editor.component.d.ts +16 -17
- package/lib/persistent-editor/persistent-editor.component.d.ts +21 -0
- package/lib/standalone/html-editor/html-editor-standalone.component.d.ts +31 -0
- package/lib/standalone/markdown-editor/markdown-editor-standalone.component.d.ts +37 -0
- package/lib/tokens.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
|
@@ -1,17 +1,217 @@
|
|
|
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 {
|
|
7
|
+
import { CKEditorModule, loadCKEditorCloud } from '@ckeditor/ckeditor5-angular';
|
|
8
8
|
|
|
9
|
-
const
|
|
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
|
+
}
|
|
31
|
+
ngOnInit() {
|
|
32
|
+
if (this.DEBUG)
|
|
33
|
+
console.info("@ HTML-Editor @: Il componente HtmlEditorComponent è stato creato");
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
if (this.DEBUG)
|
|
37
|
+
console.info("@ HTML-Editor @: Il componente HtmlEditorComponent è stato distrutto");
|
|
38
|
+
}
|
|
39
|
+
registerOnChange(fn) {
|
|
40
|
+
this.propagateChange = fn;
|
|
41
|
+
}
|
|
42
|
+
registerOnTouched(fn) {
|
|
43
|
+
this.onTouched = fn;
|
|
44
|
+
}
|
|
45
|
+
writeValue(obj) {
|
|
46
|
+
let value = "";
|
|
47
|
+
if (obj !== undefined)
|
|
48
|
+
value = obj;
|
|
49
|
+
if (this.DEBUG)
|
|
50
|
+
console.log("@ HTML-Editor @: Writevalue pre-refresh: " + value);
|
|
51
|
+
if (value === this.EditorModel?.value) {
|
|
52
|
+
if (this.DEBUG)
|
|
53
|
+
console.log("@ HTML-Editor @: Writevalue ridondante");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.EditorModel = null;
|
|
57
|
+
requestAnimationFrame(() => {
|
|
58
|
+
if (this.DEBUG)
|
|
59
|
+
console.log("@ HTML-Editor @: Writevalue post-refresh: " + value);
|
|
60
|
+
this.EditorModel = { value: value, onEditorChange: this.onEditorChange.bind(this) };
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
validate(c) {
|
|
64
|
+
let ret = null;
|
|
65
|
+
if (this.EditorModel?.value || this.Readonly || !this.Required)
|
|
66
|
+
ret = null;
|
|
67
|
+
ret = null;
|
|
68
|
+
if (this.DEBUG)
|
|
69
|
+
console.log("@ HTML-Editor @: Validate post-validate: " + ret);
|
|
70
|
+
return ret;
|
|
71
|
+
}
|
|
72
|
+
onEditorChange({ editor }) {
|
|
73
|
+
if (!this.EditorModel)
|
|
74
|
+
return;
|
|
75
|
+
let data = editor?.getData();
|
|
76
|
+
if (this.DEBUG)
|
|
77
|
+
console.log("@ HTML-Editor @: changed: " + data);
|
|
78
|
+
this.propagateChange(data);
|
|
79
|
+
}
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HtmlEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
+
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: [
|
|
82
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorComponent), multi: true },
|
|
83
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorComponent), multi: true }
|
|
84
|
+
], 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 }); }
|
|
85
|
+
}
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HtmlEditorComponent, decorators: [{
|
|
87
|
+
type: Component,
|
|
88
|
+
args: [{ selector: "html-editor", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
|
|
89
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorComponent), multi: true },
|
|
90
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorComponent), multi: true }
|
|
91
|
+
], 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"] }]
|
|
92
|
+
}], propDecorators: { PersistentEditor: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], Readonly: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], Required: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], Validation: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], onEditorLoaded: [{
|
|
101
|
+
type: Output
|
|
102
|
+
}] } });
|
|
103
|
+
|
|
104
|
+
class MarkdownEditorComponent {
|
|
105
|
+
constructor() {
|
|
106
|
+
this.Readonly = false; // Angular19 -> [disabled]
|
|
107
|
+
this.Required = false;
|
|
108
|
+
this.Validation = false;
|
|
109
|
+
// Mention
|
|
110
|
+
this.MentionMarker = "@";
|
|
111
|
+
this.MentionEntities = [];
|
|
112
|
+
this.onEditorLoaded = new EventEmitter();
|
|
113
|
+
this.DEBUG = inject(TXE_DEBUG, { optional: true }) || false;
|
|
114
|
+
this.EditorModel = null;
|
|
115
|
+
//#region Forms
|
|
116
|
+
this.onTouched = () => { };
|
|
117
|
+
this.propagateChange = (_) => { };
|
|
118
|
+
}
|
|
119
|
+
get NormalizedMentionEntities() {
|
|
120
|
+
return this.MentionEntities.map(m => {
|
|
121
|
+
return { id: this.MentionMarker + m.id, description: m.description };
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
initializeEditor() {
|
|
125
|
+
if (!this.PersistentEditor) {
|
|
126
|
+
if (this.DEBUG)
|
|
127
|
+
console.error("@ Markdown-Editor @: Impossibile inizializzare l'editor HTML senza PersistentEditor");
|
|
128
|
+
}
|
|
129
|
+
else
|
|
130
|
+
this.PersistentEditor?.iInitializeEditor(this.MentionMarker, this.NormalizedMentionEntities);
|
|
131
|
+
}
|
|
132
|
+
ngOnInit() {
|
|
133
|
+
if (this.DEBUG)
|
|
134
|
+
console.info("@ Markdown-Editor @: Il componente MarkdownEditor è stato creato");
|
|
135
|
+
}
|
|
136
|
+
ngOnDestroy() {
|
|
137
|
+
if (this.DEBUG)
|
|
138
|
+
console.info("@ Markdown-Editor @: Il componente MarkdownEditor è stato distrutto");
|
|
139
|
+
}
|
|
140
|
+
registerOnChange(fn) {
|
|
141
|
+
this.propagateChange = fn;
|
|
142
|
+
}
|
|
143
|
+
registerOnTouched(fn) {
|
|
144
|
+
this.onTouched = fn;
|
|
145
|
+
}
|
|
146
|
+
writeValue(obj) {
|
|
147
|
+
let value = "";
|
|
148
|
+
if (obj !== undefined)
|
|
149
|
+
value = obj;
|
|
150
|
+
if (this.DEBUG)
|
|
151
|
+
console.log("@ Markdown-Editor @: Writevalue pre-refresh: " + value);
|
|
152
|
+
if (value === this.EditorModel?.value) {
|
|
153
|
+
if (this.DEBUG)
|
|
154
|
+
console.log("@ Markdown-Editor @: Writevalue ridondante");
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
this.EditorModel = null;
|
|
158
|
+
requestAnimationFrame(() => {
|
|
159
|
+
if (this.DEBUG)
|
|
160
|
+
console.log("@ Markdown-Editor @: Writevalue post-refresh: " + value);
|
|
161
|
+
this.EditorModel = { value: value, onEditorChange: this.onEditorChange.bind(this) };
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
validate(c) {
|
|
165
|
+
let ret = null;
|
|
166
|
+
if (this.EditorModel?.value || this.Readonly || !this.Required)
|
|
167
|
+
ret = null;
|
|
168
|
+
ret = null;
|
|
169
|
+
if (this.DEBUG)
|
|
170
|
+
console.log("@ Markdown-Editor @: Validate post-validate: " + ret);
|
|
171
|
+
return ret;
|
|
172
|
+
}
|
|
173
|
+
onEditorChange({ editor }) {
|
|
174
|
+
if (!this.EditorModel)
|
|
175
|
+
return;
|
|
176
|
+
let data = editor?.getData();
|
|
177
|
+
if (this.DEBUG)
|
|
178
|
+
console.log("@ Markdown-Editor @: changed: " + data);
|
|
179
|
+
this.propagateChange(data);
|
|
180
|
+
}
|
|
181
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
182
|
+
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: [
|
|
183
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MarkdownEditorComponent), multi: true },
|
|
184
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => MarkdownEditorComponent), multi: true }
|
|
185
|
+
], 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 }); }
|
|
186
|
+
}
|
|
187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
|
|
188
|
+
type: Component,
|
|
189
|
+
args: [{ selector: "markdown-editor", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
|
|
190
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MarkdownEditorComponent), multi: true },
|
|
191
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => MarkdownEditorComponent), multi: true }
|
|
192
|
+
], 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"] }]
|
|
193
|
+
}], propDecorators: { PersistentEditor: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], Readonly: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], Required: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], Validation: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], MentionMarker: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], MentionEntities: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], onEditorLoaded: [{
|
|
206
|
+
type: Output
|
|
207
|
+
}] } });
|
|
208
|
+
|
|
209
|
+
const cloudConfig$2 = {
|
|
10
210
|
version: '46.1.1',
|
|
11
211
|
translations: ['it']
|
|
12
212
|
};
|
|
13
|
-
const LICENSE_KEY$
|
|
14
|
-
class
|
|
213
|
+
const LICENSE_KEY$2 = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';
|
|
214
|
+
class HtmlEditorStandaloneComponent {
|
|
15
215
|
constructor() {
|
|
16
216
|
this.Readonly = false; // Angular19 -> [disabled]
|
|
17
217
|
this.Required = false;
|
|
@@ -28,7 +228,7 @@ class HtmlEditorComponent {
|
|
|
28
228
|
}
|
|
29
229
|
initializeEditor() {
|
|
30
230
|
if (!this.Editor) {
|
|
31
|
-
loadCKEditorCloud(cloudConfig$
|
|
231
|
+
loadCKEditorCloud(cloudConfig$2).then(this.internalInitializeEditor.bind(this));
|
|
32
232
|
this.onEditorLoaded.emit();
|
|
33
233
|
}
|
|
34
234
|
}
|
|
@@ -70,7 +270,7 @@ class HtmlEditorComponent {
|
|
|
70
270
|
},
|
|
71
271
|
initialData: "",
|
|
72
272
|
language: 'it',
|
|
73
|
-
licenseKey: LICENSE_KEY$
|
|
273
|
+
licenseKey: LICENSE_KEY$2,
|
|
74
274
|
link: {
|
|
75
275
|
addTargetToExternalLinks: true,
|
|
76
276
|
defaultProtocol: 'https://',
|
|
@@ -111,17 +311,17 @@ class HtmlEditorComponent {
|
|
|
111
311
|
changed() {
|
|
112
312
|
this.propagateChange(this.value);
|
|
113
313
|
}
|
|
114
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
115
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type:
|
|
116
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() =>
|
|
117
|
-
{ provide: NG_VALIDATORS, useExisting: forwardRef(() =>
|
|
314
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HtmlEditorStandaloneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
315
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HtmlEditorStandaloneComponent, isStandalone: true, selector: "html-editor-standalone", inputs: { Readonly: "Readonly", Required: "Required", Validation: "Validation" }, outputs: { onEditorLoaded: "onEditorLoaded" }, providers: [
|
|
316
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorStandaloneComponent), multi: true },
|
|
317
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorStandaloneComponent), multi: true }
|
|
118
318
|
], 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
319
|
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
320
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HtmlEditorStandaloneComponent, decorators: [{
|
|
121
321
|
type: Component,
|
|
122
|
-
args: [{ selector: "html-editor", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
|
|
123
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() =>
|
|
124
|
-
{ provide: NG_VALIDATORS, useExisting: forwardRef(() =>
|
|
322
|
+
args: [{ selector: "html-editor-standalone", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
|
|
323
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HtmlEditorStandaloneComponent), multi: true },
|
|
324
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => HtmlEditorStandaloneComponent), multi: true }
|
|
125
325
|
], 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
326
|
}], propDecorators: { Readonly: [{
|
|
127
327
|
type: Input
|
|
@@ -133,12 +333,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
133
333
|
type: Output
|
|
134
334
|
}] } });
|
|
135
335
|
|
|
136
|
-
const cloudConfig = {
|
|
336
|
+
const cloudConfig$1 = {
|
|
137
337
|
version: '46.1.1',
|
|
138
338
|
translations: ['it']
|
|
139
339
|
};
|
|
140
|
-
const LICENSE_KEY = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';
|
|
141
|
-
class
|
|
340
|
+
const LICENSE_KEY$1 = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';
|
|
341
|
+
class MarkdownEditorStandaloneComponent {
|
|
142
342
|
constructor() {
|
|
143
343
|
this.Readonly = false; // Angular19 -> [disabled]
|
|
144
344
|
this.Required = false;
|
|
@@ -163,7 +363,7 @@ class MarkdownEditorComponent {
|
|
|
163
363
|
}
|
|
164
364
|
initializeEditor() {
|
|
165
365
|
if (!this.Editor) {
|
|
166
|
-
loadCKEditorCloud(cloudConfig).then(this.internalInitializeEditor.bind(this));
|
|
366
|
+
loadCKEditorCloud(cloudConfig$1).then(this.internalInitializeEditor.bind(this));
|
|
167
367
|
this.onEditorLoaded.emit();
|
|
168
368
|
}
|
|
169
369
|
}
|
|
@@ -205,7 +405,7 @@ class MarkdownEditorComponent {
|
|
|
205
405
|
},
|
|
206
406
|
initialData: "",
|
|
207
407
|
language: 'it',
|
|
208
|
-
licenseKey: LICENSE_KEY,
|
|
408
|
+
licenseKey: LICENSE_KEY$1,
|
|
209
409
|
link: {
|
|
210
410
|
addTargetToExternalLinks: true,
|
|
211
411
|
defaultProtocol: 'https://',
|
|
@@ -275,31 +475,31 @@ class MarkdownEditorComponent {
|
|
|
275
475
|
changed() {
|
|
276
476
|
this.propagateChange(this.value);
|
|
277
477
|
}
|
|
278
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
279
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type:
|
|
478
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MarkdownEditorStandaloneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
479
|
+
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" }, outputs: { onEditorLoaded: "onEditorLoaded" }, providers: [
|
|
280
480
|
{
|
|
281
481
|
provide: NG_VALUE_ACCESSOR,
|
|
282
|
-
useExisting: forwardRef(() =>
|
|
482
|
+
useExisting: forwardRef(() => MarkdownEditorStandaloneComponent),
|
|
283
483
|
multi: true
|
|
284
484
|
},
|
|
285
485
|
{
|
|
286
486
|
provide: NG_VALIDATORS,
|
|
287
|
-
useExisting: forwardRef(() =>
|
|
487
|
+
useExisting: forwardRef(() => MarkdownEditorStandaloneComponent),
|
|
288
488
|
multi: true
|
|
289
489
|
}
|
|
290
490
|
], 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
491
|
}
|
|
292
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
492
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MarkdownEditorStandaloneComponent, decorators: [{
|
|
293
493
|
type: Component,
|
|
294
|
-
args: [{ selector: "markdown-editor", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
|
|
494
|
+
args: [{ selector: "markdown-editor-standalone", standalone: true, imports: [CommonModule, FormsModule, CKEditorModule], encapsulation: ViewEncapsulation.None, providers: [
|
|
295
495
|
{
|
|
296
496
|
provide: NG_VALUE_ACCESSOR,
|
|
297
|
-
useExisting: forwardRef(() =>
|
|
497
|
+
useExisting: forwardRef(() => MarkdownEditorStandaloneComponent),
|
|
298
498
|
multi: true
|
|
299
499
|
},
|
|
300
500
|
{
|
|
301
501
|
provide: NG_VALIDATORS,
|
|
302
|
-
useExisting: forwardRef(() =>
|
|
502
|
+
useExisting: forwardRef(() => MarkdownEditorStandaloneComponent),
|
|
303
503
|
multi: true
|
|
304
504
|
}
|
|
305
505
|
], 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"] }]
|
|
@@ -317,6 +517,136 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
317
517
|
type: Output
|
|
318
518
|
}] } });
|
|
319
519
|
|
|
520
|
+
const cloudConfig = {
|
|
521
|
+
version: '46.1.1',
|
|
522
|
+
translations: ['it']
|
|
523
|
+
};
|
|
524
|
+
const LICENSE_KEY = 'eyJhbGciOiJFUzI1NiJ9.eyJleHAiOjE4MDQ5ODIzOTksImp0aSI6ImJkZDU4ZGM3LTlhYzgtNDA4Mi05ZDk3LTg3Yzc0NjEzMDlmNyIsInVzYWdlRW5kcG9pbnQiOiJodHRwczovL3Byb3h5LWV2ZW50LmNrZWRpdG9yLmNvbSIsImRpc3RyaWJ1dGlvbkNoYW5uZWwiOlsiY2xvdWQiLCJkcnVwYWwiXSwid2hpdGVMYWJlbCI6dHJ1ZSwiZmVhdHVyZXMiOlsiRFJVUCIsIkRPIiwiRlAiLCJTQyIsIlRPQyIsIlRQTCIsIlBPRSIsIkNDIiwiTUYiLCJFMlAiLCJFMlciLCJNTEwiLCJTRUUiLCJFQ0giLCJFSVMiLCJMSCIsIkZPTyJdLCJ2YyI6IjdjZjg2OGYwIn0.vw-04yWGiTzZVSaGxQUGCxWXBUQXRJ0yB2ItqwvNnd7nEjMFC4d9kiDgbkzGnHgAjkiQEUqTzrM7b1z4cR6rhA';
|
|
525
|
+
class PersistentEditor {
|
|
526
|
+
constructor() {
|
|
527
|
+
this.Mode = input.required();
|
|
528
|
+
this.EditorTemplate = viewChild("template");
|
|
529
|
+
this.DEBUG = inject(TXE_DEBUG, { optional: true }) || false;
|
|
530
|
+
this.Editor = null;
|
|
531
|
+
this.EditorConfig = null;
|
|
532
|
+
this.MentionMarker = "@";
|
|
533
|
+
this.MentionEntities = [];
|
|
534
|
+
}
|
|
535
|
+
iInitializeEditor(mentionmarker, mentionentitis) {
|
|
536
|
+
if (this.Editor && this.EditorConfig) {
|
|
537
|
+
if (this.DEBUG)
|
|
538
|
+
console.log("@ Persistent Editor @ Editor is already initialized");
|
|
539
|
+
}
|
|
540
|
+
else {
|
|
541
|
+
loadCKEditorCloud(cloudConfig).then(this.internalInitializeEditor.bind(this));
|
|
542
|
+
if (this.DEBUG)
|
|
543
|
+
console.log(`@ Persistent Editor @ Editor is initialized (${this.Mode()} mode). loadCKEditorCloud has been called`);
|
|
544
|
+
}
|
|
545
|
+
this.MentionMarker = mentionmarker ?? "@";
|
|
546
|
+
this.MentionEntities = mentionentitis ?? [];
|
|
547
|
+
if ((this.MentionEntities?.length || 0) > 0) {
|
|
548
|
+
if (this.DEBUG)
|
|
549
|
+
console.log(`@ Persistent Editor @ Editor is using ${this.MentionEntities?.length} mentions possibilities`);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
internalInitializeEditor(cloudConfig) {
|
|
553
|
+
const { ClassicEditor,
|
|
554
|
+
// Plugin generali
|
|
555
|
+
Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials, Heading, ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic, Link, List, Paragraph, PasteFromOffice,
|
|
556
|
+
// Plugin specifici modalità HTML
|
|
557
|
+
GeneralHtmlSupport, Underline, SourceEditing,
|
|
558
|
+
// Plugin specifici modalità Markdown
|
|
559
|
+
Mention, Emoji, Markdown, PasteFromMarkdownExperimental } = cloudConfig.CKEditor;
|
|
560
|
+
let markdownPlugins = [Mention, Emoji, Markdown, PasteFromMarkdownExperimental];
|
|
561
|
+
let htmlPlugins = [GeneralHtmlSupport, Underline, SourceEditing];
|
|
562
|
+
this.Editor = ClassicEditor;
|
|
563
|
+
this.EditorConfig = {
|
|
564
|
+
toolbar: {
|
|
565
|
+
items: this.Mode() == "html" ?
|
|
566
|
+
['heading', '|', 'bold', 'italic', 'underline', '|', 'undo', 'redo', '|', 'insertImage', 'imageStyle:block', 'imageStyle:alignLeft', 'imageStyle:alignRight', '|', 'sourceEditing'] :
|
|
567
|
+
['heading', '|', 'bold', 'italic', 'bulletedList', '|', 'undo', 'redo', '|', 'emoji'],
|
|
568
|
+
shouldNotGroupWhenFull: false
|
|
569
|
+
},
|
|
570
|
+
plugins: [
|
|
571
|
+
Alignment, AutoImage, Autosave, Base64UploadAdapter, Bold, CloudServices, Essentials,
|
|
572
|
+
Heading, ImageInline, ImageBlock, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Italic,
|
|
573
|
+
Link, List, Paragraph, PasteFromOffice,
|
|
574
|
+
...(this.Mode() == "html" ? htmlPlugins : markdownPlugins)
|
|
575
|
+
],
|
|
576
|
+
heading: {
|
|
577
|
+
options: [
|
|
578
|
+
{ model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },
|
|
579
|
+
{ model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },
|
|
580
|
+
{ model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },
|
|
581
|
+
{ model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },
|
|
582
|
+
{ model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },
|
|
583
|
+
{ model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },
|
|
584
|
+
{ model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }
|
|
585
|
+
]
|
|
586
|
+
},
|
|
587
|
+
htmlSupport: {
|
|
588
|
+
allow: [{ name: /^.*$/, styles: true, attributes: true, classes: true }]
|
|
589
|
+
},
|
|
590
|
+
image: {
|
|
591
|
+
toolbar: ['imageStyle:block', 'imageStyle:side', '|', 'resizeImage:original'],
|
|
592
|
+
insert: { type: 'auto' }
|
|
593
|
+
},
|
|
594
|
+
initialData: "",
|
|
595
|
+
language: 'it',
|
|
596
|
+
licenseKey: LICENSE_KEY,
|
|
597
|
+
link: {
|
|
598
|
+
addTargetToExternalLinks: true,
|
|
599
|
+
defaultProtocol: 'https://',
|
|
600
|
+
decorators: {
|
|
601
|
+
toggleDownloadable: {
|
|
602
|
+
mode: 'manual',
|
|
603
|
+
label: 'Downloadable',
|
|
604
|
+
attributes: { download: 'file' }
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
},
|
|
608
|
+
placeholder: 'Scrivi o incolla il tuo contenuto qui!'
|
|
609
|
+
};
|
|
610
|
+
if (this.Mode() == "markdown")
|
|
611
|
+
this.setupMentions();
|
|
612
|
+
}
|
|
613
|
+
setupMentions() {
|
|
614
|
+
if (!this.EditorConfig)
|
|
615
|
+
return;
|
|
616
|
+
this.EditorConfig.mention = {
|
|
617
|
+
feeds: [
|
|
618
|
+
{
|
|
619
|
+
marker: this.MentionMarker ?? "@",
|
|
620
|
+
feed: (filter) => {
|
|
621
|
+
return this.MentionEntities?.filter(t => t.id.toLowerCase().includes(filter.toLowerCase())) || [];
|
|
622
|
+
},
|
|
623
|
+
minimumCharacters: 1,
|
|
624
|
+
// Callback per stile
|
|
625
|
+
itemRenderer: (item) => {
|
|
626
|
+
let dropdownElement = document.createElement('div');
|
|
627
|
+
dropdownElement.classList.add("ck-mention-dropdown");
|
|
628
|
+
dropdownElement.id = `mention-list-item-id-${item.id}`;
|
|
629
|
+
let useridElement = document.createElement('div');
|
|
630
|
+
useridElement.classList.add("ck-username-id");
|
|
631
|
+
useridElement.textContent = `${item.id.substr(1, item.id.length)}`;
|
|
632
|
+
let userdescElement = document.createElement('div');
|
|
633
|
+
userdescElement.textContent = ` ● ${item.description}`;
|
|
634
|
+
dropdownElement.appendChild(useridElement);
|
|
635
|
+
dropdownElement.appendChild(userdescElement);
|
|
636
|
+
return dropdownElement;
|
|
637
|
+
}
|
|
638
|
+
},
|
|
639
|
+
]
|
|
640
|
+
};
|
|
641
|
+
}
|
|
642
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PersistentEditor, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
643
|
+
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 }); }
|
|
644
|
+
}
|
|
645
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PersistentEditor, decorators: [{
|
|
646
|
+
type: Component,
|
|
647
|
+
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"] }]
|
|
648
|
+
}] });
|
|
649
|
+
|
|
320
650
|
/*
|
|
321
651
|
* Public API Surface of text-editors
|
|
322
652
|
*/
|
|
@@ -325,5 +655,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
325
655
|
* Generated bundle index. Do not edit.
|
|
326
656
|
*/
|
|
327
657
|
|
|
328
|
-
export { HtmlEditorComponent, MarkdownEditorComponent };
|
|
658
|
+
export { HtmlEditorComponent, HtmlEditorStandaloneComponent, MarkdownEditorComponent, MarkdownEditorStandaloneComponent, PersistentEditor, TXE_DEBUG };
|
|
329
659
|
//# 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":";;;;;;;;AAOA,MAAMA,aAAW,GAAG;AAChB,IAAA,OAAO,EAAE,QAAQ;IACjB,YAAY,EAAE,CAAC,IAAI;CACQ;AAE/B,MAAMC,aAAW,GAAG,6fAA6f;MAcpgB,mBAAmB,CAAA;AAZhC,IAAA,WAAA,GAAA;AAaa,QAAA,IAAA,CAAA,QAAQ,GAAY,KAAK,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAY,KAAK;QACzB,IAAU,CAAA,UAAA,GAAY,KAAK;AAE1B,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ;;QAgBhE,IAAM,CAAA,MAAA,GAAQ,IAAI;QAClB,IAAY,CAAA,YAAA,GAAiB,IAAI;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,EAAE,cAAc,EAAE,EAAE,GAAG;;;AAmE5C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAI;AACrB,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,CAAM,KAAI,GAAI;AA4BpC;IA9GU,gBAAgB,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,iBAAiB,CAACD,aAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;;IAIlC,WAAW,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC;;AAQ/D,IAAA,wBAAwB,CAAC,WAAqD,EAAA;AAClF,QAAA,MAAM,EACF,aAAa;;QAEb,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB,EACxG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAC5H,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EACnE,GAAG,WAAW,CAAC,QAAQ;AAExB,QAAA,IAAI,CAAC,MAAM,GAAG,aAAa;QAC3B,IAAI,CAAC,YAAY,GAAG;AAChB,YAAA,OAAO,EAAE;AACL,gBAAA,KAAK,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,GAAG,EAAE,eAAe,CAAC;AAC1L,gBAAA,sBAAsB,EAAE;AAC3B,aAAA;AACD,YAAA,OAAO,EAAE;AACL,gBAAA,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB;AACxG,gBAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM;gBAC5H,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE;AACtD,aAAA;AACD,YAAA,OAAO,EAAE;AACL,gBAAA,OAAO,EAAE;oBACL,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACzE,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB;AACpF;AACJ,aAAA;AACD,YAAA,WAAW,EAAE;AACT,gBAAA,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1E,aAAA;AACD,YAAA,KAAK,EAAE;gBACH,OAAO,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,EAAE,sBAAsB,CAAC;AAC7E,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM;AACzB,aAAA;AACD,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,UAAU,EAAEC,aAAW;AACvB,YAAA,IAAI,EAAE;AACF,gBAAA,wBAAwB,EAAE,IAAI;AAC9B,gBAAA,eAAe,EAAE,UAAU;AAC3B,gBAAA,UAAU,EAAE;AACR,oBAAA,kBAAkB,EAAE;AAChB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM;AACjC;AACJ;AACJ,aAAA;AACD,YAAA,WAAW,EAAE;SAChB;;IAGE,cAAc,CAAC,EAAE,MAAM,EAAE,EAAA;AAC5B,QAAA,IAAI,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE;QAE5B,IAAI,IAAI,KAAK,SAAS;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;AAQ3B,IAAA,gBAAgB,CAAC,EAAE,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;AAGtB,IAAA,iBAAiB,CAAC,EAAE,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGhB,IAAA,UAAU,CAAC,GAAG,EAAA;AACjB,QAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;;;AAEhB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAGvB,IAAA,QAAQ,CAAC,CAAc,EAAA;QACnB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;AAC7C,YAAA,OAAO,IAAI;AAEf,QAAA,OAAO,IAAI;;IAGf,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;+GApH3B,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EALjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC/F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI;AAC5F,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBL,sXAUM,EDSQ,MAAA,EAAA,CAAA,0bAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,8BAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAO1C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAGX,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC,EAAA,aAAA,EACrC,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC/F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,IAAI;AAC5F,qBAAA,EAAA,QAAA,EAAA,sXAAA,EAAA,MAAA,EAAA,CAAA,0bAAA,CAAA,EAAA;8BAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAES,cAAc,EAAA,CAAA;sBAAvB;;;AExBL,MAAM,WAAW,GAAG;AAChB,IAAA,OAAO,EAAE,QAAQ;IACjB,YAAY,EAAE,CAAC,IAAI;CACQ;AAE/B,MAAM,WAAW,GAAG,6fAA6f;MAsBpgB,uBAAuB,CAAA;AApBpC,IAAA,WAAA,GAAA;AAqBa,QAAA,IAAA,CAAA,QAAQ,GAAY,KAAK,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAY,KAAK;QACzB,IAAU,CAAA,UAAA,GAAY,KAAK;;QAG3B,IAAa,CAAA,aAAA,GAAW,GAAG;QAC3B,IAAe,CAAA,eAAA,GAA0C,EAAE;AAE1D,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ;;QAsBhE,IAAM,CAAA,MAAA,GAAQ,IAAI;QAClB,IAAY,CAAA,YAAA,GAAiB,IAAI;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,EAAE,cAAc,EAAE,EAAE,GAAG;;;AAoG5C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAI;AACrB,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,CAAM,KAAI,GAAI;AA4BpC;AAvJG,IAAA,IAAY,eAAe,GAAA;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAG;AAChC,YAAA,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;AACxE,SAAC,CAAC;;IAKC,gBAAgB,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,iBAAiB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;;IAIlC,WAAW,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC;;AAQnE,IAAA,wBAAwB,CAAC,WAAqD,EAAA;AAClF,QAAA,MAAM,EACF,aAAa;;QAEb,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAC7F,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EACnH,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,6BAA6B,EAClG,GAAG,WAAW,CAAC,QAAQ;AAExB,QAAA,IAAI,CAAC,MAAM,GAAG,aAAa;QAC3B,IAAI,CAAC,YAAY,GAAG;AAChB,YAAA,OAAO,EAAE;gBACL,KAAK,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;AAC5F,gBAAA,sBAAsB,EAAE;AAC3B,aAAA;AACD,YAAA,OAAO,EAAE;AACL,gBAAA,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO;AAC7F,gBAAA,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM;AACnH,gBAAA,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;AACrE,aAAA;AACD,YAAA,OAAO,EAAE;AACL,gBAAA,OAAO,EAAE;oBACL,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACzE,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB;AACpF;AACJ,aAAA;AACD,YAAA,WAAW,EAAE;AACT,gBAAA,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1E,aAAA;AACD,YAAA,KAAK,EAAE;gBACH,OAAO,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,EAAE,sBAAsB,CAAC;AAC7E,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM;AACzB,aAAA;AACD,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,UAAU,EAAE,WAAW;AACvB,YAAA,IAAI,EAAE;AACF,gBAAA,wBAAwB,EAAE,IAAI;AAC9B,gBAAA,eAAe,EAAE,UAAU;AAC3B,gBAAA,UAAU,EAAE;AACR,oBAAA,kBAAkB,EAAE;AAChB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM;AACjC;AACJ;AACJ,aAAA;AACD,YAAA,WAAW,EAAE;SAChB;;;QAID,IAAI,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG;AACxB,gBAAA,KAAK,EAAE;AACH,oBAAA;wBACI,MAAM,EAAE,IAAI,CAAC,aAAa;AAC1B,wBAAA,IAAI,EAAE,CAAC,MAAc,KAAI;4BACrB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;yBAC7F;AACD,wBAAA,iBAAiB,EAAE,CAAC;;AAEpB,wBAAA,YAAY,EAAE,CAAC,IAAI,KAAI;4BACnB,IAAI,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACnD,4BAAA,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC;4BACpD,eAAe,CAAC,EAAE,GAAG,CAAA,qBAAA,EAAwB,IAAI,CAAC,EAAE,EAAE;4BAEtD,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACjD,4BAAA,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC7C,4BAAA,aAAa,CAAC,WAAW,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;4BAElE,IAAI,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;4BACnD,eAAe,CAAC,WAAW,GAAG,CAAA,GAAA,EAAY,IAAK,CAAC,WAAW,EAAE;AAE7D,4BAAA,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC;AAC1C,4BAAA,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC;AAC5C,4BAAA,OAAO,eAAe;;AAE7B,qBAAA;AACJ;aACJ;;;IAIF,cAAc,CAAC,EAAE,MAAM,EAAE,EAAA;AAC5B,QAAA,IAAI,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE;QAE5B,IAAI,IAAI,KAAK,SAAS;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;AAQ3B,IAAA,gBAAgB,CAAC,EAAE,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;AAGtB,IAAA,iBAAiB,CAAC,EAAE,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGhB,IAAA,UAAU,CAAC,GAAG,EAAA;AACjB,QAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;;;AAEhB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAGvB,IAAA,QAAQ,CAAC,CAAc,EAAA;QACnB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;AAC7C,YAAA,OAAO,IAAI;AAEf,QAAA,OAAO,IAAI;;IAGf,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;+GA/J3B,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAbrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE;AACV;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCL,wRAOM,EDYQ,MAAA,EAAA,CAAA,8bAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,8BAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAe1C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBApBnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGf,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC,EAAA,aAAA,EACrC,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE;AACV,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE;AACV;AACJ,qBAAA,EAAA,QAAA,EAAA,wRAAA,EAAA,MAAA,EAAA,CAAA,8bAAA,CAAA,EAAA;8BAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAGQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBAES,cAAc,EAAA,CAAA;sBAAvB;;;AE3CL;;AAEG;;ACFH;;AAEG;;;;"}
|
|
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\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\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\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 @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-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 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 {
|
|
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
|
-
|
|
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:
|
|
26
|
-
writeValue(obj:
|
|
21
|
+
registerOnChange(fn: (_: any) => {}): void;
|
|
22
|
+
registerOnTouched(fn: () => {}): void;
|
|
23
|
+
writeValue(obj: string): void;
|
|
27
24
|
validate(c: FormControl): any;
|
|
28
|
-
|
|
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,
|
|
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 {
|
|
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
|
|
16
|
-
|
|
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:
|
|
32
|
-
writeValue(obj:
|
|
27
|
+
registerOnChange(fn: (_: any) => {}): void;
|
|
28
|
+
registerOnTouched(fn: () => {}): void;
|
|
29
|
+
writeValue(obj: string): void;
|
|
33
30
|
validate(c: FormControl): any;
|
|
34
|
-
|
|
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,
|
|
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,31 @@
|
|
|
1
|
+
import { EventEmitter } from "@angular/core";
|
|
2
|
+
import { ControlValueAccessor, FormControl, Validator } from "@angular/forms";
|
|
3
|
+
import { EditorConfig } from "ckeditor5";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class HtmlEditorStandaloneComponent implements ControlValueAccessor, Validator {
|
|
6
|
+
Readonly: boolean;
|
|
7
|
+
Required: boolean;
|
|
8
|
+
Validation: boolean;
|
|
9
|
+
onEditorLoaded: EventEmitter<void>;
|
|
10
|
+
value: string;
|
|
11
|
+
initializeEditor(): void;
|
|
12
|
+
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
|
+
onTouched: () => void;
|
|
23
|
+
propagateChange: (_: any) => void;
|
|
24
|
+
registerOnChange(fn: any): void;
|
|
25
|
+
registerOnTouched(fn: any): void;
|
|
26
|
+
writeValue(obj: any): void;
|
|
27
|
+
validate(c: FormControl): any;
|
|
28
|
+
changed(): void;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HtmlEditorStandaloneComponent, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HtmlEditorStandaloneComponent, "html-editor-standalone", never, { "Readonly": { "alias": "Readonly"; "required": false; }; "Required": { "alias": "Required"; "required": false; }; "Validation": { "alias": "Validation"; "required": false; }; }, { "onEditorLoaded": "onEditorLoaded"; }, never, never, true, never>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { EventEmitter } from "@angular/core";
|
|
2
|
+
import { ControlValueAccessor, FormControl, Validator } from "@angular/forms";
|
|
3
|
+
import { EditorConfig } from "ckeditor5";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class MarkdownEditorStandaloneComponent implements ControlValueAccessor, Validator {
|
|
6
|
+
Readonly: boolean;
|
|
7
|
+
Required: boolean;
|
|
8
|
+
Validation: boolean;
|
|
9
|
+
MentionMarker: string;
|
|
10
|
+
MentionEntities: {
|
|
11
|
+
id: string;
|
|
12
|
+
description: string;
|
|
13
|
+
}[];
|
|
14
|
+
onEditorLoaded: EventEmitter<void>;
|
|
15
|
+
private get mentionEntities();
|
|
16
|
+
value: string;
|
|
17
|
+
initializeEditor(): void;
|
|
18
|
+
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
|
+
onTouched: () => void;
|
|
29
|
+
propagateChange: (_: any) => void;
|
|
30
|
+
registerOnChange(fn: any): void;
|
|
31
|
+
registerOnTouched(fn: any): void;
|
|
32
|
+
writeValue(obj: any): void;
|
|
33
|
+
validate(c: FormControl): any;
|
|
34
|
+
changed(): void;
|
|
35
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownEditorStandaloneComponent, never>;
|
|
36
|
+
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; }; }, { "onEditorLoaded": "onEditorLoaded"; }, never, never, true, never>;
|
|
37
|
+
}
|
package/lib/tokens.d.ts
ADDED
package/package.json
CHANGED
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";
|