@wavemaker/app-ng-runtime 11.4.0-rc.5346 → 11.4.0-rc.5351
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.
- app-ng-runtime/components/base/bundles/index.umd.js +15 -4
- app-ng-runtime/components/base/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/base/esm2015/directives/show-in-device.directive.js +16 -5
- app-ng-runtime/components/base/fesm2015/index.js +15 -4
- app-ng-runtime/components/base/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/basic/tree/bundles/index.umd.js +16 -8
- app-ng-runtime/components/basic/tree/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/basic/tree/esm2015/tree.component.js +17 -9
- app-ng-runtime/components/basic/tree/fesm2015/index.js +16 -8
- app-ng-runtime/components/basic/tree/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/chart/bundles/index.umd.js +1 -1
- app-ng-runtime/components/chart/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/chart/esm2015/chart.component.js +2 -2
- app-ng-runtime/components/chart/fesm2015/index.js +1 -1
- app-ng-runtime/components/chart/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js +43 -2
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/containers/wizard/esm2015/wizard-step/wizard-step.props.js +3 -2
- app-ng-runtime/components/containers/wizard/esm2015/wizard.component.js +42 -2
- app-ng-runtime/components/containers/wizard/fesm2015/index.js +43 -2
- app-ng-runtime/components/containers/wizard/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/containers/wizard/index.metadata.json +1 -1
- app-ng-runtime/components/containers/wizard/wizard.component.d.ts +2 -0
- app-ng-runtime/core/bundles/index.umd.js +12 -2
- app-ng-runtime/core/bundles/index.umd.js.map +1 -1
- app-ng-runtime/core/esm2015/services/viewport.service.js +6 -4
- app-ng-runtime/core/esm2015/utils/utils.js +11 -3
- app-ng-runtime/core/fesm2015/index.js +15 -5
- app-ng-runtime/core/fesm2015/index.js.map +1 -1
- app-ng-runtime/core/index.metadata.json +1 -1
- app-ng-runtime/core/utils/utils.d.ts +2 -2
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +163 -132
- app-ng-runtime/runtime/base/bundles/index.umd.js.map +1 -1
- app-ng-runtime/runtime/base/esm2015/public_api.js +2 -1
- app-ng-runtime/runtime/base/esm2015/runtime-base.module.js +3 -1
- app-ng-runtime/runtime/base/esm2015/services/app.service.js +3 -1
- app-ng-runtime/runtime/base/esm2015/services/pipe.service.js +33 -0
- app-ng-runtime/runtime/base/fesm2015/index.js +148 -119
- app-ng-runtime/runtime/base/fesm2015/index.js.map +1 -1
- app-ng-runtime/runtime/base/index.metadata.json +1 -1
- app-ng-runtime/runtime/base/public_api.d.ts +1 -0
- app-ng-runtime/runtime/base/services/pipe.service.d.ts +9 -0
|
@@ -42,9 +42,11 @@ export class TreeComponent extends StylableComponent {
|
|
|
42
42
|
if (nv > 0) {
|
|
43
43
|
this.level = nv;
|
|
44
44
|
}
|
|
45
|
+
this.renderTree();
|
|
45
46
|
break;
|
|
46
47
|
case 'treeicons':
|
|
47
48
|
this.treeicon = nv;
|
|
49
|
+
this.renderTree();
|
|
48
50
|
break;
|
|
49
51
|
case 'nodelabel':
|
|
50
52
|
this.setting.data.key.name = this.labelKey;
|
|
@@ -63,6 +65,7 @@ export class TreeComponent extends StylableComponent {
|
|
|
63
65
|
break;
|
|
64
66
|
case 'class':
|
|
65
67
|
this.treeClass = nv;
|
|
68
|
+
this.renderTree();
|
|
66
69
|
break;
|
|
67
70
|
default:
|
|
68
71
|
super.onPropertyChange(key, nv, ov);
|
|
@@ -102,7 +105,7 @@ export class TreeComponent extends StylableComponent {
|
|
|
102
105
|
getNodesFromString(value) {
|
|
103
106
|
return value.split(',').map((item) => {
|
|
104
107
|
return {
|
|
105
|
-
'
|
|
108
|
+
'label': item && item.trim()
|
|
106
109
|
};
|
|
107
110
|
});
|
|
108
111
|
}
|
|
@@ -232,8 +235,6 @@ export class TreeComponent extends StylableComponent {
|
|
|
232
235
|
});
|
|
233
236
|
}
|
|
234
237
|
onCollapse(event, treeId, treeNode) {
|
|
235
|
-
// const el = $(`#${treeNode.tId}_switch`);
|
|
236
|
-
// $(el).addClass(this.treeicon || defaultTreeIconClass);
|
|
237
238
|
let path = this.getPath(treeNode, "");
|
|
238
239
|
const eventParams = {
|
|
239
240
|
'$event': event,
|
|
@@ -246,16 +247,25 @@ export class TreeComponent extends StylableComponent {
|
|
|
246
247
|
return node[this.childrenKey];
|
|
247
248
|
}
|
|
248
249
|
get childrenKey() {
|
|
250
|
+
if (!this.nodechildren) {
|
|
251
|
+
return 'children';
|
|
252
|
+
}
|
|
249
253
|
const depth = this.countDepth(this.nodechildren);
|
|
250
|
-
return depth ? this.nodechildren.split('.').pop() :
|
|
254
|
+
return depth ? this.nodechildren.split('.').pop() : this.nodechildren;
|
|
251
255
|
}
|
|
252
256
|
get labelKey() {
|
|
257
|
+
if (!this.nodelabel) {
|
|
258
|
+
return 'label';
|
|
259
|
+
}
|
|
253
260
|
const depth = this.countDepth(this.nodelabel);
|
|
254
|
-
return depth ? this.nodelabel.split('.').pop() :
|
|
261
|
+
return depth ? this.nodelabel.split('.').pop() : this.nodelabel;
|
|
255
262
|
}
|
|
256
263
|
get iconKey() {
|
|
264
|
+
if (!this.nodeicon) {
|
|
265
|
+
return 'icon';
|
|
266
|
+
}
|
|
257
267
|
const depth = this.countDepth(this.nodeicon);
|
|
258
|
-
return depth ? this.nodeicon.split('.').pop() :
|
|
268
|
+
return depth ? this.nodeicon.split('.').pop() : this.nodeicon;
|
|
259
269
|
}
|
|
260
270
|
get treeObj() {
|
|
261
271
|
return $.fn.zTree.getZTreeObj(`${this.name}`);
|
|
@@ -341,13 +351,11 @@ export class TreeComponent extends StylableComponent {
|
|
|
341
351
|
$.fn.zTreeKeyboardNavigation(zTree, $('ul[name="' + this.name + '"]'), null, this.treeicon || defaultTreeIconClass);
|
|
342
352
|
}
|
|
343
353
|
setSelectedItem(treeNode) {
|
|
344
|
-
debugger;
|
|
345
354
|
this.selecteditem = getClonedObject(treeNode) || {};
|
|
346
355
|
this.selecteditem.path = this.getPath(treeNode, "");
|
|
347
356
|
const deSelectElm = $(`li[treenode].selected`);
|
|
348
357
|
deSelectElm.removeClass('selected');
|
|
349
358
|
const selectElm = $(`#${treeNode.tId}:has(.curSelectedNode)`);
|
|
350
|
-
// const selectElm = $(`li[treenode]:has(.curSelectedNode)`);
|
|
351
359
|
selectElm.addClass('selected');
|
|
352
360
|
}
|
|
353
361
|
expandNode(node, expand, eventFlag) {
|
|
@@ -392,4 +400,4 @@ TreeComponent.decorators = [
|
|
|
392
400
|
TreeComponent.ctorParameters = () => [
|
|
393
401
|
{ type: Injector }
|
|
394
402
|
];
|
|
395
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvYmFzaWMvdHJlZS9zcmMvdHJlZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUl6QyxNQUFNLFdBQVcsR0FBRyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxDQUFDO0FBQ25FLE1BQU0sb0JBQW9CLEdBQUcsWUFBWSxDQUFDO0FBVTFDLE1BQU0sT0FBTyxhQUFjLFNBQVEsaUJBQWlCO0lBeUNoRCxZQUNJLEdBQWE7UUFFYixLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBNUJwQixZQUFPLEdBQUc7WUFDZCxJQUFJLEVBQUU7Z0JBQ0YsVUFBVSxFQUFFO29CQUNSLE1BQU0sRUFBRSxLQUFLO2lCQUNoQjtnQkFDRCxHQUFHLEVBQUU7b0JBQ0QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLElBQUksRUFBRSxPQUFPO2lCQUNoQjthQUNKO1lBQ0QsSUFBSSxFQUFFO2dCQUNGLGNBQWMsRUFBRSxLQUFLO2dCQUNyQixPQUFPLEVBQUU7b0JBQ0wsY0FBYyxFQUFFLElBQUk7aUJBQ3JCO2dCQUNILFVBQVUsRUFBRSxFQUVYO2FBQ0o7WUFDRCxLQUFLLEVBQUUsRUFDTjtZQUNELFFBQVEsRUFBRSxFQUNUO1NBQ0osQ0FB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QUFHLENBQUMsQ0FBQztJQUNaLENBQUM7O0FBdGFNLDZCQUFlLEdBQUcsYUFBYSxFQUFFLENBQUM7O1lBVDVDLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsNERBQW9DO2dCQUNwQyxTQUFTLEVBQUU7b0JBQ1Asa0JBQWtCLENBQUMsYUFBYSxDQUFDO2lCQUNwQztnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7O1lBbkJrQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuaW1wb3J0IHsgQVBQTFlfU1RZTEVTX1RZUEUsIGdldE9yZGVyZWREYXRhc2V0LCBwcm92aWRlQXNXaWRnZXRSZWYsIFN0eWxhYmxlQ29tcG9uZW50LCBzdHlsZXIgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3RyZWUucHJvcHMnO1xuaW1wb3J0IHtnZXRDbG9uZWRPYmplY3R9IGZyb20gXCJAd20vY29yZVwiO1xuXG5kZWNsYXJlIGNvbnN0IF8sICQ7XG5cbmNvbnN0IFdJREdFVF9JTkZPID0ge3dpZGdldFR5cGU6ICd3bS10cmVlJywgaG9zdENsYXNzOiAnYXBwLXRyZWUnfTtcbmNvbnN0IGRlZmF1bHRUcmVlSWNvbkNsYXNzID0gJ3BsdXMtbWludXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VsW3dtVHJlZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFRyZWVDb21wb25lbnQpXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVDb21wb25lbnQgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBzZWxlY3RlZGl0ZW07XG4gICAgcHJpdmF0ZSBub2RlcztcbiAgICBwcml2YXRlIGxldmVsO1xuICAgIHByaXZhdGUgb3JkZXJieTtcbiAgICBwcml2YXRlIG5vZGVsYWJlbDtcbiAgICBwcml2YXRlIHRyZWVpY29uO1xuICAgIHByaXZhdGUgbm9kZWNoaWxkcmVuO1xuICAgIHByaXZhdGUgbm9kZWNsaWNrO1xuICAgIHByaXZhdGUgdHJlZUNsYXNzO1xuICAgIHByaXZhdGUgbm9kZWljb247XG4gICAgcHJpdmF0ZSBuYW1lO1xuICAgIHByaXZhdGUgZGF0YXZhbHVlO1xuXG4gICAgcHJpdmF0ZSBzZXR0aW5nID0ge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBzaW1wbGVEYXRhOiB7XG4gICAgICAgICAgICAgICAgZW5hYmxlOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAnY2hpbGRyZW4nLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdsYWJlbCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdmlldzoge1xuICAgICAgICAgICAgZGJsQ2xpY2tFeHBhbmQ6IGZhbHNlLFxuICAgICAgICAgICAgZm9udENzczoge1xuICAgICAgICAgICAgICAgICdmb250LWF3ZXNvbWUnOiB0cnVlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzd2l0Y2hJY29uOiB7XG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNoZWNrOiB7XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGxiYWNrOiB7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfSU5GTyk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLkNPTlRBSU5FUik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdkYXRhc2V0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVzID0gdGhpcy5nZXROb2Rlcyhudik7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5sZXZlbCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmRUcmVlKHRoaXMubGV2ZWwsIHRoaXMubm9kZXMsIDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRyZWUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xldmVscyc6XG4gICAgICAgICAgICAgICAgaWYgKG52ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxldmVsID0gbnY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndHJlZWljb25zJzpcbiAgICAgICAgICAgICAgICB0aGlzLnRyZWVpY29uID0gbnY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdub2RlbGFiZWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZy5kYXRhLmtleS5uYW1lID0gdGhpcy5sYWJlbEtleTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRyZWUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ25vZGVjaGlsZHJlbic6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmRhdGEua2V5LmNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbktleTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRyZWUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ25vZGVpY29uJzpcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVpY29uID0gdGhpcy5pY29uS2V5O1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVHJlZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb3JkZXJieSc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUcmVlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjbGFzcyc6XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQ2xhc3MgPSBudjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBleHBhbmRzIHRoZSB0cmVlIG5vZGVzIGlmIHRoZSBwcm9wZXJ0eSBpcyBzZWxlY3RlZC5cbiAgICBwcml2YXRlIGV4cGFuZFRyZWUobGV2ZWwsIG5vZGUsIGNoaWxkTGV2ZWwpIHtcbiAgICAgICAgbm9kZS5tYXAoY2hpbGROb2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihjaGlsZE5vZGUpO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuICYmICEoXCJvcGVuXCIgaW4gY2hpbGROb2RlKSAmJiBjaGlsZExldmVsIDwgbGV2ZWwpIHtcbiAgICAgICAgICAgICAgICBjaGlsZE5vZGVbXCJvcGVuXCJdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZFRyZWUobGV2ZWwsIGNoaWxkcmVuLCBjaGlsZExldmVsKzEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGlsZExldmVsID0gMDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNldHMgdGhlIHRlbXBsYXRlIGZvciB0aGUgdHJlZSBiYXNlZCBvbiB0aGUgcHJvcGVydHkgc2VsZWN0ZWQuXG4gICAgcHJpdmF0ZSBzZXRUcmVlVGVtcGxhdGUodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnQ2xhc3NpYycpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5jaGVja1tcImVuYWJsZVwiXSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYodmFsdWUgPT09ICdDaGVja2JveCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5jaGVja1tcImVuYWJsZVwiXSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuY2hlY2tbXCJjaGtTdHlsZVwiXSA9ICdjaGVja2JveCc7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09ICdSYWRpbycpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5jaGVja1tcImVuYWJsZVwiXSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuY2hlY2tbXCJjaGtTdHlsZVwiXSA9ICdyYWRpbyc7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuY2hlY2tbXCJyYWRpb1R5cGVcIl0gPSBcImFsbFwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXh0cmFjdHMgbm9kZXMgZnJvbSBzdHJpbmcgZm9ybWF0XG4gICAgcHJpdmF0ZSBnZXROb2Rlc0Zyb21TdHJpbmcodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnNwbGl0KCcsJykubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICduYW1lJzogaXRlbSAmJiBpdGVtLnRyaW0oKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gZ2V0cyB0aGUgbm9kZXMgYW5kIG9yZGVycyB0aGUgbm9kZXMgaWYgcmVxdWlyZWRcbiAgICBwcml2YXRlIGdldE5vZGVzKG5ld1ZhbCkge1xuICAgICAgICBsZXQgbm9kZXM7XG4gICAgICAgIGlmIChfLmlzQXJyYXkobmV3VmFsKSkge1xuICAgICAgICAgICAgbm9kZXMgPSBnZXRPcmRlcmVkRGF0YXNldChuZXdWYWwsIHRoaXMub3JkZXJieSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5pc09iamVjdChuZXdWYWwpKSB7XG4gICAgICAgICAgICBub2RlcyA9IFtuZXdWYWxdO1xuICAgICAgICB9IGVsc2UgaWYgKF8uaXNTdHJpbmcobmV3VmFsKSAmJiAhXy5pc0VtcHR5KG5ld1ZhbCkpIHtcbiAgICAgICAgICAgIG5ld1ZhbCA9IG5ld1ZhbC50cmltKCk7XG4gICAgICAgICAgICBpZiAobmV3VmFsKSB7XG4gICAgICAgICAgICAgICAgbm9kZXMgPSB0aGlzLmdldE5vZGVzRnJvbVN0cmluZyhuZXdWYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlcztcbiAgICB9XG5cblxuICAgIC8vIGFkZHMgY2xhc3MgdG8gdGhlIG5vZGVzIGlub3JkZXIgdG8gYWRkIGljb25zIHRvIHJlc3BlY3RpdmUgbm9kZS5cbiAgICBwcml2YXRlIHNldE5vZGVjbGFzc2VzKHRyZWVJZCwgdHJlZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRyZWVOb2RlLmljb24gPyB7YWRkOiBbYCR7dHJlZU5vZGUuaWNvbn1gXX0gOiAnJztcbiAgICB9O1xuXG4gICAgLy8gU2V0cyB0aGUgbm9kZSBsYWJlbCB3aXRoIGFueSBpY29uIGlmIGJvdW5kIHRvXG4gICAgcHJpdmF0ZSBzZXROb2RlRGF0YShub2RlcywgZGVwdGgsIGxldmVsLCBwYXJlbnROb2RlLCB0eXBlKSB7XG4gICAgICAgIGlmKGRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICBub2Rlcy5tYXAobm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKG5vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5vZGVEYXRhKGNoaWxkcmVuLCBkZXB0aCwgbGV2ZWwgLCBwYXJlbnROb2RlLCB0eXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuaWNvbiAmJiB0aGlzLm5vZGVsYWJlbCA9PSAnaWNvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZVt0eXBlXSA9IG5vZGUuaWNvbjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYobm9kZS5uYW1lICYmIHRoaXMubm9kZWxhYmVsID09ICduYW1lJykge1xuICAgICAgICAgICAgICAgICAgICBub2RlW3R5cGVdID0gbm9kZS5uYW1lO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZXMubWFwKG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4gJiYgbGV2ZWwgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGRlcHRoID09PSBsZXZlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXROb2RlRGF0YShjaGlsZHJlbiwgZGVwdGgsIGxldmVsIC0gMSwgcGFyZW50Tm9kZSwgdHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChsZXZlbCA9PT0gMSAmJiAodHlwZSA9PT0gXCJuYW1lXCIgPyB0aGlzLm5vZGVsYWJlbC5pbmNsdWRlcyhcImxhYmVsXCIpIHx8IHRoaXMubm9kZWxhYmVsLmluY2x1ZGVzKFwibmFtZVwiKTogdGhpcy5ub2RlaWNvbi5pbmNsdWRlcyhcImxhYmVsXCIpIHx8IHRoaXMubm9kZWljb24uaW5jbHVkZXMoXCJuYW1lXCIpICkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZVt0eXBlXSA9IG5vZGUubmFtZSB8fCBub2RlLmxhYmVsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYobGV2ZWwgPT09IDEgJiYgKG5vZGUuaWNvbiAhPT0gdW5kZWZpbmVkKSAmJiAodHlwZSA9PT0gXCJuYW1lXCIgPyB0aGlzLm5vZGVsYWJlbC5pbmNsdWRlcyhcImljb25cIikgOiB0aGlzLm5vZGVpY29uLmluY2x1ZGVzKFwiaWNvblwiKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZVt0eXBlXSA9IG5vZGUuaWNvbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWRkcyB0cmVlIGljb25zIHRvIHRoZSBub2RlcyBvbiBsb2FkIG9mIHRoZSB0cmVlXG4gICAgcHJpdmF0ZSBjaGFuZ2VUcmVlSWNvbnMobnYpIHtcbiAgICAgICAgbGV0IGVsZUNsb3NlID0gJCgndWxbbmFtZT1cIicgKyB0aGlzLm5hbWUgKyAnXCJdIGxpIHNwYW4uYnV0dG9uLnN3aXRjaCcpO1xuXG4gICAgICAgICQoZWxlQ2xvc2UpLm1hcCgoaWR4LCBlbGUpID0+IHtcbiAgICAgICAgICAgICQoZWxlKS5hZGRDbGFzcyhudik7XG4gICAgICAgICAgICAkKGVsZSkub24oXCJjbGlja1wiLGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgJChlbGUpLmFkZENsYXNzKG52KTtcbiAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGF0aCh0cmVlTm9kZSwgcGF0aCkge1xuICAgICAgICBpZih0cmVlTm9kZS5nZXRQYXJlbnROb2RlKCkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHBhdGggPSBcIi9cIiArIHRyZWVOb2RlW3RoaXMubGFiZWxLZXldICsgcGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhdGggPSB0aGlzLmdldFBhdGgodHJlZU5vZGUuZ2V0UGFyZW50Tm9kZSgpLCBwYXRoKSArIFwiL1wiICsgdHJlZU5vZGVbdGhpcy5sYWJlbEtleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuXG4gICAgLy8gYmluZHMgdGhlIGNsaWNrIGV2ZW50IHRvIGFsbCBub2RlcyB0byBvcGVuIHRoZSBjaGlsZCBub2Rlc1xuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50LCB0cmVlSWQsIHRyZWVOb2RlLCBjbGlja0ZsYWcpIHtcbiAgICAgICAgaWYodGhpcy5ub2RlY2xpY2sgPT09IFwiZXhwYW5kXCIpIHtcbiAgICAgICAgICAgIHZhciBub2RlcyA9IHRoaXMudHJlZU9iai5nZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgICAgICAgICBpZiAobm9kZXMubGVuZ3RoPjApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZE5vZGUobm9kZXNbMF0sICFub2Rlc1swXS5vcGVuLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcGF0aCA9IHRoaXMuZ2V0UGF0aCh0cmVlTm9kZSwgXCJcIik7XG5cbiAgICAgICAgY29uc3QgZXZlbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICAnJGV2ZW50JyAgOiBldmVudCxcbiAgICAgICAgICAgIFwiJGl0ZW1cIiAgIDogdHJlZU5vZGUsXG4gICAgICAgICAgICBcIiRwYXRoXCIgOiBwYXRoXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW0odHJlZU5vZGUpO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdCcsIGV2ZW50UGFyYW1zKTtcbiAgICB9XG5cbiAgICAvLyBBZGRzIHRyZWUgaWNvbiBjbGFzc2VzIHRvIGNoaWxkIG5vZGVzIHdoZW4gZXhwYW5kZWRcbiAgICBwdWJsaWMgb25FeHBhbmQoZXZlbnQsIHRyZWVJZCwgdHJlZU5vZGUpIHtcbiAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgICBsZXQgcGF0aCA9IHRoaXMuZ2V0UGF0aCh0cmVlTm9kZSwgXCJcIik7XG5cbiAgICAgICAgY29uc3QgZXZlbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICAnJGV2ZW50JyAgOiBldmVudCxcbiAgICAgICAgICAgIFwiJGl0ZW1cIiAgIDogdHJlZU5vZGUsXG4gICAgICAgICAgICBcIiRwYXRoXCIgOiBwYXRoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZXhwYW5kJywgZXZlbnRQYXJhbXMpO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbih0cmVlTm9kZSk7XG4gICAgICAgIGNoaWxkcmVuPy5tYXAoKGVsKSA9PiB7XG4gICAgICAgICAgICBpZiAoZWwuaXNQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZWxlID0gJChgIyR7ZWwudElkfV9zd2l0Y2hgKTtcbiAgICAgICAgICAgICAgICAkKGVsZSkuYWRkQ2xhc3Moc2VsZi50cmVlaWNvbiB8fCBkZWZhdWx0VHJlZUljb25DbGFzcyk7XG4gICAgICAgICAgICAgICAgJChlbGUpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoZWxlKS5hZGRDbGFzcyhzZWxmLnRyZWVpY29uIHx8IGRlZmF1bHRUcmVlSWNvbkNsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbGxhcHNlKGV2ZW50LCB0cmVlSWQsIHRyZWVOb2RlKSB7XG4gICAgICAgIC8vIGNvbnN0IGVsID0gJChgIyR7dHJlZU5vZGUudElkfV9zd2l0Y2hgKTtcbiAgICAgICAgLy8gJChlbCkuYWRkQ2xhc3ModGhpcy50cmVlaWNvbiB8fCBkZWZhdWx0VHJlZUljb25DbGFzcyk7XG5cbiAgICAgICAgbGV0IHBhdGggPSB0aGlzLmdldFBhdGgodHJlZU5vZGUsIFwiXCIpO1xuICAgICAgICBjb25zdCBldmVudFBhcmFtcyA9IHtcbiAgICAgICAgICAgICckZXZlbnQnICA6IGV2ZW50LFxuICAgICAgICAgICAgXCIkaXRlbVwiICAgOiB0cmVlTm9kZSxcbiAgICAgICAgICAgIFwiJHBhdGhcIiA6IHBhdGhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjb2xsYXBzZScsIGV2ZW50UGFyYW1zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENoaWxkcmVuKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGVbdGhpcy5jaGlsZHJlbktleV07XG4gICAgfVxuICAgIGdldCBjaGlsZHJlbktleSgpIHtcbiAgICAgICAgY29uc3QgZGVwdGggPSB0aGlzLmNvdW50RGVwdGgodGhpcy5ub2RlY2hpbGRyZW4pO1xuICAgICAgICByZXR1cm4gZGVwdGggPyB0aGlzLm5vZGVjaGlsZHJlbi5zcGxpdCgnLicpLnBvcCgpIDogKHRoaXMubm9kZWNoaWxkcmVuIHx8ICdjaGlsZHJlbicpO1xuICAgIH1cbiAgICBnZXQgbGFiZWxLZXkoKSB7XG4gICAgICAgIGNvbnN0IGRlcHRoID0gdGhpcy5jb3VudERlcHRoKHRoaXMubm9kZWxhYmVsKTtcbiAgICAgICAgcmV0dXJuIGRlcHRoID8gdGhpcy5ub2RlbGFiZWwuc3BsaXQoJy4nKS5wb3AoKSA6ICh0aGlzLm5vZGVsYWJlbCB8fCAnbGFiZWwnKTtcbiAgICB9XG4gICAgZ2V0IGljb25LZXkoKSB7XG4gICAgICAgIGNvbnN0IGRlcHRoID0gdGhpcy5jb3VudERlcHRoKHRoaXMubm9kZWljb24pO1xuICAgICAgICByZXR1cm4gZGVwdGggPyB0aGlzLm5vZGVpY29uLnNwbGl0KCcuJykucG9wKCkgOiAodGhpcy5ub2RlaWNvbiB8fCAnaWNvbicpO1xuICAgIH1cblxuICAgIGdldCB0cmVlT2JqKCl7XG4gICAgICAgIHJldHVybiAkLmZuLnpUcmVlLmdldFpUcmVlT2JqKGAke3RoaXMubmFtZX1gKVxuICAgIH1cblxuICAgIC8vIGZ1bmN0aW9uIHRvIHN1cHBvcnQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBvYmplY3RzXG4gICAgcHJpdmF0ZSBtb2RpZnlPYmplY3RzKGFycmF5KSB7XG4gICAgICAgIGFycmF5LmZvckVhY2gob2JqID0+IHtcbiAgICAgICAgICBvYmouaWNvbiA9IG9ialt0aGlzLm5vZGVpY29uXTtcbiAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4ob2JqKTtcbiAgICAgICAgICBpZiAoY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5tb2RpZnlPYmplY3RzKGNoaWxkcmVuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgLy8gc2V0cyB0aGUgbm9kZSBjaGlsZHJlbiBwcm9wZXJ0eSB0byBwYXJlbnQgbm9kZXNcbiAgICBwcml2YXRlIHNldE5vZGVDaGlsZHJlbihub2RlcywgZGVwdGgsIGxldmVsLCBwYXJlbnROb2RlKSB7XG4gICAgICAgIGlmIChkZXB0aCA8PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XG5cbiAgICAgICAgICBpZihkZXB0aCA9PT0gbGV2ZWwpIHtcbiAgICAgICAgICAgIHBhcmVudE5vZGUgID0gbm9kZXNbaV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihub2RlKTtcbiAgICAgICAgICBpZiAoY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGxldmVsID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZVt0aGlzLmNoaWxkcmVuS2V5XSA9IGNoaWxkcmVuLm1hcChjaGlsZCA9PiAoeyBbdGhpcy5sYWJlbEtleV06IGNoaWxkW3RoaXMubGFiZWxLZXldLCBbdGhpcy5jaGlsZHJlbktleV06IHRoaXMuZ2V0Q2hpbGRyZW4oY2hpbGQpLCBpY29uOiBjaGlsZFt0aGlzLmljb25LZXldIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNldE5vZGVDaGlsZHJlbihjaGlsZHJlbiwgZGVwdGggLGxldmVsIC0gMSwgcGFyZW50Tm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgfVxuXG4gICAgcHJpdmF0ZSBjb3VudERlcHRoKHN0cikge1xuICAgICAgICBjb25zdCByZWdleCA9IC9cXFsuKj9cXF0vZztcbiAgICAgICAgbGV0IG1hdGNoZXMgPSBzdHIubWF0Y2gocmVnZXgpO1xuICAgICAgICBsZXQgY291bnQgPSAxO1xuXG4gICAgICAgIGlmKG1hdGNoZXMgPT09IG51bGwpIHJldHVybiBjb3VudDtcblxuICAgICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgIH1cblxuXG4gICAgLy8gUmVuZGVycyB0aGUgdHJlZSBvbiB0byB0aGUgZG9tXG4gICAgcHVibGljIHJlbmRlclRyZWUoKSB7XG4gICAgICAgIGlmKHRoaXMubm9kZXMpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgdGhpcy5uYW1lKTtcbiAgICAgICAgICAgICBpZih0aGlzLm5vZGVpY29uICYmIHRoaXMubm9kZWljb24gIT09ICdpY29uJykge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kaWZ5T2JqZWN0cyh0aGlzLm5vZGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0VHJlZVRlbXBsYXRlKHRoaXMudHJlZUNsYXNzKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubm9kZWxhYmVsKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRlcHRoID0wO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZWxhYmVsLmluY2x1ZGVzKFwiY2hpbGRyZW5cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVwdGggPSB0aGlzLmNvdW50RGVwdGgodGhpcy5ub2RlbGFiZWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNldE5vZGVEYXRhKHRoaXMubm9kZXMsIGRlcHRoLCBkZXB0aCwgbnVsbCwgXCJuYW1lXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodGhpcy5ub2RlaWNvbikgIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVwdGggPTA7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlaWNvbi5pbmNsdWRlcyhcImNoaWxkcmVuXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlcHRoID0gdGhpcy5jb3VudERlcHRoKHRoaXMubm9kZWljb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNldE5vZGVEYXRhKHRoaXMubm9kZXMsIGRlcHRoLCBkZXB0aCwgbnVsbCwgXCJpY29uXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5ub2RlY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVwdGggPSB0aGlzLmNvdW50RGVwdGgodGhpcy5ub2RlY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgIGlmKGRlcHRoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGVzID0gdGhpcy5zZXROb2RlQ2hpbGRyZW4odGhpcy5ub2RlcywgZGVwdGgsIGRlcHRoLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMuc2V0dGluZy52aWV3Wydub2RlQ2xhc3NlcyddID0gdGhpcy5zZXROb2RlY2xhc3NlcztcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNhbGxiYWNrW1wib25DbGlja1wiXSA9IHRoaXMub25DbGljay5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnNldHRpbmcuY2FsbGJhY2tbXCJvbkV4cGFuZFwiXSA9IHRoaXMub25FeHBhbmQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNhbGxiYWNrW1wib25Db2xsYXBzZVwiXSA9IHRoaXMub25Db2xsYXBzZS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIGxldCB6VHJlZSA9ICQuZm4uelRyZWUuaW5pdCgkKCd1bFtuYW1lPVwiJyArIHRoaXMubmFtZSArICdcIl0nKSwgdGhpcy5zZXR0aW5nLCB0aGlzLm5vZGVzKTtcblxuICAgICAgICAkLmZuLnpUcmVlS2V5Ym9hcmROYXZpZ2F0aW9uKHpUcmVlLCAkKCd1bFtuYW1lPVwiJyArIHRoaXMubmFtZSArICdcIl0nKSwgbnVsbCwgdGhpcy50cmVlaWNvbiB8fCBkZWZhdWx0VHJlZUljb25DbGFzcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZWxlY3RlZEl0ZW0odHJlZU5vZGUpIHtcbiAgICAgICAgZGVidWdnZXI7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRpdGVtID0gZ2V0Q2xvbmVkT2JqZWN0KHRyZWVOb2RlKSB8fCB7fTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGl0ZW0ucGF0aCA9IHRoaXMuZ2V0UGF0aCh0cmVlTm9kZSwgXCJcIik7XG4gICAgICAgIGNvbnN0IGRlU2VsZWN0RWxtID0gJChgbGlbdHJlZW5vZGVdLnNlbGVjdGVkYCk7XG4gICAgICAgIGRlU2VsZWN0RWxtLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpO1xuICAgICAgICBjb25zdCBzZWxlY3RFbG0gPSAkKGAjJHt0cmVlTm9kZS50SWR9OmhhcyguY3VyU2VsZWN0ZWROb2RlKWApO1xuLy8gICAgICAgIGNvbnN0IHNlbGVjdEVsbSA9ICQoYGxpW3RyZWVub2RlXTpoYXMoLmN1clNlbGVjdGVkTm9kZSlgKTtcbiAgICAgICAgc2VsZWN0RWxtLmFkZENsYXNzKCdzZWxlY3RlZCcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXhwYW5kTm9kZShub2RlLCBleHBhbmQsIGV2ZW50RmxhZykge1xuICAgICAgICB0aGlzLnRyZWVPYmouZXhwYW5kTm9kZShub2RlLCBleHBhbmQsIGZhbHNlLCBmYWxzZSwgZXZlbnRGbGFnKTtcbiAgICAgICAgY29uc3QgZWwgPSAkKGAjJHtub2RlLnRJZH1fc3dpdGNoYCk7XG4gICAgICAgICQoZWwpLmFkZENsYXNzKHRoaXMudHJlZWljb24gfHwgZGVmYXVsdFRyZWVJY29uQ2xhc3MpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVRyZWVJY29ucyh0aGlzLnRyZWVpY29uIHx8IGRlZmF1bHRUcmVlSWNvbkNsYXNzKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLnRyZWVPYmouZ2V0Tm9kZXMoKTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0Tm9kZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGF2YWx1ZSA9PT0gJ0ZpcnN0Tm9kZScpe1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3ROb2RlID0gbm9kZXNbMF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYodGhpcy5kYXRhdmFsdWUgPT09ICdMYXN0Tm9kZScpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0Tm9kZSA9IG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlT2JqLnNlbGVjdE5vZGUoc2VsZWN0Tm9kZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRJdGVtKHNlbGVjdE5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kTm9kZShzZWxlY3ROb2RlLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSwgMjAwKTtcbiAgICB9XG59XG4iXX0=
|
|
403
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvYmFzaWMvdHJlZS9zcmMvdHJlZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUl6QyxNQUFNLFdBQVcsR0FBRyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxDQUFDO0FBQ25FLE1BQU0sb0JBQW9CLEdBQUcsWUFBWSxDQUFDO0FBVTFDLE1BQU0sT0FBTyxhQUFjLFNBQVEsaUJBQWlCO0lBeUNoRCxZQUNJLEdBQWE7UUFFYixLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBNUJwQixZQUFPLEdBQUc7WUFDZCxJQUFJLEVBQUU7Z0JBQ0YsVUFBVSxFQUFFO29CQUNSLE1BQU0sRUFBRSxLQUFLO2lCQUNoQjtnQkFDRCxHQUFHLEVBQUU7b0JBQ0QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLElBQUksRUFBRSxPQUFPO2lCQUNoQjthQUNKO1lBQ0QsSUFBSSxFQUFFO2dCQUNGLGNBQWMsRUFBRSxLQUFLO2dCQUNyQixPQUFPLEVBQUU7b0JBQ0wsY0FBYyxFQUFFLElBQUk7aUJBQ3JCO2dCQUNILFVBQVUsRUFBRSxFQUVYO2FBQ0o7WUFDRCxLQUFLLEVBQUUsRUFDTjtZQUNELFFBQVEsRUFBRSxFQUNUO1NBQ0osQ0FB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LENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzVDO1FBRUwsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQzs7QUE3YU0sNkJBQWUsR0FBRyxhQUFhLEVBQUUsQ0FBQzs7WUFUNUMsU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxZQUFZO2dCQUN0Qiw0REFBb0M7Z0JBQ3BDLFNBQVMsRUFBRTtvQkFDUCxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7aUJBQ3BDO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3hDOzs7WUFuQmtCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5pbXBvcnQgeyBBUFBMWV9TVFlMRVNfVFlQRSwgZ2V0T3JkZXJlZERhdGFzZXQsIHByb3ZpZGVBc1dpZGdldFJlZiwgU3R5bGFibGVDb21wb25lbnQsIHN0eWxlciB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vdHJlZS5wcm9wcyc7XG5pbXBvcnQge2dldENsb25lZE9iamVjdH0gZnJvbSBcIkB3bS9jb3JlXCI7XG5cbmRlY2xhcmUgY29uc3QgXywgJDtcblxuY29uc3QgV0lER0VUX0lORk8gPSB7d2lkZ2V0VHlwZTogJ3dtLXRyZWUnLCBob3N0Q2xhc3M6ICdhcHAtdHJlZSd9O1xuY29uc3QgZGVmYXVsdFRyZWVJY29uQ2xhc3MgPSAncGx1cy1taW51cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndWxbd21UcmVlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoVHJlZUNvbXBvbmVudClcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIHNlbGVjdGVkaXRlbTtcbiAgICBwcml2YXRlIG5vZGVzO1xuICAgIHByaXZhdGUgbGV2ZWw7XG4gICAgcHJpdmF0ZSBvcmRlcmJ5O1xuICAgIHByaXZhdGUgbm9kZWxhYmVsO1xuICAgIHByaXZhdGUgdHJlZWljb247XG4gICAgcHJpdmF0ZSBub2RlY2hpbGRyZW47XG4gICAgcHJpdmF0ZSBub2RlY2xpY2s7XG4gICAgcHJpdmF0ZSB0cmVlQ2xhc3M7XG4gICAgcHJpdmF0ZSBub2RlaWNvbjtcbiAgICBwcml2YXRlIG5hbWU7XG4gICAgcHJpdmF0ZSBkYXRhdmFsdWU7XG5cbiAgICBwcml2YXRlIHNldHRpbmcgPSB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHNpbXBsZURhdGE6IHtcbiAgICAgICAgICAgICAgICBlbmFibGU6IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2V5OiB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW46ICdjaGlsZHJlbicsXG4gICAgICAgICAgICAgICAgbmFtZTogJ2xhYmVsJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB2aWV3OiB7XG4gICAgICAgICAgICBkYmxDbGlja0V4cGFuZDogZmFsc2UsXG4gICAgICAgICAgICBmb250Q3NzOiB7XG4gICAgICAgICAgICAgICAgJ2ZvbnQtYXdlc29tZSc6IHRydWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN3aXRjaEljb246IHtcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgY2hlY2s6IHtcbiAgICAgICAgfSxcbiAgICAgICAgY2FsbGJhY2s6IHtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9JTkZPKTtcbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuQ09OVEFJTkVSKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RhdGFzZXQnOlxuICAgICAgICAgICAgICAgIHRoaXMubm9kZXMgPSB0aGlzLmdldE5vZGVzKG52KTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmxldmVsID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZFRyZWUodGhpcy5sZXZlbCwgdGhpcy5ub2RlcywgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVHJlZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGV2ZWxzJzpcbiAgICAgICAgICAgICAgICBpZiAobnYgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGV2ZWwgPSBudjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUcmVlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0cmVlaWNvbnMnOlxuICAgICAgICAgICAgICAgIHRoaXMudHJlZWljb24gPSBudjtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRyZWUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ25vZGVsYWJlbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmRhdGEua2V5Lm5hbWUgPSB0aGlzLmxhYmVsS2V5O1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVHJlZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbm9kZWNoaWxkcmVuJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmcuZGF0YS5rZXkuY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuS2V5O1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVHJlZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbm9kZWljb24nOlxuICAgICAgICAgICAgICAgIHRoaXMubm9kZWljb24gPSB0aGlzLmljb25LZXk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUcmVlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvcmRlcmJ5JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRyZWUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NsYXNzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnRyZWVDbGFzcyA9IG52O1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVHJlZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGV4cGFuZHMgdGhlIHRyZWUgbm9kZXMgaWYgdGhlIHByb3BlcnR5IGlzIHNlbGVjdGVkLlxuICAgIHByaXZhdGUgZXhwYW5kVHJlZShsZXZlbCwgbm9kZSwgY2hpbGRMZXZlbCkge1xuICAgICAgICBub2RlLm1hcChjaGlsZE5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGNoaWxkTm9kZSk7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW4gJiYgIShcIm9wZW5cIiBpbiBjaGlsZE5vZGUpICYmIGNoaWxkTGV2ZWwgPCBsZXZlbCkge1xuICAgICAgICAgICAgICAgIGNoaWxkTm9kZVtcIm9wZW5cIl0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZShsZXZlbCwgY2hpbGRyZW4sIGNoaWxkTGV2ZWwrMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNoaWxkTGV2ZWwgPSAwO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc2V0cyB0aGUgdGVtcGxhdGUgZm9yIHRoZSB0cmVlIGJhc2VkIG9uIHRoZSBwcm9wZXJ0eSBzZWxlY3RlZC5cbiAgICBwcml2YXRlIHNldFRyZWVUZW1wbGF0ZSh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT09ICdDbGFzc2ljJykge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmNoZWNrW1wiZW5hYmxlXCJdID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZih2YWx1ZSA9PT0gJ0NoZWNrYm94Jykge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmNoZWNrW1wiZW5hYmxlXCJdID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5jaGVja1tcImNoa1N0eWxlXCJdID0gJ2NoZWNrYm94JztcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJ1JhZGlvJykge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmNoZWNrW1wiZW5hYmxlXCJdID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5jaGVja1tcImNoa1N0eWxlXCJdID0gJ3JhZGlvJztcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5jaGVja1tcInJhZGlvVHlwZVwiXSA9IFwiYWxsXCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBleHRyYWN0cyBub2RlcyBmcm9tIHN0cmluZyBmb3JtYXRcbiAgICBwcml2YXRlIGdldE5vZGVzRnJvbVN0cmluZyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUuc3BsaXQoJywnKS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ2xhYmVsJzogaXRlbSAmJiBpdGVtLnRyaW0oKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gZ2V0cyB0aGUgbm9kZXMgYW5kIG9yZGVycyB0aGUgbm9kZXMgaWYgcmVxdWlyZWRcbiAgICBwcml2YXRlIGdldE5vZGVzKG5ld1ZhbCkge1xuICAgICAgICBsZXQgbm9kZXM7XG4gICAgICAgIGlmIChfLmlzQXJyYXkobmV3VmFsKSkge1xuICAgICAgICAgICAgbm9kZXMgPSBnZXRPcmRlcmVkRGF0YXNldChuZXdWYWwsIHRoaXMub3JkZXJieSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5pc09iamVjdChuZXdWYWwpKSB7XG4gICAgICAgICAgICBub2RlcyA9IFtuZXdWYWxdO1xuICAgICAgICB9IGVsc2UgaWYgKF8uaXNTdHJpbmcobmV3VmFsKSAmJiAhXy5pc0VtcHR5KG5ld1ZhbCkpIHtcbiAgICAgICAgICAgIG5ld1ZhbCA9IG5ld1ZhbC50cmltKCk7XG4gICAgICAgICAgICBpZiAobmV3VmFsKSB7XG4gICAgICAgICAgICAgICAgbm9kZXMgPSB0aGlzLmdldE5vZGVzRnJvbVN0cmluZyhuZXdWYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlcztcbiAgICB9XG5cblxuICAgIC8vIGFkZHMgY2xhc3MgdG8gdGhlIG5vZGVzIGlub3JkZXIgdG8gYWRkIGljb25zIHRvIHJlc3BlY3RpdmUgbm9kZS5cbiAgICBwcml2YXRlIHNldE5vZGVjbGFzc2VzKHRyZWVJZCwgdHJlZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRyZWVOb2RlLmljb24gPyB7YWRkOiBbYCR7dHJlZU5vZGUuaWNvbn1gXX0gOiAnJztcbiAgICB9O1xuXG4gICAgLy8gU2V0cyB0aGUgbm9kZSBsYWJlbCB3aXRoIGFueSBpY29uIGlmIGJvdW5kIHRvXG4gICAgcHJpdmF0ZSBzZXROb2RlRGF0YShub2RlcywgZGVwdGgsIGxldmVsLCBwYXJlbnROb2RlLCB0eXBlKSB7XG4gICAgICAgIGlmKGRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICBub2Rlcy5tYXAobm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKG5vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5vZGVEYXRhKGNoaWxkcmVuLCBkZXB0aCwgbGV2ZWwgLCBwYXJlbnROb2RlLCB0eXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuaWNvbiAmJiB0aGlzLm5vZGVsYWJlbCA9PSAnaWNvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZVt0eXBlXSA9IG5vZGUuaWNvbjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYobm9kZS5uYW1lICYmIHRoaXMubm9kZWxhYmVsID09ICduYW1lJykge1xuICAgICAgICAgICAgICAgICAgICBub2RlW3R5cGVdID0gbm9kZS5uYW1lO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZXMubWFwKG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4gJiYgbGV2ZWwgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGRlcHRoID09PSBsZXZlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXROb2RlRGF0YShjaGlsZHJlbiwgZGVwdGgsIGxldmVsIC0gMSwgcGFyZW50Tm9kZSwgdHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChsZXZlbCA9PT0gMSAmJiAodHlwZSA9PT0gXCJuYW1lXCIgPyB0aGlzLm5vZGVsYWJlbC5pbmNsdWRlcyhcImxhYmVsXCIpIHx8IHRoaXMubm9kZWxhYmVsLmluY2x1ZGVzKFwibmFtZVwiKTogdGhpcy5ub2RlaWNvbi5pbmNsdWRlcyhcImxhYmVsXCIpIHx8IHRoaXMubm9kZWljb24uaW5jbHVkZXMoXCJuYW1lXCIpICkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZVt0eXBlXSA9IG5vZGUubmFtZSB8fCBub2RlLmxhYmVsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYobGV2ZWwgPT09IDEgJiYgKG5vZGUuaWNvbiAhPT0gdW5kZWZpbmVkKSAmJiAodHlwZSA9PT0gXCJuYW1lXCIgPyB0aGlzLm5vZGVsYWJlbC5pbmNsdWRlcyhcImljb25cIikgOiB0aGlzLm5vZGVpY29uLmluY2x1ZGVzKFwiaWNvblwiKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZVt0eXBlXSA9IG5vZGUuaWNvbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWRkcyB0cmVlIGljb25zIHRvIHRoZSBub2RlcyBvbiBsb2FkIG9mIHRoZSB0cmVlXG4gICAgcHJpdmF0ZSBjaGFuZ2VUcmVlSWNvbnMobnYpIHtcbiAgICAgICAgbGV0IGVsZUNsb3NlID0gJCgndWxbbmFtZT1cIicgKyB0aGlzLm5hbWUgKyAnXCJdIGxpIHNwYW4uYnV0dG9uLnN3aXRjaCcpO1xuXG4gICAgICAgICQoZWxlQ2xvc2UpLm1hcCgoaWR4LCBlbGUpID0+IHtcbiAgICAgICAgICAgICQoZWxlKS5hZGRDbGFzcyhudik7XG4gICAgICAgICAgICAkKGVsZSkub24oXCJjbGlja1wiLGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgJChlbGUpLmFkZENsYXNzKG52KTtcbiAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGF0aCh0cmVlTm9kZSwgcGF0aCkge1xuICAgICAgICBpZih0cmVlTm9kZS5nZXRQYXJlbnROb2RlKCkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHBhdGggPSBcIi9cIiArIHRyZWVOb2RlW3RoaXMubGFiZWxLZXldICsgcGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhdGggPSB0aGlzLmdldFBhdGgodHJlZU5vZGUuZ2V0UGFyZW50Tm9kZSgpLCBwYXRoKSArIFwiL1wiICsgdHJlZU5vZGVbdGhpcy5sYWJlbEtleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuXG4gICAgLy8gYmluZHMgdGhlIGNsaWNrIGV2ZW50IHRvIGFsbCBub2RlcyB0byBvcGVuIHRoZSBjaGlsZCBub2Rlc1xuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50LCB0cmVlSWQsIHRyZWVOb2RlLCBjbGlja0ZsYWcpIHtcbiAgICAgICAgaWYodGhpcy5ub2RlY2xpY2sgPT09IFwiZXhwYW5kXCIpIHtcbiAgICAgICAgICAgIHZhciBub2RlcyA9IHRoaXMudHJlZU9iai5nZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgICAgICAgICBpZiAobm9kZXMubGVuZ3RoPjApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZE5vZGUobm9kZXNbMF0sICFub2Rlc1swXS5vcGVuLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcGF0aCA9IHRoaXMuZ2V0UGF0aCh0cmVlTm9kZSwgXCJcIik7XG5cbiAgICAgICAgY29uc3QgZXZlbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICAnJGV2ZW50JyAgOiBldmVudCxcbiAgICAgICAgICAgIFwiJGl0ZW1cIiAgIDogdHJlZU5vZGUsXG4gICAgICAgICAgICBcIiRwYXRoXCIgOiBwYXRoXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW0odHJlZU5vZGUpO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdCcsIGV2ZW50UGFyYW1zKTtcbiAgICB9XG5cbiAgICAvLyBBZGRzIHRyZWUgaWNvbiBjbGFzc2VzIHRvIGNoaWxkIG5vZGVzIHdoZW4gZXhwYW5kZWRcbiAgICBwdWJsaWMgb25FeHBhbmQoZXZlbnQsIHRyZWVJZCwgdHJlZU5vZGUpIHtcbiAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgICBsZXQgcGF0aCA9IHRoaXMuZ2V0UGF0aCh0cmVlTm9kZSwgXCJcIik7XG5cbiAgICAgICAgY29uc3QgZXZlbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICAnJGV2ZW50JyAgOiBldmVudCxcbiAgICAgICAgICAgIFwiJGl0ZW1cIiAgIDogdHJlZU5vZGUsXG4gICAgICAgICAgICBcIiRwYXRoXCIgOiBwYXRoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZXhwYW5kJywgZXZlbnRQYXJhbXMpO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbih0cmVlTm9kZSk7XG4gICAgICAgIGNoaWxkcmVuPy5tYXAoKGVsKSA9PiB7XG4gICAgICAgICAgICBpZiAoZWwuaXNQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZWxlID0gJChgIyR7ZWwudElkfV9zd2l0Y2hgKTtcbiAgICAgICAgICAgICAgICAkKGVsZSkuYWRkQ2xhc3Moc2VsZi50cmVlaWNvbiB8fCBkZWZhdWx0VHJlZUljb25DbGFzcyk7XG4gICAgICAgICAgICAgICAgJChlbGUpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoZWxlKS5hZGRDbGFzcyhzZWxmLnRyZWVpY29uIHx8IGRlZmF1bHRUcmVlSWNvbkNsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbGxhcHNlKGV2ZW50LCB0cmVlSWQsIHRyZWVOb2RlKSB7XG4gICAgICAgIGxldCBwYXRoID0gdGhpcy5nZXRQYXRoKHRyZWVOb2RlLCBcIlwiKTtcbiAgICAgICAgY29uc3QgZXZlbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICAnJGV2ZW50JyAgOiBldmVudCxcbiAgICAgICAgICAgIFwiJGl0ZW1cIiAgIDogdHJlZU5vZGUsXG4gICAgICAgICAgICBcIiRwYXRoXCIgOiBwYXRoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY29sbGFwc2UnLCBldmVudFBhcmFtcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDaGlsZHJlbihub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlW3RoaXMuY2hpbGRyZW5LZXldO1xuICAgIH1cbiAgICBnZXQgY2hpbGRyZW5LZXkoKSB7XG4gICAgICAgIGlmKCF0aGlzLm5vZGVjaGlsZHJlbikge1xuICAgICAgICAgICAgcmV0dXJuICdjaGlsZHJlbic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVwdGggPSB0aGlzLmNvdW50RGVwdGgodGhpcy5ub2RlY2hpbGRyZW4pO1xuICAgICAgICByZXR1cm4gZGVwdGggPyB0aGlzLm5vZGVjaGlsZHJlbi5zcGxpdCgnLicpLnBvcCgpIDogdGhpcy5ub2RlY2hpbGRyZW47XG4gICAgfVxuICAgIGdldCBsYWJlbEtleSgpIHtcbiAgICAgICAgaWYoIXRoaXMubm9kZWxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2xhYmVsJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZXB0aCA9IHRoaXMuY291bnREZXB0aCh0aGlzLm5vZGVsYWJlbCk7XG4gICAgICAgIHJldHVybiBkZXB0aCA/IHRoaXMubm9kZWxhYmVsLnNwbGl0KCcuJykucG9wKCkgOiB0aGlzLm5vZGVsYWJlbDtcbiAgICB9XG4gICAgZ2V0IGljb25LZXkoKSB7XG4gICAgICAgIGlmKCF0aGlzLm5vZGVpY29uKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2ljb24nO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlcHRoID0gdGhpcy5jb3VudERlcHRoKHRoaXMubm9kZWljb24pO1xuICAgICAgICByZXR1cm4gZGVwdGggPyB0aGlzLm5vZGVpY29uLnNwbGl0KCcuJykucG9wKCkgOiB0aGlzLm5vZGVpY29uO1xuICAgIH1cblxuICAgIGdldCB0cmVlT2JqKCl7XG4gICAgICAgIHJldHVybiAkLmZuLnpUcmVlLmdldFpUcmVlT2JqKGAke3RoaXMubmFtZX1gKVxuICAgIH1cblxuICAgIC8vIGZ1bmN0aW9uIHRvIHN1cHBvcnQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBvYmplY3RzXG4gICAgcHJpdmF0ZSBtb2RpZnlPYmplY3RzKGFycmF5KSB7XG4gICAgICAgIGFycmF5LmZvckVhY2gob2JqID0+IHtcbiAgICAgICAgICBvYmouaWNvbiA9IG9ialt0aGlzLm5vZGVpY29uXTtcbiAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4ob2JqKTtcbiAgICAgICAgICBpZiAoY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5tb2RpZnlPYmplY3RzKGNoaWxkcmVuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgLy8gc2V0cyB0aGUgbm9kZSBjaGlsZHJlbiBwcm9wZXJ0eSB0byBwYXJlbnQgbm9kZXNcbiAgICBwcml2YXRlIHNldE5vZGVDaGlsZHJlbihub2RlcywgZGVwdGgsIGxldmVsLCBwYXJlbnROb2RlKSB7XG4gICAgICAgIGlmIChkZXB0aCA8PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XG5cbiAgICAgICAgICBpZihkZXB0aCA9PT0gbGV2ZWwpIHtcbiAgICAgICAgICAgIHBhcmVudE5vZGUgID0gbm9kZXNbaV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihub2RlKTtcbiAgICAgICAgICBpZiAoY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGxldmVsID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZVt0aGlzLmNoaWxkcmVuS2V5XSA9IGNoaWxkcmVuLm1hcChjaGlsZCA9PiAoeyBbdGhpcy5sYWJlbEtleV06IGNoaWxkW3RoaXMubGFiZWxLZXldLCBbdGhpcy5jaGlsZHJlbktleV06IHRoaXMuZ2V0Q2hpbGRyZW4oY2hpbGQpLCBpY29uOiBjaGlsZFt0aGlzLmljb25LZXldIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNldE5vZGVDaGlsZHJlbihjaGlsZHJlbiwgZGVwdGggLGxldmVsIC0gMSwgcGFyZW50Tm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgfVxuXG4gICAgcHJpdmF0ZSBjb3VudERlcHRoKHN0cikge1xuICAgICAgICBjb25zdCByZWdleCA9IC9cXFsuKj9cXF0vZztcbiAgICAgICAgbGV0IG1hdGNoZXMgPSBzdHIubWF0Y2gocmVnZXgpO1xuICAgICAgICBsZXQgY291bnQgPSAxO1xuXG4gICAgICAgIGlmKG1hdGNoZXMgPT09IG51bGwpIHJldHVybiBjb3VudDtcblxuICAgICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgIH1cblxuXG4gICAgLy8gUmVuZGVycyB0aGUgdHJlZSBvbiB0byB0aGUgZG9tXG4gICAgcHVibGljIHJlbmRlclRyZWUoKSB7XG4gICAgICAgIGlmKHRoaXMubm9kZXMpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgdGhpcy5uYW1lKTtcbiAgICAgICAgICAgICBpZih0aGlzLm5vZGVpY29uICYmIHRoaXMubm9kZWljb24gIT09ICdpY29uJykge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kaWZ5T2JqZWN0cyh0aGlzLm5vZGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0VHJlZVRlbXBsYXRlKHRoaXMudHJlZUNsYXNzKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubm9kZWxhYmVsKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRlcHRoID0wO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZWxhYmVsLmluY2x1ZGVzKFwiY2hpbGRyZW5cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVwdGggPSB0aGlzLmNvdW50RGVwdGgodGhpcy5ub2RlbGFiZWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNldE5vZGVEYXRhKHRoaXMubm9kZXMsIGRlcHRoLCBkZXB0aCwgbnVsbCwgXCJuYW1lXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodGhpcy5ub2RlaWNvbikgIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVwdGggPTA7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlaWNvbi5pbmNsdWRlcyhcImNoaWxkcmVuXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlcHRoID0gdGhpcy5jb3VudERlcHRoKHRoaXMubm9kZWljb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNldE5vZGVEYXRhKHRoaXMubm9kZXMsIGRlcHRoLCBkZXB0aCwgbnVsbCwgXCJpY29uXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5ub2RlY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVwdGggPSB0aGlzLmNvdW50RGVwdGgodGhpcy5ub2RlY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgIGlmKGRlcHRoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGVzID0gdGhpcy5zZXROb2RlQ2hpbGRyZW4odGhpcy5ub2RlcywgZGVwdGgsIGRlcHRoLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMuc2V0dGluZy52aWV3Wydub2RlQ2xhc3NlcyddID0gdGhpcy5zZXROb2RlY2xhc3NlcztcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNhbGxiYWNrW1wib25DbGlja1wiXSA9IHRoaXMub25DbGljay5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnNldHRpbmcuY2FsbGJhY2tbXCJvbkV4cGFuZFwiXSA9IHRoaXMub25FeHBhbmQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNhbGxiYWNrW1wib25Db2xsYXBzZVwiXSA9IHRoaXMub25Db2xsYXBzZS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIGxldCB6VHJlZSA9ICQuZm4uelRyZWUuaW5pdCgkKCd1bFtuYW1lPVwiJyArIHRoaXMubmFtZSArICdcIl0nKSwgdGhpcy5zZXR0aW5nLCB0aGlzLm5vZGVzKTtcblxuICAgICAgICAkLmZuLnpUcmVlS2V5Ym9hcmROYXZpZ2F0aW9uKHpUcmVlLCAkKCd1bFtuYW1lPVwiJyArIHRoaXMubmFtZSArICdcIl0nKSwgbnVsbCwgdGhpcy50cmVlaWNvbiB8fCBkZWZhdWx0VHJlZUljb25DbGFzcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZWxlY3RlZEl0ZW0odHJlZU5vZGUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGl0ZW0gPSBnZXRDbG9uZWRPYmplY3QodHJlZU5vZGUpIHx8IHt9O1xuICAgICAgICB0aGlzLnNlbGVjdGVkaXRlbS5wYXRoID0gdGhpcy5nZXRQYXRoKHRyZWVOb2RlLCBcIlwiKTtcbiAgICAgICAgY29uc3QgZGVTZWxlY3RFbG0gPSAkKGBsaVt0cmVlbm9kZV0uc2VsZWN0ZWRgKTtcbiAgICAgICAgZGVTZWxlY3RFbG0ucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkJyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdEVsbSA9ICQoYCMke3RyZWVOb2RlLnRJZH06aGFzKC5jdXJTZWxlY3RlZE5vZGUpYCk7XG4gICAgICAgIHNlbGVjdEVsbS5hZGRDbGFzcygnc2VsZWN0ZWQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cGFuZE5vZGUobm9kZSwgZXhwYW5kLCBldmVudEZsYWcpIHtcbiAgICAgICAgdGhpcy50cmVlT2JqLmV4cGFuZE5vZGUobm9kZSwgZXhwYW5kLCBmYWxzZSwgZmFsc2UsIGV2ZW50RmxhZyk7XG4gICAgICAgIGNvbnN0IGVsID0gJChgIyR7bm9kZS50SWR9X3N3aXRjaGApO1xuICAgICAgICAkKGVsKS5hZGRDbGFzcyh0aGlzLnRyZWVpY29uIHx8IGRlZmF1bHRUcmVlSWNvbkNsYXNzKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VUcmVlSWNvbnModGhpcy50cmVlaWNvbiB8fCBkZWZhdWx0VHJlZUljb25DbGFzcyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy50cmVlT2JqLmdldE5vZGVzKCk7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdE5vZGU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhdmFsdWUgPT09ICdGaXJzdE5vZGUnKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0Tm9kZSA9IG5vZGVzWzBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHRoaXMuZGF0YXZhbHVlID09PSAnTGFzdE5vZGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdE5vZGUgPSBub2Rlc1tub2Rlcy5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudHJlZU9iai5zZWxlY3ROb2RlKHNlbGVjdE5vZGUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkSXRlbShzZWxlY3ROb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZE5vZGUoc2VsZWN0Tm9kZSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxufVxuIl19
|
|
@@ -63,9 +63,11 @@ class TreeComponent extends StylableComponent {
|
|
|
63
63
|
if (nv > 0) {
|
|
64
64
|
this.level = nv;
|
|
65
65
|
}
|
|
66
|
+
this.renderTree();
|
|
66
67
|
break;
|
|
67
68
|
case 'treeicons':
|
|
68
69
|
this.treeicon = nv;
|
|
70
|
+
this.renderTree();
|
|
69
71
|
break;
|
|
70
72
|
case 'nodelabel':
|
|
71
73
|
this.setting.data.key.name = this.labelKey;
|
|
@@ -84,6 +86,7 @@ class TreeComponent extends StylableComponent {
|
|
|
84
86
|
break;
|
|
85
87
|
case 'class':
|
|
86
88
|
this.treeClass = nv;
|
|
89
|
+
this.renderTree();
|
|
87
90
|
break;
|
|
88
91
|
default:
|
|
89
92
|
super.onPropertyChange(key, nv, ov);
|
|
@@ -123,7 +126,7 @@ class TreeComponent extends StylableComponent {
|
|
|
123
126
|
getNodesFromString(value) {
|
|
124
127
|
return value.split(',').map((item) => {
|
|
125
128
|
return {
|
|
126
|
-
'
|
|
129
|
+
'label': item && item.trim()
|
|
127
130
|
};
|
|
128
131
|
});
|
|
129
132
|
}
|
|
@@ -253,8 +256,6 @@ class TreeComponent extends StylableComponent {
|
|
|
253
256
|
});
|
|
254
257
|
}
|
|
255
258
|
onCollapse(event, treeId, treeNode) {
|
|
256
|
-
// const el = $(`#${treeNode.tId}_switch`);
|
|
257
|
-
// $(el).addClass(this.treeicon || defaultTreeIconClass);
|
|
258
259
|
let path = this.getPath(treeNode, "");
|
|
259
260
|
const eventParams = {
|
|
260
261
|
'$event': event,
|
|
@@ -267,16 +268,25 @@ class TreeComponent extends StylableComponent {
|
|
|
267
268
|
return node[this.childrenKey];
|
|
268
269
|
}
|
|
269
270
|
get childrenKey() {
|
|
271
|
+
if (!this.nodechildren) {
|
|
272
|
+
return 'children';
|
|
273
|
+
}
|
|
270
274
|
const depth = this.countDepth(this.nodechildren);
|
|
271
|
-
return depth ? this.nodechildren.split('.').pop() :
|
|
275
|
+
return depth ? this.nodechildren.split('.').pop() : this.nodechildren;
|
|
272
276
|
}
|
|
273
277
|
get labelKey() {
|
|
278
|
+
if (!this.nodelabel) {
|
|
279
|
+
return 'label';
|
|
280
|
+
}
|
|
274
281
|
const depth = this.countDepth(this.nodelabel);
|
|
275
|
-
return depth ? this.nodelabel.split('.').pop() :
|
|
282
|
+
return depth ? this.nodelabel.split('.').pop() : this.nodelabel;
|
|
276
283
|
}
|
|
277
284
|
get iconKey() {
|
|
285
|
+
if (!this.nodeicon) {
|
|
286
|
+
return 'icon';
|
|
287
|
+
}
|
|
278
288
|
const depth = this.countDepth(this.nodeicon);
|
|
279
|
-
return depth ? this.nodeicon.split('.').pop() :
|
|
289
|
+
return depth ? this.nodeicon.split('.').pop() : this.nodeicon;
|
|
280
290
|
}
|
|
281
291
|
get treeObj() {
|
|
282
292
|
return $.fn.zTree.getZTreeObj(`${this.name}`);
|
|
@@ -362,13 +372,11 @@ class TreeComponent extends StylableComponent {
|
|
|
362
372
|
$.fn.zTreeKeyboardNavigation(zTree, $('ul[name="' + this.name + '"]'), null, this.treeicon || defaultTreeIconClass);
|
|
363
373
|
}
|
|
364
374
|
setSelectedItem(treeNode) {
|
|
365
|
-
debugger;
|
|
366
375
|
this.selecteditem = getClonedObject(treeNode) || {};
|
|
367
376
|
this.selecteditem.path = this.getPath(treeNode, "");
|
|
368
377
|
const deSelectElm = $(`li[treenode].selected`);
|
|
369
378
|
deSelectElm.removeClass('selected');
|
|
370
379
|
const selectElm = $(`#${treeNode.tId}:has(.curSelectedNode)`);
|
|
371
|
-
// const selectElm = $(`li[treenode]:has(.curSelectedNode)`);
|
|
372
380
|
selectElm.addClass('selected');
|
|
373
381
|
}
|
|
374
382
|
expandNode(node, expand, eventFlag) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../projects/components/widgets/basic/tree/src/tree.props.ts","../../../../../projects/components/widgets/basic/tree/src/tree.component.ts","../../../../../projects/components/widgets/basic/tree/src/tree.module.ts","../../../../../projects/components/widgets/basic/tree/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-tree',\n new Map(\n [\n ['class', PROP_STRING],\n ['dataset', {value: 'node1, node2, node3', ...PROP_ANY}],\n ['datavalue', PROP_STRING],\n ['levels', {value: 0, ...PROP_NUMBER}],\n ['name', PROP_STRING],\n ['nodeaction', PROP_STRING],\n ['nodechildren', PROP_STRING],\n ['nodeclick', {value: 'none', ...PROP_STRING}],\n ['nodeicon', PROP_STRING],\n ['nodeid', PROP_STRING],\n ['nodelabel', PROP_STRING],\n ['orderby', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['treeicons', PROP_STRING]\n ]\n )\n );\n};\n","import {Component, Injector, OnInit, ViewEncapsulation } from '@angular/core';\n\n\nimport { APPLY_STYLES_TYPE, getOrderedDataset, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\nimport { registerProps } from './tree.props';\nimport {getClonedObject} from \"@wm/core\";\n\ndeclare const _, $;\n\nconst WIDGET_INFO = {widgetType: 'wm-tree', hostClass: 'app-tree'};\nconst defaultTreeIconClass = 'plus-minus';\n\n@Component({\n selector: 'ul[wmTree]',\n templateUrl: './tree.component.html',\n providers: [\n provideAsWidgetRef(TreeComponent)\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class TreeComponent extends StylableComponent implements OnInit {\n static initializeProps = registerProps();\n\n public selecteditem;\n private nodes;\n private level;\n private orderby;\n private nodelabel;\n private treeicon;\n private nodechildren;\n private nodeclick;\n private treeClass;\n private nodeicon;\n private name;\n private datavalue;\n\n private setting = {\n data: {\n simpleData: {\n enable: false\n },\n key: {\n children: 'children',\n name: 'label'\n }\n },\n view: {\n dblClickExpand: false,\n fontCss: {\n 'font-awesome': true\n },\n switchIcon: {\n\n },\n },\n check: {\n },\n callback: {\n }\n };\n\n constructor(\n inj: Injector\n ) {\n super(inj, WIDGET_INFO);\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n }\n\n public onPropertyChange(key: string, nv: any, ov?: any): void {\n switch (key) {\n case 'dataset':\n this.nodes = this.getNodes(nv);\n if(this.level > 0) {\n this.expandTree(this.level, this.nodes, 0);\n }\n this.renderTree();\n break;\n case 'levels':\n if (nv > 0) {\n this.level = nv;\n }\n break;\n case 'treeicons':\n this.treeicon = nv;\n break;\n case 'nodelabel':\n this.setting.data.key.name = this.labelKey;\n this.renderTree();\n break;\n case 'nodechildren':\n this.setting.data.key.children = this.childrenKey;\n this.renderTree();\n break;\n case 'nodeicon':\n this.nodeicon = this.iconKey;\n this.renderTree();\n break;\n case 'orderby':\n this.renderTree();\n break;\n case 'class':\n this.treeClass = nv;\n break;\n default:\n super.onPropertyChange(key, nv, ov);\n break;\n }\n }\n\n // expands the tree nodes if the property is selected.\n private expandTree(level, node, childLevel) {\n node.map(childNode => {\n const children = this.getChildren(childNode);\n if (children && !(\"open\" in childNode) && childLevel < level) {\n childNode[\"open\"] = true;\n this.expandTree(level, children, childLevel+1);\n } else {\n childLevel = 0;\n return;\n }\n });\n }\n\n // sets the template for the tree based on the property selected.\n private setTreeTemplate(value) {\n if (value === 'Classic') {\n this.setting.check[\"enable\"] = false;\n } else if(value === 'Checkbox') {\n this.setting.check[\"enable\"] = true;\n this.setting.check[\"chkStyle\"] = 'checkbox';\n } else if (value === 'Radio') {\n this.setting.check[\"enable\"] = true;\n this.setting.check[\"chkStyle\"] = 'radio';\n this.setting.check[\"radioType\"] = \"all\";\n }\n }\n\n // extracts nodes from string format\n private getNodesFromString(value) {\n return value.split(',').map((item) => {\n return {\n 'name': item && item.trim()\n };\n });\n }\n\n // gets the nodes and orders the nodes if required\n private getNodes(newVal) {\n let nodes;\n if (_.isArray(newVal)) {\n nodes = getOrderedDataset(newVal, this.orderby);\n } else if (_.isObject(newVal)) {\n nodes = [newVal];\n } else if (_.isString(newVal) && !_.isEmpty(newVal)) {\n newVal = newVal.trim();\n if (newVal) {\n nodes = this.getNodesFromString(newVal);\n }\n }\n return nodes;\n }\n\n\n // adds class to the nodes inorder to add icons to respective node.\n private setNodeclasses(treeId, treeNode) {\n return treeNode.icon ? {add: [`${treeNode.icon}`]} : '';\n };\n\n // Sets the node label with any icon if bound to\n private setNodeData(nodes, depth, level, parentNode, type) {\n if(depth === 0) {\n nodes.map(node => {\n const children = this.getChildren(node);\n if (children) {\n this.setNodeData(children, depth, level , parentNode, type);\n }\n if (node.icon && this.nodelabel == 'icon') {\n node[type] = node.icon;\n } else if(node.name && this.nodelabel == 'name') {\n node[type] = node.name;\n } else {\n return;\n }\n })\n } else {\n nodes.map(node => {\n const children = this.getChildren(node);\n if (children && level > 1) {\n if(depth === level) {\n parentNode = node;\n }\n this.setNodeData(children, depth, level - 1, parentNode, type);\n }\n if (level === 1 && (type === \"name\" ? this.nodelabel.includes(\"label\") || this.nodelabel.includes(\"name\"): this.nodeicon.includes(\"label\") || this.nodeicon.includes(\"name\") )) {\n parentNode[type] = node.name || node.label;\n return\n } else if(level === 1 && (node.icon !== undefined) && (type === \"name\" ? this.nodelabel.includes(\"icon\") : this.nodeicon.includes(\"icon\"))) {\n parentNode[type] = node.icon;\n return;\n } else {\n return;\n }\n })\n }\n }\n\n // adds tree icons to the nodes on load of the tree\n private changeTreeIcons(nv) {\n let eleClose = $('ul[name=\"' + this.name + '\"] li span.button.switch');\n\n $(eleClose).map((idx, ele) => {\n $(ele).addClass(nv);\n $(ele).on(\"click\",function(e) {\n setTimeout(() => {\n $(ele).addClass(nv);\n }, 0);\n });\n })\n }\n\n private getPath(treeNode, path) {\n if(treeNode.getParentNode() === null) {\n path = \"/\" + treeNode[this.labelKey] + path;\n } else {\n path = this.getPath(treeNode.getParentNode(), path) + \"/\" + treeNode[this.labelKey];\n }\n return path;\n }\n\n // binds the click event to all nodes to open the child nodes\n public onClick(event, treeId, treeNode, clickFlag) {\n if(this.nodeclick === \"expand\") {\n var nodes = this.treeObj.getSelectedNodes();\n if (nodes.length>0) {\n this.expandNode(nodes[0], !nodes[0].open, true);\n }\n }\n let path = this.getPath(treeNode, \"\");\n\n const eventParams = {\n '$event' : event,\n \"$item\" : treeNode,\n \"$path\" : path\n };\n\n this.setSelectedItem(treeNode);\n this.invokeEventCallback('select', eventParams);\n }\n\n // Adds tree icon classes to child nodes when expanded\n public onExpand(event, treeId, treeNode) {\n let self = this;\n let path = this.getPath(treeNode, \"\");\n\n const eventParams = {\n '$event' : event,\n \"$item\" : treeNode,\n \"$path\" : path\n };\n this.invokeEventCallback('expand', eventParams);\n\n const children = this.getChildren(treeNode);\n children?.map((el) => {\n if (el.isParent) {\n let ele = $(`#${el.tId}_switch`);\n $(ele).addClass(self.treeicon || defaultTreeIconClass);\n $(ele).on(\"click\", function(e) {\n setTimeout(() => {\n $(ele).addClass(self.treeicon || defaultTreeIconClass);\n }, 0);\n });\n }\n });\n }\n\n public onCollapse(event, treeId, treeNode) {\n // const el = $(`#${treeNode.tId}_switch`);\n // $(el).addClass(this.treeicon || defaultTreeIconClass);\n\n let path = this.getPath(treeNode, \"\");\n const eventParams = {\n '$event' : event,\n \"$item\" : treeNode,\n \"$path\" : path\n };\n this.invokeEventCallback('collapse', eventParams);\n }\n\n private getChildren(node) {\n return node[this.childrenKey];\n }\n get childrenKey() {\n const depth = this.countDepth(this.nodechildren);\n return depth ? this.nodechildren.split('.').pop() : (this.nodechildren || 'children');\n }\n get labelKey() {\n const depth = this.countDepth(this.nodelabel);\n return depth ? this.nodelabel.split('.').pop() : (this.nodelabel || 'label');\n }\n get iconKey() {\n const depth = this.countDepth(this.nodeicon);\n return depth ? this.nodeicon.split('.').pop() : (this.nodeicon || 'icon');\n }\n\n get treeObj(){\n return $.fn.zTree.getZTreeObj(`${this.name}`)\n }\n\n // function to support backward compatibility of objects\n private modifyObjects(array) {\n array.forEach(obj => {\n obj.icon = obj[this.nodeicon];\n const children = this.getChildren(obj);\n if (children?.length) {\n this.modifyObjects(children);\n }\n });\n }\n\n // sets the node children property to parent nodes\n private setNodeChildren(nodes, depth, level, parentNode) {\n if (depth <= 0) {\n return nodes;\n }\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if(depth === level) {\n parentNode = nodes[i];\n }\n const children = this.getChildren(node);\n if (children?.length) {\n if (level === 1) {\n parentNode[this.childrenKey] = children.map(child => ({ [this.labelKey]: child[this.labelKey], [this.childrenKey]: this.getChildren(child), icon: child[this.iconKey] }));\n return;\n } else {\n this.setNodeChildren(children, depth ,level - 1, parentNode);\n }\n }\n }\n\n return nodes;\n }\n\n private countDepth(str) {\n const regex = /\\[.*?\\]/g;\n let matches = str.match(regex);\n let count = 1;\n\n if(matches === null) return count;\n\n for (let match of matches) {\n count++;\n }\n\n return count;\n }\n\n\n // Renders the tree on to the dom\n public renderTree() {\n if(this.nodes) {\n this.nativeElement.setAttribute('id', this.name);\n if(this.nodeicon && this.nodeicon !== 'icon') {\n this.modifyObjects(this.nodes);\n }\n this.setTreeTemplate(this.treeClass);\n\n if (this.nodelabel) {\n let depth =0;\n if(this.nodelabel.includes(\"children\")) {\n depth = this.countDepth(this.nodelabel);\n }\n this.setNodeData(this.nodes, depth, depth, null, \"name\");\n }\n if(this.nodeicon) {\n let depth =0;\n if(this.nodeicon.includes(\"children\")) {\n depth = this.countDepth(this.nodeicon);\n }\n this.setNodeData(this.nodes, depth, depth, null, \"icon\");\n }\n\n if (this.nodechildren) {\n let depth = this.countDepth(this.nodechildren);\n if(depth > 1) {\n this.nodes = this.setNodeChildren(this.nodes, depth, depth, null);\n }\n }\n }\n\n\n this.setting.view['nodeClasses'] = this.setNodeclasses;\n this.setting.callback[\"onClick\"] = this.onClick.bind(this);\n this.setting.callback[\"onExpand\"] = this.onExpand.bind(this);\n this.setting.callback[\"onCollapse\"] = this.onCollapse.bind(this);\n\n let zTree = $.fn.zTree.init($('ul[name=\"' + this.name + '\"]'), this.setting, this.nodes);\n\n $.fn.zTreeKeyboardNavigation(zTree, $('ul[name=\"' + this.name + '\"]'), null, this.treeicon || defaultTreeIconClass);\n }\n\n private setSelectedItem(treeNode) {\n debugger;\n this.selecteditem = getClonedObject(treeNode) || {};\n this.selecteditem.path = this.getPath(treeNode, \"\");\n const deSelectElm = $(`li[treenode].selected`);\n deSelectElm.removeClass('selected');\n const selectElm = $(`#${treeNode.tId}:has(.curSelectedNode)`);\n// const selectElm = $(`li[treenode]:has(.curSelectedNode)`);\n selectElm.addClass('selected');\n }\n\n private expandNode(node, expand, eventFlag) {\n this.treeObj.expandNode(node, expand, false, false, eventFlag);\n const el = $(`#${node.tId}_switch`);\n $(el).addClass(this.treeicon || defaultTreeIconClass);\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.changeTreeIcons(this.treeicon || defaultTreeIconClass);\n\n if (this.datavalue) {\n const nodes = this.treeObj.getNodes();\n let selectNode;\n\n if (this.datavalue === 'FirstNode'){\n if (nodes.length) {\n selectNode = nodes[0];\n }\n }\n if(this.datavalue === 'LastNode') {\n if (nodes.length) {\n selectNode = nodes[nodes.length - 1]\n }\n }\n this.treeObj.selectNode(selectNode, false);\n this.setSelectedItem(selectNode);\n this.expandNode(selectNode, true, false);\n }\n\n }, 200);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { TreeComponent } from './tree.component';\n\nconst components = [\n TreeComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components],\n entryComponents: []\n})\nexport class TreeModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {registerProps as ɵa} from './tree.props';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../projects/components/widgets/basic/tree/src/tree.props.ts","../../../../../projects/components/widgets/basic/tree/src/tree.component.ts","../../../../../projects/components/widgets/basic/tree/src/tree.module.ts","../../../../../projects/components/widgets/basic/tree/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-tree',\n new Map(\n [\n ['class', PROP_STRING],\n ['dataset', {value: 'node1, node2, node3', ...PROP_ANY}],\n ['datavalue', PROP_STRING],\n ['levels', {value: 0, ...PROP_NUMBER}],\n ['name', PROP_STRING],\n ['nodeaction', PROP_STRING],\n ['nodechildren', PROP_STRING],\n ['nodeclick', {value: 'none', ...PROP_STRING}],\n ['nodeicon', PROP_STRING],\n ['nodeid', PROP_STRING],\n ['nodelabel', PROP_STRING],\n ['orderby', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['treeicons', PROP_STRING]\n ]\n )\n );\n};\n","import {Component, Injector, OnInit, ViewEncapsulation } from '@angular/core';\n\n\nimport { APPLY_STYLES_TYPE, getOrderedDataset, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\nimport { registerProps } from './tree.props';\nimport {getClonedObject} from \"@wm/core\";\n\ndeclare const _, $;\n\nconst WIDGET_INFO = {widgetType: 'wm-tree', hostClass: 'app-tree'};\nconst defaultTreeIconClass = 'plus-minus';\n\n@Component({\n selector: 'ul[wmTree]',\n templateUrl: './tree.component.html',\n providers: [\n provideAsWidgetRef(TreeComponent)\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class TreeComponent extends StylableComponent implements OnInit {\n static initializeProps = registerProps();\n\n public selecteditem;\n private nodes;\n private level;\n private orderby;\n private nodelabel;\n private treeicon;\n private nodechildren;\n private nodeclick;\n private treeClass;\n private nodeicon;\n private name;\n private datavalue;\n\n private setting = {\n data: {\n simpleData: {\n enable: false\n },\n key: {\n children: 'children',\n name: 'label'\n }\n },\n view: {\n dblClickExpand: false,\n fontCss: {\n 'font-awesome': true\n },\n switchIcon: {\n\n },\n },\n check: {\n },\n callback: {\n }\n };\n\n constructor(\n inj: Injector\n ) {\n super(inj, WIDGET_INFO);\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n }\n\n public onPropertyChange(key: string, nv: any, ov?: any): void {\n switch (key) {\n case 'dataset':\n this.nodes = this.getNodes(nv);\n if(this.level > 0) {\n this.expandTree(this.level, this.nodes, 0);\n }\n this.renderTree();\n break;\n case 'levels':\n if (nv > 0) {\n this.level = nv;\n }\n this.renderTree();\n break;\n case 'treeicons':\n this.treeicon = nv;\n this.renderTree();\n break;\n case 'nodelabel':\n this.setting.data.key.name = this.labelKey;\n this.renderTree();\n break;\n case 'nodechildren':\n this.setting.data.key.children = this.childrenKey;\n this.renderTree();\n break;\n case 'nodeicon':\n this.nodeicon = this.iconKey;\n this.renderTree();\n break;\n case 'orderby':\n this.renderTree();\n break;\n case 'class':\n this.treeClass = nv;\n this.renderTree();\n break;\n default:\n super.onPropertyChange(key, nv, ov);\n break;\n }\n }\n\n // expands the tree nodes if the property is selected.\n private expandTree(level, node, childLevel) {\n node.map(childNode => {\n const children = this.getChildren(childNode);\n if (children && !(\"open\" in childNode) && childLevel < level) {\n childNode[\"open\"] = true;\n this.expandTree(level, children, childLevel+1);\n } else {\n childLevel = 0;\n return;\n }\n });\n }\n\n // sets the template for the tree based on the property selected.\n private setTreeTemplate(value) {\n if (value === 'Classic') {\n this.setting.check[\"enable\"] = false;\n } else if(value === 'Checkbox') {\n this.setting.check[\"enable\"] = true;\n this.setting.check[\"chkStyle\"] = 'checkbox';\n } else if (value === 'Radio') {\n this.setting.check[\"enable\"] = true;\n this.setting.check[\"chkStyle\"] = 'radio';\n this.setting.check[\"radioType\"] = \"all\";\n }\n }\n\n // extracts nodes from string format\n private getNodesFromString(value) {\n return value.split(',').map((item) => {\n return {\n 'label': item && item.trim()\n };\n });\n }\n\n // gets the nodes and orders the nodes if required\n private getNodes(newVal) {\n let nodes;\n if (_.isArray(newVal)) {\n nodes = getOrderedDataset(newVal, this.orderby);\n } else if (_.isObject(newVal)) {\n nodes = [newVal];\n } else if (_.isString(newVal) && !_.isEmpty(newVal)) {\n newVal = newVal.trim();\n if (newVal) {\n nodes = this.getNodesFromString(newVal);\n }\n }\n return nodes;\n }\n\n\n // adds class to the nodes inorder to add icons to respective node.\n private setNodeclasses(treeId, treeNode) {\n return treeNode.icon ? {add: [`${treeNode.icon}`]} : '';\n };\n\n // Sets the node label with any icon if bound to\n private setNodeData(nodes, depth, level, parentNode, type) {\n if(depth === 0) {\n nodes.map(node => {\n const children = this.getChildren(node);\n if (children) {\n this.setNodeData(children, depth, level , parentNode, type);\n }\n if (node.icon && this.nodelabel == 'icon') {\n node[type] = node.icon;\n } else if(node.name && this.nodelabel == 'name') {\n node[type] = node.name;\n } else {\n return;\n }\n })\n } else {\n nodes.map(node => {\n const children = this.getChildren(node);\n if (children && level > 1) {\n if(depth === level) {\n parentNode = node;\n }\n this.setNodeData(children, depth, level - 1, parentNode, type);\n }\n if (level === 1 && (type === \"name\" ? this.nodelabel.includes(\"label\") || this.nodelabel.includes(\"name\"): this.nodeicon.includes(\"label\") || this.nodeicon.includes(\"name\") )) {\n parentNode[type] = node.name || node.label;\n return\n } else if(level === 1 && (node.icon !== undefined) && (type === \"name\" ? this.nodelabel.includes(\"icon\") : this.nodeicon.includes(\"icon\"))) {\n parentNode[type] = node.icon;\n return;\n } else {\n return;\n }\n })\n }\n }\n\n // adds tree icons to the nodes on load of the tree\n private changeTreeIcons(nv) {\n let eleClose = $('ul[name=\"' + this.name + '\"] li span.button.switch');\n\n $(eleClose).map((idx, ele) => {\n $(ele).addClass(nv);\n $(ele).on(\"click\",function(e) {\n setTimeout(() => {\n $(ele).addClass(nv);\n }, 0);\n });\n })\n }\n\n private getPath(treeNode, path) {\n if(treeNode.getParentNode() === null) {\n path = \"/\" + treeNode[this.labelKey] + path;\n } else {\n path = this.getPath(treeNode.getParentNode(), path) + \"/\" + treeNode[this.labelKey];\n }\n return path;\n }\n\n // binds the click event to all nodes to open the child nodes\n public onClick(event, treeId, treeNode, clickFlag) {\n if(this.nodeclick === \"expand\") {\n var nodes = this.treeObj.getSelectedNodes();\n if (nodes.length>0) {\n this.expandNode(nodes[0], !nodes[0].open, true);\n }\n }\n let path = this.getPath(treeNode, \"\");\n\n const eventParams = {\n '$event' : event,\n \"$item\" : treeNode,\n \"$path\" : path\n };\n\n this.setSelectedItem(treeNode);\n this.invokeEventCallback('select', eventParams);\n }\n\n // Adds tree icon classes to child nodes when expanded\n public onExpand(event, treeId, treeNode) {\n let self = this;\n let path = this.getPath(treeNode, \"\");\n\n const eventParams = {\n '$event' : event,\n \"$item\" : treeNode,\n \"$path\" : path\n };\n this.invokeEventCallback('expand', eventParams);\n\n const children = this.getChildren(treeNode);\n children?.map((el) => {\n if (el.isParent) {\n let ele = $(`#${el.tId}_switch`);\n $(ele).addClass(self.treeicon || defaultTreeIconClass);\n $(ele).on(\"click\", function(e) {\n setTimeout(() => {\n $(ele).addClass(self.treeicon || defaultTreeIconClass);\n }, 0);\n });\n }\n });\n }\n\n public onCollapse(event, treeId, treeNode) {\n let path = this.getPath(treeNode, \"\");\n const eventParams = {\n '$event' : event,\n \"$item\" : treeNode,\n \"$path\" : path\n };\n this.invokeEventCallback('collapse', eventParams);\n }\n\n private getChildren(node) {\n return node[this.childrenKey];\n }\n get childrenKey() {\n if(!this.nodechildren) {\n return 'children';\n }\n const depth = this.countDepth(this.nodechildren);\n return depth ? this.nodechildren.split('.').pop() : this.nodechildren;\n }\n get labelKey() {\n if(!this.nodelabel) {\n return 'label';\n }\n const depth = this.countDepth(this.nodelabel);\n return depth ? this.nodelabel.split('.').pop() : this.nodelabel;\n }\n get iconKey() {\n if(!this.nodeicon) {\n return 'icon';\n }\n const depth = this.countDepth(this.nodeicon);\n return depth ? this.nodeicon.split('.').pop() : this.nodeicon;\n }\n\n get treeObj(){\n return $.fn.zTree.getZTreeObj(`${this.name}`)\n }\n\n // function to support backward compatibility of objects\n private modifyObjects(array) {\n array.forEach(obj => {\n obj.icon = obj[this.nodeicon];\n const children = this.getChildren(obj);\n if (children?.length) {\n this.modifyObjects(children);\n }\n });\n }\n\n // sets the node children property to parent nodes\n private setNodeChildren(nodes, depth, level, parentNode) {\n if (depth <= 0) {\n return nodes;\n }\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if(depth === level) {\n parentNode = nodes[i];\n }\n const children = this.getChildren(node);\n if (children?.length) {\n if (level === 1) {\n parentNode[this.childrenKey] = children.map(child => ({ [this.labelKey]: child[this.labelKey], [this.childrenKey]: this.getChildren(child), icon: child[this.iconKey] }));\n return;\n } else {\n this.setNodeChildren(children, depth ,level - 1, parentNode);\n }\n }\n }\n\n return nodes;\n }\n\n private countDepth(str) {\n const regex = /\\[.*?\\]/g;\n let matches = str.match(regex);\n let count = 1;\n\n if(matches === null) return count;\n\n for (let match of matches) {\n count++;\n }\n\n return count;\n }\n\n\n // Renders the tree on to the dom\n public renderTree() {\n if(this.nodes) {\n this.nativeElement.setAttribute('id', this.name);\n if(this.nodeicon && this.nodeicon !== 'icon') {\n this.modifyObjects(this.nodes);\n }\n this.setTreeTemplate(this.treeClass);\n\n if (this.nodelabel) {\n let depth =0;\n if(this.nodelabel.includes(\"children\")) {\n depth = this.countDepth(this.nodelabel);\n }\n this.setNodeData(this.nodes, depth, depth, null, \"name\");\n }\n if(this.nodeicon) {\n let depth =0;\n if(this.nodeicon.includes(\"children\")) {\n depth = this.countDepth(this.nodeicon);\n }\n this.setNodeData(this.nodes, depth, depth, null, \"icon\");\n }\n\n if (this.nodechildren) {\n let depth = this.countDepth(this.nodechildren);\n if(depth > 1) {\n this.nodes = this.setNodeChildren(this.nodes, depth, depth, null);\n }\n }\n }\n\n\n this.setting.view['nodeClasses'] = this.setNodeclasses;\n this.setting.callback[\"onClick\"] = this.onClick.bind(this);\n this.setting.callback[\"onExpand\"] = this.onExpand.bind(this);\n this.setting.callback[\"onCollapse\"] = this.onCollapse.bind(this);\n\n let zTree = $.fn.zTree.init($('ul[name=\"' + this.name + '\"]'), this.setting, this.nodes);\n\n $.fn.zTreeKeyboardNavigation(zTree, $('ul[name=\"' + this.name + '\"]'), null, this.treeicon || defaultTreeIconClass);\n }\n\n private setSelectedItem(treeNode) {\n this.selecteditem = getClonedObject(treeNode) || {};\n this.selecteditem.path = this.getPath(treeNode, \"\");\n const deSelectElm = $(`li[treenode].selected`);\n deSelectElm.removeClass('selected');\n const selectElm = $(`#${treeNode.tId}:has(.curSelectedNode)`);\n selectElm.addClass('selected');\n }\n\n private expandNode(node, expand, eventFlag) {\n this.treeObj.expandNode(node, expand, false, false, eventFlag);\n const el = $(`#${node.tId}_switch`);\n $(el).addClass(this.treeicon || defaultTreeIconClass);\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.changeTreeIcons(this.treeicon || defaultTreeIconClass);\n\n if (this.datavalue) {\n const nodes = this.treeObj.getNodes();\n let selectNode;\n\n if (this.datavalue === 'FirstNode'){\n if (nodes.length) {\n selectNode = nodes[0];\n }\n }\n if(this.datavalue === 'LastNode') {\n if (nodes.length) {\n selectNode = nodes[nodes.length - 1]\n }\n }\n this.treeObj.selectNode(selectNode, false);\n this.setSelectedItem(selectNode);\n this.expandNode(selectNode, true, false);\n }\n\n }, 200);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { TreeComponent } from './tree.component';\n\nconst components = [\n TreeComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components],\n entryComponents: []\n})\nexport class TreeModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {registerProps as ɵa} from './tree.props';"],"names":[],"mappings":"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"}
|