@firestitch/filter 18.2.14 → 18.2.16
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/app/components/filter/filter.component.d.ts +0 -1
- package/app/components/filters-item/week/week.component.d.ts +0 -1
- package/app/interfaces/config.interface.d.ts +2 -1
- package/app/models/items/autocomplete-chips-item.d.ts +1 -2
- package/app/models/items/base-date-item.d.ts +1 -2
- package/app/models/items/base-date-range-item.d.ts +1 -2
- package/app/models/items/base-item.d.ts +4 -1
- package/app/models/items/chips-item.d.ts +1 -4
- package/app/models/items/range-item.d.ts +4 -8
- package/app/models/items/select-item.d.ts +1 -2
- package/app/models/items/week-item.d.ts +1 -2
- package/app/services/filter-controller.service.d.ts +0 -2
- package/esm2022/app/components/filter/filter.component.mjs +4 -7
- package/esm2022/app/components/filter-chips/filter-chips.component.mjs +3 -3
- package/esm2022/app/components/filters-item/checkbox/checkbox.component.mjs +2 -2
- package/esm2022/app/components/filters-item/week/week.component.mjs +3 -6
- package/esm2022/app/interfaces/config.interface.mjs +1 -1
- package/esm2022/app/models/filter-config.mjs +5 -2
- package/esm2022/app/models/items/autocomplete-chips-item.mjs +3 -6
- package/esm2022/app/models/items/base-date-item.mjs +3 -6
- package/esm2022/app/models/items/base-date-range-item.mjs +3 -6
- package/esm2022/app/models/items/base-item.mjs +10 -9
- package/esm2022/app/models/items/chips-item.mjs +3 -25
- package/esm2022/app/models/items/range-item.mjs +7 -10
- package/esm2022/app/models/items/select-item.mjs +7 -7
- package/esm2022/app/models/items/week-item.mjs +3 -40
- package/esm2022/app/services/filter-controller.service.mjs +11 -21
- package/esm2022/app/services/saved-filter-controller.service.mjs +8 -7
- package/fesm2022/firestitch-filter.mjs +67 -145
- package/fesm2022/firestitch-filter.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { isEmpty } from '@firestitch/common';
|
|
2
1
|
import { formatPeriodObject } from '@firestitch/datepicker';
|
|
3
|
-
import { isDate, isValid, parseISO } from 'date-fns';
|
|
4
|
-
import { clone, isObject, isString } from 'lodash-es';
|
|
5
2
|
import { getRangeName } from '../../helpers/get-range-name';
|
|
6
3
|
import { parseDate } from '../../helpers/parse-date';
|
|
7
4
|
import { BaseItem } from './base-item';
|
|
@@ -17,47 +14,13 @@ export class WeekItem extends BaseItem {
|
|
|
17
14
|
static create(config, filter) {
|
|
18
15
|
return new WeekItem(config, null, filter);
|
|
19
16
|
}
|
|
20
|
-
|
|
21
|
-
let value = clone(super.value);
|
|
22
|
-
if (!isObject(value) ||
|
|
23
|
-
(isEmpty(value.from, { zero: true }) && isEmpty(value.to, { zero: true }))) {
|
|
24
|
-
value = undefined;
|
|
25
|
-
}
|
|
26
|
-
if (isEmpty(value, { zero: true })) {
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
|
-
let from = value.from;
|
|
30
|
-
let to = value.to;
|
|
31
|
-
const period = value.period;
|
|
32
|
-
value = {};
|
|
33
|
-
if (from) {
|
|
34
|
-
if (isString(from)) {
|
|
35
|
-
from = parseISO(from);
|
|
36
|
-
}
|
|
37
|
-
if (isValid(from) && isDate(from)) {
|
|
38
|
-
value.from = from;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (to) {
|
|
42
|
-
if (isString(to)) {
|
|
43
|
-
to = parseISO(to);
|
|
44
|
-
}
|
|
45
|
-
if (isValid(to) && isDate(to)) {
|
|
46
|
-
value.to = to;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
if (period) {
|
|
50
|
-
value.period = isString(period) ? parseInt(period, 10) : period;
|
|
51
|
-
}
|
|
52
|
-
return value;
|
|
53
|
-
}
|
|
54
|
-
set value(value) {
|
|
17
|
+
setValue(value, emitChange = true) {
|
|
55
18
|
if (value) {
|
|
56
19
|
value.from = parseDate(value.from);
|
|
57
20
|
value.to = parseDate(value.to);
|
|
58
21
|
value.period = parseInt(value.period, 10) || undefined;
|
|
59
22
|
}
|
|
60
|
-
super.value
|
|
23
|
+
super.setValue(value, emitChange);
|
|
61
24
|
}
|
|
62
25
|
get query() {
|
|
63
26
|
const value = this.value;
|
|
@@ -83,4 +46,4 @@ export class WeekItem extends BaseItem {
|
|
|
83
46
|
];
|
|
84
47
|
}
|
|
85
48
|
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vlay1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2RlbHMvaXRlbXMvd2Vlay1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd2QyxNQUFNLE9BQU8sUUFBUyxTQUFRLFFBQStCO0lBTS9DO0lBQ0E7SUFIWixZQUNFLFVBQWlDLEVBQ3ZCLGlCQUEwQixFQUMxQixPQUF3QjtRQUVsQyxLQUFLLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBSHBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUztRQUMxQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUdsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDdEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBNkIsRUFBRSxNQUF1QjtRQUN6RSxPQUFPLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxHQUFHLElBQUk7UUFDdEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxLQUFLLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0IsS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDekQsQ0FBQztRQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sZUFBZSxHQUFHLEdBQUcsSUFBSSxRQUFRLENBQUM7UUFFeEMsT0FBTztZQUNMLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxTQUFTO1lBQ3pDLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxTQUFTO1lBQ3JDLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxTQUFTO1NBQzlDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsSUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPO1lBQ0w7Z0JBQ0UsS0FBSyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNsQjtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXRQZXJpb2RPYmplY3QgfSBmcm9tICdAZmlyZXN0aXRjaC9kYXRlcGlja2VyJztcblxuXG5pbXBvcnQgdHlwZSB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0UmFuZ2VOYW1lIH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtcmFuZ2UtbmFtZSc7XG5pbXBvcnQgeyBwYXJzZURhdGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3BhcnNlLWRhdGUnO1xuaW1wb3J0IHsgSUZpbHRlckNvbmZpZ1dlZWtJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pdGVtcy93ZWVrLmludGVyZmFjZSc7XG5cbmltcG9ydCB7IEJhc2VJdGVtIH0gZnJvbSAnLi9iYXNlLWl0ZW0nO1xuXG5cbmV4cG9ydCBjbGFzcyBXZWVrSXRlbSBleHRlbmRzIEJhc2VJdGVtPElGaWx0ZXJDb25maWdXZWVrSXRlbT4ge1xuXG4gIHB1YmxpYyBkZWNsYXJlIHNlZWREYXRlOiBEYXRlO1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgaXRlbUNvbmZpZzogSUZpbHRlckNvbmZpZ1dlZWtJdGVtLFxuICAgIHByb3RlY3RlZCBfYWRkaXRpb25hbENvbmZpZzogdW5rbm93bixcbiAgICBwcm90ZWN0ZWQgX2ZpbHRlcjogRmlsdGVyQ29tcG9uZW50LFxuICApIHtcbiAgICBzdXBlcihpdGVtQ29uZmlnLCBfYWRkaXRpb25hbENvbmZpZywgX2ZpbHRlcik7XG4gICAgdGhpcy5zZWVkRGF0ZSA9IGl0ZW1Db25maWcuc2VlZERhdGU7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShjb25maWc6IElGaWx0ZXJDb25maWdXZWVrSXRlbSwgZmlsdGVyOiBGaWx0ZXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFdlZWtJdGVtKGNvbmZpZywgbnVsbCwgZmlsdGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZSwgZW1pdENoYW5nZSA9IHRydWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlLmZyb20gPSBwYXJzZURhdGUodmFsdWUuZnJvbSk7XG4gICAgICB2YWx1ZS50byA9IHBhcnNlRGF0ZSh2YWx1ZS50byk7XG4gICAgICB2YWx1ZS5wZXJpb2QgPSBwYXJzZUludCh2YWx1ZS5wZXJpb2QsIDEwKSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgc3VwZXIuc2V0VmFsdWUodmFsdWUsIGVtaXRDaGFuZ2UpO1xuICB9XG5cbiAgcHVibGljIGdldCBxdWVyeSgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMubmFtZTtcbiAgICBjb25zdCBwYXJhbUZyb21OYW1lID0gZ2V0UmFuZ2VOYW1lKG5hbWUsICdmcm9tJyk7XG4gICAgY29uc3QgcGFyYW1Ub05hbWUgPSBnZXRSYW5nZU5hbWUobmFtZSwgJ3RvJyk7XG4gICAgY29uc3QgcGFyYW1QZXJpb2ROYW1lID0gYCR7bmFtZX1QZXJpb2RgO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIFtwYXJhbUZyb21OYW1lXTogdmFsdWU/LmZyb20gfHwgdW5kZWZpbmVkLFxuICAgICAgW3BhcmFtVG9OYW1lXTogdmFsdWU/LnRvIHx8IHVuZGVmaW5lZCxcbiAgICAgIFtwYXJhbVBlcmlvZE5hbWVdOiB2YWx1ZT8ucGVyaW9kIHx8IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldCBjaGlwcygpOiB7IG5hbWU/OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcgfVtdIHtcbiAgICBpZighdGhpcy5oYXNWYWx1ZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBmb3JtYXRQZXJpb2RPYmplY3QodGhpcy52YWx1ZSksXG4gICAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG59XG4iXX0=
|
|
@@ -23,7 +23,6 @@ export class FilterController {
|
|
|
23
23
|
_queryParamController = inject(QueryParamController);
|
|
24
24
|
_keywordController = inject(KeywordController);
|
|
25
25
|
_sortController = inject(SortController);
|
|
26
|
-
_emitChange = true;
|
|
27
26
|
get items() {
|
|
28
27
|
return Array.from(this._items.values());
|
|
29
28
|
}
|
|
@@ -71,20 +70,12 @@ export class FilterController {
|
|
|
71
70
|
getItem(name) {
|
|
72
71
|
return this._items.get(name);
|
|
73
72
|
}
|
|
74
|
-
changeTransaction(fn) {
|
|
75
|
-
this._emitChange = false;
|
|
76
|
-
fn();
|
|
77
|
-
this._emitChange = true;
|
|
78
|
-
this._change$.next(null);
|
|
79
|
-
}
|
|
80
73
|
filtersClear() {
|
|
81
|
-
this.
|
|
82
|
-
|
|
83
|
-
item.clear();
|
|
84
|
-
});
|
|
85
|
-
this._keywordController.clear();
|
|
86
|
-
this._sortController.clear();
|
|
74
|
+
this.items.forEach((item) => {
|
|
75
|
+
item.clear();
|
|
87
76
|
});
|
|
77
|
+
this._keywordController.clear();
|
|
78
|
+
this._sortController.clear();
|
|
88
79
|
}
|
|
89
80
|
get queryParam() {
|
|
90
81
|
return this.items
|
|
@@ -108,11 +99,10 @@ export class FilterController {
|
|
|
108
99
|
};
|
|
109
100
|
}
|
|
110
101
|
set values(values) {
|
|
111
|
-
this.
|
|
112
|
-
|
|
113
|
-
item.value = values[item.name];
|
|
114
|
-
});
|
|
102
|
+
this.items.forEach((item) => {
|
|
103
|
+
item.setValue(values[item.name], false);
|
|
115
104
|
});
|
|
105
|
+
this.change();
|
|
116
106
|
}
|
|
117
107
|
get values() {
|
|
118
108
|
return this.items
|
|
@@ -183,12 +173,12 @@ export class FilterController {
|
|
|
183
173
|
}
|
|
184
174
|
_initChanges() {
|
|
185
175
|
merge(...this.items
|
|
186
|
-
.map((item) => item.
|
|
187
|
-
.pipe(map(() => item))))
|
|
176
|
+
.map((item) => item.valueEvent$
|
|
177
|
+
.pipe(filter((event) => event.emitChange), map(() => item))))
|
|
188
178
|
.pipe(tap((item) => this._change$.next([item])), takeUntil(this._destroy$))
|
|
189
179
|
.subscribe();
|
|
190
180
|
this._change$
|
|
191
|
-
.pipe(
|
|
181
|
+
.pipe(tap((items) => {
|
|
192
182
|
if (this._config.change) {
|
|
193
183
|
this._config.change(this.query, this._sortController.getSort());
|
|
194
184
|
}
|
|
@@ -206,4 +196,4 @@ export class FilterController {
|
|
|
206
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilterController, decorators: [{
|
|
207
197
|
type: Injectable
|
|
208
198
|
}] });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJaEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBUWpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFJM0QsTUFBTSxPQUFPLGdCQUFnQjtJQUVwQixNQUFNLENBQWtCO0lBRXZCLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQXVDLENBQUM7SUFDeEQsT0FBTyxDQUFpQjtJQUN4QixLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUM1QixNQUFNLEdBQUcs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QUUsQ0FBQztJQUNqQixDQUFDO3dHQS9QVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnLi4vZW51bXMvaXRlbS10eXBlLmVudW0nO1xuaW1wb3J0IHsgY3JlYXRlRmlsdGVySXRlbSB9IGZyb20gJy4uL2hlbHBlcnMvY3JlYXRlLWZpbHRlci1pdGVtJztcbmltcG9ydCB7XG4gIElGaWx0ZXJDb25maWdJdGVtLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dGVybmFsLXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRnNGaWx0ZXJDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZyc7XG5pbXBvcnQgeyBCYXNlSXRlbSB9IGZyb20gJy4uL21vZGVscy9pdGVtcy9iYXNlLWl0ZW0nO1xuXG5pbXBvcnQgeyBLZXl3b3JkQ29udHJvbGxlciB9IGZyb20gJy4va2V5d29yZC1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyc2lzdGFuY2VDb250cm9sbGVyIH0gZnJvbSAnLi9wZXJzaXN0YW5jZS1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlcnlQYXJhbUNvbnRyb2xsZXIgfSBmcm9tICcuL3F1ZXJ5LXBhcmFtLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTYXZlZEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuL3NhdmVkLWZpbHRlci1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU29ydENvbnRyb2xsZXIgfSBmcm9tICcuL3NvcnQtY29udHJvbGxlci5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmlsdGVyQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIGZpbHRlcjogRmlsdGVyQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgX3JlYWR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pdGVtcyA9IG5ldyBNYXA8c3RyaW5nLCBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4+KCk7XG4gIHByaXZhdGUgX2NvbmZpZzogRnNGaWx0ZXJDb25maWc7XG4gIHByaXZhdGUgX2FkZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9pbml0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2NoYW5nZSQgPSBuZXcgU3ViamVjdDxCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXT4oKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9wZXJzaXN0YW5jZUNvbnRyb2xsZXIgPSBpbmplY3QoUGVyc2lzdGFuY2VDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfc2F2ZWRGaWx0ZXJDb250cm9sbGVyID0gaW5qZWN0KFNhdmVkRmlsdGVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX3F1ZXJ5UGFyYW1Db250cm9sbGVyID0gaW5qZWN0KFF1ZXJ5UGFyYW1Db250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfa2V5d29yZENvbnRyb2xsZXIgPSBpbmplY3QoS2V5d29yZENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9zb3J0Q29udHJvbGxlciA9IGluamVjdChTb3J0Q29udHJvbGxlcik7XG4gIHByaXZhdGUgX2VtaXRDaGFuZ2UgPSB0cnVlO1xuXG4gIHB1YmxpYyBnZXQgaXRlbXMoKTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX2l0ZW1zLnZhbHVlcygpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXRlbU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ubmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBGc0ZpbHRlckNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5pdCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhZGQkKCkge1xuICAgIHJldHVybiB0aGlzLl9hZGQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFuZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlKCkge1xuICAgIHRoaXMuX2NoYW5nZSQubmV4dChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVhZHkkKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkeSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXQoY29uZmlnOiBGc0ZpbHRlckNvbmZpZykge1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICBvZihudWxsKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9hZGRJdGVtcyh0aGlzLl9jb25maWcuaXRlbXMgfHwgW10pKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2tleXdvcmRDb250cm9sbGVyLmluaXQodGhpcykpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fc29ydENvbnRyb2xsZXIuaW5pdCh0aGlzKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBmb3JrSm9pbih7XG4gICAgICAgICAgc2F2ZWRGaWx0ZXJzOiB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuaW5pdCh0aGlzKSxcbiAgICAgICAgICBwZXJzaXN0YW5jZTogdGhpcy5fcGVyc2lzdGFuY2VDb250cm9sbGVyLmluaXQodGhpcyksXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHRoaXMuX3F1ZXJ5UGFyYW1Db250cm9sbGVyLmluaXQodGhpcyksXG4gICAgICAgIH0pKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2luaXRJdGVtcygpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2luaXRDaGFuZ2VzKCkpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2luaXQkLm5leHQoKTtcbiAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLmluaXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5pbml0KHRoaXMucXVlcnksIHRoaXMuX3NvcnRDb250cm9sbGVyLmdldFNvcnQoKSwgdGhpcy5maWx0ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuX3JlYWR5JC5uZXh0KHRydWUpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJdGVtKG5hbWU6IHN0cmluZyk6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmdldChuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VUcmFuc2FjdGlvbihmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuX2VtaXRDaGFuZ2UgPSBmYWxzZTtcbiAgICBmbigpO1xuICAgIHRoaXMuX2VtaXRDaGFuZ2UgPSB0cnVlO1xuICAgIHRoaXMuX2NoYW5nZSQubmV4dChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJzQ2xlYXIoKSB7XG4gICAgdGhpcy5jaGFuZ2VUcmFuc2FjdGlvbigoKSA9PiB7XG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbS5jbGVhcigpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2tleXdvcmRDb250cm9sbGVyLmNsZWFyKCk7XG4gICAgICB0aGlzLl9zb3J0Q29udHJvbGxlci5jbGVhcigpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBxdWVyeVBhcmFtKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc1xuICAgICAgLnJlZHVjZSgoYWNjdW0sIGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5hY2N1bSxcbiAgICAgICAgICAuLi5pdGVtLnF1ZXJ5UGFyYW0sXG4gICAgICAgIH07XG4gICAgICB9LCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1ZXJ5KCk6IEtleVZhbHVlIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5pdGVtc1xuICAgICAgICAucmVkdWNlKChhY2N1bSwgaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2N1bSxcbiAgICAgICAgICAgIC4uLml0ZW0ucXVlcnksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSwge30pLFxuICAgICAgLi4udGhpcy5fc29ydENvbnRyb2xsZXIucXVlcnkoKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZXModmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHRoaXMuY2hhbmdlVHJhbnNhY3Rpb24oKCkgPT4ge1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0udmFsdWUgPSB2YWx1ZXNbaXRlbS5uYW1lXTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZXMoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zXG4gICAgICAucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtLnZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGFjY1tpdGVtLm5hbWVdID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuICB9XG4gIFxuICBwcml2YXRlIF9nZXRJbml0VmFsdWVzKCk6IEtleVZhbHVlIHtcbiAgICBsZXQgcmVzdWx0OiBLZXlWYWx1ZSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5lbmFibGVkICYmIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gT2JqZWN0LmtleXMocmVzdWx0KVxuICAgICAgICAuZmlsdGVyKChrZXkpID0+ICF0aGlzLml0ZW1OYW1lcy5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBba2V5XTogcmVzdWx0W2tleV0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIC4uLnF1ZXJ5LCBcbiAgICAgICAgLi4udGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlckRhdGEsXG4gICAgICB9O1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLl9wZXJzaXN0YW5jZUNvbnRyb2xsZXIuZW5hYmxlZCkge1xuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgLi4ucmVzdWx0LCBcbiAgICAgICAgICAuLi50aGlzLl9wZXJzaXN0YW5jZUNvbnRyb2xsZXIuZ2V0UXVlcnkoKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5xdWVyeVBhcmFtKSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAuLi5yZXN1bHQsIFxuICAgICAgICAgIC4uLnRoaXMuX3F1ZXJ5UGFyYW1Db250cm9sbGVyLnBhcmFtcyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEl0ZW1zKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5fZ2V0SW5pdFZhbHVlcygpO1xuXG4gICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgdGhpcy5pdGVtc1xuICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0uaW5pdCh2YWx1ZXNbaXRlbS5uYW1lXSk7XG4gICAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hZGRJdGVtcyhpdGVtczogSUZpbHRlckNvbmZpZ0l0ZW1bXSkge1xuICAgIHRoaXMuX2FkZCQubmV4dCgpO1xuXG4gICAgdGhpcy5faXRlbXMgPSBuZXcgTWFwKFxuICAgICAgaXRlbXMgICAgICBcbiAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9pdGVtcy5oYXMoaXRlbS5uYW1lKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0ZpbHRlciBpbml0IGVycm9yLiBJdGVtcyBuYW1lIG11c3QgYmUgdW5pcXVlLicpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmlsdGVySXRlbSA9IGNyZWF0ZUZpbHRlckl0ZW0oaXRlbSwgeyB9LCB0aGlzLmZpbHRlcik7XG5cbiAgICAgICAgICBpZiAoZmlsdGVySXRlbS50eXBlID09PSBJdGVtVHlwZS5LZXl3b3JkKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXl3b3JkQ29udHJvbGxlci5rZXl3b3JkSXRlbSA9IGZpbHRlckl0ZW07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5faXRlbXMuc2V0KGl0ZW0ubmFtZSwgZmlsdGVySXRlbSk7XG5cbiAgICAgICAgICByZXR1cm4gW2l0ZW0ubmFtZSwgZmlsdGVySXRlbV07XG4gICAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0Q2hhbmdlcygpIHtcbiAgICBtZXJnZShcbiAgICAgIC4uLnRoaXMuaXRlbXNcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiBpdGVtKSxcbiAgICAgICAgICApKSxcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChpdGVtKSA9PiB0aGlzLl9jaGFuZ2UkLm5leHQoW2l0ZW1dKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX2VtaXRDaGFuZ2UpLFxuICAgICAgICB0YXAoKGl0ZW1zOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jb25maWcuY2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9jb25maWcuY2hhbmdlKHRoaXMucXVlcnksIHRoaXMuX3NvcnRDb250cm9sbGVyLmdldFNvcnQoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaXRlbXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmNoYW5nZUNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgIGl0ZW0uY2hhbmdlQ2FsbGJhY2soaXRlbSwgdGhpcy5maWx0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG4iXX0=
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJaEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBUWpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFJM0QsTUFBTSxPQUFPLGdCQUFnQjtJQUVwQixNQUFNLENBQWtCO0lBRXZCLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQXVDLENBQUM7SUFDeEQsT0FBTyxDQUFpQjtJQUN4QixLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUM1QixNQUFNLEdBQUcs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Q0FDUDthQUNFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUN6QyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLFFBQVE7YUFDVixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsS0FBb0MsRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDbEUsQ0FBQztZQUVELEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO3dHQXJQVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnLi4vZW51bXMvaXRlbS10eXBlLmVudW0nO1xuaW1wb3J0IHsgY3JlYXRlRmlsdGVySXRlbSB9IGZyb20gJy4uL2hlbHBlcnMvY3JlYXRlLWZpbHRlci1pdGVtJztcbmltcG9ydCB7XG4gIElGaWx0ZXJDb25maWdJdGVtLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dGVybmFsLXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRnNGaWx0ZXJDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZyc7XG5pbXBvcnQgeyBCYXNlSXRlbSB9IGZyb20gJy4uL21vZGVscy9pdGVtcy9iYXNlLWl0ZW0nO1xuXG5pbXBvcnQgeyBLZXl3b3JkQ29udHJvbGxlciB9IGZyb20gJy4va2V5d29yZC1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyc2lzdGFuY2VDb250cm9sbGVyIH0gZnJvbSAnLi9wZXJzaXN0YW5jZS1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlcnlQYXJhbUNvbnRyb2xsZXIgfSBmcm9tICcuL3F1ZXJ5LXBhcmFtLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTYXZlZEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuL3NhdmVkLWZpbHRlci1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU29ydENvbnRyb2xsZXIgfSBmcm9tICcuL3NvcnQtY29udHJvbGxlci5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmlsdGVyQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIGZpbHRlcjogRmlsdGVyQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgX3JlYWR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pdGVtcyA9IG5ldyBNYXA8c3RyaW5nLCBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4+KCk7XG4gIHByaXZhdGUgX2NvbmZpZzogRnNGaWx0ZXJDb25maWc7XG4gIHByaXZhdGUgX2FkZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9pbml0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2NoYW5nZSQgPSBuZXcgU3ViamVjdDxCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXT4oKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9wZXJzaXN0YW5jZUNvbnRyb2xsZXIgPSBpbmplY3QoUGVyc2lzdGFuY2VDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfc2F2ZWRGaWx0ZXJDb250cm9sbGVyID0gaW5qZWN0KFNhdmVkRmlsdGVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX3F1ZXJ5UGFyYW1Db250cm9sbGVyID0gaW5qZWN0KFF1ZXJ5UGFyYW1Db250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfa2V5d29yZENvbnRyb2xsZXIgPSBpbmplY3QoS2V5d29yZENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9zb3J0Q29udHJvbGxlciA9IGluamVjdChTb3J0Q29udHJvbGxlcik7XG5cbiAgcHVibGljIGdldCBpdGVtcygpOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5faXRlbXMudmFsdWVzKCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBpdGVtTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29uZmlnKCk6IEZzRmlsdGVyQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICB9XG5cbiAgcHVibGljIGdldCBpbml0JCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5pdCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFkZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYW5nZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMzApLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2UoKSB7XG4gICAgdGhpcy5fY2hhbmdlJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkeSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdChjb25maWc6IEZzRmlsdGVyQ29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgIG9mKG51bGwpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2FkZEl0ZW1zKHRoaXMuX2NvbmZpZy5pdGVtcyB8fCBbXSkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fa2V5d29yZENvbnRyb2xsZXIuaW5pdCh0aGlzKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9zb3J0Q29udHJvbGxlci5pbml0KHRoaXMpKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IGZvcmtKb2luKHtcbiAgICAgICAgICBzYXZlZEZpbHRlcnM6IHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5pbml0KHRoaXMpLFxuICAgICAgICAgIHBlcnNpc3RhbmNlOiB0aGlzLl9wZXJzaXN0YW5jZUNvbnRyb2xsZXIuaW5pdCh0aGlzKSxcbiAgICAgICAgICBxdWVyeVBhcmFtczogdGhpcy5fcXVlcnlQYXJhbUNvbnRyb2xsZXIuaW5pdCh0aGlzKSxcbiAgICAgICAgfSkpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5faW5pdEl0ZW1zKCkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5faW5pdENoYW5nZXMoKSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5faW5pdCQubmV4dCgpO1xuICAgICAgICAgIGlmICh0aGlzLl9jb25maWcuaW5pdCkge1xuICAgICAgICAgICAgdGhpcy5fY29uZmlnLmluaXQodGhpcy5xdWVyeSwgdGhpcy5fc29ydENvbnRyb2xsZXIuZ2V0U29ydCgpLCB0aGlzLmZpbHRlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5fcmVhZHkkLm5leHQodHJ1ZSkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW0obmFtZTogc3RyaW5nKTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+IHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcnNDbGVhcigpIHtcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uY2xlYXIoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2tleXdvcmRDb250cm9sbGVyLmNsZWFyKCk7XG4gICAgdGhpcy5fc29ydENvbnRyb2xsZXIuY2xlYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcXVlcnlQYXJhbSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNcbiAgICAgIC5yZWR1Y2UoKGFjY3VtLCBpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uYWNjdW0sXG4gICAgICAgICAgLi4uaXRlbS5xdWVyeVBhcmFtLFxuICAgICAgICB9O1xuICAgICAgfSwge30pO1xuICB9XG5cbiAgcHVibGljIGdldCBxdWVyeSgpOiBLZXlWYWx1ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuaXRlbXNcbiAgICAgICAgLnJlZHVjZSgoYWNjdW0sIGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjdW0sXG4gICAgICAgICAgICAuLi5pdGVtLnF1ZXJ5LFxuICAgICAgICAgIH07XG4gICAgICAgIH0sIHt9KSxcbiAgICAgIC4uLnRoaXMuX3NvcnRDb250cm9sbGVyLnF1ZXJ5KCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdmFsdWVzKHZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uc2V0VmFsdWUodmFsdWVzW2l0ZW0ubmFtZV0sIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlcygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNcbiAgICAgIC5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW0udmFsdWU7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgYWNjW2l0ZW0ubmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG4gIH1cbiAgXG4gIHByaXZhdGUgX2dldEluaXRWYWx1ZXMoKTogS2V5VmFsdWUge1xuICAgIGxldCByZXN1bHQ6IEtleVZhbHVlID0ge307XG5cbiAgICBpZiAodGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmVuYWJsZWQgJiYgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlcikge1xuICAgICAgY29uc3QgcXVlcnkgPSBPYmplY3Qua2V5cyhyZXN1bHQpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4gIXRoaXMuaXRlbU5hbWVzLmluY2x1ZGVzKGtleSkpXG4gICAgICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgIFtrZXldOiByZXN1bHRba2V5XSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgLi4ucXVlcnksIFxuICAgICAgICAuLi50aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuYWN0aXZlRmlsdGVyRGF0YSxcbiAgICAgIH07XG5cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuX3BlcnNpc3RhbmNlQ29udHJvbGxlci5lbmFibGVkKSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAuLi5yZXN1bHQsIFxuICAgICAgICAgIC4uLnRoaXMuX3BlcnNpc3RhbmNlQ29udHJvbGxlci5nZXRRdWVyeSgpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAodGhpcy5fY29uZmlnLnF1ZXJ5UGFyYW0pIHtcbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgIC4uLnJlc3VsdCwgXG4gICAgICAgICAgLi4udGhpcy5fcXVlcnlQYXJhbUNvbnRyb2xsZXIucGFyYW1zLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIF9pbml0SXRlbXMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLl9nZXRJbml0VmFsdWVzKCk7XG5cbiAgICByZXR1cm4gZm9ya0pvaW4oXG4gICAgICB0aGlzLml0ZW1zXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5pbml0KHZhbHVlc1tpdGVtLm5hbWVdKTtcbiAgICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEl0ZW1zKGl0ZW1zOiBJRmlsdGVyQ29uZmlnSXRlbVtdKSB7XG4gICAgdGhpcy5fYWRkJC5uZXh0KCk7XG5cbiAgICB0aGlzLl9pdGVtcyA9IG5ldyBNYXAoXG4gICAgICBpdGVtcyAgICAgIFxuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2l0ZW1zLmhhcyhpdGVtLm5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignRmlsdGVyIGluaXQgZXJyb3IuIEl0ZW1zIG5hbWUgbXVzdCBiZSB1bmlxdWUuJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJJdGVtID0gY3JlYXRlRmlsdGVySXRlbShpdGVtLCB7IH0sIHRoaXMuZmlsdGVyKTtcblxuICAgICAgICAgIGlmIChmaWx0ZXJJdGVtLnR5cGUgPT09IEl0ZW1UeXBlLktleXdvcmQpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleXdvcmRDb250cm9sbGVyLmtleXdvcmRJdGVtID0gZmlsdGVySXRlbTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9pdGVtcy5zZXQoaXRlbS5uYW1lLCBmaWx0ZXJJdGVtKTtcblxuICAgICAgICAgIHJldHVybiBbaXRlbS5uYW1lLCBmaWx0ZXJJdGVtXTtcbiAgICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRDaGFuZ2VzKCkge1xuICAgIG1lcmdlKFxuICAgICAgLi4udGhpcy5pdGVtc1xuICAgICAgICAubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlRXZlbnQkXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5lbWl0Q2hhbmdlKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiBpdGVtKSxcbiAgICAgICAgICApKSxcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChpdGVtKSA9PiB0aGlzLl9jaGFuZ2UkLm5leHQoW2l0ZW1dKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChpdGVtczogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLmNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fY29uZmlnLmNoYW5nZSh0aGlzLnF1ZXJ5LCB0aGlzLl9zb3J0Q29udHJvbGxlci5nZXRTb3J0KCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGl0ZW1zPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGFuZ2VDYWxsYmFjaykge1xuICAgICAgICAgICAgICBpdGVtLmNoYW5nZUNhbGxiYWNrKGl0ZW0sIHRoaXMuZmlsdGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxufVxuIl19
|
|
@@ -114,7 +114,8 @@ export class SavedFilterController {
|
|
|
114
114
|
};
|
|
115
115
|
}, {}),
|
|
116
116
|
};
|
|
117
|
-
return this._filterController.config.savedFilters
|
|
117
|
+
return this._filterController.config.savedFilters
|
|
118
|
+
.save(savedFilter)
|
|
118
119
|
.pipe(tap((_savedFilter) => {
|
|
119
120
|
this.savedFilters = this.activeFilter?.id ? this.savedFilters
|
|
120
121
|
.map((f) => f.id === savedFilter.id ? _savedFilter : f) : [
|
|
@@ -128,7 +129,8 @@ export class SavedFilterController {
|
|
|
128
129
|
return !!this._filterController.config.savedFilters.order;
|
|
129
130
|
}
|
|
130
131
|
order(savedFilters) {
|
|
131
|
-
return this._filterController.config.savedFilters
|
|
132
|
+
return this._filterController.config.savedFilters
|
|
133
|
+
.order(savedFilters)
|
|
132
134
|
.pipe(tap(() => {
|
|
133
135
|
this.savedFilters = [
|
|
134
136
|
...savedFilters,
|
|
@@ -136,7 +138,8 @@ export class SavedFilterController {
|
|
|
136
138
|
}));
|
|
137
139
|
}
|
|
138
140
|
delete(savedFilter) {
|
|
139
|
-
return this._filterController.config.savedFilters
|
|
141
|
+
return this._filterController.config.savedFilters
|
|
142
|
+
.delete(savedFilter)
|
|
140
143
|
.pipe(tap(() => {
|
|
141
144
|
this.savedFilters = this.savedFilters
|
|
142
145
|
.filter((f) => f.id !== savedFilter.id);
|
|
@@ -152,9 +155,7 @@ export class SavedFilterController {
|
|
|
152
155
|
if (!existingFilter) {
|
|
153
156
|
throw new Error(`Saved filter cannot be activated, because it does not exists. Filter ID = ${savedFilter.id}`);
|
|
154
157
|
}
|
|
155
|
-
this._filterController.
|
|
156
|
-
this._filterController.values = existingFilter.filters;
|
|
157
|
-
});
|
|
158
|
+
this._filterController.values = existingFilter.filters;
|
|
158
159
|
this._activeFilter$.next(existingFilter);
|
|
159
160
|
}
|
|
160
161
|
else {
|
|
@@ -170,4 +171,4 @@ export class SavedFilterController {
|
|
|
170
171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SavedFilterController, decorators: [{
|
|
171
172
|
type: Injectable
|
|
172
173
|
}] });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvc2F2ZWQtZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDOztBQVd4QixNQUFNLE9BQU8scUJBQXFCO0lBRXhCLGlCQUFpQixDQUFtQjtJQUNwQyxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQXVCLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7SUFDL0QsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hELFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ2hDLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbkMsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxjQUFjLENBQUM7SUFDdkYsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxZQUFZ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d0dBeE5VLHFCQUFxQjs0R0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dGVybmFsLXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgSUZpbHRlclNhdmVkRmlsdGVyLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJDb250cm9sbGVyIH0gZnJvbSAnLi9maWx0ZXItY29udHJvbGxlci5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2F2ZWRGaWx0ZXJDb250cm9sbGVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9maWx0ZXJDb250cm9sbGVyOiBGaWx0ZXJDb250cm9sbGVyO1xuICBwcml2YXRlIF9zYXZlZEZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRmlsdGVyU2F2ZWRGaWx0ZXJbXT4oW10pO1xuICBwcml2YXRlIF9hY3RpdmVGaWx0ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRmlsdGVyU2F2ZWRGaWx0ZXI+KG51bGwpO1xuICBwcml2YXRlIF9lbmFibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX3Byb21wdCA9IGluamVjdChGc1Byb21wdCk7XG5cbiAgcHVibGljIGdldCBzaW5ndWxhckxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuY29uZmlnLnNhdmVkRmlsdGVycz8ubGFiZWw/LnNpbmd1bGFyIHx8ICdTYXZlZCBmaWx0ZXInO1xuICB9XG5cbiAgcHVibGljIGdldCBzaW5ndWxhckxhYmVsTG93ZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zaW5ndWxhckxhYmVsLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsSWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNvbmZpZy5zYXZlZEZpbHRlcnM/LmxhYmVsPy5pY29uIHx8ICdzYXZlJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGx1cmFsTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jb25maWcuc2F2ZWRGaWx0ZXJzPy5sYWJlbD8ucGx1cmFsIHx8ICdTYXZlZCBmaWx0ZXJzJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGx1cmFsTGFiZWxMb3dlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsdXJhbExhYmVsLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuYWJsZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnMoKTogSUZpbHRlclNhdmVkRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnMkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNhdmVkRmlsdGVycyhmaWx0ZXJzOiBJRmlsdGVyU2F2ZWRGaWx0ZXJbXSkge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVycyQubmV4dChmaWx0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzJCgpOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVycyRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlRmlsdGVyKCk6IElGaWx0ZXJTYXZlZEZpbHRlciB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUZpbHRlciQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlRmlsdGVyJCgpOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVGaWx0ZXIkXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZUZpbHRlckRhdGEoKTogS2V5VmFsdWUge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVGaWx0ZXIkLmdldFZhbHVlKCk/LmZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXQoXG4gICAgZmlsdGVyQ29udHJvbGxlcjogRmlsdGVyQ29udHJvbGxlcixcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICB0aGlzLl9maWx0ZXJDb250cm9sbGVyID0gZmlsdGVyQ29udHJvbGxlcjtcbiAgICBcbiAgICBpZiAoIWZpbHRlckNvbnRyb2xsZXIuY29uZmlnLnNhdmVkRmlsdGVycykge1xuICAgICAgdGhpcy5fc2V0RW5hYmxlZFN0YXR1cyhmYWxzZSk7XG5cbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRFbmFibGVkU3RhdHVzKHRydWUpO1xuXG4gICAgcmV0dXJuIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgcHVibGljIGluaXRTYXZlZEZpbHRlcnMoc2F2ZWRGaWx0ZXJzOiBJRmlsdGVyU2F2ZWRGaWx0ZXJbXSk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzID0gc2F2ZWRGaWx0ZXJzO1xuICAgIGNvbnN0IGFjaXR2ZUZpbHRlciA9IHRoaXMuc2F2ZWRGaWx0ZXJzXG4gICAgICAuZmluZCgoZikgPT4gZi5hY3RpdmUpO1xuXG4gICAgaWYgKGFjaXR2ZUZpbHRlcikge1xuICAgICAgdGhpcy5fYWN0aXZlRmlsdGVyJC5uZXh0KGFjaXR2ZUZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxvYWQoKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXJbXT4ge1xuICAgIGlmICghdGhpcy5lbmFibGVkKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNvbmZpZy5zYXZlZEZpbHRlcnMubG9hZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChzYXZlZEZpbHRlcnMpID0+IHtcbiAgICAgICAgICB0aGlzLmluaXRTYXZlZEZpbHRlcnMoc2F2ZWRGaWx0ZXJzKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZSgpOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9wcm9tcHQuaW5wdXQoe1xuICAgICAgdGl0bGU6IGBDcmVhdGUgJHt0aGlzLnNpbmd1bGFyTGFiZWx9YCxcbiAgICAgIGxhYmVsOiAnTmFtZScsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGNvbW1pdExhYmVsOiAnQ3JlYXRlJyxcbiAgICAgIGRpYWxvZ0NvbmZpZzoge1xuICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgobmFtZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGE6IElGaWx0ZXJTYXZlZEZpbHRlciA9IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnNhdmUoZGF0YSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHNhdmVkRmlsdGVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRBY3RpdmVGaWx0ZXIoc2F2ZWRGaWx0ZXIpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZShzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXI+IHtcbiAgICBzYXZlZEZpbHRlciA9IHtcbiAgICAgIC4uLih0aGlzLmFjdGl2ZUZpbHRlciB8fCB7fSksXG4gICAgICAuLi5zYXZlZEZpbHRlcixcbiAgICAgIGZpbHRlcnM6IHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuaXRlbXNcbiAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5oYXNWYWx1ZSlcbiAgICAgICAgLnJlZHVjZSgoYWNjdW0sIGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjdW0sXG4gICAgICAgICAgICBbaXRlbS5uYW1lXTogaXRlbS52YWx1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSksXG4gICAgfTsgIFxuXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuY29uZmlnLnNhdmVkRmlsdGVycy5zYXZlKHNhdmVkRmlsdGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoX3NhdmVkRmlsdGVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMgPSB0aGlzLmFjdGl2ZUZpbHRlcj8uaWQgPyB0aGlzLnNhdmVkRmlsdGVyc1xuICAgICAgICAgICAgLm1hcCgoZikgPT4gZi5pZCA9PT0gc2F2ZWRGaWx0ZXIuaWQgPyBfc2F2ZWRGaWx0ZXIgOiBmKSA6IFtcbiAgICAgICAgICAgIC4uLnRoaXMuc2F2ZWRGaWx0ZXJzLFxuICAgICAgICAgICAgX3NhdmVkRmlsdGVyLFxuICAgICAgICAgIF07XG4gICAgICAgICAgXG4gICAgICAgICAgdGhpcy5zZXRBY3RpdmVGaWx0ZXIoX3NhdmVkRmlsdGVyKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBvcmRlcmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jb25maWcuc2F2ZWRGaWx0ZXJzLm9yZGVyO1xuICB9XG5cbiAgcHVibGljIG9yZGVyKHNhdmVkRmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW10pOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuY29uZmlnLnNhdmVkRmlsdGVycy5vcmRlcihzYXZlZEZpbHRlcnMpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNhdmVkRmlsdGVycyA9IFtcbiAgICAgICAgICAgIC4uLnNhdmVkRmlsdGVycyxcbiAgICAgICAgICBdO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNvbmZpZy5zYXZlZEZpbHRlcnMuZGVsZXRlKHNhdmVkRmlsdGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMgPSB0aGlzLnNhdmVkRmlsdGVyc1xuICAgICAgICAgICAgLmZpbHRlcigoZikgPT4gZi5pZCAhPT0gc2F2ZWRGaWx0ZXIuaWQpO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUZpbHRlcj8uaWQgPT09IHNhdmVkRmlsdGVyLmlkKSB7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUZpbHRlcihudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVGaWx0ZXIoc2F2ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcik6IHZvaWQge1xuICAgIGlmIChzYXZlZEZpbHRlcikge1xuICAgICAgY29uc3QgZXhpc3RpbmdGaWx0ZXIgPSB0aGlzLnNhdmVkRmlsdGVyc1xuICAgICAgICAuZmluZCgoZikgPT4gZi5pZCA9PT0gc2F2ZWRGaWx0ZXIuaWQpO1xuXG4gICAgICBpZiAoIWV4aXN0aW5nRmlsdGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2F2ZWQgZmlsdGVyIGNhbm5vdCBiZSBhY3RpdmF0ZWQsIGJlY2F1c2UgaXQgZG9lcyBub3QgZXhpc3RzLiBGaWx0ZXIgSUQgPSAke3NhdmVkRmlsdGVyLmlkfWApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNoYW5nZVRyYW5zYWN0aW9uKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci52YWx1ZXMgPSBleGlzdGluZ0ZpbHRlci5maWx0ZXJzO1xuICAgICAgfSk7XG4gICAgICBcbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChleGlzdGluZ0ZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRFbmFibGVkU3RhdHVzKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fZW5hYmxlZCQubmV4dCh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvc2F2ZWQtZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDOztBQVd4QixNQUFNLE9BQU8scUJBQXFCO0lBRXhCLGlCQUFpQixDQUFtQjtJQUNwQyxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQXVCLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7SUFDL0QsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hELFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ2hDLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbkMsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxjQUFjLENBQUM7SUFDdkYsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxZQUFZ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ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZzUHJvbXB0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvcHJvbXB0JztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIHN3aXRjaE1hcCxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEtleVZhbHVlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRlcm5hbC1wYXJhbXMuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIElGaWx0ZXJTYXZlZEZpbHRlcixcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYXZlZC1maWx0ZXJzLmludGVyZmFjZSc7XG5cbmltcG9ydCB0eXBlIHsgRmlsdGVyQ29udHJvbGxlciB9IGZyb20gJy4vZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNhdmVkRmlsdGVyQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfZmlsdGVyQ29udHJvbGxlcjogRmlsdGVyQ29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfc2F2ZWRGaWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUZpbHRlclNhdmVkRmlsdGVyW10+KFtdKTtcbiAgcHJpdmF0ZSBfYWN0aXZlRmlsdGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUZpbHRlclNhdmVkRmlsdGVyPihudWxsKTtcbiAgcHJpdmF0ZSBfZW5hYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9wcm9tcHQgPSBpbmplY3QoRnNQcm9tcHQpO1xuXG4gIHB1YmxpYyBnZXQgc2luZ3VsYXJMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNvbmZpZy5zYXZlZEZpbHRlcnM/LmxhYmVsPy5zaW5ndWxhciB8fCAnU2F2ZWQgZmlsdGVyJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2luZ3VsYXJMYWJlbExvd2VyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ3VsYXJMYWJlbC50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBsYWJlbEljb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jb25maWcuc2F2ZWRGaWx0ZXJzPy5sYWJlbD8uaWNvbiB8fCAnc2F2ZSc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBsdXJhbExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuY29uZmlnLnNhdmVkRmlsdGVycz8ubGFiZWw/LnBsdXJhbCB8fCAnU2F2ZWQgZmlsdGVycyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBsdXJhbExhYmVsTG93ZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wbHVyYWxMYWJlbC50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmFibGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzKCk6IElGaWx0ZXJTYXZlZEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldCBzYXZlZEZpbHRlcnMoZmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW10pIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlcnMkLm5leHQoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVycyQoKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnMkXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZUZpbHRlcigpOiBJRmlsdGVyU2F2ZWRGaWx0ZXIge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVGaWx0ZXIkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZUZpbHRlciQoKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlRmlsdGVyJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVGaWx0ZXJEYXRhKCk6IEtleVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlRmlsdGVyJC5nZXRWYWx1ZSgpPy5maWx0ZXJzO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KFxuICAgIGZpbHRlckNvbnRyb2xsZXI6IEZpbHRlckNvbnRyb2xsZXIsXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlciA9IGZpbHRlckNvbnRyb2xsZXI7XG4gICAgXG4gICAgaWYgKCFmaWx0ZXJDb250cm9sbGVyLmNvbmZpZy5zYXZlZEZpbHRlcnMpIHtcbiAgICAgIHRoaXMuX3NldEVuYWJsZWRTdGF0dXMoZmFsc2UpO1xuXG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0RW5hYmxlZFN0YXR1cyh0cnVlKTtcblxuICAgIHJldHVybiB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0U2F2ZWRGaWx0ZXJzKHNhdmVkRmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW10pOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVkRmlsdGVycyA9IHNhdmVkRmlsdGVycztcbiAgICBjb25zdCBhY2l0dmVGaWx0ZXIgPSB0aGlzLnNhdmVkRmlsdGVyc1xuICAgICAgLmZpbmQoKGYpID0+IGYuYWN0aXZlKTtcblxuICAgIGlmIChhY2l0dmVGaWx0ZXIpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChhY2l0dmVGaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkKCk6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyW10+IHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jb25maWcuc2F2ZWRGaWx0ZXJzLmxvYWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoc2F2ZWRGaWx0ZXJzKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbml0U2F2ZWRGaWx0ZXJzKHNhdmVkRmlsdGVycyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGUoKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcHJvbXB0LmlucHV0KHtcbiAgICAgIHRpdGxlOiBgQ3JlYXRlICR7dGhpcy5zaW5ndWxhckxhYmVsfWAsXG4gICAgICBsYWJlbDogJ05hbWUnLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBjb21taXRMYWJlbDogJ0NyZWF0ZScsXG4gICAgICBkaWFsb2dDb25maWc6IHtcbiAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKG5hbWUpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBJRmlsdGVyU2F2ZWRGaWx0ZXIgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5zYXZlKGRhdGEpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChzYXZlZEZpbHRlcikgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0QWN0aXZlRmlsdGVyKHNhdmVkRmlsdGVyKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHNhdmUoc2F2ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcik6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyPiB7XG4gICAgc2F2ZWRGaWx0ZXIgPSB7XG4gICAgICAuLi4odGhpcy5hY3RpdmVGaWx0ZXIgfHwge30pLFxuICAgICAgLi4uc2F2ZWRGaWx0ZXIsXG4gICAgICBmaWx0ZXJzOiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zXG4gICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaGFzVmFsdWUpXG4gICAgICAgIC5yZWR1Y2UoKGFjY3VtLCBpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmFjY3VtLFxuICAgICAgICAgICAgW2l0ZW0ubmFtZV06IGl0ZW0udmFsdWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSwge30pLFxuICAgIH07ICBcblxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNvbmZpZy5zYXZlZEZpbHRlcnNcbiAgICAgIC5zYXZlKHNhdmVkRmlsdGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoX3NhdmVkRmlsdGVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMgPSB0aGlzLmFjdGl2ZUZpbHRlcj8uaWQgPyB0aGlzLnNhdmVkRmlsdGVyc1xuICAgICAgICAgICAgLm1hcCgoZikgPT4gZi5pZCA9PT0gc2F2ZWRGaWx0ZXIuaWQgPyBfc2F2ZWRGaWx0ZXIgOiBmKSA6IFtcbiAgICAgICAgICAgIC4uLnRoaXMuc2F2ZWRGaWx0ZXJzLFxuICAgICAgICAgICAgX3NhdmVkRmlsdGVyLFxuICAgICAgICAgIF07XG4gICAgICAgICAgXG4gICAgICAgICAgdGhpcy5zZXRBY3RpdmVGaWx0ZXIoX3NhdmVkRmlsdGVyKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBvcmRlcmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jb25maWcuc2F2ZWRGaWx0ZXJzLm9yZGVyO1xuICB9XG5cbiAgcHVibGljIG9yZGVyKHNhdmVkRmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW10pOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuY29uZmlnLnNhdmVkRmlsdGVyc1xuICAgICAgLm9yZGVyKHNhdmVkRmlsdGVycylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzID0gW1xuICAgICAgICAgICAgLi4uc2F2ZWRGaWx0ZXJzLFxuICAgICAgICAgIF07XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoc2F2ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcik6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuY29uZmlnLnNhdmVkRmlsdGVyc1xuICAgICAgLmRlbGV0ZShzYXZlZEZpbHRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzID0gdGhpcy5zYXZlZEZpbHRlcnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGYpID0+IGYuaWQgIT09IHNhdmVkRmlsdGVyLmlkKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXI/LmlkID09PSBzYXZlZEZpbHRlci5pZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVGaWx0ZXIobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlRmlsdGVyKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpOiB2b2lkIHtcbiAgICBpZiAoc2F2ZWRGaWx0ZXIpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nRmlsdGVyID0gdGhpcy5zYXZlZEZpbHRlcnNcbiAgICAgICAgLmZpbmQoKGYpID0+IGYuaWQgPT09IHNhdmVkRmlsdGVyLmlkKTtcblxuICAgICAgaWYgKCFleGlzdGluZ0ZpbHRlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNhdmVkIGZpbHRlciBjYW5ub3QgYmUgYWN0aXZhdGVkLCBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0cy4gRmlsdGVyIElEID0gJHtzYXZlZEZpbHRlci5pZH1gKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci52YWx1ZXMgPSBleGlzdGluZ0ZpbHRlci5maWx0ZXJzOyAgICBcbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChleGlzdGluZ0ZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRFbmFibGVkU3RhdHVzKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fZW5hYmxlZCQubmV4dCh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
|