@firestitch/list 12.5.1 → 12.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/classes/actions-controller.d.ts +20 -20
- package/app/classes/columns-controller.d.ts +71 -71
- package/app/classes/data-controller.d.ts +90 -90
- package/app/classes/external-params-controller.d.ts +31 -31
- package/app/classes/index.d.ts +2 -2
- package/app/classes/list-controller.d.ts +174 -174
- package/app/classes/pagination-controller.d.ts +189 -189
- package/app/classes/persistance-controller.d.ts +10 -10
- package/app/classes/reorder-controller.d.ts +62 -62
- package/app/classes/selection-controller.d.ts +141 -141
- package/app/classes/sorting-controller.d.ts +64 -64
- package/app/components/body/body.component.d.ts +32 -32
- package/app/components/body/row/actions/actions.component.d.ts +35 -35
- package/app/components/body/row/cell/cell.component.d.ts +23 -23
- package/app/components/body/row/inline-action/inline-action.component.d.ts +16 -16
- package/app/components/body/row/menu-action/menu-action.component.d.ts +12 -12
- package/app/components/body/row/row.component.d.ts +72 -72
- package/app/components/customize-cols/customize-cols.component.d.ts +17 -17
- package/app/components/footer/footer-row/footer-cell/footer-cell.component.d.ts +7 -7
- package/app/components/footer/footer-row/footer-row.component.d.ts +11 -11
- package/app/components/footer/footer.component.d.ts +11 -11
- package/app/components/head/head-cell/head-cell.component.d.ts +14 -14
- package/app/components/head/head.component.d.ts +43 -43
- package/app/components/list/list.component.d.ts +116 -114
- package/app/components/loader/loader.component.d.ts +14 -14
- package/app/components/manage-saved-filters/manage-saved-filters.component.d.ts +13 -13
- package/app/components/pagination/pagination.component.d.ts +14 -14
- package/app/components/saved-filters/saved-filters.component.d.ts +15 -15
- package/app/components/status/status.component.d.ts +21 -21
- package/app/directives/cell/cell.directive.d.ts +8 -8
- package/app/directives/column/column.directive.d.ts +33 -33
- package/app/directives/content/content.directive.d.ts +5 -5
- package/app/directives/content-init/content-init.directive.d.ts +9 -9
- package/app/directives/draggable-list/draggable-list.directive.d.ts +80 -80
- package/app/directives/draggable-row/draggable-row.directive.d.ts +21 -21
- package/app/directives/empty-state/empty-state.directive.d.ts +5 -5
- package/app/directives/footer/footer.directive.d.ts +8 -8
- package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +10 -10
- package/app/directives/group-footer/group-footer.directive.d.ts +6 -6
- package/app/directives/group-header/group-header.directive.d.ts +6 -6
- package/app/directives/header/header.directive.d.ts +8 -8
- package/app/enums/button-type.enum.d.ts +7 -7
- package/app/enums/page-change-type.enum.d.ts +4 -4
- package/app/enums/pagination-strategy.enum.d.ts +5 -5
- package/app/enums/row-type.enum.d.ts +6 -6
- package/app/enums/state.enum.d.ts +9 -9
- package/app/fs-list.module.d.ts +56 -56
- package/app/fs-list.providers.d.ts +3 -3
- package/app/interfaces/cellconfig.interface.d.ts +5 -5
- package/app/interfaces/column-config.interface.d.ts +2 -2
- package/app/interfaces/draggable-list.interface.d.ts +7 -7
- package/app/interfaces/external-params.interface.d.ts +13 -13
- package/app/interfaces/index.d.ts +3 -3
- package/app/interfaces/listconfig.interface.d.ts +249 -249
- package/app/interfaces/pagination.interface.d.ts +13 -13
- package/app/models/column-async-attribute.d.ts +5 -5
- package/app/models/column-attributes.d.ts +39 -39
- package/app/models/column.model.d.ts +59 -59
- package/app/models/row/base-row.d.ts +13 -13
- package/app/models/row/child-row.d.ts +12 -12
- package/app/models/row/group-footer-row.d.ts +10 -10
- package/app/models/row/group-row.d.ts +16 -16
- package/app/models/row/simple-row.d.ts +5 -5
- package/app/models/row-action.model.d.ts +31 -31
- package/app/models/row.d.ts +30 -30
- package/app/models/styleConfig.model.d.ts +31 -31
- package/app/services/group-expand-notifier.service.d.ts +11 -11
- package/bundles/firestitch-list.umd.js +6546 -6535
- package/bundles/firestitch-list.umd.js.map +1 -1
- package/esm2015/app/classes/actions-controller.js +55 -55
- package/esm2015/app/classes/columns-controller.js +205 -205
- package/esm2015/app/classes/data-controller.js +331 -331
- package/esm2015/app/classes/external-params-controller.js +153 -153
- package/esm2015/app/classes/index.js +3 -3
- package/esm2015/app/classes/list-controller.js +714 -714
- package/esm2015/app/classes/pagination-controller.js +460 -460
- package/esm2015/app/classes/persistance-controller.js +19 -19
- package/esm2015/app/classes/reorder-controller.js +172 -172
- package/esm2015/app/classes/selection-controller.js +445 -445
- package/esm2015/app/classes/sorting-controller.js +180 -180
- package/esm2015/app/components/body/body.component.js +75 -75
- package/esm2015/app/components/body/row/actions/actions.component.js +99 -99
- package/esm2015/app/components/body/row/cell/cell.component.js +104 -104
- package/esm2015/app/components/body/row/inline-action/inline-action.component.js +39 -39
- package/esm2015/app/components/body/row/menu-action/menu-action.component.js +31 -31
- package/esm2015/app/components/body/row/row.component.js +253 -253
- package/esm2015/app/components/customize-cols/customize-cols.component.js +72 -72
- package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +20 -20
- package/esm2015/app/components/footer/footer-row/footer-row.component.js +26 -26
- package/esm2015/app/components/footer/footer.component.js +26 -26
- package/esm2015/app/components/head/head-cell/head-cell.component.js +33 -33
- package/esm2015/app/components/head/head.component.js +90 -90
- package/esm2015/app/components/list/list.component.js +376 -369
- package/esm2015/app/components/loader/loader.component.js +47 -47
- package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +79 -79
- package/esm2015/app/components/pagination/pagination.component.js +44 -44
- package/esm2015/app/components/saved-filters/saved-filters.component.js +33 -33
- package/esm2015/app/components/status/status.component.js +74 -74
- package/esm2015/app/directives/cell/cell.directive.js +18 -18
- package/esm2015/app/directives/column/column.directive.js +111 -111
- package/esm2015/app/directives/content/content.directive.js +12 -12
- package/esm2015/app/directives/content-init/content-init.directive.js +21 -21
- package/esm2015/app/directives/draggable-list/draggable-list.directive.js +256 -256
- package/esm2015/app/directives/draggable-row/draggable-row.directive.js +73 -73
- package/esm2015/app/directives/empty-state/empty-state.directive.js +13 -13
- package/esm2015/app/directives/footer/footer.directive.js +18 -18
- package/esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js +26 -26
- package/esm2015/app/directives/group-footer/group-footer.directive.js +13 -13
- package/esm2015/app/directives/group-header/group-header.directive.js +13 -13
- package/esm2015/app/directives/header/header.directive.js +18 -18
- package/esm2015/app/enums/button-type.enum.js +9 -9
- package/esm2015/app/enums/page-change-type.enum.js +6 -6
- package/esm2015/app/enums/pagination-strategy.enum.js +7 -7
- package/esm2015/app/enums/row-type.enum.js +7 -7
- package/esm2015/app/enums/state.enum.js +11 -11
- package/esm2015/app/fs-list.module.js +227 -227
- package/esm2015/app/fs-list.providers.js +4 -4
- package/esm2015/app/interfaces/cellconfig.interface.js +2 -2
- package/esm2015/app/interfaces/column-config.interface.js +1 -1
- package/esm2015/app/interfaces/draggable-list.interface.js +2 -2
- package/esm2015/app/interfaces/external-params.interface.js +2 -2
- package/esm2015/app/interfaces/index.js +4 -4
- package/esm2015/app/interfaces/listconfig.interface.js +1 -1
- package/esm2015/app/interfaces/pagination.interface.js +2 -2
- package/esm2015/app/models/column-async-attribute.js +13 -13
- package/esm2015/app/models/column-attributes.js +130 -130
- package/esm2015/app/models/column.model.js +166 -166
- package/esm2015/app/models/row/base-row.js +23 -23
- package/esm2015/app/models/row/child-row.js +28 -28
- package/esm2015/app/models/row/group-footer-row.js +20 -20
- package/esm2015/app/models/row/group-row.js +44 -44
- package/esm2015/app/models/row/simple-row.js +10 -10
- package/esm2015/app/models/row-action.model.js +108 -108
- package/esm2015/app/models/row.js +80 -80
- package/esm2015/app/models/styleConfig.model.js +75 -75
- package/esm2015/app/services/group-expand-notifier.service.js +26 -26
- package/esm2015/firestitch-list.js +4 -4
- package/esm2015/public_api.js +44 -44
- package/fesm2015/firestitch-list.js +5388 -5381
- package/fesm2015/firestitch-list.js.map +1 -1
- package/firestitch-list.d.ts +5 -5
- package/package.json +2 -2
- package/public_api.d.ts +38 -38
|
@@ -1,369 +1,376 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, QueryList, ViewChild, HostBinding, Optional, ContentChild, TemplateRef, Output, } from '@angular/core';
|
|
2
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
|
-
import { Location } from '@angular/common';
|
|
4
|
-
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
5
|
-
import { Subject } from 'rxjs';
|
|
6
|
-
import { filter, skip, take, takeUntil } from 'rxjs/operators';
|
|
7
|
-
import { FsScrollService } from '@firestitch/scroll';
|
|
8
|
-
import { FilterComponent } from '@firestitch/filter';
|
|
9
|
-
import { SelectionDialog } from '@firestitch/selection';
|
|
10
|
-
import { getNormalizedPath } from '@firestitch/common';
|
|
11
|
-
import { DrawerRef } from '@firestitch/drawer';
|
|
12
|
-
import { cloneDeep, mergeWith } from 'lodash-es';
|
|
13
|
-
import { List } from '../../classes/list-controller';
|
|
14
|
-
import { ReorderController } from '../../classes/reorder-controller';
|
|
15
|
-
import { FsListColumnDirective } from '../../directives/column/column.directive';
|
|
16
|
-
import { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';
|
|
17
|
-
import { FS_LIST_DEFAULT_CONFIG } from '../../fs-list.providers';
|
|
18
|
-
import { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';
|
|
19
|
-
import { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';
|
|
20
|
-
import { PersistanceController } from '../../classes/persistance-controller';
|
|
21
|
-
import * as i0 from "@angular/core";
|
|
22
|
-
import * as i1 from "../../classes/reorder-controller";
|
|
23
|
-
import * as i2 from "@firestitch/scroll";
|
|
24
|
-
import * as i3 from "@angular/material/dialog";
|
|
25
|
-
import * as i4 from "@firestitch/drawer";
|
|
26
|
-
import * as i5 from "@firestitch/selection";
|
|
27
|
-
import * as i6 from "../../services/group-expand-notifier.service";
|
|
28
|
-
import * as i7 from "@angular/router";
|
|
29
|
-
import * as i8 from "../../classes/persistance-controller";
|
|
30
|
-
import * as i9 from "@angular/common";
|
|
31
|
-
import * as i10 from "@firestitch/filter";
|
|
32
|
-
import * as i11 from "../status/status.component";
|
|
33
|
-
import * as i12 from "../head/head.component";
|
|
34
|
-
import * as i13 from "../body/body.component";
|
|
35
|
-
import * as i14 from "../footer/footer.component";
|
|
36
|
-
import * as i15 from "../loader/loader.component";
|
|
37
|
-
import * as i16 from "../pagination/pagination.component";
|
|
38
|
-
import * as i17 from "../../directives/content-init/content-init.directive";
|
|
39
|
-
import * as i18 from "../../directives/draggable-list/draggable-list.directive";
|
|
40
|
-
import * as i19 from "../../directives/footer/footer.directive";
|
|
41
|
-
export class FsListComponent {
|
|
42
|
-
constructor(reorderController, _defaultOptions, fsScroll, _dialogRef, _drawerRef, _el, selectionDialog, dialog, cdRef, _groupExpandNotifier, _router, _route, _persistance, _location) {
|
|
43
|
-
this.reorderController = reorderController;
|
|
44
|
-
this._defaultOptions = _defaultOptions;
|
|
45
|
-
this.fsScroll = fsScroll;
|
|
46
|
-
this._dialogRef = _dialogRef;
|
|
47
|
-
this._drawerRef = _drawerRef;
|
|
48
|
-
this._el = _el;
|
|
49
|
-
this.selectionDialog = selectionDialog;
|
|
50
|
-
this.dialog = dialog;
|
|
51
|
-
this.cdRef = cdRef;
|
|
52
|
-
this._groupExpandNotifier = _groupExpandNotifier;
|
|
53
|
-
this._router = _router;
|
|
54
|
-
this._route = _route;
|
|
55
|
-
this._persistance = _persistance;
|
|
56
|
-
this._location = _location;
|
|
57
|
-
this.classFsList = true;
|
|
58
|
-
this.loaderLines = 3;
|
|
59
|
-
this.filtersReady = new EventEmitter();
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
this.
|
|
63
|
-
this.
|
|
64
|
-
this.
|
|
65
|
-
this.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.
|
|
73
|
-
this.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
&& !this.list.scrollable
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
if (
|
|
220
|
-
this.
|
|
221
|
-
}
|
|
222
|
-
this.
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
this.
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
this.
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
.pipe(takeUntil(this._destroy))
|
|
276
|
-
.subscribe((
|
|
277
|
-
this.
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
this.
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
.
|
|
300
|
-
.
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
], queries: [{ propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div class=\"fs-list-container\"\n [ngClass]=\"{ \n 'has-filter-input': list.filterInput,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async \n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div \n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container \n *ngIf=\"!hasStatus\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container> \n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container \n *ngIf=\"hasStatus\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container> \n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\"\n [scrollable]=\"list.scrollable\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table class=\"fs-list-table\" role=\"grid\" [fsListContentInit]=\"list.afterContentInit\">\n <thead \n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\">\n </thead>\n\n <tbody \n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\">\n </tbody>\n\n <tfoot \n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"list.heading || list.subheading\">\n <h2 class=\"heading\" *ngIf=\"list.heading\">{{list.heading}}</h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading\">{{list.subheading}}</div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .fs-list{display:block;width:100%}::ng-deep .fs-list .fs-list-swap-restricted{opacity:.5}::ng-deep .fs-list .fs-list-no-drop{cursor:no-drop}::ng-deep .fs-list .fs-filter{margin-bottom:0;position:initial!important;display:block}::ng-deep .fs-list .fs-list-container.loading .fs-list-status,::ng-deep .fs-list .fs-list-container.loading .fs-list-body,::ng-deep .fs-list .fs-list-container.loading fs-list-pagination,::ng-deep .fs-list .fs-list-container.loading .filter-chips,::ng-deep .fs-list .fs-list-container.loading .fs-list-no-results-container,::ng-deep .fs-list .fs-list-container.first-load .fs-list-status,::ng-deep .fs-list .fs-list-container.first-load .fs-list-body,::ng-deep .fs-list .fs-list-container.first-load fs-list-pagination,::ng-deep .fs-list .fs-list-container.first-load .filter-chips,::ng-deep .fs-list .fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}::ng-deep .fs-list .fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}::ng-deep .fs-list .fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}::ng-deep .fs-list .fs-list-container.has-actions .fs-list-actions{margin-left:5px}::ng-deep .fs-list .fs-list-table-container{width:100%;overflow:auto}::ng-deep .fs-list table,::ng-deep .fs-list .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}::ng-deep .fs-list .hidden{display:none}::ng-deep .fs-list thead,::ng-deep .fs-list .fs-list-head{display:table-header-group}::ng-deep .fs-list thead th,::ng-deep .fs-list thead .fs-list-col,::ng-deep .fs-list .fs-list-head th,::ng-deep .fs-list .fs-list-head .fs-list-col{color:#999;padding:8px;font-weight:normal;font-size:13px;color:#8f8f8f}::ng-deep .fs-list thead th.fs-list-col-selection,::ng-deep .fs-list thead .fs-list-col.fs-list-col-selection,::ng-deep .fs-list .fs-list-head th.fs-list-col-selection,::ng-deep .fs-list .fs-list-head .fs-list-col.fs-list-col-selection{width:1%;text-align:left}::ng-deep .fs-list thead th.sorting,::ng-deep .fs-list thead .fs-list-col.sorting,::ng-deep .fs-list .fs-list-head th.sorting,::ng-deep .fs-list .fs-list-head .fs-list-col.sorting{cursor:pointer}::ng-deep .fs-list thead th.sorting:hover,::ng-deep .fs-list thead .fs-list-col.sorting:hover,::ng-deep .fs-list .fs-list-head th.sorting:hover,::ng-deep .fs-list .fs-list-head .fs-list-col.sorting:hover{background-color:#f6f6f6}::ng-deep .fs-list thead th .wrap,::ng-deep .fs-list thead .fs-list-col .wrap,::ng-deep .fs-list .fs-list-head th .wrap,::ng-deep .fs-list .fs-list-head .fs-list-col .wrap{display:inline-flex;vertical-align:middle;white-space:nowrap}::ng-deep .fs-list thead th .wrap mat-icon,::ng-deep .fs-list thead .fs-list-col .wrap mat-icon,::ng-deep .fs-list .fs-list-head th .wrap mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-col .wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}::ng-deep .fs-list thead th .wrap .direction,::ng-deep .fs-list thead .fs-list-col .wrap .direction,::ng-deep .fs-list .fs-list-head th .wrap .direction,::ng-deep .fs-list .fs-list-head .fs-list-col .wrap .direction{margin-left:5px}::ng-deep .fs-list thead th.sorting,::ng-deep .fs-list thead .fs-list-col.sorting,::ng-deep .fs-list .fs-list-head th.sorting,::ng-deep .fs-list .fs-list-head .fs-list-col.sorting{background-image:none}::ng-deep .fs-list tbody,::ng-deep .fs-list .fs-list-body{display:table-row-group;position:relative}::ng-deep .fs-list tbody.disabled,::ng-deep .fs-list .fs-list-body.disabled{opacity:.4;pointer-events:none}::ng-deep .fs-list tbody td,::ng-deep .fs-list tbody .fs-list-col,::ng-deep .fs-list .fs-list-body td,::ng-deep .fs-list .fs-list-body .fs-list-col{box-sizing:border-box}::ng-deep .fs-list tbody tr:hover td,::ng-deep .fs-list tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list .fs-list-body tr:hover td,::ng-deep .fs-list .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list tbody tr:hover td,::ng-deep .fs-list tbody tr:hover .fs-list-col,::ng-deep .fs-list tbody .fs-list-row:hover td,::ng-deep .fs-list tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list .fs-list-body tr:hover td,::ng-deep .fs-list .fs-list-body tr:hover .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row:hover td,::ng-deep .fs-list .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list tbody tr:first-child td,::ng-deep .fs-list .fs-list-body tr:first-child td{border-top:2px solid #ddd}::ng-deep .fs-list tbody tr:last-child td,::ng-deep .fs-list .fs-list-body tr:last-child td{border-bottom:2px solid #ddd}::ng-deep .fs-list tbody td,::ng-deep .fs-list .fs-list-body td{border-top:1px solid #ddd}::ng-deep .fs-list thead tr,::ng-deep .fs-list thead .fs-list-row,::ng-deep .fs-list tbody tr,::ng-deep .fs-list tbody .fs-list-row,::ng-deep .fs-list tfoot tr,::ng-deep .fs-list tfoot .fs-list-row,::ng-deep .fs-list .fs-list-head tr,::ng-deep .fs-list .fs-list-head .fs-list-row,::ng-deep .fs-list .fs-list-body tr,::ng-deep .fs-list .fs-list-body .fs-list-row,::ng-deep .fs-list .fs-list-footer tr,::ng-deep .fs-list .fs-list-footer .fs-list-row{display:table-row}::ng-deep .fs-list thead tr td,::ng-deep .fs-list thead tr th,::ng-deep .fs-list thead tr .fs-list-col,::ng-deep .fs-list thead .fs-list-row td,::ng-deep .fs-list thead .fs-list-row th,::ng-deep .fs-list thead .fs-list-row .fs-list-col,::ng-deep .fs-list tbody tr td,::ng-deep .fs-list tbody tr th,::ng-deep .fs-list tbody tr .fs-list-col,::ng-deep .fs-list tbody .fs-list-row td,::ng-deep .fs-list tbody .fs-list-row th,::ng-deep .fs-list tbody .fs-list-row .fs-list-col,::ng-deep .fs-list tfoot tr td,::ng-deep .fs-list tfoot tr th,::ng-deep .fs-list tfoot tr .fs-list-col,::ng-deep .fs-list tfoot .fs-list-row td,::ng-deep .fs-list tfoot .fs-list-row th,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-head tr td,::ng-deep .fs-list .fs-list-head tr th,::ng-deep .fs-list .fs-list-head tr .fs-list-col,::ng-deep .fs-list .fs-list-head .fs-list-row td,::ng-deep .fs-list .fs-list-head .fs-list-row th,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-body tr td,::ng-deep .fs-list .fs-list-body tr th,::ng-deep .fs-list .fs-list-body tr .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row td,::ng-deep .fs-list .fs-list-body .fs-list-row th,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-footer tr td,::ng-deep .fs-list .fs-list-footer tr th,::ng-deep .fs-list .fs-list-footer tr .fs-list-col,::ng-deep .fs-list .fs-list-footer .fs-list-row td,::ng-deep .fs-list .fs-list-footer .fs-list-row th,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col{display:table-cell;padding:8px;vertical-align:middle;outline:none}::ng-deep .fs-list thead tr td.drag-col,::ng-deep .fs-list thead tr th.drag-col,::ng-deep .fs-list thead tr .fs-list-col.drag-col,::ng-deep .fs-list thead .fs-list-row td.drag-col,::ng-deep .fs-list thead .fs-list-row th.drag-col,::ng-deep .fs-list thead .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list tbody tr td.drag-col,::ng-deep .fs-list tbody tr th.drag-col,::ng-deep .fs-list tbody tr .fs-list-col.drag-col,::ng-deep .fs-list tbody .fs-list-row td.drag-col,::ng-deep .fs-list tbody .fs-list-row th.drag-col,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list tfoot tr td.drag-col,::ng-deep .fs-list tfoot tr th.drag-col,::ng-deep .fs-list tfoot tr .fs-list-col.drag-col,::ng-deep .fs-list tfoot .fs-list-row td.drag-col,::ng-deep .fs-list tfoot .fs-list-row th.drag-col,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-head tr td.drag-col,::ng-deep .fs-list .fs-list-head tr th.drag-col,::ng-deep .fs-list .fs-list-head tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-body tr td.drag-col,::ng-deep .fs-list .fs-list-body tr th.drag-col,::ng-deep .fs-list .fs-list-body tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-footer tr td.drag-col,::ng-deep .fs-list .fs-list-footer tr th.drag-col,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.drag-col{width:24px;text-align:center;cursor:grab}::ng-deep .fs-list thead tr td.drag-col mat-icon,::ng-deep .fs-list thead tr th.drag-col mat-icon,::ng-deep .fs-list thead tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tbody tr td.drag-col mat-icon,::ng-deep .fs-list tbody tr th.drag-col mat-icon,::ng-deep .fs-list tbody tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tfoot tr td.drag-col mat-icon,::ng-deep .fs-list tfoot tr th.drag-col mat-icon,::ng-deep .fs-list tfoot tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.drag-col mat-icon{display:flex}::ng-deep .fs-list thead tr td.row-actions,::ng-deep .fs-list thead tr th.row-actions,::ng-deep .fs-list thead tr .fs-list-col.row-actions,::ng-deep .fs-list thead .fs-list-row td.row-actions,::ng-deep .fs-list thead .fs-list-row th.row-actions,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list tbody tr td.row-actions,::ng-deep .fs-list tbody tr th.row-actions,::ng-deep .fs-list tbody tr .fs-list-col.row-actions,::ng-deep .fs-list tbody .fs-list-row td.row-actions,::ng-deep .fs-list tbody .fs-list-row th.row-actions,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list tfoot tr td.row-actions,::ng-deep .fs-list tfoot tr th.row-actions,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions,::ng-deep .fs-list tfoot .fs-list-row td.row-actions,::ng-deep .fs-list tfoot .fs-list-row th.row-actions,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-head tr td.row-actions,::ng-deep .fs-list .fs-list-head tr th.row-actions,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-body tr td.row-actions,::ng-deep .fs-list .fs-list-body tr th.row-actions,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-footer tr td.row-actions,::ng-deep .fs-list .fs-list-footer tr th.row-actions,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions{width:1%;white-space:nowrap;padding-right:10px;overflow:hidden}::ng-deep .fs-list thead tr td.row-actions .row-inline-action,::ng-deep .fs-list thead tr th.row-actions .row-inline-action,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action{margin-left:12px;display:inline-block}::ng-deep .fs-list thead tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child{margin-left:0}::ng-deep .fs-list thead tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr td.row-actions .row-menu-action,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr th.row-actions .row-menu-action,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr td.row-actions .row-menu-action,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr th.row-actions .row-menu-action,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr td.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr th.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-menu-action{width:35px;justify-content:center;align-items:center}::ng-deep .fs-list thead tr td.left,::ng-deep .fs-list thead tr th.left,::ng-deep .fs-list thead tr .fs-list-col.left,::ng-deep .fs-list thead .fs-list-row td.left,::ng-deep .fs-list thead .fs-list-row th.left,::ng-deep .fs-list thead .fs-list-row .fs-list-col.left,::ng-deep .fs-list tbody tr td.left,::ng-deep .fs-list tbody tr th.left,::ng-deep .fs-list tbody tr .fs-list-col.left,::ng-deep .fs-list tbody .fs-list-row td.left,::ng-deep .fs-list tbody .fs-list-row th.left,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.left,::ng-deep .fs-list tfoot tr td.left,::ng-deep .fs-list tfoot tr th.left,::ng-deep .fs-list tfoot tr .fs-list-col.left,::ng-deep .fs-list tfoot .fs-list-row td.left,::ng-deep .fs-list tfoot .fs-list-row th.left,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-head tr td.left,::ng-deep .fs-list .fs-list-head tr th.left,::ng-deep .fs-list .fs-list-head tr .fs-list-col.left,::ng-deep .fs-list .fs-list-head .fs-list-row td.left,::ng-deep .fs-list .fs-list-head .fs-list-row th.left,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-body tr td.left,::ng-deep .fs-list .fs-list-body tr th.left,::ng-deep .fs-list .fs-list-body tr .fs-list-col.left,::ng-deep .fs-list .fs-list-body .fs-list-row td.left,::ng-deep .fs-list .fs-list-body .fs-list-row th.left,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-footer tr td.left,::ng-deep .fs-list .fs-list-footer tr th.left,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.left,::ng-deep .fs-list .fs-list-footer .fs-list-row td.left,::ng-deep .fs-list .fs-list-footer .fs-list-row th.left,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.left{text-align:left}::ng-deep .fs-list thead tr td.center,::ng-deep .fs-list thead tr th.center,::ng-deep .fs-list thead tr .fs-list-col.center,::ng-deep .fs-list thead .fs-list-row td.center,::ng-deep .fs-list thead .fs-list-row th.center,::ng-deep .fs-list thead .fs-list-row .fs-list-col.center,::ng-deep .fs-list tbody tr td.center,::ng-deep .fs-list tbody tr th.center,::ng-deep .fs-list tbody tr .fs-list-col.center,::ng-deep .fs-list tbody .fs-list-row td.center,::ng-deep .fs-list tbody .fs-list-row th.center,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.center,::ng-deep .fs-list tfoot tr td.center,::ng-deep .fs-list tfoot tr th.center,::ng-deep .fs-list tfoot tr .fs-list-col.center,::ng-deep .fs-list tfoot .fs-list-row td.center,::ng-deep .fs-list tfoot .fs-list-row th.center,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-head tr td.center,::ng-deep .fs-list .fs-list-head tr th.center,::ng-deep .fs-list .fs-list-head tr .fs-list-col.center,::ng-deep .fs-list .fs-list-head .fs-list-row td.center,::ng-deep .fs-list .fs-list-head .fs-list-row th.center,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-body tr td.center,::ng-deep .fs-list .fs-list-body tr th.center,::ng-deep .fs-list .fs-list-body tr .fs-list-col.center,::ng-deep .fs-list .fs-list-body .fs-list-row td.center,::ng-deep .fs-list .fs-list-body .fs-list-row th.center,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-footer tr td.center,::ng-deep .fs-list .fs-list-footer tr th.center,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.center,::ng-deep .fs-list .fs-list-footer .fs-list-row td.center,::ng-deep .fs-list .fs-list-footer .fs-list-row th.center,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.center{text-align:center}::ng-deep .fs-list thead tr td.right,::ng-deep .fs-list thead tr th.right,::ng-deep .fs-list thead tr .fs-list-col.right,::ng-deep .fs-list thead .fs-list-row td.right,::ng-deep .fs-list thead .fs-list-row th.right,::ng-deep .fs-list thead .fs-list-row .fs-list-col.right,::ng-deep .fs-list tbody tr td.right,::ng-deep .fs-list tbody tr th.right,::ng-deep .fs-list tbody tr .fs-list-col.right,::ng-deep .fs-list tbody .fs-list-row td.right,::ng-deep .fs-list tbody .fs-list-row th.right,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.right,::ng-deep .fs-list tfoot tr td.right,::ng-deep .fs-list tfoot tr th.right,::ng-deep .fs-list tfoot tr .fs-list-col.right,::ng-deep .fs-list tfoot .fs-list-row td.right,::ng-deep .fs-list tfoot .fs-list-row th.right,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-head tr td.right,::ng-deep .fs-list .fs-list-head tr th.right,::ng-deep .fs-list .fs-list-head tr .fs-list-col.right,::ng-deep .fs-list .fs-list-head .fs-list-row td.right,::ng-deep .fs-list .fs-list-head .fs-list-row th.right,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-body tr td.right,::ng-deep .fs-list .fs-list-body tr th.right,::ng-deep .fs-list .fs-list-body tr .fs-list-col.right,::ng-deep .fs-list .fs-list-body .fs-list-row td.right,::ng-deep .fs-list .fs-list-body .fs-list-row th.right,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-footer tr td.right,::ng-deep .fs-list .fs-list-footer tr th.right,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.right,::ng-deep .fs-list .fs-list-footer .fs-list-row td.right,::ng-deep .fs-list .fs-list-footer .fs-list-row th.right,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.right{text-align:right}::ng-deep .fs-list thead tr.draggable,::ng-deep .fs-list thead .fs-list-row.draggable,::ng-deep .fs-list tbody tr.draggable,::ng-deep .fs-list tbody .fs-list-row.draggable,::ng-deep .fs-list tfoot tr.draggable,::ng-deep .fs-list tfoot .fs-list-row.draggable,::ng-deep .fs-list .fs-list-head tr.draggable,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable,::ng-deep .fs-list .fs-list-body tr.draggable,::ng-deep .fs-list .fs-list-body .fs-list-row.draggable,::ng-deep .fs-list .fs-list-footer tr.draggable,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable{position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px}::ng-deep .fs-list thead tr.draggable td,::ng-deep .fs-list thead tr.draggable .fs-list-col,::ng-deep .fs-list thead .fs-list-row.draggable td,::ng-deep .fs-list thead .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list tbody tr.draggable td,::ng-deep .fs-list tbody tr.draggable .fs-list-col,::ng-deep .fs-list tbody .fs-list-row.draggable td,::ng-deep .fs-list tbody .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list tfoot tr.draggable td,::ng-deep .fs-list tfoot tr.draggable .fs-list-col,::ng-deep .fs-list tfoot .fs-list-row.draggable td,::ng-deep .fs-list tfoot .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-head tr.draggable td,::ng-deep .fs-list .fs-list-head tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-body tr.draggable td,::ng-deep .fs-list .fs-list-body tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-body .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-footer tr.draggable td,::ng-deep .fs-list .fs-list-footer tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable .fs-list-col{background-color:#f6f6f6;border:none}::ng-deep .fs-list .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}::ng-deep .fs-list .fs-list-header .heading{margin:0}::ng-deep .fs-list .fs-list-header .fs-list-actions{white-space:nowrap;float:right}::ng-deep .fs-list .fs-list-header .fs-list-actions .menu-button{width:36px;height:36px;line-height:36px}::ng-deep .fs-list .fs-list-header .action-button{margin-left:5px}::ng-deep .fs-list .fs-list-header .action-button:first-child{margin-left:0}::ng-deep .fs-list .fs-list-header .mat-button{margin-top:0;margin-bottom:0;margin-right:0}::ng-deep .fs-list .fs-list-container{width:100%}::ng-deep .fs-list .fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}::ng-deep .fs-list .fs-list-container:not(.has-filters):not(.has-status) .fs-list-header{display:flex;margin-bottom:4px}::ng-deep .fs-list .fs-list-container:not(.has-filters):not(.has-status) .fs-list-header .heading-container{flex:1}::ng-deep .fs-list .fs-list-container:not(.has-filters):not(.has-status) .fs-list-header .fs-filter{display:flex}::ng-deep .fs-list .fs-list-container.has-filters .heading-container{margin-bottom:4px}::ng-deep .fs-list .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list tfoot td{padding:8px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}::ng-deep .draggable-elem td{opacity:.2}::ng-deep .hidden-mobile-menu-action{display:none!important}::ng-deep .hidden-mobile{display:none!important}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}\n"], components: [{ type: i10.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { type: i11.FsStatusComponent, selector: "fs-list-status", inputs: ["paging", "sorting", "rows", "scrollable", "firstLoad"] }, { type: i12.FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection"] }, { type: i13.FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved"] }, { type: i14.FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection"] }, { type: i15.FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { type: i16.FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }], directives: [{ type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { type: i17.FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { type: i18.FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { type: i19.FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
'./list.component.scss',
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
type: Optional
|
|
347
|
-
}
|
|
348
|
-
type:
|
|
349
|
-
|
|
350
|
-
type:
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
type:
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
}],
|
|
360
|
-
type:
|
|
361
|
-
args: [
|
|
362
|
-
}],
|
|
363
|
-
type:
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFdBQVcsRUFDWCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0MsT0FBTyxFQUFFLFNBQVMsRUFB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O3FCQUNsQjtpQkFDRjs7MEJBNkRJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsc0JBQXNCOzswQkFDekMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTtpVEE3RG1CLFdBQVc7c0JBQXhDLFdBQVc7dUJBQUMsZUFBZTtnQkFHeEIsTUFBTTtzQkFEVCxLQUFLO3VCQUFDLFFBQVE7Z0JBTVIsV0FBVztzQkFEakIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixNQUFNO2dCQW1CSyxlQUFlO3NCQUQxQixTQUFTO3VCQUFDLGVBQWU7Z0JBY2QsZUFBZTtzQkFEMUIsZUFBZTt1QkFBQyxxQkFBcUI7Z0JBUzFCLG1CQUFtQjtzQkFEOUIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgSG9zdEJpbmRpbmcsXG4gIE9wdGlvbmFsLFxuICBDb250ZW50Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc2tpcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGc1Njcm9sbFNlcnZpY2UgfSBmcm9tICdAZmlyZXN0aXRjaC9zY3JvbGwnO1xuaW1wb3J0IHsgRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkRpYWxvZyB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUGF0aCB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5pbXBvcnQgeyBEcmF3ZXJSZWYgfSBmcm9tICdAZmlyZXN0aXRjaC9kcmF3ZXInO1xuXG5pbXBvcnQgeyBjbG9uZURlZXAsIG1lcmdlV2l0aCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IExpc3QgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2xpc3QtY29udHJvbGxlcic7XG5pbXBvcnQgeyBSZW9yZGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcblxuaW1wb3J0IHsgRnNMaXN0Q29sdW1uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb2x1bW4vY29sdW1uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0xpc3RFbXB0eVN0YXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRlNfTElTVF9ERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4uLy4uL2ZzLWxpc3QucHJvdmlkZXJzJztcblxuaW1wb3J0IHtcbiAgRnNMaXN0QWJzdHJhY3RSb3csXG4gIEZzTGlzdEFjdGlvbixcbiAgRnNMaXN0Q29uZmlnLCBGc0xpc3RQZXJzaXRhbmNlLCBGc0xpc3RTZWxlY3Rpb25Db25maWcsXG4gIEZzTGlzdFRyYWNrQnlGbixcbiAgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ3VzdG9taXplQ29sc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbWl6ZS1jb2xzL2N1c3RvbWl6ZS1jb2xzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcm91cEV4cGFuZE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyb3VwLWV4cGFuZC1ub3RpZmllci5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcnNpc3RhbmNlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcGVyc2lzdGFuY2UtY29udHJvbGxlcic7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuL2xpc3QuY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UsXG4gICAgUGVyc2lzdGFuY2VDb250cm9sbGVyLFxuICAgIFJlb3JkZXJDb250cm9sbGVyLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZzTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLWxpc3QnKSBjbGFzc0ZzTGlzdCA9IHRydWU7XG5cbiAgQElucHV0KCdjb25maWcnKVxuICBzZXQgY29uZmlnKGNvbmZpZzogRnNMaXN0Q29uZmlnKSB7XG4gICAgdGhpcy5faW5pdFdpdGhDb25maWcoY29uZmlnKVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxvYWRlckxpbmVzID0gMztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbHRlcnNSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwdWJsaWMgbGlzdDogTGlzdDtcbiAgcHJpdmF0ZSBsaXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT47XG5cbiAgLy8gRXZlbnQgd2lsbCBmaXJlZCBpZiBhY3Rpb24gcmVtb3ZlOiB0cnVlIHdpbGwgY2xpY2tlZFxuICBwdWJsaWMgcm93UmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGZpcnN0TG9hZCA9IHRydWU7XG5cbiAgLy8gcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneTtcblxuICBwcml2YXRlIF9maWx0ZXJSZWY6IEZpbHRlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBfZmlsdGVyUGFyYW1zUmVhZHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaW5EaWFsb2cgPSAhIXRoaXMuX2RpYWxvZ1JlZiB8fCAhIXRoaXMuX2RyYXdlclJlZjtcblxuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcblxuICBAVmlld0NoaWxkKEZpbHRlckNvbXBvbmVudClcbiAgcHJpdmF0ZSBzZXQgZmlsdGVyUmVmZXJlbmNlKGNvbXBvbmVudCkge1xuICAgIHRoaXMuX2ZpbHRlclJlZiA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmxpc3QuYWN0aW9ucy5zZXRGaWx0ZXJSZWYoY29tcG9uZW50KTtcblxuICAgIHRoaXMuX2VtaXRGaWx0ZXJzUmVhZHlFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjb2x1bW5zIHRvIGNvbmZpZ1xuICAgKiBDcmVhdGUgQ29sdW1uIE1vZGVsIGluc3RhbmNlc1xuICAgKlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihGc0xpc3RDb2x1bW5EaXJlY3RpdmUpXG4gIHByaXZhdGUgc2V0IGNvbHVtblRlbXBsYXRlcyhsaXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT4pIHtcbiAgICB0aGlzLmxpc3RDb2x1bW5EaXJlY3RpdmVzID0gbGlzdENvbHVtbkRpcmVjdGl2ZXM7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LnRyYW5mb3JtVGVtcGxhdGVzVG9Db2x1bW5zKGxpc3RDb2x1bW5EaXJlY3RpdmVzKTtcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkKEZzTGlzdEVtcHR5U3RhdGVEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzZXQgX2VtcHR5U3RhdGVUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC5lbXB0eVN0YXRlVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVvcmRlckNvbnRyb2xsZXI6IFJlb3JkZXJDb250cm9sbGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRlNfTElTVF9ERUZBVUxUX0NPTkZJRykgcHJpdmF0ZSBfZGVmYXVsdE9wdGlvbnMsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmc1Njcm9sbDogRnNTY3JvbGxTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZHJhd2VyUmVmOiBEcmF3ZXJSZWY8YW55PixcbiAgICBwcml2YXRlIF9lbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHNlbGVjdGlvbkRpYWxvZzogU2VsZWN0aW9uRGlhbG9nLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZ3JvdXBFeHBhbmROb3RpZmllcjogR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgX3BlcnNpc3RhbmNlOiBQZXJzaXN0YW5jZUNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybiByZWZlcmVuY2UgZm9yIGZpbHRlclxuICAgKi9cbiAgZ2V0IGZpbHRlclJlZigpOiBGaWx0ZXJDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJSZWY7XG4gIH1cblxuICBnZXQgZ3JvdXBFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIuZ3JvdXBFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGhhc1N0YXR1cygpIHtcbiAgICByZXR1cm4gIXRoaXMucmVvcmRlckNvbnRyb2xsZXIubWFudWFsUmVvcmRlckFjdGl2YXRlZCAmJiBcbiAgICAgIHRoaXMubGlzdC5wYWdpbmcuZW5hYmxlZCAmJiAgICBcbiAgICAgICghdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkIHx8IHRoaXMucmVvcmRlckNvbnRyb2xsZXIuc3RhdHVzKSAmJlxuICAgICAgKCh0aGlzLmxpc3Quc2Nyb2xsYWJsZSAmJiB0aGlzLmxpc3Quc2Nyb2xsYWJsZS5zdGF0dXMpIHx8ICF0aGlzLmxpc3Quc2Nyb2xsYWJsZSlcbiAgfVxuXG4gIGdldCBwYWdpbmF0b3JWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QucGFnaW5nLmVuYWJsZWRcbiAgICAgICYmICF0aGlzLmZpcnN0TG9hZFxuICAgICAgJiYgIXRoaXMubGlzdC5zY3JvbGxhYmxlXG4gICAgICAmJiAhdGhpcy5saXN0LmVtcHR5U3RhdGVFbmFibGVkXG4gICAgICAmJiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3NDb3VudCA+IDBcbiAgICAgICYmIHRoaXMubGlzdC5wYWdpbmcucGFnZXMgPiAxO1xuICB9XG5cbiAgc2V0IGdyb3VwRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubGlzdC5ncm91cEVuYWJsZWQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGZpbHRlcnNRdWVyeSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5maWx0ZXJzUXVlcnk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9SZW1vdmVSb3coKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb0dyb3VwRXhwYW5kU3RhdHVzQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmV4dFBhZ2UoKSB7XG4gICAgdGhpcy5saXN0LnBhZ2luZy5nb05leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvUHJldigpO1xuICB9XG5cbiAgcHVibGljIGZpcnN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvRmlyc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBsYXN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvTGFzdCgpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZCgpIHtcbiAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YSh0cmFja0J5PzogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5nZXREYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIGhhc0RhdGEodHJhY2tCeTogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5oYXNEYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURhdGEoXG4gICAgcm93czogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdLFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm5cbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci51cGRhdGVEYXRhKHJvd3MsIHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHJlcGxhY2VSb3coXG4gICAgcm93OiBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIucmVwbGFjZURhdGEocm93LCB0cmFja0J5KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTZWxlY3Rpb25Db25maWcoY29uZmlnOiBGc0xpc3RTZWxlY3Rpb25Db25maWcpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLnVwZGF0ZUNvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0U2VsZWN0aW9uQWN0aW9ucygpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLnJlc2V0QWN0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZURhdGEoZGF0YTogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdIHwgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZW1vdmVEYXRhKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIHNldEhlYWRpbmcoaGVhZGluZzogc3RyaW5nKSB7XG4gICAgdGhpcy5saXN0LmhlYWRpbmcgPSBoZWFkaW5nO1xuICB9XG5cbiAgcHVibGljIHNldFN1YmhlYWRpbmcoc3ViaGVhZGluZzogc3RyaW5nKSB7XG4gICAgdGhpcy5saXN0LnN1YmhlYWRpbmcgPSBzdWJoZWFkaW5nO1xuICB9XG5cbiAgcHVibGljIHJlb3JkZXJTdGFydCgpIHtcbiAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZVJlb3JkZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW9yZGVyRmluaXNoKCkge1xuICAgIHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZGlzYWJsZVJlb3JkZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb25zKGFjdGlvbnM6IEZzTGlzdEFjdGlvbltdKSB7XG4gICAgaWYgKGFjdGlvbnMpIHtcbiAgICAgIHRoaXMubGlzdC5hY3Rpb25zLmNsZWFyQWN0aW9ucygpO1xuICAgICAgdGhpcy5saXN0LmFjdGlvbnMuc2V0QWN0aW9ucyhhY3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyUmVhZHkoKSB7XG4gICAgdGhpcy5saXN0LmZpbHRlcnNSZWFkeSQubmV4dCgpO1xuICAgIHRoaXMuX2ZpbHRlclBhcmFtc1JlYWR5ID0gdHJ1ZTtcbiAgICB0aGlzLl9lbWl0RmlsdGVyc1JlYWR5RXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdmlzaWJpbGl0eSBmb3Igc3BlY2lmaWMgY29sdW1uXG4gICAqL1xuICBwdWJsaWMgY29sdW1uVmlzaWJpbGl0eShuYW1lOiBzdHJpbmcsIHNob3c6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbHVtbnNWaXNpYmlsaXR5KFsge25hbWUsIHNob3cgfSBdKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2aXNpYmlsaXR5IGZvciBsaXN0IG9mIHNwZWNpZmljIGNvbHVtbnNcbiAgICovXG4gIHB1YmxpYyBjb2x1bW5zVmlzaWJpbGl0eShjb2x1bW5zOiB7IG5hbWU6IHN0cmluZywgc2hvdzogYm9vbGVhbiB9W10pIHtcbiAgICB0aGlzLmxpc3QuY29sdW1ucy51cGRhdGVWaXNpYmlsaXR5Rm9yQ29scyhjb2x1bW5zKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRGaWx0ZXJzUmVhZHlFdmVudCgpOiB2b2lkIHtcbiAgICBpZiAoISF0aGlzLmZpbHRlclJlZiAmJiB0aGlzLl9maWx0ZXJQYXJhbXNSZWFkeSkge1xuICAgICAgdGhpcy5maWx0ZXJzUmVhZHkuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGNvbmZpZyBmb3IgbGlzdFxuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICBwcml2YXRlIF9pbml0V2l0aENvbmZpZyhjb25maWc6IEZzTGlzdENvbmZpZykge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdE9wdHMgPSB0aGlzLl9kZWZhdWx0T3B0aW9uc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5fZGVmYXVsdE9wdGlvbnMpXG4gICAgICA6IHt9O1xuICAgIGNvbnN0IGxpc3RDb25maWcgPSBtZXJnZVdpdGgoZGVmYXVsdE9wdHMsIGNvbmZpZywgdGhpcy5fY29uZmlnTWVyZ2VDdXN0b21pemVyKTtcblxuICAgIGlmIChsaXN0Q29uZmlnLnBlcnNpc3QgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl9yZXN0b3JlUGVyc2lzdGFuY2UobGlzdENvbmZpZy5wZXJzaXN0KTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVDdXN0b21pemVBY3Rpb24obGlzdENvbmZpZy5hY3Rpb25zKTtcblxuICAgIHRoaXMubGlzdCA9IG5ldyBMaXN0KFxuICAgICAgdGhpcy5fZWwsXG4gICAgICBsaXN0Q29uZmlnLFxuICAgICAgdGhpcy5mc1Njcm9sbCxcbiAgICAgIHRoaXMuc2VsZWN0aW9uRGlhbG9nLFxuICAgICAgdGhpcy5fcm91dGVyLFxuICAgICAgdGhpcy5fcm91dGUsXG4gICAgICB0aGlzLl9wZXJzaXN0YW5jZSxcbiAgICAgIHRoaXMuX2luRGlhbG9nLFxuICAgICk7XG5cbiAgICB0aGlzLl93YWl0Rmlyc3RMb2FkKCk7XG4gICAgdGhpcy5fbGlzdGVuRmlsdGVyc1F1ZXJ5Q2hhbmdlKCk7XG5cbiAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLmluaXRXaXRoQ29uZmlnKFxuICAgICAgY29uZmlnLnJlb3JkZXIsXG4gICAgICB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIsXG4gICAgICB0aGlzLmxpc3QuYWN0aW9ucyxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMubGlzdENvbHVtbkRpcmVjdGl2ZXMpIHtcbiAgICAgIHRoaXMubGlzdC50cmFuZm9ybVRlbXBsYXRlc1RvQ29sdW1ucyh0aGlzLmxpc3RDb2x1bW5EaXJlY3RpdmVzKTtcbiAgICB9XG4gICAgdGhpcy5fbGlzdGVuU29ydGluZ0NoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYWN0aW9uIHdpdGggY3VzdG9taXplIGZsYWcgYW5kIHJlLWRlY2xhcmUgY2xpY2sgZnVuY3Rpb24gZm9yIEN1c3RvbWl6ZUNvbHNEaWFsb2dcbiAgICogQHBhcmFtIGFjdGlvbnNcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZUN1c3RvbWl6ZUFjdGlvbihhY3Rpb25zOiBGc0xpc3RBY3Rpb25bXSkge1xuICAgIGNvbnN0IGN1c3RvbWl6ZUFjdGlvbiA9IGFjdGlvbnM/LmZpbmQoKGFjdGlvbikgPT4gYWN0aW9uLmN1c3RvbWl6ZSk7XG5cbiAgICBpZiAoY3VzdG9taXplQWN0aW9uKSB7XG4gICAgICBjb25zdCBhY3Rpb25DbGlja0ZuID0gY3VzdG9taXplQWN0aW9uLmNsaWNrO1xuXG4gICAgICBjdXN0b21pemVBY3Rpb24uY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIGlmIChhY3Rpb25DbGlja0ZuKSB7XG4gICAgICAgICAgYWN0aW9uQ2xpY2tGbihudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ3VzdG9taXplQ29sc0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMubGlzdC5jb2x1bW5zLmNvbHVtbnNGb3JEaWFsb2csXG4gICAgICAgICAgICBjaGFuZ2VGbjogdGhpcy5saXN0LmNvbHVtbnMuY2hhbmdlRm4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmXG4gICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmxpc3Qub25EZXN0cm95JCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgIHRoaXMubGlzdC5jb2x1bW5zLnVwZGF0ZVZpc2liaWxpdHlGb3JDb2xzKGRhdGEpO1xuXG4gICAgICAgICAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzb3J0aW5nIGluIGZpbHRlclxuICAgKi9cbiAgcHJpdmF0ZSBfbGlzdGVuU29ydGluZ0NoYW5nZSgpIHtcbiAgICB0aGlzLmxpc3Quc29ydGluZ1xuICAgICAgLnNvcnRpbmdDaGFuZ2VkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmxpc3Qub25EZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHNvcnQpID0+IHtcbiAgICAgICAgdGhpcy5fZmlsdGVyUmVmLnVwZGF0ZVNvcnQoc29ydCk7XG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SZW1vdmVSb3coKSB7XG4gICAgdGhpcy5yb3dSZW1vdmVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKChyb3cpID0+IHtcbiAgICAgICAgdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnJlbW92ZURhdGEocm93KTtcbiAgICAgIH0pXG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb0dyb3VwRXhwYW5kU3RhdHVzQ2hhbmdlKCkge1xuICAgIGlmICh0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIuaGFzR3JvdXBzKSB7XG4gICAgICB0aGlzLl9ncm91cEV4cGFuZE5vdGlmaWVyLmV4cGFuZFN0YXR1c0NoYW5nZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgocm93KSA9PiB7XG4gICAgICAgICAgdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnRvZ2dsZVJvd0dyb3VwKHJvdyk7XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfd2FpdEZpcnN0TG9hZCgpIHtcbiAgICB0aGlzLmxpc3QubG9hZGluZyRcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gZmFsc2UpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0Lm9uRGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5maXJzdExvYWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuRmlsdGVyc1F1ZXJ5Q2hhbmdlKCkge1xuICAgIHRoaXMubGlzdC5maWx0ZXJzUXVlcnkkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubGlzdC5vbkRlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlRmlsdGVycyA9IE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGg7XG5cbiAgICAgICAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLnNldE51bmJlck9mQWN0aXZlRmlsdGVycyhhY3RpdmVGaWx0ZXJzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWdNZXJnZUN1c3RvbWl6ZXIob2JqVmFsdWU6IGFueSwgc3JjVmFsdWU6IGFueSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc3RvcmVQZXJzaXN0YW5jZShwZXJzaXN0Q29uZmlnOiBGc0xpc3RQZXJzaXRhbmNlKSB7XG4gICAgY29uc3QgbmFtZXNwYWNlID0gZ2V0Tm9ybWFsaXplZFBhdGgodGhpcy5fbG9jYXRpb24pO1xuICAgIHRoaXMuX3BlcnNpc3RhbmNlLnNldENvbmZpZyhwZXJzaXN0Q29uZmlnLCBuYW1lc3BhY2UsIHRoaXMuX2luRGlhbG9nKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZzLWxpc3QtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJ7IFxuICAgICAgJ2hhcy1maWx0ZXItaW5wdXQnOiBsaXN0LmZpbHRlcklucHV0LFxuICAgICAgJ2hhcy1maWx0ZXJzJzogbGlzdC5maWx0ZXJDb25maWc/Lml0ZW1zLmxlbmd0aCxcbiAgICAgICdoYXMtaGVhZGluZyc6IGxpc3QuaGVhZGluZyxcbiAgICAgICdoYXMtc3RhdHVzJzogaGFzU3RhdHVzLFxuICAgICAgJ2hhcy1jaGlwcyc6IGxpc3QuY2hpcHMsXG4gICAgICAnaGFzLWFjdGlvbnMnOiBsaXN0LmFjdGlvbnMuaGFzQWN0aW9ucyxcbiAgICAgICdmaXJzdC1sb2FkJzogZmlyc3RMb2FkLFxuICAgICAgJ2xvYWRpbmcnOiBsaXN0LmxvYWRpbmckIHwgYXN5bmMgXG4gICAgfVwiPlxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdENvbnRhaW5lckNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdENvbnRhaW5lckNvbnRlbnQ+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaXN0LmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzJCB8IGFzeW5jIGFzIGxpc3REYXRhXCI+XG4gICAgPGRpdiBjbGFzcz1cImZzLWxpc3QtaGVhZGVyLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBcbiAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtaGVhZGVyXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICduby13cmFwJzogcmVvcmRlckNvbnRyb2xsZXIubWFudWFsUmVvcmRlckFjdGl2YXRlZCB8fCAhbGlzdC5maWx0ZXJDb25maWc/Lml0ZW1zLmxlbmd0aCB9XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgXG4gICAgICAgICAgICAqbmdJZj1cIiFoYXNTdGF0dXNcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1wiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj4gICBcbiAgICAgICAgPGZzLWZpbHRlclxuICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1maWx0ZXJcIlxuICAgICAgICAgICpuZ0lmPVwibGlzdC5maWx0ZXJDb25maWdcIlxuICAgICAgICAgIFtmaWx0ZXJdPVwibGlzdC5maWx0ZXJDb25maWdcIlxuICAgICAgICAgIFtzaG93U29ydEJ5XT1cIiFsaXN0LnN0YXR1c1wiXG4gICAgICAgICAgW3Nob3dGaWx0ZXJJbnB1dF09XCJsaXN0LmZpbHRlcklucHV0XCJcbiAgICAgICAgICAocmVhZHkpPVwiZmlsdGVyUmVhZHkoKVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmc0ZpbHRlclN0YXR1c0Jhcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNTdGF0dXNcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICAgIFxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1N0YXR1c1wiPlxuICAgICAgICAgICAgICA8ZnMtbGlzdC1zdGF0dXNcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtc3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoaWRkZW4tbW9iaWxlJzogIWxpc3Quc3RhdHVzIH1cIlxuICAgICAgICAgICAgICAgIFtyb3dzXT1cImxpc3REYXRhXCJcbiAgICAgICAgICAgICAgICBbc29ydGluZ109XCJsaXN0LnNvcnRpbmdcIlxuICAgICAgICAgICAgICAgIFtwYWdpbmddPVwibGlzdC5wYWdpbmdcIlxuICAgICAgICAgICAgICAgIFtmaXJzdExvYWRdPVwiZmlyc3RMb2FkXCJcbiAgICAgICAgICAgICAgICBbc2Nyb2xsYWJsZV09XCJsaXN0LnNjcm9sbGFibGVcIj5cbiAgICAgICAgICAgICAgPC9mcy1saXN0LXN0YXR1cz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZnMtZmlsdGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZnMtbGlzdC1jb250ZW50XVwiPjwvbmctY29udGVudD5cblxuICAgIDwhLS0gVGFibGUgaW1wbGVtZW50YXRpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImZzLWxpc3QtdGFibGUtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpcnN0TG9hZCAmJiBsaXN0RGF0YS5sZW5ndGggPiAwICYmICFsaXN0LmVtcHR5U3RhdGVFbmFibGVkXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImZzLWxpc3QtdGFibGVcIiByb2xlPVwiZ3JpZFwiIFtmc0xpc3RDb250ZW50SW5pdF09XCJsaXN0LmFmdGVyQ29udGVudEluaXRcIj5cbiAgICAgICAgICA8dGhlYWQgXG4gICAgICAgICAgICBmcy1saXN0LWhlYWRcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1oZWFkXCJcbiAgICAgICAgICAgIHJvbGU9XCJyb3dncm91cFwiXG4gICAgICAgICAgICAqbmdJZj1cImxpc3QuY29sdW1ucy5oYXNIZWFkZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwibGlzdC5jb2x1bW5zLnRoZWFkQ2xhc3NcIlxuICAgICAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLnZpc2libGVDb2x1bW5zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtzb3J0aW5nXT1cImxpc3Quc29ydGluZ1wiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cImxpc3Quc2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiPlxuICAgICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgICA8dGJvZHkgXG4gICAgICAgICAgICBmcy1saXN0LWJvZHlcbiAgICAgICAgICAgIGZzTGlzdERyYWdnYWJsZUxpc3RcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1ib2R5XCJcbiAgICAgICAgICAgIHJvbGU9XCJyb3dncm91cFwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiISEocmVvcmRlckNvbnRyb2xsZXIucmVvcmRlckRpc2FibGVkJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICBbcm93c109XCJsaXN0RGF0YVwiXG4gICAgICAgICAgICBbcm93QWN0aW9uc1Jhd109XCJsaXN0LnJvd0FjdGlvbnNSYXdcIlxuICAgICAgICAgICAgW2dyb3VwQWN0aW9uc1Jhd109XCJsaXN0Lmdyb3VwQWN0aW9uc1Jhd1wiXG4gICAgICAgICAgICBbaGFzUm93QWN0aW9uc109XCJsaXN0Lmhhc1Jvd0FjdGlvbnNcIlxuICAgICAgICAgICAgW3Jvd0V2ZW50c109XCJsaXN0LnJvd0V2ZW50c1wiXG4gICAgICAgICAgICBbcm93Q2xhc3NdPVwibGlzdC5yb3dDbGFzc1wiXG4gICAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlc3RvcmVNb2RlXT1cImxpc3QucmVzdG9yZU1vZGVcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJsaXN0LnNlbGVjdGlvblwiXG4gICAgICAgICAgICBbcm93UmVtb3ZlZF09XCJyb3dSZW1vdmVkXCI+XG4gICAgICAgICAgPC90Ym9keT5cblxuICAgICAgICAgIDx0Zm9vdCBcbiAgICAgICAgICAgIGZzLWxpc3QtZm9vdGVyXG4gICAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtZm9vdGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwibGlzdC5jb2x1bW5zLmhhc0Zvb3RlclwiXG4gICAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJsaXN0LnNlbGVjdGlvblwiXG4gICAgICAgICAgICBbaGFzUm93QWN0aW9uc109XCJsaXN0Lmhhc1Jvd0FjdGlvbnNcIj5cbiAgICAgICAgICA8L3Rmb290PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZnMtbGlzdC1sb2FkZXJcbiAgICAgICAgKm5nSWY9XCJmaXJzdExvYWRcIlxuICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMuY29sdW1uc1wiXG4gICAgICAgIFtsb2FkZXJMaW5lc109XCJsb2FkZXJMaW5lc1wiPlxuICAgICAgPC9mcy1saXN0LWxvYWRlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxmcy1saXN0LXBhZ2luYXRpb25cbiAgICAgICpuZ0lmPVwicGFnaW5hdG9yVmlzaWJsZVwiXG4gICAgICBjbGFzcz1cImZzLWxpc3QtcGFnaW5hdGlvblwiXG4gICAgICBbcm93c109XCJsaXN0RGF0YVwiXG4gICAgICBbcGFnaW5hdGlvbl09XCJsaXN0LnBhZ2luZ1wiPlxuICAgIDwvZnMtbGlzdC1wYWdpbmF0aW9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaXJzdExvYWRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImxpc3REYXRhLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgY2xhc3M9XCJmcy1saXN0LW5vLXJlc3VsdHMtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwibGlzdC5ub1Jlc3VsdHM/Lm1lc3NhZ2UgJiYgIWxpc3QuZW1wdHlTdGF0ZUVuYWJsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICB7eyBsaXN0Lm5vUmVzdWx0cz8ubWVzc2FnZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3QuZW1wdHlTdGF0ZUVuYWJsZWRcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdC5lbXB0eVN0YXRlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cblxuPG5nLXRlbXBsYXRlICNoZWFkaW5nPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1jb250YWluZXJcIiAqbmdJZj1cImxpc3QuaGVhZGluZyB8fCBsaXN0LnN1YmhlYWRpbmdcIj5cbiAgICA8aDIgY2xhc3M9XCJoZWFkaW5nXCIgKm5nSWY9XCJsaXN0LmhlYWRpbmdcIj57e2xpc3QuaGVhZGluZ319PC9oMj5cbiAgICA8ZGl2IGNsYXNzPVwic21hbGwgc3ViaGVhZGluZ1wiICpuZ0lmPVwibGlzdC5zdWJoZWFkaW5nXCI+e3tsaXN0LnN1YmhlYWRpbmd9fTwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, QueryList, ViewChild, HostBinding, Optional, ContentChild, TemplateRef, Output, } from '@angular/core';
|
|
2
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
|
+
import { Location } from '@angular/common';
|
|
4
|
+
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { filter, skip, take, takeUntil } from 'rxjs/operators';
|
|
7
|
+
import { FsScrollService } from '@firestitch/scroll';
|
|
8
|
+
import { FilterComponent } from '@firestitch/filter';
|
|
9
|
+
import { SelectionDialog } from '@firestitch/selection';
|
|
10
|
+
import { getNormalizedPath } from '@firestitch/common';
|
|
11
|
+
import { DrawerRef } from '@firestitch/drawer';
|
|
12
|
+
import { cloneDeep, mergeWith } from 'lodash-es';
|
|
13
|
+
import { List } from '../../classes/list-controller';
|
|
14
|
+
import { ReorderController } from '../../classes/reorder-controller';
|
|
15
|
+
import { FsListColumnDirective } from '../../directives/column/column.directive';
|
|
16
|
+
import { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';
|
|
17
|
+
import { FS_LIST_DEFAULT_CONFIG } from '../../fs-list.providers';
|
|
18
|
+
import { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';
|
|
19
|
+
import { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';
|
|
20
|
+
import { PersistanceController } from '../../classes/persistance-controller';
|
|
21
|
+
import * as i0 from "@angular/core";
|
|
22
|
+
import * as i1 from "../../classes/reorder-controller";
|
|
23
|
+
import * as i2 from "@firestitch/scroll";
|
|
24
|
+
import * as i3 from "@angular/material/dialog";
|
|
25
|
+
import * as i4 from "@firestitch/drawer";
|
|
26
|
+
import * as i5 from "@firestitch/selection";
|
|
27
|
+
import * as i6 from "../../services/group-expand-notifier.service";
|
|
28
|
+
import * as i7 from "@angular/router";
|
|
29
|
+
import * as i8 from "../../classes/persistance-controller";
|
|
30
|
+
import * as i9 from "@angular/common";
|
|
31
|
+
import * as i10 from "@firestitch/filter";
|
|
32
|
+
import * as i11 from "../status/status.component";
|
|
33
|
+
import * as i12 from "../head/head.component";
|
|
34
|
+
import * as i13 from "../body/body.component";
|
|
35
|
+
import * as i14 from "../footer/footer.component";
|
|
36
|
+
import * as i15 from "../loader/loader.component";
|
|
37
|
+
import * as i16 from "../pagination/pagination.component";
|
|
38
|
+
import * as i17 from "../../directives/content-init/content-init.directive";
|
|
39
|
+
import * as i18 from "../../directives/draggable-list/draggable-list.directive";
|
|
40
|
+
import * as i19 from "../../directives/footer/footer.directive";
|
|
41
|
+
export class FsListComponent {
|
|
42
|
+
constructor(reorderController, _defaultOptions, fsScroll, _dialogRef, _drawerRef, _el, selectionDialog, dialog, cdRef, _groupExpandNotifier, _router, _route, _persistance, _location) {
|
|
43
|
+
this.reorderController = reorderController;
|
|
44
|
+
this._defaultOptions = _defaultOptions;
|
|
45
|
+
this.fsScroll = fsScroll;
|
|
46
|
+
this._dialogRef = _dialogRef;
|
|
47
|
+
this._drawerRef = _drawerRef;
|
|
48
|
+
this._el = _el;
|
|
49
|
+
this.selectionDialog = selectionDialog;
|
|
50
|
+
this.dialog = dialog;
|
|
51
|
+
this.cdRef = cdRef;
|
|
52
|
+
this._groupExpandNotifier = _groupExpandNotifier;
|
|
53
|
+
this._router = _router;
|
|
54
|
+
this._route = _route;
|
|
55
|
+
this._persistance = _persistance;
|
|
56
|
+
this._location = _location;
|
|
57
|
+
this.classFsList = true;
|
|
58
|
+
this.loaderLines = 3;
|
|
59
|
+
this.filtersReady = new EventEmitter();
|
|
60
|
+
this.keywordVisible = false;
|
|
61
|
+
// Event will fired if action remove: true will clicked
|
|
62
|
+
this.rowRemoved = new EventEmitter();
|
|
63
|
+
this.firstLoad = true;
|
|
64
|
+
this._filterParamsReady = false;
|
|
65
|
+
this._inDialog = !!this._dialogRef || !!this._drawerRef;
|
|
66
|
+
this._destroy = new Subject();
|
|
67
|
+
}
|
|
68
|
+
set config(config) {
|
|
69
|
+
this._initWithConfig(config);
|
|
70
|
+
}
|
|
71
|
+
set filterReference(component) {
|
|
72
|
+
this._filterRef = component;
|
|
73
|
+
this.list.actions.setFilterRef(component);
|
|
74
|
+
this._emitFiltersReadyEvent();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Set columns to config
|
|
78
|
+
* Create Column Model instances
|
|
79
|
+
*
|
|
80
|
+
*/
|
|
81
|
+
set columnTemplates(listColumnDirectives) {
|
|
82
|
+
this.listColumnDirectives = listColumnDirectives;
|
|
83
|
+
if (this.list) {
|
|
84
|
+
this.list.tranformTemplatesToColumns(listColumnDirectives);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
set _emptyStateTemplate(template) {
|
|
88
|
+
if (this.list) {
|
|
89
|
+
this.list.emptyStateTemplate = template;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Return reference for filter
|
|
94
|
+
*/
|
|
95
|
+
get filterRef() {
|
|
96
|
+
return this._filterRef;
|
|
97
|
+
}
|
|
98
|
+
get groupEnabled() {
|
|
99
|
+
return this.list.dataController.groupEnabled;
|
|
100
|
+
}
|
|
101
|
+
get hasFilterKeyword() {
|
|
102
|
+
return this.list.filterInput && this.keywordVisible;
|
|
103
|
+
}
|
|
104
|
+
get hasStatus() {
|
|
105
|
+
return this.list.status &&
|
|
106
|
+
!this.reorderController.manualReorderActivated &&
|
|
107
|
+
this.list.paging.enabled &&
|
|
108
|
+
(!this.reorderController.enabled || this.reorderController.status) &&
|
|
109
|
+
((this.list.scrollable && this.list.scrollable.status) || !this.list.scrollable);
|
|
110
|
+
}
|
|
111
|
+
get paginatorVisible() {
|
|
112
|
+
return this.list.paging.enabled
|
|
113
|
+
&& !this.firstLoad
|
|
114
|
+
&& !this.list.scrollable
|
|
115
|
+
&& !this.list.emptyStateEnabled
|
|
116
|
+
&& this.list.dataController.visibleRowsCount > 0
|
|
117
|
+
&& this.list.paging.pages > 1;
|
|
118
|
+
}
|
|
119
|
+
set groupEnabled(value) {
|
|
120
|
+
this.list.groupEnabled(value);
|
|
121
|
+
}
|
|
122
|
+
get filtersQuery() {
|
|
123
|
+
return this.list.filtersQuery;
|
|
124
|
+
}
|
|
125
|
+
ngOnInit() {
|
|
126
|
+
this._subscribeToRemoveRow();
|
|
127
|
+
this._subscribeToGroupExpandStatusChange();
|
|
128
|
+
}
|
|
129
|
+
ngOnDestroy() {
|
|
130
|
+
if (this.list) {
|
|
131
|
+
this.list.destroy();
|
|
132
|
+
}
|
|
133
|
+
this._destroy.next();
|
|
134
|
+
this._destroy.complete();
|
|
135
|
+
}
|
|
136
|
+
nextPage() {
|
|
137
|
+
this.list.paging.goNext();
|
|
138
|
+
}
|
|
139
|
+
prevPage() {
|
|
140
|
+
this.list.paging.goPrev();
|
|
141
|
+
}
|
|
142
|
+
firstPage() {
|
|
143
|
+
this.list.paging.goFirst();
|
|
144
|
+
}
|
|
145
|
+
lastPage() {
|
|
146
|
+
this.list.paging.goLast();
|
|
147
|
+
}
|
|
148
|
+
reload() {
|
|
149
|
+
this.list.reload();
|
|
150
|
+
}
|
|
151
|
+
getData(trackBy) {
|
|
152
|
+
return this.list.getData(trackBy);
|
|
153
|
+
}
|
|
154
|
+
hasData(trackBy) {
|
|
155
|
+
return this.list.hasData(trackBy);
|
|
156
|
+
}
|
|
157
|
+
updateData(rows, trackBy) {
|
|
158
|
+
return this.list.dataController.updateData(rows, trackBy);
|
|
159
|
+
}
|
|
160
|
+
replaceRow(row, trackBy) {
|
|
161
|
+
return this.list.dataController.replaceData(row, trackBy);
|
|
162
|
+
}
|
|
163
|
+
updateSelectionConfig(config) {
|
|
164
|
+
this.list.selection.updateConfig(config);
|
|
165
|
+
}
|
|
166
|
+
resetSelectionActions() {
|
|
167
|
+
this.list.selection.resetActions();
|
|
168
|
+
}
|
|
169
|
+
removeData(data) {
|
|
170
|
+
return this.list.dataController.removeData(data);
|
|
171
|
+
}
|
|
172
|
+
setHeading(heading) {
|
|
173
|
+
this.list.heading = heading;
|
|
174
|
+
}
|
|
175
|
+
setSubheading(subheading) {
|
|
176
|
+
this.list.subheading = subheading;
|
|
177
|
+
}
|
|
178
|
+
reorderStart() {
|
|
179
|
+
this.reorderController.enableReorder();
|
|
180
|
+
}
|
|
181
|
+
reorderFinish() {
|
|
182
|
+
this.reorderController.disableReorder();
|
|
183
|
+
}
|
|
184
|
+
setActions(actions) {
|
|
185
|
+
if (actions) {
|
|
186
|
+
this.list.actions.clearActions();
|
|
187
|
+
this.list.actions.setActions(actions);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
filterReady() {
|
|
191
|
+
this.list.filtersReady$.next();
|
|
192
|
+
this._filterParamsReady = true;
|
|
193
|
+
this._emitFiltersReadyEvent();
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Update visibility for specific column
|
|
197
|
+
*/
|
|
198
|
+
columnVisibility(name, show) {
|
|
199
|
+
this.columnsVisibility([{ name, show }]);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Update visibility for list of specific columns
|
|
203
|
+
*/
|
|
204
|
+
columnsVisibility(columns) {
|
|
205
|
+
this.list.columns.updateVisibilityForCols(columns);
|
|
206
|
+
}
|
|
207
|
+
_emitFiltersReadyEvent() {
|
|
208
|
+
if (!!this.filterRef && this._filterParamsReady) {
|
|
209
|
+
this.filtersReady.emit();
|
|
210
|
+
this.keywordVisible = this.filterRef.hasKeyword;
|
|
211
|
+
this.cdRef.markForCheck();
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Initialize config for list
|
|
216
|
+
* @param config
|
|
217
|
+
*/
|
|
218
|
+
_initWithConfig(config) {
|
|
219
|
+
if (this.list) {
|
|
220
|
+
this.list.destroy();
|
|
221
|
+
}
|
|
222
|
+
const defaultOpts = this._defaultOptions
|
|
223
|
+
? cloneDeep(this._defaultOptions)
|
|
224
|
+
: {};
|
|
225
|
+
const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);
|
|
226
|
+
if (listConfig.persist !== false) {
|
|
227
|
+
this._restorePersistance(listConfig.persist);
|
|
228
|
+
}
|
|
229
|
+
this._updateCustomizeAction(listConfig.actions);
|
|
230
|
+
this.list = new List(this._el, listConfig, this.fsScroll, this.selectionDialog, this._router, this._route, this._persistance, this._inDialog);
|
|
231
|
+
this._waitFirstLoad();
|
|
232
|
+
this._listenFiltersQueryChange();
|
|
233
|
+
this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions);
|
|
234
|
+
if (this.listColumnDirectives) {
|
|
235
|
+
this.list.tranformTemplatesToColumns(this.listColumnDirectives);
|
|
236
|
+
}
|
|
237
|
+
this._listenSortingChange();
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Find action with customize flag and re-declare click function for CustomizeColsDialog
|
|
241
|
+
* @param actions
|
|
242
|
+
*/
|
|
243
|
+
_updateCustomizeAction(actions) {
|
|
244
|
+
const customizeAction = actions === null || actions === void 0 ? void 0 : actions.find((action) => action.customize);
|
|
245
|
+
if (customizeAction) {
|
|
246
|
+
const actionClickFn = customizeAction.click;
|
|
247
|
+
customizeAction.click = () => {
|
|
248
|
+
if (actionClickFn) {
|
|
249
|
+
actionClickFn(null);
|
|
250
|
+
}
|
|
251
|
+
const dialogRef = this.dialog.open(CustomizeColsDialogComponent, {
|
|
252
|
+
data: {
|
|
253
|
+
columns: this.list.columns.columnsForDialog,
|
|
254
|
+
changeFn: this.list.columns.changeFn,
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
dialogRef
|
|
258
|
+
.afterClosed()
|
|
259
|
+
.pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
|
|
260
|
+
.subscribe((data) => {
|
|
261
|
+
if (data) {
|
|
262
|
+
this.list.columns.updateVisibilityForCols(data);
|
|
263
|
+
this.cdRef.markForCheck();
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Update sorting in filter
|
|
271
|
+
*/
|
|
272
|
+
_listenSortingChange() {
|
|
273
|
+
this.list.sorting
|
|
274
|
+
.sortingChanged$
|
|
275
|
+
.pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
|
|
276
|
+
.subscribe((sort) => {
|
|
277
|
+
this._filterRef.updateSort(sort);
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
_subscribeToRemoveRow() {
|
|
281
|
+
this.rowRemoved
|
|
282
|
+
.pipe(takeUntil(this._destroy))
|
|
283
|
+
.subscribe((row) => {
|
|
284
|
+
this.list.dataController.removeData(row);
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
_subscribeToGroupExpandStatusChange() {
|
|
288
|
+
if (this.list.dataController.hasGroups) {
|
|
289
|
+
this._groupExpandNotifier.expandStatusChange$
|
|
290
|
+
.pipe(takeUntil(this._destroy))
|
|
291
|
+
.subscribe((row) => {
|
|
292
|
+
this.list.dataController.toggleRowGroup(row);
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
_waitFirstLoad() {
|
|
297
|
+
this.list.loading$
|
|
298
|
+
.pipe(skip(1), filter((value) => value === false), take(1), takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
|
|
299
|
+
.subscribe(() => {
|
|
300
|
+
this.firstLoad = false;
|
|
301
|
+
this.cdRef.markForCheck();
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
_listenFiltersQueryChange() {
|
|
305
|
+
this.list.filtersQuery$
|
|
306
|
+
.pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
|
|
307
|
+
.subscribe((value) => {
|
|
308
|
+
if (value) {
|
|
309
|
+
const activeFilters = Object.keys(value).length;
|
|
310
|
+
this.reorderController.setNunberOfActiveFilters(activeFilters);
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
_configMergeCustomizer(objValue, srcValue) {
|
|
315
|
+
if (Array.isArray(objValue)) {
|
|
316
|
+
return objValue;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
_restorePersistance(persistConfig) {
|
|
320
|
+
const namespace = getNormalizedPath(this._location);
|
|
321
|
+
this._persistance.setConfig(persistConfig, namespace, this._inDialog);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
FsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, deps: [{ token: i1.ReorderController }, { token: FS_LIST_DEFAULT_CONFIG, optional: true }, { token: i2.FsScrollService, optional: true }, { token: i3.MatDialogRef, optional: true }, { token: i4.DrawerRef, optional: true }, { token: i0.ElementRef }, { token: i5.SelectionDialog }, { token: i3.MatDialog }, { token: i0.ChangeDetectorRef }, { token: i6.GroupExpandNotifierService }, { token: i7.Router }, { token: i7.ActivatedRoute }, { token: i8.PersistanceController }, { token: i9.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
325
|
+
FsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsListComponent, selector: "fs-list", inputs: { config: "config", loaderLines: "loaderLines" }, outputs: { filtersReady: "filtersReady" }, host: { properties: { "class.fs-list": "this.classFsList" } }, providers: [
|
|
326
|
+
GroupExpandNotifierService,
|
|
327
|
+
PersistanceController,
|
|
328
|
+
ReorderController,
|
|
329
|
+
], queries: [{ propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div class=\"fs-list-container\"\n [ngClass]=\"{ \n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async \n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div \n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container \n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container> \n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container \n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container> \n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\"\n [scrollable]=\"list.scrollable\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table class=\"fs-list-table\" role=\"grid\" [fsListContentInit]=\"list.afterContentInit\">\n <thead \n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\">\n </thead>\n\n <tbody \n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\">\n </tbody>\n\n <tfoot \n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"list.heading || list.subheading\">\n <h2 class=\"heading\" *ngIf=\"list.heading\">{{list.heading}}</h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading\">{{list.subheading}}</div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .fs-list{display:block;width:100%}::ng-deep .fs-list .fs-list-swap-restricted{opacity:.5}::ng-deep .fs-list .fs-list-no-drop{cursor:no-drop}::ng-deep .fs-list .fs-filter{margin-bottom:0;position:initial!important;display:block;width:100%}::ng-deep .fs-list .fs-list-container.loading .fs-list-status,::ng-deep .fs-list .fs-list-container.loading .fs-list-body,::ng-deep .fs-list .fs-list-container.loading fs-list-pagination,::ng-deep .fs-list .fs-list-container.loading .filter-chips,::ng-deep .fs-list .fs-list-container.loading .fs-list-no-results-container,::ng-deep .fs-list .fs-list-container.first-load .fs-list-status,::ng-deep .fs-list .fs-list-container.first-load .fs-list-body,::ng-deep .fs-list .fs-list-container.first-load fs-list-pagination,::ng-deep .fs-list .fs-list-container.first-load .filter-chips,::ng-deep .fs-list .fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}::ng-deep .fs-list .fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}::ng-deep .fs-list .fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}::ng-deep .fs-list .fs-list-container.has-actions .fs-list-actions{margin-left:5px}::ng-deep .fs-list .fs-list-table-container{width:100%;overflow:auto}::ng-deep .fs-list table,::ng-deep .fs-list .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}::ng-deep .fs-list .hidden{display:none}::ng-deep .fs-list thead,::ng-deep .fs-list .fs-list-head{display:table-header-group}::ng-deep .fs-list thead th,::ng-deep .fs-list thead .fs-list-col,::ng-deep .fs-list .fs-list-head th,::ng-deep .fs-list .fs-list-head .fs-list-col{color:#999;padding:8px;font-weight:normal;font-size:13px;color:#8f8f8f}::ng-deep .fs-list thead th.fs-list-col-selection,::ng-deep .fs-list thead .fs-list-col.fs-list-col-selection,::ng-deep .fs-list .fs-list-head th.fs-list-col-selection,::ng-deep .fs-list .fs-list-head .fs-list-col.fs-list-col-selection{width:1%;text-align:left}::ng-deep .fs-list thead th.sorting,::ng-deep .fs-list thead .fs-list-col.sorting,::ng-deep .fs-list .fs-list-head th.sorting,::ng-deep .fs-list .fs-list-head .fs-list-col.sorting{cursor:pointer}::ng-deep .fs-list thead th.sorting:hover,::ng-deep .fs-list thead .fs-list-col.sorting:hover,::ng-deep .fs-list .fs-list-head th.sorting:hover,::ng-deep .fs-list .fs-list-head .fs-list-col.sorting:hover{background-color:#f6f6f6}::ng-deep .fs-list thead th .wrap,::ng-deep .fs-list thead .fs-list-col .wrap,::ng-deep .fs-list .fs-list-head th .wrap,::ng-deep .fs-list .fs-list-head .fs-list-col .wrap{display:inline-flex;vertical-align:middle;white-space:nowrap}::ng-deep .fs-list thead th .wrap mat-icon,::ng-deep .fs-list thead .fs-list-col .wrap mat-icon,::ng-deep .fs-list .fs-list-head th .wrap mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-col .wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}::ng-deep .fs-list thead th .wrap .direction,::ng-deep .fs-list thead .fs-list-col .wrap .direction,::ng-deep .fs-list .fs-list-head th .wrap .direction,::ng-deep .fs-list .fs-list-head .fs-list-col .wrap .direction{margin-left:5px}::ng-deep .fs-list thead th.sorting,::ng-deep .fs-list thead .fs-list-col.sorting,::ng-deep .fs-list .fs-list-head th.sorting,::ng-deep .fs-list .fs-list-head .fs-list-col.sorting{background-image:none}::ng-deep .fs-list tbody,::ng-deep .fs-list .fs-list-body{display:table-row-group;position:relative}::ng-deep .fs-list tbody.disabled,::ng-deep .fs-list .fs-list-body.disabled{opacity:.4;pointer-events:none}::ng-deep .fs-list tbody td,::ng-deep .fs-list tbody .fs-list-col,::ng-deep .fs-list .fs-list-body td,::ng-deep .fs-list .fs-list-body .fs-list-col{box-sizing:border-box}::ng-deep .fs-list tbody tr:hover td,::ng-deep .fs-list tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list .fs-list-body tr:hover td,::ng-deep .fs-list .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list tbody tr:hover td,::ng-deep .fs-list tbody tr:hover .fs-list-col,::ng-deep .fs-list tbody .fs-list-row:hover td,::ng-deep .fs-list tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list .fs-list-body tr:hover td,::ng-deep .fs-list .fs-list-body tr:hover .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row:hover td,::ng-deep .fs-list .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list tbody tr:first-child td,::ng-deep .fs-list .fs-list-body tr:first-child td{border-top:2px solid #ddd}::ng-deep .fs-list tbody tr:last-child td,::ng-deep .fs-list .fs-list-body tr:last-child td{border-bottom:2px solid #ddd}::ng-deep .fs-list tbody td,::ng-deep .fs-list .fs-list-body td{border-top:1px solid #ddd}::ng-deep .fs-list thead tr,::ng-deep .fs-list thead .fs-list-row,::ng-deep .fs-list tbody tr,::ng-deep .fs-list tbody .fs-list-row,::ng-deep .fs-list tfoot tr,::ng-deep .fs-list tfoot .fs-list-row,::ng-deep .fs-list .fs-list-head tr,::ng-deep .fs-list .fs-list-head .fs-list-row,::ng-deep .fs-list .fs-list-body tr,::ng-deep .fs-list .fs-list-body .fs-list-row,::ng-deep .fs-list .fs-list-footer tr,::ng-deep .fs-list .fs-list-footer .fs-list-row{display:table-row}::ng-deep .fs-list thead tr td,::ng-deep .fs-list thead tr th,::ng-deep .fs-list thead tr .fs-list-col,::ng-deep .fs-list thead .fs-list-row td,::ng-deep .fs-list thead .fs-list-row th,::ng-deep .fs-list thead .fs-list-row .fs-list-col,::ng-deep .fs-list tbody tr td,::ng-deep .fs-list tbody tr th,::ng-deep .fs-list tbody tr .fs-list-col,::ng-deep .fs-list tbody .fs-list-row td,::ng-deep .fs-list tbody .fs-list-row th,::ng-deep .fs-list tbody .fs-list-row .fs-list-col,::ng-deep .fs-list tfoot tr td,::ng-deep .fs-list tfoot tr th,::ng-deep .fs-list tfoot tr .fs-list-col,::ng-deep .fs-list tfoot .fs-list-row td,::ng-deep .fs-list tfoot .fs-list-row th,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-head tr td,::ng-deep .fs-list .fs-list-head tr th,::ng-deep .fs-list .fs-list-head tr .fs-list-col,::ng-deep .fs-list .fs-list-head .fs-list-row td,::ng-deep .fs-list .fs-list-head .fs-list-row th,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-body tr td,::ng-deep .fs-list .fs-list-body tr th,::ng-deep .fs-list .fs-list-body tr .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row td,::ng-deep .fs-list .fs-list-body .fs-list-row th,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-footer tr td,::ng-deep .fs-list .fs-list-footer tr th,::ng-deep .fs-list .fs-list-footer tr .fs-list-col,::ng-deep .fs-list .fs-list-footer .fs-list-row td,::ng-deep .fs-list .fs-list-footer .fs-list-row th,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col{display:table-cell;padding:8px;vertical-align:middle;outline:none}::ng-deep .fs-list thead tr td.drag-col,::ng-deep .fs-list thead tr th.drag-col,::ng-deep .fs-list thead tr .fs-list-col.drag-col,::ng-deep .fs-list thead .fs-list-row td.drag-col,::ng-deep .fs-list thead .fs-list-row th.drag-col,::ng-deep .fs-list thead .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list tbody tr td.drag-col,::ng-deep .fs-list tbody tr th.drag-col,::ng-deep .fs-list tbody tr .fs-list-col.drag-col,::ng-deep .fs-list tbody .fs-list-row td.drag-col,::ng-deep .fs-list tbody .fs-list-row th.drag-col,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list tfoot tr td.drag-col,::ng-deep .fs-list tfoot tr th.drag-col,::ng-deep .fs-list tfoot tr .fs-list-col.drag-col,::ng-deep .fs-list tfoot .fs-list-row td.drag-col,::ng-deep .fs-list tfoot .fs-list-row th.drag-col,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-head tr td.drag-col,::ng-deep .fs-list .fs-list-head tr th.drag-col,::ng-deep .fs-list .fs-list-head tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-body tr td.drag-col,::ng-deep .fs-list .fs-list-body tr th.drag-col,::ng-deep .fs-list .fs-list-body tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-footer tr td.drag-col,::ng-deep .fs-list .fs-list-footer tr th.drag-col,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.drag-col{width:24px;text-align:center;cursor:grab}::ng-deep .fs-list thead tr td.drag-col mat-icon,::ng-deep .fs-list thead tr th.drag-col mat-icon,::ng-deep .fs-list thead tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tbody tr td.drag-col mat-icon,::ng-deep .fs-list tbody tr th.drag-col mat-icon,::ng-deep .fs-list tbody tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tfoot tr td.drag-col mat-icon,::ng-deep .fs-list tfoot tr th.drag-col mat-icon,::ng-deep .fs-list tfoot tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.drag-col mat-icon{display:flex}::ng-deep .fs-list thead tr td.row-actions,::ng-deep .fs-list thead tr th.row-actions,::ng-deep .fs-list thead tr .fs-list-col.row-actions,::ng-deep .fs-list thead .fs-list-row td.row-actions,::ng-deep .fs-list thead .fs-list-row th.row-actions,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list tbody tr td.row-actions,::ng-deep .fs-list tbody tr th.row-actions,::ng-deep .fs-list tbody tr .fs-list-col.row-actions,::ng-deep .fs-list tbody .fs-list-row td.row-actions,::ng-deep .fs-list tbody .fs-list-row th.row-actions,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list tfoot tr td.row-actions,::ng-deep .fs-list tfoot tr th.row-actions,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions,::ng-deep .fs-list tfoot .fs-list-row td.row-actions,::ng-deep .fs-list tfoot .fs-list-row th.row-actions,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-head tr td.row-actions,::ng-deep .fs-list .fs-list-head tr th.row-actions,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-body tr td.row-actions,::ng-deep .fs-list .fs-list-body tr th.row-actions,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-footer tr td.row-actions,::ng-deep .fs-list .fs-list-footer tr th.row-actions,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions{width:1%;white-space:nowrap;padding-right:10px;overflow:hidden}::ng-deep .fs-list thead tr td.row-actions .row-inline-action,::ng-deep .fs-list thead tr th.row-actions .row-inline-action,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action{margin-left:12px;display:inline-block}::ng-deep .fs-list thead tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child{margin-left:0}::ng-deep .fs-list thead tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr td.row-actions .row-menu-action,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr th.row-actions .row-menu-action,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr td.row-actions .row-menu-action,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr th.row-actions .row-menu-action,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr td.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr th.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-menu-action{width:35px;justify-content:center;align-items:center}::ng-deep .fs-list thead tr td.left,::ng-deep .fs-list thead tr th.left,::ng-deep .fs-list thead tr .fs-list-col.left,::ng-deep .fs-list thead .fs-list-row td.left,::ng-deep .fs-list thead .fs-list-row th.left,::ng-deep .fs-list thead .fs-list-row .fs-list-col.left,::ng-deep .fs-list tbody tr td.left,::ng-deep .fs-list tbody tr th.left,::ng-deep .fs-list tbody tr .fs-list-col.left,::ng-deep .fs-list tbody .fs-list-row td.left,::ng-deep .fs-list tbody .fs-list-row th.left,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.left,::ng-deep .fs-list tfoot tr td.left,::ng-deep .fs-list tfoot tr th.left,::ng-deep .fs-list tfoot tr .fs-list-col.left,::ng-deep .fs-list tfoot .fs-list-row td.left,::ng-deep .fs-list tfoot .fs-list-row th.left,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-head tr td.left,::ng-deep .fs-list .fs-list-head tr th.left,::ng-deep .fs-list .fs-list-head tr .fs-list-col.left,::ng-deep .fs-list .fs-list-head .fs-list-row td.left,::ng-deep .fs-list .fs-list-head .fs-list-row th.left,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-body tr td.left,::ng-deep .fs-list .fs-list-body tr th.left,::ng-deep .fs-list .fs-list-body tr .fs-list-col.left,::ng-deep .fs-list .fs-list-body .fs-list-row td.left,::ng-deep .fs-list .fs-list-body .fs-list-row th.left,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-footer tr td.left,::ng-deep .fs-list .fs-list-footer tr th.left,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.left,::ng-deep .fs-list .fs-list-footer .fs-list-row td.left,::ng-deep .fs-list .fs-list-footer .fs-list-row th.left,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.left{text-align:left}::ng-deep .fs-list thead tr td.center,::ng-deep .fs-list thead tr th.center,::ng-deep .fs-list thead tr .fs-list-col.center,::ng-deep .fs-list thead .fs-list-row td.center,::ng-deep .fs-list thead .fs-list-row th.center,::ng-deep .fs-list thead .fs-list-row .fs-list-col.center,::ng-deep .fs-list tbody tr td.center,::ng-deep .fs-list tbody tr th.center,::ng-deep .fs-list tbody tr .fs-list-col.center,::ng-deep .fs-list tbody .fs-list-row td.center,::ng-deep .fs-list tbody .fs-list-row th.center,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.center,::ng-deep .fs-list tfoot tr td.center,::ng-deep .fs-list tfoot tr th.center,::ng-deep .fs-list tfoot tr .fs-list-col.center,::ng-deep .fs-list tfoot .fs-list-row td.center,::ng-deep .fs-list tfoot .fs-list-row th.center,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-head tr td.center,::ng-deep .fs-list .fs-list-head tr th.center,::ng-deep .fs-list .fs-list-head tr .fs-list-col.center,::ng-deep .fs-list .fs-list-head .fs-list-row td.center,::ng-deep .fs-list .fs-list-head .fs-list-row th.center,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-body tr td.center,::ng-deep .fs-list .fs-list-body tr th.center,::ng-deep .fs-list .fs-list-body tr .fs-list-col.center,::ng-deep .fs-list .fs-list-body .fs-list-row td.center,::ng-deep .fs-list .fs-list-body .fs-list-row th.center,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-footer tr td.center,::ng-deep .fs-list .fs-list-footer tr th.center,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.center,::ng-deep .fs-list .fs-list-footer .fs-list-row td.center,::ng-deep .fs-list .fs-list-footer .fs-list-row th.center,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.center{text-align:center}::ng-deep .fs-list thead tr td.right,::ng-deep .fs-list thead tr th.right,::ng-deep .fs-list thead tr .fs-list-col.right,::ng-deep .fs-list thead .fs-list-row td.right,::ng-deep .fs-list thead .fs-list-row th.right,::ng-deep .fs-list thead .fs-list-row .fs-list-col.right,::ng-deep .fs-list tbody tr td.right,::ng-deep .fs-list tbody tr th.right,::ng-deep .fs-list tbody tr .fs-list-col.right,::ng-deep .fs-list tbody .fs-list-row td.right,::ng-deep .fs-list tbody .fs-list-row th.right,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.right,::ng-deep .fs-list tfoot tr td.right,::ng-deep .fs-list tfoot tr th.right,::ng-deep .fs-list tfoot tr .fs-list-col.right,::ng-deep .fs-list tfoot .fs-list-row td.right,::ng-deep .fs-list tfoot .fs-list-row th.right,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-head tr td.right,::ng-deep .fs-list .fs-list-head tr th.right,::ng-deep .fs-list .fs-list-head tr .fs-list-col.right,::ng-deep .fs-list .fs-list-head .fs-list-row td.right,::ng-deep .fs-list .fs-list-head .fs-list-row th.right,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-body tr td.right,::ng-deep .fs-list .fs-list-body tr th.right,::ng-deep .fs-list .fs-list-body tr .fs-list-col.right,::ng-deep .fs-list .fs-list-body .fs-list-row td.right,::ng-deep .fs-list .fs-list-body .fs-list-row th.right,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-footer tr td.right,::ng-deep .fs-list .fs-list-footer tr th.right,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.right,::ng-deep .fs-list .fs-list-footer .fs-list-row td.right,::ng-deep .fs-list .fs-list-footer .fs-list-row th.right,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.right{text-align:right}::ng-deep .fs-list thead tr.draggable,::ng-deep .fs-list thead .fs-list-row.draggable,::ng-deep .fs-list tbody tr.draggable,::ng-deep .fs-list tbody .fs-list-row.draggable,::ng-deep .fs-list tfoot tr.draggable,::ng-deep .fs-list tfoot .fs-list-row.draggable,::ng-deep .fs-list .fs-list-head tr.draggable,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable,::ng-deep .fs-list .fs-list-body tr.draggable,::ng-deep .fs-list .fs-list-body .fs-list-row.draggable,::ng-deep .fs-list .fs-list-footer tr.draggable,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable{position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px}::ng-deep .fs-list thead tr.draggable td,::ng-deep .fs-list thead tr.draggable .fs-list-col,::ng-deep .fs-list thead .fs-list-row.draggable td,::ng-deep .fs-list thead .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list tbody tr.draggable td,::ng-deep .fs-list tbody tr.draggable .fs-list-col,::ng-deep .fs-list tbody .fs-list-row.draggable td,::ng-deep .fs-list tbody .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list tfoot tr.draggable td,::ng-deep .fs-list tfoot tr.draggable .fs-list-col,::ng-deep .fs-list tfoot .fs-list-row.draggable td,::ng-deep .fs-list tfoot .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-head tr.draggable td,::ng-deep .fs-list .fs-list-head tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-body tr.draggable td,::ng-deep .fs-list .fs-list-body tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-body .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-footer tr.draggable td,::ng-deep .fs-list .fs-list-footer tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable .fs-list-col{background-color:#f6f6f6;border:none}::ng-deep .fs-list .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}::ng-deep .fs-list .fs-list-header .heading{margin:0}::ng-deep .fs-list .fs-list-header .fs-list-actions{white-space:nowrap;float:right}::ng-deep .fs-list .fs-list-header .fs-list-actions .menu-button{width:36px;height:36px;line-height:36px}::ng-deep .fs-list .fs-list-header .action-button{margin-left:5px}::ng-deep .fs-list .fs-list-header .action-button:first-child{margin-left:0}::ng-deep .fs-list .fs-list-header .mat-button{margin-top:0;margin-bottom:0;margin-right:0}::ng-deep .fs-list .fs-list-container{width:100%}::ng-deep .fs-list .fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}::ng-deep .fs-list .fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}::ng-deep .fs-list .fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}::ng-deep .fs-list .fs-list-container:not(.has-filter-keyword) .fs-list-header .fs-filter{display:flex}::ng-deep .fs-list .fs-list-container.has-filters .heading-container{margin-bottom:4px}::ng-deep .fs-list .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list tfoot td{padding:8px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}::ng-deep .draggable-elem td{opacity:.2}::ng-deep .hidden-mobile-menu-action{display:none!important}::ng-deep .hidden-mobile{display:none!important}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}\n"], components: [{ type: i10.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { type: i11.FsStatusComponent, selector: "fs-list-status", inputs: ["paging", "sorting", "rows", "scrollable", "firstLoad"] }, { type: i12.FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection"] }, { type: i13.FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved"] }, { type: i14.FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection"] }, { type: i15.FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { type: i16.FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }], directives: [{ type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { type: i17.FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { type: i18.FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { type: i19.FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
330
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, decorators: [{
|
|
331
|
+
type: Component,
|
|
332
|
+
args: [{
|
|
333
|
+
selector: 'fs-list',
|
|
334
|
+
templateUrl: 'list.component.html',
|
|
335
|
+
styleUrls: [
|
|
336
|
+
'./list.component.scss',
|
|
337
|
+
],
|
|
338
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
339
|
+
providers: [
|
|
340
|
+
GroupExpandNotifierService,
|
|
341
|
+
PersistanceController,
|
|
342
|
+
ReorderController,
|
|
343
|
+
]
|
|
344
|
+
}]
|
|
345
|
+
}], ctorParameters: function () { return [{ type: i1.ReorderController }, { type: undefined, decorators: [{
|
|
346
|
+
type: Optional
|
|
347
|
+
}, {
|
|
348
|
+
type: Inject,
|
|
349
|
+
args: [FS_LIST_DEFAULT_CONFIG]
|
|
350
|
+
}] }, { type: i2.FsScrollService, decorators: [{
|
|
351
|
+
type: Optional
|
|
352
|
+
}] }, { type: i3.MatDialogRef, decorators: [{
|
|
353
|
+
type: Optional
|
|
354
|
+
}] }, { type: i4.DrawerRef, decorators: [{
|
|
355
|
+
type: Optional
|
|
356
|
+
}] }, { type: i0.ElementRef }, { type: i5.SelectionDialog }, { type: i3.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i6.GroupExpandNotifierService }, { type: i7.Router }, { type: i7.ActivatedRoute }, { type: i8.PersistanceController }, { type: i9.Location }]; }, propDecorators: { classFsList: [{
|
|
357
|
+
type: HostBinding,
|
|
358
|
+
args: ['class.fs-list']
|
|
359
|
+
}], config: [{
|
|
360
|
+
type: Input,
|
|
361
|
+
args: ['config']
|
|
362
|
+
}], loaderLines: [{
|
|
363
|
+
type: Input
|
|
364
|
+
}], filtersReady: [{
|
|
365
|
+
type: Output
|
|
366
|
+
}], filterReference: [{
|
|
367
|
+
type: ViewChild,
|
|
368
|
+
args: [FilterComponent]
|
|
369
|
+
}], columnTemplates: [{
|
|
370
|
+
type: ContentChildren,
|
|
371
|
+
args: [FsListColumnDirective]
|
|
372
|
+
}], _emptyStateTemplate: [{
|
|
373
|
+
type: ContentChild,
|
|
374
|
+
args: [FsListEmptyStateDirective, { read: TemplateRef }]
|
|
375
|
+
}] } });
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFdBQVcsRUFDWCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0MsT0FBTyxFQUFFLFNBQVMsRUFB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QUFXLGtEQVIzQyxxQkFBcUIsOEVBYjNCLGVBQWUsZ0RDaEc1QixzNkpBd0lBOzRGRHZFYSxlQUFlO2tCQWIzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxTQUFTO29CQUNuQixXQUFXLEVBQUUscUJBQXFCO29CQUNsQyxTQUFTLEVBQUU7d0JBQ1QsdUJBQXVCO3FCQUN4QjtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNULDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQixpQkFBaUI7cUJBQ2xCO2lCQUNGOzswQkE4REksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUN6QyxRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFRO2lUQTlEbUIsV0FBVztzQkFBeEMsV0FBVzt1QkFBQyxlQUFlO2dCQUd4QixNQUFNO3NCQURULEtBQUs7dUJBQUMsUUFBUTtnQkFNUixXQUFXO3NCQURqQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLE1BQU07Z0JBb0JLLGVBQWU7c0JBRDFCLFNBQVM7dUJBQUMsZUFBZTtnQkFjZCxlQUFlO3NCQUQxQixlQUFlO3VCQUFDLHFCQUFxQjtnQkFTMUIsbUJBQW1CO3NCQUQ5QixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBIb3N0QmluZGluZyxcbiAgT3B0aW9uYWwsXG4gIENvbnRlbnRDaGlsZCxcbiAgVGVtcGxhdGVSZWYsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBza2lwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZzU2Nyb2xsU2VydmljZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3Njcm9sbCc7XG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uRGlhbG9nIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0aW9uJztcbmltcG9ydCB7IGdldE5vcm1hbGl6ZWRQYXRoIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcbmltcG9ydCB7IERyYXdlclJlZiB9IGZyb20gJ0BmaXJlc3RpdGNoL2RyYXdlcic7XG5cbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2VXaXRoIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgTGlzdCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvbGlzdC1jb250cm9sbGVyJztcbmltcG9ydCB7IFJlb3JkZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9yZW9yZGVyLWNvbnRyb2xsZXInO1xuXG5pbXBvcnQgeyBGc0xpc3RDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbHVtbi9jb2x1bW4uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzTGlzdEVtcHR5U3RhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGU19MSVNUX0RFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi4vLi4vZnMtbGlzdC5wcm92aWRlcnMnO1xuXG5pbXBvcnQge1xuICBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgRnNMaXN0QWN0aW9uLFxuICBGc0xpc3RDb25maWcsIEZzTGlzdFBlcnNpdGFuY2UsIEZzTGlzdFNlbGVjdGlvbkNvbmZpZyxcbiAgRnNMaXN0VHJhY2tCeUZuLFxuICBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm5cbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDdXN0b21pemVDb2xzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9taXplLWNvbHMvY3VzdG9taXplLWNvbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEdyb3VwRXhwYW5kTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JvdXAtZXhwYW5kLW5vdGlmaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyc2lzdGFuY2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9wZXJzaXN0YW5jZS1jb250cm9sbGVyJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdsaXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vbGlzdC5jb21wb25lbnQuc2NzcycsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBHcm91cEV4cGFuZE5vdGlmaWVyU2VydmljZSxcbiAgICBQZXJzaXN0YW5jZUNvbnRyb2xsZXIsXG4gICAgUmVvcmRlckNvbnRyb2xsZXIsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRnNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnMtbGlzdCcpIGNsYXNzRnNMaXN0ID0gdHJ1ZTtcblxuICBASW5wdXQoJ2NvbmZpZycpXG4gIHNldCBjb25maWcoY29uZmlnOiBGc0xpc3RDb25maWcpIHtcbiAgICB0aGlzLl9pbml0V2l0aENvbmZpZyhjb25maWcpXG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgbG9hZGVyTGluZXMgPSAzO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmlsdGVyc1JlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBsaXN0OiBMaXN0O1xuICBwdWJsaWMga2V5d29yZFZpc2libGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBsaXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT47XG5cbiAgLy8gRXZlbnQgd2lsbCBmaXJlZCBpZiBhY3Rpb24gcmVtb3ZlOiB0cnVlIHdpbGwgY2xpY2tlZFxuICBwdWJsaWMgcm93UmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGZpcnN0TG9hZCA9IHRydWU7XG5cbiAgLy8gcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneTtcblxuICBwcml2YXRlIF9maWx0ZXJSZWY6IEZpbHRlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBfZmlsdGVyUGFyYW1zUmVhZHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaW5EaWFsb2cgPSAhIXRoaXMuX2RpYWxvZ1JlZiB8fCAhIXRoaXMuX2RyYXdlclJlZjtcblxuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcblxuICBAVmlld0NoaWxkKEZpbHRlckNvbXBvbmVudClcbiAgcHJpdmF0ZSBzZXQgZmlsdGVyUmVmZXJlbmNlKGNvbXBvbmVudCkge1xuICAgIHRoaXMuX2ZpbHRlclJlZiA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmxpc3QuYWN0aW9ucy5zZXRGaWx0ZXJSZWYoY29tcG9uZW50KTtcblxuICAgIHRoaXMuX2VtaXRGaWx0ZXJzUmVhZHlFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjb2x1bW5zIHRvIGNvbmZpZ1xuICAgKiBDcmVhdGUgQ29sdW1uIE1vZGVsIGluc3RhbmNlc1xuICAgKlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihGc0xpc3RDb2x1bW5EaXJlY3RpdmUpXG4gIHByaXZhdGUgc2V0IGNvbHVtblRlbXBsYXRlcyhsaXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT4pIHtcbiAgICB0aGlzLmxpc3RDb2x1bW5EaXJlY3RpdmVzID0gbGlzdENvbHVtbkRpcmVjdGl2ZXM7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LnRyYW5mb3JtVGVtcGxhdGVzVG9Db2x1bW5zKGxpc3RDb2x1bW5EaXJlY3RpdmVzKTtcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkKEZzTGlzdEVtcHR5U3RhdGVEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzZXQgX2VtcHR5U3RhdGVUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC5lbXB0eVN0YXRlVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVvcmRlckNvbnRyb2xsZXI6IFJlb3JkZXJDb250cm9sbGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRlNfTElTVF9ERUZBVUxUX0NPTkZJRykgcHJpdmF0ZSBfZGVmYXVsdE9wdGlvbnMsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmc1Njcm9sbDogRnNTY3JvbGxTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZHJhd2VyUmVmOiBEcmF3ZXJSZWY8YW55PixcbiAgICBwcml2YXRlIF9lbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHNlbGVjdGlvbkRpYWxvZzogU2VsZWN0aW9uRGlhbG9nLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZ3JvdXBFeHBhbmROb3RpZmllcjogR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgX3BlcnNpc3RhbmNlOiBQZXJzaXN0YW5jZUNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybiByZWZlcmVuY2UgZm9yIGZpbHRlclxuICAgKi9cbiAgcHVibGljIGdldCBmaWx0ZXJSZWYoKTogRmlsdGVyQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyUmVmO1xuICB9XG5cbiAgcHVibGljIGdldCBncm91cEVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5ncm91cEVuYWJsZWQ7XG4gIH1cbiAgXG4gIHB1YmxpYyBnZXQgaGFzRmlsdGVyS2V5d29yZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmZpbHRlcklucHV0ICYmIHRoaXMua2V5d29yZFZpc2libGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1N0YXR1cygpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LnN0YXR1cyAmJlxuICAgICAgIXRoaXMucmVvcmRlckNvbnRyb2xsZXIubWFudWFsUmVvcmRlckFjdGl2YXRlZCAmJiBcbiAgICAgIHRoaXMubGlzdC5wYWdpbmcuZW5hYmxlZCAmJiAgICBcbiAgICAgICghdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkIHx8IHRoaXMucmVvcmRlckNvbnRyb2xsZXIuc3RhdHVzKSAmJlxuICAgICAgKCh0aGlzLmxpc3Quc2Nyb2xsYWJsZSAmJiB0aGlzLmxpc3Quc2Nyb2xsYWJsZS5zdGF0dXMpIHx8ICF0aGlzLmxpc3Quc2Nyb2xsYWJsZSlcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFnaW5hdG9yVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LnBhZ2luZy5lbmFibGVkXG4gICAgICAmJiAhdGhpcy5maXJzdExvYWRcbiAgICAgICYmICF0aGlzLmxpc3Quc2Nyb2xsYWJsZVxuICAgICAgJiYgIXRoaXMubGlzdC5lbXB0eVN0YXRlRW5hYmxlZFxuICAgICAgJiYgdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzQ291bnQgPiAwXG4gICAgICAmJiB0aGlzLmxpc3QucGFnaW5nLnBhZ2VzID4gMTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZ3JvdXBFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5saXN0Lmdyb3VwRW5hYmxlZCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlcnNRdWVyeSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5maWx0ZXJzUXVlcnk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9SZW1vdmVSb3coKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb0dyb3VwRXhwYW5kU3RhdHVzQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmV4dFBhZ2UoKSB7XG4gICAgdGhpcy5saXN0LnBhZ2luZy5nb05leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvUHJldigpO1xuICB9XG5cbiAgcHVibGljIGZpcnN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvRmlyc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBsYXN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvTGFzdCgpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZCgpIHtcbiAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YSh0cmFja0J5PzogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5nZXREYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIGhhc0RhdGEodHJhY2tCeTogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5oYXNEYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURhdGEoXG4gICAgcm93czogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdLFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm5cbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci51cGRhdGVEYXRhKHJvd3MsIHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHJlcGxhY2VSb3coXG4gICAgcm93OiBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIucmVwbGFjZURhdGEocm93LCB0cmFja0J5KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTZWxlY3Rpb25Db25maWcoY29uZmlnOiBGc0xpc3RTZWxlY3Rpb25Db25maWcpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLnVwZGF0ZUNvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0U2VsZWN0aW9uQWN0aW9ucygpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLnJlc2V0QWN0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZURhdGEoZGF0YTogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdIHwgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZW1vdmVEYXRhKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIHNldEhlYWRpbmcoaGVhZGluZzogc3RyaW5nKSB7XG4gICAgdGhpcy5saXN0LmhlYWRpbmcgPSBoZWFkaW5nO1xuICB9XG5cbiAgcHVibGljIHNldFN1YmhlYWRpbmcoc3ViaGVhZGluZzogc3RyaW5nKSB7XG4gICAgdGhpcy5saXN0LnN1YmhlYWRpbmcgPSBzdWJoZWFkaW5nO1xuICB9XG5cbiAgcHVibGljIHJlb3JkZXJTdGFydCgpIHtcbiAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZVJlb3JkZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW9yZGVyRmluaXNoKCkge1xuICAgIHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZGlzYWJsZVJlb3JkZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb25zKGFjdGlvbnM6IEZzTGlzdEFjdGlvbltdKSB7XG4gICAgaWYgKGFjdGlvbnMpIHtcbiAgICAgIHRoaXMubGlzdC5hY3Rpb25zLmNsZWFyQWN0aW9ucygpO1xuICAgICAgdGhpcy5saXN0LmFjdGlvbnMuc2V0QWN0aW9ucyhhY3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyUmVhZHkoKSB7XG4gICAgdGhpcy5saXN0LmZpbHRlcnNSZWFkeSQubmV4dCgpO1xuICAgIHRoaXMuX2ZpbHRlclBhcmFtc1JlYWR5ID0gdHJ1ZTtcbiAgICB0aGlzLl9lbWl0RmlsdGVyc1JlYWR5RXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdmlzaWJpbGl0eSBmb3Igc3BlY2lmaWMgY29sdW1uXG4gICAqL1xuICBwdWJsaWMgY29sdW1uVmlzaWJpbGl0eShuYW1lOiBzdHJpbmcsIHNob3c6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbHVtbnNWaXNpYmlsaXR5KFsge25hbWUsIHNob3cgfSBdKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2aXNpYmlsaXR5IGZvciBsaXN0IG9mIHNwZWNpZmljIGNvbHVtbnNcbiAgICovXG4gIHB1YmxpYyBjb2x1bW5zVmlzaWJpbGl0eShjb2x1bW5zOiB7IG5hbWU6IHN0cmluZywgc2hvdzogYm9vbGVhbiB9W10pIHtcbiAgICB0aGlzLmxpc3QuY29sdW1ucy51cGRhdGVWaXNpYmlsaXR5Rm9yQ29scyhjb2x1bW5zKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRGaWx0ZXJzUmVhZHlFdmVudCgpOiB2b2lkIHtcbiAgICBpZiAoISF0aGlzLmZpbHRlclJlZiAmJiB0aGlzLl9maWx0ZXJQYXJhbXNSZWFkeSkge1xuICAgICAgdGhpcy5maWx0ZXJzUmVhZHkuZW1pdCgpO1xuXG4gICAgICB0aGlzLmtleXdvcmRWaXNpYmxlID0gdGhpcy5maWx0ZXJSZWYuaGFzS2V5d29yZDtcbiAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgY29uZmlnIGZvciBsaXN0XG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIHByaXZhdGUgX2luaXRXaXRoQ29uZmlnKGNvbmZpZzogRnNMaXN0Q29uZmlnKSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0T3B0cyA9IHRoaXMuX2RlZmF1bHRPcHRpb25zXG4gICAgICA/IGNsb25lRGVlcCh0aGlzLl9kZWZhdWx0T3B0aW9ucylcbiAgICAgIDoge307XG4gICAgY29uc3QgbGlzdENvbmZpZyA9IG1lcmdlV2l0aChkZWZhdWx0T3B0cywgY29uZmlnLCB0aGlzLl9jb25maWdNZXJnZUN1c3RvbWl6ZXIpO1xuXG4gICAgaWYgKGxpc3RDb25maWcucGVyc2lzdCAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuX3Jlc3RvcmVQZXJzaXN0YW5jZShsaXN0Q29uZmlnLnBlcnNpc3QpO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUN1c3RvbWl6ZUFjdGlvbihsaXN0Q29uZmlnLmFjdGlvbnMpO1xuXG4gICAgdGhpcy5saXN0ID0gbmV3IExpc3QoXG4gICAgICB0aGlzLl9lbCxcbiAgICAgIGxpc3RDb25maWcsXG4gICAgICB0aGlzLmZzU2Nyb2xsLFxuICAgICAgdGhpcy5zZWxlY3Rpb25EaWFsb2csXG4gICAgICB0aGlzLl9yb3V0ZXIsXG4gICAgICB0aGlzLl9yb3V0ZSxcbiAgICAgIHRoaXMuX3BlcnNpc3RhbmNlLFxuICAgICAgdGhpcy5faW5EaWFsb2csXG4gICAgKTtcblxuICAgIHRoaXMuX3dhaXRGaXJzdExvYWQoKTtcbiAgICB0aGlzLl9saXN0ZW5GaWx0ZXJzUXVlcnlDaGFuZ2UoKTtcblxuICAgIHRoaXMucmVvcmRlckNvbnRyb2xsZXIuaW5pdFdpdGhDb25maWcoXG4gICAgICBjb25maWcucmVvcmRlcixcbiAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlcixcbiAgICAgIHRoaXMubGlzdC5hY3Rpb25zLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5saXN0Q29sdW1uRGlyZWN0aXZlcykge1xuICAgICAgdGhpcy5saXN0LnRyYW5mb3JtVGVtcGxhdGVzVG9Db2x1bW5zKHRoaXMubGlzdENvbHVtbkRpcmVjdGl2ZXMpO1xuICAgIH1cbiAgICB0aGlzLl9saXN0ZW5Tb3J0aW5nQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhY3Rpb24gd2l0aCBjdXN0b21pemUgZmxhZyBhbmQgcmUtZGVjbGFyZSBjbGljayBmdW5jdGlvbiBmb3IgQ3VzdG9taXplQ29sc0RpYWxvZ1xuICAgKiBAcGFyYW0gYWN0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlQ3VzdG9taXplQWN0aW9uKGFjdGlvbnM6IEZzTGlzdEFjdGlvbltdKSB7XG4gICAgY29uc3QgY3VzdG9taXplQWN0aW9uID0gYWN0aW9ucz8uZmluZCgoYWN0aW9uKSA9PiBhY3Rpb24uY3VzdG9taXplKTtcblxuICAgIGlmIChjdXN0b21pemVBY3Rpb24pIHtcbiAgICAgIGNvbnN0IGFjdGlvbkNsaWNrRm4gPSBjdXN0b21pemVBY3Rpb24uY2xpY2s7XG5cbiAgICAgIGN1c3RvbWl6ZUFjdGlvbi5jbGljayA9ICgpID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbkNsaWNrRm4pIHtcbiAgICAgICAgICBhY3Rpb25DbGlja0ZuKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihDdXN0b21pemVDb2xzRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY29sdW1uczogdGhpcy5saXN0LmNvbHVtbnMuY29sdW1uc0ZvckRpYWxvZyxcbiAgICAgICAgICAgIGNoYW5nZUZuOiB0aGlzLmxpc3QuY29sdW1ucy5jaGFuZ2VGbixcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWZcbiAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubGlzdC5vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgdGhpcy5saXN0LmNvbHVtbnMudXBkYXRlVmlzaWJpbGl0eUZvckNvbHMoZGF0YSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHNvcnRpbmcgaW4gZmlsdGVyXG4gICAqL1xuICBwcml2YXRlIF9saXN0ZW5Tb3J0aW5nQ2hhbmdlKCkge1xuICAgIHRoaXMubGlzdC5zb3J0aW5nXG4gICAgICAuc29ydGluZ0NoYW5nZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubGlzdC5vbkRlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoc29ydCkgPT4ge1xuICAgICAgICB0aGlzLl9maWx0ZXJSZWYudXBkYXRlU29ydChzb3J0KTtcbiAgICAgIH0pXG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb1JlbW92ZVJvdygpIHtcbiAgICB0aGlzLnJvd1JlbW92ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKHJvdykgPT4ge1xuICAgICAgICB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIucmVtb3ZlRGF0YShyb3cpO1xuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvR3JvdXBFeHBhbmRTdGF0dXNDaGFuZ2UoKSB7XG4gICAgaWYgKHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5oYXNHcm91cHMpIHtcbiAgICAgIHRoaXMuX2dyb3VwRXhwYW5kTm90aWZpZXIuZXhwYW5kU3RhdHVzQ2hhbmdlJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyb3cpID0+IHtcbiAgICAgICAgICB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudG9nZ2xlUm93R3JvdXAocm93KTtcbiAgICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF93YWl0Rmlyc3RMb2FkKCkge1xuICAgIHRoaXMubGlzdC5sb2FkaW5nJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIGZpbHRlcigodmFsdWUpID0+IHZhbHVlID09PSBmYWxzZSksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmxpc3Qub25EZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmZpcnN0TG9hZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5GaWx0ZXJzUXVlcnlDaGFuZ2UoKSB7XG4gICAgdGhpcy5saXN0LmZpbHRlcnNRdWVyeSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0Lm9uRGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVGaWx0ZXJzID0gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aDtcblxuICAgICAgICAgIHRoaXMucmVvcmRlckNvbnRyb2xsZXIuc2V0TnVuYmVyT2ZBY3RpdmVGaWx0ZXJzKGFjdGl2ZUZpbHRlcnMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ01lcmdlQ3VzdG9taXplcihvYmpWYWx1ZTogYW55LCBzcmNWYWx1ZTogYW55KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzdG9yZVBlcnNpc3RhbmNlKHBlcnNpc3RDb25maWc6IEZzTGlzdFBlcnNpdGFuY2UpIHtcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBnZXROb3JtYWxpemVkUGF0aCh0aGlzLl9sb2NhdGlvbik7XG4gICAgdGhpcy5fcGVyc2lzdGFuY2Uuc2V0Q29uZmlnKHBlcnNpc3RDb25maWcsIG5hbWVzcGFjZSwgdGhpcy5faW5EaWFsb2cpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZnMtbGlzdC1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsgXG4gICAgICAnaGFzLWZpbHRlci1rZXl3b3JkJzogaGFzRmlsdGVyS2V5d29yZCxcbiAgICAgICdoYXMtZmlsdGVycyc6IGxpc3QuZmlsdGVyQ29uZmlnPy5pdGVtcy5sZW5ndGgsXG4gICAgICAnaGFzLWhlYWRpbmcnOiBsaXN0LmhlYWRpbmcsXG4gICAgICAnaGFzLXN0YXR1cyc6IGhhc1N0YXR1cyxcbiAgICAgICdoYXMtY2hpcHMnOiBsaXN0LmNoaXBzLFxuICAgICAgJ2hhcy1hY3Rpb25zJzogbGlzdC5hY3Rpb25zLmhhc0FjdGlvbnMsXG4gICAgICAnZmlyc3QtbG9hZCc6IGZpcnN0TG9hZCxcbiAgICAgICdsb2FkaW5nJzogbGlzdC5sb2FkaW5nJCB8IGFzeW5jIFxuICAgIH1cIj5cbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RDb250YWluZXJDb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xpc3RDb250YWluZXJDb250ZW50PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdC5kYXRhQ29udHJvbGxlci52aXNpYmxlUm93cyQgfCBhc3luYyBhcyBsaXN0RGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1saXN0LWhlYWRlci1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgXG4gICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWhlYWRlclwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnbm8td3JhcCc6IHJlb3JkZXJDb250cm9sbGVyLm1hbnVhbFJlb3JkZXJBY3RpdmF0ZWQgfHwgIWxpc3QuZmlsdGVyQ29uZmlnPy5pdGVtcy5sZW5ndGggfVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNGaWx0ZXJLZXl3b3JkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+ICAgXG4gICAgICAgIDxmcy1maWx0ZXJcbiAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtZmlsdGVyXCJcbiAgICAgICAgICAqbmdJZj1cImxpc3QuZmlsdGVyQ29uZmlnXCJcbiAgICAgICAgICBbZmlsdGVyXT1cImxpc3QuZmlsdGVyQ29uZmlnXCJcbiAgICAgICAgICBbc2hvd1NvcnRCeV09XCIhbGlzdC5zdGF0dXNcIlxuICAgICAgICAgIFtzaG93RmlsdGVySW5wdXRdPVwibGlzdC5maWx0ZXJJbnB1dFwiXG4gICAgICAgICAgKHJlYWR5KT1cImZpbHRlclJlYWR5KClcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgZnNGaWx0ZXJTdGF0dXNCYXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhhc0ZpbHRlcktleXdvcmRcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICAgIFxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1N0YXR1c1wiPlxuICAgICAgICAgICAgICA8ZnMtbGlzdC1zdGF0dXNcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtc3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoaWRkZW4tbW9iaWxlJzogIWxpc3Quc3RhdHVzIH1cIlxuICAgICAgICAgICAgICAgIFtyb3dzXT1cImxpc3REYXRhXCJcbiAgICAgICAgICAgICAgICBbc29ydGluZ109XCJsaXN0LnNvcnRpbmdcIlxuICAgICAgICAgICAgICAgIFtwYWdpbmddPVwibGlzdC5wYWdpbmdcIlxuICAgICAgICAgICAgICAgIFtmaXJzdExvYWRdPVwiZmlyc3RMb2FkXCJcbiAgICAgICAgICAgICAgICBbc2Nyb2xsYWJsZV09XCJsaXN0LnNjcm9sbGFibGVcIj5cbiAgICAgICAgICAgICAgPC9mcy1saXN0LXN0YXR1cz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZnMtZmlsdGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZnMtbGlzdC1jb250ZW50XVwiPjwvbmctY29udGVudD5cblxuICAgIDwhLS0gVGFibGUgaW1wbGVtZW50YXRpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImZzLWxpc3QtdGFibGUtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpcnN0TG9hZCAmJiBsaXN0RGF0YS5sZW5ndGggPiAwICYmICFsaXN0LmVtcHR5U3RhdGVFbmFibGVkXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImZzLWxpc3QtdGFibGVcIiByb2xlPVwiZ3JpZFwiIFtmc0xpc3RDb250ZW50SW5pdF09XCJsaXN0LmFmdGVyQ29udGVudEluaXRcIj5cbiAgICAgICAgICA8dGhlYWQgXG4gICAgICAgICAgICBmcy1saXN0LWhlYWRcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1oZWFkXCJcbiAgICAgICAgICAgIHJvbGU9XCJyb3dncm91cFwiXG4gICAgICAgICAgICAqbmdJZj1cImxpc3QuY29sdW1ucy5oYXNIZWFkZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwibGlzdC5jb2x1bW5zLnRoZWFkQ2xhc3NcIlxuICAgICAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLnZpc2libGVDb2x1bW5zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtzb3J0aW5nXT1cImxpc3Quc29ydGluZ1wiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cImxpc3Quc2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiPlxuICAgICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgICA8dGJvZHkgXG4gICAgICAgICAgICBmcy1saXN0LWJvZHlcbiAgICAgICAgICAgIGZzTGlzdERyYWdnYWJsZUxpc3RcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1ib2R5XCJcbiAgICAgICAgICAgIHJvbGU9XCJyb3dncm91cFwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiISEocmVvcmRlckNvbnRyb2xsZXIucmVvcmRlckRpc2FibGVkJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICBbcm93c109XCJsaXN0RGF0YVwiXG4gICAgICAgICAgICBbcm93QWN0aW9uc1Jhd109XCJsaXN0LnJvd0FjdGlvbnNSYXdcIlxuICAgICAgICAgICAgW2dyb3VwQWN0aW9uc1Jhd109XCJsaXN0Lmdyb3VwQWN0aW9uc1Jhd1wiXG4gICAgICAgICAgICBbaGFzUm93QWN0aW9uc109XCJsaXN0Lmhhc1Jvd0FjdGlvbnNcIlxuICAgICAgICAgICAgW3Jvd0V2ZW50c109XCJsaXN0LnJvd0V2ZW50c1wiXG4gICAgICAgICAgICBbcm93Q2xhc3NdPVwibGlzdC5yb3dDbGFzc1wiXG4gICAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlc3RvcmVNb2RlXT1cImxpc3QucmVzdG9yZU1vZGVcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJsaXN0LnNlbGVjdGlvblwiXG4gICAgICAgICAgICBbcm93UmVtb3ZlZF09XCJyb3dSZW1vdmVkXCI+XG4gICAgICAgICAgPC90Ym9keT5cblxuICAgICAgICAgIDx0Zm9vdCBcbiAgICAgICAgICAgIGZzLWxpc3QtZm9vdGVyXG4gICAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtZm9vdGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwibGlzdC5jb2x1bW5zLmhhc0Zvb3RlclwiXG4gICAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJsaXN0LnNlbGVjdGlvblwiXG4gICAgICAgICAgICBbaGFzUm93QWN0aW9uc109XCJsaXN0Lmhhc1Jvd0FjdGlvbnNcIj5cbiAgICAgICAgICA8L3Rmb290PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZnMtbGlzdC1sb2FkZXJcbiAgICAgICAgKm5nSWY9XCJmaXJzdExvYWRcIlxuICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMuY29sdW1uc1wiXG4gICAgICAgIFtsb2FkZXJMaW5lc109XCJsb2FkZXJMaW5lc1wiPlxuICAgICAgPC9mcy1saXN0LWxvYWRlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxmcy1saXN0LXBhZ2luYXRpb25cbiAgICAgICpuZ0lmPVwicGFnaW5hdG9yVmlzaWJsZVwiXG4gICAgICBjbGFzcz1cImZzLWxpc3QtcGFnaW5hdGlvblwiXG4gICAgICBbcm93c109XCJsaXN0RGF0YVwiXG4gICAgICBbcGFnaW5hdGlvbl09XCJsaXN0LnBhZ2luZ1wiPlxuICAgIDwvZnMtbGlzdC1wYWdpbmF0aW9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaXJzdExvYWRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImxpc3REYXRhLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgY2xhc3M9XCJmcy1saXN0LW5vLXJlc3VsdHMtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwibGlzdC5ub1Jlc3VsdHM/Lm1lc3NhZ2UgJiYgIWxpc3QuZW1wdHlTdGF0ZUVuYWJsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICB7eyBsaXN0Lm5vUmVzdWx0cz8ubWVzc2FnZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3QuZW1wdHlTdGF0ZUVuYWJsZWRcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdC5lbXB0eVN0YXRlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cblxuPG5nLXRlbXBsYXRlICNoZWFkaW5nPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1jb250YWluZXJcIiAqbmdJZj1cImxpc3QuaGVhZGluZyB8fCBsaXN0LnN1YmhlYWRpbmdcIj5cbiAgICA8aDIgY2xhc3M9XCJoZWFkaW5nXCIgKm5nSWY9XCJsaXN0LmhlYWRpbmdcIj57e2xpc3QuaGVhZGluZ319PC9oMj5cbiAgICA8ZGl2IGNsYXNzPVwic21hbGwgc3ViaGVhZGluZ1wiICpuZ0lmPVwibGlzdC5zdWJoZWFkaW5nXCI+e3tsaXN0LnN1YmhlYWRpbmd9fTwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|