@qrvey/widget-configurability 0.0.0-beta.4589 → 0.0.0-beta.4657

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 (40) hide show
  1. package/README.md +53 -0
  2. package/dist/cjs/index.js +12 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/metadata/customization-metadata.js +241 -0
  5. package/dist/cjs/metadata/customization-metadata.js.map +1 -0
  6. package/dist/cjs/metadata/index.js +11 -0
  7. package/dist/cjs/metadata/index.js.map +1 -0
  8. package/dist/cjs/metadata/labels/chart-panel.labels.js +56 -0
  9. package/dist/cjs/metadata/labels/chart-panel.labels.js.map +1 -0
  10. package/dist/cjs/metadata/labels/dashboard.labels.js +207 -0
  11. package/dist/cjs/metadata/labels/dashboard.labels.js.map +1 -0
  12. package/dist/cjs/metadata/metadata.models.js +3 -0
  13. package/dist/cjs/metadata/metadata.models.js.map +1 -0
  14. package/dist/cjs/models/remote.models.js +3 -0
  15. package/dist/cjs/models/remote.models.js.map +1 -0
  16. package/dist/cjs/models/validation.models.js +3 -0
  17. package/dist/cjs/models/validation.models.js.map +1 -0
  18. package/dist/cjs/remote/remote-customization.loader.js +213 -0
  19. package/dist/cjs/remote/remote-customization.loader.js.map +1 -0
  20. package/dist/cjs/structural-manager.js +35 -2
  21. package/dist/cjs/structural-manager.js.map +1 -1
  22. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  23. package/dist/cjs/utils/defaults.helpers.js +3 -0
  24. package/dist/cjs/utils/defaults.helpers.js.map +1 -1
  25. package/dist/cjs/utils/layers.helpers.js +178 -0
  26. package/dist/cjs/utils/layers.helpers.js.map +1 -0
  27. package/dist/cjs/utils/logger.helpers.js +10 -0
  28. package/dist/cjs/utils/logger.helpers.js.map +1 -0
  29. package/dist/cjs/utils/scope.helpers.js +4 -1
  30. package/dist/cjs/utils/scope.helpers.js.map +1 -1
  31. package/dist/cjs/validation/customization.validator.js +366 -0
  32. package/dist/cjs/validation/customization.validator.js.map +1 -0
  33. package/dist/esm/index.mjs +846 -28
  34. package/dist/esm/index.mjs.map +1 -1
  35. package/dist/esm/metadata.mjs +2750 -0
  36. package/dist/esm/metadata.mjs.map +1 -0
  37. package/dist/types/customization.models-CCSWjfb2.d.ts +47 -0
  38. package/dist/types/index.d.ts +98 -47
  39. package/dist/types/metadata.d.ts +59 -0
  40. package/package.json +7 -1
package/README.md CHANGED
@@ -117,11 +117,63 @@ function buildStructure(
117
117
  widget: Widget,
118
118
  customization?: WidgetCustomization,
119
119
  version?: WidgetVersion,
120
+ options?: BuildStructureOptions,
120
121
  ): WidgetStructureInstance
121
122
  ```
122
123
 
123
124
  Throws an error if no matching configuration is found.
124
125
 
126
+ `options.layers` applies stored customizations before `customization`, in order, each over what the previous
127
+ one left: nothing removed by an earlier layer can come back, a `keep` of keys already removed empties its
128
+ level, and defaults merge by leaf key with the last layer winning. Without layers the result is unchanged.
129
+
130
+ ```ts
131
+ const result = await loadRemoteCustomization({ widget: 'dashboard', customizationId, domain, qvToken });
132
+ if (result.status === 'error') showConfigurationError();
133
+ const structure = buildStructure(Widget.DASHBOARD, inlineCustomization, undefined, {
134
+ layers: remoteCustomizationLayers(result),
135
+ });
136
+ ```
137
+
138
+ ### `loadRemoteCustomization`
139
+
140
+ Resolves the stored definition a widget uses as its base, falling back to `default` when the requested one does
141
+ not exist. It calls admin_api_manager: `GET /api/admin/v5/customizations/widgets/{widget}/{id}` or
142
+ `GET /api/admin/v5/customizations/widgets/{widget}?context=`. Returns
143
+ `{ status: 'found' | 'fallback' | 'none' | 'error', definition?, error? }`. A 404 means "not found" whatever its
144
+ body says; other error bodies are not read, only their status is reported. One request per URL is shared for
145
+ the life of the page. It uses the global `fetch`, sends `Authorization: Bearer` and/or `x-api-key` only to the
146
+ configured domain and never logs them.
147
+
148
+ ### Customization metadata (`@qrvey/widget-configurability/metadata`)
149
+
150
+ A separate entry point, so widgets do not ship the labels. Admin Center builds its switch tree from it:
151
+
152
+ - `getCustomizationTree(widget, { views, subModules? })`: the labelled tree of a view, or of the embedded widget
153
+ (`subModules: ['chartPanel']`), derived from the structure, so a new key appears and a removed one disappears.
154
+ - `getCustomizationTreeState(widget, customization, target)`: the same tree with `visible: true | false | 'mixed'`
155
+ per node, computed with the engine, and `lockedBy` on hidden nodes a switch cannot bring back (a keep, a wildcard,
156
+ a root verb, a hidden parent).
157
+ - `toggleCustomizationKey(customization, target, key, visible)`: the minimal change for one switch, in the remove
158
+ list of each target view (or of its submodule); it never touches keep, conditional, defaults or root verbs.
159
+
160
+ Labels are English only, looked up by full key path and then by leaf id; a guard spec fails when a key has no label
161
+ or a label names no key.
162
+
163
+ ### `validateCustomization`
164
+
165
+ Strict validation for writes (admin_api_manager and Admin Center use the same function):
166
+
167
+ ```ts
168
+ validateCustomization('dashboard', { views: { design: { remove: ['menuBar.file.qMnuDeleteDsh'] } } });
169
+ // { valid: false, errors: [{ path: ['views', 'design', 'remove', 0], code: 'UNKNOWN_KEY', severity: 'error',
170
+ // message: "Key 'menuBar.file.qMnuDeleteDsh' does not exist in the design view",
171
+ // suggestion: 'menuBar.file.qMnuDeleteDash' }] }
172
+ ```
173
+
174
+ At runtime nothing throws: unknown keys are ignored. A customization hides UI; it is not an authorization
175
+ mechanism.
176
+
125
177
  ---
126
178
 
127
179
  ### `WidgetStructureInstance`
@@ -133,6 +185,7 @@ Class that wraps a widget’s “view map” and provides helper methods:
133
185
  | `isVisible(key: string, state?: ConditionState): boolean` | Returns `true` if the key exists and its conditions (if any) are met |
134
186
  | `getChildMap(key: string): WidgetViewMap \| undefined` | If the key has a nested `childMap`, returns it; otherwise `undefined` |
135
187
  | `getSubmodule(module: string, view?: string): WidgetCustomization \| undefined` | Retrieves a specific sub-module customization under `subModules` |
188
+ | `getSubmoduleLayers(module: string, view?: string)` | Submodule customizations of the stored layers (`structureFromSubmodule` applies them) |
136
189
  | `getDefaults(key: string): Record<string, unknown> \| undefined` | Retrieves default settings for a given key (e.g. `assetList.defaults`) |
137
190
 
138
191
  ---
package/dist/cjs/index.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.DashboardDoc = exports.hostKeepInheritance = exports.DOWNLOAD_MODAL_V1_KEYS = exports.DOWNLOAD_MODAL_V1_DEFAULTS = exports.structureFromSubmodule = exports.structureFrom = exports.scopeToCustomization = exports.isWidgetStructureScope = exports.extractCustomization = exports.validateDefaults = exports.validateBoolean = exports.DX_VALIDATOR_MAP = exports.DOWNLOAD_MODAL_VALIDATOR_MAP = exports.evaluateCondition = exports.checkConditions = exports.getWidgetStructure = exports.calculateViewMap = exports.calculateRootDefaults = exports.WIDGET_SUBMODULE_NAMES = exports.WIDGET_STRUCTURE_SCOPE_KIND = exports.WIDGET_STRUCTURE_SCOPE_FORMAT = exports.Widget = exports.getWidgetConfig = exports.buildStructure = exports.WidgetStructureInstance = exports.WidgetVersion = void 0;
36
+ exports.DashboardDoc = exports.remoteCustomizationLayers = exports.loadRemoteCustomization = exports.isValidCustomizationId = exports.clearRemoteCustomizationCache = exports.DEFAULT_CUSTOMIZATION_ID = exports.CUSTOMIZATIONS_API_PATH = exports.validateCustomization = exports.isEmptyCustomization = exports.formatCustomizationPath = exports.hostKeepInheritance = exports.DOWNLOAD_MODAL_V1_KEYS = exports.DOWNLOAD_MODAL_V1_DEFAULTS = exports.structureFromSubmodule = exports.structureFrom = exports.scopeToCustomization = exports.isWidgetStructureScope = exports.extractCustomization = exports.validateDefaults = exports.validateBoolean = exports.DX_VALIDATOR_MAP = exports.DOWNLOAD_MODAL_VALIDATOR_MAP = exports.evaluateCondition = exports.checkConditions = exports.getWidgetStructure = exports.calculateViewMap = exports.calculateRootDefaults = exports.WIDGET_SUBMODULE_NAMES = exports.WIDGET_STRUCTURE_SCOPE_KIND = exports.WIDGET_STRUCTURE_SCOPE_FORMAT = exports.Widget = exports.getWidgetConfig = exports.buildStructure = exports.WidgetStructureInstance = exports.WidgetVersion = void 0;
37
37
  const structure_constants_1 = require("./constants/structure.constants");
38
38
  Object.defineProperty(exports, "WidgetVersion", { enumerable: true, get: function () { return structure_constants_1.WidgetVersion; } });
39
39
  var structural_manager_1 = require("./structural-manager");
@@ -67,5 +67,16 @@ var download_modal_structure_v1_1 = require("./structures/download-modal.structu
67
67
  Object.defineProperty(exports, "DOWNLOAD_MODAL_V1_DEFAULTS", { enumerable: true, get: function () { return download_modal_structure_v1_1.DOWNLOAD_MODAL_V1_DEFAULTS; } });
68
68
  Object.defineProperty(exports, "DOWNLOAD_MODAL_V1_KEYS", { enumerable: true, get: function () { return download_modal_structure_v1_1.DOWNLOAD_MODAL_V1_KEYS; } });
69
69
  Object.defineProperty(exports, "hostKeepInheritance", { enumerable: true, get: function () { return download_modal_structure_v1_1.hostKeepInheritance; } });
70
+ var customization_validator_1 = require("./validation/customization.validator");
71
+ Object.defineProperty(exports, "formatCustomizationPath", { enumerable: true, get: function () { return customization_validator_1.formatCustomizationPath; } });
72
+ Object.defineProperty(exports, "isEmptyCustomization", { enumerable: true, get: function () { return customization_validator_1.isEmptyCustomization; } });
73
+ Object.defineProperty(exports, "validateCustomization", { enumerable: true, get: function () { return customization_validator_1.validateCustomization; } });
74
+ var remote_customization_loader_1 = require("./remote/remote-customization.loader");
75
+ Object.defineProperty(exports, "CUSTOMIZATIONS_API_PATH", { enumerable: true, get: function () { return remote_customization_loader_1.CUSTOMIZATIONS_API_PATH; } });
76
+ Object.defineProperty(exports, "DEFAULT_CUSTOMIZATION_ID", { enumerable: true, get: function () { return remote_customization_loader_1.DEFAULT_CUSTOMIZATION_ID; } });
77
+ Object.defineProperty(exports, "clearRemoteCustomizationCache", { enumerable: true, get: function () { return remote_customization_loader_1.clearRemoteCustomizationCache; } });
78
+ Object.defineProperty(exports, "isValidCustomizationId", { enumerable: true, get: function () { return remote_customization_loader_1.isValidCustomizationId; } });
79
+ Object.defineProperty(exports, "loadRemoteCustomization", { enumerable: true, get: function () { return remote_customization_loader_1.loadRemoteCustomization; } });
80
+ Object.defineProperty(exports, "remoteCustomizationLayers", { enumerable: true, get: function () { return remote_customization_loader_1.remoteCustomizationLayers; } });
70
81
  exports.DashboardDoc = __importStar(require("./doc/dashboard.structure.doc"));
71
82
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAgE;AA4BvD,8FA5BA,mCAAa,OA4BA;AAEtB,2DAI8B;AAH1B,6HAAA,uBAAuB,OAAA;AACvB,oHAAA,cAAc,OAAA;AACd,qHAAA,eAAe,OAAA;AAEnB,uEAKyC;AAJrC,6GAAA,MAAM,OAAA;AACN,oIAAA,6BAA6B,OAAA;AAC7B,kIAAA,2BAA2B,OAAA;AAC3B,6HAAA,sBAAsB,OAAA;AAE1B,iEAIoC;AAHhC,2HAAA,qBAAqB,OAAA;AACrB,sHAAA,gBAAgB,OAAA;AAChB,wHAAA,kBAAkB,OAAA;AAEtB,iEAAgF;AAAvE,qHAAA,eAAe,OAAA;AAAE,uHAAA,iBAAiB,OAAA;AAC3C,6DAKkC;AAJ9B,gIAAA,4BAA4B,OAAA;AAC5B,oHAAA,gBAAgB,OAAA;AAChB,mHAAA,eAAe,OAAA;AACf,oHAAA,gBAAgB,OAAA;AAEpB,uDAM+B;AAL3B,qHAAA,oBAAoB,OAAA;AACpB,uHAAA,sBAAsB,OAAA;AACtB,qHAAA,oBAAoB,OAAA;AACpB,8GAAA,aAAa,OAAA;AACb,uHAAA,sBAAsB,OAAA;AAG1B,wFAIkD;AAH9C,yIAAA,0BAA0B,OAAA;AAC1B,qIAAA,sBAAsB,OAAA;AACtB,kIAAA,mBAAmB,OAAA;AAIvB,8EAA8D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAgE;AA0CvD,8FA1CA,mCAAa,OA0CA;AAEtB,2DAI8B;AAH1B,6HAAA,uBAAuB,OAAA;AACvB,oHAAA,cAAc,OAAA;AACd,qHAAA,eAAe,OAAA;AAEnB,uEAKyC;AAJrC,6GAAA,MAAM,OAAA;AACN,oIAAA,6BAA6B,OAAA;AAC7B,kIAAA,2BAA2B,OAAA;AAC3B,6HAAA,sBAAsB,OAAA;AAE1B,iEAIoC;AAHhC,2HAAA,qBAAqB,OAAA;AACrB,sHAAA,gBAAgB,OAAA;AAChB,wHAAA,kBAAkB,OAAA;AAEtB,iEAAgF;AAAvE,qHAAA,eAAe,OAAA;AAAE,uHAAA,iBAAiB,OAAA;AAC3C,6DAKkC;AAJ9B,gIAAA,4BAA4B,OAAA;AAC5B,oHAAA,gBAAgB,OAAA;AAChB,mHAAA,eAAe,OAAA;AACf,oHAAA,gBAAgB,OAAA;AAEpB,uDAM+B;AAL3B,qHAAA,oBAAoB,OAAA;AACpB,uHAAA,sBAAsB,OAAA;AACtB,qHAAA,oBAAoB,OAAA;AACpB,8GAAA,aAAa,OAAA;AACb,uHAAA,sBAAsB,OAAA;AAG1B,wFAIkD;AAH9C,yIAAA,0BAA0B,OAAA;AAC1B,qIAAA,sBAAsB,OAAA;AACtB,kIAAA,mBAAmB,OAAA;AAIvB,gFAI8C;AAH1C,kIAAA,uBAAuB,OAAA;AACvB,+HAAA,oBAAoB,OAAA;AACpB,gIAAA,qBAAqB,OAAA;AAEzB,oFAO8C;AAN1C,sIAAA,uBAAuB,OAAA;AACvB,uIAAA,wBAAwB,OAAA;AACxB,4IAAA,6BAA6B,OAAA;AAC7B,qIAAA,sBAAsB,OAAA;AACtB,sIAAA,uBAAuB,OAAA;AACvB,wIAAA,yBAAyB,OAAA;AAG7B,8EAA8D"}
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.widgetMetadata = void 0;
15
+ exports.structureKeysOf = structureKeysOf;
16
+ exports.getCustomizationLabel = getCustomizationLabel;
17
+ exports.getCustomizationTree = getCustomizationTree;
18
+ exports.lockOf = lockOf;
19
+ exports.getCustomizationTreeState = getCustomizationTreeState;
20
+ exports.toggleCustomizationKey = toggleCustomizationKey;
21
+ const chart_panel_labels_1 = require("./labels/chart-panel.labels");
22
+ const dashboard_labels_1 = require("./labels/dashboard.labels");
23
+ const structure_constants_1 = require("../constants/structure.constants");
24
+ const structural_manager_1 = require("../structural-manager");
25
+ const scope_helpers_1 = require("../utils/scope.helpers");
26
+ const structural_helpers_1 = require("../utils/structural.helpers");
27
+ // Label maps by widget; a new widget adds its map here and the guard spec checks it (3.7.1).
28
+ exports.widgetMetadata = {
29
+ [structure_constants_1.Widget.DASHBOARD]: { labels: dashboard_labels_1.DASHBOARD_LABELS },
30
+ [structure_constants_1.Widget.CHART_PANEL]: { labels: chart_panel_labels_1.CHART_PANEL_LABELS },
31
+ };
32
+ const widgetOfSubmodule = (name) => {
33
+ const widget = Object.keys(structure_constants_1.WIDGET_SUBMODULE_NAMES).find((key) => structure_constants_1.WIDGET_SUBMODULE_NAMES[key] === name);
34
+ if (!widget)
35
+ throw new Error(`No widget registered for the submodule ${name}`);
36
+ return widget;
37
+ };
38
+ function resolveTarget(widget, target, version) {
39
+ var _a, _b;
40
+ const embedded = ((_a = target.subModules) === null || _a === void 0 ? void 0 : _a.length)
41
+ ? widgetOfSubmodule(target.subModules[target.subModules.length - 1])
42
+ : widget;
43
+ const config = (0, structural_manager_1.getWidgetConfig)(embedded, ((_b = target.subModules) === null || _b === void 0 ? void 0 : _b.length) ? undefined : version);
44
+ return {
45
+ widget: embedded,
46
+ views: config.baseStructure.views ? target.views : [undefined],
47
+ };
48
+ }
49
+ /**
50
+ * Keys of the structure in a view (or at the root), in structure order, without the view prefix.
51
+ */
52
+ function structureKeysOf(widget, view, version) {
53
+ const map = (0, structural_helpers_1.calculateViewMap)((0, structural_manager_1.getWidgetConfig)(widget, version).baseStructure);
54
+ const prefix = view ? `${view}${structure_constants_1.STRUCTURE_VIEW_NAME_SEPARATOR}` : '';
55
+ return Object.keys(map)
56
+ .filter((key) => view
57
+ ? key.startsWith(prefix)
58
+ : !key.includes(structure_constants_1.STRUCTURE_VIEW_NAME_SEPARATOR))
59
+ .map((key) => key.slice(prefix.length))
60
+ .filter((key) => key !== 'subModules');
61
+ }
62
+ const humanize = (id) => id
63
+ .replace(/^q(?=[A-Z])/, '')
64
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
65
+ .replace(/^./, (char) => char.toUpperCase());
66
+ /**
67
+ * Label of a key: full path first, then the leaf id; a humanized id when neither exists.
68
+ */
69
+ function getCustomizationLabel(widget, key) {
70
+ var _a, _b, _c, _d, _e;
71
+ const labels = (_b = (_a = exports.widgetMetadata[widget]) === null || _a === void 0 ? void 0 : _a.labels) !== null && _b !== void 0 ? _b : {};
72
+ const id = (_c = key.split(structure_constants_1.STRUCTURE_SECTION_NAME_SEPARATOR).pop()) !== null && _c !== void 0 ? _c : key;
73
+ return (_e = (_d = labels[key]) !== null && _d !== void 0 ? _d : labels[id]) !== null && _e !== void 0 ? _e : { label: humanize(id) };
74
+ }
75
+ /**
76
+ * The labelled tree of a target: a widget view, or the structure of the embedded widget when subModules is set.
77
+ */
78
+ function getCustomizationTree(widget, target, options = {}) {
79
+ const resolved = resolveTarget(widget, target, options.version);
80
+ const ordered = [];
81
+ resolved.views.forEach((view) => {
82
+ var _a;
83
+ return structureKeysOf(resolved.widget, view, ((_a = target.subModules) === null || _a === void 0 ? void 0 : _a.length) ? undefined : options.version).forEach((key) => {
84
+ if (!ordered.includes(key))
85
+ ordered.push(key);
86
+ });
87
+ });
88
+ const roots = [];
89
+ const nodes = new Map();
90
+ const ensure = (key) => {
91
+ var _a;
92
+ const existing = nodes.get(key);
93
+ if (existing)
94
+ return existing;
95
+ const parts = key.split(structure_constants_1.STRUCTURE_SECTION_NAME_SEPARATOR);
96
+ const { label, description } = getCustomizationLabel(resolved.widget, key);
97
+ const node = Object.assign(Object.assign({ key, id: parts[parts.length - 1], label }, (description && { description })), { kind: 'item' });
98
+ nodes.set(key, node);
99
+ if (parts.length === 1) {
100
+ roots.push(node);
101
+ }
102
+ else {
103
+ const parent = ensure(parts.slice(0, -1).join(structure_constants_1.STRUCTURE_SECTION_NAME_SEPARATOR));
104
+ parent.kind = 'section';
105
+ parent.children = [...((_a = parent.children) !== null && _a !== void 0 ? _a : []), node];
106
+ }
107
+ return node;
108
+ };
109
+ ordered.forEach(ensure);
110
+ return roots;
111
+ }
112
+ function instanceFor(widget, customization, target, view) {
113
+ var _a;
114
+ let instance = (0, structural_manager_1.buildStructure)(widget, customization);
115
+ ((_a = target.subModules) !== null && _a !== void 0 ? _a : []).forEach((name) => {
116
+ instance = (0, scope_helpers_1.structureFromSubmodule)(instance, name, view);
117
+ });
118
+ return instance;
119
+ }
120
+ const matches = (pattern, key) => pattern === key ||
121
+ new RegExp(`^${pattern.replace(/\./g, '\\.').replace(/\*/g, '.*')}$`).test(key);
122
+ // The block where the tree's switches write, and the blocks above it whose rules a switch cannot undo.
123
+ function scopesOf(customization, target, view) {
124
+ var _a, _b, _c, _d, _e, _f;
125
+ const subModules = (_a = target.subModules) !== null && _a !== void 0 ? _a : [];
126
+ if (!subModules.length) {
127
+ return { own: (_b = customization === null || customization === void 0 ? void 0 : customization.views) === null || _b === void 0 ? void 0 : _b[view], root: customization };
128
+ }
129
+ const name = subModules[subModules.length - 1];
130
+ return {
131
+ own: (_e = (_d = (_c = customization === null || customization === void 0 ? void 0 : customization.views) === null || _c === void 0 ? void 0 : _c[view]) === null || _d === void 0 ? void 0 : _d.subModules) === null || _e === void 0 ? void 0 : _e[name],
132
+ root: (_f = customization === null || customization === void 0 ? void 0 : customization.subModules) === null || _f === void 0 ? void 0 : _f[name],
133
+ };
134
+ }
135
+ function lockOf(customization, target, view, key, hiddenParent) {
136
+ var _a, _b, _c, _d, _e, _f, _g;
137
+ const { own, root } = scopesOf(customization, target, view);
138
+ if (hiddenParent)
139
+ return { verb: 'remove', pattern: hiddenParent, scope: 'parent' };
140
+ if ((_a = own === null || own === void 0 ? void 0 : own.remove) === null || _a === void 0 ? void 0 : _a.includes(key))
141
+ return undefined;
142
+ const rootRemove = (_b = root === null || root === void 0 ? void 0 : root.remove) === null || _b === void 0 ? void 0 : _b.find((pattern) => matches(pattern, key));
143
+ if (rootRemove)
144
+ return { verb: 'remove', pattern: rootRemove, scope: 'root' };
145
+ const viewRemove = (_c = own === null || own === void 0 ? void 0 : own.remove) === null || _c === void 0 ? void 0 : _c.find((pattern) => matches(pattern, key));
146
+ if (viewRemove)
147
+ return { verb: 'remove', pattern: viewRemove, scope: 'view' };
148
+ if ((_d = root === null || root === void 0 ? void 0 : root.keep) === null || _d === void 0 ? void 0 : _d.length)
149
+ return { verb: 'keep', pattern: root.keep.join(', '), scope: 'root' };
150
+ if ((_e = own === null || own === void 0 ? void 0 : own.keep) === null || _e === void 0 ? void 0 : _e.length)
151
+ return { verb: 'keep', pattern: own.keep.join(', '), scope: 'view' };
152
+ // Hidden by something the switches do not write (a conditional, a submodule rule of the host).
153
+ return {
154
+ verb: 'remove',
155
+ pattern: key,
156
+ scope: ((_f = own === null || own === void 0 ? void 0 : own.conditional) === null || _f === void 0 ? void 0 : _f.length) || ((_g = root === null || root === void 0 ? void 0 : root.conditional) === null || _g === void 0 ? void 0 : _g.length)
157
+ ? 'conditional'
158
+ : 'view',
159
+ };
160
+ }
161
+ /**
162
+ * The tree with the visibility of each node for a customization, computed with the real engine. A node whose
163
+ * visibility differs between the target views is 'mixed'; a hidden node a switch cannot bring back is locked.
164
+ */
165
+ function getCustomizationTreeState(widget, customization, target) {
166
+ var _a;
167
+ const tree = getCustomizationTree(widget, target);
168
+ const embedded = !!((_a = target.subModules) === null || _a === void 0 ? void 0 : _a.length);
169
+ const instances = target.views.map((view) => ({
170
+ view,
171
+ instance: instanceFor(widget, customization, target, view),
172
+ }));
173
+ const isVisible = (instance, view, key) => instance.isVisible(embedded ? key : `${view}${structure_constants_1.STRUCTURE_VIEW_NAME_SEPARATOR}${key}`, {});
174
+ const walk = (nodes, hiddenParents) => nodes.map((node) => {
175
+ const states = instances.map(({ view, instance }) => isVisible(instance, view, node.key));
176
+ const visible = states.every(Boolean)
177
+ ? true
178
+ : states.some(Boolean)
179
+ ? 'mixed'
180
+ : false;
181
+ const locks = visible === false
182
+ ? instances.map(({ view }, index) => lockOf(customization, target, view, node.key, hiddenParents[index]))
183
+ : [];
184
+ const lockedBy = locks.length && locks.every(Boolean) ? locks[0] : undefined;
185
+ const childParents = states.map((state, index) => { var _a; return (_a = hiddenParents[index]) !== null && _a !== void 0 ? _a : (state ? undefined : node.key); });
186
+ const { children } = node, rest = __rest(node, ["children"]);
187
+ const stateNode = Object.assign(Object.assign({}, rest), { visible });
188
+ if (lockedBy)
189
+ stateNode.lockedBy = lockedBy;
190
+ if (children)
191
+ stateNode.children = walk(children, childParents);
192
+ return stateNode;
193
+ });
194
+ return walk(tree, instances.map(() => undefined));
195
+ }
196
+ const isEmptyObject = (value) => typeof value === 'object' &&
197
+ value !== null &&
198
+ !Array.isArray(value) &&
199
+ Object.keys(value).length === 0;
200
+ /**
201
+ * A new customization with the minimal change for one switch, applied to every view of the target. It only edits
202
+ * the remove list of each view (or of the submodule inside it), never keep, conditional, defaults or root verbs.
203
+ */
204
+ function toggleCustomizationKey(customization, target, key, visible) {
205
+ const result = JSON.parse(JSON.stringify(customization !== null && customization !== void 0 ? customization : {}));
206
+ target.views.forEach((view) => {
207
+ var _a, _b;
208
+ const chain = [
209
+ result,
210
+ ];
211
+ const step = (holder, name) => {
212
+ var _a;
213
+ holder[name] = (_a = holder[name]) !== null && _a !== void 0 ? _a : {};
214
+ chain.push(holder[name]);
215
+ return holder[name];
216
+ };
217
+ let block = step(step(result, 'views'), view);
218
+ ((_a = target.subModules) !== null && _a !== void 0 ? _a : []).forEach((name) => {
219
+ block = step(step(block, 'subModules'), name);
220
+ });
221
+ const remove = (_b = block.remove) !== null && _b !== void 0 ? _b : [];
222
+ if (!visible && !remove.includes(key))
223
+ block.remove = [...remove, key];
224
+ if (visible) {
225
+ const next = remove.filter((item) => item !== key);
226
+ if (next.length)
227
+ block.remove = next;
228
+ else
229
+ delete block.remove;
230
+ }
231
+ // Drops the empty objects this switch left behind, from the innermost out.
232
+ for (let index = chain.length - 1; index > 0; index--) {
233
+ const holder = chain[index - 1];
234
+ const name = Object.keys(holder).find((property) => holder[property] === chain[index]);
235
+ if (name && isEmptyObject(chain[index]))
236
+ delete holder[name];
237
+ }
238
+ });
239
+ return result;
240
+ }
241
+ //# sourceMappingURL=customization-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customization-metadata.js","sourceRoot":"","sources":["../../../src/metadata/customization-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.widgetMetadata = exports.toggleCustomizationKey = exports.structureKeysOf = exports.getCustomizationTreeState = exports.getCustomizationTree = exports.getCustomizationLabel = void 0;
4
+ var customization_metadata_1 = require("./customization-metadata");
5
+ Object.defineProperty(exports, "getCustomizationLabel", { enumerable: true, get: function () { return customization_metadata_1.getCustomizationLabel; } });
6
+ Object.defineProperty(exports, "getCustomizationTree", { enumerable: true, get: function () { return customization_metadata_1.getCustomizationTree; } });
7
+ Object.defineProperty(exports, "getCustomizationTreeState", { enumerable: true, get: function () { return customization_metadata_1.getCustomizationTreeState; } });
8
+ Object.defineProperty(exports, "structureKeysOf", { enumerable: true, get: function () { return customization_metadata_1.structureKeysOf; } });
9
+ Object.defineProperty(exports, "toggleCustomizationKey", { enumerable: true, get: function () { return customization_metadata_1.toggleCustomizationKey; } });
10
+ Object.defineProperty(exports, "widgetMetadata", { enumerable: true, get: function () { return customization_metadata_1.widgetMetadata; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metadata/index.ts"],"names":[],"mappings":";;;AAQA,mEAOkC;AAN9B,+HAAA,qBAAqB,OAAA;AACrB,8HAAA,oBAAoB,OAAA;AACpB,mIAAA,yBAAyB,OAAA;AACzB,yHAAA,eAAe,OAAA;AACf,gIAAA,sBAAsB,OAAA;AACtB,wHAAA,cAAc,OAAA"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHART_PANEL_LABELS = void 0;
4
+ // Initial English labels of the chart panel (chartPanel submodule), for review with Product (D20).
5
+ exports.CHART_PANEL_LABELS = {
6
+ header: { label: 'Chart header' },
7
+ floatingMenu: { label: 'Floating menu' },
8
+ menuLayout: { label: 'Menu layout' },
9
+ body: { label: 'Chart body' },
10
+ 'body.actions': { label: 'Chart actions' },
11
+ optionMenu: { label: 'Chart options menu' },
12
+ optionDateGrouping: { label: 'Date grouping options' },
13
+ dashFilterScope: { label: 'Dashboard filters' },
14
+ tabFilterScope: { label: 'Tab filters' },
15
+ panelFilterScope: { label: 'Panel filters' },
16
+ qChartName: { label: 'Chart name' },
17
+ qFitPanel: { label: 'Fit to panel' },
18
+ qChartSelection: { label: 'Chart type selection' },
19
+ qColumnSection: { label: 'Column section' },
20
+ qSorting: { label: 'Sorting' },
21
+ qColumnReplacement: { label: 'Column replacement' },
22
+ qColumnAggregation: { label: 'Column aggregation' },
23
+ qColumnGrouping: { label: 'Column grouping' },
24
+ qDateGrouping: { label: 'Date grouping' },
25
+ qColumnSelection: { label: 'Column selection' },
26
+ qResetColumnsWidth: { label: 'Reset column widths' },
27
+ qSmartAnalyzer: { label: 'Smart analyzer' },
28
+ qEditChart: { label: 'Edit chart' },
29
+ qDuplicateChart: { label: 'Duplicate chart' },
30
+ qDownloadChart: { label: 'Download' },
31
+ qChartJPG: { label: 'JPG' },
32
+ qChartPDF: { label: 'PDF' },
33
+ qChartCSV: { label: 'CSV' },
34
+ qChartSummary: { label: 'Summary' },
35
+ qChartExcel: { label: 'Excel' },
36
+ qFilter: { label: 'Filters' },
37
+ qAddFilter: { label: 'Add filter' },
38
+ qEditFilter: { label: 'Edit filter' },
39
+ qDeleteFilter: { label: 'Delete filter' },
40
+ qYear: { label: 'Year' },
41
+ qQuarter: { label: 'Quarter' },
42
+ qQuarterOnly: { label: 'Quarter only' },
43
+ qMonth: { label: 'Month' },
44
+ qMonthOnly: { label: 'Month only' },
45
+ qWeek: { label: 'Week' },
46
+ qDay: { label: 'Day' },
47
+ qDayOnly: { label: 'Day only' },
48
+ qHour: { label: 'Hour' },
49
+ qHourOnly: { label: 'Hour only' },
50
+ qMinute: { label: 'Minute' },
51
+ qMinuteOnly: { label: 'Minute only' },
52
+ qSecond: { label: 'Second' },
53
+ qSecondOnly: { label: 'Second only' },
54
+ qComparativeAnalysis: { label: 'Comparative analysis' },
55
+ };
56
+ //# sourceMappingURL=chart-panel.labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-panel.labels.js","sourceRoot":"","sources":["../../../../src/metadata/labels/chart-panel.labels.ts"],"names":[],"mappings":"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"}