@magic-xpa/angular-material-core 4.1100.0-dev4110.99 → 4.1101.0-dev4111.269
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/esm2022/index.mjs +9 -0
- package/{esm2020 → esm2022}/magic-xpa-angular-material-core.mjs +1 -1
- package/{esm2020 → esm2022}/src/angular-material.module.mjs +83 -83
- package/esm2022/src/components/base-mat-table-magic.component.mjs +62 -0
- package/esm2022/src/directives/magic/form-controls/mat-magic-autocomplete.directive.mjs +28 -0
- package/esm2022/src/directives/magic/form-controls/mat-magic-checkbox.directive.mjs +101 -0
- package/esm2022/src/directives/magic/form-controls/mat-magic-combobox.directive.mjs +30 -0
- package/esm2022/src/directives/magic/form-controls/mat-magic-listbox.directive.mjs +27 -0
- package/{esm2020 → esm2022}/src/services/mat.magic.providers.mjs +6 -6
- package/esm2022/src/services/mattable.magic.service.mjs +138 -0
- package/{fesm2020 → fesm2022}/magic-xpa-angular-material-core.mjs +409 -307
- package/fesm2022/magic-xpa-angular-material-core.mjs.map +1 -0
- package/index.d.ts +8 -8
- package/package.json +10 -16
- package/src/angular-material.module.d.ts +26 -26
- package/src/components/base-mat-table-magic.component.d.ts +19 -19
- package/src/directives/magic/form-controls/mat-magic-autocomplete.directive.d.ts +7 -7
- package/src/directives/magic/form-controls/mat-magic-checkbox.directive.d.ts +23 -6
- package/src/directives/magic/form-controls/mat-magic-combobox.directive.d.ts +9 -9
- package/src/directives/magic/form-controls/mat-magic-listbox.directive.d.ts +9 -9
- package/src/services/mat.magic.providers.d.ts +38 -38
- package/src/services/mattable.magic.service.d.ts +36 -36
- package/esm2020/index.mjs +0 -9
- package/esm2020/src/components/base-mat-table-magic.component.mjs +0 -54
- package/esm2020/src/directives/magic/form-controls/mat-magic-autocomplete.directive.mjs +0 -28
- package/esm2020/src/directives/magic/form-controls/mat-magic-checkbox.directive.mjs +0 -16
- package/esm2020/src/directives/magic/form-controls/mat-magic-combobox.directive.mjs +0 -30
- package/esm2020/src/directives/magic/form-controls/mat-magic-listbox.directive.mjs +0 -26
- package/esm2020/src/services/mattable.magic.service.mjs +0 -127
- package/fesm2015/magic-xpa-angular-material-core.mjs +0 -367
- package/fesm2015/magic-xpa-angular-material-core.mjs.map +0 -1
- package/fesm2020/magic-xpa-angular-material-core.mjs.map +0 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { TaskMagicService, ComponentListMagicService } from "@magic-xpa/angular";
|
|
3
|
+
import { getGuiEventObj } from "@magic-xpa/engine";
|
|
4
|
+
import { TableMagicService } from "@magic-xpa/angular";
|
|
5
|
+
import { isNullOrUndefined } from "@magic-xpa/mscorelib";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@magic-xpa/angular";
|
|
8
|
+
export class MgMatTableService extends TableMagicService {
|
|
9
|
+
componentList;
|
|
10
|
+
task;
|
|
11
|
+
dataSource;
|
|
12
|
+
get DataSource() {
|
|
13
|
+
return this.dataSource;
|
|
14
|
+
}
|
|
15
|
+
set DataSource(dataSource) {
|
|
16
|
+
this.dataSource = dataSource;
|
|
17
|
+
}
|
|
18
|
+
selection;
|
|
19
|
+
get Selection() {
|
|
20
|
+
return this.selection;
|
|
21
|
+
}
|
|
22
|
+
set Selection(selection) {
|
|
23
|
+
this.selection = selection;
|
|
24
|
+
}
|
|
25
|
+
paginator;
|
|
26
|
+
get Paginator() {
|
|
27
|
+
return this.paginator;
|
|
28
|
+
}
|
|
29
|
+
set Paginator(paginator) {
|
|
30
|
+
this.paginator = paginator;
|
|
31
|
+
}
|
|
32
|
+
constructor(componentList, task) {
|
|
33
|
+
super(componentList, task);
|
|
34
|
+
this.componentList = componentList;
|
|
35
|
+
this.task = task;
|
|
36
|
+
}
|
|
37
|
+
connect(dataSource, paginator, selection) {
|
|
38
|
+
this.dataSource = dataSource;
|
|
39
|
+
this.paginator = paginator;
|
|
40
|
+
this.selection = selection;
|
|
41
|
+
}
|
|
42
|
+
refreshDataSource() {
|
|
43
|
+
if (!isNullOrUndefined(this.paginator))
|
|
44
|
+
this.dataSource.paginator = this.paginator;
|
|
45
|
+
this.dataSource.data = (this.task.mgAccessorService.isDataviewEmpty() ? [] : this.task.Records.list);
|
|
46
|
+
}
|
|
47
|
+
getPageSize() {
|
|
48
|
+
if (isNullOrUndefined(this.paginator))
|
|
49
|
+
return 10;
|
|
50
|
+
return this.paginator.pageSize;
|
|
51
|
+
}
|
|
52
|
+
selectRow(guiRowid) {
|
|
53
|
+
super.selectRow(guiRowid);
|
|
54
|
+
this.selection.select(this.task.Records.list[guiRowid]);
|
|
55
|
+
this.refreshDataSource();
|
|
56
|
+
}
|
|
57
|
+
selectPage(pageId) {
|
|
58
|
+
if (!isNullOrUndefined(this.paginator))
|
|
59
|
+
this.paginator.pageIndex = pageId;
|
|
60
|
+
this.refreshDataSource();
|
|
61
|
+
}
|
|
62
|
+
selectedRow() {
|
|
63
|
+
return this.selection.selected[0];
|
|
64
|
+
}
|
|
65
|
+
mgOnPaginateChange(e, changeSelectedRow) {
|
|
66
|
+
if (this.task.oldPageSize != e.pageSize) {
|
|
67
|
+
this.handleResize(e.pageIndex, e.previousPageIndex, e.pageSize);
|
|
68
|
+
this.task.oldPageSize = e.pageSize;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
if (changeSelectedRow) {
|
|
72
|
+
let evt;
|
|
73
|
+
if (e.pageIndex > e.previousPageIndex) {
|
|
74
|
+
evt = (e.pageIndex - e.previousPageIndex === 1) ? "next-page" : "end-table";
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
evt = (e.previousPageIndex - e.pageIndex === 1) ? "previous-page" : "begin-table";
|
|
78
|
+
}
|
|
79
|
+
let guiEvent = getGuiEventObj("navigateInTable", "magicRow", 0);
|
|
80
|
+
guiEvent.Value = evt;
|
|
81
|
+
this.task.insertEvent(guiEvent);
|
|
82
|
+
}
|
|
83
|
+
else
|
|
84
|
+
this.getRowsIfNeeded(e.pageIndex, e.previousPageIndex, e.pageSize);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
handleResize(pageIndex, prevPageIndex, pageSize) {
|
|
88
|
+
let requiredGuiRowId = pageIndex * pageSize;
|
|
89
|
+
this.task.resize(pageSize, requiredGuiRowId);
|
|
90
|
+
}
|
|
91
|
+
getRowsIfNeeded(pageIndex, prevPageIndex, pageSize) {
|
|
92
|
+
let guiEvent = getGuiEventObj("getRows", "", 0);
|
|
93
|
+
guiEvent.Line = pageIndex * pageSize;
|
|
94
|
+
this.task.insertEvent(guiEvent);
|
|
95
|
+
this.setTableTopIndex(this.task.getDvRowId(pageSize * pageIndex));
|
|
96
|
+
}
|
|
97
|
+
sortData(e) {
|
|
98
|
+
let direction = 0;
|
|
99
|
+
if (e.direction === 'asc')
|
|
100
|
+
direction = 0;
|
|
101
|
+
else if (e.direction === 'desc')
|
|
102
|
+
direction = 1;
|
|
103
|
+
let guiEvent = getGuiEventObj("columnSort", e.active, direction);
|
|
104
|
+
this.task.insertEvent(guiEvent);
|
|
105
|
+
}
|
|
106
|
+
updateTableSize(size) {
|
|
107
|
+
if (size === 0) {
|
|
108
|
+
size = 1;
|
|
109
|
+
this.task.Records.clearFirstTableRecord(this.task.template);
|
|
110
|
+
}
|
|
111
|
+
else if (isNullOrUndefined(this.paginator))
|
|
112
|
+
size = this.getPageSize();
|
|
113
|
+
this.task.formGroups.length = size;
|
|
114
|
+
this.task.Records.updateSize(size);
|
|
115
|
+
this.task.setIncludesFirst(false);
|
|
116
|
+
}
|
|
117
|
+
selectPageForGuiRowId(guiRowId) {
|
|
118
|
+
let pageToBeSelected = 0;
|
|
119
|
+
let prevSelectedRow = this.selectedRow();
|
|
120
|
+
pageToBeSelected = Math.floor(guiRowId / this.getPageSize());
|
|
121
|
+
if ((isNullOrUndefined(prevSelectedRow) || (!isNullOrUndefined(this.paginator) && pageToBeSelected != this.paginator.pageIndex)))
|
|
122
|
+
this.selectPage(pageToBeSelected);
|
|
123
|
+
}
|
|
124
|
+
setTableTopIndex(value) {
|
|
125
|
+
this.task.Records.setGuiTopIndex(value);
|
|
126
|
+
if (value >= 0)
|
|
127
|
+
this.selectPageForGuiRowId(this.task.getGuiRowId(value, true));
|
|
128
|
+
}
|
|
129
|
+
getTableTopIndex() {
|
|
130
|
+
return this.task.Records.getGuiTopIndex();
|
|
131
|
+
}
|
|
132
|
+
static ɵfac = function MgMatTableService_Factory(t) { return new (t || MgMatTableService)(i0.ɵɵinject(i1.ComponentListMagicService), i0.ɵɵinject(i1.TaskMagicService)); };
|
|
133
|
+
static ɵprov = i0.ɵɵdefineInjectable({ token: MgMatTableService, factory: MgMatTableService.ɵfac });
|
|
134
|
+
}
|
|
135
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MgMatTableService, [{
|
|
136
|
+
type: Injectable
|
|
137
|
+
}], () => [{ type: i1.ComponentListMagicService }, { type: i1.TaskMagicService }], null); })();
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGFibGUubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItbWF0ZXJpYWwtY29yZS9zcmMvc2VydmljZXMvbWF0dGFibGUubWFnaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRyxPQUFPLEVBQVksY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7OztBQVN2RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsaUJBQWlCO0lBNkRoQztJQUFvRDtJQXpEMUUsVUFBVSxDQUE4QjtJQUt4QyxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUtELElBQUksVUFBVSxDQUFDLFVBQXVDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFLRCxTQUFTLENBQTBCO0lBS25DLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBS0QsSUFBSSxTQUFTLENBQUMsU0FBa0M7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUtELFNBQVMsQ0FBZTtJQUt4QixJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUtELElBQUksU0FBUyxDQUFDLFNBQXVCO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lB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O0lBQ3RDLENBQUM7SUFLRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4QyxJQUFJLEtBQUssSUFBSSxDQUFDO1lBQ1osSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFLRCxnQkFBZ0I7UUFFZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzVDLENBQUM7MkVBclBVLGlCQUFpQjtrREFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQjs7aUZBQWpCLGlCQUFpQjtjQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcblxuaW1wb3J0IHsgVGFza01hZ2ljU2VydmljZSwgQ29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSwgQ29udHJvbHNNZXRhZGF0YSB9IGZyb20gXCJAbWFnaWMteHBhL2FuZ3VsYXJcIjtcbmltcG9ydCB7SUd1aUV2ZW50LCBnZXRHdWlFdmVudE9ian0gZnJvbSBcIkBtYWdpYy14cGEvZW5naW5lXCI7XG5pbXBvcnQgeyBUYWJsZU1hZ2ljU2VydmljZSB9IGZyb20gXCJAbWFnaWMteHBhL2FuZ3VsYXJcIjtcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcblxuXG4vKipcbiAqIEV4dGVuZHMgdGhlIE1hZ2ljIHRhYmxlIHNlcnZpY2UgdG8gc3VwcGx5IGZ1bmN0aW9uYWxpdHkgZm9yIE1hdGVyaWFsIERlc2lnbiB0YWJsZXNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1nTWF0VGFibGVTZXJ2aWNlIGV4dGVuZHMgVGFibGVNYWdpY1NlcnZpY2Uge1xuICAvKipcbiAgICogVGFibGUgZGF0YSBzb3VyY2VcbiAgICovXG4gIGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxFbGVtZW50PjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZ2V0IERhdGFTb3VyY2UoKTogTWF0VGFibGVEYXRhU291cmNlPEVsZW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHNldCBEYXRhU291cmNlKGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxFbGVtZW50Pikge1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZXMgc2VsZWN0aW9uIG9wdGlvbnMgZm9yIHRoZSB0YWJsZVxuICAgKi9cbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxFbGVtZW50PjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZ2V0IFNlbGVjdGlvbigpOiBTZWxlY3Rpb25Nb2RlbDxFbGVtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHNldCBTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxFbGVtZW50Pikge1xuICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhZ2luYXRvciB0byBlbmFibGUgY2hhbmdpbmcgcGFnZXMgaW4gdGhlIHRhYmxlXG4gICAqL1xuICBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZ2V0IFBhZ2luYXRvcigpOiBNYXRQYWdpbmF0b3Ige1xuICAgIHJldHVybiB0aGlzLnBhZ2luYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzZXQgUGFnaW5hdG9yKHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yKSB7XG4gICAgdGhpcy5wYWdpbmF0b3IgPSBwYWdpbmF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbXBvbmVudExpc3Q6IENvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UsIHByb3RlY3RlZCB0YXNrOiBUYXNrTWFnaWNTZXJ2aWNlICkge1xuICAgIHN1cGVyKGNvbXBvbmVudExpc3QsIHRhc2spO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBzZXJ2aWNlIHRvIHRoZSBlbGVtZW50cyBvZiB0aGUgdGFibGUgY29tcG9uZW50XG4gICAqIEBwYXJhbSBkYXRhU291cmNlIFRhYmxlIGRhdGEgc291cmNlXG4gICAqIEBwYXJhbSBwYWdpbmF0b3IgVGFibGUgcGFnaW5hdG9yXG4gICAqIEBwYXJhbSBzZWxlY3Rpb24gdGFibGUgU2VsZWN0aW9uTW9kZWxcbiAgICovXG4gIGNvbm5lY3QoZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPEVsZW1lbnQ+ICwgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IsIHNlbGVjdGlvbjogU2VsZWN0aW9uTW9kZWw8RWxlbWVudD4pIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIHRoaXMucGFnaW5hdG9yID0gcGFnaW5hdG9yO1xuICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHJlZnJlc2hEYXRhU291cmNlKCkge1xuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGhpcy5wYWdpbmF0b3IpKVxuICAgICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSAodGhpcy50YXNrLm1nQWNjZXNzb3JTZXJ2aWNlLmlzRGF0YXZpZXdFbXB0eSgpID8gW10gOiB0aGlzLnRhc2suUmVjb3Jkcy5saXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIHRoZSBwYWdlIHNpemUgb2YgdGhlIHRhYmxlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRQYWdlU2l6ZSgpOiBudW1iZXIge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLnBhZ2luYXRvcikpXG4gICAgICByZXR1cm4gMTA7XG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSB0YWJsZSByb3dcbiAgICogQHBhcmFtIGd1aVJvd2lkIElkIG9mIHJvdyB0byBiZSBzZWxlY3RlZFxuICAgKi9cbiAgc2VsZWN0Um93KGd1aVJvd2lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzdXBlci5zZWxlY3RSb3coZ3VpUm93aWQpO1xuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCh0aGlzLnRhc2suUmVjb3Jkcy5saXN0W2d1aVJvd2lkXSk7XG4gICAgdGhpcy5yZWZyZXNoRGF0YVNvdXJjZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIHRoZSByZXF1ZXN0ZWQgdGFibGUgcGFnZVxuICAgKiBAcGFyYW0gcGFnZUlkIElkIG9mIHBhZ2UgdG8gYmUgc2VsZWN0ZWRcbiAgICovXG4gIHNlbGVjdFBhZ2UocGFnZUlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMucGFnaW5hdG9yKSlcbiAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IHBhZ2VJZDtcblxuICAgIHRoaXMucmVmcmVzaERhdGFTb3VyY2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50bHkgc2VsZXRlZCByb3dcbiAgICogQHJldHVybnNcbiAgICovXG4gIHNlbGVjdGVkUm93KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcGFnaW5hdG9yJ3MgXCJwYWdlXCIgZXZlbnRcbiAgICogQHBhcmFtIGUgVGhlIGV2ZW50IHJlY2VpdmVkIGZyb20gdGhlIFVJXG4gICAqIEBwYXJhbSBjaGFuZ2VTZWxlY3RlZFJvdyBUaGUgZmxhZyB0cnVlIG9yIGZhbHNlIHRvIGluZGljYXRlIGNoYW5nZSB0aGUgcm93XG4gICAqL1xuICBtZ09uUGFnaW5hdGVDaGFuZ2UoZSwgY2hhbmdlU2VsZWN0ZWRSb3c/OiBib29sZWFuKVxuICB7XG4gICAgaWYgKHRoaXMudGFzay5vbGRQYWdlU2l6ZSAhPSBlLnBhZ2VTaXplKSB7XG4gICAgICB0aGlzLmhhbmRsZVJlc2l6ZShlLnBhZ2VJbmRleCwgZS5wcmV2aW91c1BhZ2VJbmRleCwgZS5wYWdlU2l6ZSk7XG4gICAgICB0aGlzLnRhc2sub2xkUGFnZVNpemUgPSBlLnBhZ2VTaXplO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaGFuZ2VTZWxlY3RlZFJvdylcbiAgICAgIHtcbiAgICAgICAgbGV0IGV2dDogc3RyaW5nO1xuICAgICAgICBpZiAoZS5wYWdlSW5kZXggPiBlLnByZXZpb3VzUGFnZUluZGV4KSB7XG4gICAgICAgICAgZXZ0ID0gKGUucGFnZUluZGV4IC0gZS5wcmV2aW91c1BhZ2VJbmRleCA9PT0gMSkgPyBcIm5leHQtcGFnZVwiIDogXCJlbmQtdGFibGVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBldnQgPSAoZS5wcmV2aW91c1BhZ2VJbmRleCAtIGUucGFnZUluZGV4ID09PSAxKSA/IFwicHJldmlvdXMtcGFnZVwiIDogXCJiZWdpbi10YWJsZVwiO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGd1aUV2ZW50OiBJR3VpRXZlbnQgPSBnZXRHdWlFdmVudE9iaihcIm5hdmlnYXRlSW5UYWJsZVwiLCBcIm1hZ2ljUm93XCIsMCk7XG4gICAgICAgIGd1aUV2ZW50LlZhbHVlID0gZXZ0O1xuICAgICAgICB0aGlzLnRhc2suaW5zZXJ0RXZlbnQoZ3VpRXZlbnQpO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAgICB0aGlzLmdldFJvd3NJZk5lZWRlZChlLnBhZ2VJbmRleCwgZS5wcmV2aW91c1BhZ2VJbmRleCwgZS5wYWdlU2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSByZXNpemUgYW5kIHNldCB0YWJsZSB0b3AgaW5kZXguXG4gICAqIEBwYXJhbSBwYWdlSW5kZXggOiBOZXcgcGFnZSBpbmRleC5cbiAgICogQHBhcmFtIHByZXZQYWdlSW5kZXggOiBQcmV2IHBhZ2UgaW5kZXhcbiAgICogQHBhcmFtIHBhZ2VTaXplIDogUGFnZVNpemVcbiAgICovXG4gIGhhbmRsZVJlc2l6ZShwYWdlSW5kZXg6IG51bWJlciwgcHJldlBhZ2VJbmRleDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IHJlcXVpcmVkR3VpUm93SWQgPSBwYWdlSW5kZXggKiBwYWdlU2l6ZTtcbiAgICB0aGlzLnRhc2sucmVzaXplKHBhZ2VTaXplLCByZXF1aXJlZEd1aVJvd0lkKTtcbiAgICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgZ2V0Um93cyB0byBmZXRjaCByZXF1aXJlZCBjaHVuayBvZiByZWNvcmRzLlxuICAgKiBAcGFyYW0gcGFnZUluZGV4IDogTmV3IHBhZ2UgaW5kZXguXG4gICAqIEBwYXJhbSBwcmV2UGFnZUluZGV4IDogUHJldiBwYWdlIGluZGV4XG4gICAqIEBwYXJhbSBwYWdlU2l6ZSA6IFBhZ2VTaXplXG4gICAqL1xuICBnZXRSb3dzSWZOZWVkZWQocGFnZUluZGV4OiBudW1iZXIsIHByZXZQYWdlSW5kZXg6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBndWlFdmVudDogSUd1aUV2ZW50ID0gZ2V0R3VpRXZlbnRPYmooXCJnZXRSb3dzXCIsIFwiXCIsMCk7XG4gICAgZ3VpRXZlbnQuTGluZSA9IHBhZ2VJbmRleCAqIHBhZ2VTaXplO1xuICAgIHRoaXMudGFzay5pbnNlcnRFdmVudChndWlFdmVudCk7XG4gICAgdGhpcy5zZXRUYWJsZVRvcEluZGV4KHRoaXMudGFzay5nZXREdlJvd0lkKHBhZ2VTaXplICogcGFnZUluZGV4KSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgXCJtYXRTb3J0Q2hhbmdlXCIgZXZlbnRcbiAgICogQHBhcmFtIGUgVGhlIGV2ZW50IHJlY2VpdmVkIGZyb20gdGhlIFVJXG4gICAqL1xuICBzb3J0RGF0YShlKSB7XG4gICAgbGV0IGRpcmVjdGlvbjogbnVtYmVyID0gMDtcbiAgICBpZiAoZS5kaXJlY3Rpb24gPT09ICdhc2MnKVxuICAgICAgZGlyZWN0aW9uID0gMDtcbiAgICBlbHNlIGlmIChlLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnKVxuICAgICAgZGlyZWN0aW9uID0gMTtcblxuICAgIGxldCBndWlFdmVudDogSUd1aUV2ZW50ID0gZ2V0R3VpRXZlbnRPYmooXCJjb2x1bW5Tb3J0XCIsIGUuYWN0aXZlLCBkaXJlY3Rpb24pO1xuICAgIHRoaXMudGFzay5pbnNlcnRFdmVudChndWlFdmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBudW1iZXIgb2YgbGluZXMgaW4gYSB0YWJsZVxuICAgKiBAcGFyYW0gIHNpemUgTmV3IG51bWJlciBvZiBsaW5lcyBpbiB0YWJsZVxuICAgKi9cbiAgdXBkYXRlVGFibGVTaXplKHNpemU6IG51bWJlcikge1xuICAgIGlmIChzaXplID09PSAwKSAvLyBuZXZlciByZW1vdmUgcm93IDAgZm9yIG5vd1xuICAgIHtcbiAgICAgICBzaXplID0gMTtcbiAgICAgICB0aGlzLnRhc2suUmVjb3Jkcy5jbGVhckZpcnN0VGFibGVSZWNvcmQodGhpcy50YXNrLnRlbXBsYXRlKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLnBhZ2luYXRvcikpXG4gICAgICAgc2l6ZSA9IHRoaXMuZ2V0UGFnZVNpemUoKTtcblxuICAgIHRoaXMudGFzay5mb3JtR3JvdXBzLmxlbmd0aCA9IHNpemU7XG4gICAgdGhpcy50YXNrLlJlY29yZHMudXBkYXRlU2l6ZShzaXplKTtcbiAgICB0aGlzLnRhc2suc2V0SW5jbHVkZXNGaXJzdChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBzZWxlY3Rpb24gb2Ygcm93IGFuZCBpZiBuZWVkZWQgbW92ZSB0byByZXNwZWN0aXZlIHBhZ2UuXG4gICAqIEBwYXJhbSAgZ3VpUm93SWQgTmV3IG51bWJlciBvZiBsaW5lcyBpbiB0YWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIHNlbGVjdFBhZ2VGb3JHdWlSb3dJZChndWlSb3dJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IHBhZ2VUb0JlU2VsZWN0ZWQ6IG51bWJlciA9IDA7XG4gICAgbGV0IHByZXZTZWxlY3RlZFJvdzogQ29udHJvbHNNZXRhZGF0YSA9IDxDb250cm9sc01ldGFkYXRhPnRoaXMuc2VsZWN0ZWRSb3coKTtcblxuICAgIHBhZ2VUb0JlU2VsZWN0ZWQgPSBNYXRoLmZsb29yKGd1aVJvd0lkIC8gdGhpcy5nZXRQYWdlU2l6ZSgpKTtcblxuICAgIC8vIEV4cGxpY2l0bHkgaGFuZGxlIHNlbGVjdGlvbiBvZiBwYWdlIHdoZW4gaXQncyBub3QgcmFpc2VkIGJ5IHVzaW5nIHBhZ2luYXRpb25cbiAgICBpZiAoKGlzTnVsbE9yVW5kZWZpbmVkKHByZXZTZWxlY3RlZFJvdykgfHwgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLnBhZ2luYXRvcikgJiYgcGFnZVRvQmVTZWxlY3RlZCAhPSB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXgpKSlcbiAgICAgIHRoaXMuc2VsZWN0UGFnZShwYWdlVG9CZVNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzZXRUYWJsZVRvcEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnRhc2suUmVjb3Jkcy5zZXRHdWlUb3BJbmRleCh2YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUgPj0gMClcbiAgICAgIHRoaXMuc2VsZWN0UGFnZUZvckd1aVJvd0lkKHRoaXMudGFzay5nZXRHdWlSb3dJZCh2YWx1ZSwgdHJ1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGdldFRhYmxlVG9wSW5kZXgoKTpudW1iZXJcbiAge1xuICAgIHJldHVybiB0aGlzLnRhc2suUmVjb3Jkcy5nZXRHdWlUb3BJbmRleCgpO1xuICB9XG59XG5cbiJdfQ==
|