@firestitch/list 15.0.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/app/components/body/body.component.d.ts +1 -1
  2. package/app/components/body/row/actions/actions.component.d.ts +1 -1
  3. package/app/components/body/row/cell/cell.component.d.ts +1 -1
  4. package/app/components/body/row/inline-action/inline-action.component.d.ts +1 -1
  5. package/app/components/body/row/menu-action/menu-action.component.d.ts +1 -1
  6. package/app/components/body/row/row.component.d.ts +1 -1
  7. package/app/components/footer/footer-row/footer-row.component.d.ts +1 -7
  8. package/app/components/footer/footer.component.d.ts +1 -1
  9. package/app/components/head/head.component.d.ts +1 -1
  10. package/app/components/list/list.component.d.ts +1 -1
  11. package/app/components/loader/loader.component.d.ts +1 -1
  12. package/app/components/pagination/pagination.component.d.ts +1 -1
  13. package/app/components/status/status.component.d.ts +1 -1
  14. package/app/directives/cell/cell.directive.d.ts +1 -1
  15. package/app/directives/column/column.directive.d.ts +1 -1
  16. package/app/directives/content-init/content-init.directive.d.ts +1 -1
  17. package/app/directives/draggable-list/draggable-list.directive.d.ts +1 -1
  18. package/app/directives/draggable-row/draggable-row.directive.d.ts +1 -1
  19. package/app/directives/footer/footer.directive.d.ts +1 -1
  20. package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +1 -1
  21. package/app/directives/header/header.directive.d.ts +1 -1
  22. package/app/models/column.model.d.ts +1 -1
  23. package/esm2022/app/classes/actions-controller.mjs +57 -0
  24. package/esm2022/app/classes/columns-controller.mjs +211 -0
  25. package/esm2022/app/classes/data-controller.mjs +348 -0
  26. package/esm2022/app/classes/external-params-controller.mjs +153 -0
  27. package/{esm2020 → esm2022}/app/classes/index.mjs +1 -1
  28. package/esm2022/app/classes/list-controller.mjs +712 -0
  29. package/esm2022/app/classes/pagination-controller.mjs +491 -0
  30. package/esm2022/app/classes/persistance-controller.mjs +19 -0
  31. package/esm2022/app/classes/reorder-controller.mjs +191 -0
  32. package/esm2022/app/classes/selection-controller.mjs +473 -0
  33. package/esm2022/app/classes/sorting-controller.mjs +207 -0
  34. package/esm2022/app/components/body/body.component.mjs +73 -0
  35. package/esm2022/app/components/body/row/actions/actions.component.mjs +102 -0
  36. package/esm2022/app/components/body/row/cell/cell.component.mjs +109 -0
  37. package/esm2022/app/components/body/row/inline-action/inline-action.component.mjs +32 -0
  38. package/esm2022/app/components/body/row/menu-action/menu-action.component.mjs +51 -0
  39. package/esm2022/app/components/body/row/row.component.mjs +341 -0
  40. package/esm2022/app/components/customize-cols/customize-cols.component.mjs +70 -0
  41. package/esm2022/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +16 -0
  42. package/esm2022/app/components/footer/footer-row/footer-row.component.mjs +17 -0
  43. package/esm2022/app/components/footer/footer.component.mjs +35 -0
  44. package/esm2022/app/components/head/head-cell/head-cell.component.mjs +32 -0
  45. package/esm2022/app/components/head/head.component.mjs +113 -0
  46. package/esm2022/app/components/list/list.component.mjs +407 -0
  47. package/esm2022/app/components/loader/loader.component.mjs +40 -0
  48. package/esm2022/app/components/manage-saved-filters/manage-saved-filters.component.mjs +78 -0
  49. package/esm2022/app/components/pagination/pagination.component.mjs +40 -0
  50. package/esm2022/app/components/saved-filters/saved-filters.component.mjs +32 -0
  51. package/esm2022/app/components/status/status.component.mjs +69 -0
  52. package/esm2022/app/directives/cell/cell.directive.mjs +21 -0
  53. package/esm2022/app/directives/column/column.directive.mjs +137 -0
  54. package/{esm2020 → esm2022}/app/directives/content/content.directive.mjs +4 -4
  55. package/esm2022/app/directives/content-init/content-init.directive.mjs +23 -0
  56. package/esm2022/app/directives/draggable-list/draggable-list.directive.mjs +344 -0
  57. package/esm2022/app/directives/draggable-row/draggable-row.directive.mjs +83 -0
  58. package/esm2022/app/directives/empty-state/empty-state.directive.mjs +13 -0
  59. package/esm2022/app/directives/footer/footer.directive.mjs +21 -0
  60. package/esm2022/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs +28 -0
  61. package/{esm2020 → esm2022}/app/directives/group-footer/group-footer.directive.mjs +4 -4
  62. package/{esm2020 → esm2022}/app/directives/group-header/group-header.directive.mjs +4 -4
  63. package/esm2022/app/directives/header/header.directive.mjs +21 -0
  64. package/esm2022/app/directives/heading/heading.directive.mjs +13 -0
  65. package/{esm2020 → esm2022}/app/directives/heading-container/heading-container.directive.mjs +4 -4
  66. package/{esm2020 → esm2022}/app/directives/index.mjs +1 -1
  67. package/esm2022/app/directives/subheading/subheading.directive.mjs +13 -0
  68. package/{esm2020 → esm2022}/app/enums/page-change-type.enum.mjs +1 -1
  69. package/{esm2020 → esm2022}/app/enums/pagination-strategy.enum.mjs +1 -1
  70. package/{esm2020 → esm2022}/app/enums/state.enum.mjs +1 -1
  71. package/{esm2020 → esm2022}/app/fs-list.module.mjs +89 -89
  72. package/{esm2020 → esm2022}/app/fs-list.providers.mjs +1 -1
  73. package/{esm2020 → esm2022}/app/interfaces/cellconfig.interface.mjs +1 -1
  74. package/{esm2020 → esm2022}/app/interfaces/draggable-list.interface.mjs +1 -1
  75. package/esm2022/app/interfaces/external-params.interface.mjs +2 -0
  76. package/{esm2020 → esm2022}/app/interfaces/index.mjs +1 -1
  77. package/esm2022/app/interfaces/pagination.interface.mjs +2 -0
  78. package/{esm2020 → esm2022}/app/interfaces/sorting-change-event.interface.mjs +1 -1
  79. package/{esm2020 → esm2022}/app/models/column-async-attribute.mjs +1 -1
  80. package/esm2022/app/models/column-attributes.mjs +139 -0
  81. package/esm2022/app/models/column.model.mjs +173 -0
  82. package/esm2022/app/models/row/base-row.mjs +25 -0
  83. package/esm2022/app/models/row/child-row.mjs +29 -0
  84. package/esm2022/app/models/row/group-footer-row.mjs +22 -0
  85. package/esm2022/app/models/row/group-row.mjs +45 -0
  86. package/{esm2020 → esm2022}/app/models/row/simple-row.mjs +1 -1
  87. package/esm2022/app/models/row-action.model.mjs +102 -0
  88. package/esm2022/app/models/row.mjs +90 -0
  89. package/esm2022/app/models/styleConfig.model.mjs +78 -0
  90. package/esm2022/app/pipes/action-label.mjs +17 -0
  91. package/{esm2020 → esm2022}/app/services/group-expand-notifier.service.mjs +7 -9
  92. package/{fesm2020 → fesm2022}/firestitch-list.mjs +731 -497
  93. package/fesm2022/firestitch-list.mjs.map +1 -0
  94. package/package.json +5 -11
  95. package/esm2020/app/classes/actions-controller.mjs +0 -55
  96. package/esm2020/app/classes/columns-controller.mjs +0 -206
  97. package/esm2020/app/classes/data-controller.mjs +0 -345
  98. package/esm2020/app/classes/external-params-controller.mjs +0 -147
  99. package/esm2020/app/classes/list-controller.mjs +0 -674
  100. package/esm2020/app/classes/pagination-controller.mjs +0 -491
  101. package/esm2020/app/classes/persistance-controller.mjs +0 -19
  102. package/esm2020/app/classes/reorder-controller.mjs +0 -182
  103. package/esm2020/app/classes/selection-controller.mjs +0 -466
  104. package/esm2020/app/classes/sorting-controller.mjs +0 -206
  105. package/esm2020/app/components/body/body.component.mjs +0 -64
  106. package/esm2020/app/components/body/row/actions/actions.component.mjs +0 -97
  107. package/esm2020/app/components/body/row/cell/cell.component.mjs +0 -107
  108. package/esm2020/app/components/body/row/inline-action/inline-action.component.mjs +0 -33
  109. package/esm2020/app/components/body/row/menu-action/menu-action.component.mjs +0 -46
  110. package/esm2020/app/components/body/row/row.component.mjs +0 -322
  111. package/esm2020/app/components/customize-cols/customize-cols.component.mjs +0 -68
  112. package/esm2020/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +0 -16
  113. package/esm2020/app/components/footer/footer-row/footer-row.component.mjs +0 -28
  114. package/esm2020/app/components/footer/footer.component.mjs +0 -31
  115. package/esm2020/app/components/head/head-cell/head-cell.component.mjs +0 -29
  116. package/esm2020/app/components/head/head.component.mjs +0 -103
  117. package/esm2020/app/components/list/list.component.mjs +0 -385
  118. package/esm2020/app/components/loader/loader.component.mjs +0 -40
  119. package/esm2020/app/components/manage-saved-filters/manage-saved-filters.component.mjs +0 -76
  120. package/esm2020/app/components/pagination/pagination.component.mjs +0 -37
  121. package/esm2020/app/components/saved-filters/saved-filters.component.mjs +0 -29
  122. package/esm2020/app/components/status/status.component.mjs +0 -64
  123. package/esm2020/app/directives/cell/cell.directive.mjs +0 -18
  124. package/esm2020/app/directives/column/column.directive.mjs +0 -121
  125. package/esm2020/app/directives/content-init/content-init.directive.mjs +0 -22
  126. package/esm2020/app/directives/draggable-list/draggable-list.directive.mjs +0 -330
  127. package/esm2020/app/directives/draggable-row/draggable-row.directive.mjs +0 -78
  128. package/esm2020/app/directives/empty-state/empty-state.directive.mjs +0 -13
  129. package/esm2020/app/directives/footer/footer.directive.mjs +0 -18
  130. package/esm2020/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs +0 -26
  131. package/esm2020/app/directives/header/header.directive.mjs +0 -18
  132. package/esm2020/app/directives/heading/heading.directive.mjs +0 -13
  133. package/esm2020/app/directives/subheading/subheading.directive.mjs +0 -13
  134. package/esm2020/app/interfaces/external-params.interface.mjs +0 -2
  135. package/esm2020/app/interfaces/pagination.interface.mjs +0 -2
  136. package/esm2020/app/models/column-attributes.mjs +0 -132
  137. package/esm2020/app/models/column.model.mjs +0 -164
  138. package/esm2020/app/models/row/base-row.mjs +0 -23
  139. package/esm2020/app/models/row/child-row.mjs +0 -28
  140. package/esm2020/app/models/row/group-footer-row.mjs +0 -21
  141. package/esm2020/app/models/row/group-row.mjs +0 -45
  142. package/esm2020/app/models/row-action.model.mjs +0 -90
  143. package/esm2020/app/models/row.mjs +0 -89
  144. package/esm2020/app/models/styleConfig.model.mjs +0 -76
  145. package/esm2020/app/pipes/action-label.mjs +0 -17
  146. package/fesm2015/firestitch-list.mjs +0 -5802
  147. package/fesm2015/firestitch-list.mjs.map +0 -1
  148. package/fesm2020/firestitch-list.mjs.map +0 -1
  149. /package/{esm2020 → esm2022}/app/enums/action-type.enum.mjs +0 -0
  150. /package/{esm2020 → esm2022}/app/enums/row-type.enum.mjs +0 -0
  151. /package/{esm2020 → esm2022}/app/interfaces/column-config.interface.mjs +0 -0
  152. /package/{esm2020 → esm2022}/app/interfaces/listconfig.interface.mjs +0 -0
  153. /package/{esm2020 → esm2022}/app/interfaces/pagination-state.interface.mjs +0 -0
  154. /package/{esm2020 → esm2022}/app/pipes/index.mjs +0 -0
  155. /package/{esm2020 → esm2022}/firestitch-list.mjs +0 -0
  156. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -0,0 +1,491 @@
1
+ import { BehaviorSubject, Subject } from 'rxjs';
2
+ import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
3
+ import { PageChangeType } from '../enums/page-change-type.enum';
4
+ import { PaginationStrategy } from '../enums/pagination-strategy.enum';
5
+ export class PaginationController {
6
+ limit = 25;
7
+ records;
8
+ manual = false;
9
+ page = 1; // Active page
10
+ offset = 0;
11
+ displayed = 0;
12
+ _pages$ = new BehaviorSubject(0); // Total pages
13
+ _strategy = PaginationStrategy.None;
14
+ _removedRows = 0;
15
+ _pageChanged$ = new Subject();
16
+ _pageReset$ = new Subject();
17
+ _onDestroy$ = new Subject();
18
+ _loadMoreConfig;
19
+ _limits = [10, 25, 50, 100, 200];
20
+ // Total pages
21
+ set pages(value) {
22
+ this._pages$.next(value);
23
+ }
24
+ get pages() {
25
+ return this._pages$.getValue();
26
+ }
27
+ get pages$() {
28
+ return this._pages$
29
+ .pipe(distinctUntilChanged());
30
+ }
31
+ /**
32
+ * Fire if page was changed
33
+ */
34
+ get pageChanged$() {
35
+ return this._pageChanged$.pipe(takeUntil(this._onDestroy$));
36
+ }
37
+ get pageReset$() {
38
+ return this._pageReset$.asObservable();
39
+ }
40
+ /**
41
+ * Get enabled
42
+ */
43
+ get enabled() {
44
+ return !this.hasNoneStrategy;
45
+ }
46
+ /**
47
+ * Get Limits
48
+ */
49
+ get limits() {
50
+ return this._limits;
51
+ }
52
+ /**
53
+ * Set limits, update pages array and set new limit per page
54
+ *
55
+ * @param value
56
+ */
57
+ set limits(value) {
58
+ this._limits = value;
59
+ if (this.limits.length > 0 && this.limits.indexOf(this.limit) === -1) {
60
+ this.limit = this.limits[0];
61
+ }
62
+ else if (this.limits.length === 0) {
63
+ this.limit = this.records;
64
+ }
65
+ }
66
+ /**
67
+ * Get query for request
68
+ */
69
+ get query() {
70
+ switch (this.strategy) {
71
+ case PaginationStrategy.Page:
72
+ return this.queryPageStrategy;
73
+ case PaginationStrategy.Offset:
74
+ return this.queryOffsetStrategy;
75
+ }
76
+ return {};
77
+ }
78
+ get loadMoreQuery() {
79
+ switch (this.strategy) {
80
+ case PaginationStrategy.Page: {
81
+ return this.query;
82
+ }
83
+ case PaginationStrategy.Offset: {
84
+ const query = this.queryOffsetStrategy;
85
+ query.limit = query.offset + query.limit;
86
+ query.offset = 0;
87
+ return query;
88
+ }
89
+ }
90
+ return {};
91
+ }
92
+ /**
93
+ * Query for Page Strategy
94
+ */
95
+ get queryPageStrategy() {
96
+ return this.hasNoneStrategy
97
+ ? {}
98
+ : {
99
+ page: this.page || 1,
100
+ limit: this.limit || 10,
101
+ };
102
+ }
103
+ /**
104
+ * Query for Offset Strategy
105
+ */
106
+ get queryOffsetStrategy() {
107
+ const page = this.page - 1 || 0;
108
+ const limit = this.limit || 5;
109
+ return {
110
+ offset: page * limit,
111
+ limit,
112
+ };
113
+ }
114
+ /**
115
+ * Get query for load only count of deleted rows
116
+ */
117
+ get loadDeletedOffsetQuery() {
118
+ const paginationOffset = this.limit * this.page;
119
+ const actualOffset = Math.min(this.records, paginationOffset);
120
+ const offset = Math.max(0, actualOffset - this._removedRows);
121
+ return {
122
+ offset,
123
+ limit: this._removedRows,
124
+ };
125
+ }
126
+ get initialized() {
127
+ return !!this.pages;
128
+ }
129
+ get strategy() {
130
+ return this._strategy;
131
+ }
132
+ set strategy(strategy) {
133
+ this._strategy = (strategy === undefined) ? PaginationStrategy.Page : strategy;
134
+ }
135
+ /**
136
+ * Check if pagination in Page Strategy Mode
137
+ */
138
+ get hasPageStrategy() {
139
+ return this.strategy === PaginationStrategy.Page;
140
+ }
141
+ /**
142
+ * Check if pagination in Offset Strategy Mode
143
+ */
144
+ get hasOffsetStrategy() {
145
+ return this.strategy === PaginationStrategy.Offset;
146
+ }
147
+ /**
148
+ * Check if pagination in None Strategy Mode
149
+ */
150
+ get hasNoneStrategy() {
151
+ return this.strategy === PaginationStrategy.None;
152
+ }
153
+ /**
154
+ * If prev page can be activated
155
+ *
156
+ */
157
+ get hasPrevPage() {
158
+ switch (this.strategy) {
159
+ case PaginationStrategy.Page:
160
+ return this._hasPrevPagePageStrategy;
161
+ case PaginationStrategy.Offset:
162
+ return this._hasPrevPageOffsetStrategy;
163
+ }
164
+ return false;
165
+ }
166
+ /**
167
+ * If next page can be activated
168
+ */
169
+ get hasNextPage() {
170
+ switch (this.strategy) {
171
+ case PaginationStrategy.Page:
172
+ return this._hasNextPagePageStrategy;
173
+ case PaginationStrategy.Offset:
174
+ return this._hasNextPageOffsetStrategy;
175
+ }
176
+ return false;
177
+ }
178
+ get loadMoreEnabled() {
179
+ return this._loadMoreConfig.enabled;
180
+ }
181
+ get loadMoreLabel() {
182
+ return this._loadMoreConfig.label;
183
+ }
184
+ get loadMoreButtonColor() {
185
+ return this._loadMoreConfig.buttonColor;
186
+ }
187
+ get loadMoreButtonClass() {
188
+ if (this._loadMoreConfig.buttonType === 'basic') {
189
+ return '';
190
+ }
191
+ return `mat-${this._loadMoreConfig.buttonType}-button`;
192
+ }
193
+ get loadMoreButtonType() {
194
+ return this._loadMoreConfig.buttonType;
195
+ }
196
+ /**
197
+ * SP-T1974
198
+ * Showing 26-50 of 333 results sorted by Name, Ascending
199
+ * Showing 0 results sorted by Name, Ascending
200
+ */
201
+ get statusLabel() {
202
+ const current = (this.page - 1) * this.limit;
203
+ const from = current + 1;
204
+ const to = Math.min(this.records, current + this.limit);
205
+ return `${from}-${to}`;
206
+ }
207
+ get state() {
208
+ return {
209
+ enabled: this.enabled,
210
+ strategy: this.strategy,
211
+ page: this.page,
212
+ offset: this.offset,
213
+ limit: this.limit,
214
+ records: this.records,
215
+ displayed: this.displayed,
216
+ };
217
+ }
218
+ initWithConfig(config, loadMore) {
219
+ if (config) {
220
+ if (config.limits) {
221
+ this.limits = config.limits;
222
+ }
223
+ if (config.limit) {
224
+ this.limit = config.limit;
225
+ }
226
+ this.strategy = config.strategy;
227
+ }
228
+ this.setLoadMore(loadMore);
229
+ }
230
+ /**
231
+ * If pagination has prev page when Page Strategy
232
+ */
233
+ get _hasPrevPagePageStrategy() {
234
+ return this.page > 1 && this.pages > 1;
235
+ }
236
+ /**
237
+ * If pagination has prev page when Offset Strategy
238
+ */
239
+ get _hasPrevPageOffsetStrategy() {
240
+ return this.offset >= this.limit && this.records > 1;
241
+ }
242
+ /**
243
+ * If pagination has next page when Page Strategy
244
+ */
245
+ get _hasNextPagePageStrategy() {
246
+ return this.page < this.pages && this.pages > 1;
247
+ }
248
+ /**
249
+ * If pagination has next page when Offset Strategy
250
+ */
251
+ get _hasNextPageOffsetStrategy() {
252
+ return (this.offset + this.limit) < this.records && this.records > 1;
253
+ }
254
+ /**
255
+ * Update paging config and all related fields
256
+ *
257
+ * @param config
258
+ * @param displayedRecords
259
+ * @param loadMoreOperation
260
+ */
261
+ updatePaging(config, displayedRecords = 0, loadMoreOperation = false) {
262
+ if (!loadMoreOperation) {
263
+ this._fromParams(config);
264
+ this.displayed = displayedRecords;
265
+ }
266
+ else {
267
+ this.records = config.records;
268
+ if (this.records < this.displayed) {
269
+ this.displayed = this.records;
270
+ }
271
+ this._removedRows = 0;
272
+ }
273
+ this._updateTotalPages();
274
+ }
275
+ // /**
276
+ // * Update paging when data source not remove
277
+ // * @param {any[]} rows
278
+ // */
279
+ /*public updatePagingManual(rows: any[]) {
280
+ if (Array.isArray(rows) && rows.length > 0) {
281
+ this.records = rows.length;
282
+ this.pages = Math.ceil(rows.length / this.limit);
283
+ }
284
+
285
+ this.updatePagesArray();
286
+ this.updateDisplayed();
287
+ }*/
288
+ /**
289
+ * Update pages array with new pages count
290
+ */
291
+ // public updatePagesArray() {
292
+ // const MIDDLE = 2;
293
+ // const pagesArr = [];
294
+ // let from = 0;
295
+ // let to = 0;
296
+ // if (this.page < MIDDLE) {
297
+ // from = MIDDLE - 1;
298
+ // to = MIDDLE + 1;
299
+ // } else if (this.page >= MIDDLE && this.page <= this.pages - MIDDLE + 1) {
300
+ // from = this.page - 1;
301
+ // to = this.page + 1;
302
+ // } else if (this.page > this.pages - MIDDLE + 1) {
303
+ // from = this.pages - MIDDLE - 1;
304
+ // to = this.pages;
305
+ // }
306
+ // if (!this.pages || this.pages < 5) {
307
+ // from = 1;
308
+ // to = this.pages || 0;
309
+ // }
310
+ // for (let i = from; i <= to; i++) {
311
+ // pagesArr.push(i);
312
+ // }
313
+ // this.pagesArray = Object.assign([], pagesArr);
314
+ // }
315
+ setLoadMore(config) {
316
+ const loadMoreConfig = typeof config === 'boolean' ?
317
+ {
318
+ enabled: !!config,
319
+ } :
320
+ (config === undefined ? {} : {
321
+ ...config,
322
+ enabled: true,
323
+ });
324
+ this._loadMoreConfig = {
325
+ enabled: false,
326
+ label: 'Load More',
327
+ buttonType: 'basic',
328
+ ...loadMoreConfig,
329
+ };
330
+ }
331
+ /**
332
+ * Update dispayed records counter
333
+ */
334
+ // public updateDisplayed() {
335
+ // this.displayed = this.getVisibleRecords();
336
+ // }
337
+ /**
338
+ * Return count of records that could be shown on page
339
+ */
340
+ // public getVisibleRecords() {
341
+ // const diff = this.hasOffsetStrategy
342
+ // ? this.records - this.offset
343
+ // : this.limit;
344
+ //
345
+ // return diff < this.limit
346
+ // ? diff
347
+ // : this.displayed;
348
+ // }
349
+ getVisibleRecords() {
350
+ return this.displayed;
351
+ }
352
+ /**
353
+ * Set new limit
354
+ *
355
+ * @param limit
356
+ */
357
+ setLimit(limit) {
358
+ this.limit = limit;
359
+ this.resetPaging();
360
+ this._pageChanged$.next({
361
+ type: PageChangeType.LimitChanged,
362
+ payload: limit,
363
+ });
364
+ }
365
+ /**
366
+ * If page is activate page
367
+ *
368
+ * @param page
369
+ */
370
+ isActive(page) {
371
+ return page === this.page;
372
+ }
373
+ /**
374
+ * Go to page
375
+ *
376
+ * @param page
377
+ */
378
+ goToPage(page) {
379
+ if (page >= 1 && this.page !== page) {
380
+ this.page = page;
381
+ this._updateOffset();
382
+ this._pageChanged$.next({
383
+ type: PageChangeType.Default,
384
+ payload: page,
385
+ });
386
+ }
387
+ }
388
+ /**
389
+ * Reset paging like it was just initialized
390
+ */
391
+ resetPaging() {
392
+ this.page = 1;
393
+ this.offset = 0;
394
+ }
395
+ /**
396
+ * Go to next page
397
+ */
398
+ goNext() {
399
+ if (this.hasNextPage) {
400
+ this.page++;
401
+ this._updateOffset();
402
+ this._pageChanged$.next({
403
+ type: PageChangeType.Default,
404
+ payload: this.page,
405
+ });
406
+ }
407
+ }
408
+ /**
409
+ * Go to first page
410
+ */
411
+ goFirst() {
412
+ if (this.page > 1) {
413
+ this.page = 1;
414
+ this._updateOffset();
415
+ this._pageChanged$.next({
416
+ type: PageChangeType.Default,
417
+ payload: this.page,
418
+ });
419
+ }
420
+ }
421
+ /**
422
+ * Go to prev page
423
+ */
424
+ goPrev() {
425
+ if (this.page > 1) {
426
+ this.page--;
427
+ this._updateOffset();
428
+ this._pageChanged$.next({
429
+ type: PageChangeType.Default,
430
+ payload: this.page,
431
+ });
432
+ }
433
+ }
434
+ /**
435
+ * Go to last page
436
+ */
437
+ goLast() {
438
+ if (this.page !== this.pages) {
439
+ this.page = this.pages;
440
+ this._updateOffset();
441
+ this._pageChanged$.next({
442
+ type: PageChangeType.Default,
443
+ payload: this.page,
444
+ });
445
+ }
446
+ }
447
+ /**
448
+ * Update count of deleted rows. This count will be applied for offset calc
449
+ *
450
+ * @param count
451
+ */
452
+ removeRows(count) {
453
+ this._removedRows += count;
454
+ }
455
+ updatePagination() {
456
+ this._updateTotalPages();
457
+ }
458
+ /**
459
+ * Destroy
460
+ */
461
+ destroy() {
462
+ this._onDestroy$.next(null);
463
+ this._onDestroy$.complete();
464
+ }
465
+ /**
466
+ * Update paging state
467
+ *
468
+ * @param params
469
+ */
470
+ _fromParams(params) {
471
+ if (!this.loadMoreEnabled) {
472
+ this.limit = params.limit ?? 25;
473
+ }
474
+ this.records = params.records;
475
+ this.manual = params.manual;
476
+ this.pages = params.pages || 0;
477
+ }
478
+ /**
479
+ * Calc and update offset
480
+ */
481
+ _updateOffset() {
482
+ this.offset = this.limit * (this.page - 1);
483
+ }
484
+ /**
485
+ * Calc and update total count of pages
486
+ */
487
+ _updateTotalPages() {
488
+ this.pages = Math.ceil(this.records / this.limit);
489
+ }
490
+ }
491
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL3BhZ2luYXRpb24tY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBVXZFLE1BQU0sT0FBTyxvQkFBb0I7SUFFeEIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLE9BQU8sQ0FBUztJQUNoQixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRWYsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWM7SUFDeEIsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVYLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFYixPQUFPLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjO0lBRXhELFNBQVMsR0FBdUIsa0JBQWtCLENBQUMsSUFBSSxDQUFDO0lBQ3hELFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakIsYUFBYSxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFDMUMsV0FBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDbEMsV0FBVyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFFNUIsZUFBZSxDQUF1QjtJQUN0QyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFekMsY0FBYztJQUNkLElBQVcsS0FBSyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLE9BQU8s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LGlCQUFpQjtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuaW1wb3J0IHsgUGFnZUNoYW5nZVR5cGUgfSBmcm9tICcuLi9lbnVtcy9wYWdlLWNoYW5nZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgUGFnaW5hdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi4vZW51bXMvcGFnaW5hdGlvbi1zdHJhdGVneS5lbnVtJztcbmltcG9ydCB7XG4gIEZzTGlzdExvYWRNb3JlQ29uZmlnLFxuICBGc1BhZ2luZyxcbiAgUGFnZUNoYW5nZSxcbiAgUXVlcnlPZmZzZXRTdHJhdGVneSxcbiAgUXVlcnlQYWdlU3RyYXRlZ3ksXG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgSVBhZ2luYXRpb25TdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGFnaW5hdGlvbi1zdGF0ZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbnRyb2xsZXIge1xuXG4gIHB1YmxpYyBsaW1pdCA9IDI1O1xuICBwdWJsaWMgcmVjb3JkczogbnVtYmVyO1xuICBwdWJsaWMgbWFudWFsID0gZmFsc2U7XG5cbiAgcHVibGljIHBhZ2UgPSAxOyAvLyBBY3RpdmUgcGFnZVxuICBwdWJsaWMgb2Zmc2V0ID0gMDtcblxuICBwdWJsaWMgZGlzcGxheWVkID0gMDtcblxuICBwcml2YXRlIF9wYWdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7IC8vIFRvdGFsIHBhZ2VzXG5cbiAgcHJpdmF0ZSBfc3RyYXRlZ3k6IFBhZ2luYXRpb25TdHJhdGVneSA9IFBhZ2luYXRpb25TdHJhdGVneS5Ob25lO1xuICBwcml2YXRlIF9yZW1vdmVkUm93cyA9IDA7XG5cbiAgcHJpdmF0ZSBfcGFnZUNoYW5nZWQkID0gbmV3IFN1YmplY3Q8UGFnZUNoYW5nZT4oKTtcbiAgcHJpdmF0ZSBfcGFnZVJlc2V0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX29uRGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgX2xvYWRNb3JlQ29uZmlnOiBGc0xpc3RMb2FkTW9yZUNvbmZpZztcbiAgcHJpdmF0ZSBfbGltaXRzID0gWzEwLCAyNSwgNTAsIDEwMCwgMjAwXTtcblxuICAvLyBUb3RhbCBwYWdlc1xuICBwdWJsaWMgc2V0IHBhZ2VzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlcyQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhZ2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYWdlcyQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZXMkXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZSBpZiBwYWdlIHdhcyBjaGFuZ2VkXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBhZ2VDaGFuZ2VkJCgpOiBPYnNlcnZhYmxlPFBhZ2VDaGFuZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUNoYW5nZWQkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFnZVJlc2V0JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZVJlc2V0JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZW5hYmxlZFxuICAgKi9cbiAgcHVibGljIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5oYXNOb25lU3RyYXRlZ3k7XG4gIH1cblxuICAvKipcbiAgICogR2V0IExpbWl0c1xuICAgKi9cbiAgcHVibGljIGdldCBsaW1pdHMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9saW1pdHM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGxpbWl0cywgdXBkYXRlIHBhZ2VzIGFycmF5IGFuZCBzZXQgbmV3IGxpbWl0IHBlciBwYWdlXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHNldCBsaW1pdHModmFsdWUpIHtcbiAgICB0aGlzLl9saW1pdHMgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLmxpbWl0cy5sZW5ndGggPiAwICYmIHRoaXMubGltaXRzLmluZGV4T2YodGhpcy5saW1pdCkgPT09IC0xKSB7XG4gICAgICB0aGlzLmxpbWl0ID0gdGhpcy5saW1pdHNbMF07XG4gICAgfSBlbHNlIGlmICh0aGlzLmxpbWl0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMubGltaXQgPSB0aGlzLnJlY29yZHM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBxdWVyeSBmb3IgcmVxdWVzdFxuICAgKi9cbiAgcHVibGljIGdldCBxdWVyeSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuc3RyYXRlZ3kpIHtcbiAgICAgIGNhc2UgUGFnaW5hdGlvblN0cmF0ZWd5LlBhZ2U6XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5UGFnZVN0cmF0ZWd5O1xuICAgICAgY2FzZSBQYWdpbmF0aW9uU3RyYXRlZ3kuT2Zmc2V0OlxuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeU9mZnNldFN0cmF0ZWd5O1xuICAgIH1cblxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZE1vcmVRdWVyeSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuc3RyYXRlZ3kpIHtcbiAgICAgIGNhc2UgUGFnaW5hdGlvblN0cmF0ZWd5LlBhZ2U6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgUGFnaW5hdGlvblN0cmF0ZWd5Lk9mZnNldDoge1xuICAgICAgICBjb25zdCBxdWVyeSA9IHRoaXMucXVlcnlPZmZzZXRTdHJhdGVneTtcblxuICAgICAgICBxdWVyeS5saW1pdCA9IHF1ZXJ5Lm9mZnNldCArIHF1ZXJ5LmxpbWl0O1xuICAgICAgICBxdWVyeS5vZmZzZXQgPSAwO1xuXG4gICAgICAgIHJldHVybiBxdWVyeTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKipcbiAgICogUXVlcnkgZm9yIFBhZ2UgU3RyYXRlZ3lcbiAgICovXG4gIHB1YmxpYyBnZXQgcXVlcnlQYWdlU3RyYXRlZ3koKTogUXVlcnlQYWdlU3RyYXRlZ3kge1xuICAgIHJldHVybiB0aGlzLmhhc05vbmVTdHJhdGVneVxuICAgICAgPyB7fVxuICAgICAgOiB7XG4gICAgICAgIHBhZ2U6IHRoaXMucGFnZSB8fCAxLFxuICAgICAgICBsaW1pdDogdGhpcy5saW1pdCB8fCAxMCxcbiAgICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUXVlcnkgZm9yIE9mZnNldCBTdHJhdGVneVxuICAgKi9cbiAgcHVibGljIGdldCBxdWVyeU9mZnNldFN0cmF0ZWd5KCk6IFF1ZXJ5T2Zmc2V0U3RyYXRlZ3kge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnBhZ2UgLSAxIHx8IDA7XG4gICAgY29uc3QgbGltaXQgPSB0aGlzLmxpbWl0IHx8IDU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb2Zmc2V0OiBwYWdlICogbGltaXQsXG4gICAgICBsaW1pdCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBxdWVyeSBmb3IgbG9hZCBvbmx5IGNvdW50IG9mIGRlbGV0ZWQgcm93c1xuICAgKi9cbiAgcHVibGljIGdldCBsb2FkRGVsZXRlZE9mZnNldFF1ZXJ5KCkge1xuICAgIGNvbnN0IHBhZ2luYXRpb25PZmZzZXQgPSB0aGlzLmxpbWl0ICogdGhpcy5wYWdlO1xuICAgIGNvbnN0IGFjdHVhbE9mZnNldCA9IE1hdGgubWluKHRoaXMucmVjb3JkcywgcGFnaW5hdGlvbk9mZnNldCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gTWF0aC5tYXgoMCwgYWN0dWFsT2Zmc2V0IC0gdGhpcy5fcmVtb3ZlZFJvd3MpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9mZnNldCxcbiAgICAgIGxpbWl0OiB0aGlzLl9yZW1vdmVkUm93cyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldCBpbml0aWFsaXplZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnBhZ2VzO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJhdGVneSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RyYXRlZ3k7XG4gIH1cblxuICBwdWJsaWMgc2V0IHN0cmF0ZWd5KHN0cmF0ZWd5OiBQYWdpbmF0aW9uU3RyYXRlZ3kpIHtcbiAgICB0aGlzLl9zdHJhdGVneSA9IChzdHJhdGVneSA9PT0gdW5kZWZpbmVkKSA/IFBhZ2luYXRpb25TdHJhdGVneS5QYWdlIDogc3RyYXRlZ3k7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgcGFnaW5hdGlvbiBpbiBQYWdlIFN0cmF0ZWd5IE1vZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzUGFnZVN0cmF0ZWd5KCkge1xuICAgIHJldHVybiB0aGlzLnN0cmF0ZWd5ID09PSBQYWdpbmF0aW9uU3RyYXRlZ3kuUGFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBwYWdpbmF0aW9uIGluIE9mZnNldCBTdHJhdGVneSBNb2RlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGhhc09mZnNldFN0cmF0ZWd5KCkge1xuICAgIHJldHVybiB0aGlzLnN0cmF0ZWd5ID09PSBQYWdpbmF0aW9uU3RyYXRlZ3kuT2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHBhZ2luYXRpb24gaW4gTm9uZSBTdHJhdGVneSBNb2RlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGhhc05vbmVTdHJhdGVneSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdHJhdGVneSA9PT0gUGFnaW5hdGlvblN0cmF0ZWd5Lk5vbmU7XG4gIH1cblxuICAvKipcbiAgICogSWYgcHJldiBwYWdlIGNhbiBiZSBhY3RpdmF0ZWRcbiAgICpcbiAgICovXG4gIHB1YmxpYyAgZ2V0IGhhc1ByZXZQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy5zdHJhdGVneSkge1xuICAgICAgY2FzZSBQYWdpbmF0aW9uU3RyYXRlZ3kuUGFnZTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1ByZXZQYWdlUGFnZVN0cmF0ZWd5O1xuICAgICAgY2FzZSBQYWdpbmF0aW9uU3RyYXRlZ3kuT2Zmc2V0OlxuICAgICAgICByZXR1cm4gdGhpcy5faGFzUHJldlBhZ2VPZmZzZXRTdHJhdGVneTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSWYgbmV4dCBwYWdlIGNhbiBiZSBhY3RpdmF0ZWRcbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzTmV4dFBhZ2UoKTogYm9vbGVhbiB7IC8vIE5lZWQgdG8gY2hlY2sgaWYgcGFnZXMgPT09IHBhZ2UgJiYgcGFnZSA9PT0gMVxuICAgIHN3aXRjaCAodGhpcy5zdHJhdGVneSkge1xuICAgICAgY2FzZSBQYWdpbmF0aW9uU3RyYXRlZ3kuUGFnZTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc05leHRQYWdlUGFnZVN0cmF0ZWd5O1xuICAgICAgY2FzZSBQYWdpbmF0aW9uU3RyYXRlZ3kuT2Zmc2V0OlxuICAgICAgICByZXR1cm4gdGhpcy5faGFzTmV4dFBhZ2VPZmZzZXRTdHJhdGVneTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRNb3JlRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZE1vcmVDb25maWcuZW5hYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZE1vcmVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2FkTW9yZUNvbmZpZy5sYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZE1vcmVCdXR0b25Db2xvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2FkTW9yZUNvbmZpZy5idXR0b25Db2xvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZE1vcmVCdXR0b25DbGFzcygpOiBzdHJpbmcge1xuICAgIGlmKCB0aGlzLl9sb2FkTW9yZUNvbmZpZy5idXR0b25UeXBlID09PSAnYmFzaWMnICkge1xuICAgICAgcmV0dXJuICcnOyBcbiAgICB9XG5cbiAgICByZXR1cm4gYG1hdC0ke3RoaXMuX2xvYWRNb3JlQ29uZmlnLmJ1dHRvblR5cGV9LWJ1dHRvbmA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRNb3JlQnV0dG9uVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2FkTW9yZUNvbmZpZy5idXR0b25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNQLVQxOTc0XG4gICAqIFNob3dpbmcgMjYtNTAgb2YgMzMzIHJlc3VsdHMgc29ydGVkIGJ5IE5hbWUsIEFzY2VuZGluZ1xuICAgKiBTaG93aW5nIDAgcmVzdWx0cyBzb3J0ZWQgYnkgTmFtZSwgQXNjZW5kaW5nXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN0YXR1c0xhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY3VycmVudCA9ICh0aGlzLnBhZ2UgLSAxKSAqIHRoaXMubGltaXQ7XG4gICAgY29uc3QgZnJvbSA9IGN1cnJlbnQgKyAxO1xuICAgIGNvbnN0IHRvID0gTWF0aC5taW4odGhpcy5yZWNvcmRzLCBjdXJyZW50ICsgdGhpcy5saW1pdCk7XG5cbiAgICByZXR1cm4gYCR7ZnJvbX0tJHt0b31gO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZSgpOiBJUGFnaW5hdGlvblN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5hYmxlZDogdGhpcy5lbmFibGVkLFxuICAgICAgc3RyYXRlZ3k6IHRoaXMuc3RyYXRlZ3ksXG4gICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgbGltaXQ6IHRoaXMubGltaXQsXG4gICAgICByZWNvcmRzOiB0aGlzLnJlY29yZHMsXG4gICAgICBkaXNwbGF5ZWQ6IHRoaXMuZGlzcGxheWVkLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaW5pdFdpdGhDb25maWcoXG4gICAgY29uZmlnOiBGc1BhZ2luZyB8IGZhbHNlLFxuICAgIGxvYWRNb3JlOiBGc0xpc3RMb2FkTW9yZUNvbmZpZyB8IGJvb2xlYW4sXG4gICkge1xuXG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgaWYgKGNvbmZpZy5saW1pdHMpIHtcbiAgICAgICAgdGhpcy5saW1pdHMgPSBjb25maWcubGltaXRzO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLmxpbWl0KSB7XG4gICAgICAgIHRoaXMubGltaXQgPSBjb25maWcubGltaXQ7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RyYXRlZ3kgPSBjb25maWcuc3RyYXRlZ3k7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuc2V0TG9hZE1vcmUobG9hZE1vcmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHBhZ2luYXRpb24gaGFzIHByZXYgcGFnZSB3aGVuIFBhZ2UgU3RyYXRlZ3lcbiAgICovXG4gIHByaXZhdGUgZ2V0IF9oYXNQcmV2UGFnZVBhZ2VTdHJhdGVneSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlID4gMSAmJiB0aGlzLnBhZ2VzID4gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBwYWdpbmF0aW9uIGhhcyBwcmV2IHBhZ2Ugd2hlbiBPZmZzZXQgU3RyYXRlZ3lcbiAgICovXG4gIHByaXZhdGUgZ2V0IF9oYXNQcmV2UGFnZU9mZnNldFN0cmF0ZWd5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9mZnNldCA+PSB0aGlzLmxpbWl0ICYmIHRoaXMucmVjb3JkcyA+IDE7XG4gIH1cblxuICAvKipcbiAgICogSWYgcGFnaW5hdGlvbiBoYXMgbmV4dCBwYWdlIHdoZW4gUGFnZSBTdHJhdGVneVxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgX2hhc05leHRQYWdlUGFnZVN0cmF0ZWd5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2UgPCB0aGlzLnBhZ2VzICYmIHRoaXMucGFnZXMgPiAxO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHBhZ2luYXRpb24gaGFzIG5leHQgcGFnZSB3aGVuIE9mZnNldCBTdHJhdGVneVxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgX2hhc05leHRQYWdlT2Zmc2V0U3RyYXRlZ3koKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLm9mZnNldCArIHRoaXMubGltaXQpIDwgdGhpcy5yZWNvcmRzICYmIHRoaXMucmVjb3JkcyA+IDE7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHBhZ2luZyBjb25maWcgYW5kIGFsbCByZWxhdGVkIGZpZWxkc1xuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqIEBwYXJhbSBkaXNwbGF5ZWRSZWNvcmRzXG4gICAqIEBwYXJhbSBsb2FkTW9yZU9wZXJhdGlvblxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVBhZ2luZyhjb25maWcsIGRpc3BsYXllZFJlY29yZHMgPSAwLCBsb2FkTW9yZU9wZXJhdGlvbiA9IGZhbHNlKSB7XG4gICAgaWYgKCFsb2FkTW9yZU9wZXJhdGlvbikge1xuICAgICAgdGhpcy5fZnJvbVBhcmFtcyhjb25maWcpO1xuICAgICAgdGhpcy5kaXNwbGF5ZWQgPSBkaXNwbGF5ZWRSZWNvcmRzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlY29yZHMgPSBjb25maWcucmVjb3JkcztcblxuICAgICAgaWYgKHRoaXMucmVjb3JkcyA8IHRoaXMuZGlzcGxheWVkKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkID0gdGhpcy5yZWNvcmRzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZW1vdmVkUm93cyA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlVG90YWxQYWdlcygpO1xuICB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIFVwZGF0ZSBwYWdpbmcgd2hlbiBkYXRhIHNvdXJjZSBub3QgcmVtb3ZlXG4gIC8vICAqIEBwYXJhbSB7YW55W119IHJvd3NcbiAgLy8gICovXG4gIC8qcHVibGljIHVwZGF0ZVBhZ2luZ01hbnVhbChyb3dzOiBhbnlbXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpICYmIHJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5yZWNvcmRzID0gcm93cy5sZW5ndGg7XG4gICAgICB0aGlzLnBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gdGhpcy5saW1pdCk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVQYWdlc0FycmF5KCk7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5ZWQoKTtcbiAgfSovXG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBwYWdlcyBhcnJheSB3aXRoIG5ldyBwYWdlcyBjb3VudFxuICAgKi9cbiAgLy8gcHVibGljIHVwZGF0ZVBhZ2VzQXJyYXkoKSB7XG4gIC8vICAgY29uc3QgTUlERExFID0gMjtcbiAgLy8gICBjb25zdCBwYWdlc0FyciA9IFtdO1xuXG4gIC8vICAgbGV0IGZyb20gPSAwO1xuICAvLyAgIGxldCB0byA9IDA7XG4gIC8vICAgaWYgKHRoaXMucGFnZSA8IE1JRERMRSkge1xuICAvLyAgICAgZnJvbSA9IE1JRERMRSAtIDE7XG4gIC8vICAgICB0byA9IE1JRERMRSArIDE7XG4gIC8vICAgfSBlbHNlIGlmICh0aGlzLnBhZ2UgPj0gTUlERExFICYmIHRoaXMucGFnZSA8PSB0aGlzLnBhZ2VzIC0gTUlERExFICsgMSkge1xuICAvLyAgICAgZnJvbSA9IHRoaXMucGFnZSAtIDE7XG4gIC8vICAgICB0byA9IHRoaXMucGFnZSArIDE7XG4gIC8vICAgfSBlbHNlIGlmICh0aGlzLnBhZ2UgPiB0aGlzLnBhZ2VzIC0gTUlERExFICsgMSkge1xuICAvLyAgICAgZnJvbSA9IHRoaXMucGFnZXMgLSBNSURETEUgLSAxO1xuICAvLyAgICAgdG8gPSB0aGlzLnBhZ2VzO1xuICAvLyAgIH1cblxuICAvLyAgIGlmICghdGhpcy5wYWdlcyB8fCB0aGlzLnBhZ2VzIDwgNSkge1xuICAvLyAgICAgZnJvbSA9IDE7XG4gIC8vICAgICB0byA9IHRoaXMucGFnZXMgfHwgMDtcbiAgLy8gICB9XG5cbiAgLy8gICBmb3IgKGxldCBpID0gZnJvbTsgaSA8PSB0bzsgaSsrKSB7XG4gIC8vICAgICBwYWdlc0Fyci5wdXNoKGkpO1xuICAvLyAgIH1cblxuICAvLyAgIHRoaXMucGFnZXNBcnJheSA9IE9iamVjdC5hc3NpZ24oW10sIHBhZ2VzQXJyKTtcbiAgLy8gfVxuXG4gIHB1YmxpYyBzZXRMb2FkTW9yZShjb25maWc6IEZzTGlzdExvYWRNb3JlQ29uZmlnIHwgYm9vbGVhbikge1xuICAgIGNvbnN0IGxvYWRNb3JlQ29uZmlnID0gdHlwZW9mIGNvbmZpZyA9PT0gJ2Jvb2xlYW4nID8gXG4gICAgICB7XG4gICAgICAgIGVuYWJsZWQ6ICEhY29uZmlnLFxuICAgICAgfSA6IFxuICAgICAgKFxuICAgICAgICBjb25maWcgPT09IHVuZGVmaW5lZCA/IHt9IDoge1xuICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgdGhpcy5fbG9hZE1vcmVDb25maWcgPSB7XG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIGxhYmVsOiAnTG9hZCBNb3JlJyxcbiAgICAgIGJ1dHRvblR5cGU6ICdiYXNpYycsXG4gICAgICAuLi5sb2FkTW9yZUNvbmZpZyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBkaXNwYXllZCByZWNvcmRzIGNvdW50ZXJcbiAgICovXG4gIC8vIHB1YmxpYyB1cGRhdGVEaXNwbGF5ZWQoKSB7XG4gIC8vICAgdGhpcy5kaXNwbGF5ZWQgPSB0aGlzLmdldFZpc2libGVSZWNvcmRzKCk7XG4gIC8vIH1cblxuICAvKipcbiAgICogUmV0dXJuIGNvdW50IG9mIHJlY29yZHMgdGhhdCBjb3VsZCBiZSBzaG93biBvbiBwYWdlXG4gICAqL1xuICAvLyBwdWJsaWMgZ2V0VmlzaWJsZVJlY29yZHMoKSB7XG4gIC8vICAgY29uc3QgZGlmZiA9IHRoaXMuaGFzT2Zmc2V0U3RyYXRlZ3lcbiAgLy8gICAgID8gdGhpcy5yZWNvcmRzIC0gdGhpcy5vZmZzZXRcbiAgLy8gICAgIDogdGhpcy5saW1pdDtcbiAgLy9cbiAgLy8gICByZXR1cm4gZGlmZiA8IHRoaXMubGltaXRcbiAgLy8gICAgID8gZGlmZlxuICAvLyAgICAgOiB0aGlzLmRpc3BsYXllZDtcbiAgLy8gfVxuXG4gIHB1YmxpYyBnZXRWaXNpYmxlUmVjb3JkcygpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IG5ldyBsaW1pdFxuICAgKlxuICAgKiBAcGFyYW0gbGltaXRcbiAgICovXG4gIHB1YmxpYyBzZXRMaW1pdChsaW1pdCkge1xuICAgIHRoaXMubGltaXQgPSBsaW1pdDtcbiAgICB0aGlzLnJlc2V0UGFnaW5nKCk7XG5cbiAgICB0aGlzLl9wYWdlQ2hhbmdlZCQubmV4dCh7XG4gICAgICB0eXBlOiBQYWdlQ2hhbmdlVHlwZS5MaW1pdENoYW5nZWQsXG4gICAgICBwYXlsb2FkOiBsaW1pdCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBwYWdlIGlzIGFjdGl2YXRlIHBhZ2VcbiAgICpcbiAgICogQHBhcmFtIHBhZ2VcbiAgICovXG4gIHB1YmxpYyBpc0FjdGl2ZShwYWdlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBhZ2UgPT09IHRoaXMucGFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHbyB0byBwYWdlXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlXG4gICAqL1xuICBwdWJsaWMgZ29Ub1BhZ2UocGFnZSkge1xuICAgIGlmIChwYWdlID49IDEgJiYgdGhpcy5wYWdlICE9PSBwYWdlKSB7XG4gICAgICB0aGlzLnBhZ2UgPSBwYWdlO1xuXG4gICAgICB0aGlzLl91cGRhdGVPZmZzZXQoKTtcblxuICAgICAgdGhpcy5fcGFnZUNoYW5nZWQkLm5leHQoe1xuICAgICAgICB0eXBlOiBQYWdlQ2hhbmdlVHlwZS5EZWZhdWx0LFxuICAgICAgICBwYXlsb2FkOiBwYWdlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHBhZ2luZyBsaWtlIGl0IHdhcyBqdXN0IGluaXRpYWxpemVkXG4gICAqL1xuICBwdWJsaWMgcmVzZXRQYWdpbmcoKSB7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICB0aGlzLm9mZnNldCA9IDA7XG4gIH1cblxuICAvKipcbiAgICogR28gdG8gbmV4dCBwYWdlXG4gICAqL1xuICBwdWJsaWMgZ29OZXh0KCkge1xuICAgIGlmICh0aGlzLmhhc05leHRQYWdlKSB7XG4gICAgICB0aGlzLnBhZ2UrKztcblxuICAgICAgdGhpcy5fdXBkYXRlT2Zmc2V0KCk7XG5cbiAgICAgIHRoaXMuX3BhZ2VDaGFuZ2VkJC5uZXh0KHtcbiAgICAgICAgdHlwZTogUGFnZUNoYW5nZVR5cGUuRGVmYXVsdCxcbiAgICAgICAgcGF5bG9hZDogdGhpcy5wYWdlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdvIHRvIGZpcnN0IHBhZ2VcbiAgICovXG4gIHB1YmxpYyBnb0ZpcnN0KCkge1xuICAgIGlmICh0aGlzLnBhZ2UgPiAxKSB7XG4gICAgICB0aGlzLnBhZ2UgPSAxO1xuXG4gICAgICB0aGlzLl91cGRhdGVPZmZzZXQoKTtcblxuICAgICAgdGhpcy5fcGFnZUNoYW5nZWQkLm5leHQoe1xuICAgICAgICB0eXBlOiBQYWdlQ2hhbmdlVHlwZS5EZWZhdWx0LFxuICAgICAgICBwYXlsb2FkOiB0aGlzLnBhZ2UsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR28gdG8gcHJldiBwYWdlXG4gICAqL1xuICBwdWJsaWMgZ29QcmV2KCkge1xuICAgIGlmICh0aGlzLnBhZ2UgPiAxKSB7XG4gICAgICB0aGlzLnBhZ2UtLTtcblxuICAgICAgdGhpcy5fdXBkYXRlT2Zmc2V0KCk7XG5cbiAgICAgIHRoaXMuX3BhZ2VDaGFuZ2VkJC5uZXh0KHtcbiAgICAgICAgdHlwZTogUGFnZUNoYW5nZVR5cGUuRGVmYXVsdCxcbiAgICAgICAgcGF5bG9hZDogdGhpcy5wYWdlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdvIHRvIGxhc3QgcGFnZVxuICAgKi9cbiAgcHVibGljIGdvTGFzdCgpIHtcbiAgICBpZiAodGhpcy5wYWdlICE9PSB0aGlzLnBhZ2VzKSB7XG4gICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2VzO1xuXG4gICAgICB0aGlzLl91cGRhdGVPZmZzZXQoKTtcblxuICAgICAgdGhpcy5fcGFnZUNoYW5nZWQkLm5leHQoe1xuICAgICAgICB0eXBlOiBQYWdlQ2hhbmdlVHlwZS5EZWZhdWx0LFxuICAgICAgICBwYXlsb2FkOiB0aGlzLnBhZ2UsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNvdW50IG9mIGRlbGV0ZWQgcm93cy4gVGhpcyBjb3VudCB3aWxsIGJlIGFwcGxpZWQgZm9yIG9mZnNldCBjYWxjXG4gICAqXG4gICAqIEBwYXJhbSBjb3VudFxuICAgKi9cbiAgcHVibGljIHJlbW92ZVJvd3MoY291bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX3JlbW92ZWRSb3dzICs9IGNvdW50O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVBhZ2luYXRpb24oKSB7XG4gICAgdGhpcy5fdXBkYXRlVG90YWxQYWdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lcbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuX29uRGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHBhZ2luZyBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBwcml2YXRlIF9mcm9tUGFyYW1zKHBhcmFtcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sb2FkTW9yZUVuYWJsZWQpIHtcbiAgICAgIHRoaXMubGltaXQgPSBwYXJhbXMubGltaXQgPz8gMjU7XG4gICAgfVxuXG4gICAgdGhpcy5yZWNvcmRzID0gcGFyYW1zLnJlY29yZHM7XG4gICAgdGhpcy5tYW51YWwgPSBwYXJhbXMubWFudWFsO1xuXG4gICAgdGhpcy5wYWdlcyA9IHBhcmFtcy5wYWdlcyB8fCAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGMgYW5kIHVwZGF0ZSBvZmZzZXRcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZU9mZnNldCgpIHtcbiAgICB0aGlzLm9mZnNldCA9IHRoaXMubGltaXQgKiAodGhpcy5wYWdlIC0gMSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsYyBhbmQgdXBkYXRlIHRvdGFsIGNvdW50IG9mIHBhZ2VzXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVUb3RhbFBhZ2VzKCkge1xuICAgIHRoaXMucGFnZXMgPSBNYXRoLmNlaWwodGhpcy5yZWNvcmRzIC8gdGhpcy5saW1pdCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ActivatedRoute } from '@angular/router';
3
+ import { FsPersistanceStore, FsStore } from '@firestitch/store';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@firestitch/store";
6
+ import * as i2 from "@angular/router";
7
+ const FILTER_STORE_KEY = 'fs-list-persist';
8
+ export class PersistanceController extends FsPersistanceStore {
9
+ STORE_KEY = FILTER_STORE_KEY;
10
+ constructor(_store, _route) {
11
+ super(_store, _route);
12
+ }
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PersistanceController, deps: [{ token: i1.FsStore }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
14
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PersistanceController });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PersistanceController, decorators: [{
17
+ type: Injectable
18
+ }], ctorParameters: () => [{ type: i1.FsStore }, { type: i2.ActivatedRoute }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGFuY2UtY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvY2xhc3Nlcy9wZXJzaXN0YW5jZS1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUdoRSxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDO0FBRzNDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxrQkFBb0M7SUFFbkUsU0FBUyxHQUFHLGdCQUFnQixDQUFDO0lBRXZDLFlBQ0UsTUFBZSxFQUNmLE1BQXNCO1FBRXRCLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEIsQ0FBQzt3R0FUVSxxQkFBcUI7NEdBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgRnNQZXJzaXN0YW5jZVN0b3JlLCBGc1N0b3JlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc3RvcmUnO1xyXG5pbXBvcnQgeyBGc0xpc3RQZXJzaXRhbmNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcblxyXG5jb25zdCBGSUxURVJfU1RPUkVfS0VZID0gJ2ZzLWxpc3QtcGVyc2lzdCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQZXJzaXN0YW5jZUNvbnRyb2xsZXIgZXh0ZW5kcyBGc1BlcnNpc3RhbmNlU3RvcmU8RnNMaXN0UGVyc2l0YW5jZT4ge1xyXG5cclxuICBwcm90ZWN0ZWQgU1RPUkVfS0VZID0gRklMVEVSX1NUT1JFX0tFWTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBfc3RvcmU6IEZzU3RvcmUsXHJcbiAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoX3N0b3JlLCBfcm91dGUpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19