@magic-xpa/angular-material-core 4.1000.0 → 4.1100.0-dev000.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.
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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O0lBQ3RDLENBQUM7SUFLRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4QyxJQUFJLEtBQUssSUFBSSxDQUFDO1lBQ1osSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFLRCxnQkFBZ0I7UUFFZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzVDLENBQUM7MkVBclBVLGlCQUFpQjtrREFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQjs7aUZBQWpCLGlCQUFpQjtjQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zXCI7XHJcblxyXG5pbXBvcnQgeyBUYXNrTWFnaWNTZXJ2aWNlLCBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLCBDb250cm9sc01ldGFkYXRhIH0gZnJvbSBcIkBtYWdpYy14cGEvYW5ndWxhclwiO1xyXG5pbXBvcnQge0lHdWlFdmVudCwgZ2V0R3VpRXZlbnRPYmp9IGZyb20gXCJAbWFnaWMteHBhL2VuZ2luZVwiO1xyXG5pbXBvcnQgeyBUYWJsZU1hZ2ljU2VydmljZSB9IGZyb20gXCJAbWFnaWMteHBhL2FuZ3VsYXJcIjtcclxuaW1wb3J0IHtpc051bGxPclVuZGVmaW5lZH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuXHJcblxyXG4vKipcclxuICogRXh0ZW5kcyB0aGUgTWFnaWMgdGFibGUgc2VydmljZSB0byBzdXBwbHkgZnVuY3Rpb25hbGl0eSBmb3IgTWF0ZXJpYWwgRGVzaWduIHRhYmxlc1xyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTWdNYXRUYWJsZVNlcnZpY2UgZXh0ZW5kcyBUYWJsZU1hZ2ljU2VydmljZSB7XHJcbiAgLyoqXHJcbiAgICogVGFibGUgZGF0YSBzb3VyY2VcclxuICAgKi9cclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8RWxlbWVudD47XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBnZXQgRGF0YVNvdXJjZSgpOiBNYXRUYWJsZURhdGFTb3VyY2U8RWxlbWVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBzZXQgRGF0YVNvdXJjZShkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8RWxlbWVudD4pIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm92aWRlcyBzZWxlY3Rpb24gb3B0aW9ucyBmb3IgdGhlIHRhYmxlXHJcbiAgICovXHJcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGdldCBTZWxlY3Rpb24oKTogU2VsZWN0aW9uTW9kZWw8RWxlbWVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHNldCBTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxFbGVtZW50Pikge1xyXG4gICAgdGhpcy5zZWxlY3Rpb24gPSBzZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYWdpbmF0b3IgdG8gZW5hYmxlIGNoYW5naW5nIHBhZ2VzIGluIHRoZSB0YWJsZVxyXG4gICAqL1xyXG4gIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgZ2V0IFBhZ2luYXRvcigpOiBNYXRQYWdpbmF0b3Ige1xyXG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdG9yO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHNldCBQYWdpbmF0b3IocGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IpIHtcclxuICAgIHRoaXMucGFnaW5hdG9yID0gcGFnaW5hdG9yO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjb21wb25lbnRMaXN0OiBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLCBwcm90ZWN0ZWQgdGFzazogVGFza01hZ2ljU2VydmljZSApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudExpc3QsIHRhc2spO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29ubmVjdHMgdGhlIHNlcnZpY2UgdG8gdGhlIGVsZW1lbnRzIG9mIHRoZSB0YWJsZSBjb21wb25lbnRcclxuICAgKiBAcGFyYW0gZGF0YVNvdXJjZSBUYWJsZSBkYXRhIHNvdXJjZVxyXG4gICAqIEBwYXJhbSBwYWdpbmF0b3IgVGFibGUgcGFnaW5hdG9yXHJcbiAgICogQHBhcmFtIHNlbGVjdGlvbiB0YWJsZSBTZWxlY3Rpb25Nb2RlbFxyXG4gICAqL1xyXG4gIGNvbm5lY3QoZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPEVsZW1lbnQ+ICwgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IsIHNlbGVjdGlvbjogU2VsZWN0aW9uTW9kZWw8RWxlbWVudD4pIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB0aGlzLnBhZ2luYXRvciA9IHBhZ2luYXRvcjtcclxuICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHJlZnJlc2hEYXRhU291cmNlKCkge1xyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLnBhZ2luYXRvcikpXHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcclxuXHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9ICh0aGlzLnRhc2subWdBY2Nlc3NvclNlcnZpY2UuaXNEYXRhdmlld0VtcHR5KCkgPyBbXSA6IHRoaXMudGFzay5SZWNvcmRzLmxpc3QpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogcmV0dXJucyB0aGUgcGFnZSBzaXplIG9mIHRoZSB0YWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgZ2V0UGFnZVNpemUoKTogbnVtYmVyIHtcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLnBhZ2luYXRvcikpXHJcbiAgICAgIHJldHVybiAxMDtcclxuICAgIHJldHVybiB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgYSB0YWJsZSByb3dcclxuICAgKiBAcGFyYW0gZ3VpUm93aWQgSWQgb2Ygcm93IHRvIGJlIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgc2VsZWN0Um93KGd1aVJvd2lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHN1cGVyLnNlbGVjdFJvdyhndWlSb3dpZCk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QodGhpcy50YXNrLlJlY29yZHMubGlzdFtndWlSb3dpZF0pO1xyXG4gICAgdGhpcy5yZWZyZXNoRGF0YVNvdXJjZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheXMgdGhlIHJlcXVlc3RlZCB0YWJsZSBwYWdlXHJcbiAgICogQHBhcmFtIHBhZ2VJZCBJZCBvZiBwYWdlIHRvIGJlIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgc2VsZWN0UGFnZShwYWdlSWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLnBhZ2luYXRvcikpXHJcbiAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IHBhZ2VJZDtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2hEYXRhU291cmNlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50bHkgc2VsZXRlZCByb3dcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHNlbGVjdGVkUm93KCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRbMF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgdGhlIHBhZ2luYXRvcidzIFwicGFnZVwiIGV2ZW50XHJcbiAgICogQHBhcmFtIGUgVGhlIGV2ZW50IHJlY2VpdmVkIGZyb20gdGhlIFVJXHJcbiAgICogQHBhcmFtIGNoYW5nZVNlbGVjdGVkUm93IFRoZSBmbGFnIHRydWUgb3IgZmFsc2UgdG8gaW5kaWNhdGUgY2hhbmdlIHRoZSByb3dcclxuICAgKi9cclxuICBtZ09uUGFnaW5hdGVDaGFuZ2UoZSwgY2hhbmdlU2VsZWN0ZWRSb3c/OiBib29sZWFuKVxyXG4gIHtcclxuICAgIGlmICh0aGlzLnRhc2sub2xkUGFnZVNpemUgIT0gZS5wYWdlU2l6ZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZVJlc2l6ZShlLnBhZ2VJbmRleCwgZS5wcmV2aW91c1BhZ2VJbmRleCwgZS5wYWdlU2l6ZSk7XHJcbiAgICAgIHRoaXMudGFzay5vbGRQYWdlU2l6ZSA9IGUucGFnZVNpemU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKGNoYW5nZVNlbGVjdGVkUm93KVxyXG4gICAgICB7XHJcbiAgICAgICAgbGV0IGV2dDogc3RyaW5nO1xyXG4gICAgICAgIGlmIChlLnBhZ2VJbmRleCA+IGUucHJldmlvdXNQYWdlSW5kZXgpIHtcclxuICAgICAgICAgIGV2dCA9IChlLnBhZ2VJbmRleCAtIGUucHJldmlvdXNQYWdlSW5kZXggPT09IDEpID8gXCJuZXh0LXBhZ2VcIiA6IFwiZW5kLXRhYmxlXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGV2dCA9IChlLnByZXZpb3VzUGFnZUluZGV4IC0gZS5wYWdlSW5kZXggPT09IDEpID8gXCJwcmV2aW91cy1wYWdlXCIgOiBcImJlZ2luLXRhYmxlXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZ3VpRXZlbnQ6IElHdWlFdmVudCA9IGdldEd1aUV2ZW50T2JqKFwibmF2aWdhdGVJblRhYmxlXCIsIFwibWFnaWNSb3dcIiwwKTtcclxuICAgICAgICBndWlFdmVudC5WYWx1ZSA9IGV2dDtcclxuICAgICAgICB0aGlzLnRhc2suaW5zZXJ0RXZlbnQoZ3VpRXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmdldFJvd3NJZk5lZWRlZChlLnBhZ2VJbmRleCwgZS5wcmV2aW91c1BhZ2VJbmRleCwgZS5wYWdlU2l6ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgcmVzaXplIGFuZCBzZXQgdGFibGUgdG9wIGluZGV4LlxyXG4gICAqIEBwYXJhbSBwYWdlSW5kZXggOiBOZXcgcGFnZSBpbmRleC5cclxuICAgKiBAcGFyYW0gcHJldlBhZ2VJbmRleCA6IFByZXYgcGFnZSBpbmRleFxyXG4gICAqIEBwYXJhbSBwYWdlU2l6ZSA6IFBhZ2VTaXplXHJcbiAgICovXHJcbiAgaGFuZGxlUmVzaXplKHBhZ2VJbmRleDogbnVtYmVyLCBwcmV2UGFnZUluZGV4OiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGxldCByZXF1aXJlZEd1aVJvd0lkID0gcGFnZUluZGV4ICogcGFnZVNpemU7XHJcbiAgICB0aGlzLnRhc2sucmVzaXplKHBhZ2VTaXplLCByZXF1aXJlZEd1aVJvd0lkKTtcclxuICAgIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZSBnZXRSb3dzIHRvIGZldGNoIHJlcXVpcmVkIGNodW5rIG9mIHJlY29yZHMuXHJcbiAgICogQHBhcmFtIHBhZ2VJbmRleCA6IE5ldyBwYWdlIGluZGV4LlxyXG4gICAqIEBwYXJhbSBwcmV2UGFnZUluZGV4IDogUHJldiBwYWdlIGluZGV4XHJcbiAgICogQHBhcmFtIHBhZ2VTaXplIDogUGFnZVNpemVcclxuICAgKi9cclxuICBnZXRSb3dzSWZOZWVkZWQocGFnZUluZGV4OiBudW1iZXIsIHByZXZQYWdlSW5kZXg6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IGd1aUV2ZW50OiBJR3VpRXZlbnQgPSBnZXRHdWlFdmVudE9iaihcImdldFJvd3NcIiwgXCJcIiwwKTtcclxuICAgIGd1aUV2ZW50LkxpbmUgPSBwYWdlSW5kZXggKiBwYWdlU2l6ZTtcclxuICAgIHRoaXMudGFzay5pbnNlcnRFdmVudChndWlFdmVudCk7XHJcbiAgICB0aGlzLnNldFRhYmxlVG9wSW5kZXgodGhpcy50YXNrLmdldER2Um93SWQocGFnZVNpemUgKiBwYWdlSW5kZXgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIFwibWF0U29ydENoYW5nZVwiIGV2ZW50XHJcbiAgICogQHBhcmFtIGUgVGhlIGV2ZW50IHJlY2VpdmVkIGZyb20gdGhlIFVJXHJcbiAgICovXHJcbiAgc29ydERhdGEoZSkge1xyXG4gICAgbGV0IGRpcmVjdGlvbjogbnVtYmVyID0gMDtcclxuICAgIGlmIChlLmRpcmVjdGlvbiA9PT0gJ2FzYycpXHJcbiAgICAgIGRpcmVjdGlvbiA9IDA7XHJcbiAgICBlbHNlIGlmIChlLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnKVxyXG4gICAgICBkaXJlY3Rpb24gPSAxO1xyXG5cclxuICAgIGxldCBndWlFdmVudDogSUd1aUV2ZW50ID0gZ2V0R3VpRXZlbnRPYmooXCJjb2x1bW5Tb3J0XCIsIGUuYWN0aXZlLCBkaXJlY3Rpb24pO1xyXG4gICAgdGhpcy50YXNrLmluc2VydEV2ZW50KGd1aUV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZSB0aGUgbnVtYmVyIG9mIGxpbmVzIGluIGEgdGFibGVcclxuICAgKiBAcGFyYW0gIHNpemUgTmV3IG51bWJlciBvZiBsaW5lcyBpbiB0YWJsZVxyXG4gICAqL1xyXG4gIHVwZGF0ZVRhYmxlU2l6ZShzaXplOiBudW1iZXIpIHtcclxuICAgIGlmIChzaXplID09PSAwKSAvLyBuZXZlciByZW1vdmUgcm93IDAgZm9yIG5vd1xyXG4gICAge1xyXG4gICAgICAgc2l6ZSA9IDE7XHJcbiAgICAgICB0aGlzLnRhc2suUmVjb3Jkcy5jbGVhckZpcnN0VGFibGVSZWNvcmQodGhpcy50YXNrLnRlbXBsYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLnBhZ2luYXRvcikpXHJcbiAgICAgICBzaXplID0gdGhpcy5nZXRQYWdlU2l6ZSgpO1xyXG5cclxuICAgIHRoaXMudGFzay5mb3JtR3JvdXBzLmxlbmd0aCA9IHNpemU7XHJcbiAgICB0aGlzLnRhc2suUmVjb3Jkcy51cGRhdGVTaXplKHNpemUpO1xyXG4gICAgdGhpcy50YXNrLnNldEluY2x1ZGVzRmlyc3QoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIHRoZSBzZWxlY3Rpb24gb2Ygcm93IGFuZCBpZiBuZWVkZWQgbW92ZSB0byByZXNwZWN0aXZlIHBhZ2UuXHJcbiAgICogQHBhcmFtICBndWlSb3dJZCBOZXcgbnVtYmVyIG9mIGxpbmVzIGluIHRhYmxlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNlbGVjdFBhZ2VGb3JHdWlSb3dJZChndWlSb3dJZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgcGFnZVRvQmVTZWxlY3RlZDogbnVtYmVyID0gMDtcclxuICAgIGxldCBwcmV2U2VsZWN0ZWRSb3c6IENvbnRyb2xzTWV0YWRhdGEgPSA8Q29udHJvbHNNZXRhZGF0YT50aGlzLnNlbGVjdGVkUm93KCk7XHJcblxyXG4gICAgcGFnZVRvQmVTZWxlY3RlZCA9IE1hdGguZmxvb3IoZ3VpUm93SWQgLyB0aGlzLmdldFBhZ2VTaXplKCkpO1xyXG5cclxuICAgIC8vIEV4cGxpY2l0bHkgaGFuZGxlIHNlbGVjdGlvbiBvZiBwYWdlIHdoZW4gaXQncyBub3QgcmFpc2VkIGJ5IHVzaW5nIHBhZ2luYXRpb25cclxuICAgIGlmICgoaXNOdWxsT3JVbmRlZmluZWQocHJldlNlbGVjdGVkUm93KSB8fCAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMucGFnaW5hdG9yKSAmJiBwYWdlVG9CZVNlbGVjdGVkICE9IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCkpKVxyXG4gICAgICB0aGlzLnNlbGVjdFBhZ2UocGFnZVRvQmVTZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgc2V0VGFibGVUb3BJbmRleCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnRhc2suUmVjb3Jkcy5zZXRHdWlUb3BJbmRleCh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHZhbHVlID49IDApXHJcbiAgICAgIHRoaXMuc2VsZWN0UGFnZUZvckd1aVJvd0lkKHRoaXMudGFzay5nZXRHdWlSb3dJZCh2YWx1ZSwgdHJ1ZSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGdldFRhYmxlVG9wSW5kZXgoKTpudW1iZXJcclxuICB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLlJlY29yZHMuZ2V0R3VpVG9wSW5kZXgoKTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==