raise-common-lib 0.0.192 → 0.0.193
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/README.md +57 -57
- package/bundles/raise-common-lib.umd.js +1240 -10
- 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/dialog/new-action-notification/new-action-notification.component.js +1 -1
- package/esm2015/lib/form/drawer-form/drawer-form.component.js +1 -1
- 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 +604 -0
- package/esm2015/lib/form/richtexteditor/openapi.js +175 -0
- package/esm2015/lib/layout/drawer/index.component.js +1 -1
- package/esm2015/lib/layout/page-tab/index.component.js +7 -3
- package/esm2015/lib/raise-common-lib.module.js +7 -2
- package/esm2015/public-api.js +2 -1
- package/esm2015/raise-common-lib.js +2 -2
- package/esm5/lib/common-grid/index.component.js +2 -2
- package/esm5/lib/dialog/new-action-notification/new-action-notification.component.js +1 -1
- package/esm5/lib/form/drawer-form/drawer-form.component.js +1 -1
- 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 +684 -0
- package/esm5/lib/form/richtexteditor/openapi.js +208 -0
- package/esm5/lib/layout/drawer/index.component.js +1 -1
- package/esm5/lib/layout/page-tab/index.component.js +7 -3
- package/esm5/lib/raise-common-lib.module.js +7 -2
- package/esm5/public-api.js +2 -1
- package/esm5/raise-common-lib.js +2 -2
- package/fesm2015/raise-common-lib.js +1126 -12
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +1241 -12
- package/fesm5/raise-common-lib.js.map +1 -1
- 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/public-api.d.ts +1 -0
- package/raise-common-lib.metadata.json +1 -1
- package/src/assets/img/arrow_right.svg +4 -4
- package/src/assets/img/calendar-disabled.svg +6 -6
- package/src/assets/img/calendar.svg +6 -6
- package/src/assets/img/calendar_arrow_left.svg +3 -3
- package/src/assets/img/calendar_arrow_right.svg +3 -3
- package/src/assets/img/checked-vector.svg +3 -3
- package/src/assets/img/dialog-close.svg +4 -4
- package/src/assets/img/dialog-grow.svg +6 -6
- package/src/assets/img/dialog-shrink.svg +6 -6
- package/src/assets/img/editor-copy.svg +5 -0
- package/src/assets/img/info.svg +5 -0
- package/src/assets/img/plus.svg +4 -4
- package/src/assets/img/search.svg +4 -4
- package/src/assets/img/shrink-icon.svg +6 -6
- package/src/assets/img/time-disabled.svg +4 -4
- package/src/assets/img/time.svg +4 -4
- package/src/assets/img/toolbar-action-addFolder.svg +17 -17
- package/src/assets/img/toolbar-action-calculator.svg +11 -11
- package/src/assets/img/toolbar-action-collapse.svg +7 -7
- package/src/assets/img/toolbar-action-combine.svg +4 -4
- package/src/assets/img/toolbar-action-edit.svg +4 -4
- package/src/assets/img/toolbar-action-expand.svg +7 -7
- package/src/assets/img/toolbar-action-folderMove.svg +8 -8
- package/src/assets/img/toolbar-action-lock.svg +6 -6
- package/src/assets/img/toolbar-action-preview.svg +7 -7
- package/src/assets/img/toolbar-action-publish.svg +5 -5
- package/src/assets/img/toolbar-action-reminders.svg +10 -10
- package/src/assets/img/toolbar-action-rename.svg +7 -7
- package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
- package/src/assets/img/toolbar-action-send-file.svg +5 -5
- package/src/assets/img/toolbar-action-settle.svg +7 -7
- package/src/assets/img/toolbar-action-share.svg +5 -5
- package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
- package/src/assets/img/toolbar-action-sync.svg +4 -4
- package/src/assets/img/toolbar-action-template.svg +6 -6
- package/src/assets/img/toolbar-action-workflow.svg +9 -9
|
@@ -0,0 +1,684 @@
|
|
|
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
|
+
// service
|
|
14
|
+
// import { PbFunService } from "@app/services/pb-fun.service";
|
|
15
|
+
// import { SharedSyncfusionModule } from "@app/module/syncfusionModule";
|
|
16
|
+
import { OpenAiModelRTE } from "./openapi";
|
|
17
|
+
import { lineHeight_items } from "./data-config";
|
|
18
|
+
import { fontFamily } from "./data-config";
|
|
19
|
+
var RichtexteditorComponent = /** @class */ (function () {
|
|
20
|
+
function RichtexteditorComponent(ref) {
|
|
21
|
+
this.ref = ref;
|
|
22
|
+
// @ViewChild("chipList", { static: false }) public chipList!: ChipListComponent;
|
|
23
|
+
this.placeholder = "";
|
|
24
|
+
this.value = "";
|
|
25
|
+
this.height = 150;
|
|
26
|
+
this.autoSaveOnIdle = true;
|
|
27
|
+
this.target = "#container"; // dialog 弹窗父级
|
|
28
|
+
// dialog 弹窗父级
|
|
29
|
+
this.toolbarClick = new EventEmitter();
|
|
30
|
+
this.change = new EventEmitter();
|
|
31
|
+
// @Output() change = new EventEmitter();
|
|
32
|
+
this.family = fontFamily;
|
|
33
|
+
this.dialogWidth = "800px";
|
|
34
|
+
this.dialogHeight = "642px";
|
|
35
|
+
this.showZoomBtn = true;
|
|
36
|
+
this.showMsg = false;
|
|
37
|
+
this.insertImageSettings = {
|
|
38
|
+
saveFormat: "Blob",
|
|
39
|
+
allowedTypes: [".svg", ".png"],
|
|
40
|
+
display: "none",
|
|
41
|
+
};
|
|
42
|
+
this.size = "";
|
|
43
|
+
this.dropValIndex = 0;
|
|
44
|
+
this.queryList = [
|
|
45
|
+
{ id: "Rephrase", text: "Rephrase" },
|
|
46
|
+
{ id: "Grammar", text: "Correct Grammar" },
|
|
47
|
+
{ id: "Summarize", text: "Summarize" },
|
|
48
|
+
{ id: "Elaborate", text: "Elaborate" },
|
|
49
|
+
{ id: "Translate", text: "Translate" },
|
|
50
|
+
{ id: "SentimentAnalysis", text: "Sentiment Analysis" },
|
|
51
|
+
];
|
|
52
|
+
this.rephraseTyleList = [
|
|
53
|
+
{ text: "Standard", id: "Standard" },
|
|
54
|
+
{ text: "Fluent", id: "Fluent" },
|
|
55
|
+
{ text: "Professional", id: "Professional" },
|
|
56
|
+
];
|
|
57
|
+
this.languageList = [
|
|
58
|
+
{ id: "EN", text: "English" },
|
|
59
|
+
{ id: "ZH", text: "Chinese (Simplified)" },
|
|
60
|
+
{ id: "ES", text: "Spanish" },
|
|
61
|
+
{ id: "ZHT", text: "Chinese (Traditional)" },
|
|
62
|
+
{ id: "HI", text: "Hindi" },
|
|
63
|
+
{ id: "AR", text: "Arabic" },
|
|
64
|
+
{ id: "BN", text: "Bengali" },
|
|
65
|
+
{ id: "PT", text: "Portuguese" },
|
|
66
|
+
{ id: "RU", text: "Russian" },
|
|
67
|
+
{ id: "JA", text: "Japanese" },
|
|
68
|
+
{ id: "DE", text: "German" },
|
|
69
|
+
{ id: "KO", text: "Korean" },
|
|
70
|
+
{ id: "FR", text: "French" },
|
|
71
|
+
{ id: "IT", text: "Italian" },
|
|
72
|
+
{ id: "TR", text: "Turkish" },
|
|
73
|
+
];
|
|
74
|
+
this.promptQuery = "";
|
|
75
|
+
this.isSentimentCheck = false;
|
|
76
|
+
this.subQuery = "";
|
|
77
|
+
this.chipValue = "Standard";
|
|
78
|
+
this.tools = {
|
|
79
|
+
enableFloating: false,
|
|
80
|
+
items: [
|
|
81
|
+
{
|
|
82
|
+
tooltipText: "AI Assist",
|
|
83
|
+
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>',
|
|
84
|
+
},
|
|
85
|
+
"Bold",
|
|
86
|
+
"Italic",
|
|
87
|
+
"Underline",
|
|
88
|
+
"StrikeThrough",
|
|
89
|
+
"FontName",
|
|
90
|
+
"FontSize",
|
|
91
|
+
"FontColor",
|
|
92
|
+
"BackgroundColor",
|
|
93
|
+
"LowerCase",
|
|
94
|
+
"UpperCase",
|
|
95
|
+
"|",
|
|
96
|
+
"CreateTable",
|
|
97
|
+
"Formats",
|
|
98
|
+
"Alignments",
|
|
99
|
+
{
|
|
100
|
+
tooltipText: "Line Height",
|
|
101
|
+
template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="lineheight_tbar" style="width:100%"></button>',
|
|
102
|
+
},
|
|
103
|
+
"OrderedList",
|
|
104
|
+
"UnorderedList",
|
|
105
|
+
"Outdent",
|
|
106
|
+
"Indent",
|
|
107
|
+
"|",
|
|
108
|
+
"CreateLink",
|
|
109
|
+
{
|
|
110
|
+
tooltipText: "",
|
|
111
|
+
template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="custom_tbar" style="width:100%">' +
|
|
112
|
+
'<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>',
|
|
113
|
+
},
|
|
114
|
+
"|",
|
|
115
|
+
"FormatPainter",
|
|
116
|
+
"ClearFormat",
|
|
117
|
+
"|",
|
|
118
|
+
"Undo",
|
|
119
|
+
"Redo",
|
|
120
|
+
],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* @return {?}
|
|
125
|
+
*/
|
|
126
|
+
RichtexteditorComponent.prototype.ngOnInit = /**
|
|
127
|
+
* @return {?}
|
|
128
|
+
*/
|
|
129
|
+
function () { };
|
|
130
|
+
/**
|
|
131
|
+
* @param {?} args
|
|
132
|
+
* @return {?}
|
|
133
|
+
*/
|
|
134
|
+
RichtexteditorComponent.prototype.onContentChange = /**
|
|
135
|
+
* @param {?} args
|
|
136
|
+
* @return {?}
|
|
137
|
+
*/
|
|
138
|
+
function (args) {
|
|
139
|
+
/** @type {?} */
|
|
140
|
+
var tables = document.querySelectorAll("table.e-rte-table");
|
|
141
|
+
tables.forEach((/**
|
|
142
|
+
* @param {?} table
|
|
143
|
+
* @return {?}
|
|
144
|
+
*/
|
|
145
|
+
function (table) {
|
|
146
|
+
/** @type {?} */
|
|
147
|
+
var htmlTable = (/** @type {?} */ (table));
|
|
148
|
+
htmlTable.style.marginBottom = "10px";
|
|
149
|
+
htmlTable.style.borderCollapse = "collapse";
|
|
150
|
+
htmlTable.style.emptyCells = "show";
|
|
151
|
+
/** @type {?} */
|
|
152
|
+
var tdElements = table.querySelectorAll("td");
|
|
153
|
+
tdElements.forEach((/**
|
|
154
|
+
* @param {?} td
|
|
155
|
+
* @return {?}
|
|
156
|
+
*/
|
|
157
|
+
function (td) {
|
|
158
|
+
td.style.border = "1px solid #adb5bd";
|
|
159
|
+
td.style.height = "20px";
|
|
160
|
+
td.style.minWidth = "20px";
|
|
161
|
+
td.style.padding = "2px 5px";
|
|
162
|
+
td.style.boxSizing = "border-box";
|
|
163
|
+
}));
|
|
164
|
+
}));
|
|
165
|
+
this.change.emit(args);
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* @return {?}
|
|
169
|
+
*/
|
|
170
|
+
RichtexteditorComponent.prototype.onCreate = /**
|
|
171
|
+
* @return {?}
|
|
172
|
+
*/
|
|
173
|
+
function () {
|
|
174
|
+
var _this = this;
|
|
175
|
+
//bind the a click event
|
|
176
|
+
// let editorContent = this.rteObj.contentModule.getEditPanel() as HTMLElement;
|
|
177
|
+
// editorContent.addEventListener('click', this.OnClicked.bind(this));
|
|
178
|
+
//add the line height
|
|
179
|
+
this.editorManager = this.rteObj.formatter.editorManager;
|
|
180
|
+
/** @type {?} */
|
|
181
|
+
var splitButton = new DropDownButton({
|
|
182
|
+
items: lineHeight_items,
|
|
183
|
+
iconCss: "e-icons e-line-spacing",
|
|
184
|
+
select: this.onSelect.bind(this),
|
|
185
|
+
});
|
|
186
|
+
splitButton.appendTo("#lineheight_tbar");
|
|
187
|
+
// ai assist
|
|
188
|
+
/** @type {?} */
|
|
189
|
+
var aiassistantButton = new DropDownButton({
|
|
190
|
+
items: this.queryList,
|
|
191
|
+
// iconCss: "e-btn-icon e-icons e-assistview-icon e-icon-left",
|
|
192
|
+
select: (/**
|
|
193
|
+
* @param {?} args
|
|
194
|
+
* @return {?}
|
|
195
|
+
*/
|
|
196
|
+
function (args) { return _this.aiQuerySelectedMenu(args); }),
|
|
197
|
+
});
|
|
198
|
+
aiassistantButton.appendTo("#ai_assistant_button_tbar");
|
|
199
|
+
};
|
|
200
|
+
/**
|
|
201
|
+
* @private
|
|
202
|
+
* @param {?} args
|
|
203
|
+
* @return {?}
|
|
204
|
+
*/
|
|
205
|
+
RichtexteditorComponent.prototype.onSelect = /**
|
|
206
|
+
* @private
|
|
207
|
+
* @param {?} args
|
|
208
|
+
* @return {?}
|
|
209
|
+
*/
|
|
210
|
+
function (args) {
|
|
211
|
+
if (this.rteObj.formatter.getUndoRedoStack().length === 0) {
|
|
212
|
+
this.rteObj.formatter.saveData();
|
|
213
|
+
}
|
|
214
|
+
/** @type {?} */
|
|
215
|
+
var nodes = this.editorManager.domNode.blockNodes();
|
|
216
|
+
for (var i = 0; nodes.length > i; i++) {
|
|
217
|
+
((/** @type {?} */ (nodes[i]))).style.lineHeight = args.item.text;
|
|
218
|
+
}
|
|
219
|
+
this.rteObj.formatter.saveData();
|
|
220
|
+
this.rteObj.formatter.enableUndo(this.rteObj);
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* @private
|
|
224
|
+
* @param {?} args
|
|
225
|
+
* @return {?}
|
|
226
|
+
*/
|
|
227
|
+
RichtexteditorComponent.prototype.aiQuerySelectedMenu = /**
|
|
228
|
+
* @private
|
|
229
|
+
* @param {?} args
|
|
230
|
+
* @return {?}
|
|
231
|
+
*/
|
|
232
|
+
function (args) {
|
|
233
|
+
this.dialogueOpen(args.item.text);
|
|
234
|
+
};
|
|
235
|
+
/**
|
|
236
|
+
* @param {?} selectedQuery
|
|
237
|
+
* @return {?}
|
|
238
|
+
*/
|
|
239
|
+
RichtexteditorComponent.prototype.dialogueOpen = /**
|
|
240
|
+
* @param {?} selectedQuery
|
|
241
|
+
* @return {?}
|
|
242
|
+
*/
|
|
243
|
+
function (selectedQuery) {
|
|
244
|
+
var _this = this;
|
|
245
|
+
/** @type {?} */
|
|
246
|
+
var selectionText = this.rteObj.getSelectedHtml();
|
|
247
|
+
this.selectedQuery = selectedQuery;
|
|
248
|
+
if (selectionText) {
|
|
249
|
+
/** @type {?} */
|
|
250
|
+
var range = ((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.getRange(((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
|
|
251
|
+
((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.save(range, ((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
|
|
252
|
+
this.dropValIndex = this.queryList.findIndex((/**
|
|
253
|
+
* @param {?} q
|
|
254
|
+
* @return {?}
|
|
255
|
+
*/
|
|
256
|
+
function (q) { return q.text.toLowerCase() === selectedQuery.toLowerCase(); }));
|
|
257
|
+
this.queryCategory.index = this.dropValIndex;
|
|
258
|
+
this.leftRte.value = this.promptQuery = selectionText;
|
|
259
|
+
this.leftRte.refreshUI();
|
|
260
|
+
this.AIdialog.show();
|
|
261
|
+
this.updateAISugesstionsData(selectedQuery);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
this.showMsg = true;
|
|
265
|
+
setTimeout((/**
|
|
266
|
+
* @return {?}
|
|
267
|
+
*/
|
|
268
|
+
function () {
|
|
269
|
+
_this.showMsg = false;
|
|
270
|
+
}), 3000);
|
|
271
|
+
console.log("Please select the content to perform the AI operation.");
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
/**
|
|
275
|
+
* @param {?} selectedQuery
|
|
276
|
+
* @return {?}
|
|
277
|
+
*/
|
|
278
|
+
RichtexteditorComponent.prototype.updateAISugesstionsData = /**
|
|
279
|
+
* @param {?} selectedQuery
|
|
280
|
+
* @return {?}
|
|
281
|
+
*/
|
|
282
|
+
function (selectedQuery) {
|
|
283
|
+
this.isSentimentCheck = false;
|
|
284
|
+
switch (selectedQuery) {
|
|
285
|
+
case "Summarize":
|
|
286
|
+
this.subQuery = "Summarize the upcoming sentence shortly.";
|
|
287
|
+
break;
|
|
288
|
+
case "Elaborate":
|
|
289
|
+
this.subQuery = "Elaborate on the upcoming sentence.";
|
|
290
|
+
break;
|
|
291
|
+
case "Rephrase":
|
|
292
|
+
this.subQuery = this.chipValue + " rephrase the upcoming sentence.";
|
|
293
|
+
break;
|
|
294
|
+
case "Correct Grammar":
|
|
295
|
+
this.subQuery = "Correct the grammar of the upcoming sentence.";
|
|
296
|
+
break;
|
|
297
|
+
case "Translate":
|
|
298
|
+
this.subQuery =
|
|
299
|
+
"Translate the upcoming sentence to " + this.translatelanguage + ".";
|
|
300
|
+
break;
|
|
301
|
+
case "Sentiment Analysis":
|
|
302
|
+
this.isSentimentCheck = true;
|
|
303
|
+
this.subQuery =
|
|
304
|
+
'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:';
|
|
305
|
+
break;
|
|
306
|
+
}
|
|
307
|
+
this.updateAISugesstions();
|
|
308
|
+
};
|
|
309
|
+
/**
|
|
310
|
+
* @return {?}
|
|
311
|
+
*/
|
|
312
|
+
RichtexteditorComponent.prototype.updateAISugesstions = /**
|
|
313
|
+
* @return {?}
|
|
314
|
+
*/
|
|
315
|
+
function () {
|
|
316
|
+
var _this = this;
|
|
317
|
+
try {
|
|
318
|
+
if (this.promptQuery) {
|
|
319
|
+
((/** @type {?} */ (document.getElementById("skeletonId")))).style.display =
|
|
320
|
+
"";
|
|
321
|
+
((/** @type {?} */ (document.getElementById("rightRte")))).style.display =
|
|
322
|
+
"none";
|
|
323
|
+
this.sentimentButton.element.style.display = "none";
|
|
324
|
+
this.regenerateButton.disabled = true;
|
|
325
|
+
this.copyButton.disabled = true;
|
|
326
|
+
this.replaceButton.disabled = true;
|
|
327
|
+
this.apiResultData = this.getResponseFromOpenAI(this.subQuery, this.promptQuery);
|
|
328
|
+
this.apiResultData.then((/**
|
|
329
|
+
* @param {?} result
|
|
330
|
+
* @return {?}
|
|
331
|
+
*/
|
|
332
|
+
function (result) {
|
|
333
|
+
_this.AIResult = _this.isSentimentCheck ? _this.promptQuery : result;
|
|
334
|
+
_this.sentimentButton.content = result
|
|
335
|
+
.toLowerCase()
|
|
336
|
+
.includes("positive")
|
|
337
|
+
? "😊 Positive"
|
|
338
|
+
: result.toLowerCase().includes("negative")
|
|
339
|
+
? "😞 Negative"
|
|
340
|
+
: "😐 Neutral";
|
|
341
|
+
_this.sentimentButton.element.style.display = !_this.isSentimentCheck
|
|
342
|
+
? "none"
|
|
343
|
+
: "";
|
|
344
|
+
_this.rightRte.value = _this.AIResult;
|
|
345
|
+
/** @type {?} */
|
|
346
|
+
var noResultsFound = !(_this.AIResult || _this.promptQuery);
|
|
347
|
+
((/** @type {?} */ (document.getElementById("no-results-found")))).style.display = noResultsFound ? "" : "none";
|
|
348
|
+
_this.regenerateButton.disabled = noResultsFound;
|
|
349
|
+
_this.copyButton.disabled = noResultsFound;
|
|
350
|
+
_this.replaceButton.disabled = noResultsFound;
|
|
351
|
+
((/** @type {?} */ (document.getElementById("skeletonId")))).style.display =
|
|
352
|
+
"none";
|
|
353
|
+
((/** @type {?} */ (document.getElementById("rightRte")))).style.display =
|
|
354
|
+
noResultsFound ? "none" : "";
|
|
355
|
+
console.log(noResultsFound, ((/** @type {?} */ (document.getElementById("rightRte")))).style);
|
|
356
|
+
// this.ref.markForCheck();
|
|
357
|
+
}));
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
catch (_a) {
|
|
361
|
+
// this.toastObj.show();
|
|
362
|
+
}
|
|
363
|
+
};
|
|
364
|
+
/**
|
|
365
|
+
* @param {?} subQuery
|
|
366
|
+
* @param {?} promptQuery
|
|
367
|
+
* @return {?}
|
|
368
|
+
*/
|
|
369
|
+
RichtexteditorComponent.prototype.getResponseFromOpenAI = /**
|
|
370
|
+
* @param {?} subQuery
|
|
371
|
+
* @param {?} promptQuery
|
|
372
|
+
* @return {?}
|
|
373
|
+
*/
|
|
374
|
+
function (subQuery, promptQuery) {
|
|
375
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
376
|
+
var content;
|
|
377
|
+
return tslib_1.__generator(this, function (_a) {
|
|
378
|
+
switch (_a.label) {
|
|
379
|
+
case 0: return [4 /*yield*/, OpenAiModelRTE(subQuery, promptQuery)];
|
|
380
|
+
case 1:
|
|
381
|
+
content = _a.sent();
|
|
382
|
+
return [2 /*return*/, content ? ((/** @type {?} */ (content))) : ""];
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
});
|
|
386
|
+
};
|
|
387
|
+
/**
|
|
388
|
+
* @return {?}
|
|
389
|
+
*/
|
|
390
|
+
RichtexteditorComponent.prototype.dialogShow = /**
|
|
391
|
+
* @return {?}
|
|
392
|
+
*/
|
|
393
|
+
function () {
|
|
394
|
+
var _this = this;
|
|
395
|
+
(/** @type {?} */ (this.regenerateButton)).element.addEventListener("click", (/**
|
|
396
|
+
* @return {?}
|
|
397
|
+
*/
|
|
398
|
+
function () {
|
|
399
|
+
_this.updateAISugesstions();
|
|
400
|
+
}));
|
|
401
|
+
(/** @type {?} */ (this.copyButton)).element.addEventListener("click", (/**
|
|
402
|
+
* @return {?}
|
|
403
|
+
*/
|
|
404
|
+
function () {
|
|
405
|
+
_this.copyTextToClipboard(_this.AIResult);
|
|
406
|
+
}));
|
|
407
|
+
(/** @type {?} */ (this.replaceButton)).element.addEventListener("click", (/**
|
|
408
|
+
* @return {?}
|
|
409
|
+
*/
|
|
410
|
+
function () {
|
|
411
|
+
/** @type {?} */
|
|
412
|
+
var range = ((/** @type {?} */ (_this.rteObj))).formatter.editorManager.nodeSelection.getRange(((/** @type {?} */ (_this.rteObj))).contentModule.getDocument());
|
|
413
|
+
((/** @type {?} */ (_this.rteObj))).formatter.editorManager.nodeSelection.restore(range);
|
|
414
|
+
((/** @type {?} */ (_this.rteObj))).executeCommand("insertHTML", _this.AIResult, {
|
|
415
|
+
undo: true,
|
|
416
|
+
});
|
|
417
|
+
_this.closeDialog();
|
|
418
|
+
}));
|
|
419
|
+
((/** @type {?} */ (this.AIdialog))).element.style.display = "";
|
|
420
|
+
};
|
|
421
|
+
/**
|
|
422
|
+
* @return {?}
|
|
423
|
+
*/
|
|
424
|
+
RichtexteditorComponent.prototype.closeDialog = /**
|
|
425
|
+
* @return {?}
|
|
426
|
+
*/
|
|
427
|
+
function () {
|
|
428
|
+
this.AIdialog.hide();
|
|
429
|
+
this.rightRte.value = "";
|
|
430
|
+
this.leftRte.value = "";
|
|
431
|
+
this.promptQuery = "";
|
|
432
|
+
this.chipValue = "Standard";
|
|
433
|
+
this.AIResult = "";
|
|
434
|
+
this.dropValIndex = 0;
|
|
435
|
+
this.selectedQuery = "Rephrase";
|
|
436
|
+
this.sentimentButton.content = "😊 Neutral";
|
|
437
|
+
};
|
|
438
|
+
/**
|
|
439
|
+
* @param {?} text
|
|
440
|
+
* @return {?}
|
|
441
|
+
*/
|
|
442
|
+
RichtexteditorComponent.prototype.copyTextToClipboard = /**
|
|
443
|
+
* @param {?} text
|
|
444
|
+
* @return {?}
|
|
445
|
+
*/
|
|
446
|
+
function (text) {
|
|
447
|
+
if (navigator.clipboard) {
|
|
448
|
+
navigator.clipboard
|
|
449
|
+
.writeText(text)
|
|
450
|
+
.then((/**
|
|
451
|
+
* @return {?}
|
|
452
|
+
*/
|
|
453
|
+
function () {
|
|
454
|
+
console.log("Text copied to clipboard successfully!");
|
|
455
|
+
}))
|
|
456
|
+
.catch((/**
|
|
457
|
+
* @param {?} err
|
|
458
|
+
* @return {?}
|
|
459
|
+
*/
|
|
460
|
+
function (err) {
|
|
461
|
+
console.error("Failed to copy text: ", err);
|
|
462
|
+
}));
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
// Fallback for browsers that do not support the Clipboard API
|
|
466
|
+
/** @type {?} */
|
|
467
|
+
var textarea = document.createElement("textarea");
|
|
468
|
+
textarea.value = text;
|
|
469
|
+
document.body.appendChild(textarea);
|
|
470
|
+
textarea.select();
|
|
471
|
+
try {
|
|
472
|
+
document.execCommand("copy");
|
|
473
|
+
console.log("Text copied to clipboard using execCommand");
|
|
474
|
+
}
|
|
475
|
+
catch (err) {
|
|
476
|
+
console.error("Failed to copy text: ", err);
|
|
477
|
+
}
|
|
478
|
+
finally {
|
|
479
|
+
document.body.removeChild(textarea);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
};
|
|
483
|
+
/**
|
|
484
|
+
* @return {?}
|
|
485
|
+
*/
|
|
486
|
+
RichtexteditorComponent.prototype.onOverlayClick = /**
|
|
487
|
+
* @return {?}
|
|
488
|
+
*/
|
|
489
|
+
function () {
|
|
490
|
+
/** @type {?} */
|
|
491
|
+
var activeEle = this.AIdialog.element.querySelector(".char_block.e-active");
|
|
492
|
+
if (activeEle) {
|
|
493
|
+
activeEle.classList.remove("e-active");
|
|
494
|
+
}
|
|
495
|
+
this.closeDialog();
|
|
496
|
+
};
|
|
497
|
+
/**
|
|
498
|
+
* @param {?} args
|
|
499
|
+
* @return {?}
|
|
500
|
+
*/
|
|
501
|
+
RichtexteditorComponent.prototype.onQuerySelect = /**
|
|
502
|
+
* @param {?} args
|
|
503
|
+
* @return {?}
|
|
504
|
+
*/
|
|
505
|
+
function (args) {
|
|
506
|
+
// this.chipList.selectedChips = 0;
|
|
507
|
+
this.translatelanguage = "EN";
|
|
508
|
+
this.selectedQuery = args.itemData.text;
|
|
509
|
+
this.updateAISugesstionsData(args.itemData.text);
|
|
510
|
+
};
|
|
511
|
+
/**
|
|
512
|
+
* @param {?} args
|
|
513
|
+
* @return {?}
|
|
514
|
+
*/
|
|
515
|
+
RichtexteditorComponent.prototype.onLanguageSelect = /**
|
|
516
|
+
* @param {?} args
|
|
517
|
+
* @return {?}
|
|
518
|
+
*/
|
|
519
|
+
function (args) {
|
|
520
|
+
this.translatelanguage = args.itemData.id;
|
|
521
|
+
this.updateAISugesstionsData("Translate");
|
|
522
|
+
};
|
|
523
|
+
/**
|
|
524
|
+
* @param {?} args
|
|
525
|
+
* @return {?}
|
|
526
|
+
*/
|
|
527
|
+
RichtexteditorComponent.prototype.onChipClick = /**
|
|
528
|
+
* @param {?} args
|
|
529
|
+
* @return {?}
|
|
530
|
+
*/
|
|
531
|
+
function (args) {
|
|
532
|
+
this.chipValue = args.itemData.text;
|
|
533
|
+
// 事件会触发两次 必须判断args.text是否有值
|
|
534
|
+
if (args.itemData.text)
|
|
535
|
+
this.updateAISugesstionsData("Rephrase");
|
|
536
|
+
};
|
|
537
|
+
/**
|
|
538
|
+
* @param {?} args
|
|
539
|
+
* @return {?}
|
|
540
|
+
*/
|
|
541
|
+
RichtexteditorComponent.prototype._toolbarClick = /**
|
|
542
|
+
* @param {?} args
|
|
543
|
+
* @return {?}
|
|
544
|
+
*/
|
|
545
|
+
function (args) {
|
|
546
|
+
this.toolbarClick.emit(args);
|
|
547
|
+
};
|
|
548
|
+
/**
|
|
549
|
+
* @return {?}
|
|
550
|
+
*/
|
|
551
|
+
RichtexteditorComponent.prototype.hideToast = /**
|
|
552
|
+
* @return {?}
|
|
553
|
+
*/
|
|
554
|
+
function () {
|
|
555
|
+
this.showMsg = false;
|
|
556
|
+
};
|
|
557
|
+
/**
|
|
558
|
+
* @return {?}
|
|
559
|
+
*/
|
|
560
|
+
RichtexteditorComponent.prototype.onZoom = /**
|
|
561
|
+
* @return {?}
|
|
562
|
+
*/
|
|
563
|
+
function () {
|
|
564
|
+
if (this.size === "largest") {
|
|
565
|
+
this.size = ""; // 恢复到原始大小
|
|
566
|
+
}
|
|
567
|
+
else {
|
|
568
|
+
this.size = "largest"; // 设置为最大化
|
|
569
|
+
}
|
|
570
|
+
};
|
|
571
|
+
RichtexteditorComponent.decorators = [
|
|
572
|
+
{ type: Component, args: [{
|
|
573
|
+
selector: "rs-richtext-editor",
|
|
574
|
+
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",
|
|
575
|
+
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}"]
|
|
576
|
+
}] }
|
|
577
|
+
];
|
|
578
|
+
/** @nocollapse */
|
|
579
|
+
RichtexteditorComponent.ctorParameters = function () { return [
|
|
580
|
+
{ type: ChangeDetectorRef }
|
|
581
|
+
]; };
|
|
582
|
+
RichtexteditorComponent.propDecorators = {
|
|
583
|
+
rteObj: [{ type: ViewChild, args: ["editor", { static: false },] }],
|
|
584
|
+
queryCategory: [{ type: ViewChild, args: ["queryCategory", { static: false },] }],
|
|
585
|
+
leftRte: [{ type: ViewChild, args: ["leftRte", { static: false },] }],
|
|
586
|
+
rightRte: [{ type: ViewChild, args: ["rightRte", { static: false },] }],
|
|
587
|
+
AIdialog: [{ type: ViewChild, args: ["AIdialog", { static: true },] }],
|
|
588
|
+
sentimentButton: [{ type: ViewChild, args: ["sentimentButton", { static: false },] }],
|
|
589
|
+
regenerateButton: [{ type: ViewChild, args: ["regenerateButton", { static: false },] }],
|
|
590
|
+
copyButton: [{ type: ViewChild, args: ["copyButton", { static: false },] }],
|
|
591
|
+
replaceButton: [{ type: ViewChild, args: ["replaceButton", { static: false },] }],
|
|
592
|
+
placeholder: [{ type: Input }],
|
|
593
|
+
value: [{ type: Input }],
|
|
594
|
+
height: [{ type: Input }],
|
|
595
|
+
autoSaveOnIdle: [{ type: Input }],
|
|
596
|
+
target: [{ type: Input }],
|
|
597
|
+
toolbarClick: [{ type: Output }],
|
|
598
|
+
change: [{ type: Output }]
|
|
599
|
+
};
|
|
600
|
+
return RichtexteditorComponent;
|
|
601
|
+
}());
|
|
602
|
+
export { RichtexteditorComponent };
|
|
603
|
+
if (false) {
|
|
604
|
+
/** @type {?} */
|
|
605
|
+
RichtexteditorComponent.prototype.rteObj;
|
|
606
|
+
/** @type {?} */
|
|
607
|
+
RichtexteditorComponent.prototype.queryCategory;
|
|
608
|
+
/** @type {?} */
|
|
609
|
+
RichtexteditorComponent.prototype.leftRte;
|
|
610
|
+
/** @type {?} */
|
|
611
|
+
RichtexteditorComponent.prototype.rightRte;
|
|
612
|
+
/** @type {?} */
|
|
613
|
+
RichtexteditorComponent.prototype.AIdialog;
|
|
614
|
+
/** @type {?} */
|
|
615
|
+
RichtexteditorComponent.prototype.sentimentButton;
|
|
616
|
+
/** @type {?} */
|
|
617
|
+
RichtexteditorComponent.prototype.regenerateButton;
|
|
618
|
+
/** @type {?} */
|
|
619
|
+
RichtexteditorComponent.prototype.copyButton;
|
|
620
|
+
/** @type {?} */
|
|
621
|
+
RichtexteditorComponent.prototype.replaceButton;
|
|
622
|
+
/** @type {?} */
|
|
623
|
+
RichtexteditorComponent.prototype.placeholder;
|
|
624
|
+
/** @type {?} */
|
|
625
|
+
RichtexteditorComponent.prototype.value;
|
|
626
|
+
/** @type {?} */
|
|
627
|
+
RichtexteditorComponent.prototype.height;
|
|
628
|
+
/** @type {?} */
|
|
629
|
+
RichtexteditorComponent.prototype.autoSaveOnIdle;
|
|
630
|
+
/** @type {?} */
|
|
631
|
+
RichtexteditorComponent.prototype.target;
|
|
632
|
+
/** @type {?} */
|
|
633
|
+
RichtexteditorComponent.prototype.toolbarClick;
|
|
634
|
+
/** @type {?} */
|
|
635
|
+
RichtexteditorComponent.prototype.change;
|
|
636
|
+
/** @type {?} */
|
|
637
|
+
RichtexteditorComponent.prototype.family;
|
|
638
|
+
/** @type {?} */
|
|
639
|
+
RichtexteditorComponent.prototype.dialogWidth;
|
|
640
|
+
/** @type {?} */
|
|
641
|
+
RichtexteditorComponent.prototype.dialogHeight;
|
|
642
|
+
/** @type {?} */
|
|
643
|
+
RichtexteditorComponent.prototype.showZoomBtn;
|
|
644
|
+
/** @type {?} */
|
|
645
|
+
RichtexteditorComponent.prototype.showMsg;
|
|
646
|
+
/** @type {?} */
|
|
647
|
+
RichtexteditorComponent.prototype.insertImageSettings;
|
|
648
|
+
/** @type {?} */
|
|
649
|
+
RichtexteditorComponent.prototype.editorManager;
|
|
650
|
+
/** @type {?} */
|
|
651
|
+
RichtexteditorComponent.prototype.size;
|
|
652
|
+
/** @type {?} */
|
|
653
|
+
RichtexteditorComponent.prototype.selectedQuery;
|
|
654
|
+
/** @type {?} */
|
|
655
|
+
RichtexteditorComponent.prototype.dropValIndex;
|
|
656
|
+
/** @type {?} */
|
|
657
|
+
RichtexteditorComponent.prototype.queryList;
|
|
658
|
+
/** @type {?} */
|
|
659
|
+
RichtexteditorComponent.prototype.rephraseTyleList;
|
|
660
|
+
/** @type {?} */
|
|
661
|
+
RichtexteditorComponent.prototype.languageList;
|
|
662
|
+
/** @type {?} */
|
|
663
|
+
RichtexteditorComponent.prototype.promptQuery;
|
|
664
|
+
/** @type {?} */
|
|
665
|
+
RichtexteditorComponent.prototype.isSentimentCheck;
|
|
666
|
+
/** @type {?} */
|
|
667
|
+
RichtexteditorComponent.prototype.subQuery;
|
|
668
|
+
/** @type {?} */
|
|
669
|
+
RichtexteditorComponent.prototype.translatelanguage;
|
|
670
|
+
/** @type {?} */
|
|
671
|
+
RichtexteditorComponent.prototype.chipValue;
|
|
672
|
+
/** @type {?} */
|
|
673
|
+
RichtexteditorComponent.prototype.apiResultData;
|
|
674
|
+
/** @type {?} */
|
|
675
|
+
RichtexteditorComponent.prototype.AIResult;
|
|
676
|
+
/** @type {?} */
|
|
677
|
+
RichtexteditorComponent.prototype.tools;
|
|
678
|
+
/**
|
|
679
|
+
* @type {?}
|
|
680
|
+
* @private
|
|
681
|
+
*/
|
|
682
|
+
RichtexteditorComponent.prototype.ref;
|
|
683
|
+
}
|
|
684
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL3JpY2h0ZXh0ZWRpdG9yL2luZGV4LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUNMLHVCQUF1QixHQUV4QixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7O0FBSWpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0M7SUF5SUUsaUNBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1COztRQTlHakMsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFdBQU0sR0FBRyxHQUFHLENBQUM7UUFDYixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixXQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsY0FBYzs7UUFFcEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDOztRQUd0QyxXQUFNLEdBQUcsVUFBVSxDQUFD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QyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzhCQUk1QyxLQUFLO3dCQUNMLEtBQUs7eUJBQ0wsS0FBSztpQ0FDTCxLQUFLO3lCQUNMLEtBQUs7K0JBRUwsTUFBTTt5QkFDTixNQUFNOztJQWdZVCw4QkFBQztDQUFBLEFBbGFELElBa2FDO1NBM1pZLHVCQUF1Qjs7O0lBQ2xDLHlDQUN1Qzs7SUFDdkMsZ0RBQzZDOztJQUM3QywwQ0FDeUM7O0lBQ3pDLDJDQUMwQzs7SUFDMUMsMkNBQTJFOztJQUMzRSxrREFDeUM7O0lBQ3pDLG1EQUMwQzs7SUFDMUMsNkNBQ29DOztJQUNwQyxnREFDdUM7O0lBR3ZDLDhDQUEwQjs7SUFDMUIsd0NBQW9COztJQUNwQix5Q0FBc0I7O0lBQ3RCLGlEQUErQjs7SUFDL0IseUNBQStCOztJQUUvQiwrQ0FBNEM7O0lBQzVDLHlDQUFzQzs7SUFHdEMseUNBQW9COztJQUNwQiw4Q0FBc0I7O0lBQ3RCLCtDQUF1Qjs7SUFDdkIsOENBQW1COztJQUNuQiwwQ0FBZ0I7O0lBQ2hCLHNEQUlFOztJQUNGLGdEQUFtQjs7SUFDbkIsdUNBQVU7O0lBQ1YsZ0RBQWM7O0lBQ2QsK0NBQXdCOztJQUN4Qiw0Q0FPRTs7SUFDRixtREFJRTs7SUFDRiwrQ0FnQkU7O0lBQ0YsOENBQXdCOztJQUN4QixtREFBeUM7O0lBQ3pDLDJDQUFxQjs7SUFDckIsb0RBQWtDOztJQUNsQyw0Q0FBOEI7O0lBQzlCLGdEQUEwQjs7SUFDMUIsMkNBQXlCOztJQUN6Qix3Q0ErQ0U7Ozs7O0lBRVUsc0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERyb3BEb3duTGlzdENvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHtcclxuICBSaWNoVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICBUb29sYmFyU2V0dGluZ3NNb2RlbCxcclxufSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcmljaHRleHRlZGl0b3JcIjtcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJ1dHRvbnNcIjtcclxuaW1wb3J0IHsgRHJvcERvd25CdXR0b24gfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItc3BsaXRidXR0b25zXCI7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1wb3B1cHNcIjtcclxuLy8gc2VydmljZVxyXG4vLyBpbXBvcnQgeyBQYkZ1blNlcnZpY2UgfSBmcm9tIFwiQGFwcC9zZXJ2aWNlcy9wYi1mdW4uc2VydmljZVwiO1xyXG4vLyBpbXBvcnQgeyBTaGFyZWRTeW5jZnVzaW9uTW9kdWxlIH0gZnJvbSBcIkBhcHAvbW9kdWxlL3N5bmNmdXNpb25Nb2R1bGVcIjtcclxuaW1wb3J0IHsgT3BlbkFpTW9kZWxSVEUgfSBmcm9tIFwiLi9vcGVuYXBpXCI7XHJcbmltcG9ydCB7IGxpbmVIZWlnaHRfaXRlbXMgfSBmcm9tIFwiLi9kYXRhLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBmb250RmFtaWx5IH0gZnJvbSBcIi4vZGF0YS1jb25maWdcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLXJpY2h0ZXh0LWVkaXRvclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgLy8gc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAvLyBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWRTeW5jZnVzaW9uTW9kdWxlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJpY2h0ZXh0ZWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKFwiZWRpdG9yXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBydGVPYmo6IFJpY2hUZXh0RWRpdG9yQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJxdWVyeUNhdGVnb3J5XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBxdWVyeUNhdGVnb3J5ITogRHJvcERvd25MaXN0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJsZWZ0UnRlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBsZWZ0UnRlITogUmljaFRleHRFZGl0b3JDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInJpZ2h0UnRlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyByaWdodFJ0ZSE6IFJpY2hUZXh0RWRpdG9yQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJBSWRpYWxvZ1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgQUlkaWFsb2chOiBEaWFsb2dDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInNlbnRpbWVudEJ1dHRvblwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgc2VudGltZW50QnV0dG9uITogQnV0dG9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJyZWdlbmVyYXRlQnV0dG9uXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyByZWdlbmVyYXRlQnV0dG9uITogQnV0dG9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJjb3B5QnV0dG9uXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBjb3B5QnV0dG9uITogQnV0dG9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJyZXBsYWNlQnV0dG9uXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyByZXBsYWNlQnV0dG9uITogQnV0dG9uQ29tcG9uZW50O1xyXG4gIC8vIEBWaWV3Q2hpbGQoXCJjaGlwTGlzdFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIGNoaXBMaXN0ITogQ2hpcExpc3RDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gXCJcIjtcclxuICBASW5wdXQoKSB2YWx1ZSA9IFwiXCI7XHJcbiAgQElucHV0KCkgaGVpZ2h0ID0gMTUwO1xyXG4gIEBJbnB1dCgpIGF1dG9TYXZlT25JZGxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSB0YXJnZXQgPSBcIiNjb250YWluZXJcIjsgLy8gZGlhbG9nIOW8ueeql+eItue6p1xyXG5cclxuICBAT3V0cHV0KCkgdG9vbGJhckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLy8gQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgZmFtaWx5ID0gZm9udEZhbWlseTtcclxuICBkaWFsb2dXaWR0aCA9IFwiODAwcHhcIjtcclxuICBkaWFsb2dIZWlnaHQgPSBcIjY0MnB4XCI7XHJcbiAgc2hvd1pvb21CdG4gPSB0cnVlO1xyXG4gIHNob3dNc2cgPSBmYWxzZTtcclxuICBpbnNlcnRJbWFnZVNldHRpbmdzID0ge1xyXG4gICAgc2F2ZUZvcm1hdDogXCJCbG9iXCIsXHJcbiAgICBhbGxvd2VkVHlwZXM6IFtcIi5zdmdcIiwgXCIucG5nXCJdLFxyXG4gICAgZGlzcGxheTogXCJub25lXCIsXHJcbiAgfTtcclxuICBlZGl0b3JNYW5hZ2VyOiBhbnk7XHJcbiAgc2l6ZSA9IFwiXCI7XHJcbiAgc2VsZWN0ZWRRdWVyeTtcclxuICBwdWJsaWMgZHJvcFZhbEluZGV4ID0gMDtcclxuICBwdWJsaWMgcXVlcnlMaXN0OiB7IGlkOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9W10gPSBbXHJcbiAgICB7IGlkOiBcIlJlcGhyYXNlXCIsIHRleHQ6IFwiUmVwaHJhc2VcIiB9LFxyXG4gICAgeyBpZDogXCJHcmFtbWFyXCIsIHRleHQ6IFwiQ29ycmVjdCBHcmFtbWFyXCIgfSxcclxuICAgIHsgaWQ6IFwiU3VtbWFyaXplXCIsIHRleHQ6IFwiU3VtbWFyaXplXCIgfSxcclxuICAgIHsgaWQ6IFwiRWxhYm9yYXRlXCIsIHRleHQ6IFwiRWxhYm9yYXRlXCIgfSxcclxuICAgIHsgaWQ6IFwiVHJhbnNsYXRlXCIsIHRleHQ6IFwiVHJhbnNsYXRlXCIgfSxcclxuICAgIHsgaWQ6IFwiU2VudGltZW50QW5hbHlzaXNcIiwgdGV4dDogXCJTZW50aW1lbnQgQW5hbHlzaXNcIiB9LFxyXG4gIF07XHJcbiAgcHVibGljIHJlcGhyYXNlVHlsZUxpc3QgPSBbXHJcbiAgICB7IHRleHQ6IFwiU3RhbmRhcmRcIiwgaWQ6IFwiU3RhbmRhcmRcIiB9LFxyXG4gICAgeyB0ZXh0OiBcIkZsdWVudFwiLCBpZDogXCJGbHVlbnRcIiB9LFxyXG4gICAgeyB0ZXh0OiBcIlByb2Zlc3Npb25hbFwiLCBpZDogXCJQcm9mZXNzaW9uYWxcIiB9LFxyXG4gIF07XHJcbiAgcHVibGljIGxhbmd1YWdlTGlzdDogeyBpZDogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfVtdID0gW1xyXG4gICAgeyBpZDogXCJFTlwiLCB0ZXh0OiBcIkVuZ2xpc2hcIiB9LFxyXG4gICAgeyBpZDogXCJaSFwiLCB0ZXh0OiBcIkNoaW5lc2UgKFNpbXBsaWZpZWQpXCIgfSxcclxuICAgIHsgaWQ6IFwiRVNcIiwgdGV4dDogXCJTcGFuaXNoXCIgfSxcclxuICAgIHsgaWQ6IFwiWkhUXCIsIHRleHQ6IFwiQ2hpbmVzZSAoVHJhZGl0aW9uYWwpXCIgfSxcclxuICAgIHsgaWQ6IFwiSElcIiwgdGV4dDogXCJIaW5kaVwiIH0sXHJcbiAgICB7IGlkOiBcIkFSXCIsIHRleHQ6IFwiQXJhYmljXCIgfSxcclxuICAgIHsgaWQ6IFwiQk5cIiwgdGV4dDogXCJCZW5nYWxpXCIgfSxcclxuICAgIHsgaWQ6IFwiUFRcIiwgdGV4dDogXCJQb3J0dWd1ZXNlXCIgfSxcclxuICAgIHsgaWQ6IFwiUlVcIiwgdGV4dDogXCJSdXNzaWFuXCIgfSxcclxuICAgIHsgaWQ6IFwiSkFcIiwgdGV4dDogXCJKYXBhbmVzZVwiIH0sXHJcbiAgICB7IGlkOiBcIkRFXCIsIHRleHQ6IFwiR2VybWFuXCIgfSxcclxuICAgIHsgaWQ6IFwiS09cIiwgdGV4dDogXCJLb3JlYW5cIiB9LFxyXG4gICAgeyBpZDogXCJGUlwiLCB0ZXh0OiBcIkZyZW5jaFwiIH0sXHJcbiAgICB7IGlkOiBcIklUXCIsIHRleHQ6IFwiSXRhbGlhblwiIH0sXHJcbiAgICB7IGlkOiBcIlRSXCIsIHRleHQ6IFwiVHVya2lzaFwiIH0sXHJcbiAgXTtcclxuICBwdWJsaWMgcHJvbXB0UXVlcnkgPSBcIlwiO1xyXG4gIHB1YmxpYyBpc1NlbnRpbWVudENoZWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHN1YlF1ZXJ5ID0gXCJcIjtcclxuICBwdWJsaWMgdHJhbnNsYXRlbGFuZ3VhZ2UhOiBzdHJpbmc7XHJcbiAgcHVibGljIGNoaXBWYWx1ZSA9IFwiU3RhbmRhcmRcIjtcclxuICBwdWJsaWMgYXBpUmVzdWx0RGF0YTogYW55O1xyXG4gIHB1YmxpYyBBSVJlc3VsdCE6IHN0cmluZztcclxuICB0b29sczogVG9vbGJhclNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICBlbmFibGVGbG9hdGluZzogZmFsc2UsXHJcbiAgICBpdGVtczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdG9vbHRpcFRleHQ6IFwiQUkgQXNzaXN0XCIsXHJcbiAgICAgICAgdGVtcGxhdGU6XHJcbiAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz1cImUtdGJhci1idG4gZS1idG5cIiB0YWJpbmRleD1cIi0xXCIgaWQ9XCJhaV9hc3Npc3RhbnRfYnV0dG9uX3RiYXJcIiBzdHlsZT1cIndpZHRoOjEwMCVcIj48ZGl2IGNsYXNzPVwiZS1ydGUtZHJvcGRvd24tYnRuLXRleHRcIj5BSSBBc3Npc3Q8L2Rpdj48L2J1dHRvbj4nLFxyXG4gICAgICB9LFxyXG4gICAgICBcIkJvbGRcIixcclxuICAgICAgXCJJdGFsaWNcIixcclxuICAgICAgXCJVbmRlcmxpbmVcIixcclxuICAgICAgXCJTdHJpa2VUaHJvdWdoXCIsXHJcbiAgICAgIFwiRm9udE5hbWVcIixcclxuICAgICAgXCJGb250U2l6ZVwiLFxyXG4gICAgICBcIkZvbnRDb2xvclwiLFxyXG4gICAgICBcIkJhY2tncm91bmRDb2xvclwiLFxyXG4gICAgICBcIkxvd2VyQ2FzZVwiLFxyXG4gICAgICBcIlVwcGVyQ2FzZVwiLFxyXG4gICAgICBcInxcIixcclxuICAgICAgXCJDcmVhdGVUYWJsZVwiLFxyXG4gICAgICBcIkZvcm1hdHNcIixcclxuICAgICAgXCJBbGlnbm1lbnRzXCIsXHJcbiAgICAgIHtcclxuICAgICAgICB0b29sdGlwVGV4dDogXCJMaW5lIEhlaWdodFwiLFxyXG4gICAgICAgIHRlbXBsYXRlOlxyXG4gICAgICAgICAgJzxidXR0b24gY2xhc3M9XCJlLXRiYXItYnRuIGUtYnRuXCIgdGFiaW5kZXg9XCItMVwiIGlkPVwibGluZWhlaWdodF90YmFyXCIgIHN0eWxlPVwid2lkdGg6MTAwJVwiPjwvYnV0dG9uPicsXHJcbiAgICAgIH0sXHJcbiAgICAgIFwiT3JkZXJlZExpc3RcIixcclxuICAgICAgXCJVbm9yZGVyZWRMaXN0XCIsXHJcbiAgICAgIFwiT3V0ZGVudFwiLFxyXG4gICAgICBcIkluZGVudFwiLFxyXG4gICAgICBcInxcIixcclxuICAgICAgXCJDcmVhdGVMaW5rXCIsXHJcbiAgICAgIHtcclxuICAgICAgICB0b29sdGlwVGV4dDogXCJcIixcclxuICAgICAgICB0ZW1wbGF0ZTpcclxuICAgICAgICAgICc8YnV0dG9uIGNsYXNzPVwiZS10YmFyLWJ0biBlLWJ0blwiIHRhYmluZGV4PVwiLTFcIiBpZD1cImN1c3RvbV90YmFyXCIgIHN0eWxlPVwid2lkdGg6MTAwJVwiPicgK1xyXG4gICAgICAgICAgJzxkaXYgY2xhc3M9XCJlLXRiYXItYnRuLXRleHRcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDA7XCI+PGltZyBzcmM9XCIvYXNzZXRzL2ltZy9maWxlLWljb24uc3ZnXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7dG9wOiAtMnB4O1wiLz48ZGl2IGNsYXNzPVwidXBsb2FkQWN0aW9uc1wiPjxkaXYgaWQ9XCJ1cGxvYWRGcm9tVXNlclwiPkNvbXB1dGVyIEZpbGU8L2Rpdj48ZGl2IGlkPVwicmVsYXRpb25Eb21cIj5UaWNrZXQgQXR0YWNobWVudDwvZGl2PjwvZGl2PjwvZGl2PjwvYnV0dG9uPicsXHJcbiAgICAgIH0sXHJcbiAgICAgIFwifFwiLFxyXG4gICAgICBcIkZvcm1hdFBhaW50ZXJcIixcclxuICAgICAgXCJDbGVhckZvcm1hdFwiLFxyXG4gICAgICBcInxcIixcclxuICAgICAgXCJVbmRvXCIsXHJcbiAgICAgIFwiUmVkb1wiLFxyXG4gICAgICAvLydTb3VyY2VDb2RlJyxcclxuICAgIF0sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gIG9uQ29udGVudENoYW5nZShhcmdzKSB7XHJcbiAgICBjb25zdCB0YWJsZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwidGFibGUuZS1ydGUtdGFibGVcIik7XHJcbiAgICB0YWJsZXMuZm9yRWFjaCgodGFibGUpID0+IHtcclxuICAgICAgY29uc3QgaHRtbFRhYmxlID0gdGFibGUgYXMgSFRNTFRhYmxlRWxlbWVudDtcclxuICAgICAgaHRtbFRhYmxlLnN0eWxlLm1hcmdpbkJvdHRvbSA9IFwiMTBweFwiO1xyXG4gICAgICBodG1sVGFibGUuc3R5bGUuYm9yZGVyQ29sbGFwc2UgPSBcImNvbGxhcHNlXCI7XHJcbiAgICAgIGh0bWxUYWJsZS5zdHlsZS5lbXB0eUNlbGxzID0gXCJzaG93XCI7XHJcbiAgICAgIGNvbnN0IHRkRWxlbWVudHMgPSB0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKFwidGRcIik7XHJcbiAgICAgIHRkRWxlbWVudHMuZm9yRWFjaCgodGQpID0+IHtcclxuICAgICAgICB0ZC5zdHlsZS5ib3JkZXIgPSBcIjFweCBzb2xpZCAjYWRiNWJkXCI7XHJcbiAgICAgICAgdGQuc3R5bGUuaGVpZ2h0ID0gXCIyMHB4XCI7XHJcbiAgICAgICAgdGQuc3R5bGUubWluV2lkdGggPSBcIjIwcHhcIjtcclxuICAgICAgICB0ZC5zdHlsZS5wYWRkaW5nID0gXCIycHggNXB4XCI7XHJcbiAgICAgICAgdGQuc3R5bGUuYm94U2l6aW5nID0gXCJib3JkZXItYm94XCI7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNoYW5nZS5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ3JlYXRlKCk6IHZvaWQge1xyXG4gICAgLy9iaW5kIHRoZSBhIGNsaWNrIGV2ZW50XHJcbiAgICAvLyBsZXQgZWRpdG9yQ29udGVudCA9IHRoaXMucnRlT2JqLmNvbnRlbnRNb2R1bGUuZ2V0RWRpdFBhbmVsKCkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAvLyBlZGl0b3JDb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5PbkNsaWNrZWQuYmluZCh0aGlzKSk7XHJcbiAgICAvL2FkZCB0aGUgbGluZSBoZWlnaHRcclxuICAgIHRoaXMuZWRpdG9yTWFuYWdlciA9IHRoaXMucnRlT2JqLmZvcm1hdHRlci5lZGl0b3JNYW5hZ2VyO1xyXG4gICAgbGV0IHNwbGl0QnV0dG9uID0gbmV3IERyb3BEb3duQnV0dG9uKHtcclxuICAgICAgaXRlbXM6IGxpbmVIZWlnaHRfaXRlbXMsXHJcbiAgICAgIGljb25Dc3M6IFwiZS1pY29ucyBlLWxpbmUtc3BhY2luZ1wiLFxyXG4gICAgICBzZWxlY3Q6IHRoaXMub25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgIH0pO1xyXG4gICAgc3BsaXRCdXR0b24uYXBwZW5kVG8oXCIjbGluZWhlaWdodF90YmFyXCIpO1xyXG4gICAgLy8gYWkgYXNzaXN0XHJcbiAgICBsZXQgYWlhc3Npc3RhbnRCdXR0b24gPSBuZXcgRHJvcERvd25CdXR0b24oe1xyXG4gICAgICBpdGVtczogdGhpcy5xdWVyeUxpc3QsXHJcbiAgICAgIC8vIGljb25Dc3M6IFwiZS1idG4taWNvbiBlLWljb25zIGUtYXNzaXN0dmlldy1pY29uIGUtaWNvbi1sZWZ0XCIsXHJcbiAgICAgIHNlbGVjdDogKGFyZ3MpID0+IHRoaXMuYWlRdWVyeVNlbGVjdGVkTWVudShhcmdzKSxcclxuICAgIH0pO1xyXG4gICAgYWlhc3Npc3RhbnRCdXR0b24uYXBwZW5kVG8oXCIjYWlfYXNzaXN0YW50X2J1dHRvbl90YmFyXCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblNlbGVjdChhcmdzKSB7XHJcbiAgICBpZiAodGhpcy5ydGVPYmouZm9ybWF0dGVyLmdldFVuZG9SZWRvU3RhY2soKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5ydGVPYmouZm9ybWF0dGVyLnNhdmVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBsZXQgbm9kZXM6IE5vZGVbXSA9IHRoaXMuZWRpdG9yTWFuYWdlci5kb21Ob2RlLmJsb2NrTm9kZXMoKTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IG5vZGVzLmxlbmd0aCA+IGk7IGkrKykge1xyXG4gICAgICAobm9kZXNbaV0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmxpbmVIZWlnaHQgPSBhcmdzLml0ZW0udGV4dDtcclxuICAgIH1cclxuICAgIHRoaXMucnRlT2JqLmZvcm1hdHRlci5zYXZlRGF0YSgpO1xyXG4gICAgdGhpcy5ydGVPYmouZm9ybWF0dGVyLmVuYWJsZVVuZG8odGhpcy5ydGVPYmopO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhaVF1ZXJ5U2VsZWN0ZWRNZW51KGFyZ3M6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2d1ZU9wZW4oYXJncy5pdGVtLnRleHQpO1xyXG4gIH1cclxuXHJcbiAgZGlhbG9ndWVPcGVuKHNlbGVjdGVkUXVlcnk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdmFyIHNlbGVjdGlvblRleHQgPSB0aGlzLnJ0ZU9iai5nZXRTZWxlY3RlZEh0bWwoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRRdWVyeSA9IHNlbGVjdGVkUXVlcnk7XHJcbiAgICBpZiAoc2VsZWN0aW9uVGV4dCkge1xyXG4gICAgICBsZXQgcmFuZ2U6IFJhbmdlID0gKFxyXG4gICAgICAgIHRoaXMucnRlT2JqIGFzIGFueVxyXG4gICAgICApLmZvcm1hdHRlci5lZGl0b3JNYW5hZ2VyLm5vZGVTZWxlY3Rpb24uZ2V0UmFuZ2UoXHJcbiAgICAgICAgKHRoaXMucnRlT2JqIGFzIGFueSkuY29udGVudE1vZHVsZS5nZXREb2N1bWVudCgpXHJcbiAgICAgICk7XHJcbiAgICAgICh0aGlzLnJ0ZU9iaiBhcyBhbnkpLmZvcm1hdHRlci5lZGl0b3JNYW5hZ2VyLm5vZGVTZWxlY3Rpb24uc2F2ZShcclxuICAgICAgICByYW5nZSxcclxuICAgICAgICAodGhpcy5ydGVPYmogYXMgYW55KS5jb250ZW50TW9kdWxlLmdldERvY3VtZW50KClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kcm9wVmFsSW5kZXggPSB0aGlzLnF1ZXJ5TGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgKHEpID0+IHEudGV4dC50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFF1ZXJ5LnRvTG93ZXJDYXNlKClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5xdWVyeUNhdGVnb3J5LmluZGV4ID0gdGhpcy5kcm9wVmFsSW5kZXg7XHJcbiAgICAgIHRoaXMubGVmdFJ0ZS52YWx1ZSA9IHRoaXMucHJvbXB0UXVlcnkgPSBzZWxlY3Rpb25UZXh0O1xyXG4gICAgICB0aGlzLmxlZnRSdGUucmVmcmVzaFVJKCk7XHJcbiAgICAgIHRoaXMuQUlkaWFsb2cuc2hvdygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFJU3VnZXNzdGlvbnNEYXRhKHNlbGVjdGVkUXVlcnkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93TXNnID0gdHJ1ZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93TXNnID0gZmFsc2U7XHJcbiAgICAgIH0sIDMwMDApO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlBsZWFzZSBzZWxlY3QgdGhlIGNvbnRlbnQgdG8gcGVyZm9ybSB0aGUgQUkgb3BlcmF0aW9uLlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUFJU3VnZXNzdGlvbnNEYXRhKHNlbGVjdGVkUXVlcnk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1NlbnRpbWVudENoZWNrID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKHNlbGVjdGVkUXVlcnkpIHtcclxuICAgICAgY2FzZSBcIlN1bW1hcml6ZVwiOlxyXG4gICAgICAgIHRoaXMuc3ViUXVlcnkgPSBcIlN1bW1hcml6ZSB0aGUgdXBjb21pbmcgc2VudGVuY2Ugc2hvcnRseS5cIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkVsYWJvcmF0ZVwiOlxyXG4gICAgICAgIHRoaXMuc3ViUXVlcnkgPSBcIkVsYWJvcmF0ZSBvbiB0aGUgdXBjb21pbmcgc2VudGVuY2UuXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJSZXBocmFzZVwiOlxyXG4gICAgICAgIHRoaXMuc3ViUXVlcnkgPSB0aGlzLmNoaXBWYWx1ZSArIFwiIHJlcGhyYXNlIHRoZSB1cGNvbWluZyBzZW50ZW5jZS5cIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkNvcnJlY3QgR3JhbW1hclwiOlxyXG4gICAgICAgIHRoaXMuc3ViUXVlcnkgPSBcIkNvcnJlY3QgdGhlIGdyYW1tYXIgb2YgdGhlIHVwY29taW5nIHNlbnRlbmNlLlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiVHJhbnNsYXRlXCI6XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9XHJcbiAgICAgICAgICBcIlRyYW5zbGF0ZSB0aGUgdXBjb21pbmcgc2VudGVuY2UgdG8gXCIgKyB0aGlzLnRyYW5zbGF0ZWxhbmd1YWdlICsgXCIuXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJTZW50aW1lbnQgQW5hbHlzaXNcIjpcclxuICAgICAgICB0aGlzLmlzU2VudGltZW50Q2hlY2sgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3ViUXVlcnkgPVxyXG4gICAgICAgICAgJ0FuYWx5emUgdGhlIHNlbnRpbWVudCBhbmQgZ3JhbW1hciBvZiB0aGUgZm9sbG93aW5nIHBhcmFncmFwaHMgYW5kIHByb3ZpZGUgdGhlIGV4cHJlc3Npb24gc2NvcmUgd2l0aCBhbiBlbW9qaSBmb2xsb3dlZCBieSB0aGUgc2VudGltZW50IGluIHRoZSBmb3JtYXQ6IFwi8J+YiiBOZXV0cmFsXCIuIFxcblxcbk5PVEU6IEF2b2lkIGFueSBhZGRpdGlvbmFsIHRleHQgb3IgZXhwbGFuYXRpb246JztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQUlTdWdlc3N0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQUlTdWdlc3N0aW9ucygpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnByb21wdFF1ZXJ5KSB7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2tlbGV0b25JZFwiKSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9XHJcbiAgICAgICAgICBcIlwiO1xyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJpZ2h0UnRlXCIpIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID1cclxuICAgICAgICAgIFwibm9uZVwiO1xyXG4gICAgICAgIHRoaXMuc2VudGltZW50QnV0dG9uLmVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgIHRoaXMucmVnZW5lcmF0ZUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb3B5QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlcGxhY2VCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYXBpUmVzdWx0RGF0YSA9IHRoaXMuZ2V0UmVzcG9uc2VGcm9tT3BlbkFJKFxyXG4gICAgICAgICAgdGhpcy5zdWJRdWVyeSxcclxuICAgICAgICAgIHRoaXMucHJvbXB0UXVlcnlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuYXBpUmVzdWx0RGF0YS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5BSVJlc3VsdCA9IHRoaXMuaXNTZW50aW1lbnRDaGVjayA/IHRoaXMucHJvbXB0UXVlcnkgOiByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnNlbnRpbWVudEJ1dHRvbi5jb250ZW50ID0gcmVzdWx0XHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5pbmNsdWRlcyhcInBvc2l0aXZlXCIpXHJcbiAgICAgICAgICAgID8gXCLwn5iKIFBvc2l0aXZlXCJcclxuICAgICAgICAgICAgOiByZXN1bHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIm5lZ2F0aXZlXCIpXHJcbiAgICAgICAgICAgID8gXCLwn5ieIE5lZ2F0aXZlXCJcclxuICAgICAgICAgICAgOiBcIvCfmJAgTmV1dHJhbFwiO1xyXG4gICAgICAgICAgdGhpcy5zZW50aW1lbnRCdXR0b24uZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gIXRoaXMuaXNTZW50aW1lbnRDaGVja1xyXG4gICAgICAgICAgICA/IFwibm9uZVwiXHJcbiAgICAgICAgICAgIDogXCJcIjtcclxuICAgICAgICAgIHRoaXMucmlnaHRSdGUudmFsdWUgPSB0aGlzLkFJUmVzdWx0O1xyXG4gICAgICAgICAgdmFyIG5vUmVzdWx0c0ZvdW5kID0gISh0aGlzLkFJUmVzdWx0IHx8IHRoaXMucHJvbXB0UXVlcnkpO1xyXG4gICAgICAgICAgKFxyXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5vLXJlc3VsdHMtZm91bmRcIikgYXMgSFRNTEVsZW1lbnRcclxuICAgICAgICAgICkuc3R5bGUuZGlzcGxheSA9IG5vUmVzdWx0c0ZvdW5kID8gXCJcIiA6IFwibm9uZVwiO1xyXG4gICAgICAgICAgdGhpcy5yZWdlbmVyYXRlQnV0dG9uLmRpc2FibGVkID0gbm9SZXN1bHRzRm91bmQ7XHJcbiAgICAgICAgICB0aGlzLmNvcHlCdXR0b24uZGlzYWJsZWQgPSBub1Jlc3VsdHNGb3VuZDtcclxuICAgICAgICAgIHRoaXMucmVwbGFjZUJ1dHRvbi5kaXNhYmxlZCA9IG5vUmVzdWx0c0ZvdW5kO1xyXG4gICAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2tlbGV0b25JZFwiKSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9XHJcbiAgICAgICAgICAgIFwibm9uZVwiO1xyXG4gICAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmlnaHRSdGVcIikgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPVxyXG4gICAgICAgICAgICBub1Jlc3VsdHNGb3VuZCA/IFwibm9uZVwiIDogXCJcIjtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBub1Jlc3VsdHNGb3VuZCxcclxuICAgICAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmlnaHRSdGVcIikgYXMgSFRNTEVsZW1lbnQpLnN0eWxlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgLy8gdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICAvLyB0aGlzLnRvYXN0T2JqLnNob3coKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFJlc3BvbnNlRnJvbU9wZW5BSShcclxuICAgIHN1YlF1ZXJ5OiBzdHJpbmcsXHJcbiAgICBwcm9tcHRRdWVyeTogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBPcGVuQWlNb2RlbFJURShzdWJRdWVyeSwgcHJvbXB0UXVlcnkpO1xyXG4gICAgcmV0dXJuIGNvbnRlbnQgPyAoY29udGVudCBhcyBzdHJpbmcpIDogXCJcIjtcclxuICB9XHJcblxyXG4gIGRpYWxvZ1Nob3coKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZ2VuZXJhdGVCdXR0b24hLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVBSVN1Z2Vzc3Rpb25zKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29weUJ1dHRvbiEuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvcHlUZXh0VG9DbGlwYm9hcmQodGhpcy5BSVJlc3VsdCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVwbGFjZUJ1dHRvbiEuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICBsZXQgcmFuZ2U6IFJhbmdlID0gKFxyXG4gICAgICAgIHRoaXMucnRlT2JqIGFzIGFueVxyXG4gICAgICApLmZvcm1hdHRlci5lZGl0b3JNYW5hZ2VyLm5vZGVTZWxlY3Rpb24uZ2V0UmFuZ2UoXHJcbiAgICAgICAgKHRoaXMucnRlT2JqIGFzIGFueSkuY29udGVudE1vZHVsZS5nZXREb2N1bWVudCgpXHJcbiAgICAgICk7XHJcbiAgICAgICh0aGlzLnJ0ZU9iaiBhcyBhbnkpLmZvcm1hdHRlci5lZGl0b3JNYW5hZ2VyLm5vZGVTZWxlY3Rpb24ucmVzdG9yZShyYW5nZSk7XHJcbiAgICAgICh0aGlzLnJ0ZU9iaiBhcyBhbnkpLmV4ZWN1dGVDb21tYW5kKFwiaW5zZXJ0SFRNTFwiLCB0aGlzLkFJUmVzdWx0LCB7XHJcbiAgICAgICAgdW5kbzogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcclxuICAgIH0pO1xyXG4gICAgKHRoaXMuQUlkaWFsb2cgYXMgRGlhbG9nQ29tcG9uZW50KS5lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLkFJZGlhbG9nLmhpZGUoKTtcclxuICAgIHRoaXMucmlnaHRSdGUudmFsdWUgPSBcIlwiO1xyXG4gICAgdGhpcy5sZWZ0UnRlLnZhbHVlID0gXCJcIjtcclxuICAgIHRoaXMucHJvbXB0UXVlcnkgPSBcIlwiO1xyXG4gICAgdGhpcy5jaGlwVmFsdWUgPSBcIlN0YW5kYXJkXCI7XHJcbiAgICB0aGlzLkFJUmVzdWx0ID0gXCJcIjtcclxuICAgIHRoaXMuZHJvcFZhbEluZGV4ID0gMDtcclxuICAgIHRoaXMuc2VsZWN0ZWRRdWVyeSA9IFwiUmVwaHJhc2VcIjtcclxuICAgIHRoaXMuc2VudGltZW50QnV0dG9uLmNvbnRlbnQgPSBcIvCfmIogTmV1dHJhbFwiO1xyXG4gIH1cclxuXHJcbiAgY29weVRleHRUb0NsaXBib2FyZCh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChuYXZpZ2F0b3IuY2xpcGJvYXJkKSB7XHJcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmRcclxuICAgICAgICAud3JpdGVUZXh0KHRleHQpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJUZXh0IGNvcGllZCB0byBjbGlwYm9hcmQgc3VjY2Vzc2Z1bGx5IVwiKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHkgdGV4dDogXCIsIGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBGYWxsYmFjayBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0aGUgQ2xpcGJvYXJkIEFQSVxyXG4gICAgICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtcclxuICAgICAgdGV4dGFyZWEudmFsdWUgPSB0ZXh0O1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRhcmVhKTtcclxuICAgICAgdGV4dGFyZWEuc2VsZWN0KCk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiVGV4dCBjb3BpZWQgdG8gY2xpcGJvYXJkIHVzaW5nIGV4ZWNDb21tYW5kXCIpO1xyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHkgdGV4dDogXCIsIGVycik7XHJcbiAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXh0YXJlYSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uT3ZlcmxheUNsaWNrKCk6IHZvaWQge1xyXG4gICAgbGV0IGFjdGl2ZUVsZTogSFRNTEVsZW1lbnQgfCBudWxsID0gdGhpcy5BSWRpYWxvZy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiLmNoYXJfYmxvY2suZS1hY3RpdmVcIlxyXG4gICAgKTtcclxuICAgIGlmIChhY3RpdmVFbGUpIHtcclxuICAgICAgYWN0aXZlRWxlLmNsYXNzTGlzdC5yZW1vdmUoXCJlLWFjdGl2ZVwiKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcclxuICB9XHJcblxyXG4gIG9uUXVlcnlTZWxlY3QoYXJncykge1xyXG4gICAgLy8gdGhpcy5jaGlwTGlzdC5zZWxlY3RlZENoaXBzID0gMDtcclxuICAgIHRoaXMudHJhbnNsYXRlbGFuZ3VhZ2UgPSBcIkVOXCI7XHJcbiAgICB0aGlzLnNlbGVjdGVkUXVlcnkgPSBhcmdzLml0ZW1EYXRhLnRleHQ7XHJcbiAgICB0aGlzLnVwZGF0ZUFJU3VnZXNzdGlvbnNEYXRhKGFyZ3MuaXRlbURhdGEudGV4dCk7XHJcbiAgfVxyXG5cclxuICBvbkxhbmd1YWdlU2VsZWN0KGFyZ3M6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGVsYW5ndWFnZSA9IGFyZ3MuaXRlbURhdGEuaWQ7XHJcbiAgICB0aGlzLnVwZGF0ZUFJU3VnZXNzdGlvbnNEYXRhKFwiVHJhbnNsYXRlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25DaGlwQ2xpY2soYXJnczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmNoaXBWYWx1ZSA9IGFyZ3MuaXRlbURhdGEudGV4dDtcclxuICAgIC8vIOS6i+S7tuS8muinpuWPkeS4pOasoSDlv4XpobvliKTmlq1hcmdzLnRleHTmmK/lkKbmnInlgLxcclxuICAgIGlmIChhcmdzLml0ZW1EYXRhLnRleHQpIHRoaXMudXBkYXRlQUlTdWdlc3N0aW9uc0RhdGEoXCJSZXBocmFzZVwiKTtcclxuICB9XHJcblxyXG4gIF90b29sYmFyQ2xpY2soYXJncykge1xyXG4gICAgdGhpcy50b29sYmFyQ2xpY2suZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIGhpZGVUb2FzdCgpIHtcclxuICAgIHRoaXMuc2hvd01zZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25ab29tKCkge1xyXG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gXCJsYXJnZXN0XCIpIHtcclxuICAgICAgdGhpcy5zaXplID0gXCJcIjsgLy8g5oGi5aSN5Yiw5Y6f5aeL5aSn5bCPXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNpemUgPSBcImxhcmdlc3RcIjsgLy8g6K6+572u5Li65pyA5aSn5YyWXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|