@swimlane/ngx-datatable 20.1.0 → 21.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +720 -0
- package/README.md +25 -4
- package/assets/app.css +4 -3
- package/assets/icons-reference.html +5 -1
- package/assets/icons.css +3 -2
- package/{fesm2020 → fesm2022}/swimlane-ngx-datatable.mjs +3404 -2536
- package/fesm2022/swimlane-ngx-datatable.mjs.map +1 -0
- package/index.css +224 -169
- package/index.scss +13 -3
- package/lib/components/body/body-cell.component.d.ts +28 -23
- package/lib/components/body/body-group-header-template.directive.d.ts +3 -4
- package/lib/components/body/body-group-header.directive.d.ts +14 -9
- package/lib/components/body/body-row-def.component.d.ts +34 -0
- package/lib/components/body/body-row-wrapper.component.d.ts +34 -22
- package/lib/components/body/body-row.component.d.ts +28 -34
- package/lib/components/body/body.component.d.ts +88 -69
- package/lib/components/body/ghost-loader/ghost-loader.component.d.ts +12 -0
- package/lib/components/body/progress-bar.component.d.ts +1 -1
- package/lib/components/body/scroller.component.d.ts +4 -7
- package/lib/components/body/selection.component.d.ts +21 -25
- package/lib/components/body/summary/summary-row.component.d.ts +4 -3
- package/lib/components/columns/column-cell.directive.d.ts +4 -3
- package/lib/components/columns/column-ghost-cell.directive.d.ts +6 -0
- package/lib/components/columns/column-header.directive.d.ts +3 -4
- package/lib/components/columns/column.directive.d.ts +43 -18
- package/lib/components/columns/tree.directive.d.ts +1 -2
- package/lib/components/datatable.component.d.ts +142 -76
- package/lib/components/footer/footer-template.directive.d.ts +3 -4
- package/lib/components/footer/footer.component.d.ts +3 -2
- package/lib/components/footer/footer.directive.d.ts +6 -4
- package/lib/components/footer/pager.component.d.ts +6 -4
- package/lib/components/header/header-cell.component.d.ts +18 -18
- package/lib/components/header/header.component.d.ts +41 -36
- package/lib/components/row-detail/row-detail-template.directive.d.ts +3 -4
- package/lib/components/row-detail/row-detail.directive.d.ts +9 -8
- package/lib/directives/disable-row.directive.d.ts +22 -0
- package/lib/directives/draggable.directive.d.ts +11 -8
- package/lib/directives/long-press.directive.d.ts +16 -5
- package/lib/directives/orderable.directive.d.ts +21 -10
- package/lib/directives/resizeable.directive.d.ts +7 -5
- package/lib/directives/visibility.directive.d.ts +2 -3
- package/lib/ngx-datatable.module.d.ts +29 -30
- package/lib/services/scrollbar-helper.service.d.ts +0 -1
- package/lib/types/internal.types.d.ts +31 -0
- package/lib/types/public.types.d.ts +142 -0
- package/lib/types/table-column.type.d.ts +39 -66
- package/lib/utils/column-helper.d.ts +2 -2
- package/lib/utils/column-prop-getters.d.ts +1 -1
- package/lib/utils/column.d.ts +7 -14
- package/lib/utils/keys.d.ts +6 -6
- package/lib/utils/math.d.ts +4 -3
- package/lib/utils/selection.d.ts +2 -2
- package/lib/utils/sort.d.ts +5 -5
- package/lib/utils/table-token.d.ts +7 -0
- package/lib/utils/tree.d.ts +2 -2
- package/package.json +9 -17
- package/public-api.d.ts +4 -11
- package/themes/_ghost.scss +22 -0
- package/themes/_rows.scss +22 -0
- package/themes/bootstrap.css +117 -65
- package/themes/bootstrap.scss +27 -3
- package/themes/dark.css +101 -70
- package/themes/dark.scss +12 -0
- package/themes/material.css +344 -260
- package/themes/material.scss +52 -11
- package/esm2020/lib/components/body/body-cell.component.mjs +0 -432
- package/esm2020/lib/components/body/body-group-header-template.directive.mjs +0 -16
- package/esm2020/lib/components/body/body-group-header.directive.mjs +0 -62
- package/esm2020/lib/components/body/body-row-wrapper.component.mjs +0 -140
- package/esm2020/lib/components/body/body-row.component.mjs +0 -262
- package/esm2020/lib/components/body/body.component.mjs +0 -863
- package/esm2020/lib/components/body/progress-bar.component.mjs +0 -27
- package/esm2020/lib/components/body/scroller.component.mjs +0 -91
- package/esm2020/lib/components/body/selection.component.mjs +0 -150
- package/esm2020/lib/components/body/summary/summary-row.component.mjs +0 -105
- package/esm2020/lib/components/columns/column-cell.directive.mjs +0 -14
- package/esm2020/lib/components/columns/column-header.directive.mjs +0 -14
- package/esm2020/lib/components/columns/column.directive.mjs +0 -98
- package/esm2020/lib/components/columns/tree.directive.mjs +0 -14
- package/esm2020/lib/components/datatable.component.mjs +0 -1008
- package/esm2020/lib/components/footer/footer-template.directive.mjs +0 -14
- package/esm2020/lib/components/footer/footer.component.mjs +0 -128
- package/esm2020/lib/components/footer/footer.directive.mjs +0 -35
- package/esm2020/lib/components/footer/pager.component.mjs +0 -181
- package/esm2020/lib/components/header/header-cell.component.mjs +0 -243
- package/esm2020/lib/components/header/header.component.mjs +0 -376
- package/esm2020/lib/components/row-detail/row-detail-template.directive.mjs +0 -16
- package/esm2020/lib/components/row-detail/row-detail.directive.mjs +0 -63
- package/esm2020/lib/directives/draggable.directive.mjs +0 -108
- package/esm2020/lib/directives/long-press.directive.mjs +0 -117
- package/esm2020/lib/directives/orderable.directive.mjs +0 -136
- package/esm2020/lib/directives/resizeable.directive.mjs +0 -93
- package/esm2020/lib/directives/visibility.directive.mjs +0 -63
- package/esm2020/lib/events.mjs +0 -7
- package/esm2020/lib/ngx-datatable.module.mjs +0 -139
- package/esm2020/lib/services/column-changes.service.mjs +0 -24
- package/esm2020/lib/services/dimensions-helper.service.mjs +0 -17
- package/esm2020/lib/services/scrollbar-helper.service.mjs +0 -37
- package/esm2020/lib/types/click.type.mjs +0 -6
- package/esm2020/lib/types/column-mode.type.mjs +0 -7
- package/esm2020/lib/types/contextmenu.type.mjs +0 -6
- package/esm2020/lib/types/selection.type.mjs +0 -9
- package/esm2020/lib/types/sort-direction.type.mjs +0 -6
- package/esm2020/lib/types/sort-prop-dir.type.mjs +0 -2
- package/esm2020/lib/types/sort.type.mjs +0 -6
- package/esm2020/lib/types/table-column.type.mjs +0 -2
- package/esm2020/lib/utils/camel-case.mjs +0 -28
- package/esm2020/lib/utils/column-helper.mjs +0 -95
- package/esm2020/lib/utils/column-prop-getters.mjs +0 -96
- package/esm2020/lib/utils/column.mjs +0 -69
- package/esm2020/lib/utils/elm-from-point.mjs +0 -38
- package/esm2020/lib/utils/id.mjs +0 -8
- package/esm2020/lib/utils/keys.mjs +0 -10
- package/esm2020/lib/utils/math.mjs +0 -146
- package/esm2020/lib/utils/prefixes.mjs +0 -38
- package/esm2020/lib/utils/row-height-cache.mjs +0 -138
- package/esm2020/lib/utils/selection.mjs +0 -40
- package/esm2020/lib/utils/sort.mjs +0 -127
- package/esm2020/lib/utils/throttle.mjs +0 -60
- package/esm2020/lib/utils/translate.mjs +0 -25
- package/esm2020/lib/utils/tree.mjs +0 -103
- package/esm2020/public-api.mjs +0 -64
- package/esm2020/swimlane-ngx-datatable.mjs +0 -5
- package/fesm2015/swimlane-ngx-datatable.mjs +0 -5979
- package/fesm2015/swimlane-ngx-datatable.mjs.map +0 -1
- package/fesm2020/swimlane-ngx-datatable.mjs.map +0 -1
- package/lib/events.d.ts +0 -3
- package/lib/services/dimensions-helper.service.d.ts +0 -10
- package/lib/types/click.type.d.ts +0 -4
- package/lib/types/column-mode.type.d.ts +0 -5
- package/lib/types/contextmenu.type.d.ts +0 -4
- package/lib/types/selection.type.d.ts +0 -7
- package/lib/types/sort-direction.type.d.ts +0 -4
- package/lib/types/sort-prop-dir.type.d.ts +0 -6
- package/lib/types/sort.type.d.ts +0 -4
- package/lib/utils/elm-from-point.d.ts +0 -8
- package/lib/utils/prefixes.d.ts +0 -1
- package/lib/utils/translate.d.ts +0 -1
- /package/{swimlane-ngx-datatable.d.ts → index.d.ts} +0 -0
package/themes/material.scss
CHANGED
|
@@ -51,6 +51,7 @@ $datatable-body-cell-color: rgba(0, 0, 0, 0.87) !default;
|
|
|
51
51
|
$datatable-group-header-background: #f5f5f5 !default;
|
|
52
52
|
$datatable-group-header-border-top-color: #d9d8d9 !default;
|
|
53
53
|
$datatable-group-header-border-bottom-color: #d9d8d9 !default;
|
|
54
|
+
$datatable-body-row-border-bottom-color: #d9d8d9 !default;
|
|
54
55
|
|
|
55
56
|
// colors for footer elements
|
|
56
57
|
$datatable-footer-cell-color: rgba(0, 0, 0, 0.54) !default;
|
|
@@ -66,6 +67,21 @@ $datatable-pager-active-background: rgba(158, 158, 158, 0.2) !default;
|
|
|
66
67
|
$datatable-summary-row-background: #ddd !default;
|
|
67
68
|
$datatable-summary-row-background-hover: #ddd !default;
|
|
68
69
|
|
|
70
|
+
$datatable-ghost-cell-container-background: $ngx-datatable-background !default;
|
|
71
|
+
$datatable-ghost-cell-strip-background: #d9d8d9 !default;
|
|
72
|
+
$datatable-ghost-cell-strip-background-image: linear-gradient(
|
|
73
|
+
to right,
|
|
74
|
+
$datatable-ghost-cell-strip-background 0%,
|
|
75
|
+
$datatable-ghost-cell-strip-background 10%,
|
|
76
|
+
$ngx-datatable-background,
|
|
77
|
+
transparent
|
|
78
|
+
) !default;
|
|
79
|
+
$datatable-ghost-cell-strip-radius: 0 !default;
|
|
80
|
+
$datatble-ghost-cell-animation-duration: 10s;
|
|
81
|
+
|
|
82
|
+
@import './ghost';
|
|
83
|
+
@import './rows';
|
|
84
|
+
|
|
69
85
|
.ngx-datatable.material {
|
|
70
86
|
background: $ngx-datatable-background;
|
|
71
87
|
box-shadow: $ngx-datatable-box-shadow;
|
|
@@ -119,33 +135,33 @@ $datatable-summary-row-background-hover: #ddd !default;
|
|
|
119
135
|
|
|
120
136
|
&.cell-selection {
|
|
121
137
|
.datatable-body-cell {
|
|
122
|
-
&:hover,
|
|
123
|
-
&:hover .datatable-row-group {
|
|
138
|
+
&:hover:not(.row-disabled),
|
|
139
|
+
&:hover:not(.row-disabled) .datatable-row-group {
|
|
124
140
|
background-color: $ngx-datatable-cellselection-background-hover;
|
|
125
141
|
transition-property: background;
|
|
126
142
|
transition-duration: 0.3s;
|
|
127
143
|
transition-timing-function: linear;
|
|
128
144
|
}
|
|
129
145
|
|
|
130
|
-
&:focus,
|
|
131
|
-
&:focus .datatable-row-group {
|
|
146
|
+
&:focus:not(.row-disabled),
|
|
147
|
+
&:focus:not(.row-disabled) .datatable-row-group {
|
|
132
148
|
background-color: $ngx-datatable-cellselection-background-focus;
|
|
133
149
|
}
|
|
134
150
|
|
|
135
|
-
&.active,
|
|
136
|
-
&.active .datatable-row-group {
|
|
151
|
+
&.active:not(.row-disabled),
|
|
152
|
+
&.active:not(.row-disabled) .datatable-row-group {
|
|
137
153
|
background-color: $ngx-datatable-selected-active-background;
|
|
138
154
|
color: $ngx-datatable-selected-active-color;
|
|
139
155
|
}
|
|
140
156
|
|
|
141
|
-
&.active:hover,
|
|
142
|
-
&.active:hover .datatable-row-group {
|
|
157
|
+
&.active:hover:not(.row-disabled),
|
|
158
|
+
&.active:hover:not(.row-disabled) .datatable-row-group {
|
|
143
159
|
background-color: $ngx-datatable-selected-active-background-hover;
|
|
144
160
|
color: $ngx-datatable-selected-active-color-hover;
|
|
145
161
|
}
|
|
146
162
|
|
|
147
|
-
&.active:focus,
|
|
148
|
-
&.active:focus .datatable-row-group {
|
|
163
|
+
&.active:focus:not(.row-disabled),
|
|
164
|
+
&.active:focus:not(.row-disabled) .datatable-row-group {
|
|
149
165
|
background-color: $ngx-datatable-selected-active-background-focus;
|
|
150
166
|
color: $ngx-datatable-selected-active-color-focus;
|
|
151
167
|
}
|
|
@@ -197,6 +213,7 @@ $datatable-summary-row-background-hover: #ddd !default;
|
|
|
197
213
|
border-bottom: 1px solid $datatable-header-border-bottom-color;
|
|
198
214
|
|
|
199
215
|
.datatable-header-cell {
|
|
216
|
+
flex-shrink: 0;
|
|
200
217
|
text-align: left;
|
|
201
218
|
padding: 0.9rem 1.2rem;
|
|
202
219
|
font-weight: 400;
|
|
@@ -262,10 +279,22 @@ $datatable-summary-row-background-hover: #ddd !default;
|
|
|
262
279
|
background: $datatable-group-header-background;
|
|
263
280
|
border-bottom: solid 1px $datatable-group-header-border-bottom-color;
|
|
264
281
|
border-top: solid 1px $datatable-group-header-border-top-color;
|
|
282
|
+
|
|
283
|
+
.datatable-group-cell {
|
|
284
|
+
padding-inline-start: 1.2rem;
|
|
285
|
+
display: flex;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
datatable-row-def {
|
|
290
|
+
background-color: $ngx-datatable-background;
|
|
265
291
|
}
|
|
266
292
|
|
|
267
293
|
.datatable-body-row {
|
|
294
|
+
border-bottom: 1px solid $datatable-body-row-border-bottom-color;
|
|
295
|
+
|
|
268
296
|
.datatable-body-cell {
|
|
297
|
+
flex-shrink: 0;
|
|
269
298
|
text-align: left;
|
|
270
299
|
padding: 0.9rem 1.2rem;
|
|
271
300
|
vertical-align: top;
|
|
@@ -296,7 +325,8 @@ $datatable-summary-row-background-hover: #ddd !default;
|
|
|
296
325
|
display: block;
|
|
297
326
|
position: sticky;
|
|
298
327
|
width: 100%;
|
|
299
|
-
height:
|
|
328
|
+
height: 0;
|
|
329
|
+
z-index: 999;
|
|
300
330
|
padding: 0;
|
|
301
331
|
margin: 0;
|
|
302
332
|
top: 0;
|
|
@@ -329,6 +359,17 @@ $datatable-summary-row-background-hover: #ddd !default;
|
|
|
329
359
|
}
|
|
330
360
|
}
|
|
331
361
|
}
|
|
362
|
+
|
|
363
|
+
.custom-loading-indicator-wrapper {
|
|
364
|
+
position: sticky;
|
|
365
|
+
top: 0;
|
|
366
|
+
height: 0;
|
|
367
|
+
z-index: 999;
|
|
368
|
+
.custom-loading-content {
|
|
369
|
+
width: 100%;
|
|
370
|
+
background-color: $ngx-datatable-default-background;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
332
373
|
}
|
|
333
374
|
|
|
334
375
|
/**
|
|
@@ -1,432 +0,0 @@
|
|
|
1
|
-
import { Component, Input, HostBinding, ViewChild, Output, EventEmitter, HostListener, ViewContainerRef, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { SortDirection } from '../../types/sort-direction.type';
|
|
3
|
-
import { Keys } from '../../utils/keys';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
export class DataTableBodyCellComponent {
|
|
7
|
-
constructor(element, cd) {
|
|
8
|
-
this.cd = cd;
|
|
9
|
-
this.activate = new EventEmitter();
|
|
10
|
-
this.treeAction = new EventEmitter();
|
|
11
|
-
this.isFocused = false;
|
|
12
|
-
this.onCheckboxChangeFn = this.onCheckboxChange.bind(this);
|
|
13
|
-
this.activateFn = this.activate.emit.bind(this.activate);
|
|
14
|
-
this.cellContext = {
|
|
15
|
-
onCheckboxChangeFn: this.onCheckboxChangeFn,
|
|
16
|
-
activateFn: this.activateFn,
|
|
17
|
-
row: this.row,
|
|
18
|
-
group: this.group,
|
|
19
|
-
value: this.value,
|
|
20
|
-
column: this.column,
|
|
21
|
-
rowHeight: this.rowHeight,
|
|
22
|
-
isSelected: this.isSelected,
|
|
23
|
-
rowIndex: this.rowIndex,
|
|
24
|
-
treeStatus: this.treeStatus,
|
|
25
|
-
onTreeAction: this.onTreeAction.bind(this)
|
|
26
|
-
};
|
|
27
|
-
this._element = element.nativeElement;
|
|
28
|
-
}
|
|
29
|
-
set group(group) {
|
|
30
|
-
this._group = group;
|
|
31
|
-
this.cellContext.group = group;
|
|
32
|
-
this.checkValueUpdates();
|
|
33
|
-
this.cd.markForCheck();
|
|
34
|
-
}
|
|
35
|
-
get group() {
|
|
36
|
-
return this._group;
|
|
37
|
-
}
|
|
38
|
-
set rowHeight(val) {
|
|
39
|
-
this._rowHeight = val;
|
|
40
|
-
this.cellContext.rowHeight = val;
|
|
41
|
-
this.checkValueUpdates();
|
|
42
|
-
this.cd.markForCheck();
|
|
43
|
-
}
|
|
44
|
-
get rowHeight() {
|
|
45
|
-
return this._rowHeight;
|
|
46
|
-
}
|
|
47
|
-
set isSelected(val) {
|
|
48
|
-
this._isSelected = val;
|
|
49
|
-
this.cellContext.isSelected = val;
|
|
50
|
-
this.cd.markForCheck();
|
|
51
|
-
}
|
|
52
|
-
get isSelected() {
|
|
53
|
-
return this._isSelected;
|
|
54
|
-
}
|
|
55
|
-
set expanded(val) {
|
|
56
|
-
this._expanded = val;
|
|
57
|
-
this.cellContext.expanded = val;
|
|
58
|
-
this.cd.markForCheck();
|
|
59
|
-
}
|
|
60
|
-
get expanded() {
|
|
61
|
-
return this._expanded;
|
|
62
|
-
}
|
|
63
|
-
set rowIndex(val) {
|
|
64
|
-
this._rowIndex = val;
|
|
65
|
-
this.cellContext.rowIndex = val;
|
|
66
|
-
this.checkValueUpdates();
|
|
67
|
-
this.cd.markForCheck();
|
|
68
|
-
}
|
|
69
|
-
get rowIndex() {
|
|
70
|
-
return this._rowIndex;
|
|
71
|
-
}
|
|
72
|
-
set column(column) {
|
|
73
|
-
this._column = column;
|
|
74
|
-
this.cellContext.column = column;
|
|
75
|
-
this.checkValueUpdates();
|
|
76
|
-
this.cd.markForCheck();
|
|
77
|
-
}
|
|
78
|
-
get column() {
|
|
79
|
-
return this._column;
|
|
80
|
-
}
|
|
81
|
-
set row(row) {
|
|
82
|
-
this._row = row;
|
|
83
|
-
this.cellContext.row = row;
|
|
84
|
-
this.checkValueUpdates();
|
|
85
|
-
this.cd.markForCheck();
|
|
86
|
-
}
|
|
87
|
-
get row() {
|
|
88
|
-
return this._row;
|
|
89
|
-
}
|
|
90
|
-
set sorts(val) {
|
|
91
|
-
this._sorts = val;
|
|
92
|
-
this.calcSortDir = this.calcSortDir(val);
|
|
93
|
-
}
|
|
94
|
-
get sorts() {
|
|
95
|
-
return this._sorts;
|
|
96
|
-
}
|
|
97
|
-
set treeStatus(status) {
|
|
98
|
-
if (status !== 'collapsed' && status !== 'expanded' && status !== 'loading' && status !== 'disabled') {
|
|
99
|
-
this._treeStatus = 'collapsed';
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
this._treeStatus = status;
|
|
103
|
-
}
|
|
104
|
-
this.cellContext.treeStatus = this._treeStatus;
|
|
105
|
-
this.checkValueUpdates();
|
|
106
|
-
this.cd.markForCheck();
|
|
107
|
-
}
|
|
108
|
-
get treeStatus() {
|
|
109
|
-
return this._treeStatus;
|
|
110
|
-
}
|
|
111
|
-
get columnCssClasses() {
|
|
112
|
-
let cls = 'datatable-body-cell';
|
|
113
|
-
if (this.column.cellClass) {
|
|
114
|
-
if (typeof this.column.cellClass === 'string') {
|
|
115
|
-
cls += ' ' + this.column.cellClass;
|
|
116
|
-
}
|
|
117
|
-
else if (typeof this.column.cellClass === 'function') {
|
|
118
|
-
const res = this.column.cellClass({
|
|
119
|
-
row: this.row,
|
|
120
|
-
group: this.group,
|
|
121
|
-
column: this.column,
|
|
122
|
-
value: this.value,
|
|
123
|
-
rowHeight: this.rowHeight
|
|
124
|
-
});
|
|
125
|
-
if (typeof res === 'string') {
|
|
126
|
-
cls += ' ' + res;
|
|
127
|
-
}
|
|
128
|
-
else if (typeof res === 'object') {
|
|
129
|
-
const keys = Object.keys(res);
|
|
130
|
-
for (const k of keys) {
|
|
131
|
-
if (res[k] === true) {
|
|
132
|
-
cls += ` ${k}`;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
if (!this.sortDir) {
|
|
139
|
-
cls += ' sort-active';
|
|
140
|
-
}
|
|
141
|
-
if (this.isFocused) {
|
|
142
|
-
cls += ' active';
|
|
143
|
-
}
|
|
144
|
-
if (this.sortDir === SortDirection.asc) {
|
|
145
|
-
cls += ' sort-asc';
|
|
146
|
-
}
|
|
147
|
-
if (this.sortDir === SortDirection.desc) {
|
|
148
|
-
cls += ' sort-desc';
|
|
149
|
-
}
|
|
150
|
-
return cls;
|
|
151
|
-
}
|
|
152
|
-
get width() {
|
|
153
|
-
return this.column.width;
|
|
154
|
-
}
|
|
155
|
-
get minWidth() {
|
|
156
|
-
return this.column.minWidth;
|
|
157
|
-
}
|
|
158
|
-
get maxWidth() {
|
|
159
|
-
return this.column.maxWidth;
|
|
160
|
-
}
|
|
161
|
-
get height() {
|
|
162
|
-
const height = this.rowHeight;
|
|
163
|
-
if (isNaN(height)) {
|
|
164
|
-
return height;
|
|
165
|
-
}
|
|
166
|
-
return height + 'px';
|
|
167
|
-
}
|
|
168
|
-
ngDoCheck() {
|
|
169
|
-
this.checkValueUpdates();
|
|
170
|
-
}
|
|
171
|
-
ngOnDestroy() {
|
|
172
|
-
if (this.cellTemplate) {
|
|
173
|
-
this.cellTemplate.clear();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
checkValueUpdates() {
|
|
177
|
-
let value = '';
|
|
178
|
-
if (!this.row || !this.column) {
|
|
179
|
-
value = '';
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
const val = this.column.$$valueGetter(this.row, this.column.prop);
|
|
183
|
-
const userPipe = this.column.pipe;
|
|
184
|
-
if (userPipe) {
|
|
185
|
-
value = userPipe.transform(val);
|
|
186
|
-
}
|
|
187
|
-
else if (value !== undefined) {
|
|
188
|
-
value = val;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
if (this.value !== value) {
|
|
192
|
-
this.value = value;
|
|
193
|
-
this.cellContext.value = value;
|
|
194
|
-
this.sanitizedValue = value !== null && value !== undefined ? this.stripHtml(value) : value;
|
|
195
|
-
this.cd.markForCheck();
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
onFocus() {
|
|
199
|
-
this.isFocused = true;
|
|
200
|
-
}
|
|
201
|
-
onBlur() {
|
|
202
|
-
this.isFocused = false;
|
|
203
|
-
}
|
|
204
|
-
onClick(event) {
|
|
205
|
-
this.activate.emit({
|
|
206
|
-
type: 'click',
|
|
207
|
-
event,
|
|
208
|
-
row: this.row,
|
|
209
|
-
group: this.group,
|
|
210
|
-
rowHeight: this.rowHeight,
|
|
211
|
-
column: this.column,
|
|
212
|
-
value: this.value,
|
|
213
|
-
cellElement: this._element
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
onDblClick(event) {
|
|
217
|
-
this.activate.emit({
|
|
218
|
-
type: 'dblclick',
|
|
219
|
-
event,
|
|
220
|
-
row: this.row,
|
|
221
|
-
group: this.group,
|
|
222
|
-
rowHeight: this.rowHeight,
|
|
223
|
-
column: this.column,
|
|
224
|
-
value: this.value,
|
|
225
|
-
cellElement: this._element
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
onKeyDown(event) {
|
|
229
|
-
const keyCode = event.keyCode;
|
|
230
|
-
const isTargetCell = event.target === this._element;
|
|
231
|
-
const isAction = keyCode === Keys.return ||
|
|
232
|
-
keyCode === Keys.down ||
|
|
233
|
-
keyCode === Keys.up ||
|
|
234
|
-
keyCode === Keys.left ||
|
|
235
|
-
keyCode === Keys.right;
|
|
236
|
-
if (isAction && isTargetCell) {
|
|
237
|
-
event.preventDefault();
|
|
238
|
-
event.stopPropagation();
|
|
239
|
-
this.activate.emit({
|
|
240
|
-
type: 'keydown',
|
|
241
|
-
event,
|
|
242
|
-
row: this.row,
|
|
243
|
-
group: this.group,
|
|
244
|
-
rowHeight: this.rowHeight,
|
|
245
|
-
column: this.column,
|
|
246
|
-
value: this.value,
|
|
247
|
-
cellElement: this._element
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
onCheckboxChange(event) {
|
|
252
|
-
this.activate.emit({
|
|
253
|
-
type: 'checkbox',
|
|
254
|
-
event,
|
|
255
|
-
row: this.row,
|
|
256
|
-
group: this.group,
|
|
257
|
-
rowHeight: this.rowHeight,
|
|
258
|
-
column: this.column,
|
|
259
|
-
value: this.value,
|
|
260
|
-
cellElement: this._element,
|
|
261
|
-
treeStatus: 'collapsed'
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
calcSortDir(sorts) {
|
|
265
|
-
if (!sorts) {
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
const sort = sorts.find((s) => {
|
|
269
|
-
return s.prop === this.column.prop;
|
|
270
|
-
});
|
|
271
|
-
if (sort) {
|
|
272
|
-
return sort.dir;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
stripHtml(html) {
|
|
276
|
-
if (!html.replace) {
|
|
277
|
-
return html;
|
|
278
|
-
}
|
|
279
|
-
return html.replace(/<\/?[^>]+(>|$)/g, '');
|
|
280
|
-
}
|
|
281
|
-
onTreeAction() {
|
|
282
|
-
this.treeAction.emit(this.row);
|
|
283
|
-
}
|
|
284
|
-
calcLeftMargin(column, row) {
|
|
285
|
-
const levelIndent = column.treeLevelIndent != null ? column.treeLevelIndent : 50;
|
|
286
|
-
return column.isTreeColumn ? row.level * levelIndent : 0;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
DataTableBodyCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DataTableBodyCellComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
290
|
-
DataTableBodyCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: DataTableBodyCellComponent, selector: "datatable-body-cell", inputs: { displayCheck: "displayCheck", group: "group", rowHeight: "rowHeight", isSelected: "isSelected", expanded: "expanded", rowIndex: "rowIndex", column: "column", row: "row", sorts: "sorts", treeStatus: "treeStatus" }, outputs: { activate: "activate", treeAction: "treeAction" }, host: { listeners: { "focus": "onFocus()", "blur": "onBlur()", "click": "onClick($event)", "dblclick": "onDblClick($event)", "keydown": "onKeyDown($event)" }, properties: { "class": "this.columnCssClasses", "style.width.px": "this.width", "style.minWidth.px": "this.minWidth", "style.maxWidth.px": "this.maxWidth", "style.height": "this.height" } }, viewQueries: [{ propertyName: "cellTemplate", first: true, predicate: ["cellTemplate"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
|
|
291
|
-
<div class="datatable-body-cell-label" [style.margin-left.px]="calcLeftMargin(column, row)">
|
|
292
|
-
<label
|
|
293
|
-
*ngIf="column.checkboxable && (!displayCheck || displayCheck(row, column, value))"
|
|
294
|
-
class="datatable-checkbox"
|
|
295
|
-
>
|
|
296
|
-
<input type="checkbox" [checked]="isSelected" (click)="onCheckboxChange($event)" />
|
|
297
|
-
</label>
|
|
298
|
-
<ng-container *ngIf="column.isTreeColumn">
|
|
299
|
-
<button
|
|
300
|
-
*ngIf="!column.treeToggleTemplate"
|
|
301
|
-
class="datatable-tree-button"
|
|
302
|
-
[disabled]="treeStatus === 'disabled'"
|
|
303
|
-
(click)="onTreeAction()"
|
|
304
|
-
>
|
|
305
|
-
<span>
|
|
306
|
-
<i *ngIf="treeStatus === 'loading'" class="icon datatable-icon-collapse"></i>
|
|
307
|
-
<i *ngIf="treeStatus === 'collapsed'" class="icon datatable-icon-up"></i>
|
|
308
|
-
<i *ngIf="treeStatus === 'expanded' || treeStatus === 'disabled'" class="icon datatable-icon-down"></i>
|
|
309
|
-
</span>
|
|
310
|
-
</button>
|
|
311
|
-
<ng-template
|
|
312
|
-
*ngIf="column.treeToggleTemplate"
|
|
313
|
-
[ngTemplateOutlet]="column.treeToggleTemplate"
|
|
314
|
-
[ngTemplateOutletContext]="{ cellContext: cellContext }"
|
|
315
|
-
>
|
|
316
|
-
</ng-template>
|
|
317
|
-
</ng-container>
|
|
318
|
-
|
|
319
|
-
<span *ngIf="!column.cellTemplate" [title]="sanitizedValue" [innerHTML]="value"> </span>
|
|
320
|
-
<ng-template
|
|
321
|
-
#cellTemplate
|
|
322
|
-
*ngIf="column.cellTemplate"
|
|
323
|
-
[ngTemplateOutlet]="column.cellTemplate"
|
|
324
|
-
[ngTemplateOutletContext]="cellContext"
|
|
325
|
-
>
|
|
326
|
-
</ng-template>
|
|
327
|
-
</div>
|
|
328
|
-
`, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
329
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DataTableBodyCellComponent, decorators: [{
|
|
330
|
-
type: Component,
|
|
331
|
-
args: [{
|
|
332
|
-
selector: 'datatable-body-cell',
|
|
333
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
334
|
-
template: `
|
|
335
|
-
<div class="datatable-body-cell-label" [style.margin-left.px]="calcLeftMargin(column, row)">
|
|
336
|
-
<label
|
|
337
|
-
*ngIf="column.checkboxable && (!displayCheck || displayCheck(row, column, value))"
|
|
338
|
-
class="datatable-checkbox"
|
|
339
|
-
>
|
|
340
|
-
<input type="checkbox" [checked]="isSelected" (click)="onCheckboxChange($event)" />
|
|
341
|
-
</label>
|
|
342
|
-
<ng-container *ngIf="column.isTreeColumn">
|
|
343
|
-
<button
|
|
344
|
-
*ngIf="!column.treeToggleTemplate"
|
|
345
|
-
class="datatable-tree-button"
|
|
346
|
-
[disabled]="treeStatus === 'disabled'"
|
|
347
|
-
(click)="onTreeAction()"
|
|
348
|
-
>
|
|
349
|
-
<span>
|
|
350
|
-
<i *ngIf="treeStatus === 'loading'" class="icon datatable-icon-collapse"></i>
|
|
351
|
-
<i *ngIf="treeStatus === 'collapsed'" class="icon datatable-icon-up"></i>
|
|
352
|
-
<i *ngIf="treeStatus === 'expanded' || treeStatus === 'disabled'" class="icon datatable-icon-down"></i>
|
|
353
|
-
</span>
|
|
354
|
-
</button>
|
|
355
|
-
<ng-template
|
|
356
|
-
*ngIf="column.treeToggleTemplate"
|
|
357
|
-
[ngTemplateOutlet]="column.treeToggleTemplate"
|
|
358
|
-
[ngTemplateOutletContext]="{ cellContext: cellContext }"
|
|
359
|
-
>
|
|
360
|
-
</ng-template>
|
|
361
|
-
</ng-container>
|
|
362
|
-
|
|
363
|
-
<span *ngIf="!column.cellTemplate" [title]="sanitizedValue" [innerHTML]="value"> </span>
|
|
364
|
-
<ng-template
|
|
365
|
-
#cellTemplate
|
|
366
|
-
*ngIf="column.cellTemplate"
|
|
367
|
-
[ngTemplateOutlet]="column.cellTemplate"
|
|
368
|
-
[ngTemplateOutletContext]="cellContext"
|
|
369
|
-
>
|
|
370
|
-
</ng-template>
|
|
371
|
-
</div>
|
|
372
|
-
`
|
|
373
|
-
}]
|
|
374
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { displayCheck: [{
|
|
375
|
-
type: Input
|
|
376
|
-
}], group: [{
|
|
377
|
-
type: Input
|
|
378
|
-
}], rowHeight: [{
|
|
379
|
-
type: Input
|
|
380
|
-
}], isSelected: [{
|
|
381
|
-
type: Input
|
|
382
|
-
}], expanded: [{
|
|
383
|
-
type: Input
|
|
384
|
-
}], rowIndex: [{
|
|
385
|
-
type: Input
|
|
386
|
-
}], column: [{
|
|
387
|
-
type: Input
|
|
388
|
-
}], row: [{
|
|
389
|
-
type: Input
|
|
390
|
-
}], sorts: [{
|
|
391
|
-
type: Input
|
|
392
|
-
}], treeStatus: [{
|
|
393
|
-
type: Input
|
|
394
|
-
}], activate: [{
|
|
395
|
-
type: Output
|
|
396
|
-
}], treeAction: [{
|
|
397
|
-
type: Output
|
|
398
|
-
}], cellTemplate: [{
|
|
399
|
-
type: ViewChild,
|
|
400
|
-
args: ['cellTemplate', { read: ViewContainerRef, static: true }]
|
|
401
|
-
}], columnCssClasses: [{
|
|
402
|
-
type: HostBinding,
|
|
403
|
-
args: ['class']
|
|
404
|
-
}], width: [{
|
|
405
|
-
type: HostBinding,
|
|
406
|
-
args: ['style.width.px']
|
|
407
|
-
}], minWidth: [{
|
|
408
|
-
type: HostBinding,
|
|
409
|
-
args: ['style.minWidth.px']
|
|
410
|
-
}], maxWidth: [{
|
|
411
|
-
type: HostBinding,
|
|
412
|
-
args: ['style.maxWidth.px']
|
|
413
|
-
}], height: [{
|
|
414
|
-
type: HostBinding,
|
|
415
|
-
args: ['style.height']
|
|
416
|
-
}], onFocus: [{
|
|
417
|
-
type: HostListener,
|
|
418
|
-
args: ['focus']
|
|
419
|
-
}], onBlur: [{
|
|
420
|
-
type: HostListener,
|
|
421
|
-
args: ['blur']
|
|
422
|
-
}], onClick: [{
|
|
423
|
-
type: HostListener,
|
|
424
|
-
args: ['click', ['$event']]
|
|
425
|
-
}], onDblClick: [{
|
|
426
|
-
type: HostListener,
|
|
427
|
-
args: ['dblclick', ['$event']]
|
|
428
|
-
}], onKeyDown: [{
|
|
429
|
-
type: HostListener,
|
|
430
|
-
args: ['keydown', ['$event']]
|
|
431
|
-
}] } });
|
|
432
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N3aW1sYW5lL25neC1kYXRhdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL2JvZHkvYm9keS1jZWxsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxXQUFXLEVBQ1gsU0FBUyxFQUVULE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUVaLGdCQUFnQixFQUdoQix1QkFBdUIsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBK0N4QyxNQUFNLE9BQU8sMEJBQTBCO0lBb01yQyxZQUFZLE9BQW1CLEVBQVUsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUE5RnBELGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUEyRTdELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxlQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQWdCbEQsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNqQixrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIs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QVE7c0JBRFgsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBTTVCLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBTTVCLE1BQU07c0JBRFQsV0FBVzt1QkFBQyxjQUFjO2dCQWtGM0IsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU87Z0JBTXJCLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNO2dCQU1wQixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWVqQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWVwQyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgUGlwZVRyYW5zZm9ybSxcbiAgSG9zdEJpbmRpbmcsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIE9uRGVzdHJveSxcbiAgRG9DaGVjayxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGFibGUtY29sdW1uLnR5cGUnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL3NvcnQtZGlyZWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgS2V5cyB9IGZyb20gJy4uLy4uL3V0aWxzL2tleXMnO1xuXG5leHBvcnQgdHlwZSBUcmVlU3RhdHVzID0gJ2NvbGxhcHNlZCcgfCAnZXhwYW5kZWQnIHwgJ2xvYWRpbmcnIHwgJ2Rpc2FibGVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YXRhYmxlLWJvZHktY2VsbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJkYXRhdGFibGUtYm9keS1jZWxsLWxhYmVsXCIgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cImNhbGNMZWZ0TWFyZ2luKGNvbHVtbiwgcm93KVwiPlxuICAgICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiY29sdW1uLmNoZWNrYm94YWJsZSAmJiAoIWRpc3BsYXlDaGVjayB8fCBkaXNwbGF5Q2hlY2socm93LCBjb2x1bW4sIHZhbHVlKSlcIlxuICAgICAgICBjbGFzcz1cImRhdGF0YWJsZS1jaGVja2JveFwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCIgKGNsaWNrKT1cIm9uQ2hlY2tib3hDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICA8L2xhYmVsPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5pc1RyZWVDb2x1bW5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGVcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YXRhYmxlLXRyZWUtYnV0dG9uXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwidHJlZVN0YXR1cyA9PT0gJ2Rpc2FibGVkJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVHJlZUFjdGlvbigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJ0cmVlU3RhdHVzID09PSAnbG9hZGluZydcIiBjbGFzcz1cImljb24gZGF0YXRhYmxlLWljb24tY29sbGFwc2VcIj48L2k+XG4gICAgICAgICAgICA8aSAqbmdJZj1cInRyZWVTdGF0dXMgPT09ICdjb2xsYXBzZWQnXCIgY2xhc3M9XCJpY29uIGRhdGF0YWJsZS1pY29uLXVwXCI+PC9pPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJ0cmVlU3RhdHVzID09PSAnZXhwYW5kZWQnIHx8IHRyZWVTdGF0dXMgPT09ICdkaXNhYmxlZCdcIiBjbGFzcz1cImljb24gZGF0YXRhYmxlLWljb24tZG93blwiPjwvaT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAqbmdJZj1cImNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNlbGxDb250ZXh0OiBjZWxsQ29udGV4dCB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbHVtbi5jZWxsVGVtcGxhdGVcIiBbdGl0bGVdPVwic2FuaXRpemVkVmFsdWVcIiBbaW5uZXJIVE1MXT1cInZhbHVlXCI+IDwvc3Bhbj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAjY2VsbFRlbXBsYXRlXG4gICAgICAgICpuZ0lmPVwiY29sdW1uLmNlbGxUZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5jZWxsVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY2VsbENvbnRleHRcIlxuICAgICAgPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVCb2R5Q2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGRpc3BsYXlDaGVjazogKHJvdzogYW55LCBjb2x1bW4/OiBUYWJsZUNvbHVtbiwgdmFsdWU/OiBhbnkpID0+IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc2V0IGdyb3VwKGdyb3VwOiBhbnkpIHtcbiAgICB0aGlzLl9ncm91cCA9IGdyb3VwO1xuICAgIHRoaXMuY2VsbENvbnRleHQuZ3JvdXAgPSBncm91cDtcbiAgICB0aGlzLmNoZWNrVmFsdWVVcGRhdGVzKCk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBncm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JvdXA7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcm93SGVpZ2h0KHZhbDogbnVtYmVyKSB7XG4gICAgdGhpcy5fcm93SGVpZ2h0ID0gdmFsO1xuICAgIHRoaXMuY2VsbENvbnRleHQucm93SGVpZ2h0ID0gdmFsO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHJvd0hlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm93SGVpZ2h0O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGlzU2VsZWN0ZWQodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNTZWxlY3RlZCA9IHZhbDtcbiAgICB0aGlzLmNlbGxDb250ZXh0LmlzU2VsZWN0ZWQgPSB2YWw7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBpc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1NlbGVjdGVkO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGV4cGFuZGVkKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4cGFuZGVkID0gdmFsO1xuICAgIHRoaXMuY2VsbENvbnRleHQuZXhwYW5kZWQgPSB2YWw7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWQ7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcm93SW5kZXgodmFsOiBudW1iZXIpIHtcbiAgICB0aGlzLl9yb3dJbmRleCA9IHZhbDtcbiAgICB0aGlzLmNlbGxDb250ZXh0LnJvd0luZGV4ID0gdmFsO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHJvd0luZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd0luZGV4O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGNvbHVtbihjb2x1bW46IFRhYmxlQ29sdW1uKSB7XG4gICAgdGhpcy5fY29sdW1uID0gY29sdW1uO1xuICAgIHRoaXMuY2VsbENvbnRleHQuY29sdW1uID0gY29sdW1uO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbigpOiBUYWJsZUNvbHVtbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbjtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCByb3cocm93OiBhbnkpIHtcbiAgICB0aGlzLl9yb3cgPSByb3c7XG4gICAgdGhpcy5jZWxsQ29udGV4dC5yb3cgPSByb3c7XG4gICAgdGhpcy5jaGVja1ZhbHVlVXBkYXRlcygpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcm93KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzb3J0cyh2YWw6IGFueVtdKSB7XG4gICAgdGhpcy5fc29ydHMgPSB2YWw7XG4gICAgdGhpcy5jYWxjU29ydERpciA9IHRoaXMuY2FsY1NvcnREaXIodmFsKTtcbiAgfVxuXG4gIGdldCBzb3J0cygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnRzO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRyZWVTdGF0dXMoc3RhdHVzOiBUcmVlU3RhdHVzKSB7XG4gICAgaWYgKHN0YXR1cyAhPT0gJ2NvbGxhcHNlZCcgJiYgc3RhdHVzICE9PSAnZXhwYW5kZWQnICYmIHN0YXR1cyAhPT0gJ2xvYWRpbmcnICYmIHN0YXR1cyAhPT0gJ2Rpc2FibGVkJykge1xuICAgICAgdGhpcy5fdHJlZVN0YXR1cyA9ICdjb2xsYXBzZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90cmVlU3RhdHVzID0gc3RhdHVzO1xuICAgIH1cbiAgICB0aGlzLmNlbGxDb250ZXh0LnRyZWVTdGF0dXMgPSB0aGlzLl90cmVlU3RhdHVzO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHRyZWVTdGF0dXMoKTogVHJlZVN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuX3RyZWVTdGF0dXM7XG4gIH1cblxuICBAT3V0cHV0KCkgYWN0aXZhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKSB0cmVlQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdjZWxsVGVtcGxhdGUnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBjZWxsVGVtcGxhdGU6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBjb2x1bW5Dc3NDbGFzc2VzKCk6IGFueSB7XG4gICAgbGV0IGNscyA9ICdkYXRhdGFibGUtYm9keS1jZWxsJztcbiAgICBpZiAodGhpcy5jb2x1bW4uY2VsbENsYXNzKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29sdW1uLmNlbGxDbGFzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2xzICs9ICcgJyArIHRoaXMuY29sdW1uLmNlbGxDbGFzcztcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuY29sdW1uLmNlbGxDbGFzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLmNvbHVtbi5jZWxsQ2xhc3Moe1xuICAgICAgICAgIHJvdzogdGhpcy5yb3csXG4gICAgICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXG4gICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgICByb3dIZWlnaHQ6IHRoaXMucm93SGVpZ2h0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcmVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNscyArPSAnICcgKyByZXM7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVzKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKHJlc1trXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBjbHMgKz0gYCAke2t9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0aGlzLnNvcnREaXIpIHtcbiAgICAgIGNscyArPSAnIHNvcnQtYWN0aXZlJztcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICBjbHMgKz0gJyBhY3RpdmUnO1xuICAgIH1cbiAgICBpZiAodGhpcy5zb3J0RGlyID09PSBTb3J0RGlyZWN0aW9uLmFzYykge1xuICAgICAgY2xzICs9ICcgc29ydC1hc2MnO1xuICAgIH1cbiAgICBpZiAodGhpcy5zb3J0RGlyID09PSBTb3J0RGlyZWN0aW9uLmRlc2MpIHtcbiAgICAgIGNscyArPSAnIHNvcnQtZGVzYyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNscztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgucHgnKVxuICBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW4ud2lkdGg7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbldpZHRoLnB4JylcbiAgZ2V0IG1pbldpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uLm1pbldpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXhXaWR0aC5weCcpXG4gIGdldCBtYXhXaWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbi5tYXhXaWR0aDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JylcbiAgZ2V0IGhlaWdodCgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMucm93SGVpZ2h0O1xuICAgIGlmIChpc05hTihoZWlnaHQpKSB7XG4gICAgICByZXR1cm4gaGVpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4gaGVpZ2h0ICsgJ3B4JztcbiAgfVxuXG4gIHNhbml0aXplZFZhbHVlOiBhbnk7XG4gIHZhbHVlOiBhbnk7XG4gIHNvcnREaXI6IFNvcnREaXJlY3Rpb247XG4gIGlzRm9jdXNlZCA9IGZhbHNlO1xuICBvbkNoZWNrYm94Q2hhbmdlRm4gPSB0aGlzLm9uQ2hlY2tib3hDaGFuZ2UuYmluZCh0aGlzKTtcbiAgYWN0aXZhdGVGbiA9IHRoaXMuYWN0aXZhdGUuZW1pdC5iaW5kKHRoaXMuYWN0aXZhdGUpO1xuXG4gIGNlbGxDb250ZXh0OiBhbnk7XG5cbiAgcHJpdmF0ZSBfaXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfc29ydHM6IGFueVtdO1xuICBwcml2YXRlIF9jb2x1bW46IFRhYmxlQ29sdW1uO1xuICBwcml2YXRlIF9yb3c6IGFueTtcbiAgcHJpdmF0ZSBfZ3JvdXA6IGFueTtcbiAgcHJpdmF0ZSBfcm93SGVpZ2h0OiBudW1iZXI7XG4gIHByaXZhdGUgX3Jvd0luZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgX2V4cGFuZGVkOiBib29sZWFuO1xuICBwcml2YXRlIF9lbGVtZW50OiBhbnk7XG4gIHByaXZhdGUgX3RyZWVTdGF0dXM6IFRyZWVTdGF0dXM7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLmNlbGxDb250ZXh0ID0ge1xuICAgICAgb25DaGVja2JveENoYW5nZUZuOiB0aGlzLm9uQ2hlY2tib3hDaGFuZ2VGbixcbiAgICAgIGFjdGl2YXRlRm46IHRoaXMuYWN0aXZhdGVGbixcbiAgICAgIHJvdzogdGhpcy5yb3csXG4gICAgICBncm91cDogdGhpcy5ncm91cCxcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgIHJvd0hlaWdodDogdGhpcy5yb3dIZWlnaHQsXG4gICAgICBpc1NlbGVjdGVkOiB0aGlzLmlzU2VsZWN0ZWQsXG4gICAgICByb3dJbmRleDogdGhpcy5yb3dJbmRleCxcbiAgICAgIHRyZWVTdGF0dXM6IHRoaXMudHJlZVN0YXR1cyxcbiAgICAgIG9uVHJlZUFjdGlvbjogdGhpcy5vblRyZWVBY3Rpb24uYmluZCh0aGlzKVxuICAgIH07XG5cbiAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNlbGxUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5jZWxsVGVtcGxhdGUuY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuICBjaGVja1ZhbHVlVXBkYXRlcygpOiB2b2lkIHtcbiAgICBsZXQgdmFsdWUgPSAnJztcblxuICAgIGlmICghdGhpcy5yb3cgfHwgIXRoaXMuY29sdW1uKSB7XG4gICAgICB2YWx1ZSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWwgPSB0aGlzLmNvbHVtbi4kJHZhbHVlR2V0dGVyKHRoaXMucm93LCB0aGlzLmNvbHVtbi5wcm9wKTtcbiAgICAgIGNvbnN0IHVzZXJQaXBlOiBQaXBlVHJhbnNmb3JtID0gdGhpcy5jb2x1bW4ucGlwZTtcblxuICAgICAgaWYgKHVzZXJQaXBlKSB7XG4gICAgICAgIHZhbHVlID0gdXNlclBpcGUudHJhbnNmb3JtKHZhbCk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFsdWUgPSB2YWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmNlbGxDb250ZXh0LnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLnNhbml0aXplZFZhbHVlID0gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCA/IHRoaXMuc3RyaXBIdG1sKHZhbHVlKSA6IHZhbHVlO1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmF0ZS5lbWl0KHtcbiAgICAgIHR5cGU6ICdjbGljaycsXG4gICAgICBldmVudCxcbiAgICAgIHJvdzogdGhpcy5yb3csXG4gICAgICBncm91cDogdGhpcy5ncm91cCxcbiAgICAgIHJvd0hlaWdodDogdGhpcy5yb3dIZWlnaHQsXG4gICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBjZWxsRWxlbWVudDogdGhpcy5fZWxlbWVudFxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZGJsY2xpY2snLCBbJyRldmVudCddKVxuICBvbkRibENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmF0ZS5lbWl0KHtcbiAgICAgIHR5cGU6ICdkYmxjbGljaycsXG4gICAgICBldmVudCxcbiAgICAgIHJvdzogdGhpcy5yb3csXG4gICAgICBncm91cDogdGhpcy5ncm91cCxcbiAgICAgIHJvd0hlaWdodDogdGhpcy5yb3dIZWlnaHQsXG4gICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBjZWxsRWxlbWVudDogdGhpcy5fZWxlbWVudFxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IGlzVGFyZ2V0Q2VsbCA9IGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fZWxlbWVudDtcblxuICAgIGNvbnN0IGlzQWN0aW9uID1cbiAgICAgIGtleUNvZGUgPT09IEtleXMucmV0dXJuIHx8XG4gICAgICBrZXlDb2RlID09PSBLZXlzLmRvd24gfHxcbiAgICAgIGtleUNvZGUgPT09IEtleXMudXAgfHxcbiAgICAgIGtleUNvZGUgPT09IEtleXMubGVmdCB8fFxuICAgICAga2V5Q29kZSA9PT0gS2V5cy5yaWdodDtcblxuICAgIGlmIChpc0FjdGlvbiAmJiBpc1RhcmdldENlbGwpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgdGhpcy5hY3RpdmF0ZS5lbWl0KHtcbiAgICAgICAgdHlwZTogJ2tleWRvd24nLFxuICAgICAgICBldmVudCxcbiAgICAgICAgcm93OiB0aGlzLnJvdyxcbiAgICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXG4gICAgICAgIHJvd0hlaWdodDogdGhpcy5yb3dIZWlnaHQsXG4gICAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICBjZWxsRWxlbWVudDogdGhpcy5fZWxlbWVudFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DaGVja2JveENoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmF0ZS5lbWl0KHtcbiAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICBldmVudCxcbiAgICAgIHJvdzogdGhpcy5yb3csXG4gICAgICBncm91cDogdGhpcy5ncm91cCxcbiAgICAgIHJvd0hlaWdodDogdGhpcy5yb3dIZWlnaHQsXG4gICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBjZWxsRWxlbWVudDogdGhpcy5fZWxlbWVudCxcbiAgICAgIHRyZWVTdGF0dXM6ICdjb2xsYXBzZWQnXG4gICAgfSk7XG4gIH1cblxuICBjYWxjU29ydERpcihzb3J0czogYW55W10pOiBhbnkge1xuICAgIGlmICghc29ydHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0ID0gc29ydHMuZmluZCgoczogYW55KSA9PiB7XG4gICAgICByZXR1cm4gcy5wcm9wID09PSB0aGlzLmNvbHVtbi5wcm9wO1xuICAgIH0pO1xuXG4gICAgaWYgKHNvcnQpIHtcbiAgICAgIHJldHVybiBzb3J0LmRpcjtcbiAgICB9XG4gIH1cblxuICBzdHJpcEh0bWwoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWh0bWwucmVwbGFjZSkge1xuICAgICAgcmV0dXJuIGh0bWw7XG4gICAgfVxuICAgIHJldHVybiBodG1sLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCAnJyk7XG4gIH1cblxuICBvblRyZWVBY3Rpb24oKSB7XG4gICAgdGhpcy50cmVlQWN0aW9uLmVtaXQodGhpcy5yb3cpO1xuICB9XG5cbiAgY2FsY0xlZnRNYXJnaW4oY29sdW1uOiBhbnksIHJvdzogYW55KSB7XG4gICAgY29uc3QgbGV2ZWxJbmRlbnQgPSBjb2x1bW4udHJlZUxldmVsSW5kZW50ICE9IG51bGwgPyBjb2x1bW4udHJlZUxldmVsSW5kZW50IDogNTA7XG4gICAgcmV0dXJuIGNvbHVtbi5pc1RyZWVDb2x1bW4gPyByb3cubGV2ZWwgKiBsZXZlbEluZGVudCA6IDA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DatatableGroupHeaderTemplateDirective {
|
|
4
|
-
constructor(template) {
|
|
5
|
-
this.template = template;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
DatatableGroupHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatatableGroupHeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
9
|
-
DatatableGroupHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: DatatableGroupHeaderTemplateDirective, selector: "[ngx-datatable-group-header-template]", ngImport: i0 });
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatatableGroupHeaderTemplateDirective, decorators: [{
|
|
11
|
-
type: Directive,
|
|
12
|
-
args: [{
|
|
13
|
-
selector: '[ngx-datatable-group-header-template]'
|
|
14
|
-
}]
|
|
15
|
-
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1ncm91cC1oZWFkZXItdGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3dpbWxhbmUvbmd4LWRhdGF0YWJsZS9zcmMvbGliL2NvbXBvbmVudHMvYm9keS9ib2R5LWdyb3VwLWhlYWRlci10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFLdkQsTUFBTSxPQUFPLHFDQUFxQztJQUNoRCxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFHLENBQUM7O2tJQUR0QyxxQ0FBcUM7c0hBQXJDLHFDQUFxQzsyRkFBckMscUNBQXFDO2tCQUhqRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1Q0FBdUM7aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmd4LWRhdGF0YWJsZS1ncm91cC1oZWFkZXItdGVtcGxhdGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhdGFibGVHcm91cEhlYWRlclRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuIl19
|