cps-ui-kit 0.71.0 → 0.73.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/README.md +1 -0
- package/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +3 -3
- package/esm2020/lib/components/cps-input/cps-input.component.mjs +3 -3
- package/esm2020/lib/components/cps-paginator/cps-paginator.component.mjs +5 -5
- package/esm2020/lib/components/cps-select/cps-select.component.mjs +3 -3
- package/esm2020/lib/components/cps-table/cps-table.component.mjs +78 -39
- package/esm2020/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +4 -4
- package/esm2020/lib/components/cps-table/directives/cps-table-column-sortable.directive.mjs +4 -4
- package/esm2020/lib/components/cps-table/directives/cps-table-header-selectable.directive.mjs +3 -3
- package/esm2020/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +3 -3
- package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +3 -3
- package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +3 -3
- package/esm2020/lib/components/cps-tree-table/cps-tree-table.component.mjs +513 -0
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.mjs +43 -0
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.mjs +28 -0
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +32 -0
- package/esm2020/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +157 -0
- package/esm2020/lib/components/cps-tree-table/tree-table-sort-icon/tree-table-sort-icon.component.mjs +73 -0
- package/esm2020/public-api.mjs +5 -1
- package/fesm2015/cps-ui-kit.mjs +927 -76
- package/fesm2015/cps-ui-kit.mjs.map +1 -1
- package/fesm2020/cps-ui-kit.mjs +922 -76
- package/fesm2020/cps-ui-kit.mjs.map +1 -1
- package/lib/components/cps-paginator/cps-paginator.component.d.ts +2 -2
- package/lib/components/cps-table/cps-table.component.d.ts +19 -11
- package/lib/components/cps-table/directives/cps-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-column-sortable.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-header-selectable.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/internal/table-unsort.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +123 -0
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.d.ts +17 -0
- package/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.d.ts +13 -0
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.d.ts +14 -0
- package/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.d.ts +9 -0
- package/lib/components/cps-tree-table/tree-table-sort-icon/tree-table-sort-icon.component.d.ts +21 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { TreeTable, TreeTableService, TreeTableModule } from 'primeng/treetable';
|
|
4
|
+
import { DomHandler } from 'primeng/dom';
|
|
5
|
+
import { CpsInputComponent } from '../cps-input/cps-input.component';
|
|
6
|
+
import { CpsButtonComponent } from '../cps-button/cps-button.component';
|
|
7
|
+
import { CpsMenuComponent } from '../cps-menu/cps-menu.component';
|
|
8
|
+
import { find, isEqual } from 'lodash-es';
|
|
9
|
+
import { CpsIconComponent } from '../cps-icon/cps-icon.component';
|
|
10
|
+
import { CpsSelectComponent } from '../cps-select/cps-select.component';
|
|
11
|
+
import { FormsModule } from '@angular/forms';
|
|
12
|
+
import { AngleDoubleLeftIcon } from 'primeng/icons/angledoubleleft';
|
|
13
|
+
import { AngleLeftIcon } from 'primeng/icons/angleleft';
|
|
14
|
+
import { AngleRightIcon } from 'primeng/icons/angleright';
|
|
15
|
+
import { AngleDoubleRightIcon } from 'primeng/icons/angledoubleright';
|
|
16
|
+
import { convertSize } from '../../utils/internal/size-utils';
|
|
17
|
+
import { CpsLoaderComponent } from '../cps-loader/cps-loader.component';
|
|
18
|
+
import { CpsTreeTableColumnSortableDirective } from './directives/cps-tree-table-column-sortable.directive';
|
|
19
|
+
import { TreeTableUnsortDirective } from './directives/internal/tree-table-unsort.directive';
|
|
20
|
+
import { TableRowMenuComponent } from '../cps-table/table-row-menu/table-row-menu.component';
|
|
21
|
+
import * as i0 from "@angular/core";
|
|
22
|
+
import * as i1 from "@angular/forms";
|
|
23
|
+
import * as i2 from "@angular/common";
|
|
24
|
+
import * as i3 from "primeng/treetable";
|
|
25
|
+
import * as i4 from "primeng/api";
|
|
26
|
+
export function treeTableFactory(tableComponent) {
|
|
27
|
+
return tableComponent.primengTreeTable;
|
|
28
|
+
}
|
|
29
|
+
export class CpsTreeTableComponent {
|
|
30
|
+
// eslint-disable-next-line no-useless-constructor
|
|
31
|
+
constructor(cdRef) {
|
|
32
|
+
this.cdRef = cdRef;
|
|
33
|
+
this.data = [];
|
|
34
|
+
this.columns = [];
|
|
35
|
+
this.colHeaderName = 'header';
|
|
36
|
+
this.colFieldName = 'field';
|
|
37
|
+
this.size = 'normal';
|
|
38
|
+
this.striped = true;
|
|
39
|
+
this.bordered = true;
|
|
40
|
+
this.tableStyle = undefined;
|
|
41
|
+
this.tableStyleClass = '';
|
|
42
|
+
this.selectable = false;
|
|
43
|
+
this.sortable = false; // makes all sortable if columns are provided
|
|
44
|
+
this.sortMode = 'single';
|
|
45
|
+
this.customSort = false;
|
|
46
|
+
this.hasToolbar = true;
|
|
47
|
+
this.toolbarSize = 'normal';
|
|
48
|
+
this.toolbarTitle = '';
|
|
49
|
+
this.rowHover = true;
|
|
50
|
+
this.showGlobalFilter = true;
|
|
51
|
+
this.globalFilterPlaceholder = 'Search';
|
|
52
|
+
this.globalFilterFields = [];
|
|
53
|
+
this.paginator = false;
|
|
54
|
+
this.alwaysShowPaginator = true;
|
|
55
|
+
this.rowsPerPageOptions = [];
|
|
56
|
+
this.first = 0;
|
|
57
|
+
this.rows = 0;
|
|
58
|
+
this.resetPageOnRowsChange = false;
|
|
59
|
+
this.resetPageOnSort = true;
|
|
60
|
+
this.emptyMessage = 'No data';
|
|
61
|
+
this.emptyBodyHeight = '';
|
|
62
|
+
this.lazy = false;
|
|
63
|
+
this.lazyLoadOnInit = true;
|
|
64
|
+
// @Input() showRowMenu = false; // TODO
|
|
65
|
+
this.showRowMenu = false; // TODO
|
|
66
|
+
this.loading = false;
|
|
67
|
+
this.scrollable = true;
|
|
68
|
+
this.scrollHeight = ''; // 'flex' or value+'px'
|
|
69
|
+
this.virtualScroll = false; // works only if scrollable is true
|
|
70
|
+
this.numToleratedItems = 10;
|
|
71
|
+
// @Input() showRemoveBtnOnSelect = false; // TODO
|
|
72
|
+
this.showRemoveBtnOnSelect = false; // TODO
|
|
73
|
+
this.showActionBtn = false;
|
|
74
|
+
this.actionBtnTitle = 'Action';
|
|
75
|
+
this.showColumnsToggle = false; // if external body template is provided, use columnsSelected event emitter
|
|
76
|
+
this.actionBtnClicked = new EventEmitter();
|
|
77
|
+
this.columnsSelected = new EventEmitter();
|
|
78
|
+
this.pageChanged = new EventEmitter();
|
|
79
|
+
this.lazyLoaded = new EventEmitter();
|
|
80
|
+
this.nodeExpanded = new EventEmitter();
|
|
81
|
+
this.nodeCollapsed = new EventEmitter();
|
|
82
|
+
this.nodeSelected = new EventEmitter();
|
|
83
|
+
this.nodeUnselected = new EventEmitter();
|
|
84
|
+
this.sorted = new EventEmitter();
|
|
85
|
+
this.editRowBtnClicked = new EventEmitter();
|
|
86
|
+
this.rowsRemoved = new EventEmitter();
|
|
87
|
+
/**
|
|
88
|
+
* A function to implement custom sorting. customSort must be true.
|
|
89
|
+
* @param {any} any - sort meta.
|
|
90
|
+
* @group Emits
|
|
91
|
+
*/
|
|
92
|
+
this.customSortFunction = new EventEmitter();
|
|
93
|
+
this.selectedColumns = [];
|
|
94
|
+
this.rowOptions = [];
|
|
95
|
+
this.selectedRows = [];
|
|
96
|
+
this.virtualScrollItemSize = 0;
|
|
97
|
+
this.defScrollHeightPx = 0;
|
|
98
|
+
this.defScrollHeight = '';
|
|
99
|
+
this.scrollbarWidth = 0;
|
|
100
|
+
this.resizeObserver = new ResizeObserver((entries) => {
|
|
101
|
+
entries.forEach((entry) => {
|
|
102
|
+
const body = entry.target;
|
|
103
|
+
const sbarVisible = body.scrollHeight > body.clientHeight;
|
|
104
|
+
let wScroll = sbarVisible ? this.scrollbarWidth : 0;
|
|
105
|
+
if (wScroll > 0)
|
|
106
|
+
wScroll -= 1;
|
|
107
|
+
this.headerBox.style.paddingRight = `${wScroll}px`;
|
|
108
|
+
this.headerBox.style.borderRight =
|
|
109
|
+
wScroll > 0 ? '1px solid #d7d5d5' : 'unset';
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
ngOnInit() {
|
|
114
|
+
this.emptyBodyHeight = convertSize(this.emptyBodyHeight);
|
|
115
|
+
if (!this.scrollable)
|
|
116
|
+
this.virtualScroll = false;
|
|
117
|
+
if (this.virtualScroll) {
|
|
118
|
+
this.defScrollHeight = this.scrollHeight;
|
|
119
|
+
if (this.defScrollHeight === 'flex')
|
|
120
|
+
window.addEventListener('resize', this._onWindowResize.bind(this));
|
|
121
|
+
if (this.defScrollHeight && this.defScrollHeight !== 'flex') {
|
|
122
|
+
this.defScrollHeightPx = parseInt(this.scrollHeight, 10);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (this.paginator) {
|
|
126
|
+
if (this.rowsPerPageOptions.length < 1)
|
|
127
|
+
this.rowsPerPageOptions = [5, 10, 25, 50];
|
|
128
|
+
if (!this.rows)
|
|
129
|
+
this.rows = this.rowsPerPageOptions[0];
|
|
130
|
+
else {
|
|
131
|
+
if (!this.rowsPerPageOptions.includes(this.rows)) {
|
|
132
|
+
throw new Error('rowsPerPageOptions must include rows');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
this.rowOptions = this.rowsPerPageOptions.map((v) => ({
|
|
136
|
+
label: '' + v,
|
|
137
|
+
value: v
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
140
|
+
if (this.showGlobalFilter &&
|
|
141
|
+
this.globalFilterFields?.length < 1 &&
|
|
142
|
+
this.data?.length > 0) {
|
|
143
|
+
this.globalFilterFields = Object.keys(this.data[0].data);
|
|
144
|
+
}
|
|
145
|
+
this.selectedColumns = this.columns;
|
|
146
|
+
}
|
|
147
|
+
ngAfterViewInit() {
|
|
148
|
+
this.scrollableBody = this.primengTreeTable.el.nativeElement.querySelector('.p-treetable-scrollable-body');
|
|
149
|
+
if (this.scrollableBody) {
|
|
150
|
+
this.headerBox = this.primengTreeTable.el.nativeElement.querySelector('.p-treetable-scrollable-header-box');
|
|
151
|
+
if (this.virtualScroll && this.defScrollHeight === 'flex')
|
|
152
|
+
this.defScrollHeightPx = this.scrollableBody.clientHeight;
|
|
153
|
+
if (this.headerBox) {
|
|
154
|
+
this.scrollbarWidth = DomHandler.calculateScrollbarWidth();
|
|
155
|
+
this.resizeObserver.observe(this.scrollableBody);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
ngAfterViewChecked() {
|
|
160
|
+
if (!this.virtualScroll || this.virtualScrollItemSize)
|
|
161
|
+
return;
|
|
162
|
+
this.virtualScrollItemSize =
|
|
163
|
+
this.primengTreeTable?.el?.nativeElement
|
|
164
|
+
?.querySelector('.p-treetable-tbody')
|
|
165
|
+
?.querySelector('tr')?.clientHeight || 0;
|
|
166
|
+
this.cdRef.detectChanges();
|
|
167
|
+
}
|
|
168
|
+
ngOnDestroy() {
|
|
169
|
+
this.resizeObserver?.disconnect();
|
|
170
|
+
if (this.virtualScroll && this.defScrollHeight === 'flex')
|
|
171
|
+
window.removeEventListener('resize', this._onWindowResize.bind(this));
|
|
172
|
+
}
|
|
173
|
+
_onWindowResize() {
|
|
174
|
+
this.defScrollHeightPx = this.scrollableBody.clientHeight;
|
|
175
|
+
}
|
|
176
|
+
get styleClass() {
|
|
177
|
+
const classesList = [];
|
|
178
|
+
switch (this.size) {
|
|
179
|
+
case 'small':
|
|
180
|
+
classesList.push('p-treetable-sm');
|
|
181
|
+
break;
|
|
182
|
+
case 'large':
|
|
183
|
+
classesList.push('p-treetable-lg');
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
if (this.hasToolbar) {
|
|
187
|
+
switch (this.toolbarSize) {
|
|
188
|
+
case 'small':
|
|
189
|
+
classesList.push('cps-tbar-small');
|
|
190
|
+
break;
|
|
191
|
+
case 'normal':
|
|
192
|
+
classesList.push('cps-tbar-normal');
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (this.striped) {
|
|
197
|
+
classesList.push('p-treetable-striped');
|
|
198
|
+
}
|
|
199
|
+
if (this.bordered) {
|
|
200
|
+
classesList.push('p-treetable-gridlines');
|
|
201
|
+
}
|
|
202
|
+
if (this.scrollHeight && !this.loading && this.data.length > 0) {
|
|
203
|
+
classesList.push('cps-treetable-bottom-bordered');
|
|
204
|
+
}
|
|
205
|
+
return classesList.join(' ');
|
|
206
|
+
}
|
|
207
|
+
onSortFunction(event) {
|
|
208
|
+
this.customSortFunction.emit(event);
|
|
209
|
+
}
|
|
210
|
+
_recalcVirtualHeight() {
|
|
211
|
+
if (this.virtualScroll && this.defScrollHeight) {
|
|
212
|
+
const itemsLen = this.primengTreeTable.serializedValue.length;
|
|
213
|
+
if (itemsLen < 1) {
|
|
214
|
+
this.scrollHeight = this.emptyBodyHeight
|
|
215
|
+
? `calc(${this.emptyBodyHeight} + 1px)`
|
|
216
|
+
: this.virtualScrollItemSize + 1 + 'px';
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
const curHeight = this.virtualScrollItemSize * itemsLen + 2;
|
|
220
|
+
if (this.defScrollHeight === 'flex') {
|
|
221
|
+
if (curHeight >= this.defScrollHeightPx) {
|
|
222
|
+
this.scrollHeight = 'flex';
|
|
223
|
+
setTimeout(() => {
|
|
224
|
+
this.scrollableBody.style.height = '100%';
|
|
225
|
+
this.cdRef.markForCheck();
|
|
226
|
+
});
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
this.scrollHeight = Math.min(this.defScrollHeightPx, curHeight) + 'px';
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
onFilterGlobal(value) {
|
|
235
|
+
this.primengTreeTable.filterGlobal(value, 'contains');
|
|
236
|
+
setTimeout(() => {
|
|
237
|
+
this._recalcVirtualHeight();
|
|
238
|
+
this.cdRef.markForCheck();
|
|
239
|
+
}, 300);
|
|
240
|
+
}
|
|
241
|
+
onClickActionBtn() {
|
|
242
|
+
this.actionBtnClicked.emit();
|
|
243
|
+
}
|
|
244
|
+
removeSelected() {
|
|
245
|
+
// TODO
|
|
246
|
+
// const indexes: number[] = this.primengTreeTable.selection.map(
|
|
247
|
+
// (s: any) => s._defaultSortOrder
|
|
248
|
+
// );
|
|
249
|
+
// indexes.sort((a, b) => b - a);
|
|
250
|
+
// this.data = this.data.filter(
|
|
251
|
+
// (v: any) => !indexes.includes(v._defaultSortOrder)
|
|
252
|
+
// );
|
|
253
|
+
// this.rowsRemoved.emit(
|
|
254
|
+
// this.selectedRows.map(({ _defaultSortOrder, ...rest }) => rest)
|
|
255
|
+
// );
|
|
256
|
+
// this.selectedRows = [];
|
|
257
|
+
}
|
|
258
|
+
onEditRowClicked(node) {
|
|
259
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
260
|
+
const { _defaultSortOrder, expanded, partialSelected, ...rest } = node;
|
|
261
|
+
this.editRowBtnClicked.emit(rest);
|
|
262
|
+
}
|
|
263
|
+
onRemoveRowClicked(node) {
|
|
264
|
+
// TODO remove children of nodes
|
|
265
|
+
// find by default sort order in object itself or in nested parent
|
|
266
|
+
// then find the node itself
|
|
267
|
+
this.selectedRows = this.selectedRows.filter((v) => v !== node);
|
|
268
|
+
this.data = this.data.filter((v) => v !== node);
|
|
269
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
270
|
+
const { _defaultSortOrder, expanded, partialSelected, ...rest } = node;
|
|
271
|
+
this.rowsRemoved.emit([rest]);
|
|
272
|
+
}
|
|
273
|
+
toggleAllColumns() {
|
|
274
|
+
this.selectedColumns =
|
|
275
|
+
this.selectedColumns.length < this.columns.length ? this.columns : [];
|
|
276
|
+
this.columnsSelected.emit(this.selectedColumns);
|
|
277
|
+
}
|
|
278
|
+
isColumnSelected(col) {
|
|
279
|
+
return !!find(this.selectedColumns, (item) => isEqual(item, col));
|
|
280
|
+
}
|
|
281
|
+
onRowsPerPageChanged() {
|
|
282
|
+
if (this.resetPageOnRowsChange) {
|
|
283
|
+
this.primengTreeTable.first = 0;
|
|
284
|
+
}
|
|
285
|
+
this.changePage(this.getPage());
|
|
286
|
+
}
|
|
287
|
+
getPageCount() {
|
|
288
|
+
return Math.ceil(this.primengTreeTable.totalRecords / this.rows);
|
|
289
|
+
}
|
|
290
|
+
getPage() {
|
|
291
|
+
return Math.floor(this.primengTreeTable.first / this.rows);
|
|
292
|
+
}
|
|
293
|
+
changePage(p) {
|
|
294
|
+
const pc = Math.ceil(this.getPageCount());
|
|
295
|
+
if (p >= 0 && p < pc) {
|
|
296
|
+
this.first = this.rows * p;
|
|
297
|
+
this.primengTreeTable.onPageChange({
|
|
298
|
+
first: this.first,
|
|
299
|
+
rows: this.rows
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
onPageChange(event) {
|
|
304
|
+
this.first = event.first;
|
|
305
|
+
this.rows = event.rows;
|
|
306
|
+
const state = {
|
|
307
|
+
page: this.getPage(),
|
|
308
|
+
first: this.first,
|
|
309
|
+
rows: this.rows,
|
|
310
|
+
pageCount: Math.ceil(this.getPageCount())
|
|
311
|
+
};
|
|
312
|
+
this.pageChanged.emit(state);
|
|
313
|
+
}
|
|
314
|
+
onLazyLoaded(event) {
|
|
315
|
+
this.lazyLoaded.emit(event);
|
|
316
|
+
}
|
|
317
|
+
onNodeExpanded(event) {
|
|
318
|
+
this.nodeExpanded.emit(event);
|
|
319
|
+
setTimeout(() => {
|
|
320
|
+
this._recalcVirtualHeight();
|
|
321
|
+
this.cdRef.markForCheck();
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
onNodeCollapsed(event) {
|
|
325
|
+
this.nodeCollapsed.emit(event);
|
|
326
|
+
setTimeout(() => {
|
|
327
|
+
this._recalcVirtualHeight();
|
|
328
|
+
this.cdRef.markForCheck();
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
onNodeSelected(event) {
|
|
332
|
+
this.nodeSelected.emit(event);
|
|
333
|
+
}
|
|
334
|
+
onNodeUnselected(event) {
|
|
335
|
+
this.nodeUnselected.emit(event);
|
|
336
|
+
}
|
|
337
|
+
onSort(event) {
|
|
338
|
+
this.sorted.emit(event);
|
|
339
|
+
}
|
|
340
|
+
onSelectColumn(col) {
|
|
341
|
+
let res = [];
|
|
342
|
+
if (this.isColumnSelected(col)) {
|
|
343
|
+
res = this.selectedColumns.filter((v) => !isEqual(v, col));
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
this.columns.forEach((o) => {
|
|
347
|
+
if (this.selectedColumns.some((v) => isEqual(v, o)) ||
|
|
348
|
+
isEqual(col, o)) {
|
|
349
|
+
res.push(o);
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
this.selectedColumns = res;
|
|
354
|
+
this.columnsSelected.emit(this.selectedColumns);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
CpsTreeTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTreeTableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
358
|
+
CpsTreeTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsTreeTableComponent, isStandalone: true, selector: "cps-tree-table", inputs: { data: "data", columns: "columns", colHeaderName: "colHeaderName", colFieldName: "colFieldName", size: "size", striped: "striped", bordered: "bordered", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", selectable: "selectable", sortable: "sortable", sortMode: "sortMode", customSort: "customSort", hasToolbar: "hasToolbar", toolbarSize: "toolbarSize", toolbarTitle: "toolbarTitle", rowHover: "rowHover", showGlobalFilter: "showGlobalFilter", globalFilterPlaceholder: "globalFilterPlaceholder", globalFilterFields: "globalFilterFields", paginator: "paginator", alwaysShowPaginator: "alwaysShowPaginator", rowsPerPageOptions: "rowsPerPageOptions", first: "first", rows: "rows", resetPageOnRowsChange: "resetPageOnRowsChange", resetPageOnSort: "resetPageOnSort", emptyMessage: "emptyMessage", emptyBodyHeight: "emptyBodyHeight", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", loading: "loading", scrollable: "scrollable", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", numToleratedItems: "numToleratedItems", showActionBtn: "showActionBtn", actionBtnTitle: "actionBtnTitle", showColumnsToggle: "showColumnsToggle" }, outputs: { actionBtnClicked: "actionBtnClicked", columnsSelected: "columnsSelected", pageChanged: "pageChanged", lazyLoaded: "lazyLoaded", nodeExpanded: "nodeExpanded", nodeCollapsed: "nodeCollapsed", nodeSelected: "nodeSelected", nodeUnselected: "nodeUnselected", sorted: "sorted", editRowBtnClicked: "editRowBtnClicked", rowsRemoved: "rowsRemoved", customSortFunction: "customSortFunction" }, providers: [
|
|
359
|
+
TreeTableService,
|
|
360
|
+
{
|
|
361
|
+
provide: TreeTable,
|
|
362
|
+
useFactory: treeTableFactory,
|
|
363
|
+
// eslint-disable-next-line no-use-before-define
|
|
364
|
+
deps: [CpsTreeTableComponent]
|
|
365
|
+
}
|
|
366
|
+
], queries: [{ propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "nestedHeaderTemplate", first: true, predicate: ["nestedHeader"], descendants: true }, { propertyName: "bodyTemplate", first: true, predicate: ["body"], descendants: true }], viewQueries: [{ propertyName: "primengTreeTable", first: true, predicate: ["primengTreeTable"], descendants: true, static: true }], ngImport: i0, template: "<p-treeTable\n #primengTreeTable\n ttWithUnsort\n [ngClass]=\"{ 'cps-treetable-loading': loading }\"\n [value]=\"data\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{\n numToleratedItems: numToleratedItems,\n autoSize: false\n }\"\n [columns]=\"selectedColumns\"\n [loading]=\"loading\"\n [rowHover]=\"rowHover\"\n [lazy]=\"lazy\"\n [(selection)]=\"selectedRows\"\n compareSelectionBy=\"equals\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n [globalFilterFields]=\"globalFilterFields\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [resetPageOnSort]=\"resetPageOnSort\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n (onPage)=\"onPageChange($event)\"\n (onSort)=\"onSort($event)\"\n (onLazyLoad)=\"onLazyLoaded($event)\"\n (sortFunction)=\"onSortFunction($event)\"\n (onNodeExpand)=\"onNodeExpanded($event)\"\n (onNodeCollapse)=\"onNodeCollapsed($event)\"\n (onNodeSelect)=\"onNodeSelected($event)\"\n (onNodeUnselect)=\"onNodeUnselected($event)\">\n <ng-template pTemplate=\"caption\" *ngIf=\"hasToolbar\">\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!toolbarTemplate\">\n <div class=\"cps-treetable-tbar-left\">\n <div>{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-treetable-tbar-global-filter\">\n <cps-input\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [disabled]=\"loading\"\n [appearance]=\"toolbarSize === 'small' ? 'underlined' : 'outlined'\"\n [hideDetails]=\"true\">\n </cps-input>\n </div>\n </div>\n <div class=\"cps-treetable-tbar-right\">\n <div\n *ngIf=\"showRemoveBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-treetable-tbar-remove-btn\">\n <cps-button\n label=\"Remove\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n [size]=\"toolbarSize\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-treetable-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n color=\"prepared\"\n type=\"outlined\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showColumnsToggle && columns.length > 0\"\n class=\"cps-treetable-tbar-coltoggle-btn\">\n <cps-icon\n icon=\"columns\"\n size=\"normal\"\n color=\"prepared-lighten1\"\n (click)=\"colToggleMenu.toggle($event)\"></cps-icon>\n <cps-menu #colToggleMenu [withArrow]=\"false\">\n <div class=\"cps-treetable-coltoggle-menu\">\n <div\n class=\"cps-treetable-coltoggle-menu-item select-all-option\"\n [class.allselected]=\"selectedColumns.length === columns.length\"\n (click)=\"toggleAllColumns()\">\n <span class=\"cps-treetable-coltoggle-menu-item-left\">\n <span class=\"cps-treetable-coltoggle-menu-item-check\"> </span>\n <span class=\"cps-treetable-coltoggle-menu-item-label\"\n >Show all columns</span\n >\n </span>\n </div>\n <div\n *ngFor=\"let col of columns\"\n class=\"cps-treetable-coltoggle-menu-item\"\n (click)=\"onSelectColumn(col)\"\n [class.selected]=\"isColumnSelected(col)\">\n <span class=\"cps-treetable-coltoggle-menu-item-left\">\n <span class=\"cps-treetable-coltoggle-menu-item-check\"></span>\n <span class=\"cps-treetable-coltoggle-menu-item-label\">{{\n col[colHeaderName]\n }}</span>\n </span>\n </div>\n </div>\n </cps-menu>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"nestedHeaderTemplate\" let-columns>\n <ng-container\n *ngTemplateOutlet=\"\n nestedHeaderTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"!nestedHeaderTemplate\" let-columns>\n <tr>\n <!-- <th style=\"width: 3rem\" *ngIf=\"reorderableRows\"></th> -->\n <th style=\"width: 55px\" *ngIf=\"selectable\">\n <p-treeTableHeaderCheckbox></p-treeTableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n headerTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate && columns.length > 0\">\n <ng-container *ngIf=\"sortable\">\n <th\n *ngFor=\"let col of columns\"\n [cpsTTColSortable]=\"col[colFieldName]\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"!sortable\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n </ng-container>\n <th class=\"cps-treetable-row-menu-cell\" *ngIf=\"showRowMenu\"></th>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData=\"rowData\"\n let-columns=\"columns\"\n let-rowNode\n let-rowIndex=\"rowIndex\">\n <tr\n [ttRow]=\"rowNode\"\n [ngClass]=\"{\n 'cps-treetable-row-selected':\n selectable && primengTreeTable.isSelected(rowNode.node)\n }\">\n <!-- <td *ngIf=\"reorderableRows\" class=\"cps-table-row-drag-handle-cell\">\n <span class=\"cps-table-row-drag-handle\" pReorderableRowHandle>\u2630</span>\n </td> -->\n <td style=\"width: 55px\" *ngIf=\"selectable\">\n <p-treeTableCheckbox [value]=\"rowNode\"></p-treeTableCheckbox>\n </td>\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: {\n $implicit: rowNode,\n rowIndex: rowIndex,\n columns: columns,\n rowData: rowData\n }\n \">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!bodyTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <td *ngFor=\"let col of columns; let i = index\">\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\">\n </p-treeTableToggler>\n {{ rowData[col[colFieldName]] }}\n </td>\n </ng-container>\n </ng-container>\n <td *ngIf=\"showRowMenu\" class=\"cps-treetable-row-menu-cell\">\n <table-row-menu\n (editRowBtnClicked)=\"onEditRowClicked(rowNode.node)\"\n (removeRowBtnClicked)=\"onRemoveRowClicked(rowNode.node)\">\n </table-row-menu>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n colspan=\"100\"\n class=\"cps-treetable-empty-message-td\"\n [ngStyle]=\"{ height: emptyBodyHeight }\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <cps-loader [fullScreen]=\"false\" opacity=\"0\"></cps-loader>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n <div class=\"cps-table-paginator-itms-per-page\">\n <span class=\"cps-table-paginator-items-per-page-title\"\n >Rows per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\">\n </cps-select>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"paginatorfirstpagelinkicon\">\n <AngleDoubleLeftIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatorpreviouspagelinkicon\">\n <AngleLeftIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatornextpagelinkicon\">\n <AngleRightIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatorlastpagelinkicon\">\n <AngleDoubleRightIcon />\n </ng-template>\n</p-treeTable>\n", styles: [":host ::ng-deep .p-treetable{position:relative}:host ::ng-deep .p-component,:host ::ng-deep .p-component *{box-sizing:border-box}:host ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host ::ng-deep .p-treetable-scrollable-wrapper{position:relative}:host ::ng-deep .cps-treetable-bottom-bordered>.p-treetable-scrollable-wrapper{border-bottom:1px solid var(--cps-color-line-mid)}:host ::ng-deep .p-treetable .p-treetable-scrollable-header,:host ::ng-deep .p-treetable .p-treetable-scrollable-footer{background:white}:host ::ng-deep .p-treetable-scrollable-header,:host ::ng-deep .p-treetable-scrollable-footer{overflow:hidden}:host ::ng-deep .p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{text-align:left;padding:1rem;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 1px;font-weight:700;color:var(--cps-color-text-mild);background:white;transition:box-shadow .2s}:host ::ng-deep .p-treetable-scrollable-body{overflow:auto!important;position:relative}:host ::ng-deep .p-treetable .p-treetable-tbody>tr{background:#ffffff;color:var(--cps-color-text-dark);transition:box-shadow .2s}:host ::ng-deep .p-treetable .p-treetable-tbody>tr.cps-treetable-row-selected{background-color:#f1ebed!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{text-align:left;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;padding:1rem}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-child{border-width:0 0 1px 1px}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler{width:1rem;height:1rem;color:var(--cps-color-text-dark);border:0 none;background:transparent;border-radius:50%;margin-right:.5rem}:host ::ng-deep .p-treetable-toggler{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}:host ::ng-deep .p-ripple{overflow:hidden;position:relative}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px;font-family:Source Sans Pro,sans-serif;border-radius:6px}:host ::ng-deep input[type=button],:host ::ng-deep input[type=submit],:host ::ng-deep input[type=reset],:host ::ng-deep input[type=file]::-webkit-file-upload-button,:host ::ng-deep button{border-radius:0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr:focus{outline:0 none;outline-offset:-.15rem}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler:enabled:hover{color:var(--cps-color-calm);border-color:transparent}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler:focus{outline:0 none;outline-offset:0}:host ::ng-deep .p-treetable .p-paginator-bottom{border-width:0 1px 1px 1px;border-radius:0}:host ::ng-deep .p-paginator{background:white;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;color:var(--cps-color-text-dark);padding:1rem;border:solid var(--cps-color-line-mid)}:host ::ng-deep .p-paginator-left-content{margin-right:auto}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page{display:inline-flex;align-items:center}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-table-paginator-items-per-page-title{font-family:Source Sans Pro,sans-serif;font-size:14px;margin-right:12px}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box{min-height:32px!important;background:transparent!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-items{font-size:14px!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-chevron .cps-icon{width:14px;height:14px}:host ::ng-deep .p-paginator .p-paginator-current{background-color:transparent;border:0 none;color:var(--cps-color-text-dark);min-width:3rem;margin:.143rem;padding:0 .5rem;font-family:Source Sans Pro,sans-serif;font-size:14px}:host ::ng-deep .p-paginator-page,:host ::ng-deep .p-paginator-next,:host ::ng-deep .p-paginator-last,:host ::ng-deep .p-paginator-first,:host ::ng-deep .p-paginator-prev,:host ::ng-deep .p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover{background:#f8f4f5}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):active{background:#f1eaec}:host ::ng-deep .p-paginator .p-paginator-first,:host ::ng-deep .p-paginator .p-paginator-prev,:host ::ng-deep .p-paginator .p-paginator-next,:host ::ng-deep .p-paginator .p-paginator-last{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-disabled,:host ::ng-deep .p-disabled *{cursor:default!important;pointer-events:none}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background:var(--cps-color-calm);border-color:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f8f4f5}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):active{background:#f1eaec}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-paginator-element:focus{z-index:1;position:relative}:host ::ng-deep span.p-paginator-icon{display:contents}:host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:.4}:host ::ng-deep .cps-treetable-empty-message-td{text-align:center!important;font-weight:600;background:white}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-header{border-width:1px 1px 0 1px}:host ::ng-deep .p-treetable .p-treetable-header{font-weight:600;display:flex;justify-content:space-between;align-items:center;padding:0 10px;border-top:1px solid var(--cps-color-line-mid);border-right:1px solid var(--cps-color-line-mid);border-left:4px solid var(--cps-color-surprise)!important;border-radius:4px 4px 0 0;font-size:16px;line-height:150%;background-color:#fff;color:var(--cps-color-text-darkest);overflow:auto}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-left{display:flex;align-items:center}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-left .cps-treetable-tbar-global-filter{margin-left:12px}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right{display:flex;align-items:center}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right .cps-treetable-tbar-remove-btn{margin-right:4px}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right .cps-treetable-tbar-action-btn{margin-right:4px;margin-left:8px}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right .cps-treetable-tbar-coltoggle-btn{display:contents}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right .cps-treetable-tbar-coltoggle-btn cps-icon{margin-left:8px;margin-right:4px;cursor:pointer}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right .cps-treetable-tbar-coltoggle-btn cps-icon:hover .cps-icon{color:var(--cps-color-prepared)!important}:host ::ng-deep .cps-tbar-small.p-treetable .p-treetable-header{height:43px}:host ::ng-deep .cps-tbar-normal.p-treetable .p-treetable-header{height:72px}:host ::ng-deep .p-treetable .p-treetable-footer{background:white;color:#343a40;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;padding:1rem;font-weight:700}:host ::ng-deep .p-treetable .p-treetable-tfoot>tr>td{text-align:left;padding:1rem;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;font-weight:700;color:#343a40;background:white}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:hover sortalticon{opacity:1}:host ::ng-deep .p-treetable .p-sortable-column:not(.p-highlight):hover{background:white;color:var(--cps-color-text-mild)}:host ::ng-deep .p-treetable .p-sortable-column.p-highlight:hover{background:white;color:var(--cps-color-text-mild)}:host ::ng-deep .p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:var(--cps-color-text-dark)}:host ::ng-deep .p-treetable .p-sortable-column .p-sortable-column-icon{color:var(--cps-color-text-mild);margin-left:.5rem}:host ::ng-deep .p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon{color:var(--cps-color-calm)}:host ::ng-deep .p-icon-wrapper{display:inline-flex}:host ::ng-deep .p-icon{display:inline-block;width:1rem;height:1rem}:host ::ng-deep .p-sortable-column-icon{width:13px;height:13px}:host ::ng-deep .p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable .p-sortable-column .p-column-title,:host ::ng-deep .p-treetable .p-sortable-column .p-sortable-column-icon,:host ::ng-deep .p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:unset}:host ::ng-deep .p-treetable .p-sortable-column .p-sortable-column-badge{border-radius:50%;height:1.125rem;min-width:1.125rem;line-height:1.125rem;color:var(--cps-color-calm);background:#f1eaec;margin-left:.5rem}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-treetable .p-sortable-column:focus{box-shadow:none;outline:0 none}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler.p-icon{width:2rem;height:2rem}:host ::ng-deep .p-treetable .p-treetable-tbody>tr.p-highlight{background:#eff6ff;color:#1d4ed8}:host ::ng-deep .p-treetable.p-treetable-hoverable-rows .p-treetable-tbody>tr:not(.p-highlight):hover{background:#f8f4f5}:host ::ng-deep .p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:auto}:host ::ng-deep .p-treetable .p-column-resizer-helper{background:#3b82f6}:host ::ng-deep .p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:1001;top:0;left:0;width:100%;height:100%;background-color:#fff;transition-duration:.2s;border:1px solid var(--cps-color-line-mid)}:host ::ng-deep .p-treetable.cps-tbar-small .p-treetable-loading-overlay{top:43px;height:calc(100% - 43px)}:host ::ng-deep .p-treetable.cps-tbar-normal .p-treetable-loading-overlay{top:72px;height:calc(100% - 72px)}:host ::ng-deep .cps-treetable-loading .p-treetable{min-height:200px}:host ::ng-deep .cps-treetable-loading .p-treetable.cps-tbar-normal{min-height:272px}:host ::ng-deep .cps-treetable-loading .p-treetable.cps-tbar-small{min-height:243px}:host ::ng-deep .p-sortable-column.cps-treetable-col-filter-menu-open{cursor:default}:host ::ng-deep .cps-treetable-col-filter-menu-open .cps-treetable-col-filter-menu-button{color:var(--cps-color-text-dark)}:host ::ng-deep sortalticon{opacity:0}:host ::ng-deep p-treetablesorticon{display:inline-flex;align-items:baseline}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-footer{border-width:0 1px 1px 1px}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-top{border-width:0 1px 0 1px}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-bottom{border-width:0 1px 1px 1px}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{border-width:1px 0 1px 1px}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{border-width:1px}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-tbody>tr>td{border-width:0 0 1px 1px}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-tfoot>tr>td{border-width:1px}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:only-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{padding:.5rem}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-tbody>tr>td{padding:.5rem}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-tfoot>tr>td{padding:.5rem}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-footer{padding:.5rem}:host ::ng-deep .p-treetable.p-treetable-lg .p-treetable-thead>tr>th{padding:1.25rem}:host ::ng-deep .p-treetable.p-treetable-lg .p-treetable-tbody>tr>td{padding:1.25rem}:host ::ng-deep .p-treetable.p-treetable-lg .p-treetable-tfoot>tr>td{padding:1.25rem}:host ::ng-deep .p-treetable.p-treetable-lg .p-treetable-footer{padding:1.25rem}:host ::ng-deep .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(odd){background:var(--cps-color-bg-light)}:host ::ng-deep .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(even){background:#ffffff}:host ::ng-deep .cps-treetable-row-menu-cell{width:55px;border-left:none!important}:host ::ng-deep td:has(p-treetablecheckbox){text-align:center!important}:host ::ng-deep th:has(p-treetableheadercheckbox){text-align:center!important;width:55px!important}:host ::ng-deep .p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative;width:18px;height:18px}:host ::ng-deep .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}:host ::ng-deep .p-hidden-accessible input,:host ::ng-deep .p-hidden-accessible select{transform:scale(0)}:host ::ng-deep .p-checkbox .p-checkbox-box{background:#ffffff;width:18px;height:18px;color:var(--cps-color-text-dark);border:2px solid var(--cps-color-text-mild);border-radius:2px;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .p-checkbox-box{display:flex;justify-content:center;align-items:center}:host ::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:var(--cps-color-calm);background:var(--cps-color-calm)}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:var(--cps-color-calm);background:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{border-color:var(--cps-color-calm)}:host ::ng-deep .p-checkbox .p-checkbox-box .p-icon{width:14px;height:14px}:host ::ng-deep .p-checkbox .p-checkbox-box .p-checkbox-icon{transition-duration:.2s;color:#fff;font-size:14px}:host ::ng-deep .p-checkbox .p-checkbox-box minusicon .p-checkbox-icon{color:var(--cps-color-calm);width:12px}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td p-treetablecheckbox .p-checkbox{margin-right:0}::ng-deep .p-scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}.cps-treetable-coltoggle-menu{display:block;max-height:242px;overflow-x:hidden;background:white}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item:hover{background:#f8f4f5}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item-label{color:var(--cps-color-text-dark)}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item-left{display:flex;align-items:center;margin-right:8px}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.selected,.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.allselected{font-weight:600}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.selected .cps-treetable-coltoggle-menu-item-label,.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.allselected .cps-treetable-coltoggle-menu-item-label{color:var(--cps-color-calm)}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.selected .cps-treetable-coltoggle-menu-item-check,.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.allselected .cps-treetable-coltoggle-menu-item-check{opacity:1}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.selected{background:#efe4e7}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.highlighten{background:#f5eeef}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.selected.highlighten{background:#e6d4d9}.cps-treetable-coltoggle-menu .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}::ng-deep .cps-select-options-menu.cps-paginator-page-options .cps-select-options-option{font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TreeTableModule }, { kind: "component", type: i3.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "virtualRowHeight", "value", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i3.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i3.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i3.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }, { kind: "component", type: CpsInputComponent, selector: "cps-input", inputs: ["label", "hint", "placeholder", "disabled", "width", "type", "loading", "clearable", "prefixIcon", "prefixIconClickable", "prefixIconSize", "prefixText", "hideDetails", "persistentClear", "error", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "value"], outputs: ["valueChanged", "focused", "prefixIconClicked", "blurred", "cleared", "enterClicked"] }, { kind: "component", type: CpsButtonComponent, selector: "cps-button", inputs: ["color", "contentColor", "type", "label", "icon", "iconPosition", "size", "width", "height", "disabled", "loading"], outputs: ["clicked"] }, { kind: "component", type: CpsMenuComponent, selector: "cps-menu", inputs: ["header", "items", "withArrow", "compressed", "focusOnShow", "containerClass", "showTransitionOptions", "hideTransitionOptions"], outputs: ["menuShown", "menuHidden", "beforeMenuHidden", "contentClicked"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsSelectComponent, selector: "cps-select", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "chips", "closableChips", "clearable", "openOnClear", "options", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "virtualScroll", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "optionsClass", "appearance", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsLoaderComponent, selector: "cps-loader", inputs: ["fullScreen", "opacity", "labelColor", "showLabel"] }, { kind: "component", type: AngleDoubleLeftIcon, selector: "AngleDoubleLeftIcon" }, { kind: "component", type: AngleLeftIcon, selector: "AngleLeftIcon" }, { kind: "component", type: AngleRightIcon, selector: "AngleRightIcon" }, { kind: "component", type: AngleDoubleRightIcon, selector: "AngleDoubleRightIcon" }, { kind: "directive", type: CpsTreeTableColumnSortableDirective, selector: "[cpsTTColSortable]", inputs: ["cpsTTColSortable"] }, { kind: "directive", type: TreeTableUnsortDirective, selector: "[ttWithUnsort]" }, { kind: "component", type: TableRowMenuComponent, selector: "table-row-menu", outputs: ["editRowBtnClicked", "removeRowBtnClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
367
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTreeTableComponent, decorators: [{
|
|
368
|
+
type: Component,
|
|
369
|
+
args: [{ selector: 'cps-tree-table', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
370
|
+
FormsModule,
|
|
371
|
+
CommonModule,
|
|
372
|
+
TreeTableModule,
|
|
373
|
+
CpsInputComponent,
|
|
374
|
+
CpsButtonComponent,
|
|
375
|
+
CpsMenuComponent,
|
|
376
|
+
CpsIconComponent,
|
|
377
|
+
CpsSelectComponent,
|
|
378
|
+
CpsLoaderComponent,
|
|
379
|
+
AngleDoubleLeftIcon,
|
|
380
|
+
AngleLeftIcon,
|
|
381
|
+
AngleRightIcon,
|
|
382
|
+
AngleDoubleRightIcon,
|
|
383
|
+
CpsTreeTableColumnSortableDirective,
|
|
384
|
+
TreeTableUnsortDirective,
|
|
385
|
+
TableRowMenuComponent
|
|
386
|
+
], providers: [
|
|
387
|
+
TreeTableService,
|
|
388
|
+
{
|
|
389
|
+
provide: TreeTable,
|
|
390
|
+
useFactory: treeTableFactory,
|
|
391
|
+
// eslint-disable-next-line no-use-before-define
|
|
392
|
+
deps: [CpsTreeTableComponent]
|
|
393
|
+
}
|
|
394
|
+
], template: "<p-treeTable\n #primengTreeTable\n ttWithUnsort\n [ngClass]=\"{ 'cps-treetable-loading': loading }\"\n [value]=\"data\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{\n numToleratedItems: numToleratedItems,\n autoSize: false\n }\"\n [columns]=\"selectedColumns\"\n [loading]=\"loading\"\n [rowHover]=\"rowHover\"\n [lazy]=\"lazy\"\n [(selection)]=\"selectedRows\"\n compareSelectionBy=\"equals\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n [globalFilterFields]=\"globalFilterFields\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [resetPageOnSort]=\"resetPageOnSort\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n (onPage)=\"onPageChange($event)\"\n (onSort)=\"onSort($event)\"\n (onLazyLoad)=\"onLazyLoaded($event)\"\n (sortFunction)=\"onSortFunction($event)\"\n (onNodeExpand)=\"onNodeExpanded($event)\"\n (onNodeCollapse)=\"onNodeCollapsed($event)\"\n (onNodeSelect)=\"onNodeSelected($event)\"\n (onNodeUnselect)=\"onNodeUnselected($event)\">\n <ng-template pTemplate=\"caption\" *ngIf=\"hasToolbar\">\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!toolbarTemplate\">\n <div class=\"cps-treetable-tbar-left\">\n <div>{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-treetable-tbar-global-filter\">\n <cps-input\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [disabled]=\"loading\"\n [appearance]=\"toolbarSize === 'small' ? 'underlined' : 'outlined'\"\n [hideDetails]=\"true\">\n </cps-input>\n </div>\n </div>\n <div class=\"cps-treetable-tbar-right\">\n <div\n *ngIf=\"showRemoveBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-treetable-tbar-remove-btn\">\n <cps-button\n label=\"Remove\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n [size]=\"toolbarSize\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-treetable-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n color=\"prepared\"\n type=\"outlined\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showColumnsToggle && columns.length > 0\"\n class=\"cps-treetable-tbar-coltoggle-btn\">\n <cps-icon\n icon=\"columns\"\n size=\"normal\"\n color=\"prepared-lighten1\"\n (click)=\"colToggleMenu.toggle($event)\"></cps-icon>\n <cps-menu #colToggleMenu [withArrow]=\"false\">\n <div class=\"cps-treetable-coltoggle-menu\">\n <div\n class=\"cps-treetable-coltoggle-menu-item select-all-option\"\n [class.allselected]=\"selectedColumns.length === columns.length\"\n (click)=\"toggleAllColumns()\">\n <span class=\"cps-treetable-coltoggle-menu-item-left\">\n <span class=\"cps-treetable-coltoggle-menu-item-check\"> </span>\n <span class=\"cps-treetable-coltoggle-menu-item-label\"\n >Show all columns</span\n >\n </span>\n </div>\n <div\n *ngFor=\"let col of columns\"\n class=\"cps-treetable-coltoggle-menu-item\"\n (click)=\"onSelectColumn(col)\"\n [class.selected]=\"isColumnSelected(col)\">\n <span class=\"cps-treetable-coltoggle-menu-item-left\">\n <span class=\"cps-treetable-coltoggle-menu-item-check\"></span>\n <span class=\"cps-treetable-coltoggle-menu-item-label\">{{\n col[colHeaderName]\n }}</span>\n </span>\n </div>\n </div>\n </cps-menu>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"nestedHeaderTemplate\" let-columns>\n <ng-container\n *ngTemplateOutlet=\"\n nestedHeaderTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"!nestedHeaderTemplate\" let-columns>\n <tr>\n <!-- <th style=\"width: 3rem\" *ngIf=\"reorderableRows\"></th> -->\n <th style=\"width: 55px\" *ngIf=\"selectable\">\n <p-treeTableHeaderCheckbox></p-treeTableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n headerTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate && columns.length > 0\">\n <ng-container *ngIf=\"sortable\">\n <th\n *ngFor=\"let col of columns\"\n [cpsTTColSortable]=\"col[colFieldName]\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"!sortable\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n </ng-container>\n <th class=\"cps-treetable-row-menu-cell\" *ngIf=\"showRowMenu\"></th>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData=\"rowData\"\n let-columns=\"columns\"\n let-rowNode\n let-rowIndex=\"rowIndex\">\n <tr\n [ttRow]=\"rowNode\"\n [ngClass]=\"{\n 'cps-treetable-row-selected':\n selectable && primengTreeTable.isSelected(rowNode.node)\n }\">\n <!-- <td *ngIf=\"reorderableRows\" class=\"cps-table-row-drag-handle-cell\">\n <span class=\"cps-table-row-drag-handle\" pReorderableRowHandle>\u2630</span>\n </td> -->\n <td style=\"width: 55px\" *ngIf=\"selectable\">\n <p-treeTableCheckbox [value]=\"rowNode\"></p-treeTableCheckbox>\n </td>\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: {\n $implicit: rowNode,\n rowIndex: rowIndex,\n columns: columns,\n rowData: rowData\n }\n \">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!bodyTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <td *ngFor=\"let col of columns; let i = index\">\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\">\n </p-treeTableToggler>\n {{ rowData[col[colFieldName]] }}\n </td>\n </ng-container>\n </ng-container>\n <td *ngIf=\"showRowMenu\" class=\"cps-treetable-row-menu-cell\">\n <table-row-menu\n (editRowBtnClicked)=\"onEditRowClicked(rowNode.node)\"\n (removeRowBtnClicked)=\"onRemoveRowClicked(rowNode.node)\">\n </table-row-menu>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n colspan=\"100\"\n class=\"cps-treetable-empty-message-td\"\n [ngStyle]=\"{ height: emptyBodyHeight }\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <cps-loader [fullScreen]=\"false\" opacity=\"0\"></cps-loader>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n <div class=\"cps-table-paginator-itms-per-page\">\n <span class=\"cps-table-paginator-items-per-page-title\"\n >Rows per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\">\n </cps-select>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"paginatorfirstpagelinkicon\">\n <AngleDoubleLeftIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatorpreviouspagelinkicon\">\n <AngleLeftIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatornextpagelinkicon\">\n <AngleRightIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatorlastpagelinkicon\">\n <AngleDoubleRightIcon />\n </ng-template>\n</p-treeTable>\n", styles: [":host ::ng-deep .p-treetable{position:relative}:host ::ng-deep .p-component,:host ::ng-deep .p-component *{box-sizing:border-box}:host ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host ::ng-deep .p-treetable-scrollable-wrapper{position:relative}:host ::ng-deep .cps-treetable-bottom-bordered>.p-treetable-scrollable-wrapper{border-bottom:1px solid var(--cps-color-line-mid)}:host ::ng-deep .p-treetable .p-treetable-scrollable-header,:host ::ng-deep .p-treetable .p-treetable-scrollable-footer{background:white}:host ::ng-deep .p-treetable-scrollable-header,:host ::ng-deep .p-treetable-scrollable-footer{overflow:hidden}:host ::ng-deep .p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{text-align:left;padding:1rem;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 1px;font-weight:700;color:var(--cps-color-text-mild);background:white;transition:box-shadow .2s}:host ::ng-deep .p-treetable-scrollable-body{overflow:auto!important;position:relative}:host ::ng-deep .p-treetable .p-treetable-tbody>tr{background:#ffffff;color:var(--cps-color-text-dark);transition:box-shadow .2s}:host ::ng-deep .p-treetable .p-treetable-tbody>tr.cps-treetable-row-selected{background-color:#f1ebed!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{text-align:left;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;padding:1rem}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-child{border-width:0 0 1px 1px}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler{width:1rem;height:1rem;color:var(--cps-color-text-dark);border:0 none;background:transparent;border-radius:50%;margin-right:.5rem}:host ::ng-deep .p-treetable-toggler{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}:host ::ng-deep .p-ripple{overflow:hidden;position:relative}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px;font-family:Source Sans Pro,sans-serif;border-radius:6px}:host ::ng-deep input[type=button],:host ::ng-deep input[type=submit],:host ::ng-deep input[type=reset],:host ::ng-deep input[type=file]::-webkit-file-upload-button,:host ::ng-deep button{border-radius:0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr:focus{outline:0 none;outline-offset:-.15rem}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler:enabled:hover{color:var(--cps-color-calm);border-color:transparent}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler:focus{outline:0 none;outline-offset:0}:host ::ng-deep .p-treetable .p-paginator-bottom{border-width:0 1px 1px 1px;border-radius:0}:host ::ng-deep .p-paginator{background:white;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;color:var(--cps-color-text-dark);padding:1rem;border:solid var(--cps-color-line-mid)}:host ::ng-deep .p-paginator-left-content{margin-right:auto}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page{display:inline-flex;align-items:center}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-table-paginator-items-per-page-title{font-family:Source Sans Pro,sans-serif;font-size:14px;margin-right:12px}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box{min-height:32px!important;background:transparent!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-items{font-size:14px!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-chevron .cps-icon{width:14px;height:14px}:host ::ng-deep .p-paginator .p-paginator-current{background-color:transparent;border:0 none;color:var(--cps-color-text-dark);min-width:3rem;margin:.143rem;padding:0 .5rem;font-family:Source Sans Pro,sans-serif;font-size:14px}:host ::ng-deep .p-paginator-page,:host ::ng-deep .p-paginator-next,:host ::ng-deep .p-paginator-last,:host ::ng-deep .p-paginator-first,:host ::ng-deep .p-paginator-prev,:host ::ng-deep .p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover{background:#f8f4f5}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):active{background:#f1eaec}:host ::ng-deep .p-paginator .p-paginator-first,:host ::ng-deep .p-paginator .p-paginator-prev,:host ::ng-deep .p-paginator .p-paginator-next,:host ::ng-deep .p-paginator .p-paginator-last{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-disabled,:host ::ng-deep .p-disabled *{cursor:default!important;pointer-events:none}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background:var(--cps-color-calm);border-color:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f8f4f5}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):active{background:#f1eaec}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-paginator-element:focus{z-index:1;position:relative}:host ::ng-deep span.p-paginator-icon{display:contents}:host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:.4}:host ::ng-deep .cps-treetable-empty-message-td{text-align:center!important;font-weight:600;background:white}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-header{border-width:1px 1px 0 1px}:host ::ng-deep .p-treetable .p-treetable-header{font-weight:600;display:flex;justify-content:space-between;align-items:center;padding:0 10px;border-top:1px solid var(--cps-color-line-mid);border-right:1px solid var(--cps-color-line-mid);border-left:4px solid var(--cps-color-surprise)!important;border-radius:4px 4px 0 0;font-size:16px;line-height:150%;background-color:#fff;color:var(--cps-color-text-darkest);overflow:auto}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-left{display:flex;align-items:center}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-left .cps-treetable-tbar-global-filter{margin-left:12px}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right{display:flex;align-items:center}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right .cps-treetable-tbar-remove-btn{margin-right:4px}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right .cps-treetable-tbar-action-btn{margin-right:4px;margin-left:8px}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right .cps-treetable-tbar-coltoggle-btn{display:contents}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right .cps-treetable-tbar-coltoggle-btn cps-icon{margin-left:8px;margin-right:4px;cursor:pointer}:host ::ng-deep .p-treetable .p-treetable-header .cps-treetable-tbar-right .cps-treetable-tbar-coltoggle-btn cps-icon:hover .cps-icon{color:var(--cps-color-prepared)!important}:host ::ng-deep .cps-tbar-small.p-treetable .p-treetable-header{height:43px}:host ::ng-deep .cps-tbar-normal.p-treetable .p-treetable-header{height:72px}:host ::ng-deep .p-treetable .p-treetable-footer{background:white;color:#343a40;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;padding:1rem;font-weight:700}:host ::ng-deep .p-treetable .p-treetable-tfoot>tr>td{text-align:left;padding:1rem;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;font-weight:700;color:#343a40;background:white}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:hover sortalticon{opacity:1}:host ::ng-deep .p-treetable .p-sortable-column:not(.p-highlight):hover{background:white;color:var(--cps-color-text-mild)}:host ::ng-deep .p-treetable .p-sortable-column.p-highlight:hover{background:white;color:var(--cps-color-text-mild)}:host ::ng-deep .p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:var(--cps-color-text-dark)}:host ::ng-deep .p-treetable .p-sortable-column .p-sortable-column-icon{color:var(--cps-color-text-mild);margin-left:.5rem}:host ::ng-deep .p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon{color:var(--cps-color-calm)}:host ::ng-deep .p-icon-wrapper{display:inline-flex}:host ::ng-deep .p-icon{display:inline-block;width:1rem;height:1rem}:host ::ng-deep .p-sortable-column-icon{width:13px;height:13px}:host ::ng-deep .p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable .p-sortable-column .p-column-title,:host ::ng-deep .p-treetable .p-sortable-column .p-sortable-column-icon,:host ::ng-deep .p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:unset}:host ::ng-deep .p-treetable .p-sortable-column .p-sortable-column-badge{border-radius:50%;height:1.125rem;min-width:1.125rem;line-height:1.125rem;color:var(--cps-color-calm);background:#f1eaec;margin-left:.5rem}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-treetable .p-sortable-column:focus{box-shadow:none;outline:0 none}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler.p-icon{width:2rem;height:2rem}:host ::ng-deep .p-treetable .p-treetable-tbody>tr.p-highlight{background:#eff6ff;color:#1d4ed8}:host ::ng-deep .p-treetable.p-treetable-hoverable-rows .p-treetable-tbody>tr:not(.p-highlight):hover{background:#f8f4f5}:host ::ng-deep .p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:auto}:host ::ng-deep .p-treetable .p-column-resizer-helper{background:#3b82f6}:host ::ng-deep .p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:1001;top:0;left:0;width:100%;height:100%;background-color:#fff;transition-duration:.2s;border:1px solid var(--cps-color-line-mid)}:host ::ng-deep .p-treetable.cps-tbar-small .p-treetable-loading-overlay{top:43px;height:calc(100% - 43px)}:host ::ng-deep .p-treetable.cps-tbar-normal .p-treetable-loading-overlay{top:72px;height:calc(100% - 72px)}:host ::ng-deep .cps-treetable-loading .p-treetable{min-height:200px}:host ::ng-deep .cps-treetable-loading .p-treetable.cps-tbar-normal{min-height:272px}:host ::ng-deep .cps-treetable-loading .p-treetable.cps-tbar-small{min-height:243px}:host ::ng-deep .p-sortable-column.cps-treetable-col-filter-menu-open{cursor:default}:host ::ng-deep .cps-treetable-col-filter-menu-open .cps-treetable-col-filter-menu-button{color:var(--cps-color-text-dark)}:host ::ng-deep sortalticon{opacity:0}:host ::ng-deep p-treetablesorticon{display:inline-flex;align-items:baseline}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-footer{border-width:0 1px 1px 1px}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-top{border-width:0 1px 0 1px}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-bottom{border-width:0 1px 1px 1px}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{border-width:1px 0 1px 1px}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{border-width:1px}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-tbody>tr>td{border-width:0 0 1px 1px}:host ::ng-deep .p-treetable.p-treetable-gridlines .p-treetable-tfoot>tr>td{border-width:1px}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:only-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{padding:.5rem}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-tbody>tr>td{padding:.5rem}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-tfoot>tr>td{padding:.5rem}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-footer{padding:.5rem}:host ::ng-deep .p-treetable.p-treetable-lg .p-treetable-thead>tr>th{padding:1.25rem}:host ::ng-deep .p-treetable.p-treetable-lg .p-treetable-tbody>tr>td{padding:1.25rem}:host ::ng-deep .p-treetable.p-treetable-lg .p-treetable-tfoot>tr>td{padding:1.25rem}:host ::ng-deep .p-treetable.p-treetable-lg .p-treetable-footer{padding:1.25rem}:host ::ng-deep .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(odd){background:var(--cps-color-bg-light)}:host ::ng-deep .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(even){background:#ffffff}:host ::ng-deep .cps-treetable-row-menu-cell{width:55px;border-left:none!important}:host ::ng-deep td:has(p-treetablecheckbox){text-align:center!important}:host ::ng-deep th:has(p-treetableheadercheckbox){text-align:center!important;width:55px!important}:host ::ng-deep .p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative;width:18px;height:18px}:host ::ng-deep .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}:host ::ng-deep .p-hidden-accessible input,:host ::ng-deep .p-hidden-accessible select{transform:scale(0)}:host ::ng-deep .p-checkbox .p-checkbox-box{background:#ffffff;width:18px;height:18px;color:var(--cps-color-text-dark);border:2px solid var(--cps-color-text-mild);border-radius:2px;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .p-checkbox-box{display:flex;justify-content:center;align-items:center}:host ::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:var(--cps-color-calm);background:var(--cps-color-calm)}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:var(--cps-color-calm);background:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{border-color:var(--cps-color-calm)}:host ::ng-deep .p-checkbox .p-checkbox-box .p-icon{width:14px;height:14px}:host ::ng-deep .p-checkbox .p-checkbox-box .p-checkbox-icon{transition-duration:.2s;color:#fff;font-size:14px}:host ::ng-deep .p-checkbox .p-checkbox-box minusicon .p-checkbox-icon{color:var(--cps-color-calm);width:12px}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td p-treetablecheckbox .p-checkbox{margin-right:0}::ng-deep .p-scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}.cps-treetable-coltoggle-menu{display:block;max-height:242px;overflow-x:hidden;background:white}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item:hover{background:#f8f4f5}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item-label{color:var(--cps-color-text-dark)}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item-left{display:flex;align-items:center;margin-right:8px}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.selected,.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.allselected{font-weight:600}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.selected .cps-treetable-coltoggle-menu-item-label,.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.allselected .cps-treetable-coltoggle-menu-item-label{color:var(--cps-color-calm)}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.selected .cps-treetable-coltoggle-menu-item-check,.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.allselected .cps-treetable-coltoggle-menu-item-check{opacity:1}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.selected{background:#efe4e7}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.highlighten{background:#f5eeef}.cps-treetable-coltoggle-menu .cps-treetable-coltoggle-menu-item.selected.highlighten{background:#e6d4d9}.cps-treetable-coltoggle-menu .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}::ng-deep .cps-select-options-menu.cps-paginator-page-options .cps-select-options-option{font-size:14px}\n"] }]
|
|
395
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
|
|
396
|
+
type: Input
|
|
397
|
+
}], columns: [{
|
|
398
|
+
type: Input
|
|
399
|
+
}], colHeaderName: [{
|
|
400
|
+
type: Input
|
|
401
|
+
}], colFieldName: [{
|
|
402
|
+
type: Input
|
|
403
|
+
}], size: [{
|
|
404
|
+
type: Input
|
|
405
|
+
}], striped: [{
|
|
406
|
+
type: Input
|
|
407
|
+
}], bordered: [{
|
|
408
|
+
type: Input
|
|
409
|
+
}], tableStyle: [{
|
|
410
|
+
type: Input
|
|
411
|
+
}], tableStyleClass: [{
|
|
412
|
+
type: Input
|
|
413
|
+
}], selectable: [{
|
|
414
|
+
type: Input
|
|
415
|
+
}], sortable: [{
|
|
416
|
+
type: Input
|
|
417
|
+
}], sortMode: [{
|
|
418
|
+
type: Input
|
|
419
|
+
}], customSort: [{
|
|
420
|
+
type: Input
|
|
421
|
+
}], hasToolbar: [{
|
|
422
|
+
type: Input
|
|
423
|
+
}], toolbarSize: [{
|
|
424
|
+
type: Input
|
|
425
|
+
}], toolbarTitle: [{
|
|
426
|
+
type: Input
|
|
427
|
+
}], rowHover: [{
|
|
428
|
+
type: Input
|
|
429
|
+
}], showGlobalFilter: [{
|
|
430
|
+
type: Input
|
|
431
|
+
}], globalFilterPlaceholder: [{
|
|
432
|
+
type: Input
|
|
433
|
+
}], globalFilterFields: [{
|
|
434
|
+
type: Input
|
|
435
|
+
}], paginator: [{
|
|
436
|
+
type: Input
|
|
437
|
+
}], alwaysShowPaginator: [{
|
|
438
|
+
type: Input
|
|
439
|
+
}], rowsPerPageOptions: [{
|
|
440
|
+
type: Input
|
|
441
|
+
}], first: [{
|
|
442
|
+
type: Input
|
|
443
|
+
}], rows: [{
|
|
444
|
+
type: Input
|
|
445
|
+
}], resetPageOnRowsChange: [{
|
|
446
|
+
type: Input
|
|
447
|
+
}], resetPageOnSort: [{
|
|
448
|
+
type: Input
|
|
449
|
+
}], emptyMessage: [{
|
|
450
|
+
type: Input
|
|
451
|
+
}], emptyBodyHeight: [{
|
|
452
|
+
type: Input
|
|
453
|
+
}], lazy: [{
|
|
454
|
+
type: Input
|
|
455
|
+
}], lazyLoadOnInit: [{
|
|
456
|
+
type: Input
|
|
457
|
+
}], loading: [{
|
|
458
|
+
type: Input
|
|
459
|
+
}], scrollable: [{
|
|
460
|
+
type: Input
|
|
461
|
+
}], scrollHeight: [{
|
|
462
|
+
type: Input
|
|
463
|
+
}], virtualScroll: [{
|
|
464
|
+
type: Input
|
|
465
|
+
}], numToleratedItems: [{
|
|
466
|
+
type: Input
|
|
467
|
+
}], showActionBtn: [{
|
|
468
|
+
type: Input
|
|
469
|
+
}], actionBtnTitle: [{
|
|
470
|
+
type: Input
|
|
471
|
+
}], showColumnsToggle: [{
|
|
472
|
+
type: Input
|
|
473
|
+
}], actionBtnClicked: [{
|
|
474
|
+
type: Output
|
|
475
|
+
}], columnsSelected: [{
|
|
476
|
+
type: Output
|
|
477
|
+
}], pageChanged: [{
|
|
478
|
+
type: Output
|
|
479
|
+
}], lazyLoaded: [{
|
|
480
|
+
type: Output
|
|
481
|
+
}], nodeExpanded: [{
|
|
482
|
+
type: Output
|
|
483
|
+
}], nodeCollapsed: [{
|
|
484
|
+
type: Output
|
|
485
|
+
}], nodeSelected: [{
|
|
486
|
+
type: Output
|
|
487
|
+
}], nodeUnselected: [{
|
|
488
|
+
type: Output
|
|
489
|
+
}], sorted: [{
|
|
490
|
+
type: Output
|
|
491
|
+
}], editRowBtnClicked: [{
|
|
492
|
+
type: Output
|
|
493
|
+
}], rowsRemoved: [{
|
|
494
|
+
type: Output
|
|
495
|
+
}], customSortFunction: [{
|
|
496
|
+
type: Output
|
|
497
|
+
}], toolbarTemplate: [{
|
|
498
|
+
type: ContentChild,
|
|
499
|
+
args: ['toolbar', { static: false }]
|
|
500
|
+
}], headerTemplate: [{
|
|
501
|
+
type: ContentChild,
|
|
502
|
+
args: ['header', { static: false }]
|
|
503
|
+
}], nestedHeaderTemplate: [{
|
|
504
|
+
type: ContentChild,
|
|
505
|
+
args: ['nestedHeader', { static: false }]
|
|
506
|
+
}], bodyTemplate: [{
|
|
507
|
+
type: ContentChild,
|
|
508
|
+
args: ['body', { static: false }]
|
|
509
|
+
}], primengTreeTable: [{
|
|
510
|
+
type: ViewChild,
|
|
511
|
+
args: ['primengTreeTable', { static: true }]
|
|
512
|
+
}] } });
|
|
513
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRyZWUtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRyZWUtdGFibGUvY3BzLXRyZWUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRyZWUtdGFibGUvY3BzLXRyZWUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNoQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFB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LGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQU9HLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFHQSxlQUFlO3NCQURyQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSW5DLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJbEMsb0JBQW9CO3NCQUQxQixZQUFZO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXhDLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJdkMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBUcmVlVGFibGUsXG4gIFRyZWVUYWJsZVNlcnZpY2UsXG4gIFRyZWVUYWJsZU1vZHVsZVxufSBmcm9tICdwcmltZW5nL3RyZWV0YWJsZSc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgQ3BzSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtaW5wdXQvY3BzLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9jcHMtYnV0dG9uL2Nwcy1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtbWVudS9jcHMtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmluZCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBDcHNJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc1NlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1zZWxlY3QvY3BzLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbmdsZURvdWJsZUxlZnRJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy9hbmdsZWRvdWJsZWxlZnQnO1xuaW1wb3J0IHsgQW5nbGVMZWZ0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvYW5nbGVsZWZ0JztcbmltcG9ydCB7IEFuZ2xlUmlnaHRJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy9hbmdsZXJpZ2h0JztcbmltcG9ydCB7IEFuZ2xlRG91YmxlUmlnaHRJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy9hbmdsZWRvdWJsZXJpZ2h0JztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5pbXBvcnQgeyBDcHNMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtbG9hZGVyL2Nwcy1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNvcnRFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IENwc1RyZWVUYWJsZUNvbHVtblNvcnRhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Nwcy10cmVlLXRhYmxlLWNvbHVtbi1zb3J0YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVHJlZVRhYmxlVW5zb3J0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ludGVybmFsL3RyZWUtdGFibGUtdW5zb3J0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJsZVJvd01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtdGFibGUvdGFibGUtcm93LW1lbnUvdGFibGUtcm93LW1lbnUuY29tcG9uZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVUYWJsZUZhY3RvcnkodGFibGVDb21wb25lbnQ6IENwc1RyZWVUYWJsZUNvbXBvbmVudCkge1xuICByZXR1cm4gdGFibGVDb21wb25lbnQucHJpbWVuZ1RyZWVUYWJsZTtcbn1cblxuZXhwb3J0IHR5cGUgQ3BzVHJlZVRhYmxlU2l6ZSA9ICdzbWFsbCcgfCAnbm9ybWFsJyB8ICdsYXJnZSc7XG5leHBvcnQgdHlwZSBDcHNUcmVlVGFibGVUb29sYmFyU2l6ZSA9ICdzbWFsbCcgfCAnbm9ybWFsJztcbmV4cG9ydCB0eXBlIENwc1RyZWVUYWJsZVNvcnRNb2RlID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3BzLXRyZWUtdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmVlVGFibGVNb2R1bGUsXG4gICAgQ3BzSW5wdXRDb21wb25lbnQsXG4gICAgQ3BzQnV0dG9uQ29tcG9uZW50LFxuICAgIENwc01lbnVDb21wb25lbnQsXG4gICAgQ3BzSWNvbkNvbXBvbmVudCxcbiAgICBDcHNTZWxlY3RDb21wb25lbnQsXG4gICAgQ3BzTG9hZGVyQ29tcG9uZW50LFxuICAgIEFuZ2xlRG91YmxlTGVmdEljb24sXG4gICAgQW5nbGVMZWZ0SWNvbixcbiAgICBBbmdsZVJpZ2h0SWNvbixcbiAgICBBbmdsZURvdWJsZVJpZ2h0SWNvbixcbiAgICBDcHNUcmVlVGFibGVDb2x1bW5Tb3J0YWJsZURpcmVjdGl2ZSxcbiAgICBUcmVlVGFibGVVbnNvcnREaXJlY3RpdmUsXG4gICAgVGFibGVSb3dNZW51Q29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtdHJlZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nwcy10cmVlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIFRyZWVUYWJsZVNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogVHJlZVRhYmxlLFxuICAgICAgdXNlRmFjdG9yeTogdHJlZVRhYmxlRmFjdG9yeSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgZGVwczogW0Nwc1RyZWVUYWJsZUNvbXBvbmVudF1cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3BzVHJlZVRhYmxlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgQElucHV0KCkgZGF0YTogYW55W10gPSBbXTtcbiAgQElucHV0KCkgY29sdW1uczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gW107XG4gIEBJbnB1dCgpIGNvbEhlYWRlck5hbWUgPSAnaGVhZGVyJztcbiAgQElucHV0KCkgY29sRmllbGROYW1lID0gJ2ZpZWxkJztcblxuICBASW5wdXQoKSBzaXplOiBDcHNUcmVlVGFibGVTaXplID0gJ25vcm1hbCc7XG4gIEBJbnB1dCgpIHN0cmlwZWQgPSB0cnVlO1xuICBASW5wdXQoKSBib3JkZXJlZCA9IHRydWU7XG4gIEBJbnB1dCgpIHRhYmxlU3R5bGUgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHRhYmxlU3R5bGVDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc29ydGFibGUgPSBmYWxzZTsgLy8gbWFrZXMgYWxsIHNvcnRhYmxlIGlmIGNvbHVtbnMgYXJlIHByb3ZpZGVkXG4gIEBJbnB1dCgpIHNvcnRNb2RlOiBDcHNUcmVlVGFibGVTb3J0TW9kZSA9ICdzaW5nbGUnO1xuICBASW5wdXQoKSBjdXN0b21Tb3J0ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgaGFzVG9vbGJhciA9IHRydWU7XG4gIEBJbnB1dCgpIHRvb2xiYXJTaXplOiBDcHNUcmVlVGFibGVUb29sYmFyU2l6ZSA9ICdub3JtYWwnO1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGUgPSAnJztcblxuICBASW5wdXQoKSByb3dIb3ZlciA9IHRydWU7XG5cbiAgQElucHV0KCkgc2hvd0dsb2JhbEZpbHRlciA9IHRydWU7XG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlclBsYWNlaG9sZGVyID0gJ1NlYXJjaCc7XG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcblxuICBASW5wdXQoKSBwYWdpbmF0b3IgPSBmYWxzZTtcbiAgQElucHV0KCkgYWx3YXlzU2hvd1BhZ2luYXRvciA9IHRydWU7XG4gIEBJbnB1dCgpIHJvd3NQZXJQYWdlT3B0aW9uczogbnVtYmVyW10gPSBbXTtcbiAgQElucHV0KCkgZmlyc3QgPSAwO1xuICBASW5wdXQoKSByb3dzID0gMDtcbiAgQElucHV0KCkgcmVzZXRQYWdlT25Sb3dzQ2hhbmdlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlc2V0UGFnZU9uU29ydCA9IHRydWU7XG5cbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ05vIGRhdGEnO1xuICBASW5wdXQoKSBlbXB0eUJvZHlIZWlnaHQ6IG51bWJlciB8IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpIGxhenkgPSBmYWxzZTtcbiAgQElucHV0KCkgbGF6eUxvYWRPbkluaXQgPSB0cnVlO1xuXG4gIC8vIEBJbnB1dCgpIHNob3dSb3dNZW51ID0gZmFsc2U7IC8vIFRPRE9cbiAgc2hvd1Jvd01lbnUgPSBmYWxzZTsgLy8gVE9ET1xuXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzY3JvbGxhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0ID0gJyc7IC8vICdmbGV4JyBvciB2YWx1ZSsncHgnXG4gIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTsgLy8gd29ya3Mgb25seSBpZiBzY3JvbGxhYmxlIGlzIHRydWVcbiAgQElucHV0KCkgbnVtVG9sZXJhdGVkSXRlbXMgPSAxMDtcblxuICAvLyBASW5wdXQoKSBzaG93UmVtb3ZlQnRuT25TZWxlY3QgPSBmYWxzZTsgLy8gVE9ET1xuICBzaG93UmVtb3ZlQnRuT25TZWxlY3QgPSBmYWxzZTsgLy8gVE9ET1xuXG4gIEBJbnB1dCgpIHNob3dBY3Rpb25CdG4gPSBmYWxzZTtcbiAgQElucHV0KCkgYWN0aW9uQnRuVGl0bGUgPSAnQWN0aW9uJztcblxuICBASW5wdXQoKSBzaG93Q29sdW1uc1RvZ2dsZSA9IGZhbHNlOyAvLyBpZiBleHRlcm5hbCBib2R5IHRlbXBsYXRlIGlzIHByb3ZpZGVkLCB1c2UgY29sdW1uc1NlbGVjdGVkIGV2ZW50IGVtaXR0ZXJcblxuICBAT3V0cHV0KCkgYWN0aW9uQnRuQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGNvbHVtbnNTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBhbnkgfVtdPigpO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGxhenlMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG5vZGVFeHBhbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbm9kZUNvbGxhcHNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbm9kZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBub2RlVW5zZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc29ydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlZGl0Um93QnRuQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcm93c1JlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBjdXN0b20gc29ydGluZy4gY3VzdG9tU29ydCBtdXN0IGJlIHRydWUuXG4gICAqIEBwYXJhbSB7YW55fSBhbnkgLSBzb3J0IG1ldGEuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIGN1c3RvbVNvcnRGdW5jdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAQ29udGVudENoaWxkKCd0b29sYmFyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyB0b29sYmFyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2hlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgaGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ25lc3RlZEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgbmVzdGVkSGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2JvZHknLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGJvZHlUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgncHJpbWVuZ1RyZWVUYWJsZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaW1lbmdUcmVlVGFibGUhOiBUcmVlVGFibGU7XG5cbiAgc2VsZWN0ZWRDb2x1bW5zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXTtcblxuICByb3dPcHRpb25zOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdID0gW107XG5cbiAgc2VsZWN0ZWRSb3dzOiBhbnlbXSA9IFtdO1xuXG4gIHZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA9IDA7XG4gIGRlZlNjcm9sbEhlaWdodFB4ID0gMDtcbiAgZGVmU2Nyb2xsSGVpZ2h0ID0gJyc7XG5cbiAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBoZWFkZXJCb3g6IGFueTtcbiAgc2Nyb2xsYWJsZUJvZHk6IGFueTtcbiAgc2Nyb2xsYmFyV2lkdGggPSAwO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBib2R5ID0gZW50cnkudGFyZ2V0O1xuICAgICAgICBjb25zdCBzYmFyVmlzaWJsZSA9IGJvZHkuc2Nyb2xsSGVpZ2h0ID4gYm9keS5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgbGV0IHdTY3JvbGwgPSBzYmFyVmlzaWJsZSA/IHRoaXMuc2Nyb2xsYmFyV2lkdGggOiAwO1xuICAgICAgICBpZiAod1Njcm9sbCA+IDApIHdTY3JvbGwgLT0gMTtcblxuICAgICAgICB0aGlzLmhlYWRlckJveC5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHt3U2Nyb2xsfXB4YDtcbiAgICAgICAgdGhpcy5oZWFkZXJCb3guc3R5bGUuYm9yZGVyUmlnaHQgPVxuICAgICAgICAgIHdTY3JvbGwgPiAwID8gJzFweCBzb2xpZCAjZDdkNWQ1JyA6ICd1bnNldCc7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZW1wdHlCb2R5SGVpZ2h0ID0gY29udmVydFNpemUodGhpcy5lbXB0eUJvZHlIZWlnaHQpO1xuICAgIGlmICghdGhpcy5zY3JvbGxhYmxlKSB0aGlzLnZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgIHRoaXMuZGVmU2Nyb2xsSGVpZ2h0ID0gdGhpcy5zY3JvbGxIZWlnaHQ7XG5cbiAgICAgIGlmICh0aGlzLmRlZlNjcm9sbEhlaWdodCA9PT0gJ2ZsZXgnKVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fb25XaW5kb3dSZXNpemUuYmluZCh0aGlzKSk7XG5cbiAgICAgIGlmICh0aGlzLmRlZlNjcm9sbEhlaWdodCAmJiB0aGlzLmRlZlNjcm9sbEhlaWdodCAhPT0gJ2ZsZXgnKSB7XG4gICAgICAgIHRoaXMuZGVmU2Nyb2xsSGVpZ2h0UHggPSBwYXJzZUludCh0aGlzLnNjcm9sbEhlaWdodCwgMTApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgaWYgKHRoaXMucm93c1BlclBhZ2VPcHRpb25zLmxlbmd0aCA8IDEpXG4gICAgICAgIHRoaXMucm93c1BlclBhZ2VPcHRpb25zID0gWzUsIDEwLCAyNSwgNTBdO1xuXG4gICAgICBpZiAoIXRoaXMucm93cykgdGhpcy5yb3dzID0gdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnNbMF07XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucy5pbmNsdWRlcyh0aGlzLnJvd3MpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyb3dzUGVyUGFnZU9wdGlvbnMgbXVzdCBpbmNsdWRlIHJvd3MnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnJvd09wdGlvbnMgPSB0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucy5tYXAoKHYpID0+ICh7XG4gICAgICAgIGxhYmVsOiAnJyArIHYsXG4gICAgICAgIHZhbHVlOiB2XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zaG93R2xvYmFsRmlsdGVyICYmXG4gICAgICB0aGlzLmdsb2JhbEZpbHRlckZpZWxkcz8ubGVuZ3RoIDwgMSAmJlxuICAgICAgdGhpcy5kYXRhPy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLmdsb2JhbEZpbHRlckZpZWxkcyA9IE9iamVjdC5rZXlzKHRoaXMuZGF0YVswXS5kYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbGFibGVCb2R5ID0gdGhpcy5wcmltZW5nVHJlZVRhYmxlLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcucC10cmVldGFibGUtc2Nyb2xsYWJsZS1ib2R5J1xuICAgICk7XG4gICAgaWYgKHRoaXMuc2Nyb2xsYWJsZUJvZHkpIHtcbiAgICAgIHRoaXMuaGVhZGVyQm94ID0gdGhpcy5wcmltZW5nVHJlZVRhYmxlLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJy5wLXRyZWV0YWJsZS1zY3JvbGxhYmxlLWhlYWRlci1ib3gnXG4gICAgICApO1xuICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLmRlZlNjcm9sbEhlaWdodCA9PT0gJ2ZsZXgnKVxuICAgICAgICB0aGlzLmRlZlNjcm9sbEhlaWdodFB4ID0gdGhpcy5zY3JvbGxhYmxlQm9keS5jbGllbnRIZWlnaHQ7XG5cbiAgICAgIGlmICh0aGlzLmhlYWRlckJveCkge1xuICAgICAgICB0aGlzLnNjcm9sbGJhcldpZHRoID0gRG9tSGFuZGxlci5jYWxjdWxhdGVTY3JvbGxiYXJXaWR0aCgpO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5zY3JvbGxhYmxlQm9keSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsIHx8IHRoaXMudmlydHVhbFNjcm9sbEl0ZW1TaXplKSByZXR1cm47XG4gICAgdGhpcy52aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPVxuICAgICAgdGhpcy5wcmltZW5nVHJlZVRhYmxlPy5lbD8ubmF0aXZlRWxlbWVudFxuICAgICAgICA/LnF1ZXJ5U2VsZWN0b3IoJy5wLXRyZWV0YWJsZS10Ym9keScpXG4gICAgICAgID8ucXVlcnlTZWxlY3RvcigndHInKT8uY2xpZW50SGVpZ2h0IHx8IDA7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLmRlZlNjcm9sbEhlaWdodCA9PT0gJ2ZsZXgnKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX29uV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25XaW5kb3dSZXNpemUoKSB7XG4gICAgdGhpcy5kZWZTY3JvbGxIZWlnaHRQeCA9IHRoaXMuc2Nyb2xsYWJsZUJvZHkuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgZ2V0IHN0eWxlQ2xhc3MoKSB7XG4gICAgY29uc3QgY2xhc3Nlc0xpc3QgPSBbXTtcbiAgICBzd2l0Y2ggKHRoaXMuc2l6ZSkge1xuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICBjbGFzc2VzTGlzdC5wdXNoKCdwLXRyZWV0YWJsZS1zbScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgY2xhc3Nlc0xpc3QucHVzaCgncC10cmVldGFibGUtbGcnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc1Rvb2xiYXIpIHtcbiAgICAgIHN3aXRjaCAodGhpcy50b29sYmFyU2l6ZSkge1xuICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgICAgY2xhc3Nlc0xpc3QucHVzaCgnY3BzLXRiYXItc21hbGwnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbm9ybWFsJzpcbiAgICAgICAgICBjbGFzc2VzTGlzdC5wdXNoKCdjcHMtdGJhci1ub3JtYWwnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuc3RyaXBlZCkge1xuICAgICAgY2xhc3Nlc0xpc3QucHVzaCgncC10cmVldGFibGUtc3RyaXBlZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5ib3JkZXJlZCkge1xuICAgICAgY2xhc3Nlc0xpc3QucHVzaCgncC10cmVldGFibGUtZ3JpZGxpbmVzJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2Nyb2xsSGVpZ2h0ICYmICF0aGlzLmxvYWRpbmcgJiYgdGhpcy5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ2Nwcy10cmVldGFibGUtYm90dG9tLWJvcmRlcmVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXNMaXN0LmpvaW4oJyAnKTtcbiAgfVxuXG4gIG9uU29ydEZ1bmN0aW9uKGV2ZW50OiBTb3J0RXZlbnQpIHtcbiAgICB0aGlzLmN1c3RvbVNvcnRGdW5jdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlY2FsY1ZpcnR1YWxIZWlnaHQoKSB7XG4gICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLmRlZlNjcm9sbEhlaWdodCkge1xuICAgICAgY29uc3QgaXRlbXNMZW4gPSB0aGlzLnByaW1lbmdUcmVlVGFibGUuc2VyaWFsaXplZFZhbHVlLmxlbmd0aDtcbiAgICAgIGlmIChpdGVtc0xlbiA8IDEpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxIZWlnaHQgPSB0aGlzLmVtcHR5Qm9keUhlaWdodFxuICAgICAgICAgID8gKGBjYWxjKCR7dGhpcy5lbXB0eUJvZHlIZWlnaHR9ICsgMXB4KWAgYXMgc3RyaW5nKVxuICAgICAgICAgIDogdGhpcy52aXJ0dWFsU2Nyb2xsSXRlbVNpemUgKyAxICsgJ3B4JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGN1ckhlaWdodCA9IHRoaXMudmlydHVhbFNjcm9sbEl0ZW1TaXplICogaXRlbXNMZW4gKyAyO1xuICAgICAgICBpZiAodGhpcy5kZWZTY3JvbGxIZWlnaHQgPT09ICdmbGV4Jykge1xuICAgICAgICAgIGlmIChjdXJIZWlnaHQgPj0gdGhpcy5kZWZTY3JvbGxIZWlnaHRQeCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIZWlnaHQgPSAnZmxleCc7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zY3JvbGxhYmxlQm9keS5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgICAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY3JvbGxIZWlnaHQgPSBNYXRoLm1pbih0aGlzLmRlZlNjcm9sbEhlaWdodFB4LCBjdXJIZWlnaHQpICsgJ3B4JztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkZpbHRlckdsb2JhbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmltZW5nVHJlZVRhYmxlLmZpbHRlckdsb2JhbCh2YWx1ZSwgJ2NvbnRhaW5zJyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9yZWNhbGNWaXJ0dWFsSGVpZ2h0KCk7XG4gICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICBvbkNsaWNrQWN0aW9uQnRuKCkge1xuICAgIHRoaXMuYWN0aW9uQnRuQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZCgpIHtcbiAgICAvLyBUT0RPXG4gICAgLy8gY29uc3QgaW5kZXhlczogbnVtYmVyW10gPSB0aGlzLnByaW1lbmdUcmVlVGFibGUuc2VsZWN0aW9uLm1hcChcbiAgICAvLyAgIChzOiBhbnkpID0+IHMuX2RlZmF1bHRTb3J0T3JkZXJcbiAgICAvLyApO1xuICAgIC8vIGluZGV4ZXMuc29ydCgoYSwgYikgPT4gYiAtIGEpO1xuICAgIC8vIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoXG4gICAgLy8gICAodjogYW55KSA9PiAhaW5kZXhlcy5pbmNsdWRlcyh2Ll9kZWZhdWx0U29ydE9yZGVyKVxuICAgIC8vICk7XG4gICAgLy8gdGhpcy5yb3dzUmVtb3ZlZC5lbWl0KFxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd3MubWFwKCh7IF9kZWZhdWx0U29ydE9yZGVyLCAuLi5yZXN0IH0pID0+IHJlc3QpXG4gICAgLy8gKTtcbiAgICAvLyB0aGlzLnNlbGVjdGVkUm93cyA9IFtdO1xuICB9XG5cbiAgb25FZGl0Um93Q2xpY2tlZChub2RlOiBhbnkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgY29uc3QgeyBfZGVmYXVsdFNvcnRPcmRlciwgZXhwYW5kZWQsIHBhcnRpYWxTZWxlY3RlZCwgLi4ucmVzdCB9ID0gbm9kZTtcbiAgICB0aGlzLmVkaXRSb3dCdG5DbGlja2VkLmVtaXQocmVzdCk7XG4gIH1cblxuICBvblJlbW92ZVJvd0NsaWNrZWQobm9kZTogYW55KSB7XG4gICAgLy8gVE9ETyByZW1vdmUgY2hpbGRyZW4gb2Ygbm9kZXNcblxuICAgIC8vIGZpbmQgYnkgZGVmYXVsdCBzb3J0IG9yZGVyIGluIG9iamVjdCBpdHNlbGYgb3IgaW4gbmVzdGVkIHBhcmVudFxuICAgIC8vIHRoZW4gZmluZCB0aGUgbm9kZSBpdHNlbGZcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzLmZpbHRlcigodjogYW55KSA9PiB2ICE9PSBub2RlKTtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKCh2OiBhbnkpID0+IHYgIT09IG5vZGUpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBjb25zdCB7IF9kZWZhdWx0U29ydE9yZGVyLCBleHBhbmRlZCwgcGFydGlhbFNlbGVjdGVkLCAuLi5yZXN0IH0gPSBub2RlO1xuICAgIHRoaXMucm93c1JlbW92ZWQuZW1pdChbcmVzdF0pO1xuICB9XG5cbiAgdG9nZ2xlQWxsQ29sdW1ucygpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9XG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucy5sZW5ndGggPCB0aGlzLmNvbHVtbnMubGVuZ3RoID8gdGhpcy5jb2x1bW5zIDogW107XG4gICAgdGhpcy5jb2x1bW5zU2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkQ29sdW1ucyk7XG4gIH1cblxuICBpc0NvbHVtblNlbGVjdGVkKGNvbDogYW55KSB7XG4gICAgcmV0dXJuICEhZmluZCh0aGlzLnNlbGVjdGVkQ29sdW1ucywgKGl0ZW0pID0+IGlzRXF1YWwoaXRlbSwgY29sKSk7XG4gIH1cblxuICBvblJvd3NQZXJQYWdlQ2hhbmdlZCgpIHtcbiAgICBpZiAodGhpcy5yZXNldFBhZ2VPblJvd3NDaGFuZ2UpIHtcbiAgICAgIHRoaXMucHJpbWVuZ1RyZWVUYWJsZS5maXJzdCA9IDA7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlUGFnZSh0aGlzLmdldFBhZ2UoKSk7XG4gIH1cblxuICBnZXRQYWdlQ291bnQoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLnByaW1lbmdUcmVlVGFibGUudG90YWxSZWNvcmRzIC8gdGhpcy5yb3dzKTtcbiAgfVxuXG4gIGdldFBhZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnByaW1lbmdUcmVlVGFibGUuZmlyc3QgLyB0aGlzLnJvd3MpO1xuICB9XG5cbiAgY2hhbmdlUGFnZShwOiBudW1iZXIpIHtcbiAgICBjb25zdCBwYyA9IE1hdGguY2VpbCh0aGlzLmdldFBhZ2VDb3VudCgpKTtcblxuICAgIGlmIChwID49IDAgJiYgcCA8IHBjKSB7XG4gICAgICB0aGlzLmZpcnN0ID0gdGhpcy5yb3dzICogcDtcbiAgICAgIHRoaXMucHJpbWVuZ1RyZWVUYWJsZS5vblBhZ2VDaGFuZ2Uoe1xuICAgICAgICBmaXJzdDogdGhpcy5maXJzdCxcbiAgICAgICAgcm93czogdGhpcy5yb3dzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlyc3QgPSBldmVudC5maXJzdDtcbiAgICB0aGlzLnJvd3MgPSBldmVudC5yb3dzO1xuXG4gICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICBwYWdlOiB0aGlzLmdldFBhZ2UoKSxcbiAgICAgIGZpcnN0OiB0aGlzLmZpcnN0LFxuICAgICAgcm93czogdGhpcy5yb3dzLFxuICAgICAgcGFnZUNvdW50OiBNYXRoLmNlaWwodGhpcy5nZXRQYWdlQ291bnQoKSlcbiAgICB9O1xuXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHN0YXRlKTtcbiAgfVxuXG4gIG9uTGF6eUxvYWRlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5sYXp5TG9hZGVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25Ob2RlRXhwYW5kZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubm9kZUV4cGFuZGVkLmVtaXQoZXZlbnQpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fcmVjYWxjVmlydHVhbEhlaWdodCgpO1xuICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uTm9kZUNvbGxhcHNlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5ub2RlQ29sbGFwc2VkLmVtaXQoZXZlbnQpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fcmVjYWxjVmlydHVhbEhlaWdodCgpO1xuICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uTm9kZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm5vZGVTZWxlY3RlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uTm9kZVVuc2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubm9kZVVuc2VsZWN0ZWQuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNvcnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc29ydGVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25TZWxlY3RDb2x1bW4oY29sOiBhbnkpIHtcbiAgICBsZXQgcmVzID0gW10gYXMgYW55O1xuICAgIGlmICh0aGlzLmlzQ29sdW1uU2VsZWN0ZWQoY29sKSkge1xuICAgICAgcmVzID0gdGhpcy5zZWxlY3RlZENvbHVtbnMuZmlsdGVyKCh2OiBhbnkpID0+ICFpc0VxdWFsKHYsIGNvbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgobykgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMuc29tZSgodjogYW55KSA9PiBpc0VxdWFsKHYsIG8pKSB8fFxuICAgICAgICAgIGlzRXF1YWwoY29sLCBvKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXMucHVzaChvKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcmVzO1xuICAgIHRoaXMuY29sdW1uc1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZENvbHVtbnMpO1xuICB9XG59XG4iLCI8cC10cmVlVGFibGVcbiAgI3ByaW1lbmdUcmVlVGFibGVcbiAgdHRXaXRoVW5zb3J0XG4gIFtuZ0NsYXNzXT1cInsgJ2Nwcy10cmVldGFibGUtbG9hZGluZyc6IGxvYWRpbmcgfVwiXG4gIFt2YWx1ZV09XCJkYXRhXCJcbiAgW3Njcm9sbGFibGVdPVwic2Nyb2xsYWJsZVwiXG4gIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCJcbiAgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXG4gIFt2aXJ0dWFsU2Nyb2xsSXRlbVNpemVdPVwidmlydHVhbFNjcm9sbEl0ZW1TaXplXCJcbiAgW3ZpcnR1YWxTY3JvbGxPcHRpb25zXT1cIntcbiAgICBudW1Ub2xlcmF0ZWRJdGVtczogbnVtVG9sZXJhdGVkSXRlbXMsXG4gICAgYXV0b1NpemU6IGZhbHNlXG4gIH1cIlxuICBbY29sdW1uc109XCJzZWxlY3RlZENvbHVtbnNcIlxuICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgW3Jvd0hvdmVyXT1cInJvd0hvdmVyXCJcbiAgW2xhenldPVwibGF6eVwiXG4gIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZFJvd3NcIlxuICBjb21wYXJlU2VsZWN0aW9uQnk9XCJlcXVhbHNcIlxuICBbbGF6eUxvYWRPbkluaXRdPVwibGF6eUxvYWRPbkluaXRcIlxuICBbc3R5bGVDbGFzc109XCJzdHlsZUNsYXNzXCJcbiAgW3RhYmxlU3R5bGVdPVwidGFibGVTdHlsZVwiXG4gIFt0YWJsZVN0eWxlQ2xhc3NdPVwidGFibGVTdHlsZUNsYXNzXCJcbiAgW2N1c3RvbVNvcnRdPVwiY3VzdG9tU29ydFwiXG4gIFtzb3J0TW9kZV09XCJzb3J0TW9kZVwiXG4gIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiZ2xvYmFsRmlsdGVyRmllbGRzXCJcbiAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3JcIlxuICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxuICBbYWx3YXlzU2hvd1BhZ2luYXRvcl09XCJhbHdheXNTaG93UGFnaW5hdG9yXCJcbiAgW3Jvd3NdPVwicm93c1wiXG4gIFtmaXJzdF09XCJmaXJzdFwiXG4gIFtyZXNldFBhZ2VPblNvcnRdPVwicmVzZXRQYWdlT25Tb3J0XCJcbiAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gLSB7bGFzdH0gb2Yge3RvdGFsUmVjb3Jkc31cIlxuICAob25QYWdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgKG9uU29ydCk9XCJvblNvcnQoJGV2ZW50KVwiXG4gIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWRlZCgkZXZlbnQpXCJcbiAgKHNvcnRGdW5jdGlvbik9XCJvblNvcnRGdW5jdGlvbigkZXZlbnQpXCJcbiAgKG9uTm9kZUV4cGFuZCk9XCJvbk5vZGVFeHBhbmRlZCgkZXZlbnQpXCJcbiAgKG9uTm9kZUNvbGxhcHNlKT1cIm9uTm9kZUNvbGxhcHNlZCgkZXZlbnQpXCJcbiAgKG9uTm9kZVNlbGVjdCk9XCJvbk5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgKG9uTm9kZVVuc2VsZWN0KT1cIm9uTm9kZVVuc2VsZWN0ZWQoJGV2ZW50KVwiPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiICpuZ0lmPVwiaGFzVG9vbGJhclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sYmFyVGVtcGxhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRvb2xiYXJUZW1wbGF0ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNwcy10cmVldGFibGUtdGJhci1sZWZ0XCI+XG4gICAgICAgIDxkaXY+e3sgdG9vbGJhclRpdGxlIH19PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93R2xvYmFsRmlsdGVyXCIgY2xhc3M9XCJjcHMtdHJlZXRhYmxlLXRiYXItZ2xvYmFsLWZpbHRlclwiPlxuICAgICAgICAgIDxjcHMtaW5wdXRcbiAgICAgICAgICAgIHByZWZpeEljb249XCJzZWFyY2hcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdsb2JhbEZpbHRlclBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwib25GaWx0ZXJHbG9iYWwoJGV2ZW50KVwiXG4gICAgICAgICAgICBbY2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwidG9vbGJhclNpemUgPT09ICdzbWFsbCcgPyAndW5kZXJsaW5lZCcgOiAnb3V0bGluZWQnXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCI+XG4gICAgICAgICAgPC9jcHMtaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3BzLXRyZWV0YWJsZS10YmFyLXJpZ2h0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3dSZW1vdmVCdG5PblNlbGVjdCAmJiBzZWxlY3RlZFJvd3MubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJjcHMtdHJlZXRhYmxlLXRiYXItcmVtb3ZlLWJ0blwiPlxuICAgICAgICAgIDxjcHMtYnV0dG9uXG4gICAgICAgICAgICBsYWJlbD1cIlJlbW92ZVwiXG4gICAgICAgICAgICBjb2xvcj1cInByZXBhcmVkXCJcbiAgICAgICAgICAgIHR5cGU9XCJib3JkZXJsZXNzXCJcbiAgICAgICAgICAgIGljb249XCJyZW1vdmVcIlxuICAgICAgICAgICAgW3NpemVdPVwidG9vbGJhclNpemVcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwicmVtb3ZlU2VsZWN0ZWQoKVwiPlxuICAgICAgICAgIDwvY3BzLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93QWN0aW9uQnRuXCIgY2xhc3M9XCJjcHMtdHJlZXRhYmxlLXRiYXItYWN0aW9uLWJ0blwiPlxuICAgICAgICAgIDxjcHMtYnV0dG9uXG4gICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uQnRuVGl0bGVcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmVwYXJlZFwiXG4gICAgICAgICAgICB0eXBlPVwib3V0bGluZWRcIlxuICAgICAgICAgICAgW3NpemVdPVwidG9vbGJhclNpemVcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwib25DbGlja0FjdGlvbkJ0bigpXCI+XG4gICAgICAgICAgPC9jcHMtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0NvbHVtbnNUb2dnbGUgJiYgY29sdW1ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBjbGFzcz1cImNwcy10cmVldGFibGUtdGJhci1jb2x0b2dnbGUtYnRuXCI+XG4gICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICBpY29uPVwiY29sdW1uc1wiXG4gICAgICAgICAgICBzaXplPVwibm9ybWFsXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJlcGFyZWQtbGlnaHRlbjFcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbFRvZ2dsZU1lbnUudG9nZ2xlKCRldmVudClcIj48L2Nwcy1pY29uPlxuICAgICAgICAgIDxjcHMtbWVudSAjY29sVG9nZ2xlTWVudSBbd2l0aEFycm93XT1cImZhbHNlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3BzLXRyZWV0YWJsZS1jb2x0b2dnbGUtbWVudVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcHMtdHJlZXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0gc2VsZWN0LWFsbC1vcHRpb25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hbGxzZWxlY3RlZF09XCJzZWxlY3RlZENvbHVtbnMubGVuZ3RoID09PSBjb2x1bW5zLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbENvbHVtbnMoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRyZWV0YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRyZWV0YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWNoZWNrXCI+IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRyZWV0YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPlNob3cgYWxsIGNvbHVtbnM8L3NwYW5cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNwcy10cmVldGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0Q29sdW1uKGNvbClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc0NvbHVtblNlbGVjdGVkKGNvbClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10cmVldGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbS1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10cmVldGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbS1jaGVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRyZWV0YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWxhYmVsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgY29sW2NvbEhlYWRlck5hbWVdXG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9jcHMtbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgKm5nSWY9XCJuZXN0ZWRIZWFkZXJUZW1wbGF0ZVwiIGxldC1jb2x1bW5zPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICBuZXN0ZWRIZWFkZXJUZW1wbGF0ZTtcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICRpbXBsaWNpdDogY29sdW1ucyxcbiAgICAgICAgfVxuICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiICpuZ0lmPVwiIW5lc3RlZEhlYWRlclRlbXBsYXRlXCIgbGV0LWNvbHVtbnM+XG4gICAgPHRyPlxuICAgICAgPCEtLSA8dGggc3R5bGU9XCJ3aWR0aDogM3JlbVwiICpuZ0lmPVwicmVvcmRlcmFibGVSb3dzXCI+PC90aD4gLS0+XG4gICAgICA8dGggc3R5bGU9XCJ3aWR0aDogNTVweFwiICpuZ0lmPVwic2VsZWN0YWJsZVwiPlxuICAgICAgICA8cC10cmVlVGFibGVIZWFkZXJDaGVja2JveD48L3AtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3g+XG4gICAgICA8L3RoPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgaGVhZGVyVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogY29sdW1ucyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoZWFkZXJUZW1wbGF0ZSAmJiBjb2x1bW5zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNvcnRhYmxlXCI+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxuICAgICAgICAgICAgW2Nwc1RUQ29sU29ydGFibGVdPVwiY29sW2NvbEZpZWxkTmFtZV1cIj5cbiAgICAgICAgICAgIHt7IGNvbFtjb2xIZWFkZXJOYW1lXSB9fVxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNvcnRhYmxlXCI+XG4gICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxuICAgICAgICAgICAge3sgY29sW2NvbEhlYWRlck5hbWVdIH19XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0aCBjbGFzcz1cImNwcy10cmVldGFibGUtcm93LW1lbnUtY2VsbFwiICpuZ0lmPVwic2hvd1Jvd01lbnVcIj48L3RoPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCJcbiAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICAgIGxldC1yb3dOb2RlXG4gICAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgICA8dHJcbiAgICAgIFt0dFJvd109XCJyb3dOb2RlXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2Nwcy10cmVldGFibGUtcm93LXNlbGVjdGVkJzpcbiAgICAgICAgICBzZWxlY3RhYmxlICYmIHByaW1lbmdUcmVlVGFibGUuaXNTZWxlY3RlZChyb3dOb2RlLm5vZGUpXG4gICAgICB9XCI+XG4gICAgICA8IS0tIDx0ZCAqbmdJZj1cInJlb3JkZXJhYmxlUm93c1wiIGNsYXNzPVwiY3BzLXRhYmxlLXJvdy1kcmFnLWhhbmRsZS1jZWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLXJvdy1kcmFnLWhhbmRsZVwiIHBSZW9yZGVyYWJsZVJvd0hhbmRsZT7imLA8L3NwYW4+XG4gICAgICA8L3RkPiAtLT5cbiAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiA1NXB4XCIgKm5nSWY9XCJzZWxlY3RhYmxlXCI+XG4gICAgICAgIDxwLXRyZWVUYWJsZUNoZWNrYm94IFt2YWx1ZV09XCJyb3dOb2RlXCI+PC9wLXRyZWVUYWJsZUNoZWNrYm94PlxuICAgICAgPC90ZD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJib2R5VGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBib2R5VGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogcm93Tm9kZSxcbiAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxuICAgICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLFxuICAgICAgICAgICAgICByb3dEYXRhOiByb3dEYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJvZHlUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCJpID09PSAwXCI+XG4gICAgICAgICAgICA8L3AtdHJlZVRhYmxlVG9nZ2xlcj5cbiAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sW2NvbEZpZWxkTmFtZV1dIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0ZCAqbmdJZj1cInNob3dSb3dNZW51XCIgY2xhc3M9XCJjcHMtdHJlZXRhYmxlLXJvdy1tZW51LWNlbGxcIj5cbiAgICAgICAgPHRhYmxlLXJvdy1tZW51XG4gICAgICAgICAgKGVkaXRSb3dCdG5DbGlja2VkKT1cIm9uRWRpdFJvd0NsaWNrZWQocm93Tm9kZS5ub2RlKVwiXG4gICAgICAgICAgKHJlbW92ZVJvd0J0bkNsaWNrZWQpPVwib25SZW1vdmVSb3dDbGlja2VkKHJvd05vZGUubm9kZSlcIj5cbiAgICAgICAgPC90YWJsZS1yb3ctbWVudT5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxuICAgIDx0cj5cbiAgICAgIDx0ZFxuICAgICAgICBjb2xzcGFuPVwiMTAwXCJcbiAgICAgICAgY2xhc3M9XCJjcHMtdHJlZXRhYmxlLWVtcHR5LW1lc3NhZ2UtdGRcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogZW1wdHlCb2R5SGVpZ2h0IH1cIj5cbiAgICAgICAge3sgZW1wdHlNZXNzYWdlIH19XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsb2FkaW5naWNvblwiPlxuICAgIDxjcHMtbG9hZGVyIFtmdWxsU2NyZWVuXT1cImZhbHNlXCIgb3BhY2l0eT1cIjBcIj48L2Nwcy1sb2FkZXI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJwYWdpbmF0b3JsZWZ0XCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS1wYWdpbmF0b3ItaXRtcy1wZXItcGFnZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtcGFnaW5hdG9yLWl0ZW1zLXBlci1wYWdlLXRpdGxlXCJcbiAgICAgICAgPlJvd3MgcGVyIHBhZ2U6XG4gICAgICA8L3NwYW4+XG4gICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICBbb3B0aW9uc109XCJyb3dPcHRpb25zXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInJvd3NcIlxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIm9uUm93c1BlclBhZ2VDaGFuZ2VkKClcIlxuICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgb3B0aW9uc0NsYXNzPVwiY3BzLXBhZ2luYXRvci1wYWdlLW9wdGlvbnNcIj5cbiAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicGFnaW5hdG9yZmlyc3RwYWdlbGlua2ljb25cIj5cbiAgICA8QW5nbGVEb3VibGVMZWZ0SWNvbiAvPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicGFnaW5hdG9ycHJldmlvdXNwYWdlbGlua2ljb25cIj5cbiAgICA8QW5nbGVMZWZ0SWNvbiAvPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicGFnaW5hdG9ybmV4dHBhZ2VsaW5raWNvblwiPlxuICAgIDxBbmdsZVJpZ2h0SWNvbiAvPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicGFnaW5hdG9ybGFzdHBhZ2VsaW5raWNvblwiPlxuICAgIDxBbmdsZURvdWJsZVJpZ2h0SWNvbiAvPlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLXRyZWVUYWJsZT5cbiJdfQ==
|