mmhglobal-dynamicform 2.12.4 → 2.13.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/README.md +533 -1
- package/esm2020/lib/services/main.service.mjs +21 -23
- package/esm2020/lib/services/zcomponent.debug.service.mjs +43 -13
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +512 -265
- package/esm2020/lib/zgrid/zgrid.component.mjs +144 -268
- package/esm2020/lib/zgrid/zgrid.service.mjs +109 -0
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +42 -10
- package/esm2020/lib/ztree/ztree.component.mjs +57 -13
- package/fesm2015/mmhglobal-dynamicform.mjs +4849 -4515
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +4646 -4319
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/services/main.service.d.ts +2 -2
- package/lib/services/zcomponent.debug.service.d.ts +3 -2
- package/lib/zgrid/zgrid.binding.directive.d.ts +113 -20
- package/lib/zgrid/zgrid.component.d.ts +16 -21
- package/lib/zgrid/zgrid.service.d.ts +33 -0
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +14 -2
- package/lib/ztree/ztree.component.d.ts +7 -2
- package/package.json +1 -1
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/********** Angular **********/
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
/********** Component & Service **********/
|
|
4
|
+
import { Delimiter } from 'mmhglobal-zcore';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "mmhglobal-zcore";
|
|
7
|
+
export var GridSettingType;
|
|
8
|
+
(function (GridSettingType) {
|
|
9
|
+
GridSettingType["OriginalSetting"] = "OriginalSetting";
|
|
10
|
+
GridSettingType["SavedSetting"] = "SavedSetting";
|
|
11
|
+
GridSettingType["CachedDataSetting"] = "CachedDataSetting";
|
|
12
|
+
})(GridSettingType || (GridSettingType = {}));
|
|
13
|
+
export var GridStateLogicType;
|
|
14
|
+
(function (GridStateLogicType) {
|
|
15
|
+
GridStateLogicType["SettingAndDataCache"] = "SettingAndDataCache";
|
|
16
|
+
GridStateLogicType["SettingOnly"] = "SettingOnly";
|
|
17
|
+
GridStateLogicType["DataCacheOnly"] = "DataCache";
|
|
18
|
+
})(GridStateLogicType || (GridStateLogicType = {}));
|
|
19
|
+
export class ZGridService {
|
|
20
|
+
constructor(offlineDatabaseService) {
|
|
21
|
+
this.offlineDatabaseService = offlineDatabaseService;
|
|
22
|
+
this.gridDefaultState = { skip: 0, take: 20 };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Configure grid settings based on the provided ZField object.
|
|
26
|
+
* @param field The ZField object containing configuration information.
|
|
27
|
+
* @returns The configured grid state.
|
|
28
|
+
*/
|
|
29
|
+
setupGridSetting(field) {
|
|
30
|
+
// Set the default number of items to display (take) based on the provided field's PageSize or a default of 20.
|
|
31
|
+
this.gridDefaultState.take = field.PageSize || 20;
|
|
32
|
+
// Create a copy of the default state and assign it to this.gridState.
|
|
33
|
+
this.gridState = Object.assign({}, this.gridDefaultState);
|
|
34
|
+
if (field.CacheInfo) {
|
|
35
|
+
//const cacheName = this.getGridStateCacheStorageKey(GridSettingType.OriginalSetting);
|
|
36
|
+
//sessionStorage.setItem(cacheName, JSON.stringify(this.gridSettings));
|
|
37
|
+
// Generate a cache name based on the cache type and the field.
|
|
38
|
+
let cacheName = this.getGridStateCacheStorageKey(GridSettingType.CachedDataSetting, field);
|
|
39
|
+
// Determine whether to use SavedSetting cache type based on configuration.
|
|
40
|
+
if (field.CacheInfo.EnableSaveState === true && field.CacheInfo.DisableCacheData === true) {
|
|
41
|
+
cacheName = this.getGridStateCacheStorageKey(GridSettingType.SavedSetting, field);
|
|
42
|
+
}
|
|
43
|
+
// Retrieve the cached value from sessionStorage.
|
|
44
|
+
const cacheInfo = this.generateCacheInfo(field, cacheName);
|
|
45
|
+
const cacheValue = this.offlineDatabaseService.getItemByKey(cacheInfo, cacheInfo.offlineDatabaseKey);
|
|
46
|
+
// If a cached value exists, update this.gridState with the cached value.
|
|
47
|
+
if (cacheValue) {
|
|
48
|
+
this.gridState = cacheValue.gridState;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return this.gridState;
|
|
52
|
+
}
|
|
53
|
+
generateCacheInfo(gridField, offlineDatabaseKey) {
|
|
54
|
+
const cacheInfo = gridField.CacheInfo;
|
|
55
|
+
return {
|
|
56
|
+
priorityNumber: 0,
|
|
57
|
+
componentType: 'zgrid',
|
|
58
|
+
resourceURL: cacheInfo.ResourceURL,
|
|
59
|
+
appendPaginationData: cacheInfo.AppendPaginationData,
|
|
60
|
+
definedDatabase: cacheInfo.DefinedDatabase,
|
|
61
|
+
definedTable: cacheInfo.DefinedTable,
|
|
62
|
+
offlineDatabaseKey: offlineDatabaseKey ?? `${gridField.FieldElementName}${Delimiter.default}${gridField.Name}`,
|
|
63
|
+
saveAsJson: cacheInfo.SaveAsJson,
|
|
64
|
+
encryptValue: cacheInfo.EncryptValue
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Used for Grid state setting ONLY.
|
|
68
|
+
getGridStateCacheStorageKey(gridStateType, field) {
|
|
69
|
+
if (!field.CacheInfo) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const cacheName = `${field.FieldElementName}${Delimiter.default}${field.CacheInfo.Name ?? field.FieldElementName}`;
|
|
73
|
+
if (gridStateType === GridSettingType.OriginalSetting || gridStateType === GridSettingType.SavedSetting) {
|
|
74
|
+
return gridStateType + Delimiter.default + cacheName;
|
|
75
|
+
}
|
|
76
|
+
else if (gridStateType === GridSettingType.CachedDataSetting) {
|
|
77
|
+
return cacheName;
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
getGridStateLogic(field) {
|
|
82
|
+
if (field.CacheInfo) {
|
|
83
|
+
const enableSaveState = field.CacheInfo.EnableSaveState;
|
|
84
|
+
const disableCacheData = field.CacheInfo.DisableCacheData;
|
|
85
|
+
if (enableSaveState && !disableCacheData) {
|
|
86
|
+
return GridStateLogicType.SettingAndDataCache;
|
|
87
|
+
}
|
|
88
|
+
else if (enableSaveState && disableCacheData) {
|
|
89
|
+
return GridStateLogicType.SettingOnly;
|
|
90
|
+
}
|
|
91
|
+
else if (!enableSaveState && !disableCacheData) {
|
|
92
|
+
return GridStateLogicType.DataCacheOnly;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.log('CacheInfo is undefined.');
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
ZGridService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZGridService, deps: [{ token: i1.OfflineDatabaseService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
102
|
+
ZGridService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZGridService, providedIn: 'root' });
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZGridService, decorators: [{
|
|
104
|
+
type: Injectable,
|
|
105
|
+
args: [{
|
|
106
|
+
providedIn: 'root'
|
|
107
|
+
}]
|
|
108
|
+
}], ctorParameters: function () { return [{ type: i1.OfflineDatabaseService }]; } });
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdyaWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pncmlkL3pncmlkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPM0MsMkNBQTJDO0FBQzNDLE9BQU8sRUFDRyxTQUFTLEVBQ2xCLE1BQU0saUJBQWlCLENBQUM7OztBQUV6QixNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3pCLHNEQUFtQyxDQUFBO0lBQ25DLGdEQUE2QixDQUFBO0lBQzdCLDBEQUF1QyxDQUFBO0FBQ3pDLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUVELE1BQU0sQ0FBTixJQUFZLGtCQUlYO0FBSkQsV0FBWSxrQkFBa0I7SUFDNUIsaUVBQTJDLENBQUE7SUFDM0MsaURBQTJCLENBQUE7SUFDM0IsaURBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQUpXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFJN0I7QUFNRCxNQUFNLE9BQU8sWUFBWTtJQUl2QixZQUNVLHNCQUE4QztRQUE5QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBSGhELHFCQUFnQixHQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFLeEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxLQUFhO1FBQ25DLCtHQUErRztRQUMvRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBRWxELHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFB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QWdCLEVBQUU7Z0JBQzVDLE9BQU8sa0JBQWtCLENBQUMsV0FBVyxDQUFDO2FBQ3ZDO2lCQUNJLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDOUMsT0FBTyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7YUFDekM7U0FDRjthQUNJO1lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzt5R0FwR1UsWUFBWTs2R0FBWixZQUFZLGNBRlgsTUFBTTsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1kYXRhLXF1ZXJ5XCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IFxyXG4gIFpGaWVsZCwgRGVsaW1pdGVyLCBaR3JpZFNldHRpbmdzLCBPZmZsaW5lRGF0YWJhc2VTZXJ2aWNlLCBvZmZsaW5lRGF0YWJhc2VTZXR0aW5nXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJzsgIFxyXG4gXHJcbmV4cG9ydCBlbnVtIEdyaWRTZXR0aW5nVHlwZSB7XHJcbiAgT3JpZ2luYWxTZXR0aW5nID0gXCJPcmlnaW5hbFNldHRpbmdcIixcclxuICBTYXZlZFNldHRpbmcgPSBcIlNhdmVkU2V0dGluZ1wiLFxyXG4gIENhY2hlZERhdGFTZXR0aW5nID0gXCJDYWNoZWREYXRhU2V0dGluZ1wiXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEdyaWRTdGF0ZUxvZ2ljVHlwZSB7XHJcbiAgU2V0dGluZ0FuZERhdGFDYWNoZSA9IFwiU2V0dGluZ0FuZERhdGFDYWNoZVwiLFxyXG4gIFNldHRpbmdPbmx5ID0gXCJTZXR0aW5nT25seVwiLFxyXG4gIERhdGFDYWNoZU9ubHkgPSBcIkRhdGFDYWNoZVwiXHJcbn1cclxuXHJcbiBcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgWkdyaWRTZXJ2aWNlIHtcclxuICBwcml2YXRlIGdyaWRTdGF0ZTogU3RhdGU7XHJcbiAgcHJpdmF0ZSBncmlkRGVmYXVsdFN0YXRlOiBTdGF0ZSA9IHsgc2tpcDogMCwgdGFrZTogMjAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG9mZmxpbmVEYXRhYmFzZVNlcnZpY2U6IE9mZmxpbmVEYXRhYmFzZVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyZSBncmlkIHNldHRpbmdzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBaRmllbGQgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBmaWVsZCBUaGUgWkZpZWxkIG9iamVjdCBjb250YWluaW5nIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uXHJcbiAgICogQHJldHVybnMgVGhlIGNvbmZpZ3VyZWQgZ3JpZCBzdGF0ZS5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0dXBHcmlkU2V0dGluZyhmaWVsZDogWkZpZWxkKTogU3RhdGUge1xyXG4gICAgLy8gU2V0IHRoZSBkZWZhdWx0IG51bWJlciBvZiBpdGVtcyB0byBkaXNwbGF5ICh0YWtlKSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZmllbGQncyBQYWdlU2l6ZSBvciBhIGRlZmF1bHQgb2YgMjAuXHJcbiAgICB0aGlzLmdyaWREZWZhdWx0U3RhdGUudGFrZSA9IGZpZWxkLlBhZ2VTaXplIHx8IDIwO1xyXG5cclxuICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhlIGRlZmF1bHQgc3RhdGUgYW5kIGFzc2lnbiBpdCB0byB0aGlzLmdyaWRTdGF0ZS5cclxuICAgIHRoaXMuZ3JpZFN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5ncmlkRGVmYXVsdFN0YXRlKTtcclxuXHJcbiAgICBpZiAoZmllbGQuQ2FjaGVJbmZvKSB7XHJcbiAgICAgIC8vY29uc3QgY2FjaGVOYW1lID0gdGhpcy5nZXRHcmlkU3RhdGVDYWNoZVN0b3JhZ2VLZXkoR3JpZFNldHRpbmdUeXBlLk9yaWdpbmFsU2V0dGluZyk7XHJcbiAgICAgIC8vc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShjYWNoZU5hbWUsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JpZFNldHRpbmdzKSk7XHJcblxyXG4gICAgICAvLyBHZW5lcmF0ZSBhIGNhY2hlIG5hbWUgYmFzZWQgb24gdGhlIGNhY2hlIHR5cGUgYW5kIHRoZSBmaWVsZC5cclxuICAgICAgbGV0IGNhY2hlTmFtZSA9IHRoaXMuZ2V0R3JpZFN0YXRlQ2FjaGVTdG9yYWdlS2V5KEdyaWRTZXR0aW5nVHlwZS5DYWNoZWREYXRhU2V0dGluZywgZmllbGQpO1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIFNhdmVkU2V0dGluZyBjYWNoZSB0eXBlIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgIGlmIChmaWVsZC5DYWNoZUluZm8uRW5hYmxlU2F2ZVN0YXRlID09PSB0cnVlICYmIGZpZWxkLkNhY2hlSW5mby5EaXNhYmxlQ2FjaGVEYXRhID09PSB0cnVlKSB7XHJcbiAgICAgICAgY2FjaGVOYW1lID0gdGhpcy5nZXRHcmlkU3RhdGVDYWNoZVN0b3JhZ2VLZXkoR3JpZFNldHRpbmdUeXBlLlNhdmVkU2V0dGluZywgZmllbGQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZXRyaWV2ZSB0aGUgY2FjaGVkIHZhbHVlIGZyb20gc2Vzc2lvblN0b3JhZ2UuXHJcbiAgICAgIGNvbnN0IGNhY2hlSW5mbyA9IHRoaXMuZ2VuZXJhdGVDYWNoZUluZm8oZmllbGQsIGNhY2hlTmFtZSk7XHJcbiAgICAgIGNvbnN0IGNhY2hlVmFsdWUgPSB0aGlzLm9mZmxpbmVEYXRhYmFzZVNlcnZpY2UuZ2V0SXRlbUJ5S2V5KGNhY2hlSW5mbywgY2FjaGVJbmZvLm9mZmxpbmVEYXRhYmFzZUtleSk7XHJcblxyXG4gICAgICAvLyBJZiBhIGNhY2hlZCB2YWx1ZSBleGlzdHMsIHVwZGF0ZSB0aGlzLmdyaWRTdGF0ZSB3aXRoIHRoZSBjYWNoZWQgdmFsdWUuXHJcbiAgICAgIGlmIChjYWNoZVZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkU3RhdGUgPSAoY2FjaGVWYWx1ZSBhcyBaR3JpZFNldHRpbmdzKS5ncmlkU3RhdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5ncmlkU3RhdGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVDYWNoZUluZm8oZ3JpZEZpZWxkOiBaRmllbGQsIG9mZmxpbmVEYXRhYmFzZUtleT86IHN0cmluZyk6IG9mZmxpbmVEYXRhYmFzZVNldHRpbmcge1xyXG4gICAgY29uc3QgY2FjaGVJbmZvID0gZ3JpZEZpZWxkLkNhY2hlSW5mbztcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwcmlvcml0eU51bWJlcjogMCxcclxuICAgICAgY29tcG9uZW50VHlwZTogJ3pncmlkJyxcclxuICAgICAgcmVzb3VyY2VVUkw6IGNhY2hlSW5mby5SZXNvdXJjZVVSTCxcclxuICAgICAgYXBwZW5kUGFnaW5hdGlvbkRhdGE6IGNhY2hlSW5mby5BcHBlbmRQYWdpbmF0aW9uRGF0YSxcclxuICAgICAgZGVmaW5lZERhdGFiYXNlOiBjYWNoZUluZm8uRGVmaW5lZERhdGFiYXNlLFxyXG4gICAgICBkZWZpbmVkVGFibGU6IGNhY2hlSW5mby5EZWZpbmVkVGFibGUsXHJcbiAgICAgIG9mZmxpbmVEYXRhYmFzZUtleTogb2ZmbGluZURhdGFiYXNlS2V5Pz8gYCR7Z3JpZEZpZWxkLkZpZWxkRWxlbWVudE5hbWV9JHtEZWxpbWl0ZXIuZGVmYXVsdH0ke2dyaWRGaWVsZC5OYW1lfWAsXHJcbiAgICAgIHNhdmVBc0pzb246IGNhY2hlSW5mby5TYXZlQXNKc29uLFxyXG4gICAgICBlbmNyeXB0VmFsdWU6IGNhY2hlSW5mby5FbmNyeXB0VmFsdWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFVzZWQgZm9yIEdyaWQgc3RhdGUgc2V0dGluZyBPTkxZLlxyXG4gIHB1YmxpYyBnZXRHcmlkU3RhdGVDYWNoZVN0b3JhZ2VLZXkoZ3JpZFN0YXRlVHlwZTogR3JpZFNldHRpbmdUeXBlLCBmaWVsZDogWkZpZWxkKSB7XHJcbiAgICBpZiAoIWZpZWxkLkNhY2hlSW5mbykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2FjaGVOYW1lID0gYCR7ZmllbGQuRmllbGRFbGVtZW50TmFtZX0ke0RlbGltaXRlci5kZWZhdWx0fSR7ZmllbGQuQ2FjaGVJbmZvLk5hbWUgPz8gZmllbGQuRmllbGRFbGVtZW50TmFtZX1gO1xyXG5cclxuICAgIGlmIChncmlkU3RhdGVUeXBlID09PSBHcmlkU2V0dGluZ1R5cGUuT3JpZ2luYWxTZXR0aW5nIHx8IGdyaWRTdGF0ZVR5cGUgPT09IEdyaWRTZXR0aW5nVHlwZS5TYXZlZFNldHRpbmcpIHtcclxuICAgICAgcmV0dXJuIGdyaWRTdGF0ZVR5cGUgKyBEZWxpbWl0ZXIuZGVmYXVsdCArIGNhY2hlTmFtZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGdyaWRTdGF0ZVR5cGUgPT09IEdyaWRTZXR0aW5nVHlwZS5DYWNoZWREYXRhU2V0dGluZykge1xyXG4gICAgICByZXR1cm4gY2FjaGVOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEdyaWRTdGF0ZUxvZ2ljKGZpZWxkOiBaRmllbGQpIHtcclxuICAgIGlmIChmaWVsZC5DYWNoZUluZm8pIHtcclxuICAgICAgY29uc3QgZW5hYmxlU2F2ZVN0YXRlID0gZmllbGQuQ2FjaGVJbmZvLkVuYWJsZVNhdmVTdGF0ZTtcclxuICAgICAgY29uc3QgZGlzYWJsZUNhY2hlRGF0YSA9IGZpZWxkLkNhY2hlSW5mby5EaXNhYmxlQ2FjaGVEYXRhO1xyXG5cclxuICAgICAgaWYgKGVuYWJsZVNhdmVTdGF0ZSAmJiAhZGlzYWJsZUNhY2hlRGF0YSkge1xyXG4gICAgICAgIHJldHVybiBHcmlkU3RhdGVMb2dpY1R5cGUuU2V0dGluZ0FuZERhdGFDYWNoZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChlbmFibGVTYXZlU3RhdGUgJiYgZGlzYWJsZUNhY2hlRGF0YSkge1xyXG4gICAgICAgIHJldHVybiBHcmlkU3RhdGVMb2dpY1R5cGUuU2V0dGluZ09ubHk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIWVuYWJsZVNhdmVTdGF0ZSAmJiAhZGlzYWJsZUNhY2hlRGF0YSkge1xyXG4gICAgICAgIHJldHVybiBHcmlkU3RhdGVMb2dpY1R5cGUuRGF0YUNhY2hlT25seTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdDYWNoZUluZm8gaXMgdW5kZWZpbmVkLicpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
|