@firestitch/filter 13.0.2 → 13.0.4
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/helpers/build-query-params.d.ts +1 -1
- package/app/helpers/create-filter-item.d.ts +1 -1
- package/app/services/external-params/query-params-controller.service.d.ts +3 -5
- package/esm2020/app/helpers/build-query-params.mjs +4 -3
- package/esm2020/app/services/external-params/query-params-controller.service.mjs +18 -27
- package/fesm2015/firestitch-filter.mjs +69 -75
- package/fesm2015/firestitch-filter.mjs.map +1 -1
- package/fesm2020/firestitch-filter.mjs +69 -75
- package/fesm2020/firestitch-filter.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { BaseItem } from '../models/items/base-item';
|
|
2
1
|
import { IFilterConfigItem } from '../interfaces/config.interface';
|
|
2
|
+
import { BaseItem } from '../models/items/base-item';
|
|
3
3
|
export declare function buildQueryParams(flattenedParams: Record<string, unknown>, items: BaseItem<IFilterConfigItem>[]): Record<string, unknown>;
|
|
@@ -11,4 +11,4 @@ import { DateTimeRangeItem } from '../models/items/date-time-range-item';
|
|
|
11
11
|
import { RangeItem } from '../models/items/range-item';
|
|
12
12
|
import { TextItem } from '../models/items/text-item';
|
|
13
13
|
import { WeekItem } from '../models/items/week-item';
|
|
14
|
-
export declare function createFilterItem(item: IFilterConfigItem, config: any, filter: FilterComponent): RangeItem | DateRangeItem | DateTimeRangeItem | WeekItem | AutocompleteChipsItem | AutocompleteItem | CheckboxItem | ChipsItem | DateItem | DateTimeItem | import("../models/items/select/
|
|
14
|
+
export declare function createFilterItem(item: IFilterConfigItem, config: any, filter: FilterComponent): RangeItem | DateRangeItem | DateTimeRangeItem | WeekItem | AutocompleteChipsItem | AutocompleteItem | CheckboxItem | ChipsItem | DateItem | DateTimeItem | import("../models/items/select/multiple-select-item").MultipleSelectItem | import("../models/items/select/simple-select-item").SimpleSelectItem | TextItem;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import { ActivatedRoute
|
|
1
|
+
import { ActivatedRoute } from '@angular/router';
|
|
2
2
|
import { FsFilterItemsStore } from '../items-store.service';
|
|
3
|
-
import { Location } from '@angular/common';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class QueryParamsController {
|
|
6
|
-
private _router;
|
|
7
5
|
private _route;
|
|
8
|
-
private _location;
|
|
9
6
|
private _itemsStore;
|
|
10
7
|
private _enabled;
|
|
11
8
|
private _paramsCase;
|
|
12
9
|
private _fetchedParams;
|
|
13
|
-
constructor(
|
|
10
|
+
constructor(_route: ActivatedRoute, _itemsStore: FsFilterItemsStore);
|
|
14
11
|
get enabled(): boolean;
|
|
15
12
|
get fetchedParams(): Record<string, any>;
|
|
16
13
|
init(enabled: boolean, paramsCase: 'snake' | 'camel'): void;
|
|
@@ -19,6 +16,7 @@ export declare class QueryParamsController {
|
|
|
19
16
|
* Parse query and update filter values
|
|
20
17
|
*/
|
|
21
18
|
fetchFromQueryParams(): void;
|
|
19
|
+
private _replaceState;
|
|
22
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<QueryParamsController, never>;
|
|
23
21
|
static ɵprov: i0.ɵɵInjectableDeclaration<QueryParamsController>;
|
|
24
22
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { list as arrayList } from '@firestitch/common';
|
|
2
2
|
import { isObject } from 'lodash-es';
|
|
3
|
-
import { filterToQueryParam } from './query-param-transformers';
|
|
4
3
|
import { MultipleSelectItem } from '../models/items/select/multiple-select-item';
|
|
5
4
|
import { arraysAreEquals } from './compare';
|
|
5
|
+
import { filterToQueryParam } from './query-param-transformers';
|
|
6
6
|
export function buildQueryParams(flattenedParams, items) {
|
|
7
|
-
items
|
|
7
|
+
items
|
|
8
|
+
.forEach((filterItem) => {
|
|
8
9
|
if (filterItem instanceof MultipleSelectItem && filterItem.isolate) {
|
|
9
10
|
if (filterItem.multiple && filterItem.value) {
|
|
10
11
|
const isolated = arrayList(filterItem.values, 'value').sort();
|
|
@@ -29,4 +30,4 @@ export function buildQueryParams(flattenedParams, items) {
|
|
|
29
30
|
});
|
|
30
31
|
return flattenedParams;
|
|
31
32
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcXVlcnktcGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9oZWxwZXJzL2J1aWxkLXF1ZXJ5LXBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxJQUFJLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdoRSxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsZUFBd0MsRUFBRSxLQUFvQztJQUM3RyxLQUFLO1NBQ0gsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7UUFDdkIsSUFBSSxVQUFVLFlBQVksa0JBQWtCLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNsRSxJQUFJLFVBQVUsQ0FBQyxRQUFRLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDM0MsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzlELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBRXRDLElBQUksZUFBZSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtvQkFDcEMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQ3pDO2FBQ0Y7U0FDRjtRQUVELElBQUksVUFBVSxDQUFDLGtCQUFrQixFQUFFO1lBQ2pDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDOUIsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3RHO1NBQ0Y7YUFBTSxJQUFJLFVBQVUsQ0FBQyx1QkFBdUIsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFO1lBQ3ZFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQzlELGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDL0QsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2Q7U0FDRjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxpc3QgYXMgYXJyYXlMaXN0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcblxuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBJRmlsdGVyQ29uZmlnSXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNlSXRlbSB9IGZyb20gJy4uL21vZGVscy9pdGVtcy9iYXNlLWl0ZW0nO1xuaW1wb3J0IHsgTXVsdGlwbGVTZWxlY3RJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2l0ZW1zL3NlbGVjdC9tdWx0aXBsZS1zZWxlY3QtaXRlbSc7XG5pbXBvcnQgeyBhcnJheXNBcmVFcXVhbHMgfSBmcm9tICcuL2NvbXBhcmUnO1xuaW1wb3J0IHsgZmlsdGVyVG9RdWVyeVBhcmFtIH0gZnJvbSAnLi9xdWVyeS1wYXJhbS10cmFuc2Zvcm1lcnMnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFF1ZXJ5UGFyYW1zKGZsYXR0ZW5lZFBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGl0ZW1zOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXSkge1xuICBpdGVtc1xuICAgLmZvckVhY2goKGZpbHRlckl0ZW0pID0+IHtcbiAgICBpZiAoZmlsdGVySXRlbSBpbnN0YW5jZW9mIE11bHRpcGxlU2VsZWN0SXRlbSAmJiBmaWx0ZXJJdGVtLmlzb2xhdGUpIHtcbiAgICAgIGlmIChmaWx0ZXJJdGVtLm11bHRpcGxlICYmIGZpbHRlckl0ZW0udmFsdWUpIHtcbiAgICAgICAgY29uc3QgaXNvbGF0ZWQgPSBhcnJheUxpc3QoZmlsdGVySXRlbS52YWx1ZXMsICd2YWx1ZScpLnNvcnQoKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmaWx0ZXJJdGVtLnZhbHVlLnNvcnQoKTtcblxuICAgICAgICBpZiAoYXJyYXlzQXJlRXF1YWxzKHZhbHVlLCBpc29sYXRlZCkpIHtcbiAgICAgICAgICBmbGF0dGVuZWRQYXJhbXNbZmlsdGVySXRlbS5uYW1lXSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmlsdGVySXRlbS5pc1R5cGVBdXRvY29tcGxldGUpIHtcbiAgICAgIGlmIChpc09iamVjdChmaWx0ZXJJdGVtLm1vZGVsKSkge1xuICAgICAgICBmbGF0dGVuZWRQYXJhbXNbZmlsdGVySXRlbS5uYW1lXSA9IGZpbHRlclRvUXVlcnlQYXJhbShmaWx0ZXJJdGVtLm1vZGVsLnZhbHVlLCBmaWx0ZXJJdGVtLm1vZGVsLm5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZmlsdGVySXRlbS5pc1R5cGVBdXRvY29tcGxldGVDaGlwcyB8fCBmaWx0ZXJJdGVtLmlzVHlwZUNoaXBzKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJJdGVtLm1vZGVsKSAmJiBmaWx0ZXJJdGVtLm1vZGVsLmxlbmd0aCkge1xuICAgICAgICBmbGF0dGVuZWRQYXJhbXNbZmlsdGVySXRlbS5uYW1lXSA9IGZpbHRlckl0ZW0ubW9kZWwubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZpbHRlclRvUXVlcnlQYXJhbShpdGVtLnZhbHVlLCBpdGVtLm5hbWUpO1xuICAgICAgICB9KS5qb2luKCcsJyk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZmxhdHRlbmVkUGFyYW1zO1xufVxuIl19
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ActivatedRoute
|
|
3
|
-
import { FsFilterItemsStore } from '../items-store.service';
|
|
2
|
+
import { ActivatedRoute } from '@angular/router';
|
|
4
3
|
import { restoreItems } from '../../helpers/restore-items';
|
|
5
|
-
import {
|
|
4
|
+
import { FsFilterItemsStore } from '../items-store.service';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
import * as i1 from "@angular/router";
|
|
8
|
-
import * as i2 from "
|
|
9
|
-
import * as i3 from "../items-store.service";
|
|
7
|
+
import * as i2 from "../items-store.service";
|
|
10
8
|
export class QueryParamsController {
|
|
11
|
-
constructor(
|
|
12
|
-
this._router = _router;
|
|
9
|
+
constructor(_route, _itemsStore) {
|
|
13
10
|
this._route = _route;
|
|
14
|
-
this._location = _location;
|
|
15
11
|
this._itemsStore = _itemsStore;
|
|
16
12
|
this._enabled = false;
|
|
17
13
|
}
|
|
@@ -29,23 +25,9 @@ export class QueryParamsController {
|
|
|
29
25
|
}
|
|
30
26
|
}
|
|
31
27
|
writeStateToQueryParams(params) {
|
|
32
|
-
if (
|
|
33
|
-
|
|
28
|
+
if (this._enabled) {
|
|
29
|
+
this._replaceState(params);
|
|
34
30
|
}
|
|
35
|
-
this._location.replaceState(this._router.createUrlTree([], {
|
|
36
|
-
relativeTo: this._route,
|
|
37
|
-
queryParams: params,
|
|
38
|
-
queryParamsHandling: 'merge',
|
|
39
|
-
preserveFragment: true,
|
|
40
|
-
}).toString());
|
|
41
|
-
// Trying replacing the URL without triggering an Angular navigation change
|
|
42
|
-
// // Update query
|
|
43
|
-
// this._router.navigate([], {
|
|
44
|
-
// replaceUrl: true,
|
|
45
|
-
// relativeTo: this._route,
|
|
46
|
-
// queryParams: params,
|
|
47
|
-
// queryParamsHandling: 'merge',
|
|
48
|
-
// }).then(() => {});
|
|
49
31
|
}
|
|
50
32
|
/**
|
|
51
33
|
* Parse query and update filter values
|
|
@@ -58,10 +40,19 @@ export class QueryParamsController {
|
|
|
58
40
|
].filter((item) => !!item);
|
|
59
41
|
this._fetchedParams = restoreItems(this._route.snapshot.queryParams, items, this._paramsCase);
|
|
60
42
|
}
|
|
43
|
+
_replaceState(data) {
|
|
44
|
+
const url = new URL(window.location.href);
|
|
45
|
+
Object.keys(data)
|
|
46
|
+
.filter((name) => data[name] !== undefined && data[name] !== null)
|
|
47
|
+
.forEach((name) => {
|
|
48
|
+
url.searchParams.set(name, data[name]);
|
|
49
|
+
});
|
|
50
|
+
history.replaceState({}, null, url.pathname + url.search);
|
|
51
|
+
}
|
|
61
52
|
}
|
|
62
|
-
QueryParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueryParamsController, deps: [{ token: i1.
|
|
53
|
+
QueryParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueryParamsController, deps: [{ token: i1.ActivatedRoute }, { token: i2.FsFilterItemsStore }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
63
54
|
QueryParamsController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueryParamsController });
|
|
64
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueryParamsController, decorators: [{
|
|
65
56
|
type: Injectable
|
|
66
|
-
}], ctorParameters: function () { return [{ type: i1.
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.FsFilterItemsStore }]; } });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBSTVELE1BQU0sT0FBTyxxQkFBcUI7SUFNaEMsWUFDVSxNQUFzQixFQUN0QixXQUErQjtRQUQvQixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFOakMsYUFBUSxHQUFHLEtBQUssQ0FBQztJQU90QixDQUFDO0lBRUosSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRU0sSUFBSSxDQUFDLE9BQWdCLEVBQUUsVUFBNkI7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFFOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVNLHVCQUF1QixDQUFDLE1BQU07UUFDbkMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0I7UUFDekIsTUFBTSxLQUFLLEdBQUc7WUFDWixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztZQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUI7U0FDbkMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUNoQyxLQUFLLEVBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBSTtRQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2QsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUM7YUFDakUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEIsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUwsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7O2tIQTdEVSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyByZXN0b3JlSXRlbXMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3Jlc3RvcmUtaXRlbXMnO1xuaW1wb3J0IHsgRnNGaWx0ZXJJdGVtc1N0b3JlIH0gZnJvbSAnLi4vaXRlbXMtc3RvcmUuc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFF1ZXJ5UGFyYW1zQ29udHJvbGxlciB7XG5cbiAgcHJpdmF0ZSBfZW5hYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9wYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJztcbiAgcHJpdmF0ZSBfZmV0Y2hlZFBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBfaXRlbXNTdG9yZTogRnNGaWx0ZXJJdGVtc1N0b3JlXG4gICkge31cblxuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZldGNoZWRQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZldGNoZWRQYXJhbXM7XG4gIH1cblxuICBwdWJsaWMgaW5pdChlbmFibGVkOiBib29sZWFuLCBwYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJykge1xuICAgIHRoaXMuX2VuYWJsZWQgPSBlbmFibGVkO1xuICAgIHRoaXMuX3BhcmFtc0Nhc2UgPSBwYXJhbXNDYXNlO1xuXG4gICAgaWYgKHRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5mZXRjaEZyb21RdWVyeVBhcmFtcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVN0YXRlVG9RdWVyeVBhcmFtcyhwYXJhbXMpIHtcbiAgICBpZiAodGhpcy5fZW5hYmxlZCkgeyBcbiAgICAgIHRoaXMuX3JlcGxhY2VTdGF0ZShwYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBxdWVyeSBhbmQgdXBkYXRlIGZpbHRlciB2YWx1ZXNcbiAgICovXG4gIHB1YmxpYyBmZXRjaEZyb21RdWVyeVBhcmFtcygpIHtcbiAgICBjb25zdCBpdGVtcyA9IFtcbiAgICAgIC4uLnRoaXMuX2l0ZW1zU3RvcmUuaXRlbXMsXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLnNvcnRCeUl0ZW0sXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLnNvcnREaXJlY3Rpb25JdGVtLFxuICAgIF0uZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pO1xuXG4gICAgdGhpcy5fZmV0Y2hlZFBhcmFtcyA9IHJlc3RvcmVJdGVtcyhcbiAgICAgIHRoaXMuX3JvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLFxuICAgICAgaXRlbXMsXG4gICAgICB0aGlzLl9wYXJhbXNDYXNlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcGxhY2VTdGF0ZShkYXRhKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICBPYmplY3Qua2V5cyhkYXRhKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gZGF0YVtuYW1lXSAhPT0gdW5kZWZpbmVkICYmIGRhdGFbbmFtZV0gIT09IG51bGwpXG4gICAgICAuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChuYW1lLGRhdGFbbmFtZV0pO1xuICAgICAgfSk7XG5cbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgbnVsbCwgdXJsLnBhdGhuYW1lICsgdXJsLnNlYXJjaCk7XG4gIH1cbn1cbiJdfQ==
|