@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.
Files changed (33) hide show
  1. package/README.md +7 -7
  2. package/esm2022/index.mjs +9 -0
  3. package/{esm2020 → esm2022}/magic-xpa-angular-material-core.mjs +1 -1
  4. package/{esm2020 → esm2022}/src/angular-material.module.mjs +83 -83
  5. package/esm2022/src/components/base-mat-table-magic.component.mjs +62 -0
  6. package/esm2022/src/directives/magic/form-controls/mat-magic-autocomplete.directive.mjs +28 -0
  7. package/esm2022/src/directives/magic/form-controls/mat-magic-checkbox.directive.mjs +101 -0
  8. package/esm2022/src/directives/magic/form-controls/mat-magic-combobox.directive.mjs +30 -0
  9. package/esm2022/src/directives/magic/form-controls/mat-magic-listbox.directive.mjs +27 -0
  10. package/{esm2020 → esm2022}/src/services/mat.magic.providers.mjs +6 -6
  11. package/esm2022/src/services/mattable.magic.service.mjs +138 -0
  12. package/{fesm2020 → fesm2022}/magic-xpa-angular-material-core.mjs +409 -307
  13. package/fesm2022/magic-xpa-angular-material-core.mjs.map +1 -0
  14. package/index.d.ts +8 -8
  15. package/package.json +10 -16
  16. package/src/angular-material.module.d.ts +26 -26
  17. package/src/components/base-mat-table-magic.component.d.ts +19 -19
  18. package/src/directives/magic/form-controls/mat-magic-autocomplete.directive.d.ts +7 -7
  19. package/src/directives/magic/form-controls/mat-magic-checkbox.directive.d.ts +23 -6
  20. package/src/directives/magic/form-controls/mat-magic-combobox.directive.d.ts +9 -9
  21. package/src/directives/magic/form-controls/mat-magic-listbox.directive.d.ts +9 -9
  22. package/src/services/mat.magic.providers.d.ts +38 -38
  23. package/src/services/mattable.magic.service.d.ts +36 -36
  24. package/esm2020/index.mjs +0 -9
  25. package/esm2020/src/components/base-mat-table-magic.component.mjs +0 -54
  26. package/esm2020/src/directives/magic/form-controls/mat-magic-autocomplete.directive.mjs +0 -28
  27. package/esm2020/src/directives/magic/form-controls/mat-magic-checkbox.directive.mjs +0 -16
  28. package/esm2020/src/directives/magic/form-controls/mat-magic-combobox.directive.mjs +0 -30
  29. package/esm2020/src/directives/magic/form-controls/mat-magic-listbox.directive.mjs +0 -26
  30. package/esm2020/src/services/mattable.magic.service.mjs +0 -127
  31. package/fesm2015/magic-xpa-angular-material-core.mjs +0 -367
  32. package/fesm2015/magic-xpa-angular-material-core.mjs.map +0 -1
  33. 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==