@adaptabletools/adaptable-cjs 18.0.0-canary.28 → 18.0.0-canary.29

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 (54) hide show
  1. package/base.css +3 -13
  2. package/base.css.map +1 -1
  3. package/index.css +3 -13
  4. package/index.css.map +1 -1
  5. package/package.json +1 -1
  6. package/src/AdaptableOptions/AdaptableFrameworkComponent.d.ts +3 -0
  7. package/src/AdaptableOptions/MenuOptions.d.ts +1 -1
  8. package/src/Api/GridApi.d.ts +4 -1
  9. package/src/Api/Implementation/ConfigApiImpl.js +0 -1
  10. package/src/Api/Implementation/GridApiImpl.d.ts +1 -1
  11. package/src/Api/Implementation/GridApiImpl.js +6 -1
  12. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +14 -5
  13. package/src/Api/Implementation/UserInterfaceApiImpl.js +26 -4
  14. package/src/Api/Internal/AdaptableInternalApi.d.ts +0 -1
  15. package/src/Api/Internal/AdaptableInternalApi.js +2 -6
  16. package/src/Api/Internal/FormatColumnInternalApi.js +6 -2
  17. package/src/Api/Internal/LayoutInternalApi.js +1 -1
  18. package/src/Api/UserInterfaceApi.d.ts +15 -2
  19. package/src/PredefinedConfig/Common/AdaptableIcon.d.ts +1 -1
  20. package/src/PredefinedConfig/Common/Menu.d.ts +1 -1
  21. package/src/PredefinedConfig/Common/Menu.js +22 -12
  22. package/src/PredefinedConfig/FormatColumnState.d.ts +4 -0
  23. package/src/PredefinedConfig/PopupState.d.ts +1 -2
  24. package/src/PredefinedConfig/StyledColumnState.d.ts +5 -0
  25. package/src/PredefinedConfig/SystemState.d.ts +4 -2
  26. package/src/Redux/ActionsReducers/PopupRedux.d.ts +5 -13
  27. package/src/Redux/ActionsReducers/PopupRedux.js +1 -22
  28. package/src/Redux/ActionsReducers/SystemRedux.d.ts +9 -3
  29. package/src/Redux/ActionsReducers/SystemRedux.js +8 -5
  30. package/src/Strategy/ExportModule.d.ts +0 -1
  31. package/src/Strategy/ExportModule.js +37 -26
  32. package/src/Strategy/LayoutModule.d.ts +1 -8
  33. package/src/Strategy/LayoutModule.js +3 -113
  34. package/src/Strategy/StyledColumnModule.js +5 -2
  35. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +1 -0
  36. package/src/Utilities/Interface/MessagePopups.d.ts +0 -3
  37. package/src/Utilities/Services/RowSummaryService.d.ts +22 -0
  38. package/src/Utilities/Services/RowSummaryService.js +146 -0
  39. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +11 -2
  40. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +1 -1
  41. package/src/View/StyledColumn/Wizard/StyledColumnWizardSettingsSection.js +14 -10
  42. package/src/agGrid/AgGridColumnAdapter.js +19 -13
  43. package/src/agGrid/AgGridMenuAdapter.d.ts +5 -0
  44. package/src/agGrid/AgGridMenuAdapter.js +111 -57
  45. package/src/agGrid/BadgeRenderer.js +7 -1
  46. package/src/agGrid/PercentBarRenderer.js +3 -1
  47. package/src/components/ProgressIndicator/ProgressIndicator.js +15 -6
  48. package/src/components/icons/copy.d.ts +3 -0
  49. package/src/components/icons/copy.js +7 -0
  50. package/src/components/icons/index.js +2 -0
  51. package/src/env.js +2 -2
  52. package/src/metamodel/adaptable.metamodel.js +1 -1
  53. package/src/types.d.ts +1 -1
  54. package/tsconfig.cjs.tsbuildinfo +1 -1
@@ -51,7 +51,7 @@ class AgGridMenuAdapter {
51
51
  'separator',
52
52
  ...defaultColumnMenuStructure.map((adaptableItem) => this.mapAdaptableMenuItemToAgGridMenuDefinition(adaptableItem)),
53
53
  ];
54
- return defaultContextMenu;
54
+ return this.removeConsecutiveSeparators(defaultContextMenu);
55
55
  }
56
56
  buildContextMenu(params, originalGetContextMenuItems) {
57
57
  var _a;
@@ -61,8 +61,7 @@ class AgGridMenuAdapter {
61
61
  const menuOptions = this.adaptableOptions.menuOptions;
62
62
  const agGridMenuItems = (params.defaultItems ? [...params.defaultItems] : []);
63
63
  if (!params.column) {
64
- // return only AG Grid context if the Adaptable column is not found (should not happen)
65
- return agGridMenuItems;
64
+ return [];
66
65
  }
67
66
  const adaptableColumn = this.adaptableApi.columnApi.getColumnWithColumnId((_a = params.column) === null || _a === void 0 ? void 0 : _a.getColId());
68
67
  const menuContext = this.createContextMenuContextObject(params, adaptableColumn);
@@ -84,12 +83,37 @@ class AgGridMenuAdapter {
84
83
  .filter(Boolean);
85
84
  }
86
85
  // 2. if not, return the default context menu
86
+ const agGridCopyItems = agGridMenuItems.filter((item) => ['copy', 'copyWithHeaders', 'copyWithGroupHeaders', 'cut', 'paste'].includes(item));
87
+ const otherAgGridItems = agGridMenuItems.filter((item) => !agGridCopyItems.includes(item) &&
88
+ // we provide Adaptable exports in the context menu
89
+ !['export', 'csvExport', 'excelExport'].includes(item));
87
90
  const defaultContextMenu = [
88
- ...agGridMenuItems,
91
+ this.mapCustomMenuItemToAgGridMenuDefinition({
92
+ menuType: 'Group',
93
+ label: 'Copy & Paste',
94
+ icon: {
95
+ name: 'copy',
96
+ },
97
+ subMenuItems: agGridCopyItems.map((item) => ({
98
+ menuType: 'AgGrid',
99
+ name: item,
100
+ })),
101
+ }, menuContext),
102
+ ...otherAgGridItems,
89
103
  'separator',
90
104
  ...defaultContextMenuStructure.map((adaptableItem) => this.mapAdaptableMenuItemToAgGridMenuDefinition(adaptableItem)),
91
105
  ];
92
- return defaultContextMenu;
106
+ return this.removeConsecutiveSeparators(defaultContextMenu);
107
+ }
108
+ // due to entitlements or other reasons, some menu items might be hidden, leading to consecutive separators
109
+ removeConsecutiveSeparators(menuItems, separator = 'separator') {
110
+ return menuItems.reduce((acc, item, index, array) => {
111
+ if (item === separator && array[index + 1] === separator) {
112
+ return acc;
113
+ }
114
+ acc.push(item);
115
+ return acc;
116
+ }, []);
93
117
  }
94
118
  createColumnMenuContextObject(adaptableColumn, agGridColumn) {
95
119
  return Object.assign(Object.assign({}, this.adaptableInstance.api.internalApi.buildBaseContext()), { adaptableColumn: adaptableColumn, agGridColumn: agGridColumn, isRowGroupColumn: this.adaptableInstance.api.columnApi.isAutoRowGroupColumn(agGridColumn.getColId()) });
@@ -255,6 +279,17 @@ class AgGridMenuAdapter {
255
279
  ...gridInfoMenuItems,
256
280
  ],
257
281
  };
282
+ const editMenuItem = {
283
+ name: 'edit-group',
284
+ label: 'Edit',
285
+ // TODO
286
+ module: 'ColumnInfo',
287
+ isVisible: true,
288
+ icon: {
289
+ name: 'edit-table',
290
+ },
291
+ subItems: [...bulkUpdateMenuItems, ...smartEditMenuItems],
292
+ };
258
293
  const columnMenuItem = {
259
294
  name: 'column-group',
260
295
  label: 'Column',
@@ -264,27 +299,39 @@ class AgGridMenuAdapter {
264
299
  icon: {
265
300
  name: 'columns',
266
301
  },
267
- subItems: [
268
- ...bulkUpdateMenuItems,
269
- ...smartEditMenuItems,
270
- ...calculatedColumnMenuItems,
271
- ...columnInfoMenuItems,
272
- ],
302
+ subItems: [...calculatedColumnMenuItems, ...columnInfoMenuItems],
273
303
  };
274
- return [
304
+ return this.removeConsecutiveSeparators([
305
+ ...exportMenuItems,
306
+ '-',
275
307
  ...noteMenuItems,
276
308
  ...commentMenuItems,
277
- '-',
278
- ...settingsPanelMenuItems,
279
- ...dashboardMenuItems,
280
309
  ...columnFilterMenuItems,
281
- gridMenuItem,
282
- columnMenuItem,
283
- ...exportMenuItems,
284
310
  ...flashingCellMenuItems,
285
311
  ...alertMenuItems,
286
312
  ...fdc3MenuItems,
287
- ];
313
+ '-',
314
+ ...settingsPanelMenuItems,
315
+ ...dashboardMenuItems,
316
+ '-',
317
+ ...this.normalizeMenuGroup(editMenuItem),
318
+ '-',
319
+ ...this.normalizeMenuGroup(gridMenuItem),
320
+ ...this.normalizeMenuGroup(columnMenuItem),
321
+ ], '-');
322
+ }
323
+ /**
324
+ * Hide menu group with no subitems or elevate single subitem to parent level
325
+ */
326
+ normalizeMenuGroup(menuItem) {
327
+ var _a, _b;
328
+ if (!((_a = menuItem.subItems) === null || _a === void 0 ? void 0 : _a.length)) {
329
+ return [];
330
+ }
331
+ if (((_b = menuItem.subItems) === null || _b === void 0 ? void 0 : _b.length) === 1) {
332
+ return [menuItem.subItems[0]];
333
+ }
334
+ return [menuItem];
288
335
  }
289
336
  /**
290
337
  * Default strategy for menu items: return as is if there is only one item, otherwise group them under a parent item
@@ -304,35 +351,41 @@ class AgGridMenuAdapter {
304
351
  if (!exportMenuItems.length) {
305
352
  return [];
306
353
  }
307
- const cellSelectionItems = exportMenuItems.filter((item) => item.name.startsWith('export-cells'));
308
- const canExportCells = cellSelectionItems.length;
309
- const rowSelectionItems = exportMenuItems.filter((item) => item.name.startsWith('export-rows'));
310
- const canExportRows = rowSelectionItems.length;
311
- if (canExportCells && !canExportRows) {
312
- return [
313
- this.buildMenuGroupParent('Export', cellSelectionItems, {
314
- label: 'Export Selected Cells',
315
- }),
316
- ];
317
- }
318
- if (!canExportCells && canExportRows) {
319
- return [
320
- this.buildMenuGroupParent('Export', rowSelectionItems, {
321
- label: 'Export Selected Rows',
322
- }),
323
- ];
324
- }
325
- if (canExportCells && canExportRows) {
326
- const cellsSubMenu = this.buildMenuGroupParent('Export', cellSelectionItems, {
327
- label: 'Cells',
328
- });
329
- const rowsSubMenu = this.buildMenuGroupParent('Export', rowSelectionItems, { label: 'Rows' });
330
- return [
331
- this.buildMenuGroupParent('Export', [cellsSubMenu, rowsSubMenu], {
332
- label: 'Export Selected',
354
+ const visualReportItems = exportMenuItems.filter((item) => item.name.startsWith('export-visual-data-excel'));
355
+ const visualDataExportItems = visualReportItems.length
356
+ ? [
357
+ this.buildMenuGroupParent('Export', exportMenuItems.filter((item) => item.name.startsWith('export-visual-data-excel')), {
358
+ label: 'Visual Data',
359
+ icon: false,
333
360
  }),
334
- ];
335
- }
361
+ ]
362
+ : [];
363
+ const allDataExportItems = this.normalizeMenuGroup(this.buildMenuGroupParent('Export', exportMenuItems.filter((item) => item.name.startsWith('export-all-data')), {
364
+ label: 'All Data',
365
+ icon: false,
366
+ }));
367
+ const currentDataExportItems = this.normalizeMenuGroup(this.buildMenuGroupParent('Export', exportMenuItems.filter((item) => item.name.startsWith('export-current-data')), {
368
+ label: 'Current Data',
369
+ icon: false,
370
+ }));
371
+ const selectedCellsExportItems = this.normalizeMenuGroup(this.buildMenuGroupParent('Export', exportMenuItems.filter((item) => item.name.startsWith('export-selected-cells')), {
372
+ label: 'Selected Cells',
373
+ icon: false,
374
+ }));
375
+ const selectedRowsExportItems = this.normalizeMenuGroup(this.buildMenuGroupParent('Export', exportMenuItems.filter((item) => item.name.startsWith('export-selected-rows')), {
376
+ label: 'Selected Rows',
377
+ icon: false,
378
+ }));
379
+ return this.normalizeMenuGroup(this.buildMenuGroupParent('Export', [
380
+ ...visualDataExportItems,
381
+ ...allDataExportItems,
382
+ ...currentDataExportItems,
383
+ ...selectedCellsExportItems,
384
+ ...selectedRowsExportItems,
385
+ ], {
386
+ label: 'Export',
387
+ icon: 'export',
388
+ }));
336
389
  }
337
390
  getLayoutContextMenuStructure(menuItems) {
338
391
  const layoutMenuItems = menuItems.filter((menuItem) => menuItem.module === 'Layout');
@@ -351,14 +404,15 @@ class AgGridMenuAdapter {
351
404
  buildMenuGroupParent(module, menuItems, config) {
352
405
  var _a, _b;
353
406
  const moduleInfo = this.adaptableInstance.ModuleService.getModuleInfoByModule(module);
407
+ const icon = config && config.icon === false
408
+ ? undefined
409
+ : { name: (_a = config === null || config === void 0 ? void 0 : config.icon) !== null && _a !== void 0 ? _a : moduleInfo.Glyph };
354
410
  return {
355
411
  name: 'menu-group',
356
- label: (_a = config === null || config === void 0 ? void 0 : config.label) !== null && _a !== void 0 ? _a : moduleInfo.FriendlyName,
412
+ label: (_b = config === null || config === void 0 ? void 0 : config.label) !== null && _b !== void 0 ? _b : moduleInfo.FriendlyName,
357
413
  isVisible: true,
358
414
  module: moduleInfo.ModuleName,
359
- icon: {
360
- name: (_b = config === null || config === void 0 ? void 0 : config.icon) !== null && _b !== void 0 ? _b : moduleInfo.Glyph,
361
- },
415
+ icon,
362
416
  subItems: menuItems,
363
417
  };
364
418
  }
@@ -445,16 +499,16 @@ class AgGridMenuAdapter {
445
499
  icon: {
446
500
  name: 'brush',
447
501
  },
448
- subItems: [...flashingCellMenuItems, ...formatColumnMenuItems, ...styledColumnMenuItems],
502
+ subItems: [...formatColumnMenuItems, ...styledColumnMenuItems, ...flashingCellMenuItems],
449
503
  };
450
- return [
504
+ return this.removeConsecutiveSeparators([
451
505
  ...settingsPanelMenuItems,
452
506
  ...dashboardMenuItems,
453
507
  ...columnFilterGroup,
454
- createStyleMenuItem,
455
- gridMenuItem,
456
- columnMenuItem,
457
- ];
508
+ ...this.normalizeMenuGroup(createStyleMenuItem),
509
+ ...this.normalizeMenuGroup(gridMenuItem),
510
+ ...this.normalizeMenuGroup(columnMenuItem),
511
+ ], '-');
458
512
  }
459
513
  getColumnFilterColumnMenuStructure(menuItems) {
460
514
  const columnFilterMenuItems = menuItems.filter((menuItem) => menuItem.module === 'ColumnFilter');
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const Badge_1 = require("../View/Components/Badge");
6
6
  const renderWithAdaptableContext_1 = require("../View/renderWithAdaptableContext");
7
7
  const React = tslib_1.__importStar(require("react"));
8
+ const RowSummary_1 = require("../PredefinedConfig/Common/RowSummary");
8
9
  const getBadgeRendererForColumn = (styledColumn, abColumn, api) => {
9
10
  if (!styledColumn.BadgeStyle) {
10
11
  return;
@@ -15,7 +16,7 @@ const getBadgeRendererForColumn = (styledColumn, abColumn, api) => {
15
16
  return adaptable;
16
17
  }
17
18
  init(params) {
18
- var _a, _b, _c;
19
+ var _a, _b, _c, _d, _e, _f, _g;
19
20
  const adaptable = this.getAdaptableInstance(params);
20
21
  const adapatableApi = adaptable.api;
21
22
  this.eGui = document.createElement('div');
@@ -27,6 +28,11 @@ const getBadgeRendererForColumn = (styledColumn, abColumn, api) => {
27
28
  this.eGui.innerHTML = formattedValue;
28
29
  return;
29
30
  }
31
+ if (((_d = params === null || params === void 0 ? void 0 : params.data) === null || _d === void 0 ? void 0 : _d[RowSummary_1.ROW_SUMMARY_ROW_ID]) && !styledColumn.IncludeRowSummaries) {
32
+ const formattedValue = (_g = (_f = (_e = params.formatValue) === null || _e === void 0 ? void 0 : _e.call(params, params.value)) !== null && _f !== void 0 ? _f : params.value) !== null && _g !== void 0 ? _g : '';
33
+ this.eGui.innerHTML = formattedValue;
34
+ return;
35
+ }
30
36
  if (['NumberArray', 'StringArray'].includes(abColumn.dataType)) {
31
37
  this.renderArrayValues(params, adapatableApi);
32
38
  }
@@ -17,7 +17,9 @@ const getPercentBarRendererForColumn = (styledColumn, abColumn, api) => {
17
17
  if (Helper_1.default.objectNotExists(value)) {
18
18
  value = 0;
19
19
  }
20
- if (!styledColumn.IncludeGroupedRows && api.gridApi.isGroupRowNode(params.node)) {
20
+ // No longer support showing Percent Bar in Grouped Rows
21
+ if (api.gridApi.isGroupRowNode(params.node)) {
22
+ // if (!styledColumn.IncludeGroupedRows && api.gridApi.isGroupRowNode(params.node)) {
21
23
  if (params.value) {
22
24
  this.eGui = document.createElement('div');
23
25
  this.eGui.append(params.value);
@@ -7,8 +7,12 @@ const react_redux_1 = require("react-redux");
7
7
  const react_1 = require("react");
8
8
  const Loader_1 = require("../Loader");
9
9
  const AdaptableContext_1 = require("../../View/AdaptableContext");
10
+ const ExternalRenderer_1 = require("../../View/Components/ExternalRenderer");
11
+ const Dialog_1 = tslib_1.__importDefault(require("../Dialog"));
12
+ const rebass_1 = require("rebass");
10
13
  const ProgressIndicator = () => {
11
- const { active, label } = (0, react_redux_1.useSelector)((state) => state.System.ProgressIndicator);
14
+ const adaptable = (0, AdaptableContext_1.useAdaptable)();
15
+ const { active, text, render, frameworkComponent } = (0, react_redux_1.useSelector)((state) => state.System.ProgressIndicator);
12
16
  const [visible, setVisible] = (0, react_1.useState)(false);
13
17
  const [progressIndicatorCoordinates, setProgressIndicatorCoordinates] = (0, react_1.useState)({
14
18
  top: 0,
@@ -16,7 +20,6 @@ const ProgressIndicator = () => {
16
20
  height: 0,
17
21
  width: 0,
18
22
  });
19
- const adaptable = (0, AdaptableContext_1.useAdaptable)();
20
23
  const disableAdaptableGrid = (containerElement, disabled) => {
21
24
  const DISABLING_CSS_CLASS = 'ab-wait-for-progress-indicator';
22
25
  if (!containerElement) {
@@ -39,15 +42,21 @@ const ProgressIndicator = () => {
39
42
  (0, react_1.useEffect)(() => {
40
43
  disableAdaptableGrid(adaptable.getAdaptableContainerElement(), active);
41
44
  disableAdaptableGrid(adaptable.getAgGridContainerElement(), active);
42
- updateGridContainerCoordinates(adaptable.getAdaptableContainerElement());
45
+ updateGridContainerCoordinates(adaptable.getAgGridContainerElement());
43
46
  // without rAF the progress indicator would be rendered instantly, without the 'transition-delay' defined via CSS
44
47
  requestAnimationFrame(() => {
45
48
  setVisible(active);
46
49
  });
47
50
  }, [active]);
48
- return (React.createElement(React.Fragment, null, active && (React.createElement("div", { className: `ab-progress-indicator-wrapper ${visible ? 'ab-progress-indicator-wrapper--visible' : ''}`, style: progressIndicatorCoordinates },
49
- React.createElement("div", { className: "ab-progress-indicator-body" },
51
+ let customEl = null;
52
+ if (render || frameworkComponent) {
53
+ customEl = React.createElement(ExternalRenderer_1.ExternalRenderer, { render: render, frameworkComponent: frameworkComponent });
54
+ }
55
+ return (React.createElement(React.Fragment, null, active && (React.createElement(Dialog_1.default, { modal: true, isOpen: true, showCloseButton: false, className: `ab-ProgressIndicator ${visible ? 'ab-ProgressIndicator--visible' : ''}` },
56
+ React.createElement(rebass_1.Flex, { alignItems: "center", flexDirection: "column", p: 3, className: "ab-ProgressIndicator-body" },
50
57
  React.createElement(Loader_1.LoaderSpinner, null),
51
- React.createElement("span", { style: { marginLeft: 'var(--ab-space-2)' } }, label))))));
58
+ React.createElement(rebass_1.Box, { mt: 3 },
59
+ text && React.createElement(rebass_1.Box, null, text),
60
+ customEl))))));
52
61
  };
53
62
  exports.ProgressIndicator = ProgressIndicator;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const _default: (props: any) => JSX.Element;
3
+ export default _default;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const React = tslib_1.__importStar(require("react"));
5
+ const DefaultIcon_1 = tslib_1.__importDefault(require("./DefaultIcon"));
6
+ exports.default = (props) => (React.createElement(DefaultIcon_1.default, Object.assign({}, props, { viewBox: "0 -960 960 960" }),
7
+ React.createElement("path", { d: "M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z" })));
@@ -164,6 +164,7 @@ const comments_1 = tslib_1.__importDefault(require("./comments"));
164
164
  const select_all_1 = tslib_1.__importDefault(require("./select-all"));
165
165
  const select_off_1 = tslib_1.__importDefault(require("./select-off"));
166
166
  const select_fwd_1 = tslib_1.__importDefault(require("./select-fwd"));
167
+ const copy_1 = tslib_1.__importDefault(require("./copy"));
167
168
  const Icon_1 = require("../Icon");
168
169
  const AdaptableLogger_1 = require("../../agGrid/AdaptableLogger");
169
170
  exports.allIcons = {
@@ -171,6 +172,7 @@ exports.allIcons = {
171
172
  grid: layout_1.default,
172
173
  cells: cell_summary_1.default,
173
174
  columns: column_chooser_1.default,
175
+ copy: copy_1.default,
174
176
  'chart-and-grid': calculated_column_1.default,
175
177
  laptop: application_1.default,
176
178
  alert: alert_1.default,
package/src/env.js CHANGED
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  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: 1712667865411 || Date.now(),
6
- VERSION: "18.0.0-canary.28" || '--current-version--',
5
+ PUBLISH_TIMESTAMP: 1712751946631 || Date.now(),
6
+ VERSION: "18.0.0-canary.29" || '--current-version--',
7
7
  };