@firestitch/filter 14.0.1 → 14.0.2

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 (219) 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 +13 -13
  5. package/app/components/filter/filter.component.d.ts +204 -204
  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 +9 -9
  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/index.d.ts +3 -3
  28. package/app/components/saved-filter/saved-filter-edit/index.d.ts +1 -1
  29. package/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.d.ts +18 -18
  30. package/app/components/saved-filter/saved-filter-manage/index.d.ts +1 -1
  31. package/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.d.ts +16 -16
  32. package/app/components/saved-filter/saved-filters-menu/index.d.ts +1 -1
  33. package/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.d.ts +23 -23
  34. package/app/consts/query-param-delimiter.d.ts +1 -1
  35. package/app/directives/focus-to-item/focus-to-item.directive.d.ts +27 -27
  36. package/app/directives/status-bar/status-bar.directive.d.ts +8 -8
  37. package/app/enums/action-mode.enum.d.ts +6 -6
  38. package/app/enums/action-type.enum.d.ts +9 -9
  39. package/app/enums/button-style.d.ts +9 -9
  40. package/app/enums/index.d.ts +6 -6
  41. package/app/enums/item-date-mode.enum.d.ts +5 -5
  42. package/app/enums/item-type.enum.d.ts +15 -15
  43. package/app/enums/picker-view-type.enum.d.ts +7 -7
  44. package/app/fs-filter.module.d.ts +70 -70
  45. package/app/helpers/build-query-params.d.ts +3 -3
  46. package/app/helpers/compare.d.ts +2 -2
  47. package/app/helpers/create-filter-item.d.ts +14 -14
  48. package/app/helpers/find-value.d.ts +1 -1
  49. package/app/helpers/get-range-name.d.ts +1 -1
  50. package/app/helpers/parse-date.d.ts +1 -1
  51. package/app/helpers/parse-item-value-from-stored.d.ts +1 -1
  52. package/app/helpers/query-param-transformers.d.ts +2 -2
  53. package/app/helpers/restore-items.d.ts +12 -12
  54. package/app/injectors/filter-config.d.ts +2 -2
  55. package/app/injectors/filter-drawer-data.d.ts +2 -2
  56. package/app/injectors/filter-drawer-overlay.d.ts +2 -2
  57. package/app/interfaces/action.interface.d.ts +81 -81
  58. package/app/interfaces/config.interface.d.ts +66 -66
  59. package/app/interfaces/external-params.interface.d.ts +3 -3
  60. package/app/interfaces/filter.interface.d.ts +4 -4
  61. package/app/interfaces/index.d.ts +6 -6
  62. package/app/interfaces/items/autocomplete-chips.interface.d.ts +15 -15
  63. package/app/interfaces/items/autocomplete.interface.d.ts +9 -9
  64. package/app/interfaces/items/base.interface.d.ts +29 -29
  65. package/app/interfaces/items/checkbox.interface.d.ts +7 -7
  66. package/app/interfaces/items/chips.interface.d.ts +6 -6
  67. package/app/interfaces/items/date-range.interface.d.ts +8 -8
  68. package/app/interfaces/items/date.interface.d.ts +7 -7
  69. package/app/interfaces/items/range.interface.d.ts +13 -13
  70. package/app/interfaces/items/select.interface.d.ts +20 -20
  71. package/app/interfaces/items/text.interface.d.ts +9 -9
  72. package/app/interfaces/items/week.interface.d.ts +7 -7
  73. package/app/interfaces/saved-filters.interface.d.ts +18 -18
  74. package/app/interfaces/update-filter-item.interface.d.ts +4 -4
  75. package/app/models/action-menu-item.model.d.ts +23 -23
  76. package/app/models/action.model.d.ts +54 -54
  77. package/app/models/filter-config.d.ts +31 -31
  78. package/app/models/items/autocomplete/base-autocomplete-item.d.ts +12 -12
  79. package/app/models/items/autocomplete-chips-item.d.ts +20 -20
  80. package/app/models/items/autocomplete-item.d.ts +11 -11
  81. package/app/models/items/base-item.d.ts +80 -80
  82. package/app/models/items/checkbox-item.d.ts +17 -17
  83. package/app/models/items/chips-item.d.ts +18 -18
  84. package/app/models/items/date/base-date-item.d.ts +14 -14
  85. package/app/models/items/date-item.d.ts +8 -8
  86. package/app/models/items/date-range/base-date-range-item.d.ts +21 -21
  87. package/app/models/items/date-range-item.d.ts +6 -6
  88. package/app/models/items/date-time-item.d.ts +7 -7
  89. package/app/models/items/date-time-range-item.d.ts +6 -6
  90. package/app/models/items/range-item.d.ts +23 -23
  91. package/app/models/items/select/base-select-item.d.ts +13 -13
  92. package/app/models/items/select/multiple-select-item.d.ts +14 -14
  93. package/app/models/items/select/simple-select-item.d.ts +14 -14
  94. package/app/models/items/select-item.d.ts +8 -8
  95. package/app/models/items/text-item.d.ts +15 -15
  96. package/app/models/items/week-item.d.ts +18 -18
  97. package/app/pipes/remove-isolate-value.pipe.d.ts +8 -8
  98. package/app/providers/filter-meta.d.ts +5 -5
  99. package/app/services/external-params/persistance-params-controller.service.d.ts +22 -22
  100. package/app/services/external-params/query-params-controller.service.d.ts +22 -22
  101. package/app/services/external-params/saved-filters-controller.service.d.ts +40 -40
  102. package/app/services/external-params-controller.service.d.ts +42 -42
  103. package/app/services/filter-overlay.service.d.ts +36 -36
  104. package/app/services/focus-controller.service.d.ts +18 -18
  105. package/app/services/items-store.service.d.ts +69 -69
  106. package/esm2020/app/classes/actions-controller.mjs +126 -126
  107. package/esm2020/app/components/action-button/action-button.component.mjs +21 -21
  108. package/esm2020/app/components/action-kebab-actions/action-kebab-actions.component.mjs +16 -16
  109. package/esm2020/app/components/actions/actions.component.mjs +41 -41
  110. package/esm2020/app/components/filter/filter.component.mjs +613 -613
  111. package/esm2020/app/components/filter-chip/filter-chip.component.mjs +85 -85
  112. package/esm2020/app/components/filter-chip-content/filter-chip-content.component.mjs +78 -78
  113. package/esm2020/app/components/filter-chips/filter-chips.component.mjs +18 -18
  114. package/esm2020/app/components/filter-drawer/filter-drawer.component.mjs +70 -70
  115. package/esm2020/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +40 -40
  116. package/esm2020/app/components/filters-item/autocomplete/autocomplete.component.mjs +26 -26
  117. package/esm2020/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +41 -41
  118. package/esm2020/app/components/filters-item/base-item/base-item.component.mjs +62 -62
  119. package/esm2020/app/components/filters-item/checkbox/checkbox.component.mjs +20 -20
  120. package/esm2020/app/components/filters-item/chips/chips.component.mjs +27 -27
  121. package/esm2020/app/components/filters-item/date/date.component.mjs +42 -42
  122. package/esm2020/app/components/filters-item/date-range/date-range.component.mjs +33 -33
  123. package/esm2020/app/components/filters-item/filter-item.component.mjs +79 -79
  124. package/esm2020/app/components/filters-item/range/range.component.mjs +44 -44
  125. package/esm2020/app/components/filters-item/select/backdrop/backdrop.component.mjs +11 -11
  126. package/esm2020/app/components/filters-item/select/groups/groups.component.mjs +29 -29
  127. package/esm2020/app/components/filters-item/select/multiple/multiple.component.mjs +56 -56
  128. package/esm2020/app/components/filters-item/select/select.component.mjs +50 -50
  129. package/esm2020/app/components/filters-item/select/simple/simple.component.mjs +42 -42
  130. package/esm2020/app/components/filters-item/text/text.component.mjs +48 -48
  131. package/esm2020/app/components/filters-item/week/week.component.mjs +24 -24
  132. package/esm2020/app/components/saved-filter/index.mjs +3 -3
  133. package/esm2020/app/components/saved-filter/saved-filter-edit/index.mjs +1 -1
  134. package/esm2020/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.mjs +49 -49
  135. package/esm2020/app/components/saved-filter/saved-filter-manage/index.mjs +1 -1
  136. package/esm2020/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs +39 -39
  137. package/esm2020/app/components/saved-filter/saved-filters-menu/index.mjs +1 -1
  138. package/esm2020/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.mjs +51 -51
  139. package/esm2020/app/consts/query-param-delimiter.mjs +1 -1
  140. package/esm2020/app/directives/focus-to-item/focus-to-item.directive.mjs +129 -129
  141. package/esm2020/app/directives/status-bar/status-bar.directive.mjs +15 -15
  142. package/esm2020/app/enums/action-mode.enum.mjs +7 -7
  143. package/esm2020/app/enums/action-type.enum.mjs +11 -11
  144. package/esm2020/app/enums/button-style.mjs +10 -10
  145. package/esm2020/app/enums/index.mjs +6 -6
  146. package/esm2020/app/enums/item-date-mode.enum.mjs +6 -6
  147. package/esm2020/app/enums/item-type.enum.mjs +16 -16
  148. package/esm2020/app/enums/picker-view-type.enum.mjs +8 -8
  149. package/esm2020/app/fs-filter.module.mjs +260 -260
  150. package/esm2020/app/helpers/build-query-params.mjs +32 -32
  151. package/esm2020/app/helpers/compare.mjs +37 -37
  152. package/esm2020/app/helpers/create-filter-item.mjs +54 -54
  153. package/esm2020/app/helpers/find-value.mjs +12 -12
  154. package/esm2020/app/helpers/get-range-name.mjs +8 -8
  155. package/esm2020/app/helpers/parse-date.mjs +7 -7
  156. package/esm2020/app/helpers/parse-item-value-from-stored.mjs +80 -80
  157. package/esm2020/app/helpers/query-param-transformers.mjs +8 -8
  158. package/esm2020/app/helpers/restore-items.mjs +48 -48
  159. package/esm2020/app/injectors/filter-config.mjs +2 -2
  160. package/esm2020/app/injectors/filter-drawer-data.mjs +2 -2
  161. package/esm2020/app/injectors/filter-drawer-overlay.mjs +2 -2
  162. package/esm2020/app/interfaces/action.interface.mjs +1 -1
  163. package/esm2020/app/interfaces/config.interface.mjs +1 -1
  164. package/esm2020/app/interfaces/external-params.interface.mjs +1 -1
  165. package/esm2020/app/interfaces/filter.interface.mjs +1 -1
  166. package/esm2020/app/interfaces/index.mjs +6 -6
  167. package/esm2020/app/interfaces/items/autocomplete-chips.interface.mjs +1 -1
  168. package/esm2020/app/interfaces/items/autocomplete.interface.mjs +1 -1
  169. package/esm2020/app/interfaces/items/base.interface.mjs +1 -1
  170. package/esm2020/app/interfaces/items/checkbox.interface.mjs +1 -1
  171. package/esm2020/app/interfaces/items/chips.interface.mjs +1 -1
  172. package/esm2020/app/interfaces/items/date-range.interface.mjs +1 -1
  173. package/esm2020/app/interfaces/items/date.interface.mjs +1 -1
  174. package/esm2020/app/interfaces/items/range.interface.mjs +1 -1
  175. package/esm2020/app/interfaces/items/select.interface.mjs +1 -1
  176. package/esm2020/app/interfaces/items/text.interface.mjs +1 -1
  177. package/esm2020/app/interfaces/items/week.interface.mjs +1 -1
  178. package/esm2020/app/interfaces/saved-filters.interface.mjs +1 -1
  179. package/esm2020/app/interfaces/update-filter-item.interface.mjs +1 -1
  180. package/esm2020/app/models/action-menu-item.model.mjs +66 -66
  181. package/esm2020/app/models/action.model.mjs +129 -129
  182. package/esm2020/app/models/filter-config.mjs +66 -66
  183. package/esm2020/app/models/items/autocomplete/base-autocomplete-item.mjs +13 -13
  184. package/esm2020/app/models/items/autocomplete-chips-item.mjs +60 -60
  185. package/esm2020/app/models/items/autocomplete-item.mjs +32 -32
  186. package/esm2020/app/models/items/base-item.mjs +233 -233
  187. package/esm2020/app/models/items/checkbox-item.mjs +49 -49
  188. package/esm2020/app/models/items/chips-item.mjs +88 -88
  189. package/esm2020/app/models/items/date/base-date-item.mjs +47 -47
  190. package/esm2020/app/models/items/date-item.mjs +18 -18
  191. package/esm2020/app/models/items/date-range/base-date-range-item.mjs +134 -134
  192. package/esm2020/app/models/items/date-range-item.mjs +6 -6
  193. package/esm2020/app/models/items/date-time-item.mjs +9 -9
  194. package/esm2020/app/models/items/date-time-range-item.mjs +6 -6
  195. package/esm2020/app/models/items/range-item.mjs +82 -82
  196. package/esm2020/app/models/items/select/base-select-item.mjs +36 -36
  197. package/esm2020/app/models/items/select/multiple-select-item.mjs +87 -87
  198. package/esm2020/app/models/items/select/simple-select-item.mjs +65 -65
  199. package/esm2020/app/models/items/select-item.mjs +10 -10
  200. package/esm2020/app/models/items/text-item.mjs +33 -33
  201. package/esm2020/app/models/items/week-item.mjs +93 -93
  202. package/esm2020/app/pipes/remove-isolate-value.pipe.mjs +20 -20
  203. package/esm2020/app/providers/filter-meta.mjs +9 -9
  204. package/esm2020/app/services/external-params/persistance-params-controller.service.mjs +57 -57
  205. package/esm2020/app/services/external-params/query-params-controller.service.mjs +61 -61
  206. package/esm2020/app/services/external-params/saved-filters-controller.service.mjs +162 -162
  207. package/esm2020/app/services/external-params-controller.service.mjs +178 -178
  208. package/esm2020/app/services/filter-overlay.service.mjs +121 -121
  209. package/esm2020/app/services/focus-controller.service.mjs +29 -29
  210. package/esm2020/app/services/items-store.service.mjs +344 -344
  211. package/esm2020/firestitch-filter.mjs +4 -4
  212. package/esm2020/public_api.mjs +35 -35
  213. package/fesm2015/firestitch-filter.mjs +4349 -4349
  214. package/fesm2015/firestitch-filter.mjs.map +1 -1
  215. package/fesm2020/firestitch-filter.mjs +4336 -4336
  216. package/fesm2020/firestitch-filter.mjs.map +1 -1
  217. package/index.d.ts +5 -5
  218. package/package.json +2 -2
  219. package/public_api.d.ts +40 -40
@@ -1,179 +1,179 @@
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
- let result = {};
26
- if (this._persistanceStore.enabled) {
27
- result = {
28
- ...result,
29
- ...this._persistanceStore.value?.data,
30
- };
31
- }
32
- if (this._savedFilters.enabled && this._savedFilters.activeFilter) {
33
- const query = Object.keys(result)
34
- .filter((key) => !this._itemsStore.itemNames.includes(key))
35
- .reduce((acc, key) => {
36
- return {
37
- ...acc,
38
- [key]: result[key],
39
- };
40
- }, {});
41
- result = {
42
- ...query,
43
- ...this._savedFilters.activeFilterData,
44
- };
45
- }
46
- else if (this._queryParams.enabled) {
47
- result = {
48
- ...result,
49
- ...this._queryParams.fetchedParams,
50
- };
51
- }
52
- return result;
53
- }
54
- get pending() {
55
- return this._pending$.getValue();
56
- }
57
- get pending$() {
58
- return this._pending$.asObservable();
59
- }
60
- get savedFiltersController() {
61
- return this._savedFilters;
62
- }
63
- get savedFiltersEnabled() {
64
- return this._savedFilters.enabled;
65
- }
66
- ngOnDestroy() {
67
- this._destroy$.next();
68
- this._destroy$.complete();
69
- }
70
- setConfig(config) {
71
- this._config = config;
72
- this._initPersistance();
73
- this._initQueryParams();
74
- this._initSavedFilters();
75
- this.initItems();
76
- }
77
- setActiveSavedFilter(savedFilter) {
78
- this.savedFiltersController.setActiveFilter(savedFilter);
79
- if (savedFilter) {
80
- this.reloadFiltersWithValues(savedFilter.filters, false);
81
- }
82
- }
83
- reloadFiltersWithValues(params, shouldResetSavedFilters = true) {
84
- this._shouldResetSavedFilters = shouldResetSavedFilters;
85
- this._itemsStore.updateItemsWithValues(params);
86
- this._saveQueryParams();
87
- this._savePersistedParams();
88
- }
89
- initItems() {
90
- this._pending$.next(true);
91
- if (this._savedFilters.enabled) {
92
- this._savedFilters
93
- .load()
94
- .pipe(takeUntil(this._destroy$))
95
- .subscribe(() => {
96
- this._savedFilters.updateActiveFilter();
97
- this._initItemsValues();
98
- this._listenAndResetSavedFilters();
99
- this._pending$.next(false);
100
- });
101
- }
102
- else {
103
- this._initItemsValues();
104
- this._pending$.next(false);
105
- }
106
- this._listenItemsChange();
107
- }
108
- _initItemsValues() {
109
- this._itemsStore.init(this.params);
110
- this._saveQueryParams();
111
- this._savePersistedParams();
112
- }
113
- fetchQueryParams() {
114
- this._initQueryParams();
115
- this._itemsStore.updateItemsWithValues(this.params);
116
- }
117
- _initPersistance() {
118
- this._persistanceStore.init(this._config.persist, this._config.namespace, this._config.case);
119
- }
120
- _initQueryParams() {
121
- this._queryParams.init(this._config.queryParam, this._config.case);
122
- }
123
- _initSavedFilters() {
124
- this._savedFilters.init(this._config.savedFilters, this._config.case);
125
- }
126
- _listenItemsChange() {
127
- this._itemsStore.ready$
128
- .pipe(filter((v) => v), take(1), takeUntil(this._destroy$))
129
- .subscribe(() => {
130
- this._saveQueryParams();
131
- this._savePersistedParams();
132
- });
133
- this._itemsStore
134
- .itemsChange$
135
- .pipe(takeUntil(this._destroy$))
136
- .subscribe(() => {
137
- this._saveQueryParams();
138
- this._savePersistedParams();
139
- });
140
- }
141
- _listenAndResetSavedFilters() {
142
- this._itemsStore
143
- .itemsChange$
144
- .pipe(filter(() => !!this.savedFiltersController.activeFilter), switchMap(() => {
145
- const shouldReset = this._shouldResetSavedFilters;
146
- this._shouldResetSavedFilters = true;
147
- return of(shouldReset);
148
- }), filter((shouldReset) => shouldReset), takeUntil(this._destroy$))
149
- .subscribe(() => {
150
- this.savedFiltersController.resetActiveFilter();
151
- });
152
- }
153
- _saveQueryParams() {
154
- const targetItems = this._itemsStore.items
155
- .filter((item) => !item.queryParamsDisabled);
156
- const params = buildQueryParams(this._itemsStore.valuesAsQuery({
157
- onlyPresented: false,
158
- items: targetItems,
159
- persisted: true,
160
- }), targetItems);
161
- this._queryParams.writeStateToQueryParams(params);
162
- }
163
- _savePersistedParams() {
164
- const targetItems = this._itemsStore.items
165
- .filter((item) => !item.persistanceDisabled);
166
- const params = buildQueryParams(this._itemsStore.valuesAsQuery({
167
- onlyPresented: false,
168
- items: targetItems,
169
- persisted: true,
170
- }), targetItems);
171
- this._persistanceStore.save(params);
172
- }
173
- }
174
- ExternalParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.PersistanceParamsController }, { token: i3.QueryParamsController }, { token: i4.SavedFiltersController }], target: i0.ɵɵFactoryTarget.Injectable });
175
- ExternalParamsController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController });
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController, decorators: [{
177
- type: Injectable
178
- }], 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
+ let result = {};
26
+ if (this._persistanceStore.enabled) {
27
+ result = {
28
+ ...result,
29
+ ...this._persistanceStore.value?.data,
30
+ };
31
+ }
32
+ if (this._savedFilters.enabled && this._savedFilters.activeFilter) {
33
+ const query = Object.keys(result)
34
+ .filter((key) => !this._itemsStore.itemNames.includes(key))
35
+ .reduce((acc, key) => {
36
+ return {
37
+ ...acc,
38
+ [key]: result[key],
39
+ };
40
+ }, {});
41
+ result = {
42
+ ...query,
43
+ ...this._savedFilters.activeFilterData,
44
+ };
45
+ }
46
+ else if (this._queryParams.enabled) {
47
+ result = {
48
+ ...result,
49
+ ...this._queryParams.fetchedParams,
50
+ };
51
+ }
52
+ return result;
53
+ }
54
+ get pending() {
55
+ return this._pending$.getValue();
56
+ }
57
+ get pending$() {
58
+ return this._pending$.asObservable();
59
+ }
60
+ get savedFiltersController() {
61
+ return this._savedFilters;
62
+ }
63
+ get savedFiltersEnabled() {
64
+ return this._savedFilters.enabled;
65
+ }
66
+ ngOnDestroy() {
67
+ this._destroy$.next();
68
+ this._destroy$.complete();
69
+ }
70
+ setConfig(config) {
71
+ this._config = config;
72
+ this._initPersistance();
73
+ this._initQueryParams();
74
+ this._initSavedFilters();
75
+ this.initItems();
76
+ }
77
+ setActiveSavedFilter(savedFilter) {
78
+ this.savedFiltersController.setActiveFilter(savedFilter);
79
+ if (savedFilter) {
80
+ this.reloadFiltersWithValues(savedFilter.filters, false);
81
+ }
82
+ }
83
+ reloadFiltersWithValues(params, shouldResetSavedFilters = true) {
84
+ this._shouldResetSavedFilters = shouldResetSavedFilters;
85
+ this._itemsStore.updateItemsWithValues(params);
86
+ this._saveQueryParams();
87
+ this._savePersistedParams();
88
+ }
89
+ initItems() {
90
+ this._pending$.next(true);
91
+ if (this._savedFilters.enabled) {
92
+ this._savedFilters
93
+ .load()
94
+ .pipe(takeUntil(this._destroy$))
95
+ .subscribe(() => {
96
+ this._savedFilters.updateActiveFilter();
97
+ this._initItemsValues();
98
+ this._listenAndResetSavedFilters();
99
+ this._pending$.next(false);
100
+ });
101
+ }
102
+ else {
103
+ this._initItemsValues();
104
+ this._pending$.next(false);
105
+ }
106
+ this._listenItemsChange();
107
+ }
108
+ _initItemsValues() {
109
+ this._itemsStore.init(this.params);
110
+ this._saveQueryParams();
111
+ this._savePersistedParams();
112
+ }
113
+ fetchQueryParams() {
114
+ this._initQueryParams();
115
+ this._itemsStore.updateItemsWithValues(this.params);
116
+ }
117
+ _initPersistance() {
118
+ this._persistanceStore.init(this._config.persist, this._config.namespace, this._config.case);
119
+ }
120
+ _initQueryParams() {
121
+ this._queryParams.init(this._config.queryParam, this._config.case);
122
+ }
123
+ _initSavedFilters() {
124
+ this._savedFilters.init(this._config.savedFilters, this._config.case);
125
+ }
126
+ _listenItemsChange() {
127
+ this._itemsStore.ready$
128
+ .pipe(filter((v) => v), take(1), takeUntil(this._destroy$))
129
+ .subscribe(() => {
130
+ this._saveQueryParams();
131
+ this._savePersistedParams();
132
+ });
133
+ this._itemsStore
134
+ .itemsChange$
135
+ .pipe(takeUntil(this._destroy$))
136
+ .subscribe(() => {
137
+ this._saveQueryParams();
138
+ this._savePersistedParams();
139
+ });
140
+ }
141
+ _listenAndResetSavedFilters() {
142
+ this._itemsStore
143
+ .itemsChange$
144
+ .pipe(filter(() => !!this.savedFiltersController.activeFilter), switchMap(() => {
145
+ const shouldReset = this._shouldResetSavedFilters;
146
+ this._shouldResetSavedFilters = true;
147
+ return of(shouldReset);
148
+ }), filter((shouldReset) => shouldReset), takeUntil(this._destroy$))
149
+ .subscribe(() => {
150
+ this.savedFiltersController.resetActiveFilter();
151
+ });
152
+ }
153
+ _saveQueryParams() {
154
+ const targetItems = this._itemsStore.items
155
+ .filter((item) => !item.queryParamsDisabled);
156
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery({
157
+ onlyPresented: false,
158
+ items: targetItems,
159
+ persisted: true,
160
+ }), targetItems);
161
+ this._queryParams.writeStateToQueryParams(params);
162
+ }
163
+ _savePersistedParams() {
164
+ const targetItems = this._itemsStore.items
165
+ .filter((item) => !item.persistanceDisabled);
166
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery({
167
+ onlyPresented: false,
168
+ items: targetItems,
169
+ persisted: true,
170
+ }), targetItems);
171
+ this._persistanceStore.save(params);
172
+ }
173
+ }
174
+ ExternalParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.PersistanceParamsController }, { token: i3.QueryParamsController }, { token: i4.SavedFiltersController }], target: i0.ɵɵFactoryTarget.Injectable });
175
+ ExternalParamsController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController });
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController, decorators: [{
177
+ type: Injectable
178
+ }], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.PersistanceParamsController }, { type: i3.QueryParamsController }, { type: i4.SavedFiltersController }]; } });
179
179
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUkzRCxNQUFNLE9BQU8sd0JBQXdCO0lBU25DLFlBQ1UsV0FBK0IsRUFDL0IsaUJBQThDLEVBQzlDLFlBQW1DLEVBQ25DLGFBQXFDO1FBSHJDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLGlCQUFZLEdBQVosWUFBWSxDQUF1QjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFUdkMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLDZCQUF3QixHQUFHLElBQUksQ0FBQztRQUVoQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU9wQyxDQUFDO0lB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LGFBQWEsRUFBRSxLQUFLO1lBQ3BCLEtBQUssRUFBRSxXQUFXO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsRUFDRixXQUFXLENBQ1osQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7cUhBMU5VLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgYnVpbGRRdWVyeVBhcmFtcyB9IGZyb20gJy4uL2hlbHBlcnMvYnVpbGQtcXVlcnktcGFyYW1zJztcbmltcG9ydCB7IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0ZXJuYWwtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyU2F2ZWRGaWx0ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZzRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci1jb25maWcnO1xuXG5pbXBvcnQgeyBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIgfSBmcm9tICcuL2V4dGVybmFsLXBhcmFtcy9wZXJzaXN0YW5jZS1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3NhdmVkLWZpbHRlcnMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4vaXRlbXMtc3RvcmUuc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV4dGVybmFsUGFyYW1zQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9pbml0O1xuXG4gIHByaXZhdGUgX3BlbmRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX3Nob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfY29uZmlnOiBGc0ZpbHRlckNvbmZpZztcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2l0ZW1zU3RvcmU6IEZzRmlsdGVySXRlbXNTdG9yZSxcbiAgICBwcml2YXRlIF9wZXJzaXN0YW5jZVN0b3JlOiBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9zYXZlZEZpbHRlcnM6IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIsXG4gICkgeyB9XG5cbiAgcHVibGljIGdldCBwYXJhbXMoKTogSUZpbHRlckV4dGVybmFsUGFyYW1zIHtcbiAgICBsZXQgcmVzdWx0OiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMgPSB7fTtcblxuICAgIGlmICh0aGlzLl9wZXJzaXN0YW5jZVN0b3JlLmVuYWJsZWQpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgLi4ucmVzdWx0LCBcbiAgICAgICAgLi4udGhpcy5fcGVyc2lzdGFuY2VTdG9yZS52YWx1ZT8uZGF0YSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3NhdmVkRmlsdGVycy5lbmFibGVkICYmIHRoaXMuX3NhdmVkRmlsdGVycy5hY3RpdmVGaWx0ZXIpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gT2JqZWN0LmtleXMocmVzdWx0KVxuICAgICAgICAuZmlsdGVyKChrZXkpID0+ICF0aGlzLl9pdGVtc1N0b3JlLml0ZW1OYW1lcy5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBba2V5XTogcmVzdWx0W2tleV0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIC4uLnF1ZXJ5LCBcbiAgICAgICAgLi4udGhpcy5fc2F2ZWRGaWx0ZXJzLmFjdGl2ZUZpbHRlckRhdGEsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcXVlcnlQYXJhbXMuZW5hYmxlZCkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAuLi5yZXN1bHQsIFxuICAgICAgICAuLi50aGlzLl9xdWVyeVBhcmFtcy5mZXRjaGVkUGFyYW1zLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldCBwZW5kaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwZW5kaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVyc0NvbnRyb2xsZXIoKTogU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVycztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzLmVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29uZmlnKGNvbmZpZykge1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcblxuICAgIHRoaXMuX2luaXRQZXJzaXN0YW5jZSgpO1xuICAgIHRoaXMuX2luaXRRdWVyeVBhcmFtcygpO1xuICAgIHRoaXMuX2luaXRTYXZlZEZpbHRlcnMoKTtcbiAgICB0aGlzLmluaXRJdGVtcygpO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGl2ZVNhdmVkRmlsdGVyKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpIHtcbiAgICB0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuc2V0QWN0aXZlRmlsdGVyKHNhdmVkRmlsdGVyKTtcblxuICAgIGlmIChzYXZlZEZpbHRlcikge1xuICAgICAgdGhpcy5yZWxvYWRGaWx0ZXJzV2l0aFZhbHVlcyhzYXZlZEZpbHRlci5maWx0ZXJzLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbG9hZEZpbHRlcnNXaXRoVmFsdWVzKHBhcmFtczogSUZpbHRlckV4dGVybmFsUGFyYW1zLCBzaG91bGRSZXNldFNhdmVkRmlsdGVycyA9IHRydWUpIHtcbiAgICB0aGlzLl9zaG91bGRSZXNldFNhdmVkRmlsdGVycyA9IHNob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzO1xuICAgIHRoaXMuX2l0ZW1zU3RvcmUudXBkYXRlSXRlbXNXaXRoVmFsdWVzKHBhcmFtcyk7XG5cbiAgICB0aGlzLl9zYXZlUXVlcnlQYXJhbXMoKTtcbiAgICB0aGlzLl9zYXZlUGVyc2lzdGVkUGFyYW1zKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdEl0ZW1zKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlbmRpbmckLm5leHQodHJ1ZSk7XG4gICAgaWYgKHRoaXMuX3NhdmVkRmlsdGVycy5lbmFibGVkKSB7XG4gICAgICB0aGlzLl9zYXZlZEZpbHRlcnNcbiAgICAgICAgLmxvYWQoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3NhdmVkRmlsdGVycy51cGRhdGVBY3RpdmVGaWx0ZXIoKTtcbiAgICAgICAgICB0aGlzLl9pbml0SXRlbXNWYWx1ZXMoKTtcbiAgICAgICAgICB0aGlzLl9saXN0ZW5BbmRSZXNldFNhdmVkRmlsdGVycygpO1xuICAgICAgICAgIHRoaXMuX3BlbmRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faW5pdEl0ZW1zVmFsdWVzKCk7XG4gICAgICB0aGlzLl9wZW5kaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9saXN0ZW5JdGVtc0NoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIF9pbml0SXRlbXNWYWx1ZXMoKSB7XG4gICAgdGhpcy5faXRlbXNTdG9yZS5pbml0KHRoaXMucGFyYW1zKTtcbiAgICB0aGlzLl9zYXZlUXVlcnlQYXJhbXMoKTtcbiAgICB0aGlzLl9zYXZlUGVyc2lzdGVkUGFyYW1zKCk7XG4gIH1cblxuICBwdWJsaWMgZmV0Y2hRdWVyeVBhcmFtcygpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0UXVlcnlQYXJhbXMoKTtcbiAgICB0aGlzLl9pdGVtc1N0b3JlLnVwZGF0ZUl0ZW1zV2l0aFZhbHVlcyh0aGlzLnBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0UGVyc2lzdGFuY2UoKSB7XG4gICAgdGhpcy5fcGVyc2lzdGFuY2VTdG9yZS5pbml0KFxuICAgICAgdGhpcy5fY29uZmlnLnBlcnNpc3QsXG4gICAgICB0aGlzLl9jb25maWcubmFtZXNwYWNlLFxuICAgICAgdGhpcy5fY29uZmlnLmNhc2UsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRRdWVyeVBhcmFtcygpIHtcbiAgICB0aGlzLl9xdWVyeVBhcmFtcy5pbml0KHRoaXMuX2NvbmZpZy5xdWVyeVBhcmFtLCB0aGlzLl9jb25maWcuY2FzZSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0U2F2ZWRGaWx0ZXJzKCkge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVycy5pbml0KHRoaXMuX2NvbmZpZy5zYXZlZEZpbHRlcnMsIHRoaXMuX2NvbmZpZy5jYXNlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3Rlbkl0ZW1zQ2hhbmdlKCkge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmUucmVhZHkkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCh2KSA9PiB2KSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zYXZlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9pdGVtc1N0b3JlXG4gICAgICAuaXRlbXNDaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zYXZlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5BbmRSZXNldFNhdmVkRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9pdGVtc1N0b3JlXG4gICAgICAuaXRlbXNDaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLmFjdGl2ZUZpbHRlciksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkUmVzZXQgPSB0aGlzLl9zaG91bGRSZXNldFNhdmVkRmlsdGVycztcblxuICAgICAgICAgIHRoaXMuX3Nob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBvZihzaG91bGRSZXNldCk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXIoKHNob3VsZFJlc2V0KSA9PiBzaG91bGRSZXNldCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnJlc2V0QWN0aXZlRmlsdGVyKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3NhdmVRdWVyeVBhcmFtcygpIHtcbiAgICBjb25zdCB0YXJnZXRJdGVtcyA9IHRoaXMuX2l0ZW1zU3RvcmUuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnF1ZXJ5UGFyYW1zRGlzYWJsZWQpO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYnVpbGRRdWVyeVBhcmFtcyhcbiAgICAgIHRoaXMuX2l0ZW1zU3RvcmUudmFsdWVzQXNRdWVyeSh7XG4gICAgICAgIG9ubHlQcmVzZW50ZWQ6IGZhbHNlLFxuICAgICAgICBpdGVtczogdGFyZ2V0SXRlbXMsXG4gICAgICAgIHBlcnNpc3RlZDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgdGFyZ2V0SXRlbXMsXG4gICAgKTtcblxuICAgIHRoaXMuX3F1ZXJ5UGFyYW1zLndyaXRlU3RhdGVUb1F1ZXJ5UGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIF9zYXZlUGVyc2lzdGVkUGFyYW1zKCkge1xuICAgIGNvbnN0IHRhcmdldEl0ZW1zID0gdGhpcy5faXRlbXNTdG9yZS5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0ucGVyc2lzdGFuY2VEaXNhYmxlZCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBidWlsZFF1ZXJ5UGFyYW1zKFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS52YWx1ZXNBc1F1ZXJ5KHtcbiAgICAgICAgb25seVByZXNlbnRlZDogZmFsc2UsXG4gICAgICAgIGl0ZW1zOiB0YXJnZXRJdGVtcyxcbiAgICAgICAgcGVyc2lzdGVkOiB0cnVlLFxuICAgICAgfSksXG4gICAgICB0YXJnZXRJdGVtcyxcbiAgICApO1xuXG4gICAgdGhpcy5fcGVyc2lzdGFuY2VTdG9yZS5zYXZlKHBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==