raise-common-lib 0.0.192 → 0.0.194
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/bundles/raise-common-lib.umd.js +1357 -49
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/common-grid/index.component.js +2 -2
- package/esm2015/lib/form/drawer-form/drawer-form.component.js +112 -44
- package/esm2015/lib/form/richtexteditor/ai-config.js +70 -0
- package/esm2015/lib/form/richtexteditor/data-config.js +273 -0
- package/esm2015/lib/form/richtexteditor/index.component.js +601 -0
- package/esm2015/lib/form/richtexteditor/openapi.js +175 -0
- package/esm2015/lib/layout/page-tab/index.component.js +6 -2
- package/esm2015/lib/raise-common-lib.module.js +7 -2
- package/esm2015/raise-common-lib.js +5 -4
- package/esm5/lib/common-grid/index.component.js +2 -2
- package/esm5/lib/form/drawer-form/drawer-form.component.js +123 -45
- package/esm5/lib/form/richtexteditor/ai-config.js +73 -0
- package/esm5/lib/form/richtexteditor/data-config.js +273 -0
- package/esm5/lib/form/richtexteditor/index.component.js +681 -0
- package/esm5/lib/form/richtexteditor/openapi.js +208 -0
- package/esm5/lib/layout/page-tab/index.component.js +6 -2
- package/esm5/lib/raise-common-lib.module.js +7 -2
- package/esm5/raise-common-lib.js +5 -4
- package/fesm2015/raise-common-lib.js +1230 -48
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +1356 -49
- package/fesm5/raise-common-lib.js.map +1 -1
- package/lib/form/drawer-form/drawer-form.component.d.ts +10 -5
- package/lib/form/richtexteditor/ai-config.d.ts +10 -0
- package/lib/form/richtexteditor/data-config.d.ts +14 -0
- package/lib/form/richtexteditor/index.component.d.ts +78 -0
- package/lib/form/richtexteditor/openapi.d.ts +3 -0
- package/lib/layout/page-tab/index.component.d.ts +1 -0
- package/package.json +1 -1
- package/raise-common-lib.d.ts +4 -3
- package/raise-common-lib.metadata.json +1 -1
- package/src/assets/img/editor-copy.svg +5 -0
- package/src/assets/img/info.svg +5 -0
- package/src/assets/style/reset/grid.scss +2 -1
|
@@ -0,0 +1,681 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* Generated from: lib/form/richtexteditor/index.component.ts
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
+
*/
|
|
6
|
+
import * as tslib_1 from "tslib";
|
|
7
|
+
import { Component, Input, Output, ViewChild, ChangeDetectorRef, EventEmitter, } from "@angular/core";
|
|
8
|
+
import { DropDownListComponent, } from "@syncfusion/ej2-angular-dropdowns";
|
|
9
|
+
import { RichTextEditorComponent, } from "@syncfusion/ej2-angular-richtexteditor";
|
|
10
|
+
import { ButtonComponent, } from "@syncfusion/ej2-angular-buttons";
|
|
11
|
+
import { DropDownButton } from "@syncfusion/ej2-angular-splitbuttons";
|
|
12
|
+
import { DialogComponent } from "@syncfusion/ej2-angular-popups";
|
|
13
|
+
import { OpenAiModelRTE } from "./openapi";
|
|
14
|
+
import { lineHeight_items } from "./data-config";
|
|
15
|
+
import { fontFamily } from "./data-config";
|
|
16
|
+
var RichtexteditorComponent = /** @class */ (function () {
|
|
17
|
+
function RichtexteditorComponent(ref) {
|
|
18
|
+
this.ref = ref;
|
|
19
|
+
// @ViewChild("chipList", { static: false }) public chipList!: ChipListComponent;
|
|
20
|
+
this.placeholder = "";
|
|
21
|
+
this.value = "";
|
|
22
|
+
this.height = 150;
|
|
23
|
+
this.autoSaveOnIdle = true;
|
|
24
|
+
this.target = "#container"; // dialog 弹窗父级
|
|
25
|
+
// dialog 弹窗父级
|
|
26
|
+
this.toolbarClick = new EventEmitter();
|
|
27
|
+
this.change = new EventEmitter();
|
|
28
|
+
// @Output() change = new EventEmitter();
|
|
29
|
+
this.family = fontFamily;
|
|
30
|
+
this.dialogWidth = "800px";
|
|
31
|
+
this.dialogHeight = "642px";
|
|
32
|
+
this.showZoomBtn = true;
|
|
33
|
+
this.showMsg = false;
|
|
34
|
+
this.insertImageSettings = {
|
|
35
|
+
saveFormat: "Blob",
|
|
36
|
+
allowedTypes: [".svg", ".png"],
|
|
37
|
+
display: "none",
|
|
38
|
+
};
|
|
39
|
+
this.size = "";
|
|
40
|
+
this.dropValIndex = 0;
|
|
41
|
+
this.queryList = [
|
|
42
|
+
{ id: "Rephrase", text: "Rephrase" },
|
|
43
|
+
{ id: "Grammar", text: "Correct Grammar" },
|
|
44
|
+
{ id: "Summarize", text: "Summarize" },
|
|
45
|
+
{ id: "Elaborate", text: "Elaborate" },
|
|
46
|
+
{ id: "Translate", text: "Translate" },
|
|
47
|
+
{ id: "SentimentAnalysis", text: "Sentiment Analysis" },
|
|
48
|
+
];
|
|
49
|
+
this.rephraseTyleList = [
|
|
50
|
+
{ text: "Standard", id: "Standard" },
|
|
51
|
+
{ text: "Fluent", id: "Fluent" },
|
|
52
|
+
{ text: "Professional", id: "Professional" },
|
|
53
|
+
];
|
|
54
|
+
this.languageList = [
|
|
55
|
+
{ id: "EN", text: "English" },
|
|
56
|
+
{ id: "ZH", text: "Chinese (Simplified)" },
|
|
57
|
+
{ id: "ES", text: "Spanish" },
|
|
58
|
+
{ id: "ZHT", text: "Chinese (Traditional)" },
|
|
59
|
+
{ id: "HI", text: "Hindi" },
|
|
60
|
+
{ id: "AR", text: "Arabic" },
|
|
61
|
+
{ id: "BN", text: "Bengali" },
|
|
62
|
+
{ id: "PT", text: "Portuguese" },
|
|
63
|
+
{ id: "RU", text: "Russian" },
|
|
64
|
+
{ id: "JA", text: "Japanese" },
|
|
65
|
+
{ id: "DE", text: "German" },
|
|
66
|
+
{ id: "KO", text: "Korean" },
|
|
67
|
+
{ id: "FR", text: "French" },
|
|
68
|
+
{ id: "IT", text: "Italian" },
|
|
69
|
+
{ id: "TR", text: "Turkish" },
|
|
70
|
+
];
|
|
71
|
+
this.promptQuery = "";
|
|
72
|
+
this.isSentimentCheck = false;
|
|
73
|
+
this.subQuery = "";
|
|
74
|
+
this.chipValue = "Standard";
|
|
75
|
+
this.tools = {
|
|
76
|
+
enableFloating: false,
|
|
77
|
+
items: [
|
|
78
|
+
{
|
|
79
|
+
tooltipText: "AI Assist",
|
|
80
|
+
template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="ai_assistant_button_tbar" style="width:100%"><div class="e-rte-dropdown-btn-text">AI Assist</div></button>',
|
|
81
|
+
},
|
|
82
|
+
"Bold",
|
|
83
|
+
"Italic",
|
|
84
|
+
"Underline",
|
|
85
|
+
"StrikeThrough",
|
|
86
|
+
"FontName",
|
|
87
|
+
"FontSize",
|
|
88
|
+
"FontColor",
|
|
89
|
+
"BackgroundColor",
|
|
90
|
+
"LowerCase",
|
|
91
|
+
"UpperCase",
|
|
92
|
+
"|",
|
|
93
|
+
"CreateTable",
|
|
94
|
+
"Formats",
|
|
95
|
+
"Alignments",
|
|
96
|
+
{
|
|
97
|
+
tooltipText: "Line Height",
|
|
98
|
+
template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="lineheight_tbar" style="width:100%"></button>',
|
|
99
|
+
},
|
|
100
|
+
"OrderedList",
|
|
101
|
+
"UnorderedList",
|
|
102
|
+
"Outdent",
|
|
103
|
+
"Indent",
|
|
104
|
+
"|",
|
|
105
|
+
"CreateLink",
|
|
106
|
+
{
|
|
107
|
+
tooltipText: "",
|
|
108
|
+
template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="custom_tbar" style="width:100%">' +
|
|
109
|
+
'<div class="e-tbar-btn-text" style="font-weight: 500;"><img src="/assets/img/file-icon.svg" style="position: relative;top: -2px;"/><div class="uploadActions"><div id="uploadFromUser">Computer File</div><div id="relationDom">Ticket Attachment</div></div></div></button>',
|
|
110
|
+
},
|
|
111
|
+
"|",
|
|
112
|
+
"FormatPainter",
|
|
113
|
+
"ClearFormat",
|
|
114
|
+
"|",
|
|
115
|
+
"Undo",
|
|
116
|
+
"Redo",
|
|
117
|
+
],
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* @return {?}
|
|
122
|
+
*/
|
|
123
|
+
RichtexteditorComponent.prototype.ngOnInit = /**
|
|
124
|
+
* @return {?}
|
|
125
|
+
*/
|
|
126
|
+
function () { };
|
|
127
|
+
/**
|
|
128
|
+
* @param {?} args
|
|
129
|
+
* @return {?}
|
|
130
|
+
*/
|
|
131
|
+
RichtexteditorComponent.prototype.onContentChange = /**
|
|
132
|
+
* @param {?} args
|
|
133
|
+
* @return {?}
|
|
134
|
+
*/
|
|
135
|
+
function (args) {
|
|
136
|
+
/** @type {?} */
|
|
137
|
+
var tables = document.querySelectorAll("table.e-rte-table");
|
|
138
|
+
tables.forEach((/**
|
|
139
|
+
* @param {?} table
|
|
140
|
+
* @return {?}
|
|
141
|
+
*/
|
|
142
|
+
function (table) {
|
|
143
|
+
/** @type {?} */
|
|
144
|
+
var htmlTable = (/** @type {?} */ (table));
|
|
145
|
+
htmlTable.style.marginBottom = "10px";
|
|
146
|
+
htmlTable.style.borderCollapse = "collapse";
|
|
147
|
+
htmlTable.style.emptyCells = "show";
|
|
148
|
+
/** @type {?} */
|
|
149
|
+
var tdElements = table.querySelectorAll("td");
|
|
150
|
+
tdElements.forEach((/**
|
|
151
|
+
* @param {?} td
|
|
152
|
+
* @return {?}
|
|
153
|
+
*/
|
|
154
|
+
function (td) {
|
|
155
|
+
td.style.border = "1px solid #adb5bd";
|
|
156
|
+
td.style.height = "20px";
|
|
157
|
+
td.style.minWidth = "20px";
|
|
158
|
+
td.style.padding = "2px 5px";
|
|
159
|
+
td.style.boxSizing = "border-box";
|
|
160
|
+
}));
|
|
161
|
+
}));
|
|
162
|
+
this.change.emit(args);
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* @return {?}
|
|
166
|
+
*/
|
|
167
|
+
RichtexteditorComponent.prototype.onCreate = /**
|
|
168
|
+
* @return {?}
|
|
169
|
+
*/
|
|
170
|
+
function () {
|
|
171
|
+
var _this = this;
|
|
172
|
+
//bind the a click event
|
|
173
|
+
// let editorContent = this.rteObj.contentModule.getEditPanel() as HTMLElement;
|
|
174
|
+
// editorContent.addEventListener('click', this.OnClicked.bind(this));
|
|
175
|
+
//add the line height
|
|
176
|
+
this.editorManager = this.rteObj.formatter.editorManager;
|
|
177
|
+
/** @type {?} */
|
|
178
|
+
var splitButton = new DropDownButton({
|
|
179
|
+
items: lineHeight_items,
|
|
180
|
+
iconCss: "e-icons e-line-spacing",
|
|
181
|
+
select: this.onSelect.bind(this),
|
|
182
|
+
});
|
|
183
|
+
splitButton.appendTo("#lineheight_tbar");
|
|
184
|
+
// ai assist
|
|
185
|
+
/** @type {?} */
|
|
186
|
+
var aiassistantButton = new DropDownButton({
|
|
187
|
+
items: this.queryList,
|
|
188
|
+
// iconCss: "e-btn-icon e-icons e-assistview-icon e-icon-left",
|
|
189
|
+
select: (/**
|
|
190
|
+
* @param {?} args
|
|
191
|
+
* @return {?}
|
|
192
|
+
*/
|
|
193
|
+
function (args) { return _this.aiQuerySelectedMenu(args); }),
|
|
194
|
+
});
|
|
195
|
+
aiassistantButton.appendTo("#ai_assistant_button_tbar");
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* @private
|
|
199
|
+
* @param {?} args
|
|
200
|
+
* @return {?}
|
|
201
|
+
*/
|
|
202
|
+
RichtexteditorComponent.prototype.onSelect = /**
|
|
203
|
+
* @private
|
|
204
|
+
* @param {?} args
|
|
205
|
+
* @return {?}
|
|
206
|
+
*/
|
|
207
|
+
function (args) {
|
|
208
|
+
if (this.rteObj.formatter.getUndoRedoStack().length === 0) {
|
|
209
|
+
this.rteObj.formatter.saveData();
|
|
210
|
+
}
|
|
211
|
+
/** @type {?} */
|
|
212
|
+
var nodes = this.editorManager.domNode.blockNodes();
|
|
213
|
+
for (var i = 0; nodes.length > i; i++) {
|
|
214
|
+
((/** @type {?} */ (nodes[i]))).style.lineHeight = args.item.text;
|
|
215
|
+
}
|
|
216
|
+
this.rteObj.formatter.saveData();
|
|
217
|
+
this.rteObj.formatter.enableUndo(this.rteObj);
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* @private
|
|
221
|
+
* @param {?} args
|
|
222
|
+
* @return {?}
|
|
223
|
+
*/
|
|
224
|
+
RichtexteditorComponent.prototype.aiQuerySelectedMenu = /**
|
|
225
|
+
* @private
|
|
226
|
+
* @param {?} args
|
|
227
|
+
* @return {?}
|
|
228
|
+
*/
|
|
229
|
+
function (args) {
|
|
230
|
+
this.dialogueOpen(args.item.text);
|
|
231
|
+
};
|
|
232
|
+
/**
|
|
233
|
+
* @param {?} selectedQuery
|
|
234
|
+
* @return {?}
|
|
235
|
+
*/
|
|
236
|
+
RichtexteditorComponent.prototype.dialogueOpen = /**
|
|
237
|
+
* @param {?} selectedQuery
|
|
238
|
+
* @return {?}
|
|
239
|
+
*/
|
|
240
|
+
function (selectedQuery) {
|
|
241
|
+
var _this = this;
|
|
242
|
+
/** @type {?} */
|
|
243
|
+
var selectionText = this.rteObj.getSelectedHtml();
|
|
244
|
+
this.selectedQuery = selectedQuery;
|
|
245
|
+
if (selectionText) {
|
|
246
|
+
/** @type {?} */
|
|
247
|
+
var range = ((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.getRange(((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
|
|
248
|
+
((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.save(range, ((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
|
|
249
|
+
this.dropValIndex = this.queryList.findIndex((/**
|
|
250
|
+
* @param {?} q
|
|
251
|
+
* @return {?}
|
|
252
|
+
*/
|
|
253
|
+
function (q) { return q.text.toLowerCase() === selectedQuery.toLowerCase(); }));
|
|
254
|
+
this.queryCategory.index = this.dropValIndex;
|
|
255
|
+
this.leftRte.value = this.promptQuery = selectionText;
|
|
256
|
+
this.leftRte.refreshUI();
|
|
257
|
+
this.AIdialog.show();
|
|
258
|
+
this.updateAISugesstionsData(selectedQuery);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
this.showMsg = true;
|
|
262
|
+
setTimeout((/**
|
|
263
|
+
* @return {?}
|
|
264
|
+
*/
|
|
265
|
+
function () {
|
|
266
|
+
_this.showMsg = false;
|
|
267
|
+
}), 3000);
|
|
268
|
+
console.log("Please select the content to perform the AI operation.");
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
/**
|
|
272
|
+
* @param {?} selectedQuery
|
|
273
|
+
* @return {?}
|
|
274
|
+
*/
|
|
275
|
+
RichtexteditorComponent.prototype.updateAISugesstionsData = /**
|
|
276
|
+
* @param {?} selectedQuery
|
|
277
|
+
* @return {?}
|
|
278
|
+
*/
|
|
279
|
+
function (selectedQuery) {
|
|
280
|
+
this.isSentimentCheck = false;
|
|
281
|
+
switch (selectedQuery) {
|
|
282
|
+
case "Summarize":
|
|
283
|
+
this.subQuery = "Summarize the upcoming sentence shortly.";
|
|
284
|
+
break;
|
|
285
|
+
case "Elaborate":
|
|
286
|
+
this.subQuery = "Elaborate on the upcoming sentence.";
|
|
287
|
+
break;
|
|
288
|
+
case "Rephrase":
|
|
289
|
+
this.subQuery = this.chipValue + " rephrase the upcoming sentence.";
|
|
290
|
+
break;
|
|
291
|
+
case "Correct Grammar":
|
|
292
|
+
this.subQuery = "Correct the grammar of the upcoming sentence.";
|
|
293
|
+
break;
|
|
294
|
+
case "Translate":
|
|
295
|
+
this.subQuery =
|
|
296
|
+
"Translate the upcoming sentence to " + this.translatelanguage + ".";
|
|
297
|
+
break;
|
|
298
|
+
case "Sentiment Analysis":
|
|
299
|
+
this.isSentimentCheck = true;
|
|
300
|
+
this.subQuery =
|
|
301
|
+
'Analyze the sentiment and grammar of the following paragraphs and provide the expression score with an emoji followed by the sentiment in the format: "😊 Neutral". \n\nNOTE: Avoid any additional text or explanation:';
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
this.updateAISugesstions();
|
|
305
|
+
};
|
|
306
|
+
/**
|
|
307
|
+
* @return {?}
|
|
308
|
+
*/
|
|
309
|
+
RichtexteditorComponent.prototype.updateAISugesstions = /**
|
|
310
|
+
* @return {?}
|
|
311
|
+
*/
|
|
312
|
+
function () {
|
|
313
|
+
var _this = this;
|
|
314
|
+
try {
|
|
315
|
+
if (this.promptQuery) {
|
|
316
|
+
((/** @type {?} */ (document.getElementById("skeletonId")))).style.display =
|
|
317
|
+
"";
|
|
318
|
+
((/** @type {?} */ (document.getElementById("rightRte")))).style.display =
|
|
319
|
+
"none";
|
|
320
|
+
this.sentimentButton.element.style.display = "none";
|
|
321
|
+
this.regenerateButton.disabled = true;
|
|
322
|
+
this.copyButton.disabled = true;
|
|
323
|
+
this.replaceButton.disabled = true;
|
|
324
|
+
this.apiResultData = this.getResponseFromOpenAI(this.subQuery, this.promptQuery);
|
|
325
|
+
this.apiResultData.then((/**
|
|
326
|
+
* @param {?} result
|
|
327
|
+
* @return {?}
|
|
328
|
+
*/
|
|
329
|
+
function (result) {
|
|
330
|
+
_this.AIResult = _this.isSentimentCheck ? _this.promptQuery : result;
|
|
331
|
+
_this.sentimentButton.content = result
|
|
332
|
+
.toLowerCase()
|
|
333
|
+
.includes("positive")
|
|
334
|
+
? "😊 Positive"
|
|
335
|
+
: result.toLowerCase().includes("negative")
|
|
336
|
+
? "😞 Negative"
|
|
337
|
+
: "😐 Neutral";
|
|
338
|
+
_this.sentimentButton.element.style.display = !_this.isSentimentCheck
|
|
339
|
+
? "none"
|
|
340
|
+
: "";
|
|
341
|
+
_this.rightRte.value = _this.AIResult;
|
|
342
|
+
/** @type {?} */
|
|
343
|
+
var noResultsFound = !(_this.AIResult || _this.promptQuery);
|
|
344
|
+
((/** @type {?} */ (document.getElementById("no-results-found")))).style.display = noResultsFound ? "" : "none";
|
|
345
|
+
_this.regenerateButton.disabled = noResultsFound;
|
|
346
|
+
_this.copyButton.disabled = noResultsFound;
|
|
347
|
+
_this.replaceButton.disabled = noResultsFound;
|
|
348
|
+
((/** @type {?} */ (document.getElementById("skeletonId")))).style.display =
|
|
349
|
+
"none";
|
|
350
|
+
((/** @type {?} */ (document.getElementById("rightRte")))).style.display =
|
|
351
|
+
noResultsFound ? "none" : "";
|
|
352
|
+
console.log(noResultsFound, ((/** @type {?} */ (document.getElementById("rightRte")))).style);
|
|
353
|
+
// this.ref.markForCheck();
|
|
354
|
+
}));
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
catch (_a) {
|
|
358
|
+
// this.toastObj.show();
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
/**
|
|
362
|
+
* @param {?} subQuery
|
|
363
|
+
* @param {?} promptQuery
|
|
364
|
+
* @return {?}
|
|
365
|
+
*/
|
|
366
|
+
RichtexteditorComponent.prototype.getResponseFromOpenAI = /**
|
|
367
|
+
* @param {?} subQuery
|
|
368
|
+
* @param {?} promptQuery
|
|
369
|
+
* @return {?}
|
|
370
|
+
*/
|
|
371
|
+
function (subQuery, promptQuery) {
|
|
372
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
373
|
+
var content;
|
|
374
|
+
return tslib_1.__generator(this, function (_a) {
|
|
375
|
+
switch (_a.label) {
|
|
376
|
+
case 0: return [4 /*yield*/, OpenAiModelRTE(subQuery, promptQuery)];
|
|
377
|
+
case 1:
|
|
378
|
+
content = _a.sent();
|
|
379
|
+
return [2 /*return*/, content ? ((/** @type {?} */ (content))) : ""];
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
});
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* @return {?}
|
|
386
|
+
*/
|
|
387
|
+
RichtexteditorComponent.prototype.dialogShow = /**
|
|
388
|
+
* @return {?}
|
|
389
|
+
*/
|
|
390
|
+
function () {
|
|
391
|
+
var _this = this;
|
|
392
|
+
(/** @type {?} */ (this.regenerateButton)).element.addEventListener("click", (/**
|
|
393
|
+
* @return {?}
|
|
394
|
+
*/
|
|
395
|
+
function () {
|
|
396
|
+
_this.updateAISugesstions();
|
|
397
|
+
}));
|
|
398
|
+
(/** @type {?} */ (this.copyButton)).element.addEventListener("click", (/**
|
|
399
|
+
* @return {?}
|
|
400
|
+
*/
|
|
401
|
+
function () {
|
|
402
|
+
_this.copyTextToClipboard(_this.AIResult);
|
|
403
|
+
}));
|
|
404
|
+
(/** @type {?} */ (this.replaceButton)).element.addEventListener("click", (/**
|
|
405
|
+
* @return {?}
|
|
406
|
+
*/
|
|
407
|
+
function () {
|
|
408
|
+
/** @type {?} */
|
|
409
|
+
var range = ((/** @type {?} */ (_this.rteObj))).formatter.editorManager.nodeSelection.getRange(((/** @type {?} */ (_this.rteObj))).contentModule.getDocument());
|
|
410
|
+
((/** @type {?} */ (_this.rteObj))).formatter.editorManager.nodeSelection.restore(range);
|
|
411
|
+
((/** @type {?} */ (_this.rteObj))).executeCommand("insertHTML", _this.AIResult, {
|
|
412
|
+
undo: true,
|
|
413
|
+
});
|
|
414
|
+
_this.closeDialog();
|
|
415
|
+
}));
|
|
416
|
+
((/** @type {?} */ (this.AIdialog))).element.style.display = "";
|
|
417
|
+
};
|
|
418
|
+
/**
|
|
419
|
+
* @return {?}
|
|
420
|
+
*/
|
|
421
|
+
RichtexteditorComponent.prototype.closeDialog = /**
|
|
422
|
+
* @return {?}
|
|
423
|
+
*/
|
|
424
|
+
function () {
|
|
425
|
+
this.AIdialog.hide();
|
|
426
|
+
this.rightRte.value = "";
|
|
427
|
+
this.leftRte.value = "";
|
|
428
|
+
this.promptQuery = "";
|
|
429
|
+
this.chipValue = "Standard";
|
|
430
|
+
this.AIResult = "";
|
|
431
|
+
this.dropValIndex = 0;
|
|
432
|
+
this.selectedQuery = "Rephrase";
|
|
433
|
+
this.sentimentButton.content = "😊 Neutral";
|
|
434
|
+
};
|
|
435
|
+
/**
|
|
436
|
+
* @param {?} text
|
|
437
|
+
* @return {?}
|
|
438
|
+
*/
|
|
439
|
+
RichtexteditorComponent.prototype.copyTextToClipboard = /**
|
|
440
|
+
* @param {?} text
|
|
441
|
+
* @return {?}
|
|
442
|
+
*/
|
|
443
|
+
function (text) {
|
|
444
|
+
if (navigator.clipboard) {
|
|
445
|
+
navigator.clipboard
|
|
446
|
+
.writeText(text)
|
|
447
|
+
.then((/**
|
|
448
|
+
* @return {?}
|
|
449
|
+
*/
|
|
450
|
+
function () {
|
|
451
|
+
console.log("Text copied to clipboard successfully!");
|
|
452
|
+
}))
|
|
453
|
+
.catch((/**
|
|
454
|
+
* @param {?} err
|
|
455
|
+
* @return {?}
|
|
456
|
+
*/
|
|
457
|
+
function (err) {
|
|
458
|
+
console.error("Failed to copy text: ", err);
|
|
459
|
+
}));
|
|
460
|
+
}
|
|
461
|
+
else {
|
|
462
|
+
// Fallback for browsers that do not support the Clipboard API
|
|
463
|
+
/** @type {?} */
|
|
464
|
+
var textarea = document.createElement("textarea");
|
|
465
|
+
textarea.value = text;
|
|
466
|
+
document.body.appendChild(textarea);
|
|
467
|
+
textarea.select();
|
|
468
|
+
try {
|
|
469
|
+
document.execCommand("copy");
|
|
470
|
+
console.log("Text copied to clipboard using execCommand");
|
|
471
|
+
}
|
|
472
|
+
catch (err) {
|
|
473
|
+
console.error("Failed to copy text: ", err);
|
|
474
|
+
}
|
|
475
|
+
finally {
|
|
476
|
+
document.body.removeChild(textarea);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
};
|
|
480
|
+
/**
|
|
481
|
+
* @return {?}
|
|
482
|
+
*/
|
|
483
|
+
RichtexteditorComponent.prototype.onOverlayClick = /**
|
|
484
|
+
* @return {?}
|
|
485
|
+
*/
|
|
486
|
+
function () {
|
|
487
|
+
/** @type {?} */
|
|
488
|
+
var activeEle = this.AIdialog.element.querySelector(".char_block.e-active");
|
|
489
|
+
if (activeEle) {
|
|
490
|
+
activeEle.classList.remove("e-active");
|
|
491
|
+
}
|
|
492
|
+
this.closeDialog();
|
|
493
|
+
};
|
|
494
|
+
/**
|
|
495
|
+
* @param {?} args
|
|
496
|
+
* @return {?}
|
|
497
|
+
*/
|
|
498
|
+
RichtexteditorComponent.prototype.onQuerySelect = /**
|
|
499
|
+
* @param {?} args
|
|
500
|
+
* @return {?}
|
|
501
|
+
*/
|
|
502
|
+
function (args) {
|
|
503
|
+
// this.chipList.selectedChips = 0;
|
|
504
|
+
this.translatelanguage = "EN";
|
|
505
|
+
this.selectedQuery = args.itemData.text;
|
|
506
|
+
this.updateAISugesstionsData(args.itemData.text);
|
|
507
|
+
};
|
|
508
|
+
/**
|
|
509
|
+
* @param {?} args
|
|
510
|
+
* @return {?}
|
|
511
|
+
*/
|
|
512
|
+
RichtexteditorComponent.prototype.onLanguageSelect = /**
|
|
513
|
+
* @param {?} args
|
|
514
|
+
* @return {?}
|
|
515
|
+
*/
|
|
516
|
+
function (args) {
|
|
517
|
+
this.translatelanguage = args.itemData.id;
|
|
518
|
+
this.updateAISugesstionsData("Translate");
|
|
519
|
+
};
|
|
520
|
+
/**
|
|
521
|
+
* @param {?} args
|
|
522
|
+
* @return {?}
|
|
523
|
+
*/
|
|
524
|
+
RichtexteditorComponent.prototype.onChipClick = /**
|
|
525
|
+
* @param {?} args
|
|
526
|
+
* @return {?}
|
|
527
|
+
*/
|
|
528
|
+
function (args) {
|
|
529
|
+
this.chipValue = args.itemData.text;
|
|
530
|
+
// 事件会触发两次 必须判断args.text是否有值
|
|
531
|
+
if (args.itemData.text)
|
|
532
|
+
this.updateAISugesstionsData("Rephrase");
|
|
533
|
+
};
|
|
534
|
+
/**
|
|
535
|
+
* @param {?} args
|
|
536
|
+
* @return {?}
|
|
537
|
+
*/
|
|
538
|
+
RichtexteditorComponent.prototype._toolbarClick = /**
|
|
539
|
+
* @param {?} args
|
|
540
|
+
* @return {?}
|
|
541
|
+
*/
|
|
542
|
+
function (args) {
|
|
543
|
+
this.toolbarClick.emit(args);
|
|
544
|
+
};
|
|
545
|
+
/**
|
|
546
|
+
* @return {?}
|
|
547
|
+
*/
|
|
548
|
+
RichtexteditorComponent.prototype.hideToast = /**
|
|
549
|
+
* @return {?}
|
|
550
|
+
*/
|
|
551
|
+
function () {
|
|
552
|
+
this.showMsg = false;
|
|
553
|
+
};
|
|
554
|
+
/**
|
|
555
|
+
* @return {?}
|
|
556
|
+
*/
|
|
557
|
+
RichtexteditorComponent.prototype.onZoom = /**
|
|
558
|
+
* @return {?}
|
|
559
|
+
*/
|
|
560
|
+
function () {
|
|
561
|
+
if (this.size === "largest") {
|
|
562
|
+
this.size = ""; // 恢复到原始大小
|
|
563
|
+
}
|
|
564
|
+
else {
|
|
565
|
+
this.size = "largest"; // 设置为最大化
|
|
566
|
+
}
|
|
567
|
+
};
|
|
568
|
+
RichtexteditorComponent.decorators = [
|
|
569
|
+
{ type: Component, args: [{
|
|
570
|
+
selector: "rs-richtext-editor",
|
|
571
|
+
template: "<div class=\"editor_box\" id=\"container\">\r\n <ejs-richtexteditor\r\n #editor\r\n id=\"editor\"\r\n [height]=\"height\"\r\n [saveInterval]=\"0\"\r\n [autoSaveOnIdle]=\"autoSaveOnIdle\"\r\n [toolbarSettings]=\"tools\"\r\n [fontFamily]=\"family\"\r\n [insertImageSettings]=\"insertImageSettings\"\r\n [(value)]=\"value\"\r\n (change)=\"onContentChange($event)\"\r\n (created)=\"onCreate()\"\r\n (toolbarClick)=\"_toolbarClick($event)\"\r\n >\r\n </ejs-richtexteditor>\r\n <ejs-dialog\r\n #AIdialog\r\n id=\"AIdialog\"\r\n [ngClass]=\"size\"\r\n [visible]=\"false\"\r\n [target]=\"target\"\r\n [isModal]=\"true\"\r\n [height]=\"dialogHeight\"\r\n [width]=\"dialogWidth\"\r\n maxHeight=\"80%\"\r\n cssClass=\"e-rte-elements custom-dialog-rte\"\r\n zIndex=\"1000\"\r\n (close)=\"closeDialog()\"\r\n (overlayClick)=\"onOverlayClick()\"\r\n (open)=\"dialogShow()\"\r\n >\r\n <ng-template #header>\r\n <div class=\"header-title\">AI Assist</div>\r\n <div class=\"header-buttons\">\r\n <div *ngIf=\"showZoomBtn\" class=\"header-zoom\" (click)=\"onZoom()\">\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size === 'largest'\"\r\n src=\"../../../assets/img/dialog-shrink.svg\"\r\n />\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size !== 'largest'\"\r\n src=\"../../../assets/img/dialog-grow.svg\"\r\n />\r\n </div>\r\n <div class=\"header-btn\" (click)=\"closeDialog()\">\r\n <img class=\"header-icon\" src=\"../../../assets/img/dialog-close.svg\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #footerTemplate>\r\n <div id=\"dialog-footer-content\">\r\n <div class=\"custom-row-0\">\r\n <div\r\n class=\"cuscol-0\"\r\n style=\"width: 100%; align-items: center; justify-content: left\"\r\n ></div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n \"\r\n >\r\n <div style=\"text-align: right; width: 100%\">\r\n <button\r\n ejs-button\r\n #sentimentButton\r\n content=\"\uD83D\uDE0A Neutral\"\r\n disabled=\"false\"\r\n cssClass=\"sentiment\"\r\n ></button>\r\n <button\r\n ejs-button\r\n #copyButton\r\n content=\"Copy\"\r\n disabled=\"false\"\r\n class=\"copy-btn\"\r\n ></button>\r\n <button\r\n ejs-button\r\n #replaceButton\r\n content=\"Replace\"\r\n isPrimary=\"true\"\r\n disabled=\"false\"\r\n ></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #content>\r\n <div class=\"dialog-content\" style=\"height: 100%\">\r\n <div class=\"custom-row-0\">\r\n <div class=\"cuscol-0\" style=\"width: 100%\">\r\n <ejs-dropdownlist\r\n #queryCategory\r\n style=\"width: 200px\"\r\n id=\"queryCategory\"\r\n [dataSource]=\"queryList\"\r\n index=\"0\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onQuerySelect($event)\"\r\n >\r\n Rephrase\r\n </ejs-dropdownlist>\r\n <ejs-dropdownlist\r\n *ngIf=\"selectedQuery == 'Rephrase'\"\r\n id=\"chips-container\"\r\n #chipList\r\n style=\"width: 160px\"\r\n [(ngModel)]=\"chipValue\"\r\n [dataSource]=\"rephraseTyleList\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onChipClick($event)\"\r\n >\r\n </ejs-dropdownlist>\r\n <ejs-dropdownlist\r\n *ngIf=\"selectedQuery == 'Translate'\"\r\n #languageCategory\r\n index=\"0\"\r\n id=\"language-Category\"\r\n [dataSource]=\"languageList\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onLanguageSelect($event)\"\r\n >\r\n </ejs-dropdownlist>\r\n </div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n justify-content: space-between;\r\n align-items: center;\r\n width: 100%;\r\n \"\r\n >\r\n <!-- <ejs-chiplist\r\n id=\"chips-container\"\r\n #chipList\r\n [chips]=\"['Standard', 'Fluent', 'Professional']\"\r\n selection=\"Single\"\r\n cssClass=\"e-outline\"\r\n [selectedChips]=\"[0]\"\r\n (click)=\"onChipClick($event)\"\r\n >\r\n </ejs-chiplist> -->\r\n <button\r\n ejs-button\r\n #regenerateButton\r\n content=\"Regenerate\"\r\n isPrimary=\"true\"\r\n disabled=\"false\"\r\n ></button>\r\n </div>\r\n </div>\r\n <div class=\"custom-row-1\" style=\"height: calc(100% - 40px)\">\r\n <div\r\n class=\"cuscol-0\"\r\n style=\"\r\n width: 100%;\r\n height: 100%;\r\n align-items: center;\r\n justify-content: left;\r\n \"\r\n >\r\n <div style=\"text-align: left; height: 100%\">\r\n <ejs-richtexteditor\r\n #leftRte\r\n id=\"leftRte\"\r\n height=\"100%\"\r\n [toolbarSettings]=\"{ enable: false }\"\r\n placeholder=\"Analysis of AI Support\"\r\n cssClass=\"e-outline\"\r\n >\r\n </ejs-richtexteditor>\r\n </div>\r\n </div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n height: 100%;\r\n \"\r\n >\r\n <div style=\"text-align: left; width: 100%; height: 100%\">\r\n <ejs-richtexteditor\r\n #rightRte\r\n id=\"rightRte\"\r\n height=\"100%\"\r\n [toolbarSettings]=\"{ enable: false }\"\r\n placeholder=\"Analysis of AI Support\"\r\n cssClass=\"e-outline\"\r\n >\r\n <!-- style=\"display: none\" -->\r\n </ejs-richtexteditor>\r\n <div\r\n class=\"no-results-found\"\r\n id=\"no-results-found\"\r\n style=\"display: none; height: 244px; align-content: center\"\r\n >\r\n <img\r\n height=\"50\"\r\n width=\"50\"\r\n src=\"https://storage.googleapis.com/cdn-bolddesk/agent-angular-app/images/light/no-records-warning.svg\"\r\n />\r\n <div>No results found</div>\r\n </div>\r\n <div id=\"skeletonId\" style=\"display: none\">\r\n <ejs-skeleton\r\n #skeletonId1\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"100%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId2\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"90%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId3\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"70%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId4\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"50%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId5\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"30%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId6\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"10%\"\r\n ></ejs-skeleton\r\n ><br />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ejs-dialog>\r\n <div class=\"toast\" *ngIf=\"showMsg\">\r\n <span class=\"toast_text\">First, Select some text</span\r\n ><span class=\"close_icon\" (click)=\"hideToast()\"></span>\r\n </div>\r\n</div>\r\n",
|
|
572
|
+
styles: [".editor_box{position:relative;width:100%;height:100%}.editor_box .toast{position:absolute;left:35%;top:110px;z-index:1;width:400px;border-radius:4px;border:1px solid #e8f2ff;background:#f4f8ff;padding:4px 12px;color:#1f3f5c;font-size:12px;font-style:normal;font-weight:400;height:32px;font-family:Arial;display:flex;align-items:center;justify-content:space-between}.editor_box .toast .toast_text::before{content:url(../../../assets/img/info.svg);display:inline-block;width:16px;height:16px;vertical-align:bottom;margin-right:8px}.editor_box .toast .close_icon{background-image:url(../../../assets/img/notification-close.svg);cursor:pointer;display:inline-block;width:16px;height:16px}.custom-dialog-rte{padding:0 20px;border-radius:10px}.custom-row-0,.custom-row-1,.custom-row-2{display:flex;align-items:center;padding:12px 24px}.e-rte-dropdown-btn-text{padding-left:4px}.no-results-found{text-align:center}.no-results-found img{display:block;margin:0 auto}.e-custom{margin-right:.5rem;border-radius:25px!important}.custom-dialog-rte .skeleton-rectangle{border-radius:4px}@media (max-width:767px){.cuscol-0,.cuscol-1,.cuscol-2{justify-content:center!important}.custom-row-0,.custom-row-1,.custom-row-2{flex-direction:column!important}.cuscol-1{border-right:none!important}.cuscol-0{width:100%;align-items:center}::ng-deep:host .e-dialog{max-height:80%!important}.custom-dialog-rte .e-dialog .e-dlg-content{overflow-y:auto!important}.custom-dialog-rte .e-dialog .e-dlg-content .e-richtexteditor{height:100px!important}.cuscol-noresult{padding-bottom:20px!important}.e-chip-list{padding:5px!important}.cuscol{padding-right:.2rem!important;width:auto!important}.custom-row-1{height:auto!important}}.cuscol-1{display:flex;flex-direction:row!important}.cuscol-2{display:flex;flex-direction:column!important}.sentiment{color:#000!important}.custom-dialog-rte .e-dialog .e-dlg-content{padding:0!important;overflow-y:hidden}.custom-dialog-rte .e-dialog .e-dlg-header-content{padding:20px 0!important;border:0!important}.custom-dialog-rte .e-dialog .e-dlg-header-content .e-dlg-header{display:flex;align-items:center;line-height:18px;justify-content:space-between}.custom-dialog-rte .e-dialog .e-dlg-header-content .e-dlg-header .header-title{font-family:Arial;font-size:15px;font-weight:700;font-style:normal}.custom-dialog-rte .e-dialog .e-dlg-header-content .header-buttons{display:flex}.custom-dialog-rte .e-dialog .e-dlg-header-content .header-buttons img{width:16px;height:16px;cursor:pointer;padding:2px;margin-left:12px}.custom-dialog-rte .e-dialog .e-footer-content{padding:0!important}.custom-dialog-rte .e-dialog .e-dlg-content .e-richtexteditor.e-rte-tb-expand .e-rte-content,.e-richtexteditor.e-rte-tb-expand .e-source-content{border:0;border-bottom:1px solid #dee2e6;border-top:0 solid #dee2e6!important}.custom-dialog-rte .dialog-content .custom-row-0{border-top:0 solid #ddd!important;padding:0;margin-bottom:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-0{justify-content:left;border-right:none!important;padding:0;display:flex;gap:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-1{padding:0;margin-left:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-1 .e-primary{color:#44566c;border-radius:4px;border:1px solid #dbe1e7;background:#fff;width:87px;margin:0;padding:2px 12px;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;height:28px}.custom-dialog-rte .dialog-content .custom-row-1{padding:0;height:calc(100% - 40px);gap:12px}.custom-dialog-rte .e-footer-content{border:0}.custom-dialog-rte .e-footer-content .custom-row-0{padding:20px 0}.custom-dialog-rte .e-footer-content .e-control.e-btn{font-family:Arial;font-size:12px;line-height:14px;padding:2px 12px;height:28px;background:#fff;color:#44566c}.custom-dialog-rte .e-footer-content .e-control.e-btn.copy-btn{border-color:#dbe1e7}.custom-dialog-rte .e-footer-content .e-control.e-btn.copy-btn::before{content:url(../../../assets/img/editor-copy.svg);vertical-align:middle;margin-right:6px}.custom-dialog-rte .e-footer-content .e-control.e-btn.e-primary{color:#fff;background:#1364b3}.editor_box .e-dialog.largest{width:96vw!important;height:88vh!important;max-height:88vh;max-width:2100px}"]
|
|
573
|
+
}] }
|
|
574
|
+
];
|
|
575
|
+
/** @nocollapse */
|
|
576
|
+
RichtexteditorComponent.ctorParameters = function () { return [
|
|
577
|
+
{ type: ChangeDetectorRef }
|
|
578
|
+
]; };
|
|
579
|
+
RichtexteditorComponent.propDecorators = {
|
|
580
|
+
rteObj: [{ type: ViewChild, args: ["editor", { static: false },] }],
|
|
581
|
+
queryCategory: [{ type: ViewChild, args: ["queryCategory", { static: false },] }],
|
|
582
|
+
leftRte: [{ type: ViewChild, args: ["leftRte", { static: false },] }],
|
|
583
|
+
rightRte: [{ type: ViewChild, args: ["rightRte", { static: false },] }],
|
|
584
|
+
AIdialog: [{ type: ViewChild, args: ["AIdialog", { static: true },] }],
|
|
585
|
+
sentimentButton: [{ type: ViewChild, args: ["sentimentButton", { static: false },] }],
|
|
586
|
+
regenerateButton: [{ type: ViewChild, args: ["regenerateButton", { static: false },] }],
|
|
587
|
+
copyButton: [{ type: ViewChild, args: ["copyButton", { static: false },] }],
|
|
588
|
+
replaceButton: [{ type: ViewChild, args: ["replaceButton", { static: false },] }],
|
|
589
|
+
placeholder: [{ type: Input }],
|
|
590
|
+
value: [{ type: Input }],
|
|
591
|
+
height: [{ type: Input }],
|
|
592
|
+
autoSaveOnIdle: [{ type: Input }],
|
|
593
|
+
target: [{ type: Input }],
|
|
594
|
+
toolbarClick: [{ type: Output }],
|
|
595
|
+
change: [{ type: Output }]
|
|
596
|
+
};
|
|
597
|
+
return RichtexteditorComponent;
|
|
598
|
+
}());
|
|
599
|
+
export { RichtexteditorComponent };
|
|
600
|
+
if (false) {
|
|
601
|
+
/** @type {?} */
|
|
602
|
+
RichtexteditorComponent.prototype.rteObj;
|
|
603
|
+
/** @type {?} */
|
|
604
|
+
RichtexteditorComponent.prototype.queryCategory;
|
|
605
|
+
/** @type {?} */
|
|
606
|
+
RichtexteditorComponent.prototype.leftRte;
|
|
607
|
+
/** @type {?} */
|
|
608
|
+
RichtexteditorComponent.prototype.rightRte;
|
|
609
|
+
/** @type {?} */
|
|
610
|
+
RichtexteditorComponent.prototype.AIdialog;
|
|
611
|
+
/** @type {?} */
|
|
612
|
+
RichtexteditorComponent.prototype.sentimentButton;
|
|
613
|
+
/** @type {?} */
|
|
614
|
+
RichtexteditorComponent.prototype.regenerateButton;
|
|
615
|
+
/** @type {?} */
|
|
616
|
+
RichtexteditorComponent.prototype.copyButton;
|
|
617
|
+
/** @type {?} */
|
|
618
|
+
RichtexteditorComponent.prototype.replaceButton;
|
|
619
|
+
/** @type {?} */
|
|
620
|
+
RichtexteditorComponent.prototype.placeholder;
|
|
621
|
+
/** @type {?} */
|
|
622
|
+
RichtexteditorComponent.prototype.value;
|
|
623
|
+
/** @type {?} */
|
|
624
|
+
RichtexteditorComponent.prototype.height;
|
|
625
|
+
/** @type {?} */
|
|
626
|
+
RichtexteditorComponent.prototype.autoSaveOnIdle;
|
|
627
|
+
/** @type {?} */
|
|
628
|
+
RichtexteditorComponent.prototype.target;
|
|
629
|
+
/** @type {?} */
|
|
630
|
+
RichtexteditorComponent.prototype.toolbarClick;
|
|
631
|
+
/** @type {?} */
|
|
632
|
+
RichtexteditorComponent.prototype.change;
|
|
633
|
+
/** @type {?} */
|
|
634
|
+
RichtexteditorComponent.prototype.family;
|
|
635
|
+
/** @type {?} */
|
|
636
|
+
RichtexteditorComponent.prototype.dialogWidth;
|
|
637
|
+
/** @type {?} */
|
|
638
|
+
RichtexteditorComponent.prototype.dialogHeight;
|
|
639
|
+
/** @type {?} */
|
|
640
|
+
RichtexteditorComponent.prototype.showZoomBtn;
|
|
641
|
+
/** @type {?} */
|
|
642
|
+
RichtexteditorComponent.prototype.showMsg;
|
|
643
|
+
/** @type {?} */
|
|
644
|
+
RichtexteditorComponent.prototype.insertImageSettings;
|
|
645
|
+
/** @type {?} */
|
|
646
|
+
RichtexteditorComponent.prototype.editorManager;
|
|
647
|
+
/** @type {?} */
|
|
648
|
+
RichtexteditorComponent.prototype.size;
|
|
649
|
+
/** @type {?} */
|
|
650
|
+
RichtexteditorComponent.prototype.selectedQuery;
|
|
651
|
+
/** @type {?} */
|
|
652
|
+
RichtexteditorComponent.prototype.dropValIndex;
|
|
653
|
+
/** @type {?} */
|
|
654
|
+
RichtexteditorComponent.prototype.queryList;
|
|
655
|
+
/** @type {?} */
|
|
656
|
+
RichtexteditorComponent.prototype.rephraseTyleList;
|
|
657
|
+
/** @type {?} */
|
|
658
|
+
RichtexteditorComponent.prototype.languageList;
|
|
659
|
+
/** @type {?} */
|
|
660
|
+
RichtexteditorComponent.prototype.promptQuery;
|
|
661
|
+
/** @type {?} */
|
|
662
|
+
RichtexteditorComponent.prototype.isSentimentCheck;
|
|
663
|
+
/** @type {?} */
|
|
664
|
+
RichtexteditorComponent.prototype.subQuery;
|
|
665
|
+
/** @type {?} */
|
|
666
|
+
RichtexteditorComponent.prototype.translatelanguage;
|
|
667
|
+
/** @type {?} */
|
|
668
|
+
RichtexteditorComponent.prototype.chipValue;
|
|
669
|
+
/** @type {?} */
|
|
670
|
+
RichtexteditorComponent.prototype.apiResultData;
|
|
671
|
+
/** @type {?} */
|
|
672
|
+
RichtexteditorComponent.prototype.AIResult;
|
|
673
|
+
/** @type {?} */
|
|
674
|
+
RichtexteditorComponent.prototype.tools;
|
|
675
|
+
/**
|
|
676
|
+
* @type {?}
|
|
677
|
+
* @private
|
|
678
|
+
*/
|
|
679
|
+
RichtexteditorComponent.prototype.ref;
|
|
680
|
+
}
|
|
681
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL3JpY2h0ZXh0ZWRpdG9yL2luZGV4LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUVULGlCQUFpQixFQUNqQixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLHFCQUFxQixHQUN0QixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFLTCx1QkFBdUIsR0FFeEIsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsZUFBZSxHQUVoQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFLakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQztJQXlJRSxpQ0FBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7O1FBOUdqQyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsV0FBTSxHQUFHLEdBQUcsQ0FBQztRQUNiLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLFdBQU0sR0FBRyxZQUFZLENBQUMsQ0FBQyxjQUFjOztRQUVwQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7O1FBR3RDLFdBQU0sR0FBRyxVQUFVLENBQUM7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LGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7OEJBSTVDLEtBQUs7d0JBQ0wsS0FBSzt5QkFDTCxLQUFLO2lDQUNMLEtBQUs7eUJBQ0wsS0FBSzsrQkFFTCxNQUFNO3lCQUNOLE1BQU07O0lBZ1lULDhCQUFDO0NBQUEsQUFsYUQsSUFrYUM7U0EzWlksdUJBQXVCOzs7SUFDbEMseUNBQ3VDOztJQUN2QyxnREFDNkM7O0lBQzdDLDBDQUN5Qzs7SUFDekMsMkNBQzBDOztJQUMxQywyQ0FBMkU7O0lBQzNFLGtEQUN5Qzs7SUFDekMsbURBQzBDOztJQUMxQyw2Q0FDb0M7O0lBQ3BDLGdEQUN1Qzs7SUFHdkMsOENBQTBCOztJQUMxQix3Q0FBb0I7O0lBQ3BCLHlDQUFzQjs7SUFDdEIsaURBQStCOztJQUMvQix5Q0FBK0I7O0lBRS9CLCtDQUE0Qzs7SUFDNUMseUNBQXNDOztJQUd0Qyx5Q0FBb0I7O0lBQ3BCLDhDQUFzQjs7SUFDdEIsK0NBQXVCOztJQUN2Qiw4Q0FBbUI7O0lBQ25CLDBDQUFnQjs7SUFDaEIsc0RBSUU7O0lBQ0YsZ0RBQW1COztJQUNuQix1Q0FBVTs7SUFDVixnREFBYzs7SUFDZCwrQ0FBd0I7O0lBQ3hCLDRDQU9FOztJQUNGLG1EQUlFOztJQUNGLCtDQWdCRTs7SUFDRiw4Q0FBd0I7O0lBQ3hCLG1EQUF5Qzs7SUFDekMsMkNBQXFCOztJQUNyQixvREFBa0M7O0lBQ2xDLDRDQUE4Qjs7SUFDOUIsZ0RBQTBCOztJQUMxQiwyQ0FBeUI7O0lBQ3pCLHdDQStDRTs7Ozs7SUFFVSxzQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIEF1dG9Db21wbGV0ZUNvbXBvbmVudCxcclxuICBEcm9wRG93bkxpc3RDb21wb25lbnQsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5pbXBvcnQge1xyXG4gIFRvb2xiYXJTZXJ2aWNlLFxyXG4gIExpbmtTZXJ2aWNlLFxyXG4gIEltYWdlU2VydmljZSxcclxuICBIdG1sRWRpdG9yU2VydmljZSxcclxuICBSaWNoVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICBUb29sYmFyU2V0dGluZ3NNb2RlbCxcclxufSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcmljaHRleHRlZGl0b3JcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b25Db21wb25lbnQsXHJcbiAgQ2hpcExpc3RDb21wb25lbnQsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJ1dHRvbnNcIjtcclxuaW1wb3J0IHsgRW1pdFR5cGUgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0IHsgRHJvcERvd25CdXR0b24gfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItc3BsaXRidXR0b25zXCI7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1wb3B1cHNcIjtcclxuLy8gc2VydmljZVxyXG4vLyBpbXBvcnQgeyBQYkZ1blNlcnZpY2UgfSBmcm9tIFwiQGFwcC9zZXJ2aWNlcy9wYi1mdW4uc2VydmljZVwiO1xyXG4vLyBpbXBvcnQgeyBTaGFyZWRTeW5jZnVzaW9uTW9kdWxlIH0gZnJvbSBcIkBhcHAvbW9kdWxlL3N5bmNmdXNpb25Nb2R1bGVcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBPcGVuQWlNb2RlbFJURSB9IGZyb20gXCIuL29wZW5hcGlcIjtcclxuaW1wb3J0IHsgbGluZUhlaWdodF9pdGVtcyB9IGZyb20gXCIuL2RhdGEtY29uZmlnXCI7XHJcbmltcG9ydCB7IGZvbnRGYW1pbHkgfSBmcm9tIFwiLi9kYXRhLWNvbmZpZ1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtcmljaHRleHQtZWRpdG9yXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAvLyBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIC8vIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNoYXJlZFN5bmNmdXNpb25Nb2R1bGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmljaHRleHRlZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoXCJlZGl0b3JcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHJ0ZU9iajogUmljaFRleHRFZGl0b3JDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInF1ZXJ5Q2F0ZWdvcnlcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHF1ZXJ5Q2F0ZWdvcnkhOiBEcm9wRG93bkxpc3RDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcImxlZnRSdGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIGxlZnRSdGUhOiBSaWNoVGV4dEVkaXRvckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKFwicmlnaHRSdGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHJpZ2h0UnRlITogUmljaFRleHRFZGl0b3JDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcIkFJZGlhbG9nXCIsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBBSWRpYWxvZyE6IERpYWxvZ0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKFwic2VudGltZW50QnV0dG9uXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBzZW50aW1lbnRCdXR0b24hOiBCdXR0b25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInJlZ2VuZXJhdGVCdXR0b25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHJlZ2VuZXJhdGVCdXR0b24hOiBCdXR0b25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcImNvcHlCdXR0b25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIGNvcHlCdXR0b24hOiBCdXR0b25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInJlcGxhY2VCdXR0b25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHJlcGxhY2VCdXR0b24hOiBCdXR0b25Db21wb25lbnQ7XHJcbiAgLy8gQFZpZXdDaGlsZChcImNoaXBMaXN0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgY2hpcExpc3QhOiBDaGlwTGlzdENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHZhbHVlID0gXCJcIjtcclxuICBASW5wdXQoKSBoZWlnaHQgPSAxNTA7XHJcbiAgQElucHV0KCkgYXV0b1NhdmVPbklkbGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHRhcmdldCA9IFwiI2NvbnRhaW5lclwiOyAvLyBkaWFsb2cg5by556qX54i257qnXHJcblxyXG4gIEBPdXRwdXQoKSB0b29sYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvLyBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBmYW1pbHkgPSBmb250RmFtaWx5O1xyXG4gIGRpYWxvZ1dpZHRoID0gXCI4MDBweFwiO1xyXG4gIGRpYWxvZ0hlaWdodCA9IFwiNjQycHhcIjtcclxuICBzaG93Wm9vbUJ0biA9IHRydWU7XHJcbiAgc2hvd01zZyA9IGZhbHNlO1xyXG4gIGluc2VydEltYWdlU2V0dGluZ3MgPSB7XHJcbiAgICBzYXZlRm9ybWF0OiBcIkJsb2JcIixcclxuICAgIGFsbG93ZWRUeXBlczogW1wiLnN2Z1wiLCBcIi5wbmdcIl0sXHJcbiAgICBkaXNwbGF5OiBcIm5vbmVcIixcclxuICB9O1xyXG4gIGVkaXRvck1hbmFnZXI6IGFueTtcclxuICBzaXplID0gXCJcIjtcclxuICBzZWxlY3RlZFF1ZXJ5O1xyXG4gIHB1YmxpYyBkcm9wVmFsSW5kZXggPSAwO1xyXG4gIHB1YmxpYyBxdWVyeUxpc3Q6IHsgaWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nIH1bXSA9IFtcclxuICAgIHsgaWQ6IFwiUmVwaHJhc2VcIiwgdGV4dDogXCJSZXBocmFzZVwiIH0sXHJcbiAgICB7IGlkOiBcIkdyYW1tYXJcIiwgdGV4dDogXCJDb3JyZWN0IEdyYW1tYXJcIiB9LFxyXG4gICAgeyBpZDogXCJTdW1tYXJpemVcIiwgdGV4dDogXCJTdW1tYXJpemVcIiB9LFxyXG4gICAgeyBpZDogXCJFbGFib3JhdGVcIiwgdGV4dDogXCJFbGFib3JhdGVcIiB9LFxyXG4gICAgeyBpZDogXCJUcmFuc2xhdGVcIiwgdGV4dDogXCJUcmFuc2xhdGVcIiB9LFxyXG4gICAgeyBpZDogXCJTZW50aW1lbnRBbmFseXNpc1wiLCB0ZXh0OiBcIlNlbnRpbWVudCBBbmFseXNpc1wiIH0sXHJcbiAgXTtcclxuICBwdWJsaWMgcmVwaHJhc2VUeWxlTGlzdCA9IFtcclxuICAgIHsgdGV4dDogXCJTdGFuZGFyZFwiLCBpZDogXCJTdGFuZGFyZFwiIH0sXHJcbiAgICB7IHRleHQ6IFwiRmx1ZW50XCIsIGlkOiBcIkZsdWVudFwiIH0sXHJcbiAgICB7IHRleHQ6IFwiUHJvZmVzc2lvbmFsXCIsIGlkOiBcIlByb2Zlc3Npb25hbFwiIH0sXHJcbiAgXTtcclxuICBwdWJsaWMgbGFuZ3VhZ2VMaXN0OiB7IGlkOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9W10gPSBbXHJcbiAgICB7IGlkOiBcIkVOXCIsIHRleHQ6IFwiRW5nbGlzaFwiIH0sXHJcbiAgICB7IGlkOiBcIlpIXCIsIHRleHQ6IFwiQ2hpbmVzZSAoU2ltcGxpZmllZClcIiB9LFxyXG4gICAgeyBpZDogXCJFU1wiLCB0ZXh0OiBcIlNwYW5pc2hcIiB9LFxyXG4gICAgeyBpZDogXCJaSFRcIiwgdGV4dDogXCJDaGluZXNlIChUcmFkaXRpb25hbClcIiB9LFxyXG4gICAgeyBpZDogXCJISVwiLCB0ZXh0OiBcIkhpbmRpXCIgfSxcclxuICAgIHsgaWQ6IFwiQVJcIiwgdGV4dDogXCJBcmFiaWNcIiB9LFxyXG4gICAgeyBpZDogXCJCTlwiLCB0ZXh0OiBcIkJlbmdhbGlcIiB9LFxyXG4gICAgeyBpZDogXCJQVFwiLCB0ZXh0OiBcIlBvcnR1Z3Vlc2VcIiB9LFxyXG4gICAgeyBpZDogXCJSVVwiLCB0ZXh0OiBcIlJ1c3NpYW5cIiB9LFxyXG4gICAgeyBpZDogXCJKQVwiLCB0ZXh0OiBcIkphcGFuZXNlXCIgfSxcclxuICAgIHsgaWQ6IFwiREVcIiwgdGV4dDogXCJHZXJtYW5cIiB9LFxyXG4gICAgeyBpZDogXCJLT1wiLCB0ZXh0OiBcIktvcmVhblwiIH0sXHJcbiAgICB7IGlkOiBcIkZSXCIsIHRleHQ6IFwiRnJlbmNoXCIgfSxcclxuICAgIHsgaWQ6IFwiSVRcIiwgdGV4dDogXCJJdGFsaWFuXCIgfSxcclxuICAgIHsgaWQ6IFwiVFJcIiwgdGV4dDogXCJUdXJraXNoXCIgfSxcclxuICBdO1xyXG4gIHB1YmxpYyBwcm9tcHRRdWVyeSA9IFwiXCI7XHJcbiAgcHVibGljIGlzU2VudGltZW50Q2hlY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc3ViUXVlcnkgPSBcIlwiO1xyXG4gIHB1YmxpYyB0cmFuc2xhdGVsYW5ndWFnZSE6IHN0cmluZztcclxuICBwdWJsaWMgY2hpcFZhbHVlID0gXCJTdGFuZGFyZFwiO1xyXG4gIHB1YmxpYyBhcGlSZXN1bHREYXRhOiBhbnk7XHJcbiAgcHVibGljIEFJUmVzdWx0ITogc3RyaW5nO1xyXG4gIHRvb2xzOiBUb29sYmFyU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIGVuYWJsZUZsb2F0aW5nOiBmYWxzZSxcclxuICAgIGl0ZW1zOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0b29sdGlwVGV4dDogXCJBSSBBc3Npc3RcIixcclxuICAgICAgICB0ZW1wbGF0ZTpcclxuICAgICAgICAgICc8YnV0dG9uIGNsYXNzPVwiZS10YmFyLWJ0biBlLWJ0blwiIHRhYmluZGV4PVwiLTFcIiBpZD1cImFpX2Fzc2lzdGFudF9idXR0b25fdGJhclwiIHN0eWxlPVwid2lkdGg6MTAwJVwiPjxkaXYgY2xhc3M9XCJlLXJ0ZS1kcm9wZG93bi1idG4tdGV4dFwiPkFJIEFzc2lzdDwvZGl2PjwvYnV0dG9uPicsXHJcbiAgICAgIH0sXHJcbiAgICAgIFwiQm9sZFwiLFxyXG4gICAgICBcIkl0YWxpY1wiLFxyXG4gICAgICBcIlVuZGVybGluZVwiLFxyXG4gICAgICBcIlN0cmlrZVRocm91Z2hcIixcclxuICAgICAgXCJGb250TmFtZVwiLFxyXG4gICAgICBcIkZvbnRTaXplXCIsXHJcbiAgICAgIFwiRm9udENvbG9yXCIsXHJcbiAgICAgIFwiQmFja2dyb3VuZENvbG9yXCIsXHJcbiAgICAgIFwiTG93ZXJDYXNlXCIsXHJcbiAgICAgIFwiVXBwZXJDYXNlXCIsXHJcbiAgICAgIFwifFwiLFxyXG4gICAgICBcIkNyZWF0ZVRhYmxlXCIsXHJcbiAgICAgIFwiRm9ybWF0c1wiLFxyXG4gICAgICBcIkFsaWdubWVudHNcIixcclxuICAgICAge1xyXG4gICAgICAgIHRvb2x0aXBUZXh0OiBcIkxpbmUgSGVpZ2h0XCIsXHJcbiAgICAgICAgdGVtcGxhdGU6XHJcbiAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz1cImUtdGJhci1idG4gZS1idG5cIiB0YWJpbmRleD1cIi0xXCIgaWQ9XCJsaW5laGVpZ2h0X3RiYXJcIiAgc3R5bGU9XCJ3aWR0aDoxMDAlXCI+PC9idXR0b24+JyxcclxuICAgICAgfSxcclxuICAgICAgXCJPcmRlcmVkTGlzdFwiLFxyXG4gICAgICBcIlVub3JkZXJlZExpc3RcIixcclxuICAgICAgXCJPdXRkZW50XCIsXHJcbiAgICAgIFwiSW5kZW50XCIsXHJcbiAgICAgIFwifFwiLFxyXG4gICAgICBcIkNyZWF0ZUxpbmtcIixcclxuICAgICAge1xyXG4gICAgICAgIHRvb2x0aXBUZXh0OiBcIlwiLFxyXG4gICAgICAgIHRlbXBsYXRlOlxyXG4gICAgICAgICAgJzxidXR0b24gY2xhc3M9XCJlLXRiYXItYnRuIGUtYnRuXCIgdGFiaW5kZXg9XCItMVwiIGlkPVwiY3VzdG9tX3RiYXJcIiAgc3R5bGU9XCJ3aWR0aDoxMDAlXCI+JyArXHJcbiAgICAgICAgICAnPGRpdiBjbGFzcz1cImUtdGJhci1idG4tdGV4dFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMDtcIj48aW1nIHNyYz1cIi9hc3NldHMvaW1nL2ZpbGUtaWNvbi5zdmdcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTt0b3A6IC0ycHg7XCIvPjxkaXYgY2xhc3M9XCJ1cGxvYWRBY3Rpb25zXCI+PGRpdiBpZD1cInVwbG9hZEZyb21Vc2VyXCI+Q29tcHV0ZXIgRmlsZTwvZGl2PjxkaXYgaWQ9XCJyZWxhdGlvbkRvbVwiPlRpY2tldCBBdHRhY2htZW50PC9kaXY+PC9kaXY+PC9kaXY+PC9idXR0b24+JyxcclxuICAgICAgfSxcclxuICAgICAgXCJ8XCIsXHJcbiAgICAgIFwiRm9ybWF0UGFpbnRlclwiLFxyXG4gICAgICBcIkNsZWFyRm9ybWF0XCIsXHJcbiAgICAgIFwifFwiLFxyXG4gICAgICBcIlVuZG9cIixcclxuICAgICAgXCJSZWRvXCIsXHJcbiAgICAgIC8vJ1NvdXJjZUNvZGUnLFxyXG4gICAgXSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgb25Db250ZW50Q2hhbmdlKGFyZ3MpIHtcclxuICAgIGNvbnN0IHRhYmxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJ0YWJsZS5lLXJ0ZS10YWJsZVwiKTtcclxuICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZSkgPT4ge1xyXG4gICAgICBjb25zdCBodG1sVGFibGUgPSB0YWJsZSBhcyBIVE1MVGFibGVFbGVtZW50O1xyXG4gICAgICBodG1sVGFibGUuc3R5bGUubWFyZ2luQm90dG9tID0gXCIxMHB4XCI7XHJcbiAgICAgIGh0bWxUYWJsZS5zdHlsZS5ib3JkZXJDb2xsYXBzZSA9IFwiY29sbGFwc2VcIjtcclxuICAgICAgaHRtbFRhYmxlLnN0eWxlLmVtcHR5Q2VsbHMgPSBcInNob3dcIjtcclxuICAgICAgY29uc3QgdGRFbGVtZW50cyA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJ0ZFwiKTtcclxuICAgICAgdGRFbGVtZW50cy5mb3JFYWNoKCh0ZCkgPT4ge1xyXG4gICAgICAgIHRkLnN0eWxlLmJvcmRlciA9IFwiMXB4IHNvbGlkICNhZGI1YmRcIjtcclxuICAgICAgICB0ZC5zdHlsZS5oZWlnaHQgPSBcIjIwcHhcIjtcclxuICAgICAgICB0ZC5zdHlsZS5taW5XaWR0aCA9IFwiMjBweFwiO1xyXG4gICAgICAgIHRkLnN0eWxlLnBhZGRpbmcgPSBcIjJweCA1cHhcIjtcclxuICAgICAgICB0ZC5zdHlsZS5ib3hTaXppbmcgPSBcImJvcmRlci1ib3hcIjtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hhbmdlLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DcmVhdGUoKTogdm9pZCB7XHJcbiAgICAvL2JpbmQgdGhlIGEgY2xpY2sgZXZlbnRcclxuICAgIC8vIGxldCBlZGl0b3JDb250ZW50ID0gdGhpcy5ydGVPYmouY29udGVudE1vZHVsZS5nZXRFZGl0UGFuZWwoKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIC8vIGVkaXRvckNvbnRlbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLk9uQ2xpY2tlZC5iaW5kKHRoaXMpKTtcclxuICAgIC8vYWRkIHRoZSBsaW5lIGhlaWdodFxyXG4gICAgdGhpcy5lZGl0b3JNYW5hZ2VyID0gdGhpcy5ydGVPYmouZm9ybWF0dGVyLmVkaXRvck1hbmFnZXI7XHJcbiAgICBsZXQgc3BsaXRCdXR0b24gPSBuZXcgRHJvcERvd25CdXR0b24oe1xyXG4gICAgICBpdGVtczogbGluZUhlaWdodF9pdGVtcyxcclxuICAgICAgaWNvbkNzczogXCJlLWljb25zIGUtbGluZS1zcGFjaW5nXCIsXHJcbiAgICAgIHNlbGVjdDogdGhpcy5vblNlbGVjdC5iaW5kKHRoaXMpLFxyXG4gICAgfSk7XHJcbiAgICBzcGxpdEJ1dHRvbi5hcHBlbmRUbyhcIiNsaW5laGVpZ2h0X3RiYXJcIik7XHJcbiAgICAvLyBhaSBhc3Npc3RcclxuICAgIGxldCBhaWFzc2lzdGFudEJ1dHRvbiA9IG5ldyBEcm9wRG93bkJ1dHRvbih7XHJcbiAgICAgIGl0ZW1zOiB0aGlzLnF1ZXJ5TGlzdCxcclxuICAgICAgLy8gaWNvbkNzczogXCJlLWJ0bi1pY29uIGUtaWNvbnMgZS1hc3Npc3R2aWV3LWljb24gZS1pY29uLWxlZnRcIixcclxuICAgICAgc2VsZWN0OiAoYXJncykgPT4gdGhpcy5haVF1ZXJ5U2VsZWN0ZWRNZW51KGFyZ3MpLFxyXG4gICAgfSk7XHJcbiAgICBhaWFzc2lzdGFudEJ1dHRvbi5hcHBlbmRUbyhcIiNhaV9hc3Npc3RhbnRfYnV0dG9uX3RiYXJcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uU2VsZWN0KGFyZ3MpIHtcclxuICAgIGlmICh0aGlzLnJ0ZU9iai5mb3JtYXR0ZXIuZ2V0VW5kb1JlZG9TdGFjaygpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnJ0ZU9iai5mb3JtYXR0ZXIuc2F2ZURhdGEoKTtcclxuICAgIH1cclxuICAgIGxldCBub2RlczogTm9kZVtdID0gdGhpcy5lZGl0b3JNYW5hZ2VyLmRvbU5vZGUuYmxvY2tOb2RlcygpO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgbm9kZXMubGVuZ3RoID4gaTsgaSsrKSB7XHJcbiAgICAgIChub2Rlc1tpXSBhcyBIVE1MRWxlbWVudCkuc3R5bGUubGluZUhlaWdodCA9IGFyZ3MuaXRlbS50ZXh0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5ydGVPYmouZm9ybWF0dGVyLnNhdmVEYXRhKCk7XHJcbiAgICB0aGlzLnJ0ZU9iai5mb3JtYXR0ZXIuZW5hYmxlVW5kbyh0aGlzLnJ0ZU9iaik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFpUXVlcnlTZWxlY3RlZE1lbnUoYXJnczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ3VlT3BlbihhcmdzLml0ZW0udGV4dCk7XHJcbiAgfVxyXG5cclxuICBkaWFsb2d1ZU9wZW4oc2VsZWN0ZWRRdWVyeTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB2YXIgc2VsZWN0aW9uVGV4dCA9IHRoaXMucnRlT2JqLmdldFNlbGVjdGVkSHRtbCgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZFF1ZXJ5ID0gc2VsZWN0ZWRRdWVyeTtcclxuICAgIGlmIChzZWxlY3Rpb25UZXh0KSB7XHJcbiAgICAgIGxldCByYW5nZTogUmFuZ2UgPSAoXHJcbiAgICAgICAgdGhpcy5ydGVPYmogYXMgYW55XHJcbiAgICAgICkuZm9ybWF0dGVyLmVkaXRvck1hbmFnZXIubm9kZVNlbGVjdGlvbi5nZXRSYW5nZShcclxuICAgICAgICAodGhpcy5ydGVPYmogYXMgYW55KS5jb250ZW50TW9kdWxlLmdldERvY3VtZW50KClcclxuICAgICAgKTtcclxuICAgICAgKHRoaXMucnRlT2JqIGFzIGFueSkuZm9ybWF0dGVyLmVkaXRvck1hbmFnZXIubm9kZVNlbGVjdGlvbi5zYXZlKFxyXG4gICAgICAgIHJhbmdlLFxyXG4gICAgICAgICh0aGlzLnJ0ZU9iaiBhcyBhbnkpLmNvbnRlbnRNb2R1bGUuZ2V0RG9jdW1lbnQoKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRyb3BWYWxJbmRleCA9IHRoaXMucXVlcnlMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAocSkgPT4gcS50ZXh0LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkUXVlcnkudG9Mb3dlckNhc2UoKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnF1ZXJ5Q2F0ZWdvcnkuaW5kZXggPSB0aGlzLmRyb3BWYWxJbmRleDtcclxuICAgICAgdGhpcy5sZWZ0UnRlLnZhbHVlID0gdGhpcy5wcm9tcHRRdWVyeSA9IHNlbGVjdGlvblRleHQ7XHJcbiAgICAgIHRoaXMubGVmdFJ0ZS5yZWZyZXNoVUkoKTtcclxuICAgICAgdGhpcy5BSWRpYWxvZy5zaG93KCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQUlTdWdlc3N0aW9uc0RhdGEoc2VsZWN0ZWRRdWVyeSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dNc2cgPSB0cnVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dNc2cgPSBmYWxzZTtcclxuICAgICAgfSwgMzAwMCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiUGxlYXNlIHNlbGVjdCB0aGUgY29udGVudCB0byBwZXJmb3JtIHRoZSBBSSBvcGVyYXRpb24uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQUlTdWdlc3N0aW9uc0RhdGEoc2VsZWN0ZWRRdWVyeTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2VudGltZW50Q2hlY2sgPSBmYWxzZTtcclxuICAgIHN3aXRjaCAoc2VsZWN0ZWRRdWVyeSkge1xyXG4gICAgICBjYXNlIFwiU3VtbWFyaXplXCI6XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9IFwiU3VtbWFyaXplIHRoZSB1cGNvbWluZyBzZW50ZW5jZSBzaG9ydGx5LlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiRWxhYm9yYXRlXCI6XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9IFwiRWxhYm9yYXRlIG9uIHRoZSB1cGNvbWluZyBzZW50ZW5jZS5cIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlJlcGhyYXNlXCI6XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9IHRoaXMuY2hpcFZhbHVlICsgXCIgcmVwaHJhc2UgdGhlIHVwY29taW5nIHNlbnRlbmNlLlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiQ29ycmVjdCBHcmFtbWFyXCI6XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9IFwiQ29ycmVjdCB0aGUgZ3JhbW1hciBvZiB0aGUgdXBjb21pbmcgc2VudGVuY2UuXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJUcmFuc2xhdGVcIjpcclxuICAgICAgICB0aGlzLnN1YlF1ZXJ5ID1cclxuICAgICAgICAgIFwiVHJhbnNsYXRlIHRoZSB1cGNvbWluZyBzZW50ZW5jZSB0byBcIiArIHRoaXMudHJhbnNsYXRlbGFuZ3VhZ2UgKyBcIi5cIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlNlbnRpbWVudCBBbmFseXNpc1wiOlxyXG4gICAgICAgIHRoaXMuaXNTZW50aW1lbnRDaGVjayA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9XHJcbiAgICAgICAgICAnQW5hbHl6ZSB0aGUgc2VudGltZW50IGFuZCBncmFtbWFyIG9mIHRoZSBmb2xsb3dpbmcgcGFyYWdyYXBocyBhbmQgcHJvdmlkZSB0aGUgZXhwcmVzc2lvbiBzY29yZSB3aXRoIGFuIGVtb2ppIGZvbGxvd2VkIGJ5IHRoZSBzZW50aW1lbnQgaW4gdGhlIGZvcm1hdDogXCLwn5iKIE5ldXRyYWxcIi4gXFxuXFxuTk9URTogQXZvaWQgYW55IGFkZGl0aW9uYWwgdGV4dCBvciBleHBsYW5hdGlvbjonO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVBSVN1Z2Vzc3Rpb25zKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBSVN1Z2Vzc3Rpb25zKCk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMucHJvbXB0UXVlcnkpIHtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJza2VsZXRvbklkXCIpIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID1cclxuICAgICAgICAgIFwiXCI7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmlnaHRSdGVcIikgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPVxyXG4gICAgICAgICAgXCJub25lXCI7XHJcbiAgICAgICAgdGhpcy5zZW50aW1lbnRCdXR0b24uZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgdGhpcy5yZWdlbmVyYXRlQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvcHlCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVwbGFjZUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hcGlSZXN1bHREYXRhID0gdGhpcy5nZXRSZXNwb25zZUZyb21PcGVuQUkoXHJcbiAgICAgICAgICB0aGlzLnN1YlF1ZXJ5LFxyXG4gICAgICAgICAgdGhpcy5wcm9tcHRRdWVyeVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5hcGlSZXN1bHREYXRhLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkFJUmVzdWx0ID0gdGhpcy5pc1NlbnRpbWVudENoZWNrID8gdGhpcy5wcm9tcHRRdWVyeSA6IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuc2VudGltZW50QnV0dG9uLmNvbnRlbnQgPSByZXN1bHRcclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLmluY2x1ZGVzKFwicG9zaXRpdmVcIilcclxuICAgICAgICAgICAgPyBcIvCfmIogUG9zaXRpdmVcIlxyXG4gICAgICAgICAgICA6IHJlc3VsdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibmVnYXRpdmVcIilcclxuICAgICAgICAgICAgPyBcIvCfmJ4gTmVnYXRpdmVcIlxyXG4gICAgICAgICAgICA6IFwi8J+YkCBOZXV0cmFsXCI7XHJcbiAgICAgICAgICB0aGlzLnNlbnRpbWVudEJ1dHRvbi5lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAhdGhpcy5pc1NlbnRpbWVudENoZWNrXHJcbiAgICAgICAgICAgID8gXCJub25lXCJcclxuICAgICAgICAgICAgOiBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5yaWdodFJ0ZS52YWx1ZSA9IHRoaXMuQUlSZXN1bHQ7XHJcbiAgICAgICAgICB2YXIgbm9SZXN1bHRzRm91bmQgPSAhKHRoaXMuQUlSZXN1bHQgfHwgdGhpcy5wcm9tcHRRdWVyeSk7XHJcbiAgICAgICAgICAoXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibm8tcmVzdWx0cy1mb3VuZFwiKSBhcyBIVE1MRWxlbWVudFxyXG4gICAgICAgICAgKS5zdHlsZS5kaXNwbGF5ID0gbm9SZXN1bHRzRm91bmQgPyBcIlwiIDogXCJub25lXCI7XHJcbiAgICAgICAgICB0aGlzLnJlZ2VuZXJhdGVCdXR0b24uZGlzYWJsZWQgPSBub1Jlc3VsdHNGb3VuZDtcclxuICAgICAgICAgIHRoaXMuY29weUJ1dHRvbi5kaXNhYmxlZCA9IG5vUmVzdWx0c0ZvdW5kO1xyXG4gICAgICAgICAgdGhpcy5yZXBsYWNlQnV0dG9uLmRpc2FibGVkID0gbm9SZXN1bHRzRm91bmQ7XHJcbiAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJza2VsZXRvbklkXCIpIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID1cclxuICAgICAgICAgICAgXCJub25lXCI7XHJcbiAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyaWdodFJ0ZVwiKSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9XHJcbiAgICAgICAgICAgIG5vUmVzdWx0c0ZvdW5kID8gXCJub25lXCIgOiBcIlwiO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgIG5vUmVzdWx0c0ZvdW5kLFxyXG4gICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyaWdodFJ0ZVwiKSBhcyBIVE1MRWxlbWVudCkuc3R5bGVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICAvLyB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIC8vIHRoaXMudG9hc3RPYmouc2hvdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UmVzcG9uc2VGcm9tT3BlbkFJKFxyXG4gICAgc3ViUXVlcnk6IHN0cmluZyxcclxuICAgIHByb21wdFF1ZXJ5OiBzdHJpbmdcclxuICApOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IE9wZW5BaU1vZGVsUlRFKHN1YlF1ZXJ5LCBwcm9tcHRRdWVyeSk7XHJcbiAgICByZXR1cm4gY29udGVudCA/IChjb250ZW50IGFzIHN0cmluZykgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZGlhbG9nU2hvdygpOiB2b2lkIHtcclxuICAgIHRoaXMucmVnZW5lcmF0ZUJ1dHRvbiEuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUFJU3VnZXNzdGlvbnMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb3B5QnV0dG9uIS5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuY29weVRleHRUb0NsaXBib2FyZCh0aGlzLkFJUmVzdWx0KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZXBsYWNlQnV0dG9uIS5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgIGxldCByYW5nZTogUmFuZ2UgPSAoXHJcbiAgICAgICAgdGhpcy5ydGVPYmogYXMgYW55XHJcbiAgICAgICkuZm9ybWF0dGVyLmVkaXRvck1hbmFnZXIubm9kZVNlbGVjdGlvbi5nZXRSYW5nZShcclxuICAgICAgICAodGhpcy5ydGVPYmogYXMgYW55KS5jb250ZW50TW9kdWxlLmdldERvY3VtZW50KClcclxuICAgICAgKTtcclxuICAgICAgKHRoaXMucnRlT2JqIGFzIGFueSkuZm9ybWF0dGVyLmVkaXRvck1hbmFnZXIubm9kZVNlbGVjdGlvbi5yZXN0b3JlKHJhbmdlKTtcclxuICAgICAgKHRoaXMucnRlT2JqIGFzIGFueSkuZXhlY3V0ZUNvbW1hbmQoXCJpbnNlcnRIVE1MXCIsIHRoaXMuQUlSZXN1bHQsIHtcclxuICAgICAgICB1bmRvOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jbG9zZURpYWxvZygpO1xyXG4gICAgfSk7XHJcbiAgICAodGhpcy5BSWRpYWxvZyBhcyBEaWFsb2dDb21wb25lbnQpLmVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuQUlkaWFsb2cuaGlkZSgpO1xyXG4gICAgdGhpcy5yaWdodFJ0ZS52YWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLmxlZnRSdGUudmFsdWUgPSBcIlwiO1xyXG4gICAgdGhpcy5wcm9tcHRRdWVyeSA9IFwiXCI7XHJcbiAgICB0aGlzLmNoaXBWYWx1ZSA9IFwiU3RhbmRhcmRcIjtcclxuICAgIHRoaXMuQUlSZXN1bHQgPSBcIlwiO1xyXG4gICAgdGhpcy5kcm9wVmFsSW5kZXggPSAwO1xyXG4gICAgdGhpcy5zZWxlY3RlZFF1ZXJ5ID0gXCJSZXBocmFzZVwiO1xyXG4gICAgdGhpcy5zZW50aW1lbnRCdXR0b24uY29udGVudCA9IFwi8J+YiiBOZXV0cmFsXCI7XHJcbiAgfVxyXG5cclxuICBjb3B5VGV4dFRvQ2xpcGJvYXJkKHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKG5hdmlnYXRvci5jbGlwYm9hcmQpIHtcclxuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZFxyXG4gICAgICAgIC53cml0ZVRleHQodGV4dClcclxuICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlRleHQgY29waWVkIHRvIGNsaXBib2FyZCBzdWNjZXNzZnVsbHkhXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSB0ZXh0OiBcIiwgZXJyKTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEZhbGxiYWNrIGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoZSBDbGlwYm9hcmQgQVBJXHJcbiAgICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIpO1xyXG4gICAgICB0ZXh0YXJlYS52YWx1ZSA9IHRleHQ7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dGFyZWEpO1xyXG4gICAgICB0ZXh0YXJlYS5zZWxlY3QoKTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZChcImNvcHlcIik7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJUZXh0IGNvcGllZCB0byBjbGlwYm9hcmQgdXNpbmcgZXhlY0NvbW1hbmRcIik7XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSB0ZXh0OiBcIiwgZXJyKTtcclxuICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRleHRhcmVhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25PdmVybGF5Q2xpY2soKTogdm9pZCB7XHJcbiAgICBsZXQgYWN0aXZlRWxlOiBIVE1MRWxlbWVudCB8IG51bGwgPSB0aGlzLkFJZGlhbG9nLmVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgXCIuY2hhcl9ibG9jay5lLWFjdGl2ZVwiXHJcbiAgICApO1xyXG4gICAgaWYgKGFjdGl2ZUVsZSkge1xyXG4gICAgICBhY3RpdmVFbGUuY2xhc3NMaXN0LnJlbW92ZShcImUtYWN0aXZlXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZURpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgb25RdWVyeVNlbGVjdChhcmdzKSB7XHJcbiAgICAvLyB0aGlzLmNoaXBMaXN0LnNlbGVjdGVkQ2hpcHMgPSAwO1xyXG4gICAgdGhpcy50cmFuc2xhdGVsYW5ndWFnZSA9IFwiRU5cIjtcclxuICAgIHRoaXMuc2VsZWN0ZWRRdWVyeSA9IGFyZ3MuaXRlbURhdGEudGV4dDtcclxuICAgIHRoaXMudXBkYXRlQUlTdWdlc3N0aW9uc0RhdGEoYXJncy5pdGVtRGF0YS50ZXh0KTtcclxuICB9XHJcblxyXG4gIG9uTGFuZ3VhZ2VTZWxlY3QoYXJnczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZWxhbmd1YWdlID0gYXJncy5pdGVtRGF0YS5pZDtcclxuICAgIHRoaXMudXBkYXRlQUlTdWdlc3N0aW9uc0RhdGEoXCJUcmFuc2xhdGVcIik7XHJcbiAgfVxyXG5cclxuICBvbkNoaXBDbGljayhhcmdzOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hpcFZhbHVlID0gYXJncy5pdGVtRGF0YS50ZXh0O1xyXG4gICAgLy8g5LqL5Lu25Lya6Kem5Y+R5Lik5qyhIOW/hemhu+WIpOaWrWFyZ3MudGV4dOaYr+WQpuacieWAvFxyXG4gICAgaWYgKGFyZ3MuaXRlbURhdGEudGV4dCkgdGhpcy51cGRhdGVBSVN1Z2Vzc3Rpb25zRGF0YShcIlJlcGhyYXNlXCIpO1xyXG4gIH1cclxuXHJcbiAgX3Rvb2xiYXJDbGljayhhcmdzKSB7XHJcbiAgICB0aGlzLnRvb2xiYXJDbGljay5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgaGlkZVRvYXN0KCkge1xyXG4gICAgdGhpcy5zaG93TXNnID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblpvb20oKSB7XHJcbiAgICBpZiAodGhpcy5zaXplID09PSBcImxhcmdlc3RcIikge1xyXG4gICAgICB0aGlzLnNpemUgPSBcIlwiOyAvLyDmgaLlpI3liLDljp/lp4vlpKflsI9cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2l6ZSA9IFwibGFyZ2VzdFwiOyAvLyDorr7nva7kuLrmnIDlpKfljJZcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|