@progressio_resources/gravity-design-system 2.1.9 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/gravity-table/gravity-table.component.mjs +50 -60
- package/esm2022/lib/components/gravity-tree-view/gravity-tree-view.component.mjs +69 -0
- package/esm2022/lib/components/gravity-tree-view/models/node-item.mjs +2 -0
- package/esm2022/lib/components/gravity-tree-view/models/node-selected-state.mjs +7 -0
- package/esm2022/lib/components/gravity-tree-view/models/node-state.mjs +2 -0
- package/esm2022/lib/components/gravity-tree-view/models/tree-callbacks.mjs +2 -0
- package/esm2022/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.mjs +26 -0
- package/esm2022/lib/components/gravity-tree-view/node/node-name/node-name.component.mjs +13 -0
- package/esm2022/lib/components/gravity-tree-view/node/node-toggle/node-toggle.component.mjs +15 -0
- package/esm2022/lib/components/gravity-tree-view/node/node.component.mjs +17 -0
- package/esm2022/lib/components/gravity-tree-view/service/tree-service.mjs +217 -0
- package/esm2022/lib/gravity-design-system.module.mjs +22 -5
- package/esm2022/lib/vendor/gravity-tooltip/gravity-tooltip.directive.mjs +1 -3
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/progressio_resources-gravity-design-system.mjs +403 -66
- package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
- package/lib/components/gravity-table/gravity-table.component.d.ts +3 -4
- package/lib/components/gravity-tree-view/gravity-tree-view.component.d.ts +21 -0
- package/lib/components/gravity-tree-view/models/node-item.d.ts +9 -0
- package/lib/components/gravity-tree-view/models/node-selected-state.d.ts +5 -0
- package/lib/components/gravity-tree-view/models/node-state.d.ts +13 -0
- package/lib/components/gravity-tree-view/models/tree-callbacks.d.ts +9 -0
- package/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.d.ts +11 -0
- package/lib/components/gravity-tree-view/node/node-name/node-name.component.d.ts +7 -0
- package/lib/components/gravity-tree-view/node/node-toggle/node-toggle.component.d.ts +7 -0
- package/lib/components/gravity-tree-view/node/node.component.d.ts +7 -0
- package/lib/components/gravity-tree-view/service/tree-service.d.ts +42 -0
- package/lib/gravity-design-system.module.d.ts +14 -9
- package/lib/vendor/gravity-tooltip/gravity-tooltip.directive.d.ts +0 -1
- package/package.json +2 -3
- package/public-api.d.ts +1 -0
- package/src/lib/styles/components/_tables.scss +9 -9
- package/src/lib/styles/overwrite/pretty-checkbox/_core.scss +0 -1
- package/src/lib/styles/overwrite/pretty-checkbox/elements/switch/_general.scss +2 -2
- package/src/lib/styles/overwrite/pretty-checkbox/elements/switch/_mixin.scss +1 -1
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.directive.ts +0 -3
|
@@ -6,7 +6,6 @@ export class GravityTableComponent {
|
|
|
6
6
|
this.renderer = renderer;
|
|
7
7
|
this.tableDensity = "standard";
|
|
8
8
|
this.tableSizeInput = "auto";
|
|
9
|
-
this.firstTime = true;
|
|
10
9
|
this.tableElement = null;
|
|
11
10
|
this.tableSize = 'xl';
|
|
12
11
|
let milliseconds = new Date().getTime();
|
|
@@ -16,11 +15,7 @@ export class GravityTableComponent {
|
|
|
16
15
|
ngAfterViewInit() {
|
|
17
16
|
this.tableElement = this.tableContainer?.nativeElement?.childNodes[0];
|
|
18
17
|
this.renderer.setAttribute(this.tableElement, 'table-id', this.tableId);
|
|
19
|
-
|
|
20
|
-
this.initializeTable(tableHeaders);
|
|
21
|
-
this.adjustTableDensity(this.tableDensity);
|
|
22
|
-
this.adjustButtonsSize();
|
|
23
|
-
this.onResize();
|
|
18
|
+
this.initializeComponent();
|
|
24
19
|
}
|
|
25
20
|
ngOnChanges(changes) {
|
|
26
21
|
if (this.tableElement) {
|
|
@@ -33,15 +28,6 @@ export class GravityTableComponent {
|
|
|
33
28
|
}
|
|
34
29
|
}
|
|
35
30
|
}
|
|
36
|
-
ngAfterContentChecked() {
|
|
37
|
-
if (this.tableElement) {
|
|
38
|
-
let tableHeaders = this.getTableHeaders();
|
|
39
|
-
this.initializeTable(tableHeaders);
|
|
40
|
-
this.adjustTableDensity(this.tableDensity);
|
|
41
|
-
this.adjustButtonsSize();
|
|
42
|
-
this.onResize();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
31
|
getTableHeaders() {
|
|
46
32
|
let tableHeaderItems = document.querySelectorAll('thead tr th');
|
|
47
33
|
let tableHeaders = [];
|
|
@@ -50,51 +36,55 @@ export class GravityTableComponent {
|
|
|
50
36
|
});
|
|
51
37
|
return tableHeaders;
|
|
52
38
|
}
|
|
39
|
+
initializeComponent() {
|
|
40
|
+
let tableHeaders = this.getTableHeaders();
|
|
41
|
+
this.initializeTable(tableHeaders);
|
|
42
|
+
this.adjustTableDensity(this.tableDensity);
|
|
43
|
+
this.adjustButtonsSize();
|
|
44
|
+
this.onResize();
|
|
45
|
+
}
|
|
53
46
|
initializeTable(tableHeaders) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
let
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
menuToggle.
|
|
73
|
-
menuToggle.addEventListener("click", () => {
|
|
74
|
-
if (menuToggle.classList.contains('open')) {
|
|
75
|
-
this.renderer.removeClass(menuToggle, 'open');
|
|
76
|
-
this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
this.renderer.addClass(menuToggle, 'open');
|
|
80
|
-
this.renderer.addClass(menuToggle.parentElement.lastElementChild, 'open');
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
mobileMenuTrigger.appendChild(menuToggle);
|
|
84
|
-
let panel = document.createElement('div');
|
|
85
|
-
this.renderer.addClass(panel, 'panel');
|
|
86
|
-
let closeButtonFromNodeList = closeButtons.item(index);
|
|
87
|
-
let closeButtonRemoved = closeButtonFromNodeList.parentNode.removeChild(closeButtonFromNodeList);
|
|
88
|
-
this.renderer.setAttribute(closeButtonRemoved, 'cloned-button', 'true');
|
|
89
|
-
closeButtonRemoved.addEventListener("click", () => {
|
|
47
|
+
//Set corresponding tableHeader as an attribute of each td
|
|
48
|
+
let tableBody = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr td');
|
|
49
|
+
tableBody.forEach((tableBodyRow, index) => {
|
|
50
|
+
this.renderer.setAttribute(tableBodyRow, 'header-name', tableHeaders[index % tableHeaders.length]);
|
|
51
|
+
});
|
|
52
|
+
//Creates a copy of mobile-menu-trigger element for each tr
|
|
53
|
+
let tableBodyRows = document.querySelectorAll('table[table-id="' + this.tableId + '"] tbody tr');
|
|
54
|
+
let closeButtons = document.querySelectorAll('gravity-button[id-reference="close-button"]');
|
|
55
|
+
tableBodyRows.forEach((tr, index) => {
|
|
56
|
+
let mobileMenuTrigger = document.createElement('div');
|
|
57
|
+
this.renderer.addClass(mobileMenuTrigger, 'mobile-menu-trigger');
|
|
58
|
+
this.renderer.setAttribute(mobileMenuTrigger, 'cloned-node', 'true');
|
|
59
|
+
let menuToggle = document.createElement('div');
|
|
60
|
+
this.renderer.addClass(menuToggle, 'menu-toggle');
|
|
61
|
+
menuToggle.appendChild(document.createElement('span'));
|
|
62
|
+
menuToggle.appendChild(document.createElement('span'));
|
|
63
|
+
menuToggle.appendChild(document.createElement('span'));
|
|
64
|
+
menuToggle.addEventListener("click", () => {
|
|
65
|
+
if (menuToggle.classList.contains('open')) {
|
|
90
66
|
this.renderer.removeClass(menuToggle, 'open');
|
|
91
67
|
this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
this.renderer.addClass(menuToggle, 'open');
|
|
71
|
+
this.renderer.addClass(menuToggle.parentElement.lastElementChild, 'open');
|
|
72
|
+
}
|
|
96
73
|
});
|
|
97
|
-
|
|
74
|
+
mobileMenuTrigger.appendChild(menuToggle);
|
|
75
|
+
let panel = document.createElement('div');
|
|
76
|
+
this.renderer.addClass(panel, 'panel');
|
|
77
|
+
let closeButtonFromNodeList = closeButtons.item(index);
|
|
78
|
+
let closeButtonRemoved = closeButtonFromNodeList.parentNode.removeChild(closeButtonFromNodeList);
|
|
79
|
+
this.renderer.setAttribute(closeButtonRemoved, 'cloned-button', 'true');
|
|
80
|
+
closeButtonRemoved.addEventListener("click", () => {
|
|
81
|
+
this.renderer.removeClass(menuToggle, 'open');
|
|
82
|
+
this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');
|
|
83
|
+
});
|
|
84
|
+
panel.append(closeButtonRemoved);
|
|
85
|
+
mobileMenuTrigger.appendChild(panel);
|
|
86
|
+
tr.insertBefore(mobileMenuTrigger, tr.firstChild);
|
|
87
|
+
});
|
|
98
88
|
}
|
|
99
89
|
adjustTableDensity(densityValue) {
|
|
100
90
|
this.renderer.removeClass(this.tableElement, 'standard-table');
|
|
@@ -179,7 +169,7 @@ export class GravityTableComponent {
|
|
|
179
169
|
}
|
|
180
170
|
if (this.tableSize == 'lg' || this.tableSize == 'xl') {
|
|
181
171
|
let nodeListIndex = nodesList.length - 1;
|
|
182
|
-
while (nodesList.length
|
|
172
|
+
while (nodesList.length > 1) {
|
|
183
173
|
let item = nodesList.item(nodeListIndex);
|
|
184
174
|
let closeButtonNode = item.parentNode.querySelectorAll('gravity-button[id-reference="close-button"]').item(0);
|
|
185
175
|
if (item != closeButtonNode) {
|
|
@@ -192,11 +182,11 @@ export class GravityTableComponent {
|
|
|
192
182
|
}
|
|
193
183
|
}
|
|
194
184
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
195
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTableComponent, selector: "gravity-table", inputs: { tableDensity: "tableDensity", tableSizeInput: "tableSizeInput" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n
|
|
185
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTableComponent, selector: "gravity-table", inputs: { tableDensity: "tableDensity", tableSizeInput: "tableSizeInput" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [":host{display:block;margin-block:1rem}.table-container{overflow-x:auto}\n"], dependencies: [{ kind: "component", type: i1.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
|
|
196
186
|
}
|
|
197
187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, decorators: [{
|
|
198
188
|
type: Component,
|
|
199
|
-
args: [{ selector: 'gravity-table', template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n
|
|
189
|
+
args: [{ selector: 'gravity-table', template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [":host{display:block;margin-block:1rem}.table-container{overflow-x:auto}\n"] }]
|
|
200
190
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { tableDensity: [{
|
|
201
191
|
type: Input
|
|
202
192
|
}], tableSizeInput: [{
|
|
@@ -208,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
208
198
|
type: HostListener,
|
|
209
199
|
args: ['window:resize', ['$event']]
|
|
210
200
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdGFibGUvZ3Jhdml0eS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdGFibGUvZ3Jhdml0eS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBSUwsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkIsTUFBTSxPQUFPLHFCQUFxQjtJQVVoQyxZQUE2QixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBVGhDLGlCQUFZLEdBQThCLFVBQVUsQ0FBQztRQUNyRCxtQkFBYyxHQUF1QyxNQUFNLENBQUM7UUFHcEUsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixpQkFBWSxHQUFlLElBQUksQ0FBQztRQUVqQyxjQUFTLEdBQThCLElBQUksQ0FBQztRQUdqRCxJQUFJLFlBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hELElBQUksWUFBWSxHQUFXLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQyxZQUFZLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxD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U0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUNwRCxJQUFJLGFBQWEsR0FBVyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUVqRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUM1QixJQUFJLElBQUksR0FBUyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLGVBQWUsR0FBUyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLDZDQUE2QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVwSCxJQUFJLElBQUksSUFBSSxlQUFlLEVBQUU7b0JBQzNCLElBQUksV0FBVyxHQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMxRCxlQUFlLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3ZFO2dCQUVELGFBQWEsRUFBRSxDQUFDO2FBQ2pCO1lBRUQsT0FBTyxlQUFlLENBQUM7U0FDeEI7SUFDSCxDQUFDOytHQXZPVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixzVUNsQmxDLHd2REFnQkE7OzRGREVhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlO2dHQUtULFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDdUMsY0FBYztzQkFBMUQsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBNkluQixRQUFRO3NCQURmLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdncmF2aXR5LXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYXZpdHktdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmF2aXR5LXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR3Jhdml0eVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgQElucHV0KCkgcHVibGljIHRhYmxlRGVuc2l0eTogJ3N0YW5kYXJkJyB8ICdjb21wcmVzc2VkJyA9IFwic3RhbmRhcmRcIjtcbiAgQElucHV0KCkgcHVibGljIHRhYmxlU2l6ZUlucHV0OiAneGwnIHwgJ2xnJyB8ICdtZCcgfCAnc20nIHwgJ2F1dG8nID0gXCJhdXRvXCI7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlQ29udGFpbmVyJykgcHVibGljIHJlYWRvbmx5IHRhYmxlQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgZmlyc3RUaW1lOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSB0YWJsZUVsZW1lbnQ6IEVsZW1lbnRSZWYgPSBudWxsO1xuICBwdWJsaWMgdGFibGVJZDogc3RyaW5nO1xuICBwdWJsaWMgdGFibGVTaXplOiAneGwnIHwgJ2xnJyB8ICdtZCcgfCAnc20nID0gJ3hsJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBsZXQgbWlsbGlzZWNvbmRzOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBsZXQgcmFuZG9tTnVtYmVyOiBudW1iZXIgPSBNYXRoLnJhbmRvbSgpICogMTA7XG5cbiAgICB0aGlzLnRhYmxlSWQgPSAnJyArIChtaWxsaXNlY29uZHMgKiByYW5kb21OdW1iZXIgLyAyKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlRWxlbWVudCA9IHRoaXMudGFibGVDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmNoaWxkTm9kZXNbMF07XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy50YWJsZUVsZW1lbnQsICd0YWJsZS1pZCcsIHRoaXMudGFibGVJZCk7XG5cbiAgICBsZXQgdGFibGVIZWFkZXJzOiBzdHJpbmdbXSA9IHRoaXMuZ2V0VGFibGVIZWFkZXJzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplVGFibGUodGFibGVIZWFkZXJzKTtcbiAgICB0aGlzLmFkanVzdFRhYmxlRGVuc2l0eSh0aGlzLnRhYmxlRGVuc2l0eSk7XG4gICAgdGhpcy5hZGp1c3RCdXR0b25zU2l6ZSgpO1xuICAgIHRoaXMub25SZXNpemUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy50YWJsZUVsZW1lbnQpIHtcbiAgICAgIGlmIChjaGFuZ2VzWyd0YWJsZURlbnNpdHknXSkge1xuICAgICAgICB0aGlzLmFkanVzdFRhYmxlRGVuc2l0eShjaGFuZ2VzWyd0YWJsZURlbnNpdHknXS5jdXJyZW50VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlc1sndGFibGVTaXplSW5wdXQnXSkge1xuICAgICAgICB0aGlzLnRhYmxlU2l6ZUlucHV0ID0gY2hhbmdlc1sndGFibGVTaXplSW5wdXQnXS5jdXJyZW50VmFsdWU7XG4gICAgICAgIHRoaXMub25SZXNpemUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgaWYgKHRoaXMudGFibGVFbGVtZW50KSB7XG4gICAgICBsZXQgdGFibGVIZWFkZXJzOiBzdHJpbmdbXSA9IHRoaXMuZ2V0VGFibGVIZWFkZXJzKCk7XG4gICAgICB0aGlzLmluaXRpYWxpemVUYWJsZSh0YWJsZUhlYWRlcnMpO1xuICAgICAgdGhpcy5hZGp1c3RUYWJsZURlbnNpdHkodGhpcy50YWJsZURlbnNpdHkpO1xuICAgICAgdGhpcy5hZGp1c3RCdXR0b25zU2l6ZSgpO1xuICAgICAgdGhpcy5vblJlc2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFibGVIZWFkZXJzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgdGFibGVIZWFkZXJJdGVtczogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0aGVhZCB0ciB0aCcpO1xuICAgIGxldCB0YWJsZUhlYWRlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICB0YWJsZUhlYWRlckl0ZW1zLmZvckVhY2goKHRhYmxlSGVhZGVySXRlbTogTm9kZSkgPT4ge1xuICAgICAgdGFibGVIZWFkZXJzLnB1c2godGFibGVIZWFkZXJJdGVtLmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0YWJsZUhlYWRlcnM7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUYWJsZSh0YWJsZUhlYWRlcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlyc3RUaW1lKSB7XG4gICAgICB0aGlzLmZpcnN0VGltZSA9IGZhbHNlO1xuXG4gICAgICAvL1NldCBjb3JyZXNwb25kaW5nIHRhYmxlSGVhZGVyIGFzIGFuIGF0dHJpYnV0ZSBvZiBlYWNoIHRkXG4gICAgICBsZXQgdGFibGVCb2R5OiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHIgdGQnKTtcbiAgICAgIHRhYmxlQm9keS5mb3JFYWNoKCh0YWJsZUJvZHlSb3c6IE5vZGUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGFibGVCb2R5Um93LCAnaGVhZGVyLW5hbWUnLCB0YWJsZUhlYWRlcnNbaW5kZXggJSB0YWJsZUhlYWRlcnMubGVuZ3RoXSk7XG4gICAgICB9KTtcblxuICAgICAgLy9DcmVhdGVzIGEgY29weSBvZiBtb2JpbGUtbWVudS10cmlnZ2VyIGVsZW1lbnQgZm9yIGVhY2ggdHJcbiAgICAgIGxldCB0YWJsZUJvZHlSb3dzOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHInKTtcbiAgICAgIGxldCBjbG9zZUJ1dHRvbnM6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZ3Jhdml0eS1idXR0b25baWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCJdJyk7XG5cbiAgICAgIHRhYmxlQm9keVJvd3MuZm9yRWFjaCgodHI6IE5vZGUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgbGV0IG1vYmlsZU1lbnVUcmlnZ2VyOiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKG1vYmlsZU1lbnVUcmlnZ2VyLCAnbW9iaWxlLW1lbnUtdHJpZ2dlcicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShtb2JpbGVNZW51VHJpZ2dlciwgJ2Nsb25lZC1ub2RlJywgJ3RydWUnKTtcblxuICAgICAgICBsZXQgbWVudVRvZ2dsZTogSFRNTERpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhtZW51VG9nZ2xlLCAnbWVudS10b2dnbGUnKTtcbiAgICAgICAgbWVudVRvZ2dsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpO1xuICAgICAgICBtZW51VG9nZ2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7XG4gICAgICAgIG1lbnVUb2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTtcbiAgICAgICAgbWVudVRvZ2dsZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgIGlmIChtZW51VG9nZ2xlLmNsYXNzTGlzdC5jb250YWlucygnb3BlbicpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKG1lbnVUb2dnbGUsICdvcGVuJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKG1lbnVUb2dnbGUucGFyZW50RWxlbWVudC5sYXN0RWxlbWVudENoaWxkLCAnb3BlbicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKG1lbnVUb2dnbGUsICdvcGVuJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKG1lbnVUb2dnbGUucGFyZW50RWxlbWVudC5sYXN0RWxlbWVudENoaWxkLCAnb3BlbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG1vYmlsZU1lbnVUcmlnZ2VyLmFwcGVuZENoaWxkKG1lbnVUb2dnbGUpO1xuXG4gICAgICAgIGxldCBwYW5lbDogSFRNTERpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhwYW5lbCwgJ3BhbmVsJyk7XG5cbiAgICAgICAgbGV0IGNsb3NlQnV0dG9uRnJvbU5vZGVMaXN0OiBOb2RlID0gY2xvc2VCdXR0b25zLml0ZW0oaW5kZXgpO1xuICAgICAgICBsZXQgY2xvc2VCdXR0b25SZW1vdmVkOiBOb2RlID0gY2xvc2VCdXR0b25Gcm9tTm9kZUxpc3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjbG9zZUJ1dHRvbkZyb21Ob2RlTGlzdCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGNsb3NlQnV0dG9uUmVtb3ZlZCwgJ2Nsb25lZC1idXR0b24nLCAndHJ1ZScpO1xuICAgICAgICBjbG9zZUJ1dHRvblJlbW92ZWQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKG1lbnVUb2dnbGUsICdvcGVuJyk7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhtZW51VG9nZ2xlLnBhcmVudEVsZW1lbnQubGFzdEVsZW1lbnRDaGlsZCwgJ29wZW4nKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcGFuZWwuYXBwZW5kKGNsb3NlQnV0dG9uUmVtb3ZlZCk7XG5cbiAgICAgICAgbW9iaWxlTWVudVRyaWdnZXIuYXBwZW5kQ2hpbGQocGFuZWwpO1xuXG4gICAgICAgIHRyLmluc2VydEJlZm9yZShtb2JpbGVNZW51VHJpZ2dlciwgdHIuZmlyc3RDaGlsZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkanVzdFRhYmxlRGVuc2l0eShkZW5zaXR5VmFsdWU6ICdzdGFuZGFyZCcgfCAnY29tcHJlc3NlZCcpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMudGFibGVFbGVtZW50LCAnc3RhbmRhcmQtdGFibGUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMudGFibGVFbGVtZW50LCAnY29tcHJlc3NlZC10YWJsZScpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgZGVuc2l0eVZhbHVlICsgJy10YWJsZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RCdXR0b25zU2l6ZSgpOiB2b2lkIHtcbiAgICBsZXQgYWN0aW9uc0NvbHVtbnM6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSAuYWN0aW9ucy1jb2x1bW4nKTtcbiAgICBhY3Rpb25zQ29sdW1ucy5mb3JFYWNoKChhY3Rpb25zQ29sdW1uOiBOb2RlKSA9PiB7XG4gICAgICBhY3Rpb25zQ29sdW1uLmNoaWxkTm9kZXMuZm9yRWFjaCgoZ3Jhdml0eUJ1dHRvbjogTm9kZSkgPT4ge1xuICAgICAgICBsZXQgYnV0dG9uOiBOb2RlID0gZ3Jhdml0eUJ1dHRvbi5jaGlsZE5vZGVzWzBdO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoYnV0dG9uLCAnZ3Jhdml0eS1zaXplLWxnJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoYnV0dG9uLCAnZ3Jhdml0eS1zaXplLW1kJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoYnV0dG9uLCAnZ3Jhdml0eS1zaXplLXNtJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoYnV0dG9uLCAnbGctYm9sZCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGJ1dHRvbiwgJ21kLWJvbGQnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhidXR0b24sICdzbS1ib2xkJyk7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhidXR0b24sICdncmF2aXR5LXNpemUtc20nKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhidXR0b24sICdzbS1ib2xkJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBwcml2YXRlIG9uUmVzaXplKCk6IHZvaWQge1xuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA1NzYpIHtcbiAgICAgIHRoaXMudGFibGVTaXplID0gJ3NtJztcbiAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDk5Mikge1xuICAgICAgdGhpcy50YWJsZVNpemUgPSAnbWQnO1xuICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPD0gMTQ0MCkge1xuICAgICAgdGhpcy50YWJsZVNpemUgPSAnbGcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYmxlU2l6ZSA9ICd4bCc7XG4gICAgfVxuXG4gICAgdGhpcy5hZGp1c3RUYWJsZVNpemUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0VGFibGVTaXplKCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YWJsZUVsZW1lbnQsICdzbS10YWJsZScpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YWJsZUVsZW1lbnQsICdtZC10YWJsZScpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YWJsZUVsZW1lbnQsICdsZy10YWJsZScpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YWJsZUVsZW1lbnQsICd4bC10YWJsZScpO1xuXG4gICAgaWYgKHRoaXMudGFibGVTaXplSW5wdXQgIT0gJ2F1dG8nKSB7XG4gICAgICB0aGlzLnRhYmxlU2l6ZSA9IHRoaXMudGFibGVTaXplSW5wdXQ7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgdGhpcy50YWJsZVNpemUgKyAnLXRhYmxlJyk7XG4gICAgdGhpcy5hZGp1c3RUYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RUYWJsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJsZVNpemUgPT0gJ21kJyB8fCB0aGlzLnRhYmxlU2l6ZSA9PSAnc20nKSB7XG4gICAgICBsZXQgdGFibGVCb2R5Um93czogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZVt0YWJsZS1pZD1cIicgKyB0aGlzLnRhYmxlSWQgKyAnXCJdIHRib2R5IHRyJyk7XG4gICAgICBsZXQgdGFibGVCb2R5Um93c0FjdGlvbnM6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0ciB0ZC5hY3Rpb25zLWNvbHVtbicpO1xuICAgICAgbGV0IHRhYmxlQm9keVJvd3NNZW51VHJpZ2dlcjogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZVt0YWJsZS1pZD1cIicgKyB0aGlzLnRhYmxlSWQgKyAnXCJdIHRib2R5IHRyIC5tb2JpbGUtbWVudS10cmlnZ2VyW2Nsb25lZC1ub2RlPVwidHJ1ZVwiXScpO1xuXG4gICAgICB0YWJsZUJvZHlSb3dzLmZvckVhY2goKHRyOiBOb2RlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGxldCBtb2JpbGVNZW51VHJpZ2dlcjogTm9kZSA9IHRhYmxlQm9keVJvd3NNZW51VHJpZ2dlci5pdGVtKGluZGV4KTtcbiAgICAgICAgbGV0IG1vYmlsZU1lbnVUcmlnZ2VyUGFuZWw6IE5vZGUgPSBtb2JpbGVNZW51VHJpZ2dlci5sYXN0Q2hpbGQ7XG5cbiAgICAgICAgaWYgKHRhYmxlQm9keVJvd3NBY3Rpb25zLml0ZW0oaW5kZXgpICYmIG1vYmlsZU1lbnVUcmlnZ2VyUGFuZWwpIHtcbiAgICAgICAgICB0aGlzLmFwcGVuZE5vZGVzTGlzdChtb2JpbGVNZW51VHJpZ2dlclBhbmVsLCB0YWJsZUJvZHlSb3dzQWN0aW9ucy5pdGVtKGluZGV4KS5jaGlsZE5vZGVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVTaXplID09ICdsZycgfHwgdGhpcy50YWJsZVNpemUgPT0gJ3hsJykge1xuICAgICAgbGV0IHRhYmxlQm9keVJvd3M6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0cicpO1xuICAgICAgbGV0IHRhYmxlQm9keVJvd3NBY3Rpb25zOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHIgdGQuYWN0aW9ucy1jb2x1bW4nKTtcbiAgICAgIGxldCB0YWJsZUJvZHlSb3dzTWVudVRyaWdnZXI6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0ciAubW9iaWxlLW1lbnUtdHJpZ2dlcltjbG9uZWQtbm9kZT1cInRydWVcIl0nKTtcblxuICAgICAgdGFibGVCb2R5Um93cy5mb3JFYWNoKCh0cjogTm9kZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAodGFibGVCb2R5Um93c0FjdGlvbnMuaXRlbShpbmRleCkpIHtcbiAgICAgICAgICB0aGlzLmFwcGVuZE5vZGVzTGlzdCh0YWJsZUJvZHlSb3dzQWN0aW9ucy5pdGVtKGluZGV4KSwgdGFibGVCb2R5Um93c01lbnVUcmlnZ2VyLml0ZW0oaW5kZXgpLmxhc3RDaGlsZC5jaGlsZE5vZGVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBlbmROb2Rlc0xpc3QoZWxlbWVudFRvQXBwZW5kOiBOb2RlLCBub2Rlc0xpc3Q6IE5vZGVMaXN0T2Y8Q2hpbGROb2RlPik6IE5vZGUge1xuICAgIGlmICh0aGlzLnRhYmxlU2l6ZSA9PSAnbWQnIHx8IHRoaXMudGFibGVTaXplID09ICdzbScpIHtcbiAgICAgIGxldCBub2RlTGlzdEluZGV4OiBudW1iZXIgPSBub2Rlc0xpc3QubGVuZ3RoIC0gMTtcblxuICAgICAgd2hpbGUgKG5vZGVzTGlzdC5sZW5ndGggIT0gMCkge1xuICAgICAgICBsZXQgcmVtb3ZlZE5vZGU6IE5vZGUgPSBub2Rlc0xpc3QuaXRlbShub2RlTGlzdEluZGV4KS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGVzTGlzdC5pdGVtKG5vZGVMaXN0SW5kZXgpKTtcbiAgICAgICAgZWxlbWVudFRvQXBwZW5kLmluc2VydEJlZm9yZShyZW1vdmVkTm9kZSwgZWxlbWVudFRvQXBwZW5kLmZpcnN0Q2hpbGQpO1xuICAgICAgICBub2RlTGlzdEluZGV4LS07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGVtZW50VG9BcHBlbmQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVTaXplID09ICdsZycgfHwgdGhpcy50YWJsZVNpemUgPT0gJ3hsJykge1xuICAgICAgbGV0IG5vZGVMaXN0SW5kZXg6IG51bWJlciA9IG5vZGVzTGlzdC5sZW5ndGggLSAxO1xuXG4gICAgICB3aGlsZSAobm9kZXNMaXN0Lmxlbmd0aCAhPSAxKSB7XG4gICAgICAgIGxldCBpdGVtOiBOb2RlID0gbm9kZXNMaXN0Lml0ZW0obm9kZUxpc3RJbmRleCk7XG4gICAgICAgIGxldCBjbG9zZUJ1dHRvbk5vZGU6IE5vZGUgPSBpdGVtLnBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbCgnZ3Jhdml0eS1idXR0b25baWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCJdJykuaXRlbSgwKTtcblxuICAgICAgICBpZiAoaXRlbSAhPSBjbG9zZUJ1dHRvbk5vZGUpIHtcbiAgICAgICAgICBsZXQgcmVtb3ZlZE5vZGU6IE5vZGUgPSBpdGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaXRlbSk7XG4gICAgICAgICAgZWxlbWVudFRvQXBwZW5kLmluc2VydEJlZm9yZShyZW1vdmVkTm9kZSwgZWxlbWVudFRvQXBwZW5kLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZUxpc3RJbmRleC0tO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWxlbWVudFRvQXBwZW5kO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciB7e3RhYmxlU2l6ZX19XCIgI3RhYmxlQ29udGFpbmVyPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuIl19
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdGFibGUvZ3Jhdml0eS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdGFibGUvZ3Jhdml0eS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBSUwsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkIsTUFBTSxPQUFPLHFCQUFxQjtJQVNoQyxZQUE2QixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBUmhDLGlCQUFZLEdBQThCLFVBQVUsQ0FBQztRQUNyRCxtQkFBYyxHQUF1QyxNQUFNLENBQUM7UUFHcEUsaUJBQVksR0FBZSxJQUFJLENBQUM7UUFFakMsY0FBUyxHQUE4QixJQUFJLENBQUM7UUFHakQsSUFBSSxZQUFZLEdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRCxJQUFJLFlBQVksR0FBVyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRTlDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLENBQUMsWUFBWSxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElB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b0JBQzNCLElBQUksV0FBVyxHQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMxRCxlQUFlLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3ZFO2dCQUVELGFBQWEsRUFBRSxDQUFDO2FBQ2pCO1lBRUQsT0FBTyxlQUFlLENBQUM7U0FDeEI7SUFDSCxDQUFDOytHQTNOVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixzVUNqQmxDLDRtREFlQTs7NEZERWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGVBQWU7Z0dBS1QsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUN1QyxjQUFjO3NCQUExRCxTQUFTO3VCQUFDLGdCQUFnQjtnQkFpSW5CLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYXZpdHktdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3Jhdml0eS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyYXZpdHktdGFibGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHcmF2aXR5VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwdWJsaWMgdGFibGVEZW5zaXR5OiAnc3RhbmRhcmQnIHwgJ2NvbXByZXNzZWQnID0gXCJzdGFuZGFyZFwiO1xuICBASW5wdXQoKSBwdWJsaWMgdGFibGVTaXplSW5wdXQ6ICd4bCcgfCAnbGcnIHwgJ21kJyB8ICdzbScgfCAnYXV0bycgPSBcImF1dG9cIjtcbiAgQFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSBwdWJsaWMgcmVhZG9ubHkgdGFibGVDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSB0YWJsZUVsZW1lbnQ6IEVsZW1lbnRSZWYgPSBudWxsO1xuICBwdWJsaWMgdGFibGVJZDogc3RyaW5nO1xuICBwdWJsaWMgdGFibGVTaXplOiAneGwnIHwgJ2xnJyB8ICdtZCcgfCAnc20nID0gJ3hsJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBsZXQgbWlsbGlzZWNvbmRzOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBsZXQgcmFuZG9tTnVtYmVyOiBudW1iZXIgPSBNYXRoLnJhbmRvbSgpICogMTA7XG5cbiAgICB0aGlzLnRhYmxlSWQgPSAnJyArIChtaWxsaXNlY29uZHMgKiByYW5kb21OdW1iZXIgLyAyKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlRWxlbWVudCA9IHRoaXMudGFibGVDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmNoaWxkTm9kZXNbMF07XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy50YWJsZUVsZW1lbnQsICd0YWJsZS1pZCcsIHRoaXMudGFibGVJZCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMudGFibGVFbGVtZW50KSB7XG4gICAgICBpZiAoY2hhbmdlc1sndGFibGVEZW5zaXR5J10pIHtcbiAgICAgICAgdGhpcy5hZGp1c3RUYWJsZURlbnNpdHkoY2hhbmdlc1sndGFibGVEZW5zaXR5J10uY3VycmVudFZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXNbJ3RhYmxlU2l6ZUlucHV0J10pIHtcbiAgICAgICAgdGhpcy50YWJsZVNpemVJbnB1dCA9IGNoYW5nZXNbJ3RhYmxlU2l6ZUlucHV0J10uY3VycmVudFZhbHVlO1xuICAgICAgICB0aGlzLm9uUmVzaXplKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJsZUhlYWRlcnMoKTogc3RyaW5nW10ge1xuICAgIGxldCB0YWJsZUhlYWRlckl0ZW1zOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoZWFkIHRyIHRoJyk7XG4gICAgbGV0IHRhYmxlSGVhZGVyczogc3RyaW5nW10gPSBbXTtcblxuICAgIHRhYmxlSGVhZGVySXRlbXMuZm9yRWFjaCgodGFibGVIZWFkZXJJdGVtOiBOb2RlKSA9PiB7XG4gICAgICB0YWJsZUhlYWRlcnMucHVzaCh0YWJsZUhlYWRlckl0ZW0uY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhYmxlSGVhZGVycztcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIGxldCB0YWJsZUhlYWRlcnM6IHN0cmluZ1tdID0gdGhpcy5nZXRUYWJsZUhlYWRlcnMoKTtcbiAgICB0aGlzLmluaXRpYWxpemVUYWJsZSh0YWJsZUhlYWRlcnMpO1xuICAgIHRoaXMuYWRqdXN0VGFibGVEZW5zaXR5KHRoaXMudGFibGVEZW5zaXR5KTtcbiAgICB0aGlzLmFkanVzdEJ1dHRvbnNTaXplKCk7XG4gICAgdGhpcy5vblJlc2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGFibGUodGFibGVIZWFkZXJzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIC8vU2V0IGNvcnJlc3BvbmRpbmcgdGFibGVIZWFkZXIgYXMgYW4gYXR0cmlidXRlIG9mIGVhY2ggdGRcbiAgICBsZXQgdGFibGVCb2R5OiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHIgdGQnKTtcbiAgICB0YWJsZUJvZHkuZm9yRWFjaCgodGFibGVCb2R5Um93OiBOb2RlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0YWJsZUJvZHlSb3csICdoZWFkZXItbmFtZScsIHRhYmxlSGVhZGVyc1tpbmRleCAlIHRhYmxlSGVhZGVycy5sZW5ndGhdKTtcbiAgICB9KTtcblxuICAgIC8vQ3JlYXRlcyBhIGNvcHkgb2YgbW9iaWxlLW1lbnUtdHJpZ2dlciBlbGVtZW50IGZvciBlYWNoIHRyXG4gICAgbGV0IHRhYmxlQm9keVJvd3M6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0cicpO1xuICAgIGxldCBjbG9zZUJ1dHRvbnM6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZ3Jhdml0eS1idXR0b25baWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCJdJyk7XG5cbiAgICB0YWJsZUJvZHlSb3dzLmZvckVhY2goKHRyOiBOb2RlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBsZXQgbW9iaWxlTWVudVRyaWdnZXI6IEhUTUxEaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKG1vYmlsZU1lbnVUcmlnZ2VyLCAnbW9iaWxlLW1lbnUtdHJpZ2dlcicpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobW9iaWxlTWVudVRyaWdnZXIsICdjbG9uZWQtbm9kZScsICd0cnVlJyk7XG5cbiAgICAgIGxldCBtZW51VG9nZ2xlOiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhtZW51VG9nZ2xlLCAnbWVudS10b2dnbGUnKTtcbiAgICAgIG1lbnVUb2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTtcbiAgICAgIG1lbnVUb2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTtcbiAgICAgIG1lbnVUb2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTtcbiAgICAgIG1lbnVUb2dnbGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgaWYgKG1lbnVUb2dnbGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdvcGVuJykpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKG1lbnVUb2dnbGUsICdvcGVuJyk7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhtZW51VG9nZ2xlLnBhcmVudEVsZW1lbnQubGFzdEVsZW1lbnRDaGlsZCwgJ29wZW4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKG1lbnVUb2dnbGUsICdvcGVuJyk7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhtZW51VG9nZ2xlLnBhcmVudEVsZW1lbnQubGFzdEVsZW1lbnRDaGlsZCwgJ29wZW4nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBtb2JpbGVNZW51VHJpZ2dlci5hcHBlbmRDaGlsZChtZW51VG9nZ2xlKTtcblxuICAgICAgbGV0IHBhbmVsOiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhwYW5lbCwgJ3BhbmVsJyk7XG5cbiAgICAgIGxldCBjbG9zZUJ1dHRvbkZyb21Ob2RlTGlzdDogTm9kZSA9IGNsb3NlQnV0dG9ucy5pdGVtKGluZGV4KTtcbiAgICAgIGxldCBjbG9zZUJ1dHRvblJlbW92ZWQ6IE5vZGUgPSBjbG9zZUJ1dHRvbkZyb21Ob2RlTGlzdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb3NlQnV0dG9uRnJvbU5vZGVMaXN0KTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGNsb3NlQnV0dG9uUmVtb3ZlZCwgJ2Nsb25lZC1idXR0b24nLCAndHJ1ZScpO1xuICAgICAgY2xvc2VCdXR0b25SZW1vdmVkLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobWVudVRvZ2dsZSwgJ29wZW4nKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhtZW51VG9nZ2xlLnBhcmVudEVsZW1lbnQubGFzdEVsZW1lbnRDaGlsZCwgJ29wZW4nKTtcbiAgICAgIH0pO1xuXG4gICAgICBwYW5lbC5hcHBlbmQoY2xvc2VCdXR0b25SZW1vdmVkKTtcblxuICAgICAgbW9iaWxlTWVudVRyaWdnZXIuYXBwZW5kQ2hpbGQocGFuZWwpO1xuXG4gICAgICB0ci5pbnNlcnRCZWZvcmUobW9iaWxlTWVudVRyaWdnZXIsIHRyLmZpcnN0Q2hpbGQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RUYWJsZURlbnNpdHkoZGVuc2l0eVZhbHVlOiAnc3RhbmRhcmQnIHwgJ2NvbXByZXNzZWQnKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgJ3N0YW5kYXJkLXRhYmxlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgJ2NvbXByZXNzZWQtdGFibGUnKTtcblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50YWJsZUVsZW1lbnQsIGRlbnNpdHlWYWx1ZSArICctdGFibGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0QnV0dG9uc1NpemUoKTogdm9pZCB7XG4gICAgbGV0IGFjdGlvbnNDb2x1bW5zOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gLmFjdGlvbnMtY29sdW1uJyk7XG4gICAgYWN0aW9uc0NvbHVtbnMuZm9yRWFjaCgoYWN0aW9uc0NvbHVtbjogTm9kZSkgPT4ge1xuICAgICAgYWN0aW9uc0NvbHVtbi5jaGlsZE5vZGVzLmZvckVhY2goKGdyYXZpdHlCdXR0b246IE5vZGUpID0+IHtcbiAgICAgICAgbGV0IGJ1dHRvbjogTm9kZSA9IGdyYXZpdHlCdXR0b24uY2hpbGROb2Rlc1swXTtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGJ1dHRvbiwgJ2dyYXZpdHktc2l6ZS1sZycpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGJ1dHRvbiwgJ2dyYXZpdHktc2l6ZS1tZCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGJ1dHRvbiwgJ2dyYXZpdHktc2l6ZS1zbScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGJ1dHRvbiwgJ2xnLWJvbGQnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhidXR0b24sICdtZC1ib2xkJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoYnV0dG9uLCAnc20tYm9sZCcpO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoYnV0dG9uLCAnZ3Jhdml0eS1zaXplLXNtJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoYnV0dG9uLCAnc20tYm9sZCcpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggPD0gNTc2KSB7XG4gICAgICB0aGlzLnRhYmxlU2l6ZSA9ICdzbSc7XG4gICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA5OTIpIHtcbiAgICAgIHRoaXMudGFibGVTaXplID0gJ21kJztcbiAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDE0NDApIHtcbiAgICAgIHRoaXMudGFibGVTaXplID0gJ2xnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWJsZVNpemUgPSAneGwnO1xuICAgIH1cblxuICAgIHRoaXMuYWRqdXN0VGFibGVTaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGFkanVzdFRhYmxlU2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMudGFibGVFbGVtZW50LCAnc20tdGFibGUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMudGFibGVFbGVtZW50LCAnbWQtdGFibGUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMudGFibGVFbGVtZW50LCAnbGctdGFibGUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMudGFibGVFbGVtZW50LCAneGwtdGFibGUnKTtcblxuICAgIGlmICh0aGlzLnRhYmxlU2l6ZUlucHV0ICE9ICdhdXRvJykge1xuICAgICAgdGhpcy50YWJsZVNpemUgPSB0aGlzLnRhYmxlU2l6ZUlucHV0O1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50YWJsZUVsZW1lbnQsIHRoaXMudGFibGVTaXplICsgJy10YWJsZScpO1xuICAgIHRoaXMuYWRqdXN0VGFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0VGFibGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGFibGVTaXplID09ICdtZCcgfHwgdGhpcy50YWJsZVNpemUgPT0gJ3NtJykge1xuICAgICAgbGV0IHRhYmxlQm9keVJvd3M6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0cicpO1xuICAgICAgbGV0IHRhYmxlQm9keVJvd3NBY3Rpb25zOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHIgdGQuYWN0aW9ucy1jb2x1bW4nKTtcbiAgICAgIGxldCB0YWJsZUJvZHlSb3dzTWVudVRyaWdnZXI6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0ciAubW9iaWxlLW1lbnUtdHJpZ2dlcltjbG9uZWQtbm9kZT1cInRydWVcIl0nKTtcblxuICAgICAgdGFibGVCb2R5Um93cy5mb3JFYWNoKCh0cjogTm9kZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBsZXQgbW9iaWxlTWVudVRyaWdnZXI6IE5vZGUgPSB0YWJsZUJvZHlSb3dzTWVudVRyaWdnZXIuaXRlbShpbmRleCk7XG4gICAgICAgIGxldCBtb2JpbGVNZW51VHJpZ2dlclBhbmVsOiBOb2RlID0gbW9iaWxlTWVudVRyaWdnZXIubGFzdENoaWxkO1xuXG4gICAgICAgIGlmICh0YWJsZUJvZHlSb3dzQWN0aW9ucy5pdGVtKGluZGV4KSAmJiBtb2JpbGVNZW51VHJpZ2dlclBhbmVsKSB7XG4gICAgICAgICAgdGhpcy5hcHBlbmROb2Rlc0xpc3QobW9iaWxlTWVudVRyaWdnZXJQYW5lbCwgdGFibGVCb2R5Um93c0FjdGlvbnMuaXRlbShpbmRleCkuY2hpbGROb2Rlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRhYmxlU2l6ZSA9PSAnbGcnIHx8IHRoaXMudGFibGVTaXplID09ICd4bCcpIHtcbiAgICAgIGxldCB0YWJsZUJvZHlSb3dzOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHInKTtcbiAgICAgIGxldCB0YWJsZUJvZHlSb3dzQWN0aW9uczogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZVt0YWJsZS1pZD1cIicgKyB0aGlzLnRhYmxlSWQgKyAnXCJdIHRib2R5IHRyIHRkLmFjdGlvbnMtY29sdW1uJyk7XG4gICAgICBsZXQgdGFibGVCb2R5Um93c01lbnVUcmlnZ2VyOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHIgLm1vYmlsZS1tZW51LXRyaWdnZXJbY2xvbmVkLW5vZGU9XCJ0cnVlXCJdJyk7XG5cbiAgICAgIHRhYmxlQm9keVJvd3MuZm9yRWFjaCgodHI6IE5vZGUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHRhYmxlQm9keVJvd3NBY3Rpb25zLml0ZW0oaW5kZXgpKSB7XG4gICAgICAgICAgdGhpcy5hcHBlbmROb2Rlc0xpc3QodGFibGVCb2R5Um93c0FjdGlvbnMuaXRlbShpbmRleCksIHRhYmxlQm9keVJvd3NNZW51VHJpZ2dlci5pdGVtKGluZGV4KS5sYXN0Q2hpbGQuY2hpbGROb2Rlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kTm9kZXNMaXN0KGVsZW1lbnRUb0FwcGVuZDogTm9kZSwgbm9kZXNMaXN0OiBOb2RlTGlzdE9mPENoaWxkTm9kZT4pOiBOb2RlIHtcbiAgICBpZiAodGhpcy50YWJsZVNpemUgPT0gJ21kJyB8fCB0aGlzLnRhYmxlU2l6ZSA9PSAnc20nKSB7XG4gICAgICBsZXQgbm9kZUxpc3RJbmRleDogbnVtYmVyID0gbm9kZXNMaXN0Lmxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChub2Rlc0xpc3QubGVuZ3RoICE9IDApIHtcbiAgICAgICAgbGV0IHJlbW92ZWROb2RlOiBOb2RlID0gbm9kZXNMaXN0Lml0ZW0obm9kZUxpc3RJbmRleCkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2Rlc0xpc3QuaXRlbShub2RlTGlzdEluZGV4KSk7XG4gICAgICAgIGVsZW1lbnRUb0FwcGVuZC5pbnNlcnRCZWZvcmUocmVtb3ZlZE5vZGUsIGVsZW1lbnRUb0FwcGVuZC5maXJzdENoaWxkKTtcbiAgICAgICAgbm9kZUxpc3RJbmRleC0tO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWxlbWVudFRvQXBwZW5kO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRhYmxlU2l6ZSA9PSAnbGcnIHx8IHRoaXMudGFibGVTaXplID09ICd4bCcpIHtcbiAgICAgIGxldCBub2RlTGlzdEluZGV4OiBudW1iZXIgPSBub2Rlc0xpc3QubGVuZ3RoIC0gMTtcblxuICAgICAgd2hpbGUgKG5vZGVzTGlzdC5sZW5ndGggPiAxKSB7XG4gICAgICAgIGxldCBpdGVtOiBOb2RlID0gbm9kZXNMaXN0Lml0ZW0obm9kZUxpc3RJbmRleCk7XG4gICAgICAgIGxldCBjbG9zZUJ1dHRvbk5vZGU6IE5vZGUgPSBpdGVtLnBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbCgnZ3Jhdml0eS1idXR0b25baWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCJdJykuaXRlbSgwKTtcblxuICAgICAgICBpZiAoaXRlbSAhPSBjbG9zZUJ1dHRvbk5vZGUpIHtcbiAgICAgICAgICBsZXQgcmVtb3ZlZE5vZGU6IE5vZGUgPSBpdGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaXRlbSk7XG4gICAgICAgICAgZWxlbWVudFRvQXBwZW5kLmluc2VydEJlZm9yZShyZW1vdmVkTm9kZSwgZWxlbWVudFRvQXBwZW5kLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZUxpc3RJbmRleC0tO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWxlbWVudFRvQXBwZW5kO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciB7e3RhYmxlU2l6ZX19XCIgI3RhYmxlQ29udGFpbmVyPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbiJdfQ==
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { TreeService } from "./service/tree-service";
|
|
3
|
+
import { timer } from "rxjs";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./service/tree-service";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "../gravity-text-field/gravity-text-field.component";
|
|
8
|
+
import * as i4 from "./node/node.component";
|
|
9
|
+
export class GravityTreeViewComponent {
|
|
10
|
+
constructor(treeService) {
|
|
11
|
+
this.treeService = treeService;
|
|
12
|
+
this.showFilterInput = false;
|
|
13
|
+
this.selectedItems = new EventEmitter();
|
|
14
|
+
this.treeServiceSubscription = treeService.connect().subscribe((items) => {
|
|
15
|
+
const subscription = timer(0).subscribe(() => {
|
|
16
|
+
this.selectedItems.emit(items);
|
|
17
|
+
subscription.unsubscribe();
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
ngOnDestroy() {
|
|
22
|
+
this.treeServiceSubscription.unsubscribe();
|
|
23
|
+
}
|
|
24
|
+
ngOnChanges(changes) {
|
|
25
|
+
if (changes.callbacks) {
|
|
26
|
+
this.treeService.callbacks = this.callbacks;
|
|
27
|
+
}
|
|
28
|
+
if (changes.nodeItems) {
|
|
29
|
+
this.initialize();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
initialize() {
|
|
33
|
+
this.treeService.callbacks = this.callbacks;
|
|
34
|
+
this.treeService.nodeItems = this.nodeItems;
|
|
35
|
+
this.treeService.treeState = this.initTreeStructure(null, this.treeService.nodeItems);
|
|
36
|
+
this.treeService.clear();
|
|
37
|
+
this.treeService.setInitialState();
|
|
38
|
+
}
|
|
39
|
+
initTreeStructure(parent, nodeItems) {
|
|
40
|
+
const treeStructure = [];
|
|
41
|
+
nodeItems.forEach((nodeItem) => {
|
|
42
|
+
const nodeState = TreeService.initState(parent, nodeItem);
|
|
43
|
+
if (nodeItem.children) {
|
|
44
|
+
nodeState.children = this.initTreeStructure(nodeState, nodeItem.children);
|
|
45
|
+
nodeState.filteredChildren = nodeState.children;
|
|
46
|
+
}
|
|
47
|
+
treeStructure.push(nodeState);
|
|
48
|
+
});
|
|
49
|
+
return treeStructure;
|
|
50
|
+
}
|
|
51
|
+
changeFilter(newValue) {
|
|
52
|
+
this.treeService.filterChanged(newValue.toLowerCase());
|
|
53
|
+
}
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTreeViewComponent, deps: [{ token: i1.TreeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTreeViewComponent, selector: "gravity-tree-view", inputs: { callbacks: "callbacks", nodeItems: "nodeItems", showFilterInput: "showFilterInput" }, outputs: { selectedItems: "selectedItems" }, providers: [TreeService], usesOnChanges: true, ngImport: i0, template: "<gravity-text-field [label]=\"'Change filter'\" *ngIf=\"showFilterInput\"\n (response)=\"changeFilter($event)\"></gravity-text-field>\n<tree-node [nodeState]=\"state\" *ngFor=\"let state of treeService.treeState\"></tree-node>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.GravityTextFieldComponent, selector: "gravity-text-field", inputs: ["autocomplete", "clickOnIconName", "currentLang", "customPlaceholder", "customInputValue", "cypressTag", "iconColor", "iconNames", "iconsSizes", "iconPlacement", "inputContentType", "label", "placeholderType", "prefix", "required", "state", "supportTextContent", "supportTextType", "textFieldType", "validations"], outputs: ["clickIcon", "response"] }, { kind: "component", type: i4.NodeComponent, selector: "tree-node", inputs: ["nodeState"] }] }); }
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTreeViewComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ selector: 'gravity-tree-view', providers: [TreeService], template: "<gravity-text-field [label]=\"'Change filter'\" *ngIf=\"showFilterInput\"\n (response)=\"changeFilter($event)\"></gravity-text-field>\n<tree-node [nodeState]=\"state\" *ngFor=\"let state of treeService.treeState\"></tree-node>\n" }]
|
|
60
|
+
}], ctorParameters: function () { return [{ type: i1.TreeService }]; }, propDecorators: { callbacks: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], nodeItems: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], showFilterInput: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], selectedItems: [{
|
|
67
|
+
type: Output
|
|
68
|
+
}] } });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS10cmVlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LXRyZWUtdmlldy9ncmF2aXR5LXRyZWUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdHJlZS12aWV3L2dyYXZpdHktdHJlZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0IsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFlLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBV3pDLE1BQU0sT0FBTyx3QkFBd0I7SUFRbkMsWUFBNEIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFIM0Msb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBR2hELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDOUUsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDN0M7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8saUJBQWlCLENBQUMsTUFBaUIsRUFBRSxTQUEwQjtRQUNyRSxNQUFNLGFBQWEsR0FBZ0IsRUFBRSxDQUFDO1FBRXRDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUF1QixFQUFFLEVBQUU7WUFDNUMsTUFBTSxTQUFTLEdBQWMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFckUsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFO2dCQUNyQixTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxRSxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUNqRDtZQUVELGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRU0sWUFBWSxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7K0dBM0RVLHdCQUF3QjttR0FBeEIsd0JBQXdCLHlMQUZ4QixDQUFDLFdBQVcsQ0FBQywrQ0NYMUIseVBBR0E7OzRGRFVhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxtQkFBbUIsYUFHbEIsQ0FBQyxXQUFXLENBQUM7a0dBS2YsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJlZVNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2UvdHJlZS1zZXJ2aWNlXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbiwgdGltZXJ9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge05vZGVJdGVtfSBmcm9tIFwiLi9tb2RlbHMvbm9kZS1pdGVtXCI7XG5pbXBvcnQge1RyZWVDYWxsYmFja3N9IGZyb20gXCIuL21vZGVscy90cmVlLWNhbGxiYWNrc1wiO1xuaW1wb3J0IHtOb2RlU3RhdGV9IGZyb20gXCIuL21vZGVscy9ub2RlLXN0YXRlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYXZpdHktdHJlZS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYXZpdHktdHJlZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3Jhdml0eS10cmVlLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVHJlZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZpdHlUcmVlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmVlU2VydmljZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgpIGNhbGxiYWNrczogVHJlZUNhbGxiYWNrcztcbiAgQElucHV0KCkgbm9kZUl0ZW1zOiBOb2RlSXRlbTxhbnk+W107XG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtcyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0cmVlU2VydmljZTogVHJlZVNlcnZpY2UpIHtcbiAgICB0aGlzLnRyZWVTZXJ2aWNlU3Vic2NyaXB0aW9uID0gdHJlZVNlcnZpY2UuY29ubmVjdCgpLnN1YnNjcmliZSgoaXRlbXM6IGFueVtdKSA9PiB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aW1lcigwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChpdGVtcyk7XG4gICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRyZWVTZXJ2aWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuY2FsbGJhY2tzKSB7XG4gICAgICB0aGlzLnRyZWVTZXJ2aWNlLmNhbGxiYWNrcyA9IHRoaXMuY2FsbGJhY2tzO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLm5vZGVJdGVtcykge1xuICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy50cmVlU2VydmljZS5jYWxsYmFja3MgPSB0aGlzLmNhbGxiYWNrcztcbiAgICB0aGlzLnRyZWVTZXJ2aWNlLm5vZGVJdGVtcyA9IHRoaXMubm9kZUl0ZW1zO1xuXG4gICAgdGhpcy50cmVlU2VydmljZS50cmVlU3RhdGUgPSB0aGlzLmluaXRUcmVlU3RydWN0dXJlKG51bGwsIHRoaXMudHJlZVNlcnZpY2Uubm9kZUl0ZW1zKTtcbiAgICB0aGlzLnRyZWVTZXJ2aWNlLmNsZWFyKCk7XG4gICAgdGhpcy50cmVlU2VydmljZS5zZXRJbml0aWFsU3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRyZWVTdHJ1Y3R1cmUocGFyZW50OiBOb2RlU3RhdGUsIG5vZGVJdGVtczogTm9kZUl0ZW08YW55PltdKTogTm9kZVN0YXRlW10ge1xuICAgIGNvbnN0IHRyZWVTdHJ1Y3R1cmU6IE5vZGVTdGF0ZVtdID0gW107XG5cbiAgICBub2RlSXRlbXMuZm9yRWFjaCgobm9kZUl0ZW06IE5vZGVJdGVtPGFueT4pID0+IHtcbiAgICAgIGNvbnN0IG5vZGVTdGF0ZTogTm9kZVN0YXRlID0gVHJlZVNlcnZpY2UuaW5pdFN0YXRlKHBhcmVudCwgbm9kZUl0ZW0pO1xuXG4gICAgICBpZiAobm9kZUl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgbm9kZVN0YXRlLmNoaWxkcmVuID0gdGhpcy5pbml0VHJlZVN0cnVjdHVyZShub2RlU3RhdGUsIG5vZGVJdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgbm9kZVN0YXRlLmZpbHRlcmVkQ2hpbGRyZW4gPSBub2RlU3RhdGUuY2hpbGRyZW47XG4gICAgICB9XG5cbiAgICAgIHRyZWVTdHJ1Y3R1cmUucHVzaChub2RlU3RhdGUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRyZWVTdHJ1Y3R1cmU7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlRmlsdGVyKG5ld1ZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRyZWVTZXJ2aWNlLmZpbHRlckNoYW5nZWQobmV3VmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gIH1cbn1cbiIsIjxncmF2aXR5LXRleHQtZmllbGQgW2xhYmVsXT1cIidDaGFuZ2UgZmlsdGVyJ1wiICpuZ0lmPVwic2hvd0ZpbHRlcklucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKT1cImNoYW5nZUZpbHRlcigkZXZlbnQpXCI+PC9ncmF2aXR5LXRleHQtZmllbGQ+XG48dHJlZS1ub2RlIFtub2RlU3RhdGVdPVwic3RhdGVcIiAqbmdGb3I9XCJsZXQgc3RhdGUgb2YgdHJlZVNlcnZpY2UudHJlZVN0YXRlXCI+PC90cmVlLW5vZGU+XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LXRyZWUtdmlldy9tb2RlbHMvbm9kZS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIE5vZGVJdGVtPFQ+IHtcbiAgY2hpbGRyZW46IE5vZGVJdGVtPGFueT5bXTtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIGV4cGFuZGVkOiBib29sZWFuO1xuICBpZDogc3RyaW5nO1xuICBpdGVtOiBUO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNlbGVjdGVkOiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export var NodeSelectedState;
|
|
2
|
+
(function (NodeSelectedState) {
|
|
3
|
+
NodeSelectedState[NodeSelectedState["checked"] = 0] = "checked";
|
|
4
|
+
NodeSelectedState[NodeSelectedState["unChecked"] = 1] = "unChecked";
|
|
5
|
+
NodeSelectedState[NodeSelectedState["indeterminate"] = 2] = "indeterminate";
|
|
6
|
+
})(NodeSelectedState || (NodeSelectedState = {}));
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zZWxlY3RlZC1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS10cmVlLXZpZXcvbW9kZWxzL25vZGUtc2VsZWN0ZWQtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUMzQiwrREFBTyxDQUFBO0lBQ1AsbUVBQVMsQ0FBQTtJQUNULDJFQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUk1QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE5vZGVTZWxlY3RlZFN0YXRlIHtcbiAgY2hlY2tlZCxcbiAgdW5DaGVja2VkLFxuICBpbmRldGVybWluYXRlXG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS10cmVlLXZpZXcvbW9kZWxzL25vZGUtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Tm9kZUl0ZW19IGZyb20gJy4vbm9kZS1pdGVtJztcbmltcG9ydCB7Tm9kZVNlbGVjdGVkU3RhdGV9IGZyb20gJy4vbm9kZS1zZWxlY3RlZC1zdGF0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVN0YXRlIHtcbiAgY2hpbGRyZW46IE5vZGVTdGF0ZVtdO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gIGZpbHRlcmVkQ2hpbGRyZW46IE5vZGVTdGF0ZVtdO1xuICBoYXNGaWx0ZXJlZENoaWxkcmVuOiBib29sZWFuO1xuICBub2RlSXRlbTogTm9kZUl0ZW08YW55PjtcbiAgcGFyZW50OiBOb2RlU3RhdGU7XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBzZWxlY3RlZFN0YXRlOiBOb2RlU2VsZWN0ZWRTdGF0ZTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1jYWxsYmFja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdHJlZS12aWV3L21vZGVscy90cmVlLWNhbGxiYWNrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOb2RlSXRlbX0gZnJvbSAnLi9ub2RlLWl0ZW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVDYWxsYmFja3Mge1xuXG4gIC8qKiBDYWxsYmFjayB0cmlnZ2VycyBvbiBub2RlIHNlbGVjdGlvbi4gKi9cbiAgc2VsZWN0PzogKGl0ZW06IE5vZGVJdGVtPGFueT4pID0+IHZvaWQ7XG5cbiAgLyoqIENhbGxiYWNrIHRyaWdnZXJzIG9uIHVuc2VsZWN0aW9uIG9mIGEgbm9kZS4gKi9cbiAgdW5TZWxlY3Q/OiAoaXRlbTogTm9kZUl0ZW08YW55PikgPT4gdm9pZDtcblxuICAvKiogQ2FsbGJhY2sgdHJpZ2dlcnMgb24gdG9nZ2xpbmcgb2YgYSBub2RlLiAqL1xuICB0b2dnbGU/OiAoaXRlbTogTm9kZUl0ZW08YW55PikgPT4gdm9pZDtcbn1cbiJdfQ==
|
package/esm2022/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.mjs
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../service/tree-service";
|
|
4
|
+
import * as i2 from "../../../gravity-icon/gravity-icon.component";
|
|
5
|
+
export class NodeCheckboxComponent {
|
|
6
|
+
constructor(treeService) {
|
|
7
|
+
this.treeService = treeService;
|
|
8
|
+
}
|
|
9
|
+
clickOnCheckbox() {
|
|
10
|
+
if (!this.state.disabled) {
|
|
11
|
+
this.treeService.checkboxClick(this.state);
|
|
12
|
+
setTimeout(() => {
|
|
13
|
+
this.treeService.reEvaluateSelectedState(this.state);
|
|
14
|
+
}, 1);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeCheckboxComponent, deps: [{ token: i1.TreeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeCheckboxComponent, selector: "node-checkbox", inputs: { state: "state" }, ngImport: i0, template: "<gravity-icon class=\"border-radius-sm checkbox-icon\"\n [class]=\"state.selectedState == 1 ? 'unselect' : 'select'\"\n [class.disabled]=\"state.disabled\"\n\n (click)=\"clickOnCheckbox()\"\n\n [iconName]=\"state.selectedState == 2 ? 'uncheck' : 'success'\"></gravity-icon>\n", styles: [".checkbox-icon{background-color:var(--cta-primary);cursor:pointer;height:1.5rem;--icon-color: var(--surface-secondary);padding:.35rem;width:1.5rem}.checkbox-icon.unselect{opacity:.5}.checkbox-icon.disabled{cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: i2.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "hoverIcon", "size"] }] }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeCheckboxComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'node-checkbox', template: "<gravity-icon class=\"border-radius-sm checkbox-icon\"\n [class]=\"state.selectedState == 1 ? 'unselect' : 'select'\"\n [class.disabled]=\"state.disabled\"\n\n (click)=\"clickOnCheckbox()\"\n\n [iconName]=\"state.selectedState == 2 ? 'uncheck' : 'success'\"></gravity-icon>\n", styles: [".checkbox-icon{background-color:var(--cta-primary);cursor:pointer;height:1.5rem;--icon-color: var(--surface-secondary);padding:.35rem;width:1.5rem}.checkbox-icon.unselect{opacity:.5}.checkbox-icon.disabled{cursor:not-allowed}\n"] }]
|
|
23
|
+
}], ctorParameters: function () { return [{ type: i1.TreeService }]; }, propDecorators: { state: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}] } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGVja2JveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdHJlZS12aWV3L25vZGUvbm9kZS1jaGVja2JveC9ub2RlLWNoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS10cmVlLXZpZXcvbm9kZS9ub2RlLWNoZWNrYm94L25vZGUtY2hlY2tib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFTL0MsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUE2QixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUNyRCxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTNDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkQsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ1A7SUFDSCxDQUFDOytHQWRVLHFCQUFxQjttR0FBckIscUJBQXFCLGlGQ1RsQyx5VUFPQTs7NEZERWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGVBQWU7a0dBS1QsS0FBSztzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyZWVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyZWUtc2VydmljZSc7XG5pbXBvcnQge05vZGVTdGF0ZX0gZnJvbSBcIi4uLy4uL21vZGVscy9ub2RlLXN0YXRlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25vZGUtY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vbm9kZS1jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vZGUtY2hlY2tib3guY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOb2RlQ2hlY2tib3hDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgc3RhdGU6IE5vZGVTdGF0ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRyZWVTZXJ2aWNlOiBUcmVlU2VydmljZSkge1xuICB9XG5cbiAgcHVibGljIGNsaWNrT25DaGVja2JveCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudHJlZVNlcnZpY2UuY2hlY2tib3hDbGljayh0aGlzLnN0YXRlKTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudHJlZVNlcnZpY2UucmVFdmFsdWF0ZVNlbGVjdGVkU3RhdGUodGhpcy5zdGF0ZSk7XG4gICAgICB9LCAxKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxncmF2aXR5LWljb24gY2xhc3M9XCJib3JkZXItcmFkaXVzLXNtIGNoZWNrYm94LWljb25cIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwic3RhdGUuc2VsZWN0ZWRTdGF0ZSA9PSAxID8gJ3Vuc2VsZWN0JyA6ICdzZWxlY3QnXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInN0YXRlLmRpc2FibGVkXCJcblxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tPbkNoZWNrYm94KClcIlxuXG4gICAgICAgICAgICAgIFtpY29uTmFtZV09XCJzdGF0ZS5zZWxlY3RlZFN0YXRlID09IDIgPyAndW5jaGVjaycgOiAnc3VjY2VzcydcIj48L2dyYXZpdHktaWNvbj5cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class NodeNameComponent {
|
|
4
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeNameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeNameComponent, selector: "node-name", inputs: { state: "state" }, ngImport: i0, template: "<div [class.disabled]=\"state.disabled\" class=\"node-name\">\n <span class=\"hr-label md-regular\">{{state.nodeItem.name}}</span>\n</div>\n", styles: [".node-name{display:inline-block;padding:.1325rem 0 .1325rem .4375rem}.node-name.disabled{opacity:.6}\n"] }); }
|
|
6
|
+
}
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeNameComponent, decorators: [{
|
|
8
|
+
type: Component,
|
|
9
|
+
args: [{ selector: 'node-name', template: "<div [class.disabled]=\"state.disabled\" class=\"node-name\">\n <span class=\"hr-label md-regular\">{{state.nodeItem.name}}</span>\n</div>\n", styles: [".node-name{display:inline-block;padding:.1325rem 0 .1325rem .4375rem}.node-name.disabled{opacity:.6}\n"] }]
|
|
10
|
+
}], propDecorators: { state: [{
|
|
11
|
+
type: Input
|
|
12
|
+
}] } });
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1uYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS10cmVlLXZpZXcvbm9kZS9ub2RlLW5hbWUvbm9kZS1uYW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS10cmVlLXZpZXcvbm9kZS9ub2RlLW5hbWUvbm9kZS1uYW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQVEvQyxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7bUdBQWpCLGlCQUFpQiw2RUNSOUIsK0lBR0E7OzRGREthLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxXQUFXOzhCQUtMLEtBQUs7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOb2RlU3RhdGV9IGZyb20gJy4uLy4uL21vZGVscy9ub2RlLXN0YXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm9kZS1uYW1lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtbmFtZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vZGUtbmFtZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVOYW1lQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIHN0YXRlOiBOb2RlU3RhdGU7XG59XG4iLCI8ZGl2IFtjbGFzcy5kaXNhYmxlZF09XCJzdGF0ZS5kaXNhYmxlZFwiIGNsYXNzPVwibm9kZS1uYW1lXCI+XG4gIDxzcGFuIGNsYXNzPVwiaHItbGFiZWwgbWQtcmVndWxhclwiPnt7c3RhdGUubm9kZUl0ZW0ubmFtZX19PC9zcGFuPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../../../gravity-icon/gravity-icon.component";
|
|
5
|
+
export class NodeToggleComponent {
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeToggleComponent, selector: "node-toggle", inputs: { state: "state" }, ngImport: i0, template: "<div class=\"node-toggle-wrapper\" [class.collapsable]=\"state.nodeItem?.children?.length > 0\"\n (click)=\"state.expanded = !state.expanded\">\n <gravity-icon [iconName]=\"(state.expanded ? 'arrow_down' : 'arrow_right')\" [size]=\"'sm'\"\n *ngIf=\"state.nodeItem?.children?.length > 0\"></gravity-icon>\n</div>\n", styles: [".node-toggle-wrapper{align-items:center;display:inline-flex;height:1.25rem;width:1.75rem}.collapsable{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "hoverIcon", "size"] }] }); }
|
|
8
|
+
}
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeToggleComponent, decorators: [{
|
|
10
|
+
type: Component,
|
|
11
|
+
args: [{ selector: 'node-toggle', template: "<div class=\"node-toggle-wrapper\" [class.collapsable]=\"state.nodeItem?.children?.length > 0\"\n (click)=\"state.expanded = !state.expanded\">\n <gravity-icon [iconName]=\"(state.expanded ? 'arrow_down' : 'arrow_right')\" [size]=\"'sm'\"\n *ngIf=\"state.nodeItem?.children?.length > 0\"></gravity-icon>\n</div>\n", styles: [".node-toggle-wrapper{align-items:center;display:inline-flex;height:1.25rem;width:1.75rem}.collapsable{cursor:pointer}\n"] }]
|
|
12
|
+
}], propDecorators: { state: [{
|
|
13
|
+
type: Input
|
|
14
|
+
}] } });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LXRyZWUtdmlldy9ub2RlL25vZGUtdG9nZ2xlL25vZGUtdG9nZ2xlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS10cmVlLXZpZXcvbm9kZS9ub2RlLXRvZ2dsZS9ub2RlLXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7OztBQVEvQyxNQUFNLE9BQU8sbUJBQW1COytHQUFuQixtQkFBbUI7bUdBQW5CLG1CQUFtQiwrRUNSaEMsK1VBS0E7OzRGREdhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxhQUFhOzhCQUtQLEtBQUs7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOb2RlU3RhdGV9IGZyb20gJy4uLy4uL21vZGVscy9ub2RlLXN0YXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm9kZS10b2dnbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbm9kZS10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub2RlLXRvZ2dsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVUb2dnbGVDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgc3RhdGU6IE5vZGVTdGF0ZTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJub2RlLXRvZ2dsZS13cmFwcGVyXCIgW2NsYXNzLmNvbGxhcHNhYmxlXT1cInN0YXRlLm5vZGVJdGVtPy5jaGlsZHJlbj8ubGVuZ3RoID4gMFwiXG4gICAgIChjbGljayk9XCJzdGF0ZS5leHBhbmRlZCA9ICFzdGF0ZS5leHBhbmRlZFwiPlxuICA8Z3Jhdml0eS1pY29uIFtpY29uTmFtZV09XCIoc3RhdGUuZXhwYW5kZWQgPyAnYXJyb3dfZG93bicgOiAnYXJyb3dfcmlnaHQnKVwiIFtzaXplXT1cIidzbSdcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic3RhdGUubm9kZUl0ZW0/LmNoaWxkcmVuPy5sZW5ndGggPiAwXCI+PC9ncmF2aXR5LWljb24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "./node-toggle/node-toggle.component";
|
|
5
|
+
import * as i3 from "./node-checkbox/node-checkbox.component";
|
|
6
|
+
import * as i4 from "./node-name/node-name.component";
|
|
7
|
+
export class NodeComponent {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeComponent, selector: "tree-node", inputs: { nodeState: "nodeState" }, ngImport: i0, template: "<div class=\"node-container\">\n <div class=\"node-content\">\n <node-toggle [state]=\"nodeState\"></node-toggle>\n <node-checkbox [state]=\"nodeState\"></node-checkbox>\n <node-name [state]=\"nodeState\"></node-name>\n </div>\n <div class=\"collapsible-wrapper\" *ngIf=\"nodeState.nodeItem.children\"\n [class.collapsed]=\"!nodeState.expanded && nodeState.nodeItem.children.length > 0 && nodeState.filteredChildren.length > 0\">\n <div class=\"collapsible\">\n <tree-node class=\"node-offset\" [nodeState]=\"child\"\n *ngFor=\"let child of nodeState.filteredChildren\"></tree-node>\n </div>\n </div>\n</div>\n", styles: [".node-container{display:flex;flex:1 1 auto;flex-direction:column}.node-container .node-content{display:inline-flex;padding-block:.3rem}.node-container node-toggle,.node-container node-checkbox{display:inline-flex;align-items:center}.node-container .collapsible-wrapper{display:flex;overflow:hidden}.node-container .collapsible-wrapper .collapsible{margin-bottom:0;max-height:1000000px}.node-container .collapsible-wrapper .collapsible tree-node.node-offset{display:flex;margin-left:1.25rem}.node-container .collapsible-wrapper.collapsed>.collapsible{margin-bottom:-20000px;visibility:hidden;max-height:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NodeComponent, selector: "tree-node", inputs: ["nodeState"] }, { kind: "component", type: i2.NodeToggleComponent, selector: "node-toggle", inputs: ["state"] }, { kind: "component", type: i3.NodeCheckboxComponent, selector: "node-checkbox", inputs: ["state"] }, { kind: "component", type: i4.NodeNameComponent, selector: "node-name", inputs: ["state"] }] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: 'tree-node', template: "<div class=\"node-container\">\n <div class=\"node-content\">\n <node-toggle [state]=\"nodeState\"></node-toggle>\n <node-checkbox [state]=\"nodeState\"></node-checkbox>\n <node-name [state]=\"nodeState\"></node-name>\n </div>\n <div class=\"collapsible-wrapper\" *ngIf=\"nodeState.nodeItem.children\"\n [class.collapsed]=\"!nodeState.expanded && nodeState.nodeItem.children.length > 0 && nodeState.filteredChildren.length > 0\">\n <div class=\"collapsible\">\n <tree-node class=\"node-offset\" [nodeState]=\"child\"\n *ngFor=\"let child of nodeState.filteredChildren\"></tree-node>\n </div>\n </div>\n</div>\n", styles: [".node-container{display:flex;flex:1 1 auto;flex-direction:column}.node-container .node-content{display:inline-flex;padding-block:.3rem}.node-container node-toggle,.node-container node-checkbox{display:inline-flex;align-items:center}.node-container .collapsible-wrapper{display:flex;overflow:hidden}.node-container .collapsible-wrapper .collapsible{margin-bottom:0;max-height:1000000px}.node-container .collapsible-wrapper .collapsible tree-node.node-offset{display:flex;margin-left:1.25rem}.node-container .collapsible-wrapper.collapsed>.collapsible{margin-bottom:-20000px;visibility:hidden;max-height:0}\n"] }]
|
|
14
|
+
}], propDecorators: { nodeState: [{
|
|
15
|
+
type: Input
|
|
16
|
+
}] } });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdHJlZS12aWV3L25vZGUvbm9kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdHJlZS12aWV3L25vZGUvbm9kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUS9DLE1BQU0sT0FBTyxhQUFhOytHQUFiLGFBQWE7bUdBQWIsYUFBYSxxRkNSMUIsa3BCQWNBLHkzQkROYSxhQUFhOzs0RkFBYixhQUFhO2tCQUx6QixTQUFTOytCQUNFLFdBQVc7OEJBS0wsU0FBUztzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05vZGVTdGF0ZX0gZnJvbSAnLi4vbW9kZWxzL25vZGUtc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0cmVlLW5vZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbm9kZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vZGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOb2RlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIG5vZGVTdGF0ZTogTm9kZVN0YXRlO1xufVxuIiwiPGRpdiBjbGFzcz1cIm5vZGUtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJub2RlLWNvbnRlbnRcIj5cbiAgICA8bm9kZS10b2dnbGUgW3N0YXRlXT1cIm5vZGVTdGF0ZVwiPjwvbm9kZS10b2dnbGU+XG4gICAgPG5vZGUtY2hlY2tib3ggW3N0YXRlXT1cIm5vZGVTdGF0ZVwiPjwvbm9kZS1jaGVja2JveD5cbiAgICA8bm9kZS1uYW1lIFtzdGF0ZV09XCJub2RlU3RhdGVcIj48L25vZGUtbmFtZT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2xsYXBzaWJsZS13cmFwcGVyXCIgKm5nSWY9XCJub2RlU3RhdGUubm9kZUl0ZW0uY2hpbGRyZW5cIlxuICAgICAgIFtjbGFzcy5jb2xsYXBzZWRdPVwiIW5vZGVTdGF0ZS5leHBhbmRlZCAmJiBub2RlU3RhdGUubm9kZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiBub2RlU3RhdGUuZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbGxhcHNpYmxlXCI+XG4gICAgICA8dHJlZS1ub2RlIGNsYXNzPVwibm9kZS1vZmZzZXRcIiBbbm9kZVN0YXRlXT1cImNoaWxkXCJcbiAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIG5vZGVTdGF0ZS5maWx0ZXJlZENoaWxkcmVuXCI+PC90cmVlLW5vZGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|