ng-zenduit 2.0.11 → 2.0.13
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/esm2020/lib/filter/zendu-filter.component.mjs +1 -1
- package/esm2020/lib/groups/zendu-groups.component.mjs +68 -37
- package/esm2020/lib/pagination-bar/zendu-pagination-bar.component.mjs +1 -1
- package/esm2020/lib/select/zendu-select.component.mjs +21 -8
- package/esm2020/lib/top-nav/zen-top-nav.component.mjs +3 -3
- package/esm2020/lib/top-nav-item/zen-top-nav-item.component.mjs +2 -2
- package/fesm2015/ng-zenduit.mjs +95 -58
- package/fesm2015/ng-zenduit.mjs.map +1 -1
- package/fesm2020/ng-zenduit.mjs +92 -48
- package/fesm2020/ng-zenduit.mjs.map +1 -1
- package/lib/groups/zendu-groups.component.d.ts +7 -1
- package/lib/select/zendu-select.component.d.ts +6 -1
- package/lib/top-nav/zen-top-nav.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -15,18 +15,32 @@ export class ZenduGroupsComponent {
|
|
|
15
15
|
this.width = '300px';
|
|
16
16
|
this.placeholder = 'Select group';
|
|
17
17
|
this.hideSearch = false;
|
|
18
|
+
this.idProp = 'id';
|
|
19
|
+
this.displayProp = 'name';
|
|
18
20
|
this.isSelectedAllChange = new EventEmitter();
|
|
19
21
|
this.checkedChange = new EventEmitter();
|
|
20
22
|
this.isOpen = false;
|
|
23
|
+
this.openUpward = false;
|
|
21
24
|
this.searchText = '';
|
|
22
25
|
this._searchFilteredDataSource = null;
|
|
23
26
|
this._treeMap = new Map();
|
|
24
27
|
this._childCountCache = new Map();
|
|
25
28
|
}
|
|
29
|
+
getChildren(item) {
|
|
30
|
+
return item.children || item.Children || item.Childrens;
|
|
31
|
+
}
|
|
32
|
+
hasChildren(item) {
|
|
33
|
+
const children = this.getChildren(item);
|
|
34
|
+
return !!children && children.length > 0;
|
|
35
|
+
}
|
|
26
36
|
ngOnChanges(changes) {
|
|
27
37
|
if (changes['dataSource']) {
|
|
28
38
|
this.buildTreeLevels();
|
|
29
39
|
}
|
|
40
|
+
if ((changes['filteredDataSource'] || changes['dataSource']) &&
|
|
41
|
+
this._treeMap.size > 0 && this.filteredDataSource?.length) {
|
|
42
|
+
this.filteredDataSource = this.sortTreeOrder(this.filteredDataSource);
|
|
43
|
+
}
|
|
30
44
|
}
|
|
31
45
|
onOutsideClick(event) {
|
|
32
46
|
if (this.inline || !this.isOpen)
|
|
@@ -38,11 +52,18 @@ export class ZenduGroupsComponent {
|
|
|
38
52
|
}
|
|
39
53
|
toggleDropdown() {
|
|
40
54
|
this.isOpen = !this.isOpen;
|
|
41
|
-
if (
|
|
55
|
+
if (this.isOpen) {
|
|
56
|
+
this.openUpward = this.shouldOpenUpward(300);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
42
59
|
this.searchText = '';
|
|
43
60
|
this._searchFilteredDataSource = null;
|
|
44
61
|
}
|
|
45
62
|
}
|
|
63
|
+
shouldOpenUpward(dropdownHeight) {
|
|
64
|
+
const rect = this._elementRef.nativeElement.getBoundingClientRect();
|
|
65
|
+
return (window.innerHeight - rect.bottom) < dropdownHeight;
|
|
66
|
+
}
|
|
46
67
|
get displayDataSource() {
|
|
47
68
|
if (this._searchFilteredDataSource !== null) {
|
|
48
69
|
return this._searchFilteredDataSource;
|
|
@@ -57,9 +78,9 @@ export class ZenduGroupsComponent {
|
|
|
57
78
|
const lowerSearch = this.searchText.toLowerCase();
|
|
58
79
|
const matchingIds = new Set();
|
|
59
80
|
for (const el of this.dataSource) {
|
|
60
|
-
const name = typeof el.
|
|
81
|
+
const name = typeof el[this.displayProp] === 'number' ? el[this.displayProp].toString() : el[this.displayProp];
|
|
61
82
|
if (name.toLowerCase().includes(lowerSearch)) {
|
|
62
|
-
matchingIds.add(el.
|
|
83
|
+
matchingIds.add(el[this.idProp]);
|
|
63
84
|
// Include all ancestors
|
|
64
85
|
let current = el;
|
|
65
86
|
while (current.parentId != null) {
|
|
@@ -71,10 +92,10 @@ export class ZenduGroupsComponent {
|
|
|
71
92
|
}
|
|
72
93
|
}
|
|
73
94
|
}
|
|
74
|
-
let filtered = this.dataSource.filter(el => matchingIds.has(el.
|
|
95
|
+
let filtered = this.dataSource.filter(el => matchingIds.has(el[this.idProp]));
|
|
75
96
|
// Auto-expand parents when searching
|
|
76
97
|
for (const el of filtered) {
|
|
77
|
-
if (el
|
|
98
|
+
if (this.hasChildren(el)) {
|
|
78
99
|
el.isOpen = true;
|
|
79
100
|
}
|
|
80
101
|
}
|
|
@@ -89,7 +110,7 @@ export class ZenduGroupsComponent {
|
|
|
89
110
|
return '';
|
|
90
111
|
if (count === 1) {
|
|
91
112
|
const item = this.dataSource.find(d => d.checked);
|
|
92
|
-
return item ? item.
|
|
113
|
+
return item ? item[this.displayProp]?.toString() : '';
|
|
93
114
|
}
|
|
94
115
|
return `${count} selected`;
|
|
95
116
|
}
|
|
@@ -108,20 +129,21 @@ export class ZenduGroupsComponent {
|
|
|
108
129
|
buildTreeLevels() {
|
|
109
130
|
if (!this.dataSource?.length)
|
|
110
131
|
return;
|
|
111
|
-
const hasChildren = this.dataSource.some(d => d
|
|
132
|
+
const hasChildren = this.dataSource.some(d => this.hasChildren(d));
|
|
112
133
|
if (!hasChildren)
|
|
113
134
|
return;
|
|
114
135
|
const map = new Map();
|
|
115
136
|
for (const item of this.dataSource) {
|
|
116
|
-
map.set(item.
|
|
137
|
+
map.set(item[this.idProp], item);
|
|
117
138
|
}
|
|
118
139
|
this._treeMap = map;
|
|
119
140
|
for (const item of this.dataSource) {
|
|
120
|
-
|
|
121
|
-
|
|
141
|
+
const children = this.getChildren(item);
|
|
142
|
+
if (children?.length) {
|
|
143
|
+
for (const childId of children) {
|
|
122
144
|
const child = map.get(childId);
|
|
123
145
|
if (child && child.parentId == null) {
|
|
124
|
-
child.parentId = item.
|
|
146
|
+
child.parentId = item[this.idProp];
|
|
125
147
|
}
|
|
126
148
|
}
|
|
127
149
|
}
|
|
@@ -140,10 +162,11 @@ export class ZenduGroupsComponent {
|
|
|
140
162
|
}
|
|
141
163
|
this._childCountCache.clear();
|
|
142
164
|
const countChildren = (item) => {
|
|
143
|
-
|
|
165
|
+
const children = this.getChildren(item);
|
|
166
|
+
if (!children?.length)
|
|
144
167
|
return 0;
|
|
145
168
|
let count = 0;
|
|
146
|
-
for (const childId of
|
|
169
|
+
for (const childId of children) {
|
|
147
170
|
const child = map.get(childId);
|
|
148
171
|
if (child) {
|
|
149
172
|
const childLeaves = countChildren(child);
|
|
@@ -153,24 +176,25 @@ export class ZenduGroupsComponent {
|
|
|
153
176
|
return count;
|
|
154
177
|
};
|
|
155
178
|
for (const item of this.dataSource) {
|
|
156
|
-
if (item
|
|
157
|
-
this._childCountCache.set(item.
|
|
179
|
+
if (this.hasChildren(item)) {
|
|
180
|
+
this._childCountCache.set(item[this.idProp], countChildren(item));
|
|
158
181
|
}
|
|
159
182
|
}
|
|
160
183
|
}
|
|
161
184
|
sortTreeOrder(items) {
|
|
162
|
-
const itemSet = new Set(items.map(i => i.
|
|
185
|
+
const itemSet = new Set(items.map(i => i[this.idProp]));
|
|
163
186
|
const visited = new Set();
|
|
164
187
|
const ordered = [];
|
|
165
188
|
const visit = (item) => {
|
|
166
|
-
if (visited.has(item.
|
|
189
|
+
if (visited.has(item[this.idProp]))
|
|
167
190
|
return;
|
|
168
|
-
if (!itemSet.has(item.
|
|
191
|
+
if (!itemSet.has(item[this.idProp]))
|
|
169
192
|
return;
|
|
170
|
-
visited.add(item.
|
|
193
|
+
visited.add(item[this.idProp]);
|
|
171
194
|
ordered.push(item);
|
|
172
|
-
|
|
173
|
-
|
|
195
|
+
const children = this.getChildren(item);
|
|
196
|
+
if (children?.length) {
|
|
197
|
+
for (const childId of children) {
|
|
174
198
|
const child = this._treeMap.get(childId);
|
|
175
199
|
if (child) {
|
|
176
200
|
visit(child);
|
|
@@ -184,7 +208,7 @@ export class ZenduGroupsComponent {
|
|
|
184
208
|
}
|
|
185
209
|
}
|
|
186
210
|
for (const item of items) {
|
|
187
|
-
if (!visited.has(item.
|
|
211
|
+
if (!visited.has(item[this.idProp])) {
|
|
188
212
|
ordered.push(item);
|
|
189
213
|
}
|
|
190
214
|
}
|
|
@@ -204,10 +228,10 @@ export class ZenduGroupsComponent {
|
|
|
204
228
|
dsItem.isOpen = !dsItem.isOpen;
|
|
205
229
|
}
|
|
206
230
|
getChildCount(dsItem) {
|
|
207
|
-
return this._childCountCache.get(dsItem.
|
|
231
|
+
return this._childCountCache.get(dsItem[this.idProp]) || 0;
|
|
208
232
|
}
|
|
209
233
|
isTreeItemIndeterminate(dsItem) {
|
|
210
|
-
if (!dsItem
|
|
234
|
+
if (!this.hasChildren(dsItem))
|
|
211
235
|
return false;
|
|
212
236
|
const allDescendants = this.getAllDescendants(dsItem);
|
|
213
237
|
if (!allDescendants.length)
|
|
@@ -217,9 +241,10 @@ export class ZenduGroupsComponent {
|
|
|
217
241
|
}
|
|
218
242
|
getAllDescendants(dsItem) {
|
|
219
243
|
const result = [];
|
|
220
|
-
|
|
244
|
+
const children = this.getChildren(dsItem);
|
|
245
|
+
if (!children?.length)
|
|
221
246
|
return result;
|
|
222
|
-
for (const childId of
|
|
247
|
+
for (const childId of children) {
|
|
223
248
|
const child = this._treeMap.get(childId);
|
|
224
249
|
if (child) {
|
|
225
250
|
result.push(child);
|
|
@@ -232,7 +257,7 @@ export class ZenduGroupsComponent {
|
|
|
232
257
|
if (dsItem.parentId == null)
|
|
233
258
|
return;
|
|
234
259
|
const parent = this._treeMap.get(dsItem.parentId);
|
|
235
|
-
if (!parent || !parent
|
|
260
|
+
if (!parent || !this.hasChildren(parent))
|
|
236
261
|
return;
|
|
237
262
|
const allDescendants = this.getAllDescendants(parent);
|
|
238
263
|
const allChecked = allDescendants.every(d => d.checked);
|
|
@@ -240,15 +265,16 @@ export class ZenduGroupsComponent {
|
|
|
240
265
|
this.updateParentCheckedState(parent);
|
|
241
266
|
}
|
|
242
267
|
cascadeToChildren(item) {
|
|
243
|
-
|
|
268
|
+
const children = this.getChildren(item);
|
|
269
|
+
if (!children?.length)
|
|
244
270
|
return;
|
|
245
271
|
this.dataSource.forEach(data => {
|
|
246
|
-
if (item.
|
|
272
|
+
if (item[this.idProp] == data[this.idProp]) {
|
|
247
273
|
return;
|
|
248
274
|
}
|
|
249
|
-
if (
|
|
275
|
+
if (children.includes(data[this.idProp])) {
|
|
250
276
|
data.checked = item.checked;
|
|
251
|
-
if (data
|
|
277
|
+
if (this.hasChildren(data)) {
|
|
252
278
|
this.cascadeToChildren(data);
|
|
253
279
|
}
|
|
254
280
|
}
|
|
@@ -261,12 +287,13 @@ export class ZenduGroupsComponent {
|
|
|
261
287
|
let current = dsItem;
|
|
262
288
|
for (let l = dsItem.level; l >= 1; l--) {
|
|
263
289
|
const parent = this._treeMap.get(current.parentId);
|
|
264
|
-
|
|
290
|
+
const parentChildren = parent ? this.getChildren(parent) : undefined;
|
|
291
|
+
if (!parentChildren?.length) {
|
|
265
292
|
isLastFlags.push(true);
|
|
266
293
|
}
|
|
267
294
|
else {
|
|
268
|
-
const lastChildId =
|
|
269
|
-
isLastFlags.push(current.
|
|
295
|
+
const lastChildId = parentChildren[parentChildren.length - 1];
|
|
296
|
+
isLastFlags.push(current[this.idProp] === lastChildId);
|
|
270
297
|
}
|
|
271
298
|
current = parent;
|
|
272
299
|
}
|
|
@@ -289,10 +316,10 @@ export class ZenduGroupsComponent {
|
|
|
289
316
|
}
|
|
290
317
|
}
|
|
291
318
|
ZenduGroupsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduGroupsComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
292
|
-
ZenduGroupsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduGroupsComponent, selector: "zen-groups", inputs: { dataSource: "dataSource", filteredDataSource: "filteredDataSource", hideSelectAll: "hideSelectAll", isSelectedAll: "isSelectedAll", inline: "inline", width: "width", placeholder: "placeholder", hideSearch: "hideSearch" }, outputs: { isSelectedAllChange: "isSelectedAllChange", checkedChange: "checkedChange" }, host: { listeners: { "window:mousedown": "onOutsideClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<!-- Dropdown mode (default) -->\n<div class=\"zen-groups-dropdown\" *ngIf=\"!inline\" [style.width]=\"width\">\n <button class=\"zen-groups-toggle\"\n (click)=\"toggleDropdown()\"\n [ngClass]=\"{'active': isOpen}\">\n <span class=\"zen-groups-toggle-label\">\n <span *ngIf=\"!selectedLabel\" class=\"zen-groups-placeholder\">{{ placeholder | translate }}</span>\n <span *ngIf=\"selectedLabel\" class=\"zen-groups-value\">{{ selectedLabel }}</span>\n </span>\n <i class=\"material-icons zen-groups-chevron\">expand_more</i>\n </button>\n\n <div class=\"zen-groups-panel\" *ngIf=\"isOpen\">\n <div class=\"zen-groups-search\" *ngIf=\"!hideSearch\">\n <zen-search-box [(text)]=\"searchText\"\n (textChange)=\"onSearchChange()\"></zen-search-box>\n </div>\n <ng-container *ngTemplateOutlet=\"treeContent\"></ng-container>\n </div>\n</div>\n\n<!-- Inline mode (used inside zen-filter) -->\n<div class=\"zen-groups-inline\" *ngIf=\"inline\">\n <div class=\"zen-groups-search\" *ngIf=\"!hideSearch\">\n <zen-search-box [(text)]=\"searchText\"\n (textChange)=\"onSearchChange()\"></zen-search-box>\n </div>\n <ng-container *ngTemplateOutlet=\"treeContent\"></ng-container>\n</div>\n\n<!-- Shared tree content -->\n<ng-template #treeContent>\n <div class=\"zen-groups-tree\">\n <div class=\"action-item-checkbox select-all\" *ngIf=\"!hideSelectAll\">\n <zen-checkbox *ngIf=\"dataSource.length === displayDataSource.length\"\n [(checked)]=\"isSelectedAll\"\n [indeterminate]=\"hasActiveItems && !isSelectedAll\"\n [label]=\"'Select All' | translate\"\n (checkedChange)=\"onSelectAll()\">\n </zen-checkbox>\n </div>\n\n <ng-container *ngFor=\"let dsItem of displayDataSource\">\n <div *ngIf=\"isTreeItemVisible(dsItem)\"\n class=\"action-item-checkbox tree-item\"\n [style.padding-left.px]=\"24 + (dsItem.level || 0) * 24\">\n <ng-container *ngIf=\"dsItem.level > 0\">\n <div *ngFor=\"let connector of getTreeConnectors(dsItem); let i = index\"\n class=\"tree-connector\"\n [ngClass]=\"'tree-connector-' + connector\"\n [style.left.px]=\"32 + i * 24\">\n </div>\n </ng-container>\n <div class=\"tree-item-row\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [indeterminate]=\"isTreeItemIndeterminate(dsItem)\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"onCheckChanged(dsItem)\"\n [label]=\"dsItem
|
|
319
|
+
ZenduGroupsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduGroupsComponent, selector: "zen-groups", inputs: { dataSource: "dataSource", filteredDataSource: "filteredDataSource", hideSelectAll: "hideSelectAll", isSelectedAll: "isSelectedAll", inline: "inline", width: "width", placeholder: "placeholder", hideSearch: "hideSearch", idProp: "idProp", displayProp: "displayProp" }, outputs: { isSelectedAllChange: "isSelectedAllChange", checkedChange: "checkedChange" }, host: { listeners: { "window:mousedown": "onOutsideClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<!-- Dropdown mode (default) -->\n<div class=\"zen-groups-dropdown\" *ngIf=\"!inline\" [style.width]=\"width\">\n <button class=\"zen-groups-toggle\"\n (click)=\"toggleDropdown()\"\n [ngClass]=\"{'active': isOpen}\">\n <span class=\"zen-groups-toggle-label\">\n <span *ngIf=\"!selectedLabel\" class=\"zen-groups-placeholder\">{{ placeholder | translate }}</span>\n <span *ngIf=\"selectedLabel\" class=\"zen-groups-value\">{{ selectedLabel }}</span>\n </span>\n <i class=\"material-icons zen-groups-chevron\">expand_more</i>\n </button>\n\n <div class=\"zen-groups-panel\" *ngIf=\"isOpen\" [class.open-upward]=\"openUpward\">\n <div class=\"zen-groups-search\" *ngIf=\"!hideSearch\">\n <zen-search-box [(text)]=\"searchText\"\n (textChange)=\"onSearchChange()\"></zen-search-box>\n </div>\n <ng-container *ngTemplateOutlet=\"treeContent\"></ng-container>\n </div>\n</div>\n\n<!-- Inline mode (used inside zen-filter) -->\n<div class=\"zen-groups-inline\" *ngIf=\"inline\">\n <div class=\"zen-groups-search\" *ngIf=\"!hideSearch\">\n <zen-search-box [(text)]=\"searchText\"\n (textChange)=\"onSearchChange()\"></zen-search-box>\n </div>\n <ng-container *ngTemplateOutlet=\"treeContent\"></ng-container>\n</div>\n\n<!-- Shared tree content -->\n<ng-template #treeContent>\n <div class=\"zen-groups-tree\">\n <div class=\"action-item-checkbox select-all\" *ngIf=\"!hideSelectAll\">\n <zen-checkbox *ngIf=\"dataSource.length === displayDataSource.length\"\n [(checked)]=\"isSelectedAll\"\n [indeterminate]=\"hasActiveItems && !isSelectedAll\"\n [label]=\"'Select All' | translate\"\n (checkedChange)=\"onSelectAll()\">\n </zen-checkbox>\n </div>\n\n <ng-container *ngFor=\"let dsItem of displayDataSource\">\n <div *ngIf=\"isTreeItemVisible(dsItem)\"\n class=\"action-item-checkbox tree-item\"\n [style.padding-left.px]=\"24 + (dsItem.level || 0) * 24\">\n <ng-container *ngIf=\"dsItem.level > 0\">\n <div *ngFor=\"let connector of getTreeConnectors(dsItem); let i = index\"\n class=\"tree-connector\"\n [ngClass]=\"'tree-connector-' + connector\"\n [style.left.px]=\"32 + i * 24\">\n </div>\n </ng-container>\n <div class=\"tree-item-row\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [indeterminate]=\"isTreeItemIndeterminate(dsItem)\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"onCheckChanged(dsItem)\"\n [label]=\"dsItem[displayProp]?.toString() | translate\"></zen-checkbox>\n <span *ngIf=\"hasChildren(dsItem)\"\n class=\"tree-item-badge\">{{ getChildCount(dsItem) }}</span>\n </div>\n <button *ngIf=\"hasChildren(dsItem)\"\n class=\"tree-item-toggle\"\n (click)=\"toggleTreeNode(dsItem)\">\n <i class=\"material-icons tree-toggle-icon\"\n [class.open]=\"dsItem.isOpen\">expand_more</i>\n </button>\n </div>\n </ng-container>\n\n <div class=\"zen-groups-no-results\" *ngIf=\"searchText && displayDataSource.length === 0\">\n {{ 'No Results Found' | translate }}\n </div>\n </div>\n</ng-template>\n", styles: [".zen-groups-dropdown{position:relative;display:inline-block}.zen-groups-dropdown .zen-groups-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;background:#ffffff;border:1px solid #d0d5dd;border-radius:8px;padding:10px 14px;cursor:pointer;font-family:inherit;font-size:14px;font-weight:400;line-height:20px;color:#344054;transition:border-color .2s;-webkit-appearance:none;appearance:none;outline:none}.zen-groups-dropdown .zen-groups-toggle:hover{border-color:#98a2b3}.zen-groups-dropdown .zen-groups-toggle:focus,.zen-groups-dropdown .zen-groups-toggle.active{border-color:var(--color-primary, #2188d9);box-shadow:0 0 0 3px rgba(var(--color-primary, #2188d9),.12)}.zen-groups-dropdown .zen-groups-toggle.active .zen-groups-chevron{transform:rotate(180deg);color:var(--color-primary, #2188d9)}.zen-groups-dropdown .zen-groups-toggle .zen-groups-toggle-label{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zen-groups-dropdown .zen-groups-toggle .zen-groups-placeholder{color:#667085}.zen-groups-dropdown .zen-groups-toggle .zen-groups-value{color:#344054}.zen-groups-dropdown .zen-groups-toggle .zen-groups-chevron{font-size:20px;color:#667085;transition:transform .2s,color .2s;flex-shrink:0;margin-left:8px}.zen-groups-dropdown .zen-groups-panel{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:#ffffff;border:1px solid #eaecf0;border-radius:8px;box-shadow:0 4px 6px -2px #10182808,0 12px 16px -4px #10182814;z-index:10;max-height:300px;overflow-y:auto;padding:4px 0}.zen-groups-dropdown .zen-groups-panel.open-upward{top:auto;bottom:calc(100% + 4px)}.zen-groups-search{padding:8px 12px;border-bottom:1px solid #eaecf0}.zen-groups-tree .zen-groups-no-results{padding:10px 24px;color:#667085;font-size:14px;font-weight:400}.zen-groups-tree .select-all{font-weight:500}.zen-groups-tree .action-item-checkbox{font-weight:500;font-size:14px;line-height:20px;color:#344054;padding:0 24px}.zen-groups-tree .action-item-checkbox:hover{background:transparent}.zen-groups-tree .tree-item{display:flex;align-items:center;justify-content:space-between;position:relative}.zen-groups-tree .tree-item .tree-item-row{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.zen-groups-tree .tree-item .tree-item-badge{background:#f1f7fe;color:#105494;font-size:12px;font-weight:500;line-height:18px;padding:2px 8px;border-radius:16px;white-space:nowrap}.zen-groups-tree .tree-item .tree-connector{position:absolute;top:0;width:1px;background:#eaecf0;pointer-events:none}.zen-groups-tree .tree-item .tree-connector.tree-connector-through,.zen-groups-tree .tree-item .tree-connector.tree-connector-branch,.zen-groups-tree .tree-item .tree-connector.tree-connector-elbow{bottom:0}.zen-groups-tree .tree-item .tree-connector.tree-connector-none{display:none}.zen-groups-tree .tree-item .tree-item-toggle{background:none;border:none;padding:0;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.zen-groups-tree .tree-item .tree-item-toggle .tree-toggle-icon{font-size:20px;color:#667085;transition:transform .2s;transform:rotate(-90deg)}.zen-groups-tree .tree-item .tree-item-toggle .tree-toggle-icon.open{transform:rotate(0)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ZenduCheckboxComponent, selector: "zen-checkbox", inputs: ["checked", "label", "labelColor", "disabled", "disableValueChange", "indeterminate", "imageUrl", "size", "supportingText"], outputs: ["checkedChange"] }, { kind: "component", type: i3.ZenduSearchBoxComponent, selector: "zen-search-box", inputs: ["text", "delay", "autoFocus", "disabled", "placeholder"], outputs: ["textChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
293
320
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduGroupsComponent, decorators: [{
|
|
294
321
|
type: Component,
|
|
295
|
-
args: [{ selector: 'zen-groups', template: "<!-- Dropdown mode (default) -->\n<div class=\"zen-groups-dropdown\" *ngIf=\"!inline\" [style.width]=\"width\">\n <button class=\"zen-groups-toggle\"\n (click)=\"toggleDropdown()\"\n [ngClass]=\"{'active': isOpen}\">\n <span class=\"zen-groups-toggle-label\">\n <span *ngIf=\"!selectedLabel\" class=\"zen-groups-placeholder\">{{ placeholder | translate }}</span>\n <span *ngIf=\"selectedLabel\" class=\"zen-groups-value\">{{ selectedLabel }}</span>\n </span>\n <i class=\"material-icons zen-groups-chevron\">expand_more</i>\n </button>\n\n <div class=\"zen-groups-panel\" *ngIf=\"isOpen\">\n <div class=\"zen-groups-search\" *ngIf=\"!hideSearch\">\n <zen-search-box [(text)]=\"searchText\"\n (textChange)=\"onSearchChange()\"></zen-search-box>\n </div>\n <ng-container *ngTemplateOutlet=\"treeContent\"></ng-container>\n </div>\n</div>\n\n<!-- Inline mode (used inside zen-filter) -->\n<div class=\"zen-groups-inline\" *ngIf=\"inline\">\n <div class=\"zen-groups-search\" *ngIf=\"!hideSearch\">\n <zen-search-box [(text)]=\"searchText\"\n (textChange)=\"onSearchChange()\"></zen-search-box>\n </div>\n <ng-container *ngTemplateOutlet=\"treeContent\"></ng-container>\n</div>\n\n<!-- Shared tree content -->\n<ng-template #treeContent>\n <div class=\"zen-groups-tree\">\n <div class=\"action-item-checkbox select-all\" *ngIf=\"!hideSelectAll\">\n <zen-checkbox *ngIf=\"dataSource.length === displayDataSource.length\"\n [(checked)]=\"isSelectedAll\"\n [indeterminate]=\"hasActiveItems && !isSelectedAll\"\n [label]=\"'Select All' | translate\"\n (checkedChange)=\"onSelectAll()\">\n </zen-checkbox>\n </div>\n\n <ng-container *ngFor=\"let dsItem of displayDataSource\">\n <div *ngIf=\"isTreeItemVisible(dsItem)\"\n class=\"action-item-checkbox tree-item\"\n [style.padding-left.px]=\"24 + (dsItem.level || 0) * 24\">\n <ng-container *ngIf=\"dsItem.level > 0\">\n <div *ngFor=\"let connector of getTreeConnectors(dsItem); let i = index\"\n class=\"tree-connector\"\n [ngClass]=\"'tree-connector-' + connector\"\n [style.left.px]=\"32 + i * 24\">\n </div>\n </ng-container>\n <div class=\"tree-item-row\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [indeterminate]=\"isTreeItemIndeterminate(dsItem)\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"onCheckChanged(dsItem)\"\n [label]=\"dsItem
|
|
322
|
+
args: [{ selector: 'zen-groups', template: "<!-- Dropdown mode (default) -->\n<div class=\"zen-groups-dropdown\" *ngIf=\"!inline\" [style.width]=\"width\">\n <button class=\"zen-groups-toggle\"\n (click)=\"toggleDropdown()\"\n [ngClass]=\"{'active': isOpen}\">\n <span class=\"zen-groups-toggle-label\">\n <span *ngIf=\"!selectedLabel\" class=\"zen-groups-placeholder\">{{ placeholder | translate }}</span>\n <span *ngIf=\"selectedLabel\" class=\"zen-groups-value\">{{ selectedLabel }}</span>\n </span>\n <i class=\"material-icons zen-groups-chevron\">expand_more</i>\n </button>\n\n <div class=\"zen-groups-panel\" *ngIf=\"isOpen\" [class.open-upward]=\"openUpward\">\n <div class=\"zen-groups-search\" *ngIf=\"!hideSearch\">\n <zen-search-box [(text)]=\"searchText\"\n (textChange)=\"onSearchChange()\"></zen-search-box>\n </div>\n <ng-container *ngTemplateOutlet=\"treeContent\"></ng-container>\n </div>\n</div>\n\n<!-- Inline mode (used inside zen-filter) -->\n<div class=\"zen-groups-inline\" *ngIf=\"inline\">\n <div class=\"zen-groups-search\" *ngIf=\"!hideSearch\">\n <zen-search-box [(text)]=\"searchText\"\n (textChange)=\"onSearchChange()\"></zen-search-box>\n </div>\n <ng-container *ngTemplateOutlet=\"treeContent\"></ng-container>\n</div>\n\n<!-- Shared tree content -->\n<ng-template #treeContent>\n <div class=\"zen-groups-tree\">\n <div class=\"action-item-checkbox select-all\" *ngIf=\"!hideSelectAll\">\n <zen-checkbox *ngIf=\"dataSource.length === displayDataSource.length\"\n [(checked)]=\"isSelectedAll\"\n [indeterminate]=\"hasActiveItems && !isSelectedAll\"\n [label]=\"'Select All' | translate\"\n (checkedChange)=\"onSelectAll()\">\n </zen-checkbox>\n </div>\n\n <ng-container *ngFor=\"let dsItem of displayDataSource\">\n <div *ngIf=\"isTreeItemVisible(dsItem)\"\n class=\"action-item-checkbox tree-item\"\n [style.padding-left.px]=\"24 + (dsItem.level || 0) * 24\">\n <ng-container *ngIf=\"dsItem.level > 0\">\n <div *ngFor=\"let connector of getTreeConnectors(dsItem); let i = index\"\n class=\"tree-connector\"\n [ngClass]=\"'tree-connector-' + connector\"\n [style.left.px]=\"32 + i * 24\">\n </div>\n </ng-container>\n <div class=\"tree-item-row\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [indeterminate]=\"isTreeItemIndeterminate(dsItem)\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"onCheckChanged(dsItem)\"\n [label]=\"dsItem[displayProp]?.toString() | translate\"></zen-checkbox>\n <span *ngIf=\"hasChildren(dsItem)\"\n class=\"tree-item-badge\">{{ getChildCount(dsItem) }}</span>\n </div>\n <button *ngIf=\"hasChildren(dsItem)\"\n class=\"tree-item-toggle\"\n (click)=\"toggleTreeNode(dsItem)\">\n <i class=\"material-icons tree-toggle-icon\"\n [class.open]=\"dsItem.isOpen\">expand_more</i>\n </button>\n </div>\n </ng-container>\n\n <div class=\"zen-groups-no-results\" *ngIf=\"searchText && displayDataSource.length === 0\">\n {{ 'No Results Found' | translate }}\n </div>\n </div>\n</ng-template>\n", styles: [".zen-groups-dropdown{position:relative;display:inline-block}.zen-groups-dropdown .zen-groups-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;background:#ffffff;border:1px solid #d0d5dd;border-radius:8px;padding:10px 14px;cursor:pointer;font-family:inherit;font-size:14px;font-weight:400;line-height:20px;color:#344054;transition:border-color .2s;-webkit-appearance:none;appearance:none;outline:none}.zen-groups-dropdown .zen-groups-toggle:hover{border-color:#98a2b3}.zen-groups-dropdown .zen-groups-toggle:focus,.zen-groups-dropdown .zen-groups-toggle.active{border-color:var(--color-primary, #2188d9);box-shadow:0 0 0 3px rgba(var(--color-primary, #2188d9),.12)}.zen-groups-dropdown .zen-groups-toggle.active .zen-groups-chevron{transform:rotate(180deg);color:var(--color-primary, #2188d9)}.zen-groups-dropdown .zen-groups-toggle .zen-groups-toggle-label{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zen-groups-dropdown .zen-groups-toggle .zen-groups-placeholder{color:#667085}.zen-groups-dropdown .zen-groups-toggle .zen-groups-value{color:#344054}.zen-groups-dropdown .zen-groups-toggle .zen-groups-chevron{font-size:20px;color:#667085;transition:transform .2s,color .2s;flex-shrink:0;margin-left:8px}.zen-groups-dropdown .zen-groups-panel{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:#ffffff;border:1px solid #eaecf0;border-radius:8px;box-shadow:0 4px 6px -2px #10182808,0 12px 16px -4px #10182814;z-index:10;max-height:300px;overflow-y:auto;padding:4px 0}.zen-groups-dropdown .zen-groups-panel.open-upward{top:auto;bottom:calc(100% + 4px)}.zen-groups-search{padding:8px 12px;border-bottom:1px solid #eaecf0}.zen-groups-tree .zen-groups-no-results{padding:10px 24px;color:#667085;font-size:14px;font-weight:400}.zen-groups-tree .select-all{font-weight:500}.zen-groups-tree .action-item-checkbox{font-weight:500;font-size:14px;line-height:20px;color:#344054;padding:0 24px}.zen-groups-tree .action-item-checkbox:hover{background:transparent}.zen-groups-tree .tree-item{display:flex;align-items:center;justify-content:space-between;position:relative}.zen-groups-tree .tree-item .tree-item-row{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.zen-groups-tree .tree-item .tree-item-badge{background:#f1f7fe;color:#105494;font-size:12px;font-weight:500;line-height:18px;padding:2px 8px;border-radius:16px;white-space:nowrap}.zen-groups-tree .tree-item .tree-connector{position:absolute;top:0;width:1px;background:#eaecf0;pointer-events:none}.zen-groups-tree .tree-item .tree-connector.tree-connector-through,.zen-groups-tree .tree-item .tree-connector.tree-connector-branch,.zen-groups-tree .tree-item .tree-connector.tree-connector-elbow{bottom:0}.zen-groups-tree .tree-item .tree-connector.tree-connector-none{display:none}.zen-groups-tree .tree-item .tree-item-toggle{background:none;border:none;padding:0;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.zen-groups-tree .tree-item .tree-item-toggle .tree-toggle-icon{font-size:20px;color:#667085;transition:transform .2s;transform:rotate(-90deg)}.zen-groups-tree .tree-item .tree-item-toggle .tree-toggle-icon.open{transform:rotate(0)}\n"] }]
|
|
296
323
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { dataSource: [{
|
|
297
324
|
type: Input
|
|
298
325
|
}], filteredDataSource: [{
|
|
@@ -309,6 +336,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
309
336
|
type: Input
|
|
310
337
|
}], hideSearch: [{
|
|
311
338
|
type: Input
|
|
339
|
+
}], idProp: [{
|
|
340
|
+
type: Input
|
|
341
|
+
}], displayProp: [{
|
|
342
|
+
type: Input
|
|
312
343
|
}], isSelectedAllChange: [{
|
|
313
344
|
type: Output
|
|
314
345
|
}], checkedChange: [{
|
|
@@ -317,4 +348,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
317
348
|
type: HostListener,
|
|
318
349
|
args: ['window:mousedown', ['$event']]
|
|
319
350
|
}] } });
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9ncm91cHMvemVuZHUtZ3JvdXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9ncm91cHMvemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRdkIsTUFBTSxPQUFPLG9CQUFvQjtJQW9CL0IsWUFBb0IsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFuQmxDLGVBQVUsR0FBaUIsRUFBRSxDQUFDO1FBQzlCLHVCQUFrQixHQUFpQixFQUFFLENBQUM7UUFDdEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBRyxPQUFPLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxjQUFjLENBQUM7UUFDN0IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVsQix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2xELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUVsRCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNmLDhCQUF5QixHQUF3QixJQUFJLENBQUM7UUFFdEQsYUFBUSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO1FBQ2xELHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO0lBRWhCLENBQUM7SUFFeEMsV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUks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QUE1QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBa0JQLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vZmlsdGVyL2ZpbHRlcnNDb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd6ZW4tZ3JvdXBzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3plbmR1LWdyb3Vwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3plbmR1LWdyb3Vwcy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBaZW5kdUdyb3Vwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGFTb3VyY2U6IERhdGFTb3VyY2VbXSA9IFtdO1xuICBASW5wdXQoKSBmaWx0ZXJlZERhdGFTb3VyY2U6IERhdGFTb3VyY2VbXSA9IFtdO1xuICBASW5wdXQoKSBoaWRlU2VsZWN0QWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzU2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgaW5saW5lID0gZmFsc2U7XG4gIEBJbnB1dCgpIHdpZHRoID0gJzMwMHB4JztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IGdyb3VwJztcbiAgQElucHV0KCkgaGlkZVNlYXJjaCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBpc1NlbGVjdGVkQWxsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVNvdXJjZT4oKTtcblxuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG4gIHB1YmxpYyBzZWFyY2hUZXh0ID0gJyc7XG4gIHByaXZhdGUgX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZTogRGF0YVNvdXJjZVtdIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfdHJlZU1hcCA9IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBEYXRhU291cmNlPigpO1xuICBwcml2YXRlIF9jaGlsZENvdW50Q2FjaGUgPSBuZXcgTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0YVNvdXJjZSddKSB7XG4gICAgICB0aGlzLmJ1aWxkVHJlZUxldmVscygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBvbk91dHNpZGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlubGluZSB8fCAhdGhpcy5pc09wZW4pIHJldHVybjtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKCF0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLl9zZWFyY2hGaWx0ZXJlZERhdGFTb3VyY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheURhdGFTb3VyY2UoKTogRGF0YVNvdXJjZVtdIHtcbiAgICBpZiAodGhpcy5fc2VhcmNoRmlsdGVyZWREYXRhU291cmNlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VhcmNoRmlsdGVyZWREYXRhU291cmNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZERhdGFTb3VyY2U7XG4gIH1cblxuICBwdWJsaWMgb25TZWFyY2hDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG93ZXJTZWFyY2ggPSB0aGlzLnNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBtYXRjaGluZ0lkcyA9IG5ldyBTZXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xuXG4gICAgZm9yIChjb25zdCBlbCBvZiB0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgZWwubmFtZSA9PT0gJ251bWJlcicgPyBlbC5uYW1lLnRvU3RyaW5nKCkgOiBlbC5uYW1lO1xuICAgICAgaWYgKG5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlclNlYXJjaCkpIHtcbiAgICAgICAgbWF0Y2hpbmdJZHMuYWRkKGVsLmlkKTtcbiAgICAgICAgLy8gSW5jbHVkZSBhbGwgYW5jZXN0b3JzXG4gICAgICAgIGxldCBjdXJyZW50ID0gZWw7XG4gICAgICAgIHdoaWxlIChjdXJyZW50LnBhcmVudElkICE9IG51bGwpIHtcbiAgICAgICAgICBtYXRjaGluZ0lkcy5hZGQoY3VycmVudC5wYXJlbnRJZCk7XG4gICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fdHJlZU1hcC5nZXQoY3VycmVudC5wYXJlbnRJZCk7XG4gICAgICAgICAgaWYgKCFwYXJlbnQpIGJyZWFrO1xuICAgICAgICAgIGN1cnJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZmlsdGVyZWQgPSB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyKGVsID0+IG1hdGNoaW5nSWRzLmhhcyhlbC5pZCkpO1xuXG4gICAgLy8gQXV0by1leHBhbmQgcGFyZW50cyB3aGVuIHNlYXJjaGluZ1xuICAgIGZvciAoY29uc3QgZWwgb2YgZmlsdGVyZWQpIHtcbiAgICAgIGlmIChlbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGVsLmlzT3BlbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc2VhcmNoRmlsdGVyZWREYXRhU291cmNlID0gdGhpcy5zb3J0VHJlZU9yZGVyKGZpbHRlcmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2U/LmZpbHRlcihkID0+IGQuY2hlY2tlZCkubGVuZ3RoIHx8IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMuc2VsZWN0ZWRDb3VudDtcbiAgICBpZiAoY291bnQgPT09IDApIHJldHVybiAnJztcbiAgICBpZiAoY291bnQgPT09IDEpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmRhdGFTb3VyY2UuZmluZChkID0+IGQuY2hlY2tlZCk7XG4gICAgICByZXR1cm4gaXRlbSA/IGl0ZW0ubmFtZS50b1N0cmluZygpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiBgJHtjb3VudH0gc2VsZWN0ZWRgO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNBY3RpdmVJdGVtcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlPy5zb21lKGQgPT4gZC5jaGVja2VkKSB8fCBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaChkID0+IChkLmNoZWNrZWQgPSB0aGlzLmlzU2VsZWN0ZWRBbGwpKTtcbiAgICB0aGlzLmlzU2VsZWN0ZWRBbGxDaGFuZ2UuZW1pdCh0aGlzLmlzU2VsZWN0ZWRBbGwpO1xuICB9XG5cbiAgcHVibGljIG9uQ2hlY2tDaGFuZ2VkKGRzSXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIHRoaXMuY2FzY2FkZVRvQ2hpbGRyZW4oZHNJdGVtKTtcbiAgICB0aGlzLnVwZGF0ZVBhcmVudENoZWNrZWRTdGF0ZShkc0l0ZW0pO1xuICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KGRzSXRlbSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVHJlZUxldmVscygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZT8ubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSB0aGlzLmRhdGFTb3VyY2Uuc29tZShkID0+IGQuY2hpbGRyZW4/Lmxlbmd0aCA+IDApO1xuICAgIGlmICghaGFzQ2hpbGRyZW4pIHJldHVybjtcblxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBEYXRhU291cmNlPigpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIG1hcC5zZXQoaXRlbS5pZCwgaXRlbSk7XG4gICAgfVxuICAgIHRoaXMuX3RyZWVNYXAgPSBtYXA7XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5kYXRhU291cmNlKSB7XG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGRJZCBvZiBpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgY2hpbGQgPSBtYXAuZ2V0KGNoaWxkSWQpO1xuICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5wYXJlbnRJZCA9PSBudWxsKSB7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnRJZCA9IGl0ZW0uaWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgbGV0IGxldmVsID0gMDtcbiAgICAgIGxldCBjdXJyZW50ID0gaXRlbTtcbiAgICAgIHdoaWxlIChjdXJyZW50LnBhcmVudElkICE9IG51bGwpIHtcbiAgICAgICAgbGV2ZWwrKztcbiAgICAgICAgY29uc3QgcGFyZW50ID0gbWFwLmdldChjdXJyZW50LnBhcmVudElkKTtcbiAgICAgICAgaWYgKCFwYXJlbnQpIGJyZWFrO1xuICAgICAgICBjdXJyZW50ID0gcGFyZW50O1xuICAgICAgfVxuICAgICAgaXRlbS5sZXZlbCA9IGxldmVsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoaWxkQ291bnRDYWNoZS5jbGVhcigpO1xuICAgIGNvbnN0IGNvdW50Q2hpbGRyZW4gPSAoaXRlbTogRGF0YVNvdXJjZSk6IG51bWJlciA9PiB7XG4gICAgICBpZiAoIWl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkgcmV0dXJuIDA7XG4gICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgZm9yIChjb25zdCBjaGlsZElkIG9mIGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBtYXAuZ2V0KGNoaWxkSWQpO1xuICAgICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgICBjb25zdCBjaGlsZExlYXZlcyA9IGNvdW50Q2hpbGRyZW4oY2hpbGQpO1xuICAgICAgICAgIGNvdW50ICs9IGNoaWxkTGVhdmVzID4gMCA/IGNoaWxkTGVhdmVzIDogMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH07XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLl9jaGlsZENvdW50Q2FjaGUuc2V0KGl0ZW0uaWQsIGNvdW50Q2hpbGRyZW4oaXRlbSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzb3J0VHJlZU9yZGVyKGl0ZW1zOiBEYXRhU291cmNlW10pOiBEYXRhU291cmNlW10ge1xuICAgIGNvbnN0IGl0ZW1TZXQgPSBuZXcgU2V0KGl0ZW1zLm1hcChpID0+IGkuaWQpKTtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmcgfCBudW1iZXI+KCk7XG4gICAgY29uc3Qgb3JkZXJlZDogRGF0YVNvdXJjZVtdID0gW107XG4gICAgY29uc3QgdmlzaXQgPSAoaXRlbTogRGF0YVNvdXJjZSkgPT4ge1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKGl0ZW0uaWQpKSByZXR1cm47XG4gICAgICBpZiAoIWl0ZW1TZXQuaGFzKGl0ZW0uaWQpKSByZXR1cm47XG4gICAgICB2aXNpdGVkLmFkZChpdGVtLmlkKTtcbiAgICAgIG9yZGVyZWQucHVzaChpdGVtKTtcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZElkIG9mIGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBjaGlsZCA9IHRoaXMuX3RyZWVNYXAuZ2V0KGNoaWxkSWQpO1xuICAgICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgICAgdmlzaXQoY2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoaXRlbS5wYXJlbnRJZCA9PSBudWxsKSB7XG4gICAgICAgIHZpc2l0KGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoaXRlbS5pZCkpIHtcbiAgICAgICAgb3JkZXJlZC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3JkZXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBpc1RyZWVJdGVtVmlzaWJsZShkc0l0ZW06IERhdGFTb3VyY2UpOiBib29sZWFuIHtcbiAgICBpZiAoZHNJdGVtLnBhcmVudElkID09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl90cmVlTWFwLmdldChkc0l0ZW0ucGFyZW50SWQpO1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudC5pc09wZW4gJiYgdGhpcy5pc1RyZWVJdGVtVmlzaWJsZShwYXJlbnQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVRyZWVOb2RlKGRzSXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIGRzSXRlbS5pc09wZW4gPSAhZHNJdGVtLmlzT3BlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGlsZENvdW50KGRzSXRlbTogRGF0YVNvdXJjZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaWxkQ291bnRDYWNoZS5nZXQoZHNJdGVtLmlkKSB8fCAwO1xuICB9XG5cbiAgcHVibGljIGlzVHJlZUl0ZW1JbmRldGVybWluYXRlKGRzSXRlbTogRGF0YVNvdXJjZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZHNJdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBhbGxEZXNjZW5kYW50cyA9IHRoaXMuZ2V0QWxsRGVzY2VuZGFudHMoZHNJdGVtKTtcbiAgICBpZiAoIWFsbERlc2NlbmRhbnRzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGNoZWNrZWRDb3VudCA9IGFsbERlc2NlbmRhbnRzLmZpbHRlcihkID0+IGQuY2hlY2tlZCkubGVuZ3RoO1xuICAgIHJldHVybiBjaGVja2VkQ291bnQgPiAwICYmIGNoZWNrZWRDb3VudCA8IGFsbERlc2NlbmRhbnRzLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsRGVzY2VuZGFudHMoZHNJdGVtOiBEYXRhU291cmNlKTogRGF0YVNvdXJjZVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IERhdGFTb3VyY2VbXSA9IFtdO1xuICAgIGlmICghZHNJdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHJldHVybiByZXN1bHQ7XG4gICAgZm9yIChjb25zdCBjaGlsZElkIG9mIGRzSXRlbS5jaGlsZHJlbikge1xuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLl90cmVlTWFwLmdldChjaGlsZElkKTtcbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICByZXN1bHQucHVzaChjaGlsZCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZ2V0QWxsRGVzY2VuZGFudHMoY2hpbGQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUGFyZW50Q2hlY2tlZFN0YXRlKGRzSXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIGlmIChkc0l0ZW0ucGFyZW50SWQgPT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3RyZWVNYXAuZ2V0KGRzSXRlbS5wYXJlbnRJZCk7XG4gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC5jaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgYWxsRGVzY2VuZGFudHMgPSB0aGlzLmdldEFsbERlc2NlbmRhbnRzKHBhcmVudCk7XG4gICAgY29uc3QgYWxsQ2hlY2tlZCA9IGFsbERlc2NlbmRhbnRzLmV2ZXJ5KGQgPT4gZC5jaGVja2VkKTtcbiAgICBwYXJlbnQuY2hlY2tlZCA9IGFsbENoZWNrZWQ7XG4gICAgdGhpcy51cGRhdGVQYXJlbnRDaGVja2VkU3RhdGUocGFyZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FzY2FkZVRvQ2hpbGRyZW4oaXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIGlmICghaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm47XG4gICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBpZiAoaXRlbS5pZCA9PSBkYXRhLmlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmluY2x1ZGVzKDxzdHJpbmc+ZGF0YS5pZCkpIHtcbiAgICAgICAgZGF0YS5jaGVja2VkID0gaXRlbS5jaGVja2VkO1xuICAgICAgICBpZiAoZGF0YS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5jYXNjYWRlVG9DaGlsZHJlbihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFRyZWVDb25uZWN0b3JzKGRzSXRlbTogRGF0YVNvdXJjZSk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIWRzSXRlbS5sZXZlbCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgaXNMYXN0RmxhZ3M6IGJvb2xlYW5bXSA9IFtdO1xuICAgIGxldCBjdXJyZW50OiBEYXRhU291cmNlIHwgdW5kZWZpbmVkID0gZHNJdGVtO1xuXG4gICAgZm9yIChsZXQgbCA9IGRzSXRlbS5sZXZlbDsgbCA+PSAxOyBsLS0pIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3RyZWVNYXAuZ2V0KGN1cnJlbnQhLnBhcmVudElkISk7XG4gICAgICBpZiAoIXBhcmVudD8uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBpc0xhc3RGbGFncy5wdXNoKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbGFzdENoaWxkSWQgPSBwYXJlbnQuY2hpbGRyZW5bcGFyZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgICBpc0xhc3RGbGFncy5wdXNoKGN1cnJlbnQhLmlkID09PSBsYXN0Q2hpbGRJZCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gcGFyZW50O1xuICAgIH1cblxuICAgIGlzTGFzdEZsYWdzLnJldmVyc2UoKTtcblxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlzTGFzdEZsYWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpc0l0ZW1MZXZlbCA9IChpID09PSBpc0xhc3RGbGFncy5sZW5ndGggLSAxKTtcbiAgICAgIGNvbnN0IGlzTGFzdCA9IGlzTGFzdEZsYWdzW2ldO1xuXG4gICAgICBpZiAoaXNJdGVtTGV2ZWwpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goaXNMYXN0ID8gJ2VsYm93JyA6ICdicmFuY2gnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGlzTGFzdCA/ICdub25lJyA6ICd0aHJvdWdoJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJlZU1hcCgpOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBEYXRhU291cmNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyZWVNYXA7XG4gIH1cbn1cbiIsIjwhLS0gRHJvcGRvd24gbW9kZSAoZGVmYXVsdCkgLS0+XG48ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy1kcm9wZG93blwiICpuZ0lmPVwiIWlubGluZVwiIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJ6ZW4tZ3JvdXBzLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzT3Blbn1cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ6ZW4tZ3JvdXBzLXRvZ2dsZS1sYWJlbFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2VsZWN0ZWRMYWJlbFwiIGNsYXNzPVwiemVuLWdyb3Vwcy1wbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZExhYmVsXCIgY2xhc3M9XCJ6ZW4tZ3JvdXBzLXZhbHVlXCI+e3sgc2VsZWN0ZWRMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHplbi1ncm91cHMtY2hldnJvblwiPmV4cGFuZF9tb3JlPC9pPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cInplbi1ncm91cHMtcGFuZWxcIiAqbmdJZj1cImlzT3BlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy1zZWFyY2hcIiAqbmdJZj1cIiFoaWRlU2VhcmNoXCI+XG4gICAgICAgICAgICA8emVuLXNlYXJjaC1ib3ggWyh0ZXh0KV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGV4dENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCI+PC96ZW4tc2VhcmNoLWJveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gSW5saW5lIG1vZGUgKHVzZWQgaW5zaWRlIHplbi1maWx0ZXIpIC0tPlxuPGRpdiBjbGFzcz1cInplbi1ncm91cHMtaW5saW5lXCIgKm5nSWY9XCJpbmxpbmVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy1zZWFyY2hcIiAqbmdJZj1cIiFoaWRlU2VhcmNoXCI+XG4gICAgICAgIDx6ZW4tc2VhcmNoLWJveCBbKHRleHQpXT1cInNlYXJjaFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHRleHRDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoKVwiPjwvemVuLXNlYXJjaC1ib3g+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPCEtLSBTaGFyZWQgdHJlZSBjb250ZW50IC0tPlxuPG5nLXRlbXBsYXRlICN0cmVlQ29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy10cmVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbS1jaGVja2JveCBzZWxlY3QtYWxsXCIgKm5nSWY9XCIhaGlkZVNlbGVjdEFsbFwiPlxuICAgICAgICAgICAgPHplbi1jaGVja2JveCAqbmdJZj1cImRhdGFTb3VyY2UubGVuZ3RoID09PSBkaXNwbGF5RGF0YVNvdXJjZS5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKGNoZWNrZWQpXT1cImlzU2VsZWN0ZWRBbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJoYXNBY3RpdmVJdGVtcyAmJiAhaXNTZWxlY3RlZEFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU2VsZWN0IEFsbCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJvblNlbGVjdEFsbCgpXCI+XG4gICAgICAgICAgICA8L3plbi1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZHNJdGVtIG9mIGRpc3BsYXlEYXRhU291cmNlXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNUcmVlSXRlbVZpc2libGUoZHNJdGVtKVwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWl0ZW0tY2hlY2tib3ggdHJlZS1pdGVtXCJcbiAgICAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCIyNCArIChkc0l0ZW0ubGV2ZWwgfHwgMCkgKiAyNFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkc0l0ZW0ubGV2ZWwgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbm5lY3RvciBvZiBnZXRUcmVlQ29ubmVjdG9ycyhkc0l0ZW0pOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtY29ubmVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIndHJlZS1jb25uZWN0b3ItJyArIGNvbm5lY3RvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiMzIgKyBpICogMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyZWUtaXRlbS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHplbi1jaGVja2JveCBbKGNoZWNrZWQpXT1cImRzSXRlbS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpc1RyZWVJdGVtSW5kZXRlcm1pbmF0ZShkc0l0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW1hZ2VVcmxdPVwiZHNJdGVtLmltYWdlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJvbkNoZWNrQ2hhbmdlZChkc0l0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZHNJdGVtLm5hbWU/LnRvU3RyaW5nKCkgfCB0cmFuc2xhdGVcIj48L3plbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkc0l0ZW0uY2hpbGRyZW4/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJlZS1pdGVtLWJhZGdlXCI+e3sgZ2V0Q2hpbGRDb3VudChkc0l0ZW0pIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJkc0l0ZW0uY2hpbGRyZW4/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtaXRlbS10b2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRyZWVOb2RlKGRzSXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyB0cmVlLXRvZ2dsZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm9wZW5dPVwiZHNJdGVtLmlzT3BlblwiPmV4cGFuZF9tb3JlPC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ6ZW4tZ3JvdXBzLW5vLXJlc3VsdHNcIiAqbmdJZj1cInNlYXJjaFRleHQgJiYgZGlzcGxheURhdGFTb3VyY2UubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICB7eyAnTm8gUmVzdWx0cyBGb3VuZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9ncm91cHMvemVuZHUtZ3JvdXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9ncm91cHMvemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRdkIsTUFBTSxPQUFPLG9CQUFvQjtJQXVCL0IsWUFBb0IsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUF0QmxDLGVBQVUsR0FBaUIsRUFBRSxDQUFDO1FBQzlCLHVCQUFrQixHQUFpQixFQUFFLENBQUM7UUFDdEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBRyxPQUFPLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxjQUFjLENBQUM7UUFDN0IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixXQUFNLEdBQVcsSUFBSSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVcsTUFBTSxDQUFDO1FBRTVCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBRWxELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDZiw4QkFBeUIsR0FBd0IsSUFBSSxDQUFDO1FBRXRELGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNs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TSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDMUM7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7O2tIQTNVVSxvQkFBb0I7c0dBQXBCLG9CQUFvQiw2ZkNqQmpDLCt0SEE0RUE7NEZEM0RhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxZQUFZO2lHQUtiLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFnQ1AsY0FBYztzQkFEYixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICcuLi9maWx0ZXIvZmlsdGVyc0NvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3plbi1ncm91cHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vemVuZHUtZ3JvdXBzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFplbmR1R3JvdXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZVtdID0gW107XG4gIEBJbnB1dCgpIGZpbHRlcmVkRGF0YVNvdXJjZTogRGF0YVNvdXJjZVtdID0gW107XG4gIEBJbnB1dCgpIGhpZGVTZWxlY3RBbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgaXNTZWxlY3RlZEFsbCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbmxpbmUgPSBmYWxzZTtcbiAgQElucHV0KCkgd2lkdGggPSAnMzAwcHgnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdTZWxlY3QgZ3JvdXAnO1xuICBASW5wdXQoKSBoaWRlU2VhcmNoID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlkUHJvcDogc3RyaW5nID0gJ2lkJztcbiAgQElucHV0KCkgZGlzcGxheVByb3A6IHN0cmluZyA9ICduYW1lJztcblxuICBAT3V0cHV0KCkgaXNTZWxlY3RlZEFsbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFTb3VyY2U+KCk7XG5cbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuICBwdWJsaWMgb3BlblVwd2FyZCA9IGZhbHNlO1xuICBwdWJsaWMgc2VhcmNoVGV4dCA9ICcnO1xuICBwcml2YXRlIF9zZWFyY2hGaWx0ZXJlZERhdGFTb3VyY2U6IERhdGFTb3VyY2VbXSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX3RyZWVNYXAgPSBuZXcgTWFwPHN0cmluZyB8IG51bWJlciwgRGF0YVNvdXJjZT4oKTtcbiAgcHJpdmF0ZSBfY2hpbGRDb3VudENhY2hlID0gbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIHByaXZhdGUgZ2V0Q2hpbGRyZW4oaXRlbTogYW55KTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBpdGVtLmNoaWxkcmVuIHx8IGl0ZW0uQ2hpbGRyZW4gfHwgaXRlbS5DaGlsZHJlbnM7XG4gIH1cblxuICBwdWJsaWMgaGFzQ2hpbGRyZW4oaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGl0ZW0pO1xuICAgIHJldHVybiAhIWNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRhU291cmNlJ10pIHtcbiAgICAgIHRoaXMuYnVpbGRUcmVlTGV2ZWxzKCk7XG4gICAgfVxuICAgIGlmICgoY2hhbmdlc1snZmlsdGVyZWREYXRhU291cmNlJ10gfHwgY2hhbmdlc1snZGF0YVNvdXJjZSddKSAmJlxuICAgICAgdGhpcy5fdHJlZU1hcC5zaXplID4gMCAmJiB0aGlzLmZpbHRlcmVkRGF0YVNvdXJjZT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YVNvdXJjZSA9IHRoaXMuc29ydFRyZWVPcmRlcih0aGlzLmZpbHRlcmVkRGF0YVNvdXJjZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uT3V0c2lkZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaW5saW5lIHx8ICF0aGlzLmlzT3BlbikgcmV0dXJuO1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMub3BlblVwd2FyZCA9IHRoaXMuc2hvdWxkT3BlblVwd2FyZCgzMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMuX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRPcGVuVXB3YXJkKGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiAod2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20pIDwgZHJvcGRvd25IZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXlEYXRhU291cmNlKCk6IERhdGFTb3VyY2VbXSB7XG4gICAgaWYgKHRoaXMuX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWREYXRhU291cmNlO1xuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLl9zZWFyY2hGaWx0ZXJlZERhdGFTb3VyY2UgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvd2VyU2VhcmNoID0gdGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbWF0Y2hpbmdJZHMgPSBuZXcgU2V0PHN0cmluZyB8IG51bWJlcj4oKTtcblxuICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5kYXRhU291cmNlKSB7XG4gICAgICBjb25zdCBuYW1lID0gdHlwZW9mIGVsW3RoaXMuZGlzcGxheVByb3BdID09PSAnbnVtYmVyJyA/IGVsW3RoaXMuZGlzcGxheVByb3BdLnRvU3RyaW5nKCkgOiBlbFt0aGlzLmRpc3BsYXlQcm9wXTtcbiAgICAgIGlmIChuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJTZWFyY2gpKSB7XG4gICAgICAgIG1hdGNoaW5nSWRzLmFkZChlbFt0aGlzLmlkUHJvcF0pO1xuICAgICAgICAvLyBJbmNsdWRlIGFsbCBhbmNlc3RvcnNcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBlbDtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnQucGFyZW50SWQgIT0gbnVsbCkge1xuICAgICAgICAgIG1hdGNoaW5nSWRzLmFkZChjdXJyZW50LnBhcmVudElkKTtcbiAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl90cmVlTWFwLmdldChjdXJyZW50LnBhcmVudElkKTtcbiAgICAgICAgICBpZiAoIXBhcmVudCkgYnJlYWs7XG4gICAgICAgICAgY3VycmVudCA9IHBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBmaWx0ZXJlZCA9IHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIoZWwgPT4gbWF0Y2hpbmdJZHMuaGFzKGVsW3RoaXMuaWRQcm9wXSkpO1xuXG4gICAgLy8gQXV0by1leHBhbmQgcGFyZW50cyB3aGVuIHNlYXJjaGluZ1xuICAgIGZvciAoY29uc3QgZWwgb2YgZmlsdGVyZWQpIHtcbiAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKGVsKSkge1xuICAgICAgICBlbC5pc09wZW4gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3NlYXJjaEZpbHRlcmVkRGF0YVNvdXJjZSA9IHRoaXMuc29ydFRyZWVPcmRlcihmaWx0ZXJlZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlPy5maWx0ZXIoZCA9PiBkLmNoZWNrZWQpLmxlbmd0aCB8fCAwO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZExhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY291bnQgPSB0aGlzLnNlbGVjdGVkQ291bnQ7XG4gICAgaWYgKGNvdW50ID09PSAwKSByZXR1cm4gJyc7XG4gICAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5kYXRhU291cmNlLmZpbmQoZCA9PiBkLmNoZWNrZWQpO1xuICAgICAgcmV0dXJuIGl0ZW0gPyBpdGVtW3RoaXMuZGlzcGxheVByb3BdPy50b1N0cmluZygpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiBgJHtjb3VudH0gc2VsZWN0ZWRgO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNBY3RpdmVJdGVtcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlPy5zb21lKGQgPT4gZC5jaGVja2VkKSB8fCBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaChkID0+IChkLmNoZWNrZWQgPSB0aGlzLmlzU2VsZWN0ZWRBbGwpKTtcbiAgICB0aGlzLmlzU2VsZWN0ZWRBbGxDaGFuZ2UuZW1pdCh0aGlzLmlzU2VsZWN0ZWRBbGwpO1xuICB9XG5cbiAgcHVibGljIG9uQ2hlY2tDaGFuZ2VkKGRzSXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIHRoaXMuY2FzY2FkZVRvQ2hpbGRyZW4oZHNJdGVtKTtcbiAgICB0aGlzLnVwZGF0ZVBhcmVudENoZWNrZWRTdGF0ZShkc0l0ZW0pO1xuICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KGRzSXRlbSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVHJlZUxldmVscygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZT8ubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSB0aGlzLmRhdGFTb3VyY2Uuc29tZShkID0+IHRoaXMuaGFzQ2hpbGRyZW4oZCkpO1xuICAgIGlmICghaGFzQ2hpbGRyZW4pIHJldHVybjtcblxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nIHwgbnVtYmVyLCBEYXRhU291cmNlPigpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIG1hcC5zZXQoaXRlbVt0aGlzLmlkUHJvcF0sIGl0ZW0pO1xuICAgIH1cbiAgICB0aGlzLl90cmVlTWFwID0gbWFwO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGl0ZW0pO1xuICAgICAgaWYgKGNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZElkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgY2hpbGQgPSBtYXAuZ2V0KGNoaWxkSWQpO1xuICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5wYXJlbnRJZCA9PSBudWxsKSB7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnRJZCA9IGl0ZW1bdGhpcy5pZFByb3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIGxldCBsZXZlbCA9IDA7XG4gICAgICBsZXQgY3VycmVudCA9IGl0ZW07XG4gICAgICB3aGlsZSAoY3VycmVudC5wYXJlbnRJZCAhPSBudWxsKSB7XG4gICAgICAgIGxldmVsKys7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IG1hcC5nZXQoY3VycmVudC5wYXJlbnRJZCk7XG4gICAgICAgIGlmICghcGFyZW50KSBicmVhaztcbiAgICAgICAgY3VycmVudCA9IHBhcmVudDtcbiAgICAgIH1cbiAgICAgIGl0ZW0ubGV2ZWwgPSBsZXZlbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGlsZENvdW50Q2FjaGUuY2xlYXIoKTtcbiAgICBjb25zdCBjb3VudENoaWxkcmVuID0gKGl0ZW06IERhdGFTb3VyY2UpOiBudW1iZXIgPT4ge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGl0ZW0pO1xuICAgICAgaWYgKCFjaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm4gMDtcbiAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkSWQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBtYXAuZ2V0KGNoaWxkSWQpO1xuICAgICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgICBjb25zdCBjaGlsZExlYXZlcyA9IGNvdW50Q2hpbGRyZW4oY2hpbGQpO1xuICAgICAgICAgIGNvdW50ICs9IGNoaWxkTGVhdmVzID4gMCA/IGNoaWxkTGVhdmVzIDogMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH07XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4oaXRlbSkpIHtcbiAgICAgICAgdGhpcy5fY2hpbGRDb3VudENhY2hlLnNldChpdGVtW3RoaXMuaWRQcm9wXSwgY291bnRDaGlsZHJlbihpdGVtKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNvcnRUcmVlT3JkZXIoaXRlbXM6IERhdGFTb3VyY2VbXSk6IERhdGFTb3VyY2VbXSB7XG4gICAgY29uc3QgaXRlbVNldCA9IG5ldyBTZXQoaXRlbXMubWFwKGkgPT4gaVt0aGlzLmlkUHJvcF0pKTtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmcgfCBudW1iZXI+KCk7XG4gICAgY29uc3Qgb3JkZXJlZDogRGF0YVNvdXJjZVtdID0gW107XG4gICAgY29uc3QgdmlzaXQgPSAoaXRlbTogRGF0YVNvdXJjZSkgPT4ge1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKGl0ZW1bdGhpcy5pZFByb3BdKSkgcmV0dXJuO1xuICAgICAgaWYgKCFpdGVtU2V0LmhhcyhpdGVtW3RoaXMuaWRQcm9wXSkpIHJldHVybjtcbiAgICAgIHZpc2l0ZWQuYWRkKGl0ZW1bdGhpcy5pZFByb3BdKTtcbiAgICAgIG9yZGVyZWQucHVzaChpdGVtKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihpdGVtKTtcbiAgICAgIGlmIChjaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGRJZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5fdHJlZU1hcC5nZXQoY2hpbGRJZCk7XG4gICAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgICB2aXNpdChjaGlsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChpdGVtLnBhcmVudElkID09IG51bGwpIHtcbiAgICAgICAgdmlzaXQoaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaWYgKCF2aXNpdGVkLmhhcyhpdGVtW3RoaXMuaWRQcm9wXSkpIHtcbiAgICAgICAgb3JkZXJlZC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3JkZXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBpc1RyZWVJdGVtVmlzaWJsZShkc0l0ZW06IERhdGFTb3VyY2UpOiBib29sZWFuIHtcbiAgICBpZiAoZHNJdGVtLnBhcmVudElkID09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl90cmVlTWFwLmdldChkc0l0ZW0ucGFyZW50SWQpO1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudC5pc09wZW4gJiYgdGhpcy5pc1RyZWVJdGVtVmlzaWJsZShwYXJlbnQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVRyZWVOb2RlKGRzSXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIGRzSXRlbS5pc09wZW4gPSAhZHNJdGVtLmlzT3BlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGlsZENvdW50KGRzSXRlbTogRGF0YVNvdXJjZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaWxkQ291bnRDYWNoZS5nZXQoZHNJdGVtW3RoaXMuaWRQcm9wXSkgfHwgMDtcbiAgfVxuXG4gIHB1YmxpYyBpc1RyZWVJdGVtSW5kZXRlcm1pbmF0ZShkc0l0ZW06IERhdGFTb3VyY2UpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4oZHNJdGVtKSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGFsbERlc2NlbmRhbnRzID0gdGhpcy5nZXRBbGxEZXNjZW5kYW50cyhkc0l0ZW0pO1xuICAgIGlmICghYWxsRGVzY2VuZGFudHMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgY2hlY2tlZENvdW50ID0gYWxsRGVzY2VuZGFudHMuZmlsdGVyKGQgPT4gZC5jaGVja2VkKS5sZW5ndGg7XG4gICAgcmV0dXJuIGNoZWNrZWRDb3VudCA+IDAgJiYgY2hlY2tlZENvdW50IDwgYWxsRGVzY2VuZGFudHMubGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGxEZXNjZW5kYW50cyhkc0l0ZW06IERhdGFTb3VyY2UpOiBEYXRhU291cmNlW10ge1xuICAgIGNvbnN0IHJlc3VsdDogRGF0YVNvdXJjZVtdID0gW107XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGRzSXRlbSk7XG4gICAgaWYgKCFjaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm4gcmVzdWx0O1xuICAgIGZvciAoY29uc3QgY2hpbGRJZCBvZiBjaGlsZHJlbikge1xuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLl90cmVlTWFwLmdldChjaGlsZElkKTtcbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICByZXN1bHQucHVzaChjaGlsZCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZ2V0QWxsRGVzY2VuZGFudHMoY2hpbGQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUGFyZW50Q2hlY2tlZFN0YXRlKGRzSXRlbTogRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgIGlmIChkc0l0ZW0ucGFyZW50SWQgPT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3RyZWVNYXAuZ2V0KGRzSXRlbS5wYXJlbnRJZCk7XG4gICAgaWYgKCFwYXJlbnQgfHwgIXRoaXMuaGFzQ2hpbGRyZW4ocGFyZW50KSkgcmV0dXJuO1xuICAgIGNvbnN0IGFsbERlc2NlbmRhbnRzID0gdGhpcy5nZXRBbGxEZXNjZW5kYW50cyhwYXJlbnQpO1xuICAgIGNvbnN0IGFsbENoZWNrZWQgPSBhbGxEZXNjZW5kYW50cy5ldmVyeShkID0+IGQuY2hlY2tlZCk7XG4gICAgcGFyZW50LmNoZWNrZWQgPSBhbGxDaGVja2VkO1xuICAgIHRoaXMudXBkYXRlUGFyZW50Q2hlY2tlZFN0YXRlKHBhcmVudCk7XG4gIH1cblxuICBwcml2YXRlIGNhc2NhZGVUb0NoaWxkcmVuKGl0ZW06IERhdGFTb3VyY2UpOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oaXRlbSk7XG4gICAgaWYgKCFjaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm47XG4gICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBpZiAoaXRlbVt0aGlzLmlkUHJvcF0gPT0gZGF0YVt0aGlzLmlkUHJvcF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkcmVuLmluY2x1ZGVzKDxzdHJpbmc+ZGF0YVt0aGlzLmlkUHJvcF0pKSB7XG4gICAgICAgIGRhdGEuY2hlY2tlZCA9IGl0ZW0uY2hlY2tlZDtcbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4oZGF0YSkpIHtcbiAgICAgICAgICB0aGlzLmNhc2NhZGVUb0NoaWxkcmVuKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJlZUNvbm5lY3RvcnMoZHNJdGVtOiBEYXRhU291cmNlKTogc3RyaW5nW10ge1xuICAgIGlmICghZHNJdGVtLmxldmVsKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBpc0xhc3RGbGFnczogYm9vbGVhbltdID0gW107XG4gICAgbGV0IGN1cnJlbnQ6IERhdGFTb3VyY2UgfCB1bmRlZmluZWQgPSBkc0l0ZW07XG5cbiAgICBmb3IgKGxldCBsID0gZHNJdGVtLmxldmVsOyBsID49IDE7IGwtLSkge1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fdHJlZU1hcC5nZXQoY3VycmVudCEucGFyZW50SWQhKTtcbiAgICAgIGNvbnN0IHBhcmVudENoaWxkcmVuID0gcGFyZW50ID8gdGhpcy5nZXRDaGlsZHJlbihwYXJlbnQpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCFwYXJlbnRDaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGlzTGFzdEZsYWdzLnB1c2godHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBsYXN0Q2hpbGRJZCA9IHBhcmVudENoaWxkcmVuW3BhcmVudENoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgICBpc0xhc3RGbGFncy5wdXNoKGN1cnJlbnQhW3RoaXMuaWRQcm9wXSA9PT0gbGFzdENoaWxkSWQpO1xuICAgICAgfVxuICAgICAgY3VycmVudCA9IHBhcmVudDtcbiAgICB9XG5cbiAgICBpc0xhc3RGbGFncy5yZXZlcnNlKCk7XG5cbiAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpc0xhc3RGbGFncy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXNJdGVtTGV2ZWwgPSAoaSA9PT0gaXNMYXN0RmxhZ3MubGVuZ3RoIC0gMSk7XG4gICAgICBjb25zdCBpc0xhc3QgPSBpc0xhc3RGbGFnc1tpXTtcblxuICAgICAgaWYgKGlzSXRlbUxldmVsKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGlzTGFzdCA/ICdlbGJvdycgOiAnYnJhbmNoJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQucHVzaChpc0xhc3QgPyAnbm9uZScgOiAndGhyb3VnaCcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldFRyZWVNYXAoKTogTWFwPHN0cmluZyB8IG51bWJlciwgRGF0YVNvdXJjZT4ge1xuICAgIHJldHVybiB0aGlzLl90cmVlTWFwO1xuICB9XG59XG4iLCI8IS0tIERyb3Bkb3duIG1vZGUgKGRlZmF1bHQpIC0tPlxuPGRpdiBjbGFzcz1cInplbi1ncm91cHMtZHJvcGRvd25cIiAqbmdJZj1cIiFpbmxpbmVcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiemVuLWdyb3Vwcy10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc09wZW59XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiemVuLWdyb3Vwcy10b2dnbGUtbGFiZWxcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNlbGVjdGVkTGFiZWxcIiBjbGFzcz1cInplbi1ncm91cHMtcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRMYWJlbFwiIGNsYXNzPVwiemVuLWdyb3Vwcy12YWx1ZVwiPnt7IHNlbGVjdGVkTGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyB6ZW4tZ3JvdXBzLWNoZXZyb25cIj5leHBhbmRfbW9yZTwvaT5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJ6ZW4tZ3JvdXBzLXBhbmVsXCIgKm5nSWY9XCJpc09wZW5cIiBbY2xhc3Mub3Blbi11cHdhcmRdPVwib3BlblVwd2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy1zZWFyY2hcIiAqbmdJZj1cIiFoaWRlU2VhcmNoXCI+XG4gICAgICAgICAgICA8emVuLXNlYXJjaC1ib3ggWyh0ZXh0KV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGV4dENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCI+PC96ZW4tc2VhcmNoLWJveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gSW5saW5lIG1vZGUgKHVzZWQgaW5zaWRlIHplbi1maWx0ZXIpIC0tPlxuPGRpdiBjbGFzcz1cInplbi1ncm91cHMtaW5saW5lXCIgKm5nSWY9XCJpbmxpbmVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy1zZWFyY2hcIiAqbmdJZj1cIiFoaWRlU2VhcmNoXCI+XG4gICAgICAgIDx6ZW4tc2VhcmNoLWJveCBbKHRleHQpXT1cInNlYXJjaFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHRleHRDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoKVwiPjwvemVuLXNlYXJjaC1ib3g+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPCEtLSBTaGFyZWQgdHJlZSBjb250ZW50IC0tPlxuPG5nLXRlbXBsYXRlICN0cmVlQ29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiemVuLWdyb3Vwcy10cmVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbS1jaGVja2JveCBzZWxlY3QtYWxsXCIgKm5nSWY9XCIhaGlkZVNlbGVjdEFsbFwiPlxuICAgICAgICAgICAgPHplbi1jaGVja2JveCAqbmdJZj1cImRhdGFTb3VyY2UubGVuZ3RoID09PSBkaXNwbGF5RGF0YVNvdXJjZS5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKGNoZWNrZWQpXT1cImlzU2VsZWN0ZWRBbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJoYXNBY3RpdmVJdGVtcyAmJiAhaXNTZWxlY3RlZEFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU2VsZWN0IEFsbCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJvblNlbGVjdEFsbCgpXCI+XG4gICAgICAgICAgICA8L3plbi1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZHNJdGVtIG9mIGRpc3BsYXlEYXRhU291cmNlXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNUcmVlSXRlbVZpc2libGUoZHNJdGVtKVwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWl0ZW0tY2hlY2tib3ggdHJlZS1pdGVtXCJcbiAgICAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCIyNCArIChkc0l0ZW0ubGV2ZWwgfHwgMCkgKiAyNFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkc0l0ZW0ubGV2ZWwgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbm5lY3RvciBvZiBnZXRUcmVlQ29ubmVjdG9ycyhkc0l0ZW0pOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtY29ubmVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIndHJlZS1jb25uZWN0b3ItJyArIGNvbm5lY3RvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiMzIgKyBpICogMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyZWUtaXRlbS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHplbi1jaGVja2JveCBbKGNoZWNrZWQpXT1cImRzSXRlbS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpc1RyZWVJdGVtSW5kZXRlcm1pbmF0ZShkc0l0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW1hZ2VVcmxdPVwiZHNJdGVtLmltYWdlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJvbkNoZWNrQ2hhbmdlZChkc0l0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZHNJdGVtW2Rpc3BsYXlQcm9wXT8udG9TdHJpbmcoKSB8IHRyYW5zbGF0ZVwiPjwvemVuLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhhc0NoaWxkcmVuKGRzSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtaXRlbS1iYWRnZVwiPnt7IGdldENoaWxkQ291bnQoZHNJdGVtKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaGFzQ2hpbGRyZW4oZHNJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtaXRlbS10b2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRyZWVOb2RlKGRzSXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyB0cmVlLXRvZ2dsZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm9wZW5dPVwiZHNJdGVtLmlzT3BlblwiPmV4cGFuZF9tb3JlPC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ6ZW4tZ3JvdXBzLW5vLXJlc3VsdHNcIiAqbmdJZj1cInNlYXJjaFRleHQgJiYgZGlzcGxheURhdGFTb3VyY2UubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICB7eyAnTm8gUmVzdWx0cyBGb3VuZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -60,7 +60,7 @@ export class ZenduPaginationBarComponent {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
ZenduPaginationBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduPaginationBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
-
ZenduPaginationBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduPaginationBarComponent, selector: "zen-pagination-bar", inputs: { page: "page", perPage: "perPage", count: "count" }, outputs: { pageChange: "pageChange", perPageChange: "perPageChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pagination-component\">\n <div class=\"select-dropdown\">\n <label>{{\"Rows per page\" | translate}}:</label>\n <zen-select [(selectModel)]=\"perPage\"\n [options]=\"availablePagesSize\"\n [displayProp]=\"'text'\"\n [idProp]=\"'id'\"\n (selectModelChange)=\"updatePageSize()\"></zen-select>\n </div>\n <div class=\"pages\">\n <button class=\"pagination-button\"\n [disabled]=\"page - 1 <= 0\"\n (click)=\"prevPage()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </button>\n <label>{{((page - 1) * perPage) + 1 }} - {{endRowSize()}} of {{count}}</label>\n <button class=\"pagination-button\"\n [disabled]=\"page + 1 > totalPages\"\n (click)=\"nextPage()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </button>\n </div>\n</div>\n", styles: [".pagination-component{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.pagination-component .select-dropdown{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .select-dropdown label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:120%;color:#4f4f4f}.pagination-component .pages{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .pages label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:16px;color:#828282}.pagination-component .pages .pagination-button{display:flex;flex-direction:row;align-items:center;height:16px;padding:0;box-sizing:border-box;white-space:nowrap;border:none;border-radius:50%;transition:.1s;cursor:pointer;color:#828282;background:#FFFFFF}.pagination-component .pages .pagination-button:hover{color:#4f4f4f;background:#F2F2F2}.pagination-component .pages .pagination-button:focus{outline:none;color:#2188d9;background:#F4F9FD}.pagination-component .pages .pagination-button:disabled{color:#e0e0e0;background:#FFFFFF;cursor:not-allowed}.pagination-component .pages .pagination-button .material-icons{font-size:16px;height:16px;width:16px}\n"], dependencies: [{ kind: "component", type: i1.ZenduSelectComponent, selector: "zen-select", inputs: ["selectModel", "options", "label", "supportingText", "hintText", "placeholder", "leadingType", "leadingIcon", "leadingAvatar", "leadingDotColor", "displayProp", "idProp", "hasSearch", "isMultiselect", "multiselect", "hideSelectAll", "hideTreeSearch", "disabled", "error", "errorMessage", "destructive", "size", "returnOption", "isTruncate", "enableAddNewOption", "showDefaultAddOption", "newOptionText", "enableRemoveOption", "removeOptionText", "isLazyLoading", "lazyLoader", "preferredOpenDirection"], outputs: ["selectModelChange", "addNewOption", "removeOption", "closed"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
63
|
+
ZenduPaginationBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduPaginationBarComponent, selector: "zen-pagination-bar", inputs: { page: "page", perPage: "perPage", count: "count" }, outputs: { pageChange: "pageChange", perPageChange: "perPageChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pagination-component\">\n <div class=\"select-dropdown\">\n <label>{{\"Rows per page\" | translate}}:</label>\n <zen-select [(selectModel)]=\"perPage\"\n [options]=\"availablePagesSize\"\n [displayProp]=\"'text'\"\n [idProp]=\"'id'\"\n (selectModelChange)=\"updatePageSize()\"></zen-select>\n </div>\n <div class=\"pages\">\n <button class=\"pagination-button\"\n [disabled]=\"page - 1 <= 0\"\n (click)=\"prevPage()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </button>\n <label>{{((page - 1) * perPage) + 1 }} - {{endRowSize()}} of {{count}}</label>\n <button class=\"pagination-button\"\n [disabled]=\"page + 1 > totalPages\"\n (click)=\"nextPage()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </button>\n </div>\n</div>\n", styles: [".pagination-component{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.pagination-component .select-dropdown{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .select-dropdown label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:120%;color:#4f4f4f}.pagination-component .pages{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .pages label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:16px;color:#828282}.pagination-component .pages .pagination-button{display:flex;flex-direction:row;align-items:center;height:16px;padding:0;box-sizing:border-box;white-space:nowrap;border:none;border-radius:50%;transition:.1s;cursor:pointer;color:#828282;background:#FFFFFF}.pagination-component .pages .pagination-button:hover{color:#4f4f4f;background:#F2F2F2}.pagination-component .pages .pagination-button:focus{outline:none;color:#2188d9;background:#F4F9FD}.pagination-component .pages .pagination-button:disabled{color:#e0e0e0;background:#FFFFFF;cursor:not-allowed}.pagination-component .pages .pagination-button .material-icons{font-size:16px;height:16px;width:16px}\n"], dependencies: [{ kind: "component", type: i1.ZenduSelectComponent, selector: "zen-select", inputs: ["selectModel", "options", "label", "supportingText", "hintText", "placeholder", "leadingType", "leadingIcon", "leadingAvatar", "leadingDotColor", "displayProp", "idProp", "hasSearch", "isMultiselect", "multiselect", "hideSelectAll", "hideTreeSearch", "required", "disabled", "error", "errorMessage", "destructive", "size", "returnOption", "isTruncate", "enableAddNewOption", "showDefaultAddOption", "newOptionText", "enableRemoveOption", "removeOptionText", "isLazyLoading", "lazyLoader", "preferredOpenDirection"], outputs: ["selectModelChange", "addNewOption", "removeOption", "closed"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
64
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduPaginationBarComponent, decorators: [{
|
|
65
65
|
type: Component,
|
|
66
66
|
args: [{ selector: 'zen-pagination-bar', template: "<div class=\"pagination-component\">\n <div class=\"select-dropdown\">\n <label>{{\"Rows per page\" | translate}}:</label>\n <zen-select [(selectModel)]=\"perPage\"\n [options]=\"availablePagesSize\"\n [displayProp]=\"'text'\"\n [idProp]=\"'id'\"\n (selectModelChange)=\"updatePageSize()\"></zen-select>\n </div>\n <div class=\"pages\">\n <button class=\"pagination-button\"\n [disabled]=\"page - 1 <= 0\"\n (click)=\"prevPage()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </button>\n <label>{{((page - 1) * perPage) + 1 }} - {{endRowSize()}} of {{count}}</label>\n <button class=\"pagination-button\"\n [disabled]=\"page + 1 > totalPages\"\n (click)=\"nextPage()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </button>\n </div>\n</div>\n", styles: [".pagination-component{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.pagination-component .select-dropdown{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .select-dropdown label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:120%;color:#4f4f4f}.pagination-component .pages{display:flex;flex-direction:row;align-items:center;gap:8px}.pagination-component .pages label{margin:0;font-style:normal;font-weight:400;font-size:12px;line-height:16px;color:#828282}.pagination-component .pages .pagination-button{display:flex;flex-direction:row;align-items:center;height:16px;padding:0;box-sizing:border-box;white-space:nowrap;border:none;border-radius:50%;transition:.1s;cursor:pointer;color:#828282;background:#FFFFFF}.pagination-component .pages .pagination-button:hover{color:#4f4f4f;background:#F2F2F2}.pagination-component .pages .pagination-button:focus{outline:none;color:#2188d9;background:#F4F9FD}.pagination-component .pages .pagination-button:disabled{color:#e0e0e0;background:#FFFFFF;cursor:not-allowed}.pagination-component .pages .pagination-button .material-icons{font-size:16px;height:16px;width:16px}\n"] }]
|