@adaptabletools/adaptable-cjs 22.0.7 → 22.0.9

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 (64) hide show
  1. package/index.css +19 -1
  2. package/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/AdaptableOptions/FilterOptions.d.ts +23 -5
  5. package/src/AdaptableState/Common/CellDataChangedInfo.d.ts +4 -0
  6. package/src/AdaptableState/Common/ColumnScope.d.ts +4 -0
  7. package/src/AdaptableState/Common/ColumnScope.js +17 -0
  8. package/src/Api/Implementation/StateApiImpl.d.ts +1 -1
  9. package/src/Api/Implementation/StateApiImpl.js +12 -15
  10. package/src/Api/StateApi.d.ts +1 -1
  11. package/src/Redux/Store/AdaptableReduxMerger.js +4 -1
  12. package/src/Redux/Store/AdaptableStore.d.ts +2 -1
  13. package/src/Redux/Store/AdaptableStore.js +14 -9
  14. package/src/Redux/Store/Interface/IAdaptableStore.d.ts +1 -1
  15. package/src/Strategy/CalculatedColumnModule.js +1 -1
  16. package/src/Strategy/ColumnFilterModule.js +4 -2
  17. package/src/Strategy/DataChangeHistoryModule.js +3 -1
  18. package/src/Strategy/FlashingCellModule.js +1 -1
  19. package/src/Strategy/FreeTextColumnModule.js +1 -1
  20. package/src/Utilities/Services/DataService.js +6 -0
  21. package/src/View/Alert/Wizard/AlertScopeWizardSection.js +10 -3
  22. package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +8 -8
  23. package/src/View/CalculatedColumn/Wizard/CalculatedColumnTypeSection.js +1 -1
  24. package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +4 -2
  25. package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +1 -0
  26. package/src/View/Components/ColumnGroupTag/index.d.ts +5 -0
  27. package/src/View/Components/ColumnGroupTag/index.js +14 -0
  28. package/src/View/Components/ColumnSelector/index.js +4 -1
  29. package/src/View/Components/FilterForm/ListBoxFilterForm.js +8 -1
  30. package/src/View/Components/NewScopeComponent.js +19 -37
  31. package/src/View/Components/ReorderDraggable/index.d.ts +1 -0
  32. package/src/View/Components/ReorderDraggable/index.js +2 -1
  33. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +7 -1
  34. package/src/View/CustomSort/Wizard/CustomSortWizard.js +1 -1
  35. package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +10 -3
  36. package/src/View/FormatColumn/Wizard/FormatColumnColumnScopeWizardSection.js +14 -7
  37. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +1 -3
  38. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.d.ts +1 -1
  39. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +7 -7
  40. package/src/View/Layout/Wizard/LayoutWizard.js +2 -2
  41. package/src/View/Layout/Wizard/sections/AggregationsSection.js +2 -0
  42. package/src/View/Layout/Wizard/sections/ColumnsSection.js +149 -140
  43. package/src/View/Layout/Wizard/sections/FilterSection.js +8 -1
  44. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +2 -0
  45. package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.js +4 -1
  46. package/src/View/Layout/Wizard/sections/RowGroupingSection.js +4 -1
  47. package/src/View/Layout/Wizard/sections/RowSummarySection.js +8 -3
  48. package/src/View/Layout/Wizard/sections/SortSection.js +3 -1
  49. package/src/View/StyledColumn/Wizard/StyledColumnWizardColumnSection.js +7 -1
  50. package/src/View/Wizard/OnePageAdaptableWizard.d.ts +0 -1
  51. package/src/View/Wizard/OnePageAdaptableWizard.js +1 -1
  52. package/src/View/Wizard/OnePageWizards.d.ts +1 -0
  53. package/src/View/Wizard/OnePageWizards.js +11 -4
  54. package/src/agGrid/AdaptableAgGrid.js +18 -30
  55. package/src/agGrid/AgGridAdapter.d.ts +1 -0
  56. package/src/agGrid/AgGridAdapter.js +4 -0
  57. package/src/agGrid/AgGridColumnAdapter.js +3 -3
  58. package/src/agGrid/AgGridExportAdapter.js +1 -3
  59. package/src/components/Tree/TreeDropdown/index.d.ts +9 -0
  60. package/src/components/Tree/TreeDropdown/index.js +21 -1
  61. package/src/components/Tree/TreeList/index.d.ts +1 -1
  62. package/src/env.js +2 -2
  63. package/src/metamodel/adaptable.metamodel.js +1 -1
  64. package/tsconfig.cjs.tsbuildinfo +1 -1
@@ -18,6 +18,8 @@ const useKeyboardNavigation_1 = require("./useKeyboardNavigation");
18
18
  const Flex_1 = require("../../components/Flex");
19
19
  const twMerge_1 = require("../../twMerge");
20
20
  const twUtils_1 = require("../../components/twUtils");
21
+ /** Same template for header row and main row so module/details align with nav / content columns. */
22
+ const ONE_PAGE_WIZARD_SECTION_GRID = 'twa:grid twa:grid-cols-[minmax(160px,14rem)_minmax(0,1fr)]';
21
23
  const SummaryTag = (props) => (React.createElement(Flex_1.Box, { ...props }));
22
24
  exports.SummaryTag = SummaryTag;
23
25
  const SummaryText = (props) => (React.createElement(Flex_1.Box, { ...props, className: (0, twMerge_1.twMerge)('twa:text-2 twa:mb-3', props.className) }));
@@ -71,7 +73,6 @@ const OnePageWizard = (props) => {
71
73
  return React.createElement(React.Fragment, { key: index });
72
74
  }
73
75
  return (React.createElement(Flex_1.Flex, { flexDirection: "column", key: index, "data-name": `section-${index}`, className: "twa:min-h-full twa:mr-2" },
74
- React.createElement(Flex_1.Box, { className: "ab-OnePageWizard__details twa:text-4 twa:py-3 twa:pl-2" }, section.details),
75
76
  React.createElement(Flex_1.Box, { className: "ab-OnePageWizard__section twa:flex-1 twa:rounded-standard twa:overflow-auto twa:bg-defaultbackground" }, section.render(props.data, index))));
76
77
  };
77
78
  const handleNavigation = (0, useKeyboardNavigation_1.useKeyboardNavigation)(setCurrentSection, visibleSections);
@@ -112,6 +113,8 @@ const OnePageWizard = (props) => {
112
113
  return acc;
113
114
  }, new Map());
114
115
  const canFinish = !invalidCount;
116
+ const activeSection = visibleSections[currentSection];
117
+ const activeSectionDetails = activeSection !== '-' ? activeSection?.details : undefined;
115
118
  return (React.createElement(NamedQueryContext_1.NamedQueryContext.Provider, { value: { namedQuery, setNamedQuery } },
116
119
  React.createElement(exports.OnePageWizardContext.Provider, { value: contextValue },
117
120
  React.createElement(Dialog_1.default, { modal: props.modal ?? true, isOpen: true, showCloseButton: false, focusOnBrowserVisible: true, className: "twa:rounded-standard twa:overflow-hidden twa:h-[90vh]", ref: dialogRef, onDismiss: () => props.onHide?.(), onKeyDown: (event) => {
@@ -132,8 +135,12 @@ const OnePageWizard = (props) => {
132
135
  }
133
136
  } },
134
137
  React.createElement(Flex_1.Box, { className: (0, clsx_1.default)('ab-OnePageWizard twa:flex twa:flex-col twa:h-full twa:w-[90vw] twa:max-w-[1200px]', 'twa:bg-primarylight twa:text-primary-foreground'), "data-name": props.name, style: props.style },
135
- React.createElement(Flex_1.Flex, { flexDirection: "row", alignItems: "stretch", className: "twa:flex-1 twa:overflow-auto" },
136
- React.createElement(Flex_1.Flex, { flexDirection: "column", className: "ab-OnePageWizard__section-title-container twa:p-3 twa:flex-none twa:overflow-auto twa:relative", ref: sizeOwnerRef, style: props.titleContainerStyle },
138
+ (props.moduleName || activeSectionDetails) && (React.createElement(Flex_1.Box, { className: (0, clsx_1.default)('ab-OnePageWizard__header', ONE_PAGE_WIZARD_SECTION_GRID, 'twa:items-start twa:mt-4 twa:mb-2 twa:px-2') },
139
+ React.createElement(Flex_1.Box, { className: "ab-OnePageWizard__module-name twa:min-w-0 twa:pl-3 twa:font-bold" }, props.moduleName),
140
+ React.createElement(Flex_1.Box, { className: "ab-OnePageWizard__details twa:min-w-0 twa:pr-2 twa:text-4" }, activeSectionDetails))),
141
+ React.createElement(Flex_1.Box, { as: "hr", className: "ab-OnePageWizard__module-separator twa:w-full twa:border-0 twa:border-t twa:border-t-inputborder" }),
142
+ React.createElement(Flex_1.Box, { className: (0, clsx_1.default)(ONE_PAGE_WIZARD_SECTION_GRID, 'twa:flex-1 twa:min-h-0 twa:overflow-auto twa:items-stretch') },
143
+ React.createElement(Flex_1.Flex, { flexDirection: "column", className: "ab-OnePageWizard__section-title-container twa:min-h-0 twa:min-w-0 twa:overflow-auto twa:p-3 twa:relative", ref: sizeOwnerRef, style: props.titleContainerStyle },
137
144
  visibleSections.map((section, index) => {
138
145
  if (section === '-') {
139
146
  return (React.createElement(Flex_1.Box, { as: "hr", className: "ab-OnePageWizard__section-separator twa:mt-2 twa:w-full twa:border-t twa:border-t-inputborder", key: `${index}-` }));
@@ -175,7 +182,7 @@ const OnePageWizard = (props) => {
175
182
  "or arrow keys",
176
183
  React.createElement("br", null),
177
184
  "to navigate")),
178
- React.createElement(Flex_1.Flex, { flexDirection: "column", className: "ab-OnePageWizard__section-container twa:flex-1" }, renderSection(currentSection))),
185
+ React.createElement(Flex_1.Flex, { flexDirection: "column", className: "ab-OnePageWizard__section-container twa:min-h-0 twa:min-w-0 twa:flex-1" }, renderSection(currentSection))),
179
186
  React.createElement(Flex_1.Flex, { flexDirection: "row", alignItems: "center", className: "ab-WizardDialog__footer ab-OnePageWizard__footer twa:p-2" },
180
187
  React.createElement(SimpleButton_1.default, { tone: "neutral", variant: "text", "data-name": "close", onClick: () => props.onHide?.(), tooltip: props.closeTooltip ?? 'Close wizard', accessLevel: 'Full' }, props.closeText ?? 'CLOSE'),
181
188
  React.createElement(KeyHint_1.KeyHint, { className: "twa:ml-2" }, "Esc"),
@@ -1024,7 +1024,7 @@ class AdaptableAgGrid {
1024
1024
  }
1025
1025
  return (params) => {
1026
1026
  // might be a summary row
1027
- if (params.data?.[RowSummary_1.ROW_SUMMARY_ROW_ID]) {
1027
+ if (params.data?.[RowSummary_1.ROW_SUMMARY_ROW_ID] != undefined) {
1028
1028
  return params.data[RowSummary_1.ROW_SUMMARY_ROW_ID];
1029
1029
  }
1030
1030
  if (params.level > 0) {
@@ -1040,7 +1040,7 @@ class AdaptableAgGrid {
1040
1040
  const id = [...parentKeys, Math.abs(hash)].join('/');
1041
1041
  return id;
1042
1042
  }
1043
- if (params.data?.[primaryKey]) {
1043
+ if (params.data?.[primaryKey] != undefined) {
1044
1044
  const primaryKeyValue = params.data[primaryKey];
1045
1045
  return typeof primaryKeyValue === 'number'
1046
1046
  ? `${primaryKeyValue}`
@@ -2158,38 +2158,16 @@ class AdaptableAgGrid {
2158
2158
  }
2159
2159
  const colDef = this.agGridAdapter.getAgGridApi().getColumnDef(columnId);
2160
2160
  if (colDef) {
2161
- if (typeof colDef.valueFormatter == 'function') {
2162
- const column = this.agGridAdapter.getAgGridApi().getColumn(columnId);
2163
- const params = {
2164
- value: rawValue,
2165
- node: rowNode,
2166
- data: rowNode.data,
2167
- colDef,
2168
- column,
2169
- api: this.agGridAdapter.getAgGridApi(),
2170
- context: this.agGridAdapter.getGridOption('context'),
2171
- };
2172
- const formattedValue = colDef.valueFormatter(params);
2173
- return formattedValue || '';
2174
- }
2161
+ const formattedValue = this.agGridAdapter._agGridApi_getFormattedValue(columnId, rowNode);
2162
+ return formattedValue || '';
2175
2163
  }
2176
- else if (this.api.columnApi.isPivotResultColumn(columnId)) {
2164
+ if (this.api.columnApi.isPivotResultColumn(columnId)) {
2177
2165
  const pivotResultColumn = this.agGridAdapter
2178
2166
  .getAgGridApi()
2179
2167
  .getPivotResultColumns()
2180
2168
  .find((col) => col.getColId() === columnId);
2181
- const pivotResultColDef = pivotResultColumn?.getColDef();
2182
- if (pivotResultColDef && typeof pivotResultColDef.valueFormatter === 'function') {
2183
- const params = {
2184
- value: rawValue,
2185
- node: rowNode,
2186
- data: rowNode.data,
2187
- colDef: pivotResultColDef,
2188
- column: pivotResultColumn,
2189
- api: this.agGridAdapter.getAgGridApi(),
2190
- context: this.agGridAdapter.getGridOption('context'),
2191
- };
2192
- const formattedValue = pivotResultColDef.valueFormatter(params);
2169
+ if (pivotResultColumn) {
2170
+ const formattedValue = this.agGridAdapter._agGridApi_getFormattedValue(pivotResultColumn, rowNode);
2193
2171
  return formattedValue || '';
2194
2172
  }
2195
2173
  }
@@ -2777,7 +2755,9 @@ class AdaptableAgGrid {
2777
2755
  const result = gridApiInternal
2778
2756
  .sortDistinctValues(getCurrentGridCells(), column)
2779
2757
  .map((gridCell) => {
2758
+ const itemId = `${gridCell.rowNode?.id}-${gridCell.column?.columnId}`;
2780
2759
  return {
2760
+ id: itemId,
2781
2761
  label: gridCell.displayValue,
2782
2762
  value: gridCell.rawValue,
2783
2763
  isSelected: gridCell.rowNode.displayed,
@@ -2803,7 +2783,9 @@ class AdaptableAgGrid {
2803
2783
  },
2804
2784
  get defaultValues() {
2805
2785
  const result = getCurrentGridCells().map((gridCell) => {
2786
+ const itemId = `${gridCell.rowNode?.id}-${gridCell.column?.columnId}`;
2806
2787
  return {
2788
+ id: itemId,
2807
2789
  label: gridCell.displayValue,
2808
2790
  value: gridCell.rawValue,
2809
2791
  isSelected: gridCell.rowNode.displayed,
@@ -2831,7 +2813,9 @@ class AdaptableAgGrid {
2831
2813
  const rowNodes = gridApiInternal.getSortedRowNodesWithCurrentLayoutSortOrder();
2832
2814
  const currentGridCells = self.getDistinctGridCellsForColumn(column, rowNodes);
2833
2815
  const result = currentGridCells.map((gridCell) => {
2816
+ const itemId = `${gridCell.rowNode?.id}-${gridCell.column?.columnId}`;
2834
2817
  return {
2818
+ id: itemId,
2835
2819
  label: gridCell.displayValue,
2836
2820
  value: gridCell.rawValue,
2837
2821
  isSelected: gridCell.rowNode.displayed,
@@ -3734,7 +3718,11 @@ class AdaptableAgGrid {
3734
3718
  }
3735
3719
  const distinctRawValues = this.api.gridApi.internalApi
3736
3720
  .getUnsortedDistinctRawValuesForColumn(columnId)
3737
- .map((item) => item.rawValue);
3721
+ .map((item) => item.rawValue)
3722
+ .filter((v) => typeof v === 'number' && !isNaN(v));
3723
+ if (distinctRawValues.length === 0) {
3724
+ return undefined;
3725
+ }
3738
3726
  value = minMax === 'min' ? Math.min(...distinctRawValues) : Math.max(...distinctRawValues);
3739
3727
  this.columnMinMaxValuesCache[columnId] = {
3740
3728
  ...this.columnMinMaxValuesCache[columnId],
@@ -81,4 +81,5 @@ export declare class AgGridAdapter {
81
81
  traverseColDefs(colDefs: (ColDef | ColGroupDef)[], modifyFn: (colDef: ColDef) => ColDef | null): (ColDef | ColGroupDef)[];
82
82
  getDefaultColumnDefinition(): GridOptions['defaultColDef'];
83
83
  _agGridApi_getValue(colKey: string | Column, rowNode: IRowNode, gridApi?: GridApi): any;
84
+ _agGridApi_getFormattedValue(colKey: string | Column, rowNode: IRowNode, gridApi?: GridApi): any;
84
85
  }
@@ -839,5 +839,9 @@ class AgGridAdapter {
839
839
  gridApi = gridApi || this.getAgGridApi();
840
840
  return gridApi.getCellValue({ colKey, rowNode });
841
841
  }
842
+ _agGridApi_getFormattedValue(colKey, rowNode, gridApi) {
843
+ gridApi = gridApi || this.getAgGridApi();
844
+ return gridApi.getCellValue({ colKey, rowNode, useFormatter: true });
845
+ }
842
846
  }
843
847
  exports.AgGridAdapter = AgGridAdapter;
@@ -1199,8 +1199,8 @@ class AgGridColumnAdapter {
1199
1199
  getStyledColumnStyle(styledColumn, abColumn, params) {
1200
1200
  let style = {};
1201
1201
  const gradientStyle = styledColumn?.GradientStyle;
1202
- if (params.value === undefined) {
1203
- return;
1202
+ if (params.value == undefined || params.value === '') {
1203
+ return style;
1204
1204
  }
1205
1205
  let colValue = params.value;
1206
1206
  if (this.adaptableApi.gridApi.isGroupRowNode(params.node)) {
@@ -1316,7 +1316,7 @@ class AgGridColumnAdapter {
1316
1316
  const columnHighlight = this.adaptableApi.internalApi
1317
1317
  .getInternalState()
1318
1318
  .ColumnHighlightInfo.find((columnHighlightInfo) => {
1319
- return (gridCell.column.columnId === columnHighlightInfo.columnId);
1319
+ return gridCell.column.columnId === columnHighlightInfo.columnId;
1320
1320
  });
1321
1321
  if (columnHighlight) {
1322
1322
  return (0, StyleHelper_1.convertAdaptableStyleToCSS)(columnHighlight.highlightStyle);
@@ -434,9 +434,7 @@ class AgGridExportAdapter {
434
434
  }
435
435
  const getColIdAndRawValue = () => {
436
436
  if (this.adaptableApi.columnApi.isAutoRowGroupColumn(agColumn?.getColId())) {
437
- const columnId = rowNode.rowGroupColumn?.getColId() ??
438
- rowNode.rowGroupColumn?.getColDef()?.field ??
439
- rowNode.field;
437
+ const columnId = agColumn.getColId();
440
438
  let rawValue = rowNode.key;
441
439
  return { columnId, rawValue };
442
440
  }
@@ -24,4 +24,13 @@ export type TreeDropdownProps<T extends TreeListItem<any>> = {
24
24
  clearable?: boolean;
25
25
  };
26
26
  export declare function toDisplayValueDefault(value: any[][] | string[]): string;
27
+ /**
28
+ * Formats the closed TreeDropdown input using each option's `label` for the stored `value` path
29
+ * segments (same shape as {@link toDisplayValueDefault}, but resolves raw values to labels).
30
+ */
31
+ export declare function toDisplayValueFromOptionTree<T extends {
32
+ value: any;
33
+ label: string;
34
+ children?: T[];
35
+ }>(paths: any[][] | string[], options: T[]): string;
27
36
  export declare function TreeDropdown<T extends TreeListItem<any>>(props: TreeDropdownProps<T>): React.JSX.Element;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toDisplayValueDefault = toDisplayValueDefault;
4
+ exports.toDisplayValueFromOptionTree = toDisplayValueFromOptionTree;
4
5
  exports.TreeDropdown = TreeDropdown;
5
6
  const tslib_1 = require("tslib");
6
7
  const React = tslib_1.__importStar(require("react"));
@@ -28,6 +29,25 @@ function toDisplayValueDefault(value) {
28
29
  }
29
30
  return value.map((v) => (Array.isArray(v) ? v.join('-') : v)).join(', ');
30
31
  }
32
+ /**
33
+ * Formats the closed TreeDropdown input using each option's `label` for the stored `value` path
34
+ * segments (same shape as {@link toDisplayValueDefault}, but resolves raw values to labels).
35
+ */
36
+ function toDisplayValueFromOptionTree(paths, options) {
37
+ const valueToLabel = new Map();
38
+ const walk = (node) => {
39
+ valueToLabel.set(node.value, node.label);
40
+ if (Array.isArray(node.children)) {
41
+ node.children.forEach(walk);
42
+ }
43
+ };
44
+ options.forEach(walk);
45
+ return paths
46
+ .map((path) => Array.isArray(path)
47
+ ? path.map((segment) => valueToLabel.get(segment) ?? String(segment)).join('-')
48
+ : valueToLabel.get(path) ?? String(path))
49
+ .join(', ');
50
+ }
31
51
  const getLabelColumn = (field, { includeExpandCollapseButton }) => {
32
52
  return {
33
53
  field,
@@ -254,7 +274,7 @@ function TreeDropdown(props) {
254
274
  } }, children));
255
275
  } },
256
276
  React.createElement(FieldWrap_1.default, { style: props.fieldStyle, className: "twa:w-full" },
257
- React.createElement(Input_1.default, { type: "text", readOnly: true, "data-name": "Select Values", "aria-expanded": visible, placeholder: props.placeholder ?? 'Select a value', className: `twa:w-full ${props.clearable ? 'twa:pr-0' : ''}`, value: props.toDisplayValue ? props.toDisplayValue(value) : toDisplayValueDefault(value), onFocus: () => {
277
+ React.createElement(Input_1.default, { type: "text", readOnly: true, "data-name": "Select Values", "aria-expanded": visible, placeholder: props.placeholder ?? 'Select...', className: `twa:w-full ${props.clearable ? 'twa:pr-0' : ''}`, value: props.toDisplayValue ? props.toDisplayValue(value) : toDisplayValueDefault(value), onFocus: () => {
258
278
  if (!visible) {
259
279
  setVisible(true);
260
280
  }
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { DataSourcePropOnTreeSelectionChange_MultiNode, InfiniteTableProps, TreeDataSourceProps } from '../../InfiniteTable';
3
3
  export type TreeListItem<T = any> = {
4
- id: string | number;
4
+ id?: string | number;
5
5
  label: string;
6
6
  children?: TreeListItem<T>[];
7
7
  };
package/src/env.js CHANGED
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  NEXT_PUBLIC_INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
5
- PUBLISH_TIMESTAMP: 1774369269495 || Date.now(),
6
- VERSION: "22.0.7" || '--current-version--',
5
+ PUBLISH_TIMESTAMP: 1775641581659 || Date.now(),
6
+ VERSION: "22.0.9" || '--current-version--',
7
7
  };