@oneteme/jquery-organizer 0.0.1 → 0.0.3
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 +159 -60
- package/esm2022/lib/models/organizer-chart-adapter.mjs +98 -34
- package/esm2022/lib/models/organizer-chart-config.mjs +37 -0
- package/esm2022/lib/models/organizer-config.interface.mjs +1 -1
- package/esm2022/lib/models/organizer-utils.mjs +117 -1
- package/esm2022/lib/organizer-button/organizer-button.component.mjs +69 -20
- package/esm2022/lib/organizer-button/template-manager.utility.mjs +7 -0
- package/esm2022/lib/slice-panel/slice-panel.component.mjs +3 -3
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/oneteme-jquery-organizer.mjs +345 -77
- package/fesm2022/oneteme-jquery-organizer.mjs.map +1 -1
- package/lib/models/organizer-chart-adapter.d.ts +17 -10
- package/lib/models/organizer-chart-config.d.ts +32 -0
- package/lib/models/organizer-config.interface.d.ts +2 -0
- package/lib/models/organizer-utils.d.ts +4 -1
- package/lib/organizer-button/organizer-button.component.d.ts +1 -0
- package/lib/organizer-button/template-manager.utility.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export var SyntheticItemKeys;
|
|
2
|
+
(function (SyntheticItemKeys) {
|
|
3
|
+
SyntheticItemKeys["EMPTY"] = "__empty__";
|
|
4
|
+
SyntheticItemKeys["SYNTHETIC_MARKER"] = "__synthetic__";
|
|
5
|
+
})(SyntheticItemKeys || (SyntheticItemKeys = {}));
|
|
6
|
+
export var SlicePanelI18nKeys;
|
|
7
|
+
(function (SlicePanelI18nKeys) {
|
|
8
|
+
SlicePanelI18nKeys["EXPAND_FILTER"] = "expandFilterTitle";
|
|
9
|
+
SlicePanelI18nKeys["COLLAPSE_FILTER"] = "collapseFilterTitle";
|
|
10
|
+
SlicePanelI18nKeys["FILTER_PANEL_TITLE_SINGLE"] = "filterPanelTitleSingle";
|
|
11
|
+
SlicePanelI18nKeys["FILTER_PANEL_TITLE_PLURAL"] = "filterPanelTitlePlural";
|
|
12
|
+
SlicePanelI18nKeys["FILTER_BLOCK_DEFAULT_TITLE"] = "filterBlockDefaultTitle";
|
|
13
|
+
SlicePanelI18nKeys["FILTER_EMPTY_STATE"] = "filterEmptyState";
|
|
14
|
+
})(SlicePanelI18nKeys || (SlicePanelI18nKeys = {}));
|
|
15
|
+
export var OrganizerButtonEventType;
|
|
16
|
+
(function (OrganizerButtonEventType) {
|
|
17
|
+
OrganizerButtonEventType["FIELD_TOGGLED"] = "fieldToggled";
|
|
18
|
+
OrganizerButtonEventType["X_SELECTED"] = "xSelected";
|
|
19
|
+
OrganizerButtonEventType["Y_SELECTED"] = "ySelected";
|
|
20
|
+
OrganizerButtonEventType["GROUP_BY_SELECTED"] = "groupBySelected";
|
|
21
|
+
OrganizerButtonEventType["TEMPLATE_SELECTED"] = "templateSelected";
|
|
22
|
+
OrganizerButtonEventType["SLICE_SELECTED"] = "sliceSelected";
|
|
23
|
+
OrganizerButtonEventType["VIEW_SWITCHED"] = "viewSwitched";
|
|
24
|
+
})(OrganizerButtonEventType || (OrganizerButtonEventType = {}));
|
|
25
|
+
export function getGroupItems(config) {
|
|
26
|
+
return config?.groups?.items ?? [];
|
|
27
|
+
}
|
|
28
|
+
export function getIndicatorItems(config) {
|
|
29
|
+
return config?.indicators?.items ?? [];
|
|
30
|
+
}
|
|
31
|
+
export function getFilterItems(config) {
|
|
32
|
+
return config?.filters?.items ?? [];
|
|
33
|
+
}
|
|
34
|
+
export function getStackItems(indicator) {
|
|
35
|
+
return indicator?.extra?.stacks?.items ?? [];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNoYXJ0LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvanF1ZXJ5LW9yZ2FuaXplci9zcmMvbGliL21vZGVscy9vcmdhbml6ZXItY2hhcnQtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBTixJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDM0Isd0NBQW1CLENBQUE7SUFDbkIsdURBQWtDLENBQUE7QUFDcEMsQ0FBQyxFQUhXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFHNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFPWDtBQVBELFdBQVksa0JBQWtCO0lBQzVCLHlEQUFtQyxDQUFBO0lBQ25DLDZEQUF1QyxDQUFBO0lBQ3ZDLDBFQUFvRCxDQUFBO0lBQ3BELDBFQUFvRCxDQUFBO0lBQ3BELDRFQUFzRCxDQUFBO0lBQ3RELDZEQUF1QyxDQUFBO0FBQ3pDLENBQUMsRUFQVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBTzdCO0FBRUQsTUFBTSxDQUFOLElBQVksd0JBUVg7QUFSRCxXQUFZLHdCQUF3QjtJQUNsQywwREFBOEIsQ0FBQTtJQUM5QixvREFBd0IsQ0FBQTtJQUN4QixvREFBd0IsQ0FBQTtJQUN4QixpRUFBcUMsQ0FBQTtJQUNyQyxrRUFBc0MsQ0FBQTtJQUN0Qyw0REFBZ0MsQ0FBQTtJQUNoQywwREFBOEIsQ0FBQTtBQUNoQyxDQUFDLEVBUlcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQVFuQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBK0M7SUFDM0UsT0FBTyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUErQztJQUMvRSxPQUFPLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUErQztJQUM1RSxPQUFPLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUF5QztJQUNyRSxPQUFPLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZ2FuaXplckNoYXJ0SXRlbSwgT3JnYW5pemVyQ2hhcnRTZWN0aW9uIH0gZnJvbSAnLi9vcmdhbml6ZXItY2hhcnQtYWRhcHRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyQ2hhcnRDb25maWcge1xuICBncm91cHM/OiBPcmdhbml6ZXJDaGFydFNlY3Rpb247XG4gIGluZGljYXRvcnM/OiBPcmdhbml6ZXJDaGFydFNlY3Rpb247XG4gIGZpbHRlcnM/OiBPcmdhbml6ZXJDaGFydFNlY3Rpb247XG4gIHRlbXBsYXRlcz86IGFueVtdOyAvLyBUT0RPOiB0eXBlciBjb3JyZWN0ZW1lbnQgbGVzIHRlbXBsYXRlc1xufVxuXG5leHBvcnQgZW51bSBTeW50aGV0aWNJdGVtS2V5cyB7XG4gIEVNUFRZID0gJ19fZW1wdHlfXycsXG4gIFNZTlRIRVRJQ19NQVJLRVIgPSAnX19zeW50aGV0aWNfXydcbn1cblxuZXhwb3J0IGVudW0gU2xpY2VQYW5lbEkxOG5LZXlzIHtcbiAgRVhQQU5EX0ZJTFRFUiA9ICdleHBhbmRGaWx0ZXJUaXRsZScsXG4gIENPTExBUFNFX0ZJTFRFUiA9ICdjb2xsYXBzZUZpbHRlclRpdGxlJyxcbiAgRklMVEVSX1BBTkVMX1RJVExFX1NJTkdMRSA9ICdmaWx0ZXJQYW5lbFRpdGxlU2luZ2xlJyxcbiAgRklMVEVSX1BBTkVMX1RJVExFX1BMVVJBTCA9ICdmaWx0ZXJQYW5lbFRpdGxlUGx1cmFsJyxcbiAgRklMVEVSX0JMT0NLX0RFRkFVTFRfVElUTEUgPSAnZmlsdGVyQmxvY2tEZWZhdWx0VGl0bGUnLFxuICBGSUxURVJfRU1QVFlfU1RBVEUgPSAnZmlsdGVyRW1wdHlTdGF0ZSdcbn1cblxuZXhwb3J0IGVudW0gT3JnYW5pemVyQnV0dG9uRXZlbnRUeXBlIHtcbiAgRklFTERfVE9HR0xFRCA9ICdmaWVsZFRvZ2dsZWQnLFxuICBYX1NFTEVDVEVEID0gJ3hTZWxlY3RlZCcsXG4gIFlfU0VMRUNURUQgPSAneVNlbGVjdGVkJyxcbiAgR1JPVVBfQllfU0VMRUNURUQgPSAnZ3JvdXBCeVNlbGVjdGVkJyxcbiAgVEVNUExBVEVfU0VMRUNURUQgPSAndGVtcGxhdGVTZWxlY3RlZCcsXG4gIFNMSUNFX1NFTEVDVEVEID0gJ3NsaWNlU2VsZWN0ZWQnLFxuICBWSUVXX1NXSVRDSEVEID0gJ3ZpZXdTd2l0Y2hlZCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEdyb3VwSXRlbXMoY29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQpOiBPcmdhbml6ZXJDaGFydEl0ZW1bXSB7XG4gIHJldHVybiBjb25maWc/Lmdyb3Vwcz8uaXRlbXMgPz8gW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmRpY2F0b3JJdGVtcyhjb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCk6IE9yZ2FuaXplckNoYXJ0SXRlbVtdIHtcbiAgcmV0dXJuIGNvbmZpZz8uaW5kaWNhdG9ycz8uaXRlbXMgPz8gW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJJdGVtcyhjb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCk6IE9yZ2FuaXplckNoYXJ0SXRlbVtdIHtcbiAgcmV0dXJuIGNvbmZpZz8uZmlsdGVycz8uaXRlbXMgPz8gW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFja0l0ZW1zKGluZGljYXRvcjogT3JnYW5pemVyQ2hhcnRJdGVtIHwgdW5kZWZpbmVkKTogT3JnYW5pemVyQ2hhcnRJdGVtW10ge1xuICByZXR1cm4gaW5kaWNhdG9yPy5leHRyYT8uc3RhY2tzPy5pdGVtcyA/PyBbXTtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS1vcmdhbml6ZXIvc3JjL2xpYi9tb2RlbHMvb3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNsaWNlQ29uZmlnIH0gZnJvbSAnLi4vc2xpY2UtcGFuZWwvc2xpY2UtcGFuZWwubW9kZWwnO1xuaW1wb3J0IHsgVW5pdENvbmZpZyB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcblxuZXhwb3J0IHR5cGUgRmllbGRTdGF0ZSA9ICdyZWFkeScgfCAnbG9hZGluZycgfCAnZXJyb3InO1xuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3RmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgc3RhdGU/OiBGaWVsZFN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclhGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZQWdncmVnYXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZRmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBhZ2dyZWdhdGVzPzogT3JnYW5pemVyWUFnZ3JlZ2F0ZVtdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyVmlld0dyb3VwIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3U2xpY2Uge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclRlbXBsYXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgeEZpZWxkPzogc3RyaW5nO1xuICB5RmllbGQ/OiBzdHJpbmc7XG4gIHlBZ2dyZWdhdGU/OiBzdHJpbmc7XG4gIGdyb3VwQnk/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS1vcmdhbml6ZXIvc3JjL2xpYi9tb2RlbHMvb3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNsaWNlQ29uZmlnIH0gZnJvbSAnLi4vc2xpY2UtcGFuZWwvc2xpY2UtcGFuZWwubW9kZWwnO1xuaW1wb3J0IHsgVW5pdENvbmZpZyB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcblxuZXhwb3J0IHR5cGUgRmllbGRTdGF0ZSA9ICdyZWFkeScgfCAnbG9hZGluZycgfCAnZXJyb3InO1xuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3RmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgc3RhdGU/OiBGaWVsZFN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclhGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZQWdncmVnYXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZRmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBhZ2dyZWdhdGVzPzogT3JnYW5pemVyWUFnZ3JlZ2F0ZVtdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyVmlld0dyb3VwIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3U2xpY2Uge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclRlbXBsYXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgeEZpZWxkPzogc3RyaW5nO1xuICB5RmllbGQ/OiBzdHJpbmc7XG4gIHlBZ2dyZWdhdGU/OiBzdHJpbmc7XG4gIGdyb3VwQnk/OiBzdHJpbmc7XG4gIHNlbGVjdGVkU2xpY2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyQ29uZmlnIHtcbiAgZmllbGRzPzogT3JnYW5pemVyVmlld0ZpZWxkW107XG4gIHhGaWVsZHM/OiBPcmdhbml6ZXJYRmllbGRbXTtcbiAgeUZpZWxkcz86IE9yZ2FuaXplcllGaWVsZFtdO1xuICBncm91cHM/OiBPcmdhbml6ZXJWaWV3R3JvdXBbXTtcbiAgc2xpY2VzPzogT3JnYW5pemVyVmlld1NsaWNlW107XG4gIHRlbXBsYXRlcz86IE9yZ2FuaXplclRlbXBsYXRlW107XG5cbiAgb25GZXRjaEZpZWxkRGF0YT86IChmaWVsZElkOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+W10+O1xuICBvbkZldGNoU2xpY2VEYXRhPzogKGZpbHRlcktleTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueVtdPiB8IFByb21pc2U8YW55W10+O1xuICBvblNsaWNlQ2xpY2s/OiAoKSA9PiB2b2lkO1xuXG4gIHNob3dFeHBvcnQ/OiBib29sZWFuO1xuICBvbkV4cG9ydD86ICgpID0+IHZvaWQ7XG4gIG9uRXhwb3J0VmlzdWFsPzogKCkgPT4gdm9pZDtcbiAgb25FeHBvcnREYXRhPzogKCkgPT4gdm9pZDtcblxuICBzaG93UHJlZmVyZW5jZXM/OiBib29sZWFuO1xuICBoYXNTYXZlZFByZWZlcmVuY2VzPzogYm9vbGVhbjtcbiAgb25QcmVmZXJlbmNlc0VkaXQ/OiAoKSA9PiB2b2lkO1xuICBvblByZWZlcmVuY2VzU2F2ZT86ICgpID0+IHZvaWQ7XG4gIG9uUHJlZmVyZW5jZXNDbGVhcj86ICgpID0+IHZvaWQ7XG5cbiAgc2hvd1Jlc2V0PzogYm9vbGVhbjtcbiAgbWVudVBvc2l0aW9uPzogJ2Fib3ZlJyB8ICdiZWxvdyc7XG4gIG1lbnVDbGFzcz86IHN0cmluZztcbiAgYnV0dG9uTGFiZWw/OiBzdHJpbmc7XG4gIGJ1dHRvbkljb24/OiBzdHJpbmc7XG4gIHNob3dCdXR0b25JY29uPzogYm9vbGVhbjtcblxuICBzd2l0Y2hWaWV3Pzoge1xuICAgIGN1cnJlbnRWaWV3OiAnY2hhcnQnIHwgJ3RhYmxlJztcbiAgICBvblN3aXRjaDogKG5ld1ZpZXc6ICdjaGFydCcgfCAndGFibGUnKSA9PiB2b2lkO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclNsaWNlU3RhdGUge1xuICBzbGljZUNvbmZpZ3M6IFNsaWNlQ29uZmlnPGFueT5bXTtcbiAgdGFza3M6IGFueVtdO1xuICBmaWx0ZXJBcHBsaWVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJTdGF0ZSB7XG4gIHZpZXdNb2RlPzogJ2NoYXJ0JyB8ICd0YWJsZSc7XG5cbiAgdmlzaWJsZUZpZWxkcz86IHN0cmluZ1tdO1xuXG4gIHNlbGVjdGVkWD86IHN0cmluZztcbiAgc2VsZWN0ZWRZPzogc3RyaW5nO1xuICBzZWxlY3RlZFlBZ2dyZWdhdGU/OiBzdHJpbmc7XG5cbiAgc2VsZWN0ZWRHcm91cEJ5Pzogc3RyaW5nO1xuICBzZWxlY3RlZFNsaWNlcz86IHN0cmluZ1tdO1xuICBzZWxlY3RlZFRlbXBsYXRlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplckJ1dHRvbkV2ZW50IHtcbiAgdHlwZTogJ2ZpZWxkVG9nZ2xlZCcgfCAneFNlbGVjdGVkJyB8ICd5U2VsZWN0ZWQnIHwgJ2dyb3VwQnlTZWxlY3RlZCcgfCAndGVtcGxhdGVTZWxlY3RlZCcgfCAnc2xpY2VTZWxlY3RlZCcgfCAncmVzZXQnIHwgJ3ZpZXdTd2l0Y2hlZCc7XG4gIHN0YXRlOiBPcmdhbml6ZXJTdGF0ZTtcbiAgc291cmNlPzogJ3VzZXInIHwgJ2FwaSc7XG4gIHJlc29sdmVkWVVuaXQ/OiBzdHJpbmcgfCBVbml0Q29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclVuaWZpZWRTdGF0ZSB7XG4gIHZpZXdNb2RlOiAnY2hhcnQnIHwgJ3RhYmxlJztcbiAgZGltZW5zaW9uPzogc3RyaW5nO1xuICBtZXRyaWM/OiBzdHJpbmc7XG4gIG1ldHJpY0FnZ3JlZ2F0ZT86IHN0cmluZztcbiAgYnJlYWtkb3duPzogc3RyaW5nO1xuICBmaWx0ZXJzPzogc3RyaW5nW107XG59XG4iXX0=
|
|
@@ -23,4 +23,120 @@ export function buildYFields(indicators) {
|
|
|
23
23
|
export function resolveYKey(selectedY, selectedYAggregate) {
|
|
24
24
|
return selectedYAggregate ?? selectedY;
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
export function normalizeOrganizerState(state, config) {
|
|
27
|
+
const base = state || {};
|
|
28
|
+
const normalizedY = normalizeYSelection(base.selectedY, base.selectedYAggregate, config.yFields);
|
|
29
|
+
const selectedX = hasOption(config.xFields, base.selectedX) ? base.selectedX : undefined;
|
|
30
|
+
const selectedGroupBy = hasOption(config.groups, base.selectedGroupBy) ? base.selectedGroupBy : undefined;
|
|
31
|
+
const selectedSlices = (base.selectedSlices || []).filter(sliceId => hasOption(config.slices, sliceId));
|
|
32
|
+
const normalized = {
|
|
33
|
+
...base,
|
|
34
|
+
selectedX,
|
|
35
|
+
selectedY: normalizedY.selectedY,
|
|
36
|
+
selectedYAggregate: normalizedY.selectedYAggregate,
|
|
37
|
+
selectedGroupBy,
|
|
38
|
+
selectedSlices,
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
...normalized,
|
|
42
|
+
selectedTemplate: resolveMatchingTemplateId(config.templates, normalized, config)
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function normalizeTemplateToState(template, currentState, config) {
|
|
46
|
+
const base = normalizeOrganizerState(currentState, config);
|
|
47
|
+
const normalizedY = normalizeYSelection(template.yField, template.yAggregate, config.yFields, base);
|
|
48
|
+
const nextState = {
|
|
49
|
+
viewMode: base.viewMode,
|
|
50
|
+
visibleFields: base.visibleFields,
|
|
51
|
+
selectedX: hasOption(config.xFields, template.xField) ? template.xField : base.selectedX,
|
|
52
|
+
selectedY: normalizedY.selectedY,
|
|
53
|
+
selectedYAggregate: normalizedY.selectedYAggregate,
|
|
54
|
+
selectedGroupBy: hasOption(config.groups, template.groupBy) ? template.groupBy : base.selectedGroupBy,
|
|
55
|
+
selectedSlices: (template.selectedSlices || []).filter(sliceId => hasOption(config.slices, sliceId)),
|
|
56
|
+
};
|
|
57
|
+
const resolvedTemplateId = resolveMatchingTemplateId(config.templates, nextState, config);
|
|
58
|
+
return {
|
|
59
|
+
...nextState,
|
|
60
|
+
selectedTemplate: resolvedTemplateId ?? template.id
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function resolveMatchingTemplateId(templates, state, config) {
|
|
64
|
+
if (!templates?.length)
|
|
65
|
+
return undefined;
|
|
66
|
+
const normalizedState = normalizeStateWithoutTemplate(state, config);
|
|
67
|
+
return templates.find(template => {
|
|
68
|
+
const templateState = normalizeStateWithoutTemplate(normalizeTemplateToComparableState(template, normalizedState, config), config);
|
|
69
|
+
return sameOrganizerState(templateState, normalizedState);
|
|
70
|
+
})?.id;
|
|
71
|
+
}
|
|
72
|
+
function normalizeStateCore(selectedX, selectedY, selectedYAggregate, selectedGroupBy, selectedSlices, config, originalState) {
|
|
73
|
+
const normalizedY = normalizeYSelection(selectedY, selectedYAggregate, config.yFields, originalState);
|
|
74
|
+
return {
|
|
75
|
+
selectedX: hasOption(config.xFields, selectedX) ? selectedX : undefined,
|
|
76
|
+
selectedY: normalizedY.selectedY,
|
|
77
|
+
selectedYAggregate: normalizedY.selectedYAggregate,
|
|
78
|
+
selectedGroupBy: hasOption(config.groups, selectedGroupBy) ? selectedGroupBy : undefined,
|
|
79
|
+
selectedSlices: (selectedSlices || []).filter(sliceId => hasOption(config.slices, sliceId)),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function normalizeTemplateToComparableState(template, baseState, config) {
|
|
83
|
+
return normalizeStateCore(template.xField, template.yField, template.yAggregate, template.groupBy, template.selectedSlices, config, baseState);
|
|
84
|
+
}
|
|
85
|
+
function normalizeStateWithoutTemplate(state, config) {
|
|
86
|
+
const base = state || {};
|
|
87
|
+
return normalizeStateCore(base.selectedX, base.selectedY, base.selectedYAggregate, base.selectedGroupBy, base.selectedSlices, config, base);
|
|
88
|
+
}
|
|
89
|
+
function normalizeYSelection(selectedY, selectedYAggregate, yFields, fallbackState) {
|
|
90
|
+
if (!selectedY) {
|
|
91
|
+
return {
|
|
92
|
+
selectedY: fallbackState?.selectedY,
|
|
93
|
+
selectedYAggregate: fallbackState?.selectedYAggregate,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
const directField = yFields?.find(field => field.id === selectedY);
|
|
97
|
+
if (directField) {
|
|
98
|
+
if (!directField.aggregates?.length) {
|
|
99
|
+
return { selectedY: directField.id, selectedYAggregate: undefined };
|
|
100
|
+
}
|
|
101
|
+
const matchedAggregate = selectedYAggregate
|
|
102
|
+
? directField.aggregates.find(aggregate => aggregate.id === selectedYAggregate)
|
|
103
|
+
: undefined;
|
|
104
|
+
const fallbackAggregate = fallbackState?.selectedY === directField.id
|
|
105
|
+
? directField.aggregates.find(aggregate => aggregate.id === fallbackState.selectedYAggregate)
|
|
106
|
+
: undefined;
|
|
107
|
+
const resolvedAggregate = matchedAggregate ?? fallbackAggregate ?? directField.aggregates[0];
|
|
108
|
+
return {
|
|
109
|
+
selectedY: directField.id,
|
|
110
|
+
selectedYAggregate: resolvedAggregate?.id,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
const aggregateParent = yFields?.find(field => field.aggregates?.some(aggregate => aggregate.id === selectedY));
|
|
114
|
+
if (aggregateParent) {
|
|
115
|
+
return {
|
|
116
|
+
selectedY: aggregateParent.id,
|
|
117
|
+
selectedYAggregate: selectedY,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
selectedY: fallbackState?.selectedY,
|
|
122
|
+
selectedYAggregate: fallbackState?.selectedYAggregate,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
function sameOrganizerState(left, right) {
|
|
126
|
+
return left.selectedX === right.selectedX
|
|
127
|
+
&& left.selectedY === right.selectedY
|
|
128
|
+
&& left.selectedYAggregate === right.selectedYAggregate
|
|
129
|
+
&& left.selectedGroupBy === right.selectedGroupBy
|
|
130
|
+
&& sameSlices(left.selectedSlices || [], right.selectedSlices || []);
|
|
131
|
+
}
|
|
132
|
+
function sameSlices(left, right) {
|
|
133
|
+
if (left.length !== right.length)
|
|
134
|
+
return false;
|
|
135
|
+
const sortedLeft = [...left].sort((a, b) => a.localeCompare(b));
|
|
136
|
+
const sortedRight = [...right].sort((a, b) => a.localeCompare(b));
|
|
137
|
+
return sortedLeft.every((value, index) => value === sortedRight[index]);
|
|
138
|
+
}
|
|
139
|
+
function hasOption(items, id) {
|
|
140
|
+
return !!id && !!items?.some(item => item.id === id);
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25ldGVtZS9qcXVlcnktb3JnYW5pemVyL3NyYy9saWIvbW9kZWxzL29yZ2FuaXplci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLFVBQVUsWUFBWSxDQUFDLFVBQWlDO0lBQzVELE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUUvQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtRQUNsQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxJQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUU7Z0JBQ3RCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFB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SUFDaEUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQXdDLEVBQUUsRUFBc0I7SUFDakYsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JnYW5pemVyQ29uZmlnLCBPcmdhbml6ZXJTdGF0ZSwgT3JnYW5pemVyVGVtcGxhdGUsIE9yZ2FuaXplcllGaWVsZCB9IGZyb20gJy4vb3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplcllJbmRpY2F0b3Ige1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBncm91cD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkWUZpZWxkcyhpbmRpY2F0b3JzOiBPcmdhbml6ZXJZSW5kaWNhdG9yW10pOiBPcmdhbml6ZXJZRmllbGRbXSB7XG4gIGNvbnN0IG9yZGVyZWQ6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBPcmdhbml6ZXJZRmllbGQ+KCk7XG5cbiAgZm9yIChjb25zdCBpbmRpY2F0b3Igb2YgaW5kaWNhdG9ycykge1xuICAgIGNvbnN0IGdyb3VwS2V5ID0gaW5kaWNhdG9yLmdyb3VwO1xuICAgIGlmIChncm91cEtleSkge1xuICAgICAgaWYgKCFtYXAuaGFzKGdyb3VwS2V5KSkge1xuICAgICAgICBvcmRlcmVkLnB1c2goZ3JvdXBLZXkpO1xuICAgICAgICBtYXAuc2V0KGdyb3VwS2V5LCB7IGlkOiBncm91cEtleSwgbGFiZWw6IGdyb3VwS2V5LCBhZ2dyZWdhdGVzOiBbXSB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmVudCA9IG1hcC5nZXQoZ3JvdXBLZXkpO1xuICAgICAgaWYgKHBhcmVudD8uYWdncmVnYXRlcykge1xuICAgICAgICBwYXJlbnQuYWdncmVnYXRlcy5wdXNoKHsgaWQ6IGluZGljYXRvci5pZCwgbGFiZWw6IGluZGljYXRvci5sYWJlbCB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3JkZXJlZC5wdXNoKGluZGljYXRvci5pZCk7XG4gICAgICBtYXAuc2V0KGluZGljYXRvci5pZCwgeyBpZDogaW5kaWNhdG9yLmlkLCBsYWJlbDogaW5kaWNhdG9yLmxhYmVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvcmRlcmVkLm1hcChrID0+IG1hcC5nZXQoaykpLmZpbHRlcigoZik6IGYgaXMgT3JnYW5pemVyWUZpZWxkID0+ICEhZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlWUtleShcbiAgc2VsZWN0ZWRZOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gc2VsZWN0ZWRZQWdncmVnYXRlID8/IHNlbGVjdGVkWTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9yZ2FuaXplclN0YXRlKFxuICBzdGF0ZTogT3JnYW5pemVyU3RhdGUgfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3QgYmFzZSA9IHN0YXRlIHx8IHt9O1xuICBjb25zdCBub3JtYWxpemVkWSA9IG5vcm1hbGl6ZVlTZWxlY3Rpb24oYmFzZS5zZWxlY3RlZFksIGJhc2Uuc2VsZWN0ZWRZQWdncmVnYXRlLCBjb25maWcueUZpZWxkcyk7XG4gIGNvbnN0IHNlbGVjdGVkWCA9IGhhc09wdGlvbihjb25maWcueEZpZWxkcywgYmFzZS5zZWxlY3RlZFgpID8gYmFzZS5zZWxlY3RlZFggOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHNlbGVjdGVkR3JvdXBCeSA9IGhhc09wdGlvbihjb25maWcuZ3JvdXBzLCBiYXNlLnNlbGVjdGVkR3JvdXBCeSkgPyBiYXNlLnNlbGVjdGVkR3JvdXBCeSA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2VsZWN0ZWRTbGljZXMgPSAoYmFzZS5zZWxlY3RlZFNsaWNlcyB8fCBbXSkuZmlsdGVyKHNsaWNlSWQgPT4gaGFzT3B0aW9uKGNvbmZpZy5zbGljZXMsIHNsaWNlSWQpKTtcblxuICBjb25zdCBub3JtYWxpemVkOiBPcmdhbml6ZXJTdGF0ZSA9IHtcbiAgICAuLi5iYXNlLFxuICAgIHNlbGVjdGVkWCxcbiAgICBzZWxlY3RlZFk6IG5vcm1hbGl6ZWRZLnNlbGVjdGVkWSxcbiAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IG5vcm1hbGl6ZWRZLnNlbGVjdGVkWUFnZ3JlZ2F0ZSxcbiAgICBzZWxlY3RlZEdyb3VwQnksXG4gICAgc2VsZWN0ZWRTbGljZXMsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5ub3JtYWxpemVkLFxuICAgIHNlbGVjdGVkVGVtcGxhdGU6IHJlc29sdmVNYXRjaGluZ1RlbXBsYXRlSWQoY29uZmlnLnRlbXBsYXRlcywgbm9ybWFsaXplZCwgY29uZmlnKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGVtcGxhdGVUb1N0YXRlKFxuICB0ZW1wbGF0ZTogT3JnYW5pemVyVGVtcGxhdGUsXG4gIGN1cnJlbnRTdGF0ZTogT3JnYW5pemVyU3RhdGUgfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3QgYmFzZSA9IG5vcm1hbGl6ZU9yZ2FuaXplclN0YXRlKGN1cnJlbnRTdGF0ZSwgY29uZmlnKTtcbiAgY29uc3Qgbm9ybWFsaXplZFkgPSBub3JtYWxpemVZU2VsZWN0aW9uKHRlbXBsYXRlLnlGaWVsZCwgdGVtcGxhdGUueUFnZ3JlZ2F0ZSwgY29uZmlnLnlGaWVsZHMsIGJhc2UpO1xuXG4gIGNvbnN0IG5leHRTdGF0ZTogT3JnYW5pemVyU3RhdGUgPSB7XG4gICAgdmlld01vZGU6IGJhc2Uudmlld01vZGUsXG4gICAgdmlzaWJsZUZpZWxkczogYmFzZS52aXNpYmxlRmllbGRzLFxuICAgIHNlbGVjdGVkWDogaGFzT3B0aW9uKGNvbmZpZy54RmllbGRzLCB0ZW1wbGF0ZS54RmllbGQpID8gdGVtcGxhdGUueEZpZWxkIDogYmFzZS5zZWxlY3RlZFgsXG4gICAgc2VsZWN0ZWRZOiBub3JtYWxpemVkWS5zZWxlY3RlZFksXG4gICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBub3JtYWxpemVkWS5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gICAgc2VsZWN0ZWRHcm91cEJ5OiBoYXNPcHRpb24oY29uZmlnLmdyb3VwcywgdGVtcGxhdGUuZ3JvdXBCeSkgPyB0ZW1wbGF0ZS5ncm91cEJ5IDogYmFzZS5zZWxlY3RlZEdyb3VwQnksXG4gICAgc2VsZWN0ZWRTbGljZXM6ICh0ZW1wbGF0ZS5zZWxlY3RlZFNsaWNlcyB8fCBbXSkuZmlsdGVyKHNsaWNlSWQgPT4gaGFzT3B0aW9uKGNvbmZpZy5zbGljZXMsIHNsaWNlSWQpKSxcbiAgfTtcblxuICBjb25zdCByZXNvbHZlZFRlbXBsYXRlSWQgPSByZXNvbHZlTWF0Y2hpbmdUZW1wbGF0ZUlkKGNvbmZpZy50ZW1wbGF0ZXMsIG5leHRTdGF0ZSwgY29uZmlnKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5uZXh0U3RhdGUsXG4gICAgc2VsZWN0ZWRUZW1wbGF0ZTogcmVzb2x2ZWRUZW1wbGF0ZUlkID8/IHRlbXBsYXRlLmlkXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTWF0Y2hpbmdUZW1wbGF0ZUlkKFxuICB0ZW1wbGF0ZXM6IE9yZ2FuaXplclRlbXBsYXRlW10gfCB1bmRlZmluZWQsXG4gIHN0YXRlOiBPcmdhbml6ZXJTdGF0ZSB8IHVuZGVmaW5lZCxcbiAgY29uZmlnOiBQaWNrPE9yZ2FuaXplckNvbmZpZywgJ3hGaWVsZHMnIHwgJ3lGaWVsZHMnIHwgJ2dyb3VwcycgfCAnc2xpY2VzJyB8ICd0ZW1wbGF0ZXMnPlxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0ZW1wbGF0ZXM/Lmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBub3JtYWxpemVkU3RhdGUgPSBub3JtYWxpemVTdGF0ZVdpdGhvdXRUZW1wbGF0ZShzdGF0ZSwgY29uZmlnKTtcbiAgcmV0dXJuIHRlbXBsYXRlcy5maW5kKHRlbXBsYXRlID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZVN0YXRlID0gbm9ybWFsaXplU3RhdGVXaXRob3V0VGVtcGxhdGUoXG4gICAgICBub3JtYWxpemVUZW1wbGF0ZVRvQ29tcGFyYWJsZVN0YXRlKHRlbXBsYXRlLCBub3JtYWxpemVkU3RhdGUsIGNvbmZpZyksXG4gICAgICBjb25maWdcbiAgICApO1xuICAgIHJldHVybiBzYW1lT3JnYW5pemVyU3RhdGUodGVtcGxhdGVTdGF0ZSwgbm9ybWFsaXplZFN0YXRlKTtcbiAgfSk/LmlkO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTdGF0ZUNvcmUoXG4gIHNlbGVjdGVkWDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBzZWxlY3RlZFk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgc2VsZWN0ZWRZQWdncmVnYXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkR3JvdXBCeTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBzZWxlY3RlZFNsaWNlczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcyc+LFxuICBvcmlnaW5hbFN0YXRlPzogT3JnYW5pemVyU3RhdGVcbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3Qgbm9ybWFsaXplZFkgPSBub3JtYWxpemVZU2VsZWN0aW9uKHNlbGVjdGVkWSwgc2VsZWN0ZWRZQWdncmVnYXRlLCBjb25maWcueUZpZWxkcywgb3JpZ2luYWxTdGF0ZSk7XG4gIHJldHVybiB7XG4gICAgc2VsZWN0ZWRYOiBoYXNPcHRpb24oY29uZmlnLnhGaWVsZHMsIHNlbGVjdGVkWCkgPyBzZWxlY3RlZFggOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWRZOiBub3JtYWxpemVkWS5zZWxlY3RlZFksXG4gICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBub3JtYWxpemVkWS5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gICAgc2VsZWN0ZWRHcm91cEJ5OiBoYXNPcHRpb24oY29uZmlnLmdyb3Vwcywgc2VsZWN0ZWRHcm91cEJ5KSA/IHNlbGVjdGVkR3JvdXBCeSA6IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZFNsaWNlczogKHNlbGVjdGVkU2xpY2VzIHx8IFtdKS5maWx0ZXIoc2xpY2VJZCA9PiBoYXNPcHRpb24oY29uZmlnLnNsaWNlcywgc2xpY2VJZCkpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVUZW1wbGF0ZVRvQ29tcGFyYWJsZVN0YXRlKFxuICB0ZW1wbGF0ZTogT3JnYW5pemVyVGVtcGxhdGUsXG4gIGJhc2VTdGF0ZTogT3JnYW5pemVyU3RhdGUsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVN0YXRlQ29yZShcbiAgICB0ZW1wbGF0ZS54RmllbGQsXG4gICAgdGVtcGxhdGUueUZpZWxkLFxuICAgIHRlbXBsYXRlLnlBZ2dyZWdhdGUsXG4gICAgdGVtcGxhdGUuZ3JvdXBCeSxcbiAgICB0ZW1wbGF0ZS5zZWxlY3RlZFNsaWNlcyxcbiAgICBjb25maWcsXG4gICAgYmFzZVN0YXRlXG4gICk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0YXRlV2l0aG91dFRlbXBsYXRlKFxuICBzdGF0ZTogT3JnYW5pemVyU3RhdGUgfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3QgYmFzZSA9IHN0YXRlIHx8IHt9O1xuICByZXR1cm4gbm9ybWFsaXplU3RhdGVDb3JlKFxuICAgIGJhc2Uuc2VsZWN0ZWRYLFxuICAgIGJhc2Uuc2VsZWN0ZWRZLFxuICAgIGJhc2Uuc2VsZWN0ZWRZQWdncmVnYXRlLFxuICAgIGJhc2Uuc2VsZWN0ZWRHcm91cEJ5LFxuICAgIGJhc2Uuc2VsZWN0ZWRTbGljZXMsXG4gICAgY29uZmlnLFxuICAgIGJhc2VcbiAgKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplWVNlbGVjdGlvbihcbiAgc2VsZWN0ZWRZOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB5RmllbGRzOiBPcmdhbml6ZXJZRmllbGRbXSB8IHVuZGVmaW5lZCxcbiAgZmFsbGJhY2tTdGF0ZT86IE9yZ2FuaXplclN0YXRlXG4pOiBQaWNrPE9yZ2FuaXplclN0YXRlLCAnc2VsZWN0ZWRZJyB8ICdzZWxlY3RlZFlBZ2dyZWdhdGUnPiB7XG4gIGlmICghc2VsZWN0ZWRZKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkWTogZmFsbGJhY2tTdGF0ZT8uc2VsZWN0ZWRZLFxuICAgICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGRpcmVjdEZpZWxkID0geUZpZWxkcz8uZmluZChmaWVsZCA9PiBmaWVsZC5pZCA9PT0gc2VsZWN0ZWRZKTtcbiAgaWYgKGRpcmVjdEZpZWxkKSB7XG4gICAgaWYgKCFkaXJlY3RGaWVsZC5hZ2dyZWdhdGVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7IHNlbGVjdGVkWTogZGlyZWN0RmllbGQuaWQsIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hlZEFnZ3JlZ2F0ZSA9IHNlbGVjdGVkWUFnZ3JlZ2F0ZVxuICAgICAgPyBkaXJlY3RGaWVsZC5hZ2dyZWdhdGVzLmZpbmQoYWdncmVnYXRlID0+IGFnZ3JlZ2F0ZS5pZCA9PT0gc2VsZWN0ZWRZQWdncmVnYXRlKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmFsbGJhY2tBZ2dyZWdhdGUgPSBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFkgPT09IGRpcmVjdEZpZWxkLmlkXG4gICAgICA/IGRpcmVjdEZpZWxkLmFnZ3JlZ2F0ZXMuZmluZChhZ2dyZWdhdGUgPT4gYWdncmVnYXRlLmlkID09PSBmYWxsYmFja1N0YXRlLnNlbGVjdGVkWUFnZ3JlZ2F0ZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlc29sdmVkQWdncmVnYXRlID0gbWF0Y2hlZEFnZ3JlZ2F0ZSA/PyBmYWxsYmFja0FnZ3JlZ2F0ZSA/PyBkaXJlY3RGaWVsZC5hZ2dyZWdhdGVzWzBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkWTogZGlyZWN0RmllbGQuaWQsXG4gICAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IHJlc29sdmVkQWdncmVnYXRlPy5pZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgYWdncmVnYXRlUGFyZW50ID0geUZpZWxkcz8uZmluZChmaWVsZCA9PiBmaWVsZC5hZ2dyZWdhdGVzPy5zb21lKGFnZ3JlZ2F0ZSA9PiBhZ2dyZWdhdGUuaWQgPT09IHNlbGVjdGVkWSkpO1xuICBpZiAoYWdncmVnYXRlUGFyZW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkWTogYWdncmVnYXRlUGFyZW50LmlkLFxuICAgICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBzZWxlY3RlZFksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2VsZWN0ZWRZOiBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFksXG4gICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHNhbWVPcmdhbml6ZXJTdGF0ZShsZWZ0OiBPcmdhbml6ZXJTdGF0ZSwgcmlnaHQ6IE9yZ2FuaXplclN0YXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBsZWZ0LnNlbGVjdGVkWCA9PT0gcmlnaHQuc2VsZWN0ZWRYXG4gICAgJiYgbGVmdC5zZWxlY3RlZFkgPT09IHJpZ2h0LnNlbGVjdGVkWVxuICAgICYmIGxlZnQuc2VsZWN0ZWRZQWdncmVnYXRlID09PSByaWdodC5zZWxlY3RlZFlBZ2dyZWdhdGVcbiAgICAmJiBsZWZ0LnNlbGVjdGVkR3JvdXBCeSA9PT0gcmlnaHQuc2VsZWN0ZWRHcm91cEJ5XG4gICAgJiYgc2FtZVNsaWNlcyhsZWZ0LnNlbGVjdGVkU2xpY2VzIHx8IFtdLCByaWdodC5zZWxlY3RlZFNsaWNlcyB8fCBbXSk7XG59XG5cbmZ1bmN0aW9uIHNhbWVTbGljZXMobGVmdDogc3RyaW5nW10sIHJpZ2h0OiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICBpZiAobGVmdC5sZW5ndGggIT09IHJpZ2h0Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBzb3J0ZWRMZWZ0ID0gWy4uLmxlZnRdLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG4gIGNvbnN0IHNvcnRlZFJpZ2h0ID0gWy4uLnJpZ2h0XS5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuICByZXR1cm4gc29ydGVkTGVmdC5ldmVyeSgodmFsdWUsIGluZGV4KSA9PiB2YWx1ZSA9PT0gc29ydGVkUmlnaHRbaW5kZXhdKTtcbn1cblxuZnVuY3Rpb24gaGFzT3B0aW9uKGl0ZW1zOiBBcnJheTx7IGlkOiBzdHJpbmcgfT4gfCB1bmRlZmluZWQsIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhaWQgJiYgISFpdGVtcz8uc29tZShpdGVtID0+IGl0ZW0uaWQgPT09IGlkKTtcbn1cbiJdfQ==
|