@firestitch/filter 13.0.13 → 13.0.15

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.
Files changed (207) hide show
  1. package/app/classes/actions-controller.d.ts +41 -41
  2. package/app/components/action-button/action-button.component.d.ts +9 -9
  3. package/app/components/action-kebab-actions/action-kebab-actions.component.d.ts +7 -7
  4. package/app/components/actions/actions.component.d.ts +12 -12
  5. package/app/components/filter/filter.component.d.ts +194 -192
  6. package/app/components/filter-chip/filter-chip.component.d.ts +26 -26
  7. package/app/components/filter-chip-content/filter-chip-content.component.d.ts +18 -18
  8. package/app/components/filter-chips/filter-chips.component.d.ts +10 -10
  9. package/app/components/filter-drawer/filter-drawer.component.d.ts +30 -30
  10. package/app/components/filter-drawer-actions/filter-drawer-actions.component.d.ts +15 -15
  11. package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +14 -14
  12. package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +16 -16
  13. package/app/components/filters-item/base-item/base-item.component.d.ts +25 -25
  14. package/app/components/filters-item/checkbox/checkbox.component.d.ts +11 -11
  15. package/app/components/filters-item/chips/chips.component.d.ts +13 -13
  16. package/app/components/filters-item/date/date.component.d.ts +20 -20
  17. package/app/components/filters-item/date-range/date-range.component.d.ts +15 -15
  18. package/app/components/filters-item/filter-item.component.d.ts +39 -39
  19. package/app/components/filters-item/range/range.component.d.ts +15 -15
  20. package/app/components/filters-item/select/backdrop/backdrop.component.d.ts +6 -6
  21. package/app/components/filters-item/select/groups/groups.component.d.ts +12 -12
  22. package/app/components/filters-item/select/multiple/multiple.component.d.ts +15 -15
  23. package/app/components/filters-item/select/select.component.d.ts +23 -23
  24. package/app/components/filters-item/select/simple/simple.component.d.ts +14 -14
  25. package/app/components/filters-item/text/text.component.d.ts +19 -19
  26. package/app/components/filters-item/week/week.component.d.ts +12 -12
  27. package/app/components/saved-filter-edit/saved-filter-edit.component.d.ts +18 -18
  28. package/app/components/saved-filters-menu/saved-filters-menu.component.d.ts +23 -23
  29. package/app/consts/query-param-delimiter.d.ts +1 -1
  30. package/app/directives/focus-to-item/focus-to-item.directive.d.ts +27 -27
  31. package/app/directives/status-bar/status-bar.directive.d.ts +8 -8
  32. package/app/enums/action-mode.enum.d.ts +6 -6
  33. package/app/enums/action-type.enum.d.ts +9 -9
  34. package/app/enums/button-style.d.ts +9 -9
  35. package/app/enums/index.d.ts +6 -6
  36. package/app/enums/item-date-mode.enum.d.ts +5 -5
  37. package/app/enums/item-type.enum.d.ts +15 -15
  38. package/app/enums/picker-view-type.enum.d.ts +7 -7
  39. package/app/fs-filter.module.d.ts +66 -66
  40. package/app/helpers/build-query-params.d.ts +3 -3
  41. package/app/helpers/compare.d.ts +2 -2
  42. package/app/helpers/create-filter-item.d.ts +14 -14
  43. package/app/helpers/find-value.d.ts +1 -1
  44. package/app/helpers/get-range-name.d.ts +1 -1
  45. package/app/helpers/parse-date.d.ts +1 -1
  46. package/app/helpers/parse-item-value-from-stored.d.ts +1 -1
  47. package/app/helpers/query-param-transformers.d.ts +2 -2
  48. package/app/helpers/restore-items.d.ts +12 -12
  49. package/app/injectors/filter-config.d.ts +2 -2
  50. package/app/injectors/filter-drawer-data.d.ts +2 -2
  51. package/app/injectors/filter-drawer-overlay.d.ts +2 -2
  52. package/app/interfaces/action.interface.d.ts +80 -80
  53. package/app/interfaces/config.interface.d.ts +62 -62
  54. package/app/interfaces/external-params.interface.d.ts +3 -3
  55. package/app/interfaces/filter.interface.d.ts +4 -4
  56. package/app/interfaces/items/autocomplete-chips.interface.d.ts +15 -15
  57. package/app/interfaces/items/autocomplete.interface.d.ts +9 -9
  58. package/app/interfaces/items/base.interface.d.ts +29 -29
  59. package/app/interfaces/items/checkbox.interface.d.ts +7 -7
  60. package/app/interfaces/items/chips.interface.d.ts +6 -6
  61. package/app/interfaces/items/date-range.interface.d.ts +8 -8
  62. package/app/interfaces/items/date.interface.d.ts +7 -7
  63. package/app/interfaces/items/range.interface.d.ts +13 -13
  64. package/app/interfaces/items/select.interface.d.ts +20 -20
  65. package/app/interfaces/items/text.interface.d.ts +9 -9
  66. package/app/interfaces/items/week.interface.d.ts +7 -7
  67. package/app/interfaces/saved-filters.interface.d.ts +18 -18
  68. package/app/interfaces/update-filter-item.interface.d.ts +4 -4
  69. package/app/models/action-menu-item.model.d.ts +23 -23
  70. package/app/models/action.model.d.ts +50 -50
  71. package/app/models/filter-config.d.ts +30 -30
  72. package/app/models/items/autocomplete/base-autocomplete-item.d.ts +12 -12
  73. package/app/models/items/autocomplete-chips-item.d.ts +20 -20
  74. package/app/models/items/autocomplete-item.d.ts +11 -11
  75. package/app/models/items/base-item.d.ts +80 -80
  76. package/app/models/items/checkbox-item.d.ts +17 -17
  77. package/app/models/items/chips-item.d.ts +18 -18
  78. package/app/models/items/date/base-date-item.d.ts +14 -14
  79. package/app/models/items/date-item.d.ts +8 -8
  80. package/app/models/items/date-range/base-date-range-item.d.ts +21 -21
  81. package/app/models/items/date-range-item.d.ts +6 -6
  82. package/app/models/items/date-time-item.d.ts +7 -7
  83. package/app/models/items/date-time-range-item.d.ts +6 -6
  84. package/app/models/items/range-item.d.ts +23 -23
  85. package/app/models/items/select/base-select-item.d.ts +13 -13
  86. package/app/models/items/select/multiple-select-item.d.ts +14 -14
  87. package/app/models/items/select/simple-select-item.d.ts +14 -14
  88. package/app/models/items/select-item.d.ts +8 -8
  89. package/app/models/items/text-item.d.ts +15 -15
  90. package/app/models/items/week-item.d.ts +18 -18
  91. package/app/pipes/remove-isolate-value.pipe.d.ts +8 -8
  92. package/app/providers/filter-meta.d.ts +5 -5
  93. package/app/services/external-params/persistance-params-controller.service.d.ts +22 -22
  94. package/app/services/external-params/query-params-controller.service.d.ts +22 -22
  95. package/app/services/external-params/saved-filters-controller.service.d.ts +40 -40
  96. package/app/services/external-params-controller.service.d.ts +42 -42
  97. package/app/services/filter-overlay.service.d.ts +36 -36
  98. package/app/services/focus-controller.service.d.ts +18 -18
  99. package/app/services/items-store.service.d.ts +67 -67
  100. package/esm2020/app/classes/actions-controller.mjs +126 -126
  101. package/esm2020/app/components/action-button/action-button.component.mjs +23 -23
  102. package/esm2020/app/components/action-kebab-actions/action-kebab-actions.component.mjs +16 -16
  103. package/esm2020/app/components/actions/actions.component.mjs +38 -38
  104. package/esm2020/app/components/filter/filter.component.mjs +575 -572
  105. package/esm2020/app/components/filter-chip/filter-chip.component.mjs +85 -85
  106. package/esm2020/app/components/filter-chip-content/filter-chip-content.component.mjs +78 -78
  107. package/esm2020/app/components/filter-chips/filter-chips.component.mjs +22 -22
  108. package/esm2020/app/components/filter-drawer/filter-drawer.component.mjs +70 -70
  109. package/esm2020/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +40 -40
  110. package/esm2020/app/components/filters-item/autocomplete/autocomplete.component.mjs +26 -26
  111. package/esm2020/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +41 -41
  112. package/esm2020/app/components/filters-item/base-item/base-item.component.mjs +62 -62
  113. package/esm2020/app/components/filters-item/checkbox/checkbox.component.mjs +20 -20
  114. package/esm2020/app/components/filters-item/chips/chips.component.mjs +27 -27
  115. package/esm2020/app/components/filters-item/date/date.component.mjs +42 -42
  116. package/esm2020/app/components/filters-item/date-range/date-range.component.mjs +33 -33
  117. package/esm2020/app/components/filters-item/filter-item.component.mjs +79 -79
  118. package/esm2020/app/components/filters-item/range/range.component.mjs +44 -44
  119. package/esm2020/app/components/filters-item/select/backdrop/backdrop.component.mjs +11 -11
  120. package/esm2020/app/components/filters-item/select/groups/groups.component.mjs +29 -29
  121. package/esm2020/app/components/filters-item/select/multiple/multiple.component.mjs +56 -56
  122. package/esm2020/app/components/filters-item/select/select.component.mjs +50 -50
  123. package/esm2020/app/components/filters-item/select/simple/simple.component.mjs +42 -42
  124. package/esm2020/app/components/filters-item/text/text.component.mjs +48 -48
  125. package/esm2020/app/components/filters-item/week/week.component.mjs +24 -24
  126. package/esm2020/app/components/saved-filter-edit/saved-filter-edit.component.mjs +54 -54
  127. package/esm2020/app/components/saved-filters-menu/saved-filters-menu.component.mjs +50 -50
  128. package/esm2020/app/consts/query-param-delimiter.mjs +1 -1
  129. package/esm2020/app/directives/focus-to-item/focus-to-item.directive.mjs +129 -129
  130. package/esm2020/app/directives/status-bar/status-bar.directive.mjs +15 -15
  131. package/esm2020/app/enums/action-mode.enum.mjs +7 -7
  132. package/esm2020/app/enums/action-type.enum.mjs +10 -10
  133. package/esm2020/app/enums/button-style.mjs +10 -10
  134. package/esm2020/app/enums/index.mjs +6 -6
  135. package/esm2020/app/enums/item-date-mode.enum.mjs +6 -6
  136. package/esm2020/app/enums/item-type.enum.mjs +16 -16
  137. package/esm2020/app/enums/picker-view-type.enum.mjs +8 -8
  138. package/esm2020/app/fs-filter.module.mjs +247 -247
  139. package/esm2020/app/helpers/build-query-params.mjs +32 -32
  140. package/esm2020/app/helpers/compare.mjs +37 -37
  141. package/esm2020/app/helpers/create-filter-item.mjs +54 -54
  142. package/esm2020/app/helpers/find-value.mjs +12 -12
  143. package/esm2020/app/helpers/get-range-name.mjs +8 -8
  144. package/esm2020/app/helpers/parse-date.mjs +7 -7
  145. package/esm2020/app/helpers/parse-item-value-from-stored.mjs +80 -80
  146. package/esm2020/app/helpers/query-param-transformers.mjs +8 -8
  147. package/esm2020/app/helpers/restore-items.mjs +48 -48
  148. package/esm2020/app/injectors/filter-config.mjs +2 -2
  149. package/esm2020/app/injectors/filter-drawer-data.mjs +2 -2
  150. package/esm2020/app/injectors/filter-drawer-overlay.mjs +2 -2
  151. package/esm2020/app/interfaces/action.interface.mjs +1 -1
  152. package/esm2020/app/interfaces/config.interface.mjs +1 -1
  153. package/esm2020/app/interfaces/external-params.interface.mjs +1 -1
  154. package/esm2020/app/interfaces/filter.interface.mjs +1 -1
  155. package/esm2020/app/interfaces/items/autocomplete-chips.interface.mjs +1 -1
  156. package/esm2020/app/interfaces/items/autocomplete.interface.mjs +1 -1
  157. package/esm2020/app/interfaces/items/base.interface.mjs +1 -1
  158. package/esm2020/app/interfaces/items/checkbox.interface.mjs +1 -1
  159. package/esm2020/app/interfaces/items/chips.interface.mjs +1 -1
  160. package/esm2020/app/interfaces/items/date-range.interface.mjs +1 -1
  161. package/esm2020/app/interfaces/items/date.interface.mjs +1 -1
  162. package/esm2020/app/interfaces/items/range.interface.mjs +1 -1
  163. package/esm2020/app/interfaces/items/select.interface.mjs +1 -1
  164. package/esm2020/app/interfaces/items/text.interface.mjs +1 -1
  165. package/esm2020/app/interfaces/items/week.interface.mjs +1 -1
  166. package/esm2020/app/interfaces/saved-filters.interface.mjs +1 -1
  167. package/esm2020/app/interfaces/update-filter-item.interface.mjs +1 -1
  168. package/esm2020/app/models/action-menu-item.model.mjs +66 -66
  169. package/esm2020/app/models/action.model.mjs +114 -114
  170. package/esm2020/app/models/filter-config.mjs +65 -65
  171. package/esm2020/app/models/items/autocomplete/base-autocomplete-item.mjs +13 -13
  172. package/esm2020/app/models/items/autocomplete-chips-item.mjs +60 -60
  173. package/esm2020/app/models/items/autocomplete-item.mjs +32 -32
  174. package/esm2020/app/models/items/base-item.mjs +233 -233
  175. package/esm2020/app/models/items/checkbox-item.mjs +49 -49
  176. package/esm2020/app/models/items/chips-item.mjs +88 -88
  177. package/esm2020/app/models/items/date/base-date-item.mjs +47 -47
  178. package/esm2020/app/models/items/date-item.mjs +18 -18
  179. package/esm2020/app/models/items/date-range/base-date-range-item.mjs +134 -134
  180. package/esm2020/app/models/items/date-range-item.mjs +6 -6
  181. package/esm2020/app/models/items/date-time-item.mjs +9 -9
  182. package/esm2020/app/models/items/date-time-range-item.mjs +6 -6
  183. package/esm2020/app/models/items/range-item.mjs +82 -82
  184. package/esm2020/app/models/items/select/base-select-item.mjs +36 -36
  185. package/esm2020/app/models/items/select/multiple-select-item.mjs +87 -87
  186. package/esm2020/app/models/items/select/simple-select-item.mjs +65 -65
  187. package/esm2020/app/models/items/select-item.mjs +10 -10
  188. package/esm2020/app/models/items/text-item.mjs +33 -33
  189. package/esm2020/app/models/items/week-item.mjs +93 -93
  190. package/esm2020/app/pipes/remove-isolate-value.pipe.mjs +20 -20
  191. package/esm2020/app/providers/filter-meta.mjs +9 -9
  192. package/esm2020/app/services/external-params/persistance-params-controller.service.mjs +57 -57
  193. package/esm2020/app/services/external-params/query-params-controller.service.mjs +61 -61
  194. package/esm2020/app/services/external-params/saved-filters-controller.service.mjs +163 -163
  195. package/esm2020/app/services/external-params-controller.service.mjs +161 -161
  196. package/esm2020/app/services/filter-overlay.service.mjs +121 -121
  197. package/esm2020/app/services/focus-controller.service.mjs +29 -29
  198. package/esm2020/app/services/items-store.service.mjs +336 -336
  199. package/esm2020/firestitch-filter.mjs +4 -4
  200. package/esm2020/public_api.mjs +36 -36
  201. package/fesm2015/firestitch-filter.mjs +4248 -4245
  202. package/fesm2015/firestitch-filter.mjs.map +1 -1
  203. package/fesm2020/firestitch-filter.mjs +4229 -4226
  204. package/fesm2020/firestitch-filter.mjs.map +1 -1
  205. package/firestitch-filter.d.ts +5 -5
  206. package/package.json +1 -1
  207. package/public_api.d.ts +40 -40
@@ -1,162 +1,162 @@
1
- import { Injectable } from '@angular/core';
2
- import { BehaviorSubject, of, Subject } from 'rxjs';
3
- import { filter, switchMap, take, takeUntil } from 'rxjs/operators';
4
- import { buildQueryParams } from '../helpers/build-query-params';
5
- import { PersistanceParamsController } from './external-params/persistance-params-controller.service';
6
- import { QueryParamsController } from './external-params/query-params-controller.service';
7
- import { SavedFiltersController } from './external-params/saved-filters-controller.service';
8
- import { FsFilterItemsStore } from './items-store.service';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "./items-store.service";
11
- import * as i2 from "./external-params/persistance-params-controller.service";
12
- import * as i3 from "./external-params/query-params-controller.service";
13
- import * as i4 from "./external-params/saved-filters-controller.service";
14
- export class ExternalParamsController {
15
- constructor(_itemsStore, _persistanceStore, _queryParams, _savedFilters) {
16
- this._itemsStore = _itemsStore;
17
- this._persistanceStore = _persistanceStore;
18
- this._queryParams = _queryParams;
19
- this._savedFilters = _savedFilters;
20
- this._pending$ = new BehaviorSubject(false);
21
- this._shouldResetSavedFilters = true;
22
- this._destroy$ = new Subject();
23
- }
24
- get params() {
25
- const result = {};
26
- if (this._persistanceStore.enabled) {
27
- Object.assign(result, this._persistanceStore.value?.data);
28
- }
29
- if (this._savedFilters.enabled && this._savedFilters.activeFilter) {
30
- Object.assign(result, this._savedFilters.activeFilterData);
31
- }
32
- if (this._queryParams.enabled) {
33
- Object.assign(result, this._queryParams.fetchedParams);
34
- }
35
- return result;
36
- }
37
- get pending() {
38
- return this._pending$.getValue();
39
- }
40
- get pending$() {
41
- return this._pending$.asObservable();
42
- }
43
- get savedFiltersController() {
44
- return this._savedFilters;
45
- }
46
- get savedFiltersEnabled() {
47
- return this._savedFilters.enabled;
48
- }
49
- ngOnDestroy() {
50
- this._destroy$.next();
51
- this._destroy$.complete();
52
- }
53
- setConfig(config) {
54
- this._config = config;
55
- this._initPersistance();
56
- this._initQueryParams();
57
- this._initSavedFilters();
58
- this.initItems();
59
- }
60
- setActiveSavedFilter(savedFilter) {
61
- this.savedFiltersController.setActiveFilter(savedFilter);
62
- if (savedFilter) {
63
- this.reloadFiltersWithValues(savedFilter.filters, false);
64
- }
65
- }
66
- reloadFiltersWithValues(params, shouldResetSavedFilters = true) {
67
- this._shouldResetSavedFilters = shouldResetSavedFilters;
68
- this._itemsStore.updateItemsWithValues(params);
69
- this._saveQueryParams();
70
- this._savePersistedParams();
71
- }
72
- initItems() {
73
- this._pending$.next(true);
74
- if (this._savedFilters.enabled) {
75
- this._savedFilters
76
- .load()
77
- .pipe(takeUntil(this._destroy$))
78
- .subscribe(() => {
79
- this._savedFilters.updateActiveFilter();
80
- this._initItemsValues();
81
- this._listenAndResetSavedFilters();
82
- this._pending$.next(false);
83
- });
84
- }
85
- else {
86
- this._initItemsValues();
87
- this._pending$.next(false);
88
- }
89
- this._listenItemsChange();
90
- }
91
- _initItemsValues() {
92
- this._itemsStore.init(this.params);
93
- this._saveQueryParams();
94
- this._savePersistedParams();
95
- }
96
- fetchQueryParams() {
97
- this._initQueryParams();
98
- this._itemsStore.updateItemsWithValues(this.params);
99
- }
100
- _initPersistance() {
101
- this._persistanceStore.init(this._config.persist, this._config.namespace, this._config.case);
102
- }
103
- _initQueryParams() {
104
- this._queryParams.init(this._config.queryParam, this._config.case);
105
- }
106
- _initSavedFilters() {
107
- this._savedFilters.init(this._config.savedFilters, this._config.case);
108
- }
109
- _listenItemsChange() {
110
- this._itemsStore.ready$
111
- .pipe(filter((v) => v), take(1), takeUntil(this._destroy$))
112
- .subscribe(() => {
113
- this._saveQueryParams();
114
- this._savePersistedParams();
115
- });
116
- this._itemsStore
117
- .itemsChange$
118
- .pipe(takeUntil(this._destroy$))
119
- .subscribe(() => {
120
- this._saveQueryParams();
121
- this._savePersistedParams();
122
- });
123
- }
124
- _listenAndResetSavedFilters() {
125
- this._itemsStore
126
- .itemsChange$
127
- .pipe(filter(() => !!this.savedFiltersController.activeFilter), switchMap(() => {
128
- const shouldReset = this._shouldResetSavedFilters;
129
- this._shouldResetSavedFilters = true;
130
- return of(shouldReset);
131
- }), filter((shouldReset) => shouldReset), takeUntil(this._destroy$))
132
- .subscribe(() => {
133
- this.savedFiltersController.resetActiveFilter();
134
- });
135
- }
136
- _saveQueryParams() {
137
- const targetItems = this._itemsStore.items
138
- .filter((item) => !item.queryParamsDisabled);
139
- const params = buildQueryParams(this._itemsStore.valuesAsQuery({
140
- onlyPresented: false,
141
- items: targetItems,
142
- persisted: true,
143
- }), targetItems);
144
- this._queryParams.writeStateToQueryParams(params);
145
- }
146
- _savePersistedParams() {
147
- const targetItems = this._itemsStore.items
148
- .filter((item) => !item.persistanceDisabled);
149
- const params = buildQueryParams(this._itemsStore.valuesAsQuery({
150
- onlyPresented: false,
151
- items: targetItems,
152
- persisted: true,
153
- }), targetItems);
154
- this._persistanceStore.save(params);
155
- }
156
- }
157
- ExternalParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExternalParamsController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.PersistanceParamsController }, { token: i3.QueryParamsController }, { token: i4.SavedFiltersController }], target: i0.ɵɵFactoryTarget.Injectable });
158
- ExternalParamsController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExternalParamsController });
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExternalParamsController, decorators: [{
160
- type: Injectable
161
- }], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.PersistanceParamsController }, { type: i3.QueryParamsController }, { type: i4.SavedFiltersController }]; } });
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject, of, Subject } from 'rxjs';
3
+ import { filter, switchMap, take, takeUntil } from 'rxjs/operators';
4
+ import { buildQueryParams } from '../helpers/build-query-params';
5
+ import { PersistanceParamsController } from './external-params/persistance-params-controller.service';
6
+ import { QueryParamsController } from './external-params/query-params-controller.service';
7
+ import { SavedFiltersController } from './external-params/saved-filters-controller.service';
8
+ import { FsFilterItemsStore } from './items-store.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "./items-store.service";
11
+ import * as i2 from "./external-params/persistance-params-controller.service";
12
+ import * as i3 from "./external-params/query-params-controller.service";
13
+ import * as i4 from "./external-params/saved-filters-controller.service";
14
+ export class ExternalParamsController {
15
+ constructor(_itemsStore, _persistanceStore, _queryParams, _savedFilters) {
16
+ this._itemsStore = _itemsStore;
17
+ this._persistanceStore = _persistanceStore;
18
+ this._queryParams = _queryParams;
19
+ this._savedFilters = _savedFilters;
20
+ this._pending$ = new BehaviorSubject(false);
21
+ this._shouldResetSavedFilters = true;
22
+ this._destroy$ = new Subject();
23
+ }
24
+ get params() {
25
+ const result = {};
26
+ if (this._persistanceStore.enabled) {
27
+ Object.assign(result, this._persistanceStore.value?.data);
28
+ }
29
+ if (this._savedFilters.enabled && this._savedFilters.activeFilter) {
30
+ Object.assign(result, this._savedFilters.activeFilterData);
31
+ }
32
+ if (this._queryParams.enabled) {
33
+ Object.assign(result, this._queryParams.fetchedParams);
34
+ }
35
+ return result;
36
+ }
37
+ get pending() {
38
+ return this._pending$.getValue();
39
+ }
40
+ get pending$() {
41
+ return this._pending$.asObservable();
42
+ }
43
+ get savedFiltersController() {
44
+ return this._savedFilters;
45
+ }
46
+ get savedFiltersEnabled() {
47
+ return this._savedFilters.enabled;
48
+ }
49
+ ngOnDestroy() {
50
+ this._destroy$.next();
51
+ this._destroy$.complete();
52
+ }
53
+ setConfig(config) {
54
+ this._config = config;
55
+ this._initPersistance();
56
+ this._initQueryParams();
57
+ this._initSavedFilters();
58
+ this.initItems();
59
+ }
60
+ setActiveSavedFilter(savedFilter) {
61
+ this.savedFiltersController.setActiveFilter(savedFilter);
62
+ if (savedFilter) {
63
+ this.reloadFiltersWithValues(savedFilter.filters, false);
64
+ }
65
+ }
66
+ reloadFiltersWithValues(params, shouldResetSavedFilters = true) {
67
+ this._shouldResetSavedFilters = shouldResetSavedFilters;
68
+ this._itemsStore.updateItemsWithValues(params);
69
+ this._saveQueryParams();
70
+ this._savePersistedParams();
71
+ }
72
+ initItems() {
73
+ this._pending$.next(true);
74
+ if (this._savedFilters.enabled) {
75
+ this._savedFilters
76
+ .load()
77
+ .pipe(takeUntil(this._destroy$))
78
+ .subscribe(() => {
79
+ this._savedFilters.updateActiveFilter();
80
+ this._initItemsValues();
81
+ this._listenAndResetSavedFilters();
82
+ this._pending$.next(false);
83
+ });
84
+ }
85
+ else {
86
+ this._initItemsValues();
87
+ this._pending$.next(false);
88
+ }
89
+ this._listenItemsChange();
90
+ }
91
+ _initItemsValues() {
92
+ this._itemsStore.init(this.params);
93
+ this._saveQueryParams();
94
+ this._savePersistedParams();
95
+ }
96
+ fetchQueryParams() {
97
+ this._initQueryParams();
98
+ this._itemsStore.updateItemsWithValues(this.params);
99
+ }
100
+ _initPersistance() {
101
+ this._persistanceStore.init(this._config.persist, this._config.namespace, this._config.case);
102
+ }
103
+ _initQueryParams() {
104
+ this._queryParams.init(this._config.queryParam, this._config.case);
105
+ }
106
+ _initSavedFilters() {
107
+ this._savedFilters.init(this._config.savedFilters, this._config.case);
108
+ }
109
+ _listenItemsChange() {
110
+ this._itemsStore.ready$
111
+ .pipe(filter((v) => v), take(1), takeUntil(this._destroy$))
112
+ .subscribe(() => {
113
+ this._saveQueryParams();
114
+ this._savePersistedParams();
115
+ });
116
+ this._itemsStore
117
+ .itemsChange$
118
+ .pipe(takeUntil(this._destroy$))
119
+ .subscribe(() => {
120
+ this._saveQueryParams();
121
+ this._savePersistedParams();
122
+ });
123
+ }
124
+ _listenAndResetSavedFilters() {
125
+ this._itemsStore
126
+ .itemsChange$
127
+ .pipe(filter(() => !!this.savedFiltersController.activeFilter), switchMap(() => {
128
+ const shouldReset = this._shouldResetSavedFilters;
129
+ this._shouldResetSavedFilters = true;
130
+ return of(shouldReset);
131
+ }), filter((shouldReset) => shouldReset), takeUntil(this._destroy$))
132
+ .subscribe(() => {
133
+ this.savedFiltersController.resetActiveFilter();
134
+ });
135
+ }
136
+ _saveQueryParams() {
137
+ const targetItems = this._itemsStore.items
138
+ .filter((item) => !item.queryParamsDisabled);
139
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery({
140
+ onlyPresented: false,
141
+ items: targetItems,
142
+ persisted: true,
143
+ }), targetItems);
144
+ this._queryParams.writeStateToQueryParams(params);
145
+ }
146
+ _savePersistedParams() {
147
+ const targetItems = this._itemsStore.items
148
+ .filter((item) => !item.persistanceDisabled);
149
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery({
150
+ onlyPresented: false,
151
+ items: targetItems,
152
+ persisted: true,
153
+ }), targetItems);
154
+ this._persistanceStore.save(params);
155
+ }
156
+ }
157
+ ExternalParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExternalParamsController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.PersistanceParamsController }, { token: i3.QueryParamsController }, { token: i4.SavedFiltersController }], target: i0.ɵɵFactoryTarget.Injectable });
158
+ ExternalParamsController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExternalParamsController });
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExternalParamsController, decorators: [{
160
+ type: Injectable
161
+ }], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.PersistanceParamsController }, { type: i3.QueryParamsController }, { type: i4.SavedFiltersController }]; } });
162
162
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUkzRCxNQUFNLE9BQU8sd0JBQXdCO0lBU25DLFlBQ1UsV0FBK0IsRUFDL0IsaUJBQThDLEVBQzlDLFlBQW1DLEVBQ25DLGFBQXFDO1FBSHJDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLGlCQUFZLEdBQVosWUFBWSxDQUF1QjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFUdkMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLDZCQUF3QixHQUFHLElBQUksQ0FBQztRQUVoQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU9wQyxDQUFDO0lB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QztJQUNQLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2FBQ3ZDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUvQyxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7WUFDN0IsYUFBYSxFQUFFLEtBQUs7WUFDcEIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxFQUNGLFdBQVcsQ0FDWixDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzthQUN2QyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0MsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1lBQzdCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLEtBQUssRUFBRSxXQUFXO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsRUFDRixXQUFXLENBQ1osQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7cUhBMU1VLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgYnVpbGRRdWVyeVBhcmFtcyB9IGZyb20gJy4uL2hlbHBlcnMvYnVpbGQtcXVlcnktcGFyYW1zJztcbmltcG9ydCB7IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0ZXJuYWwtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyU2F2ZWRGaWx0ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZzRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci1jb25maWcnO1xuXG5pbXBvcnQgeyBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIgfSBmcm9tICcuL2V4dGVybmFsLXBhcmFtcy9wZXJzaXN0YW5jZS1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3NhdmVkLWZpbHRlcnMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4vaXRlbXMtc3RvcmUuc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV4dGVybmFsUGFyYW1zQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9pbml0O1xuXG4gIHByaXZhdGUgX3BlbmRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX3Nob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfY29uZmlnOiBGc0ZpbHRlckNvbmZpZztcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2l0ZW1zU3RvcmU6IEZzRmlsdGVySXRlbXNTdG9yZSxcbiAgICBwcml2YXRlIF9wZXJzaXN0YW5jZVN0b3JlOiBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9zYXZlZEZpbHRlcnM6IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIsXG4gICkgeyB9XG5cbiAgcHVibGljIGdldCBwYXJhbXMoKTogSUZpbHRlckV4dGVybmFsUGFyYW1zIHtcbiAgICBjb25zdCByZXN1bHQ6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyA9IHt9O1xuXG4gICAgaWYgKHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUuZW5hYmxlZCkge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUudmFsdWU/LmRhdGEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zYXZlZEZpbHRlcnMuZW5hYmxlZCAmJiB0aGlzLl9zYXZlZEZpbHRlcnMuYWN0aXZlRmlsdGVyKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgdGhpcy5fc2F2ZWRGaWx0ZXJzLmFjdGl2ZUZpbHRlckRhdGEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9xdWVyeVBhcmFtcy5lbmFibGVkKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgdGhpcy5fcXVlcnlQYXJhbXMuZmV0Y2hlZFBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVuZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVuZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnNDb250cm9sbGVyKCk6IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVyc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVycy5lbmFibGVkO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhjb25maWcpIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG5cbiAgICB0aGlzLl9pbml0UGVyc2lzdGFuY2UoKTtcbiAgICB0aGlzLl9pbml0UXVlcnlQYXJhbXMoKTtcbiAgICB0aGlzLl9pbml0U2F2ZWRGaWx0ZXJzKCk7XG4gICAgdGhpcy5pbml0SXRlbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVTYXZlZEZpbHRlcihzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKSB7XG4gICAgdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNldEFjdGl2ZUZpbHRlcihzYXZlZEZpbHRlcik7XG5cbiAgICBpZiAoc2F2ZWRGaWx0ZXIpIHtcbiAgICAgIHRoaXMucmVsb2FkRmlsdGVyc1dpdGhWYWx1ZXMoc2F2ZWRGaWx0ZXIuZmlsdGVycywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWxvYWRGaWx0ZXJzV2l0aFZhbHVlcyhwYXJhbXM6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcywgc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnMgPSB0cnVlKSB7XG4gICAgdGhpcy5fc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnMgPSBzaG91bGRSZXNldFNhdmVkRmlsdGVycztcbiAgICB0aGlzLl9pdGVtc1N0b3JlLnVwZGF0ZUl0ZW1zV2l0aFZhbHVlcyhwYXJhbXMpO1xuXG4gICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICB9XG5cbiAgcHVibGljIGluaXRJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLl9wZW5kaW5nJC5uZXh0KHRydWUpO1xuICAgIGlmICh0aGlzLl9zYXZlZEZpbHRlcnMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5fc2F2ZWRGaWx0ZXJzXG4gICAgICAgIC5sb2FkKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9zYXZlZEZpbHRlcnMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgICAgICAgdGhpcy5faW5pdEl0ZW1zVmFsdWVzKCk7XG4gICAgICAgICAgdGhpcy5fbGlzdGVuQW5kUmVzZXRTYXZlZEZpbHRlcnMoKTtcbiAgICAgICAgICB0aGlzLl9wZW5kaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2luaXRJdGVtc1ZhbHVlcygpO1xuICAgICAgdGhpcy5fcGVuZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fbGlzdGVuSXRlbXNDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBfaW5pdEl0ZW1zVmFsdWVzKCkge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmUuaW5pdCh0aGlzLnBhcmFtcyk7XG4gICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICB9XG5cbiAgcHVibGljIGZldGNoUXVlcnlQYXJhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5faW5pdFF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5faXRlbXNTdG9yZS51cGRhdGVJdGVtc1dpdGhWYWx1ZXModGhpcy5wYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFBlcnNpc3RhbmNlKCkge1xuICAgIHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUuaW5pdChcbiAgICAgIHRoaXMuX2NvbmZpZy5wZXJzaXN0LFxuICAgICAgdGhpcy5fY29uZmlnLm5hbWVzcGFjZSxcbiAgICAgIHRoaXMuX2NvbmZpZy5jYXNlLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0UXVlcnlQYXJhbXMoKSB7XG4gICAgdGhpcy5fcXVlcnlQYXJhbXMuaW5pdCh0aGlzLl9jb25maWcucXVlcnlQYXJhbSwgdGhpcy5fY29uZmlnLmNhc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFNhdmVkRmlsdGVycygpIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlcnMuaW5pdCh0aGlzLl9jb25maWcuc2F2ZWRGaWx0ZXJzLCB0aGlzLl9jb25maWcuY2FzZSk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5JdGVtc0NoYW5nZSgpIHtcbiAgICB0aGlzLl9pdGVtc1N0b3JlLnJlYWR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigodikgPT4gdiksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgICAgIHRoaXMuX3NhdmVQZXJzaXN0ZWRQYXJhbXMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5faXRlbXNTdG9yZVxuICAgICAgLml0ZW1zQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgICAgIHRoaXMuX3NhdmVQZXJzaXN0ZWRQYXJhbXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuQW5kUmVzZXRTYXZlZEZpbHRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5faXRlbXNTdG9yZVxuICAgICAgLml0ZW1zQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNob3VsZFJlc2V0ID0gdGhpcy5fc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnM7XG5cbiAgICAgICAgICB0aGlzLl9zaG91bGRSZXNldFNhdmVkRmlsdGVycyA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gb2Yoc2hvdWxkUmVzZXQpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKChzaG91bGRSZXNldCkgPT4gc2hvdWxkUmVzZXQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5yZXNldEFjdGl2ZUZpbHRlcigpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zYXZlUXVlcnlQYXJhbXMoKSB7XG4gICAgY29uc3QgdGFyZ2V0SXRlbXMgPSB0aGlzLl9pdGVtc1N0b3JlLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5xdWVyeVBhcmFtc0Rpc2FibGVkKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IGJ1aWxkUXVlcnlQYXJhbXMoXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLnZhbHVlc0FzUXVlcnkoe1xuICAgICAgICBvbmx5UHJlc2VudGVkOiBmYWxzZSxcbiAgICAgICAgaXRlbXM6IHRhcmdldEl0ZW1zLFxuICAgICAgICBwZXJzaXN0ZWQ6IHRydWUsXG4gICAgICB9KSxcbiAgICAgIHRhcmdldEl0ZW1zLFxuICAgICk7XG5cbiAgICB0aGlzLl9xdWVyeVBhcmFtcy53cml0ZVN0YXRlVG9RdWVyeVBhcmFtcyhwYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2F2ZVBlcnNpc3RlZFBhcmFtcygpIHtcbiAgICBjb25zdCB0YXJnZXRJdGVtcyA9IHRoaXMuX2l0ZW1zU3RvcmUuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnBlcnNpc3RhbmNlRGlzYWJsZWQpO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYnVpbGRRdWVyeVBhcmFtcyhcbiAgICAgIHRoaXMuX2l0ZW1zU3RvcmUudmFsdWVzQXNRdWVyeSh7XG4gICAgICAgIG9ubHlQcmVzZW50ZWQ6IGZhbHNlLFxuICAgICAgICBpdGVtczogdGFyZ2V0SXRlbXMsXG4gICAgICAgIHBlcnNpc3RlZDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgdGFyZ2V0SXRlbXMsXG4gICAgKTtcblxuICAgIHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUuc2F2ZShwYXJhbXMpO1xuICB9XG59XG4iXX0=
@@ -1,122 +1,122 @@
1
- import { Inject, Injectable, Injector } from '@angular/core';
2
- import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
3
- import { ComponentPortal, PortalInjector } from '@angular/cdk/portal';
4
- import { Subject } from 'rxjs';
5
- import { filter, takeUntil } from 'rxjs/operators';
6
- import { HtmlClassRenderer } from '@firestitch/html';
7
- import { FilterDrawerComponent } from '../components/filter-drawer/filter-drawer.component';
8
- import { FILTER_DRAWER_DATA } from '../injectors/filter-drawer-data';
9
- import { FILTER_DRAWER_OVERLAY } from '../injectors/filter-drawer-overlay';
10
- import { FS_FILTER_META } from '../providers/filter-meta';
11
- import { FocusControllerService } from './focus-controller.service';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/cdk/overlay";
14
- import * as i2 from "./focus-controller.service";
15
- import * as i3 from "@firestitch/html";
16
- export class FsFilterOverlayService {
17
- constructor(_filterMeta, _injector, _overlay, _focusController, _htmlClassRenderer) {
18
- this._filterMeta = _filterMeta;
19
- this._injector = _injector;
20
- this._overlay = _overlay;
21
- this._focusController = _focusController;
22
- this._htmlClassRenderer = _htmlClassRenderer;
23
- this.detach$ = new Subject();
24
- this.attach$ = new Subject();
25
- this._destroy$ = new Subject();
26
- this._openWhenChipClicked();
27
- }
28
- get isOpened() {
29
- return !!this._overlayRef;
30
- }
31
- setClearFn(fn) {
32
- this._clearFn = fn;
33
- }
34
- setDoneFn(fn) {
35
- this._doneFn = fn;
36
- }
37
- close() {
38
- if (this._overlayRef) {
39
- this._overlayRef.detach();
40
- this._overlayRef = null;
41
- this._removeFilterClass();
42
- }
43
- }
44
- open() {
45
- this._overlayRef = this._createOverlay();
46
- this._overlayRef.backdropClick()
47
- .pipe(takeUntil(this._destroy$))
48
- .subscribe(() => {
49
- this._overlayRef.detach();
50
- });
51
- this._overlayRef.detachments()
52
- .pipe(takeUntil(this._destroy$))
53
- .subscribe(() => {
54
- this.detach$.next();
55
- });
56
- this._overlayRef.attachments()
57
- .pipe(takeUntil(this._destroy$))
58
- .subscribe(() => {
59
- this.attach$.next();
60
- });
61
- this._addFilterClass();
62
- return this._openPortalPreview();
63
- }
64
- ngOnDestroy() {
65
- this._destroy$.next();
66
- this._destroy$.complete();
67
- }
68
- _createOverlay() {
69
- const overlayConfig = new OverlayConfig({
70
- hasBackdrop: true,
71
- backdropClass: 'fs-filter-backdrop',
72
- });
73
- return this._overlay.create(overlayConfig);
74
- }
75
- _openPortalPreview() {
76
- const data = {
77
- done: this._doneFn,
78
- clear: this._clearFn,
79
- };
80
- const injector = this._createInjector(this._injector, data, this._overlayRef);
81
- const containerPortal = new ComponentPortal(FilterDrawerComponent, undefined, injector);
82
- const containerRef = this._overlayRef.attach(containerPortal);
83
- return containerRef.instance;
84
- }
85
- _createInjector(parentInjector, data, overlayRef) {
86
- const injectionTokens = new WeakMap([
87
- [FILTER_DRAWER_DATA, data],
88
- [FILTER_DRAWER_OVERLAY, overlayRef],
89
- ]);
90
- return new PortalInjector(parentInjector, injectionTokens);
91
- }
92
- _removeFilterClass() {
93
- this._filterMeta.openedFilters--;
94
- if (this._filterMeta.openedFilters === 0) {
95
- this._htmlClassRenderer.removeClass('fs-filter-open');
96
- }
97
- }
98
- _addFilterClass() {
99
- this._filterMeta.openedFilters++;
100
- if (this._filterMeta.openedFilters === 1) {
101
- this._htmlClassRenderer.addClass('fs-filter-open');
102
- }
103
- }
104
- _openWhenChipClicked() {
105
- this._focusController.focusOn$
106
- .pipe(filter((v) => !!v), takeUntil(this._destroy$))
107
- .subscribe(() => {
108
- if (!this.isOpened) {
109
- this.open();
110
- }
111
- });
112
- }
113
- }
114
- FsFilterOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterOverlayService, deps: [{ token: FS_FILTER_META }, { token: i0.Injector }, { token: i1.Overlay }, { token: i2.FocusControllerService }, { token: i3.HtmlClassRenderer }], target: i0.ɵɵFactoryTarget.Injectable });
115
- FsFilterOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterOverlayService });
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterOverlayService, decorators: [{
117
- type: Injectable
118
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
119
- type: Inject,
120
- args: [FS_FILTER_META]
121
- }] }, { type: i0.Injector }, { type: i1.Overlay }, { type: i2.FocusControllerService }, { type: i3.HtmlClassRenderer }]; } });
1
+ import { Inject, Injectable, Injector } from '@angular/core';
2
+ import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
3
+ import { ComponentPortal, PortalInjector } from '@angular/cdk/portal';
4
+ import { Subject } from 'rxjs';
5
+ import { filter, takeUntil } from 'rxjs/operators';
6
+ import { HtmlClassRenderer } from '@firestitch/html';
7
+ import { FilterDrawerComponent } from '../components/filter-drawer/filter-drawer.component';
8
+ import { FILTER_DRAWER_DATA } from '../injectors/filter-drawer-data';
9
+ import { FILTER_DRAWER_OVERLAY } from '../injectors/filter-drawer-overlay';
10
+ import { FS_FILTER_META } from '../providers/filter-meta';
11
+ import { FocusControllerService } from './focus-controller.service';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/cdk/overlay";
14
+ import * as i2 from "./focus-controller.service";
15
+ import * as i3 from "@firestitch/html";
16
+ export class FsFilterOverlayService {
17
+ constructor(_filterMeta, _injector, _overlay, _focusController, _htmlClassRenderer) {
18
+ this._filterMeta = _filterMeta;
19
+ this._injector = _injector;
20
+ this._overlay = _overlay;
21
+ this._focusController = _focusController;
22
+ this._htmlClassRenderer = _htmlClassRenderer;
23
+ this.detach$ = new Subject();
24
+ this.attach$ = new Subject();
25
+ this._destroy$ = new Subject();
26
+ this._openWhenChipClicked();
27
+ }
28
+ get isOpened() {
29
+ return !!this._overlayRef;
30
+ }
31
+ setClearFn(fn) {
32
+ this._clearFn = fn;
33
+ }
34
+ setDoneFn(fn) {
35
+ this._doneFn = fn;
36
+ }
37
+ close() {
38
+ if (this._overlayRef) {
39
+ this._overlayRef.detach();
40
+ this._overlayRef = null;
41
+ this._removeFilterClass();
42
+ }
43
+ }
44
+ open() {
45
+ this._overlayRef = this._createOverlay();
46
+ this._overlayRef.backdropClick()
47
+ .pipe(takeUntil(this._destroy$))
48
+ .subscribe(() => {
49
+ this._overlayRef.detach();
50
+ });
51
+ this._overlayRef.detachments()
52
+ .pipe(takeUntil(this._destroy$))
53
+ .subscribe(() => {
54
+ this.detach$.next();
55
+ });
56
+ this._overlayRef.attachments()
57
+ .pipe(takeUntil(this._destroy$))
58
+ .subscribe(() => {
59
+ this.attach$.next();
60
+ });
61
+ this._addFilterClass();
62
+ return this._openPortalPreview();
63
+ }
64
+ ngOnDestroy() {
65
+ this._destroy$.next();
66
+ this._destroy$.complete();
67
+ }
68
+ _createOverlay() {
69
+ const overlayConfig = new OverlayConfig({
70
+ hasBackdrop: true,
71
+ backdropClass: 'fs-filter-backdrop',
72
+ });
73
+ return this._overlay.create(overlayConfig);
74
+ }
75
+ _openPortalPreview() {
76
+ const data = {
77
+ done: this._doneFn,
78
+ clear: this._clearFn,
79
+ };
80
+ const injector = this._createInjector(this._injector, data, this._overlayRef);
81
+ const containerPortal = new ComponentPortal(FilterDrawerComponent, undefined, injector);
82
+ const containerRef = this._overlayRef.attach(containerPortal);
83
+ return containerRef.instance;
84
+ }
85
+ _createInjector(parentInjector, data, overlayRef) {
86
+ const injectionTokens = new WeakMap([
87
+ [FILTER_DRAWER_DATA, data],
88
+ [FILTER_DRAWER_OVERLAY, overlayRef],
89
+ ]);
90
+ return new PortalInjector(parentInjector, injectionTokens);
91
+ }
92
+ _removeFilterClass() {
93
+ this._filterMeta.openedFilters--;
94
+ if (this._filterMeta.openedFilters === 0) {
95
+ this._htmlClassRenderer.removeClass('fs-filter-open');
96
+ }
97
+ }
98
+ _addFilterClass() {
99
+ this._filterMeta.openedFilters++;
100
+ if (this._filterMeta.openedFilters === 1) {
101
+ this._htmlClassRenderer.addClass('fs-filter-open');
102
+ }
103
+ }
104
+ _openWhenChipClicked() {
105
+ this._focusController.focusOn$
106
+ .pipe(filter((v) => !!v), takeUntil(this._destroy$))
107
+ .subscribe(() => {
108
+ if (!this.isOpened) {
109
+ this.open();
110
+ }
111
+ });
112
+ }
113
+ }
114
+ FsFilterOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterOverlayService, deps: [{ token: FS_FILTER_META }, { token: i0.Injector }, { token: i1.Overlay }, { token: i2.FocusControllerService }, { token: i3.HtmlClassRenderer }], target: i0.ɵɵFactoryTarget.Injectable });
115
+ FsFilterOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterOverlayService });
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterOverlayService, decorators: [{
117
+ type: Injectable
118
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
119
+ type: Inject,
120
+ args: [FS_FILTER_META]
121
+ }] }, { type: i0.Injector }, { type: i1.Overlay }, { type: i2.FocusControllerService }, { type: i3.HtmlClassRenderer }]; } });
122
122
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLW92ZXJsYXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZmlsdGVyLW92ZXJsYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUlwRSxNQUFNLE9BQU8sc0JBQXNCO0lBV2pDLFlBQ2tDLFdBQXlCLEVBQ2pELFNBQW1CLEVBQ25CLFFBQWlCLEVBQ2pCLGdCQUF3QyxFQUN4QyxrQkFBcUM7UUFKYixnQkFBVyxHQUFYLFdBQVcsQ0FBYztRQUNqRCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN4Qyx1QkFB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QUNQLENBQUM7O21IQXhJVSxzQkFBc0Isa0JBWXZCLGNBQWM7dUhBWmIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQWFOLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBQb3J0YWxJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSHRtbENsYXNzUmVuZGVyZXIgfSBmcm9tICdAZmlyZXN0aXRjaC9odG1sJztcblxuaW1wb3J0IHsgRmlsdGVyRHJhd2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9maWx0ZXItZHJhd2VyL2ZpbHRlci1kcmF3ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZJTFRFUl9EUkFXRVJfREFUQSB9IGZyb20gJy4uL2luamVjdG9ycy9maWx0ZXItZHJhd2VyLWRhdGEnO1xuaW1wb3J0IHsgRklMVEVSX0RSQVdFUl9PVkVSTEFZIH0gZnJvbSAnLi4vaW5qZWN0b3JzL2ZpbHRlci1kcmF3ZXItb3ZlcmxheSc7XG5pbXBvcnQgeyBGU19GSUxURVJfTUVUQSwgRnNGaWx0ZXJNZXRhIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2ZpbHRlci1tZXRhJztcblxuaW1wb3J0IHsgRm9jdXNDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vZm9jdXMtY29udHJvbGxlci5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJPdmVybGF5U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIGRldGFjaCQgPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgYXR0YWNoJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfY2xlYXJGbjogRnVuY3Rpb247XG4gIHByaXZhdGUgX2RvbmVGbjogRnVuY3Rpb247XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRlNfRklMVEVSX01FVEEpIHByaXZhdGUgX2ZpbHRlck1ldGE6IEZzRmlsdGVyTWV0YSxcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIF9mb2N1c0NvbnRyb2xsZXI6IEZvY3VzQ29udHJvbGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfaHRtbENsYXNzUmVuZGVyZXI6IEh0bWxDbGFzc1JlbmRlcmVyLFxuICApIHtcbiAgICB0aGlzLl9vcGVuV2hlbkNoaXBDbGlja2VkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3BlbmVkKCkge1xuICAgIHJldHVybiAhIXRoaXMuX292ZXJsYXlSZWY7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2xlYXJGbihmbjogRnVuY3Rpb24pIHtcbiAgICB0aGlzLl9jbGVhckZuID0gZm47XG4gIH1cblxuICBwdWJsaWMgc2V0RG9uZUZuKGZuOiBGdW5jdGlvbikge1xuICAgIHRoaXMuX2RvbmVGbiA9IGZuO1xuICB9XG5cbiAgcHVibGljIGNsb3NlKCkge1xuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XG5cbiAgICAgIHRoaXMuX3JlbW92ZUZpbHRlckNsYXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW4oKSB7XG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX2NyZWF0ZU92ZXJsYXkoKTtcblxuICAgIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaG1lbnRzKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZGV0YWNoJC5uZXh0KCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX292ZXJsYXlSZWYuYXR0YWNobWVudHMoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5hdHRhY2gkLm5leHQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fYWRkRmlsdGVyQ2xhc3MoKTtcblxuICAgIHJldHVybiB0aGlzLl9vcGVuUG9ydGFsUHJldmlldygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlT3ZlcmxheSgpIHtcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnZnMtZmlsdGVyLWJhY2tkcm9wJyxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLl9vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgX29wZW5Qb3J0YWxQcmV2aWV3KCkge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBkb25lOiB0aGlzLl9kb25lRm4sXG4gICAgICBjbGVhcjogdGhpcy5fY2xlYXJGbixcbiAgICB9O1xuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5fY3JlYXRlSW5qZWN0b3IodGhpcy5faW5qZWN0b3IsIGRhdGEsIHRoaXMuX292ZXJsYXlSZWYpO1xuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRmlsdGVyRHJhd2VyQ29tcG9uZW50LCB1bmRlZmluZWQsIGluamVjdG9yKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaDxGaWx0ZXJEcmF3ZXJDb21wb25lbnQ+KGNvbnRhaW5lclBvcnRhbCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlSW5qZWN0b3IocGFyZW50SW5qZWN0b3IsIGRhdGEsIG92ZXJsYXlSZWYpIHtcbiAgICBjb25zdCBpbmplY3Rpb25Ub2tlbnMgPSBuZXcgV2Vha01hcDxhbnksIGFueT4oW1xuICAgICAgW0ZJTFRFUl9EUkFXRVJfREFUQSwgZGF0YV0sXG4gICAgICBbRklMVEVSX0RSQVdFUl9PVkVSTEFZLCBvdmVybGF5UmVmXSxcbiAgICBdKTtcblxuICAgIHJldHVybiBuZXcgUG9ydGFsSW5qZWN0b3IocGFyZW50SW5qZWN0b3IsIGluamVjdGlvblRva2Vucyk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVGaWx0ZXJDbGFzcygpIHtcbiAgICB0aGlzLl9maWx0ZXJNZXRhLm9wZW5lZEZpbHRlcnMtLTtcblxuICAgIGlmICh0aGlzLl9maWx0ZXJNZXRhLm9wZW5lZEZpbHRlcnMgPT09IDApIHtcbiAgICAgIHRoaXMuX2h0bWxDbGFzc1JlbmRlcmVyLnJlbW92ZUNsYXNzKCdmcy1maWx0ZXItb3BlbicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FkZEZpbHRlckNsYXNzKCkge1xuICAgIHRoaXMuX2ZpbHRlck1ldGEub3BlbmVkRmlsdGVycysrO1xuXG4gICAgaWYgKHRoaXMuX2ZpbHRlck1ldGEub3BlbmVkRmlsdGVycyA9PT0gMSkge1xuICAgICAgdGhpcy5faHRtbENsYXNzUmVuZGVyZXIuYWRkQ2xhc3MoJ2ZzLWZpbHRlci1vcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb3BlbldoZW5DaGlwQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c0NvbnRyb2xsZXIuZm9jdXNPbiRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHYpID0+ICEhdiksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iXX0=