ngx-edu-sharing-ui 10.0.8 → 10.0.9
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/assets/scss/branding.scss +3 -8
- package/assets/scss/material-theme.scss +36 -36
- package/assets/scss/variables-scss.scss +2 -1
- package/assets/scss/variables.scss +5 -0
- package/esm2022/lib/common/edu-sharing-ui-common.module.mjs +20 -4
- package/esm2022/lib/directives/icon.directive.mjs +37 -16
- package/esm2022/lib/index.mjs +7 -1
- package/esm2022/lib/mds-viewer/mds-viewer.component.mjs +154 -0
- package/esm2022/lib/mds-viewer/mds-viewer.service.mjs +18 -0
- package/esm2022/lib/mds-viewer/replace-element-with-div.mjs +47 -0
- package/esm2022/lib/mds-viewer/view-instance.service.mjs +27 -0
- package/esm2022/lib/mds-viewer/widget/mds-widget.component.mjs +349 -0
- package/esm2022/lib/node-entries/node-entries-global-options/node-entries-global-options.component.mjs +2 -2
- package/esm2022/lib/pipes/mds-duration.pipe.mjs +25 -0
- package/esm2022/lib/services/node-helper.service.mjs +21 -18
- package/esm2022/lib/services/options-helper-data.service.mjs +2 -2
- package/esm2022/lib/services/ui.service.mjs +147 -3
- package/esm2022/lib/util/rest-helper.mjs +11 -4
- package/fesm2022/ngx-edu-sharing-ui.mjs +2968 -2202
- package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -1
- package/lib/common/edu-sharing-ui-common.module.d.ts +33 -30
- package/lib/directives/icon.directive.d.ts +4 -2
- package/lib/index.d.ts +6 -0
- package/lib/mds-viewer/mds-viewer.component.d.ts +52 -0
- package/lib/mds-viewer/mds-viewer.service.d.ts +12 -0
- package/lib/mds-viewer/replace-element-with-div.d.ts +8 -0
- package/lib/mds-viewer/view-instance.service.d.ts +20 -0
- package/lib/mds-viewer/widget/mds-widget.component.d.ts +111 -0
- package/lib/pipes/mds-duration.pipe.d.ts +7 -0
- package/lib/services/node-helper.service.d.ts +3 -0
- package/lib/services/ui.service.d.ts +32 -1
- package/lib/util/rest-helper.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import { DatePipe } from '@angular/common';
|
|
2
|
+
import { Component, Input, ViewChild, } from '@angular/core';
|
|
3
|
+
import { MatRipple } from '@angular/material/core';
|
|
4
|
+
import { filter, first, map } from 'rxjs/operators';
|
|
5
|
+
import { RestConstants } from 'ngx-edu-sharing-api';
|
|
6
|
+
import { UIConstants } from '../../util/ui-constants';
|
|
7
|
+
import { DateHelper } from '../../util/DateHelper';
|
|
8
|
+
import { RestHelper } from '../../util/rest-helper';
|
|
9
|
+
import { FormatSizePipe } from '../../pipes/file-size.pipe';
|
|
10
|
+
import { of } from 'rxjs';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@ngx-translate/core";
|
|
13
|
+
import * as i2 from "../../services/ui.service";
|
|
14
|
+
import * as i3 from "../view-instance.service";
|
|
15
|
+
import * as i4 from "@angular/common";
|
|
16
|
+
import * as i5 from "@angular/material/core";
|
|
17
|
+
import * as i6 from "@angular/router";
|
|
18
|
+
import * as i7 from "../../directives/icon.directive";
|
|
19
|
+
import * as i8 from "../../pipes/mds-duration.pipe";
|
|
20
|
+
import * as i9 from "../../pipes/vcard-name.pipe";
|
|
21
|
+
export var MdsType;
|
|
22
|
+
(function (MdsType) {
|
|
23
|
+
MdsType["Io"] = "io";
|
|
24
|
+
MdsType["IoBulk"] = "io_bulk";
|
|
25
|
+
MdsType["Map"] = "map";
|
|
26
|
+
MdsType["MapRef"] = "map_ref";
|
|
27
|
+
MdsType["IoChildObject"] = "io_childobject";
|
|
28
|
+
MdsType["Collection"] = "collection";
|
|
29
|
+
MdsType["ToolDefinition"] = "tool_definition";
|
|
30
|
+
MdsType["ToolInstance"] = "tool_instance";
|
|
31
|
+
MdsType["SavedSearch"] = "saved_search";
|
|
32
|
+
})(MdsType || (MdsType = {}));
|
|
33
|
+
export var MdsWidgetType;
|
|
34
|
+
(function (MdsWidgetType) {
|
|
35
|
+
MdsWidgetType["Text"] = "text";
|
|
36
|
+
MdsWidgetType["Number"] = "number";
|
|
37
|
+
MdsWidgetType["Email"] = "email";
|
|
38
|
+
MdsWidgetType["Date"] = "date";
|
|
39
|
+
MdsWidgetType["Month"] = "month";
|
|
40
|
+
MdsWidgetType["Color"] = "color";
|
|
41
|
+
MdsWidgetType["Textarea"] = "textarea";
|
|
42
|
+
MdsWidgetType["TinyMCE"] = "tinyMCE";
|
|
43
|
+
MdsWidgetType["VCard"] = "vcard";
|
|
44
|
+
MdsWidgetType["Checkbox"] = "checkbox";
|
|
45
|
+
MdsWidgetType["RadioHorizontal"] = "radioHorizontal";
|
|
46
|
+
MdsWidgetType["RadioVertical"] = "radioVertical";
|
|
47
|
+
MdsWidgetType["CheckboxHorizontal"] = "checkboxHorizontal";
|
|
48
|
+
MdsWidgetType["CheckboxVertical"] = "checkboxVertical";
|
|
49
|
+
MdsWidgetType["MultiValueBadges"] = "multivalueBadges";
|
|
50
|
+
MdsWidgetType["MultiValueFixedBadges"] = "multivalueFixedBadges";
|
|
51
|
+
MdsWidgetType["MultiValueSuggestBadges"] = "multivalueSuggestBadges";
|
|
52
|
+
MdsWidgetType["MultiValueAuthorityBadges"] = "multivalueAuthorityBadges";
|
|
53
|
+
MdsWidgetType["Singleoption"] = "singleoption";
|
|
54
|
+
MdsWidgetType["Slider"] = "slider";
|
|
55
|
+
MdsWidgetType["Range"] = "range";
|
|
56
|
+
MdsWidgetType["Duration"] = "duration";
|
|
57
|
+
MdsWidgetType["SingleValueTree"] = "singlevalueTree";
|
|
58
|
+
MdsWidgetType["SingleValueSuggestBadges"] = "singlevalueSuggestBadges";
|
|
59
|
+
MdsWidgetType["MultiValueTree"] = "multivalueTree";
|
|
60
|
+
MdsWidgetType["DefaultValue"] = "defaultvalue";
|
|
61
|
+
MdsWidgetType["FacetList"] = "facetList";
|
|
62
|
+
})(MdsWidgetType || (MdsWidgetType = {}));
|
|
63
|
+
export var ValueType;
|
|
64
|
+
(function (ValueType) {
|
|
65
|
+
ValueType[ValueType["String"] = 0] = "String";
|
|
66
|
+
ValueType[ValueType["MultiValue"] = 1] = "MultiValue";
|
|
67
|
+
ValueType[ValueType["Range"] = 2] = "Range";
|
|
68
|
+
})(ValueType || (ValueType = {}));
|
|
69
|
+
export class MdsWidgetComponent {
|
|
70
|
+
static { this.inlineEditing = [
|
|
71
|
+
MdsWidgetType.Text,
|
|
72
|
+
MdsWidgetType.Number,
|
|
73
|
+
MdsWidgetType.Date,
|
|
74
|
+
MdsWidgetType.Email,
|
|
75
|
+
MdsWidgetType.Textarea,
|
|
76
|
+
MdsWidgetType.Singleoption,
|
|
77
|
+
MdsWidgetType.SingleValueTree,
|
|
78
|
+
MdsWidgetType.SingleValueSuggestBadges,
|
|
79
|
+
MdsWidgetType.MultiValueBadges,
|
|
80
|
+
MdsWidgetType.MultiValueFixedBadges,
|
|
81
|
+
MdsWidgetType.MultiValueSuggestBadges,
|
|
82
|
+
MdsWidgetType.MultiValueTree,
|
|
83
|
+
]; }
|
|
84
|
+
get headingLevel() {
|
|
85
|
+
return this.viewInstance.headingLevel;
|
|
86
|
+
}
|
|
87
|
+
constructor(
|
|
88
|
+
// public mdsEditorInstance: MdsEditorInstanceService,
|
|
89
|
+
translate, ui, viewInstance) {
|
|
90
|
+
this.translate = translate;
|
|
91
|
+
this.ui = ui;
|
|
92
|
+
this.viewInstance = viewInstance;
|
|
93
|
+
this.ROUTER_PREFIX = UIConstants.ROUTER_PREFIX;
|
|
94
|
+
this.valueType = ValueType.String;
|
|
95
|
+
this.showCaption = true;
|
|
96
|
+
/**
|
|
97
|
+
* allow inline editing
|
|
98
|
+
*/
|
|
99
|
+
this.inlineEditing = 'auto';
|
|
100
|
+
this.value = undefined;
|
|
101
|
+
this.temporaryValue = undefined;
|
|
102
|
+
// super(toast, null, translate);
|
|
103
|
+
}
|
|
104
|
+
ngOnChanges(changes) {
|
|
105
|
+
this.value = this.getNodeValue();
|
|
106
|
+
}
|
|
107
|
+
async ngOnInit() {
|
|
108
|
+
this.value = this.getNodeValue();
|
|
109
|
+
this.widget
|
|
110
|
+
.getInitialDisplayValues()
|
|
111
|
+
.pipe(filter((v) => !!v))
|
|
112
|
+
.subscribe(async (value) => {
|
|
113
|
+
this.value = value.values.map((v) => v.displayString);
|
|
114
|
+
});
|
|
115
|
+
this.basicType = this.getBasicType();
|
|
116
|
+
this.rawValue = await this.getRawValue().toPromise();
|
|
117
|
+
}
|
|
118
|
+
getDefinition() {
|
|
119
|
+
return this.widget?.definition || this.definition;
|
|
120
|
+
}
|
|
121
|
+
getBasicType() {
|
|
122
|
+
switch (this.getDefinition().type) {
|
|
123
|
+
case 'text':
|
|
124
|
+
case 'email':
|
|
125
|
+
case 'month':
|
|
126
|
+
case 'color':
|
|
127
|
+
case 'textarea':
|
|
128
|
+
case 'singleoption':
|
|
129
|
+
return 'text';
|
|
130
|
+
case 'number':
|
|
131
|
+
return 'number';
|
|
132
|
+
case 'date':
|
|
133
|
+
return 'date';
|
|
134
|
+
case 'vcard':
|
|
135
|
+
return 'vcard';
|
|
136
|
+
case 'multivalueFixedBadges':
|
|
137
|
+
case 'multivalueSuggestBadges':
|
|
138
|
+
case 'singlevalueSuggestBadges':
|
|
139
|
+
case 'multivalueBadges':
|
|
140
|
+
case 'singlevalueTree':
|
|
141
|
+
case 'multivalueTree':
|
|
142
|
+
return this.viewInstance.treeDisplay === 'flat' ? 'array' : 'tree';
|
|
143
|
+
case 'slider':
|
|
144
|
+
return 'slider';
|
|
145
|
+
case 'duration':
|
|
146
|
+
return 'duration';
|
|
147
|
+
case 'range':
|
|
148
|
+
return 'range';
|
|
149
|
+
}
|
|
150
|
+
return 'unknown';
|
|
151
|
+
}
|
|
152
|
+
supportsInlineEditing() {
|
|
153
|
+
return MdsWidgetComponent.inlineEditing.includes(this.widget?.definition.type);
|
|
154
|
+
}
|
|
155
|
+
getNodeValue() {
|
|
156
|
+
if (this.temporaryValue !== undefined) {
|
|
157
|
+
return this.getValue(this.temporaryValue);
|
|
158
|
+
}
|
|
159
|
+
const id = this.getDefinition().id;
|
|
160
|
+
if (this.getDefinition().type === 'range') {
|
|
161
|
+
const values = this.mdsEditorInstance?.values$.value;
|
|
162
|
+
if (values) {
|
|
163
|
+
return [values[id + '_from']?.[0], values[id + '_to']?.[0]];
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
else if (this.mdsEditorInstance?.values$.value?.[id]) {
|
|
168
|
+
// support on the fly changes+updates of the values
|
|
169
|
+
return this.getValue(this.mdsEditorInstance.values$.value[id]);
|
|
170
|
+
}
|
|
171
|
+
else if (this.widget.getInitialValues()?.jointValues) {
|
|
172
|
+
return this.getValue(this.widget.getInitialValues().jointValues);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
getValue(data) {
|
|
179
|
+
let value = data;
|
|
180
|
+
if (!value || value.every((v) => !v)) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
if (this.getDefinition().values) {
|
|
184
|
+
const mapping = this.widget.definition.values
|
|
185
|
+
.filter((v) => data.filter((d) => d === v.id).length > 0)
|
|
186
|
+
.map((v) => v.caption);
|
|
187
|
+
if (mapping) {
|
|
188
|
+
return mapping;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return data;
|
|
192
|
+
}
|
|
193
|
+
click() {
|
|
194
|
+
if (this.getDefinition().link === '_BLANK') {
|
|
195
|
+
window.open(this.formatText()[0]);
|
|
196
|
+
}
|
|
197
|
+
else if (this.getDefinition().link === '_SELF') {
|
|
198
|
+
window.location.href = this.formatText()[0];
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
console.warn('Unsupported link type ' + this.getDefinition().link);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
isEmpty() {
|
|
205
|
+
return this.value?.every((v) => !v) || this.value?.length === 0 || !this.value;
|
|
206
|
+
}
|
|
207
|
+
formatDate() {
|
|
208
|
+
return this.value.map((v) => {
|
|
209
|
+
if (this.getDefinition().format) {
|
|
210
|
+
try {
|
|
211
|
+
return new DatePipe('en').transform(v, this.getDefinition().format);
|
|
212
|
+
}
|
|
213
|
+
catch (e) {
|
|
214
|
+
console.warn('Could not format date', e, this.getDefinition());
|
|
215
|
+
return DateHelper.formatDate(this.translate, v, {
|
|
216
|
+
showAlwaysTime: true,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
return DateHelper.formatDate(this.translate, v, {
|
|
222
|
+
showAlwaysTime: true,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
formatNumber() {
|
|
228
|
+
return this.value.map((v) => {
|
|
229
|
+
if (this.widget.definition.format === 'bytes') {
|
|
230
|
+
return new FormatSizePipe(this.translate).transform(v);
|
|
231
|
+
}
|
|
232
|
+
return v;
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
formatText() {
|
|
236
|
+
return this.value.map((v) => {
|
|
237
|
+
if (this.widget.definition.format) {
|
|
238
|
+
return this.widget.definition.format.replace('${value}', v);
|
|
239
|
+
}
|
|
240
|
+
return v;
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
// instance: MdsEditorWidgetBase
|
|
244
|
+
async finishEdit(instance, store = false) {
|
|
245
|
+
if (store) {
|
|
246
|
+
await this.mdsEditorInstance.saveWidgetValue(instance.widget);
|
|
247
|
+
}
|
|
248
|
+
this.temporaryValue = instance.widget.getValue();
|
|
249
|
+
this.value = this.getNodeValue();
|
|
250
|
+
this.editWrapper.nativeElement.children[0].innerHTML = null;
|
|
251
|
+
await this.mdsEditorInstance.fetchDisplayValues(this.widget);
|
|
252
|
+
}
|
|
253
|
+
isEditable() {
|
|
254
|
+
if (!this.mdsEditorInstance) {
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
if (this.inlineEditing === 'always') {
|
|
258
|
+
return this.supportsInlineEditing();
|
|
259
|
+
}
|
|
260
|
+
const nodes = this.mdsEditorInstance.nodes$.value;
|
|
261
|
+
return (this.mdsEditorInstance.editorMode === 'inline' &&
|
|
262
|
+
this.widget.definition.interactionType === 'Input' &&
|
|
263
|
+
nodes?.length === 1 &&
|
|
264
|
+
RestHelper.hasAccessPermission(nodes[0], RestConstants.ACCESS_WRITE) &&
|
|
265
|
+
this.supportsInlineEditing());
|
|
266
|
+
}
|
|
267
|
+
async focus() {
|
|
268
|
+
// this.matRipple.launch({});
|
|
269
|
+
await this.ui.scrollSmoothElementToChild(this.editWrapper.nativeElement);
|
|
270
|
+
this.matRipple.launch({});
|
|
271
|
+
//const result = await this.view.injectEditField(this, this.editWrapper.nativeElement.children[0]);
|
|
272
|
+
//await this.ui.scrollSmoothElementToChild(result.htmlElement);
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* return the path for a given value in a tree
|
|
276
|
+
*/
|
|
277
|
+
getPath(v) {
|
|
278
|
+
if (!this.getDefinition().values) {
|
|
279
|
+
return [
|
|
280
|
+
{
|
|
281
|
+
id: v,
|
|
282
|
+
caption: v,
|
|
283
|
+
},
|
|
284
|
+
];
|
|
285
|
+
}
|
|
286
|
+
const path = [];
|
|
287
|
+
let pointer = v;
|
|
288
|
+
for (let i = 0; i < 100; i++) {
|
|
289
|
+
const mapped = this.getDefinition().values.find((w) => w.id === pointer);
|
|
290
|
+
if (mapped) {
|
|
291
|
+
path.push(mapped);
|
|
292
|
+
pointer = mapped.parent;
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return path.reverse();
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* fetch the raw node value
|
|
302
|
+
* Note: Will not work in a bulk state!
|
|
303
|
+
*/
|
|
304
|
+
getRawValue() {
|
|
305
|
+
return (this.mdsEditorInstance?.nodes$.pipe(first(), map((v) => v?.[0]?.properties[this.widget.definition.id]?.map((id) => {
|
|
306
|
+
return {
|
|
307
|
+
id,
|
|
308
|
+
path: this.getPath(id),
|
|
309
|
+
};
|
|
310
|
+
}))) || of(null));
|
|
311
|
+
}
|
|
312
|
+
getSearchParams(key) {
|
|
313
|
+
const params = {};
|
|
314
|
+
const mds = {};
|
|
315
|
+
mds[this.widget.definition.id] = [key.id];
|
|
316
|
+
params.mds = this.mdsEditorInstance.mdsId;
|
|
317
|
+
params.sidenav = true;
|
|
318
|
+
params.repo = this.mdsEditorInstance.nodes$.value?.[0].ref.repo;
|
|
319
|
+
params.filters = JSON.stringify(mds);
|
|
320
|
+
return params;
|
|
321
|
+
}
|
|
322
|
+
startEdit(event) {
|
|
323
|
+
event.stopPropagation();
|
|
324
|
+
void this.view.injectEditField(this, this.editWrapper.nativeElement.children[0]);
|
|
325
|
+
}
|
|
326
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MdsWidgetComponent, deps: [{ token: i1.TranslateService }, { token: i2.UIService }, { token: i3.ViewInstanceService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
327
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: MdsWidgetComponent, selector: "es-mds-widget", inputs: { widget: "widget", showCaption: "showCaption", inlineEditing: "inlineEditing", definition: "definition", view: "view" }, viewQueries: [{ propertyName: "editWrapper", first: true, predicate: ["editWrapper"], descendants: true }, { propertyName: "matRipple", first: true, predicate: MatRipple, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"!isEmpty() || !widget.definition.hideIfEmpty || isEditable()\"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"basicType === 'text'\">{{ formatText() }}</div>\n <div *ngIf=\"basicType === 'number'\">{{ formatNumber() }}</div>\n <div *ngIf=\"basicType === 'date'\">{{ formatDate() }}</div>\n <div *ngIf=\"basicType === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType === 'slider'\">\n <span class=\"slider-value\">{{ value }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType === 'duration'\">\n <span class=\"duration-value\">{{ value[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType === 'range'\">\n <span class=\"slider-value\">{{ value[0] }}</span\n >-<span class=\"slider-value\">{{ value[1] }}</span>\n </div>\n <div *ngIf=\"basicType === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i7.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i8.MdsDurationPipe, name: "appMdsDuration" }, { kind: "pipe", type: i9.VCardNamePipe, name: "vcardName" }] }); }
|
|
328
|
+
}
|
|
329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MdsWidgetComponent, decorators: [{
|
|
330
|
+
type: Component,
|
|
331
|
+
args: [{ selector: 'es-mds-widget', template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"!isEmpty() || !widget.definition.hideIfEmpty || isEditable()\"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"basicType === 'text'\">{{ formatText() }}</div>\n <div *ngIf=\"basicType === 'number'\">{{ formatNumber() }}</div>\n <div *ngIf=\"basicType === 'date'\">{{ formatDate() }}</div>\n <div *ngIf=\"basicType === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType === 'slider'\">\n <span class=\"slider-value\">{{ value }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType === 'duration'\">\n <span class=\"duration-value\">{{ value[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType === 'range'\">\n <span class=\"slider-value\">{{ value[0] }}</span\n >-<span class=\"slider-value\">{{ value[1] }}</span>\n </div>\n <div *ngIf=\"basicType === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"] }]
|
|
332
|
+
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.UIService }, { type: i3.ViewInstanceService }], propDecorators: { widget: [{
|
|
333
|
+
type: Input
|
|
334
|
+
}], showCaption: [{
|
|
335
|
+
type: Input
|
|
336
|
+
}], inlineEditing: [{
|
|
337
|
+
type: Input
|
|
338
|
+
}], definition: [{
|
|
339
|
+
type: Input
|
|
340
|
+
}], view: [{
|
|
341
|
+
type: Input
|
|
342
|
+
}], editWrapper: [{
|
|
343
|
+
type: ViewChild,
|
|
344
|
+
args: ['editWrapper']
|
|
345
|
+
}], matRipple: [{
|
|
346
|
+
type: ViewChild,
|
|
347
|
+
args: [MatRipple]
|
|
348
|
+
}] } });
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRzLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL21kcy12aWV3ZXIvd2lkZ2V0L21kcy13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9tZHMtdmlld2VyL3dpZGdldC9tZHMtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBNkIsYUFBYSxFQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUduRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBRTFCLE1BQU0sQ0FBTixJQUFZLE9BVVg7QUFWRCxXQUFZLE9BQU87SUFDZixvQkFBUyxDQUFBO0lBQ1QsNkJBQWtCLENBQUE7SUFDbEIsc0JBQVcsQ0FBQTtJQUNYLDZCQUFrQixDQUFBO0lBQ2xCLDJDQUFnQyxDQUFBO0lBQ2hDLG9DQUF5QixDQUFBO0lBQ3pCLDZDQUFrQyxDQUFBO0lBQ2xDLHlDQUE4QixDQUFBO0lBQzlCLHVDQUE0QixDQUFBO0FBQ2hDLENBQUMsRUFWVyxPQUFPLEtBQVAsT0FBTyxRQVVsQjtBQU1ELE1BQU0sQ0FBTixJQUFZLGFBNEJYO0FBNUJELFdBQVksYUFBYTtJQUNyQiw4QkFBYSxDQUFBO0lBQ2Isa0NBQWlCLENBQUE7SUFDakIsZ0NBQWUsQ0FBQTtJQUNmLDhCQUFhLENBQUE7SUFDYixnQ0FBZSxDQUFBO0lBQ2YsZ0NBQWUsQ0FBQTtJQUNmLHNDQUFxQixDQUFBO0lBQ3JCLG9DQUFtQixDQUFBO0lBQ25CLGdDQUFlLENBQUE7SUFDZixzQ0FBcUIsQ0FBQTtJQUNyQixvREFBbUMsQ0FBQTtJQUNuQyxnREFBK0IsQ0FBQTtJQUMvQiwwREFBeUMsQ0FBQTtJQUN6QyxzREFBcUMsQ0FBQTtJQUNyQyxzREFBcUMsQ0FBQTtJQUNyQyxnRUFBK0MsQ0FBQTtJQUMvQyxvRUFBbUQsQ0FBQTtJQUNuRCx3RUFBdUQsQ0FBQTtJQUN2RCw4Q0FBNkIsQ0FBQTtJQUM3QixrQ0FBaUIsQ0FBQTtJQUNqQixnQ0FBZSxDQUFBO0lBQ2Ysc0NBQXFCLENBQUE7SUFDckIsb0RBQW1DLENBQUE7SUFDbkMsc0VBQXFELENBQUE7SUFDckQsa0RBQWlDLENBQUE7SUFDakMsOENBQTZCLENBQUE7SUFDN0Isd0NBQXVCLENBQUE7QUFDM0IsQ0FBQyxFQTVCVyxhQUFhLEtBQWIsYUFBYSxRQTRCeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ2pCLDZDQUFNLENBQUE7SUFDTixxREFBVSxDQUFBO0lBQ1YsMkNBQUssQ0FBQTtBQUNULENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQjtBQVFELE1BQU0sT0FBTyxrQkFBa0I7YUFFSCxrQkFBYSxHQUFvQjtRQUNyRCxhQUFhLENBQUMsSUFBSTtRQUNsQixhQUFhLENBQUMsTUFBTTtRQUNwQixhQUFhLENBQUMsSUFBSTtRQUNsQixhQUFhLENBQUMsS0FBSztRQUNuQixhQUFhLENBQUMsUUFBUTtRQUN0QixhQUFhLENBQUMsWUFBWTtRQUMxQixhQUFhLENBQUMsZUFBZTtRQUM3QixhQUFhLENBQUMsd0JBQXdCO1FBQ3RDLGFBQWEsQ0FBQyxnQkFBZ0I7UUFDOUIsYUFBYSxDQUFDLHFCQUFxQjtRQUNuQyxhQUFhLENBQUMsdUJBQXVCO1FBQ3JDLGFBQWEsQ0FBQyxjQUFjO0tBQy9CLEFBYm9DLENBYW5DO0lBc0JGLElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7SUFDMUMsQ0FBQztJQUtEO0lBQ0ksc0RBQXNEO0lBQy9DLFNBQTJCLEVBQzFCLEVBQWEsRUFDYixZQUFpQztRQUZsQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFXO1FBQ2IsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBL0NwQyxrQkFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFnQjFDLGNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBSTdCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzVCOztXQUVHO1FBQ00sa0JBQWEsR0FBc0IsTUFBTSxDQUFDO1FBZ0JuRCxVQUFLLEdBQWEsU0FBUyxDQUFDO1FBQ3BCLG1CQUFjLEdBQWEsU0FBUyxDQUFDO1FBUXpDLGlDQUFpQztJQUNyQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNO2FBQ04sdUJBQXVCLEVBQUU7YUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBbUIsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDdEQsQ0FBQztJQUVELFlBQVk7UUFDUixRQUFRLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssY0FBYztnQkFDZixPQUFPLE1BQU0sQ0FBQztZQUNsQixLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sTUFBTSxDQUFDO1lBQ2xCLEtBQUssT0FBTztnQkFDUixPQUFPLE9BQU8sQ0FBQztZQUNuQixLQUFLLHVCQUF1QixDQUFDO1lBQzdCLEtBQUsseUJBQXlCLENBQUM7WUFDL0IsS0FBSywwQkFBMEIsQ0FBQztZQUNoQyxLQUFLLGtCQUFrQixDQUFDO1lBQ3hCLEtBQUssaUJBQWlCLENBQUM7WUFDdkIsS0FBSyxnQkFBZ0I7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUN2RSxLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxVQUFVO2dCQUNYLE9BQU8sVUFBVSxDQUFDO1lBQ3RCLEtBQUssT0FBTztnQkFDUixPQUFPLE9BQU8sQ0FBQztRQUN2QixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixPQUFPLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQzVDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQXFCLENBQ2hELENBQUM7SUFDTixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDckQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDVCxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDckQsbURBQW1EO1lBQ25ELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBYztRQUNuQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU07aUJBQ3hDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUM3RCxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU8sT0FBTyxDQUFDO1lBQ25CLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuRixDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN4QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDO29CQUNELE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hFLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztvQkFDL0QsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFO3dCQUM1QyxjQUFjLEVBQUUsSUFBSTtxQkFDdkIsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFO29CQUM1QyxjQUFjLEVBQUUsSUFBSTtpQkFDdkIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzVDLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsZ0NBQWdDO0lBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBYSxFQUFFLEtBQUssR0FBRyxLQUFLO1FBQ3pDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDNUQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDbEQsT0FBTyxDQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEtBQUssUUFBUTtZQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEtBQUssT0FBTztZQUNsRCxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUM7WUFDbkIsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUMvQixDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1AsNkJBQTZCO1FBQzdCLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLG1HQUFtRztRQUNuRywrREFBK0Q7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssT0FBTyxDQUFDLENBQVM7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQixPQUFPO2dCQUNIO29CQUNJLEVBQUUsRUFBRSxDQUFDO29CQUNMLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2FBQ0osQ0FBQztRQUNOLENBQUM7UUFDRCxNQUFNLElBQUksR0FBZSxFQUFFLENBQUM7UUFDNUIsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQztZQUN6RSxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNO1lBQ1YsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssV0FBVztRQUNmLE9BQU8sQ0FDSCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FDL0IsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FDYixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDcEUsT0FBTztnQkFDSCxFQUFFO2dCQUNGLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzthQUN6QixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FDSixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDaEIsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBYTtRQUN6QixNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQWdDLEVBQUUsQ0FBQztRQUM1QyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWlCO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDOytHQXhTUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwrVEErQmhCLFNBQVMscUVDL0d4QixrOEhBbUdBOzs0RkRuQmEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLGVBQWU7K0lBeUJoQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFJRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVvQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0YsU0FBUztzQkFBOUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdFJpcHBsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWRzVmFsdWUsIE1kc1dpZGdldCwgTm9kZSwgUmVzdENvbnN0YW50cywgU3VnZ2VzdGlvbiB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgVUlDb25zdGFudHMgfSBmcm9tICcuLi8uLi91dGlsL3VpLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9EYXRlSGVscGVyJztcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VpLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld0luc3RhbmNlU2VydmljZSB9IGZyb20gJy4uL3ZpZXctaW5zdGFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSZXN0SGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9yZXN0LWhlbHBlcic7XG5pbXBvcnQgeyBGb3JtYXRTaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2ZpbGUtc2l6ZS5waXBlJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBlbnVtIE1kc1R5cGUge1xuICAgIElvID0gJ2lvJyxcbiAgICBJb0J1bGsgPSAnaW9fYnVsaycsXG4gICAgTWFwID0gJ21hcCcsXG4gICAgTWFwUmVmID0gJ21hcF9yZWYnLFxuICAgIElvQ2hpbGRPYmplY3QgPSAnaW9fY2hpbGRvYmplY3QnLFxuICAgIENvbGxlY3Rpb24gPSAnY29sbGVjdGlvbicsXG4gICAgVG9vbERlZmluaXRpb24gPSAndG9vbF9kZWZpbml0aW9uJyxcbiAgICBUb29sSW5zdGFuY2UgPSAndG9vbF9pbnN0YW5jZScsXG4gICAgU2F2ZWRTZWFyY2ggPSAnc2F2ZWRfc2VhcmNoJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZHNWYWx1ZUxpc3Qge1xuICAgIHZhbHVlczogU3VnZ2VzdGlvbltdO1xufVxuXG5leHBvcnQgZW51bSBNZHNXaWRnZXRUeXBlIHtcbiAgICBUZXh0ID0gJ3RleHQnLFxuICAgIE51bWJlciA9ICdudW1iZXInLFxuICAgIEVtYWlsID0gJ2VtYWlsJyxcbiAgICBEYXRlID0gJ2RhdGUnLFxuICAgIE1vbnRoID0gJ21vbnRoJyxcbiAgICBDb2xvciA9ICdjb2xvcicsXG4gICAgVGV4dGFyZWEgPSAndGV4dGFyZWEnLFxuICAgIFRpbnlNQ0UgPSAndGlueU1DRScsXG4gICAgVkNhcmQgPSAndmNhcmQnLFxuICAgIENoZWNrYm94ID0gJ2NoZWNrYm94JyxcbiAgICBSYWRpb0hvcml6b250YWwgPSAncmFkaW9Ib3Jpem9udGFsJyxcbiAgICBSYWRpb1ZlcnRpY2FsID0gJ3JhZGlvVmVydGljYWwnLFxuICAgIENoZWNrYm94SG9yaXpvbnRhbCA9ICdjaGVja2JveEhvcml6b250YWwnLFxuICAgIENoZWNrYm94VmVydGljYWwgPSAnY2hlY2tib3hWZXJ0aWNhbCcsXG4gICAgTXVsdGlWYWx1ZUJhZGdlcyA9ICdtdWx0aXZhbHVlQmFkZ2VzJyxcbiAgICBNdWx0aVZhbHVlRml4ZWRCYWRnZXMgPSAnbXVsdGl2YWx1ZUZpeGVkQmFkZ2VzJyxcbiAgICBNdWx0aVZhbHVlU3VnZ2VzdEJhZGdlcyA9ICdtdWx0aXZhbHVlU3VnZ2VzdEJhZGdlcycsXG4gICAgTXVsdGlWYWx1ZUF1dGhvcml0eUJhZGdlcyA9ICdtdWx0aXZhbHVlQXV0aG9yaXR5QmFkZ2VzJyxcbiAgICBTaW5nbGVvcHRpb24gPSAnc2luZ2xlb3B0aW9uJyxcbiAgICBTbGlkZXIgPSAnc2xpZGVyJyxcbiAgICBSYW5nZSA9ICdyYW5nZScsXG4gICAgRHVyYXRpb24gPSAnZHVyYXRpb24nLFxuICAgIFNpbmdsZVZhbHVlVHJlZSA9ICdzaW5nbGV2YWx1ZVRyZWUnLFxuICAgIFNpbmdsZVZhbHVlU3VnZ2VzdEJhZGdlcyA9ICdzaW5nbGV2YWx1ZVN1Z2dlc3RCYWRnZXMnLFxuICAgIE11bHRpVmFsdWVUcmVlID0gJ211bHRpdmFsdWVUcmVlJyxcbiAgICBEZWZhdWx0VmFsdWUgPSAnZGVmYXVsdHZhbHVlJyxcbiAgICBGYWNldExpc3QgPSAnZmFjZXRMaXN0Jyxcbn1cblxuZXhwb3J0IGVudW0gVmFsdWVUeXBlIHtcbiAgICBTdHJpbmcsXG4gICAgTXVsdGlWYWx1ZSxcbiAgICBSYW5nZSxcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcy1tZHMtd2lkZ2V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJ21kcy13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydtZHMtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgLy8gcmVxdWlyZWQgZm9yIGV4dGVybmFsIGVkaXRvciBpbmplY3Rpb25cbn0pXG5leHBvcnQgY2xhc3MgTWRzV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHJlYWRvbmx5IFJPVVRFUl9QUkVGSVggPSBVSUNvbnN0YW50cy5ST1VURVJfUFJFRklYO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGlubGluZUVkaXRpbmc6IE1kc1dpZGdldFR5cGVbXSA9IFtcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5UZXh0LFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk51bWJlcixcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5EYXRlLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLkVtYWlsLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLlRleHRhcmVhLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLlNpbmdsZW9wdGlvbixcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5TaW5nbGVWYWx1ZVRyZWUsXG4gICAgICAgIE1kc1dpZGdldFR5cGUuU2luZ2xlVmFsdWVTdWdnZXN0QmFkZ2VzLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk11bHRpVmFsdWVCYWRnZXMsXG4gICAgICAgIE1kc1dpZGdldFR5cGUuTXVsdGlWYWx1ZUZpeGVkQmFkZ2VzLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk11bHRpVmFsdWVTdWdnZXN0QmFkZ2VzLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk11bHRpVmFsdWVUcmVlLFxuICAgIF07XG5cbiAgICByZWFkb25seSB2YWx1ZVR5cGUgPSBWYWx1ZVR5cGUuU3RyaW5nO1xuXG4gICAgLy8gdXNlIGFueSBpbnN0ZWFkIG9mIGBXaWRnZXRgIGNhdXNlIG9mIGV4dGVybmFsIHR5cGVcbiAgICBASW5wdXQoKSB3aWRnZXQ6IGFueTtcbiAgICBASW5wdXQoKSBzaG93Q2FwdGlvbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogYWxsb3cgaW5saW5lIGVkaXRpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0aW5nOiAnYXV0bycgfCAnYWx3YXlzJyA9ICdhdXRvJztcbiAgICBASW5wdXQoKSBkZWZpbml0aW9uOiBNZHNXaWRnZXQ7XG4gICAgLy8gdXNlIGFueSBpbnN0ZWFkIG9mIE1kc0VkaXRvclZpZXdDb21wb25lbnQgY2F1c2Ugb2YgZXh0ZXJuYWwgdHlwZVxuICAgIEBJbnB1dCgpIHZpZXc6IGFueTtcblxuICAgIEBWaWV3Q2hpbGQoJ2VkaXRXcmFwcGVyJykgZWRpdFdyYXBwZXI6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZChNYXRSaXBwbGUpIG1hdFJpcHBsZTogTWF0UmlwcGxlO1xuICAgIGJhc2ljVHlwZTogc3RyaW5nO1xuICAgIHJhd1ZhbHVlOiB7IHBhdGg6IE1kc1ZhbHVlW107IGlkOiBzdHJpbmcgfVtdO1xuXG4gICAgcHJpdmF0ZSBtZHNFZGl0b3JJbnN0YW5jZTogYW55O1xuXG4gICAgZ2V0IGhlYWRpbmdMZXZlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0luc3RhbmNlLmhlYWRpbmdMZXZlbDtcbiAgICB9XG5cbiAgICB2YWx1ZTogc3RyaW5nW10gPSB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSB0ZW1wb3JhcnlWYWx1ZTogc3RyaW5nW10gPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgLy8gcHVibGljIG1kc0VkaXRvckluc3RhbmNlOiBNZHNFZGl0b3JJbnN0YW5jZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdWk6IFVJU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3SW5zdGFuY2U6IFZpZXdJbnN0YW5jZVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIC8vIHN1cGVyKHRvYXN0LCBudWxsLCB0cmFuc2xhdGUpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0Tm9kZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmdldE5vZGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLndpZGdldFxuICAgICAgICAgICAgLmdldEluaXRpYWxEaXNwbGF5VmFsdWVzKClcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigodjogTWRzVmFsdWVMaXN0KSA9PiAhIXYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAodmFsdWU6IE1kc1ZhbHVlTGlzdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS52YWx1ZXMubWFwKCh2KSA9PiB2LmRpc3BsYXlTdHJpbmcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYmFzaWNUeXBlID0gdGhpcy5nZXRCYXNpY1R5cGUoKTtcbiAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IGF3YWl0IHRoaXMuZ2V0UmF3VmFsdWUoKS50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBnZXREZWZpbml0aW9uKCk6IE1kc1dpZGdldCB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldD8uZGVmaW5pdGlvbiB8fCB0aGlzLmRlZmluaXRpb247XG4gICAgfVxuXG4gICAgZ2V0QmFzaWNUeXBlKCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuZ2V0RGVmaW5pdGlvbigpLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgY2FzZSAnY29sb3InOlxuICAgICAgICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICAgICAgY2FzZSAnc2luZ2xlb3B0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RhdGUnO1xuICAgICAgICAgICAgY2FzZSAndmNhcmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAndmNhcmQnO1xuICAgICAgICAgICAgY2FzZSAnbXVsdGl2YWx1ZUZpeGVkQmFkZ2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ211bHRpdmFsdWVTdWdnZXN0QmFkZ2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZXZhbHVlU3VnZ2VzdEJhZGdlcyc6XG4gICAgICAgICAgICBjYXNlICdtdWx0aXZhbHVlQmFkZ2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZXZhbHVlVHJlZSc6XG4gICAgICAgICAgICBjYXNlICdtdWx0aXZhbHVlVHJlZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlld0luc3RhbmNlLnRyZWVEaXNwbGF5ID09PSAnZmxhdCcgPyAnYXJyYXknIDogJ3RyZWUnO1xuICAgICAgICAgICAgY2FzZSAnc2xpZGVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NsaWRlcic7XG4gICAgICAgICAgICBjYXNlICdkdXJhdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkdXJhdGlvbic7XG4gICAgICAgICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYW5nZSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG5cbiAgICBzdXBwb3J0c0lubGluZUVkaXRpbmcoKSB7XG4gICAgICAgIHJldHVybiBNZHNXaWRnZXRDb21wb25lbnQuaW5saW5lRWRpdGluZy5pbmNsdWRlcyhcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0Py5kZWZpbml0aW9uLnR5cGUgYXMgTWRzV2lkZ2V0VHlwZSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5vZGVWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudGVtcG9yYXJ5VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUodGhpcy50ZW1wb3JhcnlWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmdldERlZmluaXRpb24oKS5pZDtcbiAgICAgICAgaWYgKHRoaXMuZ2V0RGVmaW5pdGlvbigpLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMubWRzRWRpdG9ySW5zdGFuY2U/LnZhbHVlcyQudmFsdWU7XG4gICAgICAgICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZXNbaWQgKyAnX2Zyb20nXT8uWzBdLCB2YWx1ZXNbaWQgKyAnX3RvJ10/LlswXV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1kc0VkaXRvckluc3RhbmNlPy52YWx1ZXMkLnZhbHVlPy5baWRdKSB7XG4gICAgICAgICAgICAvLyBzdXBwb3J0IG9uIHRoZSBmbHkgY2hhbmdlcyt1cGRhdGVzIG9mIHRoZSB2YWx1ZXNcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKHRoaXMubWRzRWRpdG9ySW5zdGFuY2UudmFsdWVzJC52YWx1ZVtpZF0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMud2lkZ2V0LmdldEluaXRpYWxWYWx1ZXMoKT8uam9pbnRWYWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKHRoaXMud2lkZ2V0LmdldEluaXRpYWxWYWx1ZXMoKS5qb2ludFZhbHVlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFZhbHVlKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGRhdGE7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUuZXZlcnkoKHYpID0+ICF2KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5nZXREZWZpbml0aW9uKCkudmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBwaW5nID0gdGhpcy53aWRnZXQuZGVmaW5pdGlvbi52YWx1ZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh2OiBhbnkpID0+IGRhdGEuZmlsdGVyKChkKSA9PiBkID09PSB2LmlkKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIC5tYXAoKHY6IGFueSkgPT4gdi5jYXB0aW9uKTtcbiAgICAgICAgICAgIGlmIChtYXBwaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBjbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0RGVmaW5pdGlvbigpLmxpbmsgPT09ICdfQkxBTksnKSB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLmZvcm1hdFRleHQoKVswXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXREZWZpbml0aW9uKCkubGluayA9PT0gJ19TRUxGJykge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmZvcm1hdFRleHQoKVswXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVW5zdXBwb3J0ZWQgbGluayB0eXBlICcgKyB0aGlzLmdldERlZmluaXRpb24oKS5saW5rKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPy5ldmVyeSgodikgPT4gIXYpIHx8IHRoaXMudmFsdWU/Lmxlbmd0aCA9PT0gMCB8fCAhdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBmb3JtYXREYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldERlZmluaXRpb24oKS5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGVQaXBlKCdlbicpLnRyYW5zZm9ybSh2LCB0aGlzLmdldERlZmluaXRpb24oKS5mb3JtYXQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdDb3VsZCBub3QgZm9ybWF0IGRhdGUnLCBlLCB0aGlzLmdldERlZmluaXRpb24oKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBEYXRlSGVscGVyLmZvcm1hdERhdGUodGhpcy50cmFuc2xhdGUsIHYsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbHdheXNUaW1lOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBEYXRlSGVscGVyLmZvcm1hdERhdGUodGhpcy50cmFuc2xhdGUsIHYsIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd0Fsd2F5c1RpbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvcm1hdE51bWJlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy53aWRnZXQuZGVmaW5pdGlvbi5mb3JtYXQgPT09ICdieXRlcycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1hdFNpemVQaXBlKHRoaXMudHJhbnNsYXRlKS50cmFuc2Zvcm0odik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9ybWF0VGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy53aWRnZXQuZGVmaW5pdGlvbi5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQuZGVmaW5pdGlvbi5mb3JtYXQucmVwbGFjZSgnJHt2YWx1ZX0nLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gaW5zdGFuY2U6IE1kc0VkaXRvcldpZGdldEJhc2VcbiAgICBhc3luYyBmaW5pc2hFZGl0KGluc3RhbmNlOiBhbnksIHN0b3JlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHN0b3JlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1kc0VkaXRvckluc3RhbmNlLnNhdmVXaWRnZXRWYWx1ZShpbnN0YW5jZS53aWRnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGVtcG9yYXJ5VmFsdWUgPSBpbnN0YW5jZS53aWRnZXQuZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0Tm9kZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuZWRpdFdyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5pbm5lckhUTUwgPSBudWxsO1xuICAgICAgICBhd2FpdCB0aGlzLm1kc0VkaXRvckluc3RhbmNlLmZldGNoRGlzcGxheVZhbHVlcyh0aGlzLndpZGdldCk7XG4gICAgfVxuXG4gICAgaXNFZGl0YWJsZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1kc0VkaXRvckluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdGluZyA9PT0gJ2Fsd2F5cycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1cHBvcnRzSW5saW5lRWRpdGluZygpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5tZHNFZGl0b3JJbnN0YW5jZS5ub2RlcyQudmFsdWU7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1kc0VkaXRvckluc3RhbmNlLmVkaXRvck1vZGUgPT09ICdpbmxpbmUnICYmXG4gICAgICAgICAgICB0aGlzLndpZGdldC5kZWZpbml0aW9uLmludGVyYWN0aW9uVHlwZSA9PT0gJ0lucHV0JyAmJlxuICAgICAgICAgICAgbm9kZXM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICAgICAgUmVzdEhlbHBlci5oYXNBY2Nlc3NQZXJtaXNzaW9uKG5vZGVzWzBdLCBSZXN0Q29uc3RhbnRzLkFDQ0VTU19XUklURSkgJiZcbiAgICAgICAgICAgIHRoaXMuc3VwcG9ydHNJbmxpbmVFZGl0aW5nKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBmb2N1cygpIHtcbiAgICAgICAgLy8gdGhpcy5tYXRSaXBwbGUubGF1bmNoKHt9KTtcbiAgICAgICAgYXdhaXQgdGhpcy51aS5zY3JvbGxTbW9vdGhFbGVtZW50VG9DaGlsZCh0aGlzLmVkaXRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLm1hdFJpcHBsZS5sYXVuY2goe30pO1xuICAgICAgICAvL2NvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudmlldy5pbmplY3RFZGl0RmllbGQodGhpcywgdGhpcy5lZGl0V3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdKTtcbiAgICAgICAgLy9hd2FpdCB0aGlzLnVpLnNjcm9sbFNtb290aEVsZW1lbnRUb0NoaWxkKHJlc3VsdC5odG1sRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRoZSBwYXRoIGZvciBhIGdpdmVuIHZhbHVlIGluIGEgdHJlZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0UGF0aCh2OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldERlZmluaXRpb24oKS52YWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogdixcbiAgICAgICAgICAgICAgICAgICAgY2FwdGlvbjogdixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXRoOiBNZHNWYWx1ZVtdID0gW107XG4gICAgICAgIGxldCBwb2ludGVyOiBzdHJpbmcgPSB2O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWQgPSB0aGlzLmdldERlZmluaXRpb24oKS52YWx1ZXMuZmluZCgodykgPT4gdy5pZCA9PT0gcG9pbnRlcik7XG4gICAgICAgICAgICBpZiAobWFwcGVkKSB7XG4gICAgICAgICAgICAgICAgcGF0aC5wdXNoKG1hcHBlZCk7XG4gICAgICAgICAgICAgICAgcG9pbnRlciA9IG1hcHBlZC5wYXJlbnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoLnJldmVyc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmZXRjaCB0aGUgcmF3IG5vZGUgdmFsdWVcbiAgICAgKiBOb3RlOiBXaWxsIG5vdCB3b3JrIGluIGEgYnVsayBzdGF0ZSFcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFJhd1ZhbHVlKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tZHNFZGl0b3JJbnN0YW5jZT8ubm9kZXMkLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICBtYXAoKHY6IE5vZGVbXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHY/LlswXT8ucHJvcGVydGllc1t0aGlzLndpZGdldC5kZWZpbml0aW9uLmlkXSBhcyBzdHJpbmdbXSk/Lm1hcCgoaWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogdGhpcy5nZXRQYXRoKGlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApIHx8IG9mKG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0U2VhcmNoUGFyYW1zKGtleTogTWRzVmFsdWUpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICAgICAgY29uc3QgbWRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcbiAgICAgICAgbWRzW3RoaXMud2lkZ2V0LmRlZmluaXRpb24uaWRdID0gW2tleS5pZF07XG4gICAgICAgIHBhcmFtcy5tZHMgPSB0aGlzLm1kc0VkaXRvckluc3RhbmNlLm1kc0lkO1xuICAgICAgICBwYXJhbXMuc2lkZW5hdiA9IHRydWU7XG4gICAgICAgIHBhcmFtcy5yZXBvID0gdGhpcy5tZHNFZGl0b3JJbnN0YW5jZS5ub2RlcyQudmFsdWU/LlswXS5yZWYucmVwbztcbiAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSBKU09OLnN0cmluZ2lmeShtZHMpO1xuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxuICAgIHN0YXJ0RWRpdChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdm9pZCB0aGlzLnZpZXcuaW5qZWN0RWRpdEZpZWxkKHRoaXMsIHRoaXMuZWRpdFdyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSk7XG4gICAgfVxufVxuIiwiPGVzLW1kcy1lZGl0b3Itd2lkZ2V0LWNvbnRhaW5lclxuICAqbmdJZj1cIiFlZGl0V3JhcHBlci5pbm5lclRleHQudHJpbSgpXCJcbiAgW2luamVjdGVkVmlld109XCJ0aGlzXCJcbiAgW3dpZGdldF09XCJ3aWRnZXRcIlxuICBbbGFiZWxdPVwiZmFsc2VcIlxuICBbd3JhcEluRm9ybUZpZWxkXT1cImZhbHNlXCJcbiAgW3dyYXBJbkdyb3VwXT1cImZhbHNlXCJcbiAgW3ZhbHVlVHlwZV09XCJ2YWx1ZVR5cGVcIlxuICBtYXRSaXBwbGVcbiAgW21hdFJpcHBsZURpc2FibGVkXT1cInRydWVcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZWRpdC13cmFwcGVyXCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhaXNFbXB0eSgpIHx8ICF3aWRnZXQuZGVmaW5pdGlvbi5oaWRlSWZFbXB0eSB8fCBpc0VkaXRhYmxlKClcIlxuICAgICAgY2xhc3M9XCJ3aWRnZXQtd3JhcHBlclwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIndpZGdldC1sYWJlbFwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwiaGVhZGluZ0xldmVsID8gJ2hlYWRpbmcnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGV2ZWxdPVwiaGVhZGluZ0xldmVsXCJcbiAgICAgICAgKm5nSWY9XCJ3aWRnZXQuZGVmaW5pdGlvbi5jYXB0aW9uICYmIHNob3dDYXB0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3sgd2lkZ2V0LmRlZmluaXRpb24uY2FwdGlvblxuICAgICAgICB9fTxzcGFuICpuZ0lmPVwiIWhlYWRpbmdMZXZlbFwiIGNsYXNzPVwiY2RrLXZpc3VhbGx5LWhpZGRlblwiPjogPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidmFsdWUtd3JhcHBlclwiXG4gICAgICAgIFtjbGFzcy52YWx1ZS13cmFwcGVyLWVkaXRdPVwiaXNFZGl0YWJsZSgpXCJcbiAgICAgICAgKGNsaWNrKT1cImlzRWRpdGFibGUoKSA/IHN0YXJ0RWRpdCgkZXZlbnQpIDogbnVsbFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0VtcHR5KClcIiBjbGFzcz1cIndpZGdldC1kYXRhIHdpZGdldC1uby1kYXRhIHdpZGdldC10eXBlLXt7IGJhc2ljVHlwZSB9fVwiPlxuICAgICAgICAgIC1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIiFpc0VtcHR5KClcIlxuICAgICAgICAgIGNsYXNzPVwid2lkZ2V0LWRhdGEgd2lkZ2V0LXR5cGUte3sgYmFzaWNUeXBlIH19IHt7XG4gICAgICAgICAgICB3aWRnZXQuZGVmaW5pdGlvbi5saW5rID8gJ3dpZGdldC1saW5rJyA6ICcnXG4gICAgICAgICAgfX1cIlxuICAgICAgICAgIChjbGljayk9XCJjbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICd0ZXh0J1wiPnt7IGZvcm1hdFRleHQoKSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICdudW1iZXInXCI+e3sgZm9ybWF0TnVtYmVyKCkgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlID09PSAnZGF0ZSdcIj57eyBmb3JtYXREYXRlKCkgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlID09PSAnYXJyYXknXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyYXktZW50cnlcIiAqbmdGb3I9XCJsZXQgdiBvZiB2YWx1ZVwiPnt7IHYgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlID09PSAndHJlZSdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLWVudHJ5XCIgKm5nRm9yPVwibGV0IHYgb2YgcmF3VmFsdWVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVFbnRyeTsgY29udGV4dDogeyBwYXRoOiB2LnBhdGggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSA9PT0gJ3ZjYXJkJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycmF5LWVudHJ5XCIgKm5nRm9yPVwibGV0IHYgb2YgdmFsdWVcIj57eyB2IHwgdmNhcmROYW1lIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSA9PT0gJ3NsaWRlcidcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2xpZGVyLXZhbHVlXCI+e3sgdmFsdWUgfX08L3NwYW5cbiAgICAgICAgICAgID48c3Bhbj4gLyA8L3NwYW4+PHNwYW4gY2xhc3M9XCJzbGlkZXItbWF4XCI+e3sgd2lkZ2V0LmRlZmluaXRpb24ubWF4IH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICdkdXJhdGlvbidcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHVyYXRpb24tdmFsdWVcIj57eyB2YWx1ZVswXSB8IGFwcE1kc0R1cmF0aW9uIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICdyYW5nZSdcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2xpZGVyLXZhbHVlXCI+e3sgdmFsdWVbMF0gfX08L3NwYW5cbiAgICAgICAgICAgID4tPHNwYW4gY2xhc3M9XCJzbGlkZXItdmFsdWVcIj57eyB2YWx1ZVsxXSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlID09PSAndW5rbm93bidcIj5cbiAgICAgICAgICAgIFRoZSB3aWRnZXQgdHlwZSB7eyB3aWRnZXQuZGVmaW5pdGlvbi50eXBlIH19IGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIHZpYSBhbmd1bGFyXG4gICAgICAgICAgICByZW5kZXJpbmdcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWRzRWRpdG9ySW5zdGFuY2UuZWRpdG9yTW9kZSA9PT0gJ2lubGluZScgJiYgd2lkZ2V0LmRlZmluaXRpb24uaW50ZXJhY3Rpb25UeXBlID09PSAnSW5wdXQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ2aWV3LmluamVjdEVkaXRGaWVsZCh0aGlzLCBlZGl0KVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1lZGl0XCI+XG4gICAgICA8aSBlc0ljb249XCJlZGl0XCI+PC9pPlxuICAgIDwvYnV0dG9uPi0tPlxuICA8L2Rpdj5cbjwvZXMtbWRzLWVkaXRvci13aWRnZXQtY29udGFpbmVyPlxuPGRpdiBjbGFzcz1cImVkaXQtd3JhcHBlclwiPlxuICA8ZGl2ICNlZGl0V3JhcHBlcj48ZGl2ICNlZGl0PjwvZGl2PjwvZGl2PlxuICA8IS0tPGJ1dHRvbiAqbmdJZj1cIiEhZWRpdFdyYXBwZXIuaW5uZXJUZXh0LnRyaW0oKVwiIG1hdC1pY29uLWJ1dHRvbj48aSBlc0ljb249XCJzYXZlXCI+PC9pPjwvYnV0dG9uPi0tPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI3RyZWVFbnRyeSBsZXQtcGF0aD1cInBhdGhcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdCBvZiBwYXRoOyBsZXQgZmlyc3QgPSBmaXJzdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlyc3RcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY2RrLXZpc3VhbGx5LWhpZGRlblwiPnt7ICdTVUJfQ0FURUdPUllfQVJJQScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8aSBlc0ljb249XCJrZXlib2FyZF9hcnJvd19yaWdodFwiIFthcmlhXT1cImZhbHNlXCI+PC9pPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxhXG4gICAgICBbcm91dGVyTGlua109XCInLycgKyBST1VURVJfUFJFRklYICsgJ3NlYXJjaCdcIlxuICAgICAgW3F1ZXJ5UGFyYW1zXT1cImdldFNlYXJjaFBhcmFtcyh0KVwiXG4gICAgICAqbmdJZj1cIndpZGdldC5kZWZpbml0aW9uLmlzU2VhcmNoYWJsZVwiXG4gICAgICA+e3sgdC5jYXB0aW9uIH19PC9hXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwiIXdpZGdldC5kZWZpbml0aW9uLmlzU2VhcmNoYWJsZVwiPnt7IHQuY2FwdGlvbiB9fTwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -16,11 +16,11 @@ export class NodeEntriesGlobalOptionsComponent {
|
|
|
16
16
|
return this.entriesService.globalOptionsSubject.pipe(map((options) => options.filter((e) => e.isEnabled)));
|
|
17
17
|
}
|
|
18
18
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodeEntriesGlobalOptionsComponent, deps: [{ token: i1.NodeEntriesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: NodeEntriesGlobalOptionsComponent, selector: "es-node-entries-global-options", inputs: { displayType: "displayType" }, ngImport: i0, template: "<div\n *ngIf=\"(getEnabledOptions() | async)?.length\"\n role=\"listitem\"\n class=\"global-options\"\n [class.global-options-small]=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n [class.global-options-table]=\"displayType === NodeEntriesDisplayType.Table\"\n>\n <button\n mat-button\n *ngFor=\"let option of getEnabledOptions() | async\"\n (click)=\"option.callback()\"\n class=\"global-option-btn\"\n attr.data-test=\"card-button-{{ option.name }}\"\n >\n <ng-container *ngTemplateOutlet=\"globalOption; context: { option: this.option }\"></ng-container>\n </button>\n</div>\n<ng-template #globalOption let-option=\"option\">\n <span class=\"global-option\">\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"label\">{{ option.name | translate }}</span>\n </span>\n</ng-template>\n", styles: [":root{--primary: var(--palette-primary-500);--warning: #cd2457;--aiColor: #6d176e;--aiColorText: #fff;--tableIconSize: 38px;--textLight: #585858;--textMediumLight: #888;--textMain: #383838;--cardWidth: 240px;--colorStatusPositive: #40bf8e;--colorStatusNegative: var(--warning);--colorStarActive: #ba7c00;--nodeVirtualColor: #42ca8d;--nodeVirtualColorLight: #b8fcdd;--transitionNormal: .2s;--focusWidth: 2px;--fontSizeXSmall: 85%;--itemSelectedTextColor: var(--palette-primary-700);--listItemSelectedBackground: var(--palette-primary-50);--listItemSelectedBackgroundEffect: linear-gradient( to right, var(--primary) 0, var(--primary) 5px, var(--palette-primary-50) 5px, var(--palette-primary-50) 5px ) no-repeat}.global-options{display:grid;grid-template-columns:auto;grid-template-rows:repeat(auto-fit,minmax(70px,1fr));grid-row-gap:20px;height:100%;min-height:250px}.global-options.global-options-small{min-height:130px}.global-options.global-options-table{min-height:100px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-column-gap:20px}.global-options .global-option-btn{display:flex;height:100%;padding:0}.global-options .global-option{cursor:pointer;display:flex;box-shadow:0 0 5px #0000004d;width:100%;height:100%;flex-direction:column;align-items:center;justify-content:center;border:3px dashed var(--primary);color:var(--primary)}.global-options .global-option>i{font-size:32px;margin-bottom:5px}.global-options .global-option>.label{cursor:pointer;font-weight:700}.global-options .global-option:hover,.global-options .global-option:focus{background-color:rgb(var(--palette-primary-50))}:host ::ng-deep .global-options .global-option-btn .mdc-button__label{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: NodeEntriesGlobalOptionsComponent, selector: "es-node-entries-global-options", inputs: { displayType: "displayType" }, ngImport: i0, template: "<div\n *ngIf=\"(getEnabledOptions() | async)?.length\"\n role=\"listitem\"\n class=\"global-options\"\n [class.global-options-small]=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n [class.global-options-table]=\"displayType === NodeEntriesDisplayType.Table\"\n>\n <button\n mat-button\n *ngFor=\"let option of getEnabledOptions() | async\"\n (click)=\"option.callback()\"\n class=\"global-option-btn\"\n attr.data-test=\"card-button-{{ option.name }}\"\n >\n <ng-container *ngTemplateOutlet=\"globalOption; context: { option: this.option }\"></ng-container>\n </button>\n</div>\n<ng-template #globalOption let-option=\"option\">\n <span class=\"global-option\">\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"label\">{{ option.name | translate }}</span>\n </span>\n</ng-template>\n", styles: [":root{--primary: var(--palette-primary-500);--warning: #cd2457;--aiColor: #6d176e;--aiColorText: #fff;--aiColorChip: #fff;--aiColorChipRemove: #555;--aiColorChipBorder: #ddd;--aiColorChipText: var(--aiColor);--tableIconSize: 38px;--textLight: #585858;--textMediumLight: #888;--textMain: #383838;--cardWidth: 240px;--chipsSeperatorLineColor: #e2e2e2;--colorStatusPositive: #40bf8e;--colorStatusNegative: var(--warning);--colorStarActive: #ba7c00;--nodeVirtualColor: #42ca8d;--nodeVirtualColorLight: #b8fcdd;--transitionNormal: .2s;--focusWidth: 2px;--fontSizeXSmall: 85%;--itemSelectedTextColor: var(--palette-primary-700);--listItemSelectedBackground: var(--palette-primary-50);--listItemSelectedBackgroundEffect: linear-gradient( to right, var(--primary) 0, var(--primary) 5px, var(--palette-primary-50) 5px, var(--palette-primary-50) 5px ) no-repeat}.global-options{display:grid;grid-template-columns:auto;grid-template-rows:repeat(auto-fit,minmax(70px,1fr));grid-row-gap:20px;height:100%;min-height:250px}.global-options.global-options-small{min-height:130px}.global-options.global-options-table{min-height:100px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-column-gap:20px}.global-options .global-option-btn{display:flex;height:100%;padding:0}.global-options .global-option{cursor:pointer;display:flex;box-shadow:0 0 5px #0000004d;width:100%;height:100%;flex-direction:column;align-items:center;justify-content:center;border:3px dashed var(--primary);color:var(--primary)}.global-options .global-option>i{font-size:32px;margin-bottom:5px}.global-options .global-option>.label{cursor:pointer;font-weight:700}.global-options .global-option:hover,.global-options .global-option:focus{background-color:rgb(var(--palette-primary-50))}:host ::ng-deep .global-options .global-option-btn .mdc-button__label{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
20
|
}
|
|
21
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodeEntriesGlobalOptionsComponent, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
|
-
args: [{ selector: 'es-node-entries-global-options', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"(getEnabledOptions() | async)?.length\"\n role=\"listitem\"\n class=\"global-options\"\n [class.global-options-small]=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n [class.global-options-table]=\"displayType === NodeEntriesDisplayType.Table\"\n>\n <button\n mat-button\n *ngFor=\"let option of getEnabledOptions() | async\"\n (click)=\"option.callback()\"\n class=\"global-option-btn\"\n attr.data-test=\"card-button-{{ option.name }}\"\n >\n <ng-container *ngTemplateOutlet=\"globalOption; context: { option: this.option }\"></ng-container>\n </button>\n</div>\n<ng-template #globalOption let-option=\"option\">\n <span class=\"global-option\">\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"label\">{{ option.name | translate }}</span>\n </span>\n</ng-template>\n", styles: [":root{--primary: var(--palette-primary-500);--warning: #cd2457;--aiColor: #6d176e;--aiColorText: #fff;--tableIconSize: 38px;--textLight: #585858;--textMediumLight: #888;--textMain: #383838;--cardWidth: 240px;--colorStatusPositive: #40bf8e;--colorStatusNegative: var(--warning);--colorStarActive: #ba7c00;--nodeVirtualColor: #42ca8d;--nodeVirtualColorLight: #b8fcdd;--transitionNormal: .2s;--focusWidth: 2px;--fontSizeXSmall: 85%;--itemSelectedTextColor: var(--palette-primary-700);--listItemSelectedBackground: var(--palette-primary-50);--listItemSelectedBackgroundEffect: linear-gradient( to right, var(--primary) 0, var(--primary) 5px, var(--palette-primary-50) 5px, var(--palette-primary-50) 5px ) no-repeat}.global-options{display:grid;grid-template-columns:auto;grid-template-rows:repeat(auto-fit,minmax(70px,1fr));grid-row-gap:20px;height:100%;min-height:250px}.global-options.global-options-small{min-height:130px}.global-options.global-options-table{min-height:100px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-column-gap:20px}.global-options .global-option-btn{display:flex;height:100%;padding:0}.global-options .global-option{cursor:pointer;display:flex;box-shadow:0 0 5px #0000004d;width:100%;height:100%;flex-direction:column;align-items:center;justify-content:center;border:3px dashed var(--primary);color:var(--primary)}.global-options .global-option>i{font-size:32px;margin-bottom:5px}.global-options .global-option>.label{cursor:pointer;font-weight:700}.global-options .global-option:hover,.global-options .global-option:focus{background-color:rgb(var(--palette-primary-50))}:host ::ng-deep .global-options .global-option-btn .mdc-button__label{width:100%;height:100%}\n"] }]
|
|
23
|
+
args: [{ selector: 'es-node-entries-global-options', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"(getEnabledOptions() | async)?.length\"\n role=\"listitem\"\n class=\"global-options\"\n [class.global-options-small]=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n [class.global-options-table]=\"displayType === NodeEntriesDisplayType.Table\"\n>\n <button\n mat-button\n *ngFor=\"let option of getEnabledOptions() | async\"\n (click)=\"option.callback()\"\n class=\"global-option-btn\"\n attr.data-test=\"card-button-{{ option.name }}\"\n >\n <ng-container *ngTemplateOutlet=\"globalOption; context: { option: this.option }\"></ng-container>\n </button>\n</div>\n<ng-template #globalOption let-option=\"option\">\n <span class=\"global-option\">\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"label\">{{ option.name | translate }}</span>\n </span>\n</ng-template>\n", styles: [":root{--primary: var(--palette-primary-500);--warning: #cd2457;--aiColor: #6d176e;--aiColorText: #fff;--aiColorChip: #fff;--aiColorChipRemove: #555;--aiColorChipBorder: #ddd;--aiColorChipText: var(--aiColor);--tableIconSize: 38px;--textLight: #585858;--textMediumLight: #888;--textMain: #383838;--cardWidth: 240px;--chipsSeperatorLineColor: #e2e2e2;--colorStatusPositive: #40bf8e;--colorStatusNegative: var(--warning);--colorStarActive: #ba7c00;--nodeVirtualColor: #42ca8d;--nodeVirtualColorLight: #b8fcdd;--transitionNormal: .2s;--focusWidth: 2px;--fontSizeXSmall: 85%;--itemSelectedTextColor: var(--palette-primary-700);--listItemSelectedBackground: var(--palette-primary-50);--listItemSelectedBackgroundEffect: linear-gradient( to right, var(--primary) 0, var(--primary) 5px, var(--palette-primary-50) 5px, var(--palette-primary-50) 5px ) no-repeat}.global-options{display:grid;grid-template-columns:auto;grid-template-rows:repeat(auto-fit,minmax(70px,1fr));grid-row-gap:20px;height:100%;min-height:250px}.global-options.global-options-small{min-height:130px}.global-options.global-options-table{min-height:100px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-column-gap:20px}.global-options .global-option-btn{display:flex;height:100%;padding:0}.global-options .global-option{cursor:pointer;display:flex;box-shadow:0 0 5px #0000004d;width:100%;height:100%;flex-direction:column;align-items:center;justify-content:center;border:3px dashed var(--primary);color:var(--primary)}.global-options .global-option>i{font-size:32px;margin-bottom:5px}.global-options .global-option>.label{cursor:pointer;font-weight:700}.global-options .global-option:hover,.global-options .global-option:focus{background-color:rgb(var(--palette-primary-50))}:host ::ng-deep .global-options .global-option-btn .mdc-button__label{width:100%;height:100%}\n"] }]
|
|
24
24
|
}], ctorParameters: () => [{ type: i1.NodeEntriesService }], propDecorators: { displayType: [{
|
|
25
25
|
type: Input
|
|
26
26
|
}] } });
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class MdsDurationPipe {
|
|
4
|
+
transform(value) {
|
|
5
|
+
if (isNaN(Number(value)) || !value) {
|
|
6
|
+
return '-';
|
|
7
|
+
}
|
|
8
|
+
const totalSeconds = Math.floor(parseInt(value) / 1000);
|
|
9
|
+
const hours = Math.floor(totalSeconds / 3600);
|
|
10
|
+
const minutes = Math.round((totalSeconds - hours * 3600) / 60);
|
|
11
|
+
if (hours > 0) {
|
|
12
|
+
return hours + 'h ' + minutes + 'm';
|
|
13
|
+
}
|
|
14
|
+
return minutes + 'm';
|
|
15
|
+
}
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MdsDurationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
17
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: MdsDurationPipe, name: "appMdsDuration" }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MdsDurationPipe, decorators: [{
|
|
20
|
+
type: Pipe,
|
|
21
|
+
args: [{
|
|
22
|
+
name: 'appMdsDuration',
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRzLWR1cmF0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3BpcGVzL21kcy1kdXJhdGlvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8sZUFBZTtJQUN4QixTQUFTLENBQUMsS0FBYTtRQUNuQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pDLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sS0FBSyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3RELE1BQU0sT0FBTyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1osT0FBTyxLQUFLLEdBQUcsSUFBSSxHQUFHLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDeEMsQ0FBQztRQUNELE9BQU8sT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDOytHQVpRLGVBQWU7NkdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFIM0IsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsZ0JBQWdCO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICAgIG5hbWU6ICdhcHBNZHNEdXJhdGlvbicsXG59KVxuZXhwb3J0IGNsYXNzIE1kc0R1cmF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGlzTmFOKE51bWJlcih2YWx1ZSkpIHx8ICF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuICctJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0b3RhbFNlY29uZHMgPSBNYXRoLmZsb29yKHBhcnNlSW50KHZhbHVlKSAvIDEwMDApO1xuICAgICAgICBjb25zdCBob3VyczogbnVtYmVyID0gTWF0aC5mbG9vcih0b3RhbFNlY29uZHMgLyAzNjAwKTtcbiAgICAgICAgY29uc3QgbWludXRlczogbnVtYmVyID0gTWF0aC5yb3VuZCgodG90YWxTZWNvbmRzIC0gaG91cnMgKiAzNjAwKSAvIDYwKTtcbiAgICAgICAgaWYgKGhvdXJzID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXJzICsgJ2ggJyArIG1pbnV0ZXMgKyAnbSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbnV0ZXMgKyAnbSc7XG4gICAgfVxufVxuIl19
|