@solidev/data 0.0.2 → 0.0.3
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/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +156 -3
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +12 -8
- package/esm2020/lib/modellist/model-list-filters/model-list-filter.mjs +4 -1
- package/fesm2015/solidev-data.mjs +156 -9
- package/fesm2015/solidev-data.mjs.map +1 -1
- package/fesm2020/solidev-data.mjs +165 -9
- package/fesm2020/solidev-data.mjs.map +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.d.ts +48 -4
- package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.d.ts +8 -3
- package/lib/modellist/model-list-filters/model-list-filter.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,16 +1,169 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { debounceTime, firstValueFrom, Subject } from 'rxjs';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
class Level {
|
|
9
|
+
constructor(tree, level, choices) {
|
|
10
|
+
this.tree = tree;
|
|
11
|
+
this.level = level;
|
|
12
|
+
this.fc = new FormControl('');
|
|
13
|
+
this.choices = choices;
|
|
14
|
+
this.subs = this.fc.valueChanges.subscribe((val) => {
|
|
15
|
+
if (this.selected !== val) {
|
|
16
|
+
this.selected = val;
|
|
17
|
+
this.tree.updated(this);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
close() {
|
|
22
|
+
this.subs.unsubscribe();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
class Tree {
|
|
26
|
+
constructor(qs, maxLevel, display, filter) {
|
|
27
|
+
this.qs = qs;
|
|
28
|
+
this.maxLevel = maxLevel;
|
|
29
|
+
this.display = display;
|
|
30
|
+
this.filter = filter;
|
|
31
|
+
this.levels = [];
|
|
32
|
+
this.changed = new Subject();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Conditionnaly add level to current tree.
|
|
36
|
+
*
|
|
37
|
+
* - if previous level have non-empty selected value
|
|
38
|
+
* - if current level choices are non empty
|
|
39
|
+
*/
|
|
40
|
+
async addLevel(fparent) {
|
|
41
|
+
let values = [];
|
|
42
|
+
if (this.levels.length === 0) {
|
|
43
|
+
values = await firstValueFrom(this.qs
|
|
44
|
+
.filter({ level: this.levels.length, parent: 'null', ...this.filter })
|
|
45
|
+
.get());
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const parent = fparent
|
|
49
|
+
? fparent
|
|
50
|
+
: this.levels[this.levels.length - 1].selected;
|
|
51
|
+
if (parent) {
|
|
52
|
+
values = await firstValueFrom(this.qs
|
|
53
|
+
.filter({
|
|
54
|
+
level: this.levels.length,
|
|
55
|
+
parent: this.levels[this.levels.length - 1].selected || 'null',
|
|
56
|
+
...this.filter,
|
|
57
|
+
})
|
|
58
|
+
.get());
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (values.length > 0) {
|
|
62
|
+
const level = new Level(this, this.levels.length, []);
|
|
63
|
+
for (const v of values) {
|
|
64
|
+
level.choices.push({ value: v.id, desc: this.display(v) });
|
|
65
|
+
}
|
|
66
|
+
this.levels.push(level);
|
|
67
|
+
return level;
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
updated(level) {
|
|
72
|
+
const newLevels = [];
|
|
73
|
+
for (const l of this.levels) {
|
|
74
|
+
if (l.level <= level.level) {
|
|
75
|
+
newLevels.push(l);
|
|
76
|
+
}
|
|
77
|
+
else if (l.level > level.level) {
|
|
78
|
+
l.close();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
this.levels = newLevels;
|
|
82
|
+
this.addLevel();
|
|
83
|
+
if (level.selected) {
|
|
84
|
+
this.changed.next(level.selected);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.changed.next(this.levels[level.level - 1]?.selected || null);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async prepare(value) {
|
|
91
|
+
// console.log('prepare', value);
|
|
92
|
+
const levels = [];
|
|
93
|
+
let cur = (await firstValueFrom(this.qs.filter({ id: value, ...this.filter }).get()))[0];
|
|
94
|
+
levels.push(cur);
|
|
95
|
+
let nlev = 0;
|
|
96
|
+
while (cur.parent !== null) {
|
|
97
|
+
cur = (await firstValueFrom(this.qs
|
|
98
|
+
.filter({
|
|
99
|
+
id: cur.parent,
|
|
100
|
+
...this.filter,
|
|
101
|
+
})
|
|
102
|
+
.get()))[0];
|
|
103
|
+
levels.push(cur);
|
|
104
|
+
nlev++;
|
|
105
|
+
if (nlev > this.maxLevel) {
|
|
106
|
+
throw Error('Max level error, could not find root');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
for (let i = levels.length - 1; i >= 0; i--) {
|
|
110
|
+
const lv = await this.addLevel();
|
|
111
|
+
if (lv !== null) {
|
|
112
|
+
lv.selected = levels[i].id;
|
|
113
|
+
lv.fc.setValue(levels[i].id, { emitEvent: false });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (this.levels.length <= this.maxLevel) {
|
|
117
|
+
await this.addLevel();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
reset() { }
|
|
121
|
+
}
|
|
4
122
|
export class ModelListTreeFilterComponent {
|
|
5
123
|
constructor() {
|
|
6
124
|
this.classes = '';
|
|
7
125
|
}
|
|
126
|
+
async ngOnInit() {
|
|
127
|
+
this.tree = new Tree(this.filter.queryset, this.filter.maxLevel, this.filter.display, this.filter.filter);
|
|
128
|
+
if (this.filter.get()) {
|
|
129
|
+
await this.tree.prepare(this.filter.get()?.value);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
await this.tree.addLevel();
|
|
133
|
+
}
|
|
134
|
+
this.tree.changed.pipe(debounceTime(250)).subscribe((val) => {
|
|
135
|
+
// console.log('changed', val);
|
|
136
|
+
if (val === null) {
|
|
137
|
+
this.filter.clear();
|
|
138
|
+
this.list.filters.update();
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
if (this.filter.set(val, '')) {
|
|
142
|
+
this.list.filters.update();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
// this.tree.changed.subscribe((selected) => {
|
|
147
|
+
// console.log('tree changed', selected);
|
|
148
|
+
// this.filter.set(selected, '');
|
|
149
|
+
// });
|
|
150
|
+
// if (this.filter.getValue()) {
|
|
151
|
+
// console.log('filter value', this.filter.getValue());
|
|
152
|
+
// await this.tree.prepare(this.filter.getValue() as number);
|
|
153
|
+
// } else {
|
|
154
|
+
// await this.tree.addLevel();
|
|
155
|
+
// }
|
|
156
|
+
}
|
|
157
|
+
disable() {
|
|
158
|
+
this.filter.enabled = false;
|
|
159
|
+
this.list.filters.update();
|
|
160
|
+
}
|
|
8
161
|
}
|
|
9
162
|
ModelListTreeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ModelListTreeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
-
ModelListTreeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: ModelListTreeFilterComponent, isStandalone: true, selector: "data-model-list-tree-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "<
|
|
163
|
+
ModelListTreeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: ModelListTreeFilterComponent, isStandalone: true, selector: "data-model-list-tree-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"levelselect\" *ngFor=\"let l of tree.levels\">\n <select class=\"form-select form-select-sm\" [formControl]=\"l.fc\">\n <option value=\"\">{{filter.help}}</option>\n <option *ngFor=\"let ch of l.choices\" [value]=\"ch.value\">{{ch.desc}}</option>\n </select>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
11
164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ModelListTreeFilterComponent, decorators: [{
|
|
12
165
|
type: Component,
|
|
13
|
-
args: [{ selector: 'data-model-list-tree-filter', standalone: true, imports: [CommonModule], template: "<
|
|
166
|
+
args: [{ selector: 'data-model-list-tree-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"levelselect\" *ngFor=\"let l of tree.levels\">\n <select class=\"form-select form-select-sm\" [formControl]=\"l.fc\">\n <option value=\"\">{{filter.help}}</option>\n <option *ngFor=\"let ch of l.choices\" [value]=\"ch.value\">{{ch.desc}}</option>\n </select>\n </div>\n</div>" }]
|
|
14
167
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
15
168
|
type: Input
|
|
16
169
|
}], filter: [{
|
|
@@ -18,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
18
171
|
}], classes: [{
|
|
19
172
|
type: Input
|
|
20
173
|
}] } });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBUy9DLE1BQU0sT0FBTyw0QkFBNEI7SUFLdkM7UUFGZ0IsWUFBTyxHQUFzQixFQUFFLENBQUM7SUFFakMsQ0FBQzs7eUhBTEwsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdUpDWnpDLHNDQUFvQyx5RERVeEIsWUFBWTsyRkFFWCw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBRzNCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzswRUFHUCxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGVsTGlzdCB9IGZyb20gJy4uLy4uLy4uL21vZGVsLWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNb2RlbExpc3RUcmVlRmlsdGVyIH0gZnJvbSAnLi9tb2RlbC1saXN0LXRyZWUtZmlsdGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbW9kZWwtbGlzdC10cmVlLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC1saXN0LXRyZWUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0VHJlZUZpbHRlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBsaXN0ITogTW9kZWxMaXN0PGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXIhOiBNb2RlbExpc3RUcmVlRmlsdGVyO1xuICBASW5wdXQoKSBwdWJsaWMgY2xhc3Nlczogc3RyaW5nW10gfCBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iLCI8cD5tb2RlbC1saXN0LXRyZWUtZmlsdGVyIHdvcmtzITwvcD4iXX0=
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7QUFHM0UsTUFBTSxLQUFLO0lBUVQsWUFDRSxJQUFhLEVBQ2IsS0FBYSxFQUNiLE9BQTBDO1FBRTFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxH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QU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7O3lIQWxEVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qix1SkM1SnpDLGlnQkFVTSx5RERnSk0sWUFBWSx5UEFBRSxtQkFBbUI7MkZBRWhDLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDOzBFQUs1QixJQUFJO3NCQUFuQixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kZWxMaXN0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGVsTGlzdFRyZWVGaWx0ZXIgfSBmcm9tICcuL21vZGVsLWxpc3QtdHJlZS1maWx0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERhdGFNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL2RhdGEvZGF0YS1tb2RlbCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3RWYWx1ZUZyb20sIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyRGF0YSwgUXVlcnlzZXQgfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhL2RhdGEtcXVlcnknO1xuXG5jbGFzcyBMZXZlbDxUIGV4dGVuZHMgRGF0YU1vZGVsPiB7XG4gIHB1YmxpYyBsZXZlbDogbnVtYmVyO1xuICBwdWJsaWMgdHJlZTogVHJlZTxUPjtcbiAgcHVibGljIGNob2ljZXM6IHsgdmFsdWU6IG51bWJlcjsgZGVzYzogc3RyaW5nIH1bXTtcbiAgcHVibGljIGZjOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIHNlbGVjdGVkITogbnVtYmVyO1xuICBwdWJsaWMgc3ViczogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRyZWU6IFRyZWU8VD4sXG4gICAgbGV2ZWw6IG51bWJlcixcbiAgICBjaG9pY2VzOiB7IHZhbHVlOiBudW1iZXI7IGRlc2M6IHN0cmluZyB9W11cbiAgKSB7XG4gICAgdGhpcy50cmVlID0gdHJlZTtcbiAgICB0aGlzLmxldmVsID0gbGV2ZWw7XG4gICAgdGhpcy5mYyA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgdGhpcy5jaG9pY2VzID0gY2hvaWNlcztcbiAgICB0aGlzLnN1YnMgPSB0aGlzLmZjLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgIT09IHZhbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gdmFsO1xuICAgICAgICB0aGlzLnRyZWUudXBkYXRlZCh0aGlzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpIHtcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuXG5jbGFzcyBUcmVlPFQgZXh0ZW5kcyBEYXRhTW9kZWw+IHtcbiAgbGV2ZWxzOiBMZXZlbDxUPltdID0gW107XG4gIGNoYW5nZWQ6IFN1YmplY3Q8bnVtYmVyIHwgbnVsbD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCBudWxsPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcXM6IFF1ZXJ5c2V0PFQ+LFxuICAgIHByaXZhdGUgbWF4TGV2ZWw6IG51bWJlcixcbiAgICBwcml2YXRlIGRpc3BsYXk6IGFueSxcbiAgICBwcml2YXRlIGZpbHRlcjogRmlsdGVyRGF0YVxuICApIHt9XG5cbiAgLyoqXG4gICAqIENvbmRpdGlvbm5hbHkgYWRkIGxldmVsIHRvIGN1cnJlbnQgdHJlZS5cbiAgICpcbiAgICogLSBpZiBwcmV2aW91cyBsZXZlbCBoYXZlIG5vbi1lbXB0eSBzZWxlY3RlZCB2YWx1ZVxuICAgKiAtIGlmIGN1cnJlbnQgbGV2ZWwgY2hvaWNlcyBhcmUgbm9uIGVtcHR5XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWRkTGV2ZWwoZnBhcmVudD86IG51bWJlcik6IFByb21pc2U8TGV2ZWw8VD4gfCBudWxsPiB7XG4gICAgbGV0IHZhbHVlczogVFtdID0gW107XG4gICAgaWYgKHRoaXMubGV2ZWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdmFsdWVzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMucXNcbiAgICAgICAgICAuZmlsdGVyKHsgbGV2ZWw6IHRoaXMubGV2ZWxzLmxlbmd0aCwgcGFyZW50OiAnbnVsbCcsIC4uLnRoaXMuZmlsdGVyIH0pXG4gICAgICAgICAgLmdldCgpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBmcGFyZW50XG4gICAgICAgID8gZnBhcmVudFxuICAgICAgICA6IHRoaXMubGV2ZWxzW3RoaXMubGV2ZWxzLmxlbmd0aCAtIDFdLnNlbGVjdGVkO1xuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICB2YWx1ZXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICB0aGlzLnFzXG4gICAgICAgICAgICAuZmlsdGVyKHtcbiAgICAgICAgICAgICAgbGV2ZWw6IHRoaXMubGV2ZWxzLmxlbmd0aCxcbiAgICAgICAgICAgICAgcGFyZW50OiB0aGlzLmxldmVsc1t0aGlzLmxldmVscy5sZW5ndGggLSAxXS5zZWxlY3RlZCB8fCAnbnVsbCcsXG4gICAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVyLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5nZXQoKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxldmVsID0gbmV3IExldmVsKHRoaXMsIHRoaXMubGV2ZWxzLmxlbmd0aCwgW10pO1xuICAgICAgZm9yIChjb25zdCB2IG9mIHZhbHVlcykge1xuICAgICAgICBsZXZlbC5jaG9pY2VzLnB1c2goeyB2YWx1ZTogdi5pZCBhcyBudW1iZXIsIGRlc2M6IHRoaXMuZGlzcGxheSh2KSB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGV2ZWxzLnB1c2gobGV2ZWwpO1xuICAgICAgcmV0dXJuIGxldmVsO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVkKGxldmVsOiBMZXZlbDxUPikge1xuICAgIGNvbnN0IG5ld0xldmVsczogTGV2ZWw8VD5bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbCBvZiB0aGlzLmxldmVscykge1xuICAgICAgaWYgKGwubGV2ZWwgPD0gbGV2ZWwubGV2ZWwpIHtcbiAgICAgICAgbmV3TGV2ZWxzLnB1c2gobCk7XG4gICAgICB9IGVsc2UgaWYgKGwubGV2ZWwgPiBsZXZlbC5sZXZlbCkge1xuICAgICAgICBsLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGV2ZWxzID0gbmV3TGV2ZWxzO1xuICAgIHRoaXMuYWRkTGV2ZWwoKTtcbiAgICBpZiAobGV2ZWwuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuY2hhbmdlZC5uZXh0KGxldmVsLnNlbGVjdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGFuZ2VkLm5leHQodGhpcy5sZXZlbHNbbGV2ZWwubGV2ZWwgLSAxXT8uc2VsZWN0ZWQgfHwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHByZXBhcmUodmFsdWU6IG51bWJlcikge1xuICAgIC8vIGNvbnNvbGUubG9nKCdwcmVwYXJlJywgdmFsdWUpO1xuICAgIGNvbnN0IGxldmVsczogVFtdID0gW107XG4gICAgbGV0IGN1ciA9IChcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucXMuZmlsdGVyKHsgaWQ6IHZhbHVlLCAuLi50aGlzLmZpbHRlciB9KS5nZXQoKSlcbiAgICApWzBdO1xuICAgIGxldmVscy5wdXNoKGN1cik7XG4gICAgbGV0IG5sZXYgPSAwO1xuICAgIHdoaWxlICgoY3VyIGFzIGFueSkucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICBjdXIgPSAoXG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgIHRoaXMucXNcbiAgICAgICAgICAgIC5maWx0ZXIoe1xuICAgICAgICAgICAgICBpZDogKGN1ciBhcyBhbnkpLnBhcmVudCxcbiAgICAgICAgICAgICAgLi4udGhpcy5maWx0ZXIsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmdldCgpXG4gICAgICAgIClcbiAgICAgIClbMF07XG4gICAgICBsZXZlbHMucHVzaChjdXIpO1xuICAgICAgbmxldisrO1xuICAgICAgaWYgKG5sZXYgPiB0aGlzLm1heExldmVsKSB7XG4gICAgICAgIHRocm93IEVycm9yKCdNYXggbGV2ZWwgZXJyb3IsIGNvdWxkIG5vdCBmaW5kIHJvb3QnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IGxldmVscy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgbHYgPSBhd2FpdCB0aGlzLmFkZExldmVsKCk7XG4gICAgICBpZiAobHYgIT09IG51bGwpIHtcbiAgICAgICAgbHYuc2VsZWN0ZWQgPSBsZXZlbHNbaV0uaWQgYXMgbnVtYmVyO1xuICAgICAgICBsdi5mYy5zZXRWYWx1ZShsZXZlbHNbaV0uaWQgYXMgbnVtYmVyLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmxldmVscy5sZW5ndGggPD0gdGhpcy5tYXhMZXZlbCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGRMZXZlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbW9kZWwtbGlzdC10cmVlLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC1saXN0LXRyZWUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0VHJlZUZpbHRlckNvbXBvbmVudDxUIGV4dGVuZHMgRGF0YU1vZGVsPlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKSBwdWJsaWMgbGlzdCE6IE1vZGVsTGlzdDxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgZmlsdGVyITogTW9kZWxMaXN0VHJlZUZpbHRlcjxUPjtcbiAgQElucHV0KCkgcHVibGljIGNsYXNzZXM6IHN0cmluZ1tdIHwgc3RyaW5nID0gJyc7XG4gIHB1YmxpYyB0cmVlITogVHJlZTxUPjtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMudHJlZSA9IG5ldyBUcmVlKFxuICAgICAgdGhpcy5maWx0ZXIucXVlcnlzZXQsXG4gICAgICB0aGlzLmZpbHRlci5tYXhMZXZlbCxcbiAgICAgIHRoaXMuZmlsdGVyLmRpc3BsYXksXG4gICAgICB0aGlzLmZpbHRlci5maWx0ZXJcbiAgICApO1xuICAgIGlmICh0aGlzLmZpbHRlci5nZXQoKSkge1xuICAgICAgYXdhaXQgdGhpcy50cmVlLnByZXBhcmUodGhpcy5maWx0ZXIuZ2V0KCk/LnZhbHVlIGFzIG51bWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMudHJlZS5hZGRMZXZlbCgpO1xuICAgIH1cblxuICAgIHRoaXMudHJlZS5jaGFuZ2VkLnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnY2hhbmdlZCcsIHZhbCk7XG4gICAgICBpZiAodmFsID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyLmNsZWFyKCk7XG4gICAgICAgIHRoaXMubGlzdC5maWx0ZXJzLnVwZGF0ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyLnNldCh2YWwsICcnKSkge1xuICAgICAgICAgIHRoaXMubGlzdC5maWx0ZXJzLnVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyB0aGlzLnRyZWUuY2hhbmdlZC5zdWJzY3JpYmUoKHNlbGVjdGVkKSA9PiB7XG4gICAgLy8gICBjb25zb2xlLmxvZygndHJlZSBjaGFuZ2VkJywgc2VsZWN0ZWQpO1xuICAgIC8vICAgdGhpcy5maWx0ZXIuc2V0KHNlbGVjdGVkLCAnJyk7XG4gICAgLy8gfSk7XG4gICAgLy8gaWYgKHRoaXMuZmlsdGVyLmdldFZhbHVlKCkpIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKCdmaWx0ZXIgdmFsdWUnLCB0aGlzLmZpbHRlci5nZXRWYWx1ZSgpKTtcbiAgICAvLyAgIGF3YWl0IHRoaXMudHJlZS5wcmVwYXJlKHRoaXMuZmlsdGVyLmdldFZhbHVlKCkgYXMgbnVtYmVyKTtcbiAgICAvLyB9IGVsc2Uge1xuICAgIC8vICAgYXdhaXQgdGhpcy50cmVlLmFkZExldmVsKCk7XG4gICAgLy8gfVxuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgdGhpcy5maWx0ZXIuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMubGlzdC5maWx0ZXJzLnVwZGF0ZSgpO1xuICB9XG59XG4iLCJcbjxkaXYgY2xhc3M9XCJmaWx0ZXJpdGVtXCIgW25nQ2xhc3NdPVwiZmlsdGVyLmRpc3BsYXlDbGFzc2VzIHx8IGNsYXNzZXNcIj5cbiAgPGRpdiBjbGFzcz1cInRyYXNoIGZsb2F0LWVuZFwiIChjbGljayk9XCJkaXNhYmxlKClcIj48aSBjbGFzcz1cImJpIGJpLXRyYXNoXCI+PC9pPjwvZGl2PlxuICA8bGFiZWw+e3tmaWx0ZXIubGFiZWx9fTwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJsZXZlbHNlbGVjdFwiICpuZ0Zvcj1cImxldCBsIG9mIHRyZWUubGV2ZWxzXCI+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCIgW2Zvcm1Db250cm9sXT1cImwuZmNcIj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj57e2ZpbHRlci5oZWxwfX08L29wdGlvbj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNoIG9mIGwuY2hvaWNlc1wiIFt2YWx1ZV09XCJjaC52YWx1ZVwiPnt7Y2guZGVzY319PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export class ModelListTreeFilter extends
|
|
1
|
+
import { ModelListAutocompleteFilter, } from '../model-list-autocomplete-filter/model-list-autocomplete-filter';
|
|
2
|
+
export class ModelListTreeFilter extends ModelListAutocompleteFilter {
|
|
3
3
|
constructor(params) {
|
|
4
4
|
super(params);
|
|
5
|
-
this.
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
this.maxLevel = 5;
|
|
6
|
+
this.type = 'tree';
|
|
7
|
+
if (this.label == '') {
|
|
8
|
+
this.label = 'Sélectionnez dans la hiérarchie';
|
|
8
9
|
}
|
|
9
|
-
if (this.help ==
|
|
10
|
-
this.help =
|
|
10
|
+
if (this.help == '') {
|
|
11
|
+
this.help = 'Texte à rechercher';
|
|
12
|
+
}
|
|
13
|
+
if (params.maxLevel) {
|
|
14
|
+
this.maxLevel = params.maxLevel;
|
|
11
15
|
}
|
|
12
16
|
}
|
|
13
17
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC10cmVlLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tb2RlbGxpc3QvbW9kZWwtbGlzdC1maWx0ZXJzL2ZpbHRlcnMvbW9kZWwtbGlzdC10cmVlLWZpbHRlci9tb2RlbC1saXN0LXRyZWUtZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCwyQkFBMkIsR0FFNUIsTUFBTSxrRUFBa0UsQ0FBQztBQU8xRSxNQUFNLE9BQU8sbUJBQ1gsU0FBUSwyQkFBOEI7SUFLdEMsWUFBWSxNQUE4QjtRQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFIVCxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBSTFCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxpQ0FBaUMsQ0FBQztTQUNoRDtRQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQztTQUNsQztRQUNELElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDakM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHtcbiAgTW9kZWxMaXN0QXV0b2NvbXBsZXRlRmlsdGVyLFxuICBNb2RlbExpc3RBdXRvY29tcGxldGVQYXJhbXMsXG59IGZyb20gJy4uL21vZGVsLWxpc3QtYXV0b2NvbXBsZXRlLWZpbHRlci9tb2RlbC1saXN0LWF1dG9jb21wbGV0ZS1maWx0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsTGlzdFRyZWVQYXJhbXM8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgZXh0ZW5kcyBNb2RlbExpc3RBdXRvY29tcGxldGVQYXJhbXM8VD4ge1xuICBtYXhMZXZlbD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdFRyZWVGaWx0ZXI8VCBleHRlbmRzIERhdGFNb2RlbD5cbiAgZXh0ZW5kcyBNb2RlbExpc3RBdXRvY29tcGxldGVGaWx0ZXI8VD5cbiAgaW1wbGVtZW50cyBNb2RlbExpc3RUcmVlUGFyYW1zPFQ+XG57XG4gIHB1YmxpYyBtYXhMZXZlbDogbnVtYmVyID0gNTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IE1vZGVsTGlzdFRyZWVQYXJhbXM8VD4pIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIHRoaXMudHlwZSA9ICd0cmVlJztcbiAgICBpZiAodGhpcy5sYWJlbCA9PSAnJykge1xuICAgICAgdGhpcy5sYWJlbCA9ICdTw6lsZWN0aW9ubmV6IGRhbnMgbGEgaGnDqXJhcmNoaWUnO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWxwID09ICcnKSB7XG4gICAgICB0aGlzLmhlbHAgPSAnVGV4dGUgw6AgcmVjaGVyY2hlcic7XG4gICAgfVxuICAgIGlmIChwYXJhbXMubWF4TGV2ZWwpIHtcbiAgICAgIHRoaXMubWF4TGV2ZWwgPSBwYXJhbXMubWF4TGV2ZWw7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -75,6 +75,9 @@ export class ModelListFilter {
|
|
|
75
75
|
getValue() {
|
|
76
76
|
return `${this._value?.value}`;
|
|
77
77
|
}
|
|
78
|
+
get() {
|
|
79
|
+
return this._value;
|
|
80
|
+
}
|
|
78
81
|
mtoggle(value, desc, notify = true) {
|
|
79
82
|
if (this._mvalue.has(`${value}`)) {
|
|
80
83
|
this._mvalue.delete(`${value}`);
|
|
@@ -143,4 +146,4 @@ export class ModelListFilter {
|
|
|
143
146
|
}
|
|
144
147
|
}
|
|
145
148
|
}
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9tb2RlbC1saXN0LWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBZWpELE1BQU0sT0FBTyxlQUFlO0lBdUIxQixZQUFZLE1BQTZCO1FBWmxDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVyQiwyQkFBMkI7UUFDakIsV0FBTSxHQUEyQixJQUFJLENBQUM7UUFDaEQsNkJBQTZCO1FBQ25CLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUM5QyxzQ0FBc0M7UUFDNUIsYUFBUSxHQUFHLElBQUksYUFBYSxDQUF5QixDQUFDLENBQUMsQ0FBQztRQUNsRSx3Q0FBd0M7UUFDOUIsY0FBUyxHQUFHLElBQUksYUFBYSxDQUFvQixDQUFDLENBQUMsQ0FBQztRQUc1RCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUM5Qix3QkFBd0I7SUFDMUIsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsWUFBWTtRQUdyQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdEM7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLFlBQVksQ0FBQyxNQUFrQjtRQUNwQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzNDO2FBQU0sSUFDTCxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQ1gsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUNwQjtZQUNBLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFrQixJQUFJO1FBQ2pDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7U0FDMUM7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0sR0FBRyxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUN6RCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN2QztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBVSxFQUFFLElBQVksRUFBRSxTQUFrQixJQUFJO1FBQzNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFVLEVBQUUsSUFBWSxFQUFFLFNBQWtCLElBQUk7UUFDNUQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDMUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTyxPQUFPLENBQUMsS0FBVSxFQUFFLElBQVksRUFBRSxTQUFrQixJQUFJO1FBQzlELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sSUFBSSxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUM3RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sT0FBTyxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUM5RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtZQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sSUFBSSxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUMzRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFVLEVBQUUsSUFBWSxFQUFFLFNBQWtCLElBQUk7UUFDN0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRTtZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxhQUFhO1FBQ25CLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxNQUFNLENBQUMsU0FBa0IsSUFBSTtRQUNuQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJEYXRhIH0gZnJvbSAnLi4vLi4vZGF0YS9kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZJTFRFUl9UWVBFIH0gZnJvbSAnLi9maWx0ZXJzL2ZpbHRlcnR5cGVzJztcbmltcG9ydCB7IElEaXNwRWRpdENob2ljZSB9IGZyb20gJy4uLy4uL2Rpc3BlZGl0L2Rpc3BlZGl0L2Rpc3BlZGl0LmNvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxMaXN0RmlsdGVyUGFyYW1zIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmaWVsZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgaGVscD86IHN0cmluZztcbiAgdmFsdWU/OiBhbnk7XG4gIGRlc2M/OiBhbnk7XG4gIGRlZmF1bHQ/OiBhbnk7XG4gIGRpc3BsYXlDbGFzc2VzPzogc3RyaW5nW10gfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbExpc3RGaWx0ZXIgaW1wbGVtZW50cyBNb2RlbExpc3RGaWx0ZXJQYXJhbXMge1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZmllbGQ6IHN0cmluZztcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWxwOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXNjPzogYW55O1xuICBwdWJsaWMgZGVmYXVsdD86IGFueTtcbiAgcHVibGljIHR5cGU6IEZJTFRFUl9UWVBFO1xuICBwdWJsaWMgYWxsb3dlZDogYm9vbGVhbjtcbiAgcHVibGljIGVuYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBkaXNwbGF5Q2xhc3Nlcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBwdWJsaWMgcHJpc3RpbmUgPSB0cnVlO1xuICBwdWJsaWMgbXVsdGkgPSBmYWxzZTtcblxuICAvKiogU2luZ2xlIGN1cnJlbnQgdmFsdWUgKi9cbiAgcHJvdGVjdGVkIF92YWx1ZTogSURpc3BFZGl0Q2hvaWNlIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBNdWx0aXBsZSBjdXJyZW50IHZhbHVlICovXG4gIHByb3RlY3RlZCBfbXZhbHVlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgLyoqIFNpbmdsZSBjdXJyZW50IHZhbHVlIG9ic2VydmFibGUgKi9cbiAgcHJvdGVjdGVkIF9jdXJyZW50ID0gbmV3IFJlcGxheVN1YmplY3Q8SURpc3BFZGl0Q2hvaWNlIHwgbnVsbD4oMSk7XG4gIC8qKiBNdWx0aXBsZSBjdXJyZW50IHZhbHVlIG9ic2VydmFibGUgKi9cbiAgcHJvdGVjdGVkIF9tY3VycmVudCA9IG5ldyBSZXBsYXlTdWJqZWN0PElEaXNwRWRpdENob2ljZVtdPigxKTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IE1vZGVsTGlzdEZpbHRlclBhcmFtcykge1xuICAgIHRoaXMubmFtZSA9IHBhcmFtcy5uYW1lO1xuICAgIHRoaXMuZmllbGQgPSBwYXJhbXMuZmllbGQ7XG4gICAgdGhpcy5sYWJlbCA9IHBhcmFtcy5sYWJlbCB8fCAnJztcbiAgICB0aGlzLmhlbHAgPSBwYXJhbXMuaGVscCB8fCAnJztcbiAgICB0aGlzLmRlc2MgPSBwYXJhbXMuZGVzYztcbiAgICB0aGlzLmRpc3BsYXlDbGFzc2VzID0gcGFyYW1zLmRpc3BsYXlDbGFzc2VzO1xuICAgIHRoaXMuYWxsb3dlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICB0aGlzLmRlZmF1bHQgPSBwYXJhbXMuZGVmYXVsdDtcbiAgICAvLyBGSVhNRTogYWRkIHZhbHVlIGluaXRcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWN1cnJlbnQkKCk6IE9ic2VydmFibGU8SURpc3BFZGl0Q2hvaWNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fbWN1cnJlbnQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnQkKCk6IE9ic2VydmFibGU8SURpc3BFZGl0Q2hvaWNlIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxcbiAgICBJRGlzcEVkaXRDaG9pY2UgfCBJRGlzcEVkaXRDaG9pY2VbXSB8IG51bGxcbiAgPiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tY3VycmVudC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmlsdGVyKGZpbHRlcjogRmlsdGVyRGF0YSkge1xuICAgIGlmICh0aGlzLm11bHRpICYmIHRoaXMuX212YWx1ZS5zaXplID4gMCkge1xuICAgICAgZmlsdGVyW3RoaXMuZmllbGRdID0gdGhpcy5nZXRNdWx0aVZhbHVlKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLm11bHRpICYmXG4gICAgICB0aGlzLl92YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl92YWx1ZSAhPT0gbnVsbFxuICAgICkge1xuICAgICAgZmlsdGVyW3RoaXMuZmllbGRdID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihub3RpZnk6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHRoaXMuX212YWx1ZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1zZXQodmFsdWUsIGRlc2MsIG5vdGlmeSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNzZXQodmFsdWUsIGRlc2MsIG5vdGlmeSk7XG4gIH1cblxuICBwdWJsaWMgdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLm11bnNldCh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3Vuc2V0KHZhbHVlLCBkZXNjLCBub3RpZnkpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZSh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5tdWx0aSkge1xuICAgICAgcmV0dXJuIHRoaXMubXRvZ2dsZSh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RvZ2dsZSh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBgJHt0aGlzLl92YWx1ZT8udmFsdWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgbXRvZ2dsZSh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbXZhbHVlLmhhcyhgJHt2YWx1ZX1gKSkge1xuICAgICAgdGhpcy5fbXZhbHVlLmRlbGV0ZShgJHt2YWx1ZX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbXZhbHVlLnNldChgJHt2YWx1ZX1gLCBkZXNjKTtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgbXNldCh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX212YWx1ZS5oYXMoYCR7dmFsdWV9YCkpIHtcbiAgICAgIHRoaXMuX212YWx1ZS5zZXQoYCR7dmFsdWV9YCwgZGVzYyk7XG4gICAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgbXVuc2V0KHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9tdmFsdWUuaGFzKGAke3ZhbHVlfWApKSB7XG4gICAgICB0aGlzLl9tdmFsdWUuZGVsZXRlKGAke3ZhbHVlfWApO1xuICAgICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHN0b2dnbGUodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBudWxsICYmIHRoaXMuX3ZhbHVlLnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHsgdmFsdWUsIGRlc2MgfTtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3NldCh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAoISh0aGlzLl92YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLl92YWx1ZS52YWx1ZSA9PT0gdmFsdWUpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHsgdmFsdWUsIGRlc2MgfTtcbiAgICAgIHRoaXMubm90aWZ5KG5vdGlmeSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TXVsdGlWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX212YWx1ZS5rZXlzKCkpLmpvaW4oJywnKTtcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5KG5vdGlmeTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAobm90aWZ5KSB7XG4gICAgICBpZiAodGhpcy5tdWx0aSkge1xuICAgICAgICB0aGlzLl9tY3VycmVudC5uZXh0KFxuICAgICAgICAgIEFycmF5LmZyb20odGhpcy5fbXZhbHVlLmVudHJpZXMoKSkubWFwKChbaywgdl0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IGRlc2M6IHYsIHZhbHVlOiBrIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnQubmV4dCh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9tb2RlbC1saXN0LWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBZWpELE1BQU0sT0FBTyxlQUFlO0lBdUIxQixZQUFZLE1BQTZCO1FBWmxDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVyQiwyQkFBMkI7UUFDakIsV0FBTSxHQUEyQixJQUFJLENBQUM7UUFDaEQsNkJBQTZCO1FBQ25CLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUM5QyxzQ0FBc0M7UUFDNUIsYUFBUSxHQUFHLElBQUksYUFBYSxDQUF5QixDQUFDLENBQUMsQ0FBQztRQUNsRSx3Q0FBd0M7UUFDOUIsY0FBUyxHQUFHLElBQUksYUFBYSxDQUFvQixDQUFDLENBQUMsQ0FBQztRQUc1RCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUM5Qix3QkFBd0I7SUFDMUIsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsWUFBWTtRQUdyQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdEM7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLFlBQVksQ0FBQyxNQUFrQjtRQUNwQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzNDO2FBQU0sSUFDTCxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQ1gsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUNwQjtZQUNBLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFrQixJQUFJO1FBQ2pDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7U0FDMUM7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0sR0FBRyxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUN6RCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN2QztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBVSxFQUFFLElBQVksRUFBRSxTQUFrQixJQUFJO1FBQzNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFVLEVBQUUsSUFBWSxFQUFFLFNBQWtCLElBQUk7UUFDNUQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDMUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxHQUFHO1FBQ1IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxPQUFPLENBQUMsS0FBVSxFQUFFLElBQVksRUFBRSxTQUFrQixJQUFJO1FBQzlELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sSUFBSSxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUM3RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sT0FBTyxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUM5RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtZQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sSUFBSSxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsU0FBa0IsSUFBSTtRQUMzRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFVLEVBQUUsSUFBWSxFQUFFLFNBQWtCLElBQUk7UUFDN0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRTtZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxhQUFhO1FBQ25CLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxNQUFNLENBQUMsU0FBa0IsSUFBSTtRQUNuQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJEYXRhIH0gZnJvbSAnLi4vLi4vZGF0YS9kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZJTFRFUl9UWVBFIH0gZnJvbSAnLi9maWx0ZXJzL2ZpbHRlcnR5cGVzJztcbmltcG9ydCB7IElEaXNwRWRpdENob2ljZSB9IGZyb20gJy4uLy4uL2Rpc3BlZGl0L2Rpc3BlZGl0L2Rpc3BlZGl0LmNvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxMaXN0RmlsdGVyUGFyYW1zIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmaWVsZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgaGVscD86IHN0cmluZztcbiAgdmFsdWU/OiBhbnk7XG4gIGRlc2M/OiBhbnk7XG4gIGRlZmF1bHQ/OiBhbnk7XG4gIGRpc3BsYXlDbGFzc2VzPzogc3RyaW5nW10gfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbExpc3RGaWx0ZXIgaW1wbGVtZW50cyBNb2RlbExpc3RGaWx0ZXJQYXJhbXMge1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZmllbGQ6IHN0cmluZztcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWxwOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXNjPzogYW55O1xuICBwdWJsaWMgZGVmYXVsdD86IGFueTtcbiAgcHVibGljIHR5cGU6IEZJTFRFUl9UWVBFO1xuICBwdWJsaWMgYWxsb3dlZDogYm9vbGVhbjtcbiAgcHVibGljIGVuYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBkaXNwbGF5Q2xhc3Nlcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBwdWJsaWMgcHJpc3RpbmUgPSB0cnVlO1xuICBwdWJsaWMgbXVsdGkgPSBmYWxzZTtcblxuICAvKiogU2luZ2xlIGN1cnJlbnQgdmFsdWUgKi9cbiAgcHJvdGVjdGVkIF92YWx1ZTogSURpc3BFZGl0Q2hvaWNlIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBNdWx0aXBsZSBjdXJyZW50IHZhbHVlICovXG4gIHByb3RlY3RlZCBfbXZhbHVlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgLyoqIFNpbmdsZSBjdXJyZW50IHZhbHVlIG9ic2VydmFibGUgKi9cbiAgcHJvdGVjdGVkIF9jdXJyZW50ID0gbmV3IFJlcGxheVN1YmplY3Q8SURpc3BFZGl0Q2hvaWNlIHwgbnVsbD4oMSk7XG4gIC8qKiBNdWx0aXBsZSBjdXJyZW50IHZhbHVlIG9ic2VydmFibGUgKi9cbiAgcHJvdGVjdGVkIF9tY3VycmVudCA9IG5ldyBSZXBsYXlTdWJqZWN0PElEaXNwRWRpdENob2ljZVtdPigxKTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IE1vZGVsTGlzdEZpbHRlclBhcmFtcykge1xuICAgIHRoaXMubmFtZSA9IHBhcmFtcy5uYW1lO1xuICAgIHRoaXMuZmllbGQgPSBwYXJhbXMuZmllbGQ7XG4gICAgdGhpcy5sYWJlbCA9IHBhcmFtcy5sYWJlbCB8fCAnJztcbiAgICB0aGlzLmhlbHAgPSBwYXJhbXMuaGVscCB8fCAnJztcbiAgICB0aGlzLmRlc2MgPSBwYXJhbXMuZGVzYztcbiAgICB0aGlzLmRpc3BsYXlDbGFzc2VzID0gcGFyYW1zLmRpc3BsYXlDbGFzc2VzO1xuICAgIHRoaXMuYWxsb3dlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICB0aGlzLmRlZmF1bHQgPSBwYXJhbXMuZGVmYXVsdDtcbiAgICAvLyBGSVhNRTogYWRkIHZhbHVlIGluaXRcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWN1cnJlbnQkKCk6IE9ic2VydmFibGU8SURpc3BFZGl0Q2hvaWNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fbWN1cnJlbnQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnQkKCk6IE9ic2VydmFibGU8SURpc3BFZGl0Q2hvaWNlIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxcbiAgICBJRGlzcEVkaXRDaG9pY2UgfCBJRGlzcEVkaXRDaG9pY2VbXSB8IG51bGxcbiAgPiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tY3VycmVudC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmlsdGVyKGZpbHRlcjogRmlsdGVyRGF0YSkge1xuICAgIGlmICh0aGlzLm11bHRpICYmIHRoaXMuX212YWx1ZS5zaXplID4gMCkge1xuICAgICAgZmlsdGVyW3RoaXMuZmllbGRdID0gdGhpcy5nZXRNdWx0aVZhbHVlKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLm11bHRpICYmXG4gICAgICB0aGlzLl92YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLl92YWx1ZSAhPT0gbnVsbFxuICAgICkge1xuICAgICAgZmlsdGVyW3RoaXMuZmllbGRdID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihub3RpZnk6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHRoaXMuX212YWx1ZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1zZXQodmFsdWUsIGRlc2MsIG5vdGlmeSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNzZXQodmFsdWUsIGRlc2MsIG5vdGlmeSk7XG4gIH1cblxuICBwdWJsaWMgdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGkpIHtcbiAgICAgIHJldHVybiB0aGlzLm11bnNldCh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3Vuc2V0KHZhbHVlLCBkZXNjLCBub3RpZnkpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZSh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5tdWx0aSkge1xuICAgICAgcmV0dXJuIHRoaXMubXRvZ2dsZSh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RvZ2dsZSh2YWx1ZSwgZGVzYywgbm90aWZ5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBgJHt0aGlzLl92YWx1ZT8udmFsdWV9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoKTogSURpc3BFZGl0Q2hvaWNlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBtdG9nZ2xlKHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9tdmFsdWUuaGFzKGAke3ZhbHVlfWApKSB7XG4gICAgICB0aGlzLl9tdmFsdWUuZGVsZXRlKGAke3ZhbHVlfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9tdmFsdWUuc2V0KGAke3ZhbHVlfWAsIGRlc2MpO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBtc2V0KHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5fbXZhbHVlLmhhcyhgJHt2YWx1ZX1gKSkge1xuICAgICAgdGhpcy5fbXZhbHVlLnNldChgJHt2YWx1ZX1gLCBkZXNjKTtcbiAgICAgIHRoaXMubm90aWZ5KG5vdGlmeSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBtdW5zZXQodmFsdWU6IGFueSwgZGVzYzogc3RyaW5nLCBub3RpZnk6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX212YWx1ZS5oYXMoYCR7dmFsdWV9YCkpIHtcbiAgICAgIHRoaXMuX212YWx1ZS5kZWxldGUoYCR7dmFsdWV9YCk7XG4gICAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvZ2dsZSh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IG51bGwgJiYgdGhpcy5fdmFsdWUudmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0geyB2YWx1ZSwgZGVzYyB9O1xuICAgIH1cbiAgICB0aGlzLm5vdGlmeShub3RpZnkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzc2V0KHZhbHVlOiBhbnksIGRlc2M6IHN0cmluZywgbm90aWZ5OiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghKHRoaXMuX3ZhbHVlICE9PSBudWxsICYmIHRoaXMuX3ZhbHVlLnZhbHVlID09PSB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0geyB2YWx1ZSwgZGVzYyB9O1xuICAgICAgdGhpcy5ub3RpZnkobm90aWZ5KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHN1bnNldCh2YWx1ZTogYW55LCBkZXNjOiBzdHJpbmcsIG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMubm90aWZ5KG5vdGlmeSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNdWx0aVZhbHVlKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fbXZhbHVlLmtleXMoKSkuam9pbignLCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3RpZnkobm90aWZ5OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChub3RpZnkpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpKSB7XG4gICAgICAgIHRoaXMuX21jdXJyZW50Lm5leHQoXG4gICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLl9tdmFsdWUuZW50cmllcygpKS5tYXAoKFtrLCB2XSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgZGVzYzogdiwgdmFsdWU6IGsgfTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY3VycmVudC5uZXh0KHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,7 +3,7 @@ import { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, Component, I
|
|
|
3
3
|
import 'reflect-metadata';
|
|
4
4
|
import * as i2$2 from '@angular/forms';
|
|
5
5
|
import { FormControl, Validators, FormGroup, ReactiveFormsModule, UntypedFormControl, NG_VALUE_ACCESSOR, UntypedFormGroup } from '@angular/forms';
|
|
6
|
-
import { throwError, ReplaySubject, share, combineLatest, of, takeUntil, NEVER, Subject, debounceTime, distinctUntilChanged,
|
|
6
|
+
import { throwError, ReplaySubject, share, combineLatest, of, takeUntil, NEVER, Subject, debounceTime, distinctUntilChanged, firstValueFrom, isObservable, timer, Observable, BehaviorSubject, merge } from 'rxjs';
|
|
7
7
|
import { tap, switchMap, map, throttleTime, filter, mergeMap, finalize, catchError, take, first } from 'rxjs/operators';
|
|
8
8
|
import * as i2 from '@angular/platform-browser';
|
|
9
9
|
import { makeStateKey } from '@angular/platform-browser';
|
|
@@ -2044,16 +2044,156 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
2044
2044
|
type: Input
|
|
2045
2045
|
}] } });
|
|
2046
2046
|
|
|
2047
|
+
class Level {
|
|
2048
|
+
constructor(tree, level, choices) {
|
|
2049
|
+
this.tree = tree;
|
|
2050
|
+
this.level = level;
|
|
2051
|
+
this.fc = new FormControl('');
|
|
2052
|
+
this.choices = choices;
|
|
2053
|
+
this.subs = this.fc.valueChanges.subscribe((val) => {
|
|
2054
|
+
if (this.selected !== val) {
|
|
2055
|
+
this.selected = val;
|
|
2056
|
+
this.tree.updated(this);
|
|
2057
|
+
}
|
|
2058
|
+
});
|
|
2059
|
+
}
|
|
2060
|
+
close() {
|
|
2061
|
+
this.subs.unsubscribe();
|
|
2062
|
+
}
|
|
2063
|
+
}
|
|
2064
|
+
class Tree {
|
|
2065
|
+
constructor(qs, maxLevel, display, filter) {
|
|
2066
|
+
this.qs = qs;
|
|
2067
|
+
this.maxLevel = maxLevel;
|
|
2068
|
+
this.display = display;
|
|
2069
|
+
this.filter = filter;
|
|
2070
|
+
this.levels = [];
|
|
2071
|
+
this.changed = new Subject();
|
|
2072
|
+
}
|
|
2073
|
+
/**
|
|
2074
|
+
* Conditionnaly add level to current tree.
|
|
2075
|
+
*
|
|
2076
|
+
* - if previous level have non-empty selected value
|
|
2077
|
+
* - if current level choices are non empty
|
|
2078
|
+
*/
|
|
2079
|
+
addLevel(fparent) {
|
|
2080
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2081
|
+
let values = [];
|
|
2082
|
+
if (this.levels.length === 0) {
|
|
2083
|
+
values = yield firstValueFrom(this.qs
|
|
2084
|
+
.filter(Object.assign({ level: this.levels.length, parent: 'null' }, this.filter))
|
|
2085
|
+
.get());
|
|
2086
|
+
}
|
|
2087
|
+
else {
|
|
2088
|
+
const parent = fparent
|
|
2089
|
+
? fparent
|
|
2090
|
+
: this.levels[this.levels.length - 1].selected;
|
|
2091
|
+
if (parent) {
|
|
2092
|
+
values = yield firstValueFrom(this.qs
|
|
2093
|
+
.filter(Object.assign({ level: this.levels.length, parent: this.levels[this.levels.length - 1].selected || 'null' }, this.filter))
|
|
2094
|
+
.get());
|
|
2095
|
+
}
|
|
2096
|
+
}
|
|
2097
|
+
if (values.length > 0) {
|
|
2098
|
+
const level = new Level(this, this.levels.length, []);
|
|
2099
|
+
for (const v of values) {
|
|
2100
|
+
level.choices.push({ value: v.id, desc: this.display(v) });
|
|
2101
|
+
}
|
|
2102
|
+
this.levels.push(level);
|
|
2103
|
+
return level;
|
|
2104
|
+
}
|
|
2105
|
+
return null;
|
|
2106
|
+
});
|
|
2107
|
+
}
|
|
2108
|
+
updated(level) {
|
|
2109
|
+
var _a;
|
|
2110
|
+
const newLevels = [];
|
|
2111
|
+
for (const l of this.levels) {
|
|
2112
|
+
if (l.level <= level.level) {
|
|
2113
|
+
newLevels.push(l);
|
|
2114
|
+
}
|
|
2115
|
+
else if (l.level > level.level) {
|
|
2116
|
+
l.close();
|
|
2117
|
+
}
|
|
2118
|
+
}
|
|
2119
|
+
this.levels = newLevels;
|
|
2120
|
+
this.addLevel();
|
|
2121
|
+
if (level.selected) {
|
|
2122
|
+
this.changed.next(level.selected);
|
|
2123
|
+
}
|
|
2124
|
+
else {
|
|
2125
|
+
this.changed.next(((_a = this.levels[level.level - 1]) === null || _a === void 0 ? void 0 : _a.selected) || null);
|
|
2126
|
+
}
|
|
2127
|
+
}
|
|
2128
|
+
prepare(value) {
|
|
2129
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2130
|
+
// console.log('prepare', value);
|
|
2131
|
+
const levels = [];
|
|
2132
|
+
let cur = (yield firstValueFrom(this.qs.filter(Object.assign({ id: value }, this.filter)).get()))[0];
|
|
2133
|
+
levels.push(cur);
|
|
2134
|
+
let nlev = 0;
|
|
2135
|
+
while (cur.parent !== null) {
|
|
2136
|
+
cur = (yield firstValueFrom(this.qs
|
|
2137
|
+
.filter(Object.assign({ id: cur.parent }, this.filter))
|
|
2138
|
+
.get()))[0];
|
|
2139
|
+
levels.push(cur);
|
|
2140
|
+
nlev++;
|
|
2141
|
+
if (nlev > this.maxLevel) {
|
|
2142
|
+
throw Error('Max level error, could not find root');
|
|
2143
|
+
}
|
|
2144
|
+
}
|
|
2145
|
+
for (let i = levels.length - 1; i >= 0; i--) {
|
|
2146
|
+
const lv = yield this.addLevel();
|
|
2147
|
+
if (lv !== null) {
|
|
2148
|
+
lv.selected = levels[i].id;
|
|
2149
|
+
lv.fc.setValue(levels[i].id, { emitEvent: false });
|
|
2150
|
+
}
|
|
2151
|
+
}
|
|
2152
|
+
if (this.levels.length <= this.maxLevel) {
|
|
2153
|
+
yield this.addLevel();
|
|
2154
|
+
}
|
|
2155
|
+
});
|
|
2156
|
+
}
|
|
2157
|
+
reset() { }
|
|
2158
|
+
}
|
|
2047
2159
|
class ModelListTreeFilterComponent {
|
|
2048
2160
|
constructor() {
|
|
2049
2161
|
this.classes = '';
|
|
2050
2162
|
}
|
|
2163
|
+
ngOnInit() {
|
|
2164
|
+
var _a;
|
|
2165
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2166
|
+
this.tree = new Tree(this.filter.queryset, this.filter.maxLevel, this.filter.display, this.filter.filter);
|
|
2167
|
+
if (this.filter.get()) {
|
|
2168
|
+
yield this.tree.prepare((_a = this.filter.get()) === null || _a === void 0 ? void 0 : _a.value);
|
|
2169
|
+
}
|
|
2170
|
+
else {
|
|
2171
|
+
yield this.tree.addLevel();
|
|
2172
|
+
}
|
|
2173
|
+
this.tree.changed.pipe(debounceTime(250)).subscribe((val) => {
|
|
2174
|
+
// console.log('changed', val);
|
|
2175
|
+
if (val === null) {
|
|
2176
|
+
this.filter.clear();
|
|
2177
|
+
this.list.filters.update();
|
|
2178
|
+
}
|
|
2179
|
+
else {
|
|
2180
|
+
if (this.filter.set(val, '')) {
|
|
2181
|
+
this.list.filters.update();
|
|
2182
|
+
}
|
|
2183
|
+
}
|
|
2184
|
+
});
|
|
2185
|
+
});
|
|
2186
|
+
}
|
|
2187
|
+
disable() {
|
|
2188
|
+
this.filter.enabled = false;
|
|
2189
|
+
this.list.filters.update();
|
|
2190
|
+
}
|
|
2051
2191
|
}
|
|
2052
2192
|
ModelListTreeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ModelListTreeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2053
|
-
ModelListTreeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: ModelListTreeFilterComponent, isStandalone: true, selector: "data-model-list-tree-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "<
|
|
2193
|
+
ModelListTreeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: ModelListTreeFilterComponent, isStandalone: true, selector: "data-model-list-tree-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"levelselect\" *ngFor=\"let l of tree.levels\">\n <select class=\"form-select form-select-sm\" [formControl]=\"l.fc\">\n <option value=\"\">{{filter.help}}</option>\n <option *ngFor=\"let ch of l.choices\" [value]=\"ch.value\">{{ch.desc}}</option>\n </select>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
2054
2194
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ModelListTreeFilterComponent, decorators: [{
|
|
2055
2195
|
type: Component,
|
|
2056
|
-
args: [{ selector: 'data-model-list-tree-filter', standalone: true, imports: [CommonModule], template: "<
|
|
2196
|
+
args: [{ selector: 'data-model-list-tree-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"levelselect\" *ngFor=\"let l of tree.levels\">\n <select class=\"form-select form-select-sm\" [formControl]=\"l.fc\">\n <option value=\"\">{{filter.help}}</option>\n <option *ngFor=\"let ch of l.choices\" [value]=\"ch.value\">{{ch.desc}}</option>\n </select>\n </div>\n</div>" }]
|
|
2057
2197
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
2058
2198
|
type: Input
|
|
2059
2199
|
}], filter: [{
|
|
@@ -2243,6 +2383,9 @@ class ModelListFilter {
|
|
|
2243
2383
|
var _a;
|
|
2244
2384
|
return `${(_a = this._value) === null || _a === void 0 ? void 0 : _a.value}`;
|
|
2245
2385
|
}
|
|
2386
|
+
get() {
|
|
2387
|
+
return this._value;
|
|
2388
|
+
}
|
|
2246
2389
|
mtoggle(value, desc, notify = true) {
|
|
2247
2390
|
if (this._mvalue.has(`${value}`)) {
|
|
2248
2391
|
this._mvalue.delete(`${value}`);
|
|
@@ -2536,15 +2679,19 @@ class ModelListTextFilter extends ModelListFilter {
|
|
|
2536
2679
|
}
|
|
2537
2680
|
}
|
|
2538
2681
|
|
|
2539
|
-
class ModelListTreeFilter extends
|
|
2682
|
+
class ModelListTreeFilter extends ModelListAutocompleteFilter {
|
|
2540
2683
|
constructor(params) {
|
|
2541
2684
|
super(params);
|
|
2542
|
-
this.
|
|
2543
|
-
|
|
2544
|
-
|
|
2685
|
+
this.maxLevel = 5;
|
|
2686
|
+
this.type = 'tree';
|
|
2687
|
+
if (this.label == '') {
|
|
2688
|
+
this.label = 'Sélectionnez dans la hiérarchie';
|
|
2545
2689
|
}
|
|
2546
|
-
if (this.help ==
|
|
2547
|
-
this.help =
|
|
2690
|
+
if (this.help == '') {
|
|
2691
|
+
this.help = 'Texte à rechercher';
|
|
2692
|
+
}
|
|
2693
|
+
if (params.maxLevel) {
|
|
2694
|
+
this.maxLevel = params.maxLevel;
|
|
2548
2695
|
}
|
|
2549
2696
|
}
|
|
2550
2697
|
}
|