@porscheinformatik/material-addons 10.2.5 → 10.3.2
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/bundles/porscheinformatik-material-addons.umd.js +318 -38
- package/bundles/porscheinformatik-material-addons.umd.js.map +1 -1
- package/bundles/porscheinformatik-material-addons.umd.min.js +2 -2
- package/bundles/porscheinformatik-material-addons.umd.min.js.map +1 -1
- package/esm2015/lib/data-table/data-table-action-type.js +6 -0
- package/esm2015/lib/data-table/data-table-action.js +1 -1
- package/esm2015/lib/data-table/data-table-column-header.js +1 -1
- package/esm2015/lib/data-table/data-table.component.js +210 -36
- package/esm2015/lib/data-table/data-table.module.js +22 -14
- package/esm2015/lib/toolbar/toolbar.component.js +13 -2
- package/esm2015/lib/toolbar/toolbar.service.js +15 -2
- package/fesm2015/porscheinformatik-material-addons.js +244 -35
- package/fesm2015/porscheinformatik-material-addons.js.map +1 -1
- package/lib/data-table/data-table-action-type.d.ts +5 -0
- package/lib/data-table/data-table-action.d.ts +3 -1
- package/lib/data-table/data-table-column-header.d.ts +3 -1
- package/lib/data-table/data-table.component.d.ts +45 -15
- package/lib/toolbar/toolbar.component.d.ts +3 -0
- package/lib/toolbar/toolbar.service.d.ts +6 -2
- package/package.json +1 -1
- package/porscheinformatik-material-addons.metadata.json +1 -1
- package/themes/common/styles.scss +3 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export class DataTableActionType {
|
|
2
|
+
}
|
|
3
|
+
DataTableActionType.SINGLE = "SINGLE";
|
|
4
|
+
DataTableActionType.BATCH = "BATCH";
|
|
5
|
+
DataTableActionType.NONE = "NONE";
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1hY3Rpb24tdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9tYXRlcmlhbC1hZGRvbnMvbWF0ZXJpYWwtYWRkb25zL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvIiwic291cmNlcyI6WyJsaWIvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWFjdGlvbi10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxtQkFBbUI7O0FBQ2hCLDBCQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLHlCQUFLLEdBQUcsT0FBTyxDQUFDO0FBQ2hCLHdCQUFJLEdBQUcsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERhdGFUYWJsZUFjdGlvblR5cGUge1xuICBwdWJsaWMgc3RhdGljIFNJTkdMRSA9IFwiU0lOR0xFXCI7XG4gIHB1YmxpYyBzdGF0aWMgQkFUQ0ggPSBcIkJBVENIXCI7XG4gIHB1YmxpYyBzdGF0aWMgTk9ORSA9IFwiTk9ORVwiO1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS1hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF0YVRhYmxlQWN0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgYWN0aW9uOiBzdHJpbmc7XG4gIHR5cGU6IFwiU0lOR0xFXCIgfCBcIkJBVENIXCIgfCBcIk5PTkVcIjtcbiAgc2VsZWN0ZWQ/OiBhbnlbXTtcbiAgaGlkZGVuSW5Nb2RlPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4taGVhZGVyLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL21hdGVyaWFsLWFkZG9ucy9tYXRlcmlhbC1hZGRvbnMvcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtY29sdW1uLWhlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEYXRhVGFibGVDb2x1bW5IZWFkZXIge1xuICBsYWJlbDogc3RyaW5nO1xuICBkYXRhUHJvcGVydHlOYW1lOiBzdHJpbmc7XG4gIGlzU29ydGFibGU/OiBib29sZWFuO1xuICBpc1JpZ2h0QWxpZ25lZD86IGJvb2xlYW47XG4gIHRyYW5zZm9ybWVyPzogYW55O1xuICB0cmFuc2Zvcm1lclBhcmFtcz86IGFueVtdO1xufVxuIl19
|
|
@@ -1,31 +1,47 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from
|
|
2
|
-
import { MatTableDataSource } from
|
|
3
|
-
import { MatPaginator } from
|
|
4
|
-
import { MatSort } from
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
|
|
2
|
+
import { MatTableDataSource } from "@angular/material/table";
|
|
3
|
+
import { MatPaginator } from "@angular/material/paginator";
|
|
4
|
+
import { MatSort } from "@angular/material/sort";
|
|
5
|
+
import { DataTableActionType } from "./data-table-action-type";
|
|
6
|
+
import { SelectionModel } from "@angular/cdk/collections";
|
|
7
|
+
import { v4 as uuidV4 } from "uuid";
|
|
5
8
|
export class DataTableComponent {
|
|
6
9
|
constructor() {
|
|
7
10
|
var _a;
|
|
8
|
-
this.ACTION_COLUMN_NAME =
|
|
11
|
+
this.ACTION_COLUMN_NAME = "__action__";
|
|
12
|
+
this.SINGLE = DataTableActionType.SINGLE;
|
|
13
|
+
this.BATCH = DataTableActionType.BATCH;
|
|
14
|
+
this.NONE = DataTableActionType.NONE;
|
|
9
15
|
this.columns = [];
|
|
10
|
-
this.filterLabel =
|
|
11
|
-
this.filterPlaceholder =
|
|
16
|
+
this.filterLabel = "Filter";
|
|
17
|
+
this.filterPlaceholder = "";
|
|
18
|
+
this.noDataText = "No matching data found";
|
|
12
19
|
this.pageSizeOptions = [5, 10, 15];
|
|
13
20
|
this.defaultPageSize = ((_a = this.pageSizeOptions) === null || _a === void 0 ? void 0 : _a[0]) || 10;
|
|
14
|
-
this.
|
|
15
|
-
this.tableActions = [];
|
|
16
|
-
this.tableAction = new EventEmitter();
|
|
17
|
-
this.rowAction = new EventEmitter();
|
|
21
|
+
this.actions = [];
|
|
18
22
|
this.sortEvent = new EventEmitter();
|
|
23
|
+
this.actionEvent = new EventEmitter();
|
|
24
|
+
this.pagingEvent = new EventEmitter();
|
|
25
|
+
this.tableActions = [];
|
|
26
|
+
this.rowActions = [];
|
|
27
|
+
this.allSelected = false;
|
|
28
|
+
this.displayedDataMap = new Map();
|
|
29
|
+
this.actualDataMap = new Map();
|
|
30
|
+
this.selectionModel = new SelectionModel(true);
|
|
19
31
|
this.isFilterEnabled = false;
|
|
20
32
|
this.isPaginationEnabled = false;
|
|
33
|
+
this.mode = this.NONE;
|
|
34
|
+
this.isRowClickable = false;
|
|
35
|
+
this.isLoading = false;
|
|
21
36
|
}
|
|
22
|
-
set
|
|
37
|
+
set tableData(data) {
|
|
23
38
|
if (!this.dataSource) {
|
|
24
39
|
this.dataSource = new MatTableDataSource(data);
|
|
25
40
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
41
|
+
this.createDataMapsAndSetDisplayedDataSourceData(data);
|
|
42
|
+
}
|
|
43
|
+
set loading(isLoading) {
|
|
44
|
+
this.isLoading = isLoading;
|
|
29
45
|
}
|
|
30
46
|
set paginationEnabled(isPaginationEnabled) {
|
|
31
47
|
this.isPaginationEnabled = isPaginationEnabled;
|
|
@@ -39,47 +55,203 @@ export class DataTableComponent {
|
|
|
39
55
|
this.isFilterEnabled = isFilterEnabled;
|
|
40
56
|
this.setFilterValue(undefined);
|
|
41
57
|
}
|
|
58
|
+
set forceMode(mode) {
|
|
59
|
+
if (mode === this.SINGLE || mode === this.BATCH || mode === this.NONE) {
|
|
60
|
+
this._forceMode = mode;
|
|
61
|
+
this.mode = mode;
|
|
62
|
+
this.setActions();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
42
65
|
ngOnInit() {
|
|
43
66
|
this.columnNames = this.columns.map(column => column.label);
|
|
44
|
-
this.
|
|
45
|
-
|
|
46
|
-
|
|
67
|
+
this.mode = this.getTableMode();
|
|
68
|
+
this.setActions();
|
|
69
|
+
if (this.mode !== this.NONE) {
|
|
70
|
+
this.isRowClickable = true;
|
|
47
71
|
this.defaultAction = this.rowActions[0];
|
|
48
72
|
}
|
|
73
|
+
this.columnNames.unshift(this.ACTION_COLUMN_NAME);
|
|
49
74
|
}
|
|
50
75
|
ngAfterViewInit() {
|
|
51
76
|
this.dataSource.paginator = this.paginator;
|
|
52
77
|
this.dataSource.sort = this.sort;
|
|
53
78
|
}
|
|
54
|
-
|
|
55
|
-
|
|
79
|
+
get selectedCount() {
|
|
80
|
+
var _a;
|
|
81
|
+
return ((_a = this.selectionModel) === null || _a === void 0 ? void 0 : _a.selected) ? this.selectionModel.selected.length : 0;
|
|
82
|
+
}
|
|
83
|
+
get rowCount() {
|
|
84
|
+
var _a;
|
|
85
|
+
return ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a._pageData(this.dataSource.data)) ? this.dataSource._pageData(this.dataSource.data).length : 0;
|
|
86
|
+
}
|
|
87
|
+
getSelectedCount(actionType) {
|
|
88
|
+
const count = this.selectedCount;
|
|
89
|
+
if (actionType != this.BATCH || count < 2) {
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
return " (" + count + ")";
|
|
93
|
+
}
|
|
94
|
+
isDisabled(actionType) {
|
|
95
|
+
switch (actionType) {
|
|
96
|
+
case this.SINGLE:
|
|
97
|
+
return this.selectedCount != 1;
|
|
98
|
+
case this.BATCH:
|
|
99
|
+
return this.selectedCount < 1;
|
|
100
|
+
default:
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
onToggleSelectAll() {
|
|
105
|
+
// clear all selection first
|
|
106
|
+
this.selectionModel.clear();
|
|
107
|
+
// toggle all checkbox
|
|
108
|
+
this.allSelected = !this.allSelected;
|
|
109
|
+
if (this.allSelected) {
|
|
110
|
+
// select all rows of the current page
|
|
111
|
+
this.dataSource._pageData(this.dataSource.data).forEach((row) => {
|
|
112
|
+
const dataRow = row;
|
|
113
|
+
const rowId = "" + dataRow.rowId;
|
|
114
|
+
this.selectionModel.select(rowId);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
isSelected(rowId) {
|
|
119
|
+
return this.selectionModel.isSelected(rowId);
|
|
120
|
+
}
|
|
121
|
+
setFilterValue(value) {
|
|
122
|
+
this.dataSource.filter = value === null || value === void 0 ? void 0 : value.trim().toLowerCase();
|
|
123
|
+
}
|
|
124
|
+
onRowCheckbox(event, row) {
|
|
125
|
+
event.stopPropagation(); // no click event on row
|
|
126
|
+
this.selectionModel.toggle(row.rowId);
|
|
56
127
|
}
|
|
57
128
|
onRowEvent(event, row, action = this.defaultAction) {
|
|
58
|
-
|
|
59
|
-
this.
|
|
129
|
+
switch (this.mode) {
|
|
130
|
+
case this.BATCH:
|
|
131
|
+
this.onRowCheckbox(event, row);
|
|
132
|
+
break;
|
|
133
|
+
case this.SINGLE:
|
|
134
|
+
// emit the default action if the row (not the icon!) was clicked
|
|
135
|
+
if (!!action && !DataTableComponent.isClickOnRowMenuIcon(event)) {
|
|
136
|
+
const selected = [];
|
|
137
|
+
// if ID-generator is provided, return the ID, else return the ACTUAL data
|
|
138
|
+
selected.push(this.idGenerator ? row.rowId : this.actualDataMap.get(row.rowId));
|
|
139
|
+
this.emitTableAction(action, selected);
|
|
140
|
+
}
|
|
141
|
+
break;
|
|
142
|
+
default:
|
|
143
|
+
// do nothing if mode is NONE (or null)
|
|
144
|
+
return;
|
|
60
145
|
}
|
|
61
146
|
}
|
|
62
147
|
onSortingEvent(sortingParams) {
|
|
63
148
|
this.sortEvent.emit(sortingParams);
|
|
64
149
|
}
|
|
150
|
+
onPaginationEvent(event) {
|
|
151
|
+
this.pagingEvent.emit(event);
|
|
152
|
+
}
|
|
65
153
|
onTableAction(tableAction) {
|
|
66
154
|
if (!!tableAction) {
|
|
67
|
-
|
|
155
|
+
const selection = [];
|
|
156
|
+
for (const selected of this.selectionModel.selected) {
|
|
157
|
+
selection.push(this.idGenerator ? selected : this.actualDataMap.get(selected));
|
|
158
|
+
}
|
|
159
|
+
tableAction.selected = selection;
|
|
160
|
+
this.actionEvent.emit(tableAction);
|
|
68
161
|
}
|
|
69
162
|
}
|
|
70
|
-
|
|
71
|
-
|
|
163
|
+
static transformData(value, transformer, transformerParams) {
|
|
164
|
+
if (!transformer || !(transformer instanceof Function)) {
|
|
165
|
+
return value;
|
|
166
|
+
}
|
|
167
|
+
return transformer(value, transformerParams);
|
|
168
|
+
}
|
|
169
|
+
static generateRowId() {
|
|
170
|
+
return uuidV4();
|
|
72
171
|
}
|
|
73
|
-
isClickOnRowMenuIcon(event) {
|
|
172
|
+
static isClickOnRowMenuIcon(event) {
|
|
74
173
|
var _a;
|
|
75
|
-
return (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.classList.contains(
|
|
174
|
+
return (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.classList.contains("mat-icon");
|
|
175
|
+
}
|
|
176
|
+
emitTableAction(action, selected) {
|
|
177
|
+
const emitAction = Object.assign({}, action);
|
|
178
|
+
if (action.type !== this.NONE) {
|
|
179
|
+
emitAction.selected = [...selected];
|
|
180
|
+
}
|
|
181
|
+
this.actionEvent.emit(emitAction);
|
|
182
|
+
}
|
|
183
|
+
generateDisplayedDataElement(rowId, actualDataElement) {
|
|
184
|
+
const displayedDataElement = {};
|
|
185
|
+
displayedDataElement["rowId"] = rowId;
|
|
186
|
+
for (const column of this.columns) {
|
|
187
|
+
const actualValue = actualDataElement[column.dataPropertyName];
|
|
188
|
+
displayedDataElement[column.dataPropertyName] = DataTableComponent.transformData(actualValue, column.transformer, column.transformerParams);
|
|
189
|
+
}
|
|
190
|
+
return displayedDataElement;
|
|
191
|
+
}
|
|
192
|
+
setActions() {
|
|
193
|
+
this.rowActions = [];
|
|
194
|
+
this.tableActions = [];
|
|
195
|
+
for (const action of this.actions) {
|
|
196
|
+
if (this.mode !== action.hiddenInMode) {
|
|
197
|
+
switch (action.type) {
|
|
198
|
+
case this.SINGLE:
|
|
199
|
+
if (this.mode === this.SINGLE) {
|
|
200
|
+
this.rowActions.push(action);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
this.tableActions.push(action);
|
|
204
|
+
}
|
|
205
|
+
break;
|
|
206
|
+
case this.BATCH:
|
|
207
|
+
if (this.mode !== this.SINGLE) {
|
|
208
|
+
this.tableActions.push(action);
|
|
209
|
+
}
|
|
210
|
+
break;
|
|
211
|
+
default:
|
|
212
|
+
this.tableActions.push(action);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
createDataMapsAndSetDisplayedDataSourceData(data) {
|
|
218
|
+
const displayedDataList = [];
|
|
219
|
+
this.actualDataMap.clear();
|
|
220
|
+
this.displayedDataMap.clear();
|
|
221
|
+
for (const dataEntry of data) {
|
|
222
|
+
const rowId = (this.idGenerator) ? this.idGenerator(dataEntry) : DataTableComponent.generateRowId();
|
|
223
|
+
this.actualDataMap.set(rowId, dataEntry);
|
|
224
|
+
const displayedDataElement = this.generateDisplayedDataElement(rowId, dataEntry);
|
|
225
|
+
this.displayedDataMap.set(rowId, displayedDataElement);
|
|
226
|
+
displayedDataList.push(displayedDataElement);
|
|
227
|
+
}
|
|
228
|
+
this.dataSource.data = displayedDataList;
|
|
229
|
+
}
|
|
230
|
+
getTableMode() {
|
|
231
|
+
if (this._forceMode) {
|
|
232
|
+
return this._forceMode;
|
|
233
|
+
}
|
|
234
|
+
if (!this.actions) {
|
|
235
|
+
return this.NONE;
|
|
236
|
+
}
|
|
237
|
+
const distinctActionTypes = new Set();
|
|
238
|
+
for (const rowAction of this.actions) {
|
|
239
|
+
distinctActionTypes.add(rowAction.type);
|
|
240
|
+
}
|
|
241
|
+
if (distinctActionTypes.has(this.BATCH)) {
|
|
242
|
+
return this.BATCH;
|
|
243
|
+
}
|
|
244
|
+
if (distinctActionTypes.has(this.SINGLE)) {
|
|
245
|
+
return this.SINGLE;
|
|
246
|
+
}
|
|
247
|
+
return this.NONE;
|
|
76
248
|
}
|
|
77
249
|
}
|
|
78
250
|
DataTableComponent.decorators = [
|
|
79
251
|
{ type: Component, args: [{
|
|
80
|
-
selector:
|
|
81
|
-
template: "<!-- Table actions -->\n<div *ngIf=\"tableActions?.length\">\n
|
|
82
|
-
styles: [".text-right{padding-right:24px!important;text-align:right!important}.table-action{margin-bottom:.5em;margin-right:.5em}.row-action-button{width:10px}.noDataText{text-align:center;width:100%}.mad-table{overflow-x:auto;width:100
|
|
252
|
+
selector: "mad-data-table",
|
|
253
|
+
template: "<div class=\"mad-datatable-action-bar\">\n <!-- Table actions: displayed before the table -->\n <div *ngIf=\"tableActions?.length\">\n <mad-outline-button\n [disabled]=\"isDisabled(tableAction.type)\"\n class=\"table-action\"\n *ngFor=\"let tableAction of tableActions\"\n (click)=\"onTableAction(tableAction)\">\n {{ tableAction.label | translate }} {{ getSelectedCount(tableAction.type) }}\n </mad-outline-button>\n </div>\n <!-- Table filter -->\n <mat-form-field *ngIf=\"isFilterEnabled\">\n <mat-label>{{ filterLabel | translate }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"setFilterValue($event?.target?.value)\"\n placeholder=\"{{ filterPlaceholder }}\" />\n </mat-form-field>\n</div>\n\n\n<!-- Row action menu -->\n<mat-menu #rowActionMenu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n <button *ngFor=\"let rowAction of rowActions\" mat-menu-item class=\"row-action\"\n (click)=\"onRowEvent($event, element, rowAction)\">\n {{ rowAction.label | translate }}\n </button>\n </ng-template>\n</mat-menu>\n\n<!-- Table -->\n<div *ngIf=\"rowCount > 0; else noData\" class=\"mad-table\">\n <div class=\"datatable-spinner-wrapper\" *ngIf=\"isLoading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n\n <table mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSortingEvent($event)\">\n <!-- Row actions column-->\n <ng-container [matColumnDef]=\"ACTION_COLUMN_NAME\">\n <th scope=\"col\" mat-header-cell *matHeaderCellDef class=\"row-action-button\">\n <!-- BATCH: master checkbox -->\n <div *ngIf=\"mode === BATCH\" class=\"mad-datatable-checkbox-container\">\n <mat-checkbox\n (change)=\"onToggleSelectAll()\"\n [checked]=\"allSelected\"\n >\n </mat-checkbox>\n </div>\n <!-- SINGLE / NONE: nothing in header row -->\n </th>\n <td mat-cell *matCellDef=\"let element\" class=\"row-action-button\">\n <!-- BATCH: row checkbox -->\n <div *ngIf=\"mode === BATCH\" class=\"mad-datatable-checkbox-container\">\n <mat-checkbox\n (click)=\"onRowCheckbox($event, element.rowId)\"\n [checked]=\"isSelected(element.rowId)\"\n >\n </mat-checkbox>\n </div>\n <!-- SINGLE: row action menu icon -->\n <mad-icon-button\n *ngIf=\"mode === SINGLE\"\n [matMenuTriggerData]=\"{ element: element }\" [matMenuTriggerFor]=\"rowActionMenu\"\n >\n <mat-icon>more_vert</mat-icon>\n </mad-icon-button>\n <!-- NONE: nothing -->\n </td>\n </ng-container>\n <!-- Columns with data -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.label\">\n <ng-container *ngIf=\"column.isSortable; else noSort\">\n <th\n scope=\"col\"\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header=\"{{ column.label | translate}}\"\n [arrowPosition]=\"column.isRightAligned ? 'before' : 'after'\"\n [class.text-right]=\"column.isRightAligned\"\n >\n {{ column.label }}\n </th>\n </ng-container>\n <ng-template #noSort>\n <th scope=\"col\" mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ column.label }}\n </th>\n </ng-template>\n <td mat-cell *matCellDef=\"let element\" [class.text-right]=\"column.isRightAligned\" [ngSwitch]=\"column.transformer\">\n <span>\n {{ element[column.dataPropertyName] }}\n </span>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"columnNames\"></tr>\n <tr\n mat-row\n [class.clickable-table-row]=\"isRowClickable\"\n (click)=\"onRowEvent($event, row)\"\n *matRowDef=\"let row; columns: columnNames\"\n ></tr>\n </table>\n\n <!-- Pagination -->\n <mat-paginator\n [style.display]=\"isPaginationEnabled ? 'block' : 'none'\"\n [pageSize]=\"defaultPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPaginationEvent($event)\"\n showFirstLastButtons\n >\n </mat-paginator>\n</div>\n\n<!-- No data alert -->\n<ng-template #noData>\n <div class=\"noDataText\">\n <div class=\"datatable-spinner-wrapper\" *ngIf=\"isLoading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n {{ noDataText }}\n </div>\n</ng-template>\n",
|
|
254
|
+
styles: [".text-right{padding-right:24px!important;text-align:right!important}.table-action{margin-bottom:.5em;margin-right:.5em}.row-action-button{width:10px}.noDataText{text-align:center}.mad-table,.noDataText{position:relative;width:100%}.mad-table{overflow-x:auto}.mad-datatable-action-bar{align-items:baseline;display:flex;justify-content:space-between}.mad-datatable-checkbox-container{margin-right:16px}.datatable-spinner-wrapper{align-items:center;background-color:#fff;display:flex;height:100%;justify-content:center;left:0;opacity:.8;pointer-events:unset;position:absolute;top:0;width:100%;z-index:99999}"]
|
|
83
255
|
},] }
|
|
84
256
|
];
|
|
85
257
|
DataTableComponent.propDecorators = {
|
|
@@ -89,15 +261,17 @@ DataTableComponent.propDecorators = {
|
|
|
89
261
|
noDataText: [{ type: Input }],
|
|
90
262
|
pageSizeOptions: [{ type: Input }],
|
|
91
263
|
defaultPageSize: [{ type: Input }],
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
264
|
+
actions: [{ type: Input }],
|
|
265
|
+
idGenerator: [{ type: Input }],
|
|
266
|
+
tableData: [{ type: Input }],
|
|
267
|
+
loading: [{ type: Input }],
|
|
95
268
|
paginationEnabled: [{ type: Input }],
|
|
96
269
|
filterEnabled: [{ type: Input }],
|
|
97
|
-
|
|
98
|
-
rowAction: [{ type: Output }],
|
|
270
|
+
forceMode: [{ type: Input }],
|
|
99
271
|
sortEvent: [{ type: Output }],
|
|
272
|
+
actionEvent: [{ type: Output }],
|
|
273
|
+
pagingEvent: [{ type: Output }],
|
|
100
274
|
paginator: [{ type: ViewChild, args: [MatPaginator, { static: false },] }],
|
|
101
275
|
sort: [{ type: ViewChild, args: [MatSort, { static: true },] }]
|
|
102
276
|
};
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFRLE1BQU0sd0JBQXdCLENBQUM7QUFTdkQsTUFBTSxPQUFPLGtCQUFrQjtJQUwvQjs7UUFNVyx1QkFBa0IsR0FBRyxZQUFZLENBQUM7UUFFbEMsWUFBTyxHQUE0QixFQUFFLENBQUM7UUFDdEMsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDeEIsc0JBQWlCLEdBQUcsU0FBUyxDQUFDO1FBRTlCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLG9CQUFlLEdBQUcsT0FBQSxJQUFJLENBQUMsZUFBZSwwQ0FBRyxDQUFDLE1BQUssRUFBRSxDQUFDO1FBQ2xELGVBQVUsR0FBc0IsRUFBRSxDQUFDO1FBQ25DLGlCQUFZLEdBQXNCLEVBQUUsQ0FBQztRQXlCcEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNsRCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDaEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFTL0Msb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsd0JBQW1CLEdBQUcs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QiwwQ0FBRSxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtJQUN4RSxDQUFDOzs7WUEvRkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLG9oR0FBMEM7O2FBRTNDOzs7c0JBSUUsS0FBSzswQkFDTCxLQUFLO2dDQUNMLEtBQUs7eUJBQ0wsS0FBSzs4QkFDTCxLQUFLOzhCQUNMLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxLQUFLOzRCQUVMLEtBQUs7Z0NBUUwsS0FBSzs0QkFTTCxLQUFLOzBCQU1MLE1BQU07d0JBQ04sTUFBTTt3QkFDTixNQUFNO3dCQUVOLFNBQVMsU0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO21CQUN6QyxTQUFTLFNBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbkhlYWRlciB9IGZyb20gJy4vZGF0YS10YWJsZS1jb2x1bW4taGVhZGVyJztcbmltcG9ydCB7IERhdGFUYWJsZUFjdGlvbiB9IGZyb20gJy4vZGF0YS10YWJsZS1hY3Rpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtZGF0YS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICByZWFkb25seSBBQ1RJT05fQ09MVU1OX05BTUUgPSAnX19hY3Rpb25fXyc7XG5cbiAgQElucHV0KCkgY29sdW1uczogRGF0YVRhYmxlQ29sdW1uSGVhZGVyW10gPSBbXTtcbiAgQElucHV0KCkgZmlsdGVyTGFiZWwgPSAnTk9UIFNFVCc7XG4gIEBJbnB1dCgpIGZpbHRlclBsYWNlaG9sZGVyID0gJ05PVCBTRVQnO1xuICBASW5wdXQoKSBub0RhdGFUZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAxMCwgMTVdO1xuICBASW5wdXQoKSBkZWZhdWx0UGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplT3B0aW9ucz8uWzBdIHx8IDEwO1xuICBASW5wdXQoKSByb3dBY3Rpb25zOiBEYXRhVGFibGVBY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSB0YWJsZUFjdGlvbnM6IERhdGFUYWJsZUFjdGlvbltdID0gW107XG5cbiAgQElucHV0KCkgc2V0IGRpc3BsYXllZERhdGEoZGF0YTogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGRhdGE7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgc2V0IHBhZ2luYXRpb25FbmFibGVkKGlzUGFnaW5hdGlvbkVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzUGFnaW5hdGlvbkVuYWJsZWQgPSBpc1BhZ2luYXRpb25FbmFibGVkO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5pc1BhZ2luYXRpb25FbmFibGVkID8gdGhpcy5kZWZhdWx0UGFnZVNpemUgOiBOdW1iZXIuTUFYX1ZBTFVFO1xuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yLl9jaGFuZ2VQYWdlU2l6ZShwYWdlU2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGZpbHRlckVuYWJsZWQoaXNGaWx0ZXJFbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc0ZpbHRlckVuYWJsZWQgPSBpc0ZpbHRlckVuYWJsZWQ7XG4gICAgdGhpcy5zZXRGaWx0ZXJWYWx1ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgQE91dHB1dCgpIHRhYmxlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhVGFibGVBY3Rpb24+KCk7XG4gIEBPdXRwdXQoKSByb3dBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZUFjdGlvbj4oKTtcbiAgQE91dHB1dCgpIHNvcnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICBAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiB0cnVlIH0pIHNvcnQ6IE1hdFNvcnQ7XG5cbiAgZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPGFueVtdPjtcbiAgY29sdW1uTmFtZXM6IHN0cmluZ1tdO1xuICBpc1Jvd0NsaWNrYWJsZTogYm9vbGVhbjtcbiAgZGVmYXVsdEFjdGlvbjogRGF0YVRhYmxlQWN0aW9uO1xuICBpc0ZpbHRlckVuYWJsZWQgPSBmYWxzZTtcbiAgaXNQYWdpbmF0aW9uRW5hYmxlZCA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1uTmFtZXMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4ubGFiZWwpO1xuICAgIHRoaXMuaXNSb3dDbGlja2FibGUgPSB0aGlzLnJvd0FjdGlvbnMubGVuZ3RoID4gMDtcbiAgICBpZiAodGhpcy5pc1Jvd0NsaWNrYWJsZSkge1xuICAgICAgdGhpcy5jb2x1bW5OYW1lcy51bnNoaWZ0KHRoaXMuQUNUSU9OX0NPTFVNTl9OQU1FKTtcbiAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbiA9IHRoaXMucm93QWN0aW9uc1swXTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuXG4gIH1cblxuICBvbkZpbHRlcih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGaWx0ZXJWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBvblJvd0V2ZW50KGV2ZW50OiBNb3VzZUV2ZW50LCByb3c6IGFueSwgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCEhYWN0aW9uICYmICF0aGlzLmlzQ2xpY2tPblJvd01lbnVJY29uKGV2ZW50KSkge1xuICAgICAgdGhpcy5yb3dBY3Rpb24uZW1pdCh7IC4uLmFjdGlvbiwgb3V0cHV0Um93OiByb3cgfSk7XG4gICAgfVxuICB9XG5cbiAgb25Tb3J0aW5nRXZlbnQoc29ydGluZ1BhcmFtczogU29ydCk6IHZvaWQge1xuICAgIHRoaXMuc29ydEV2ZW50LmVtaXQoc29ydGluZ1BhcmFtcyk7XG4gIH1cblxuICBvblRhYmxlQWN0aW9uKHRhYmxlQWN0aW9uOiBEYXRhVGFibGVBY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoISF0YWJsZUFjdGlvbikge1xuICAgICAgdGhpcy50YWJsZUFjdGlvbi5lbWl0KHRhYmxlQWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZpbHRlclZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gdmFsdWU/LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NsaWNrT25Sb3dNZW51SWNvbihldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoZXZlbnQ/LnRhcmdldCBhcyBIVE1MRWxlbWVudCk/LmNsYXNzTGlzdC5jb250YWlucygnbWF0LWljb24nKTtcbiAgfVxufVxuIl19
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFRLE1BQU0sd0JBQXdCLENBQUM7QUFHdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBT3BDLE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7O1FBTVcsdUJBQWtCLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLFdBQU0sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7UUFDcEMsVUFBSyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQztRQUNsQyxTQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDO1FBRWhDLFlBQU8sR0FBNEIsRUFBRSxDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsUUFBUSxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN2QixlQUFVLEdBQUcsd0JBQXdCLENBQUM7UUFDdEMsb0JBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFD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QUcsRUFBVSxDQUFDO1FBQzlDLEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNwQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjtRQUNELElBQUksbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDcEI7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQzs7O1lBMVJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQiwwOUlBQTBDOzthQUUzQzs7O3NCQU9FLEtBQUs7MEJBQ0wsS0FBSztnQ0FDTCxLQUFLO3lCQUNMLEtBQUs7OEJBQ0wsS0FBSzs4QkFDTCxLQUFLO3NCQUNMLEtBQUs7MEJBQ0wsS0FBSzt3QkFFTCxLQUFLO3NCQU9MLEtBQUs7Z0NBSUwsS0FBSzs0QkFTTCxLQUFLO3dCQU1MLEtBQUs7d0JBU0wsTUFBTTswQkFDTixNQUFNOzBCQUNOLE1BQU07d0JBRU4sU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7bUJBQ3pDLFNBQVMsU0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvclwiO1xuaW1wb3J0IHsgTWF0U29ydCwgU29ydCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zb3J0XCI7XG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW5IZWFkZXIgfSBmcm9tIFwiLi9kYXRhLXRhYmxlLWNvbHVtbi1oZWFkZXJcIjtcbmltcG9ydCB7IERhdGFUYWJsZUFjdGlvbiB9IGZyb20gXCIuL2RhdGEtdGFibGUtYWN0aW9uXCI7XG5pbXBvcnQgeyBEYXRhVGFibGVBY3Rpb25UeXBlIH0gZnJvbSBcIi4vZGF0YS10YWJsZS1hY3Rpb24tdHlwZVwiO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tIFwidXVpZFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWFkLWRhdGEtdGFibGVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHJlYWRvbmx5IEFDVElPTl9DT0xVTU5fTkFNRSA9IFwiX19hY3Rpb25fX1wiO1xuICByZWFkb25seSBTSU5HTEUgPSBEYXRhVGFibGVBY3Rpb25UeXBlLlNJTkdMRTtcbiAgcmVhZG9ubHkgQkFUQ0ggPSBEYXRhVGFibGVBY3Rpb25UeXBlLkJBVENIO1xuICByZWFkb25seSBOT05FID0gRGF0YVRhYmxlQWN0aW9uVHlwZS5OT05FO1xuXG4gIEBJbnB1dCgpIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbkhlYWRlcltdID0gW107XG4gIEBJbnB1dCgpIGZpbHRlckxhYmVsID0gXCJGaWx0ZXJcIjtcbiAgQElucHV0KCkgZmlsdGVyUGxhY2Vob2xkZXIgPSBcIlwiO1xuICBASW5wdXQoKSBub0RhdGFUZXh0ID0gXCJObyBtYXRjaGluZyBkYXRhIGZvdW5kXCI7XG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAxMCwgMTVdO1xuICBASW5wdXQoKSBkZWZhdWx0UGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplT3B0aW9ucz8uWzBdIHx8IDEwO1xuICBASW5wdXQoKSBhY3Rpb25zOiBEYXRhVGFibGVBY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBpZEdlbmVyYXRvcjogYW55O1xuXG4gIEBJbnB1dCgpIHNldCB0YWJsZURhdGEoZGF0YTogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KGRhdGEpO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZURhdGFNYXBzQW5kU2V0RGlzcGxheWVkRGF0YVNvdXJjZURhdGEoZGF0YSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBwYWdpbmF0aW9uRW5hYmxlZChpc1BhZ2luYXRpb25FbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc1BhZ2luYXRpb25FbmFibGVkID0gaXNQYWdpbmF0aW9uRW5hYmxlZDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMuaXNQYWdpbmF0aW9uRW5hYmxlZCA/IHRoaXMuZGVmYXVsdFBhZ2VTaXplIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICBpZiAodGhpcy5kYXRhU291cmNlLnBhZ2luYXRvcikge1xuICAgICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvci5fY2hhbmdlUGFnZVNpemUocGFnZVNpemUpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBmaWx0ZXJFbmFibGVkKGlzRmlsdGVyRW5hYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNGaWx0ZXJFbmFibGVkID0gaXNGaWx0ZXJFbmFibGVkO1xuICAgIHRoaXMuc2V0RmlsdGVyVmFsdWUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBmb3JjZU1vZGUobW9kZTogc3RyaW5nKSB7XG4gICAgaWYgKG1vZGUgPT09IHRoaXMuU0lOR0xFIHx8IG1vZGUgPT09IHRoaXMuQkFUQ0ggfHwgbW9kZSA9PT0gdGhpcy5OT05FKSB7XG4gICAgICB0aGlzLl9mb3JjZU1vZGUgPSBtb2RlO1xuICAgICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICAgIHRoaXMuc2V0QWN0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKSBzb3J0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XG4gIEBPdXRwdXQoKSBhY3Rpb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlQWN0aW9uPigpO1xuICBAT3V0cHV0KCkgcGFnaW5nRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICBAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiB0cnVlIH0pIHNvcnQ6IE1hdFNvcnQ7XG5cbiAgdGFibGVBY3Rpb25zOiBEYXRhVGFibGVBY3Rpb25bXSA9IFtdO1xuICByb3dBY3Rpb25zOiBEYXRhVGFibGVBY3Rpb25bXSA9IFtdO1xuICBhbGxTZWxlY3RlZCA9IGZhbHNlO1xuICBzZWxlY3RlZDogW107XG4gIF9mb3JjZU1vZGU6IHN0cmluZztcbiAgZGlzcGxheWVkRGF0YU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIGFjdHVhbERhdGFNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55W10+O1xuICBzZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+KHRydWUpO1xuICBjb2x1bW5OYW1lczogc3RyaW5nW107XG4gIGRlZmF1bHRBY3Rpb246IERhdGFUYWJsZUFjdGlvbjtcbiAgaXNGaWx0ZXJFbmFibGVkID0gZmFsc2U7XG4gIGlzUGFnaW5hdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgbW9kZSA9IHRoaXMuTk9ORTtcbiAgaXNSb3dDbGlja2FibGUgPSBmYWxzZTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5OYW1lcyA9IHRoaXMuY29sdW1ucy5tYXAoY29sdW1uID0+IGNvbHVtbi5sYWJlbCk7XG4gICAgdGhpcy5tb2RlID0gdGhpcy5nZXRUYWJsZU1vZGUoKTtcbiAgICB0aGlzLnNldEFjdGlvbnMoKTtcbiAgICBpZiAodGhpcy5tb2RlICE9PSB0aGlzLk5PTkUpIHtcbiAgICAgIHRoaXMuaXNSb3dDbGlja2FibGUgPSB0cnVlO1xuICAgICAgdGhpcy5kZWZhdWx0QWN0aW9uID0gdGhpcy5yb3dBY3Rpb25zWzBdO1xuICAgIH1cbiAgICB0aGlzLmNvbHVtbk5hbWVzLnVuc2hpZnQodGhpcy5BQ1RJT05fQ09MVU1OX05BTUUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWw/LnNlbGVjdGVkID8gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5sZW5ndGggOiAwO1xuICB9XG5cbiAgZ2V0IHJvd0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZT8uX3BhZ2VEYXRhKHRoaXMuZGF0YVNvdXJjZS5kYXRhKSA/IHRoaXMuZGF0YVNvdXJjZS5fcGFnZURhdGEodGhpcy5kYXRhU291cmNlLmRhdGEpLmxlbmd0aCA6IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VsZWN0ZWRDb3VudChhY3Rpb25UeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5zZWxlY3RlZENvdW50O1xuICAgIGlmIChhY3Rpb25UeXBlICE9IHRoaXMuQkFUQ0ggfHwgY291bnQgPCAyKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIFwiIChcIiArIGNvdW50ICsgXCIpXCI7XG4gIH1cblxuICBwdWJsaWMgaXNEaXNhYmxlZChhY3Rpb25UeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKGFjdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgdGhpcy5TSU5HTEU6XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ291bnQgIT0gMTtcbiAgICAgIGNhc2UgdGhpcy5CQVRDSDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDb3VudCA8IDE7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVG9nZ2xlU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIC8vIGNsZWFyIGFsbCBzZWxlY3Rpb24gZmlyc3RcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgLy8gdG9nZ2xlIGFsbCBjaGVja2JveFxuICAgIHRoaXMuYWxsU2VsZWN0ZWQgPSAhdGhpcy5hbGxTZWxlY3RlZDtcbiAgICBpZiAodGhpcy5hbGxTZWxlY3RlZCkge1xuICAgICAgLy8gc2VsZWN0IGFsbCByb3dzIG9mIHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5fcGFnZURhdGEodGhpcy5kYXRhU291cmNlLmRhdGEpLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGFSb3c6IGFueSA9IHJvdyBhcyBhbnk7XG4gICAgICAgICAgY29uc3Qgcm93SWQgPSBcIlwiICsgZGF0YVJvdy5yb3dJZDtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdChyb3dJZCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQocm93SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQocm93SWQpO1xuICB9XG5cbiAgcHVibGljIHNldEZpbHRlclZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gdmFsdWU/LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcHVibGljIG9uUm93Q2hlY2tib3goZXZlbnQ6IE1vdXNlRXZlbnQsIHJvdzogYW55KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIG5vIGNsaWNrIGV2ZW50IG9uIHJvd1xuICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwudG9nZ2xlKHJvdy5yb3dJZCk7XG4gIH1cblxuICBwdWJsaWMgb25Sb3dFdmVudChldmVudDogTW91c2VFdmVudCwgcm93OiBhbnksIGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbik6IHZvaWQge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlIHRoaXMuQkFUQ0g6XG4gICAgICAgIHRoaXMub25Sb3dDaGVja2JveChldmVudCwgcm93KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuU0lOR0xFOlxuICAgICAgICAvLyBlbWl0IHRoZSBkZWZhdWx0IGFjdGlvbiBpZiB0aGUgcm93IChub3QgdGhlIGljb24hKSB3YXMgY2xpY2tlZFxuICAgICAgICBpZiAoISFhY3Rpb24gJiYgIURhdGFUYWJsZUNvbXBvbmVudC5pc0NsaWNrT25Sb3dNZW51SWNvbihldmVudCkpIHtcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IFtdO1xuICAgICAgICAgIC8vIGlmIElELWdlbmVyYXRvciBpcyBwcm92aWRlZCwgcmV0dXJuIHRoZSBJRCwgZWxzZSByZXR1cm4gdGhlIEFDVFVBTCBkYXRhXG4gICAgICAgICAgc2VsZWN0ZWQucHVzaCh0aGlzLmlkR2VuZXJhdG9yID8gcm93LnJvd0lkIDogdGhpcy5hY3R1YWxEYXRhTWFwLmdldChyb3cucm93SWQpKTtcbiAgICAgICAgICB0aGlzLmVtaXRUYWJsZUFjdGlvbihhY3Rpb24sIHNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIGRvIG5vdGhpbmcgaWYgbW9kZSBpcyBOT05FIChvciBudWxsKVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU29ydGluZ0V2ZW50KHNvcnRpbmdQYXJhbXM6IFNvcnQpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRFdmVudC5lbWl0KHNvcnRpbmdQYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIG9uUGFnaW5hdGlvbkV2ZW50KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luZ0V2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uVGFibGVBY3Rpb24odGFibGVBY3Rpb246IERhdGFUYWJsZUFjdGlvbik6IHZvaWQge1xuICAgIGlmICghIXRhYmxlQWN0aW9uKSB7XG4gICAgICBjb25zdCBzZWxlY3Rpb246IGFueVtdID0gW107XG4gICAgICBmb3IgKGNvbnN0IHNlbGVjdGVkIG9mIHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQpIHtcbiAgICAgICAgc2VsZWN0aW9uLnB1c2godGhpcy5pZEdlbmVyYXRvciA/IHNlbGVjdGVkIDogdGhpcy5hY3R1YWxEYXRhTWFwLmdldChzZWxlY3RlZCkpO1xuICAgICAgfVxuICAgICAgdGFibGVBY3Rpb24uc2VsZWN0ZWQgPSBzZWxlY3Rpb247XG4gICAgICB0aGlzLmFjdGlvbkV2ZW50LmVtaXQodGFibGVBY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHRyYW5zZm9ybURhdGEodmFsdWU6IGFueSwgdHJhbnNmb3JtZXI6IGFueSwgdHJhbnNmb3JtZXJQYXJhbXM6IGFueSk6IGFueSB7XG4gICAgaWYgKCF0cmFuc2Zvcm1lciB8fCAhKHRyYW5zZm9ybWVyIGluc3RhbmNlb2YgRnVuY3Rpb24pKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2Zvcm1lcih2YWx1ZSwgdHJhbnNmb3JtZXJQYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVSb3dJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1dWlkVjQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzQ2xpY2tPblJvd01lbnVJY29uKGV2ZW50OiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChldmVudD8udGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8uY2xhc3NMaXN0LmNvbnRhaW5zKFwibWF0LWljb25cIik7XG4gIH1cblxuICBwcml2YXRlIGVtaXRUYWJsZUFjdGlvbihhY3Rpb246IERhdGFUYWJsZUFjdGlvbiwgc2VsZWN0ZWQ6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgZW1pdEFjdGlvbiA9IHsgLi4uYWN0aW9uIH07XG4gICAgaWYgKGFjdGlvbi50eXBlICE9PSB0aGlzLk5PTkUpIHtcbiAgICAgIGVtaXRBY3Rpb24uc2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWRdO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvbkV2ZW50LmVtaXQoZW1pdEFjdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRGlzcGxheWVkRGF0YUVsZW1lbnQocm93SWQ6IHN0cmluZywgYWN0dWFsRGF0YUVsZW1lbnQ6IGFueSk6IGFueSB7XG4gICAgY29uc3QgZGlzcGxheWVkRGF0YUVsZW1lbnQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBkaXNwbGF5ZWREYXRhRWxlbWVudFtcInJvd0lkXCJdID0gcm93SWQ7XG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XG4gICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbERhdGFFbGVtZW50W2NvbHVtbi5kYXRhUHJvcGVydHlOYW1lXTtcbiAgICAgIGRpc3BsYXllZERhdGFFbGVtZW50W2NvbHVtbi5kYXRhUHJvcGVydHlOYW1lXSA9IERhdGFUYWJsZUNvbXBvbmVudC50cmFuc2Zvcm1EYXRhKGFjdHVhbFZhbHVlLCBjb2x1bW4udHJhbnNmb3JtZXIsIGNvbHVtbi50cmFuc2Zvcm1lclBhcmFtcyk7XG4gICAgfVxuICAgIHJldHVybiBkaXNwbGF5ZWREYXRhRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLnRhYmxlQWN0aW9ucyA9IFtdO1xuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMuYWN0aW9ucykge1xuICAgICAgaWYgKHRoaXMubW9kZSAhPT0gYWN0aW9uLmhpZGRlbkluTW9kZSkge1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgICAgY2FzZSB0aGlzLlNJTkdMRTpcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09IHRoaXMuU0lOR0xFKSB7XG4gICAgICAgICAgICAgIHRoaXMucm93QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnRhYmxlQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIHRoaXMuQkFUQ0g6XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlICE9PSB0aGlzLlNJTkdMRSkge1xuICAgICAgICAgICAgICB0aGlzLnRhYmxlQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy50YWJsZUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEYXRhTWFwc0FuZFNldERpc3BsYXllZERhdGFTb3VyY2VEYXRhKGRhdGE6IGFueVtdKSB7XG4gICAgY29uc3QgZGlzcGxheWVkRGF0YUxpc3QgPSBbXTtcbiAgICB0aGlzLmFjdHVhbERhdGFNYXAuY2xlYXIoKTtcbiAgICB0aGlzLmRpc3BsYXllZERhdGFNYXAuY2xlYXIoKTtcbiAgICBmb3IgKGNvbnN0IGRhdGFFbnRyeSBvZiBkYXRhKSB7XG4gICAgICBjb25zdCByb3dJZCA9ICh0aGlzLmlkR2VuZXJhdG9yKSA/IHRoaXMuaWRHZW5lcmF0b3IoZGF0YUVudHJ5KSA6IERhdGFUYWJsZUNvbXBvbmVudC5nZW5lcmF0ZVJvd0lkKCk7XG4gICAgICB0aGlzLmFjdHVhbERhdGFNYXAuc2V0KHJvd0lkLCBkYXRhRW50cnkpO1xuICAgICAgY29uc3QgZGlzcGxheWVkRGF0YUVsZW1lbnQgPSB0aGlzLmdlbmVyYXRlRGlzcGxheWVkRGF0YUVsZW1lbnQocm93SWQsIGRhdGFFbnRyeSk7XG4gICAgICB0aGlzLmRpc3BsYXllZERhdGFNYXAuc2V0KHJvd0lkLCBkaXNwbGF5ZWREYXRhRWxlbWVudCk7XG4gICAgICBkaXNwbGF5ZWREYXRhTGlzdC5wdXNoKGRpc3BsYXllZERhdGFFbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkaXNwbGF5ZWREYXRhTGlzdDtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBnZXRUYWJsZU1vZGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fZm9yY2VNb2RlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9yY2VNb2RlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hY3Rpb25zKSB7XG4gICAgICByZXR1cm4gdGhpcy5OT05FO1xuICAgIH1cbiAgICBjb25zdCBkaXN0aW5jdEFjdGlvblR5cGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCByb3dBY3Rpb24gb2YgdGhpcy5hY3Rpb25zKSB7XG4gICAgICBkaXN0aW5jdEFjdGlvblR5cGVzLmFkZChyb3dBY3Rpb24udHlwZSk7XG4gICAgfVxuICAgIGlmIChkaXN0aW5jdEFjdGlvblR5cGVzLmhhcyh0aGlzLkJBVENIKSkge1xuICAgICAgcmV0dXJuIHRoaXMuQkFUQ0g7XG4gICAgfVxuICAgIGlmIChkaXN0aW5jdEFjdGlvblR5cGVzLmhhcyh0aGlzLlNJTkdMRSkpIHtcbiAgICAgIHJldHVybiB0aGlzLlNJTkdMRTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuTk9ORTtcbiAgfVxufVxuIl19
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import { NgModule } from
|
|
2
|
-
import { CommonModule } from
|
|
3
|
-
import { MatIconModule } from
|
|
4
|
-
import { MatButtonModule } from
|
|
5
|
-
import { MatMenuModule } from
|
|
6
|
-
import { MatFormFieldModule } from
|
|
7
|
-
import { MatInputModule } from
|
|
8
|
-
import { MatTableModule } from
|
|
9
|
-
import { MatSortModule } from
|
|
10
|
-
import { MatPaginatorModule } from
|
|
11
|
-
import { DataTableComponent } from
|
|
12
|
-
import { ButtonModule } from
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { MatIconModule } from "@angular/material/icon";
|
|
4
|
+
import { MatButtonModule } from "@angular/material/button";
|
|
5
|
+
import { MatMenuModule } from "@angular/material/menu";
|
|
6
|
+
import { MatFormFieldModule } from "@angular/material/form-field";
|
|
7
|
+
import { MatInputModule } from "@angular/material/input";
|
|
8
|
+
import { MatTableModule } from "@angular/material/table";
|
|
9
|
+
import { MatSortModule } from "@angular/material/sort";
|
|
10
|
+
import { MatPaginatorModule } from "@angular/material/paginator";
|
|
11
|
+
import { DataTableComponent } from "./data-table.component";
|
|
12
|
+
import { ButtonModule } from "../button/button.module";
|
|
13
|
+
import { TranslateModule } from "@ngx-translate/core";
|
|
14
|
+
import { MatCheckboxModule } from "@angular/material/checkbox";
|
|
15
|
+
import { MatBadgeModule } from "@angular/material/badge";
|
|
16
|
+
import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
|
|
13
17
|
export class DataTableModule {
|
|
14
18
|
}
|
|
15
19
|
DataTableModule.decorators = [
|
|
@@ -25,9 +29,13 @@ DataTableModule.decorators = [
|
|
|
25
29
|
MatPaginatorModule,
|
|
26
30
|
MatSortModule,
|
|
27
31
|
MatTableModule,
|
|
32
|
+
MatProgressSpinnerModule,
|
|
28
33
|
ButtonModule,
|
|
34
|
+
TranslateModule,
|
|
35
|
+
MatCheckboxModule,
|
|
36
|
+
MatBadgeModule
|
|
29
37
|
],
|
|
30
|
-
exports: [DataTableComponent]
|
|
38
|
+
exports: [DataTableComponent]
|
|
31
39
|
},] }
|
|
32
40
|
];
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFzQjlFLE1BQU0sT0FBTyxlQUFlOzs7WUFwQjNCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDbEMsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osZUFBZTtvQkFDZixhQUFhO29CQUNiLGtCQUFrQjtvQkFDbEIsY0FBYztvQkFDZCxhQUFhO29CQUNiLGtCQUFrQjtvQkFDbEIsYUFBYTtvQkFDYixjQUFjO29CQUNkLHdCQUF3QjtvQkFDeEIsWUFBWTtvQkFDWixlQUFlO29CQUNmLGlCQUFpQjtvQkFDakIsY0FBYztpQkFDZjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzthQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYmxlXCI7XG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NvcnRcIjtcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3JcIjtcbmltcG9ydCB7IERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuL2RhdGEtdGFibGUuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tIFwiLi4vYnV0dG9uL2J1dHRvbi5tb2R1bGVcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2VcIjtcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyXCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0RhdGFUYWJsZUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0QmFkZ2VNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW0RhdGFUYWJsZUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlTW9kdWxlIHtcbn1cbiJdfQ==
|
|
@@ -41,11 +41,22 @@ export class ToolbarComponent {
|
|
|
41
41
|
getBackAction() {
|
|
42
42
|
return this.toolbarService.getBackAction();
|
|
43
43
|
}
|
|
44
|
+
getToolbarActionsAlwaysAsMenu() {
|
|
45
|
+
return this.toolbarService.getToolbarActionsAlwaysAsMenu();
|
|
46
|
+
}
|
|
47
|
+
getToolbarActionsMenuTitle() {
|
|
48
|
+
return this.toolbarService.getToolbarActionsMenuTitle();
|
|
49
|
+
}
|
|
50
|
+
showBadgeForMenu() {
|
|
51
|
+
return this.getToolbarActions()
|
|
52
|
+
.slice(1) // the first icon is not shown in menu
|
|
53
|
+
.filter(value => value.badge && value.badge.value).length > 0;
|
|
54
|
+
}
|
|
44
55
|
}
|
|
45
56
|
ToolbarComponent.decorators = [
|
|
46
57
|
{ type: Component, args: [{
|
|
47
58
|
selector: 'mad-toolbar',
|
|
48
|
-
template: "<mat-toolbar class=\"content-toolbar\">\n <a [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink()\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a (click)=\"getBackAction().action()\" *ngIf=\"isAction()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a [routerLink]=\"mainAction.routerLink\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </mad-primary-button>\n </a>\n </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n >\n </mad-material-action-button>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n (click)=\"action.action()\"\n *ngIf=\"!(isHandset$ | async) || i < (getToolbarActions().length > 2 ? 1 : 2)\"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\"
|
|
59
|
+
template: "<mat-toolbar class=\"content-toolbar\">\n <a [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink()\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a (click)=\"getBackAction().action()\" *ngIf=\"isAction()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a [routerLink]=\"mainAction.routerLink\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </mad-primary-button>\n </a>\n </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n >\n </mad-material-action-button>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n (click)=\"action.action()\"\n *ngIf=\"(!(isHandset$ | async) && !getToolbarActionsAlwaysAsMenu()) || i < (getToolbarActions().length > 2 ? 1 : 2)\"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\">\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon>\n </mad-icon-button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"(isHandset$ | async) || getToolbarActionsAlwaysAsMenu()\">\n <ng-container *ngIf=\"getToolbarActions().length > 2\">\n <mad-icon-button type=\"button\" [matMenuTriggerFor]=\"burgerMenu\" [matTooltip]=\"getToolbarActionsMenuTitle()\">\n <mat-icon\n matBadgeColor=\"warn\"\n [matBadge]=\"showBadgeForMenu() ? '⁠' : null\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >more_vert\n </mat-icon>\n </mad-icon-button>\n <mat-menu #burgerMenu=\"matMenu\" class=\"no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <button *ngIf=\"i >= 1\" mat-menu-item (click)=\"action.action()\">\n <mat-icon\n color=\"primary\"\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n matBadgePosition=\"below after\"\n >{{ action.matIcon }}</mat-icon\n >\n {{ action.actionName }}\n </button>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\n </div>\n</mat-toolbar>\n",
|
|
49
60
|
styles: ["mat-toolbar{background:#fff}.content-toolbar{border-bottom:1px solid #dcdcdc;height:57px}.right-aligned{margin-left:auto;margin-right:0;overflow:hidden}.go-back-button{padding-left:0;padding-right:0}.toolbar-title{margin-right:72px}::ng-deep.mat-badge-content{bottom:-7px!important;right:-7px!important}"]
|
|
50
61
|
},] }
|
|
51
62
|
];
|
|
@@ -54,4 +65,4 @@ ToolbarComponent.ctorParameters = () => [
|
|
|
54
65
|
{ type: Title },
|
|
55
66
|
{ type: ToolbarService }
|
|
56
67
|
];
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVFuQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQW9CLGtCQUFzQyxFQUFVLFlBQW1CLEVBQVUsY0FBOEI7UUFBM0csdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFPO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRi9ILGVBQVUsR0FBd0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUc3SCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUN0RyxPQUFPLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDN0IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7UUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ2pHLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQztJQUMzRixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDN0YsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELDZCQUE2QjtRQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRTthQUM1QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsc0NBQXNDO2FBQy9DLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7OztZQTdERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLCs2SEFBdUM7O2FBRXhDOzs7WUFSTyxrQkFBa0I7WUFIbEIsS0FBSztZQUNMLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RpdGxlfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7VG9vbGJhclNlcnZpY2V9IGZyb20gJy4vdG9vbGJhci5zZXJ2aWNlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FjdGlvbiwgQmFja0FjdGlvbiwgTWFpbkFjdGlvbiwgVG9vbGJhckFjdGlvbn0gZnJvbSAnLi90b29sYmFyLWFjdGlvbi5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xiYXJDb21wb25lbnQge1xuICBpc0hhbmRzZXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldF0pLnBpcGUobWFwKHJlc3VsdCA9PiByZXN1bHQubWF0Y2hlcykpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBUaXRsZSwgcHJpdmF0ZSB0b29sYmFyU2VydmljZTogVG9vbGJhclNlcnZpY2UpIHtcbiAgfVxuXG4gIGdldFRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0YVRpdGxlID0gdGhpcy50b29sYmFyU2VydmljZS5nZXREYXRhVGl0bGUoKTtcbiAgICBjb25zdCB0b29sYmFyVGl0bGUgPSB0aGlzLnRvb2xiYXJTZXJ2aWNlLnRvb2xiYXJUaXRsZTtcbiAgICBjb25zdCB0aXRsZSA9ICF0b29sYmFyVGl0bGUgfHwgdG9vbGJhclRpdGxlLmxlbmd0aCA8PSAwID8gdGhpcy50aXRsZVNlcnZpY2UuZ2V0VGl0bGUoKSA6IHRvb2xiYXJUaXRsZTtcbiAgICByZXR1cm4gIWRhdGFUaXRsZSB8fCBkYXRhVGl0bGUubGVuZ3RoIDw9IDAgPyB0aXRsZSA6IHRpdGxlICsgJzogJyArIGRhdGFUaXRsZTtcbiAgfVxuXG4gIGdldFRvb2xiYXJBY3Rpb25zKCk6IFRvb2xiYXJBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0VG9vbGJhckFjdGlvbnMoKTtcbiAgfVxuXG4gIGdldE1haW5BY3Rpb25zKCk6IE1haW5BY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0TWFpbkFjdGlvbnMoKTtcbiAgfVxuXG4gIGhhc1Blcm1pc3Npb24oYWN0aW9uOiBBY3Rpb24pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCAhYWN0aW9uLnNob3dJZikge1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gYWN0aW9uLnNob3dJZjtcbiAgfVxuXG4gIGlzUm91dGVyTGluaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b29sYmFyU2VydmljZS5nZXRCYWNrQWN0aW9uKCkgJiYgISF0aGlzLnRvb2xiYXJTZXJ2aWNlLmdldEJhY2tBY3Rpb24oKS5yb3V0ZXJMaW5rO1xuICB9XG5cbiAgaXNBYnNvbHV0ZUxpbmsoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0QmFja0FjdGlvbigpICYmICEhdGhpcy50b29sYmFyU2VydmljZS5nZXRCYWNrQWN0aW9uKCkuaHJlZjtcbiAgfVxuXG4gIGlzQWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvb2xiYXJTZXJ2aWNlLmdldEJhY2tBY3Rpb24oKSAmJiAhIXRoaXMudG9vbGJhclNlcnZpY2UuZ2V0QmFja0FjdGlvbigpLmFjdGlvbjtcbiAgfVxuXG4gIGdldEJhY2tBY3Rpb24oKTogQmFja0FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0QmFja0FjdGlvbigpO1xuICB9XG5cbiAgZ2V0VG9vbGJhckFjdGlvbnNBbHdheXNBc01lbnUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0VG9vbGJhckFjdGlvbnNBbHdheXNBc01lbnUoKTtcbiAgfVxuXG4gIGdldFRvb2xiYXJBY3Rpb25zTWVudVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9vbGJhclNlcnZpY2UuZ2V0VG9vbGJhckFjdGlvbnNNZW51VGl0bGUoKTtcbiAgfVxuXG4gIHNob3dCYWRnZUZvck1lbnUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VG9vbGJhckFjdGlvbnMoKVxuICAgICAgLnNsaWNlKDEpIC8vIHRoZSBmaXJzdCBpY29uIGlzIG5vdCBzaG93biBpbiBtZW51XG4gICAgICAuZmlsdGVyKHZhbHVlID0+IHZhbHVlLmJhZGdlICYmIHZhbHVlLmJhZGdlLnZhbHVlKS5sZW5ndGggPiAwO1xuICB9XG59XG4iXX0=
|