@nebula.js/stardust 5.14.0 → 5.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * @nebula.js/stardust v5.14.0
2
+ * @nebula.js/stardust v5.15.0
3
3
  * Copyright (c) 2025 QlikTech International AB
4
4
  * Released under the MIT license.
5
5
  */
@@ -1518,6 +1518,86 @@
1518
1518
  "zh-TW": "確定"
1519
1519
  }
1520
1520
  };
1521
+ var Object_FilterLabel_All = {
1522
+ id: "Object.FilterLabel.All",
1523
+ locale: {
1524
+ "de-DE": "ALLES",
1525
+ "en-US": "ALL",
1526
+ "es-ES": "TODOS",
1527
+ "fr-FR": "TOUT",
1528
+ "it-IT": "TUTTI",
1529
+ "ja-JP": "すべて",
1530
+ "ko-KR": "모두",
1531
+ "nl-NL": "ALLE",
1532
+ "pl-PL": "WSZYSTKIE",
1533
+ "pt-BR": "TODOS",
1534
+ "ru-RU": "ВСЕ",
1535
+ "sv-SE": "ALLA",
1536
+ "tr-TR": "TÜMÜ",
1537
+ "zh-CN": "全部",
1538
+ "zh-TW": "全部"
1539
+ }
1540
+ };
1541
+ var Object_FilterLabel_Exclude = {
1542
+ id: "Object.FilterLabel.Exclude",
1543
+ locale: {
1544
+ "de-DE": "NICHT",
1545
+ "en-US": "NOT",
1546
+ "es-ES": "NO",
1547
+ "fr-FR": "EXCLURE",
1548
+ "it-IT": "NON",
1549
+ "ja-JP": "除外",
1550
+ "ko-KR": "제외",
1551
+ "nl-NL": "NIET",
1552
+ "pl-PL": "NIE",
1553
+ "pt-BR": "NÃO",
1554
+ "ru-RU": "НЕ",
1555
+ "sv-SE": "INTE",
1556
+ "tr-TR": "DEĞİL",
1557
+ "zh-CN": "非",
1558
+ "zh-TW": "不是"
1559
+ }
1560
+ };
1561
+ var Object_FilterLabel_Unknown = {
1562
+ id: "Object.FilterLabel.Unknown",
1563
+ locale: {
1564
+ "de-DE": "Unbekannt",
1565
+ "en-US": "Unknown",
1566
+ "es-ES": "Desconocido",
1567
+ "fr-FR": "Inconnu",
1568
+ "it-IT": "Sconosciuto",
1569
+ "ja-JP": "不明",
1570
+ "ko-KR": "알 수 없음",
1571
+ "nl-NL": "Onbekend",
1572
+ "pl-PL": "Nieznany",
1573
+ "pt-BR": "Desconhecido",
1574
+ "ru-RU": "Неизвестный",
1575
+ "sv-SE": "Okänt",
1576
+ "tr-TR": "Bilinmiyor",
1577
+ "zh-CN": "未知",
1578
+ "zh-TW": "未知"
1579
+ }
1580
+ };
1581
+ var Object_FiltersApplied = {
1582
+ id: "Object.FiltersApplied",
1583
+ locale: {
1584
+ "de-DE": "Angewendete Filter:",
1585
+ "en-US": "Filters applied:",
1586
+ "es-ES": "Filtros aplicados:",
1587
+ "fr-FR": "Filtres appliqués :",
1588
+ "it-IT": "Filtri applicati:",
1589
+ "ja-JP": "適用されているフィルター:",
1590
+ "ko-KR": "적용된 필터:",
1591
+ "nl-NL": "Toegepaste filters:",
1592
+ "pl-PL": "Zastosowane filtry:",
1593
+ "pt-BR": "Filtros aplicados:",
1594
+ "ru-RU": "Примененные фильтры:",
1595
+ "sv-SE": "Använda filter:",
1596
+ "tr-TR": "Uygulanan filtreler:",
1597
+ "zh-CN": "应用的筛选器:",
1598
+ "zh-TW": "篩選器已套用:"
1599
+ }
1600
+ };
1521
1601
  var Object_Listbox_Alternative = {
1522
1602
  id: "Object.Listbox.Alternative",
1523
1603
  locale: {
@@ -2198,30 +2278,6 @@
2198
2278
  "zh-TW": "不符計算條件"
2199
2279
  }
2200
2280
  };
2201
- var Object_FilterLabel_All = {
2202
- id: "Object.FilterLabel.All",
2203
- locale: {
2204
- "en-US": "ALL"
2205
- }
2206
- };
2207
- var Object_FilterLabel_Exclude = {
2208
- id: "Object.FilterLabel.Exclude",
2209
- locale: {
2210
- "en-US": "NOT"
2211
- }
2212
- };
2213
- var Object_FilterLabel_Unknown = {
2214
- id: "Object.FilterLabel.Unknown",
2215
- locale: {
2216
- "en-US": "Unknown"
2217
- }
2218
- };
2219
- var Object_FiltersApplied = {
2220
- id: "Object.FiltersApplied",
2221
- locale: {
2222
- "en-US": "Filters applied:"
2223
- }
2224
- };
2225
2281
  var all = {
2226
2282
  Cancel: Cancel$1,
2227
2283
  CurrentSelections_All: CurrentSelections_All,
@@ -2244,6 +2300,10 @@
2244
2300
  Navigate_Back: Navigate_Back,
2245
2301
  Navigate_Forward: Navigate_Forward,
2246
2302
  OK: OK,
2303
+ Object_FilterLabel_All: Object_FilterLabel_All,
2304
+ Object_FilterLabel_Exclude: Object_FilterLabel_Exclude,
2305
+ Object_FilterLabel_Unknown: Object_FilterLabel_Unknown,
2306
+ Object_FiltersApplied: Object_FiltersApplied,
2247
2307
  Object_Listbox_Alternative: Object_Listbox_Alternative,
2248
2308
  Object_Listbox_Excluded: Object_Listbox_Excluded,
2249
2309
  Object_Listbox_ExcludedLock: Object_Listbox_ExcludedLock,
@@ -2277,11 +2337,7 @@
2277
2337
  Visualization_Invalid_Dimension: Visualization_Invalid_Dimension,
2278
2338
  Visualization_Invalid_Measure: Visualization_Invalid_Measure,
2279
2339
  Visualization_LayoutError: Visualization_LayoutError,
2280
- Visualization_UnfulfilledCalculationCondition: Visualization_UnfulfilledCalculationCondition,
2281
- Object_FilterLabel_All: Object_FilterLabel_All,
2282
- Object_FilterLabel_Exclude: Object_FilterLabel_Exclude,
2283
- Object_FilterLabel_Unknown: Object_FilterLabel_Unknown,
2284
- Object_FiltersApplied: Object_FiltersApplied
2340
+ Visualization_UnfulfilledCalculationCondition: Visualization_UnfulfilledCalculationCondition
2285
2341
  };
2286
2342
 
2287
2343
  function appLocaleFn(language) {
@@ -15182,7 +15238,7 @@
15182
15238
  return cache[key];
15183
15239
  }
15184
15240
 
15185
- const NEBULA_VERSION_HASH = "dc2c";
15241
+ const NEBULA_VERSION_HASH = "5519";
15186
15242
  ClassNameGenerator.configure(componentName => {
15187
15243
  return "njs-".concat(NEBULA_VERSION_HASH, "-").concat(componentName.replace('Mui', ''));
15188
15244
  });
@@ -15417,13 +15473,14 @@
15417
15473
  context
15418
15474
  } = _ref2;
15419
15475
  let resolveRender;
15476
+ let destroyed = false;
15420
15477
  const rendered = new Promise(resolve => {
15421
15478
  resolveRender = resolve;
15422
15479
  });
15423
15480
  const appRef = React.createRef();
15424
15481
  const element = document.createElement('div');
15425
15482
  element.style.display = 'none';
15426
- element.setAttribute('data-nebulajs-version', "5.14.0");
15483
+ element.setAttribute('data-nebulajs-version', "5.15.0");
15427
15484
  element.setAttribute('data-app-id', app.id);
15428
15485
  document.body.appendChild(element);
15429
15486
  if (context) {
@@ -15457,7 +15514,7 @@
15457
15514
  delete cells[id];
15458
15515
  },
15459
15516
  add(component, unmount) {
15460
- (async () => {
15517
+ return (async () => {
15461
15518
  await rendered;
15462
15519
  components.push(component);
15463
15520
  componentsUnmount.push(unmount);
@@ -15465,17 +15522,19 @@
15465
15522
  })();
15466
15523
  },
15467
15524
  remove(component) {
15468
- (async _appRef$current => {
15469
- await rendered;
15470
- const ix = components.indexOf(component);
15471
- if (ix !== -1) {
15472
- var _componentsUnmount$ix;
15473
- (_componentsUnmount$ix = componentsUnmount[ix]) === null || _componentsUnmount$ix === void 0 || _componentsUnmount$ix.call(componentsUnmount);
15474
- components.splice(ix, 1);
15475
- componentsUnmount.splice(ix, 1);
15476
- }
15477
- appRef === null || appRef === void 0 || (_appRef$current = appRef.current) === null || _appRef$current === void 0 || _appRef$current.setComps(components);
15478
- })();
15525
+ if (!destroyed) {
15526
+ (async _appRef$current => {
15527
+ await rendered;
15528
+ const ix = components.indexOf(component);
15529
+ if (ix !== -1) {
15530
+ var _componentsUnmount$ix;
15531
+ (_componentsUnmount$ix = componentsUnmount[ix]) === null || _componentsUnmount$ix === void 0 || _componentsUnmount$ix.call(componentsUnmount);
15532
+ components.splice(ix, 1);
15533
+ componentsUnmount.splice(ix, 1);
15534
+ }
15535
+ appRef === null || appRef === void 0 || (_appRef$current = appRef.current) === null || _appRef$current === void 0 || _appRef$current.setComps(components);
15536
+ })();
15537
+ }
15479
15538
  },
15480
15539
  setMuiThemeName(themeName) {
15481
15540
  (async () => {
@@ -15494,6 +15553,7 @@
15494
15553
  })();
15495
15554
  },
15496
15555
  destroy() {
15556
+ destroyed = true;
15497
15557
  componentsUnmount.forEach(c => {
15498
15558
  c && c();
15499
15559
  });
@@ -24205,7 +24265,7 @@
24205
24265
  canCancel,
24206
24266
  canRetry
24207
24267
  }, longrunning] = useRpc(model, 'getLayout');
24208
- if (model !== null && model !== void 0 && model.pureLayout) {
24268
+ if (model !== null && model !== void 0 && model.pureLayout && layout) {
24209
24269
  return [model.pureLayout, {
24210
24270
  validating,
24211
24271
  canCancel,
@@ -29881,10 +29941,6 @@
29881
29941
  const popoverStyle = {
29882
29942
  pointerEvents: 'none'
29883
29943
  };
29884
- const popoverTransformOrigin = {
29885
- vertical: 'bottom',
29886
- horizontal: 'right'
29887
- };
29888
29944
  function ActionsToolbar(_ref3) {
29889
29945
  var _popover$anchorEl$cli, _popover$anchorEl;
29890
29946
  let {
@@ -29927,7 +29983,11 @@
29927
29983
  const [showMoreItems, setShowMoreItems] = reactExports.useState(false);
29928
29984
  const popoverAnchorOrigin = {
29929
29985
  vertical: 12,
29930
- horizontal: ((_popover$anchorEl$cli = (_popover$anchorEl = popover.anchorEl) === null || _popover$anchorEl === void 0 ? void 0 : _popover$anchorEl.clientWidth) !== null && _popover$anchorEl$cli !== void 0 ? _popover$anchorEl$cli : 0) - 7
29986
+ horizontal: isRtl ? 0 : ((_popover$anchorEl$cli = (_popover$anchorEl = popover.anchorEl) === null || _popover$anchorEl === void 0 ? void 0 : _popover$anchorEl.clientWidth) !== null && _popover$anchorEl$cli !== void 0 ? _popover$anchorEl$cli : 0) - 7
29987
+ };
29988
+ const popoverTransformOrigin = {
29989
+ vertical: 'bottom',
29990
+ horizontal: isRtl ? -7 : 'right'
29931
29991
  };
29932
29992
  const actionsRef = reactExports.useRef();
29933
29993
  const moreRef = reactExports.useRef();
@@ -35850,7 +35910,8 @@
35850
35910
  anchorEl,
35851
35911
  hovering,
35852
35912
  focusHandler,
35853
- titleStyles = {}
35913
+ titleStyles = {},
35914
+ isRtl
35854
35915
  } = _ref2;
35855
35916
  const showTitle = layout.showTitles && !!layout.title;
35856
35917
  const showSubtitle = layout.showTitles && !!layout.subtitle;
@@ -35880,7 +35941,8 @@
35880
35941
  anchorEl
35881
35942
  },
35882
35943
  focusHandler: focusHandler,
35883
- layout: layout
35944
+ layout: layout,
35945
+ isRtl: isRtl
35884
35946
  });
35885
35947
  return /*#__PURE__*/React.createElement(StyledGrid$1, {
35886
35948
  item: true,
@@ -35890,7 +35952,8 @@
35890
35952
  }, /*#__PURE__*/React.createElement(Grid, {
35891
35953
  item: true,
35892
35954
  zeroMinWidth: true,
35893
- xs: true
35955
+ xs: true,
35956
+ dir: isRtl ? 'rtl' : 'ltr'
35894
35957
  }, /*#__PURE__*/React.createElement(Grid, {
35895
35958
  container: true,
35896
35959
  wrap: "nowrap",
@@ -36098,7 +36161,8 @@
36098
36161
  layout,
36099
36162
  translator,
36100
36163
  filtersFootnoteString,
36101
- footerStyle
36164
+ footerStyle,
36165
+ isRtl
36102
36166
  } = _ref2;
36103
36167
  const filtersFootnoteLabels = generateFiltersLabels((_layout$filters = layout === null || layout === void 0 ? void 0 : layout.filters) !== null && _layout$filters !== void 0 ? _layout$filters : [], translator);
36104
36168
  const styles = {
@@ -36117,7 +36181,8 @@
36117
36181
  padding: footerStyle === null || footerStyle === void 0 ? void 0 : footerStyle.padding,
36118
36182
  borderTop: footerStyle === null || footerStyle === void 0 ? void 0 : footerStyle.borderTop
36119
36183
  },
36120
- "data-testid": "filters-footnote"
36184
+ "data-testid": "filters-footnote",
36185
+ justifyContent: isRtl ? 'flex-end' : 'flex-start'
36121
36186
  }, /*#__PURE__*/React.createElement(Grid, {
36122
36187
  item: true,
36123
36188
  display: "flex"
@@ -36174,7 +36239,8 @@
36174
36239
  titleStyles = {},
36175
36240
  translator,
36176
36241
  flags,
36177
- isCardTheme
36242
+ isCardTheme,
36243
+ isRtl
36178
36244
  } = _ref;
36179
36245
  const footerStyle = titleStyles.footer;
36180
36246
  const hasFilters = (layout === null || layout === void 0 || (_layout$filters = layout.filters) === null || _layout$filters === void 0 ? void 0 : _layout$filters.length) > 0 && (layout === null || layout === void 0 || (_layout$qHyperCube = layout.qHyperCube) === null || _layout$qHyperCube === void 0 || (_layout$qHyperCube = _layout$qHyperCube.qMeasureInfo) === null || _layout$qHyperCube === void 0 ? void 0 : _layout$qHyperCube.length) > 0;
@@ -36197,12 +36263,14 @@
36197
36263
  noWrap: true,
36198
36264
  variant: "body2",
36199
36265
  className: CellFooter.className,
36200
- style: footerStyle
36266
+ style: footerStyle,
36267
+ align: isRtl ? 'right' : 'left'
36201
36268
  }, layout.footnote)), showFilters && /*#__PURE__*/React.createElement(FiltersFooter, {
36202
36269
  layout: layout,
36203
36270
  translator: translator,
36204
36271
  filtersFootnoteString: filtersFootnoteString,
36205
- footerStyle: footerStyle
36272
+ footerStyle: footerStyle,
36273
+ isRtl: isRtl
36206
36274
  }))) : null;
36207
36275
  }
36208
36276
 
@@ -36459,67 +36527,61 @@
36459
36527
  }
36460
36528
  }
36461
36529
 
36462
- const NP_PADDINH_IN_CARDS_WITHOUT_TITLE = ['action-button', 'sn-nav-menu'];
36463
- const NO_PADDING_IN_CARDS = ['pivot-table', 'table', 'sn-table', 'sn-pivot-table', 'kpi', 'map', 'filterpane', 'sn-calendar', 'sn-filter-pane', 'sn-layout-container', 'sn-listbox', 'sn-shape', 'sn-tabbed-container'];
36464
- const shouldUseCardPadding = _ref => {
36465
- let {
36466
- isCardTheme,
36467
- layout,
36468
- isError
36469
- } = _ref;
36470
- const visualization = layout === null || layout === void 0 ? void 0 : layout.visualization;
36471
- if (!isCardTheme) {
36472
- return false;
36530
+ const NO_BORDER_IN_CARDS = ['action-button', 'sn-nav-menu', 'filterpane', 'sn-shape'];
36531
+ const NO_PADDING_IN_CARDS = [...NO_BORDER_IN_CARDS, 'pivot-table', 'table', 'sn-table', 'sn-pivot-table', 'kpi', 'sn-calendar', 'sn-filter-pane', 'sn-layout-container', 'sn-tabbed-container'];
36532
+ const getPaddTitle = visualization => NO_BORDER_IN_CARDS.indexOf(visualization) === -1;
36533
+ const getTitlePadding = visualization => {
36534
+ const paddTitle = getPaddTitle(visualization);
36535
+ if (paddTitle) {
36536
+ return '10px 10px 0';
36473
36537
  }
36474
- if (isError) {
36475
- return true;
36476
- }
36477
- if (NO_PADDING_IN_CARDS.indexOf(visualization) !== -1) {
36478
- return false;
36479
- }
36480
- const showTitle = layout === null || layout === void 0 ? void 0 : layout.showTitles;
36481
- if (!showTitle && NP_PADDINH_IN_CARDS_WITHOUT_TITLE.indexOf(visualization) !== -1) {
36482
- return false;
36538
+ return '10px 0 0';
36539
+ };
36540
+ const getSubtitlePadding = (visualization, showTitle) => {
36541
+ const paddTitle = getPaddTitle(visualization);
36542
+ if (showTitle) {
36543
+ if (paddTitle) {
36544
+ return '0 10px';
36545
+ }
36546
+ return '0';
36483
36547
  }
36484
- return true;
36548
+ return getTitlePadding(visualization);
36485
36549
  };
36486
- const getPadding = _ref2 => {
36550
+ const getPadding = _ref => {
36487
36551
  let {
36488
36552
  layout,
36489
36553
  isError,
36490
36554
  isCardTheme,
36491
36555
  titleStyles,
36492
36556
  translator
36493
- } = _ref2;
36494
- const cardPadding = shouldUseCardPadding({
36495
- isCardTheme,
36496
- layout,
36497
- isError
36498
- });
36557
+ } = _ref;
36499
36558
  if (isCardTheme) {
36500
36559
  var _layout$filters, _layout$qHyperCube, _layout$filters2;
36501
36560
  const showTitle = (layout === null || layout === void 0 ? void 0 : layout.showTitles) && !!(layout !== null && layout !== void 0 && layout.title);
36502
36561
  const showSubtitle = (layout === null || layout === void 0 ? void 0 : layout.showTitles) && !!(layout !== null && layout !== void 0 && layout.subtitle);
36503
36562
  const hasFilters = (layout === null || layout === void 0 || (_layout$filters = layout.filters) === null || _layout$filters === void 0 ? void 0 : _layout$filters.length) > 0 && (layout === null || layout === void 0 || (_layout$qHyperCube = layout.qHyperCube) === null || _layout$qHyperCube === void 0 || (_layout$qHyperCube = _layout$qHyperCube.qMeasureInfo) === null || _layout$qHyperCube === void 0 ? void 0 : _layout$qHyperCube.length) > 0;
36563
+ const visualization = layout === null || layout === void 0 ? void 0 : layout.visualization;
36504
36564
  const filtersFootnoteString = generateFiltersString((_layout$filters2 = layout === null || layout === void 0 ? void 0 : layout.filters) !== null && _layout$filters2 !== void 0 ? _layout$filters2 : [], translator);
36505
36565
  const showFilters = !(layout !== null && layout !== void 0 && layout.footnote) && hasFilters && filtersFootnoteString;
36506
36566
  const showFootnote = (layout === null || layout === void 0 ? void 0 : layout.showTitles) && (!!(layout !== null && layout !== void 0 && layout.footnote) || showFilters);
36507
- if (showTitle && cardPadding) {
36567
+ if (showTitle) {
36508
36568
  // eslint-disable-next-line no-param-reassign
36509
- titleStyles.main.padding = '10px 10px 0';
36569
+ titleStyles.main.padding = getTitlePadding(visualization);
36510
36570
  }
36511
- if (showSubtitle && cardPadding) {
36571
+ if (showSubtitle) {
36512
36572
  // eslint-disable-next-line no-param-reassign
36513
- titleStyles.subTitle.padding = showTitle ? '0 10px' : '10px 10px 0';
36573
+ titleStyles.subTitle.padding = getSubtitlePadding(visualization, showTitle);
36514
36574
  }
36515
36575
  if (showFootnote) {
36516
- // eslint-disable-next-line no-param-reassign
36517
- titleStyles.footer.borderTop = '1px solid #d9d9d9';
36576
+ if (NO_BORDER_IN_CARDS.indexOf(visualization) === -1) {
36577
+ // eslint-disable-next-line no-param-reassign
36578
+ titleStyles.footer.borderTop = '1px solid #d9d9d9';
36579
+ }
36518
36580
  // eslint-disable-next-line no-param-reassign
36519
36581
  titleStyles.footer.padding = '6px 10px';
36520
36582
  }
36521
36583
  let bodyPadding;
36522
- if (cardPadding) {
36584
+ if (isError || NO_PADDING_IN_CARDS.indexOf(visualization) === -1) {
36523
36585
  bodyPadding = "".concat(showTitle || showSubtitle ? '0' : '10px', " 10px ").concat(showFootnote ? '0' : '5px');
36524
36586
  }
36525
36587
  return bodyPadding;
@@ -36901,6 +36963,7 @@
36901
36963
  themeName,
36902
36964
  disableThemeBorder: snOptions === null || snOptions === void 0 ? void 0 : snOptions.disableThemeBorder
36903
36965
  });
36966
+ const isRtl = !!((snOptions === null || snOptions === void 0 ? void 0 : snOptions.direction) === 'rtl');
36904
36967
  const focusHandler = reactExports.useRef({
36905
36968
  focusToolbarButton(last) {
36906
36969
  // eslint-disable-next-line react/no-this-in-sfc
@@ -37178,7 +37241,8 @@
37178
37241
  anchorEl: cellNode,
37179
37242
  hovering: hovering,
37180
37243
  focusHandler: focusHandler.current,
37181
- titleStyles: titleStyles
37244
+ titleStyles: titleStyles,
37245
+ isRtl: isRtl
37182
37246
  }, "\xA0"), /*#__PURE__*/React.createElement(Grid, {
37183
37247
  tabIndex: keyboardNavigation && !externalFocusManagement ? 0 : -1,
37184
37248
  onKeyDown: keyboardNavigation && !externalFocusManagement ? handleKeyDown : null,
@@ -37196,7 +37260,8 @@
37196
37260
  titleStyles: titleStyles,
37197
37261
  translator: translator,
37198
37262
  flags: flags,
37199
- isCardTheme: isCardTheme
37263
+ isCardTheme: isCardTheme,
37264
+ isRtl: isRtl
37200
37265
  })), state.longRunningQuery && /*#__PURE__*/React.createElement(LongRunningQuery, {
37201
37266
  canCancel: canCancel,
37202
37267
  canRetry: canRetry,
@@ -37240,9 +37305,18 @@
37240
37305
  model.removeListener('closed', unmount);
37241
37306
  };
37242
37307
  model.on('closed', unmount);
37243
- root.add(portal, unmount);
37308
+
37244
37309
  // Cannot use model.id as it is not unique in a given mashup
37245
37310
  root.addCell(currentId, cellRef);
37311
+ (async () => {
37312
+ try {
37313
+ await root.add(portal, unmount);
37314
+ } catch (e) {
37315
+ unmount();
37316
+ onMount();
37317
+ onError(e);
37318
+ }
37319
+ })();
37246
37320
  return [unmount, cellRef];
37247
37321
  }
37248
37322
 
@@ -54694,6 +54768,13 @@
54694
54768
  current.hcProperties.qDynamicScript = [];
54695
54769
  }
54696
54770
  }
54771
+ function getDeletedFields(fields, indexes) {
54772
+ // Keep the original deleted order
54773
+ return fields.filter((_, idx) => indexes.includes(idx));
54774
+ }
54775
+ function getRemainedFields(fields, indexes) {
54776
+ return fields.filter((_, idx) => !indexes.includes(idx));
54777
+ }
54697
54778
 
54698
54779
  // ----------------------------------
54699
54780
  // ----------- DIMENSIONS -----------
@@ -54706,15 +54787,24 @@
54706
54787
  dimensions.splice(idx, 0, dimension);
54707
54788
  return Promise.resolve(dimension);
54708
54789
  }
54709
- function insertMainDimension(self, dimension, dimensions, idx) {
54710
- dimensions.splice(idx, 0, dimension);
54711
- return self.autoSortDimension(dimension).then(() => {
54712
- arrayUtil.indexAdded(self.hcProperties.qInterColumnSortOrder, self.getDimensions().length + dimension.length - 1);
54713
- if (typeof self.dimensionDefinition.add === 'function') {
54714
- return Promise.resolve(self.dimensionDefinition.add.call(null, dimension, self.properties, self));
54715
- }
54716
- return dimension;
54717
- });
54790
+ function addDimensionToColumnSortOrder(self, dimensions, index) {
54791
+ arrayUtil.indexAdded(self.hcProperties.qInterColumnSortOrder, index !== null && index !== void 0 ? index : dimensions.length - 1);
54792
+ }
54793
+ function addDimensionToColumnOrder(self, dimension) {
54794
+ if (typeof self.dimensionDefinition.add === 'function') {
54795
+ return Promise.resolve(self.dimensionDefinition.add.call(null, dimension, self.properties, self)).then(() => dimension);
54796
+ }
54797
+ return undefined;
54798
+ }
54799
+ function removeDimensionFromColumnSortOrder(self, index) {
54800
+ arrayUtil.indexRemoved(self.hcProperties.qInterColumnSortOrder, index);
54801
+ }
54802
+ function removeDimensionFromColumnOrder(self, index) {
54803
+ const [dimension] = self.hcProperties.qDimensions.splice(index, 1);
54804
+ if (dimension && typeof self.dimensionDefinition.remove === 'function') {
54805
+ return Promise.resolve(self.dimensionDefinition.remove.call(null, dimension, self.properties, self, index));
54806
+ }
54807
+ return undefined;
54718
54808
  }
54719
54809
  function isTotalDimensionsExceeded(self, dimensions) {
54720
54810
  const altDimensions = self.getAlternativeDimensions();
@@ -54724,8 +54814,7 @@
54724
54814
  const dimensions = self.hcProperties.qLayoutExclude.qHyperCubeDef.qDimensions;
54725
54815
  return alternative || self.maxDimensions() <= dimensions.length && dimensions.length < TOTAL_MAX.DIMENSIONS;
54726
54816
  }
54727
- async function addActiveDimension(self, dimension, existingDimensions, addedDimensions, addedActive) {
54728
- const initialLength = existingDimensions.length;
54817
+ async function addActiveDimension(self, dimension, initialLength, existingDimensions, addedDimensions, addedActive) {
54729
54818
  await self.autoSortDimension(dimension);
54730
54819
 
54731
54820
  // Update sorting order
@@ -54748,15 +54837,14 @@
54748
54837
  measures.splice(idx, 0, measure);
54749
54838
  return Promise.resolve(measure);
54750
54839
  }
54751
- function insertMainMeasure(self, measure, measures, idx) {
54752
- measures.splice(idx, 0, measure);
54753
- return self.autoSortMeasure(measure).then(() => {
54754
- arrayUtil.indexAdded(self.hcProperties.qInterColumnSortOrder, self.getDimensions().length + measure.length - 1);
54755
- if (typeof self.measureDefinition.add === 'function') {
54756
- return Promise.resolve(self.measureDefinition.add.call(null, measure, self.properties, self));
54757
- }
54758
- return measure;
54759
- });
54840
+ function addMeasureToColumnSortOrder(self, measures) {
54841
+ arrayUtil.indexAdded(self.hcProperties.qInterColumnSortOrder, self.getDimensions().length + measures.length - 1);
54842
+ }
54843
+ function addMeasureToColumnOrder(self, measure) {
54844
+ if (typeof self.measureDefinition.add === 'function') {
54845
+ return Promise.resolve(self.measureDefinition.add.call(null, measure, self.properties, self));
54846
+ }
54847
+ return undefined;
54760
54848
  }
54761
54849
  function isTotalMeasureExceeded(self, measures) {
54762
54850
  // Adding more measures than TOTAL_MAX_MEASURES is not allowed and we expect this.maxMeasures() to always be <= TOTAL_MAX_MEASURES
@@ -54781,6 +54869,19 @@
54781
54869
  }
54782
54870
  return Promise.resolve(addedMeasures);
54783
54871
  }
54872
+ function removeMeasureFromColumnSortOrder(self, index) {
54873
+ arrayUtil.indexRemoved(self.hcProperties.qInterColumnSortOrder, self.getDimensions().length + index);
54874
+ }
54875
+ function removeMeasureFromColumnOrder(self, index) {
54876
+ const [measure] = self.hcProperties.qMeasures.splice(index, 1);
54877
+ if (measure && typeof self.measureDefinition.remove === 'function') {
54878
+ return Promise.resolve(self.measureDefinition.remove.call(null, measure, self.properties, self, index));
54879
+ }
54880
+ return undefined;
54881
+ }
54882
+ function removeAltMeasureByIndex(self, index) {
54883
+ return self.hcProperties.qLayoutExclude.qHyperCubeDef.qMeasures.splice(index, 1);
54884
+ }
54784
54885
 
54785
54886
  // eslint-disable-next-line import/no-extraneous-dependencies
54786
54887
  class DataPropertyHandler {
@@ -54835,6 +54936,12 @@
54835
54936
  static addDimensions() {
54836
54937
  throw notSupportedError;
54837
54938
  }
54939
+ static removeDimension() {
54940
+ throw notSupportedError;
54941
+ }
54942
+ static removeDimensions() {
54943
+ throw notSupportedError;
54944
+ }
54838
54945
  static autoSortDimension() {
54839
54946
  throw notSupportedError;
54840
54947
  }
@@ -54951,6 +55058,12 @@
54951
55058
  static addMeasures() {
54952
55059
  throw notSupportedError;
54953
55060
  }
55061
+ static removeMeasure() {
55062
+ throw notSupportedError;
55063
+ }
55064
+ static removeMeasures() {
55065
+ throw notSupportedError;
55066
+ }
54954
55067
  static autoSortMeasure() {
54955
55068
  throw notSupportedError;
54956
55069
  }
@@ -55033,10 +55146,10 @@
55033
55146
  const measure = this.createLibraryMeasure(id, defaults);
55034
55147
  return this.addMeasure(measure, true);
55035
55148
  }
55036
- maxMeasures(decrement) {
55037
- const decr = decrement || 0;
55149
+ maxMeasures() {
55150
+ let decrement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
55038
55151
  if (typeof this.measureDefinition.max === 'function') {
55039
- const dimLength = this.getDimensions().length - decr;
55152
+ const dimLength = this.getDimensions().length - decrement;
55040
55153
  const measureParams = flagsFn('PS_21371_ANALYSIS_TYPES') ? [dimLength, this.properties] : [dimLength];
55041
55154
  return this.measureDefinition.max.apply(null, measureParams);
55042
55155
  }
@@ -55110,24 +55223,66 @@
55110
55223
  });
55111
55224
  }
55112
55225
 
55226
+ function updateDimensionOrders(self, dimension, index) {
55227
+ const dimensions = self.getDimensions();
55228
+ dimensions.splice(index, 0, dimension);
55229
+ return self.autoSortDimension(dimension).then(async () => {
55230
+ addDimensionToColumnSortOrder(self, dimensions, index);
55231
+ await addDimensionToColumnOrder(self, dimension);
55232
+ return dimension;
55233
+ });
55234
+ }
55235
+
55113
55236
  function addMainDimension(self, dimension, index) {
55114
55237
  const dimensions = self.getDimensions();
55115
55238
  const idx = index !== null && index !== void 0 ? index : dimensions.length;
55116
55239
  if (dimensions.length < self.maxDimensions()) {
55117
- return insertMainDimension(self, dimension, dimensions, idx);
55240
+ return updateDimensionOrders(self, dimension, idx);
55118
55241
  }
55119
- return Promise.resolve();
55242
+ return Promise.resolve(dimension);
55120
55243
  }
55121
55244
 
55122
55245
  function addMainMeasure(self, measure, index) {
55123
55246
  const measures = self.getMeasures();
55124
55247
  const idx = index !== null && index !== void 0 ? index : measures.length;
55125
55248
  if (measures.length < self.maxMeasures()) {
55126
- insertMainMeasure(measure, measures, idx);
55249
+ measures.splice(idx, 0, measure);
55250
+ return self.autoSortMeasure(measure).then(() => {
55251
+ addMeasureToColumnSortOrder(self, measures);
55252
+ return addMeasureToColumnOrder(self, measure).then(() => measure);
55253
+ });
55127
55254
  }
55128
55255
  return measure;
55129
55256
  }
55130
55257
 
55258
+ async function removeMainDimension(self, index) {
55259
+ removeDimensionFromColumnSortOrder(self, index);
55260
+ await removeDimensionFromColumnOrder(self, index);
55261
+ }
55262
+
55263
+ function removeAlternativeMeasure(self, indexes) {
55264
+ const current = self;
55265
+ const measures = current.getAlternativeMeasures();
55266
+ const remainedFields = getRemainedFields(measures, indexes);
55267
+ current.hcProperties.qLayoutExclude.qHyperCubeDef.qMeasures = remainedFields;
55268
+ }
55269
+
55270
+ async function removeMainMeasure(self, index) {
55271
+ removeMeasureFromColumnSortOrder(self, index);
55272
+ await removeMeasureFromColumnOrder(self, index);
55273
+ }
55274
+
55275
+ function removeAlternativeDimension(self, index) {
55276
+ const [dimension] = self.getAlternativeDimensions().splice(index, 1);
55277
+ if (dimension && typeof self.dimensionDefinition.remove === 'function') {
55278
+ dimension.isAlternative = true;
55279
+ return Promise.resolve(self.dimensionDefinition.remove.call(null, dimension, self.properties, self, index)).then(() => {
55280
+ delete dimension.isAlternative;
55281
+ });
55282
+ }
55283
+ return undefined;
55284
+ }
55285
+
55131
55286
  class HyperCubeHandler extends DataPropertyHandler {
55132
55287
  constructor(opts) {
55133
55288
  super(opts);
@@ -55172,7 +55327,7 @@
55172
55327
  }
55173
55328
  addDimension(dimension, alternative, idx) {
55174
55329
  const dim = initializeField(dimension);
55175
- if (isDimensionAlternative(this, dim)) {
55330
+ if (isDimensionAlternative(this, alternative)) {
55176
55331
  return addAlternativeDimension(this, dim, idx);
55177
55332
  }
55178
55333
  return addMainDimension(this, dim, idx);
@@ -55180,6 +55335,7 @@
55180
55335
  async addDimensions(dimensions) {
55181
55336
  let alternative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
55182
55337
  const existingDimensions = this.getDimensions();
55338
+ const initialLength = existingDimensions.length;
55183
55339
  const addedDimensions = [];
55184
55340
  let addedActive = 0;
55185
55341
 
@@ -55199,7 +55355,7 @@
55199
55355
  const altDim = await addAlternativeDimension(this, dim);
55200
55356
  addedDimensions.push(altDim);
55201
55357
  } else if (existingDimensions.length < this.maxDimensions()) {
55202
- await addActiveDimension(this, dim, existingDimensions, addedDimensions, addedActive);
55358
+ await addActiveDimension(this, dim, initialLength, existingDimensions, addedDimensions, addedActive);
55203
55359
  addedActive++;
55204
55360
  }
55205
55361
  }
@@ -55220,6 +55376,78 @@
55220
55376
  }
55221
55377
  return addedDimensions;
55222
55378
  }
55379
+ removeDimension(idx, alternative) {
55380
+ if (alternative) {
55381
+ removeAlternativeDimension(this, idx);
55382
+ }
55383
+ removeMainDimension(this, idx);
55384
+ }
55385
+ async removeDimensions(indexes, alternative) {
55386
+ const altDimensions = this.getAlternativeDimensions();
55387
+ const dimensions = this.getDimensions();
55388
+ if (indexes.length === 0) return [];
55389
+ let deletedDimensions = [];
55390
+ // Start deleting from the end of the list first otherwise the idx is messed up
55391
+ const sortedIndexes = [...indexes].sort((a, b) => b - a);
55392
+ if (alternative && altDimensions.length > 0) {
55393
+ // Keep the original deleted order
55394
+ deletedDimensions = getDeletedFields(altDimensions, indexes);
55395
+ // eslint-disable-next-line no-restricted-syntax
55396
+ var _iteratorAbruptCompletion2 = false;
55397
+ var _didIteratorError2 = false;
55398
+ var _iteratorError2;
55399
+ try {
55400
+ for (var _iterator2 = _asyncIterator(sortedIndexes), _step2; _iteratorAbruptCompletion2 = !(_step2 = await _iterator2.next()).done; _iteratorAbruptCompletion2 = false) {
55401
+ const index = _step2.value;
55402
+ {
55403
+ await removeAlternativeDimension(this, index);
55404
+ }
55405
+ }
55406
+ } catch (err) {
55407
+ _didIteratorError2 = true;
55408
+ _iteratorError2 = err;
55409
+ } finally {
55410
+ try {
55411
+ if (_iteratorAbruptCompletion2 && _iterator2.return != null) {
55412
+ await _iterator2.return();
55413
+ }
55414
+ } finally {
55415
+ if (_didIteratorError2) {
55416
+ throw _iteratorError2;
55417
+ }
55418
+ }
55419
+ }
55420
+ } else if (dimensions.length > 0) {
55421
+ // Keep the original deleted order
55422
+ deletedDimensions = getDeletedFields(dimensions, indexes);
55423
+ // eslint-disable-next-line no-restricted-syntax
55424
+ var _iteratorAbruptCompletion3 = false;
55425
+ var _didIteratorError3 = false;
55426
+ var _iteratorError3;
55427
+ try {
55428
+ for (var _iterator3 = _asyncIterator(sortedIndexes), _step3; _iteratorAbruptCompletion3 = !(_step3 = await _iterator3.next()).done; _iteratorAbruptCompletion3 = false) {
55429
+ const index = _step3.value;
55430
+ {
55431
+ await removeMainDimension(this, index);
55432
+ }
55433
+ }
55434
+ } catch (err) {
55435
+ _didIteratorError3 = true;
55436
+ _iteratorError3 = err;
55437
+ } finally {
55438
+ try {
55439
+ if (_iteratorAbruptCompletion3 && _iterator3.return != null) {
55440
+ await _iterator3.return();
55441
+ }
55442
+ } finally {
55443
+ if (_didIteratorError3) {
55444
+ throw _iteratorError3;
55445
+ }
55446
+ }
55447
+ }
55448
+ }
55449
+ return deletedDimensions;
55450
+ }
55223
55451
  autoSortDimension(dimension) {
55224
55452
  if (dimension.qLibraryId) {
55225
55453
  return getAutoSortLibraryDimension(this, dimension);
@@ -55284,6 +55512,54 @@
55284
55512
  });
55285
55513
  return addedMeasures;
55286
55514
  }
55515
+ removeMeasure(idx, alternative) {
55516
+ if (alternative) {
55517
+ removeAltMeasureByIndex(this, idx);
55518
+ }
55519
+ removeMainMeasure(this, idx);
55520
+ }
55521
+ async removeMeasures(indexes, alternative) {
55522
+ const measures = this.getMeasures();
55523
+ const altMeasures = this.getAlternativeMeasures();
55524
+ if (indexes.length === 0) return [];
55525
+ let deletedMeasures = [];
55526
+ if (alternative && altMeasures.length > 0) {
55527
+ // Keep the original deleted order
55528
+ deletedMeasures = getDeletedFields(altMeasures, indexes);
55529
+ removeAlternativeMeasure(this, indexes);
55530
+ } else if (measures.length > 0) {
55531
+ // Keep the original deleted order
55532
+ deletedMeasures = getDeletedFields(measures, indexes);
55533
+ const sortedIndexes = [...indexes].sort((a, b) => b - a);
55534
+
55535
+ // eslint-disable-next-line no-restricted-syntax
55536
+ var _iteratorAbruptCompletion4 = false;
55537
+ var _didIteratorError4 = false;
55538
+ var _iteratorError4;
55539
+ try {
55540
+ for (var _iterator4 = _asyncIterator(sortedIndexes), _step4; _iteratorAbruptCompletion4 = !(_step4 = await _iterator4.next()).done; _iteratorAbruptCompletion4 = false) {
55541
+ const index = _step4.value;
55542
+ {
55543
+ await removeMainMeasure(this, index);
55544
+ }
55545
+ }
55546
+ } catch (err) {
55547
+ _didIteratorError4 = true;
55548
+ _iteratorError4 = err;
55549
+ } finally {
55550
+ try {
55551
+ if (_iteratorAbruptCompletion4 && _iterator4.return != null) {
55552
+ await _iterator4.return();
55553
+ }
55554
+ } finally {
55555
+ if (_didIteratorError4) {
55556
+ throw _iteratorError4;
55557
+ }
55558
+ }
55559
+ }
55560
+ }
55561
+ return deletedMeasures;
55562
+ }
55287
55563
  }
55288
55564
 
55289
55565
  /* eslint no-param-reassign: 0, no-restricted-globals: 0 */
@@ -57738,6 +58014,7 @@
57738
58014
  model,
57739
58015
  /**
57740
58016
  * Destroys the visualization and removes it from the the DOM.
58017
+ * @returns {Promise<void>}
57741
58018
  * @example
57742
58019
  * const viz = await embed(app).render({
57743
58020
  * element,
@@ -58875,6 +59152,7 @@
58875
59152
  function requireParseOptions() {
58876
59153
  if (hasRequiredParseOptions) return parseOptions_1;
58877
59154
  hasRequiredParseOptions = 1;
59155
+
58878
59156
  // parse out just the options we care about
58879
59157
  const looseOption = Object.freeze({
58880
59158
  loose: true
@@ -58900,6 +59178,7 @@
58900
59178
  function requireConstants() {
58901
59179
  if (hasRequiredConstants) return constants;
58902
59180
  hasRequiredConstants = 1;
59181
+
58903
59182
  // Note: this is the semver.org version of the spec that it implements
58904
59183
  // Not necessarily the package version of this code.
58905
59184
  const SEMVER_SPEC_VERSION = '2.0.0';
@@ -58946,6 +59225,7 @@
58946
59225
  if (hasRequiredRe) return re.exports;
58947
59226
  hasRequiredRe = 1;
58948
59227
  (function (module, exports) {
59228
+
58949
59229
  const {
58950
59230
  MAX_SAFE_COMPONENT_LENGTH,
58951
59231
  MAX_SAFE_BUILD_LENGTH,
@@ -59010,9 +59290,11 @@
59010
59290
 
59011
59291
  // ## Pre-release Version Identifier
59012
59292
  // A numeric identifier, or a non-numeric identifier.
59293
+ // Non-numberic identifiers include numberic identifiers but can be longer.
59294
+ // Therefore non-numberic identifiers must go first.
59013
59295
 
59014
- createToken('PRERELEASEIDENTIFIER', "(?:".concat(src[t.NUMERICIDENTIFIER], "|").concat(src[t.NONNUMERICIDENTIFIER], ")"));
59015
- createToken('PRERELEASEIDENTIFIERLOOSE', "(?:".concat(src[t.NUMERICIDENTIFIERLOOSE], "|").concat(src[t.NONNUMERICIDENTIFIER], ")"));
59296
+ createToken('PRERELEASEIDENTIFIER', "(?:".concat(src[t.NONNUMERICIDENTIFIER], "|").concat(src[t.NUMERICIDENTIFIER], ")"));
59297
+ createToken('PRERELEASEIDENTIFIERLOOSE', "(?:".concat(src[t.NONNUMERICIDENTIFIER], "|").concat(src[t.NUMERICIDENTIFIERLOOSE], ")"));
59016
59298
 
59017
59299
  // ## Pre-release Version
59018
59300
  // Hyphen, followed by one or more dot-separated pre-release version
@@ -59145,7 +59427,6 @@
59145
59427
  } = requireConstants();
59146
59428
  const {
59147
59429
  safeRe: re,
59148
- safeSrc: src,
59149
59430
  t
59150
59431
  } = requireRe();
59151
59432
  const parseOptions = requireParseOptions();
@@ -59302,8 +59583,7 @@
59302
59583
  }
59303
59584
  // Avoid an invalid semver results
59304
59585
  if (identifier) {
59305
- const r = new RegExp("^".concat(this.options.loose ? src[t.PRERELEASELOOSE] : src[t.PRERELEASE], "$"));
59306
- const match = "-".concat(identifier).match(r);
59586
+ const match = "-".concat(identifier).match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);
59307
59587
  if (!match || match[1] !== identifier) {
59308
59588
  throw new Error("invalid identifier: ".concat(identifier));
59309
59589
  }
@@ -61319,7 +61599,10 @@
61319
61599
  destroySessionObject: async () => {},
61320
61600
  getObject,
61321
61601
  getAppLayout,
61322
- getListObject: async () => {}
61602
+ getListObject: async props => {
61603
+ var _props$qInfo;
61604
+ return getObject((_props$qInfo = props.qInfo) === null || _props$qInfo === void 0 ? void 0 : _props$qInfo.qId);
61605
+ }
61323
61606
  };
61324
61607
  return Promise.resolve(app);
61325
61608
  }