@firestitch/filter 12.13.1 → 12.13.3

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 (211) 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 +8 -8
  5. package/app/components/filter/filter.component.d.ts +192 -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 -32
  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 +13 -13
  12. package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +16 -20
  13. package/app/components/filters-item/base-item/base-item.component.d.ts +25 -27
  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 -41
  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 +5 -5
  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 +65 -65
  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 -13
  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/helpers/try-convert-to-number.d.ts +1 -1
  50. package/app/injectors/filter-config.d.ts +2 -2
  51. package/app/injectors/filter-drawer-data.d.ts +2 -2
  52. package/app/injectors/filter-drawer-overlay.d.ts +2 -2
  53. package/app/interfaces/action.interface.d.ts +70 -70
  54. package/app/interfaces/config.interface.d.ts +62 -62
  55. package/app/interfaces/external-params.interface.d.ts +3 -3
  56. package/app/interfaces/filter.interface.d.ts +4 -4
  57. package/app/interfaces/items/autocomplete-chips.interface.d.ts +15 -15
  58. package/app/interfaces/items/autocomplete.interface.d.ts +9 -9
  59. package/app/interfaces/items/base.interface.d.ts +29 -28
  60. package/app/interfaces/items/checkbox.interface.d.ts +7 -7
  61. package/app/interfaces/items/chips.interface.d.ts +6 -6
  62. package/app/interfaces/items/date-range.interface.d.ts +8 -8
  63. package/app/interfaces/items/date.interface.d.ts +7 -7
  64. package/app/interfaces/items/range.interface.d.ts +13 -13
  65. package/app/interfaces/items/select.interface.d.ts +20 -20
  66. package/app/interfaces/items/text.interface.d.ts +9 -9
  67. package/app/interfaces/items/week.interface.d.ts +7 -7
  68. package/app/interfaces/saved-filters.interface.d.ts +18 -18
  69. package/app/interfaces/update-filter-item.interface.d.ts +4 -4
  70. package/app/models/action-menu-item.model.d.ts +23 -23
  71. package/app/models/action.model.d.ts +47 -47
  72. package/app/models/filter-config.d.ts +30 -30
  73. package/app/models/items/autocomplete/base-autocomplete-item.d.ts +12 -12
  74. package/app/models/items/autocomplete-chips-item.d.ts +20 -19
  75. package/app/models/items/autocomplete-item.d.ts +11 -10
  76. package/app/models/items/base-item.d.ts +79 -77
  77. package/app/models/items/checkbox-item.d.ts +17 -16
  78. package/app/models/items/chips-item.d.ts +18 -17
  79. package/app/models/items/date/base-date-item.d.ts +14 -14
  80. package/app/models/items/date-item.d.ts +8 -7
  81. package/app/models/items/date-range/base-date-range-item.d.ts +21 -21
  82. package/app/models/items/date-range-item.d.ts +6 -5
  83. package/app/models/items/date-time-item.d.ts +7 -6
  84. package/app/models/items/date-time-range-item.d.ts +6 -5
  85. package/app/models/items/range-item.d.ts +23 -22
  86. package/app/models/items/select/base-select-item.d.ts +13 -13
  87. package/app/models/items/select/multiple-select-item.d.ts +14 -13
  88. package/app/models/items/select/simple-select-item.d.ts +14 -13
  89. package/app/models/items/select-item.d.ts +8 -7
  90. package/app/models/items/text-item.d.ts +15 -14
  91. package/app/models/items/week-item.d.ts +18 -17
  92. package/app/pipes/remove-isolate-value.pipe.d.ts +8 -8
  93. package/app/providers/filter-meta.d.ts +5 -5
  94. package/app/services/external-params/persistance-params-controller.service.d.ts +22 -22
  95. package/app/services/external-params/query-params-controller.service.d.ts +24 -24
  96. package/app/services/external-params/saved-filters-controller.service.d.ts +40 -40
  97. package/app/services/external-params-controller.service.d.ts +42 -42
  98. package/app/services/filter-overlay.service.d.ts +34 -36
  99. package/app/services/focus-controller.service.d.ts +18 -18
  100. package/app/services/items-store.service.d.ts +67 -67
  101. package/bundles/firestitch-filter.umd.js +5508 -5518
  102. package/bundles/firestitch-filter.umd.js.map +1 -1
  103. package/esm2015/app/classes/actions-controller.js +126 -126
  104. package/esm2015/app/components/action-button/action-button.component.js +27 -27
  105. package/esm2015/app/components/action-kebab-actions/action-kebab-actions.component.js +21 -21
  106. package/esm2015/app/components/actions/actions.component.js +30 -30
  107. package/esm2015/app/components/filter/filter.component.js +577 -578
  108. package/esm2015/app/components/filter-chip/filter-chip.component.js +91 -91
  109. package/esm2015/app/components/filter-chip-content/filter-chip-content.component.js +83 -83
  110. package/esm2015/app/components/filter-chips/filter-chips.component.js +26 -26
  111. package/esm2015/app/components/filter-drawer/filter-drawer.component.js +76 -77
  112. package/esm2015/app/components/filter-drawer-actions/filter-drawer-actions.component.js +44 -43
  113. package/esm2015/app/components/filters-item/autocomplete/autocomplete.component.js +30 -30
  114. package/esm2015/app/components/filters-item/autocompletechips/autocompletechips.component.js +45 -52
  115. package/esm2015/app/components/filters-item/base-item/base-item.component.js +63 -65
  116. package/esm2015/app/components/filters-item/checkbox/checkbox.component.js +24 -24
  117. package/esm2015/app/components/filters-item/chips/chips.component.js +31 -31
  118. package/esm2015/app/components/filters-item/date/date.component.js +45 -45
  119. package/esm2015/app/components/filters-item/date-range/date-range.component.js +36 -36
  120. package/esm2015/app/components/filters-item/filter-item.component.js +84 -86
  121. package/esm2015/app/components/filters-item/range/range.component.js +47 -47
  122. package/esm2015/app/components/filters-item/select/backdrop/backdrop.component.js +16 -16
  123. package/esm2015/app/components/filters-item/select/groups/groups.component.js +32 -32
  124. package/esm2015/app/components/filters-item/select/multiple/multiple.component.js +60 -60
  125. package/esm2015/app/components/filters-item/select/select.component.js +54 -54
  126. package/esm2015/app/components/filters-item/select/simple/simple.component.js +46 -46
  127. package/esm2015/app/components/filters-item/text/text.component.js +53 -53
  128. package/esm2015/app/components/filters-item/week/week.component.js +27 -27
  129. package/esm2015/app/components/saved-filter-edit/saved-filter-edit.component.js +54 -54
  130. package/esm2015/app/components/saved-filters-menu/saved-filters-menu.component.js +57 -57
  131. package/esm2015/app/consts/query-param-delimiter.js +1 -1
  132. package/esm2015/app/directives/focus-to-item/focus-to-item.directive.js +129 -129
  133. package/esm2015/app/directives/status-bar/status-bar.directive.js +15 -15
  134. package/esm2015/app/enums/action-mode.enum.js +6 -6
  135. package/esm2015/app/enums/action-type.enum.js +10 -10
  136. package/esm2015/app/enums/button-style.js +10 -10
  137. package/esm2015/app/enums/index.js +6 -6
  138. package/esm2015/app/enums/item-date-mode.enum.js +6 -6
  139. package/esm2015/app/enums/item-type.enum.js +16 -16
  140. package/esm2015/app/enums/picker-view-type.enum.js +8 -8
  141. package/esm2015/app/fs-filter.module.js +240 -240
  142. package/esm2015/app/helpers/build-query-params.js +31 -31
  143. package/esm2015/app/helpers/compare.js +37 -37
  144. package/esm2015/app/helpers/create-filter-item.js +55 -55
  145. package/esm2015/app/helpers/find-value.js +12 -12
  146. package/esm2015/app/helpers/get-range-name.js +8 -8
  147. package/esm2015/app/helpers/parse-date.js +7 -7
  148. package/esm2015/app/helpers/parse-item-value-from-stored.js +81 -81
  149. package/esm2015/app/helpers/query-param-transformers.js +8 -8
  150. package/esm2015/app/helpers/restore-items.js +48 -48
  151. package/esm2015/app/helpers/try-convert-to-number.js +5 -5
  152. package/esm2015/app/injectors/filter-config.js +2 -2
  153. package/esm2015/app/injectors/filter-drawer-data.js +2 -2
  154. package/esm2015/app/injectors/filter-drawer-overlay.js +2 -2
  155. package/esm2015/app/interfaces/action.interface.js +1 -1
  156. package/esm2015/app/interfaces/config.interface.js +1 -1
  157. package/esm2015/app/interfaces/external-params.interface.js +1 -1
  158. package/esm2015/app/interfaces/filter.interface.js +1 -1
  159. package/esm2015/app/interfaces/items/autocomplete-chips.interface.js +2 -2
  160. package/esm2015/app/interfaces/items/autocomplete.interface.js +2 -2
  161. package/esm2015/app/interfaces/items/base.interface.js +2 -2
  162. package/esm2015/app/interfaces/items/checkbox.interface.js +1 -1
  163. package/esm2015/app/interfaces/items/chips.interface.js +1 -1
  164. package/esm2015/app/interfaces/items/date-range.interface.js +1 -1
  165. package/esm2015/app/interfaces/items/date.interface.js +1 -1
  166. package/esm2015/app/interfaces/items/range.interface.js +1 -1
  167. package/esm2015/app/interfaces/items/select.interface.js +1 -1
  168. package/esm2015/app/interfaces/items/text.interface.js +1 -1
  169. package/esm2015/app/interfaces/items/week.interface.js +1 -1
  170. package/esm2015/app/interfaces/saved-filters.interface.js +1 -1
  171. package/esm2015/app/interfaces/update-filter-item.interface.js +1 -1
  172. package/esm2015/app/models/action-menu-item.model.js +66 -66
  173. package/esm2015/app/models/action.model.js +108 -108
  174. package/esm2015/app/models/filter-config.js +67 -67
  175. package/esm2015/app/models/items/autocomplete/base-autocomplete-item.js +14 -14
  176. package/esm2015/app/models/items/autocomplete-chips-item.js +62 -62
  177. package/esm2015/app/models/items/autocomplete-item.js +33 -31
  178. package/esm2015/app/models/items/base-item.js +238 -232
  179. package/esm2015/app/models/items/checkbox-item.js +50 -48
  180. package/esm2015/app/models/items/chips-item.js +84 -84
  181. package/esm2015/app/models/items/date/base-date-item.js +47 -47
  182. package/esm2015/app/models/items/date-item.js +19 -19
  183. package/esm2015/app/models/items/date-range/base-date-range-item.js +136 -136
  184. package/esm2015/app/models/items/date-range-item.js +7 -7
  185. package/esm2015/app/models/items/date-time-item.js +10 -10
  186. package/esm2015/app/models/items/date-time-range-item.js +7 -7
  187. package/esm2015/app/models/items/range-item.js +84 -89
  188. package/esm2015/app/models/items/select/base-select-item.js +33 -33
  189. package/esm2015/app/models/items/select/multiple-select-item.js +89 -89
  190. package/esm2015/app/models/items/select/simple-select-item.js +66 -66
  191. package/esm2015/app/models/items/select-item.js +11 -13
  192. package/esm2015/app/models/items/text-item.js +34 -30
  193. package/esm2015/app/models/items/week-item.js +94 -99
  194. package/esm2015/app/pipes/remove-isolate-value.pipe.js +20 -20
  195. package/esm2015/app/providers/filter-meta.js +9 -9
  196. package/esm2015/app/services/external-params/persistance-params-controller.service.js +57 -57
  197. package/esm2015/app/services/external-params/query-params-controller.service.js +66 -66
  198. package/esm2015/app/services/external-params/saved-filters-controller.service.js +164 -164
  199. package/esm2015/app/services/external-params-controller.service.js +163 -164
  200. package/esm2015/app/services/filter-overlay.service.js +119 -120
  201. package/esm2015/app/services/focus-controller.service.js +29 -29
  202. package/esm2015/app/services/items-store.service.js +341 -341
  203. package/esm2015/firestitch-filter.js +4 -4
  204. package/esm2015/public_api.js +36 -36
  205. package/fesm2015/firestitch-filter.js +4340 -4352
  206. package/fesm2015/firestitch-filter.js.map +1 -1
  207. package/firestitch-filter.d.ts +5 -5
  208. package/package.json +1 -1
  209. package/public_api.d.ts +40 -40
  210. package/app/components/filter/index.d.ts +0 -1
  211. package/esm2015/app/components/filter/index.js +0 -2
@@ -1,235 +1,241 @@
1
- import { BehaviorSubject, isObservable, Subject } from 'rxjs';
2
- import { finalize, take, takeUntil, tap, } from 'rxjs/operators';
3
- import { isFunction } from 'lodash-es';
4
- import { ItemType } from '../../enums/item-type.enum';
5
- export class BaseItem {
6
- constructor(itemConfig, _additionalConfig) {
7
- this._additionalConfig = _additionalConfig;
8
- this._pendingValues = false;
9
- this._pendingDefaultValue = false;
10
- this._loading$ = new BehaviorSubject(false);
11
- this._value$ = new BehaviorSubject(null);
12
- this._valueChange$ = new Subject();
13
- this._values$ = new BehaviorSubject(null);
14
- this._destroy$ = new Subject();
15
- this._clear$ = new Subject();
16
- this._type = itemConfig.type;
17
- this._parseConfig(itemConfig);
18
- }
19
- ///
20
- get isTypeAutocomplete() {
21
- return this.type === ItemType.AutoComplete;
22
- }
23
- get isTypeAutocompleteChips() {
24
- return this.type === ItemType.AutoCompleteChips;
25
- }
26
- get isTypeChips() {
27
- return this.type === ItemType.Chips;
28
- }
29
- get isTypeCheckbox() {
30
- return this.type === ItemType.Checkbox;
31
- }
32
- get isTypeSelect() {
33
- return this.type === ItemType.Select;
34
- }
35
- get isTypeDate() {
36
- return this.type === ItemType.Date;
37
- }
38
- get isTypeDateRange() {
39
- return this.type === ItemType.DateRange;
40
- }
41
- get isTypeRange() {
42
- return this.type === ItemType.Range;
43
- }
44
- get isTypeDateTimeRange() {
45
- return this.type === ItemType.DateTimeRange;
46
- }
47
- get isTypeDateTime() {
48
- return this.type === ItemType.DateTime;
49
- }
50
- get isTypeKeyword() {
51
- return this.type === ItemType.Keyword;
52
- }
53
- ////
54
- get isChipVisible() {
55
- return !!this.model;
56
- }
57
- get destroy$() {
58
- return this._destroy$.asObservable();
59
- }
60
- get type() {
61
- return this._type;
62
- }
63
- get hasPendingValues() {
64
- return this._pendingValues;
65
- }
66
- get hasPendingDefaultValue() {
67
- return this._pendingDefaultValue;
68
- }
69
- get model() {
70
- return this._model;
71
- }
72
- set model(value) {
73
- this._setModel(value);
74
- this.valueChanged();
75
- }
76
- set values(values) {
77
- this._values$.next(values);
78
- }
79
- get values() {
80
- return this._values$.getValue();
81
- }
82
- get values$() {
83
- return this._values$.asObservable();
84
- }
85
- get valueChange$() {
86
- return this._valueChange$.asObservable();
87
- }
88
- get value$() {
89
- return this._value$.asObservable();
90
- }
91
- get clear$() {
92
- return this._clear$.asObservable();
93
- }
94
- get initialized() {
95
- return this._initialized;
96
- }
97
- get loading$() {
98
- return this._loading$.asObservable();
99
- }
100
- get loading() {
101
- return this._loading$.getValue();
102
- }
103
- set loading(value) {
104
- this._loading$.next(value);
105
- }
106
- get _initialized() {
107
- return !this._pendingDefaultValue && !this._pendingValues;
108
- }
109
- valueChanged() {
110
- this._value$.next(this.value);
111
- if (this.change) {
112
- this.change(this);
113
- }
114
- if (this.initialized) {
115
- this._valueChange$.next();
116
- }
117
- }
118
- get queryObject() {
119
- const value = this.value;
120
- const name = this.name;
121
- const params = {};
122
- if (Array.isArray(value)) {
123
- params[this.name] = value.join(',');
124
- }
125
- else {
126
- params[name] = value;
127
- }
128
- return params;
129
- }
130
- get persistanceObject() {
131
- return this.queryObject;
132
- }
133
- loadDefaultValue() {
134
- this._pendingDefaultValue = true;
135
- return this.defaultValueFn()
136
- .pipe(tap((value) => {
137
- this.defaultValue = value;
138
- this._initDefaultModel();
139
- }), finalize(() => {
140
- this._pendingDefaultValue = false;
141
- }));
142
- }
143
- initValues(filter, persistedValue) {
144
- // this._initialized = false;
145
- this.persistedValue = persistedValue;
146
- this._initDefaultModel();
147
- const isAutocomplete = this.type === ItemType.AutoComplete || this.type === ItemType.AutoCompleteChips;
148
- if (this._valuesFn && !isAutocomplete) {
149
- const valuesResult = this._valuesFn(null, filter);
150
- if (isObservable(valuesResult)) {
151
- this._pendingValues = true;
152
- }
153
- else {
154
- this.values = valuesResult;
155
- // Move to some other place
156
- this._init();
157
- // this._initialized = true;
158
- }
159
- }
160
- else {
161
- this._init();
162
- // this._initialized = true;
163
- }
164
- }
165
- loadAsyncValues(filter, reload = true) {
166
- if (reload || (!this.loading && this.hasPendingValues)) {
167
- this.loading = true;
168
- this._valuesFn(null, filter)
169
- .pipe(take(1), takeUntil(this._destroy$))
170
- .subscribe((values) => {
171
- this.values = values;
172
- this._pendingValues = false;
173
- this.loading = false;
174
- this._init();
175
- this._validateModel();
176
- // this._initialized = true;
177
- });
178
- }
179
- }
180
- clear(defaultValue = undefined) {
181
- if (this.isTypeRange || this.isTypeDateRange || this.isTypeDateTimeRange) {
1
+ import { BehaviorSubject, isObservable, Subject } from 'rxjs';
2
+ import { finalize, take, takeUntil, tap, } from 'rxjs/operators';
3
+ import { isFunction } from 'lodash-es';
4
+ import { ItemType } from '../../enums/item-type.enum';
5
+ export class BaseItem {
6
+ constructor(itemConfig, _additionalConfig, _filter) {
7
+ this._additionalConfig = _additionalConfig;
8
+ this._filter = _filter;
9
+ this._pendingValues = false;
10
+ this._pendingDefaultValue = false;
11
+ this._loading$ = new BehaviorSubject(false);
12
+ this._value$ = new BehaviorSubject(null);
13
+ this._valueChange$ = new Subject();
14
+ this._values$ = new BehaviorSubject(null);
15
+ this._destroy$ = new Subject();
16
+ this._clear$ = new Subject();
17
+ this._type = itemConfig.type;
18
+ this._parseConfig(itemConfig);
19
+ }
20
+ get filter() {
21
+ return this._filter;
22
+ }
23
+ ///
24
+ get isTypeAutocomplete() {
25
+ return this.type === ItemType.AutoComplete;
26
+ }
27
+ get isTypeAutocompleteChips() {
28
+ return this.type === ItemType.AutoCompleteChips;
29
+ }
30
+ get isTypeChips() {
31
+ return this.type === ItemType.Chips;
32
+ }
33
+ get isTypeCheckbox() {
34
+ return this.type === ItemType.Checkbox;
35
+ }
36
+ get isTypeSelect() {
37
+ return this.type === ItemType.Select;
38
+ }
39
+ get isTypeDate() {
40
+ return this.type === ItemType.Date;
41
+ }
42
+ get isTypeDateRange() {
43
+ return this.type === ItemType.DateRange;
44
+ }
45
+ get isTypeRange() {
46
+ return this.type === ItemType.Range;
47
+ }
48
+ get isTypeDateTimeRange() {
49
+ return this.type === ItemType.DateTimeRange;
50
+ }
51
+ get isTypeDateTime() {
52
+ return this.type === ItemType.DateTime;
53
+ }
54
+ get isTypeKeyword() {
55
+ return this.type === ItemType.Keyword;
56
+ }
57
+ ////
58
+ get isChipVisible() {
59
+ return !!this.model;
60
+ }
61
+ get destroy$() {
62
+ return this._destroy$.asObservable();
63
+ }
64
+ get type() {
65
+ return this._type;
66
+ }
67
+ get hasPendingValues() {
68
+ return this._pendingValues;
69
+ }
70
+ get hasPendingDefaultValue() {
71
+ return this._pendingDefaultValue;
72
+ }
73
+ get model() {
74
+ return this._model;
75
+ }
76
+ set model(value) {
77
+ this._setModel(value);
78
+ this.valueChanged();
79
+ }
80
+ set values(values) {
81
+ this._values$.next(values);
82
+ }
83
+ get values() {
84
+ return this._values$.getValue();
85
+ }
86
+ get values$() {
87
+ return this._values$.asObservable();
88
+ }
89
+ get valueChange$() {
90
+ return this._valueChange$.asObservable();
91
+ }
92
+ get value$() {
93
+ return this._value$.asObservable();
94
+ }
95
+ get clear$() {
96
+ return this._clear$.asObservable();
97
+ }
98
+ get initialized() {
99
+ return this._initialized;
100
+ }
101
+ get loading$() {
102
+ return this._loading$.asObservable();
103
+ }
104
+ get loading() {
105
+ return this._loading$.getValue();
106
+ }
107
+ set loading(value) {
108
+ this._loading$.next(value);
109
+ }
110
+ get _initialized() {
111
+ return !this._pendingDefaultValue && !this._pendingValues;
112
+ }
113
+ valueChanged() {
114
+ this._value$.next(this.value);
115
+ if (this.change) {
116
+ this.change(this, this._filter);
117
+ }
118
+ if (this.initialized) {
119
+ this._valueChange$.next();
120
+ }
121
+ }
122
+ get queryObject() {
123
+ const value = this.value;
124
+ const name = this.name;
125
+ const params = {};
126
+ if (Array.isArray(value)) {
127
+ params[this.name] = value.join(',');
128
+ }
129
+ else {
130
+ params[name] = value;
131
+ }
132
+ return params;
133
+ }
134
+ get persistanceObject() {
135
+ return this.queryObject;
136
+ }
137
+ loadDefaultValue() {
138
+ this._pendingDefaultValue = true;
139
+ return this.defaultValueFn()
140
+ .pipe(tap((value) => {
141
+ this.defaultValue = value;
142
+ this._initDefaultModel();
143
+ }), finalize(() => {
144
+ this._pendingDefaultValue = false;
145
+ }));
146
+ }
147
+ initValues(persistedValue) {
148
+ // this._initialized = false;
149
+ this.persistedValue = persistedValue;
150
+ this._initDefaultModel();
151
+ const isAutocomplete = this.type === ItemType.AutoComplete || this.type === ItemType.AutoCompleteChips;
152
+ if (this._valuesFn && !isAutocomplete) {
153
+ const valuesResult = this._valuesFn(null, this._filter);
154
+ if (isObservable(valuesResult)) {
155
+ this._pendingValues = true;
156
+ }
157
+ else {
158
+ this.values = valuesResult;
159
+ // Move to some other place
160
+ this._init();
161
+ // this._initialized = true;
162
+ }
163
+ }
164
+ else {
165
+ this._init();
166
+ // this._initialized = true;
167
+ }
168
+ }
169
+ loadAsyncValues(reload = true) {
170
+ if (reload || (!this.loading && this.hasPendingValues)) {
171
+ this.loading = true;
172
+ this._valuesFn(null, this._filter)
173
+ .pipe(take(1), takeUntil(this._destroy$))
174
+ .subscribe((values) => {
175
+ this.values = values;
176
+ this._pendingValues = false;
177
+ this.loading = false;
178
+ this._init();
179
+ this._validateModel();
180
+ // this._initialized = true;
181
+ });
182
+ }
183
+ }
184
+ clear(defaultValue = undefined) {
185
+ if (this.isTypeRange || this.isTypeDateRange || this.isTypeDateTimeRange) {
182
186
  console.warn(`
183
187
  Filter ${this.name} can not be cleared with .clear() method!
184
188
  Use special .clearRange() or clearDateRange() instead.
185
- `);
186
- }
187
- this._clear$.next(defaultValue);
188
- this._clearValue(defaultValue);
189
- }
190
- getChipsContent(type) {
191
- return '';
192
- }
193
- destroy() {
194
- this._destroy$.next();
195
- this._destroy$.complete();
196
- }
197
- _setModel(value) {
198
- this._model = value;
199
- }
200
- _parseConfig(item) {
201
- var _a, _b, _c;
202
- this.name = item.name;
203
- this.label = item.label;
204
- this.chipLabel = item.chipLabel;
205
- if (typeof item.default === 'function') {
206
- this.defaultValueFn = item.default;
207
- }
208
- else {
209
- this.defaultValue = item.default;
210
- }
211
- this.change = item.change;
212
- this.init = item.init || ((item) => { });
213
- this.hide = item.hide;
214
- this.showClear = (_a = item.clear) !== null && _a !== void 0 ? _a : true;
215
- this.persistanceDisabled = (_b = item.disablePersist) !== null && _b !== void 0 ? _b : false;
216
- this.queryParamsDisabled = (_c = item.disableQueryParams) !== null && _c !== void 0 ? _c : false;
217
- if (isFunction(item.values)) {
218
- this._valuesFn = item.values;
219
- }
220
- else {
221
- this.values = item.values;
222
- }
223
- }
224
- _initDefaultModel() {
225
- var _a;
226
- const model = (_a = this.persistedValue) !== null && _a !== void 0 ? _a : this.defaultValue;
227
- if (model !== undefined) {
228
- this._setModel(model);
229
- }
230
- }
231
- _clearValue(defaultValue = undefined) {
232
- this.model = defaultValue !== null && defaultValue !== void 0 ? defaultValue : undefined;
233
- }
234
- }
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2RlbHMvaXRlbXMvYmFzZS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFNdEQsTUFBTSxPQUFnQixRQUFRO0lBOEI1QixZQUNFLFVBQWEsRUFDSCxpQkFBMEI7UUFBMUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFTO1FBZDVCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixjQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwQyxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFHckMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFNdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUlELEdBQUc7SUFDSCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxD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QUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDOUI7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFUyxpQkFBaUI7O1FBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQUEsSUFBSSxDQUFDLGNBQWMsbUNBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztRQUV2RCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFUyxXQUFXLENBQUMsZUFBd0IsU0FBUztRQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksYUFBWixZQUFZLGNBQVosWUFBWSxHQUFJLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0NBSUYiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBmaW5hbGl6ZSxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB0eXBlIHsgRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2l0ZW0tdHlwZS5lbnVtJztcbmltcG9ydCB7IElGaWx0ZXJDb25maWdJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGaWx0ZXJEZWZhdWx0Rm4gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2l0ZW1zL2Jhc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGaWx0ZXJJdGVtRGVmYXVsdFJhbmdlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pdGVtcy9yYW5nZS5pbnRlcmZhY2UnO1xuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlSXRlbTxUIGV4dGVuZHMgSUZpbHRlckNvbmZpZ0l0ZW0+IHtcblxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBwdWJsaWMgY2hpcExhYmVsOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHVibGljIGhpZGU6IGJvb2xlYW47XG4gIHB1YmxpYyBkZWZhdWx0VmFsdWU6IGFueSB8IElGaWx0ZXJJdGVtRGVmYXVsdFJhbmdlO1xuICBwdWJsaWMgZGVmYXVsdFZhbHVlRm46IElGaWx0ZXJEZWZhdWx0Rm47XG4gIHB1YmxpYyBwZXJzaXN0ZWRWYWx1ZTogdW5rbm93bjtcbiAgcHVibGljIHNob3dDbGVhcjogYm9vbGVhbjtcbiAgcHVibGljIHBlcnNpc3RhbmNlRGlzYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBxdWVyeVBhcmFtc0Rpc2FibGVkOiBib29sZWFuO1xuICBwdWJsaWMgY2hhbmdlOiAoaXRlbTogQmFzZUl0ZW08VD4pID0+IHZvaWQ7XG4gIHB1YmxpYyBpbml0OiAoaXRlbTogQmFzZUl0ZW08VD4sIGZpbHRlcj8pID0+IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF90eXBlOiBUWyd0eXBlJ107XG5cbiAgcHJvdGVjdGVkIF9tb2RlbDogYW55O1xuICBwcm90ZWN0ZWQgX3BlbmRpbmdWYWx1ZXMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9wZW5kaW5nRGVmYXVsdFZhbHVlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJvdGVjdGVkIF92YWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICBwcm90ZWN0ZWQgX3ZhbHVlQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByb3RlY3RlZCBfdmFsdWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHByb3RlY3RlZCBfdmFsdWVzRm46IChrZXl3b3JkPzogc3RyaW5nLCBmaWx0ZXI/OiBGaWx0ZXJDb21wb25lbnQpID0+IE9ic2VydmFibGU8dW5rbm93bj4gfCB1bmtub3duO1xuXG4gIHByb3RlY3RlZCBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2NsZWFyJCA9IG5ldyBTdWJqZWN0PHVua25vd24+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaXRlbUNvbmZpZzogVCxcbiAgICBwcm90ZWN0ZWQgX2FkZGl0aW9uYWxDb25maWc6IHVua25vd24sXG4gICkge1xuICAgIHRoaXMuX3R5cGUgPSBpdGVtQ29uZmlnLnR5cGU7XG4gICAgdGhpcy5fcGFyc2VDb25maWcoaXRlbUNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHZhbHVlKCk7XG5cbiAgLy8vXG4gIHB1YmxpYyBnZXQgaXNUeXBlQXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkF1dG9Db21wbGV0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlQXV0b2NvbXBsZXRlQ2hpcHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQXV0b0NvbXBsZXRlQ2hpcHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZUNoaXBzKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkNoaXBzO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVDaGVja2JveCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5DaGVja2JveDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlU2VsZWN0KCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLlNlbGVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5EYXRlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVEYXRlUmFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuRGF0ZVJhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVSYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5SYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlRGF0ZVRpbWVSYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5EYXRlVGltZVJhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVEYXRlVGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5EYXRlVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlS2V5d29yZCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5LZXl3b3JkO1xuICB9XG4gIC8vLy9cblxuICBwdWJsaWMgZ2V0IGlzQ2hpcFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5tb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVzdHJveSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3kkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlKCk6IFRbJ3R5cGUnXSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1BlbmRpbmdWYWx1ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdWYWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1BlbmRpbmdEZWZhdWx0VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdEZWZhdWx0VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbW9kZWwodmFsdWUpIHtcbiAgICB0aGlzLl9zZXRNb2RlbCh2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdmFsdWVzKHZhbHVlcykge1xuICAgIHRoaXMuX3ZhbHVlcyQubmV4dCh2YWx1ZXMpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVzJCgpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVDaGFuZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjbGVhciQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsZWFyJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5pdGlhbGl6ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxpemVkO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IGxvYWRpbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgX2luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fcGVuZGluZ0RlZmF1bHRWYWx1ZSAmJiAhdGhpcy5fcGVuZGluZ1ZhbHVlcztcbiAgfVxuXG4gIHB1YmxpYyB2YWx1ZUNoYW5nZWQoKSB7XG4gICAgdGhpcy5fdmFsdWUkLm5leHQodGhpcy52YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5jaGFuZ2UpIHtcbiAgICAgIHRoaXMuY2hhbmdlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLl92YWx1ZUNoYW5nZSQubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcXVlcnlPYmplY3QoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5uYW1lO1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBwYXJhbXNbdGhpcy5uYW1lXSA9IHZhbHVlLmpvaW4oJywnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyYW1zW25hbWVdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVyc2lzdGFuY2VPYmplY3QoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5T2JqZWN0O1xuICB9XG5cbiAgcHVibGljIGxvYWREZWZhdWx0VmFsdWUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICB0aGlzLl9wZW5kaW5nRGVmYXVsdFZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLmRlZmF1bHRWYWx1ZUZuKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICAgIHRoaXMuX2luaXREZWZhdWx0TW9kZWwoKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9wZW5kaW5nRGVmYXVsdFZhbHVlID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0VmFsdWVzKGZpbHRlcjogRmlsdGVyQ29tcG9uZW50LCBwZXJzaXN0ZWRWYWx1ZTogdW5rbm93bikge1xuICAgIC8vIHRoaXMuX2luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5wZXJzaXN0ZWRWYWx1ZSA9IHBlcnNpc3RlZFZhbHVlO1xuICAgIHRoaXMuX2luaXREZWZhdWx0TW9kZWwoKTtcblxuICAgIGNvbnN0IGlzQXV0b2NvbXBsZXRlID0gdGhpcy50eXBlID09PSBJdGVtVHlwZS5BdXRvQ29tcGxldGUgfHwgdGhpcy50eXBlID09PSBJdGVtVHlwZS5BdXRvQ29tcGxldGVDaGlwcztcblxuICAgIGlmICh0aGlzLl92YWx1ZXNGbiAmJiAhaXNBdXRvY29tcGxldGUpIHtcbiAgICAgIGNvbnN0IHZhbHVlc1Jlc3VsdCA9IHRoaXMuX3ZhbHVlc0ZuKG51bGwsIGZpbHRlcik7XG5cbiAgICAgIGlmIChpc09ic2VydmFibGUodmFsdWVzUmVzdWx0KSkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nVmFsdWVzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzUmVzdWx0O1xuXG4gICAgICAgIC8vIE1vdmUgdG8gc29tZSBvdGhlciBwbGFjZVxuICAgICAgICB0aGlzLl9pbml0KCk7XG4gICAgICAgIC8vIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pbml0KCk7XG4gICAgICAvLyB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxvYWRBc3luY1ZhbHVlcyhmaWx0ZXI6IEZpbHRlckNvbXBvbmVudCwgcmVsb2FkID0gdHJ1ZSkge1xuICAgIGlmIChyZWxvYWQgfHwgKCF0aGlzLmxvYWRpbmcgJiYgdGhpcy5oYXNQZW5kaW5nVmFsdWVzKSkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgKHRoaXMuX3ZhbHVlc0ZuKG51bGwsIGZpbHRlcikgYXMgT2JzZXJ2YWJsZTx1bmtub3duPilcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICAgIHRoaXMuX3BlbmRpbmdWYWx1ZXMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9pbml0KCk7XG4gICAgICAgICAgdGhpcy5fdmFsaWRhdGVNb2RlbCgpO1xuICAgICAgICAgIC8vIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoZGVmYXVsdFZhbHVlOiB1bmtub3duID0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMuaXNUeXBlUmFuZ2UgfHwgdGhpcy5pc1R5cGVEYXRlUmFuZ2UgfHwgdGhpcy5pc1R5cGVEYXRlVGltZVJhbmdlKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFxuICAgICAgICBGaWx0ZXIgJHt0aGlzLm5hbWV9IGNhbiBub3QgYmUgY2xlYXJlZCB3aXRoIC5jbGVhcigpIG1ldGhvZCFcbiAgICAgICAgVXNlIHNwZWNpYWwgLmNsZWFyUmFuZ2UoKSBvciBjbGVhckRhdGVSYW5nZSgpIGluc3RlYWQuXG4gICAgICBgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhciQubmV4dChkZWZhdWx0VmFsdWUpO1xuICAgIHRoaXMuX2NsZWFyVmFsdWUoZGVmYXVsdFZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGlwc0NvbnRlbnQodHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2V0TW9kZWwodmFsdWUpIHtcbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9wYXJzZUNvbmZpZyhpdGVtOiBUKSB7XG4gICAgdGhpcy5uYW1lID0gaXRlbS5uYW1lO1xuICAgIHRoaXMubGFiZWwgPSBpdGVtLmxhYmVsO1xuICAgIHRoaXMuY2hpcExhYmVsID0gaXRlbS5jaGlwTGFiZWw7XG5cbiAgICBpZiAodHlwZW9mIGl0ZW0uZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWVGbiA9IGl0ZW0uZGVmYXVsdCBhcyBJRmlsdGVyRGVmYXVsdEZuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGl0ZW0uZGVmYXVsdDtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZSA9IGl0ZW0uY2hhbmdlO1xuICAgIHRoaXMuaW5pdCA9IGl0ZW0uaW5pdCB8fCAoKGl0ZW0pID0+IHsgfSk7XG4gICAgdGhpcy5oaWRlID0gaXRlbS5oaWRlO1xuICAgIHRoaXMuc2hvd0NsZWFyID0gaXRlbS5jbGVhciA/PyB0cnVlO1xuICAgIHRoaXMucGVyc2lzdGFuY2VEaXNhYmxlZCA9IGl0ZW0uZGlzYWJsZVBlcnNpc3QgPz8gZmFsc2U7XG4gICAgdGhpcy5xdWVyeVBhcmFtc0Rpc2FibGVkID0gaXRlbS5kaXNhYmxlUXVlcnlQYXJhbXMgPz8gZmFsc2U7XG5cbiAgICBpZiAoaXNGdW5jdGlvbihpdGVtLnZhbHVlcykpIHtcbiAgICAgIHRoaXMuX3ZhbHVlc0ZuID0gaXRlbS52YWx1ZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWVzID0gaXRlbS52YWx1ZXM7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9pbml0RGVmYXVsdE1vZGVsKCkge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5wZXJzaXN0ZWRWYWx1ZSA/PyB0aGlzLmRlZmF1bHRWYWx1ZTtcblxuICAgIGlmIChtb2RlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9zZXRNb2RlbChtb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9jbGVhclZhbHVlKGRlZmF1bHRWYWx1ZTogdW5rbm93biA9IHVuZGVmaW5lZCkge1xuICAgIHRoaXMubW9kZWwgPSBkZWZhdWx0VmFsdWUgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9pbml0KCk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfdmFsaWRhdGVNb2RlbCgpO1xufVxuIl19
189
+ `);
190
+ }
191
+ this._clear$.next(defaultValue);
192
+ this._clearValue(defaultValue);
193
+ }
194
+ getChipsContent(type) {
195
+ return '';
196
+ }
197
+ destroy() {
198
+ this._destroy$.next();
199
+ this._destroy$.complete();
200
+ }
201
+ _setModel(value) {
202
+ this._model = value;
203
+ }
204
+ _parseConfig(item) {
205
+ var _a, _b, _c;
206
+ this.name = item.name;
207
+ this.label = item.label;
208
+ this.chipLabel = item.chipLabel;
209
+ if (typeof item.default === 'function') {
210
+ this.defaultValueFn = item.default;
211
+ }
212
+ else {
213
+ this.defaultValue = item.default;
214
+ }
215
+ this.change = item.change;
216
+ this.init = item.init || ((_) => {
217
+ //
218
+ });
219
+ this.hide = item.hide;
220
+ this.showClear = (_a = item.clear) !== null && _a !== void 0 ? _a : true;
221
+ this.persistanceDisabled = (_b = item.disablePersist) !== null && _b !== void 0 ? _b : false;
222
+ this.queryParamsDisabled = (_c = item.disableQueryParams) !== null && _c !== void 0 ? _c : false;
223
+ if (isFunction(item.values)) {
224
+ this._valuesFn = item.values;
225
+ }
226
+ else {
227
+ this.values = item.values;
228
+ }
229
+ }
230
+ _initDefaultModel() {
231
+ var _a;
232
+ const model = (_a = this.persistedValue) !== null && _a !== void 0 ? _a : this.defaultValue;
233
+ if (model !== undefined) {
234
+ this._setModel(model);
235
+ }
236
+ }
237
+ _clearValue(defaultValue = undefined) {
238
+ this.model = defaultValue !== null && defaultValue !== void 0 ? defaultValue : undefined;
239
+ }
240
+ }
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2RlbHMvaXRlbXMvYmFzZS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFNdEQsTUFBTSxPQUFnQixRQUFRO0lBOEI1QixZQUNFLFVBQWEsRUFDSCxpQkFBMEIsRUFDMUIsT0FBd0I7UUFEeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFTO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBZjFCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixjQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwQyxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFHckMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFPdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUlELElBQVcsTUFBTTtRQUNmLE9BQU8s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S0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsbUNBQUksS0FBSyxDQUFDO1FBRTVELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDOUI7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFUyxpQkFBaUI7O1FBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQUEsSUFBSSxDQUFDLGNBQWMsbUNBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztRQUV2RCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFUyxXQUFXLENBQUMsZUFBd0IsU0FBUztRQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksYUFBWixZQUFZLGNBQVosWUFBWSxHQUFJLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0NBSUYiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBmaW5hbGl6ZSxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB0eXBlIHsgRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2l0ZW0tdHlwZS5lbnVtJztcbmltcG9ydCB7IElGaWx0ZXJDb25maWdJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGaWx0ZXJEZWZhdWx0Rm4gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2l0ZW1zL2Jhc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGaWx0ZXJJdGVtRGVmYXVsdFJhbmdlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pdGVtcy9yYW5nZS5pbnRlcmZhY2UnO1xuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlSXRlbTxUIGV4dGVuZHMgSUZpbHRlckNvbmZpZ0l0ZW0+IHtcblxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBwdWJsaWMgY2hpcExhYmVsOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHVibGljIGhpZGU6IGJvb2xlYW47XG4gIHB1YmxpYyBkZWZhdWx0VmFsdWU6IGFueSB8IElGaWx0ZXJJdGVtRGVmYXVsdFJhbmdlO1xuICBwdWJsaWMgZGVmYXVsdFZhbHVlRm46IElGaWx0ZXJEZWZhdWx0Rm47XG4gIHB1YmxpYyBwZXJzaXN0ZWRWYWx1ZTogdW5rbm93bjtcbiAgcHVibGljIHNob3dDbGVhcjogYm9vbGVhbjtcbiAgcHVibGljIHBlcnNpc3RhbmNlRGlzYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBxdWVyeVBhcmFtc0Rpc2FibGVkOiBib29sZWFuO1xuICBwdWJsaWMgY2hhbmdlOiAoaXRlbTogQmFzZUl0ZW08VD4sIGZpbHRlcjogRmlsdGVyQ29tcG9uZW50KSA9PiB2b2lkO1xuICBwdWJsaWMgaW5pdDogKGl0ZW06IEJhc2VJdGVtPFQ+LCBmaWx0ZXI/KSA9PiB2b2lkO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBfdHlwZTogVFsndHlwZSddO1xuXG4gIHByb3RlY3RlZCBfbW9kZWw6IGFueTtcbiAgcHJvdGVjdGVkIF9wZW5kaW5nVmFsdWVzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfcGVuZGluZ0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX2xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByb3RlY3RlZCBfdmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcHJvdGVjdGVkIF92YWx1ZUNoYW5nZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcm90ZWN0ZWQgX3ZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICBwcm90ZWN0ZWQgX3ZhbHVlc0ZuOiAoa2V5d29yZD86IHN0cmluZywgZmlsdGVyPzogRmlsdGVyQ29tcG9uZW50KSA9PiBPYnNlcnZhYmxlPHVua25vd24+IHwgdW5rbm93bjtcblxuICBwcm90ZWN0ZWQgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9jbGVhciQgPSBuZXcgU3ViamVjdDx1bmtub3duPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGl0ZW1Db25maWc6IFQsXG4gICAgcHJvdGVjdGVkIF9hZGRpdGlvbmFsQ29uZmlnOiB1bmtub3duLFxuICAgIHByb3RlY3RlZCBfZmlsdGVyOiBGaWx0ZXJDb21wb25lbnQsXG4gICkge1xuICAgIHRoaXMuX3R5cGUgPSBpdGVtQ29uZmlnLnR5cGU7XG4gICAgdGhpcy5fcGFyc2VDb25maWcoaXRlbUNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHZhbHVlKCk7XG5cbiAgcHVibGljIGdldCBmaWx0ZXIoKTogRmlsdGVyQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICB9XG5cbiAgLy8vXG4gIHB1YmxpYyBnZXQgaXNUeXBlQXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkF1dG9Db21wbGV0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlQXV0b2NvbXBsZXRlQ2hpcHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQXV0b0NvbXBsZXRlQ2hpcHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZUNoaXBzKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkNoaXBzO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVDaGVja2JveCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5DaGVja2JveDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlU2VsZWN0KCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLlNlbGVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5EYXRlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVEYXRlUmFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuRGF0ZVJhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVSYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5SYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlRGF0ZVRpbWVSYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5EYXRlVGltZVJhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVEYXRlVGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5EYXRlVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlS2V5d29yZCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5LZXl3b3JkO1xuICB9XG4gIC8vLy9cblxuICBwdWJsaWMgZ2V0IGlzQ2hpcFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5tb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVzdHJveSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3kkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlKCk6IFRbJ3R5cGUnXSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1BlbmRpbmdWYWx1ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdWYWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1BlbmRpbmdEZWZhdWx0VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdEZWZhdWx0VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbW9kZWwodmFsdWUpIHtcbiAgICB0aGlzLl9zZXRNb2RlbCh2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdmFsdWVzKHZhbHVlcykge1xuICAgIHRoaXMuX3ZhbHVlcyQubmV4dCh2YWx1ZXMpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVzJCgpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVDaGFuZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjbGVhciQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsZWFyJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5pdGlhbGl6ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxpemVkO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IGxvYWRpbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgX2luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fcGVuZGluZ0RlZmF1bHRWYWx1ZSAmJiAhdGhpcy5fcGVuZGluZ1ZhbHVlcztcbiAgfVxuXG4gIHB1YmxpYyB2YWx1ZUNoYW5nZWQoKSB7XG4gICAgdGhpcy5fdmFsdWUkLm5leHQodGhpcy52YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5jaGFuZ2UpIHtcbiAgICAgIHRoaXMuY2hhbmdlKHRoaXMsIHRoaXMuX2ZpbHRlcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlJC5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBxdWVyeU9iamVjdCgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLm5hbWU7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHBhcmFtc1t0aGlzLm5hbWVdID0gdmFsdWUuam9pbignLCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXNbbmFtZV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcHVibGljIGdldCBwZXJzaXN0YW5jZU9iamVjdCgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlPYmplY3Q7XG4gIH1cblxuICBwdWJsaWMgbG9hZERlZmF1bHRWYWx1ZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHRoaXMuX3BlbmRpbmdEZWZhdWx0VmFsdWUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdFZhbHVlRm4oKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgICAgdGhpcy5faW5pdERlZmF1bHRNb2RlbCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlbmRpbmdEZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGluaXRWYWx1ZXMocGVyc2lzdGVkVmFsdWU6IHVua25vd24pIHtcbiAgICAvLyB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMucGVyc2lzdGVkVmFsdWUgPSBwZXJzaXN0ZWRWYWx1ZTtcbiAgICB0aGlzLl9pbml0RGVmYXVsdE1vZGVsKCk7XG5cbiAgICBjb25zdCBpc0F1dG9jb21wbGV0ZSA9IHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQXV0b0NvbXBsZXRlIHx8IHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQXV0b0NvbXBsZXRlQ2hpcHM7XG5cbiAgICBpZiAodGhpcy5fdmFsdWVzRm4gJiYgIWlzQXV0b2NvbXBsZXRlKSB7XG4gICAgICBjb25zdCB2YWx1ZXNSZXN1bHQgPSB0aGlzLl92YWx1ZXNGbihudWxsLCB0aGlzLl9maWx0ZXIpO1xuXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlc1Jlc3VsdCkpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlcyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlc1Jlc3VsdDtcblxuICAgICAgICAvLyBNb3ZlIHRvIHNvbWUgb3RoZXIgcGxhY2VcbiAgICAgICAgdGhpcy5faW5pdCgpO1xuICAgICAgICAvLyB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faW5pdCgpO1xuICAgICAgLy8gdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkQXN5bmNWYWx1ZXMocmVsb2FkID0gdHJ1ZSkge1xuICAgIGlmIChyZWxvYWQgfHwgKCF0aGlzLmxvYWRpbmcgJiYgdGhpcy5oYXNQZW5kaW5nVmFsdWVzKSkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgKHRoaXMuX3ZhbHVlc0ZuKG51bGwsIHRoaXMuX2ZpbHRlcikgYXMgT2JzZXJ2YWJsZTx1bmtub3duPilcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICAgIHRoaXMuX3BlbmRpbmdWYWx1ZXMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9pbml0KCk7XG4gICAgICAgICAgdGhpcy5fdmFsaWRhdGVNb2RlbCgpO1xuICAgICAgICAgIC8vIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoZGVmYXVsdFZhbHVlOiB1bmtub3duID0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMuaXNUeXBlUmFuZ2UgfHwgdGhpcy5pc1R5cGVEYXRlUmFuZ2UgfHwgdGhpcy5pc1R5cGVEYXRlVGltZVJhbmdlKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFxuICAgICAgICBGaWx0ZXIgJHt0aGlzLm5hbWV9IGNhbiBub3QgYmUgY2xlYXJlZCB3aXRoIC5jbGVhcigpIG1ldGhvZCFcbiAgICAgICAgVXNlIHNwZWNpYWwgLmNsZWFyUmFuZ2UoKSBvciBjbGVhckRhdGVSYW5nZSgpIGluc3RlYWQuXG4gICAgICBgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhciQubmV4dChkZWZhdWx0VmFsdWUpO1xuICAgIHRoaXMuX2NsZWFyVmFsdWUoZGVmYXVsdFZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGlwc0NvbnRlbnQodHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2V0TW9kZWwodmFsdWUpIHtcbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9wYXJzZUNvbmZpZyhpdGVtOiBUKSB7XG4gICAgdGhpcy5uYW1lID0gaXRlbS5uYW1lO1xuICAgIHRoaXMubGFiZWwgPSBpdGVtLmxhYmVsO1xuICAgIHRoaXMuY2hpcExhYmVsID0gaXRlbS5jaGlwTGFiZWw7XG5cbiAgICBpZiAodHlwZW9mIGl0ZW0uZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWVGbiA9IGl0ZW0uZGVmYXVsdCBhcyBJRmlsdGVyRGVmYXVsdEZuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGl0ZW0uZGVmYXVsdDtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZSA9IGl0ZW0uY2hhbmdlO1xuICAgIHRoaXMuaW5pdCA9IGl0ZW0uaW5pdCB8fCAoKF8pID0+IHtcbiAgICAgIC8vXG4gICAgfSk7XG4gICAgdGhpcy5oaWRlID0gaXRlbS5oaWRlO1xuICAgIHRoaXMuc2hvd0NsZWFyID0gaXRlbS5jbGVhciA/PyB0cnVlO1xuICAgIHRoaXMucGVyc2lzdGFuY2VEaXNhYmxlZCA9IGl0ZW0uZGlzYWJsZVBlcnNpc3QgPz8gZmFsc2U7XG4gICAgdGhpcy5xdWVyeVBhcmFtc0Rpc2FibGVkID0gaXRlbS5kaXNhYmxlUXVlcnlQYXJhbXMgPz8gZmFsc2U7XG5cbiAgICBpZiAoaXNGdW5jdGlvbihpdGVtLnZhbHVlcykpIHtcbiAgICAgIHRoaXMuX3ZhbHVlc0ZuID0gaXRlbS52YWx1ZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWVzID0gaXRlbS52YWx1ZXM7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9pbml0RGVmYXVsdE1vZGVsKCkge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5wZXJzaXN0ZWRWYWx1ZSA/PyB0aGlzLmRlZmF1bHRWYWx1ZTtcblxuICAgIGlmIChtb2RlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9zZXRNb2RlbChtb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9jbGVhclZhbHVlKGRlZmF1bHRWYWx1ZTogdW5rbm93biA9IHVuZGVmaW5lZCkge1xuICAgIHRoaXMubW9kZWwgPSBkZWZhdWx0VmFsdWUgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9pbml0KCk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfdmFsaWRhdGVNb2RlbCgpO1xufVxuIl19