@wemake4u/form-player-se 1.0.46 → 1.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/directives/treelist.directive.mjs +98 -0
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +85 -32
- package/esm2022/lib/services/function.service.mjs +14 -7
- package/esm2022/lib/services/programmability.service.mjs +2 -1
- package/esm2022/lib/utils/flatten.mjs +44 -0
- package/fesm2022/wemake4u-form-player-se.mjs +241 -45
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/directives/treelist.directive.d.ts +23 -0
- package/lib/dynamic-fields/dynamic-fields.component.d.ts +15 -2
- package/lib/services/function.service.d.ts +2 -1
- package/lib/services/programmability.service.d.ts +1 -0
- package/lib/utils/flatten.d.ts +13 -0
- package/package.json +1 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { ListenerService } from '../services/listener.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../services/listener.service";
|
|
5
|
+
export class TreeListDirective {
|
|
6
|
+
el;
|
|
7
|
+
listenerService;
|
|
8
|
+
nodes = [];
|
|
9
|
+
constructor(el, listenerService) {
|
|
10
|
+
this.el = el;
|
|
11
|
+
this.listenerService = listenerService;
|
|
12
|
+
}
|
|
13
|
+
ngOnChanges(changes) {
|
|
14
|
+
if (changes['nodes'] && this.initialized) {
|
|
15
|
+
this.rebuild();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
ngAfterViewInit() {
|
|
19
|
+
this.initialized = true;
|
|
20
|
+
this.rebuild();
|
|
21
|
+
}
|
|
22
|
+
initialized = false;
|
|
23
|
+
rows = [];
|
|
24
|
+
rebuild() {
|
|
25
|
+
queueMicrotask(() => {
|
|
26
|
+
this.rows = Array.from(this.el.nativeElement.querySelectorAll('tbody tr'));
|
|
27
|
+
this.initToggles();
|
|
28
|
+
this.refreshTree();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
getChildren(id) {
|
|
32
|
+
return this.rows.filter(r => r.dataset['parent'] === id);
|
|
33
|
+
}
|
|
34
|
+
setVisible(row, visible) {
|
|
35
|
+
row.classList.toggle('hidden', !visible);
|
|
36
|
+
}
|
|
37
|
+
updateVisibility(parentId, parentVisible, parentExpanded) {
|
|
38
|
+
const children = this.getChildren(parentId);
|
|
39
|
+
for (const child of children) {
|
|
40
|
+
const childVisible = parentVisible && parentExpanded;
|
|
41
|
+
this.setVisible(child, childVisible);
|
|
42
|
+
const childExpanded = child.dataset['expanded'] === 'true';
|
|
43
|
+
this.updateVisibility(child.dataset['id'], childVisible, childExpanded);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
isExpanded(row) {
|
|
47
|
+
return row.dataset['expanded'] === 'true';
|
|
48
|
+
}
|
|
49
|
+
refreshTree() {
|
|
50
|
+
this.rows
|
|
51
|
+
.filter(r => !r.dataset['parent'])
|
|
52
|
+
.forEach(root => {
|
|
53
|
+
this.setVisible(root, true);
|
|
54
|
+
this.updateVisibility(root.dataset['id'], true, root.dataset['expanded'] === 'true');
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
initToggles() {
|
|
58
|
+
const toggles = this.el.nativeElement.querySelectorAll('.toggle');
|
|
59
|
+
toggles.forEach((toggle) => {
|
|
60
|
+
if (toggle.dataset['bound'] === 'true') {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
toggle.dataset['bound'] = 'true';
|
|
64
|
+
const row = toggle.closest('tr');
|
|
65
|
+
this.refreshToggleIcon(toggle, this.isExpanded(row));
|
|
66
|
+
this.listenerService.listen(toggle, 'click', (e) => {
|
|
67
|
+
e.stopPropagation();
|
|
68
|
+
const expanded = this.isExpanded(row);
|
|
69
|
+
row.dataset['expanded'] = (!expanded).toString();
|
|
70
|
+
this.refreshToggleIcon(toggle, this.isExpanded(row));
|
|
71
|
+
this.refreshTree();
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
refreshToggleIcon(target, expanded) {
|
|
76
|
+
target.classList.remove('fas', 'fa-angle-down', 'fa-angle-right');
|
|
77
|
+
target.classList.add('fas');
|
|
78
|
+
target.classList.add(expanded ? 'fa-angle-down' : 'fa-angle-right');
|
|
79
|
+
}
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeListDirective, deps: [{ token: i0.ElementRef }, { token: i1.ListenerService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
81
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TreeListDirective, isStandalone: true, selector: "[treelist]", inputs: { nodes: ["treelist", "nodes"] }, providers: [
|
|
82
|
+
ListenerService
|
|
83
|
+
], usesOnChanges: true, ngImport: i0 });
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeListDirective, decorators: [{
|
|
86
|
+
type: Directive,
|
|
87
|
+
args: [{
|
|
88
|
+
selector: '[treelist]',
|
|
89
|
+
standalone: true,
|
|
90
|
+
providers: [
|
|
91
|
+
ListenerService
|
|
92
|
+
]
|
|
93
|
+
}]
|
|
94
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ListenerService }], propDecorators: { nodes: [{
|
|
95
|
+
type: Input,
|
|
96
|
+
args: ['treelist']
|
|
97
|
+
}] } });
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy90cmVlbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNkIsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVMvRCxNQUFNLE9BQU8saUJBQWlCO0lBSU47SUFDTjtJQUhLLEtBQUssR0FBVSxFQUFFLENBQUM7SUFFckMsWUFBb0IsRUFBYyxFQUNwQixlQUFnQztRQUQxQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ3BCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUM5QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLElBQUksR0FBMEIsRUFBRSxDQUFDO0lBRWpDLE9BQU87UUFDWCxjQUFjLENBQUMsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sV0FBVyxDQUFDLEVBQVU7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUF3QixFQUFFLE9BQWdCO1FBQ3pELEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFnQixFQUFFLGFBQXNCLEVBQUUsY0FBdUI7UUFDdEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QyxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE1BQU0sWUFBWSxHQUFHLGFBQWEsSUFBSSxjQUFjLENBQUM7WUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFckMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUM7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzdFLENBQUM7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQXdCO1FBQ3ZDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUM7SUFDOUMsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLENBQUMsSUFBSTthQUNKLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLEVBQ25CLElBQUksRUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLE1BQU0sQ0FDdEMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLFdBQVc7UUFDZixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUNyQyxPQUFPO1lBQ1gsQ0FBQztZQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUF3QixDQUFDO1lBQ3hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFRLEVBQUUsRUFBRTtnQkFDdEQsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE1BQW1CLEVBQUUsUUFBaUI7UUFFNUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7d0dBM0ZRLGlCQUFpQjs0RkFBakIsaUJBQWlCLG1HQUpmO1lBQ1AsZUFBZTtTQUNsQjs7NEZBRVEsaUJBQWlCO2tCQVA3QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQLGVBQWU7cUJBQ2xCO2lCQUNKOzZHQUdzQixLQUFLO3NCQUF2QixLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTGlzdGVuZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbGlzdGVuZXIuc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3RyZWVsaXN0XScsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgTGlzdGVuZXJTZXJ2aWNlXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlTGlzdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgQElucHV0KCd0cmVlbGlzdCcpIG5vZGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcclxuICAgICAgICAsIHByaXZhdGUgbGlzdGVuZXJTZXJ2aWNlOiBMaXN0ZW5lclNlcnZpY2UpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ25vZGVzJ10gJiYgdGhpcy5pbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlYnVpbGQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVidWlsZCgpOyAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSByb3dzOiBIVE1MVGFibGVSb3dFbGVtZW50W10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIHJlYnVpbGQoKSB7XHJcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJvd3MgPSBBcnJheS5mcm9tKHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keSB0cicpKTtcclxuICAgICAgICAgICAgdGhpcy5pbml0VG9nZ2xlcygpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUcmVlKCk7ICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRDaGlsZHJlbihpZDogc3RyaW5nKTogSFRNTFRhYmxlUm93RWxlbWVudFtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yb3dzLmZpbHRlcihyID0+IHIuZGF0YXNldFsncGFyZW50J10gPT09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFZpc2libGUocm93OiBIVE1MVGFibGVSb3dFbGVtZW50LCB2aXNpYmxlOiBib29sZWFuKSB7XHJcbiAgICAgICAgcm93LmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsICF2aXNpYmxlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZVZpc2liaWxpdHkocGFyZW50SWQ6IHN0cmluZywgcGFyZW50VmlzaWJsZTogYm9vbGVhbiwgcGFyZW50RXhwYW5kZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4ocGFyZW50SWQpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkVmlzaWJsZSA9IHBhcmVudFZpc2libGUgJiYgcGFyZW50RXhwYW5kZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VmlzaWJsZShjaGlsZCwgY2hpbGRWaXNpYmxlKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkRXhwYW5kZWQgPSBjaGlsZC5kYXRhc2V0WydleHBhbmRlZCddID09PSAndHJ1ZSc7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJpbGl0eShjaGlsZC5kYXRhc2V0WydpZCddISwgY2hpbGRWaXNpYmxlLCBjaGlsZEV4cGFuZGVkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0V4cGFuZGVkKHJvdzogSFRNTFRhYmxlUm93RWxlbWVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiByb3cuZGF0YXNldFsnZXhwYW5kZWQnXSA9PT0gJ3RydWUnO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVmcmVzaFRyZWUoKSB7XHJcbiAgICAgICAgdGhpcy5yb3dzXHJcbiAgICAgICAgICAgIC5maWx0ZXIociA9PiAhci5kYXRhc2V0WydwYXJlbnQnXSlcclxuICAgICAgICAgICAgLmZvckVhY2gocm9vdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpc2libGUocm9vdCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoXHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5kYXRhc2V0WydpZCddISxcclxuICAgICAgICAgICAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHJvb3QuZGF0YXNldFsnZXhwYW5kZWQnXSA9PT0gJ3RydWUnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRUb2dnbGVzKCkge1xyXG4gICAgICAgIGNvbnN0IHRvZ2dsZXMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvZ2dsZScpO1xyXG4gICAgICAgIHRvZ2dsZXMuZm9yRWFjaCgodG9nZ2xlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRvZ2dsZS5kYXRhc2V0Wydib3VuZCddID09PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0b2dnbGUuZGF0YXNldFsnYm91bmQnXSA9ICd0cnVlJztcclxuICAgICAgICAgICAgY29uc3Qgcm93ID0gdG9nZ2xlLmNsb3Nlc3QoJ3RyJykgYXMgSFRNTFRhYmxlUm93RWxlbWVudDtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9nZ2xlSWNvbih0b2dnbGUsIHRoaXMuaXNFeHBhbmRlZChyb3cpKTtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lclNlcnZpY2UubGlzdGVuKHRvZ2dsZSwgJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLmlzRXhwYW5kZWQocm93KTtcclxuICAgICAgICAgICAgICAgIHJvdy5kYXRhc2V0WydleHBhbmRlZCddID0gKCFleHBhbmRlZCkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRvZ2dsZUljb24odG9nZ2xlLCB0aGlzLmlzRXhwYW5kZWQocm93KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUcmVlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVmcmVzaFRvZ2dsZUljb24odGFyZ2V0OiBIVE1MRWxlbWVudCwgZXhwYW5kZWQ6IGJvb2xlYW4pXHJcbiAgICB7ICAgICAgICBcclxuICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgnZmFzJywgJ2ZhLWFuZ2xlLWRvd24nLCAnZmEtYW5nbGUtcmlnaHQnKTtcclxuICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgnZmFzJyk7XHJcbiAgICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoZXhwYW5kZWQgPyAnZmEtYW5nbGUtZG93bicgOiAnZmEtYW5nbGUtcmlnaHQnKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|