@porscheinformatik/material-addons 10.2.3 → 10.3.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/bundles/porscheinformatik-material-addons.umd.js +307 -44
- 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/flowbar/flowbar.component.js +7 -3
- package/esm2015/lib/stepper/stepper.component.js +8 -6
- package/esm2015/lib/toolbar/toolbar.component.js +2 -2
- package/fesm2015/porscheinformatik-material-addons.js +232 -41
- 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/flowbar/flowbar.component.d.ts +1 -0
- package/lib/stepper/stepper.component.d.ts +1 -1
- 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==
|
|
@@ -31,6 +31,10 @@ export class FlowbarComponent {
|
|
|
31
31
|
ngAfterViewInit() {
|
|
32
32
|
this.stepper._getIndicatorType = () => 'number';
|
|
33
33
|
}
|
|
34
|
+
getIndexForActiveStep() {
|
|
35
|
+
const selectedIndex = this._steps.indexOf(this._activeStep);
|
|
36
|
+
return selectedIndex === -1 ? 0 : selectedIndex;
|
|
37
|
+
}
|
|
34
38
|
changeActiveStep(step) {
|
|
35
39
|
const previousIndex = this._steps.indexOf(this._activeStep);
|
|
36
40
|
this._activeStep = step;
|
|
@@ -172,8 +176,8 @@ export class FlowbarComponent {
|
|
|
172
176
|
FlowbarComponent.decorators = [
|
|
173
177
|
{ type: Component, args: [{
|
|
174
178
|
selector: 'mad-flowbar',
|
|
175
|
-
template: "<div class=\"stepper-container\">\n <mat-horizontal-stepper #stepper (click)=\"triggerClick()\">\n <mat-step *ngFor=\"let step of _steps\" [aria-labelledby]=\"!step.enabled ? 'disabled' : null\">\n <ng-template matStepLabel>\n <div class=\"step-header-overlay\" *ngIf=\"this._headerClick.observers.length > 0\" (click)=\"headerClick($event, step)\"></div>\n <span>{{step.label}}</span>\n </ng-template>\n </mat-step>\n </mat-horizontal-stepper>\n</div>\n",
|
|
176
|
-
styles: [".stepper-container{display:flex;padding:0 1rem}::ng-deep .mat-stepper-horizontal .mat-horizontal-stepper-header{height:auto;padding:0}::ng-deep .mat-step-header[aria-labelledby=disabled]{cursor:not-allowed;pointer-events:none!important}::ng-deep .mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 10px}::ng-deep .mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:4px;margin:0 5px}.step-header-overlay{height:100%;position:absolute;width:100%}"]
|
|
179
|
+
template: "<div class=\"stepper-container\">\n <mat-horizontal-stepper #stepper [selectedIndex]=\"this.getIndexForActiveStep()\" (click)=\"triggerClick()\">\n <mat-step *ngFor=\"let step of _steps\" [aria-labelledby]=\"!step.enabled ? 'disabled' : null\">\n <ng-template matStepLabel>\n <div class=\"step-header-overlay\" *ngIf=\"this._headerClick.observers.length > 0\" (click)=\"headerClick($event, step)\"></div>\n <span>{{step.label}}</span>\n </ng-template>\n </mat-step>\n </mat-horizontal-stepper>\n</div>\n",
|
|
180
|
+
styles: [".stepper-container{display:flex;padding:0 1rem}::ng-deep .mat-stepper-horizontal .mat-horizontal-stepper-header{height:auto;padding:0}::ng-deep .mat-step-header[aria-labelledby=disabled]{cursor:not-allowed;pointer-events:none!important}::ng-deep .mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 10px}::ng-deep .mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:4px;margin:0 5px}.step-header-overlay{height:100%;position:absolute;right:0;top:0;width:100%}"]
|
|
177
181
|
},] }
|
|
178
182
|
];
|
|
179
183
|
FlowbarComponent.propDecorators = {
|
|
@@ -183,4 +187,4 @@ FlowbarComponent.propDecorators = {
|
|
|
183
187
|
_activeStepChange: [{ type: Output, args: ['activeStepChange',] }],
|
|
184
188
|
_headerClick: [{ type: Output, args: ['headerClick',] }]
|
|
185
189
|
};
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd2Jhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL2Zsb3diYXIvZmxvd2Jhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQWN0RCxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBUWtCLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFFVCxzQkFBaUIsR0FBd0IsSUFBSSxZQUFZLENBQVEsSUFBSSxDQUFDLENBQUM7UUFDbkc7Ozs7V0FJRztRQUNvQixpQkFBWSxHQUF3QixJQUFJLFlBQVksQ0FBUSxJQUFJLENBQUMsQ0FBQztJQStLM0YsQ0FBQztJQTVLQyxRQUFRO1FBQ04scUdBQXFHO1FBQ3JHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQiwwRUFBMEU7Z0JBQzFFLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFB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QUM7SUFDbkcsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsTUFBTTthQUNmLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO2FBQ2YsT0FBTyxFQUFFO2FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRixDQUFDOzs7WUE5TEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QiwyaEJBQXVDOzthQUV4Qzs7O3NCQUVFLFNBQVMsU0FBQyxTQUFTO3FCQUVuQixLQUFLLFNBQUMsT0FBTzswQkFDYixLQUFLLFNBQUMsWUFBWTtnQ0FDbEIsTUFBTSxTQUFDLGtCQUFrQjsyQkFNekIsTUFBTSxTQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U3RlcHBlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0ZXAge1xuICBsYWJlbDogc3RyaW5nLFxuICBlbmFibGVkPzogYm9vbGVhbixcbiAgc3ViU3RlcHM/OiBJU3RlcFtdLFxuICBhY3RpdmVTdWJTdGVwPzogSVN0ZXBcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFkLWZsb3diYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmxvd2Jhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zsb3diYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGbG93YmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnc3RlcHBlcicpIHByaXZhdGUgc3RlcHBlcjogTWF0U3RlcHBlcjtcblxuICBASW5wdXQoJ3N0ZXBzJykgX3N0ZXBzOiBJU3RlcFtdID0gW107XG4gIEBJbnB1dCgnYWN0aXZlU3RlcCcpIF9hY3RpdmVTdGVwOiBJU3RlcDtcbiAgQE91dHB1dCgnYWN0aXZlU3RlcENoYW5nZScpIF9hY3RpdmVTdGVwQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVN0ZXA+ID0gbmV3IEV2ZW50RW1pdHRlcjxJU3RlcD4odHJ1ZSk7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBzdGVwIGhlYWRlciBpcyBjbGlja2VkLlxuICAgKiBXaGVuIGRlZmluZWQgaGVhZGVyIG5hdmlnYXRpb24gaGFzIHRvIGJlIGltcGxlbWVudGVkIHByb2dyYW1tYXRpY2FsbHkuXG4gICAqIGUuZy4ge0BzZWUgY2hhbmdlQWN0aXZlU3RlcE9uSGVhZGVyfVxuICAgKi9cbiAgQE91dHB1dCgnaGVhZGVyQ2xpY2snKSBfaGVhZGVyQ2xpY2s6IEV2ZW50RW1pdHRlcjxJU3RlcD4gPSBuZXcgRXZlbnRFbWl0dGVyPElTdGVwPih0cnVlKTtcblxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIElmIG5vIGFjdGl2ZSBzdGVwIGlzIHNldCBhcyBpbnB1dCBvciB0aGUgYWN0aXZlIHN0ZXAgaXMgbm90IGVuYWJsZWQsIHNlbGVjdCB0aGUgZmlyc3QgZW5hYmxlZCBzdGVwXG4gICAgaWYgKCF0aGlzLl9hY3RpdmVTdGVwIHx8ICF0aGlzLl9hY3RpdmVTdGVwLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZVN0ZXAgPSB0aGlzLl9zdGVwcy5maW5kKHN0ZXAgPT4ge1xuICAgICAgICByZXR1cm4gc3RlcC5lbmFibGVkO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5fYWN0aXZlU3RlcCkge1xuICAgICAgICAvLyBJZiBzdWIgc3RlcHMgZXhpc3QgdGhlbiBzZXQgdGhlIGZpcnN0IG5vbiBkaXNhYmxlZCBzdWIgc3RlcCBwZXIgZGVmYXVsdFxuICAgICAgICBpZiAodGhpcy5hY3RpdmVUYWJIYXNTdWJTdGVwcygpKSB7XG4gICAgICAgICAgdGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwID0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwcy5maW5kKHN0ZXAgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0ZXAuZW5hYmxlZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hY3RpdmVTdGVwQ2hhbmdlLmVtaXQodGhpcy5fYWN0aXZlU3RlcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc3RlcHBlci5fZ2V0SW5kaWNhdG9yVHlwZSA9ICgpID0+ICdudW1iZXInO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUFjdGl2ZVN0ZXAoc3RlcDogSVN0ZXApOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gdGhpcy5fc3RlcHMuaW5kZXhPZih0aGlzLl9hY3RpdmVTdGVwKTtcbiAgICB0aGlzLl9hY3RpdmVTdGVwID0gc3RlcDtcbiAgICBpZiAodGhpcy5hY3RpdmVUYWJIYXNTdWJTdGVwcygpKSB7XG4gICAgICBpZiAocHJldmlvdXNJbmRleCA8IHRoaXMuX3N0ZXBzLmluZGV4T2YodGhpcy5fYWN0aXZlU3RlcCkpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwID0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwc1swXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCA9IHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHNbdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwcy5sZW5ndGggLSAxXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlU3RlcENoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZVN0ZXApO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUFjdGl2ZVN0ZXBPbkhlYWRlcihzdGVwOiBJU3RlcCk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBJbmRleCA9IHRoaXMuX3N0ZXBzLmluZGV4T2Yoc3RlcCk7XG4gICAgdGhpcy5fYWN0aXZlU3RlcCA9IHN0ZXA7XG4gICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkID0gdGhpcy5zdGVwcGVyLl9zdGVwcy5maW5kKChfLCBpKSA9PiBpID09PSBzdGVwSW5kZXgpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUFjdGl2ZVN1YlN0ZXAoc3ViU3RlcDogSVN0ZXApOiB2b2lkIHtcbiAgICB0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXAgPSBzdWJTdGVwO1xuICB9XG5cbiAgcHVibGljIHByZXZpb3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzUHJldmlvdXNBdmFpbGFibGUoKSkge1xuICAgICAgLy8gSWYgYWN0aXZlIHN0ZXAgaGFzIG5vIHN1YiBzdGVwcyBvciBmaXJzdCBzdWIgc3RlcCBpcyBzZWxlY3RlZCAtPiBnbyB0byBwcmV2aW91cyBtYWluIHN0ZXBcbiAgICAgIGlmICghdGhpcy5hY3RpdmVUYWJIYXNTdWJTdGVwcygpIHx8IHRoaXMuaXNGaXJzdFN1YlN0ZXAoKSkge1xuICAgICAgICBjb25zdCBwcmV2aW91c0VuYWJsZWRTdGVwID0gdGhpcy5maW5kUHJldmlvdXNFbmFibGVkU3RlcCgpO1xuICAgICAgICB0aGlzLmNoYW5nZUFjdGl2ZVN0ZXAocHJldmlvdXNFbmFibGVkU3RlcCk7XG4gICAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gdGhpcy5fc3RlcHMuaW5kZXhPZihwcmV2aW91c0VuYWJsZWRTdGVwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN1YlN0ZXBJbmRleCA9IHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHMuaW5kZXhPZih0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXApO1xuICAgICAgICB0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXAgPSB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzW3N1YlN0ZXBJbmRleCAtIDFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTmV4dEF2YWlsYWJsZSgpKSB7XG4gICAgICAvLyBJZiBhY3RpdmUgc3RlcCBoYXMgbm8gc3ViIHN0ZXBzIG9yIGxhc3Qgc3ViIHN0ZXAgaXMgc2VsZWN0ZWQgLT4gZ28gdG8gbmV4dCBtYWluIHN0ZXBcbiAgICAgIGlmICghdGhpcy5hY3RpdmVUYWJIYXNTdWJTdGVwcygpIHx8IHRoaXMuaXNMYXN0U3ViU3RlcCgpKSB7XG4gICAgICAgIGNvbnN0IG5leHRFbmFibGVkU3RlcCA9IHRoaXMuZmluZE5leHRFbmFibGVkU3RlcCgpO1xuICAgICAgICB0aGlzLmNoYW5nZUFjdGl2ZVN0ZXAobmV4dEVuYWJsZWRTdGVwKTtcbiAgICAgICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSB0aGlzLl9zdGVwcy5pbmRleE9mKG5leHRFbmFibGVkU3RlcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdWJTdGVwSW5kZXggPSB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzLmluZGV4T2YodGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwID0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwc1tzdWJTdGVwSW5kZXggKyAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNQcmV2aW91c0F2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlU3RlcCkge1xuICAgICAgaWYgKCF0aGlzLmFjdGl2ZVRhYkhhc1N1YlN0ZXBzKCkgfHwgdGhpcy5pc0ZpcnN0U3ViU3RlcCgpKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gMCAmJiB0aGlzLmlzQW55UHJldmlvdXNTdGVwRW5hYmxlZChpbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGlzTmV4dEF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlU3RlcCkge1xuICAgICAgaWYgKCF0aGlzLmFjdGl2ZVRhYkhhc1N1YlN0ZXBzKCkgfHwgdGhpcy5pc0xhc3RTdWJTdGVwKCkpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEN1cnJlbnRJbmRleCgpO1xuICAgICAgICByZXR1cm4gaW5kZXggPCB0aGlzLl9zdGVwcy5sZW5ndGggLSAxICYmIHRoaXMuaXNBbnlGb2xsb3dpbmdTdGVwRW5hYmxlZChpbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGlzTGFzdFN0ZXAoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZ2V0Q3VycmVudEluZGV4KCkgPT09IHRoaXMuX3N0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVRhYkhhc1N1YlN0ZXBzKCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNMYXN0U3ViU3RlcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc3RlcHMuZmluZEluZGV4KHZhbHVlID0+IHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdGhpcy5fYWN0aXZlU3RlcDtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50U3ViU3RlcEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHMuZmluZEluZGV4KHZhbHVlID0+IHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRyaWdnZXJDbGljaygpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZFN0ZXAgPSB0aGlzLl9zdGVwc1t0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleF07XG4gICAgdGhpcy5jaGFuZ2VBY3RpdmVTdGVwKHNlbGVjdGVkU3RlcCk7XG4gIH1cblxuICBwdWJsaWMgaGVhZGVyQ2xpY2soZXZlbnQ6IGFueSwgc3RlcDogSVN0ZXApOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy9zdG9wIHByb2Nlc3NpbmcgY3VycmVudCBoZWFkZXIgY2xpY2sgZXZlbnRcbiAgICB0aGlzLl9oZWFkZXJDbGljay5lbWl0KHN0ZXApO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRTdGVwTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlU3RlcC5sYWJlbDtcbiAgfVxuXG4gIGdldCBjdXJyZW50U3ViU3RlcExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcD8ubGFiZWw7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2ZVRhYkhhc1N1YlN0ZXBzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzICYmIHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgaXNGaXJzdFN1YlN0ZXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCA9PT0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwc1swXTtcbiAgfVxuXG4gIHByaXZhdGUgaXNMYXN0U3ViU3RlcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwID09PSB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzW3RoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHMubGVuZ3RoIC0gMV07XG4gIH1cblxuICBwcml2YXRlIGlzQW55UHJldmlvdXNTdGVwRW5hYmxlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGlkLWJsYWNrbGlzdFxuICAgIHJldHVybiB0aGlzLl9zdGVwcy5zbGljZSgwLCBpbmRleCkuZmluZChzdGVwID0+IHN0ZXAuZW5hYmxlZCkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbnlGb2xsb3dpbmdTdGVwRW5hYmxlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGlkLWJsYWNrbGlzdFxuICAgIHJldHVybiB0aGlzLl9zdGVwcy5zbGljZShpbmRleCArIDEsIHRoaXMuX3N0ZXBzLmxlbmd0aCkuZmluZChzdGVwID0+IHN0ZXAuZW5hYmxlZCkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFByZXZpb3VzRW5hYmxlZFN0ZXAoKTogSVN0ZXAge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICByZXR1cm4gdGhpcy5fc3RlcHNcbiAgICAgIC5zbGljZSgwLCBpbmRleClcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5maW5kKHN0ZXAgPT4gc3RlcC5lbmFibGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZE5leHRFbmFibGVkU3RlcCgpOiBJU3RlcCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEN1cnJlbnRJbmRleCgpO1xuICAgIHJldHVybiB0aGlzLl9zdGVwcy5zbGljZShpbmRleCArIDEsIHRoaXMuX3N0ZXBzLmxlbmd0aCkuZmluZChzdGVwID0+IHN0ZXAuZW5hYmxlZCk7XG4gIH1cbn1cbiJdfQ==
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd2Jhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWF0ZXJpYWwtYWRkb25zL21hdGVyaWFsLWFkZG9ucy9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjLyIsInNvdXJjZXMiOlsibGliL2Zsb3diYXIvZmxvd2Jhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQWN0RCxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBUWtCLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFFVCxzQkFBaUIsR0FBd0IsSUFBSSxZQUFZLENBQVEsSUFBSSxDQUFDLENBQUM7UUFDbkc7Ozs7V0FJRztRQUNvQixpQkFBWSxHQUF3QixJQUFJLFlBQVksQ0FBUSxJQUFJLENBQUMsQ0FBQztJQW9MM0YsQ0FBQztJQWpMQyxRQUFRO1FBQ04scUdBQXFHO1FBQ3JHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQiwwRUFBMEU7Z0JBQzFFLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFB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QUFhO1FBQzdDLHdDQUF3QztRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssU0FBUyxDQUFDO0lBQ25HLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDZixLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQzthQUNmLE9BQU8sRUFBRTthQUNULElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckYsQ0FBQzs7O1lBbk1GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsNGtCQUF1Qzs7YUFFeEM7OztzQkFFRSxTQUFTLFNBQUMsU0FBUztxQkFFbkIsS0FBSyxTQUFDLE9BQU87MEJBQ2IsS0FBSyxTQUFDLFlBQVk7Z0NBQ2xCLE1BQU0sU0FBQyxrQkFBa0I7MkJBTXpCLE1BQU0sU0FBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFN0ZXBwZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdGVwIHtcbiAgbGFiZWw6IHN0cmluZyxcbiAgZW5hYmxlZD86IGJvb2xlYW4sXG4gIHN1YlN0ZXBzPzogSVN0ZXBbXSxcbiAgYWN0aXZlU3ViU3RlcD86IElTdGVwXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hZC1mbG93YmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3diYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mbG93YmFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmxvd2JhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBwZXInKSBwcml2YXRlIHN0ZXBwZXI6IE1hdFN0ZXBwZXI7XG5cbiAgQElucHV0KCdzdGVwcycpIF9zdGVwczogSVN0ZXBbXSA9IFtdO1xuICBASW5wdXQoJ2FjdGl2ZVN0ZXAnKSBfYWN0aXZlU3RlcDogSVN0ZXA7XG4gIEBPdXRwdXQoJ2FjdGl2ZVN0ZXBDaGFuZ2UnKSBfYWN0aXZlU3RlcENoYW5nZTogRXZlbnRFbWl0dGVyPElTdGVwPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVN0ZXA+KHRydWUpO1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgc3RlcCBoZWFkZXIgaXMgY2xpY2tlZC5cbiAgICogV2hlbiBkZWZpbmVkIGhlYWRlciBuYXZpZ2F0aW9uIGhhcyB0byBiZSBpbXBsZW1lbnRlZCBwcm9ncmFtbWF0aWNhbGx5LlxuICAgKiBlLmcuIHtAc2VlIGNoYW5nZUFjdGl2ZVN0ZXBPbkhlYWRlcn1cbiAgICovXG4gIEBPdXRwdXQoJ2hlYWRlckNsaWNrJykgX2hlYWRlckNsaWNrOiBFdmVudEVtaXR0ZXI8SVN0ZXA+ID0gbmV3IEV2ZW50RW1pdHRlcjxJU3RlcD4odHJ1ZSk7XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBJZiBubyBhY3RpdmUgc3RlcCBpcyBzZXQgYXMgaW5wdXQgb3IgdGhlIGFjdGl2ZSBzdGVwIGlzIG5vdCBlbmFibGVkLCBzZWxlY3QgdGhlIGZpcnN0IGVuYWJsZWQgc3RlcFxuICAgIGlmICghdGhpcy5fYWN0aXZlU3RlcCB8fCAhdGhpcy5fYWN0aXZlU3RlcC5lbmFibGVkKSB7XG4gICAgICB0aGlzLl9hY3RpdmVTdGVwID0gdGhpcy5fc3RlcHMuZmluZChzdGVwID0+IHtcbiAgICAgICAgcmV0dXJuIHN0ZXAuZW5hYmxlZDtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMuX2FjdGl2ZVN0ZXApIHtcbiAgICAgICAgLy8gSWYgc3ViIHN0ZXBzIGV4aXN0IHRoZW4gc2V0IHRoZSBmaXJzdCBub24gZGlzYWJsZWQgc3ViIHN0ZXAgcGVyIGRlZmF1bHRcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlVGFiSGFzU3ViU3RlcHMoKSkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCA9IHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHMuZmluZChzdGVwID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwLmVuYWJsZWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYWN0aXZlU3RlcENoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZVN0ZXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnN0ZXBwZXIuX2dldEluZGljYXRvclR5cGUgPSAoKSA9PiAnbnVtYmVyJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRJbmRleEZvckFjdGl2ZVN0ZXAoKTogbnVtYmVyIHtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5fc3RlcHMuaW5kZXhPZih0aGlzLl9hY3RpdmVTdGVwKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA9PT0gLTEgPyAwIDogc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VBY3RpdmVTdGVwKHN0ZXA6IElTdGVwKTogdm9pZCB7XG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9IHRoaXMuX3N0ZXBzLmluZGV4T2YodGhpcy5fYWN0aXZlU3RlcCk7XG4gICAgdGhpcy5fYWN0aXZlU3RlcCA9IHN0ZXA7XG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiSGFzU3ViU3RlcHMoKSkge1xuICAgICAgaWYgKHByZXZpb3VzSW5kZXggPCB0aGlzLl9zdGVwcy5pbmRleE9mKHRoaXMuX2FjdGl2ZVN0ZXApKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCA9IHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHNbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXAgPSB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzW3RoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHMubGVuZ3RoIC0gMV07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZVN0ZXBDaGFuZ2UuZW1pdCh0aGlzLl9hY3RpdmVTdGVwKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VBY3RpdmVTdGVwT25IZWFkZXIoc3RlcDogSVN0ZXApOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwSW5kZXggPSB0aGlzLl9zdGVwcy5pbmRleE9mKHN0ZXApO1xuICAgIHRoaXMuX2FjdGl2ZVN0ZXAgPSBzdGVwO1xuICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZCA9IHRoaXMuc3RlcHBlci5fc3RlcHMuZmluZCgoXywgaSkgPT4gaSA9PT0gc3RlcEluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VBY3RpdmVTdWJTdGVwKHN1YlN0ZXA6IElTdGVwKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwID0gc3ViU3RlcDtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2aW91cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1ByZXZpb3VzQXZhaWxhYmxlKCkpIHtcbiAgICAgIC8vIElmIGFjdGl2ZSBzdGVwIGhhcyBubyBzdWIgc3RlcHMgb3IgZmlyc3Qgc3ViIHN0ZXAgaXMgc2VsZWN0ZWQgLT4gZ28gdG8gcHJldmlvdXMgbWFpbiBzdGVwXG4gICAgICBpZiAoIXRoaXMuYWN0aXZlVGFiSGFzU3ViU3RlcHMoKSB8fCB0aGlzLmlzRmlyc3RTdWJTdGVwKCkpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNFbmFibGVkU3RlcCA9IHRoaXMuZmluZFByZXZpb3VzRW5hYmxlZFN0ZXAoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VBY3RpdmVTdGVwKHByZXZpb3VzRW5hYmxlZFN0ZXApO1xuICAgICAgICB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9IHRoaXMuX3N0ZXBzLmluZGV4T2YocHJldmlvdXNFbmFibGVkU3RlcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdWJTdGVwSW5kZXggPSB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzLmluZGV4T2YodGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlU3RlcC5hY3RpdmVTdWJTdGVwID0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwc1tzdWJTdGVwSW5kZXggLSAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc05leHRBdmFpbGFibGUoKSkge1xuICAgICAgLy8gSWYgYWN0aXZlIHN0ZXAgaGFzIG5vIHN1YiBzdGVwcyBvciBsYXN0IHN1YiBzdGVwIGlzIHNlbGVjdGVkIC0+IGdvIHRvIG5leHQgbWFpbiBzdGVwXG4gICAgICBpZiAoIXRoaXMuYWN0aXZlVGFiSGFzU3ViU3RlcHMoKSB8fCB0aGlzLmlzTGFzdFN1YlN0ZXAoKSkge1xuICAgICAgICBjb25zdCBuZXh0RW5hYmxlZFN0ZXAgPSB0aGlzLmZpbmROZXh0RW5hYmxlZFN0ZXAoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VBY3RpdmVTdGVwKG5leHRFbmFibGVkU3RlcCk7XG4gICAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gdGhpcy5fc3RlcHMuaW5kZXhPZihuZXh0RW5hYmxlZFN0ZXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3ViU3RlcEluZGV4ID0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwcy5pbmRleE9mKHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCA9IHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHNbc3ViU3RlcEluZGV4ICsgMV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzUHJldmlvdXNBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZVN0ZXApIHtcbiAgICAgIGlmICghdGhpcy5hY3RpdmVUYWJIYXNTdWJTdGVwcygpIHx8IHRoaXMuaXNGaXJzdFN1YlN0ZXAoKSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0Q3VycmVudEluZGV4KCk7XG4gICAgICAgIHJldHVybiBpbmRleCA+IDAgJiYgdGhpcy5pc0FueVByZXZpb3VzU3RlcEVuYWJsZWQoaW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc05leHRBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZVN0ZXApIHtcbiAgICAgIGlmICghdGhpcy5hY3RpdmVUYWJIYXNTdWJTdGVwcygpIHx8IHRoaXMuaXNMYXN0U3ViU3RlcCgpKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICAgICAgcmV0dXJuIGluZGV4IDwgdGhpcy5fc3RlcHMubGVuZ3RoIC0gMSAmJiB0aGlzLmlzQW55Rm9sbG93aW5nU3RlcEVuYWJsZWQoaW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0xhc3RTdGVwKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmdldEN1cnJlbnRJbmRleCgpID09PSB0aGlzLl9zdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVUYWJIYXNTdWJTdGVwcygpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTGFzdFN1YlN0ZXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXBzLmZpbmRJbmRleCh2YWx1ZSA9PiB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHRoaXMuX2FjdGl2ZVN0ZXA7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudFN1YlN0ZXBJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzLmZpbmRJbmRleCh2YWx1ZSA9PiB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcDtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRTdGVwID0gdGhpcy5fc3RlcHNbdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXhdO1xuICAgIHRoaXMuY2hhbmdlQWN0aXZlU3RlcChzZWxlY3RlZFN0ZXApO1xuICB9XG5cbiAgcHVibGljIGhlYWRlckNsaWNrKGV2ZW50OiBhbnksIHN0ZXA6IElTdGVwKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vc3RvcCBwcm9jZXNzaW5nIGN1cnJlbnQgaGVhZGVyIGNsaWNrIGV2ZW50XG4gICAgdGhpcy5faGVhZGVyQ2xpY2suZW1pdChzdGVwKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50U3RlcExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVN0ZXAubGFiZWw7XG4gIH1cblxuICBnZXQgY3VycmVudFN1YlN0ZXBMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXA/LmxhYmVsO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVUYWJIYXNTdWJTdGVwcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwcyAmJiB0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIGlzRmlyc3RTdWJTdGVwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdGVwLmFjdGl2ZVN1YlN0ZXAgPT09IHRoaXMuX2FjdGl2ZVN0ZXAuc3ViU3RlcHNbMF07XG4gIH1cblxuICBwcml2YXRlIGlzTGFzdFN1YlN0ZXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVN0ZXAuYWN0aXZlU3ViU3RlcCA9PT0gdGhpcy5fYWN0aXZlU3RlcC5zdWJTdGVwc1t0aGlzLl9hY3RpdmVTdGVwLnN1YlN0ZXBzLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FueVByZXZpb3VzU3RlcEVuYWJsZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpZC1ibGFja2xpc3RcbiAgICByZXR1cm4gdGhpcy5fc3RlcHMuc2xpY2UoMCwgaW5kZXgpLmZpbmQoc3RlcCA9PiBzdGVwLmVuYWJsZWQpICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzQW55Rm9sbG93aW5nU3RlcEVuYWJsZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpZC1ibGFja2xpc3RcbiAgICByZXR1cm4gdGhpcy5fc3RlcHMuc2xpY2UoaW5kZXggKyAxLCB0aGlzLl9zdGVwcy5sZW5ndGgpLmZpbmQoc3RlcCA9PiBzdGVwLmVuYWJsZWQpICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQcmV2aW91c0VuYWJsZWRTdGVwKCk6IElTdGVwIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0Q3VycmVudEluZGV4KCk7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXBzXG4gICAgICAuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAucmV2ZXJzZSgpXG4gICAgICAuZmluZChzdGVwID0+IHN0ZXAuZW5hYmxlZCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmROZXh0RW5hYmxlZFN0ZXAoKTogSVN0ZXAge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICByZXR1cm4gdGhpcy5fc3RlcHMuc2xpY2UoaW5kZXggKyAxLCB0aGlzLl9zdGVwcy5sZW5ndGgpLmZpbmQoc3RlcCA9PiBzdGVwLmVuYWJsZWQpO1xuICB9XG59XG4iXX0=
|