@wavemaker/app-ng-runtime 11.4.0-next.25701 → 11.4.0-next.25703

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.
Files changed (59) hide show
  1. app-ng-runtime/build-task/basic/tree/tree.build.d.ts +2 -1
  2. app-ng-runtime/build-task/bundles/index.umd.js +9 -7
  3. app-ng-runtime/build-task/bundles/index.umd.js.map +1 -1
  4. app-ng-runtime/build-task/esm2015/basic/tree/tree.build.js +4 -3
  5. app-ng-runtime/build-task/esm2015/navigation/popover/popover.build.js +3 -3
  6. app-ng-runtime/build-task/fesm2015/index.js +9 -7
  7. app-ng-runtime/build-task/fesm2015/index.js.map +1 -1
  8. app-ng-runtime/components/base/bundles/index.umd.js +3 -6
  9. app-ng-runtime/components/base/bundles/index.umd.js.map +1 -1
  10. app-ng-runtime/components/base/esm2015/utils/widget-utils.js +4 -7
  11. app-ng-runtime/components/base/fesm2015/index.js +3 -6
  12. app-ng-runtime/components/base/fesm2015/index.js.map +1 -1
  13. app-ng-runtime/components/base/utils/widget-utils.d.ts +1 -1
  14. app-ng-runtime/components/basic/tree/bundles/index.umd.js +256 -280
  15. app-ng-runtime/components/basic/tree/bundles/index.umd.js.map +1 -1
  16. app-ng-runtime/components/basic/tree/esm2015/public_api.js +2 -2
  17. app-ng-runtime/components/basic/tree/esm2015/tree.directive.js +310 -0
  18. app-ng-runtime/components/basic/tree/esm2015/tree.module.js +3 -3
  19. app-ng-runtime/components/basic/tree/fesm2015/index.js +248 -260
  20. app-ng-runtime/components/basic/tree/fesm2015/index.js.map +1 -1
  21. app-ng-runtime/components/basic/tree/index.metadata.json +1 -1
  22. app-ng-runtime/components/basic/tree/public_api.d.ts +1 -1
  23. app-ng-runtime/components/basic/tree/tree.directive.d.ts +35 -0
  24. app-ng-runtime/components/data/list/bundles/index.umd.js +4 -28
  25. app-ng-runtime/components/data/list/bundles/index.umd.js.map +1 -1
  26. app-ng-runtime/components/data/list/esm2015/list.component.js +5 -29
  27. app-ng-runtime/components/data/list/fesm2015/index.js +4 -28
  28. app-ng-runtime/components/data/list/fesm2015/index.js.map +1 -1
  29. app-ng-runtime/components/data/list/index.metadata.json +1 -1
  30. app-ng-runtime/components/dialogs/default/bundles/index.umd.js.map +1 -1
  31. app-ng-runtime/components/dialogs/default/esm2015/base-dialog.js +1 -1
  32. app-ng-runtime/components/dialogs/default/fesm2015/index.js.map +1 -1
  33. app-ng-runtime/components/dialogs/default/index.metadata.json +1 -1
  34. app-ng-runtime/components/input/epoch/bundles/index.umd.js +21 -39
  35. app-ng-runtime/components/input/epoch/bundles/index.umd.js.map +1 -1
  36. app-ng-runtime/components/input/epoch/esm2015/base-date-time.component.js +25 -43
  37. app-ng-runtime/components/input/epoch/esm2015/date/date.component.js +3 -3
  38. app-ng-runtime/components/input/epoch/esm2015/date-time/date-time.component.js +2 -2
  39. app-ng-runtime/components/input/epoch/fesm2015/index.js +27 -45
  40. app-ng-runtime/components/input/epoch/fesm2015/index.js.map +1 -1
  41. app-ng-runtime/components/input/epoch/index.metadata.json +1 -1
  42. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +4 -3
  43. app-ng-runtime/components/navigation/popover/bundles/index.umd.js.map +1 -1
  44. app-ng-runtime/components/navigation/popover/esm2015/popover.component.js +6 -5
  45. app-ng-runtime/components/navigation/popover/fesm2015/index.js +5 -4
  46. app-ng-runtime/components/navigation/popover/fesm2015/index.js.map +1 -1
  47. app-ng-runtime/package.json +1 -1
  48. app-ng-runtime/scripts/datatable/datatable.js +23 -23
  49. app-ng-runtime/variables/bundles/index.umd.js +4 -14
  50. app-ng-runtime/variables/bundles/index.umd.js.map +1 -1
  51. app-ng-runtime/variables/esm2015/manager/action/notification-action.manager.js +6 -5
  52. app-ng-runtime/variables/esm2015/service/variables.service.js +1 -8
  53. app-ng-runtime/variables/fesm2015/index.js +5 -11
  54. app-ng-runtime/variables/fesm2015/index.js.map +1 -1
  55. app-ng-runtime/variables/index.metadata.json +1 -1
  56. app-ng-runtime/variables/service/variables.service.d.ts +0 -4
  57. app-ng-runtime/components/basic/tree/esm2015/tree.component.js +0 -322
  58. app-ng-runtime/components/basic/tree/tree.component.d.ts +0 -34
  59. app-ng-runtime/scripts/tree-keyboard-navigation/keyboard-navigation.js +0 -251
@@ -0,0 +1,310 @@
1
+ import { Attribute, Directive, Injector } from '@angular/core';
2
+ import { $appDigest, $parseEvent, $parseExpr, getClonedObject } from '@wm/core';
3
+ import { APPLY_STYLES_TYPE, getEvaluatedData, getOrderedDataset, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';
4
+ import { registerProps } from './tree.props';
5
+ const defaultTreeIconClass = 'plus-minus';
6
+ const ICON_CLASSES = {
7
+ 'folder': {
8
+ 'expanded': 'wi-folder-open',
9
+ 'collapsed': 'wi-folder'
10
+ },
11
+ 'circle-plus-minus': {
12
+ 'expanded': 'wi-remove-circle-outline',
13
+ 'collapsed': 'wi-add-circle-outline'
14
+ },
15
+ 'chevron': {
16
+ 'expanded': 'wi-keyboard-arrow-down',
17
+ 'collapsed': 'wi-keyboard-arrow-right'
18
+ },
19
+ 'menu': {
20
+ 'expanded': 'wi-arrow-down',
21
+ 'collapsed': 'wi-arrow-right'
22
+ },
23
+ 'triangle': {
24
+ 'expanded': 'wi-arrow-drop-down-circle',
25
+ 'collapsed': 'wi-play-circle-filled'
26
+ },
27
+ 'expand-collapse': {
28
+ 'expanded': 'wi-expand-less',
29
+ 'collapsed': 'wi-expand-more'
30
+ },
31
+ 'plus-minus': {
32
+ 'expanded': 'wi-minus',
33
+ 'collapsed': 'wi-plus'
34
+ }
35
+ };
36
+ const WIDGET_INFO = { widgetType: 'wm-tree', hostClass: 'app-tree' };
37
+ export class TreeDirective extends StylableComponent {
38
+ constructor(inj, binddatavalue, bindnodelabel, bindnodeicon, bindnodechildren, bindnodeid) {
39
+ super(inj, WIDGET_INFO);
40
+ this.binddatavalue = binddatavalue;
41
+ this.bindnodelabel = bindnodelabel;
42
+ this.bindnodeicon = bindnodeicon;
43
+ this.bindnodechildren = bindnodechildren;
44
+ this.bindnodeid = bindnodeid;
45
+ styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);
46
+ this.bindEvents();
47
+ }
48
+ onPropertyChange(key, nv, ov) {
49
+ switch (key) {
50
+ case 'dataset':
51
+ this.nodes = this.getNodes(nv);
52
+ this._selectNode = undefined;
53
+ this.renderTree();
54
+ break;
55
+ case 'nodeicon':
56
+ case 'nodelabel':
57
+ case 'nodechildren':
58
+ case 'orderby':
59
+ this.renderTree();
60
+ break;
61
+ case 'treeicons':
62
+ this.changeTreeIcons(nv, ov);
63
+ break;
64
+ case 'datavalue':
65
+ this.selectById(nv);
66
+ break;
67
+ default:
68
+ super.onPropertyChange(key, nv, ov);
69
+ }
70
+ }
71
+ constructNodes(nodes, parent, levels, deep, _evalDataValue) {
72
+ const $ul = $('<ul></ul>');
73
+ const _iconClses = ICON_CLASSES[this.treeicons || defaultTreeIconClass];
74
+ const _expr = (this.binddatavalue || this.datavalue);
75
+ let _iconCls, _cls;
76
+ _cls = levels > 0 ? ' expanded ' : ' collapsed ';
77
+ _iconCls = _cls + (levels > 0 ? _iconClses.expanded : _iconClses.collapsed);
78
+ deep = deep || 0;
79
+ parent.append($ul);
80
+ nodes.forEach((node, idx) => {
81
+ const $li = $('<li></li>'), $iconNode = $('<i></i>'), nodeLabel = getEvaluatedData(node, { field: this.nodelabel, bindExpression: this.bindnodelabel }, this.viewParent) || node.label, nodeIcon = getEvaluatedData(node, { field: this.nodeicon, bindExpression: this.bindnodeicon }, this.viewParent) || node.icon, nodeChildren = getEvaluatedData(node, { field: this.nodechildren, bindExpression: this.bindnodechildren }, this.viewParent) || node.children;
82
+ let nodeIdValue = getEvaluatedData(node, { field: this.nodeid, bindExpression: this.bindnodeid }, this.viewParent);
83
+ if (nodeIdValue === undefined) {
84
+ nodeIdValue = node.children;
85
+ }
86
+ let isNodeMatched = false, expandCollapseIcon;
87
+ $li.data('nodedata', node)
88
+ .append($iconNode)
89
+ .append(`<span class="title">${nodeLabel}</span>`)
90
+ .appendTo($ul);
91
+ // if datavalue(ie, expr) is provided select the tree node accordingly
92
+ // if datavalue === 'FirstNode' -- select the FirstNode at level 0
93
+ // if datavalue === 'LastNode' -- select the LastNode at level 0
94
+ // if datavalue is a bind expression evaluate the expression for each node of the tree till the condition is satisfied.
95
+ // if node identifier is present then verify the datavalue is bound expr or static value and compare with the node model
96
+ if (this.bindnodeid || this.nodeid) {
97
+ isNodeMatched = this.binddatavalue ? nodeIdValue === _evalDataValue : nodeIdValue === _expr;
98
+ if (nodeIdValue !== undefined) {
99
+ $li.attr('id', nodeIdValue);
100
+ }
101
+ }
102
+ else if (this.binddatavalue) { // evaluate the expression only if it is bound (useExpression)
103
+ isNodeMatched = !!$parseExpr(_expr)(this, node);
104
+ }
105
+ // Perform LastNode check only at level 0.(ie, deep = 0);
106
+ if (!this._selectNode) {
107
+ if ((_expr === 'FirstNode' && idx === 0)
108
+ || (!deep && _expr === 'LastNode' && idx === nodes.length - 1)
109
+ || isNodeMatched) {
110
+ // save a reference of the node to be selected in `_selectNode`
111
+ this._selectNode = $li;
112
+ this.datavalue = nodeIdValue;
113
+ }
114
+ }
115
+ if (nodeIcon) {
116
+ $iconNode.addClass(nodeIcon);
117
+ }
118
+ if (nodeChildren && nodeChildren.length) { // parent node
119
+ $li.addClass(`parent-node ${_cls}`);
120
+ expandCollapseIcon = $(`<i class="wi ${_iconCls}"></i>`);
121
+ if (nodeIcon) {
122
+ $iconNode.addClass(nodeIcon);
123
+ }
124
+ $li.prepend(expandCollapseIcon);
125
+ this.constructNodes(nodeChildren, $li, levels - 1, deep + 1, _evalDataValue);
126
+ }
127
+ else {
128
+ if (!nodeIcon) {
129
+ $iconNode.addClass('leaf-node');
130
+ }
131
+ $li.addClass('leaf-node');
132
+ }
133
+ });
134
+ }
135
+ getNodesFromString(value) {
136
+ return value.split(',').map((item) => {
137
+ return {
138
+ 'label': item && item.trim()
139
+ };
140
+ });
141
+ }
142
+ getNodes(newVal) {
143
+ let nodes;
144
+ if (_.isString(newVal) && !_.isEmpty(newVal)) {
145
+ newVal = newVal.trim();
146
+ if (newVal) {
147
+ nodes = this.getNodesFromString(newVal);
148
+ }
149
+ }
150
+ else if (_.isArray(newVal)) {
151
+ newVal = getOrderedDataset(newVal, this.orderby);
152
+ nodes = newVal;
153
+ }
154
+ else if (_.isObject(newVal)) {
155
+ nodes = [newVal];
156
+ }
157
+ return nodes;
158
+ }
159
+ changeTreeIcons(nv, ov) {
160
+ const $el = $(this.nativeElement);
161
+ nv = nv || defaultTreeIconClass;
162
+ ov = ov || defaultTreeIconClass;
163
+ $el.find('i.expanded').removeClass(ICON_CLASSES[ov].expanded).addClass(ICON_CLASSES[nv].expanded);
164
+ $el.find('i.collapsed').removeClass(ICON_CLASSES[ov].collapsed).addClass(ICON_CLASSES[nv].collapsed);
165
+ }
166
+ toggleExpandCollapseNode($event, $i, $li) {
167
+ const treeIcons = ICON_CLASSES[this.treeicons || defaultTreeIconClass];
168
+ const $liPath = this.findSelectedNodeParent($li);
169
+ let path = '';
170
+ // construct the path of the node
171
+ $liPath
172
+ .each((i, el) => {
173
+ const current = $(el).children('.title').text();
174
+ path = `/${current + path}`;
175
+ });
176
+ const eventParams = {
177
+ '$event': $event,
178
+ "$item": $li.data('nodedata'),
179
+ "$path": path
180
+ };
181
+ if ($i.hasClass('collapsed')) {
182
+ $i.removeClass(`collapsed ${treeIcons.collapsed}`).addClass(`expanded ${treeIcons.expanded}`);
183
+ $li.removeClass('collapsed').addClass('expanded');
184
+ this.invokeEventCallback('expand', eventParams);
185
+ }
186
+ else if ($i.hasClass('expanded')) {
187
+ $i.removeClass(`expanded ${treeIcons.expanded}`).addClass(`collapsed ${treeIcons.collapsed}`);
188
+ $li.removeClass('expanded').addClass('collapsed');
189
+ this.invokeEventCallback('collapse', eventParams);
190
+ }
191
+ }
192
+ renderTree(forceRender) {
193
+ let docFrag, $li, $liPath, data, path = '';
194
+ const levels = +this.nativeElement.getAttribute('levels') || 0, $el = $(this.nativeElement);
195
+ $el.empty();
196
+ if (forceRender) {
197
+ this._selectNode = undefined;
198
+ }
199
+ if (this.nodes && this.nodes.length) {
200
+ docFrag = document.createDocumentFragment();
201
+ this.constructNodes(this.nodes, $(docFrag), levels, 0, this.datavalue);
202
+ $el.append(docFrag);
203
+ }
204
+ if (this._selectNode) {
205
+ $li = this._selectNode;
206
+ $li.addClass('selected');
207
+ data = $li.data('nodedata');
208
+ $liPath = this.findSelectedNodeParent($li);
209
+ if (!$liPath.length) {
210
+ $liPath = $li;
211
+ }
212
+ $liPath
213
+ .each((i, el) => {
214
+ const $current = $(el), $i = $current.children('i.collapsed'), $title = $current.children('.title');
215
+ this.toggleExpandCollapseNode(undefined, $i, $current);
216
+ path = `/${$title.text() + path}`;
217
+ });
218
+ this.selecteditem = getClonedObject(data) || {};
219
+ this.selecteditem.path = path;
220
+ this.invokeEventCallback('select', { $event: undefined, $item: data, $path: path });
221
+ $appDigest();
222
+ }
223
+ }
224
+ selectNode(evt, value) {
225
+ const target = evt && $(evt.target), $el = $(this.nativeElement), $li = _.isObject(value) ? value : $el.find(`li[id="${value}"]`).first();
226
+ let data, path = '', $liPath, nodeAction;
227
+ $el.find('.selected').removeClass('selected');
228
+ if (!$li.length) {
229
+ return;
230
+ }
231
+ $li.addClass('selected');
232
+ data = $li.data('nodedata');
233
+ nodeAction = data[this.nodeaction || 'action'];
234
+ // if the selectNode is initiated by click event then use the nativeElement target from event
235
+ $liPath = target ? target.parents('.app-tree li') : this.findSelectedNodeParent($li);
236
+ // construct the path of the node
237
+ $liPath
238
+ .each((i, el) => {
239
+ const current = $(el).children('.title').text();
240
+ path = `/${current + path}`;
241
+ });
242
+ // expand the current node till the viewParent level which is collapsed
243
+ $li.parentsUntil($el, 'li.parent-node.collapsed')
244
+ .each((index, el) => {
245
+ const $current = $(el), $i = $current.children('i.collapsed');
246
+ this.toggleExpandCollapseNode(undefined, $i, $current);
247
+ });
248
+ this.selecteditem = getClonedObject(data) || {};
249
+ this.selecteditem.path = path;
250
+ if (target) {
251
+ if (this.nodeid || this.bindnodeid) {
252
+ this.datavalue = getEvaluatedData(data, { field: this.nodeid, bindExpression: this.bindnodeid }, this.viewParent);
253
+ }
254
+ else {
255
+ this.datavalue = getClonedObject(data) || {};
256
+ }
257
+ }
258
+ else {
259
+ this.datavalue = value;
260
+ }
261
+ //[Todo-CSP]: this data will be dynamic, can not generate function upfront
262
+ if (nodeAction) {
263
+ $parseEvent(nodeAction)(this);
264
+ }
265
+ this.invokeEventCallback('select', { $event: evt, $item: data, $path: path });
266
+ $appDigest();
267
+ }
268
+ // click event is added on the host nativeElement
269
+ bindEvents() {
270
+ $(this.nativeElement).on('click', (evt) => {
271
+ const target = $(evt.target), li = target.closest('li'), $i = target.is('i') ? target : target.siblings('i.collapsed,i.expanded');
272
+ evt.stopPropagation();
273
+ if (target.is('span.title')) { // select the node only if it is nodelabel
274
+ this.selecteditem = {};
275
+ this.selectNode(evt, li);
276
+ }
277
+ if (target.is('i') || (target.is('span.title') && this.nodeclick === 'expand')) {
278
+ this.toggleExpandCollapseNode(evt, $i, li);
279
+ }
280
+ });
281
+ }
282
+ findSelectedNodeParent($li) {
283
+ return $li.find('> span.title').parents('.app-tree li');
284
+ }
285
+ selectById(value) {
286
+ this.selectNode(undefined, value);
287
+ }
288
+ deselectById(value) {
289
+ this.selecteditem = {};
290
+ this.selectById();
291
+ }
292
+ }
293
+ TreeDirective.initializeProps = registerProps();
294
+ TreeDirective.decorators = [
295
+ { type: Directive, args: [{
296
+ selector: 'div[wmTree]',
297
+ providers: [
298
+ provideAsWidgetRef(TreeDirective)
299
+ ]
300
+ },] }
301
+ ];
302
+ TreeDirective.ctorParameters = () => [
303
+ { type: Injector },
304
+ { type: undefined, decorators: [{ type: Attribute, args: ['datavalue.bind',] }] },
305
+ { type: undefined, decorators: [{ type: Attribute, args: ['nodelabel.bind',] }] },
306
+ { type: undefined, decorators: [{ type: Attribute, args: ['nodeicon.bind',] }] },
307
+ { type: undefined, decorators: [{ type: Attribute, args: ['nodechildren.bind',] }] },
308
+ { type: undefined, decorators: [{ type: Attribute, args: ['nodeid.bind',] }] }
309
+ ];
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvYmFzaWMvdHJlZS9zcmMvdHJlZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0MsTUFBTSxvQkFBb0IsR0FBRyxZQUFZLENBQUM7QUFDMUMsTUFBTSxZQUFZLEdBQUc7SUFDakIsUUFBUSxFQUFFO1FBQ04sVUFBVSxFQUFHLGdCQUFnQjtRQUM3QixXQUFXLEVBQUUsV0FBVztLQUMzQjtJQUNELG1CQUFtQixFQUFFO1FBQ2pCLFVBQVUsRUFBRywwQkFBMEI7UUFDdkMsV0FBVyxFQUFFLHVCQUF1QjtLQUN2QztJQUNELFNBQVMsRUFBRTtRQUNQLFVBQVUsRUFBRyx3QkFBd0I7UUFDckMsV0FBVyxFQUFFLHlCQUF5QjtLQUN6QztJQUNELE1BQU0sRUFBRTtRQUNKLFVBQVUsRUFBRyxlQUFlO1FBQzVCLFdBQVcsRUFBRSxnQkFBZ0I7S0FDaEM7SUFDRCxVQUFVLEVBQUU7UUFDUixVQUFVLEVBQUcsMkJBQTJCO1FBQ3hDLFdBQVcsRUFBRSx1QkFBdUI7S0FDdkM7SUFDRCxpQkFBaUIsRUFBRTtRQUNmLFVBQVUsRUFBRyxnQkFBZ0I7UUFDN0IsV0FBVyxFQUFFLGdCQUFnQjtLQUNoQztJQUNE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Z0JBQWdCOzRDQUMxQixTQUFTLFNBQUMsZUFBZTs0Q0FDekIsU0FBUyxTQUFDLG1CQUFtQjs0Q0FDN0IsU0FBUyxTQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIERpcmVjdGl2ZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgJGFwcERpZ2VzdCwgJHBhcnNlRXZlbnQsICRwYXJzZUV4cHIsIGdldENsb25lZE9iamVjdCB9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgQVBQTFlfU1RZTEVTX1RZUEUsIGdldEV2YWx1YXRlZERhdGEsIGdldE9yZGVyZWREYXRhc2V0LCBwcm92aWRlQXNXaWRnZXRSZWYsIFN0eWxhYmxlQ29tcG9uZW50LCBzdHlsZXIgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3RyZWUucHJvcHMnO1xuXG5kZWNsYXJlIGNvbnN0IF8sICQ7XG5jb25zdCBkZWZhdWx0VHJlZUljb25DbGFzcyA9ICdwbHVzLW1pbnVzJztcbmNvbnN0IElDT05fQ0xBU1NFUyA9IHtcbiAgICAnZm9sZGVyJzoge1xuICAgICAgICAnZXhwYW5kZWQnIDogJ3dpLWZvbGRlci1vcGVuJyxcbiAgICAgICAgJ2NvbGxhcHNlZCc6ICd3aS1mb2xkZXInXG4gICAgfSxcbiAgICAnY2lyY2xlLXBsdXMtbWludXMnOiB7XG4gICAgICAgICdleHBhbmRlZCcgOiAnd2ktcmVtb3ZlLWNpcmNsZS1vdXRsaW5lJyxcbiAgICAgICAgJ2NvbGxhcHNlZCc6ICd3aS1hZGQtY2lyY2xlLW91dGxpbmUnXG4gICAgfSxcbiAgICAnY2hldnJvbic6IHtcbiAgICAgICAgJ2V4cGFuZGVkJyA6ICd3aS1rZXlib2FyZC1hcnJvdy1kb3duJyxcbiAgICAgICAgJ2NvbGxhcHNlZCc6ICd3aS1rZXlib2FyZC1hcnJvdy1yaWdodCdcbiAgICB9LFxuICAgICdtZW51Jzoge1xuICAgICAgICAnZXhwYW5kZWQnIDogJ3dpLWFycm93LWRvd24nLFxuICAgICAgICAnY29sbGFwc2VkJzogJ3dpLWFycm93LXJpZ2h0J1xuICAgIH0sXG4gICAgJ3RyaWFuZ2xlJzoge1xuICAgICAgICAnZXhwYW5kZWQnIDogJ3dpLWFycm93LWRyb3AtZG93bi1jaXJjbGUnLFxuICAgICAgICAnY29sbGFwc2VkJzogJ3dpLXBsYXktY2lyY2xlLWZpbGxlZCdcbiAgICB9LFxuICAgICdleHBhbmQtY29sbGFwc2UnOiB7XG4gICAgICAgICdleHBhbmRlZCcgOiAnd2ktZXhwYW5kLWxlc3MnLFxuICAgICAgICAnY29sbGFwc2VkJzogJ3dpLWV4cGFuZC1tb3JlJ1xuICAgIH0sXG4gICAgJ3BsdXMtbWludXMnOiB7XG4gICAgICAgICdleHBhbmRlZCcgOiAnd2ktbWludXMnLFxuICAgICAgICAnY29sbGFwc2VkJzogJ3dpLXBsdXMnXG4gICAgfVxufTtcblxuY29uc3QgV0lER0VUX0lORk8gPSB7d2lkZ2V0VHlwZTogJ3dtLXRyZWUnLCBob3N0Q2xhc3M6ICdhcHAtdHJlZSd9O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Rpdlt3bVRyZWVdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFRyZWVEaXJlY3RpdmUpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUcmVlRGlyZWN0aXZlIGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwcml2YXRlIF9zZWxlY3ROb2RlOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIG5vZGVzOiBBcnJheTxhbnk+O1xuXG4gICAgcHVibGljIGRhdGF2YWx1ZTogc3RyaW5nO1xuICAgIHB1YmxpYyB0cmVlaWNvbnM6IHN0cmluZztcbiAgICBwdWJsaWMgc2VsZWN0ZWRpdGVtOiBhbnk7XG4gICAgcHVibGljIG5vZGVpZDogc3RyaW5nO1xuICAgIHB1YmxpYyBub2RlYWN0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIG5vZGVjbGljazogc3RyaW5nO1xuICAgIHB1YmxpYyBub2RlbGFiZWw6IHN0cmluZztcbiAgICBwdWJsaWMgbm9kZWljb246IHN0cmluZztcbiAgICBwdWJsaWMgbm9kZWNoaWxkcmVuOiBzdHJpbmc7XG4gICAgcHVibGljIG9yZGVyYnk6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBAQXR0cmlidXRlKCdkYXRhdmFsdWUuYmluZCcpIHByaXZhdGUgYmluZGRhdGF2YWx1ZSxcbiAgICAgICAgQEF0dHJpYnV0ZSgnbm9kZWxhYmVsLmJpbmQnKSBwcml2YXRlIGJpbmRub2RlbGFiZWwsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ25vZGVpY29uLmJpbmQnKSBwcml2YXRlIGJpbmRub2RlaWNvbixcbiAgICAgICAgQEF0dHJpYnV0ZSgnbm9kZWNoaWxkcmVuLmJpbmQnKSBwcml2YXRlIGJpbmRub2RlY2hpbGRyZW4sXG4gICAgICAgIEBBdHRyaWJ1dGUoJ25vZGVpZC5iaW5kJykgcHJpdmF0ZSBiaW5kbm9kZWlkXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0lORk8pO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLCBBUFBMWV9TVFlMRVNfVFlQRS5DT05UQUlORVIpO1xuICAgICAgICB0aGlzLmJpbmRFdmVudHMoKTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0YXNldCc6XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlcyA9IHRoaXMuZ2V0Tm9kZXMobnYpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdE5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUcmVlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdub2RlaWNvbic6XG4gICAgICAgICAgICBjYXNlICdub2RlbGFiZWwnOlxuICAgICAgICAgICAgY2FzZSAnbm9kZWNoaWxkcmVuJzpcbiAgICAgICAgICAgIGNhc2UgJ29yZGVyYnknOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVHJlZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndHJlZWljb25zJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVRyZWVJY29ucyhudiwgb3YpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF0YXZhbHVlJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEJ5SWQobnYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY29uc3RydWN0Tm9kZXMobm9kZXMsIHBhcmVudCwgbGV2ZWxzLCBkZWVwLCBfZXZhbERhdGFWYWx1ZSkge1xuXG4gICAgICAgIGNvbnN0ICR1bCA9ICQoJzx1bD48L3VsPicpO1xuICAgICAgICBjb25zdCBfaWNvbkNsc2VzID0gSUNPTl9DTEFTU0VTW3RoaXMudHJlZWljb25zIHx8IGRlZmF1bHRUcmVlSWNvbkNsYXNzXTtcbiAgICAgICAgY29uc3QgX2V4cHIgPSAodGhpcy5iaW5kZGF0YXZhbHVlIHx8IHRoaXMuZGF0YXZhbHVlKTtcblxuICAgICAgICBsZXQgX2ljb25DbHMsIF9jbHM7XG5cbiAgICAgICAgX2NscyAgICAgPSBsZXZlbHMgPiAwID8gJyBleHBhbmRlZCAnIDogJyBjb2xsYXBzZWQgJztcbiAgICAgICAgX2ljb25DbHMgPSBfY2xzICsgKGxldmVscyA+IDAgPyBfaWNvbkNsc2VzLmV4cGFuZGVkIDogX2ljb25DbHNlcy5jb2xsYXBzZWQpO1xuXG4gICAgICAgIGRlZXAgPSBkZWVwIHx8IDA7XG5cbiAgICAgICAgcGFyZW50LmFwcGVuZCgkdWwpO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICRsaSA9ICQoJzxsaT48L2xpPicpLFxuICAgICAgICAgICAgICAgICRpY29uTm9kZSA9ICQoJzxpPjwvaT4nKSxcbiAgICAgICAgICAgICAgICBub2RlTGFiZWwgPSBnZXRFdmFsdWF0ZWREYXRhKG5vZGUsIHtmaWVsZDogdGhpcy5ub2RlbGFiZWwsIGJpbmRFeHByZXNzaW9uOiB0aGlzLmJpbmRub2RlbGFiZWx9LCB0aGlzLnZpZXdQYXJlbnQpIHx8IG5vZGUubGFiZWwsXG4gICAgICAgICAgICAgICAgbm9kZUljb24gPSBnZXRFdmFsdWF0ZWREYXRhKG5vZGUsIHtmaWVsZDogdGhpcy5ub2RlaWNvbiwgYmluZEV4cHJlc3Npb246IHRoaXMuYmluZG5vZGVpY29ufSwgdGhpcy52aWV3UGFyZW50KSB8fCBub2RlLmljb24sXG4gICAgICAgICAgICAgICAgbm9kZUNoaWxkcmVuID0gZ2V0RXZhbHVhdGVkRGF0YShub2RlLCB7ZmllbGQ6IHRoaXMubm9kZWNoaWxkcmVuLCBiaW5kRXhwcmVzc2lvbjogdGhpcy5iaW5kbm9kZWNoaWxkcmVufSwgdGhpcy52aWV3UGFyZW50KSB8fCBub2RlLmNoaWxkcmVuO1xuICAgICAgICAgICAgbGV0IG5vZGVJZFZhbHVlID0gZ2V0RXZhbHVhdGVkRGF0YShub2RlLCB7ZmllbGQ6IHRoaXMubm9kZWlkLCBiaW5kRXhwcmVzc2lvbjogdGhpcy5iaW5kbm9kZWlkfSwgdGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgICAgIGlmIChub2RlSWRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbm9kZUlkVmFsdWUgPSBub2RlLmNoaWxkcmVuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaXNOb2RlTWF0Y2hlZCA9IGZhbHNlLFxuICAgICAgICAgICAgICAgIGV4cGFuZENvbGxhcHNlSWNvbjtcblxuICAgICAgICAgICAgJGxpLmRhdGEoJ25vZGVkYXRhJywgbm9kZSlcbiAgICAgICAgICAgICAgICAuYXBwZW5kKCRpY29uTm9kZSlcbiAgICAgICAgICAgICAgICAuYXBwZW5kKGA8c3BhbiBjbGFzcz1cInRpdGxlXCI+JHtub2RlTGFiZWx9PC9zcGFuPmApXG4gICAgICAgICAgICAgICAgLmFwcGVuZFRvKCR1bCk7XG5cblxuICAgICAgICAgICAgLy8gaWYgZGF0YXZhbHVlKGllLCBleHByKSBpcyBwcm92aWRlZCBzZWxlY3QgdGhlIHRyZWUgbm9kZSBhY2NvcmRpbmdseVxuICAgICAgICAgICAgLy8gaWYgZGF0YXZhbHVlID09PSAnRmlyc3ROb2RlJyAtLSBzZWxlY3QgdGhlIEZpcnN0Tm9kZSBhdCBsZXZlbCAwXG4gICAgICAgICAgICAvLyBpZiBkYXRhdmFsdWUgPT09ICdMYXN0Tm9kZScgLS0gc2VsZWN0IHRoZSBMYXN0Tm9kZSBhdCBsZXZlbCAwXG4gICAgICAgICAgICAvLyBpZiBkYXRhdmFsdWUgaXMgYSBiaW5kIGV4cHJlc3Npb24gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gZm9yIGVhY2ggbm9kZSBvZiB0aGUgdHJlZSB0aWxsIHRoZSBjb25kaXRpb24gaXMgc2F0aXNmaWVkLlxuXG4gICAgICAgICAgICAvLyBpZiBub2RlIGlkZW50aWZpZXIgaXMgcHJlc2VudCB0aGVuIHZlcmlmeSB0aGUgZGF0YXZhbHVlIGlzIGJvdW5kIGV4cHIgb3Igc3RhdGljIHZhbHVlIGFuZCBjb21wYXJlIHdpdGggdGhlIG5vZGUgbW9kZWxcbiAgICAgICAgICAgIGlmICh0aGlzLmJpbmRub2RlaWQgfHwgdGhpcy5ub2RlaWQpIHtcbiAgICAgICAgICAgICAgICBpc05vZGVNYXRjaGVkID0gdGhpcy5iaW5kZGF0YXZhbHVlID8gbm9kZUlkVmFsdWUgPT09IF9ldmFsRGF0YVZhbHVlIDogbm9kZUlkVmFsdWUgPT09IF9leHByO1xuICAgICAgICAgICAgICAgIGlmIChub2RlSWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICRsaS5hdHRyKCdpZCcsIG5vZGVJZFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYmluZGRhdGF2YWx1ZSkgeyAvLyBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBvbmx5IGlmIGl0IGlzIGJvdW5kICh1c2VFeHByZXNzaW9uKVxuICAgICAgICAgICAgICAgIGlzTm9kZU1hdGNoZWQgPSAhISRwYXJzZUV4cHIoX2V4cHIpKHRoaXMsIG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUGVyZm9ybSBMYXN0Tm9kZSBjaGVjayBvbmx5IGF0IGxldmVsIDAuKGllLCBkZWVwID0gMCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdE5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoKF9leHByID09PSAnRmlyc3ROb2RlJyAmJiBpZHggPT09IDApXG4gICAgICAgICAgICAgICAgICAgIHx8ICghZGVlcCAmJiBfZXhwciA9PT0gJ0xhc3ROb2RlJyAmJiBpZHggPT09IG5vZGVzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgICAgIHx8IGlzTm9kZU1hdGNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2F2ZSBhIHJlZmVyZW5jZSBvZiB0aGUgbm9kZSB0byBiZSBzZWxlY3RlZCBpbiBgX3NlbGVjdE5vZGVgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdE5vZGUgPSAkbGk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXZhbHVlICAgPSBub2RlSWRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChub2RlSWNvbikge1xuICAgICAgICAgICAgICAgICRpY29uTm9kZS5hZGRDbGFzcyhub2RlSWNvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChub2RlQ2hpbGRyZW4gJiYgbm9kZUNoaWxkcmVuLmxlbmd0aCkgeyAvLyBwYXJlbnQgbm9kZVxuICAgICAgICAgICAgICAgICRsaS5hZGRDbGFzcyhgcGFyZW50LW5vZGUgJHtfY2xzfWApO1xuICAgICAgICAgICAgICAgIGV4cGFuZENvbGxhcHNlSWNvbiA9ICQoYDxpIGNsYXNzPVwid2kgJHtfaWNvbkNsc31cIj48L2k+YCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGVJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICRpY29uTm9kZS5hZGRDbGFzcyhub2RlSWNvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRsaS5wcmVwZW5kKGV4cGFuZENvbGxhcHNlSWNvbik7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3ROb2Rlcyhub2RlQ2hpbGRyZW4sICRsaSwgbGV2ZWxzIC0gMSwgZGVlcCArIDEsIF9ldmFsRGF0YVZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFub2RlSWNvbikge1xuICAgICAgICAgICAgICAgICAgICAkaWNvbk5vZGUuYWRkQ2xhc3MoJ2xlYWYtbm9kZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkbGkuYWRkQ2xhc3MoJ2xlYWYtbm9kZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5vZGVzRnJvbVN0cmluZyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUuc3BsaXQoJywnKS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ2xhYmVsJzogaXRlbSAmJiBpdGVtLnRyaW0oKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROb2RlcyhuZXdWYWwpIHtcbiAgICAgICAgbGV0IG5vZGVzO1xuICAgICAgICBpZiAoXy5pc1N0cmluZyhuZXdWYWwpICYmICFfLmlzRW1wdHkobmV3VmFsKSkge1xuICAgICAgICAgICAgbmV3VmFsID0gbmV3VmFsLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgICAgICBub2RlcyA9IHRoaXMuZ2V0Tm9kZXNGcm9tU3RyaW5nKG5ld1ZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoXy5pc0FycmF5KG5ld1ZhbCkpIHtcbiAgICAgICAgICAgIG5ld1ZhbCA9IGdldE9yZGVyZWREYXRhc2V0KG5ld1ZhbCwgdGhpcy5vcmRlcmJ5KTtcbiAgICAgICAgICAgIG5vZGVzID0gbmV3VmFsO1xuICAgICAgICB9IGVsc2UgaWYgKF8uaXNPYmplY3QobmV3VmFsKSkge1xuICAgICAgICAgICAgbm9kZXMgPSBbbmV3VmFsXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VUcmVlSWNvbnMobnYsIG92KSB7XG4gICAgICAgIGNvbnN0ICRlbCA9ICQodGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgbnYgPSBudiB8fCBkZWZhdWx0VHJlZUljb25DbGFzcztcbiAgICAgICAgb3YgPSBvdiB8fCBkZWZhdWx0VHJlZUljb25DbGFzcztcbiAgICAgICAgJGVsLmZpbmQoJ2kuZXhwYW5kZWQnKS5yZW1vdmVDbGFzcyhJQ09OX0NMQVNTRVNbb3ZdLmV4cGFuZGVkKS5hZGRDbGFzcyhJQ09OX0NMQVNTRVNbbnZdLmV4cGFuZGVkKTtcbiAgICAgICAgJGVsLmZpbmQoJ2kuY29sbGFwc2VkJykucmVtb3ZlQ2xhc3MoSUNPTl9DTEFTU0VTW292XS5jb2xsYXBzZWQpLmFkZENsYXNzKElDT05fQ0xBU1NFU1tudl0uY29sbGFwc2VkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZUV4cGFuZENvbGxhcHNlTm9kZSgkZXZlbnQsICRpLCAkbGkpIHtcbiAgICAgICAgY29uc3QgdHJlZUljb25zID0gSUNPTl9DTEFTU0VTW3RoaXMudHJlZWljb25zIHx8IGRlZmF1bHRUcmVlSWNvbkNsYXNzXTtcbiAgICAgICAgY29uc3QgICRsaVBhdGggPSAgdGhpcy5maW5kU2VsZWN0ZWROb2RlUGFyZW50KCRsaSk7XG4gICAgICAgIGxldCBwYXRoID0gJyc7XG5cbiAgICAgICAgLy8gY29uc3RydWN0IHRoZSBwYXRoIG9mIHRoZSBub2RlXG4gICAgICAgICRsaVBhdGhcbiAgICAgICAgICAgIC5lYWNoKChpLCBlbCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSAkKGVsKS5jaGlsZHJlbignLnRpdGxlJykudGV4dCgpO1xuICAgICAgICAgICAgICAgIHBhdGggPSBgLyR7Y3VycmVudCArIHBhdGh9YDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICBjb25zdCAgZXZlbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgJyRldmVudCcgIDogJGV2ZW50LFxuICAgICAgICAgICAgICAgIFwiJGl0ZW1cIiAgIDogICRsaS5kYXRhKCdub2RlZGF0YScpLFxuICAgICAgICAgICAgICAgIFwiJHBhdGhcIiA6IHBhdGhcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgaWYgKCRpLmhhc0NsYXNzKCdjb2xsYXBzZWQnKSkge1xuICAgICAgICAgICAgJGkucmVtb3ZlQ2xhc3MoYGNvbGxhcHNlZCAke3RyZWVJY29ucy5jb2xsYXBzZWR9YCkuYWRkQ2xhc3MoYGV4cGFuZGVkICR7dHJlZUljb25zLmV4cGFuZGVkfWApO1xuICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKCdjb2xsYXBzZWQnKS5hZGRDbGFzcygnZXhwYW5kZWQnKTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZXhwYW5kJywgZXZlbnRQYXJhbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKCRpLmhhc0NsYXNzKCdleHBhbmRlZCcpKSB7XG4gICAgICAgICAgICAkaS5yZW1vdmVDbGFzcyhgZXhwYW5kZWQgJHt0cmVlSWNvbnMuZXhwYW5kZWR9YCkuYWRkQ2xhc3MoYGNvbGxhcHNlZCAke3RyZWVJY29ucy5jb2xsYXBzZWR9YCk7XG4gICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoJ2V4cGFuZGVkJykuYWRkQ2xhc3MoJ2NvbGxhcHNlZCcpO1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjb2xsYXBzZScsIGV2ZW50UGFyYW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyVHJlZShmb3JjZVJlbmRlcj8pIHtcbiAgICAgICAgbGV0IGRvY0ZyYWcsXG4gICAgICAgICAgICAkbGksXG4gICAgICAgICAgICAkbGlQYXRoLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhdGggPSAnJztcbiAgICAgICAgY29uc3QgbGV2ZWxzID0gK3RoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xldmVscycpIHx8IDAsXG4gICAgICAgICAgICAkZWwgPSAkKHRoaXMubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgJGVsLmVtcHR5KCk7XG5cbiAgICAgICAgaWYgKGZvcmNlUmVuZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3ROb2RlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZXMgJiYgdGhpcy5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRvY0ZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdE5vZGVzKHRoaXMubm9kZXMsICQoZG9jRnJhZyksIGxldmVscywgMCwgdGhpcy5kYXRhdmFsdWUpO1xuICAgICAgICAgICAgJGVsLmFwcGVuZChkb2NGcmFnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3ROb2RlKSB7XG4gICAgICAgICAgICAkbGkgPSB0aGlzLl9zZWxlY3ROb2RlO1xuICAgICAgICAgICAgJGxpLmFkZENsYXNzKCdzZWxlY3RlZCcpO1xuICAgICAgICAgICAgZGF0YSAgICA9ICRsaS5kYXRhKCdub2RlZGF0YScpO1xuICAgICAgICAgICAgJGxpUGF0aCA9IHRoaXMuZmluZFNlbGVjdGVkTm9kZVBhcmVudCgkbGkpO1xuXG4gICAgICAgICAgICBpZiAoISRsaVBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgJGxpUGF0aCA9ICRsaTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJGxpUGF0aFxuICAgICAgICAgICAgICAgIC5lYWNoKChpLCBlbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkY3VycmVudCA9ICQoZWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgJGkgICAgICAgPSAkY3VycmVudC5jaGlsZHJlbignaS5jb2xsYXBzZWQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICR0aXRsZSAgID0gJGN1cnJlbnQuY2hpbGRyZW4oJy50aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZENvbGxhcHNlTm9kZSh1bmRlZmluZWQsICRpLCAkY3VycmVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IGAvJHskdGl0bGUudGV4dCgpICsgcGF0aH1gO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkaXRlbSA9IGdldENsb25lZE9iamVjdChkYXRhKSB8fCB7fTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRpdGVtLnBhdGggPSBwYXRoO1xuXG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdCcsIHskZXZlbnQ6IHVuZGVmaW5lZCwgJGl0ZW06IGRhdGEsICRwYXRoOiBwYXRofSk7XG4gICAgICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdE5vZGUoZXZ0LCB2YWx1ZSkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldnQgJiYgJChldnQudGFyZ2V0KSxcbiAgICAgICAgICAgICRlbCA9ICQodGhpcy5uYXRpdmVFbGVtZW50KSxcbiAgICAgICAgICAgICRsaSA9IF8uaXNPYmplY3QodmFsdWUpID8gdmFsdWUgOiAkZWwuZmluZChgbGlbaWQ9XCIke3ZhbHVlfVwiXWApLmZpcnN0KCk7XG4gICAgICAgIGxldCBkYXRhLFxuICAgICAgICAgICAgcGF0aCA9ICcnLFxuICAgICAgICAgICAgJGxpUGF0aCxcbiAgICAgICAgICAgIG5vZGVBY3Rpb247XG4gICAgICAgICRlbC5maW5kKCcuc2VsZWN0ZWQnKS5yZW1vdmVDbGFzcygnc2VsZWN0ZWQnKTtcbiAgICAgICAgaWYgKCEkbGkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgJGxpLmFkZENsYXNzKCdzZWxlY3RlZCcpO1xuICAgICAgICBkYXRhID0gJGxpLmRhdGEoJ25vZGVkYXRhJyk7XG4gICAgICAgIG5vZGVBY3Rpb24gPSBkYXRhW3RoaXMubm9kZWFjdGlvbiB8fCAnYWN0aW9uJ107XG5cbiAgICAgICAgLy8gaWYgdGhlIHNlbGVjdE5vZGUgaXMgaW5pdGlhdGVkIGJ5IGNsaWNrIGV2ZW50IHRoZW4gdXNlIHRoZSBuYXRpdmVFbGVtZW50IHRhcmdldCBmcm9tIGV2ZW50XG4gICAgICAgICRsaVBhdGggPSB0YXJnZXQgPyB0YXJnZXQucGFyZW50cygnLmFwcC10cmVlIGxpJykgOiB0aGlzLmZpbmRTZWxlY3RlZE5vZGVQYXJlbnQoJGxpKTtcblxuICAgICAgICAvLyBjb25zdHJ1Y3QgdGhlIHBhdGggb2YgdGhlIG5vZGVcbiAgICAgICAgJGxpUGF0aFxuICAgICAgICAgICAgLmVhY2goKGksIGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudCA9ICQoZWwpLmNoaWxkcmVuKCcudGl0bGUnKS50ZXh0KCk7XG4gICAgICAgICAgICAgICAgcGF0aCA9IGAvJHtjdXJyZW50ICsgcGF0aH1gO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gZXhwYW5kIHRoZSBjdXJyZW50IG5vZGUgdGlsbCB0aGUgdmlld1BhcmVudCBsZXZlbCB3aGljaCBpcyBjb2xsYXBzZWRcbiAgICAgICAgJGxpLnBhcmVudHNVbnRpbCgkZWwsICdsaS5wYXJlbnQtbm9kZS5jb2xsYXBzZWQnKVxuICAgICAgICAgICAgLmVhY2goKGluZGV4LCBlbCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0ICRjdXJyZW50ID0gJChlbCksXG4gICAgICAgICAgICAgICAgICAgICRpID0gJGN1cnJlbnQuY2hpbGRyZW4oJ2kuY29sbGFwc2VkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRDb2xsYXBzZU5vZGUodW5kZWZpbmVkLCAkaSwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZGl0ZW0gICAgICA9IGdldENsb25lZE9iamVjdChkYXRhKSB8fCB7fTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZGl0ZW0ucGF0aCA9IHBhdGg7XG5cbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubm9kZWlkIHx8IHRoaXMuYmluZG5vZGVpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YXZhbHVlID0gZ2V0RXZhbHVhdGVkRGF0YShkYXRhLCB7ZmllbGQ6IHRoaXMubm9kZWlkLCBiaW5kRXhwcmVzc2lvbjogdGhpcy5iaW5kbm9kZWlkfSwgdGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSBnZXRDbG9uZWRPYmplY3QoZGF0YSkgfHwge307XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9bVG9kby1DU1BdOiB0aGlzIGRhdGEgd2lsbCBiZSBkeW5hbWljLCBjYW4gbm90IGdlbmVyYXRlIGZ1bmN0aW9uIHVwZnJvbnRcbiAgICAgICAgaWYgKG5vZGVBY3Rpb24pIHtcbiAgICAgICAgICAgICRwYXJzZUV2ZW50KG5vZGVBY3Rpb24pKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdzZWxlY3QnLCB7JGV2ZW50OiBldnQsICRpdGVtOiBkYXRhLCAkcGF0aDogcGF0aH0pO1xuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuICAgIC8vIGNsaWNrIGV2ZW50IGlzIGFkZGVkIG9uIHRoZSBob3N0IG5hdGl2ZUVsZW1lbnRcbiAgICBwcml2YXRlIGJpbmRFdmVudHMoKSB7XG4gICAgICAgICQodGhpcy5uYXRpdmVFbGVtZW50KS5vbignY2xpY2snLCAoZXZ0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAkKGV2dC50YXJnZXQpLFxuICAgICAgICAgICAgICAgIGxpICAgICA9IHRhcmdldC5jbG9zZXN0KCdsaScpLFxuICAgICAgICAgICAgICAgICRpICAgICA9IHRhcmdldC5pcygnaScpID8gdGFyZ2V0IDogdGFyZ2V0LnNpYmxpbmdzKCdpLmNvbGxhcHNlZCxpLmV4cGFuZGVkJyk7XG5cbiAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgaWYgKHRhcmdldC5pcygnc3Bhbi50aXRsZScpKSB7IC8vIHNlbGVjdCB0aGUgbm9kZSBvbmx5IGlmIGl0IGlzIG5vZGVsYWJlbFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRpdGVtID0ge307XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3ROb2RlKGV2dCwgbGkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGFyZ2V0LmlzKCdpJykgfHwgKHRhcmdldC5pcygnc3Bhbi50aXRsZScpICYmIHRoaXMubm9kZWNsaWNrID09PSAnZXhwYW5kJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZENvbGxhcHNlTm9kZShldnQsICRpLCBsaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZFNlbGVjdGVkTm9kZVBhcmVudCgkbGkpIHtcbiAgICAgICAgcmV0dXJuICRsaS5maW5kKCc+IHNwYW4udGl0bGUnKS5wYXJlbnRzKCcuYXBwLXRyZWUgbGknKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdEJ5SWQodmFsdWU/KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Tm9kZSh1bmRlZmluZWQsIHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBkZXNlbGVjdEJ5SWQodmFsdWU/KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRpdGVtID0ge307XG4gICAgICAgIHRoaXMuc2VsZWN0QnlJZCgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { WmComponentsModule } from '@wm/components/base';
4
- import { TreeComponent } from './tree.component';
4
+ import { TreeDirective } from './tree.directive';
5
5
  const components = [
6
- TreeComponent
6
+ TreeDirective
7
7
  ];
8
8
  export class TreeModule {
9
9
  }
@@ -18,4 +18,4 @@ TreeModule.decorators = [
18
18
  entryComponents: []
19
19
  },] }
20
20
  ];
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvYmFzaWMvdHJlZS9zcmMvdHJlZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE1BQU0sVUFBVSxHQUFHO0lBQ2YsYUFBYTtDQUNoQixDQUFDO0FBV0YsTUFBTSxPQUFPLFVBQVU7OztZQVR0QixRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osa0JBQWtCO2lCQUNyQjtnQkFDRCxZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztnQkFDN0IsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7Z0JBQ3hCLGVBQWUsRUFBRSxFQUFFO2FBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IFdtQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5pbXBvcnQgeyBUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLmNvbXBvbmVudCc7XG5cbmNvbnN0IGNvbXBvbmVudHMgPSBbXG4gICAgVHJlZUNvbXBvbmVudFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgV21Db21wb25lbnRzTW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5jb21wb25lbnRzXSxcbiAgICBleHBvcnRzOiBbLi4uY29tcG9uZW50c10sXG4gICAgZW50cnlDb21wb25lbnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBUcmVlTW9kdWxlIHtcbn1cbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvYmFzaWMvdHJlZS9zcmMvdHJlZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE1BQU0sVUFBVSxHQUFHO0lBQ2YsYUFBYTtDQUNoQixDQUFDO0FBV0YsTUFBTSxPQUFPLFVBQVU7OztZQVR0QixRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osa0JBQWtCO2lCQUNyQjtnQkFDRCxZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztnQkFDN0IsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7Z0JBQ3hCLGVBQWUsRUFBRSxFQUFFO2FBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IFdtQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5pbXBvcnQgeyBUcmVlRGlyZWN0aXZlIH0gZnJvbSAnLi90cmVlLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IGNvbXBvbmVudHMgPSBbXG4gICAgVHJlZURpcmVjdGl2ZVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgV21Db21wb25lbnRzTW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5jb21wb25lbnRzXSxcbiAgICBleHBvcnRzOiBbLi4uY29tcG9uZW50c10sXG4gICAgZW50cnlDb21wb25lbnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBUcmVlTW9kdWxlIHtcbn1cbiJdfQ==