@swimlane/ngx-datatable 17.0.0 → 20.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/README.md +0 -1
  2. package/assets/icons.css +39 -19
  3. package/bundles/swimlane-ngx-datatable.umd.js +1103 -1564
  4. package/bundles/swimlane-ngx-datatable.umd.js.map +1 -1
  5. package/esm2015/lib/components/body/body-cell.component.js +40 -86
  6. package/esm2015/lib/components/body/body-group-header-template.directive.js +8 -10
  7. package/esm2015/lib/components/body/body-group-header.directive.js +11 -19
  8. package/esm2015/lib/components/body/body-row-wrapper.component.js +32 -54
  9. package/esm2015/lib/components/body/body-row.component.js +38 -75
  10. package/esm2015/lib/components/body/body.component.js +61 -137
  11. package/esm2015/lib/components/body/progress-bar.component.js +10 -12
  12. package/esm2015/lib/components/body/scroller.component.js +21 -33
  13. package/esm2015/lib/components/body/selection.component.js +19 -35
  14. package/esm2015/lib/components/body/summary/summary-row.component.js +19 -29
  15. package/esm2015/lib/components/columns/column-cell.directive.js +6 -8
  16. package/esm2015/lib/components/columns/column-header.directive.js +6 -8
  17. package/esm2015/lib/components/columns/column.directive.js +36 -92
  18. package/esm2015/lib/components/columns/tree.directive.js +6 -8
  19. package/esm2015/lib/components/datatable.component.js +85 -214
  20. package/esm2015/lib/components/footer/footer-template.directive.js +6 -8
  21. package/esm2015/lib/components/footer/footer.component.js +28 -54
  22. package/esm2015/lib/components/footer/footer.directive.js +16 -34
  23. package/esm2015/lib/components/footer/pager.component.js +23 -39
  24. package/esm2015/lib/components/header/header-cell.component.js +45 -80
  25. package/esm2015/lib/components/header/header.component.js +43 -80
  26. package/esm2015/lib/components/row-detail/row-detail-template.directive.js +8 -10
  27. package/esm2015/lib/components/row-detail/row-detail.directive.js +11 -19
  28. package/esm2015/lib/directives/draggable.directive.js +16 -30
  29. package/esm2015/lib/directives/long-press.directive.js +16 -34
  30. package/esm2015/lib/directives/orderable.directive.js +12 -19
  31. package/esm2015/lib/directives/resizeable.directive.js +19 -29
  32. package/esm2015/lib/directives/visibility.directive.js +11 -15
  33. package/esm2015/lib/events.js +1 -1
  34. package/esm2015/lib/ngx-datatable.module.js +54 -57
  35. package/esm2015/lib/services/column-changes.service.js +6 -8
  36. package/esm2015/lib/services/dimensions-helper.service.js +6 -8
  37. package/esm2015/lib/services/scrollbar-helper.service.js +6 -9
  38. package/esm2015/lib/types/click.type.js +1 -1
  39. package/esm2015/lib/types/column-mode.type.js +1 -1
  40. package/esm2015/lib/types/contextmenu.type.js +1 -1
  41. package/esm2015/lib/types/selection.type.js +1 -1
  42. package/esm2015/lib/types/sort-direction.type.js +1 -1
  43. package/esm2015/lib/types/sort-prop-dir.type.js +2 -1
  44. package/esm2015/lib/types/sort.type.js +1 -1
  45. package/esm2015/lib/types/table-column.type.js +2 -1
  46. package/esm2015/lib/utils/camel-case.js +1 -1
  47. package/esm2015/lib/utils/column-helper.js +1 -1
  48. package/esm2015/lib/utils/column-prop-getters.js +1 -1
  49. package/esm2015/lib/utils/column.js +1 -1
  50. package/esm2015/lib/utils/elm-from-point.js +1 -1
  51. package/esm2015/lib/utils/id.js +1 -1
  52. package/esm2015/lib/utils/keys.js +1 -1
  53. package/esm2015/lib/utils/math.js +1 -1
  54. package/esm2015/lib/utils/prefixes.js +1 -1
  55. package/esm2015/lib/utils/row-height-cache.js +1 -1
  56. package/esm2015/lib/utils/selection.js +1 -1
  57. package/esm2015/lib/utils/sort.js +1 -1
  58. package/esm2015/lib/utils/throttle.js +1 -1
  59. package/esm2015/lib/utils/translate.js +1 -1
  60. package/esm2015/lib/utils/tree.js +1 -1
  61. package/esm2015/public-api.js +3 -1
  62. package/esm2015/swimlane-ngx-datatable.js +1 -1
  63. package/fesm2015/swimlane-ngx-datatable.js +682 -1248
  64. package/fesm2015/swimlane-ngx-datatable.js.map +1 -1
  65. package/lib/components/header/header-cell.component.d.ts +2 -0
  66. package/lib/components/header/header.component.d.ts +1 -0
  67. package/lib/utils/throttle.d.ts +1 -1
  68. package/package.json +10 -10
  69. package/swimlane-ngx-datatable.metadata.json +1 -1
  70. package/bundles/swimlane-ngx-datatable.umd.min.js +0 -16
  71. package/bundles/swimlane-ngx-datatable.umd.min.js.map +0 -1
  72. package/esm5/lib/components/body/body-cell.component.js +0 -438
  73. package/esm5/lib/components/body/body-group-header-template.directive.js +0 -18
  74. package/esm5/lib/components/body/body-group-header.directive.js +0 -67
  75. package/esm5/lib/components/body/body-row-wrapper.component.js +0 -114
  76. package/esm5/lib/components/body/body-row.component.js +0 -260
  77. package/esm5/lib/components/body/body.component.js +0 -775
  78. package/esm5/lib/components/body/progress-bar.component.js +0 -16
  79. package/esm5/lib/components/body/scroller.component.js +0 -97
  80. package/esm5/lib/components/body/selection.component.js +0 -159
  81. package/esm5/lib/components/body/summary/summary-row.component.js +0 -81
  82. package/esm5/lib/components/columns/column-cell.directive.js +0 -16
  83. package/esm5/lib/components/columns/column-header.directive.js +0 -16
  84. package/esm5/lib/components/columns/column.directive.js +0 -134
  85. package/esm5/lib/components/columns/tree.directive.js +0 -16
  86. package/esm5/lib/components/datatable.component.js +0 -1147
  87. package/esm5/lib/components/footer/footer-template.directive.js +0 -16
  88. package/esm5/lib/components/footer/footer.component.js +0 -74
  89. package/esm5/lib/components/footer/footer.directive.js +0 -47
  90. package/esm5/lib/components/footer/pager.component.js +0 -135
  91. package/esm5/lib/components/header/header-cell.component.js +0 -253
  92. package/esm5/lib/components/header/header.component.js +0 -317
  93. package/esm5/lib/components/row-detail/row-detail-template.directive.js +0 -18
  94. package/esm5/lib/components/row-detail/row-detail.directive.js +0 -68
  95. package/esm5/lib/directives/draggable.directive.js +0 -118
  96. package/esm5/lib/directives/long-press.directive.js +0 -132
  97. package/esm5/lib/directives/orderable.directive.js +0 -161
  98. package/esm5/lib/directives/resizeable.directive.js +0 -101
  99. package/esm5/lib/directives/visibility.directive.js +0 -69
  100. package/esm5/lib/events.js +0 -7
  101. package/esm5/lib/ngx-datatable.module.js +0 -103
  102. package/esm5/lib/services/column-changes.service.js +0 -28
  103. package/esm5/lib/services/dimensions-helper.service.js +0 -19
  104. package/esm5/lib/services/scrollbar-helper.service.js +0 -38
  105. package/esm5/lib/types/click.type.js +0 -6
  106. package/esm5/lib/types/column-mode.type.js +0 -7
  107. package/esm5/lib/types/contextmenu.type.js +0 -6
  108. package/esm5/lib/types/selection.type.js +0 -9
  109. package/esm5/lib/types/sort-direction.type.js +0 -6
  110. package/esm5/lib/types/sort-prop-dir.type.js +0 -1
  111. package/esm5/lib/types/sort.type.js +0 -6
  112. package/esm5/lib/types/table-column.type.js +0 -1
  113. package/esm5/lib/utils/camel-case.js +0 -28
  114. package/esm5/lib/utils/column-helper.js +0 -128
  115. package/esm5/lib/utils/column-prop-getters.js +0 -96
  116. package/esm5/lib/utils/column.js +0 -103
  117. package/esm5/lib/utils/elm-from-point.js +0 -38
  118. package/esm5/lib/utils/id.js +0 -8
  119. package/esm5/lib/utils/keys.js +0 -10
  120. package/esm5/lib/utils/math.js +0 -224
  121. package/esm5/lib/utils/prefixes.js +0 -40
  122. package/esm5/lib/utils/row-height-cache.js +0 -137
  123. package/esm5/lib/utils/selection.js +0 -40
  124. package/esm5/lib/utils/sort.js +0 -139
  125. package/esm5/lib/utils/throttle.js +0 -60
  126. package/esm5/lib/utils/translate.js +0 -25
  127. package/esm5/lib/utils/tree.js +0 -106
  128. package/esm5/public-api.js +0 -62
  129. package/esm5/swimlane-ngx-datatable.js +0 -5
  130. package/fesm5/swimlane-ngx-datatable.js +0 -6088
  131. package/fesm5/swimlane-ngx-datatable.js.map +0 -1
  132. package/lib/test/jasmine-matchers.d.ts +0 -12
@@ -1,438 +0,0 @@
1
- import { __decorate, __values } from "tslib";
2
- import { Component, Input, PipeTransform, HostBinding, ViewChild, ChangeDetectorRef, Output, EventEmitter, HostListener, ElementRef, ViewContainerRef, OnDestroy, DoCheck, ChangeDetectionStrategy } from '@angular/core';
3
- import { SortDirection } from '../../types/sort-direction.type';
4
- import { Keys } from '../../utils/keys';
5
- var DataTableBodyCellComponent = /** @class */ (function () {
6
- function DataTableBodyCellComponent(element, cd) {
7
- this.cd = cd;
8
- this.activate = new EventEmitter();
9
- this.treeAction = new EventEmitter();
10
- this.isFocused = false;
11
- this.onCheckboxChangeFn = this.onCheckboxChange.bind(this);
12
- this.activateFn = this.activate.emit.bind(this.activate);
13
- this.cellContext = {
14
- onCheckboxChangeFn: this.onCheckboxChangeFn,
15
- activateFn: this.activateFn,
16
- row: this.row,
17
- group: this.group,
18
- value: this.value,
19
- column: this.column,
20
- rowHeight: this.rowHeight,
21
- isSelected: this.isSelected,
22
- rowIndex: this.rowIndex,
23
- treeStatus: this.treeStatus,
24
- onTreeAction: this.onTreeAction.bind(this)
25
- };
26
- this._element = element.nativeElement;
27
- }
28
- Object.defineProperty(DataTableBodyCellComponent.prototype, "group", {
29
- get: function () {
30
- return this._group;
31
- },
32
- set: function (group) {
33
- this._group = group;
34
- this.cellContext.group = group;
35
- this.checkValueUpdates();
36
- this.cd.markForCheck();
37
- },
38
- enumerable: true,
39
- configurable: true
40
- });
41
- Object.defineProperty(DataTableBodyCellComponent.prototype, "rowHeight", {
42
- get: function () {
43
- return this._rowHeight;
44
- },
45
- set: function (val) {
46
- this._rowHeight = val;
47
- this.cellContext.rowHeight = val;
48
- this.checkValueUpdates();
49
- this.cd.markForCheck();
50
- },
51
- enumerable: true,
52
- configurable: true
53
- });
54
- Object.defineProperty(DataTableBodyCellComponent.prototype, "isSelected", {
55
- get: function () {
56
- return this._isSelected;
57
- },
58
- set: function (val) {
59
- this._isSelected = val;
60
- this.cellContext.isSelected = val;
61
- this.cd.markForCheck();
62
- },
63
- enumerable: true,
64
- configurable: true
65
- });
66
- Object.defineProperty(DataTableBodyCellComponent.prototype, "expanded", {
67
- get: function () {
68
- return this._expanded;
69
- },
70
- set: function (val) {
71
- this._expanded = val;
72
- this.cellContext.expanded = val;
73
- this.cd.markForCheck();
74
- },
75
- enumerable: true,
76
- configurable: true
77
- });
78
- Object.defineProperty(DataTableBodyCellComponent.prototype, "rowIndex", {
79
- get: function () {
80
- return this._rowIndex;
81
- },
82
- set: function (val) {
83
- this._rowIndex = val;
84
- this.cellContext.rowIndex = val;
85
- this.checkValueUpdates();
86
- this.cd.markForCheck();
87
- },
88
- enumerable: true,
89
- configurable: true
90
- });
91
- Object.defineProperty(DataTableBodyCellComponent.prototype, "column", {
92
- get: function () {
93
- return this._column;
94
- },
95
- set: function (column) {
96
- this._column = column;
97
- this.cellContext.column = column;
98
- this.checkValueUpdates();
99
- this.cd.markForCheck();
100
- },
101
- enumerable: true,
102
- configurable: true
103
- });
104
- Object.defineProperty(DataTableBodyCellComponent.prototype, "row", {
105
- get: function () {
106
- return this._row;
107
- },
108
- set: function (row) {
109
- this._row = row;
110
- this.cellContext.row = row;
111
- this.checkValueUpdates();
112
- this.cd.markForCheck();
113
- },
114
- enumerable: true,
115
- configurable: true
116
- });
117
- Object.defineProperty(DataTableBodyCellComponent.prototype, "sorts", {
118
- get: function () {
119
- return this._sorts;
120
- },
121
- set: function (val) {
122
- this._sorts = val;
123
- this.calcSortDir = this.calcSortDir(val);
124
- },
125
- enumerable: true,
126
- configurable: true
127
- });
128
- Object.defineProperty(DataTableBodyCellComponent.prototype, "treeStatus", {
129
- get: function () {
130
- return this._treeStatus;
131
- },
132
- set: function (status) {
133
- if (status !== 'collapsed' && status !== 'expanded' && status !== 'loading' && status !== 'disabled') {
134
- this._treeStatus = 'collapsed';
135
- }
136
- else {
137
- this._treeStatus = status;
138
- }
139
- this.cellContext.treeStatus = this._treeStatus;
140
- this.checkValueUpdates();
141
- this.cd.markForCheck();
142
- },
143
- enumerable: true,
144
- configurable: true
145
- });
146
- Object.defineProperty(DataTableBodyCellComponent.prototype, "columnCssClasses", {
147
- get: function () {
148
- var e_1, _a;
149
- var cls = 'datatable-body-cell';
150
- if (this.column.cellClass) {
151
- if (typeof this.column.cellClass === 'string') {
152
- cls += ' ' + this.column.cellClass;
153
- }
154
- else if (typeof this.column.cellClass === 'function') {
155
- var res = this.column.cellClass({
156
- row: this.row,
157
- group: this.group,
158
- column: this.column,
159
- value: this.value,
160
- rowHeight: this.rowHeight
161
- });
162
- if (typeof res === 'string') {
163
- cls += ' ' + res;
164
- }
165
- else if (typeof res === 'object') {
166
- var keys = Object.keys(res);
167
- try {
168
- for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
169
- var k = keys_1_1.value;
170
- if (res[k] === true) {
171
- cls += " " + k;
172
- }
173
- }
174
- }
175
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
176
- finally {
177
- try {
178
- if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
179
- }
180
- finally { if (e_1) throw e_1.error; }
181
- }
182
- }
183
- }
184
- }
185
- if (!this.sortDir) {
186
- cls += ' sort-active';
187
- }
188
- if (this.isFocused) {
189
- cls += ' active';
190
- }
191
- if (this.sortDir === SortDirection.asc) {
192
- cls += ' sort-asc';
193
- }
194
- if (this.sortDir === SortDirection.desc) {
195
- cls += ' sort-desc';
196
- }
197
- return cls;
198
- },
199
- enumerable: true,
200
- configurable: true
201
- });
202
- Object.defineProperty(DataTableBodyCellComponent.prototype, "width", {
203
- get: function () {
204
- return this.column.width;
205
- },
206
- enumerable: true,
207
- configurable: true
208
- });
209
- Object.defineProperty(DataTableBodyCellComponent.prototype, "minWidth", {
210
- get: function () {
211
- return this.column.minWidth;
212
- },
213
- enumerable: true,
214
- configurable: true
215
- });
216
- Object.defineProperty(DataTableBodyCellComponent.prototype, "maxWidth", {
217
- get: function () {
218
- return this.column.maxWidth;
219
- },
220
- enumerable: true,
221
- configurable: true
222
- });
223
- Object.defineProperty(DataTableBodyCellComponent.prototype, "height", {
224
- get: function () {
225
- var height = this.rowHeight;
226
- if (isNaN(height)) {
227
- return height;
228
- }
229
- return height + 'px';
230
- },
231
- enumerable: true,
232
- configurable: true
233
- });
234
- DataTableBodyCellComponent.prototype.ngDoCheck = function () {
235
- this.checkValueUpdates();
236
- };
237
- DataTableBodyCellComponent.prototype.ngOnDestroy = function () {
238
- if (this.cellTemplate) {
239
- this.cellTemplate.clear();
240
- }
241
- };
242
- DataTableBodyCellComponent.prototype.checkValueUpdates = function () {
243
- var value = '';
244
- if (!this.row || !this.column) {
245
- value = '';
246
- }
247
- else {
248
- var val = this.column.$$valueGetter(this.row, this.column.prop);
249
- var userPipe = this.column.pipe;
250
- if (userPipe) {
251
- value = userPipe.transform(val);
252
- }
253
- else if (value !== undefined) {
254
- value = val;
255
- }
256
- }
257
- if (this.value !== value) {
258
- this.value = value;
259
- this.cellContext.value = value;
260
- this.sanitizedValue = value !== null && value !== undefined ? this.stripHtml(value) : value;
261
- this.cd.markForCheck();
262
- }
263
- };
264
- DataTableBodyCellComponent.prototype.onFocus = function () {
265
- this.isFocused = true;
266
- };
267
- DataTableBodyCellComponent.prototype.onBlur = function () {
268
- this.isFocused = false;
269
- };
270
- DataTableBodyCellComponent.prototype.onClick = function (event) {
271
- this.activate.emit({
272
- type: 'click',
273
- event: event,
274
- row: this.row,
275
- group: this.group,
276
- rowHeight: this.rowHeight,
277
- column: this.column,
278
- value: this.value,
279
- cellElement: this._element
280
- });
281
- };
282
- DataTableBodyCellComponent.prototype.onDblClick = function (event) {
283
- this.activate.emit({
284
- type: 'dblclick',
285
- event: event,
286
- row: this.row,
287
- group: this.group,
288
- rowHeight: this.rowHeight,
289
- column: this.column,
290
- value: this.value,
291
- cellElement: this._element
292
- });
293
- };
294
- DataTableBodyCellComponent.prototype.onKeyDown = function (event) {
295
- var keyCode = event.keyCode;
296
- var isTargetCell = event.target === this._element;
297
- var isAction = keyCode === Keys.return ||
298
- keyCode === Keys.down ||
299
- keyCode === Keys.up ||
300
- keyCode === Keys.left ||
301
- keyCode === Keys.right;
302
- if (isAction && isTargetCell) {
303
- event.preventDefault();
304
- event.stopPropagation();
305
- this.activate.emit({
306
- type: 'keydown',
307
- event: event,
308
- row: this.row,
309
- group: this.group,
310
- rowHeight: this.rowHeight,
311
- column: this.column,
312
- value: this.value,
313
- cellElement: this._element
314
- });
315
- }
316
- };
317
- DataTableBodyCellComponent.prototype.onCheckboxChange = function (event) {
318
- this.activate.emit({
319
- type: 'checkbox',
320
- event: event,
321
- row: this.row,
322
- group: this.group,
323
- rowHeight: this.rowHeight,
324
- column: this.column,
325
- value: this.value,
326
- cellElement: this._element,
327
- treeStatus: 'collapsed'
328
- });
329
- };
330
- DataTableBodyCellComponent.prototype.calcSortDir = function (sorts) {
331
- var _this = this;
332
- if (!sorts) {
333
- return;
334
- }
335
- var sort = sorts.find(function (s) {
336
- return s.prop === _this.column.prop;
337
- });
338
- if (sort) {
339
- return sort.dir;
340
- }
341
- };
342
- DataTableBodyCellComponent.prototype.stripHtml = function (html) {
343
- if (!html.replace) {
344
- return html;
345
- }
346
- return html.replace(/<\/?[^>]+(>|$)/g, '');
347
- };
348
- DataTableBodyCellComponent.prototype.onTreeAction = function () {
349
- this.treeAction.emit(this.row);
350
- };
351
- DataTableBodyCellComponent.prototype.calcLeftMargin = function (column, row) {
352
- var levelIndent = column.treeLevelIndent != null ? column.treeLevelIndent : 50;
353
- return column.isTreeColumn ? row.level * levelIndent : 0;
354
- };
355
- DataTableBodyCellComponent.ctorParameters = function () { return [
356
- { type: ElementRef },
357
- { type: ChangeDetectorRef }
358
- ]; };
359
- __decorate([
360
- Input()
361
- ], DataTableBodyCellComponent.prototype, "displayCheck", void 0);
362
- __decorate([
363
- Input()
364
- ], DataTableBodyCellComponent.prototype, "group", null);
365
- __decorate([
366
- Input()
367
- ], DataTableBodyCellComponent.prototype, "rowHeight", null);
368
- __decorate([
369
- Input()
370
- ], DataTableBodyCellComponent.prototype, "isSelected", null);
371
- __decorate([
372
- Input()
373
- ], DataTableBodyCellComponent.prototype, "expanded", null);
374
- __decorate([
375
- Input()
376
- ], DataTableBodyCellComponent.prototype, "rowIndex", null);
377
- __decorate([
378
- Input()
379
- ], DataTableBodyCellComponent.prototype, "column", null);
380
- __decorate([
381
- Input()
382
- ], DataTableBodyCellComponent.prototype, "row", null);
383
- __decorate([
384
- Input()
385
- ], DataTableBodyCellComponent.prototype, "sorts", null);
386
- __decorate([
387
- Input()
388
- ], DataTableBodyCellComponent.prototype, "treeStatus", null);
389
- __decorate([
390
- Output()
391
- ], DataTableBodyCellComponent.prototype, "activate", void 0);
392
- __decorate([
393
- Output()
394
- ], DataTableBodyCellComponent.prototype, "treeAction", void 0);
395
- __decorate([
396
- ViewChild('cellTemplate', { read: ViewContainerRef, static: true })
397
- ], DataTableBodyCellComponent.prototype, "cellTemplate", void 0);
398
- __decorate([
399
- HostBinding('class')
400
- ], DataTableBodyCellComponent.prototype, "columnCssClasses", null);
401
- __decorate([
402
- HostBinding('style.width.px')
403
- ], DataTableBodyCellComponent.prototype, "width", null);
404
- __decorate([
405
- HostBinding('style.minWidth.px')
406
- ], DataTableBodyCellComponent.prototype, "minWidth", null);
407
- __decorate([
408
- HostBinding('style.maxWidth.px')
409
- ], DataTableBodyCellComponent.prototype, "maxWidth", null);
410
- __decorate([
411
- HostBinding('style.height')
412
- ], DataTableBodyCellComponent.prototype, "height", null);
413
- __decorate([
414
- HostListener('focus')
415
- ], DataTableBodyCellComponent.prototype, "onFocus", null);
416
- __decorate([
417
- HostListener('blur')
418
- ], DataTableBodyCellComponent.prototype, "onBlur", null);
419
- __decorate([
420
- HostListener('click', ['$event'])
421
- ], DataTableBodyCellComponent.prototype, "onClick", null);
422
- __decorate([
423
- HostListener('dblclick', ['$event'])
424
- ], DataTableBodyCellComponent.prototype, "onDblClick", null);
425
- __decorate([
426
- HostListener('keydown', ['$event'])
427
- ], DataTableBodyCellComponent.prototype, "onKeyDown", null);
428
- DataTableBodyCellComponent = __decorate([
429
- Component({
430
- selector: 'datatable-body-cell',
431
- changeDetection: ChangeDetectionStrategy.OnPush,
432
- template: "\n <div class=\"datatable-body-cell-label\" [style.margin-left.px]=\"calcLeftMargin(column, row)\">\n <label\n *ngIf=\"column.checkboxable && (!displayCheck || displayCheck(row, column, value))\"\n class=\"datatable-checkbox\"\n >\n <input type=\"checkbox\" [checked]=\"isSelected\" (click)=\"onCheckboxChange($event)\" />\n </label>\n <ng-container *ngIf=\"column.isTreeColumn\">\n <button\n *ngIf=\"!column.treeToggleTemplate\"\n class=\"datatable-tree-button\"\n [disabled]=\"treeStatus === 'disabled'\"\n (click)=\"onTreeAction()\"\n >\n <span>\n <i *ngIf=\"treeStatus === 'loading'\" class=\"icon datatable-icon-collapse\"></i>\n <i *ngIf=\"treeStatus === 'collapsed'\" class=\"icon datatable-icon-up\"></i>\n <i *ngIf=\"treeStatus === 'expanded' || treeStatus === 'disabled'\" class=\"icon datatable-icon-down\"></i>\n </span>\n </button>\n <ng-template\n *ngIf=\"column.treeToggleTemplate\"\n [ngTemplateOutlet]=\"column.treeToggleTemplate\"\n [ngTemplateOutletContext]=\"{ cellContext: cellContext }\"\n >\n </ng-template>\n </ng-container>\n\n <span *ngIf=\"!column.cellTemplate\" [title]=\"sanitizedValue\" [innerHTML]=\"value\"> </span>\n <ng-template\n #cellTemplate\n *ngIf=\"column.cellTemplate\"\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"cellContext\"\n >\n </ng-template>\n </div>\n "
433
- })
434
- ], DataTableBodyCellComponent);
435
- return DataTableBodyCellComponent;
436
- }());
437
- export { DataTableBodyCellComponent };
438
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYm9keS9ib2R5LWNlbGwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxhQUFhLEVBQ2IsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFlBQVksRUFDWixZQUFZLEVBQ1osVUFBVSxFQUNWLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsT0FBTyxFQUNQLHVCQUF1QixFQUN4QixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBK0N4QztJQWdORSxvQ0FBWSxPQUFtQixFQUFVLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBMUdwRCxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFakQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBMkU3RCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHVCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsZUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEQsZ0JBQVcsR0FBUTtZQUNqQixrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsS0FB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RUFDckM7SUFHL0I7UUFEQyxXQUFXLENBQUMsT0FBTyxDQUFDO3NFQXlDcEI7SUFHRDtRQURDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQzsyREFHN0I7SUFHRDtRQURDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQzs4REFHaEM7SUFHRDtRQURDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQzs4REFHaEM7SUFHRDtRQURDLFdBQVcsQ0FBQyxjQUFjLENBQUM7NERBTzNCO0lBeUVEO1FBREMsWUFBWSxDQUFDLE9BQU8sQ0FBQzs2REFHckI7SUFHRDtRQURDLFlBQVksQ0FBQyxNQUFNLENBQUM7NERBR3BCO0lBR0Q7UUFEQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7NkRBWWpDO0lBR0Q7UUFEQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7Z0VBWXBDO0lBR0Q7UUFEQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7K0RBMkJuQztJQXZUVSwwQkFBMEI7UUEzQ3RDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxxQkFBcUI7WUFDL0IsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07WUFDL0MsUUFBUSxFQUFFLHVqREFzQ1Q7U0FDRixDQUFDO09BQ1csMEJBQTBCLENBb1d0QztJQUFELGlDQUFDO0NBQUEsQUFwV0QsSUFvV0M7U0FwV1ksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgUGlwZVRyYW5zZm9ybSxcbiAgSG9zdEJpbmRpbmcsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIE9uRGVzdHJveSxcbiAgRG9DaGVjayxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGFibGUtY29sdW1uLnR5cGUnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL3NvcnQtZGlyZWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgS2V5cyB9IGZyb20gJy4uLy4uL3V0aWxzL2tleXMnO1xuXG5leHBvcnQgdHlwZSBUcmVlU3RhdHVzID0gJ2NvbGxhcHNlZCcgfCAnZXhwYW5kZWQnIHwgJ2xvYWRpbmcnIHwgJ2Rpc2FibGVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YXRhYmxlLWJvZHktY2VsbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJkYXRhdGFibGUtYm9keS1jZWxsLWxhYmVsXCIgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cImNhbGNMZWZ0TWFyZ2luKGNvbHVtbiwgcm93KVwiPlxuICAgICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiY29sdW1uLmNoZWNrYm94YWJsZSAmJiAoIWRpc3BsYXlDaGVjayB8fCBkaXNwbGF5Q2hlY2socm93LCBjb2x1bW4sIHZhbHVlKSlcIlxuICAgICAgICBjbGFzcz1cImRhdGF0YWJsZS1jaGVja2JveFwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCIgKGNsaWNrKT1cIm9uQ2hlY2tib3hDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICA8L2xhYmVsPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5pc1RyZWVDb2x1bW5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGVcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YXRhYmxlLXRyZWUtYnV0dG9uXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwidHJlZVN0YXR1cyA9PT0gJ2Rpc2FibGVkJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVHJlZUFjdGlvbigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJ0cmVlU3RhdHVzID09PSAnbG9hZGluZydcIiBjbGFzcz1cImljb24gZGF0YXRhYmxlLWljb24tY29sbGFwc2VcIj48L2k+XG4gICAgICAgICAgICA8aSAqbmdJZj1cInRyZWVTdGF0dXMgPT09ICdjb2xsYXBzZWQnXCIgY2xhc3M9XCJpY29uIGRhdGF0YWJsZS1pY29uLXVwXCI+PC9pPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJ0cmVlU3RhdHVzID09PSAnZXhwYW5kZWQnIHx8IHRyZWVTdGF0dXMgPT09ICdkaXNhYmxlZCdcIiBjbGFzcz1cImljb24gZGF0YXRhYmxlLWljb24tZG93blwiPjwvaT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAqbmdJZj1cImNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNlbGxDb250ZXh0OiBjZWxsQ29udGV4dCB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbHVtbi5jZWxsVGVtcGxhdGVcIiBbdGl0bGVdPVwic2FuaXRpemVkVmFsdWVcIiBbaW5uZXJIVE1MXT1cInZhbHVlXCI+IDwvc3Bhbj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAjY2VsbFRlbXBsYXRlXG4gICAgICAgICpuZ0lmPVwiY29sdW1uLmNlbGxUZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5jZWxsVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY2VsbENvbnRleHRcIlxuICAgICAgPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVCb2R5Q2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGRpc3BsYXlDaGVjazogKHJvdzogYW55LCBjb2x1bW4/OiBUYWJsZUNvbHVtbiwgdmFsdWU/OiBhbnkpID0+IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc2V0IGdyb3VwKGdyb3VwOiBhbnkpIHtcbiAgICB0aGlzLl9ncm91cCA9IGdyb3VwO1xuICAgIHRoaXMuY2VsbENvbnRleHQuZ3JvdXAgPSBncm91cDtcbiAgICB0aGlzLmNoZWNrVmFsdWVVcGRhdGVzKCk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBncm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JvdXA7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcm93SGVpZ2h0KHZhbDogbnVtYmVyKSB7XG4gICAgdGhpcy5fcm93SGVpZ2h0ID0gdmFsO1xuICAgIHRoaXMuY2VsbENvbnRleHQucm93SGVpZ2h0ID0gdmFsO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHJvd0hlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm93SGVpZ2h0O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGlzU2VsZWN0ZWQodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNTZWxlY3RlZCA9IHZhbDtcbiAgICB0aGlzLmNlbGxDb250ZXh0LmlzU2VsZWN0ZWQgPSB2YWw7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBpc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1NlbGVjdGVkO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGV4cGFuZGVkKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4cGFuZGVkID0gdmFsO1xuICAgIHRoaXMuY2VsbENvbnRleHQuZXhwYW5kZWQgPSB2YWw7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWQ7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcm93SW5kZXgodmFsOiBudW1iZXIpIHtcbiAgICB0aGlzLl9yb3dJbmRleCA9IHZhbDtcbiAgICB0aGlzLmNlbGxDb250ZXh0LnJvd0luZGV4ID0gdmFsO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHJvd0luZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd0luZGV4O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGNvbHVtbihjb2x1bW46IFRhYmxlQ29sdW1uKSB7XG4gICAgdGhpcy5fY29sdW1uID0gY29sdW1uO1xuICAgIHRoaXMuY2VsbENvbnRleHQuY29sdW1uID0gY29sdW1uO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbigpOiBUYWJsZUNvbHVtbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbjtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCByb3cocm93OiBhbnkpIHtcbiAgICB0aGlzLl9yb3cgPSByb3c7XG4gICAgdGhpcy5jZWxsQ29udGV4dC5yb3cgPSByb3c7XG4gICAgdGhpcy5jaGVja1ZhbHVlVXBkYXRlcygpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcm93KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzb3J0cyh2YWw6IGFueVtdKSB7XG4gICAgdGhpcy5fc29ydHMgPSB2YWw7XG4gICAgdGhpcy5jYWxjU29ydERpciA9IHRoaXMuY2FsY1NvcnREaXIodmFsKTtcbiAgfVxuXG4gIGdldCBzb3J0cygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnRzO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRyZWVTdGF0dXMoc3RhdHVzOiBUcmVlU3RhdHVzKSB7XG4gICAgaWYgKHN0YXR1cyAhPT0gJ2NvbGxhcHNlZCcgJiYgc3RhdHVzICE9PSAnZXhwYW5kZWQnICYmIHN0YXR1cyAhPT0gJ2xvYWRpbmcnICYmIHN0YXR1cyAhPT0gJ2Rpc2FibGVkJykge1xuICAgICAgdGhpcy5fdHJlZVN0YXR1cyA9ICdjb2xsYXBzZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90cmVlU3RhdHVzID0gc3RhdHVzO1xuICAgIH1cbiAgICB0aGlzLmNlbGxDb250ZXh0LnRyZWVTdGF0dXMgPSB0aGlzLl90cmVlU3RhdHVzO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHRyZWVTdGF0dXMoKTogVHJlZVN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuX3RyZWVTdGF0dXM7XG4gIH1cblxuICBAT3V0cHV0KCkgYWN0aXZhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKSB0cmVlQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdjZWxsVGVtcGxhdGUnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBjZWxsVGVtcGxhdGU6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBjb2x1bW5Dc3NDbGFzc2VzKCk6IGFueSB7XG4gICAgbGV0IGNscyA9ICdkYXRhdGFibGUtYm9keS1jZWxsJztcbiAgICBpZiAodGhpcy5jb2x1bW4uY2VsbENsYXNzKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29sdW1uLmNlbGxDbGFzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2xzICs9ICcgJyArIHRoaXMuY29sdW1uLmNlbGxDbGFzcztcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuY29sdW1uLmNlbGxDbGFzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLmNvbHVtbi5jZWxsQ2xhc3Moe1xuICAgICAgICAgIHJvdzogdGhpcy5yb3csXG4gICAgICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXG4gICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgICByb3dIZWlnaHQ6IHRoaXMucm93SGVpZ2h0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcmVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNscyArPSAnICcgKyByZXM7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVzKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKHJlc1trXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBjbHMgKz0gYCAke2t9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0aGlzLnNvcnREaXIpIHtcbiAgICAgIGNscyArPSAnIHNvcnQtYWN0aXZlJztcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICBjbHMgKz0gJyBhY3RpdmUnO1xuICAgIH1cbiAgICBpZiAodGhpcy5zb3J0RGlyID09PSBTb3J0RGlyZWN0aW9uLmFzYykge1xuICAgICAgY2xzICs9ICcgc29ydC1hc2MnO1xuICAgIH1cbiAgICBpZiAodGhpcy5zb3J0RGlyID09PSBTb3J0RGlyZWN0aW9uLmRlc2MpIHtcbiAgICAgIGNscyArPSAnIHNvcnQtZGVzYyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNscztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgucHgnKVxuICBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW4ud2lkdGg7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbldpZHRoLnB4JylcbiAgZ2V0IG1pbldpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uLm1pbldpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXhXaWR0aC5weCcpXG4gIGdldCBtYXhXaWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbi5tYXhXaWR0aDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JylcbiAgZ2V0IGhlaWdodCgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMucm93SGVpZ2h0O1xuICAgIGlmIChpc05hTihoZWlnaHQpKSB7XG4gICAgICByZXR1cm4gaGVpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4gaGVpZ2h0ICsgJ3B4JztcbiAgfVxuXG4gIHNhbml0aXplZFZhbHVlOiBhbnk7XG4gIHZhbHVlOiBhbnk7XG4gIHNvcnREaXI6IFNvcnREaXJlY3Rpb247XG4gIGlzRm9jdXNlZCA9IGZhbHNlO1xuICBvbkNoZWNrYm94Q2hhbmdlRm4gPSB0aGlzLm9uQ2hlY2tib3hDaGFuZ2UuYmluZCh0aGlzKTtcbiAgYWN0aXZhdGVGbiA9IHRoaXMuYWN0aXZhdGUuZW1pdC5iaW5kKHRoaXMuYWN0aXZhdGUpO1xuXG4gIGNlbGxDb250ZXh0OiBhbnkgPSB7XG4gICAgb25DaGVja2JveENoYW5nZUZuOiB0aGlzLm9uQ2hlY2tib3hDaGFuZ2VGbixcbiAgICBhY3RpdmF0ZUZuOiB0aGlzLmFjdGl2YXRlRm4sXG4gICAgcm93OiB0aGlzLnJvdyxcbiAgICBncm91cDogdGhpcy5ncm91cCxcbiAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgIHJvd0hlaWdodDogdGhpcy5yb3dIZWlnaHQsXG4gICAgaXNTZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkLFxuICAgIHJvd0luZGV4OiB0aGlzLnJvd0luZGV4LFxuICAgIHRyZWVTdGF0dXM6IHRoaXMudHJlZVN0YXR1cyxcbiAgICBvblRyZWVBY3Rpb246IHRoaXMub25UcmVlQWN0aW9uLmJpbmQodGhpcylcbiAgfTtcblxuICBwcml2YXRlIF9pc1NlbGVjdGVkOiBib29sZWFuO1xuICBwcml2YXRlIF9zb3J0czogYW55W107XG4gIHByaXZhdGUgX2NvbHVtbjogVGFibGVDb2x1bW47XG4gIHByaXZhdGUgX3JvdzogYW55O1xuICBwcml2YXRlIF9ncm91cDogYW55O1xuICBwcml2YXRlIF9yb3dIZWlnaHQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcm93SW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZXhwYW5kZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2VsZW1lbnQ6IGFueTtcbiAgcHJpdmF0ZSBfdHJlZVN0YXR1czogVHJlZVN0YXR1cztcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja1ZhbHVlVXBkYXRlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2VsbFRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmNlbGxUZW1wbGF0ZS5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrVmFsdWVVcGRhdGVzKCk6IHZvaWQge1xuICAgIGxldCB2YWx1ZSA9ICcnO1xuXG4gICAgaWYgKCF0aGlzLnJvdyB8fCAhdGhpcy5jb2x1bW4pIHtcbiAgICAgIHZhbHVlID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMuY29sdW1uLiQkdmFsdWVHZXR0ZXIodGhpcy5yb3csIHRoaXMuY29sdW1uLnByb3ApO1xuICAgICAgY29uc3QgdXNlclBpcGU6IFBpcGVUcmFuc2Zvcm0gPSB0aGlzLmNvbHVtbi5waXBlO1xuXG4gICAgICBpZiAodXNlclBpcGUpIHtcbiAgICAgICAgdmFsdWUgPSB1c2VyUGlwZS50cmFuc2Zvcm0odmFsKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWx1ZSA9IHZhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2VsbENvbnRleHQudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2FuaXRpemVkVmFsdWUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5zdHJpcEh0bWwodmFsdWUpIDogdmFsdWU7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlLmVtaXQoe1xuICAgICAgdHlwZTogJ2NsaWNrJyxcbiAgICAgIGV2ZW50LFxuICAgICAgcm93OiB0aGlzLnJvdyxcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgcm93SGVpZ2h0OiB0aGlzLnJvd0hlaWdodCxcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGNlbGxFbGVtZW50OiB0aGlzLl9lbGVtZW50XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRGJsQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlLmVtaXQoe1xuICAgICAgdHlwZTogJ2RibGNsaWNrJyxcbiAgICAgIGV2ZW50LFxuICAgICAgcm93OiB0aGlzLnJvdyxcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgcm93SGVpZ2h0OiB0aGlzLnJvd0hlaWdodCxcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGNlbGxFbGVtZW50OiB0aGlzLl9lbGVtZW50XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaXNUYXJnZXRDZWxsID0gZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9lbGVtZW50O1xuXG4gICAgY29uc3QgaXNBY3Rpb24gPVxuICAgICAga2V5Q29kZSA9PT0gS2V5cy5yZXR1cm4gfHxcbiAgICAgIGtleUNvZGUgPT09IEtleXMuZG93biB8fFxuICAgICAga2V5Q29kZSA9PT0gS2V5cy51cCB8fFxuICAgICAga2V5Q29kZSA9PT0gS2V5cy5sZWZ0IHx8XG4gICAgICBrZXlDb2RlID09PSBLZXlzLnJpZ2h0O1xuXG4gICAgaWYgKGlzQWN0aW9uICYmIGlzVGFyZ2V0Q2VsbCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICB0aGlzLmFjdGl2YXRlLmVtaXQoe1xuICAgICAgICB0eXBlOiAna2V5ZG93bicsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICByb3c6IHRoaXMucm93LFxuICAgICAgICBncm91cDogdGhpcy5ncm91cCxcbiAgICAgICAgcm93SGVpZ2h0OiB0aGlzLnJvd0hlaWdodCxcbiAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICAgIGNlbGxFbGVtZW50OiB0aGlzLl9lbGVtZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNoZWNrYm94Q2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlLmVtaXQoe1xuICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgIGV2ZW50LFxuICAgICAgcm93OiB0aGlzLnJvdyxcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgcm93SGVpZ2h0OiB0aGlzLnJvd0hlaWdodCxcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGNlbGxFbGVtZW50OiB0aGlzLl9lbGVtZW50LFxuICAgICAgdHJlZVN0YXR1czogJ2NvbGxhcHNlZCdcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGNTb3J0RGlyKHNvcnRzOiBhbnlbXSk6IGFueSB7XG4gICAgaWYgKCFzb3J0cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNvcnQgPSBzb3J0cy5maW5kKChzOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBzLnByb3AgPT09IHRoaXMuY29sdW1uLnByb3A7XG4gICAgfSk7XG5cbiAgICBpZiAoc29ydCkge1xuICAgICAgcmV0dXJuIHNvcnQuZGlyO1xuICAgIH1cbiAgfVxuXG4gIHN0cmlwSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghaHRtbC5yZXBsYWNlKSB7XG4gICAgICByZXR1cm4gaHRtbDtcbiAgICB9XG4gICAgcmV0dXJuIGh0bWwucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csICcnKTtcbiAgfVxuXG4gIG9uVHJlZUFjdGlvbigpIHtcbiAgICB0aGlzLnRyZWVBY3Rpb24uZW1pdCh0aGlzLnJvdyk7XG4gIH1cblxuICBjYWxjTGVmdE1hcmdpbihjb2x1bW46IGFueSwgcm93OiBhbnkpIHtcbiAgICBjb25zdCBsZXZlbEluZGVudCA9IGNvbHVtbi50cmVlTGV2ZWxJbmRlbnQgIT0gbnVsbCA/IGNvbHVtbi50cmVlTGV2ZWxJbmRlbnQgOiA1MDtcbiAgICByZXR1cm4gY29sdW1uLmlzVHJlZUNvbHVtbiA/IHJvdy5sZXZlbCAqIGxldmVsSW5kZW50IDogMDtcbiAgfVxufVxuIl19
@@ -1,18 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Directive, TemplateRef } from '@angular/core';
3
- var DatatableGroupHeaderTemplateDirective = /** @class */ (function () {
4
- function DatatableGroupHeaderTemplateDirective(template) {
5
- this.template = template;
6
- }
7
- DatatableGroupHeaderTemplateDirective.ctorParameters = function () { return [
8
- { type: TemplateRef }
9
- ]; };
10
- DatatableGroupHeaderTemplateDirective = __decorate([
11
- Directive({
12
- selector: '[ngx-datatable-group-header-template]'
13
- })
14
- ], DatatableGroupHeaderTemplateDirective);
15
- return DatatableGroupHeaderTemplateDirective;
16
- }());
17
- export { DatatableGroupHeaderTemplateDirective };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1ncm91cC1oZWFkZXItdGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN3aW1sYW5lL25neC1kYXRhdGFibGUvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9ib2R5L2JvZHktZ3JvdXAtaGVhZGVyLXRlbXBsYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLdkQ7SUFDRSwrQ0FBbUIsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFBRyxDQUFDOztnQkFBcEIsV0FBVzs7SUFEN0IscUNBQXFDO1FBSGpELFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSx1Q0FBdUM7U0FDbEQsQ0FBQztPQUNXLHFDQUFxQyxDQUVqRDtJQUFELDRDQUFDO0NBQUEsQUFGRCxJQUVDO1NBRlkscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmd4LWRhdGF0YWJsZS1ncm91cC1oZWFkZXItdGVtcGxhdGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhdGFibGVHcm91cEhlYWRlclRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuIl19
@@ -1,67 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Input, Output, EventEmitter, Directive, TemplateRef, ContentChild } from '@angular/core';
3
- import { DatatableGroupHeaderTemplateDirective } from './body-group-header-template.directive';
4
- var DatatableGroupHeaderDirective = /** @class */ (function () {
5
- function DatatableGroupHeaderDirective() {
6
- /**
7
- * Row height is required when virtual scroll is enabled.
8
- */
9
- this.rowHeight = 0;
10
- /**
11
- * Track toggling of group visibility
12
- */
13
- this.toggle = new EventEmitter();
14
- }
15
- Object.defineProperty(DatatableGroupHeaderDirective.prototype, "template", {
16
- get: function () {
17
- return this._templateInput || this._templateQuery;
18
- },
19
- enumerable: true,
20
- configurable: true
21
- });
22
- /**
23
- * Toggle the expansion of a group
24
- */
25
- DatatableGroupHeaderDirective.prototype.toggleExpandGroup = function (group) {
26
- this.toggle.emit({
27
- type: 'group',
28
- value: group
29
- });
30
- };
31
- /**
32
- * Expand all groups
33
- */
34
- DatatableGroupHeaderDirective.prototype.expandAllGroups = function () {
35
- this.toggle.emit({
36
- type: 'all',
37
- value: true
38
- });
39
- };
40
- /**
41
- * Collapse all groups
42
- */
43
- DatatableGroupHeaderDirective.prototype.collapseAllGroups = function () {
44
- this.toggle.emit({
45
- type: 'all',
46
- value: false
47
- });
48
- };
49
- __decorate([
50
- Input()
51
- ], DatatableGroupHeaderDirective.prototype, "rowHeight", void 0);
52
- __decorate([
53
- Input('template')
54
- ], DatatableGroupHeaderDirective.prototype, "_templateInput", void 0);
55
- __decorate([
56
- ContentChild(DatatableGroupHeaderTemplateDirective, { read: TemplateRef, static: true })
57
- ], DatatableGroupHeaderDirective.prototype, "_templateQuery", void 0);
58
- __decorate([
59
- Output()
60
- ], DatatableGroupHeaderDirective.prototype, "toggle", void 0);
61
- DatatableGroupHeaderDirective = __decorate([
62
- Directive({ selector: 'ngx-datatable-group-header' })
63
- ], DatatableGroupHeaderDirective);
64
- return DatatableGroupHeaderDirective;
65
- }());
66
- export { DatatableGroupHeaderDirective };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1ncm91cC1oZWFkZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN3aW1sYW5lL25neC1kYXRhdGFibGUvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9ib2R5L2JvZHktZ3JvdXAtaGVhZGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRy9GO0lBQUE7UUFDRTs7V0FFRztRQUNNLGNBQVMsR0FBdUQsQ0FBQyxDQUFDO1FBWTNFOztXQUVHO1FBQ08sV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBK0IzRCxDQUFDO0lBdENDLHNCQUFJLG1EQUFRO2FBQVo7WUFDRSxPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNwRCxDQUFDOzs7T0FBQTtJQU9EOztPQUVHO0lBQ0gseURBQWlCLEdBQWpCLFVBQWtCLEtBQVU7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdURBQWUsR0FBZjtRQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILHlEQUFpQixHQUFqQjtRQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUE3Q1E7UUFBUixLQUFLLEVBQUU7b0VBQW1FO0lBRzNFO1FBREMsS0FBSyxDQUFDLFVBQVUsQ0FBQzt5RUFDZTtJQUdqQztRQURDLFlBQVksQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO3lFQUN4RDtJQVN2QjtRQUFULE1BQU0sRUFBRTtpRUFBZ0Q7SUFuQjlDLDZCQUE2QjtRQUR6QyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQztPQUN6Qyw2QkFBNkIsQ0FrRHpDO0lBQUQsb0NBQUM7Q0FBQSxBQWxERCxJQWtEQztTQWxEWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YXRhYmxlR3JvdXBIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vYm9keS1ncm91cC1oZWFkZXItdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd4LWRhdGF0YWJsZS1ncm91cC1oZWFkZXInIH0pXG5leHBvcnQgY2xhc3MgRGF0YXRhYmxlR3JvdXBIZWFkZXJEaXJlY3RpdmUge1xuICAvKipcbiAgICogUm93IGhlaWdodCBpcyByZXF1aXJlZCB3aGVuIHZpcnR1YWwgc2Nyb2xsIGlzIGVuYWJsZWQuXG4gICAqL1xuICBASW5wdXQoKSByb3dIZWlnaHQ6IG51bWJlciB8ICgoZ3JvdXA/OiBhbnksIGluZGV4PzogbnVtYmVyKSA9PiBudW1iZXIpID0gMDtcblxuICBASW5wdXQoJ3RlbXBsYXRlJylcbiAgX3RlbXBsYXRlSW5wdXQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChEYXRhdGFibGVHcm91cEhlYWRlclRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgX3RlbXBsYXRlUXVlcnk6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgZ2V0IHRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZUlucHV0IHx8IHRoaXMuX3RlbXBsYXRlUXVlcnk7XG4gIH1cblxuICAvKipcbiAgICogVHJhY2sgdG9nZ2xpbmcgb2YgZ3JvdXAgdmlzaWJpbGl0eVxuICAgKi9cbiAgQE91dHB1dCgpIHRvZ2dsZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgZXhwYW5zaW9uIG9mIGEgZ3JvdXBcbiAgICovXG4gIHRvZ2dsZUV4cGFuZEdyb3VwKGdyb3VwOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZS5lbWl0KHtcbiAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICB2YWx1ZTogZ3JvdXBcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBhbmQgYWxsIGdyb3Vwc1xuICAgKi9cbiAgZXhwYW5kQWxsR3JvdXBzKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlLmVtaXQoe1xuICAgICAgdHlwZTogJ2FsbCcsXG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbGxhcHNlIGFsbCBncm91cHNcbiAgICovXG4gIGNvbGxhcHNlQWxsR3JvdXBzKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlLmVtaXQoe1xuICAgICAgdHlwZTogJ2FsbCcsXG4gICAgICB2YWx1ZTogZmFsc2VcbiAgICB9KTtcbiAgfVxufVxuIl19