@seniorsistemas/angular-components 17.27.2 → 17.28.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/bundles/seniorsistemas-angular-components.umd.js +586 -17
- package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
- package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
- package/components/accessibility-events/directives/accessibility-event.directive.d.ts +4 -2
- package/components/grid-menu/components/grid-menu-item/grid-menu-item.component.d.ts +7 -0
- package/components/grid-menu/grid-menu.component.d.ts +9 -1
- package/components/grid-menu/types/grid-menu-item.d.ts +6 -1
- package/components/ia-insight/components/ia-insight-sidebar/ia-insight-sidebar.component.d.ts +3 -1
- package/components/ia-insight/ia-insight.component.d.ts +5 -1
- package/components/ia-insight/models/ia-insight-item.d.ts +12 -0
- package/components/index.d.ts +1 -0
- package/components/tree/Models/tree.models.d.ts +28 -0
- package/components/tree/components/tree-node-item/tree-node-item.component.d.ts +35 -0
- package/components/tree/index.d.ts +3 -0
- package/components/tree/tree.component.d.ts +33 -0
- package/components/tree/tree.module.d.ts +2 -0
- package/esm2015/components/accessibility-events/directives/accessibility-event.directive.js +9 -3
- package/esm2015/components/fieldset/fieldset.module.js +2 -3
- package/esm2015/components/grid-menu/components/grid-menu-item/grid-menu-item.component.js +36 -6
- package/esm2015/components/grid-menu/grid-menu.component.js +43 -4
- package/esm2015/components/grid-menu/grid-menu.module.js +3 -2
- package/esm2015/components/grid-menu/types/grid-menu-item.js +1 -1
- package/esm2015/components/ia-insight/components/ia-insight-card/ia-insight-card.component.js +15 -3
- package/esm2015/components/ia-insight/components/ia-insight-sidebar/ia-insight-sidebar.component.js +12 -2
- package/esm2015/components/ia-insight/ia-insight.component.js +17 -3
- package/esm2015/components/ia-insight/models/ia-insight-item.js +1 -1
- package/esm2015/components/index.js +2 -1
- package/esm2015/components/tree/Models/tree.models.js +1 -0
- package/esm2015/components/tree/components/tree-node-item/tree-node-item.component.js +154 -0
- package/esm2015/components/tree/index.js +3 -0
- package/esm2015/components/tree/tree.component.js +254 -0
- package/esm2015/components/tree/tree.module.js +20 -0
- package/esm2015/seniorsistemas-angular-components.js +3 -1
- package/esm5/components/accessibility-events/directives/accessibility-event.directive.js +10 -4
- package/esm5/components/fieldset/fieldset.module.js +2 -3
- package/esm5/components/grid-menu/components/grid-menu-item/grid-menu-item.component.js +38 -6
- package/esm5/components/grid-menu/grid-menu.component.js +43 -4
- package/esm5/components/grid-menu/grid-menu.module.js +3 -2
- package/esm5/components/grid-menu/types/grid-menu-item.js +1 -1
- package/esm5/components/ia-insight/components/ia-insight-card/ia-insight-card.component.js +15 -3
- package/esm5/components/ia-insight/components/ia-insight-sidebar/ia-insight-sidebar.component.js +12 -2
- package/esm5/components/ia-insight/ia-insight.component.js +17 -3
- package/esm5/components/ia-insight/models/ia-insight-item.js +1 -1
- package/esm5/components/index.js +2 -1
- package/esm5/components/tree/Models/tree.models.js +1 -0
- package/esm5/components/tree/components/tree-node-item/tree-node-item.component.js +169 -0
- package/esm5/components/tree/index.js +3 -0
- package/esm5/components/tree/tree.component.js +280 -0
- package/esm5/components/tree/tree.module.js +23 -0
- package/esm5/seniorsistemas-angular-components.js +3 -1
- package/fesm2015/seniorsistemas-angular-components.js +533 -15
- package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-angular-components.js +580 -16
- package/fesm5/seniorsistemas-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-angular-components.d.ts +2 -0
- package/seniorsistemas-angular-components.metadata.json +1 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { animate, query, stagger, style, transition, trigger } from '@angular/animations';
|
|
3
|
+
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
4
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
+
var TreeNodeItemComponent = /** @class */ (function () {
|
|
6
|
+
function TreeNodeItemComponent(cdr, translateService) {
|
|
7
|
+
this.cdr = cdr;
|
|
8
|
+
this.translateService = translateService;
|
|
9
|
+
this.ariaLevel = 0;
|
|
10
|
+
this.showCheckbox = false;
|
|
11
|
+
this.treeNodeItemClicked = new EventEmitter();
|
|
12
|
+
this.treeNodeEdit = new EventEmitter();
|
|
13
|
+
this.nodeExpanded = new EventEmitter();
|
|
14
|
+
this.nodeCollapsed = new EventEmitter();
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(TreeNodeItemComponent.prototype, "hasChildren", {
|
|
17
|
+
get: function () {
|
|
18
|
+
return this.treeNodeItem.children && this.treeNodeItem.children.length > 0;
|
|
19
|
+
},
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(TreeNodeItemComponent.prototype, "editable", {
|
|
24
|
+
get: function () {
|
|
25
|
+
var _a;
|
|
26
|
+
return ((_a = this.treeNodeItem) === null || _a === void 0 ? void 0 : _a.editable) || false;
|
|
27
|
+
},
|
|
28
|
+
enumerable: true,
|
|
29
|
+
configurable: true
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(TreeNodeItemComponent.prototype, "ariaLabel", {
|
|
32
|
+
get: function () {
|
|
33
|
+
return this.translateService.instant('platform.angular_components.select') + " " + this.treeNodeItem.label;
|
|
34
|
+
},
|
|
35
|
+
enumerable: true,
|
|
36
|
+
configurable: true
|
|
37
|
+
});
|
|
38
|
+
TreeNodeItemComponent.prototype.expandNode = function () {
|
|
39
|
+
if (this.hasChildren && !this.treeNodeItem.isExpanded) {
|
|
40
|
+
this.toggleExpanded(this.treeNodeItem);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
TreeNodeItemComponent.prototype.collapseNode = function () {
|
|
44
|
+
if (this.hasChildren && this.treeNodeItem.isExpanded) {
|
|
45
|
+
this.toggleExpanded(this.treeNodeItem);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
TreeNodeItemComponent.prototype.onCheckboxEnter = function (node) {
|
|
49
|
+
var newState = node.checked === true ? false : true;
|
|
50
|
+
node.checked = newState;
|
|
51
|
+
this.treeNodeItemClicked.emit({ item: node, event: new KeyboardEvent('keydown', { key: 'Enter' }) });
|
|
52
|
+
};
|
|
53
|
+
TreeNodeItemComponent.prototype.handleTreeNodeItemClick = function (event, treeNodeItem) {
|
|
54
|
+
var item = treeNodeItem || this.treeNodeItem;
|
|
55
|
+
this.treeNodeItemClicked.emit({ item: item, event: event });
|
|
56
|
+
};
|
|
57
|
+
TreeNodeItemComponent.prototype.handleTreeNodeItemClicked = function (_a) {
|
|
58
|
+
var event = _a.event, item = _a.item;
|
|
59
|
+
if (item.isEditing) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.handleTreeNodeItemClick(event, item);
|
|
63
|
+
};
|
|
64
|
+
TreeNodeItemComponent.prototype.toggleExpanded = function (treeNodeItem) {
|
|
65
|
+
treeNodeItem.isExpanded = !treeNodeItem.isExpanded;
|
|
66
|
+
if (treeNodeItem.isExpanded) {
|
|
67
|
+
this.nodeExpanded.emit(treeNodeItem);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
this.nodeCollapsed.emit(treeNodeItem);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
TreeNodeItemComponent.prototype.toggleEditing = function ($event) {
|
|
74
|
+
var _a;
|
|
75
|
+
$event.stopPropagation();
|
|
76
|
+
this.treeNodeItem.isEditing = !this.treeNodeItem.isEditing;
|
|
77
|
+
this.cdr.detectChanges();
|
|
78
|
+
if (this.treeNodeItem.isEditing) {
|
|
79
|
+
this.treeNodeItem.editNewValue = this.treeNodeItem.label;
|
|
80
|
+
var input = (_a = this.input) === null || _a === void 0 ? void 0 : _a.nativeElement;
|
|
81
|
+
input === null || input === void 0 ? void 0 : input.focus();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
TreeNodeItemComponent.prototype.cancelEdit = function ($event) {
|
|
85
|
+
$event.stopPropagation();
|
|
86
|
+
this.treeNodeItem.isEditing = false;
|
|
87
|
+
this.treeNodeItem.editNewValue = '';
|
|
88
|
+
this.treeNodeItem.editPreviousValue = '';
|
|
89
|
+
this.cdr.detectChanges();
|
|
90
|
+
};
|
|
91
|
+
TreeNodeItemComponent.prototype.saveEdit = function ($event) {
|
|
92
|
+
var _this = this;
|
|
93
|
+
$event.stopPropagation();
|
|
94
|
+
this.treeNodeItem.isEditing = false;
|
|
95
|
+
if (!this.treeNodeItem.editNewValue) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
this.treeNodeItem.editPreviousValue = this.treeNodeItem.label;
|
|
99
|
+
this.treeNodeItem.label = this.treeNodeItem.editNewValue;
|
|
100
|
+
var revertAction = function () {
|
|
101
|
+
_this.treeNodeItem.label = _this.treeNodeItem.editPreviousValue;
|
|
102
|
+
_this.treeNodeItem.isEditing = false;
|
|
103
|
+
_this.cdr.detectChanges();
|
|
104
|
+
};
|
|
105
|
+
this.treeNodeEdit.emit({ revertAction: revertAction, item: this.treeNodeItem, newValue: this.treeNodeItem.editNewValue, previousValue: this.treeNodeItem.editPreviousValue });
|
|
106
|
+
};
|
|
107
|
+
TreeNodeItemComponent.prototype.treeNodeEditChildEvent = function (payload) {
|
|
108
|
+
this.treeNodeEdit.emit(payload);
|
|
109
|
+
};
|
|
110
|
+
TreeNodeItemComponent.ctorParameters = function () { return [
|
|
111
|
+
{ type: ChangeDetectorRef },
|
|
112
|
+
{ type: TranslateService }
|
|
113
|
+
]; };
|
|
114
|
+
__decorate([
|
|
115
|
+
Input()
|
|
116
|
+
], TreeNodeItemComponent.prototype, "ariaLevel", void 0);
|
|
117
|
+
__decorate([
|
|
118
|
+
Input()
|
|
119
|
+
], TreeNodeItemComponent.prototype, "showCheckbox", void 0);
|
|
120
|
+
__decorate([
|
|
121
|
+
Input()
|
|
122
|
+
], TreeNodeItemComponent.prototype, "treeNodeItem", void 0);
|
|
123
|
+
__decorate([
|
|
124
|
+
Output()
|
|
125
|
+
], TreeNodeItemComponent.prototype, "treeNodeItemClicked", void 0);
|
|
126
|
+
__decorate([
|
|
127
|
+
Output()
|
|
128
|
+
], TreeNodeItemComponent.prototype, "treeNodeEdit", void 0);
|
|
129
|
+
__decorate([
|
|
130
|
+
Output()
|
|
131
|
+
], TreeNodeItemComponent.prototype, "nodeExpanded", void 0);
|
|
132
|
+
__decorate([
|
|
133
|
+
Output()
|
|
134
|
+
], TreeNodeItemComponent.prototype, "nodeCollapsed", void 0);
|
|
135
|
+
__decorate([
|
|
136
|
+
ViewChild('input', { read: ElementRef })
|
|
137
|
+
], TreeNodeItemComponent.prototype, "input", void 0);
|
|
138
|
+
TreeNodeItemComponent = __decorate([
|
|
139
|
+
Component({
|
|
140
|
+
selector: 's-tree-node-item',
|
|
141
|
+
template: "<div\n *ngIf=\"treeNodeItem\"\n class=\"tree-node-item\"\n role=\"treeitem\"\n [class.tree-node-item-selected]=\"treeNodeItem.checked\"\n [class.selectable]=\"hasChildren\"\n [attr.aria-expanded]=\"hasChildren ? treeNodeItem.isExpanded : null\"\n [attr.aria-selected]=\"treeNodeItem.checked === true\"\n [attr.aria-label]=\"treeNodeItem.label\"\n [attr.aria-level]=\"ariaLevel\"\n tabindex=\"0\"\n (keydown.enter)=\"handleTreeNodeItemClick($event)\"\n (keydown.arrowRight)=\"expandNode()\"\n (keydown.arrowLeft)=\"collapseNode()\"\n>\n <div class=\"arrow\" *ngIf=\"hasChildren || treeNodeItem.leaf === true\" (click)=\"toggleExpanded(treeNodeItem)\">\n <i [class]=\"treeNodeItem.collapsedIcon || 'fas fa-chevron-right'\" *ngIf=\"!treeNodeItem.isExpanded\"></i>\n <i [class]=\"treeNodeItem.expandedIcon || 'fas fa-chevron-down'\" *ngIf=\"treeNodeItem.isExpanded\"></i>\n </div>\n\n <div class=\"tree-node-item-text\" (click)=\"handleTreeNodeItemClick($event)\">\n <span class=\"tree-node-item-text-icon\" *ngIf=\"treeNodeItem.icon || treeNodeItem.isEditing\">\n <i [class]=\"treeNodeItem.icon\" *ngIf=\"treeNodeItem.icon && !treeNodeItem.isEditing\"></i>\n <i class=\"fas fa-edit edit\" *ngIf=\"treeNodeItem.isEditing\" (click)=\"saveEdit($event)\"></i>\n </span>\n\n <span class=\"tree-node-item-text-checkbox\" *ngIf=\"showCheckbox && !treeNodeItem.isEditing\">\n <input\n type=\"checkbox\"\n [checked]=\"treeNodeItem.checked === true\"\n [indeterminate]=\"treeNodeItem.checked === null\"\n [attr.aria-checked]=\"treeNodeItem.checked === null ? 'mixed' : treeNodeItem.checked\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"checkbox\"\n tabindex=\"0\"\n (keydown.enter)=\"onCheckboxEnter(treeNodeItem)\"\n />\n </span>\n\n <span class=\"tree-node-item-text-label\">\n <ng-container *ngIf=\"treeNodeItem.isEditing\">\n <input\n #input\n type=\"text\"\n pInputText\n class=\"tree-node-item-text-input\"\n [(ngModel)]=\"treeNodeItem.editNewValue\"\n (keydown.enter)=\"saveEdit($event)\"\n (keydown.escape)=\"cancelEdit($event)\"\n (click)=\"$event.stopPropagation()\"\n aria-label=\"Editar nome do item\"\n aria-live=\"polite\"\n />\n </ng-container>\n <ng-container *ngIf=\"!treeNodeItem.isEditing\">\n {{ treeNodeItem.label }}\n </ng-container>\n </span>\n\n <span class=\"tree-node-item-text-editable\" *ngIf=\"editable\">\n <i class=\"fas fa-pencil-alt\" (click)=\"toggleEditing($event)\" aria-label=\"Editar item\" tabindex=\"0\"></i>\n </span>\n </div>\n</div>\n\n<div\n *ngIf=\"hasChildren && treeNodeItem.isExpanded\"\n @fadeExpand\n class=\"child\"\n role=\"group\"\n @childrenAnimation\n>\n <s-tree-node-item\n *ngFor=\"let child of treeNodeItem.children\"\n [showCheckbox]=\"showCheckbox\"\n [treeNodeItem]=\"child\"\n [ariaLevel]=\"ariaLevel + 1\"\n (treeNodeItemClicked)=\"handleTreeNodeItemClicked($event)\"\n (treeNodeEdit)=\"treeNodeEditChildEvent($event)\"\n (nodeExpanded)=\"nodeExpanded.emit($event)\"\n (nodeCollapsed)=\"nodeCollapsed.emit($event)\"\n class=\"child-item\"\n >\n </s-tree-node-item>\n</div>\n",
|
|
142
|
+
animations: [
|
|
143
|
+
trigger('fadeExpand', [
|
|
144
|
+
transition(':enter', [
|
|
145
|
+
style({ height: '0px', opacity: 0, overflow: 'hidden' }),
|
|
146
|
+
animate('200ms ease-out', style({ height: '*', opacity: 1 }))
|
|
147
|
+
]),
|
|
148
|
+
transition(':leave', [
|
|
149
|
+
animate('150ms ease-in', style({ height: '0px', opacity: 0 }))
|
|
150
|
+
])
|
|
151
|
+
]),
|
|
152
|
+
trigger('childrenAnimation', [
|
|
153
|
+
transition(':enter', [
|
|
154
|
+
query(':enter', [
|
|
155
|
+
style({ opacity: 0, transform: 'translateY(-10px)' }),
|
|
156
|
+
stagger(60, [
|
|
157
|
+
animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' }))
|
|
158
|
+
])
|
|
159
|
+
], { optional: true })
|
|
160
|
+
])
|
|
161
|
+
])
|
|
162
|
+
],
|
|
163
|
+
styles: [".tree-node-item{width:100%;display:-ms-flexbox;display:flex;cursor:pointer}.tree-node-item .arrow{padding:3px 9px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tree-node-item-text{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;padding:3px 0;-ms-flex-align:center;align-items:center}.tree-node-item-text:hover{background:#f1f7f8}.tree-node-item-text-icon{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding-right:9px}.tree-node-item-text-icon .edit{color:#428bca}.tree-node-item-text-label{color:#212533;font-family:\"Open Sans\";font-size:14px;font-style:normal;font-weight:400;line-height:150%;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1}.tree-node-item-text-checkbox{padding-right:9px;display:-ms-flexbox;display:flex}.tree-node-item-text-checkbox input[type=checkbox]{accent-color:#428bca;width:14px;height:14px}.tree-node-item-text-editable{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}.tree-node-item-text-editable i{padding:9px}.tree-node-item-text-input{-ms-flex:1;flex:1}.tree-node-item.selectable .tree-node-item-text-label{font-family:\"Open Sans\";font-size:14px;font-style:normal;font-weight:700}.tree-node-item.selectable *{cursor:pointer}.tree-node-item-selected .tree-node-item-text{background:#d5e8ec}.child{overflow:hidden;padding-left:2.2em;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:5px}.child-item:first-child{padding-top:5px}"]
|
|
164
|
+
})
|
|
165
|
+
], TreeNodeItemComponent);
|
|
166
|
+
return TreeNodeItemComponent;
|
|
167
|
+
}());
|
|
168
|
+
export { TreeNodeItemComponent };
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJlZS9jb21wb25lbnRzL3RyZWUtbm9kZS1pdGVtL3RyZWUtbm9kZS1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQTRCdkQ7SUFXRSwrQkFBNkIsR0FBc0IsRUFBbUIsZ0JBQWtDO1FBQTNFLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQW1CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFWL0YsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXBCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFnRCxDQUFDO1FBQ3ZGLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDaEQsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUN4RCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO0lBSXlDLENBQUM7SUFFN0csc0JBQUksOENBQVc7YUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM3RSxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDJDQUFRO2FBQVo7O1lBQ0UsT0FBTyxPQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLFFBQVEsS0FBSSxLQUFLLENBQUM7UUFDOUMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw0Q0FBUzthQUFiO1lBQ0UsT0FBVSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLFNBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFPLENBQUM7UUFDN0csQ0FBQzs7O09BQUE7SUFFRCwwQ0FBVSxHQUFWO1FBQ0UsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUU7WUFDckQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQsNENBQVksR0FBWjtRQUNFLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRTtZQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCwrQ0FBZSxHQUFmLFVBQWdCLElBQTBCO1FBQ3hDLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCx1REFBdUIsR0FBdkIsVUFBd0IsS0FBWSxFQUFFLFlBQW1DO1FBQ3ZFLElBQU0sSUFBSSxHQUFHLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQy9DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLE1BQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHlEQUF5QixHQUF6QixVQUEwQixFQUE2RDtZQUEzRCxnQkFBSyxFQUFFLGNBQUk7UUFDckMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELDhDQUFjLEdBQWQsVUFBZSxZQUFrQztRQUMvQyxZQUFZLENBQUMsVUFBVSxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUNuRCxJQUFJLFlBQVksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVELDZDQUFhLEdBQWIsVUFBYyxNQUFhOztRQUN6QixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUMzRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDekQsSUFBTSxLQUFLLFNBQUcsSUFBSSxDQUFDLEtBQUssMENBQUUsYUFBYSxDQUFDO1lBQ3hDLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxLQUFLLEdBQUc7U0FDaEI7SUFDSCxDQUFDO0lBRUQsMENBQVUsR0FBVixVQUFXLE1BQWE7UUFDdEIsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBR0Qsd0NBQVEsR0FBUixVQUFTLE1BQWE7UUFBdEIsaUJBZ0JDO1FBZkMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUU7WUFDbkMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztRQUV6RCxJQUFNLFlBQVksR0FBRztZQUNuQixLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1lBQzlELEtBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUNwQyxLQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQTtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWSxjQUFBLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNsSyxDQUFDO0lBRUQsc0RBQXNCLEdBQXRCLFVBQXVCLE9BQXFCO1FBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O2dCQTdGaUMsaUJBQWlCO2dCQUFxQyxnQkFBZ0I7O0lBVi9GO1FBQVIsS0FBSyxFQUFFOzREQUFlO0lBQ2Q7UUFBUixLQUFLLEVBQUU7K0RBQXNCO0lBQ3JCO1FBQVIsS0FBSyxFQUFFOytEQUFxQztJQUNuQztRQUFULE1BQU0sRUFBRTtzRUFBd0Y7SUFDdkY7UUFBVCxNQUFNLEVBQUU7K0RBQWlEO0lBQ2hEO1FBQVQsTUFBTSxFQUFFOytEQUF5RDtJQUN4RDtRQUFULE1BQU0sRUFBRTtnRUFBMEQ7SUFFekI7UUFBekMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQzt3REFBc0M7SUFUcEUscUJBQXFCO1FBMUJqQyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLGl3R0FBOEM7WUFFOUMsVUFBVSxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxZQUFZLEVBQUU7b0JBQ3BCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7d0JBQ25CLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUM7d0JBQ3hELE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUM5RCxDQUFDO29CQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7d0JBQ25CLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDL0QsQ0FBQztpQkFDSCxDQUFDO2dCQUNGLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtvQkFDM0IsVUFBVSxDQUFDLFFBQVEsRUFBRTt3QkFDbkIsS0FBSyxDQUFDLFFBQVEsRUFBRTs0QkFDZCxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDOzRCQUNyRCxPQUFPLENBQUMsRUFBRSxFQUFFO2dDQUNWLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzZCQUM3RSxDQUFDO3lCQUNILEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7cUJBQ3ZCLENBQUM7aUJBQ0gsQ0FBQzthQUNIOztTQUNGLENBQUM7T0FDVyxxQkFBcUIsQ0EwR2pDO0lBQUQsNEJBQUM7Q0FBQSxBQTFHRCxJQTBHQztTQTFHWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbmltYXRlLFxuICBxdWVyeSxcbiAgc3RhZ2dlcixcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludGVybmFsVHJlZU5vZGVJdGVtLCBUcmVlTm9kZUVkaXQgfSBmcm9tICcuLi8uLi9Nb2RlbHMvdHJlZS5tb2RlbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLXRyZWUtbm9kZS1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtbm9kZS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2ZhZGVFeHBhbmQnLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3BhY2l0eTogMCwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLFxuICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicsIG9wYWNpdHk6IDEgfSkpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgYW5pbWF0ZSgnMTUwbXMgZWFzZS1pbicsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3BhY2l0eTogMCB9KSlcbiAgICAgIF0pXG4gICAgXSksXG4gICAgdHJpZ2dlcignY2hpbGRyZW5BbmltYXRpb24nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMHB4KScgfSksXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xuICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICAgIF0pXG4gICAgXSlcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZU5vZGVJdGVtQ29tcG9uZW50IHtcbiAgQElucHV0KCkgYXJpYUxldmVsID0gMDtcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRyZWVOb2RlSXRlbSE6IEludGVybmFsVHJlZU5vZGVJdGVtO1xuICBAT3V0cHV0KCkgdHJlZU5vZGVJdGVtQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtOiBJbnRlcm5hbFRyZWVOb2RlSXRlbSwgZXZlbnQ6IEV2ZW50IH0+KCk7XG4gIEBPdXRwdXQoKSB0cmVlTm9kZUVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFRyZWVOb2RlRWRpdD4oKTtcbiAgQE91dHB1dCgpIG5vZGVFeHBhbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SW50ZXJuYWxUcmVlTm9kZUl0ZW0+KCk7XG4gIEBPdXRwdXQoKSBub2RlQ29sbGFwc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxJbnRlcm5hbFRyZWVOb2RlSXRlbT4oKTtcblxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxuXG4gIGdldCBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmVlTm9kZUl0ZW0uY2hpbGRyZW4gJiYgdGhpcy50cmVlTm9kZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBlZGl0YWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlTm9kZUl0ZW0/LmVkaXRhYmxlIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGFyaWFMYWJlbCgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5zZWxlY3QnKX0gJHt0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbH1gO1xuICB9XG5cbiAgZXhwYW5kTm9kZSgpIHtcbiAgICBpZiAodGhpcy5oYXNDaGlsZHJlbiAmJiAhdGhpcy50cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgdGhpcy50b2dnbGVFeHBhbmRlZCh0aGlzLnRyZWVOb2RlSXRlbSk7XG4gICAgfVxuICB9XG5cbiAgY29sbGFwc2VOb2RlKCkge1xuICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuICYmIHRoaXMudHJlZU5vZGVJdGVtLmlzRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWQodGhpcy50cmVlTm9kZUl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hlY2tib3hFbnRlcihub2RlOiBJbnRlcm5hbFRyZWVOb2RlSXRlbSkge1xuICAgIGNvbnN0IG5ld1N0YXRlID0gbm9kZS5jaGVja2VkID09PSB0cnVlID8gZmFsc2UgOiB0cnVlO1xuICAgIG5vZGUuY2hlY2tlZCA9IG5ld1N0YXRlO1xuICAgIHRoaXMudHJlZU5vZGVJdGVtQ2xpY2tlZC5lbWl0KHsgaXRlbTogbm9kZSwgZXZlbnQ6IG5ldyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgeyBrZXk6ICdFbnRlcicgfSkgfSk7XG4gIH1cblxuICBoYW5kbGVUcmVlTm9kZUl0ZW1DbGljayhldmVudDogRXZlbnQsIHRyZWVOb2RlSXRlbT86IEludGVybmFsVHJlZU5vZGVJdGVtKSB7XG4gICAgY29uc3QgaXRlbSA9IHRyZWVOb2RlSXRlbSB8fCB0aGlzLnRyZWVOb2RlSXRlbTtcbiAgICB0aGlzLnRyZWVOb2RlSXRlbUNsaWNrZWQuZW1pdCh7IGl0ZW0sIGV2ZW50IH0pO1xuICB9XG5cbiAgaGFuZGxlVHJlZU5vZGVJdGVtQ2xpY2tlZCh7IGV2ZW50LCBpdGVtIH06IHsgZXZlbnQ6IEV2ZW50LCBpdGVtOiBJbnRlcm5hbFRyZWVOb2RlSXRlbSB9KSB7XG4gICAgaWYgKGl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlVHJlZU5vZGVJdGVtQ2xpY2soZXZlbnQsIGl0ZW0pO1xuICB9XG5cbiAgdG9nZ2xlRXhwYW5kZWQodHJlZU5vZGVJdGVtOiBJbnRlcm5hbFRyZWVOb2RlSXRlbSkge1xuICAgIHRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkID0gIXRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkO1xuICAgIGlmICh0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgdGhpcy5ub2RlRXhwYW5kZWQuZW1pdCh0cmVlTm9kZUl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vZGVDb2xsYXBzZWQuZW1pdCh0cmVlTm9kZUl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUVkaXRpbmcoJGV2ZW50OiBFdmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRyZWVOb2RlSXRlbS5pc0VkaXRpbmcgPSAhdGhpcy50cmVlTm9kZUl0ZW0uaXNFZGl0aW5nO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBpZiAodGhpcy50cmVlTm9kZUl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgICB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWUgPSB0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbDtcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlucHV0Py5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbEVkaXQoJGV2ZW50OiBFdmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRyZWVOb2RlSXRlbS5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWUgPSAnJztcbiAgICB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0UHJldmlvdXNWYWx1ZSA9ICcnO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgc2F2ZUVkaXQoJGV2ZW50OiBFdmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRyZWVOb2RlSXRlbS5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMudHJlZU5vZGVJdGVtLmVkaXROZXdWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudHJlZU5vZGVJdGVtLmVkaXRQcmV2aW91c1ZhbHVlID0gdGhpcy50cmVlTm9kZUl0ZW0ubGFiZWw7XG4gICAgdGhpcy50cmVlTm9kZUl0ZW0ubGFiZWwgPSB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWU7XG5cbiAgICBjb25zdCByZXZlcnRBY3Rpb24gPSAoKSA9PiB7XG4gICAgICB0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbCA9IHRoaXMudHJlZU5vZGVJdGVtLmVkaXRQcmV2aW91c1ZhbHVlO1xuICAgICAgdGhpcy50cmVlTm9kZUl0ZW0uaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIHRoaXMudHJlZU5vZGVFZGl0LmVtaXQoeyByZXZlcnRBY3Rpb24sIGl0ZW06IHRoaXMudHJlZU5vZGVJdGVtLCBuZXdWYWx1ZTogdGhpcy50cmVlTm9kZUl0ZW0uZWRpdE5ld1ZhbHVlLCBwcmV2aW91c1ZhbHVlOiB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0UHJldmlvdXNWYWx1ZSB9KTtcbiAgfVxuXG4gIHRyZWVOb2RlRWRpdENoaWxkRXZlbnQocGF5bG9hZDogVHJlZU5vZGVFZGl0KSB7XG4gICAgdGhpcy50cmVlTm9kZUVkaXQuZW1pdChwYXlsb2FkKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { TreeComponent } from "./tree.component";
|
|
2
|
+
export { TreeModule } from "./tree.module";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90cmVlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVHJlZU5vZGVFZGl0LCBUcmVlTm9kZUl0ZW0gfSBmcm9tIFwiLi9Nb2RlbHMvdHJlZS5tb2RlbHNcIjtcbmV4cG9ydCB7IFRyZWVDb21wb25lbnQgfSBmcm9tIFwiLi90cmVlLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgVHJlZU1vZHVsZSB9IGZyb20gXCIuL3RyZWUubW9kdWxlXCI7XG5cbiJdfQ==
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { __decorate, __read, __spread, __values } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
3
|
+
var TreeComponent = /** @class */ (function () {
|
|
4
|
+
function TreeComponent() {
|
|
5
|
+
this.treeData = [];
|
|
6
|
+
this._selected = [];
|
|
7
|
+
this.loading = false;
|
|
8
|
+
this.selectionMode = "single";
|
|
9
|
+
this.showCheckbox = false;
|
|
10
|
+
this.allExpanded = false;
|
|
11
|
+
this.selectedChange = new EventEmitter();
|
|
12
|
+
this.treeNodeItemClicked = new EventEmitter();
|
|
13
|
+
this.treeNodeEdit = new EventEmitter();
|
|
14
|
+
this.nodeExpanded = new EventEmitter();
|
|
15
|
+
this.nodeCollapsed = new EventEmitter();
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(TreeComponent.prototype, "selected", {
|
|
18
|
+
get: function () {
|
|
19
|
+
return this._selected;
|
|
20
|
+
},
|
|
21
|
+
set: function (value) {
|
|
22
|
+
if (!value) {
|
|
23
|
+
value = [];
|
|
24
|
+
}
|
|
25
|
+
if (!Array.isArray(value)) {
|
|
26
|
+
value = [value];
|
|
27
|
+
}
|
|
28
|
+
this._selected = value;
|
|
29
|
+
},
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true
|
|
32
|
+
});
|
|
33
|
+
TreeComponent.prototype.ngOnChanges = function (changes) {
|
|
34
|
+
this.onChanges(changes);
|
|
35
|
+
};
|
|
36
|
+
TreeComponent.prototype.onTreeNodeItemClicked = function (_a) {
|
|
37
|
+
var item = _a.item;
|
|
38
|
+
this.treeNodeItemClicked.emit(parseInternalTreeNodeItem(item));
|
|
39
|
+
this.toggleChecked(item);
|
|
40
|
+
};
|
|
41
|
+
TreeComponent.prototype.onTreeNodeEdit = function (payload) {
|
|
42
|
+
var revertAction = payload.revertAction, item = payload.item, newValue = payload.newValue, previousValue = payload.previousValue;
|
|
43
|
+
this.treeNodeEdit.emit({
|
|
44
|
+
revertAction: revertAction,
|
|
45
|
+
item: parseInternalTreeNodeItem(item),
|
|
46
|
+
newValue: newValue,
|
|
47
|
+
previousValue: previousValue,
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
TreeComponent.prototype.onNodeExpanded = function (item) {
|
|
51
|
+
this.nodeExpanded.emit(parseInternalTreeNodeItem(item));
|
|
52
|
+
};
|
|
53
|
+
TreeComponent.prototype.onNodeCollapsed = function (item) {
|
|
54
|
+
this.nodeCollapsed.emit(parseInternalTreeNodeItem(item));
|
|
55
|
+
};
|
|
56
|
+
TreeComponent.prototype.toggleChecked = function (treeNodeItem) {
|
|
57
|
+
var elementCheckState = !treeNodeItem.checked;
|
|
58
|
+
if (!this.multiple) {
|
|
59
|
+
flattenTree(this.treeData).forEach(function (x) { return (x.checked = false); });
|
|
60
|
+
this.selected = [treeNodeItem];
|
|
61
|
+
}
|
|
62
|
+
treeNodeItem.checked = elementCheckState;
|
|
63
|
+
if (this.multiple) {
|
|
64
|
+
this.checkTreeDataChildren(treeNodeItem);
|
|
65
|
+
}
|
|
66
|
+
this.setSelected();
|
|
67
|
+
};
|
|
68
|
+
TreeComponent.prototype.checkTreeDataChildren = function (selectedTreeNode) {
|
|
69
|
+
var parentChecked = selectedTreeNode.checked;
|
|
70
|
+
if (selectedTreeNode.children) {
|
|
71
|
+
selectedTreeNode.children.forEach(function (item) {
|
|
72
|
+
var childrens = flattenTree(item.children || []);
|
|
73
|
+
item.checked = parentChecked;
|
|
74
|
+
childrens.forEach(function (child) { return (child.checked = parentChecked); });
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
var getNodeChildrenSummary = function (node) {
|
|
78
|
+
var allChildrenChecked = node.children.every(function (y) { return y.checked === true; });
|
|
79
|
+
var someChildrenChecked = node.children.some(function (y) { return y.checked === true || y.checked === null; });
|
|
80
|
+
var allChildrenUnchecked = node.children.every(function (y) { return y.checked === false || y.checked === undefined; });
|
|
81
|
+
return { allChildrenChecked: allChildrenChecked, someChildrenChecked: someChildrenChecked, allChildrenUnchecked: allChildrenUnchecked };
|
|
82
|
+
};
|
|
83
|
+
var updateCheckedStateRecursively = function (node) {
|
|
84
|
+
var _a;
|
|
85
|
+
if (!((_a = node.children) === null || _a === void 0 ? void 0 : _a.length))
|
|
86
|
+
return;
|
|
87
|
+
node.children.forEach(updateCheckedStateRecursively);
|
|
88
|
+
var _b = getNodeChildrenSummary(node), allChildrenChecked = _b.allChildrenChecked, someChildrenChecked = _b.someChildrenChecked, allChildrenUnchecked = _b.allChildrenUnchecked;
|
|
89
|
+
if (allChildrenChecked) {
|
|
90
|
+
node.checked = true;
|
|
91
|
+
}
|
|
92
|
+
else if (someChildrenChecked) {
|
|
93
|
+
node.checked = null;
|
|
94
|
+
}
|
|
95
|
+
else if (allChildrenUnchecked) {
|
|
96
|
+
node.checked = false;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
this.treeData.forEach(updateCheckedStateRecursively);
|
|
100
|
+
};
|
|
101
|
+
TreeComponent.prototype.setSelected = function () {
|
|
102
|
+
var selected = this.selectedElements;
|
|
103
|
+
this.selected = __spread(selected);
|
|
104
|
+
this.selectedChange.emit(selected);
|
|
105
|
+
};
|
|
106
|
+
TreeComponent.prototype.onChanges = function (changes) {
|
|
107
|
+
var allExpandedChanges = changes.allExpanded;
|
|
108
|
+
var _checkIsFirstChangeWithValue = function (value) {
|
|
109
|
+
var _a;
|
|
110
|
+
if (!changes[value]) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
return (!changes[value].previousValue || changes[value].previousValue.length === 0) && ((_a = changes[value].currentValue) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
114
|
+
};
|
|
115
|
+
if (_checkIsFirstChangeWithValue('selected')) {
|
|
116
|
+
this.syncSelectedChanges();
|
|
117
|
+
}
|
|
118
|
+
if (_checkIsFirstChangeWithValue('treeData')) {
|
|
119
|
+
var isAllExpanded = this.allExpanded;
|
|
120
|
+
if (isAllExpanded) {
|
|
121
|
+
this.expandAll();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (allExpandedChanges) {
|
|
125
|
+
if (this.allExpanded) {
|
|
126
|
+
this.expandAll();
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.collapseAll();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
TreeComponent.prototype.syncSelectedChanges = function () {
|
|
134
|
+
var _this = this;
|
|
135
|
+
var treeFlatten = flattenTree(this.treeData);
|
|
136
|
+
this.selected.forEach(function (selectedItem) {
|
|
137
|
+
var item = treeFlatten.find(function (item) { return item.id === selectedItem.id; });
|
|
138
|
+
if (item) {
|
|
139
|
+
item.checked = true;
|
|
140
|
+
}
|
|
141
|
+
if (item.children && _this.multiple) {
|
|
142
|
+
item.children.forEach(function (child) {
|
|
143
|
+
child.checked = true;
|
|
144
|
+
var existChildInSelectedList = _this.selected.some(function (item) { return item.id === child.id; });
|
|
145
|
+
if (!existChildInSelectedList) {
|
|
146
|
+
_this.selected.push(child);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
var selectedElements = this.selectedElements;
|
|
152
|
+
var selectedElementsNotInSelectedList = selectedElements.filter(function (x) { return !_this.selected.some(function (y) { return y.id === x.id; }); });
|
|
153
|
+
selectedElementsNotInSelectedList.forEach(function (item) {
|
|
154
|
+
_this.checkTreeDataChildren(item);
|
|
155
|
+
});
|
|
156
|
+
this.setSelected();
|
|
157
|
+
};
|
|
158
|
+
TreeComponent.prototype.collapseAll = function () {
|
|
159
|
+
var flatten = flattenTree(this.treeData);
|
|
160
|
+
flatten.forEach(function (item) {
|
|
161
|
+
item.isExpanded = false;
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
TreeComponent.prototype.expandAll = function () {
|
|
165
|
+
var flatten = flattenTree(this.treeData);
|
|
166
|
+
flatten.forEach(function (item) {
|
|
167
|
+
item.isExpanded = true;
|
|
168
|
+
});
|
|
169
|
+
};
|
|
170
|
+
Object.defineProperty(TreeComponent.prototype, "selectedElements", {
|
|
171
|
+
get: function () {
|
|
172
|
+
return flattenTree(this.treeData)
|
|
173
|
+
.filter(function (x) { return x.checked; })
|
|
174
|
+
.filter(function (x) { var _a; return x.leaf !== true && !((_a = x.children) === null || _a === void 0 ? void 0 : _a.length); });
|
|
175
|
+
},
|
|
176
|
+
enumerable: true,
|
|
177
|
+
configurable: true
|
|
178
|
+
});
|
|
179
|
+
Object.defineProperty(TreeComponent.prototype, "multiple", {
|
|
180
|
+
get: function () {
|
|
181
|
+
return this.selectionMode === "multiple";
|
|
182
|
+
},
|
|
183
|
+
enumerable: true,
|
|
184
|
+
configurable: true
|
|
185
|
+
});
|
|
186
|
+
__decorate([
|
|
187
|
+
Input()
|
|
188
|
+
], TreeComponent.prototype, "treeData", void 0);
|
|
189
|
+
__decorate([
|
|
190
|
+
Input()
|
|
191
|
+
], TreeComponent.prototype, "selected", null);
|
|
192
|
+
__decorate([
|
|
193
|
+
Input()
|
|
194
|
+
], TreeComponent.prototype, "loading", void 0);
|
|
195
|
+
__decorate([
|
|
196
|
+
Input()
|
|
197
|
+
], TreeComponent.prototype, "selectionMode", void 0);
|
|
198
|
+
__decorate([
|
|
199
|
+
Input()
|
|
200
|
+
], TreeComponent.prototype, "showCheckbox", void 0);
|
|
201
|
+
__decorate([
|
|
202
|
+
Input()
|
|
203
|
+
], TreeComponent.prototype, "allExpanded", void 0);
|
|
204
|
+
__decorate([
|
|
205
|
+
Output()
|
|
206
|
+
], TreeComponent.prototype, "selectedChange", void 0);
|
|
207
|
+
__decorate([
|
|
208
|
+
Output()
|
|
209
|
+
], TreeComponent.prototype, "treeNodeItemClicked", void 0);
|
|
210
|
+
__decorate([
|
|
211
|
+
Output()
|
|
212
|
+
], TreeComponent.prototype, "treeNodeEdit", void 0);
|
|
213
|
+
__decorate([
|
|
214
|
+
Output()
|
|
215
|
+
], TreeComponent.prototype, "nodeExpanded", void 0);
|
|
216
|
+
__decorate([
|
|
217
|
+
Output()
|
|
218
|
+
], TreeComponent.prototype, "nodeCollapsed", void 0);
|
|
219
|
+
TreeComponent = __decorate([
|
|
220
|
+
Component({
|
|
221
|
+
selector: "s-tree",
|
|
222
|
+
template: "<div class=\"tree\" *sLoadingState=\"loading\">\n <s-tree-node-item\n *ngFor=\"let item of treeData\"\n [showCheckbox]=\"showCheckbox\"\n [treeNodeItem]=\"item\"\n (nodeExpanded)=\"onNodeExpanded($event)\"\n (nodeCollapsed)=\"onNodeCollapsed($event)\"\n (treeNodeEdit)=\"onTreeNodeEdit($event)\"\n (treeNodeItemClicked)=\"onTreeNodeItemClicked($event)\">\n </s-tree-node-item>\n</div>\n",
|
|
223
|
+
styles: [".tree{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:5px;border:1px solid #ddd;border-radius:4px;padding:15px;margin:15px}"]
|
|
224
|
+
})
|
|
225
|
+
], TreeComponent);
|
|
226
|
+
return TreeComponent;
|
|
227
|
+
}());
|
|
228
|
+
export { TreeComponent };
|
|
229
|
+
var flattenTree = function (tree) {
|
|
230
|
+
var result = [];
|
|
231
|
+
function traverse(nodes) {
|
|
232
|
+
var e_1, _a;
|
|
233
|
+
try {
|
|
234
|
+
for (var nodes_1 = __values(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {
|
|
235
|
+
var node = nodes_1_1.value;
|
|
236
|
+
result.push(node);
|
|
237
|
+
if (node.children && node.children.length) {
|
|
238
|
+
traverse(node.children);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
243
|
+
finally {
|
|
244
|
+
try {
|
|
245
|
+
if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);
|
|
246
|
+
}
|
|
247
|
+
finally { if (e_1) throw e_1.error; }
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
traverse(tree);
|
|
251
|
+
return result;
|
|
252
|
+
};
|
|
253
|
+
var ɵ0 = flattenTree;
|
|
254
|
+
var parseInternalTreeNodeItem = function (internalTreeNodeItem) {
|
|
255
|
+
var id = internalTreeNodeItem.id, label = internalTreeNodeItem.label, icon = internalTreeNodeItem.icon, checked = internalTreeNodeItem.checked, isExpanded = internalTreeNodeItem.isExpanded, payload = internalTreeNodeItem.payload, editable = internalTreeNodeItem.editable, children = internalTreeNodeItem.children;
|
|
256
|
+
var object = {
|
|
257
|
+
id: id,
|
|
258
|
+
label: label,
|
|
259
|
+
icon: icon,
|
|
260
|
+
checked: checked,
|
|
261
|
+
isExpanded: isExpanded,
|
|
262
|
+
payload: payload,
|
|
263
|
+
editable: editable,
|
|
264
|
+
_children: children === null || children === void 0 ? void 0 : children.map(parseInternalTreeNodeItem),
|
|
265
|
+
get children() {
|
|
266
|
+
return this._children;
|
|
267
|
+
},
|
|
268
|
+
set children(value) {
|
|
269
|
+
this._children = value;
|
|
270
|
+
internalTreeNodeItem.children = value;
|
|
271
|
+
},
|
|
272
|
+
};
|
|
273
|
+
Object.defineProperty(object, "_children", {
|
|
274
|
+
enumerable: false,
|
|
275
|
+
});
|
|
276
|
+
return object;
|
|
277
|
+
};
|
|
278
|
+
var ɵ1 = parseInternalTreeNodeItem;
|
|
279
|
+
export { ɵ0, ɵ1 };
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90cmVlL3RyZWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQVNqRztJQUFBO1FBRVcsYUFBUSxHQUFtQixFQUFFLENBQUM7UUFFN0IsY0FBUyxHQUFtQixFQUFFLENBQUM7UUFnQmhDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsa0JBQWEsR0FBMEIsUUFBUSxDQUFDO1FBR2hELGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBR3BCLG1CQUFjLEdBQWdELElBQUksWUFBWSxFQUFFLENBQUM7UUFHakYsd0JBQW1CLEdBQStCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHckUsaUJBQVksR0FBK0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUc5RCxpQkFBWSxHQUErQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRzlELGtCQUFhLEdBQStCLElBQUksWUFBWSxFQUFFLENBQUM7SUErSjFFLENBQUM7SUFyTUcsc0JBQVcsbUNBQVE7YUFBbkI7WUFDSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQzthQUNELFVBQW9CLEtBQXFCO1lBQ3JDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1IsS0FBSyxHQUFHLEVBQUUsQ0FBQzthQUNkO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ25CO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQzs7O09BVEE7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LFlBQUE7UUFDVixPQUFPLFNBQUE7UUFDUCxRQUFRLFVBQUE7UUFDUixTQUFTLEVBQUUsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQztRQUNuRCxJQUFJLFFBQVE7WUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLEtBQUs7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixvQkFBb0IsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFDLENBQUM7S0FDSixDQUFDO0lBQ0YsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1FBQ3ZDLFVBQVUsRUFBRSxLQUFLO0tBQ3BCLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBeUIsQ0FBQztBQUNyQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgSW50ZXJuYWxUcmVlTm9kZUl0ZW0sIFRyZWVOb2RlRWRpdCwgVHJlZU5vZGVJdGVtIH0gZnJvbSBcIi4vTW9kZWxzL3RyZWUubW9kZWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtdHJlZVwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vdHJlZS5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi90cmVlLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBUcmVlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0cmVlRGF0YTogVHJlZU5vZGVJdGVtW10gPSBbXTtcblxuICAgIHByaXZhdGUgX3NlbGVjdGVkOiBUcmVlTm9kZUl0ZW1bXSA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBzZWxlY3RlZCgpOiBUcmVlTm9kZUl0ZW1bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgICB9XG4gICAgcHVibGljIHNldCBzZWxlY3RlZCh2YWx1ZTogVHJlZU5vZGVJdGVtW10pIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFt2YWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWxlY3Rpb25Nb2RlOiBcInNpbmdsZVwiIHwgXCJtdWx0aXBsZVwiID0gXCJzaW5nbGVcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dDaGVja2JveCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWxsRXhwYW5kZWQgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RlZENoYW5nZTogRXZlbnRFbWl0dGVyPFRyZWVOb2RlSXRlbVtdIHwgVHJlZU5vZGVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0cmVlTm9kZUl0ZW1DbGlja2VkOiBFdmVudEVtaXR0ZXI8VHJlZU5vZGVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0cmVlTm9kZUVkaXQ6IEV2ZW50RW1pdHRlcjxUcmVlTm9kZUVkaXQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG5vZGVFeHBhbmRlZDogRXZlbnRFbWl0dGVyPFRyZWVOb2RlSXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbm9kZUNvbGxhcHNlZDogRXZlbnRFbWl0dGVyPFRyZWVOb2RlSXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25UcmVlTm9kZUl0ZW1DbGlja2VkKHsgaXRlbSB9OiB7IGl0ZW06IEludGVybmFsVHJlZU5vZGVJdGVtIH0pIHtcbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW1DbGlja2VkLmVtaXQocGFyc2VJbnRlcm5hbFRyZWVOb2RlSXRlbShpdGVtKSk7XG4gICAgICAgIHRoaXMudG9nZ2xlQ2hlY2tlZChpdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25UcmVlTm9kZUVkaXQocGF5bG9hZDogVHJlZU5vZGVFZGl0KSB7XG4gICAgICAgIGNvbnN0IHsgcmV2ZXJ0QWN0aW9uLCBpdGVtLCBuZXdWYWx1ZSwgcHJldmlvdXNWYWx1ZSB9ID0gcGF5bG9hZDtcbiAgICAgICAgdGhpcy50cmVlTm9kZUVkaXQuZW1pdCh7XG4gICAgICAgICAgICByZXZlcnRBY3Rpb24sXG4gICAgICAgICAgICBpdGVtOiBwYXJzZUludGVybmFsVHJlZU5vZGVJdGVtKGl0ZW0pLFxuICAgICAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ob2RlRXhwYW5kZWQoaXRlbTogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pIHtcbiAgICAgICAgdGhpcy5ub2RlRXhwYW5kZWQuZW1pdChwYXJzZUludGVybmFsVHJlZU5vZGVJdGVtKGl0ZW0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ob2RlQ29sbGFwc2VkKGl0ZW06IEludGVybmFsVHJlZU5vZGVJdGVtKSB7XG4gICAgICAgIHRoaXMubm9kZUNvbGxhcHNlZC5lbWl0KHBhcnNlSW50ZXJuYWxUcmVlTm9kZUl0ZW0oaXRlbSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlQ2hlY2tlZCh0cmVlTm9kZUl0ZW06IFRyZWVOb2RlSXRlbSkge1xuICAgICAgICBjb25zdCBlbGVtZW50Q2hlY2tTdGF0ZSA9ICF0cmVlTm9kZUl0ZW0uY2hlY2tlZDtcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmbGF0dGVuVHJlZSh0aGlzLnRyZWVEYXRhKS5mb3JFYWNoKCh4KSA9PiAoeC5jaGVja2VkID0gZmFsc2UpKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBbdHJlZU5vZGVJdGVtXTtcbiAgICAgICAgfVxuICAgICAgICB0cmVlTm9kZUl0ZW0uY2hlY2tlZCA9IGVsZW1lbnRDaGVja1N0YXRlO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5jaGVja1RyZWVEYXRhQ2hpbGRyZW4odHJlZU5vZGVJdGVtKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1RyZWVEYXRhQ2hpbGRyZW4oc2VsZWN0ZWRUcmVlTm9kZTogVHJlZU5vZGVJdGVtKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudENoZWNrZWQgPSBzZWxlY3RlZFRyZWVOb2RlLmNoZWNrZWQ7XG4gICAgICAgIGlmIChzZWxlY3RlZFRyZWVOb2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFRyZWVOb2RlLmNoaWxkcmVuLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbnMgPSBmbGF0dGVuVHJlZShpdGVtLmNoaWxkcmVuIHx8IFtdKTtcbiAgICAgICAgICAgICAgICBpdGVtLmNoZWNrZWQgPSBwYXJlbnRDaGVja2VkO1xuICAgICAgICAgICAgICAgIGNoaWxkcmVucy5mb3JFYWNoKChjaGlsZCkgPT4gKGNoaWxkLmNoZWNrZWQgPSBwYXJlbnRDaGVja2VkKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdldE5vZGVDaGlsZHJlblN1bW1hcnkgPSAobm9kZTogVHJlZU5vZGVJdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbGxDaGlsZHJlbkNoZWNrZWQgPSBub2RlLmNoaWxkcmVuLmV2ZXJ5KCh5KSA9PiB5LmNoZWNrZWQgPT09IHRydWUpO1xuICAgICAgICAgICAgY29uc3Qgc29tZUNoaWxkcmVuQ2hlY2tlZCA9IG5vZGUuY2hpbGRyZW4uc29tZSgoeSkgPT4geS5jaGVja2VkID09PSB0cnVlIHx8IHkuY2hlY2tlZCA9PT0gbnVsbCk7XG4gICAgICAgICAgICBjb25zdCBhbGxDaGlsZHJlblVuY2hlY2tlZCA9IG5vZGUuY2hpbGRyZW4uZXZlcnkoKHkpID0+IHkuY2hlY2tlZCA9PT0gZmFsc2UgfHwgeS5jaGVja2VkID09PSB1bmRlZmluZWQpO1xuICAgICAgICAgICAgcmV0dXJuIHsgYWxsQ2hpbGRyZW5DaGVja2VkLCBzb21lQ2hpbGRyZW5DaGVja2VkLCBhbGxDaGlsZHJlblVuY2hlY2tlZCB9O1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCB1cGRhdGVDaGVja2VkU3RhdGVSZWN1cnNpdmVseSA9IChub2RlOiBUcmVlTm9kZUl0ZW0pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmICghbm9kZS5jaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCh1cGRhdGVDaGVja2VkU3RhdGVSZWN1cnNpdmVseSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHsgYWxsQ2hpbGRyZW5DaGVja2VkLCBzb21lQ2hpbGRyZW5DaGVja2VkLCBhbGxDaGlsZHJlblVuY2hlY2tlZCB9ID0gZ2V0Tm9kZUNoaWxkcmVuU3VtbWFyeShub2RlKTtcbiAgICAgICAgICAgIGlmIChhbGxDaGlsZHJlbkNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzb21lQ2hpbGRyZW5DaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5jaGVja2VkID0gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsQ2hpbGRyZW5VbmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50cmVlRGF0YS5mb3JFYWNoKHVwZGF0ZUNoZWNrZWRTdGF0ZVJlY3Vyc2l2ZWx5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFNlbGVjdGVkKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50cztcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IFsuLi5zZWxlY3RlZF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChzZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhbGxFeHBhbmRlZENoYW5nZXMgPSBjaGFuZ2VzLmFsbEV4cGFuZGVkO1xuICAgICAgICBjb25zdCBfY2hlY2tJc0ZpcnN0Q2hhbmdlV2l0aFZhbHVlID0gKHZhbHVlOiBFeHRyYWN0PGtleW9mIFRyZWVDb21wb25lbnQsICdzZWxlY3RlZCcgfCAndHJlZURhdGEnPikgPT4ge1xuICAgICAgICAgICAgaWYgKCFjaGFuZ2VzW3ZhbHVlXSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoIWNoYW5nZXNbdmFsdWVdLnByZXZpb3VzVmFsdWUgfHwgY2hhbmdlc1t2YWx1ZV0ucHJldmlvdXNWYWx1ZS5sZW5ndGggPT09IDApICYmIGNoYW5nZXNbdmFsdWVdLmN1cnJlbnRWYWx1ZT8ubGVuZ3RoID4gMFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF9jaGVja0lzRmlyc3RDaGFuZ2VXaXRoVmFsdWUoJ3NlbGVjdGVkJykpIHtcbiAgICAgICAgICAgIHRoaXMuc3luY1NlbGVjdGVkQ2hhbmdlcygpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX2NoZWNrSXNGaXJzdENoYW5nZVdpdGhWYWx1ZSgndHJlZURhdGEnKSkge1xuICAgICAgICAgICAgY29uc3QgaXNBbGxFeHBhbmRlZCA9IHRoaXMuYWxsRXhwYW5kZWQ7XG4gICAgICAgICAgICBpZiAoaXNBbGxFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kQWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsRXhwYW5kZWRDaGFuZ2VzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kQWxsKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2VBbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3luY1NlbGVjdGVkQ2hhbmdlcygpIHtcbiAgICAgICAgY29uc3QgdHJlZUZsYXR0ZW4gPSBmbGF0dGVuVHJlZSh0aGlzLnRyZWVEYXRhKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5mb3JFYWNoKChzZWxlY3RlZEl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0cmVlRmxhdHRlbi5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBzZWxlY3RlZEl0ZW0uaWQpO1xuICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBpdGVtLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0Q2hpbGRJblNlbGVjdGVkTGlzdCA9IHRoaXMuc2VsZWN0ZWQuc29tZSgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gY2hpbGQuaWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0Q2hpbGRJblNlbGVjdGVkTGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50cztcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50c05vdEluU2VsZWN0ZWRMaXN0ID0gc2VsZWN0ZWRFbGVtZW50cy5maWx0ZXIoKHgpID0+ICF0aGlzLnNlbGVjdGVkLnNvbWUoKHkpID0+IHkuaWQgPT09IHguaWQpKTtcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50c05vdEluU2VsZWN0ZWRMaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tUcmVlRGF0YUNoaWxkcmVuKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29sbGFwc2VBbGwoKSB7XG4gICAgICAgIGNvbnN0IGZsYXR0ZW4gPSBmbGF0dGVuVHJlZSh0aGlzLnRyZWVEYXRhKTtcbiAgICAgICAgZmxhdHRlbi5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHBhbmRBbGwoKSB7XG4gICAgICAgIGNvbnN0IGZsYXR0ZW4gPSBmbGF0dGVuVHJlZSh0aGlzLnRyZWVEYXRhKTtcbiAgICAgICAgZmxhdHRlbi5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBzZWxlY3RlZEVsZW1lbnRzKCkge1xuICAgICAgICByZXR1cm4gZmxhdHRlblRyZWUodGhpcy50cmVlRGF0YSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHguY2hlY2tlZClcbiAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHgubGVhZiAhPT0gdHJ1ZSAmJiAheC5jaGlsZHJlbj8ubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBtdWx0aXBsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gXCJtdWx0aXBsZVwiO1xuICAgIH1cbn1cblxuY29uc3QgZmxhdHRlblRyZWUgPSA8VCA9IGFueT4odHJlZTogVHJlZU5vZGVJdGVtPFQ+W10pOiBUcmVlTm9kZUl0ZW08VD5bXSA9PiB7XG4gICAgY29uc3QgcmVzdWx0OiBUcmVlTm9kZUl0ZW08VD5bXSA9IFtdO1xuXG4gICAgZnVuY3Rpb24gdHJhdmVyc2Uobm9kZXM6IFRyZWVOb2RlSXRlbTxUPltdKSB7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRyYXZlcnNlKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhdmVyc2UodHJlZSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHBhcnNlSW50ZXJuYWxUcmVlTm9kZUl0ZW0gPSA8VCA9IGFueT4oaW50ZXJuYWxUcmVlTm9kZUl0ZW06IEludGVybmFsVHJlZU5vZGVJdGVtPFQ+KTogVHJlZU5vZGVJdGVtPFQ+ID0+IHtcbiAgICBjb25zdCB7IGlkLCBsYWJlbCwgaWNvbiwgY2hlY2tlZCwgaXNFeHBhbmRlZCwgcGF5bG9hZCwgZWRpdGFibGUsIGNoaWxkcmVuIH0gPSBpbnRlcm5hbFRyZWVOb2RlSXRlbTtcbiAgICBjb25zdCBvYmplY3QgPSB7XG4gICAgICAgIGlkLFxuICAgICAgICBsYWJlbCxcbiAgICAgICAgaWNvbixcbiAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgaXNFeHBhbmRlZCxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgZWRpdGFibGUsXG4gICAgICAgIF9jaGlsZHJlbjogY2hpbGRyZW4/Lm1hcChwYXJzZUludGVybmFsVHJlZU5vZGVJdGVtKSxcbiAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuO1xuICAgICAgICB9LFxuICAgICAgICBzZXQgY2hpbGRyZW4odmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuID0gdmFsdWU7XG4gICAgICAgICAgICBpbnRlcm5hbFRyZWVOb2RlSXRlbS5jaGlsZHJlbiA9IHZhbHVlO1xuICAgICAgICB9LFxuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgXCJfY2hpbGRyZW5cIiwge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqZWN0IGFzIFRyZWVOb2RlSXRlbTxUPjtcbn07XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { NgModule } from "@angular/core";
|
|
4
|
+
import { FormsModule } from "@angular/forms";
|
|
5
|
+
import { TranslateModule } from "@ngx-translate/core";
|
|
6
|
+
import { InputTextModule } from "primeng/inputtext";
|
|
7
|
+
import { LoadingStateModule } from "../loading-state";
|
|
8
|
+
import { TreeNodeItemComponent } from "./components/tree-node-item/tree-node-item.component";
|
|
9
|
+
import { TreeComponent } from "./tree.component";
|
|
10
|
+
var TreeModule = /** @class */ (function () {
|
|
11
|
+
function TreeModule() {
|
|
12
|
+
}
|
|
13
|
+
TreeModule = __decorate([
|
|
14
|
+
NgModule({
|
|
15
|
+
declarations: [TreeNodeItemComponent, TreeComponent],
|
|
16
|
+
imports: [CommonModule, FormsModule, InputTextModule, LoadingStateModule, TranslateModule],
|
|
17
|
+
exports: [TreeComponent],
|
|
18
|
+
})
|
|
19
|
+
], TreeModule);
|
|
20
|
+
return TreeModule;
|
|
21
|
+
}());
|
|
22
|
+
export { TreeModule };
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90cmVlL3RyZWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPakQ7SUFBQTtJQUF5QixDQUFDO0lBQWIsVUFBVTtRQUx0QixRQUFRLENBQUM7WUFDTixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLENBQUM7WUFDcEQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxDQUFDO1lBQzFGLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztTQUMzQixDQUFDO09BQ1csVUFBVSxDQUFHO0lBQUQsaUJBQUM7Q0FBQSxBQUExQixJQUEwQjtTQUFiLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSBcInByaW1lbmcvaW5wdXR0ZXh0XCI7XG5cbmltcG9ydCB7IExvYWRpbmdTdGF0ZU1vZHVsZSB9IGZyb20gXCIuLi9sb2FkaW5nLXN0YXRlXCI7XG5pbXBvcnQgeyBUcmVlTm9kZUl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3RyZWUtbm9kZS1pdGVtL3RyZWUtbm9kZS1pdGVtLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgVHJlZUNvbXBvbmVudCB9IGZyb20gXCIuL3RyZWUuY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbVHJlZU5vZGVJdGVtQ29tcG9uZW50LCBUcmVlQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgSW5wdXRUZXh0TW9kdWxlLCBMb2FkaW5nU3RhdGVNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gICAgZXhwb3J0czogW1RyZWVDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBUcmVlTW9kdWxlIHt9XG4iXX0=
|