@firestitch/list 9.9.7 → 9.9.11

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 +4 -4
  19. package/app/components/footer/footer-row/footer-row.component.d.ts +8 -8
  20. package/app/components/footer/footer.component.d.ts +8 -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 +5814 -5784
  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 +317 -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 +181 -172
  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 +18 -18
  82. package/esm2015/app/components/footer/footer-row/footer-row.component.js +35 -35
  83. package/esm2015/app/components/footer/footer.component.js +30 -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 +373 -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 -195
  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 +20 -20
  143. package/esm5/app/components/footer/footer-row/footer-row.component.js +38 -38
  144. package/esm5/app/components/footer/footer.component.js +31 -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 +5174 -5146
  187. package/fesm2015/firestitch-list.js.map +1 -1
  188. package/fesm5/firestitch-list.js +5799 -5769
  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,295 +1,295 @@
1
- import { __decorate, __metadata, __values } 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
- var FsRowComponent = /** @class */ (function () {
11
- function FsRowComponent(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
- Object.defineProperty(FsRowComponent.prototype, "rowCssClass", {
36
- get: function () {
37
- var e_1, _a;
38
- var cls = 'fs-list-row';
39
- if (this.rowIndex % 2 !== 0)
40
- cls += ' fs-list-row-odd';
41
- if (this.rowIndex % 2 === 0)
42
- cls += ' fs-list-row-even';
43
- if (this.row && this.row.isGroup)
44
- cls += ' fs-list-row-group';
45
- if (this.rowClass) {
46
- var resultClass = this.rowClass(this.row.data);
47
- if (typeof resultClass === 'string') {
48
- cls += " " + resultClass;
49
- }
50
- else if (typeof resultClass === 'object') {
51
- var keys = Object.keys(resultClass);
52
- try {
53
- for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
54
- var k = keys_1_1.value;
55
- if (resultClass[k] === true)
56
- cls += " " + k;
57
- }
58
- }
59
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
60
- finally {
61
- try {
62
- if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
63
- }
64
- finally { if (e_1) throw e_1.error; }
65
- }
66
- }
67
- }
68
- return cls;
69
- },
70
- enumerable: true,
71
- configurable: true
72
- });
73
- Object.defineProperty(FsRowComponent.prototype, "dragCellVisible", {
74
- get: function () {
75
- return !this.row.isGroup;
76
- },
77
- enumerable: true,
78
- configurable: true
79
- });
80
- FsRowComponent.prototype.ngOnInit = function () {
81
- this.initRowEvents();
82
- this.initSelection();
83
- if (this.row && this.row.isGroup) {
84
- if (this.row && this.row.isGroup && this.groupActionsRaw) {
85
- this.rowActions = this.groupActionsRaw.map(function (action) { return new RowAction(action); });
86
- this.filterActionsByCategories();
87
- }
88
- }
89
- else if (this.rowActionsRaw) {
90
- this.rowActions = this.rowActionsRaw.map(function (action) { return new RowAction(action); });
91
- this.filterActionsByCategories();
92
- }
93
- };
94
- FsRowComponent.prototype.ngDoCheck = function () {
95
- var _this = this;
96
- if (this._rowDiffer.diff(this.row)) {
97
- if (this.rowActions) {
98
- this.rowActions.forEach(function (action) {
99
- action.checkShowStatus(_this.row.data, _this.rowIndex);
100
- action.updateLink(_this.row.data);
101
- });
102
- this.filterActionsByCategories();
103
- }
104
- this._cdRef.markForCheck();
105
- }
106
- };
107
- FsRowComponent.prototype.ngOnDestroy = function () {
108
- this._eventListeners.forEach(function (listener) { listener(); });
109
- this._destroy$.next();
110
- this._destroy$.complete();
111
- };
112
- /**
113
- * Select row by checkbox
114
- * @param event
115
- */
116
- FsRowComponent.prototype.selectRow = function (event) {
117
- this.selection.rowSelectionChange(this.row, event.checked);
118
- this._cdRef.markForCheck();
119
- };
120
- /**
121
- * Track By for improve change detection
122
- * @param index
123
- */
124
- FsRowComponent.prototype.trackByFn = function (index) {
125
- return index;
126
- };
127
- FsRowComponent.prototype.dragStart = function (event) {
128
- if (this.reorderController.enabled) {
129
- event.preventDefault();
130
- event.stopPropagation();
131
- this._draggableList.dragStart(this.el.nativeElement);
132
- }
133
- };
134
- /**
135
- * Set event listeners for row
136
- */
137
- FsRowComponent.prototype.initRowEvents = function () {
138
- var _this = this;
139
- var _loop_1 = function (event_1) {
140
- if (this_1.rowEvents.hasOwnProperty(event_1)) {
141
- var listener = this_1._renderer.listen(this_1.el.nativeElement, event_1, function (evt) {
142
- // evt.preventDefault();
143
- // evt.stopPropagation();
144
- if (!_this.reorderController.enabled) {
145
- _this.rowEvents[event_1]({
146
- event: evt,
147
- row: _this.row.data,
148
- rowIndex: _this.rowIndex
149
- });
150
- }
151
- });
152
- this_1._eventListeners.push(listener);
153
- }
154
- };
155
- var this_1 = this;
156
- for (var event_1 in this.rowEvents) {
157
- _loop_1(event_1);
158
- }
159
- };
160
- /**
161
- * Subscribe to selection change events
162
- */
163
- FsRowComponent.prototype.initSelection = function () {
164
- var _this = this;
165
- if (this.selection) {
166
- this.selected = this.row && this.selection.isRowSelected(this.row.data);
167
- this.selection.selectionChange$
168
- .pipe(
169
- // // Would like to respond only when checkbox on top is changed
170
- // // or was clicked "Select All" in selection dialog
171
- // filter(({type}) => {
172
- // return type === SelectionChangeType.AllVisibleSelectionChange
173
- // || type === SelectionChangeType.SelectedAll;
174
- // }),
175
- takeUntil(this._destroy$))
176
- .subscribe(function () {
177
- var _a;
178
- _this.selected = _this.row && _this.selection.isRowSelected(_this.row.data);
179
- if ((_a = _this.row) === null || _a === void 0 ? void 0 : _a.isGroup) {
180
- var groupSelection = _this.selection.isGroupSelected(_this.row);
181
- if (groupSelection === 'indeterminate') {
182
- _this.selected = true;
183
- _this.indeterminateSelected = true;
184
- }
185
- else {
186
- _this.selected = groupSelection;
187
- _this.indeterminateSelected = false;
188
- }
189
- }
190
- _this._cdRef.markForCheck();
191
- });
192
- }
193
- };
194
- FsRowComponent.prototype.filterActionsByCategories = function () {
195
- var _this = this;
196
- this.menuRowActions = [];
197
- this.inlineRowActions = [];
198
- this.restoreAction = null;
199
- this.rowActions.forEach(function (action) {
200
- if (!action.isShown) {
201
- return;
202
- }
203
- if (action.menu && !action.restore) {
204
- _this.menuRowActions.push(action);
205
- }
206
- else if (!action.menu && !action.restore) {
207
- _this.inlineRowActions.push(action);
208
- }
209
- else if (action.restore) {
210
- _this.restoreAction = action;
211
- }
212
- });
213
- };
214
- FsRowComponent.ctorParameters = function () { return [
215
- { type: ElementRef },
216
- { type: ReorderController },
217
- { type: ChangeDetectorRef },
218
- { type: KeyValueDiffers },
219
- { type: Renderer2 },
220
- { type: FsListDraggableListDirective }
221
- ]; };
222
- __decorate([
223
- HostBinding('attr.role'),
224
- __metadata("design:type", Object)
225
- ], FsRowComponent.prototype, "role", void 0);
226
- __decorate([
227
- Input(),
228
- __metadata("design:type", Row)
229
- ], FsRowComponent.prototype, "row", void 0);
230
- __decorate([
231
- Input(),
232
- __metadata("design:type", Array)
233
- ], FsRowComponent.prototype, "rowActionsRaw", void 0);
234
- __decorate([
235
- Input(),
236
- __metadata("design:type", Array)
237
- ], FsRowComponent.prototype, "groupActionsRaw", void 0);
238
- __decorate([
239
- Input(),
240
- __metadata("design:type", Object)
241
- ], FsRowComponent.prototype, "hasRowActions", void 0);
242
- __decorate([
243
- Input(),
244
- __metadata("design:type", Object)
245
- ], FsRowComponent.prototype, "rowEvents", void 0);
246
- __decorate([
247
- Input(),
248
- __metadata("design:type", Object)
249
- ], FsRowComponent.prototype, "rowClass", void 0);
250
- __decorate([
251
- Input(),
252
- __metadata("design:type", Object)
253
- ], FsRowComponent.prototype, "restoreMode", void 0);
254
- __decorate([
255
- Input(),
256
- __metadata("design:type", Number)
257
- ], FsRowComponent.prototype, "rowIndex", void 0);
258
- __decorate([
259
- Input(),
260
- __metadata("design:type", Array)
261
- ], FsRowComponent.prototype, "columns", void 0);
262
- __decorate([
263
- Input(),
264
- __metadata("design:type", SelectionController)
265
- ], FsRowComponent.prototype, "selection", void 0);
266
- __decorate([
267
- Input(),
268
- __metadata("design:type", EventEmitter)
269
- ], FsRowComponent.prototype, "rowRemoved", void 0);
270
- __decorate([
271
- ViewChildren('td'),
272
- __metadata("design:type", Object)
273
- ], FsRowComponent.prototype, "cellRefs", void 0);
274
- __decorate([
275
- HostBinding('class'),
276
- __metadata("design:type", Object),
277
- __metadata("design:paramtypes", [])
278
- ], FsRowComponent.prototype, "rowCssClass", null);
279
- FsRowComponent = __decorate([
280
- Component({
281
- selector: '[fs-list-row]',
282
- 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",
283
- changeDetection: ChangeDetectionStrategy.OnPush
284
- }),
285
- __metadata("design:paramtypes", [ElementRef,
286
- ReorderController,
287
- ChangeDetectorRef,
288
- KeyValueDiffers,
289
- Renderer2,
290
- FsListDraggableListDirective])
291
- ], FsRowComponent);
292
- return FsRowComponent;
293
- }());
294
- export { FsRowComponent };
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2xpc3QvIiwic291cmNlcyI6WyJhcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsU0FBUyxFQUNULE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxFQUNMLGNBQWMsRUFDZCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixlQUFlLEVBQ2hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQVEzRztJQXlDRSx3QkFDUyxFQUFjLEVBQ2QsaUJBQW9DLEVBQ25DLE1BQXlCLEVBQ3pCLFFBQXlCLEVBQ3pCLFNBQW9CLEVBQ3BCLGNBQTRDO1FBTDdDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsbUJBQWMsR0FBZCxjQUFj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QUE0QjtJQUUzQjtRQUFSLEtBQUssRUFBRTs7b0RBQXlCO0lBQ3hCO1FBQVIsS0FBSyxFQUFFOzttREFBMEI7SUFDekI7UUFBUixLQUFLLEVBQUU7a0NBQW1CLG1CQUFtQjtxREFBQztJQUV0QztRQUFSLEtBQUssRUFBRTtrQ0FBb0IsWUFBWTtzREFBTTtJQUk5QztRQURDLFlBQVksQ0FBQyxJQUFJLENBQUM7O29EQUNIO0lBZ0NoQjtRQURDLFdBQVcsQ0FBQyxPQUFPLENBQUM7OztxREF1QnBCO0lBM0VVLGNBQWM7UUFMMUIsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGVBQWU7WUFDekIsbTBFQUFpQztZQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtTQUNoRCxDQUFDO3lDQTJDYSxVQUFVO1lBQ0ssaUJBQWlCO1lBQzNCLGlCQUFpQjtZQUNmLGVBQWU7WUFDZCxTQUFTO1lBQ0osNEJBQTRCO09BL0MzQyxjQUFjLENBaU8xQjtJQUFELHFCQUFDO0NBQUEsQUFqT0QsSUFpT0M7U0FqT1ksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgS2V5VmFsdWVEaWZmZXJzLFxyXG4gIFJlbmRlcmVyMixcclxuICBDb21wb25lbnQsXHJcbiAgRG9DaGVjayxcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBLZXlWYWx1ZURpZmZlcixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIFJlb3JkZXJDb250cm9sbGVyLFxyXG4gIFJlb3JkZXJQb3NpdGlvbixcclxuICBSZW9yZGVyU3RyYXRlZ3lcclxufSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XHJcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcclxuaW1wb3J0IHsgUm93QWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jvdy1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBSb3cgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcm93JztcclxuaW1wb3J0IHsgRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLWxpc3QvZHJhZ2dhYmxlLWxpc3QuZGlyZWN0aXZlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1tmcy1saXN0LXJvd10nLFxyXG4gIHRlbXBsYXRlVXJsOiAncm93LmNvbXBvbmVudC5odG1sJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnNSb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2ssIE9uRGVzdHJveSB7XHJcblxyXG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcclxuICBwdWJsaWMgcm9sZSA9ICdyb3cnO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgcm93OiBSb3c7XHJcbiAgQElucHV0KCkgcHVibGljIHJvd0FjdGlvbnNSYXc6IGFueSBbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBncm91cEFjdGlvbnNSYXc6IGFueSBbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBoYXNSb3dBY3Rpb25zID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJvd0V2ZW50cyA9IHt9O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3dDbGFzcztcclxuICBASW5wdXQoKSBwdWJsaWMgcmVzdG9yZU1vZGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHJvd0luZGV4OiBudW1iZXI7XHJcbiAgQElucHV0KCkgcHVibGljIGNvbHVtbnM6IENvbHVtbltdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3dSZW1vdmVkOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ3RkJylcclxuICBwdWJsaWMgY2VsbFJlZnM7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBSZW9yZGVyUG9zaXRpb24gPSBSZW9yZGVyUG9zaXRpb247XHJcbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneTtcclxuXHJcbiAgcHVibGljIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XHJcblxyXG4gIHB1YmxpYyBtZW51Um93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgaW5saW5lUm93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgcmVzdG9yZUFjdGlvbjogUm93QWN0aW9uO1xyXG5cclxuICBwdWJsaWMgc2VsZWN0ZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgaW5kZXRlcm1pbmF0ZVNlbGVjdGVkOiBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3Jvd0RpZmZlcjogS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+O1xyXG5cclxuICBwcml2YXRlIF9ldmVudExpc3RlbmVycyA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIHJlb3JkZXJDb250cm9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcclxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2RpZmZlcnM6IEtleVZhbHVlRGlmZmVycyxcclxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIF9kcmFnZ2FibGVMaXN0OiBGc0xpc3REcmFnZ2FibGVMaXN0RGlyZWN0aXZlLFxyXG4gICkge1xyXG4gICAgdGhpcy5fcm93RGlmZmVyID0gX2RpZmZlcnMuZmluZCh7fSkuY3JlYXRlKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcclxuICBnZXQgcm93Q3NzQ2xhc3MoKSB7XHJcbiAgICBsZXQgY2xzID0gJ2ZzLWxpc3Qtcm93JztcclxuXHJcbiAgICBpZiAodGhpcy5yb3dJbmRleCAlIDIgIT09IDApIGNscyArPSAnIGZzLWxpc3Qtcm93LW9kZCc7XHJcbiAgICBpZiAodGhpcy5yb3dJbmRleCAlIDIgPT09IDApIGNscyArPSAnIGZzLWxpc3Qtcm93LWV2ZW4nO1xyXG5cclxuICAgIGlmICh0aGlzLnJvdyAmJiB0aGlzLnJvdy5pc0dyb3VwKSBjbHMgKz0gJyBmcy1saXN0LXJvdy1ncm91cCc7XHJcblxyXG4gICAgaWYgKHRoaXMucm93Q2xhc3MpIHtcclxuICAgICAgY29uc3QgcmVzdWx0Q2xhc3MgPSB0aGlzLnJvd0NsYXNzKHRoaXMucm93LmRhdGEpO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiByZXN1bHRDbGFzcyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjbHMgKz0gYCAke3Jlc3VsdENsYXNzfWA7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlc3VsdENsYXNzID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhyZXN1bHRDbGFzcyk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcclxuICAgICAgICAgIGlmIChyZXN1bHRDbGFzc1trXSA9PT0gdHJ1ZSkgY2xzICs9IGAgJHtrfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNscztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZHJhZ0NlbGxWaXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLnJvdy5pc0dyb3VwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0Um93RXZlbnRzKCk7XHJcbiAgICB0aGlzLmluaXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5yb3cgJiYgdGhpcy5yb3cuaXNHcm91cCkge1xyXG4gICAgICBpZiAodGhpcy5yb3cgJiYgdGhpcy5yb3cuaXNHcm91cCAmJiB0aGlzLmdyb3VwQWN0aW9uc1Jhdykge1xyXG4gICAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMuZ3JvdXBBY3Rpb25zUmF3Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xyXG5cclxuICAgICAgICB0aGlzLmZpbHRlckFjdGlvbnNCeUNhdGVnb3JpZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJvd0FjdGlvbnNSYXcpIHtcclxuICAgICAgdGhpcy5yb3dBY3Rpb25zID0gdGhpcy5yb3dBY3Rpb25zUmF3Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xyXG5cclxuICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdEb0NoZWNrKCkge1xyXG4gICAgaWYgKHRoaXMuX3Jvd0RpZmZlci5kaWZmKHRoaXMucm93KSkge1xyXG4gICAgICBpZiAodGhpcy5yb3dBY3Rpb25zKSB7XHJcbiAgICAgICAgdGhpcy5yb3dBY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xyXG4gICAgICAgICAgYWN0aW9uLmNoZWNrU2hvd1N0YXR1cyh0aGlzLnJvdy5kYXRhLCB0aGlzLnJvd0luZGV4KTtcclxuICAgICAgICAgIGFjdGlvbi51cGRhdGVMaW5rKHRoaXMucm93LmRhdGEpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiB7IGxpc3RlbmVyKCkgfSk7XHJcblxyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCByb3cgYnkgY2hlY2tib3hcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBwdWJsaWMgc2VsZWN0Um93KGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb24ucm93U2VsZWN0aW9uQ2hhbmdlKHRoaXMucm93LCBldmVudC5jaGVja2VkKTtcclxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhY2sgQnkgZm9yIGltcHJvdmUgY2hhbmdlIGRldGVjdGlvblxyXG4gICAqIEBwYXJhbSBpbmRleFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXgpIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcmFnU3RhcnQoZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICB0aGlzLl9kcmFnZ2FibGVMaXN0LmRyYWdTdGFydCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGV2ZW50IGxpc3RlbmVycyBmb3Igcm93XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0Um93RXZlbnRzKCkge1xyXG4gICAgZm9yIChjb25zdCBldmVudCBpbiB0aGlzLnJvd0V2ZW50cykge1xyXG4gICAgICBpZiAodGhpcy5yb3dFdmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XHJcbiAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4odGhpcy5lbC5uYXRpdmVFbGVtZW50LCBldmVudCwgKGV2dCkgPT4ge1xyXG4gICAgICAgICAgLy8gZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAvLyBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgICAgaWYgKCF0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3dFdmVudHNbZXZlbnRdKHtcclxuICAgICAgICAgICAgICBldmVudDogZXZ0LFxyXG4gICAgICAgICAgICAgIHJvdzogdGhpcy5yb3cuZGF0YSxcclxuICAgICAgICAgICAgICByb3dJbmRleDogdGhpcy5yb3dJbmRleFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZSB0byBzZWxlY3Rpb24gY2hhbmdlIGV2ZW50c1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdFNlbGVjdGlvbigpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMucm93ICYmIHRoaXMuc2VsZWN0aW9uLmlzUm93U2VsZWN0ZWQodGhpcy5yb3cuZGF0YSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25DaGFuZ2UkXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAvLyAvLyBXb3VsZCBsaWtlIHRvIHJlc3BvbmQgb25seSB3aGVuIGNoZWNrYm94IG9uIHRvcCBpcyBjaGFuZ2VkXHJcbiAgICAgICAgICAvLyAvLyBvciB3YXMgY2xpY2tlZCBcIlNlbGVjdCBBbGxcIiBpbiBzZWxlY3Rpb24gZGlhbG9nXHJcbiAgICAgICAgICAvLyBmaWx0ZXIoKHt0eXBlfSkgPT4ge1xyXG4gICAgICAgICAgLy8gICByZXR1cm4gdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5BbGxWaXNpYmxlU2VsZWN0aW9uQ2hhbmdlXHJcbiAgICAgICAgICAvLyAgICAgfHwgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbDtcclxuICAgICAgICAgIC8vIH0pLFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5yb3cgJiYgdGhpcy5zZWxlY3Rpb24uaXNSb3dTZWxlY3RlZCh0aGlzLnJvdy5kYXRhKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5yb3c/LmlzR3JvdXApIHtcclxuICAgICAgICAgICAgY29uc3QgZ3JvdXBTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5pc0dyb3VwU2VsZWN0ZWQodGhpcy5yb3cpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGdyb3VwU2VsZWN0aW9uID09PSAnaW5kZXRlcm1pbmF0ZScpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGdyb3VwU2VsZWN0aW9uO1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpIHtcclxuICAgIHRoaXMubWVudVJvd0FjdGlvbnMgPSBbXTtcclxuICAgIHRoaXMuaW5saW5lUm93QWN0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5yZXN0b3JlQWN0aW9uID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLnJvd0FjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XHJcblxyXG4gICAgICBpZiAoIWFjdGlvbi5pc1Nob3duKSB7IHJldHVybiB9XHJcblxyXG4gICAgICBpZiAoYWN0aW9uLm1lbnUgJiYgIWFjdGlvbi5yZXN0b3JlKSB7XHJcbiAgICAgICAgdGhpcy5tZW51Um93QWN0aW9ucy5wdXNoKGFjdGlvbik7XHJcbiAgICAgIH0gZWxzZSBpZiAoIWFjdGlvbi5tZW51ICYmICFhY3Rpb24ucmVzdG9yZSkge1xyXG4gICAgICAgIHRoaXMuaW5saW5lUm93QWN0aW9ucy5wdXNoKGFjdGlvbik7XHJcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnJlc3RvcmUpIHtcclxuICAgICAgICB0aGlzLnJlc3RvcmVBY3Rpb24gPSBhY3Rpb247XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
1
+ import { __decorate, __metadata, __values } 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
+ var FsRowComponent = /** @class */ (function () {
11
+ function FsRowComponent(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
+ Object.defineProperty(FsRowComponent.prototype, "rowCssClass", {
36
+ get: function () {
37
+ var e_1, _a;
38
+ var cls = 'fs-list-row';
39
+ if (this.rowIndex % 2 !== 0)
40
+ cls += ' fs-list-row-odd';
41
+ if (this.rowIndex % 2 === 0)
42
+ cls += ' fs-list-row-even';
43
+ if (this.row && this.row.isGroup)
44
+ cls += ' fs-list-row-group';
45
+ if (this.rowClass) {
46
+ var resultClass = this.rowClass(this.row.data);
47
+ if (typeof resultClass === 'string') {
48
+ cls += " " + resultClass;
49
+ }
50
+ else if (typeof resultClass === 'object') {
51
+ var keys = Object.keys(resultClass);
52
+ try {
53
+ for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
54
+ var k = keys_1_1.value;
55
+ if (resultClass[k] === true)
56
+ cls += " " + k;
57
+ }
58
+ }
59
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
60
+ finally {
61
+ try {
62
+ if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
63
+ }
64
+ finally { if (e_1) throw e_1.error; }
65
+ }
66
+ }
67
+ }
68
+ return cls;
69
+ },
70
+ enumerable: true,
71
+ configurable: true
72
+ });
73
+ Object.defineProperty(FsRowComponent.prototype, "dragCellVisible", {
74
+ get: function () {
75
+ return !this.row.isGroup;
76
+ },
77
+ enumerable: true,
78
+ configurable: true
79
+ });
80
+ FsRowComponent.prototype.ngOnInit = function () {
81
+ this.initRowEvents();
82
+ this.initSelection();
83
+ if (this.row && this.row.isGroup) {
84
+ if (this.row && this.row.isGroup && this.groupActionsRaw) {
85
+ this.rowActions = this.groupActionsRaw.map(function (action) { return new RowAction(action); });
86
+ this.filterActionsByCategories();
87
+ }
88
+ }
89
+ else if (this.rowActionsRaw) {
90
+ this.rowActions = this.rowActionsRaw.map(function (action) { return new RowAction(action); });
91
+ this.filterActionsByCategories();
92
+ }
93
+ };
94
+ FsRowComponent.prototype.ngDoCheck = function () {
95
+ var _this = this;
96
+ if (this._rowDiffer.diff(this.row)) {
97
+ if (this.rowActions) {
98
+ this.rowActions.forEach(function (action) {
99
+ action.checkShowStatus(_this.row.data, _this.rowIndex);
100
+ action.updateLink(_this.row.data);
101
+ });
102
+ this.filterActionsByCategories();
103
+ }
104
+ this._cdRef.markForCheck();
105
+ }
106
+ };
107
+ FsRowComponent.prototype.ngOnDestroy = function () {
108
+ this._eventListeners.forEach(function (listener) { listener(); });
109
+ this._destroy$.next();
110
+ this._destroy$.complete();
111
+ };
112
+ /**
113
+ * Select row by checkbox
114
+ * @param event
115
+ */
116
+ FsRowComponent.prototype.selectRow = function (event) {
117
+ this.selection.rowSelectionChange(this.row, event.checked);
118
+ this._cdRef.markForCheck();
119
+ };
120
+ /**
121
+ * Track By for improve change detection
122
+ * @param index
123
+ */
124
+ FsRowComponent.prototype.trackByFn = function (index) {
125
+ return index;
126
+ };
127
+ FsRowComponent.prototype.dragStart = function (event) {
128
+ if (this.reorderController.enabled) {
129
+ event.preventDefault();
130
+ event.stopPropagation();
131
+ this._draggableList.dragStart(this.el.nativeElement);
132
+ }
133
+ };
134
+ /**
135
+ * Set event listeners for row
136
+ */
137
+ FsRowComponent.prototype.initRowEvents = function () {
138
+ var _this = this;
139
+ var _loop_1 = function (event_1) {
140
+ if (this_1.rowEvents.hasOwnProperty(event_1)) {
141
+ var listener = this_1._renderer.listen(this_1.el.nativeElement, event_1, function (evt) {
142
+ // evt.preventDefault();
143
+ // evt.stopPropagation();
144
+ if (!_this.reorderController.enabled) {
145
+ _this.rowEvents[event_1]({
146
+ event: evt,
147
+ row: _this.row.data,
148
+ rowIndex: _this.rowIndex
149
+ });
150
+ }
151
+ });
152
+ this_1._eventListeners.push(listener);
153
+ }
154
+ };
155
+ var this_1 = this;
156
+ for (var event_1 in this.rowEvents) {
157
+ _loop_1(event_1);
158
+ }
159
+ };
160
+ /**
161
+ * Subscribe to selection change events
162
+ */
163
+ FsRowComponent.prototype.initSelection = function () {
164
+ var _this = this;
165
+ if (this.selection) {
166
+ this.selected = this.row && this.selection.isRowSelected(this.row.data);
167
+ this.selection.selectionChange$
168
+ .pipe(
169
+ // // Would like to respond only when checkbox on top is changed
170
+ // // or was clicked "Select All" in selection dialog
171
+ // filter(({type}) => {
172
+ // return type === SelectionChangeType.AllVisibleSelectionChange
173
+ // || type === SelectionChangeType.SelectedAll;
174
+ // }),
175
+ takeUntil(this._destroy$))
176
+ .subscribe(function () {
177
+ var _a;
178
+ _this.selected = _this.row && _this.selection.isRowSelected(_this.row.data);
179
+ if ((_a = _this.row) === null || _a === void 0 ? void 0 : _a.isGroup) {
180
+ var groupSelection = _this.selection.isGroupSelected(_this.row);
181
+ if (groupSelection === 'indeterminate') {
182
+ _this.selected = true;
183
+ _this.indeterminateSelected = true;
184
+ }
185
+ else {
186
+ _this.selected = groupSelection;
187
+ _this.indeterminateSelected = false;
188
+ }
189
+ }
190
+ _this._cdRef.markForCheck();
191
+ });
192
+ }
193
+ };
194
+ FsRowComponent.prototype.filterActionsByCategories = function () {
195
+ var _this = this;
196
+ this.menuRowActions = [];
197
+ this.inlineRowActions = [];
198
+ this.restoreAction = null;
199
+ this.rowActions.forEach(function (action) {
200
+ if (!action.isShown) {
201
+ return;
202
+ }
203
+ if (action.menu && !action.restore) {
204
+ _this.menuRowActions.push(action);
205
+ }
206
+ else if (!action.menu && !action.restore) {
207
+ _this.inlineRowActions.push(action);
208
+ }
209
+ else if (action.restore) {
210
+ _this.restoreAction = action;
211
+ }
212
+ });
213
+ };
214
+ FsRowComponent.ctorParameters = function () { return [
215
+ { type: ElementRef },
216
+ { type: ReorderController },
217
+ { type: ChangeDetectorRef },
218
+ { type: KeyValueDiffers },
219
+ { type: Renderer2 },
220
+ { type: FsListDraggableListDirective }
221
+ ]; };
222
+ __decorate([
223
+ HostBinding('attr.role'),
224
+ __metadata("design:type", Object)
225
+ ], FsRowComponent.prototype, "role", void 0);
226
+ __decorate([
227
+ Input(),
228
+ __metadata("design:type", Row)
229
+ ], FsRowComponent.prototype, "row", void 0);
230
+ __decorate([
231
+ Input(),
232
+ __metadata("design:type", Array)
233
+ ], FsRowComponent.prototype, "rowActionsRaw", void 0);
234
+ __decorate([
235
+ Input(),
236
+ __metadata("design:type", Array)
237
+ ], FsRowComponent.prototype, "groupActionsRaw", void 0);
238
+ __decorate([
239
+ Input(),
240
+ __metadata("design:type", Object)
241
+ ], FsRowComponent.prototype, "hasRowActions", void 0);
242
+ __decorate([
243
+ Input(),
244
+ __metadata("design:type", Object)
245
+ ], FsRowComponent.prototype, "rowEvents", void 0);
246
+ __decorate([
247
+ Input(),
248
+ __metadata("design:type", Object)
249
+ ], FsRowComponent.prototype, "rowClass", void 0);
250
+ __decorate([
251
+ Input(),
252
+ __metadata("design:type", Object)
253
+ ], FsRowComponent.prototype, "restoreMode", void 0);
254
+ __decorate([
255
+ Input(),
256
+ __metadata("design:type", Number)
257
+ ], FsRowComponent.prototype, "rowIndex", void 0);
258
+ __decorate([
259
+ Input(),
260
+ __metadata("design:type", Array)
261
+ ], FsRowComponent.prototype, "columns", void 0);
262
+ __decorate([
263
+ Input(),
264
+ __metadata("design:type", SelectionController)
265
+ ], FsRowComponent.prototype, "selection", void 0);
266
+ __decorate([
267
+ Input(),
268
+ __metadata("design:type", EventEmitter)
269
+ ], FsRowComponent.prototype, "rowRemoved", void 0);
270
+ __decorate([
271
+ ViewChildren('td'),
272
+ __metadata("design:type", Object)
273
+ ], FsRowComponent.prototype, "cellRefs", void 0);
274
+ __decorate([
275
+ HostBinding('class'),
276
+ __metadata("design:type", Object),
277
+ __metadata("design:paramtypes", [])
278
+ ], FsRowComponent.prototype, "rowCssClass", null);
279
+ FsRowComponent = __decorate([
280
+ Component({
281
+ selector: '[fs-list-row]',
282
+ 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",
283
+ changeDetection: ChangeDetectionStrategy.OnPush
284
+ }),
285
+ __metadata("design:paramtypes", [ElementRef,
286
+ ReorderController,
287
+ ChangeDetectorRef,
288
+ KeyValueDiffers,
289
+ Renderer2,
290
+ FsListDraggableListDirective])
291
+ ], FsRowComponent);
292
+ return FsRowComponent;
293
+ }());
294
+ export { FsRowComponent };
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2xpc3QvIiwic291cmNlcyI6WyJhcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsU0FBUyxFQUNULE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxFQUNMLGNBQWMsRUFDZCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixlQUFlLEVBQ2hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQVEzRztJQXlDRSx3QkFDUyxFQUFjLEVBQ2QsaUJBQW9DLEVBQ25DLE1BQXlCLEVBQ3pCLFFBQXlCLEVBQ3pCLFNBQW9CLEVBQ3BCLGNBQTRDO1FBTDdDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsbUJBQWMsR0FBZCxjQUFj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QUE0QjtJQUUzQjtRQUFSLEtBQUssRUFBRTs7b0RBQXlCO0lBQ3hCO1FBQVIsS0FBSyxFQUFFOzttREFBMEI7SUFDekI7UUFBUixLQUFLLEVBQUU7a0NBQW1CLG1CQUFtQjtxREFBQztJQUV0QztRQUFSLEtBQUssRUFBRTtrQ0FBb0IsWUFBWTtzREFBTTtJQUk5QztRQURDLFlBQVksQ0FBQyxJQUFJLENBQUM7O29EQUNIO0lBZ0NoQjtRQURDLFdBQVcsQ0FBQyxPQUFPLENBQUM7OztxREF1QnBCO0lBM0VVLGNBQWM7UUFMMUIsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGVBQWU7WUFDekIseXNFQUFpQztZQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtTQUNoRCxDQUFDO3lDQTJDYSxVQUFVO1lBQ0ssaUJBQWlCO1lBQzNCLGlCQUFpQjtZQUNmLGVBQWU7WUFDZCxTQUFTO1lBQ0osNEJBQTRCO09BL0MzQyxjQUFjLENBaU8xQjtJQUFELHFCQUFDO0NBQUEsQUFqT0QsSUFpT0M7U0FqT1ksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBLZXlWYWx1ZURpZmZlcnMsXG4gIFJlbmRlcmVyMixcbiAgQ29tcG9uZW50LFxuICBEb0NoZWNrLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIEtleVZhbHVlRGlmZmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHtcbiAgUmVvcmRlckNvbnRyb2xsZXIsXG4gIFJlb3JkZXJQb3NpdGlvbixcbiAgUmVvcmRlclN0cmF0ZWd5XG59IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yb3ctYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yb3cnO1xuaW1wb3J0IHsgRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLWxpc3QvZHJhZ2dhYmxlLWxpc3QuZGlyZWN0aXZlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbZnMtbGlzdC1yb3ddJyxcbiAgdGVtcGxhdGVVcmw6ICdyb3cuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGc1Jvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjaywgT25EZXN0cm95IHtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIHB1YmxpYyByb2xlID0gJ3Jvdyc7XG5cbiAgQElucHV0KCkgcHVibGljIHJvdzogUm93O1xuICBASW5wdXQoKSBwdWJsaWMgcm93QWN0aW9uc1JhdzogYW55IFtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBncm91cEFjdGlvbnNSYXc6IGFueSBbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzUm93QWN0aW9ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcm93RXZlbnRzID0ge307XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dDbGFzcztcbiAgQElucHV0KCkgcHVibGljIHJlc3RvcmVNb2RlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcHVibGljIHJvd0luZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb2x1bW5zOiBDb2x1bW5bXTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0aW9uQ29udHJvbGxlcjtcblxuICBASW5wdXQoKSBwdWJsaWMgcm93UmVtb3ZlZDogRXZlbnRFbWl0dGVyPGFueT47XG5cblxuICBAVmlld0NoaWxkcmVuKCd0ZCcpXG4gIHB1YmxpYyBjZWxsUmVmcztcblxuICBwdWJsaWMgcmVhZG9ubHkgUmVvcmRlclBvc2l0aW9uID0gUmVvcmRlclBvc2l0aW9uO1xuICBwdWJsaWMgcmVhZG9ubHkgUmVvcmRlclN0cmF0ZWd5ID0gUmVvcmRlclN0cmF0ZWd5O1xuXG4gIHB1YmxpYyByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBtZW51Um93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgcHVibGljIGlubGluZVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIHB1YmxpYyByZXN0b3JlQWN0aW9uOiBSb3dBY3Rpb247XG5cbiAgcHVibGljIHNlbGVjdGVkID0gZmFsc2U7XG4gIHB1YmxpYyBpbmRldGVybWluYXRlU2VsZWN0ZWQ6IGJvb2xlYW4gfCAnaW5kZXRlcm1pbmF0ZScgPSBmYWxzZTtcblxuICBwcml2YXRlIF9yb3dEaWZmZXI6IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PjtcblxuICBwcml2YXRlIF9ldmVudExpc3RlbmVycyA9IFtdO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIHJlb3JkZXJDb250cm9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBfZHJhZ2dhYmxlTGlzdDogRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSxcbiAgKSB7XG4gICAgdGhpcy5fcm93RGlmZmVyID0gX2RpZmZlcnMuZmluZCh7fSkuY3JlYXRlKCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IHJvd0Nzc0NsYXNzKCkge1xuICAgIGxldCBjbHMgPSAnZnMtbGlzdC1yb3cnO1xuXG4gICAgaWYgKHRoaXMucm93SW5kZXggJSAyICE9PSAwKSBjbHMgKz0gJyBmcy1saXN0LXJvdy1vZGQnO1xuICAgIGlmICh0aGlzLnJvd0luZGV4ICUgMiA9PT0gMCkgY2xzICs9ICcgZnMtbGlzdC1yb3ctZXZlbic7XG5cbiAgICBpZiAodGhpcy5yb3cgJiYgdGhpcy5yb3cuaXNHcm91cCkgY2xzICs9ICcgZnMtbGlzdC1yb3ctZ3JvdXAnO1xuXG4gICAgaWYgKHRoaXMucm93Q2xhc3MpIHtcbiAgICAgIGNvbnN0IHJlc3VsdENsYXNzID0gdGhpcy5yb3dDbGFzcyh0aGlzLnJvdy5kYXRhKTtcblxuICAgICAgaWYgKHR5cGVvZiByZXN1bHRDbGFzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2xzICs9IGAgJHtyZXN1bHRDbGFzc31gO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzdWx0Q2xhc3MgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhyZXN1bHRDbGFzcyk7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdENsYXNzW2tdID09PSB0cnVlKSBjbHMgKz0gYCAke2t9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRyYWdDZWxsVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucm93LmlzR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0Um93RXZlbnRzKCk7XG4gICAgdGhpcy5pbml0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5yb3cgJiYgdGhpcy5yb3cuaXNHcm91cCkge1xuICAgICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXAgJiYgdGhpcy5ncm91cEFjdGlvbnNSYXcpIHtcbiAgICAgICAgdGhpcy5yb3dBY3Rpb25zID0gdGhpcy5ncm91cEFjdGlvbnNSYXcubWFwKChhY3Rpb24pID0+IG5ldyBSb3dBY3Rpb24oYWN0aW9uKSk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnJvd0FjdGlvbnNSYXcpIHtcbiAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMucm93QWN0aW9uc1Jhdy5tYXAoKGFjdGlvbikgPT4gbmV3IFJvd0FjdGlvbihhY3Rpb24pKTtcblxuICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5fcm93RGlmZmVyLmRpZmYodGhpcy5yb3cpKSB7XG4gICAgICBpZiAodGhpcy5yb3dBY3Rpb25zKSB7XG4gICAgICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBhY3Rpb24uY2hlY2tTaG93U3RhdHVzKHRoaXMucm93LmRhdGEsIHRoaXMucm93SW5kZXgpO1xuICAgICAgICAgIGFjdGlvbi51cGRhdGVMaW5rKHRoaXMucm93LmRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9ldmVudExpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4geyBsaXN0ZW5lcigpIH0pO1xuXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IHJvdyBieSBjaGVja2JveFxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RSb3coZXZlbnQ6IE1hdENoZWNrYm94Q2hhbmdlKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24ucm93U2VsZWN0aW9uQ2hhbmdlKHRoaXMucm93LCBldmVudC5jaGVja2VkKTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFjayBCeSBmb3IgaW1wcm92ZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHVibGljIHRyYWNrQnlGbihpbmRleCkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBkcmFnU3RhcnQoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIHRoaXMuX2RyYWdnYWJsZUxpc3QuZHJhZ1N0YXJ0KHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBldmVudCBsaXN0ZW5lcnMgZm9yIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBpbml0Um93RXZlbnRzKCkge1xuICAgIGZvciAoY29uc3QgZXZlbnQgaW4gdGhpcy5yb3dFdmVudHMpIHtcbiAgICAgIGlmICh0aGlzLnJvd0V2ZW50cy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcbiAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4odGhpcy5lbC5uYXRpdmVFbGVtZW50LCBldmVudCwgKGV2dCkgPT4ge1xuICAgICAgICAgIC8vIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIC8vIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgIGlmICghdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJvd0V2ZW50c1tldmVudF0oe1xuICAgICAgICAgICAgICBldmVudDogZXZ0LFxuICAgICAgICAgICAgICByb3c6IHRoaXMucm93LmRhdGEsXG4gICAgICAgICAgICAgIHJvd0luZGV4OiB0aGlzLnJvd0luZGV4XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gc2VsZWN0aW9uIGNoYW5nZSBldmVudHNcbiAgICovXG4gIHByaXZhdGUgaW5pdFNlbGVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcblxuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMucm93ICYmIHRoaXMuc2VsZWN0aW9uLmlzUm93U2VsZWN0ZWQodGhpcy5yb3cuZGF0YSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGlvbkNoYW5nZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgLy8gLy8gV291bGQgbGlrZSB0byByZXNwb25kIG9ubHkgd2hlbiBjaGVja2JveCBvbiB0b3AgaXMgY2hhbmdlZFxuICAgICAgICAgIC8vIC8vIG9yIHdhcyBjbGlja2VkIFwiU2VsZWN0IEFsbFwiIGluIHNlbGVjdGlvbiBkaWFsb2dcbiAgICAgICAgICAvLyBmaWx0ZXIoKHt0eXBlfSkgPT4ge1xuICAgICAgICAgIC8vICAgcmV0dXJuIHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZVxuICAgICAgICAgIC8vICAgICB8fCB0eXBlID09PSBTZWxlY3Rpb25DaGFuZ2VUeXBlLlNlbGVjdGVkQWxsO1xuICAgICAgICAgIC8vIH0pLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMucm93ICYmIHRoaXMuc2VsZWN0aW9uLmlzUm93U2VsZWN0ZWQodGhpcy5yb3cuZGF0YSk7XG5cbiAgICAgICAgICBpZiAodGhpcy5yb3c/LmlzR3JvdXApIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwU2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uaXNHcm91cFNlbGVjdGVkKHRoaXMucm93KTtcblxuICAgICAgICAgICAgaWYgKGdyb3VwU2VsZWN0aW9uID09PSAnaW5kZXRlcm1pbmF0ZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBncm91cFNlbGVjdGlvbjtcbiAgICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCkge1xuICAgIHRoaXMubWVudVJvd0FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLmlubGluZVJvd0FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLnJlc3RvcmVBY3Rpb24gPSBudWxsO1xuXG4gICAgdGhpcy5yb3dBY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuXG4gICAgICBpZiAoIWFjdGlvbi5pc1Nob3duKSB7IHJldHVybiB9XG5cbiAgICAgIGlmIChhY3Rpb24ubWVudSAmJiAhYWN0aW9uLnJlc3RvcmUpIHtcbiAgICAgICAgdGhpcy5tZW51Um93QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKCFhY3Rpb24ubWVudSAmJiAhYWN0aW9uLnJlc3RvcmUpIHtcbiAgICAgICAgdGhpcy5pbmxpbmVSb3dBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnJlc3RvcmUpIHtcbiAgICAgICAgdGhpcy5yZXN0b3JlQWN0aW9uID0gYWN0aW9uO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=