@firestitch/list 9.9.9 → 9.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/app/classes/actions-controller.d.ts +20 -20
  2. package/app/classes/columns-controller.d.ts +65 -65
  3. package/app/classes/data-controller.d.ts +89 -89
  4. package/app/classes/external-params-controller.d.ts +31 -31
  5. package/app/classes/index.d.ts +2 -2
  6. package/app/classes/list-controller.d.ts +166 -166
  7. package/app/classes/pagination-controller.d.ts +185 -185
  8. package/app/classes/persistance-controller.d.ts +7 -7
  9. package/app/classes/reorder-controller.d.ts +56 -56
  10. package/app/classes/selection-controller.d.ts +141 -141
  11. package/app/classes/sorting-controller.d.ts +64 -63
  12. package/app/components/body/body.component.d.ts +29 -29
  13. package/app/components/body/row/actions/actions.component.d.ts +32 -32
  14. package/app/components/body/row/cell/cell.component.d.ts +20 -20
  15. package/app/components/body/row/inline-action/inline-action.component.d.ts +10 -10
  16. package/app/components/body/row/row.component.d.ts +66 -66
  17. package/app/components/customize-cols/customize-cols.component.d.ts +14 -14
  18. package/app/components/footer/footer-row/footer-cell/footer-cell.component.d.ts +7 -4
  19. package/app/components/footer/footer-row/footer-row.component.d.ts +10 -8
  20. package/app/components/footer/footer.component.d.ts +10 -8
  21. package/app/components/head/head-cell/head-cell.component.d.ts +11 -11
  22. package/app/components/head/head.component.d.ts +40 -40
  23. package/app/components/list/list.component.d.ts +108 -108
  24. package/app/components/loader/loader.component.d.ts +11 -11
  25. package/app/components/manage-saved-filters/manage-saved-filters.component.d.ts +10 -10
  26. package/app/components/pagination/pagination.component.d.ts +11 -11
  27. package/app/components/saved-filters/saved-filters.component.d.ts +12 -12
  28. package/app/components/status/status.component.d.ts +18 -18
  29. package/app/directives/cell/cell.directive.d.ts +5 -5
  30. package/app/directives/column/column.directive.d.ts +24 -23
  31. package/app/directives/draggable-list/draggable-list.directive.d.ts +77 -77
  32. package/app/directives/draggable-row/draggable-row.directive.d.ts +18 -18
  33. package/app/directives/empty-state/empty-state.directive.d.ts +2 -2
  34. package/app/directives/footer/footer.directive.d.ts +5 -5
  35. package/app/directives/group-cell/group-cell.directive.d.ts +3 -3
  36. package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +7 -7
  37. package/app/directives/header/header.directive.d.ts +5 -5
  38. package/app/enums/button-type.enum.d.ts +7 -7
  39. package/app/enums/page-change-type.enum.d.ts +4 -4
  40. package/app/enums/pagination-strategy.enum.d.ts +5 -5
  41. package/app/enums/row-type.enum.d.ts +5 -5
  42. package/app/enums/state.enum.d.ts +9 -9
  43. package/app/fs-list.module.d.ts +6 -6
  44. package/app/fs-list.providers.d.ts +3 -3
  45. package/app/interfaces/cellconfig.interface.d.ts +5 -5
  46. package/app/interfaces/draggable-list.interface.d.ts +7 -7
  47. package/app/interfaces/external-params.interface.d.ts +13 -13
  48. package/app/interfaces/index.d.ts +3 -3
  49. package/app/interfaces/listconfig.interface.d.ts +220 -220
  50. package/app/interfaces/pagination.interface.d.ts +13 -13
  51. package/app/models/column.model.d.ts +48 -46
  52. package/app/models/row/base-row.d.ts +13 -13
  53. package/app/models/row/child-row.d.ts +12 -12
  54. package/app/models/row/group-row.d.ts +14 -14
  55. package/app/models/row/simple-row.d.ts +5 -5
  56. package/app/models/row-action.model.d.ts +29 -29
  57. package/app/models/row.d.ts +28 -28
  58. package/app/models/styleConfig.model.d.ts +31 -31
  59. package/app/services/group-expand-notifier.service.d.ts +8 -8
  60. package/bundles/firestitch-list.umd.js +5832 -5783
  61. package/bundles/firestitch-list.umd.js.map +1 -1
  62. package/bundles/firestitch-list.umd.min.js +1 -1
  63. package/bundles/firestitch-list.umd.min.js.map +1 -1
  64. package/esm2015/app/classes/actions-controller.js +55 -55
  65. package/esm2015/app/classes/columns-controller.js +185 -185
  66. package/esm2015/app/classes/data-controller.js +318 -311
  67. package/esm2015/app/classes/external-params-controller.js +155 -155
  68. package/esm2015/app/classes/index.js +3 -3
  69. package/esm2015/app/classes/list-controller.js +730 -730
  70. package/esm2015/app/classes/pagination-controller.js +461 -461
  71. package/esm2015/app/classes/persistance-controller.js +22 -22
  72. package/esm2015/app/classes/reorder-controller.js +161 -161
  73. package/esm2015/app/classes/selection-controller.js +444 -444
  74. package/esm2015/app/classes/sorting-controller.js +177 -167
  75. package/esm2015/app/components/body/body.component.js +103 -103
  76. package/esm2015/app/components/body/row/actions/actions.component.js +110 -110
  77. package/esm2015/app/components/body/row/cell/cell.component.js +93 -93
  78. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +34 -34
  79. package/esm2015/app/components/body/row/row.component.js +267 -267
  80. package/esm2015/app/components/customize-cols/customize-cols.component.js +67 -67
  81. package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +27 -18
  82. package/esm2015/app/components/footer/footer-row/footer-row.component.js +39 -35
  83. package/esm2015/app/components/footer/footer.component.js +34 -30
  84. package/esm2015/app/components/head/head-cell/head-cell.component.js +35 -35
  85. package/esm2015/app/components/head/head.component.js +99 -99
  86. package/esm2015/app/components/list/list.component.js +357 -357
  87. package/esm2015/app/components/loader/loader.component.js +46 -46
  88. package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +75 -75
  89. package/esm2015/app/components/pagination/pagination.component.js +44 -44
  90. package/esm2015/app/components/saved-filters/saved-filters.component.js +36 -36
  91. package/esm2015/app/components/status/status.component.js +77 -77
  92. package/esm2015/app/directives/cell/cell.directive.js +21 -21
  93. package/esm2015/app/directives/column/column.directive.js +97 -93
  94. package/esm2015/app/directives/draggable-list/draggable-list.directive.js +264 -264
  95. package/esm2015/app/directives/draggable-row/draggable-row.directive.js +81 -81
  96. package/esm2015/app/directives/empty-state/empty-state.directive.js +11 -11
  97. package/esm2015/app/directives/footer/footer.directive.js +21 -21
  98. package/esm2015/app/directives/group-cell/group-cell.directive.js +12 -12
  99. package/esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js +32 -32
  100. package/esm2015/app/directives/header/header.directive.js +21 -21
  101. package/esm2015/app/enums/button-type.enum.js +9 -9
  102. package/esm2015/app/enums/page-change-type.enum.js +6 -6
  103. package/esm2015/app/enums/pagination-strategy.enum.js +7 -7
  104. package/esm2015/app/enums/row-type.enum.js +7 -7
  105. package/esm2015/app/enums/state.enum.js +11 -11
  106. package/esm2015/app/fs-list.module.js +140 -140
  107. package/esm2015/app/fs-list.providers.js +4 -4
  108. package/esm2015/app/interfaces/cellconfig.interface.js +1 -1
  109. package/esm2015/app/interfaces/draggable-list.interface.js +1 -1
  110. package/esm2015/app/interfaces/external-params.interface.js +1 -1
  111. package/esm2015/app/interfaces/index.js +1 -1
  112. package/esm2015/app/interfaces/listconfig.interface.js +1 -1
  113. package/esm2015/app/interfaces/pagination.interface.js +1 -1
  114. package/esm2015/app/models/column.model.js +185 -175
  115. package/esm2015/app/models/row/base-row.js +23 -23
  116. package/esm2015/app/models/row/child-row.js +28 -28
  117. package/esm2015/app/models/row/group-row.js +41 -41
  118. package/esm2015/app/models/row/simple-row.js +10 -10
  119. package/esm2015/app/models/row-action.model.js +115 -115
  120. package/esm2015/app/models/row.js +77 -77
  121. package/esm2015/app/models/styleConfig.model.js +86 -86
  122. package/esm2015/app/services/group-expand-notifier.service.js +25 -25
  123. package/esm2015/firestitch-list.js +17 -17
  124. package/esm2015/public_api.js +40 -40
  125. package/esm5/app/classes/actions-controller.js +71 -71
  126. package/esm5/app/classes/columns-controller.js +236 -236
  127. package/esm5/app/classes/data-controller.js +374 -365
  128. package/esm5/app/classes/external-params-controller.js +185 -185
  129. package/esm5/app/classes/index.js +3 -3
  130. package/esm5/app/classes/list-controller.js +749 -749
  131. package/esm5/app/classes/pagination-controller.js +568 -568
  132. package/esm5/app/classes/persistance-controller.js +25 -25
  133. package/esm5/app/classes/reorder-controller.js +195 -195
  134. package/esm5/app/classes/selection-controller.js +465 -465
  135. package/esm5/app/classes/sorting-controller.js +204 -194
  136. package/esm5/app/components/body/body.component.js +104 -104
  137. package/esm5/app/components/body/row/actions/actions.component.js +113 -113
  138. package/esm5/app/components/body/row/cell/cell.component.js +95 -95
  139. package/esm5/app/components/body/row/inline-action/inline-action.component.js +35 -35
  140. package/esm5/app/components/body/row/row.component.js +295 -295
  141. package/esm5/app/components/customize-cols/customize-cols.component.js +69 -69
  142. package/esm5/app/components/footer/footer-row/footer-cell/footer-cell.component.js +29 -20
  143. package/esm5/app/components/footer/footer-row/footer-row.component.js +42 -38
  144. package/esm5/app/components/footer/footer.component.js +35 -31
  145. package/esm5/app/components/head/head-cell/head-cell.component.js +38 -38
  146. package/esm5/app/components/head/head.component.js +106 -106
  147. package/esm5/app/components/list/list.component.js +391 -391
  148. package/esm5/app/components/loader/loader.component.js +47 -47
  149. package/esm5/app/components/manage-saved-filters/manage-saved-filters.component.js +81 -81
  150. package/esm5/app/components/pagination/pagination.component.js +46 -46
  151. package/esm5/app/components/saved-filters/saved-filters.component.js +41 -41
  152. package/esm5/app/components/status/status.component.js +79 -79
  153. package/esm5/app/directives/cell/cell.directive.js +24 -24
  154. package/esm5/app/directives/column/column.directive.js +98 -94
  155. package/esm5/app/directives/draggable-list/draggable-list.directive.js +281 -281
  156. package/esm5/app/directives/draggable-row/draggable-row.directive.js +83 -83
  157. package/esm5/app/directives/empty-state/empty-state.directive.js +14 -14
  158. package/esm5/app/directives/footer/footer.directive.js +24 -24
  159. package/esm5/app/directives/group-cell/group-cell.directive.js +17 -17
  160. package/esm5/app/directives/group-expand-trigger/group-expand-trigger.directive.js +33 -33
  161. package/esm5/app/directives/header/header.directive.js +24 -24
  162. package/esm5/app/enums/button-type.enum.js +9 -9
  163. package/esm5/app/enums/page-change-type.enum.js +6 -6
  164. package/esm5/app/enums/pagination-strategy.enum.js +7 -7
  165. package/esm5/app/enums/row-type.enum.js +7 -7
  166. package/esm5/app/enums/state.enum.js +11 -11
  167. package/esm5/app/fs-list.module.js +145 -145
  168. package/esm5/app/fs-list.providers.js +4 -4
  169. package/esm5/app/interfaces/cellconfig.interface.js +1 -1
  170. package/esm5/app/interfaces/draggable-list.interface.js +1 -1
  171. package/esm5/app/interfaces/external-params.interface.js +1 -1
  172. package/esm5/app/interfaces/index.js +1 -1
  173. package/esm5/app/interfaces/listconfig.interface.js +1 -1
  174. package/esm5/app/interfaces/pagination.interface.js +1 -1
  175. package/esm5/app/models/column.model.js +204 -194
  176. package/esm5/app/models/row/base-row.js +35 -35
  177. package/esm5/app/models/row/child-row.js +43 -43
  178. package/esm5/app/models/row/group-row.js +61 -61
  179. package/esm5/app/models/row/simple-row.js +15 -15
  180. package/esm5/app/models/row-action.model.js +126 -126
  181. package/esm5/app/models/row.js +126 -126
  182. package/esm5/app/models/styleConfig.model.js +91 -91
  183. package/esm5/app/services/group-expand-notifier.service.js +30 -30
  184. package/esm5/firestitch-list.js +17 -17
  185. package/esm5/public_api.js +40 -40
  186. package/fesm2015/firestitch-list.js +5188 -5141
  187. package/fesm2015/firestitch-list.js.map +1 -1
  188. package/fesm5/firestitch-list.js +5817 -5768
  189. package/fesm5/firestitch-list.js.map +1 -1
  190. package/firestitch-list.d.ts +18 -18
  191. package/firestitch-list.metadata.json +1 -1
  192. package/package.json +1 -1
  193. package/public_api.d.ts +33 -33
@@ -1,267 +1,267 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, ElementRef, EventEmitter, KeyValueDiffers, Renderer2, Component, DoCheck, HostBinding, Input, KeyValueDiffer, OnDestroy, OnInit, ViewChildren, } from '@angular/core';
3
- import { Subject } from 'rxjs';
4
- import { takeUntil } from 'rxjs/operators';
5
- import { ReorderController, ReorderPosition, ReorderStrategy } from '../../../classes/reorder-controller';
6
- import { SelectionController } from '../../../classes/selection-controller';
7
- import { RowAction } from '../../../models/row-action.model';
8
- import { Row } from '../../../models/row';
9
- import { FsListDraggableListDirective } from '../../../directives/draggable-list/draggable-list.directive';
10
- let FsRowComponent = class FsRowComponent {
11
- constructor(el, reorderController, _cdRef, _differs, _renderer, _draggableList) {
12
- this.el = el;
13
- this.reorderController = reorderController;
14
- this._cdRef = _cdRef;
15
- this._differs = _differs;
16
- this._renderer = _renderer;
17
- this._draggableList = _draggableList;
18
- this.role = 'row';
19
- this.rowActionsRaw = [];
20
- this.groupActionsRaw = [];
21
- this.hasRowActions = false;
22
- this.rowEvents = {};
23
- this.restoreMode = false;
24
- this.ReorderPosition = ReorderPosition;
25
- this.ReorderStrategy = ReorderStrategy;
26
- this.rowActions = [];
27
- this.menuRowActions = [];
28
- this.inlineRowActions = [];
29
- this.selected = false;
30
- this.indeterminateSelected = false;
31
- this._eventListeners = [];
32
- this._destroy$ = new Subject();
33
- this._rowDiffer = _differs.find({}).create();
34
- }
35
- get rowCssClass() {
36
- let cls = 'fs-list-row';
37
- if (this.rowIndex % 2 !== 0)
38
- cls += ' fs-list-row-odd';
39
- if (this.rowIndex % 2 === 0)
40
- cls += ' fs-list-row-even';
41
- if (this.row && this.row.isGroup)
42
- cls += ' fs-list-row-group';
43
- if (this.rowClass) {
44
- const resultClass = this.rowClass(this.row.data);
45
- if (typeof resultClass === 'string') {
46
- cls += ` ${resultClass}`;
47
- }
48
- else if (typeof resultClass === 'object') {
49
- const keys = Object.keys(resultClass);
50
- for (const k of keys) {
51
- if (resultClass[k] === true)
52
- cls += ` ${k}`;
53
- }
54
- }
55
- }
56
- return cls;
57
- }
58
- get dragCellVisible() {
59
- return !this.row.isGroup;
60
- }
61
- ngOnInit() {
62
- this.initRowEvents();
63
- this.initSelection();
64
- if (this.row && this.row.isGroup) {
65
- if (this.row && this.row.isGroup && this.groupActionsRaw) {
66
- this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));
67
- this.filterActionsByCategories();
68
- }
69
- }
70
- else if (this.rowActionsRaw) {
71
- this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));
72
- this.filterActionsByCategories();
73
- }
74
- }
75
- ngDoCheck() {
76
- if (this._rowDiffer.diff(this.row)) {
77
- if (this.rowActions) {
78
- this.rowActions.forEach((action) => {
79
- action.checkShowStatus(this.row.data, this.rowIndex);
80
- action.updateLink(this.row.data);
81
- });
82
- this.filterActionsByCategories();
83
- }
84
- this._cdRef.markForCheck();
85
- }
86
- }
87
- ngOnDestroy() {
88
- this._eventListeners.forEach((listener) => { listener(); });
89
- this._destroy$.next();
90
- this._destroy$.complete();
91
- }
92
- /**
93
- * Select row by checkbox
94
- * @param event
95
- */
96
- selectRow(event) {
97
- this.selection.rowSelectionChange(this.row, event.checked);
98
- this._cdRef.markForCheck();
99
- }
100
- /**
101
- * Track By for improve change detection
102
- * @param index
103
- */
104
- trackByFn(index) {
105
- return index;
106
- }
107
- dragStart(event) {
108
- if (this.reorderController.enabled) {
109
- event.preventDefault();
110
- event.stopPropagation();
111
- this._draggableList.dragStart(this.el.nativeElement);
112
- }
113
- }
114
- /**
115
- * Set event listeners for row
116
- */
117
- initRowEvents() {
118
- for (const event in this.rowEvents) {
119
- if (this.rowEvents.hasOwnProperty(event)) {
120
- const listener = this._renderer.listen(this.el.nativeElement, event, (evt) => {
121
- // evt.preventDefault();
122
- // evt.stopPropagation();
123
- if (!this.reorderController.enabled) {
124
- this.rowEvents[event]({
125
- event: evt,
126
- row: this.row.data,
127
- rowIndex: this.rowIndex
128
- });
129
- }
130
- });
131
- this._eventListeners.push(listener);
132
- }
133
- }
134
- }
135
- /**
136
- * Subscribe to selection change events
137
- */
138
- initSelection() {
139
- if (this.selection) {
140
- this.selected = this.row && this.selection.isRowSelected(this.row.data);
141
- this.selection.selectionChange$
142
- .pipe(
143
- // // Would like to respond only when checkbox on top is changed
144
- // // or was clicked "Select All" in selection dialog
145
- // filter(({type}) => {
146
- // return type === SelectionChangeType.AllVisibleSelectionChange
147
- // || type === SelectionChangeType.SelectedAll;
148
- // }),
149
- takeUntil(this._destroy$))
150
- .subscribe(() => {
151
- var _a;
152
- this.selected = this.row && this.selection.isRowSelected(this.row.data);
153
- if ((_a = this.row) === null || _a === void 0 ? void 0 : _a.isGroup) {
154
- const groupSelection = this.selection.isGroupSelected(this.row);
155
- if (groupSelection === 'indeterminate') {
156
- this.selected = true;
157
- this.indeterminateSelected = true;
158
- }
159
- else {
160
- this.selected = groupSelection;
161
- this.indeterminateSelected = false;
162
- }
163
- }
164
- this._cdRef.markForCheck();
165
- });
166
- }
167
- }
168
- filterActionsByCategories() {
169
- this.menuRowActions = [];
170
- this.inlineRowActions = [];
171
- this.restoreAction = null;
172
- this.rowActions.forEach((action) => {
173
- if (!action.isShown) {
174
- return;
175
- }
176
- if (action.menu && !action.restore) {
177
- this.menuRowActions.push(action);
178
- }
179
- else if (!action.menu && !action.restore) {
180
- this.inlineRowActions.push(action);
181
- }
182
- else if (action.restore) {
183
- this.restoreAction = action;
184
- }
185
- });
186
- }
187
- };
188
- FsRowComponent.ctorParameters = () => [
189
- { type: ElementRef },
190
- { type: ReorderController },
191
- { type: ChangeDetectorRef },
192
- { type: KeyValueDiffers },
193
- { type: Renderer2 },
194
- { type: FsListDraggableListDirective }
195
- ];
196
- __decorate([
197
- HostBinding('attr.role'),
198
- __metadata("design:type", Object)
199
- ], FsRowComponent.prototype, "role", void 0);
200
- __decorate([
201
- Input(),
202
- __metadata("design:type", Row)
203
- ], FsRowComponent.prototype, "row", void 0);
204
- __decorate([
205
- Input(),
206
- __metadata("design:type", Array)
207
- ], FsRowComponent.prototype, "rowActionsRaw", void 0);
208
- __decorate([
209
- Input(),
210
- __metadata("design:type", Array)
211
- ], FsRowComponent.prototype, "groupActionsRaw", void 0);
212
- __decorate([
213
- Input(),
214
- __metadata("design:type", Object)
215
- ], FsRowComponent.prototype, "hasRowActions", void 0);
216
- __decorate([
217
- Input(),
218
- __metadata("design:type", Object)
219
- ], FsRowComponent.prototype, "rowEvents", void 0);
220
- __decorate([
221
- Input(),
222
- __metadata("design:type", Object)
223
- ], FsRowComponent.prototype, "rowClass", void 0);
224
- __decorate([
225
- Input(),
226
- __metadata("design:type", Object)
227
- ], FsRowComponent.prototype, "restoreMode", void 0);
228
- __decorate([
229
- Input(),
230
- __metadata("design:type", Number)
231
- ], FsRowComponent.prototype, "rowIndex", void 0);
232
- __decorate([
233
- Input(),
234
- __metadata("design:type", Array)
235
- ], FsRowComponent.prototype, "columns", void 0);
236
- __decorate([
237
- Input(),
238
- __metadata("design:type", SelectionController)
239
- ], FsRowComponent.prototype, "selection", void 0);
240
- __decorate([
241
- Input(),
242
- __metadata("design:type", EventEmitter)
243
- ], FsRowComponent.prototype, "rowRemoved", void 0);
244
- __decorate([
245
- ViewChildren('td'),
246
- __metadata("design:type", Object)
247
- ], FsRowComponent.prototype, "cellRefs", void 0);
248
- __decorate([
249
- HostBinding('class'),
250
- __metadata("design:type", Object),
251
- __metadata("design:paramtypes", [])
252
- ], FsRowComponent.prototype, "rowCssClass", null);
253
- FsRowComponent = __decorate([
254
- Component({
255
- selector: '[fs-list-row]',
256
- template: "<!-- Drag -->\r\n<ng-container *ngIf=\"reorderController.leftReorderActivated$ | async\">\r\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\r\n</ng-container>\r\n\r\n<!-- Selection -->\r\n<ng-container *ngIf=\"selection\">\r\n <td class=\"fs-list-col fs-list-col-selection\">\r\n <mat-checkbox (change)=\"selectRow($event)\"\r\n [checked]=\"selected\"\r\n [indeterminate]=\"indeterminateSelected\">\r\n </mat-checkbox>\r\n </td>\r\n</ng-container>\r\n\r\n<!-- Content -->\r\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn; let isFirst = first\">\r\n <td fs-cell\r\n *ngIf=\"(row.isGroup && !column.groupCellColspanned) || (!row.isGroup && !column.cellColspanned)\"\r\n [column]=\"column\"\r\n [row]=\"row\"\r\n [rowIndex]=\"rowIndex\"\r\n [class]=\"column.cellConfigs.classesString\"\r\n [ngClass]=\"{ 'primary-col': isFirst }\"\r\n [attr.colspan]=\"(row.isGroup && column.groupCellConfigs.colspan) || column.cellConfigs.colspan\"\r\n [attr.width]=\"column.width\"\r\n >\r\n </td>\r\n</ng-container>\r\n\r\n<!-- Drag -->\r\n<ng-container *ngIf=\"reorderController.rightReorderActivated$ | async\">\r\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\r\n</ng-container>\r\n\r\n<!-- Row Actions -->\r\n<td *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\">\r\n <fs-list-row-actions [row]=\"row\"\r\n [index]=\"rowIndex\"\r\n [rowActions]=\"rowActions\"\r\n [menuRowActions]=\"menuRowActions\"\r\n [inlineRowActions]=\"inlineRowActions\"\r\n [restoreAction]=\"restoreAction\"\r\n [restoreMode]=\"restoreMode\"\r\n [rowRemoved]=\"rowRemoved\"\r\n ></fs-list-row-actions>\r\n</td>\r\n\r\n<ng-template #dragCell>\r\n <ng-container *ngIf=\"dragCellVisible; else emptyCell\">\r\n <td class=\"fs-list-col drag-col\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\"\r\n >\r\n <mat-icon>drag_handle</mat-icon>\r\n </td>\r\n </ng-container>\r\n <ng-template #emptyCell>\r\n <td class=\"fs-list-col drag-col\"></td>\r\n </ng-template>\r\n</ng-template>\r\n",
257
- changeDetection: ChangeDetectionStrategy.OnPush
258
- }),
259
- __metadata("design:paramtypes", [ElementRef,
260
- ReorderController,
261
- ChangeDetectorRef,
262
- KeyValueDiffers,
263
- Renderer2,
264
- FsListDraggableListDirective])
265
- ], FsRowComponent);
266
- export { FsRowComponent };
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2xpc3QvIiwic291cmNlcyI6WyJhcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsU0FBUyxFQUNULE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxFQUNMLGNBQWMsRUFDZCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixlQUFlLEVBQ2hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQVEzRyxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBeUN6QixZQUNTLEVBQWMsRUFDZCxpQkFBb0MsRUFDbkMsTUFBeUIsRUFDekIsUUFBeUIsRUFDekIsU0FBb0IsRUFDcEIsY0FBNEM7UUFMN0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbkMsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsY0FBUyxHQUFULFNBQVMs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S0FBSyxFQUFFOzhCQUFvQixZQUFZO2tEQUFNO0FBSTlDO0lBREMsWUFBWSxDQUFDLElBQUksQ0FBQzs7Z0RBQ0g7QUFnQ2hCO0lBREMsV0FBVyxDQUFDLE9BQU8sQ0FBQzs7O2lEQXVCcEI7QUEzRVUsY0FBYztJQUwxQixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsZUFBZTtRQUN6QixtMEVBQWlDO1FBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO0tBQ2hELENBQUM7cUNBMkNhLFVBQVU7UUFDSyxpQkFBaUI7UUFDM0IsaUJBQWlCO1FBQ2YsZUFBZTtRQUNkLFNBQVM7UUFDSiw0QkFBNEI7R0EvQzNDLGNBQWMsQ0FpTzFCO1NBak9ZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEtleVZhbHVlRGlmZmVycyxcclxuICBSZW5kZXJlcjIsXHJcbiAgQ29tcG9uZW50LFxyXG4gIERvQ2hlY2ssXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgS2V5VmFsdWVEaWZmZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5cclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBSZW9yZGVyQ29udHJvbGxlcixcclxuICBSZW9yZGVyUG9zaXRpb24sXHJcbiAgUmVvcmRlclN0cmF0ZWd5XHJcbn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9yZW9yZGVyLWNvbnRyb2xsZXInO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Db250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9zZWxlY3Rpb24tY29udHJvbGxlcic7XHJcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yb3ctYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jvdyc7XHJcbmltcG9ydCB7IEZzTGlzdERyYWdnYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2RyYWdnYWJsZS1saXN0L2RyYWdnYWJsZS1saXN0LmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdbZnMtbGlzdC1yb3ddJyxcclxuICB0ZW1wbGF0ZVVybDogJ3Jvdy5jb21wb25lbnQuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZzUm93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrLCBPbkRlc3Ryb3kge1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXHJcbiAgcHVibGljIHJvbGUgPSAncm93JztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHJvdzogUm93O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3dBY3Rpb25zUmF3OiBhbnkgW10gPSBbXTtcclxuICBASW5wdXQoKSBwdWJsaWMgZ3JvdXBBY3Rpb25zUmF3OiBhbnkgW10gPSBbXTtcclxuICBASW5wdXQoKSBwdWJsaWMgaGFzUm93QWN0aW9ucyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3dFdmVudHMgPSB7fTtcclxuICBASW5wdXQoKSBwdWJsaWMgcm93Q2xhc3M7XHJcbiAgQElucHV0KCkgcHVibGljIHJlc3RvcmVNb2RlID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3dJbmRleDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb2x1bW5zOiBDb2x1bW5bXTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uOiBTZWxlY3Rpb25Db250cm9sbGVyO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgcm93UmVtb3ZlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG5cclxuICBAVmlld0NoaWxkcmVuKCd0ZCcpXHJcbiAgcHVibGljIGNlbGxSZWZzO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgUmVvcmRlclBvc2l0aW9uID0gUmVvcmRlclBvc2l0aW9uO1xyXG4gIHB1YmxpYyByZWFkb25seSBSZW9yZGVyU3RyYXRlZ3kgPSBSZW9yZGVyU3RyYXRlZ3k7XHJcblxyXG4gIHB1YmxpYyByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgbWVudVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XHJcbiAgcHVibGljIGlubGluZVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XHJcbiAgcHVibGljIHJlc3RvcmVBY3Rpb246IFJvd0FjdGlvbjtcclxuXHJcbiAgcHVibGljIHNlbGVjdGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGluZGV0ZXJtaW5hdGVTZWxlY3RlZDogYm9vbGVhbiB8ICdpbmRldGVybWluYXRlJyA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9yb3dEaWZmZXI6IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PjtcclxuXHJcbiAgcHJpdmF0ZSBfZXZlbnRMaXN0ZW5lcnMgPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyByZW9yZGVyQ29udHJvbGxlcjogUmVvcmRlckNvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9kaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXHJcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBfZHJhZ2dhYmxlTGlzdDogRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSxcclxuICApIHtcclxuICAgIHRoaXMuX3Jvd0RpZmZlciA9IF9kaWZmZXJzLmZpbmQoe30pLmNyZWF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgZ2V0IHJvd0Nzc0NsYXNzKCkge1xyXG4gICAgbGV0IGNscyA9ICdmcy1saXN0LXJvdyc7XHJcblxyXG4gICAgaWYgKHRoaXMucm93SW5kZXggJSAyICE9PSAwKSBjbHMgKz0gJyBmcy1saXN0LXJvdy1vZGQnO1xyXG4gICAgaWYgKHRoaXMucm93SW5kZXggJSAyID09PSAwKSBjbHMgKz0gJyBmcy1saXN0LXJvdy1ldmVuJztcclxuXHJcbiAgICBpZiAodGhpcy5yb3cgJiYgdGhpcy5yb3cuaXNHcm91cCkgY2xzICs9ICcgZnMtbGlzdC1yb3ctZ3JvdXAnO1xyXG5cclxuICAgIGlmICh0aGlzLnJvd0NsYXNzKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdENsYXNzID0gdGhpcy5yb3dDbGFzcyh0aGlzLnJvdy5kYXRhKTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0Q2xhc3MgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY2xzICs9IGAgJHtyZXN1bHRDbGFzc31gO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXN1bHRDbGFzcyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVzdWx0Q2xhc3MpO1xyXG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0Q2xhc3Nba10gPT09IHRydWUpIGNscyArPSBgICR7a31gO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjbHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRyYWdDZWxsVmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5yb3cuaXNHcm91cDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdFJvd0V2ZW50cygpO1xyXG4gICAgdGhpcy5pbml0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXApIHtcclxuICAgICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXAgJiYgdGhpcy5ncm91cEFjdGlvbnNSYXcpIHtcclxuICAgICAgICB0aGlzLnJvd0FjdGlvbnMgPSB0aGlzLmdyb3VwQWN0aW9uc1Jhdy5tYXAoKGFjdGlvbikgPT4gbmV3IFJvd0FjdGlvbihhY3Rpb24pKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5yb3dBY3Rpb25zUmF3KSB7XHJcbiAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMucm93QWN0aW9uc1Jhdy5tYXAoKGFjdGlvbikgPT4gbmV3IFJvd0FjdGlvbihhY3Rpb24pKTtcclxuXHJcbiAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nRG9DaGVjaygpIHtcclxuICAgIGlmICh0aGlzLl9yb3dEaWZmZXIuZGlmZih0aGlzLnJvdykpIHtcclxuICAgICAgaWYgKHRoaXMucm93QWN0aW9ucykge1xyXG4gICAgICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcclxuICAgICAgICAgIGFjdGlvbi5jaGVja1Nob3dTdGF0dXModGhpcy5yb3cuZGF0YSwgdGhpcy5yb3dJbmRleCk7XHJcbiAgICAgICAgICBhY3Rpb24udXBkYXRlTGluayh0aGlzLnJvdy5kYXRhKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZpbHRlckFjdGlvbnNCeUNhdGVnb3JpZXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9ldmVudExpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4geyBsaXN0ZW5lcigpIH0pO1xyXG5cclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3Qgcm93IGJ5IGNoZWNrYm94XHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgcHVibGljIHNlbGVjdFJvdyhldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbkNoYW5nZSh0aGlzLnJvdywgZXZlbnQuY2hlY2tlZCk7XHJcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYWNrIEJ5IGZvciBpbXByb3ZlIGNoYW5nZSBkZXRlY3Rpb25cclxuICAgKiBAcGFyYW0gaW5kZXhcclxuICAgKi9cclxuICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4KSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJhZ1N0YXJ0KGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgdGhpcy5fZHJhZ2dhYmxlTGlzdC5kcmFnU3RhcnQodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBldmVudCBsaXN0ZW5lcnMgZm9yIHJvd1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdFJvd0V2ZW50cygpIHtcclxuICAgIGZvciAoY29uc3QgZXZlbnQgaW4gdGhpcy5yb3dFdmVudHMpIHtcclxuICAgICAgaWYgKHRoaXMucm93RXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50KSkge1xyXG4gICAgICAgIGNvbnN0IGxpc3RlbmVyID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgZXZlbnQsIChldnQpID0+IHtcclxuICAgICAgICAgIC8vIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgLy8gZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgICAgIGlmICghdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93RXZlbnRzW2V2ZW50XSh7XHJcbiAgICAgICAgICAgICAgZXZlbnQ6IGV2dCxcclxuICAgICAgICAgICAgICByb3c6IHRoaXMucm93LmRhdGEsXHJcbiAgICAgICAgICAgICAgcm93SW5kZXg6IHRoaXMucm93SW5kZXhcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpYmUgdG8gc2VsZWN0aW9uIGNoYW5nZSBldmVudHNcclxuICAgKi9cclxuICBwcml2YXRlIGluaXRTZWxlY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnJvdyAmJiB0aGlzLnNlbGVjdGlvbi5pc1Jvd1NlbGVjdGVkKHRoaXMucm93LmRhdGEpO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uQ2hhbmdlJFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgLy8gLy8gV291bGQgbGlrZSB0byByZXNwb25kIG9ubHkgd2hlbiBjaGVja2JveCBvbiB0b3AgaXMgY2hhbmdlZFxyXG4gICAgICAgICAgLy8gLy8gb3Igd2FzIGNsaWNrZWQgXCJTZWxlY3QgQWxsXCIgaW4gc2VsZWN0aW9uIGRpYWxvZ1xyXG4gICAgICAgICAgLy8gZmlsdGVyKCh7dHlwZX0pID0+IHtcclxuICAgICAgICAgIC8vICAgcmV0dXJuIHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZVxyXG4gICAgICAgICAgLy8gICAgIHx8IHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuU2VsZWN0ZWRBbGw7XHJcbiAgICAgICAgICAvLyB9KSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMucm93ICYmIHRoaXMuc2VsZWN0aW9uLmlzUm93U2VsZWN0ZWQodGhpcy5yb3cuZGF0YSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMucm93Py5pc0dyb3VwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwU2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uaXNHcm91cFNlbGVjdGVkKHRoaXMucm93KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChncm91cFNlbGVjdGlvbiA9PT0gJ2luZGV0ZXJtaW5hdGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBncm91cFNlbGVjdGlvbjtcclxuICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckFjdGlvbnNCeUNhdGVnb3JpZXMoKSB7XHJcbiAgICB0aGlzLm1lbnVSb3dBY3Rpb25zID0gW107XHJcbiAgICB0aGlzLmlubGluZVJvd0FjdGlvbnMgPSBbXTtcclxuICAgIHRoaXMucmVzdG9yZUFjdGlvbiA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5yb3dBY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xyXG5cclxuICAgICAgaWYgKCFhY3Rpb24uaXNTaG93bikgeyByZXR1cm4gfVxyXG5cclxuICAgICAgaWYgKGFjdGlvbi5tZW51ICYmICFhY3Rpb24ucmVzdG9yZSkge1xyXG4gICAgICAgIHRoaXMubWVudVJvd0FjdGlvbnMucHVzaChhY3Rpb24pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFhY3Rpb24ubWVudSAmJiAhYWN0aW9uLnJlc3RvcmUpIHtcclxuICAgICAgICB0aGlzLmlubGluZVJvd0FjdGlvbnMucHVzaChhY3Rpb24pO1xyXG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi5yZXN0b3JlKSB7XHJcbiAgICAgICAgdGhpcy5yZXN0b3JlQWN0aW9uID0gYWN0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, ElementRef, EventEmitter, KeyValueDiffers, Renderer2, Component, DoCheck, HostBinding, Input, KeyValueDiffer, OnDestroy, OnInit, ViewChildren, } from '@angular/core';
3
+ import { Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import { ReorderController, ReorderPosition, ReorderStrategy } from '../../../classes/reorder-controller';
6
+ import { SelectionController } from '../../../classes/selection-controller';
7
+ import { RowAction } from '../../../models/row-action.model';
8
+ import { Row } from '../../../models/row';
9
+ import { FsListDraggableListDirective } from '../../../directives/draggable-list/draggable-list.directive';
10
+ let FsRowComponent = class FsRowComponent {
11
+ constructor(el, reorderController, _cdRef, _differs, _renderer, _draggableList) {
12
+ this.el = el;
13
+ this.reorderController = reorderController;
14
+ this._cdRef = _cdRef;
15
+ this._differs = _differs;
16
+ this._renderer = _renderer;
17
+ this._draggableList = _draggableList;
18
+ this.role = 'row';
19
+ this.rowActionsRaw = [];
20
+ this.groupActionsRaw = [];
21
+ this.hasRowActions = false;
22
+ this.rowEvents = {};
23
+ this.restoreMode = false;
24
+ this.ReorderPosition = ReorderPosition;
25
+ this.ReorderStrategy = ReorderStrategy;
26
+ this.rowActions = [];
27
+ this.menuRowActions = [];
28
+ this.inlineRowActions = [];
29
+ this.selected = false;
30
+ this.indeterminateSelected = false;
31
+ this._eventListeners = [];
32
+ this._destroy$ = new Subject();
33
+ this._rowDiffer = _differs.find({}).create();
34
+ }
35
+ get rowCssClass() {
36
+ let cls = 'fs-list-row';
37
+ if (this.rowIndex % 2 !== 0)
38
+ cls += ' fs-list-row-odd';
39
+ if (this.rowIndex % 2 === 0)
40
+ cls += ' fs-list-row-even';
41
+ if (this.row && this.row.isGroup)
42
+ cls += ' fs-list-row-group';
43
+ if (this.rowClass) {
44
+ const resultClass = this.rowClass(this.row.data);
45
+ if (typeof resultClass === 'string') {
46
+ cls += ` ${resultClass}`;
47
+ }
48
+ else if (typeof resultClass === 'object') {
49
+ const keys = Object.keys(resultClass);
50
+ for (const k of keys) {
51
+ if (resultClass[k] === true)
52
+ cls += ` ${k}`;
53
+ }
54
+ }
55
+ }
56
+ return cls;
57
+ }
58
+ get dragCellVisible() {
59
+ return !this.row.isGroup;
60
+ }
61
+ ngOnInit() {
62
+ this.initRowEvents();
63
+ this.initSelection();
64
+ if (this.row && this.row.isGroup) {
65
+ if (this.row && this.row.isGroup && this.groupActionsRaw) {
66
+ this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));
67
+ this.filterActionsByCategories();
68
+ }
69
+ }
70
+ else if (this.rowActionsRaw) {
71
+ this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));
72
+ this.filterActionsByCategories();
73
+ }
74
+ }
75
+ ngDoCheck() {
76
+ if (this._rowDiffer.diff(this.row)) {
77
+ if (this.rowActions) {
78
+ this.rowActions.forEach((action) => {
79
+ action.checkShowStatus(this.row.data, this.rowIndex);
80
+ action.updateLink(this.row.data);
81
+ });
82
+ this.filterActionsByCategories();
83
+ }
84
+ this._cdRef.markForCheck();
85
+ }
86
+ }
87
+ ngOnDestroy() {
88
+ this._eventListeners.forEach((listener) => { listener(); });
89
+ this._destroy$.next();
90
+ this._destroy$.complete();
91
+ }
92
+ /**
93
+ * Select row by checkbox
94
+ * @param event
95
+ */
96
+ selectRow(event) {
97
+ this.selection.rowSelectionChange(this.row, event.checked);
98
+ this._cdRef.markForCheck();
99
+ }
100
+ /**
101
+ * Track By for improve change detection
102
+ * @param index
103
+ */
104
+ trackByFn(index) {
105
+ return index;
106
+ }
107
+ dragStart(event) {
108
+ if (this.reorderController.enabled) {
109
+ event.preventDefault();
110
+ event.stopPropagation();
111
+ this._draggableList.dragStart(this.el.nativeElement);
112
+ }
113
+ }
114
+ /**
115
+ * Set event listeners for row
116
+ */
117
+ initRowEvents() {
118
+ for (const event in this.rowEvents) {
119
+ if (this.rowEvents.hasOwnProperty(event)) {
120
+ const listener = this._renderer.listen(this.el.nativeElement, event, (evt) => {
121
+ // evt.preventDefault();
122
+ // evt.stopPropagation();
123
+ if (!this.reorderController.enabled) {
124
+ this.rowEvents[event]({
125
+ event: evt,
126
+ row: this.row.data,
127
+ rowIndex: this.rowIndex
128
+ });
129
+ }
130
+ });
131
+ this._eventListeners.push(listener);
132
+ }
133
+ }
134
+ }
135
+ /**
136
+ * Subscribe to selection change events
137
+ */
138
+ initSelection() {
139
+ if (this.selection) {
140
+ this.selected = this.row && this.selection.isRowSelected(this.row.data);
141
+ this.selection.selectionChange$
142
+ .pipe(
143
+ // // Would like to respond only when checkbox on top is changed
144
+ // // or was clicked "Select All" in selection dialog
145
+ // filter(({type}) => {
146
+ // return type === SelectionChangeType.AllVisibleSelectionChange
147
+ // || type === SelectionChangeType.SelectedAll;
148
+ // }),
149
+ takeUntil(this._destroy$))
150
+ .subscribe(() => {
151
+ var _a;
152
+ this.selected = this.row && this.selection.isRowSelected(this.row.data);
153
+ if ((_a = this.row) === null || _a === void 0 ? void 0 : _a.isGroup) {
154
+ const groupSelection = this.selection.isGroupSelected(this.row);
155
+ if (groupSelection === 'indeterminate') {
156
+ this.selected = true;
157
+ this.indeterminateSelected = true;
158
+ }
159
+ else {
160
+ this.selected = groupSelection;
161
+ this.indeterminateSelected = false;
162
+ }
163
+ }
164
+ this._cdRef.markForCheck();
165
+ });
166
+ }
167
+ }
168
+ filterActionsByCategories() {
169
+ this.menuRowActions = [];
170
+ this.inlineRowActions = [];
171
+ this.restoreAction = null;
172
+ this.rowActions.forEach((action) => {
173
+ if (!action.isShown) {
174
+ return;
175
+ }
176
+ if (action.menu && !action.restore) {
177
+ this.menuRowActions.push(action);
178
+ }
179
+ else if (!action.menu && !action.restore) {
180
+ this.inlineRowActions.push(action);
181
+ }
182
+ else if (action.restore) {
183
+ this.restoreAction = action;
184
+ }
185
+ });
186
+ }
187
+ };
188
+ FsRowComponent.ctorParameters = () => [
189
+ { type: ElementRef },
190
+ { type: ReorderController },
191
+ { type: ChangeDetectorRef },
192
+ { type: KeyValueDiffers },
193
+ { type: Renderer2 },
194
+ { type: FsListDraggableListDirective }
195
+ ];
196
+ __decorate([
197
+ HostBinding('attr.role'),
198
+ __metadata("design:type", Object)
199
+ ], FsRowComponent.prototype, "role", void 0);
200
+ __decorate([
201
+ Input(),
202
+ __metadata("design:type", Row)
203
+ ], FsRowComponent.prototype, "row", void 0);
204
+ __decorate([
205
+ Input(),
206
+ __metadata("design:type", Array)
207
+ ], FsRowComponent.prototype, "rowActionsRaw", void 0);
208
+ __decorate([
209
+ Input(),
210
+ __metadata("design:type", Array)
211
+ ], FsRowComponent.prototype, "groupActionsRaw", void 0);
212
+ __decorate([
213
+ Input(),
214
+ __metadata("design:type", Object)
215
+ ], FsRowComponent.prototype, "hasRowActions", void 0);
216
+ __decorate([
217
+ Input(),
218
+ __metadata("design:type", Object)
219
+ ], FsRowComponent.prototype, "rowEvents", void 0);
220
+ __decorate([
221
+ Input(),
222
+ __metadata("design:type", Object)
223
+ ], FsRowComponent.prototype, "rowClass", void 0);
224
+ __decorate([
225
+ Input(),
226
+ __metadata("design:type", Object)
227
+ ], FsRowComponent.prototype, "restoreMode", void 0);
228
+ __decorate([
229
+ Input(),
230
+ __metadata("design:type", Number)
231
+ ], FsRowComponent.prototype, "rowIndex", void 0);
232
+ __decorate([
233
+ Input(),
234
+ __metadata("design:type", Array)
235
+ ], FsRowComponent.prototype, "columns", void 0);
236
+ __decorate([
237
+ Input(),
238
+ __metadata("design:type", SelectionController)
239
+ ], FsRowComponent.prototype, "selection", void 0);
240
+ __decorate([
241
+ Input(),
242
+ __metadata("design:type", EventEmitter)
243
+ ], FsRowComponent.prototype, "rowRemoved", void 0);
244
+ __decorate([
245
+ ViewChildren('td'),
246
+ __metadata("design:type", Object)
247
+ ], FsRowComponent.prototype, "cellRefs", void 0);
248
+ __decorate([
249
+ HostBinding('class'),
250
+ __metadata("design:type", Object),
251
+ __metadata("design:paramtypes", [])
252
+ ], FsRowComponent.prototype, "rowCssClass", null);
253
+ FsRowComponent = __decorate([
254
+ Component({
255
+ selector: '[fs-list-row]',
256
+ template: "<!-- Drag -->\n<ng-container *ngIf=\"reorderController.leftReorderActivated$ | async\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Selection -->\n<ng-container *ngIf=\"selection\">\n <td class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n </td>\n</ng-container>\n\n<!-- Content -->\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn; let isFirst = first\">\n <td fs-cell\n *ngIf=\"(row.isGroup && !column.groupCellColspanned) || (!row.isGroup && !column.cellColspanned)\"\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [class]=\"column.cellConfigs.classesString\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(row.isGroup && column.groupCellConfigs.colspan) || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\"\n >\n </td>\n</ng-container>\n\n<!-- Drag -->\n<ng-container *ngIf=\"reorderController.rightReorderActivated$ | async\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\">\n <fs-list-row-actions [row]=\"row\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n ></fs-list-row-actions>\n</td>\n\n<ng-template #dragCell>\n <ng-container *ngIf=\"dragCellVisible; else emptyCell\">\n <td class=\"fs-list-col drag-col\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\"\n >\n <mat-icon>drag_handle</mat-icon>\n </td>\n </ng-container>\n <ng-template #emptyCell>\n <td class=\"fs-list-col drag-col\"></td>\n </ng-template>\n</ng-template>\n",
257
+ changeDetection: ChangeDetectionStrategy.OnPush
258
+ }),
259
+ __metadata("design:paramtypes", [ElementRef,
260
+ ReorderController,
261
+ ChangeDetectorRef,
262
+ KeyValueDiffers,
263
+ Renderer2,
264
+ FsListDraggableListDirective])
265
+ ], FsRowComponent);
266
+ export { FsRowComponent };
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2xpc3QvIiwic291cmNlcyI6WyJhcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsU0FBUyxFQUNULE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxFQUNMLGNBQWMsRUFDZCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixlQUFlLEVBQ2hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQVEzRyxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBeUN6QixZQUNTLEVBQWMsRUFDZCxpQkFBb0MsRUFDbkMsTUFBeUIsRUFDekIsUUFBeUIsRUFDekIsU0FBb0IsRUFDcEIsY0FBNEM7UUFMN0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbkMsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsY0FBUyxHQUFULFNBQVMs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S0FBSyxFQUFFOzhCQUFvQixZQUFZO2tEQUFNO0FBSTlDO0lBREMsWUFBWSxDQUFDLElBQUksQ0FBQzs7Z0RBQ0g7QUFnQ2hCO0lBREMsV0FBVyxDQUFDLE9BQU8sQ0FBQzs7O2lEQXVCcEI7QUEzRVUsY0FBYztJQUwxQixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsZUFBZTtRQUN6Qix5c0VBQWlDO1FBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO0tBQ2hELENBQUM7cUNBMkNhLFVBQVU7UUFDSyxpQkFBaUI7UUFDM0IsaUJBQWlCO1FBQ2YsZUFBZTtRQUNkLFNBQVM7UUFDSiw0QkFBNEI7R0EvQzNDLGNBQWMsQ0FpTzFCO1NBak9ZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgS2V5VmFsdWVEaWZmZXJzLFxuICBSZW5kZXJlcjIsXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBLZXlWYWx1ZURpZmZlcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcbmltcG9ydCB7XG4gIFJlb3JkZXJDb250cm9sbGVyLFxuICBSZW9yZGVyUG9zaXRpb24sXG4gIFJlb3JkZXJTdHJhdGVneVxufSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb25Db250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9zZWxlY3Rpb24tY29udHJvbGxlcic7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcm93LWFjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSb3cgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcm93JztcbmltcG9ydCB7IEZzTGlzdERyYWdnYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2RyYWdnYWJsZS1saXN0L2RyYWdnYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW2ZzLWxpc3Qtcm93XScsXG4gIHRlbXBsYXRlVXJsOiAncm93LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRnNSb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2ssIE9uRGVzdHJveSB7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICBwdWJsaWMgcm9sZSA9ICdyb3cnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyByb3c6IFJvdztcbiAgQElucHV0KCkgcHVibGljIHJvd0FjdGlvbnNSYXc6IGFueSBbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgZ3JvdXBBY3Rpb25zUmF3OiBhbnkgW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGhhc1Jvd0FjdGlvbnMgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJvd0V2ZW50cyA9IHt9O1xuICBASW5wdXQoKSBwdWJsaWMgcm93Q2xhc3M7XG4gIEBJbnB1dCgpIHB1YmxpYyByZXN0b3JlTW9kZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyByb3dJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgY29sdW1uczogQ29sdW1uW107XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG5cbiAgQElucHV0KCkgcHVibGljIHJvd1JlbW92ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG5cbiAgQFZpZXdDaGlsZHJlbigndGQnKVxuICBwdWJsaWMgY2VsbFJlZnM7XG5cbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJQb3NpdGlvbiA9IFJlb3JkZXJQb3NpdGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneTtcblxuICBwdWJsaWMgcm93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcblxuICBwdWJsaWMgbWVudVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIHB1YmxpYyBpbmxpbmVSb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuICBwdWJsaWMgcmVzdG9yZUFjdGlvbjogUm93QWN0aW9uO1xuXG4gIHB1YmxpYyBzZWxlY3RlZCA9IGZhbHNlO1xuICBwdWJsaWMgaW5kZXRlcm1pbmF0ZVNlbGVjdGVkOiBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfcm93RGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxhbnksIGFueT47XG5cbiAgcHJpdmF0ZSBfZXZlbnRMaXN0ZW5lcnMgPSBbXTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyByZW9yZGVyQ29udHJvbGxlcjogUmVvcmRlckNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2RpZmZlcnM6IEtleVZhbHVlRGlmZmVycyxcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgX2RyYWdnYWJsZUxpc3Q6IEZzTGlzdERyYWdnYWJsZUxpc3REaXJlY3RpdmUsXG4gICkge1xuICAgIHRoaXMuX3Jvd0RpZmZlciA9IF9kaWZmZXJzLmZpbmQoe30pLmNyZWF0ZSgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCByb3dDc3NDbGFzcygpIHtcbiAgICBsZXQgY2xzID0gJ2ZzLWxpc3Qtcm93JztcblxuICAgIGlmICh0aGlzLnJvd0luZGV4ICUgMiAhPT0gMCkgY2xzICs9ICcgZnMtbGlzdC1yb3ctb2RkJztcbiAgICBpZiAodGhpcy5yb3dJbmRleCAlIDIgPT09IDApIGNscyArPSAnIGZzLWxpc3Qtcm93LWV2ZW4nO1xuXG4gICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXApIGNscyArPSAnIGZzLWxpc3Qtcm93LWdyb3VwJztcblxuICAgIGlmICh0aGlzLnJvd0NsYXNzKSB7XG4gICAgICBjb25zdCByZXN1bHRDbGFzcyA9IHRoaXMucm93Q2xhc3ModGhpcy5yb3cuZGF0YSk7XG5cbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0Q2xhc3MgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNscyArPSBgICR7cmVzdWx0Q2xhc3N9YDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlc3VsdENsYXNzID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVzdWx0Q2xhc3MpO1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgIGlmIChyZXN1bHRDbGFzc1trXSA9PT0gdHJ1ZSkgY2xzICs9IGAgJHtrfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xzO1xuICB9XG5cbiAgcHVibGljIGdldCBkcmFnQ2VsbFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnJvdy5pc0dyb3VwO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdFJvd0V2ZW50cygpO1xuICAgIHRoaXMuaW5pdFNlbGVjdGlvbigpO1xuXG4gICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXApIHtcbiAgICAgIGlmICh0aGlzLnJvdyAmJiB0aGlzLnJvdy5pc0dyb3VwICYmIHRoaXMuZ3JvdXBBY3Rpb25zUmF3KSB7XG4gICAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMuZ3JvdXBBY3Rpb25zUmF3Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5yb3dBY3Rpb25zUmF3KSB7XG4gICAgICB0aGlzLnJvd0FjdGlvbnMgPSB0aGlzLnJvd0FjdGlvbnNSYXcubWFwKChhY3Rpb24pID0+IG5ldyBSb3dBY3Rpb24oYWN0aW9uKSk7XG5cbiAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMuX3Jvd0RpZmZlci5kaWZmKHRoaXMucm93KSkge1xuICAgICAgaWYgKHRoaXMucm93QWN0aW9ucykge1xuICAgICAgICB0aGlzLnJvd0FjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgYWN0aW9uLmNoZWNrU2hvd1N0YXR1cyh0aGlzLnJvdy5kYXRhLCB0aGlzLnJvd0luZGV4KTtcbiAgICAgICAgICBhY3Rpb24udXBkYXRlTGluayh0aGlzLnJvdy5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHsgbGlzdGVuZXIoKSB9KTtcblxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCByb3cgYnkgY2hlY2tib3hcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc2VsZWN0Um93KGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbkNoYW5nZSh0aGlzLnJvdywgZXZlbnQuY2hlY2tlZCk7XG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogVHJhY2sgQnkgZm9yIGltcHJvdmUgY2hhbmdlIGRldGVjdGlvblxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgZHJhZ1N0YXJ0KGV2ZW50KSB7XG4gICAgaWYgKHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICB0aGlzLl9kcmFnZ2FibGVMaXN0LmRyYWdTdGFydCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZXZlbnQgbGlzdGVuZXJzIGZvciByb3dcbiAgICovXG4gIHByaXZhdGUgaW5pdFJvd0V2ZW50cygpIHtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IGluIHRoaXMucm93RXZlbnRzKSB7XG4gICAgICBpZiAodGhpcy5yb3dFdmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVyID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgZXZlbnQsIChldnQpID0+IHtcbiAgICAgICAgICAvLyBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAvLyBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5yb3dFdmVudHNbZXZlbnRdKHtcbiAgICAgICAgICAgICAgZXZlbnQ6IGV2dCxcbiAgICAgICAgICAgICAgcm93OiB0aGlzLnJvdy5kYXRhLFxuICAgICAgICAgICAgICByb3dJbmRleDogdGhpcy5yb3dJbmRleFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIGluaXRTZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnJvdyAmJiB0aGlzLnNlbGVjdGlvbi5pc1Jvd1NlbGVjdGVkKHRoaXMucm93LmRhdGEpO1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25DaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIC8vIC8vIFdvdWxkIGxpa2UgdG8gcmVzcG9uZCBvbmx5IHdoZW4gY2hlY2tib3ggb24gdG9wIGlzIGNoYW5nZWRcbiAgICAgICAgICAvLyAvLyBvciB3YXMgY2xpY2tlZCBcIlNlbGVjdCBBbGxcIiBpbiBzZWxlY3Rpb24gZGlhbG9nXG4gICAgICAgICAgLy8gZmlsdGVyKCh7dHlwZX0pID0+IHtcbiAgICAgICAgICAvLyAgIHJldHVybiB0eXBlID09PSBTZWxlY3Rpb25DaGFuZ2VUeXBlLkFsbFZpc2libGVTZWxlY3Rpb25DaGFuZ2VcbiAgICAgICAgICAvLyAgICAgfHwgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbDtcbiAgICAgICAgICAvLyB9KSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnJvdyAmJiB0aGlzLnNlbGVjdGlvbi5pc1Jvd1NlbGVjdGVkKHRoaXMucm93LmRhdGEpO1xuXG4gICAgICAgICAgaWYgKHRoaXMucm93Py5pc0dyb3VwKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmlzR3JvdXBTZWxlY3RlZCh0aGlzLnJvdyk7XG5cbiAgICAgICAgICAgIGlmIChncm91cFNlbGVjdGlvbiA9PT0gJ2luZGV0ZXJtaW5hdGUnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gZ3JvdXBTZWxlY3Rpb247XG4gICAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpIHtcbiAgICB0aGlzLm1lbnVSb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy5pbmxpbmVSb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy5yZXN0b3JlQWN0aW9uID0gbnVsbDtcblxuICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblxuICAgICAgaWYgKCFhY3Rpb24uaXNTaG93bikgeyByZXR1cm4gfVxuXG4gICAgICBpZiAoYWN0aW9uLm1lbnUgJiYgIWFjdGlvbi5yZXN0b3JlKSB7XG4gICAgICAgIHRoaXMubWVudVJvd0FjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgfSBlbHNlIGlmICghYWN0aW9uLm1lbnUgJiYgIWFjdGlvbi5yZXN0b3JlKSB7XG4gICAgICAgIHRoaXMuaW5saW5lUm93QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi5yZXN0b3JlKSB7XG4gICAgICAgIHRoaXMucmVzdG9yZUFjdGlvbiA9IGFjdGlvbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19