@firestitch/list 12.19.2 → 12.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/components/body/row/row.component.d.ts +4 -3
- package/bundles/firestitch-list.umd.js +63 -60
- package/bundles/firestitch-list.umd.js.map +1 -1
- package/esm2015/app/components/body/row/row.component.js +55 -45
- package/fesm2015/firestitch-list.js +54 -44
- package/fesm2015/firestitch-list.js.map +1 -1
- package/package.json +1 -1
|
@@ -55,50 +55,32 @@ export class FsRowComponent {
|
|
|
55
55
|
}
|
|
56
56
|
get rowCssClass() {
|
|
57
57
|
var _a, _b, _c;
|
|
58
|
-
let
|
|
58
|
+
let classes = ['fs-list-row'];
|
|
59
59
|
if (this.rowIndex % 2 !== 0) {
|
|
60
|
-
|
|
60
|
+
classes.push('fs-list-row-odd');
|
|
61
61
|
}
|
|
62
62
|
if (this.rowIndex % 2 === 0) {
|
|
63
|
-
|
|
63
|
+
classes.push('fs-list-row-even');
|
|
64
64
|
}
|
|
65
65
|
if ((_a = this.row) === null || _a === void 0 ? void 0 : _a.isGroup) {
|
|
66
|
-
|
|
66
|
+
classes.push('fs-list-row-group');
|
|
67
67
|
}
|
|
68
68
|
else if ((_b = this.row) === null || _b === void 0 ? void 0 : _b.isChild) { // TODO fix isChild & all
|
|
69
|
-
|
|
69
|
+
classes.push('fs-list-row-group-child');
|
|
70
70
|
}
|
|
71
71
|
else if ((_c = this.row) === null || _c === void 0 ? void 0 : _c.isGroupFooter) {
|
|
72
|
-
|
|
72
|
+
classes.push('fs-list-row-group-footer');
|
|
73
73
|
}
|
|
74
74
|
else {
|
|
75
|
-
|
|
75
|
+
classes.push('fs-list-row-body');
|
|
76
76
|
}
|
|
77
77
|
if (this.rowClass) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (this.row.isGroup) {
|
|
83
|
-
options.groupIndex = this.row.index;
|
|
84
|
-
}
|
|
85
|
-
else if (this.row.isChild || this.row.isGroupFooter) { // TODO fix isChild & all
|
|
86
|
-
options.groupIndex = this.row.parent.index;
|
|
87
|
-
}
|
|
88
|
-
const resultClass = this.rowClass(this.row.data, options);
|
|
89
|
-
if (typeof resultClass === 'string') {
|
|
90
|
-
cls += ` ${resultClass}`;
|
|
91
|
-
}
|
|
92
|
-
else if (typeof resultClass === 'object') {
|
|
93
|
-
const keys = Object.keys(resultClass);
|
|
94
|
-
for (const k of keys) {
|
|
95
|
-
if (resultClass[k] === true) {
|
|
96
|
-
cls += ` ${k}`;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
78
|
+
classes = [
|
|
79
|
+
...classes,
|
|
80
|
+
...this._getRowClasses(this.rowClass),
|
|
81
|
+
];
|
|
100
82
|
}
|
|
101
|
-
return
|
|
83
|
+
return classes.join(' ');
|
|
102
84
|
}
|
|
103
85
|
get dragCellVisible() {
|
|
104
86
|
return !this.row.isGroup;
|
|
@@ -106,25 +88,25 @@ export class FsRowComponent {
|
|
|
106
88
|
get leftDragDropEnabled() {
|
|
107
89
|
return this.reorderEnabled
|
|
108
90
|
&& this.reorderPosition === ReorderPosition.Left
|
|
109
|
-
&& this.activeFiltersCount
|
|
91
|
+
&& this.activeFiltersCount === 0;
|
|
110
92
|
}
|
|
111
93
|
get rightDragDropEnabled() {
|
|
112
94
|
return this.reorderEnabled
|
|
113
95
|
&& this.reorderPosition === ReorderPosition.Right
|
|
114
|
-
&& this.activeFiltersCount
|
|
96
|
+
&& this.activeFiltersCount === 0;
|
|
115
97
|
}
|
|
116
98
|
ngOnInit() {
|
|
117
|
-
this.
|
|
118
|
-
this.
|
|
99
|
+
this._initRowEvents();
|
|
100
|
+
this._initSelection();
|
|
119
101
|
if (this.row && this.row.isGroup) {
|
|
120
102
|
if (this.row && this.row.isGroup && this.groupActionsRaw) {
|
|
121
103
|
this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));
|
|
122
|
-
this.
|
|
104
|
+
this._filterActionsByCategories();
|
|
123
105
|
}
|
|
124
106
|
}
|
|
125
107
|
else if (this.rowActionsRaw) {
|
|
126
108
|
this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));
|
|
127
|
-
this.
|
|
109
|
+
this._filterActionsByCategories();
|
|
128
110
|
}
|
|
129
111
|
}
|
|
130
112
|
ngDoCheck() {
|
|
@@ -134,7 +116,7 @@ export class FsRowComponent {
|
|
|
134
116
|
action.checkShowStatus(this.row.data, this.rowIndex);
|
|
135
117
|
action.updateLink(this.row.data);
|
|
136
118
|
});
|
|
137
|
-
this.
|
|
119
|
+
this._filterActionsByCategories();
|
|
138
120
|
}
|
|
139
121
|
this._cdRef.markForCheck();
|
|
140
122
|
}
|
|
@@ -173,12 +155,12 @@ export class FsRowComponent {
|
|
|
173
155
|
/**
|
|
174
156
|
* Set event listeners for row
|
|
175
157
|
*/
|
|
176
|
-
|
|
177
|
-
|
|
158
|
+
_initRowEvents() {
|
|
159
|
+
Object.keys(this.rowEvents)
|
|
160
|
+
.forEach((event) => {
|
|
178
161
|
if (this.rowEvents.hasOwnProperty(event)) {
|
|
179
|
-
const listener = this._renderer
|
|
180
|
-
|
|
181
|
-
// evt.stopPropagation();
|
|
162
|
+
const listener = this._renderer
|
|
163
|
+
.listen(this.el.nativeElement, event, (evt) => {
|
|
182
164
|
if (!this.reorderEnabled) {
|
|
183
165
|
this.rowEvents[event]({
|
|
184
166
|
event: evt,
|
|
@@ -189,12 +171,40 @@ export class FsRowComponent {
|
|
|
189
171
|
});
|
|
190
172
|
this._eventListeners.push(listener);
|
|
191
173
|
}
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
_getRowClasses(rowClass) {
|
|
177
|
+
const classes = [];
|
|
178
|
+
const options = {
|
|
179
|
+
index: this.rowIndex,
|
|
180
|
+
type: this.row.type,
|
|
181
|
+
};
|
|
182
|
+
if (this.row.isGroup) {
|
|
183
|
+
options.groupIndex = this.row.index;
|
|
184
|
+
}
|
|
185
|
+
else if (this.row.isChild || this.row.isGroupFooter) { // TODO fix isChild & all
|
|
186
|
+
options.groupIndex = this.row.parent.index;
|
|
187
|
+
}
|
|
188
|
+
const resultClass = rowClass(this.row.data, options);
|
|
189
|
+
if (resultClass) {
|
|
190
|
+
if (typeof resultClass === 'string') {
|
|
191
|
+
classes.push(resultClass);
|
|
192
|
+
}
|
|
193
|
+
else if (typeof resultClass === 'object') {
|
|
194
|
+
const keys = Object.keys(resultClass);
|
|
195
|
+
for (const k of keys) {
|
|
196
|
+
if (resultClass[k] === true) {
|
|
197
|
+
classes.push(k);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
192
201
|
}
|
|
202
|
+
return classes;
|
|
193
203
|
}
|
|
194
204
|
/**
|
|
195
205
|
* Subscribe to selection change events
|
|
196
206
|
*/
|
|
197
|
-
|
|
207
|
+
_initSelection() {
|
|
198
208
|
if (this.selection) {
|
|
199
209
|
this.selected = this.row && this.selection.isRowSelected(this.row.data);
|
|
200
210
|
this.selection.selectionChange$
|
|
@@ -224,7 +234,7 @@ export class FsRowComponent {
|
|
|
224
234
|
});
|
|
225
235
|
}
|
|
226
236
|
}
|
|
227
|
-
|
|
237
|
+
_filterActionsByCategories() {
|
|
228
238
|
this.menuRowActions = [];
|
|
229
239
|
this.inlineRowActions = [];
|
|
230
240
|
this.restoreAction = null;
|
|
@@ -302,4 +312,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
302
312
|
type: HostBinding,
|
|
303
313
|
args: ['class']
|
|
304
314
|
}] } });
|
|
305
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2JvZHkvcm93L3Jvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLGVBQWUsRUFHZixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7O0FBUzdELE1BQU0sT0FBTyxjQUFjO0lBMkN6QixZQUNTLEVBQWMsRUFDYixNQUF5QixFQUN6QixRQUF5QixFQUN6QixTQUFvQixFQUNwQixjQUE0QztRQUo3QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixtQkFBYyxHQUFkLGNBQWMsQ0FBOEI7UUE3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RUE7NEZEbENhLGNBQWM7a0JBTjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFdBQVcsRUFBRSxzQkFBc0I7b0JBQ25DLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNuQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7a09BSVEsSUFBSTtzQkFEVixXQUFXO3VCQUFDLFdBQVc7Z0JBR1IsR0FBRztzQkFBbEIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFJQyxjQUFjO3NCQUZwQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGdCQUFnQjtnQkFHYixlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFJQyxRQUFRO3NCQURkLFlBQVk7dUJBQUMsSUFBSTtnQkEyQ1AsbUJBQW1CO3NCQUQ3QixXQUFXO3VCQUFDLDBCQUEwQjtnQkFRNUIsV0FBVztzQkFEckIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBLZXlWYWx1ZURpZmZlcixcbiAgS2V5VmFsdWVEaWZmZXJzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBSZW9yZGVyUG9zaXRpb24sXG4gIFJlb3JkZXJTdHJhdGVneSxcbn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9yZW9yZGVyLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvc2VsZWN0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLWxpc3QvZHJhZ2dhYmxlLWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzTGlzdFJvd0NsYXNzT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBSb3cgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcm93JztcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yb3ctYWN0aW9uLm1vZGVsJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbZnMtbGlzdC1yb3ddJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jvdy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jvdy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNSb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2ssIE9uRGVzdHJveSB7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICBwdWJsaWMgcm9sZSA9ICdyb3cnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyByb3c6IFJvdztcbiAgQElucHV0KCkgcHVibGljIHJvd0FjdGlvbnNSYXc6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBncm91cEFjdGlvbnNSYXc6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBoYXNSb3dBY3Rpb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dFdmVudHMgPSB7fTtcbiAgQElucHV0KCkgcHVibGljIHJvd0NsYXNzO1xuICBASW5wdXQoKSBwdWJsaWMgcmVzdG9yZU1vZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJvd0luZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb2x1bW5zOiBDb2x1bW5bXTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0aW9uQ29udHJvbGxlcjtcbiAgQElucHV0KCkgcHVibGljIHJvd1JlbW92ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgYWN0aXZlRmlsdGVyc0NvdW50OiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kcmFnLXJvdycpXG4gIHB1YmxpYyByZW9yZGVyRW5hYmxlZDogYm9vbGVhbjtcblxuICBASW5wdXQoKSBwdWJsaWMgcmVvcmRlclBvc2l0aW9uOiBSZW9yZGVyUG9zaXRpb24gfCBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgcmVvcmRlclN0cmF0ZWd5OiBSZW9yZGVyU3RyYXRlZ3kgfCBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgcmVvcmRlck11bHRpcGxlOiBib29sZWFuO1xuXG5cbiAgQFZpZXdDaGlsZHJlbigndGQnKVxuICBwdWJsaWMgY2VsbFJlZnM7XG5cbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJQb3NpdGlvbiA9IFJlb3JkZXJQb3NpdGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneTtcbiAgcHVibGljIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIHB1YmxpYyBtZW51Um93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgcHVibGljIGlubGluZVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIHB1YmxpYyByZXN0b3JlQWN0aW9uOiBSb3dBY3Rpb247XG4gIHB1YmxpYyBzZWxlY3RlZCA9IGZhbHNlO1xuICBwdWJsaWMgaW5kZXRlcm1pbmF0ZVNlbGVjdGVkOiBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfcm93RGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxhbnksIGFueT47XG4gIHByaXZhdGUgX2V2ZW50TGlzdGVuZXJzID0gW107XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2RpZmZlcnM6IEtleVZhbHVlRGlmZmVycyxcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgX2RyYWdnYWJsZUxpc3Q6IEZzTGlzdERyYWdnYWJsZUxpc3REaXJlY3RpdmUsXG4gICkge1xuICAgIHRoaXMuX3Jvd0RpZmZlciA9IF9kaWZmZXJzLmZpbmQoe30pLmNyZWF0ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0dyb3VwUm93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJvdy5pc0dyb3VwO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0dyb3VwQ2hpbGRSb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm93LmlzR3JvdXBDaGlsZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNHcm91cEZvb3RlclJvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3cuaXNHcm91cEZvb3RlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEcmFnRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnNlbGVjdGVkICYmIHRoaXMucmVvcmRlck11bHRpcGxlICYmICEhdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRSb3dzLnNpemU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm11bHRpcGxlLXNlbGVjdGlvbicpXG4gIHB1YmxpYyBnZXQgaXNNdWx0aXBsZVNlbGVjdGlvbigpIHtcbiAgICBjb25zdCBtdWx0aXBsZSA9IHRoaXMucmVvcmRlck11bHRpcGxlO1xuXG4gICAgcmV0dXJuIG11bHRpcGxlICYmIHRoaXMuc2VsZWN0ZWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIGdldCByb3dDc3NDbGFzcygpIHtcbiAgICBsZXQgY2xzID0gJ2ZzLWxpc3Qtcm93JztcblxuICAgIGlmICh0aGlzLnJvd0luZGV4ICUgMiAhPT0gMCkge1xuICAgICAgY2xzICs9ICcgZnMtbGlzdC1yb3ctb2RkJztcbiAgICB9XG4gICAgaWYgKHRoaXMucm93SW5kZXggJSAyID09PSAwKSB7XG4gICAgICBjbHMgKz0gJyBmcy1saXN0LXJvdy1ldmVuJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb3c/LmlzR3JvdXApIHtcbiAgICAgIGNscyArPSAnIGZzLWxpc3Qtcm93LWdyb3VwJztcbiAgICB9IGVsc2UgaWYgKCh0aGlzLnJvdyBhcyBhbnkpPy5pc0NoaWxkKSB7IC8vIFRPRE8gZml4IGlzQ2hpbGQgJiBhbGxcbiAgICAgIGNscyArPSAnIGZzLWxpc3Qtcm93LWdyb3VwLWNoaWxkJztcbiAgICB9IGVsc2UgaWYgKHRoaXMucm93Py5pc0dyb3VwRm9vdGVyKSB7XG4gICAgICBjbHMgKz0gJyBmcy1saXN0LXJvdy1ncm91cC1mb290ZXInO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbHMgKz0gJyBmcy1saXN0LXJvdy1ib2R5JztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb3dDbGFzcykge1xuICAgICAgY29uc3Qgb3B0aW9uczogRnNMaXN0Um93Q2xhc3NPcHRpb25zID0ge1xuICAgICAgICBpbmRleDogdGhpcy5yb3dJbmRleCxcbiAgICAgICAgdHlwZTogdGhpcy5yb3cudHlwZSxcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLnJvdy5pc0dyb3VwKSB7XG4gICAgICAgIG9wdGlvbnMuZ3JvdXBJbmRleCA9IHRoaXMucm93LmluZGV4O1xuICAgICAgfSBlbHNlIGlmICgodGhpcy5yb3cgYXMgYW55KS5pc0NoaWxkIHx8IHRoaXMucm93LmlzR3JvdXBGb290ZXIpIHsgLy8gVE9ETyBmaXggaXNDaGlsZCAmIGFsbFxuICAgICAgICBvcHRpb25zLmdyb3VwSW5kZXggPSB0aGlzLnJvdy5wYXJlbnQuaW5kZXg7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdENsYXNzID0gdGhpcy5yb3dDbGFzcyh0aGlzLnJvdy5kYXRhLCBvcHRpb25zKTtcblxuICAgICAgaWYgKHR5cGVvZiByZXN1bHRDbGFzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2xzICs9IGAgJHtyZXN1bHRDbGFzc31gO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzdWx0Q2xhc3MgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhyZXN1bHRDbGFzcyk7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdENsYXNzW2tdID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjbHMgKz0gYCAke2t9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xzO1xuICB9XG5cbiAgcHVibGljIGdldCBkcmFnQ2VsbFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnJvdy5pc0dyb3VwO1xuICB9XG5cbiAgcHVibGljIGdldCBsZWZ0RHJhZ0Ryb3BFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlb3JkZXJFbmFibGVkXG4gICAgICAmJiB0aGlzLnJlb3JkZXJQb3NpdGlvbiA9PT0gUmVvcmRlclBvc2l0aW9uLkxlZnRcbiAgICAgICYmIHRoaXMuYWN0aXZlRmlsdGVyc0NvdW50ID09IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJpZ2h0RHJhZ0Ryb3BFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlb3JkZXJFbmFibGVkXG4gICAgICAmJiB0aGlzLnJlb3JkZXJQb3NpdGlvbiA9PT0gUmVvcmRlclBvc2l0aW9uLlJpZ2h0XG4gICAgICAmJiB0aGlzLmFjdGl2ZUZpbHRlcnNDb3VudCA9PSAwO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdFJvd0V2ZW50cygpO1xuICAgIHRoaXMuaW5pdFNlbGVjdGlvbigpO1xuXG4gICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXApIHtcbiAgICAgIGlmICh0aGlzLnJvdyAmJiB0aGlzLnJvdy5pc0dyb3VwICYmIHRoaXMuZ3JvdXBBY3Rpb25zUmF3KSB7XG4gICAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMuZ3JvdXBBY3Rpb25zUmF3Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5yb3dBY3Rpb25zUmF3KSB7XG4gICAgICB0aGlzLnJvd0FjdGlvbnMgPSB0aGlzLnJvd0FjdGlvbnNSYXcubWFwKChhY3Rpb24pID0+IG5ldyBSb3dBY3Rpb24oYWN0aW9uKSk7XG5cbiAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMuX3Jvd0RpZmZlci5kaWZmKHRoaXMucm93KSkge1xuICAgICAgaWYgKHRoaXMucm93QWN0aW9ucykge1xuICAgICAgICB0aGlzLnJvd0FjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgYWN0aW9uLmNoZWNrU2hvd1N0YXR1cyh0aGlzLnJvdy5kYXRhLCB0aGlzLnJvd0luZGV4KTtcbiAgICAgICAgICBhY3Rpb24udXBkYXRlTGluayh0aGlzLnJvdy5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHtcbiAgICAgIGxpc3RlbmVyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3Qgcm93IGJ5IGNoZWNrYm94XG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHVibGljIHNlbGVjdFJvdyhldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5yb3dTZWxlY3Rpb25DaGFuZ2UodGhpcy5yb3csIGV2ZW50LmNoZWNrZWQpO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrIEJ5IGZvciBpbXByb3ZlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHVibGljIGRyYWdTdGFydChldmVudCkge1xuICAgIGlmICh0aGlzLnJlb3JkZXJFbmFibGVkICYmICF0aGlzLmlzRHJhZ0Rpc2FibGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIHRoaXMuX2RyYWdnYWJsZUxpc3QuZHJhZ1N0YXJ0KHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBldmVudCBsaXN0ZW5lcnMgZm9yIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBpbml0Um93RXZlbnRzKCkge1xuICAgIGZvciAoY29uc3QgZXZlbnQgaW4gdGhpcy5yb3dFdmVudHMpIHtcbiAgICAgIGlmICh0aGlzLnJvd0V2ZW50cy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcbiAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4odGhpcy5lbC5uYXRpdmVFbGVtZW50LCBldmVudCwgKGV2dCkgPT4ge1xuICAgICAgICAgIC8vIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIC8vIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgIGlmICghdGhpcy5yZW9yZGVyRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5yb3dFdmVudHNbZXZlbnRdKHtcbiAgICAgICAgICAgICAgZXZlbnQ6IGV2dCxcbiAgICAgICAgICAgICAgcm93OiB0aGlzLnJvdy5kYXRhLFxuICAgICAgICAgICAgICByb3dJbmRleDogdGhpcy5yb3dJbmRleCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzZWxlY3Rpb24gY2hhbmdlIGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSBpbml0U2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMucm93ICYmIHRoaXMuc2VsZWN0aW9uLmlzUm93U2VsZWN0ZWQodGhpcy5yb3cuZGF0YSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGlvbkNoYW5nZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgLy8gLy8gV291bGQgbGlrZSB0byByZXNwb25kIG9ubHkgd2hlbiBjaGVja2JveCBvbiB0b3AgaXMgY2hhbmdlZFxuICAgICAgICAgIC8vIC8vIG9yIHdhcyBjbGlja2VkIFwiU2VsZWN0IEFsbFwiIGluIHNlbGVjdGlvbiBkaWFsb2dcbiAgICAgICAgICAvLyBmaWx0ZXIoKHt0eXBlfSkgPT4ge1xuICAgICAgICAgIC8vICAgcmV0dXJuIHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZVxuICAgICAgICAgIC8vICAgICB8fCB0eXBlID09PSBTZWxlY3Rpb25DaGFuZ2VUeXBlLlNlbGVjdGVkQWxsO1xuICAgICAgICAgIC8vIH0pLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMucm93ICYmIHRoaXMuc2VsZWN0aW9uLmlzUm93U2VsZWN0ZWQodGhpcy5yb3cuZGF0YSk7XG5cbiAgICAgICAgICBpZiAodGhpcy5yb3c/LmlzR3JvdXApIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwU2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uaXNHcm91cFNlbGVjdGVkKHRoaXMucm93KTtcblxuICAgICAgICAgICAgaWYgKGdyb3VwU2VsZWN0aW9uID09PSAnaW5kZXRlcm1pbmF0ZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBncm91cFNlbGVjdGlvbjtcbiAgICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCkge1xuICAgIHRoaXMubWVudVJvd0FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLmlubGluZVJvd0FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLnJlc3RvcmVBY3Rpb24gPSBudWxsO1xuXG4gICAgdGhpcy5yb3dBY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuXG4gICAgICBpZiAoIWFjdGlvbi5pc1Nob3duKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbi5tZW51ICYmICFhY3Rpb24ucmVzdG9yZSkge1xuICAgICAgICB0aGlzLm1lbnVSb3dBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoIWFjdGlvbi5tZW51ICYmICFhY3Rpb24ucmVzdG9yZSkge1xuICAgICAgICB0aGlzLmlubGluZVJvd0FjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24ucmVzdG9yZSkge1xuICAgICAgICB0aGlzLnJlc3RvcmVBY3Rpb24gPSBhY3Rpb247XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS0gRHJhZyAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJsZWZ0RHJhZ0Ryb3BFbmFibGVkXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcmFnQ2VsbFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gU2VsZWN0aW9uIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGlvbiAmJiAhKHNlbGVjdGlvbi5kaXNhYmxlZCQgfCBhc3luYylcIj5cbiAgPHRkIGNsYXNzPVwiZnMtbGlzdC1jb2wgZnMtbGlzdC1jb2wtc2VsZWN0aW9uXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyb3cuaXNHcm91cEZvb3RlclwiPlxuICAgICAgPG1hdC1jaGVja2JveCBcbiAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RSb3coJGV2ZW50KVwiXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkXCJcbiAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVNlbGVjdGVkXCI+XG4gICAgICA8L21hdC1jaGVja2JveD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC90ZD5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIENvbnRlbnQgLS0+XG48bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUZuOyBsZXQgaXNGaXJzdCA9IGZpcnN0XCI+XG4gIDx0ZCBmcy1jZWxsXG4gICAgICAqbmdJZj1cIihpc0dyb3VwUm93ICYmICFjb2x1bW4uZ3JvdXBIZWFkZXJDb2xzcGFubmVkKVxuICAgICAgICB8fCAoaXNHcm91cEZvb3RlclJvdyAmJiAhY29sdW1uLmdyb3VwRm9vdGVyQ29sc3Bhbm5lZClcbiAgICAgICAgfHwgKCFpc0dyb3VwUm93ICYmICFpc0dyb3VwRm9vdGVyUm93ICYmICFjb2x1bW4uY2VsbENvbHNwYW5uZWQpXCJcbiAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgIFtyb3dJbmRleF09XCJyb3dJbmRleFwiXG4gICAgICBbY2xhc3NdPVwiKGlzR3JvdXBSb3cgJiYgY29sdW1uLmdyb3VwSGVhZGVyQ29uZmlncy5jbGFzc2VzU3RyaW5nKVxuICAgICAgICB8fCAoaXNHcm91cEZvb3RlclJvdyAmJiBjb2x1bW4uZ3JvdXBGb290ZXJDb25maWdzLmNsYXNzZXNTdHJpbmcpXG4gICAgICAgIHx8ICghaXNHcm91cEZvb3RlclJvdyAmJiBjb2x1bW4uY2VsbENvbmZpZ3MuY2xhc3Nlc1N0cmluZylcIlxuICAgICAgW25nQ2xhc3NdPVwieyAncHJpbWFyeS1jb2wnOiBpc0ZpcnN0IH1cIlxuICAgICAgW2F0dHIuY29sc3Bhbl09XCIoaXNHcm91cFJvdyAmJiBjb2x1bW4uZ3JvdXBIZWFkZXJDb25maWdzLmNvbHNwYW4pXG4gICAgICAgIHx8IChpc0dyb3VwRm9vdGVyUm93ICYmIGNvbHVtbi5ncm91cEZvb3RlckNvbmZpZ3MuY29sc3BhbilcbiAgICAgICAgfHwgY29sdW1uLmNlbGxDb25maWdzLmNvbHNwYW5cIlxuICAgICAgW2F0dHIud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgPlxuICA8L3RkPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gRHJhZyAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJyaWdodERyYWdEcm9wRW5hYmxlZFwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJhZ0NlbGxcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIFJvdyBBY3Rpb25zIC0tPlxuPHRkICpuZ0lmPVwiaGFzUm93QWN0aW9ucyAmJiAhKHJlb3JkZXJFbmFibGVkICYmIHJlb3JkZXJTdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbClcIiBjbGFzcz1cImZzLWxpc3QtY29sIHJvdy1hY3Rpb25zXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNHcm91cEZvb3RlclJvd1wiPlxuICAgIDxmcy1saXN0LXJvdy1hY3Rpb25zXG4gICAgICBbcm93XT1cInJvd1wiXG4gICAgICBbaW5kZXhdPVwicm93SW5kZXhcIlxuICAgICAgW3Jvd0FjdGlvbnNdPVwicm93QWN0aW9uc1wiXG4gICAgICBbbWVudVJvd0FjdGlvbnNdPVwibWVudVJvd0FjdGlvbnNcIlxuICAgICAgW2lubGluZVJvd0FjdGlvbnNdPVwiaW5saW5lUm93QWN0aW9uc1wiXG4gICAgICBbcmVzdG9yZUFjdGlvbl09XCJyZXN0b3JlQWN0aW9uXCJcbiAgICAgIFtyZXN0b3JlTW9kZV09XCJyZXN0b3JlTW9kZVwiXG4gICAgICBbcm93UmVtb3ZlZF09XCJyb3dSZW1vdmVkXCI+XG4gICAgPC9mcy1saXN0LXJvdy1hY3Rpb25zPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdGQ+XG5cbjxuZy10ZW1wbGF0ZSAjZHJhZ0NlbGw+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkcmFnQ2VsbFZpc2libGUgJiYgIWlzR3JvdXBGb290ZXJSb3c7IGVsc2UgZW1wdHlDZWxsXCI+XG4gICAgPHRkIFxuICAgICAgICBjbGFzcz1cImZzLWxpc3QtY29sIGRyYWctY29sXCJcbiAgICAgICAgW2NsYXNzLmRyYWctZGlzYWJsZWRdPVwiaXNEcmFnRGlzYWJsZWRcIlxuICAgICAgICAobW91c2Vkb3duKT1cImRyYWdTdGFydCgkZXZlbnQpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwiZHJhZ1N0YXJ0KCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbj5kcmFnX2hhbmRsZTwvbWF0LWljb24+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZW1wdHlDZWxsPlxuICAgIDx0ZCBjbGFzcz1cImZzLWxpc3QtY29sIGRyYWctY29sXCI+PC90ZD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2JvZHkvcm93L3Jvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLGVBQWUsRUFHZixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7O0FBUzdELE1BQU0sT0FBTyxjQUFjO0lBMkN6QixZQUNTLEVBQWMsRUFDYixNQUF5QixFQUN6QixRQUF5QixFQUN6QixTQUFvQixFQUNwQixjQUE0QztRQUo3QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixtQkFBYyxHQUFkLGNBQWMsQ0FBOEI7UUE3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S0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxJQUFJO2dCQTJDUCxtQkFBbUI7c0JBRDdCLFdBQVc7dUJBQUMsMEJBQTBCO2dCQVE1QixXQUFXO3NCQURyQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIEtleVZhbHVlRGlmZmVyLFxuICBLZXlWYWx1ZURpZmZlcnMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFJlb3JkZXJQb3NpdGlvbixcbiAgUmVvcmRlclN0cmF0ZWd5LFxufSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb25Db250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9zZWxlY3Rpb24tY29udHJvbGxlcic7XG5pbXBvcnQgeyBGc0xpc3REcmFnZ2FibGVMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9kcmFnZ2FibGUtbGlzdC9kcmFnZ2FibGUtbGlzdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNMaXN0Um93Q2xhc3NPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yb3cnO1xuaW1wb3J0IHsgUm93QWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jvdy1hY3Rpb24ubW9kZWwnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tmcy1saXN0LXJvd10nLFxuICB0ZW1wbGF0ZVVybDogJy4vcm93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcm93LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc1Jvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjaywgT25EZXN0cm95IHtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIHB1YmxpYyByb2xlID0gJ3Jvdyc7XG5cbiAgQElucHV0KCkgcHVibGljIHJvdzogUm93O1xuICBASW5wdXQoKSBwdWJsaWMgcm93QWN0aW9uc1JhdzogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGdyb3VwQWN0aW9uc1JhdzogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGhhc1Jvd0FjdGlvbnMgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJvd0V2ZW50cyA9IHt9O1xuICBASW5wdXQoKSBwdWJsaWMgcm93Q2xhc3M7XG4gIEBJbnB1dCgpIHB1YmxpYyByZXN0b3JlTW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcm93SW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIGNvbHVtbnM6IENvbHVtbltdO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uOiBTZWxlY3Rpb25Db250cm9sbGVyO1xuICBASW5wdXQoKSBwdWJsaWMgcm93UmVtb3ZlZDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBhY3RpdmVGaWx0ZXJzQ291bnQ6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYWctcm93JylcbiAgcHVibGljIHJlb3JkZXJFbmFibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyByZW9yZGVyUG9zaXRpb246IFJlb3JkZXJQb3NpdGlvbiB8IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyByZW9yZGVyU3RyYXRlZ3k6IFJlb3JkZXJTdHJhdGVneSB8IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyByZW9yZGVyTXVsdGlwbGU6IGJvb2xlYW47XG5cblxuICBAVmlld0NoaWxkcmVuKCd0ZCcpXG4gIHB1YmxpYyBjZWxsUmVmcztcblxuICBwdWJsaWMgcmVhZG9ubHkgUmVvcmRlclBvc2l0aW9uID0gUmVvcmRlclBvc2l0aW9uO1xuICBwdWJsaWMgcmVhZG9ubHkgUmVvcmRlclN0cmF0ZWd5ID0gUmVvcmRlclN0cmF0ZWd5O1xuICBwdWJsaWMgcm93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgcHVibGljIG1lbnVSb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuICBwdWJsaWMgaW5saW5lUm93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgcHVibGljIHJlc3RvcmVBY3Rpb246IFJvd0FjdGlvbjtcbiAgcHVibGljIHNlbGVjdGVkID0gZmFsc2U7XG4gIHB1YmxpYyBpbmRldGVybWluYXRlU2VsZWN0ZWQ6IGJvb2xlYW4gfCAnaW5kZXRlcm1pbmF0ZScgPSBmYWxzZTtcblxuICBwcml2YXRlIF9yb3dEaWZmZXI6IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PjtcbiAgcHJpdmF0ZSBfZXZlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBfZHJhZ2dhYmxlTGlzdDogRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSxcbiAgKSB7XG4gICAgdGhpcy5fcm93RGlmZmVyID0gX2RpZmZlcnMuZmluZCh7fSkuY3JlYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzR3JvdXBSb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm93LmlzR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzR3JvdXBDaGlsZFJvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3cuaXNHcm91cENoaWxkO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0dyb3VwRm9vdGVyUm93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJvdy5pc0dyb3VwRm9vdGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0RyYWdEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWQgJiYgdGhpcy5yZW9yZGVyTXVsdGlwbGUgJiYgISF0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZFJvd3Muc2l6ZTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubXVsdGlwbGUtc2VsZWN0aW9uJylcbiAgcHVibGljIGdldCBpc011bHRpcGxlU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IG11bHRpcGxlID0gdGhpcy5yZW9yZGVyTXVsdGlwbGU7XG5cbiAgICByZXR1cm4gbXVsdGlwbGUgJiYgdGhpcy5zZWxlY3RlZDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwdWJsaWMgZ2V0IHJvd0Nzc0NsYXNzKCkge1xuICAgIGxldCBjbGFzc2VzID0gWydmcy1saXN0LXJvdyddO1xuXG4gICAgaWYgKHRoaXMucm93SW5kZXggJSAyICE9PSAwKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2ZzLWxpc3Qtcm93LW9kZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yb3dJbmRleCAlIDIgPT09IDApIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctZXZlbicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJvdz8uaXNHcm91cCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdmcy1saXN0LXJvdy1ncm91cCcpO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMucm93IGFzIGFueSk/LmlzQ2hpbGQpIHsgLy8gVE9ETyBmaXggaXNDaGlsZCAmIGFsbFxuICAgICAgY2xhc3Nlcy5wdXNoKCdmcy1saXN0LXJvdy1ncm91cC1jaGlsZCcpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yb3c/LmlzR3JvdXBGb290ZXIpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctZ3JvdXAtZm9vdGVyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctYm9keScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJvd0NsYXNzKSB7XG4gICAgICBjbGFzc2VzID0gW1xuICAgICAgICAuLi5jbGFzc2VzLFxuICAgICAgICAuLi50aGlzLl9nZXRSb3dDbGFzc2VzKHRoaXMucm93Q2xhc3MpLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRyYWdDZWxsVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucm93LmlzR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxlZnREcmFnRHJvcEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVvcmRlckVuYWJsZWRcbiAgICAgICYmIHRoaXMucmVvcmRlclBvc2l0aW9uID09PSBSZW9yZGVyUG9zaXRpb24uTGVmdFxuICAgICAgJiYgdGhpcy5hY3RpdmVGaWx0ZXJzQ291bnQgPT09IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJpZ2h0RHJhZ0Ryb3BFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlb3JkZXJFbmFibGVkXG4gICAgICAmJiB0aGlzLnJlb3JkZXJQb3NpdGlvbiA9PT0gUmVvcmRlclBvc2l0aW9uLlJpZ2h0XG4gICAgICAmJiB0aGlzLmFjdGl2ZUZpbHRlcnNDb3VudCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9pbml0Um93RXZlbnRzKCk7XG4gICAgdGhpcy5faW5pdFNlbGVjdGlvbigpO1xuXG4gICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXApIHtcbiAgICAgIGlmICh0aGlzLnJvdyAmJiB0aGlzLnJvdy5pc0dyb3VwICYmIHRoaXMuZ3JvdXBBY3Rpb25zUmF3KSB7XG4gICAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMuZ3JvdXBBY3Rpb25zUmF3Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xuXG4gICAgICAgIHRoaXMuX2ZpbHRlckFjdGlvbnNCeUNhdGVnb3JpZXMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucm93QWN0aW9uc1Jhdykge1xuICAgICAgdGhpcy5yb3dBY3Rpb25zID0gdGhpcy5yb3dBY3Rpb25zUmF3Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xuXG4gICAgICB0aGlzLl9maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5fcm93RGlmZmVyLmRpZmYodGhpcy5yb3cpKSB7XG4gICAgICBpZiAodGhpcy5yb3dBY3Rpb25zKSB7XG4gICAgICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBhY3Rpb24uY2hlY2tTaG93U3RhdHVzKHRoaXMucm93LmRhdGEsIHRoaXMucm93SW5kZXgpO1xuICAgICAgICAgIGFjdGlvbi51cGRhdGVMaW5rKHRoaXMucm93LmRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHtcbiAgICAgIGxpc3RlbmVyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3Qgcm93IGJ5IGNoZWNrYm94XG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHVibGljIHNlbGVjdFJvdyhldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5yb3dTZWxlY3Rpb25DaGFuZ2UodGhpcy5yb3csIGV2ZW50LmNoZWNrZWQpO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrIEJ5IGZvciBpbXByb3ZlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHVibGljIGRyYWdTdGFydChldmVudCkge1xuICAgIGlmICh0aGlzLnJlb3JkZXJFbmFibGVkICYmICF0aGlzLmlzRHJhZ0Rpc2FibGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIHRoaXMuX2RyYWdnYWJsZUxpc3QuZHJhZ1N0YXJ0KHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBldmVudCBsaXN0ZW5lcnMgZm9yIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdFJvd0V2ZW50cygpIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLnJvd0V2ZW50cylcbiAgICAgIC5mb3JFYWNoKChldmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5yb3dFdmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XG4gICAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlclxuICAgICAgICAgICAgLmxpc3Rlbih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGV2ZW50LCAoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5yZW9yZGVyRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucm93RXZlbnRzW2V2ZW50XSh7XG4gICAgICAgICAgICAgICAgICBldmVudDogZXZ0LFxuICAgICAgICAgICAgICAgICAgcm93OiB0aGlzLnJvdy5kYXRhLFxuICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IHRoaXMucm93SW5kZXgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Um93Q2xhc3Nlcyhyb3dDbGFzcyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjbGFzc2VzID0gW107XG4gICAgY29uc3Qgb3B0aW9uczogRnNMaXN0Um93Q2xhc3NPcHRpb25zID0ge1xuICAgICAgaW5kZXg6IHRoaXMucm93SW5kZXgsXG4gICAgICB0eXBlOiB0aGlzLnJvdy50eXBlLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5yb3cuaXNHcm91cCkge1xuICAgICAgb3B0aW9ucy5ncm91cEluZGV4ID0gdGhpcy5yb3cuaW5kZXg7XG4gICAgfSBlbHNlIGlmICgodGhpcy5yb3cgYXMgYW55KS5pc0NoaWxkIHx8IHRoaXMucm93LmlzR3JvdXBGb290ZXIpIHsgLy8gVE9ETyBmaXggaXNDaGlsZCAmIGFsbFxuICAgICAgb3B0aW9ucy5ncm91cEluZGV4ID0gdGhpcy5yb3cucGFyZW50LmluZGV4O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdENsYXNzID0gcm93Q2xhc3ModGhpcy5yb3cuZGF0YSwgb3B0aW9ucyk7XG4gICAgaWYocmVzdWx0Q2xhc3MpIHtcbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0Q2xhc3MgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChyZXN1bHRDbGFzcyk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXN1bHRDbGFzcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHJlc3VsdENsYXNzKTtcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgICAgICBpZiAocmVzdWx0Q2xhc3Nba10gPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaChrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gc2VsZWN0aW9uIGNoYW5nZSBldmVudHNcbiAgICovXG4gIHByaXZhdGUgX2luaXRTZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5yb3cgJiYgdGhpcy5zZWxlY3Rpb24uaXNSb3dTZWxlY3RlZCh0aGlzLnJvdy5kYXRhKTtcblxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uQ2hhbmdlJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICAvLyAvLyBXb3VsZCBsaWtlIHRvIHJlc3BvbmQgb25seSB3aGVuIGNoZWNrYm94IG9uIHRvcCBpcyBjaGFuZ2VkXG4gICAgICAgICAgLy8gLy8gb3Igd2FzIGNsaWNrZWQgXCJTZWxlY3QgQWxsXCIgaW4gc2VsZWN0aW9uIGRpYWxvZ1xuICAgICAgICAgIC8vIGZpbHRlcigoe3R5cGV9KSA9PiB7XG4gICAgICAgICAgLy8gICByZXR1cm4gdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5BbGxWaXNpYmxlU2VsZWN0aW9uQ2hhbmdlXG4gICAgICAgICAgLy8gICAgIHx8IHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuU2VsZWN0ZWRBbGw7XG4gICAgICAgICAgLy8gfSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5yb3cgJiYgdGhpcy5zZWxlY3Rpb24uaXNSb3dTZWxlY3RlZCh0aGlzLnJvdy5kYXRhKTtcblxuICAgICAgICAgIGlmICh0aGlzLnJvdz8uaXNHcm91cCkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5pc0dyb3VwU2VsZWN0ZWQodGhpcy5yb3cpO1xuXG4gICAgICAgICAgICBpZiAoZ3JvdXBTZWxlY3Rpb24gPT09ICdpbmRldGVybWluYXRlJykge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGdyb3VwU2VsZWN0aW9uO1xuICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCkge1xuICAgIHRoaXMubWVudVJvd0FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLmlubGluZVJvd0FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLnJlc3RvcmVBY3Rpb24gPSBudWxsO1xuXG4gICAgdGhpcy5yb3dBY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuXG4gICAgICBpZiAoIWFjdGlvbi5pc1Nob3duKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbi5tZW51ICYmICFhY3Rpb24ucmVzdG9yZSkge1xuICAgICAgICB0aGlzLm1lbnVSb3dBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoIWFjdGlvbi5tZW51ICYmICFhY3Rpb24ucmVzdG9yZSkge1xuICAgICAgICB0aGlzLmlubGluZVJvd0FjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24ucmVzdG9yZSkge1xuICAgICAgICB0aGlzLnJlc3RvcmVBY3Rpb24gPSBhY3Rpb247XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS0gRHJhZyAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJsZWZ0RHJhZ0Ryb3BFbmFibGVkXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcmFnQ2VsbFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gU2VsZWN0aW9uIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGlvbiAmJiAhKHNlbGVjdGlvbi5kaXNhYmxlZCQgfCBhc3luYylcIj5cbiAgPHRkIGNsYXNzPVwiZnMtbGlzdC1jb2wgZnMtbGlzdC1jb2wtc2VsZWN0aW9uXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyb3cuaXNHcm91cEZvb3RlclwiPlxuICAgICAgPG1hdC1jaGVja2JveCBcbiAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RSb3coJGV2ZW50KVwiXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkXCJcbiAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVNlbGVjdGVkXCI+XG4gICAgICA8L21hdC1jaGVja2JveD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC90ZD5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIENvbnRlbnQgLS0+XG48bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUZuOyBsZXQgaXNGaXJzdCA9IGZpcnN0XCI+XG4gIDx0ZCBmcy1jZWxsXG4gICAgICAqbmdJZj1cIihpc0dyb3VwUm93ICYmICFjb2x1bW4uZ3JvdXBIZWFkZXJDb2xzcGFubmVkKVxuICAgICAgICB8fCAoaXNHcm91cEZvb3RlclJvdyAmJiAhY29sdW1uLmdyb3VwRm9vdGVyQ29sc3Bhbm5lZClcbiAgICAgICAgfHwgKCFpc0dyb3VwUm93ICYmICFpc0dyb3VwRm9vdGVyUm93ICYmICFjb2x1bW4uY2VsbENvbHNwYW5uZWQpXCJcbiAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgIFtyb3dJbmRleF09XCJyb3dJbmRleFwiXG4gICAgICBbY2xhc3NdPVwiKGlzR3JvdXBSb3cgJiYgY29sdW1uLmdyb3VwSGVhZGVyQ29uZmlncy5jbGFzc2VzU3RyaW5nKVxuICAgICAgICB8fCAoaXNHcm91cEZvb3RlclJvdyAmJiBjb2x1bW4uZ3JvdXBGb290ZXJDb25maWdzLmNsYXNzZXNTdHJpbmcpXG4gICAgICAgIHx8ICghaXNHcm91cEZvb3RlclJvdyAmJiBjb2x1bW4uY2VsbENvbmZpZ3MuY2xhc3Nlc1N0cmluZylcIlxuICAgICAgW25nQ2xhc3NdPVwieyAncHJpbWFyeS1jb2wnOiBpc0ZpcnN0IH1cIlxuICAgICAgW2F0dHIuY29sc3Bhbl09XCIoaXNHcm91cFJvdyAmJiBjb2x1bW4uZ3JvdXBIZWFkZXJDb25maWdzLmNvbHNwYW4pXG4gICAgICAgIHx8IChpc0dyb3VwRm9vdGVyUm93ICYmIGNvbHVtbi5ncm91cEZvb3RlckNvbmZpZ3MuY29sc3BhbilcbiAgICAgICAgfHwgY29sdW1uLmNlbGxDb25maWdzLmNvbHNwYW5cIlxuICAgICAgW2F0dHIud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgPlxuICA8L3RkPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gRHJhZyAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJyaWdodERyYWdEcm9wRW5hYmxlZFwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJhZ0NlbGxcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIFJvdyBBY3Rpb25zIC0tPlxuPHRkICpuZ0lmPVwiaGFzUm93QWN0aW9ucyAmJiAhKHJlb3JkZXJFbmFibGVkICYmIHJlb3JkZXJTdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbClcIiBjbGFzcz1cImZzLWxpc3QtY29sIHJvdy1hY3Rpb25zXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNHcm91cEZvb3RlclJvd1wiPlxuICAgIDxmcy1saXN0LXJvdy1hY3Rpb25zXG4gICAgICBbcm93XT1cInJvd1wiXG4gICAgICBbaW5kZXhdPVwicm93SW5kZXhcIlxuICAgICAgW3Jvd0FjdGlvbnNdPVwicm93QWN0aW9uc1wiXG4gICAgICBbbWVudVJvd0FjdGlvbnNdPVwibWVudVJvd0FjdGlvbnNcIlxuICAgICAgW2lubGluZVJvd0FjdGlvbnNdPVwiaW5saW5lUm93QWN0aW9uc1wiXG4gICAgICBbcmVzdG9yZUFjdGlvbl09XCJyZXN0b3JlQWN0aW9uXCJcbiAgICAgIFtyZXN0b3JlTW9kZV09XCJyZXN0b3JlTW9kZVwiXG4gICAgICBbcm93UmVtb3ZlZF09XCJyb3dSZW1vdmVkXCI+XG4gICAgPC9mcy1saXN0LXJvdy1hY3Rpb25zPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdGQ+XG5cbjxuZy10ZW1wbGF0ZSAjZHJhZ0NlbGw+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkcmFnQ2VsbFZpc2libGUgJiYgIWlzR3JvdXBGb290ZXJSb3c7IGVsc2UgZW1wdHlDZWxsXCI+XG4gICAgPHRkIFxuICAgICAgICBjbGFzcz1cImZzLWxpc3QtY29sIGRyYWctY29sXCJcbiAgICAgICAgW2NsYXNzLmRyYWctZGlzYWJsZWRdPVwiaXNEcmFnRGlzYWJsZWRcIlxuICAgICAgICAobW91c2Vkb3duKT1cImRyYWdTdGFydCgkZXZlbnQpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwiZHJhZ1N0YXJ0KCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbj5kcmFnX2hhbmRsZTwvbWF0LWljb24+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZW1wdHlDZWxsPlxuICAgIDx0ZCBjbGFzcz1cImZzLWxpc3QtY29sIGRyYWctY29sXCI+PC90ZD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1860,50 +1860,32 @@ class FsRowComponent {
|
|
|
1860
1860
|
}
|
|
1861
1861
|
get rowCssClass() {
|
|
1862
1862
|
var _a, _b, _c;
|
|
1863
|
-
let
|
|
1863
|
+
let classes = ['fs-list-row'];
|
|
1864
1864
|
if (this.rowIndex % 2 !== 0) {
|
|
1865
|
-
|
|
1865
|
+
classes.push('fs-list-row-odd');
|
|
1866
1866
|
}
|
|
1867
1867
|
if (this.rowIndex % 2 === 0) {
|
|
1868
|
-
|
|
1868
|
+
classes.push('fs-list-row-even');
|
|
1869
1869
|
}
|
|
1870
1870
|
if ((_a = this.row) === null || _a === void 0 ? void 0 : _a.isGroup) {
|
|
1871
|
-
|
|
1871
|
+
classes.push('fs-list-row-group');
|
|
1872
1872
|
}
|
|
1873
1873
|
else if ((_b = this.row) === null || _b === void 0 ? void 0 : _b.isChild) { // TODO fix isChild & all
|
|
1874
|
-
|
|
1874
|
+
classes.push('fs-list-row-group-child');
|
|
1875
1875
|
}
|
|
1876
1876
|
else if ((_c = this.row) === null || _c === void 0 ? void 0 : _c.isGroupFooter) {
|
|
1877
|
-
|
|
1877
|
+
classes.push('fs-list-row-group-footer');
|
|
1878
1878
|
}
|
|
1879
1879
|
else {
|
|
1880
|
-
|
|
1880
|
+
classes.push('fs-list-row-body');
|
|
1881
1881
|
}
|
|
1882
1882
|
if (this.rowClass) {
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
if (this.row.isGroup) {
|
|
1888
|
-
options.groupIndex = this.row.index;
|
|
1889
|
-
}
|
|
1890
|
-
else if (this.row.isChild || this.row.isGroupFooter) { // TODO fix isChild & all
|
|
1891
|
-
options.groupIndex = this.row.parent.index;
|
|
1892
|
-
}
|
|
1893
|
-
const resultClass = this.rowClass(this.row.data, options);
|
|
1894
|
-
if (typeof resultClass === 'string') {
|
|
1895
|
-
cls += ` ${resultClass}`;
|
|
1896
|
-
}
|
|
1897
|
-
else if (typeof resultClass === 'object') {
|
|
1898
|
-
const keys = Object.keys(resultClass);
|
|
1899
|
-
for (const k of keys) {
|
|
1900
|
-
if (resultClass[k] === true) {
|
|
1901
|
-
cls += ` ${k}`;
|
|
1902
|
-
}
|
|
1903
|
-
}
|
|
1904
|
-
}
|
|
1883
|
+
classes = [
|
|
1884
|
+
...classes,
|
|
1885
|
+
...this._getRowClasses(this.rowClass),
|
|
1886
|
+
];
|
|
1905
1887
|
}
|
|
1906
|
-
return
|
|
1888
|
+
return classes.join(' ');
|
|
1907
1889
|
}
|
|
1908
1890
|
get dragCellVisible() {
|
|
1909
1891
|
return !this.row.isGroup;
|
|
@@ -1911,25 +1893,25 @@ class FsRowComponent {
|
|
|
1911
1893
|
get leftDragDropEnabled() {
|
|
1912
1894
|
return this.reorderEnabled
|
|
1913
1895
|
&& this.reorderPosition === ReorderPosition.Left
|
|
1914
|
-
&& this.activeFiltersCount
|
|
1896
|
+
&& this.activeFiltersCount === 0;
|
|
1915
1897
|
}
|
|
1916
1898
|
get rightDragDropEnabled() {
|
|
1917
1899
|
return this.reorderEnabled
|
|
1918
1900
|
&& this.reorderPosition === ReorderPosition.Right
|
|
1919
|
-
&& this.activeFiltersCount
|
|
1901
|
+
&& this.activeFiltersCount === 0;
|
|
1920
1902
|
}
|
|
1921
1903
|
ngOnInit() {
|
|
1922
|
-
this.
|
|
1923
|
-
this.
|
|
1904
|
+
this._initRowEvents();
|
|
1905
|
+
this._initSelection();
|
|
1924
1906
|
if (this.row && this.row.isGroup) {
|
|
1925
1907
|
if (this.row && this.row.isGroup && this.groupActionsRaw) {
|
|
1926
1908
|
this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));
|
|
1927
|
-
this.
|
|
1909
|
+
this._filterActionsByCategories();
|
|
1928
1910
|
}
|
|
1929
1911
|
}
|
|
1930
1912
|
else if (this.rowActionsRaw) {
|
|
1931
1913
|
this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));
|
|
1932
|
-
this.
|
|
1914
|
+
this._filterActionsByCategories();
|
|
1933
1915
|
}
|
|
1934
1916
|
}
|
|
1935
1917
|
ngDoCheck() {
|
|
@@ -1939,7 +1921,7 @@ class FsRowComponent {
|
|
|
1939
1921
|
action.checkShowStatus(this.row.data, this.rowIndex);
|
|
1940
1922
|
action.updateLink(this.row.data);
|
|
1941
1923
|
});
|
|
1942
|
-
this.
|
|
1924
|
+
this._filterActionsByCategories();
|
|
1943
1925
|
}
|
|
1944
1926
|
this._cdRef.markForCheck();
|
|
1945
1927
|
}
|
|
@@ -1978,12 +1960,12 @@ class FsRowComponent {
|
|
|
1978
1960
|
/**
|
|
1979
1961
|
* Set event listeners for row
|
|
1980
1962
|
*/
|
|
1981
|
-
|
|
1982
|
-
|
|
1963
|
+
_initRowEvents() {
|
|
1964
|
+
Object.keys(this.rowEvents)
|
|
1965
|
+
.forEach((event) => {
|
|
1983
1966
|
if (this.rowEvents.hasOwnProperty(event)) {
|
|
1984
|
-
const listener = this._renderer
|
|
1985
|
-
|
|
1986
|
-
// evt.stopPropagation();
|
|
1967
|
+
const listener = this._renderer
|
|
1968
|
+
.listen(this.el.nativeElement, event, (evt) => {
|
|
1987
1969
|
if (!this.reorderEnabled) {
|
|
1988
1970
|
this.rowEvents[event]({
|
|
1989
1971
|
event: evt,
|
|
@@ -1994,12 +1976,40 @@ class FsRowComponent {
|
|
|
1994
1976
|
});
|
|
1995
1977
|
this._eventListeners.push(listener);
|
|
1996
1978
|
}
|
|
1979
|
+
});
|
|
1980
|
+
}
|
|
1981
|
+
_getRowClasses(rowClass) {
|
|
1982
|
+
const classes = [];
|
|
1983
|
+
const options = {
|
|
1984
|
+
index: this.rowIndex,
|
|
1985
|
+
type: this.row.type,
|
|
1986
|
+
};
|
|
1987
|
+
if (this.row.isGroup) {
|
|
1988
|
+
options.groupIndex = this.row.index;
|
|
1989
|
+
}
|
|
1990
|
+
else if (this.row.isChild || this.row.isGroupFooter) { // TODO fix isChild & all
|
|
1991
|
+
options.groupIndex = this.row.parent.index;
|
|
1992
|
+
}
|
|
1993
|
+
const resultClass = rowClass(this.row.data, options);
|
|
1994
|
+
if (resultClass) {
|
|
1995
|
+
if (typeof resultClass === 'string') {
|
|
1996
|
+
classes.push(resultClass);
|
|
1997
|
+
}
|
|
1998
|
+
else if (typeof resultClass === 'object') {
|
|
1999
|
+
const keys = Object.keys(resultClass);
|
|
2000
|
+
for (const k of keys) {
|
|
2001
|
+
if (resultClass[k] === true) {
|
|
2002
|
+
classes.push(k);
|
|
2003
|
+
}
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
1997
2006
|
}
|
|
2007
|
+
return classes;
|
|
1998
2008
|
}
|
|
1999
2009
|
/**
|
|
2000
2010
|
* Subscribe to selection change events
|
|
2001
2011
|
*/
|
|
2002
|
-
|
|
2012
|
+
_initSelection() {
|
|
2003
2013
|
if (this.selection) {
|
|
2004
2014
|
this.selected = this.row && this.selection.isRowSelected(this.row.data);
|
|
2005
2015
|
this.selection.selectionChange$
|
|
@@ -2029,7 +2039,7 @@ class FsRowComponent {
|
|
|
2029
2039
|
});
|
|
2030
2040
|
}
|
|
2031
2041
|
}
|
|
2032
|
-
|
|
2042
|
+
_filterActionsByCategories() {
|
|
2033
2043
|
this.menuRowActions = [];
|
|
2034
2044
|
this.inlineRowActions = [];
|
|
2035
2045
|
this.restoreAction = null;
|