@firestitch/filter 12.3.2 → 12.5.0
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/classes/actions-controller.d.ts +38 -38
- package/app/components/action-button/action-button.component.d.ts +7 -7
- package/app/components/action-kebab-actions/action-kebab-actions.component.d.ts +7 -7
- package/app/components/actions/actions.component.d.ts +8 -8
- package/app/components/filter/filter.component.d.ts +192 -192
- package/app/components/filter-chip/filter-chip.component.d.ts +26 -26
- package/app/components/filter-chip-content/filter-chip-content.component.d.ts +18 -18
- package/app/components/filter-chips/filter-chips.component.d.ts +8 -8
- package/app/components/filter-drawer/filter-drawer.component.d.ts +30 -30
- package/app/components/filter-drawer-actions/filter-drawer-actions.component.d.ts +15 -15
- package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +13 -13
- package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +20 -20
- package/app/components/filters-item/base-item/base-item.component.d.ts +23 -23
- package/app/components/filters-item/checkbox/checkbox.component.d.ts +11 -11
- package/app/components/filters-item/chips/chips.component.d.ts +13 -13
- package/app/components/filters-item/date/date.component.d.ts +19 -19
- package/app/components/filters-item/date-range/date-range.component.d.ts +14 -14
- package/app/components/filters-item/filter-item.component.d.ts +15 -15
- package/app/components/filters-item/range/range.component.d.ts +15 -15
- package/app/components/filters-item/select/backdrop/backdrop.component.d.ts +6 -6
- package/app/components/filters-item/select/groups/groups.component.d.ts +12 -12
- package/app/components/filters-item/select/multiple/multiple.component.d.ts +14 -14
- package/app/components/filters-item/select/select.component.d.ts +16 -16
- package/app/components/filters-item/select/simple/simple.component.d.ts +14 -14
- package/app/components/filters-item/text/text.component.d.ts +19 -19
- package/app/components/filters-item/week/week.component.d.ts +12 -12
- package/app/components/saved-filter-edit/saved-filter-edit.component.d.ts +18 -18
- package/app/components/saved-filters-menu/saved-filters-menu.component.d.ts +23 -23
- package/app/consts/query-param-delimiter.d.ts +1 -1
- package/app/directives/focus-to-item/focus-to-item.directive.d.ts +27 -27
- package/app/directives/status-bar/status-bar.directive.d.ts +5 -5
- package/app/enums/action-mode.enum.d.ts +5 -5
- package/app/enums/action-type.enum.d.ts +7 -7
- package/app/enums/item-date-mode.enum.d.ts +5 -5
- package/app/enums/item-type.enum.d.ts +15 -15
- package/app/fs-filter.module.d.ts +64 -65
- package/app/helpers/build-query-params.d.ts +3 -3
- package/app/helpers/compare.d.ts +2 -2
- package/app/helpers/create-filter-item.d.ts +13 -13
- package/app/helpers/find-value.d.ts +1 -1
- package/app/helpers/get-range-name.d.ts +1 -1
- package/app/helpers/parse-date.d.ts +1 -1
- package/app/helpers/parse-item-value-from-stored.d.ts +1 -1
- package/app/helpers/query-param-transformers.d.ts +2 -2
- package/app/helpers/restore-items.d.ts +12 -12
- package/app/helpers/try-convert-to-number.d.ts +1 -1
- package/app/injectors/filter-config.d.ts +2 -2
- package/app/injectors/filter-drawer-data.d.ts +2 -2
- package/app/injectors/filter-drawer-overlay.d.ts +2 -2
- package/app/interfaces/action.interface.d.ts +69 -69
- package/app/interfaces/config.interface.d.ts +61 -61
- package/app/interfaces/external-params.interface.d.ts +3 -3
- package/app/interfaces/filter.interface.d.ts +4 -4
- package/app/interfaces/items/autocomplete-chips.interface.d.ts +12 -12
- package/app/interfaces/items/autocomplete.interface.d.ts +6 -6
- package/app/interfaces/items/base.interface.d.ts +27 -27
- package/app/interfaces/items/checkbox.interface.d.ts +7 -7
- package/app/interfaces/items/chips.interface.d.ts +6 -6
- package/app/interfaces/items/date-range.interface.d.ts +8 -8
- package/app/interfaces/items/date.interface.d.ts +7 -7
- package/app/interfaces/items/range.interface.d.ts +13 -13
- package/app/interfaces/items/select.interface.d.ts +20 -20
- package/app/interfaces/items/text.interface.d.ts +9 -9
- package/app/interfaces/items/week.interface.d.ts +7 -7
- package/app/interfaces/saved-filters.interface.d.ts +18 -18
- package/app/interfaces/update-filter-item.interface.d.ts +4 -4
- package/app/models/action-menu-item.model.d.ts +23 -23
- package/app/models/action.model.d.ts +45 -45
- package/app/models/filter-config.d.ts +30 -30
- package/app/models/items/autocomplete/base-autocomplete-item.d.ts +12 -12
- package/app/models/items/autocomplete-chips-item.d.ts +19 -19
- package/app/models/items/autocomplete-item.d.ts +10 -10
- package/app/models/items/base-item.d.ts +75 -75
- package/app/models/items/checkbox-item.d.ts +16 -16
- package/app/models/items/chips-item.d.ts +17 -17
- package/app/models/items/date/base-date-item.d.ts +14 -14
- package/app/models/items/date-item.d.ts +7 -7
- package/app/models/items/date-range/base-date-range-item.d.ts +21 -21
- package/app/models/items/date-range-item.d.ts +5 -5
- package/app/models/items/date-time-item.d.ts +6 -6
- package/app/models/items/date-time-range-item.d.ts +5 -5
- package/app/models/items/range-item.d.ts +22 -22
- package/app/models/items/select/base-select-item.d.ts +13 -13
- package/app/models/items/select/multiple-select-item.d.ts +12 -12
- package/app/models/items/select/simple-select-item.d.ts +12 -12
- package/app/models/items/select-item.d.ts +7 -7
- package/app/models/items/text-item.d.ts +14 -14
- package/app/models/items/week-item.d.ts +17 -17
- package/app/pipes/remove-isolate-value.pipe.d.ts +8 -8
- package/app/providers/filter-meta.d.ts +5 -5
- package/app/services/external-params/persistance-params-controller.service.d.ts +22 -22
- package/app/services/external-params/query-params-controller.service.d.ts +22 -22
- package/app/services/external-params/saved-filters-controller.service.d.ts +40 -40
- package/app/services/external-params-controller.service.d.ts +44 -44
- package/app/services/filter-overlay.service.d.ts +34 -34
- package/app/services/focus-controller.service.d.ts +18 -18
- package/app/services/items-store.service.d.ts +65 -65
- package/bundles/firestitch-filter.umd.js +5343 -5346
- package/bundles/firestitch-filter.umd.js.map +1 -1
- package/esm2015/app/classes/actions-controller.js +122 -123
- package/esm2015/app/components/action-button/action-button.component.js +23 -25
- package/esm2015/app/components/action-kebab-actions/action-kebab-actions.component.js +22 -22
- package/esm2015/app/components/actions/actions.component.js +31 -31
- package/esm2015/app/components/filter/filter.component.js +617 -615
- package/esm2015/app/components/filter-chip/filter-chip.component.js +89 -91
- package/esm2015/app/components/filter-chip-content/filter-chip-content.component.js +83 -84
- package/esm2015/app/components/filter-chips/filter-chips.component.js +24 -24
- package/esm2015/app/components/filter-drawer/filter-drawer.component.js +73 -76
- package/esm2015/app/components/filter-drawer-actions/filter-drawer-actions.component.js +42 -43
- package/esm2015/app/components/filters-item/autocomplete/autocomplete.component.js +30 -30
- package/esm2015/app/components/filters-item/autocompletechips/autocompletechips.component.js +52 -52
- package/esm2015/app/components/filters-item/base-item/base-item.component.js +59 -59
- package/esm2015/app/components/filters-item/checkbox/checkbox.component.js +25 -25
- package/esm2015/app/components/filters-item/chips/chips.component.js +32 -32
- package/esm2015/app/components/filters-item/date/date.component.js +45 -45
- package/esm2015/app/components/filters-item/date-range/date-range.component.js +36 -36
- package/esm2015/app/components/filters-item/filter-item.component.js +47 -48
- package/esm2015/app/components/filters-item/range/range.component.js +49 -51
- package/esm2015/app/components/filters-item/select/backdrop/backdrop.component.js +16 -16
- package/esm2015/app/components/filters-item/select/groups/groups.component.js +32 -34
- package/esm2015/app/components/filters-item/select/multiple/multiple.component.js +59 -61
- package/esm2015/app/components/filters-item/select/select.component.js +44 -44
- package/esm2015/app/components/filters-item/select/simple/simple.component.js +45 -48
- package/esm2015/app/components/filters-item/text/text.component.js +54 -54
- package/esm2015/app/components/filters-item/week/week.component.js +28 -28
- package/esm2015/app/components/saved-filter-edit/saved-filter-edit.component.js +55 -55
- package/esm2015/app/components/saved-filters-menu/saved-filters-menu.component.js +55 -58
- package/esm2015/app/consts/query-param-delimiter.js +1 -1
- package/esm2015/app/directives/focus-to-item/focus-to-item.directive.js +125 -130
- package/esm2015/app/directives/status-bar/status-bar.directive.js +12 -12
- package/esm2015/app/enums/action-mode.enum.js +6 -6
- package/esm2015/app/enums/action-type.enum.js +8 -8
- package/esm2015/app/enums/item-date-mode.enum.js +6 -6
- package/esm2015/app/enums/item-type.enum.js +16 -16
- package/esm2015/app/fs-filter.module.js +235 -239
- package/esm2015/app/helpers/build-query-params.js +31 -31
- package/esm2015/app/helpers/compare.js +37 -37
- package/esm2015/app/helpers/create-filter-item.js +54 -54
- package/esm2015/app/helpers/find-value.js +12 -12
- package/esm2015/app/helpers/get-range-name.js +8 -8
- package/esm2015/app/helpers/parse-date.js +7 -7
- package/esm2015/app/helpers/parse-item-value-from-stored.js +81 -81
- package/esm2015/app/helpers/query-param-transformers.js +8 -8
- package/esm2015/app/helpers/restore-items.js +48 -48
- package/esm2015/app/helpers/try-convert-to-number.js +5 -5
- package/esm2015/app/injectors/filter-config.js +2 -2
- package/esm2015/app/injectors/filter-drawer-data.js +2 -2
- package/esm2015/app/injectors/filter-drawer-overlay.js +2 -2
- package/esm2015/app/interfaces/action.interface.js +1 -1
- package/esm2015/app/interfaces/config.interface.js +1 -1
- package/esm2015/app/interfaces/external-params.interface.js +1 -1
- package/esm2015/app/interfaces/filter.interface.js +1 -1
- package/esm2015/app/interfaces/items/autocomplete-chips.interface.js +1 -1
- package/esm2015/app/interfaces/items/autocomplete.interface.js +1 -1
- package/esm2015/app/interfaces/items/base.interface.js +1 -1
- package/esm2015/app/interfaces/items/checkbox.interface.js +1 -1
- package/esm2015/app/interfaces/items/chips.interface.js +1 -1
- package/esm2015/app/interfaces/items/date-range.interface.js +1 -1
- package/esm2015/app/interfaces/items/date.interface.js +1 -1
- package/esm2015/app/interfaces/items/range.interface.js +1 -1
- package/esm2015/app/interfaces/items/select.interface.js +1 -1
- package/esm2015/app/interfaces/items/text.interface.js +1 -1
- package/esm2015/app/interfaces/items/week.interface.js +1 -1
- package/esm2015/app/interfaces/saved-filters.interface.js +1 -1
- package/esm2015/app/interfaces/update-filter-item.interface.js +1 -1
- package/esm2015/app/models/action-menu-item.model.js +66 -66
- package/esm2015/app/models/action.model.js +102 -102
- package/esm2015/app/models/filter-config.js +65 -65
- package/esm2015/app/models/items/autocomplete/base-autocomplete-item.js +13 -13
- package/esm2015/app/models/items/autocomplete-chips-item.js +61 -61
- package/esm2015/app/models/items/autocomplete-item.js +31 -31
- package/esm2015/app/models/items/base-item.js +233 -233
- package/esm2015/app/models/items/checkbox-item.js +47 -47
- package/esm2015/app/models/items/chips-item.js +83 -83
- package/esm2015/app/models/items/date/base-date-item.js +47 -47
- package/esm2015/app/models/items/date-item.js +18 -18
- package/esm2015/app/models/items/date-range/base-date-range-item.js +136 -136
- package/esm2015/app/models/items/date-range-item.js +6 -6
- package/esm2015/app/models/items/date-time-item.js +9 -9
- package/esm2015/app/models/items/date-time-range-item.js +6 -6
- package/esm2015/app/models/items/range-item.js +88 -88
- package/esm2015/app/models/items/select/base-select-item.js +33 -33
- package/esm2015/app/models/items/select/multiple-select-item.js +68 -68
- package/esm2015/app/models/items/select/simple-select-item.js +62 -62
- package/esm2015/app/models/items/select-item.js +12 -12
- package/esm2015/app/models/items/text-item.js +29 -29
- package/esm2015/app/models/items/week-item.js +96 -96
- package/esm2015/app/pipes/remove-isolate-value.pipe.js +22 -22
- package/esm2015/app/providers/filter-meta.js +9 -9
- package/esm2015/app/services/external-params/persistance-params-controller.service.js +52 -58
- package/esm2015/app/services/external-params/query-params-controller.service.js +55 -57
- package/esm2015/app/services/external-params/saved-filters-controller.service.js +163 -165
- package/esm2015/app/services/external-params-controller.service.js +161 -166
- package/esm2015/app/services/filter-overlay.service.js +115 -116
- package/esm2015/app/services/focus-controller.service.js +29 -29
- package/esm2015/app/services/items-store.service.js +323 -323
- package/esm2015/firestitch-filter.js +4 -4
- package/esm2015/public_api.js +36 -36
- package/fesm2015/firestitch-filter.js +4268 -4272
- package/fesm2015/firestitch-filter.js.map +1 -1
- package/firestitch-filter.d.ts +5 -5
- package/package.json +3 -2
- package/public_api.d.ts +40 -40
|
@@ -1,165 +1,163 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import * as
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this.
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
this.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
.
|
|
118
|
-
.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
type: Injectable
|
|
164
|
-
}], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.MatDialog }]; } });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVycy1jb250cm9sbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy9zYXZlZC1maWx0ZXJzLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGdDQUFnQyxFQUNqQyxNQUFNLGdFQUFnRSxDQUFDO0FBTXhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUk1RCxNQUFNLE9BQU8sc0JBQXNCO0lBYWpDLFlBQ1UsV0FBK0IsRUFDL0IsT0FBa0I7UUFEbEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFYbEIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBdUIsRUFBRSxDQUFDLENBQUM7UUFDL0QsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7UUFFL0QsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBSWxELGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBS3JDLENBQUM7SUFFSixJQUFXLE9BQU87UUFD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RUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpCLElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3hDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBYztRQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM1QixDQUFDOztvSEF2TlUsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBGc0ZpbHRlclNhdmVkRmlsdGVyRWRpdENvbXBvbmVudFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3NhdmVkLWZpbHRlci1lZGl0L3NhdmVkLWZpbHRlci1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBJRmlsdGVyU2F2ZWRGaWx0ZXIsXG4gIElGaWx0ZXJTYXZlZEZpbHRlcnNDb25maWdcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zYXZlZC1maWx0ZXJzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2V4dGVybmFsLXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgcmVzdG9yZUl0ZW1zIH0gZnJvbSAnLi4vLi4vaGVscGVycy9yZXN0b3JlLWl0ZW1zJztcbmltcG9ydCB7IGJ1aWxkUXVlcnlQYXJhbXMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2J1aWxkLXF1ZXJ5LXBhcmFtcyc7XG5pbXBvcnQgeyBGc0ZpbHRlckl0ZW1zU3RvcmUgfSBmcm9tICcuLi9pdGVtcy1zdG9yZS5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9jb25maWc6IElGaWx0ZXJTYXZlZEZpbHRlcnNDb25maWc7XG5cbiAgcHJvdGVjdGVkIF9zYXZlZEZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRmlsdGVyU2F2ZWRGaWx0ZXJbXT4oW10pO1xuICBwcm90ZWN0ZWQgX2FjdGl2ZUZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElGaWx0ZXJTYXZlZEZpbHRlcj4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIF9lbmFibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBfcGFyYW1zQ2FzZTogJ3NuYWtlJyB8ICdjYW1lbCc7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2l0ZW1zU3RvcmU6IEZzRmlsdGVySXRlbXNTdG9yZSxcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVycygpOiBJRmlsdGVyU2F2ZWRGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVycyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzJCgpOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVycyRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlRmlsdGVyKCk6IElGaWx0ZXJTYXZlZEZpbHRlciB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUZpbHRlciQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlRmlsdGVyJCgpOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVGaWx0ZXIkXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZUZpbHRlckRhdGEoKTogSUZpbHRlckV4dGVybmFsUGFyYW1zIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlRmlsdGVyJC5nZXRWYWx1ZSgpPy5maWx0ZXJzO1xuICB9XG5cbiAgcHVibGljIHNldCBzYXZlZEZpbHRlcnMoZmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW10pIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlcnMkLm5leHQoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdChcbiAgICByZW1vdGVQYXJhbXNDb25maWc6IElGaWx0ZXJTYXZlZEZpbHRlcnNDb25maWcsXG4gICAgcGFyYW1zQ2FzZTogJ3NuYWtlJyB8ICdjYW1lbCcsXG4gICk6IHZvaWQge1xuICAgIGlmICghcmVtb3RlUGFyYW1zQ29uZmlnKSB7XG4gICAgICB0aGlzLl9zZXRFbmFibGVkU3RhdHVzKGZhbHNlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zZXRFbmFibGVkU3RhdHVzKHRydWUpO1xuXG4gICAgdGhpcy5fcGFyYW1zQ2FzZSA9IHBhcmFtc0Nhc2U7XG4gICAgdGhpcy5fY29uZmlnID0gcmVtb3RlUGFyYW1zQ29uZmlnO1xuICB9XG5cbiAgcHVibGljIGluaXRTYXZlZEZpbHRlcnMoZmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW10pOiB2b2lkIHtcbiAgICBmaWx0ZXJzID0gWy4uLmZpbHRlcnNdO1xuICAgIGZpbHRlcnMuZm9yRWFjaCgoc2F2ZWRGaWx0ZXIpID0+IHtcbiAgICAgIHNhdmVkRmlsdGVyLmZpbHRlcnMgPSByZXN0b3JlSXRlbXMoXG4gICAgICAgIHNhdmVkRmlsdGVyLmZpbHRlcnMsXG4gICAgICAgIHRoaXMuX2l0ZW1zU3RvcmUuaXRlbXMsXG4gICAgICAgIHRoaXMuX3BhcmFtc0Nhc2VcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNhdmVkRmlsdGVycyA9IGZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgbG9hZCgpOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbml0U2F2ZWRGaWx0ZXJzKHJlc3BvbnNlKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHNhdmUoc2F2ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcik6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5zYXZlKHNhdmVkRmlsdGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBvcmRlcihzYXZlZEZpbHRlcnM6IElGaWx0ZXJTYXZlZEZpbHRlcltdKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcub3JkZXIoc2F2ZWRGaWx0ZXJzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLnNhdmVkRmlsdGVycyA9IFtcbiAgICAgICAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgICAgIF07XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZShzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLmRlbGV0ZShzYXZlZEZpbHRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMgPSB0aGlzLnNhdmVkRmlsdGVyc1xuICAgICAgICAgICAgLmZpbHRlcigoZikgPT4gZi5pZCAhPT0gcmVzcG9uc2UuaWQpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVGaWx0ZXIoc2F2ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcik6IHZvaWQge1xuICAgIGlmIChzYXZlZEZpbHRlcikge1xuICAgICAgY29uc3QgZXhpc3RpbmdGaWx0ZXIgPSB0aGlzLnNhdmVkRmlsdGVyc1xuICAgICAgICAuZmluZCgoZikgPT4gZi5pZCA9PT0gc2F2ZWRGaWx0ZXIuaWQpO1xuXG4gICAgICBpZiAoIWV4aXN0aW5nRmlsdGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU2F2ZWQgZmlsdGVyIGNhbm5vdCBiZSBhY3RpdmF0ZWQsIGJlY2F1c2UgaXQgZG9lcyBub3QgZXhpc3RzLiBGaWx0ZXIgSUQgPSAnICsgc2F2ZWRGaWx0ZXIuaWQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9hY3RpdmVGaWx0ZXIkLm5leHQoZXhpc3RpbmdGaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hY3RpdmVGaWx0ZXIkLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5TYXZlZEZpbHRlckVkaXREaWFsb2coKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1zID0gYnVpbGRRdWVyeVBhcmFtcyhcbiAgICAgIHRoaXMuX2l0ZW1zU3RvcmUudmFsdWVzQXNRdWVyeSgpLFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS5pdGVtcyxcbiAgICApO1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuX2l0ZW1zU3RvcmUudmFsdWVzKHRydWUpO1xuXG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgc2F2ZWRGaWx0ZXJzOiB0aGlzLnNhdmVkRmlsdGVycyxcbiAgICAgICAgc2F2ZUNhbGxiYWNrOiB0aGlzLnNhdmUuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMuX2RpYWxvZ1xuICAgICAgLm9wZW4oRnNGaWx0ZXJTYXZlZEZpbHRlckVkaXRDb21wb25lbnQsIGRpYWxvZ0NvbmZpZylcbiAgICAgIC5iZWZvcmVDbG9zZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh1cGRhdGVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmICh1cGRhdGVkRmlsdGVyKSB7XG4gICAgICAgICAgLy8gZ2V0IGFscmVhZHkgc2F2ZWQgcmVsYXRlZCBmaWx0ZXIgb2JqZWN0XG4gICAgICAgICAgY29uc3Qgc2F2ZWRGaWx0ZXIgPSB0aGlzLnNhdmVkRmlsdGVyc1xuICAgICAgICAgICAgLmZpbmQoKGYpID0+IGYuaWQgPT09IHVwZGF0ZWRGaWx0ZXIuaWQpXG5cbiAgICAgICAgICAvLyByZXN0b3JlIHZhbHVlcyBmcm9tIHF1ZXJ5IHN0cmluZ1xuICAgICAgICAgIHVwZGF0ZWRGaWx0ZXIuZmlsdGVycyA9IHJlc3RvcmVJdGVtcyhcbiAgICAgICAgICAgIHVwZGF0ZWRGaWx0ZXIuZmlsdGVycyxcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zU3RvcmUuaXRlbXMsXG4gICAgICAgICAgICB0aGlzLl9wYXJhbXNDYXNlXG4gICAgICAgICAgKTtcblxuXG4gICAgICAgICAgaWYgKHNhdmVkRmlsdGVyKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHNhdmVkRmlsdGVyLCB1cGRhdGVkRmlsdGVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldEFjdGl2ZUZpbHRlcigpO1xuICAgICAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMgPSBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuc2F2ZWRGaWx0ZXJzLFxuICAgICAgICAgICAgICB1cGRhdGVkRmlsdGVyXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG5cblxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZUZpbHRlcigpOiB2b2lkIHtcbiAgICAvLyBMb29rdXAgYWN0aXZlIGZpbHRlclxuICAgIGNvbnN0IGFjaXR2ZUZpbHRlciA9IHRoaXMuc2F2ZWRGaWx0ZXJzXG4gICAgICAuZmluZCgoZikgPT4gZi5hY3RpdmUpO1xuXG4gICAgaWYgKGFjaXR2ZUZpbHRlcikge1xuICAgICAgdGhpcy5zZXRBY3RpdmVGaWx0ZXIoYWNpdHZlRmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXRBY3RpdmVGaWx0ZXIoKTogdm9pZCB7XG4gICAgLy8gUmVzZXQgYWxsIHByZXZpb3VzbHkgYWN0aXZhdGVkIGZpbHRlcnNcbiAgICB0aGlzLnNhdmVkRmlsdGVycy5mb3JFYWNoKChzYXZlZEZpbHRlcikgPT4ge1xuICAgICAgc2F2ZWRGaWx0ZXIuYWN0aXZlID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNldEFjdGl2ZUZpbHRlcihudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldEVuYWJsZWRTdGF0dXModmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9lbmFibGVkJC5uZXh0KHZhbHVlKVxuICB9XG59XG4iXX0=
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
3
|
+
import { distinctUntilChanged, take, takeUntil, tap, } from 'rxjs/operators';
|
|
4
|
+
import { FsFilterSavedFilterEditComponent } from '../../components/saved-filter-edit/saved-filter-edit.component';
|
|
5
|
+
import { restoreItems } from '../../helpers/restore-items';
|
|
6
|
+
import { buildQueryParams } from '../../helpers/build-query-params';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../items-store.service";
|
|
9
|
+
import * as i2 from "@angular/material/dialog";
|
|
10
|
+
export class SavedFiltersController {
|
|
11
|
+
constructor(_itemsStore, _dialog) {
|
|
12
|
+
this._itemsStore = _itemsStore;
|
|
13
|
+
this._dialog = _dialog;
|
|
14
|
+
this._savedFilters$ = new BehaviorSubject([]);
|
|
15
|
+
this._activeFilter$ = new BehaviorSubject(null);
|
|
16
|
+
this._enabled$ = new BehaviorSubject(false);
|
|
17
|
+
this._destroy$ = new Subject();
|
|
18
|
+
}
|
|
19
|
+
get enabled() {
|
|
20
|
+
return this._enabled$.getValue();
|
|
21
|
+
}
|
|
22
|
+
get enabled$() {
|
|
23
|
+
return this._enabled$
|
|
24
|
+
.pipe(distinctUntilChanged());
|
|
25
|
+
}
|
|
26
|
+
get savedFilters() {
|
|
27
|
+
return this._savedFilters$.getValue();
|
|
28
|
+
}
|
|
29
|
+
get savedFilters$() {
|
|
30
|
+
return this._savedFilters$
|
|
31
|
+
.pipe(distinctUntilChanged());
|
|
32
|
+
}
|
|
33
|
+
get activeFilter() {
|
|
34
|
+
return this._activeFilter$.getValue();
|
|
35
|
+
}
|
|
36
|
+
get activeFilter$() {
|
|
37
|
+
return this._activeFilter$
|
|
38
|
+
.pipe(distinctUntilChanged());
|
|
39
|
+
}
|
|
40
|
+
get activeFilterData() {
|
|
41
|
+
var _a;
|
|
42
|
+
return (_a = this._activeFilter$.getValue()) === null || _a === void 0 ? void 0 : _a.filters;
|
|
43
|
+
}
|
|
44
|
+
set savedFilters(filters) {
|
|
45
|
+
this._savedFilters$.next(filters);
|
|
46
|
+
}
|
|
47
|
+
ngOnDestroy() {
|
|
48
|
+
this._destroy$.next();
|
|
49
|
+
this._destroy$.complete();
|
|
50
|
+
}
|
|
51
|
+
init(remoteParamsConfig, paramsCase) {
|
|
52
|
+
if (!remoteParamsConfig) {
|
|
53
|
+
this._setEnabledStatus(false);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this._setEnabledStatus(true);
|
|
57
|
+
this._paramsCase = paramsCase;
|
|
58
|
+
this._config = remoteParamsConfig;
|
|
59
|
+
}
|
|
60
|
+
initSavedFilters(filters) {
|
|
61
|
+
filters = [...filters];
|
|
62
|
+
filters.forEach((savedFilter) => {
|
|
63
|
+
savedFilter.filters = restoreItems(savedFilter.filters, this._itemsStore.items, this._paramsCase);
|
|
64
|
+
});
|
|
65
|
+
this.savedFilters = filters;
|
|
66
|
+
}
|
|
67
|
+
load() {
|
|
68
|
+
return this._config.load()
|
|
69
|
+
.pipe(tap((response) => {
|
|
70
|
+
this.initSavedFilters(response);
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
save(savedFilter) {
|
|
74
|
+
return this._config.save(savedFilter);
|
|
75
|
+
}
|
|
76
|
+
order(savedFilters) {
|
|
77
|
+
return this._config.order(savedFilters)
|
|
78
|
+
.pipe(tap((response) => {
|
|
79
|
+
this.savedFilters = [
|
|
80
|
+
...response,
|
|
81
|
+
];
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
delete(savedFilter) {
|
|
85
|
+
return this._config.delete(savedFilter)
|
|
86
|
+
.pipe(tap((response) => {
|
|
87
|
+
this.savedFilters = this.savedFilters
|
|
88
|
+
.filter((f) => f.id !== response.id);
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
setActiveFilter(savedFilter) {
|
|
92
|
+
if (savedFilter) {
|
|
93
|
+
const existingFilter = this.savedFilters
|
|
94
|
+
.find((f) => f.id === savedFilter.id);
|
|
95
|
+
if (!existingFilter) {
|
|
96
|
+
throw new Error('Saved filter cannot be activated, because it does not exists. Filter ID = ' + savedFilter.id);
|
|
97
|
+
}
|
|
98
|
+
this._activeFilter$.next(existingFilter);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
this._activeFilter$.next(null);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
openSavedFilterEditDialog() {
|
|
105
|
+
const params = buildQueryParams(this._itemsStore.valuesAsQuery(), this._itemsStore.items);
|
|
106
|
+
const values = this._itemsStore.values(true);
|
|
107
|
+
const dialogConfig = {
|
|
108
|
+
data: {
|
|
109
|
+
params: params,
|
|
110
|
+
savedFilters: this.savedFilters,
|
|
111
|
+
saveCallback: this.save.bind(this),
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
this._dialog
|
|
115
|
+
.open(FsFilterSavedFilterEditComponent, dialogConfig)
|
|
116
|
+
.beforeClosed()
|
|
117
|
+
.pipe(take(1), takeUntil(this._destroy$))
|
|
118
|
+
.subscribe((updatedFilter) => {
|
|
119
|
+
if (updatedFilter) {
|
|
120
|
+
// get already saved related filter object
|
|
121
|
+
const savedFilter = this.savedFilters
|
|
122
|
+
.find((f) => f.id === updatedFilter.id);
|
|
123
|
+
// restore values from query string
|
|
124
|
+
updatedFilter.filters = restoreItems(updatedFilter.filters, this._itemsStore.items, this._paramsCase);
|
|
125
|
+
if (savedFilter) {
|
|
126
|
+
Object.assign(savedFilter, updatedFilter);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.resetActiveFilter();
|
|
130
|
+
this.savedFilters = [
|
|
131
|
+
...this.savedFilters,
|
|
132
|
+
updatedFilter
|
|
133
|
+
];
|
|
134
|
+
}
|
|
135
|
+
this.updateActiveFilter();
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
updateActiveFilter() {
|
|
140
|
+
// Lookup active filter
|
|
141
|
+
const acitveFilter = this.savedFilters
|
|
142
|
+
.find((f) => f.active);
|
|
143
|
+
if (acitveFilter) {
|
|
144
|
+
this.setActiveFilter(acitveFilter);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
resetActiveFilter() {
|
|
148
|
+
// Reset all previously activated filters
|
|
149
|
+
this.savedFilters.forEach((savedFilter) => {
|
|
150
|
+
savedFilter.active = false;
|
|
151
|
+
});
|
|
152
|
+
this.setActiveFilter(null);
|
|
153
|
+
}
|
|
154
|
+
_setEnabledStatus(value) {
|
|
155
|
+
this._enabled$.next(value);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
SavedFiltersController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SavedFiltersController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
159
|
+
SavedFiltersController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SavedFiltersController });
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SavedFiltersController, decorators: [{
|
|
161
|
+
type: Injectable
|
|
162
|
+
}], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.MatDialog }]; } });
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVycy1jb250cm9sbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy9zYXZlZC1maWx0ZXJzLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBSXRELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2pDLE1BQU0sZ0VBQWdFLENBQUM7QUFNeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7O0FBS3BFLE1BQU0sT0FBTyxzQkFBc0I7SUFhakMsWUFDVSxXQUErQixFQUMvQixPQUFrQjtRQURsQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQVhsQixtQkFBYyxHQUFHLElBQUksZUFBZSxDQUF1QixFQUFFLENBQUMsQ0FBQztRQUMvRCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFxQixJQUFJLENBQUMsQ0FBQztRQUUvRCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFJbEQsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFLckMsQ0FBQztJQUVKLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FB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QUFZLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFTSxpQkFBaUI7UUFDdEIseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDeEMsV0FBVyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFjO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVCLENBQUM7O29IQXZOVSxzQkFBc0I7d0hBQXRCLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIEZzRmlsdGVyU2F2ZWRGaWx0ZXJFZGl0Q29tcG9uZW50XG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyLWVkaXQvc2F2ZWQtZmlsdGVyLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIElGaWx0ZXJTYXZlZEZpbHRlcixcbiAgSUZpbHRlclNhdmVkRmlsdGVyc0NvbmZpZ1xufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZXh0ZXJuYWwtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyByZXN0b3JlSXRlbXMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3Jlc3RvcmUtaXRlbXMnO1xuaW1wb3J0IHsgYnVpbGRRdWVyeVBhcmFtcyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvYnVpbGQtcXVlcnktcGFyYW1zJztcbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4uL2l0ZW1zLXN0b3JlLnNlcnZpY2UnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTYXZlZEZpbHRlcnNDb250cm9sbGVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgX2NvbmZpZzogSUZpbHRlclNhdmVkRmlsdGVyc0NvbmZpZztcblxuICBwcm90ZWN0ZWQgX3NhdmVkRmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElGaWx0ZXJTYXZlZEZpbHRlcltdPihbXSk7XG4gIHByb3RlY3RlZCBfYWN0aXZlRmlsdGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUZpbHRlclNhdmVkRmlsdGVyPihudWxsKTtcblxuICBwcm90ZWN0ZWQgX2VuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIF9wYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJztcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaXRlbXNTdG9yZTogRnNGaWx0ZXJJdGVtc1N0b3JlLFxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxuICApIHt9XG5cbiAgcHVibGljIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmFibGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzKCk6IElGaWx0ZXJTYXZlZEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnMkKCk6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVGaWx0ZXIoKTogSUZpbHRlclNhdmVkRmlsdGVyIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlRmlsdGVyJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVGaWx0ZXIkKCk6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUZpbHRlciRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlRmlsdGVyRGF0YSgpOiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVGaWx0ZXIkLmdldFZhbHVlKCk/LmZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNhdmVkRmlsdGVycyhmaWx0ZXJzOiBJRmlsdGVyU2F2ZWRGaWx0ZXJbXSkge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVycyQubmV4dChmaWx0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KFxuICAgIHJlbW90ZVBhcmFtc0NvbmZpZzogSUZpbHRlclNhdmVkRmlsdGVyc0NvbmZpZyxcbiAgICBwYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFyZW1vdGVQYXJhbXNDb25maWcpIHtcbiAgICAgIHRoaXMuX3NldEVuYWJsZWRTdGF0dXMoZmFsc2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NldEVuYWJsZWRTdGF0dXModHJ1ZSk7XG5cbiAgICB0aGlzLl9wYXJhbXNDYXNlID0gcGFyYW1zQ2FzZTtcbiAgICB0aGlzLl9jb25maWcgPSByZW1vdGVQYXJhbXNDb25maWc7XG4gIH1cblxuICBwdWJsaWMgaW5pdFNhdmVkRmlsdGVycyhmaWx0ZXJzOiBJRmlsdGVyU2F2ZWRGaWx0ZXJbXSk6IHZvaWQge1xuICAgIGZpbHRlcnMgPSBbLi4uZmlsdGVyc107XG4gICAgZmlsdGVycy5mb3JFYWNoKChzYXZlZEZpbHRlcikgPT4ge1xuICAgICAgc2F2ZWRGaWx0ZXIuZmlsdGVycyA9IHJlc3RvcmVJdGVtcyhcbiAgICAgICAgc2F2ZWRGaWx0ZXIuZmlsdGVycyxcbiAgICAgICAgdGhpcy5faXRlbXNTdG9yZS5pdGVtcyxcbiAgICAgICAgdGhpcy5fcGFyYW1zQ2FzZVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzID0gZmlsdGVycztcbiAgfVxuXG4gIHB1YmxpYyBsb2FkKCk6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLmxvYWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmluaXRTYXZlZEZpbHRlcnMocmVzcG9uc2UpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZShzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhdmUoc2F2ZWRGaWx0ZXIpO1xuICB9XG5cbiAgcHVibGljIG9yZGVyKHNhdmVkRmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW10pOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5vcmRlcihzYXZlZEZpbHRlcnMpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzID0gW1xuICAgICAgICAgICAgLi4ucmVzcG9uc2UsXG4gICAgICAgICAgXTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuZGVsZXRlKHNhdmVkRmlsdGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLnNhdmVkRmlsdGVycyA9IHRoaXMuc2F2ZWRGaWx0ZXJzXG4gICAgICAgICAgICAuZmlsdGVyKChmKSA9PiBmLmlkICE9PSByZXNwb25zZS5pZCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGl2ZUZpbHRlcihzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKTogdm9pZCB7XG4gICAgaWYgKHNhdmVkRmlsdGVyKSB7XG4gICAgICBjb25zdCBleGlzdGluZ0ZpbHRlciA9IHRoaXMuc2F2ZWRGaWx0ZXJzXG4gICAgICAgIC5maW5kKChmKSA9PiBmLmlkID09PSBzYXZlZEZpbHRlci5pZCk7XG5cbiAgICAgIGlmICghZXhpc3RpbmdGaWx0ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTYXZlZCBmaWx0ZXIgY2Fubm90IGJlIGFjdGl2YXRlZCwgYmVjYXVzZSBpdCBkb2VzIG5vdCBleGlzdHMuIEZpbHRlciBJRCA9ICcgKyBzYXZlZEZpbHRlci5pZCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChleGlzdGluZ0ZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlblNhdmVkRmlsdGVyRWRpdERpYWxvZygpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbXMgPSBidWlsZFF1ZXJ5UGFyYW1zKFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS52YWx1ZXNBc1F1ZXJ5KCksXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLml0ZW1zLFxuICAgICk7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5faXRlbXNTdG9yZS52YWx1ZXModHJ1ZSk7XG5cbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICBzYXZlZEZpbHRlcnM6IHRoaXMuc2F2ZWRGaWx0ZXJzLFxuICAgICAgICBzYXZlQ2FsbGJhY2s6IHRoaXMuc2F2ZS5iaW5kKHRoaXMpLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgdGhpcy5fZGlhbG9nXG4gICAgICAub3BlbihGc0ZpbHRlclNhdmVkRmlsdGVyRWRpdENvbXBvbmVudCwgZGlhbG9nQ29uZmlnKVxuICAgICAgLmJlZm9yZUNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHVwZGF0ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlciB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKHVwZGF0ZWRGaWx0ZXIpIHtcbiAgICAgICAgICAvLyBnZXQgYWxyZWFkeSBzYXZlZCByZWxhdGVkIGZpbHRlciBvYmplY3RcbiAgICAgICAgICBjb25zdCBzYXZlZEZpbHRlciA9IHRoaXMuc2F2ZWRGaWx0ZXJzXG4gICAgICAgICAgICAuZmluZCgoZikgPT4gZi5pZCA9PT0gdXBkYXRlZEZpbHRlci5pZClcblxuICAgICAgICAgIC8vIHJlc3RvcmUgdmFsdWVzIGZyb20gcXVlcnkgc3RyaW5nXG4gICAgICAgICAgdXBkYXRlZEZpbHRlci5maWx0ZXJzID0gcmVzdG9yZUl0ZW1zKFxuICAgICAgICAgICAgdXBkYXRlZEZpbHRlci5maWx0ZXJzLFxuICAgICAgICAgICAgdGhpcy5faXRlbXNTdG9yZS5pdGVtcyxcbiAgICAgICAgICAgIHRoaXMuX3BhcmFtc0Nhc2VcbiAgICAgICAgICApO1xuXG5cbiAgICAgICAgICBpZiAoc2F2ZWRGaWx0ZXIpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2F2ZWRGaWx0ZXIsIHVwZGF0ZWRGaWx0ZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0QWN0aXZlRmlsdGVyKCk7XG4gICAgICAgICAgICB0aGlzLnNhdmVkRmlsdGVycyA9IFtcbiAgICAgICAgICAgICAgLi4udGhpcy5zYXZlZEZpbHRlcnMsXG4gICAgICAgICAgICAgIHVwZGF0ZWRGaWx0ZXJcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSlcblxuXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQWN0aXZlRmlsdGVyKCk6IHZvaWQge1xuICAgIC8vIExvb2t1cCBhY3RpdmUgZmlsdGVyXG4gICAgY29uc3QgYWNpdHZlRmlsdGVyID0gdGhpcy5zYXZlZEZpbHRlcnNcbiAgICAgIC5maW5kKChmKSA9PiBmLmFjdGl2ZSk7XG5cbiAgICBpZiAoYWNpdHZlRmlsdGVyKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZUZpbHRlcihhY2l0dmVGaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldEFjdGl2ZUZpbHRlcigpOiB2b2lkIHtcbiAgICAvLyBSZXNldCBhbGwgcHJldmlvdXNseSBhY3RpdmF0ZWQgZmlsdGVyc1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzLmZvckVhY2goKHNhdmVkRmlsdGVyKSA9PiB7XG4gICAgICBzYXZlZEZpbHRlci5hY3RpdmUgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0QWN0aXZlRmlsdGVyKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RW5hYmxlZFN0YXR1cyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZWQkLm5leHQodmFsdWUpXG4gIH1cbn1cbiJdfQ==
|