@flogeez/angular-tiptap-editor 3.1.5 → 3.2.0
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/CHANGELOG.md +6 -0
- package/esm2022/lib/components/editor/angular-tiptap-editor.component.mjs +23 -2
- package/esm2022/lib/models/ate-editor-ref.mjs +319 -0
- package/esm2022/lib/services/ate-editor-registry.service.mjs +94 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +432 -2
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/lib/components/editor/angular-tiptap-editor.component.d.ts +9 -1
- package/lib/models/ate-editor-ref.d.ts +73 -0
- package/lib/services/ate-editor-registry.service.d.ts +36 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A wrapper class that holds a reference to a registered editor component.
|
|
3
|
+
* It provides direct, type-safe facade methods to interact with the editor
|
|
4
|
+
* and execute formatting/utility commands without needing to manage the raw
|
|
5
|
+
* TipTap editor instance directly.
|
|
6
|
+
*/
|
|
7
|
+
export class AteEditorRef {
|
|
8
|
+
constructor(id, getEditorInstance, commandsService) {
|
|
9
|
+
this.id = id;
|
|
10
|
+
this.getEditorInstance = getEditorInstance;
|
|
11
|
+
this.commandsService = commandsService;
|
|
12
|
+
}
|
|
13
|
+
/** Get the raw TipTap Editor instance. */
|
|
14
|
+
get editor() {
|
|
15
|
+
return this.getEditorInstance();
|
|
16
|
+
}
|
|
17
|
+
/** Get the current editor state snapshot. */
|
|
18
|
+
get state() {
|
|
19
|
+
return this.commandsService.editorState();
|
|
20
|
+
}
|
|
21
|
+
/** Get the reactive editor state as a Signal. */
|
|
22
|
+
get stateSignal() {
|
|
23
|
+
return this.commandsService.editorState;
|
|
24
|
+
}
|
|
25
|
+
/** Execute a generic command by name. */
|
|
26
|
+
execute(command, ...args) {
|
|
27
|
+
const editor = this.editor;
|
|
28
|
+
if (editor) {
|
|
29
|
+
this.commandsService.execute(editor, command, ...args);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// ============================================
|
|
33
|
+
// Facade Formatting Commands
|
|
34
|
+
// ============================================
|
|
35
|
+
toggleBold() {
|
|
36
|
+
const editor = this.editor;
|
|
37
|
+
if (editor) {
|
|
38
|
+
this.commandsService.toggleBold(editor);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
toggleItalic() {
|
|
42
|
+
const editor = this.editor;
|
|
43
|
+
if (editor) {
|
|
44
|
+
this.commandsService.toggleItalic(editor);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
toggleStrike() {
|
|
48
|
+
const editor = this.editor;
|
|
49
|
+
if (editor) {
|
|
50
|
+
this.commandsService.toggleStrike(editor);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
toggleCode() {
|
|
54
|
+
const editor = this.editor;
|
|
55
|
+
if (editor) {
|
|
56
|
+
this.commandsService.toggleCode(editor);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
toggleCodeBlock() {
|
|
60
|
+
const editor = this.editor;
|
|
61
|
+
if (editor) {
|
|
62
|
+
this.commandsService.toggleCodeBlock(editor);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
toggleUnderline() {
|
|
66
|
+
const editor = this.editor;
|
|
67
|
+
if (editor) {
|
|
68
|
+
this.commandsService.toggleUnderline(editor);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
toggleSuperscript() {
|
|
72
|
+
const editor = this.editor;
|
|
73
|
+
if (editor) {
|
|
74
|
+
this.commandsService.toggleSuperscript(editor);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
toggleSubscript() {
|
|
78
|
+
const editor = this.editor;
|
|
79
|
+
if (editor) {
|
|
80
|
+
this.commandsService.toggleSubscript(editor);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
toggleHeading(level) {
|
|
84
|
+
const editor = this.editor;
|
|
85
|
+
if (editor) {
|
|
86
|
+
this.commandsService.toggleHeading(editor, level);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
toggleBulletList() {
|
|
90
|
+
const editor = this.editor;
|
|
91
|
+
if (editor) {
|
|
92
|
+
this.commandsService.toggleBulletList(editor);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
toggleOrderedList() {
|
|
96
|
+
const editor = this.editor;
|
|
97
|
+
if (editor) {
|
|
98
|
+
this.commandsService.toggleOrderedList(editor);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
toggleBlockquote() {
|
|
102
|
+
const editor = this.editor;
|
|
103
|
+
if (editor) {
|
|
104
|
+
this.commandsService.toggleBlockquote(editor);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
setTextAlign(alignment) {
|
|
108
|
+
const editor = this.editor;
|
|
109
|
+
if (editor) {
|
|
110
|
+
this.commandsService.setTextAlign(editor, alignment);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
insertHorizontalRule() {
|
|
114
|
+
const editor = this.editor;
|
|
115
|
+
if (editor) {
|
|
116
|
+
this.commandsService.insertHorizontalRule(editor);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
insertImage(options) {
|
|
120
|
+
const editor = this.editor;
|
|
121
|
+
if (editor) {
|
|
122
|
+
this.commandsService.insertImage(editor, options);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
uploadImage(file, options) {
|
|
126
|
+
const editor = this.editor;
|
|
127
|
+
if (editor) {
|
|
128
|
+
this.commandsService.uploadImage(editor, file, options);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
toggleHighlight(color) {
|
|
132
|
+
const editor = this.editor;
|
|
133
|
+
if (editor) {
|
|
134
|
+
this.commandsService.toggleHighlight(editor, color);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
undo() {
|
|
138
|
+
const editor = this.editor;
|
|
139
|
+
if (editor) {
|
|
140
|
+
this.commandsService.undo(editor);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
redo() {
|
|
144
|
+
const editor = this.editor;
|
|
145
|
+
if (editor) {
|
|
146
|
+
this.commandsService.redo(editor);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// ============================================
|
|
150
|
+
// Table Commands
|
|
151
|
+
// ============================================
|
|
152
|
+
insertTable(rows, cols) {
|
|
153
|
+
const editor = this.editor;
|
|
154
|
+
if (editor) {
|
|
155
|
+
this.commandsService.insertTable(editor, rows, cols);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
addColumnBefore() {
|
|
159
|
+
const editor = this.editor;
|
|
160
|
+
if (editor) {
|
|
161
|
+
this.commandsService.addColumnBefore(editor);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
addColumnAfter() {
|
|
165
|
+
const editor = this.editor;
|
|
166
|
+
if (editor) {
|
|
167
|
+
this.commandsService.addColumnAfter(editor);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
deleteColumn() {
|
|
171
|
+
const editor = this.editor;
|
|
172
|
+
if (editor) {
|
|
173
|
+
this.commandsService.deleteColumn(editor);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
addRowBefore() {
|
|
177
|
+
const editor = this.editor;
|
|
178
|
+
if (editor) {
|
|
179
|
+
this.commandsService.addRowBefore(editor);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
addRowAfter() {
|
|
183
|
+
const editor = this.editor;
|
|
184
|
+
if (editor) {
|
|
185
|
+
this.commandsService.addRowAfter(editor);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
deleteRow() {
|
|
189
|
+
const editor = this.editor;
|
|
190
|
+
if (editor) {
|
|
191
|
+
this.commandsService.deleteRow(editor);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
deleteTable() {
|
|
195
|
+
const editor = this.editor;
|
|
196
|
+
if (editor) {
|
|
197
|
+
this.commandsService.deleteTable(editor);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
mergeCells() {
|
|
201
|
+
const editor = this.editor;
|
|
202
|
+
if (editor) {
|
|
203
|
+
this.commandsService.mergeCells(editor);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
splitCell() {
|
|
207
|
+
const editor = this.editor;
|
|
208
|
+
if (editor) {
|
|
209
|
+
this.commandsService.splitCell(editor);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
toggleHeaderColumn() {
|
|
213
|
+
const editor = this.editor;
|
|
214
|
+
if (editor) {
|
|
215
|
+
this.commandsService.toggleHeaderColumn(editor);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
toggleHeaderRow() {
|
|
219
|
+
const editor = this.editor;
|
|
220
|
+
if (editor) {
|
|
221
|
+
this.commandsService.toggleHeaderRow(editor);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// ============================================
|
|
225
|
+
// Color Picker & Link Commands
|
|
226
|
+
// ============================================
|
|
227
|
+
applyColor(color, selectionOnly, closeMenu) {
|
|
228
|
+
const editor = this.editor;
|
|
229
|
+
if (editor) {
|
|
230
|
+
this.commandsService.execute(editor, "applyColor", color, selectionOnly, closeMenu);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
applyHighlight(color, selectionOnly, closeMenu) {
|
|
234
|
+
const editor = this.editor;
|
|
235
|
+
if (editor) {
|
|
236
|
+
this.commandsService.execute(editor, "applyHighlight", color, selectionOnly, closeMenu);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
unsetColor(selectionOnly) {
|
|
240
|
+
const editor = this.editor;
|
|
241
|
+
if (editor) {
|
|
242
|
+
this.commandsService.execute(editor, "unsetColor", selectionOnly);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
unsetHighlight(selectionOnly) {
|
|
246
|
+
const editor = this.editor;
|
|
247
|
+
if (editor) {
|
|
248
|
+
this.commandsService.execute(editor, "unsetHighlight", selectionOnly);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
toggleLink(event) {
|
|
252
|
+
const editor = this.editor;
|
|
253
|
+
if (editor) {
|
|
254
|
+
this.commandsService.execute(editor, "toggleLink", event);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
unsetLink() {
|
|
258
|
+
const editor = this.editor;
|
|
259
|
+
if (editor) {
|
|
260
|
+
this.commandsService.execute(editor, "unsetLink");
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
toggleColorPicker(mode, event) {
|
|
264
|
+
const editor = this.editor;
|
|
265
|
+
if (editor) {
|
|
266
|
+
this.commandsService.execute(editor, "toggleColorPicker", mode, event);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// ============================================
|
|
270
|
+
// General Controls & Content
|
|
271
|
+
// ============================================
|
|
272
|
+
clearContent() {
|
|
273
|
+
const editor = this.editor;
|
|
274
|
+
if (editor) {
|
|
275
|
+
this.commandsService.clearContent(editor);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
setContent(content, emitUpdate = true) {
|
|
279
|
+
const editor = this.editor;
|
|
280
|
+
if (editor) {
|
|
281
|
+
this.commandsService.setContent(editor, content, emitUpdate);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
getContent(format) {
|
|
285
|
+
const editor = this.editor;
|
|
286
|
+
return editor ? this.commandsService.getContent(editor, format) : "";
|
|
287
|
+
}
|
|
288
|
+
getHTML() {
|
|
289
|
+
const editor = this.editor;
|
|
290
|
+
return editor ? editor.getHTML() : "";
|
|
291
|
+
}
|
|
292
|
+
getJSON() {
|
|
293
|
+
const editor = this.editor;
|
|
294
|
+
return editor ? editor.getJSON() : undefined;
|
|
295
|
+
}
|
|
296
|
+
getText() {
|
|
297
|
+
const editor = this.editor;
|
|
298
|
+
return editor ? editor.getText() : "";
|
|
299
|
+
}
|
|
300
|
+
async exportAs(format, method, options) {
|
|
301
|
+
const editor = this.editor;
|
|
302
|
+
if (editor) {
|
|
303
|
+
await this.commandsService.exportAs(editor, format, method, options);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
focus() {
|
|
307
|
+
const editor = this.editor;
|
|
308
|
+
if (editor) {
|
|
309
|
+
this.commandsService.focus(editor);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
blur() {
|
|
313
|
+
const editor = this.editor;
|
|
314
|
+
if (editor) {
|
|
315
|
+
this.commandsService.blur(editor);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9tb2RlbHMvYXRlLWVkaXRvci1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNrQixFQUFVLEVBQ1QsaUJBQXNDLEVBQ3ZDLGVBQXlDO1FBRnpDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDVCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBQ3ZDLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtJQUN4RCxDQUFDO0lBRUosMENBQTBDO0lBQzFDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO0lBQzFDLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQWU7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLDZCQUE2QjtJQUM3QiwrQ0FBK0M7SUFFL0MsVUFBVTtRQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUN4RCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUMxRCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUM3RCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUM3RCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFB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QUNYLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ2xELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFZGl0b3IsIEpTT05Db250ZW50IH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yQ29tbWFuZHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0ZS1lZGl0b3ItY29tbWFuZHMuc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yU3RhdGVTbmFwc2hvdCB9IGZyb20gXCIuL2F0ZS1lZGl0b3Itc3RhdGUubW9kZWxcIjtcbmltcG9ydCB7IEF0ZUltYWdlVXBsb2FkT3B0aW9ucyB9IGZyb20gXCIuL2F0ZS1pbWFnZS5tb2RlbFwiO1xuaW1wb3J0IHsgQXRlRXhwb3J0Rm9ybWF0LCBBdGVFeHBvcnRPcHRpb25zIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0ZS1leHBvcnQuc2VydmljZVwiO1xuXG4vKipcbiAqIEEgd3JhcHBlciBjbGFzcyB0aGF0IGhvbGRzIGEgcmVmZXJlbmNlIHRvIGEgcmVnaXN0ZXJlZCBlZGl0b3IgY29tcG9uZW50LlxuICogSXQgcHJvdmlkZXMgZGlyZWN0LCB0eXBlLXNhZmUgZmFjYWRlIG1ldGhvZHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZWRpdG9yXG4gKiBhbmQgZXhlY3V0ZSBmb3JtYXR0aW5nL3V0aWxpdHkgY29tbWFuZHMgd2l0aG91dCBuZWVkaW5nIHRvIG1hbmFnZSB0aGUgcmF3XG4gKiBUaXBUYXAgZWRpdG9yIGluc3RhbmNlIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY2xhc3MgQXRlRWRpdG9yUmVmIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBnZXRFZGl0b3JJbnN0YW5jZTogKCkgPT4gRWRpdG9yIHwgbnVsbCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZHNTZXJ2aWNlOiBBdGVFZGl0b3JDb21tYW5kc1NlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKiBHZXQgdGhlIHJhdyBUaXBUYXAgRWRpdG9yIGluc3RhbmNlLiAqL1xuICBnZXQgZWRpdG9yKCk6IEVkaXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldEVkaXRvckluc3RhbmNlKCk7XG4gIH1cblxuICAvKiogR2V0IHRoZSBjdXJyZW50IGVkaXRvciBzdGF0ZSBzbmFwc2hvdC4gKi9cbiAgZ2V0IHN0YXRlKCk6IEF0ZUVkaXRvclN0YXRlU25hcHNob3Qge1xuICAgIHJldHVybiB0aGlzLmNvbW1hbmRzU2VydmljZS5lZGl0b3JTdGF0ZSgpO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgcmVhY3RpdmUgZWRpdG9yIHN0YXRlIGFzIGEgU2lnbmFsLiAqL1xuICBnZXQgc3RhdGVTaWduYWwoKTogU2lnbmFsPEF0ZUVkaXRvclN0YXRlU25hcHNob3Q+IHtcbiAgICByZXR1cm4gdGhpcy5jb21tYW5kc1NlcnZpY2UuZWRpdG9yU3RhdGU7XG4gIH1cblxuICAvKiogRXhlY3V0ZSBhIGdlbmVyaWMgY29tbWFuZCBieSBuYW1lLiAqL1xuICBleGVjdXRlKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhlY3V0ZShlZGl0b3IsIGNvbW1hbmQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEZhY2FkZSBGb3JtYXR0aW5nIENvbW1hbmRzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdG9nZ2xlQm9sZCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlQm9sZChlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZUl0YWxpYygpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlSXRhbGljKGVkaXRvcik7fVxuICB9XG5cbiAgdG9nZ2xlU3RyaWtlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVTdHJpa2UoZWRpdG9yKTt9XG4gIH1cblxuICB0b2dnbGVDb2RlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVDb2RlKGVkaXRvcik7fVxuICB9XG5cbiAgdG9nZ2xlQ29kZUJsb2NrKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVDb2RlQmxvY2soZWRpdG9yKTt9XG4gIH1cblxuICB0b2dnbGVVbmRlcmxpbmUoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZVVuZGVybGluZShlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZVN1cGVyc2NyaXB0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVTdXBlcnNjcmlwdChlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZVN1YnNjcmlwdCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlU3Vic2NyaXB0KGVkaXRvcik7fVxuICB9XG5cbiAgdG9nZ2xlSGVhZGluZyhsZXZlbDogMSB8IDIgfCAzKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZUhlYWRpbmcoZWRpdG9yLCBsZXZlbCk7fVxuICB9XG5cbiAgdG9nZ2xlQnVsbGV0TGlzdCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlQnVsbGV0TGlzdChlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZU9yZGVyZWRMaXN0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVPcmRlcmVkTGlzdChlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZUJsb2NrcXVvdGUoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZUJsb2NrcXVvdGUoZWRpdG9yKTt9XG4gIH1cblxuICBzZXRUZXh0QWxpZ24oYWxpZ25tZW50OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfCBcImp1c3RpZnlcIik6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5zZXRUZXh0QWxpZ24oZWRpdG9yLCBhbGlnbm1lbnQpO31cbiAgfVxuXG4gIGluc2VydEhvcml6b250YWxSdWxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5pbnNlcnRIb3Jpem9udGFsUnVsZShlZGl0b3IpO31cbiAgfVxuXG4gIGluc2VydEltYWdlKG9wdGlvbnM6IEF0ZUltYWdlVXBsb2FkT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5pbnNlcnRJbWFnZShlZGl0b3IsIG9wdGlvbnMpO31cbiAgfVxuXG4gIHVwbG9hZEltYWdlKGZpbGU6IEZpbGUsIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudXBsb2FkSW1hZ2UoZWRpdG9yLCBmaWxlLCBvcHRpb25zKTt9XG4gIH1cblxuICB0b2dnbGVIaWdobGlnaHQoY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVIaWdobGlnaHQoZWRpdG9yLCBjb2xvcik7fVxuICB9XG5cbiAgdW5kbygpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudW5kbyhlZGl0b3IpO31cbiAgfVxuXG4gIHJlZG8oKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLnJlZG8oZWRpdG9yKTt9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBUYWJsZSBDb21tYW5kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGluc2VydFRhYmxlKHJvd3M/OiBudW1iZXIsIGNvbHM/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UuaW5zZXJ0VGFibGUoZWRpdG9yLCByb3dzLCBjb2xzKTt9XG4gIH1cblxuICBhZGRDb2x1bW5CZWZvcmUoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLmFkZENvbHVtbkJlZm9yZShlZGl0b3IpO31cbiAgfVxuXG4gIGFkZENvbHVtbkFmdGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5hZGRDb2x1bW5BZnRlcihlZGl0b3IpO31cbiAgfVxuXG4gIGRlbGV0ZUNvbHVtbigpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UuZGVsZXRlQ29sdW1uKGVkaXRvcik7fVxuICB9XG5cbiAgYWRkUm93QmVmb3JlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5hZGRSb3dCZWZvcmUoZWRpdG9yKTt9XG4gIH1cblxuICBhZGRSb3dBZnRlcigpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UuYWRkUm93QWZ0ZXIoZWRpdG9yKTt9XG4gIH1cblxuICBkZWxldGVSb3coKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLmRlbGV0ZVJvdyhlZGl0b3IpO31cbiAgfVxuXG4gIGRlbGV0ZVRhYmxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5kZWxldGVUYWJsZShlZGl0b3IpO31cbiAgfVxuXG4gIG1lcmdlQ2VsbHMoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLm1lcmdlQ2VsbHMoZWRpdG9yKTt9XG4gIH1cblxuICBzcGxpdENlbGwoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLnNwbGl0Q2VsbChlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZUhlYWRlckNvbHVtbigpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlSGVhZGVyQ29sdW1uKGVkaXRvcik7fVxuICB9XG5cbiAgdG9nZ2xlSGVhZGVyUm93KCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVIZWFkZXJSb3coZWRpdG9yKTt9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDb2xvciBQaWNrZXIgJiBMaW5rIENvbW1hbmRzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgYXBwbHlDb2xvcihjb2xvcjogc3RyaW5nLCBzZWxlY3Rpb25Pbmx5PzogYm9vbGVhbiwgY2xvc2VNZW51PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmV4ZWN1dGUoZWRpdG9yLCBcImFwcGx5Q29sb3JcIiwgY29sb3IsIHNlbGVjdGlvbk9ubHksIGNsb3NlTWVudSk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlIaWdobGlnaHQoY29sb3I6IHN0cmluZywgc2VsZWN0aW9uT25seT86IGJvb2xlYW4sIGNsb3NlTWVudT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5leGVjdXRlKGVkaXRvciwgXCJhcHBseUhpZ2hsaWdodFwiLCBjb2xvciwgc2VsZWN0aW9uT25seSwgY2xvc2VNZW51KTtcbiAgICB9XG4gIH1cblxuICB1bnNldENvbG9yKHNlbGVjdGlvbk9ubHk/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhlY3V0ZShlZGl0b3IsIFwidW5zZXRDb2xvclwiLCBzZWxlY3Rpb25Pbmx5KTtcbiAgICB9XG4gIH1cblxuICB1bnNldEhpZ2hsaWdodChzZWxlY3Rpb25Pbmx5PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmV4ZWN1dGUoZWRpdG9yLCBcInVuc2V0SGlnaGxpZ2h0XCIsIHNlbGVjdGlvbk9ubHkpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUxpbmsoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmV4ZWN1dGUoZWRpdG9yLCBcInRvZ2dsZUxpbmtcIiwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHVuc2V0TGluaygpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5leGVjdXRlKGVkaXRvciwgXCJ1bnNldExpbmtcIik7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlQ29sb3JQaWNrZXIobW9kZTogXCJ0ZXh0XCIgfCBcImhpZ2hsaWdodFwiLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5leGVjdXRlKGVkaXRvciwgXCJ0b2dnbGVDb2xvclBpY2tlclwiLCBtb2RlLCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gR2VuZXJhbCBDb250cm9scyAmIENvbnRlbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBjbGVhckNvbnRlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLmNsZWFyQ29udGVudChlZGl0b3IpO31cbiAgfVxuXG4gIHNldENvbnRlbnQoY29udGVudDogc3RyaW5nLCBlbWl0VXBkYXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5zZXRDb250ZW50KGVkaXRvciwgY29udGVudCwgZW1pdFVwZGF0ZSk7fVxuICB9XG5cbiAgZ2V0Q29udGVudChmb3JtYXQ6IEF0ZUV4cG9ydEZvcm1hdCk6IHN0cmluZyB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgcmV0dXJuIGVkaXRvciA/IHRoaXMuY29tbWFuZHNTZXJ2aWNlLmdldENvbnRlbnQoZWRpdG9yLCBmb3JtYXQpIDogXCJcIjtcbiAgfVxuXG4gIGdldEhUTUwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICByZXR1cm4gZWRpdG9yID8gZWRpdG9yLmdldEhUTUwoKSA6IFwiXCI7XG4gIH1cblxuICBnZXRKU09OKCk6IEpTT05Db250ZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICByZXR1cm4gZWRpdG9yID8gZWRpdG9yLmdldEpTT04oKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldFRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICByZXR1cm4gZWRpdG9yID8gZWRpdG9yLmdldFRleHQoKSA6IFwiXCI7XG4gIH1cblxuICBhc3luYyBleHBvcnRBcyhcbiAgICBmb3JtYXQ6IEF0ZUV4cG9ydEZvcm1hdCxcbiAgICBtZXRob2Q6IFwiY2xpcGJvYXJkXCIgfCBcImRvd25sb2FkXCIsXG4gICAgb3B0aW9ucz86IEF0ZUV4cG9ydE9wdGlvbnNcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgYXdhaXQgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhwb3J0QXMoZWRpdG9yLCBmb3JtYXQsIG1ldGhvZCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLmZvY3VzKGVkaXRvcik7fVxuICB9XG5cbiAgYmx1cigpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UuYmx1cihlZGl0b3IpO31cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Injectable, signal, computed } from "@angular/core";
|
|
2
|
+
import { AteEditorRef } from "../models/ate-editor-ref";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* A root-level registry service to register, unregister, and manage active editor instances.
|
|
6
|
+
* This service is provided in 'root' and can be injected anywhere in the application.
|
|
7
|
+
*/
|
|
8
|
+
export class AteEditorRegistry {
|
|
9
|
+
constructor() {
|
|
10
|
+
// Map of registered editors
|
|
11
|
+
this._editors = signal(new Map());
|
|
12
|
+
this.editors = this._editors.asReadonly();
|
|
13
|
+
// Active (last focused or last registered) editor ID
|
|
14
|
+
this._activeEditorId = signal(null);
|
|
15
|
+
this.activeEditorId = this._activeEditorId.asReadonly();
|
|
16
|
+
// List of all active editor IDs reactively
|
|
17
|
+
this.editorIds = computed(() => Array.from(this._editors().keys()));
|
|
18
|
+
// Active AteEditorRef reactively
|
|
19
|
+
this.activeEditor = computed(() => {
|
|
20
|
+
const activeId = this._activeEditorId();
|
|
21
|
+
if (!activeId) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return this._editors().get(activeId) || null;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
static { this.counter = 0; }
|
|
28
|
+
/**
|
|
29
|
+
* Register an editor instance.
|
|
30
|
+
* Returns the final registered ID.
|
|
31
|
+
*/
|
|
32
|
+
register(id, getEditor, commandsService) {
|
|
33
|
+
const finalId = id || `ate-editor-${++AteEditorRegistry.counter}`;
|
|
34
|
+
const editorRef = new AteEditorRef(finalId, getEditor, commandsService);
|
|
35
|
+
this._editors.update(map => {
|
|
36
|
+
const newMap = new Map(map);
|
|
37
|
+
newMap.set(finalId, editorRef);
|
|
38
|
+
return newMap;
|
|
39
|
+
});
|
|
40
|
+
// If there is no active editor, make this one active
|
|
41
|
+
if (!this._activeEditorId()) {
|
|
42
|
+
this._activeEditorId.set(finalId);
|
|
43
|
+
}
|
|
44
|
+
return finalId;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Unregister an editor instance by ID.
|
|
48
|
+
*/
|
|
49
|
+
unregister(id) {
|
|
50
|
+
this._editors.update(map => {
|
|
51
|
+
const newMap = new Map(map);
|
|
52
|
+
newMap.delete(id);
|
|
53
|
+
return newMap;
|
|
54
|
+
});
|
|
55
|
+
// If the active editor is the one being unregistered, find a fallback
|
|
56
|
+
if (this._activeEditorId() === id) {
|
|
57
|
+
const remainingIds = this.editorIds();
|
|
58
|
+
if (remainingIds.length > 0) {
|
|
59
|
+
// Set active to the last registered one remaining
|
|
60
|
+
this._activeEditorId.set(remainingIds[remainingIds.length - 1]);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this._activeEditorId.set(null);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Mark an editor as active (usually on focus).
|
|
69
|
+
*/
|
|
70
|
+
setActive(id) {
|
|
71
|
+
if (this._editors().has(id)) {
|
|
72
|
+
this._activeEditorId.set(id);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Retrieve an editor reference by ID, or the active editor if ID is not specified.
|
|
77
|
+
*/
|
|
78
|
+
get(id) {
|
|
79
|
+
if (id) {
|
|
80
|
+
return this._editors().get(id);
|
|
81
|
+
}
|
|
82
|
+
const activeId = this._activeEditorId();
|
|
83
|
+
return activeId ? this._editors().get(activeId) : undefined;
|
|
84
|
+
}
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
86
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorRegistry, providedIn: "root" }); }
|
|
87
|
+
}
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorRegistry, decorators: [{
|
|
89
|
+
type: Injectable,
|
|
90
|
+
args: [{
|
|
91
|
+
providedIn: "root",
|
|
92
|
+
}]
|
|
93
|
+
}] });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1yZWdpc3RyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvc2VydmljZXMvYXRlLWVkaXRvci1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBR3hEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFNRSw0QkFBNEI7UUFDWCxhQUFRLEdBQUcsTUFBTSxDQUE0QixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEUsWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFOUMscURBQXFEO1FBQ3BDLG9CQUFlLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUN0RCxtQkFBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFNUQsMkNBQTJDO1FBQ2xDLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhFLGlDQUFpQztRQUN4QixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxD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b21wdXRlZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBBdGVFZGl0b3JSZWYgfSBmcm9tIFwiLi4vbW9kZWxzL2F0ZS1lZGl0b3ItcmVmXCI7XG5pbXBvcnQgeyBBdGVFZGl0b3JDb21tYW5kc1NlcnZpY2UgfSBmcm9tIFwiLi9hdGUtZWRpdG9yLWNvbW1hbmRzLnNlcnZpY2VcIjtcblxuLyoqXG4gKiBBIHJvb3QtbGV2ZWwgcmVnaXN0cnkgc2VydmljZSB0byByZWdpc3RlciwgdW5yZWdpc3RlciwgYW5kIG1hbmFnZSBhY3RpdmUgZWRpdG9yIGluc3RhbmNlcy5cbiAqIFRoaXMgc2VydmljZSBpcyBwcm92aWRlZCBpbiAncm9vdCcgYW5kIGNhbiBiZSBpbmplY3RlZCBhbnl3aGVyZSBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIEF0ZUVkaXRvclJlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgY291bnRlciA9IDA7XG5cbiAgLy8gTWFwIG9mIHJlZ2lzdGVyZWQgZWRpdG9yc1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0b3JzID0gc2lnbmFsPE1hcDxzdHJpbmcsIEF0ZUVkaXRvclJlZj4+KG5ldyBNYXAoKSk7XG4gIHJlYWRvbmx5IGVkaXRvcnMgPSB0aGlzLl9lZGl0b3JzLmFzUmVhZG9ubHkoKTtcblxuICAvLyBBY3RpdmUgKGxhc3QgZm9jdXNlZCBvciBsYXN0IHJlZ2lzdGVyZWQpIGVkaXRvciBJRFxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVFZGl0b3JJZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgYWN0aXZlRWRpdG9ySWQgPSB0aGlzLl9hY3RpdmVFZGl0b3JJZC5hc1JlYWRvbmx5KCk7XG5cbiAgLy8gTGlzdCBvZiBhbGwgYWN0aXZlIGVkaXRvciBJRHMgcmVhY3RpdmVseVxuICByZWFkb25seSBlZGl0b3JJZHMgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHRoaXMuX2VkaXRvcnMoKS5rZXlzKCkpKTtcblxuICAvLyBBY3RpdmUgQXRlRWRpdG9yUmVmIHJlYWN0aXZlbHlcbiAgcmVhZG9ubHkgYWN0aXZlRWRpdG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGl2ZUlkID0gdGhpcy5fYWN0aXZlRWRpdG9ySWQoKTtcbiAgICBpZiAoIWFjdGl2ZUlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRvcnMoKS5nZXQoYWN0aXZlSWQpIHx8IG51bGw7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhbiBlZGl0b3IgaW5zdGFuY2UuXG4gICAqIFJldHVybnMgdGhlIGZpbmFsIHJlZ2lzdGVyZWQgSUQuXG4gICAqL1xuICByZWdpc3RlcihcbiAgICBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGdldEVkaXRvcjogKCkgPT4gRWRpdG9yIHwgbnVsbCxcbiAgICBjb21tYW5kc1NlcnZpY2U6IEF0ZUVkaXRvckNvbW1hbmRzU2VydmljZVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbmFsSWQgPSBpZCB8fCBgYXRlLWVkaXRvci0keysrQXRlRWRpdG9yUmVnaXN0cnkuY291bnRlcn1gO1xuICAgIGNvbnN0IGVkaXRvclJlZiA9IG5ldyBBdGVFZGl0b3JSZWYoZmluYWxJZCwgZ2V0RWRpdG9yLCBjb21tYW5kc1NlcnZpY2UpO1xuXG4gICAgdGhpcy5fZWRpdG9ycy51cGRhdGUobWFwID0+IHtcbiAgICAgIGNvbnN0IG5ld01hcCA9IG5ldyBNYXAobWFwKTtcbiAgICAgIG5ld01hcC5zZXQoZmluYWxJZCwgZWRpdG9yUmVmKTtcbiAgICAgIHJldHVybiBuZXdNYXA7XG4gICAgfSk7XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBubyBhY3RpdmUgZWRpdG9yLCBtYWtlIHRoaXMgb25lIGFjdGl2ZVxuICAgIGlmICghdGhpcy5fYWN0aXZlRWRpdG9ySWQoKSkge1xuICAgICAgdGhpcy5fYWN0aXZlRWRpdG9ySWQuc2V0KGZpbmFsSWQpO1xuICAgIH1cblxuICAgIHJldHVybiBmaW5hbElkO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXIgYW4gZWRpdG9yIGluc3RhbmNlIGJ5IElELlxuICAgKi9cbiAgdW5yZWdpc3RlcihpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fZWRpdG9ycy51cGRhdGUobWFwID0+IHtcbiAgICAgIGNvbnN0IG5ld01hcCA9IG5ldyBNYXAobWFwKTtcbiAgICAgIG5ld01hcC5kZWxldGUoaWQpO1xuICAgICAgcmV0dXJuIG5ld01hcDtcbiAgICB9KTtcblxuICAgIC8vIElmIHRoZSBhY3RpdmUgZWRpdG9yIGlzIHRoZSBvbmUgYmVpbmcgdW5yZWdpc3RlcmVkLCBmaW5kIGEgZmFsbGJhY2tcbiAgICBpZiAodGhpcy5fYWN0aXZlRWRpdG9ySWQoKSA9PT0gaWQpIHtcbiAgICAgIGNvbnN0IHJlbWFpbmluZ0lkcyA9IHRoaXMuZWRpdG9ySWRzKCk7XG4gICAgICBpZiAocmVtYWluaW5nSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gU2V0IGFjdGl2ZSB0byB0aGUgbGFzdCByZWdpc3RlcmVkIG9uZSByZW1haW5pbmdcbiAgICAgICAgdGhpcy5fYWN0aXZlRWRpdG9ySWQuc2V0KHJlbWFpbmluZ0lkc1tyZW1haW5pbmdJZHMubGVuZ3RoIC0gMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWRpdG9ySWQuc2V0KG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrIGFuIGVkaXRvciBhcyBhY3RpdmUgKHVzdWFsbHkgb24gZm9jdXMpLlxuICAgKi9cbiAgc2V0QWN0aXZlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZWRpdG9ycygpLmhhcyhpZCkpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUVkaXRvcklkLnNldChpZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGFuIGVkaXRvciByZWZlcmVuY2UgYnkgSUQsIG9yIHRoZSBhY3RpdmUgZWRpdG9yIGlmIElEIGlzIG5vdCBzcGVjaWZpZWQuXG4gICAqL1xuICBnZXQoaWQ/OiBzdHJpbmcpOiBBdGVFZGl0b3JSZWYgfCB1bmRlZmluZWQge1xuICAgIGlmIChpZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvcnMoKS5nZXQoaWQpO1xuICAgIH1cbiAgICBjb25zdCBhY3RpdmVJZCA9IHRoaXMuX2FjdGl2ZUVkaXRvcklkKCk7XG4gICAgcmV0dXJuIGFjdGl2ZUlkID8gdGhpcy5fZWRpdG9ycygpLmdldChhY3RpdmVJZCkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -14,6 +14,8 @@ export * from "./lib/services/ate-image.service";
|
|
|
14
14
|
export * from "./lib/services/ate-color-picker.service";
|
|
15
15
|
export * from "./lib/services/ate-link.service";
|
|
16
16
|
export * from "./lib/services/ate-export.service";
|
|
17
|
+
export * from "./lib/services/ate-editor-registry.service";
|
|
18
|
+
export * from "./lib/models/ate-editor-ref";
|
|
17
19
|
// State & Calculators (Essential for custom plugins)
|
|
18
20
|
export * from "./lib/models/ate-editor-state.model";
|
|
19
21
|
export * from "./lib/extensions/calculators/ate-discovery.calculator";
|
|
@@ -38,4 +40,4 @@ export { AteAngularNodeView } from "./lib/node-view/ate-angular-node-view";
|
|
|
38
40
|
export { AteNodeViewRenderer } from "./lib/node-view/ate-node-view.renderer";
|
|
39
41
|
export { createAngularComponentExtension } from "./lib/node-view/ate-node-view.factory";
|
|
40
42
|
export { registerAngularComponent } from "./lib/node-view/ate-register-angular-component";
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDRCQUE0QjtBQUM1QixjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsYUFBYTtBQUNiLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCxXQUFXO0FBQ1gsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLHFEQUFxRDtBQUNyRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLG1EQUFtRCxDQUFDO0FBRWxFLHlDQUF5QztBQUN6QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsc0NBQXNDLENBQUM7QUFFckQseUJBQXlCO0FBQ3pCLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzQ0FBc0MsQ0FBQztBQUVyRCx1Q0FBdUM7QUFDdkMsY0FBYyx3Q0FBd0MsQ0FBQztBQUt2RCwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0RBQWdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHRpcHRhcC1lZGl0b3JcbiAqL1xuXG4vLyBNYWluIGNvbXBvbmVudCAmIFByb3ZpZGVyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9lZGl0b3IvYW5ndWxhci10aXB0YXAtZWRpdG9yLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2F0ZS1lZGl0b3IucHJvdmlkZXJcIjtcblxuLy8gRGlyZWN0aXZlc1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2RpcmVjdGl2ZXMvYXRlLW5vb3AtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvZGlyZWN0aXZlcy9hdGUtdG9vbHRpcC5kaXJlY3RpdmVcIjtcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlcy9hdGUtaTE4bi5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvYXRlLWVkaXRvci1jb21tYW5kcy5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvYXRlLWltYWdlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlcy9hdGUtY29sb3ItcGlja2VyLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlcy9hdGUtbGluay5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvYXRlLWV4cG9ydC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvYXRlLWVkaXRvci1yZWdpc3RyeS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kZWxzL2F0ZS1lZGl0b3ItcmVmXCI7XG5cbi8vIFN0YXRlICYgQ2FsY3VsYXRvcnMgKEVzc2VudGlhbCBmb3IgY3VzdG9tIHBsdWdpbnMpXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kZWxzL2F0ZS1lZGl0b3Itc3RhdGUubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9leHRlbnNpb25zL2NhbGN1bGF0b3JzL2F0ZS1kaXNjb3ZlcnkuY2FsY3VsYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2V4dGVuc2lvbnMvY2FsY3VsYXRvcnMvYXRlLWltYWdlLmNhbGN1bGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9leHRlbnNpb25zL2NhbGN1bGF0b3JzL2F0ZS1tYXJrcy5jYWxjdWxhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvZXh0ZW5zaW9ucy9jYWxjdWxhdG9ycy9hdGUtc2VsZWN0aW9uLmNhbGN1bGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9leHRlbnNpb25zL2NhbGN1bGF0b3JzL2F0ZS1zdHJ1Y3R1cmUuY2FsY3VsYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2V4dGVuc2lvbnMvY2FsY3VsYXRvcnMvYXRlLXRhYmxlLmNhbGN1bGF0b3JcIjtcblxuLy8gVHlwZXMgYW5kIGludGVyZmFjZXMgZm9yIGNvbmZpZ3VyYXRpb25cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2RlbHMvYXRlLXRvb2xiYXIubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2RlbHMvYXRlLWltYWdlLm1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kZWxzL2F0ZS1idWJibGUtbWVudS5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZGVscy9hdGUtZWRpdG9yLWNvbmZpZy5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZGVscy9hdGUtc2xhc2gtY29tbWFuZC5tb2RlbFwiO1xuXG4vLyBEZWZhdWx0IGNvbmZpZ3VyYXRpb25zXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29uZmlnL2F0ZS1lZGl0b3IuY29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29uZmlnL2F0ZS1nbG9iYWwtY29uZmlnLnRva2VuXCI7XG5cbi8vIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBzbGFzaCBjb21tYW5kc1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbmZpZy9hdGUtc2xhc2gtY29tbWFuZHMuY29uZmlnXCI7XG5cbi8vIFRyYW5zbGF0aW9uc1xuZXhwb3J0IHR5cGUgeyBTdXBwb3J0ZWRMb2NhbGUgfSBmcm9tIFwiLi9saWIvc2VydmljZXMvYXRlLWkxOG4uc2VydmljZVwiO1xuXG4vLyBBbmd1bGFyIE5vZGVWaWV3IEludGVncmF0aW9uXG5leHBvcnQgeyBBdGVBbmd1bGFyTm9kZVZpZXcgfSBmcm9tIFwiLi9saWIvbm9kZS12aWV3L2F0ZS1hbmd1bGFyLW5vZGUtdmlld1wiO1xuZXhwb3J0IHsgQXRlTm9kZVZpZXdSZW5kZXJlciB9IGZyb20gXCIuL2xpYi9ub2RlLXZpZXcvYXRlLW5vZGUtdmlldy5yZW5kZXJlclwiO1xuZXhwb3J0IHsgY3JlYXRlQW5ndWxhckNvbXBvbmVudEV4dGVuc2lvbiB9IGZyb20gXCIuL2xpYi9ub2RlLXZpZXcvYXRlLW5vZGUtdmlldy5mYWN0b3J5XCI7XG5leHBvcnQgeyByZWdpc3RlckFuZ3VsYXJDb21wb25lbnQgfSBmcm9tIFwiLi9saWIvbm9kZS12aWV3L2F0ZS1yZWdpc3Rlci1hbmd1bGFyLWNvbXBvbmVudFwiO1xuXG4vLyBOb2RlIFZpZXcgVHlwZXMgLSBBdGVBbmd1bGFyTm9kZSBpcyB0aGUgcHJpbWFyeSBwdWJsaWMgdHlwZVxuZXhwb3J0IHR5cGUgeyBBdGVBbmd1bGFyTm9kZSB9IGZyb20gXCIuL2xpYi9tb2RlbHMvYXRlLWVkaXRvci1jb25maWcubW9kZWxcIjtcbi8vIEFkdmFuY2VkOiBMb3ctbGV2ZWwgb3B0aW9ucyBmb3IgZnVsbCBjb250cm9sIG92ZXIgbm9kZSByZWdpc3RyYXRpb25cbmV4cG9ydCB0eXBlIHtcbiAgUmVnaXN0ZXJBbmd1bGFyQ29tcG9uZW50T3B0aW9ucyxcbiAgQXRlQ29tcG9uZW50UmVuZGVyT3B0aW9ucyxcbn0gZnJvbSBcIi4vbGliL25vZGUtdmlldy9hdGUtbm9kZS12aWV3Lm1vZGVsc1wiO1xuIl19
|