@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.
package/core/esm/dev.js CHANGED
@@ -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
  */
@@ -1445,6 +1445,86 @@ var OK = {
1445
1445
  "zh-TW": "確定"
1446
1446
  }
1447
1447
  };
1448
+ var Object_FilterLabel_All = {
1449
+ id: "Object.FilterLabel.All",
1450
+ locale: {
1451
+ "de-DE": "ALLES",
1452
+ "en-US": "ALL",
1453
+ "es-ES": "TODOS",
1454
+ "fr-FR": "TOUT",
1455
+ "it-IT": "TUTTI",
1456
+ "ja-JP": "すべて",
1457
+ "ko-KR": "모두",
1458
+ "nl-NL": "ALLE",
1459
+ "pl-PL": "WSZYSTKIE",
1460
+ "pt-BR": "TODOS",
1461
+ "ru-RU": "ВСЕ",
1462
+ "sv-SE": "ALLA",
1463
+ "tr-TR": "TÜMÜ",
1464
+ "zh-CN": "全部",
1465
+ "zh-TW": "全部"
1466
+ }
1467
+ };
1468
+ var Object_FilterLabel_Exclude = {
1469
+ id: "Object.FilterLabel.Exclude",
1470
+ locale: {
1471
+ "de-DE": "NICHT",
1472
+ "en-US": "NOT",
1473
+ "es-ES": "NO",
1474
+ "fr-FR": "EXCLURE",
1475
+ "it-IT": "NON",
1476
+ "ja-JP": "除外",
1477
+ "ko-KR": "제외",
1478
+ "nl-NL": "NIET",
1479
+ "pl-PL": "NIE",
1480
+ "pt-BR": "NÃO",
1481
+ "ru-RU": "НЕ",
1482
+ "sv-SE": "INTE",
1483
+ "tr-TR": "DEĞİL",
1484
+ "zh-CN": "非",
1485
+ "zh-TW": "不是"
1486
+ }
1487
+ };
1488
+ var Object_FilterLabel_Unknown = {
1489
+ id: "Object.FilterLabel.Unknown",
1490
+ locale: {
1491
+ "de-DE": "Unbekannt",
1492
+ "en-US": "Unknown",
1493
+ "es-ES": "Desconocido",
1494
+ "fr-FR": "Inconnu",
1495
+ "it-IT": "Sconosciuto",
1496
+ "ja-JP": "不明",
1497
+ "ko-KR": "알 수 없음",
1498
+ "nl-NL": "Onbekend",
1499
+ "pl-PL": "Nieznany",
1500
+ "pt-BR": "Desconhecido",
1501
+ "ru-RU": "Неизвестный",
1502
+ "sv-SE": "Okänt",
1503
+ "tr-TR": "Bilinmiyor",
1504
+ "zh-CN": "未知",
1505
+ "zh-TW": "未知"
1506
+ }
1507
+ };
1508
+ var Object_FiltersApplied = {
1509
+ id: "Object.FiltersApplied",
1510
+ locale: {
1511
+ "de-DE": "Angewendete Filter:",
1512
+ "en-US": "Filters applied:",
1513
+ "es-ES": "Filtros aplicados:",
1514
+ "fr-FR": "Filtres appliqués :",
1515
+ "it-IT": "Filtri applicati:",
1516
+ "ja-JP": "適用されているフィルター:",
1517
+ "ko-KR": "적용된 필터:",
1518
+ "nl-NL": "Toegepaste filters:",
1519
+ "pl-PL": "Zastosowane filtry:",
1520
+ "pt-BR": "Filtros aplicados:",
1521
+ "ru-RU": "Примененные фильтры:",
1522
+ "sv-SE": "Använda filter:",
1523
+ "tr-TR": "Uygulanan filtreler:",
1524
+ "zh-CN": "应用的筛选器:",
1525
+ "zh-TW": "篩選器已套用:"
1526
+ }
1527
+ };
1448
1528
  var Object_Listbox_Alternative = {
1449
1529
  id: "Object.Listbox.Alternative",
1450
1530
  locale: {
@@ -2125,30 +2205,6 @@ var Visualization_UnfulfilledCalculationCondition = {
2125
2205
  "zh-TW": "不符計算條件"
2126
2206
  }
2127
2207
  };
2128
- var Object_FilterLabel_All = {
2129
- id: "Object.FilterLabel.All",
2130
- locale: {
2131
- "en-US": "ALL"
2132
- }
2133
- };
2134
- var Object_FilterLabel_Exclude = {
2135
- id: "Object.FilterLabel.Exclude",
2136
- locale: {
2137
- "en-US": "NOT"
2138
- }
2139
- };
2140
- var Object_FilterLabel_Unknown = {
2141
- id: "Object.FilterLabel.Unknown",
2142
- locale: {
2143
- "en-US": "Unknown"
2144
- }
2145
- };
2146
- var Object_FiltersApplied = {
2147
- id: "Object.FiltersApplied",
2148
- locale: {
2149
- "en-US": "Filters applied:"
2150
- }
2151
- };
2152
2208
  var all = {
2153
2209
  Cancel: Cancel$1,
2154
2210
  CurrentSelections_All: CurrentSelections_All,
@@ -2171,6 +2227,10 @@ var all = {
2171
2227
  Navigate_Back: Navigate_Back,
2172
2228
  Navigate_Forward: Navigate_Forward,
2173
2229
  OK: OK,
2230
+ Object_FilterLabel_All: Object_FilterLabel_All,
2231
+ Object_FilterLabel_Exclude: Object_FilterLabel_Exclude,
2232
+ Object_FilterLabel_Unknown: Object_FilterLabel_Unknown,
2233
+ Object_FiltersApplied: Object_FiltersApplied,
2174
2234
  Object_Listbox_Alternative: Object_Listbox_Alternative,
2175
2235
  Object_Listbox_Excluded: Object_Listbox_Excluded,
2176
2236
  Object_Listbox_ExcludedLock: Object_Listbox_ExcludedLock,
@@ -2204,11 +2264,7 @@ var all = {
2204
2264
  Visualization_Invalid_Dimension: Visualization_Invalid_Dimension,
2205
2265
  Visualization_Invalid_Measure: Visualization_Invalid_Measure,
2206
2266
  Visualization_LayoutError: Visualization_LayoutError,
2207
- Visualization_UnfulfilledCalculationCondition: Visualization_UnfulfilledCalculationCondition,
2208
- Object_FilterLabel_All: Object_FilterLabel_All,
2209
- Object_FilterLabel_Exclude: Object_FilterLabel_Exclude,
2210
- Object_FilterLabel_Unknown: Object_FilterLabel_Unknown,
2211
- Object_FiltersApplied: Object_FiltersApplied
2267
+ Visualization_UnfulfilledCalculationCondition: Visualization_UnfulfilledCalculationCondition
2212
2268
  };
2213
2269
 
2214
2270
  function appLocaleFn(language) {
@@ -10844,7 +10900,7 @@ function create$3(definition) {
10844
10900
  return cache[key];
10845
10901
  }
10846
10902
 
10847
- const NEBULA_VERSION_HASH = "dc2c";
10903
+ const NEBULA_VERSION_HASH = "5519";
10848
10904
  ClassNameGenerator.configure(componentName => {
10849
10905
  return "njs-".concat(NEBULA_VERSION_HASH, "-").concat(componentName.replace('Mui', ''));
10850
10906
  });
@@ -11079,13 +11135,14 @@ function boot(_ref2) {
11079
11135
  context
11080
11136
  } = _ref2;
11081
11137
  let resolveRender;
11138
+ let destroyed = false;
11082
11139
  const rendered = new Promise(resolve => {
11083
11140
  resolveRender = resolve;
11084
11141
  });
11085
11142
  const appRef = React__default.createRef();
11086
11143
  const element = document.createElement('div');
11087
11144
  element.style.display = 'none';
11088
- element.setAttribute('data-nebulajs-version', "5.14.0");
11145
+ element.setAttribute('data-nebulajs-version', "5.15.0");
11089
11146
  element.setAttribute('data-app-id', app.id);
11090
11147
  document.body.appendChild(element);
11091
11148
  if (context) {
@@ -11119,7 +11176,7 @@ function boot(_ref2) {
11119
11176
  delete cells[id];
11120
11177
  },
11121
11178
  add(component, unmount) {
11122
- (async () => {
11179
+ return (async () => {
11123
11180
  await rendered;
11124
11181
  components.push(component);
11125
11182
  componentsUnmount.push(unmount);
@@ -11127,17 +11184,19 @@ function boot(_ref2) {
11127
11184
  })();
11128
11185
  },
11129
11186
  remove(component) {
11130
- (async _appRef$current => {
11131
- await rendered;
11132
- const ix = components.indexOf(component);
11133
- if (ix !== -1) {
11134
- var _componentsUnmount$ix;
11135
- (_componentsUnmount$ix = componentsUnmount[ix]) === null || _componentsUnmount$ix === void 0 || _componentsUnmount$ix.call(componentsUnmount);
11136
- components.splice(ix, 1);
11137
- componentsUnmount.splice(ix, 1);
11138
- }
11139
- appRef === null || appRef === void 0 || (_appRef$current = appRef.current) === null || _appRef$current === void 0 || _appRef$current.setComps(components);
11140
- })();
11187
+ if (!destroyed) {
11188
+ (async _appRef$current => {
11189
+ await rendered;
11190
+ const ix = components.indexOf(component);
11191
+ if (ix !== -1) {
11192
+ var _componentsUnmount$ix;
11193
+ (_componentsUnmount$ix = componentsUnmount[ix]) === null || _componentsUnmount$ix === void 0 || _componentsUnmount$ix.call(componentsUnmount);
11194
+ components.splice(ix, 1);
11195
+ componentsUnmount.splice(ix, 1);
11196
+ }
11197
+ appRef === null || appRef === void 0 || (_appRef$current = appRef.current) === null || _appRef$current === void 0 || _appRef$current.setComps(components);
11198
+ })();
11199
+ }
11141
11200
  },
11142
11201
  setMuiThemeName(themeName) {
11143
11202
  (async () => {
@@ -11156,6 +11215,7 @@ function boot(_ref2) {
11156
11215
  })();
11157
11216
  },
11158
11217
  destroy() {
11218
+ destroyed = true;
11159
11219
  componentsUnmount.forEach(c => {
11160
11220
  c && c();
11161
11221
  });
@@ -11392,7 +11452,7 @@ function useLayout$1(model) {
11392
11452
  canCancel,
11393
11453
  canRetry
11394
11454
  }, longrunning] = useRpc(model, 'getLayout');
11395
- if (model !== null && model !== void 0 && model.pureLayout) {
11455
+ if (model !== null && model !== void 0 && model.pureLayout && layout) {
11396
11456
  return [model.pureLayout, {
11397
11457
  validating,
11398
11458
  canCancel,
@@ -17217,10 +17277,6 @@ const ActionsGroup = React__default.forwardRef((_ref2, ref) => {
17217
17277
  const popoverStyle = {
17218
17278
  pointerEvents: 'none'
17219
17279
  };
17220
- const popoverTransformOrigin = {
17221
- vertical: 'bottom',
17222
- horizontal: 'right'
17223
- };
17224
17280
  function ActionsToolbar(_ref3) {
17225
17281
  var _popover$anchorEl$cli, _popover$anchorEl;
17226
17282
  let {
@@ -17263,7 +17319,11 @@ function ActionsToolbar(_ref3) {
17263
17319
  const [showMoreItems, setShowMoreItems] = useState$1(false);
17264
17320
  const popoverAnchorOrigin = {
17265
17321
  vertical: 12,
17266
- 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
17322
+ 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
17323
+ };
17324
+ const popoverTransformOrigin = {
17325
+ vertical: 'bottom',
17326
+ horizontal: isRtl ? -7 : 'right'
17267
17327
  };
17268
17328
  const actionsRef = useRef$1();
17269
17329
  const moreRef = useRef$1();
@@ -23186,7 +23246,8 @@ function Header(_ref2) {
23186
23246
  anchorEl,
23187
23247
  hovering,
23188
23248
  focusHandler,
23189
- titleStyles = {}
23249
+ titleStyles = {},
23250
+ isRtl
23190
23251
  } = _ref2;
23191
23252
  const showTitle = layout.showTitles && !!layout.title;
23192
23253
  const showSubtitle = layout.showTitles && !!layout.subtitle;
@@ -23216,7 +23277,8 @@ function Header(_ref2) {
23216
23277
  anchorEl
23217
23278
  },
23218
23279
  focusHandler: focusHandler,
23219
- layout: layout
23280
+ layout: layout,
23281
+ isRtl: isRtl
23220
23282
  });
23221
23283
  return /*#__PURE__*/React__default.createElement(StyledGrid$1, {
23222
23284
  item: true,
@@ -23226,7 +23288,8 @@ function Header(_ref2) {
23226
23288
  }, /*#__PURE__*/React__default.createElement(Grid, {
23227
23289
  item: true,
23228
23290
  zeroMinWidth: true,
23229
- xs: true
23291
+ xs: true,
23292
+ dir: isRtl ? 'rtl' : 'ltr'
23230
23293
  }, /*#__PURE__*/React__default.createElement(Grid, {
23231
23294
  container: true,
23232
23295
  wrap: "nowrap",
@@ -23434,7 +23497,8 @@ function FiltersFooter(_ref2) {
23434
23497
  layout,
23435
23498
  translator,
23436
23499
  filtersFootnoteString,
23437
- footerStyle
23500
+ footerStyle,
23501
+ isRtl
23438
23502
  } = _ref2;
23439
23503
  const filtersFootnoteLabels = generateFiltersLabels((_layout$filters = layout === null || layout === void 0 ? void 0 : layout.filters) !== null && _layout$filters !== void 0 ? _layout$filters : [], translator);
23440
23504
  const styles = {
@@ -23453,7 +23517,8 @@ function FiltersFooter(_ref2) {
23453
23517
  padding: footerStyle === null || footerStyle === void 0 ? void 0 : footerStyle.padding,
23454
23518
  borderTop: footerStyle === null || footerStyle === void 0 ? void 0 : footerStyle.borderTop
23455
23519
  },
23456
- "data-testid": "filters-footnote"
23520
+ "data-testid": "filters-footnote",
23521
+ justifyContent: isRtl ? 'flex-end' : 'flex-start'
23457
23522
  }, /*#__PURE__*/React__default.createElement(Grid, {
23458
23523
  item: true,
23459
23524
  display: "flex"
@@ -23510,7 +23575,8 @@ function Footer(_ref) {
23510
23575
  titleStyles = {},
23511
23576
  translator,
23512
23577
  flags,
23513
- isCardTheme
23578
+ isCardTheme,
23579
+ isRtl
23514
23580
  } = _ref;
23515
23581
  const footerStyle = titleStyles.footer;
23516
23582
  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;
@@ -23533,12 +23599,14 @@ function Footer(_ref) {
23533
23599
  noWrap: true,
23534
23600
  variant: "body2",
23535
23601
  className: CellFooter.className,
23536
- style: footerStyle
23602
+ style: footerStyle,
23603
+ align: isRtl ? 'right' : 'left'
23537
23604
  }, layout.footnote)), showFilters && /*#__PURE__*/React__default.createElement(FiltersFooter, {
23538
23605
  layout: layout,
23539
23606
  translator: translator,
23540
23607
  filtersFootnoteString: filtersFootnoteString,
23541
- footerStyle: footerStyle
23608
+ footerStyle: footerStyle,
23609
+ isRtl: isRtl
23542
23610
  }))) : null;
23543
23611
  }
23544
23612
 
@@ -23795,67 +23863,61 @@ class RenderError extends Error {
23795
23863
  }
23796
23864
  }
23797
23865
 
23798
- const NP_PADDINH_IN_CARDS_WITHOUT_TITLE = ['action-button', 'sn-nav-menu'];
23799
- 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'];
23800
- const shouldUseCardPadding = _ref => {
23801
- let {
23802
- isCardTheme,
23803
- layout,
23804
- isError
23805
- } = _ref;
23806
- const visualization = layout === null || layout === void 0 ? void 0 : layout.visualization;
23807
- if (!isCardTheme) {
23808
- return false;
23866
+ const NO_BORDER_IN_CARDS = ['action-button', 'sn-nav-menu', 'filterpane', 'sn-shape'];
23867
+ 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'];
23868
+ const getPaddTitle = visualization => NO_BORDER_IN_CARDS.indexOf(visualization) === -1;
23869
+ const getTitlePadding = visualization => {
23870
+ const paddTitle = getPaddTitle(visualization);
23871
+ if (paddTitle) {
23872
+ return '10px 10px 0';
23809
23873
  }
23810
- if (isError) {
23811
- return true;
23812
- }
23813
- if (NO_PADDING_IN_CARDS.indexOf(visualization) !== -1) {
23814
- return false;
23815
- }
23816
- const showTitle = layout === null || layout === void 0 ? void 0 : layout.showTitles;
23817
- if (!showTitle && NP_PADDINH_IN_CARDS_WITHOUT_TITLE.indexOf(visualization) !== -1) {
23818
- return false;
23874
+ return '10px 0 0';
23875
+ };
23876
+ const getSubtitlePadding = (visualization, showTitle) => {
23877
+ const paddTitle = getPaddTitle(visualization);
23878
+ if (showTitle) {
23879
+ if (paddTitle) {
23880
+ return '0 10px';
23881
+ }
23882
+ return '0';
23819
23883
  }
23820
- return true;
23884
+ return getTitlePadding(visualization);
23821
23885
  };
23822
- const getPadding = _ref2 => {
23886
+ const getPadding = _ref => {
23823
23887
  let {
23824
23888
  layout,
23825
23889
  isError,
23826
23890
  isCardTheme,
23827
23891
  titleStyles,
23828
23892
  translator
23829
- } = _ref2;
23830
- const cardPadding = shouldUseCardPadding({
23831
- isCardTheme,
23832
- layout,
23833
- isError
23834
- });
23893
+ } = _ref;
23835
23894
  if (isCardTheme) {
23836
23895
  var _layout$filters, _layout$qHyperCube, _layout$filters2;
23837
23896
  const showTitle = (layout === null || layout === void 0 ? void 0 : layout.showTitles) && !!(layout !== null && layout !== void 0 && layout.title);
23838
23897
  const showSubtitle = (layout === null || layout === void 0 ? void 0 : layout.showTitles) && !!(layout !== null && layout !== void 0 && layout.subtitle);
23839
23898
  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;
23899
+ const visualization = layout === null || layout === void 0 ? void 0 : layout.visualization;
23840
23900
  const filtersFootnoteString = generateFiltersString((_layout$filters2 = layout === null || layout === void 0 ? void 0 : layout.filters) !== null && _layout$filters2 !== void 0 ? _layout$filters2 : [], translator);
23841
23901
  const showFilters = !(layout !== null && layout !== void 0 && layout.footnote) && hasFilters && filtersFootnoteString;
23842
23902
  const showFootnote = (layout === null || layout === void 0 ? void 0 : layout.showTitles) && (!!(layout !== null && layout !== void 0 && layout.footnote) || showFilters);
23843
- if (showTitle && cardPadding) {
23903
+ if (showTitle) {
23844
23904
  // eslint-disable-next-line no-param-reassign
23845
- titleStyles.main.padding = '10px 10px 0';
23905
+ titleStyles.main.padding = getTitlePadding(visualization);
23846
23906
  }
23847
- if (showSubtitle && cardPadding) {
23907
+ if (showSubtitle) {
23848
23908
  // eslint-disable-next-line no-param-reassign
23849
- titleStyles.subTitle.padding = showTitle ? '0 10px' : '10px 10px 0';
23909
+ titleStyles.subTitle.padding = getSubtitlePadding(visualization, showTitle);
23850
23910
  }
23851
23911
  if (showFootnote) {
23852
- // eslint-disable-next-line no-param-reassign
23853
- titleStyles.footer.borderTop = '1px solid #d9d9d9';
23912
+ if (NO_BORDER_IN_CARDS.indexOf(visualization) === -1) {
23913
+ // eslint-disable-next-line no-param-reassign
23914
+ titleStyles.footer.borderTop = '1px solid #d9d9d9';
23915
+ }
23854
23916
  // eslint-disable-next-line no-param-reassign
23855
23917
  titleStyles.footer.padding = '6px 10px';
23856
23918
  }
23857
23919
  let bodyPadding;
23858
- if (cardPadding) {
23920
+ if (isError || NO_PADDING_IN_CARDS.indexOf(visualization) === -1) {
23859
23921
  bodyPadding = "".concat(showTitle || showSubtitle ? '0' : '10px', " 10px ").concat(showFootnote ? '0' : '5px');
23860
23922
  }
23861
23923
  return bodyPadding;
@@ -24237,6 +24299,7 @@ const Cell = forwardRef((_ref6, ref) => {
24237
24299
  themeName,
24238
24300
  disableThemeBorder: snOptions === null || snOptions === void 0 ? void 0 : snOptions.disableThemeBorder
24239
24301
  });
24302
+ const isRtl = !!((snOptions === null || snOptions === void 0 ? void 0 : snOptions.direction) === 'rtl');
24240
24303
  const focusHandler = useRef$1({
24241
24304
  focusToolbarButton(last) {
24242
24305
  // eslint-disable-next-line react/no-this-in-sfc
@@ -24514,7 +24577,8 @@ const Cell = forwardRef((_ref6, ref) => {
24514
24577
  anchorEl: cellNode,
24515
24578
  hovering: hovering,
24516
24579
  focusHandler: focusHandler.current,
24517
- titleStyles: titleStyles
24580
+ titleStyles: titleStyles,
24581
+ isRtl: isRtl
24518
24582
  }, "\xA0"), /*#__PURE__*/React__default.createElement(Grid, {
24519
24583
  tabIndex: keyboardNavigation && !externalFocusManagement ? 0 : -1,
24520
24584
  onKeyDown: keyboardNavigation && !externalFocusManagement ? handleKeyDown : null,
@@ -24532,7 +24596,8 @@ const Cell = forwardRef((_ref6, ref) => {
24532
24596
  titleStyles: titleStyles,
24533
24597
  translator: translator,
24534
24598
  flags: flags,
24535
- isCardTheme: isCardTheme
24599
+ isCardTheme: isCardTheme,
24600
+ isRtl: isRtl
24536
24601
  })), state.longRunningQuery && /*#__PURE__*/React__default.createElement(LongRunningQuery, {
24537
24602
  canCancel: canCancel,
24538
24603
  canRetry: canRetry,
@@ -24576,9 +24641,18 @@ function glue$1(_ref) {
24576
24641
  model.removeListener('closed', unmount);
24577
24642
  };
24578
24643
  model.on('closed', unmount);
24579
- root.add(portal, unmount);
24644
+
24580
24645
  // Cannot use model.id as it is not unique in a given mashup
24581
24646
  root.addCell(currentId, cellRef);
24647
+ (async () => {
24648
+ try {
24649
+ await root.add(portal, unmount);
24650
+ } catch (e) {
24651
+ unmount();
24652
+ onMount();
24653
+ onError(e);
24654
+ }
24655
+ })();
24582
24656
  return [unmount, cellRef];
24583
24657
  }
24584
24658
 
@@ -42030,6 +42104,13 @@ function setPropForLineChartWithForecast(self) {
42030
42104
  current.hcProperties.qDynamicScript = [];
42031
42105
  }
42032
42106
  }
42107
+ function getDeletedFields(fields, indexes) {
42108
+ // Keep the original deleted order
42109
+ return fields.filter((_, idx) => indexes.includes(idx));
42110
+ }
42111
+ function getRemainedFields(fields, indexes) {
42112
+ return fields.filter((_, idx) => !indexes.includes(idx));
42113
+ }
42033
42114
 
42034
42115
  // ----------------------------------
42035
42116
  // ----------- DIMENSIONS -----------
@@ -42042,15 +42123,24 @@ function addAlternativeDimension(self, dimension) {
42042
42123
  dimensions.splice(idx, 0, dimension);
42043
42124
  return Promise.resolve(dimension);
42044
42125
  }
42045
- function insertMainDimension(self, dimension, dimensions, idx) {
42046
- dimensions.splice(idx, 0, dimension);
42047
- return self.autoSortDimension(dimension).then(() => {
42048
- arrayUtil.indexAdded(self.hcProperties.qInterColumnSortOrder, self.getDimensions().length + dimension.length - 1);
42049
- if (typeof self.dimensionDefinition.add === 'function') {
42050
- return Promise.resolve(self.dimensionDefinition.add.call(null, dimension, self.properties, self));
42051
- }
42052
- return dimension;
42053
- });
42126
+ function addDimensionToColumnSortOrder(self, dimensions, index) {
42127
+ arrayUtil.indexAdded(self.hcProperties.qInterColumnSortOrder, index !== null && index !== void 0 ? index : dimensions.length - 1);
42128
+ }
42129
+ function addDimensionToColumnOrder(self, dimension) {
42130
+ if (typeof self.dimensionDefinition.add === 'function') {
42131
+ return Promise.resolve(self.dimensionDefinition.add.call(null, dimension, self.properties, self)).then(() => dimension);
42132
+ }
42133
+ return undefined;
42134
+ }
42135
+ function removeDimensionFromColumnSortOrder(self, index) {
42136
+ arrayUtil.indexRemoved(self.hcProperties.qInterColumnSortOrder, index);
42137
+ }
42138
+ function removeDimensionFromColumnOrder(self, index) {
42139
+ const [dimension] = self.hcProperties.qDimensions.splice(index, 1);
42140
+ if (dimension && typeof self.dimensionDefinition.remove === 'function') {
42141
+ return Promise.resolve(self.dimensionDefinition.remove.call(null, dimension, self.properties, self, index));
42142
+ }
42143
+ return undefined;
42054
42144
  }
42055
42145
  function isTotalDimensionsExceeded(self, dimensions) {
42056
42146
  const altDimensions = self.getAlternativeDimensions();
@@ -42060,8 +42150,7 @@ function isDimensionAlternative(self, alternative) {
42060
42150
  const dimensions = self.hcProperties.qLayoutExclude.qHyperCubeDef.qDimensions;
42061
42151
  return alternative || self.maxDimensions() <= dimensions.length && dimensions.length < TOTAL_MAX.DIMENSIONS;
42062
42152
  }
42063
- async function addActiveDimension(self, dimension, existingDimensions, addedDimensions, addedActive) {
42064
- const initialLength = existingDimensions.length;
42153
+ async function addActiveDimension(self, dimension, initialLength, existingDimensions, addedDimensions, addedActive) {
42065
42154
  await self.autoSortDimension(dimension);
42066
42155
 
42067
42156
  // Update sorting order
@@ -42084,15 +42173,14 @@ function addAlternativeMeasure(self, measure) {
42084
42173
  measures.splice(idx, 0, measure);
42085
42174
  return Promise.resolve(measure);
42086
42175
  }
42087
- function insertMainMeasure(self, measure, measures, idx) {
42088
- measures.splice(idx, 0, measure);
42089
- return self.autoSortMeasure(measure).then(() => {
42090
- arrayUtil.indexAdded(self.hcProperties.qInterColumnSortOrder, self.getDimensions().length + measure.length - 1);
42091
- if (typeof self.measureDefinition.add === 'function') {
42092
- return Promise.resolve(self.measureDefinition.add.call(null, measure, self.properties, self));
42093
- }
42094
- return measure;
42095
- });
42176
+ function addMeasureToColumnSortOrder(self, measures) {
42177
+ arrayUtil.indexAdded(self.hcProperties.qInterColumnSortOrder, self.getDimensions().length + measures.length - 1);
42178
+ }
42179
+ function addMeasureToColumnOrder(self, measure) {
42180
+ if (typeof self.measureDefinition.add === 'function') {
42181
+ return Promise.resolve(self.measureDefinition.add.call(null, measure, self.properties, self));
42182
+ }
42183
+ return undefined;
42096
42184
  }
42097
42185
  function isTotalMeasureExceeded(self, measures) {
42098
42186
  // Adding more measures than TOTAL_MAX_MEASURES is not allowed and we expect this.maxMeasures() to always be <= TOTAL_MAX_MEASURES
@@ -42117,6 +42205,19 @@ function addActiveMeasure(self, measure, existingMeasures, addedMeasures, addedA
42117
42205
  }
42118
42206
  return Promise.resolve(addedMeasures);
42119
42207
  }
42208
+ function removeMeasureFromColumnSortOrder(self, index) {
42209
+ arrayUtil.indexRemoved(self.hcProperties.qInterColumnSortOrder, self.getDimensions().length + index);
42210
+ }
42211
+ function removeMeasureFromColumnOrder(self, index) {
42212
+ const [measure] = self.hcProperties.qMeasures.splice(index, 1);
42213
+ if (measure && typeof self.measureDefinition.remove === 'function') {
42214
+ return Promise.resolve(self.measureDefinition.remove.call(null, measure, self.properties, self, index));
42215
+ }
42216
+ return undefined;
42217
+ }
42218
+ function removeAltMeasureByIndex(self, index) {
42219
+ return self.hcProperties.qLayoutExclude.qHyperCubeDef.qMeasures.splice(index, 1);
42220
+ }
42120
42221
 
42121
42222
  // eslint-disable-next-line import/no-extraneous-dependencies
42122
42223
  class DataPropertyHandler {
@@ -42171,6 +42272,12 @@ class DataPropertyHandler {
42171
42272
  static addDimensions() {
42172
42273
  throw notSupportedError;
42173
42274
  }
42275
+ static removeDimension() {
42276
+ throw notSupportedError;
42277
+ }
42278
+ static removeDimensions() {
42279
+ throw notSupportedError;
42280
+ }
42174
42281
  static autoSortDimension() {
42175
42282
  throw notSupportedError;
42176
42283
  }
@@ -42287,6 +42394,12 @@ class DataPropertyHandler {
42287
42394
  static addMeasures() {
42288
42395
  throw notSupportedError;
42289
42396
  }
42397
+ static removeMeasure() {
42398
+ throw notSupportedError;
42399
+ }
42400
+ static removeMeasures() {
42401
+ throw notSupportedError;
42402
+ }
42290
42403
  static autoSortMeasure() {
42291
42404
  throw notSupportedError;
42292
42405
  }
@@ -42369,10 +42482,10 @@ class DataPropertyHandler {
42369
42482
  const measure = this.createLibraryMeasure(id, defaults);
42370
42483
  return this.addMeasure(measure, true);
42371
42484
  }
42372
- maxMeasures(decrement) {
42373
- const decr = decrement || 0;
42485
+ maxMeasures() {
42486
+ let decrement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
42374
42487
  if (typeof this.measureDefinition.max === 'function') {
42375
- const dimLength = this.getDimensions().length - decr;
42488
+ const dimLength = this.getDimensions().length - decrement;
42376
42489
  const measureParams = flagsFn('PS_21371_ANALYSIS_TYPES') ? [dimLength, this.properties] : [dimLength];
42377
42490
  return this.measureDefinition.max.apply(null, measureParams);
42378
42491
  }
@@ -42446,24 +42559,66 @@ function getAutoSortFieldDimension(self, dimension) {
42446
42559
  });
42447
42560
  }
42448
42561
 
42562
+ function updateDimensionOrders(self, dimension, index) {
42563
+ const dimensions = self.getDimensions();
42564
+ dimensions.splice(index, 0, dimension);
42565
+ return self.autoSortDimension(dimension).then(async () => {
42566
+ addDimensionToColumnSortOrder(self, dimensions, index);
42567
+ await addDimensionToColumnOrder(self, dimension);
42568
+ return dimension;
42569
+ });
42570
+ }
42571
+
42449
42572
  function addMainDimension(self, dimension, index) {
42450
42573
  const dimensions = self.getDimensions();
42451
42574
  const idx = index !== null && index !== void 0 ? index : dimensions.length;
42452
42575
  if (dimensions.length < self.maxDimensions()) {
42453
- return insertMainDimension(self, dimension, dimensions, idx);
42576
+ return updateDimensionOrders(self, dimension, idx);
42454
42577
  }
42455
- return Promise.resolve();
42578
+ return Promise.resolve(dimension);
42456
42579
  }
42457
42580
 
42458
42581
  function addMainMeasure(self, measure, index) {
42459
42582
  const measures = self.getMeasures();
42460
42583
  const idx = index !== null && index !== void 0 ? index : measures.length;
42461
42584
  if (measures.length < self.maxMeasures()) {
42462
- insertMainMeasure(measure, measures, idx);
42585
+ measures.splice(idx, 0, measure);
42586
+ return self.autoSortMeasure(measure).then(() => {
42587
+ addMeasureToColumnSortOrder(self, measures);
42588
+ return addMeasureToColumnOrder(self, measure).then(() => measure);
42589
+ });
42463
42590
  }
42464
42591
  return measure;
42465
42592
  }
42466
42593
 
42594
+ async function removeMainDimension(self, index) {
42595
+ removeDimensionFromColumnSortOrder(self, index);
42596
+ await removeDimensionFromColumnOrder(self, index);
42597
+ }
42598
+
42599
+ function removeAlternativeMeasure(self, indexes) {
42600
+ const current = self;
42601
+ const measures = current.getAlternativeMeasures();
42602
+ const remainedFields = getRemainedFields(measures, indexes);
42603
+ current.hcProperties.qLayoutExclude.qHyperCubeDef.qMeasures = remainedFields;
42604
+ }
42605
+
42606
+ async function removeMainMeasure(self, index) {
42607
+ removeMeasureFromColumnSortOrder(self, index);
42608
+ await removeMeasureFromColumnOrder(self, index);
42609
+ }
42610
+
42611
+ function removeAlternativeDimension(self, index) {
42612
+ const [dimension] = self.getAlternativeDimensions().splice(index, 1);
42613
+ if (dimension && typeof self.dimensionDefinition.remove === 'function') {
42614
+ dimension.isAlternative = true;
42615
+ return Promise.resolve(self.dimensionDefinition.remove.call(null, dimension, self.properties, self, index)).then(() => {
42616
+ delete dimension.isAlternative;
42617
+ });
42618
+ }
42619
+ return undefined;
42620
+ }
42621
+
42467
42622
  class HyperCubeHandler extends DataPropertyHandler {
42468
42623
  constructor(opts) {
42469
42624
  super(opts);
@@ -42508,7 +42663,7 @@ class HyperCubeHandler extends DataPropertyHandler {
42508
42663
  }
42509
42664
  addDimension(dimension, alternative, idx) {
42510
42665
  const dim = initializeField(dimension);
42511
- if (isDimensionAlternative(this, dim)) {
42666
+ if (isDimensionAlternative(this, alternative)) {
42512
42667
  return addAlternativeDimension(this, dim, idx);
42513
42668
  }
42514
42669
  return addMainDimension(this, dim, idx);
@@ -42516,6 +42671,7 @@ class HyperCubeHandler extends DataPropertyHandler {
42516
42671
  async addDimensions(dimensions) {
42517
42672
  let alternative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
42518
42673
  const existingDimensions = this.getDimensions();
42674
+ const initialLength = existingDimensions.length;
42519
42675
  const addedDimensions = [];
42520
42676
  let addedActive = 0;
42521
42677
 
@@ -42535,7 +42691,7 @@ class HyperCubeHandler extends DataPropertyHandler {
42535
42691
  const altDim = await addAlternativeDimension(this, dim);
42536
42692
  addedDimensions.push(altDim);
42537
42693
  } else if (existingDimensions.length < this.maxDimensions()) {
42538
- await addActiveDimension(this, dim, existingDimensions, addedDimensions, addedActive);
42694
+ await addActiveDimension(this, dim, initialLength, existingDimensions, addedDimensions, addedActive);
42539
42695
  addedActive++;
42540
42696
  }
42541
42697
  }
@@ -42556,6 +42712,78 @@ class HyperCubeHandler extends DataPropertyHandler {
42556
42712
  }
42557
42713
  return addedDimensions;
42558
42714
  }
42715
+ removeDimension(idx, alternative) {
42716
+ if (alternative) {
42717
+ removeAlternativeDimension(this, idx);
42718
+ }
42719
+ removeMainDimension(this, idx);
42720
+ }
42721
+ async removeDimensions(indexes, alternative) {
42722
+ const altDimensions = this.getAlternativeDimensions();
42723
+ const dimensions = this.getDimensions();
42724
+ if (indexes.length === 0) return [];
42725
+ let deletedDimensions = [];
42726
+ // Start deleting from the end of the list first otherwise the idx is messed up
42727
+ const sortedIndexes = [...indexes].sort((a, b) => b - a);
42728
+ if (alternative && altDimensions.length > 0) {
42729
+ // Keep the original deleted order
42730
+ deletedDimensions = getDeletedFields(altDimensions, indexes);
42731
+ // eslint-disable-next-line no-restricted-syntax
42732
+ var _iteratorAbruptCompletion2 = false;
42733
+ var _didIteratorError2 = false;
42734
+ var _iteratorError2;
42735
+ try {
42736
+ for (var _iterator2 = _asyncIterator(sortedIndexes), _step2; _iteratorAbruptCompletion2 = !(_step2 = await _iterator2.next()).done; _iteratorAbruptCompletion2 = false) {
42737
+ const index = _step2.value;
42738
+ {
42739
+ await removeAlternativeDimension(this, index);
42740
+ }
42741
+ }
42742
+ } catch (err) {
42743
+ _didIteratorError2 = true;
42744
+ _iteratorError2 = err;
42745
+ } finally {
42746
+ try {
42747
+ if (_iteratorAbruptCompletion2 && _iterator2.return != null) {
42748
+ await _iterator2.return();
42749
+ }
42750
+ } finally {
42751
+ if (_didIteratorError2) {
42752
+ throw _iteratorError2;
42753
+ }
42754
+ }
42755
+ }
42756
+ } else if (dimensions.length > 0) {
42757
+ // Keep the original deleted order
42758
+ deletedDimensions = getDeletedFields(dimensions, indexes);
42759
+ // eslint-disable-next-line no-restricted-syntax
42760
+ var _iteratorAbruptCompletion3 = false;
42761
+ var _didIteratorError3 = false;
42762
+ var _iteratorError3;
42763
+ try {
42764
+ for (var _iterator3 = _asyncIterator(sortedIndexes), _step3; _iteratorAbruptCompletion3 = !(_step3 = await _iterator3.next()).done; _iteratorAbruptCompletion3 = false) {
42765
+ const index = _step3.value;
42766
+ {
42767
+ await removeMainDimension(this, index);
42768
+ }
42769
+ }
42770
+ } catch (err) {
42771
+ _didIteratorError3 = true;
42772
+ _iteratorError3 = err;
42773
+ } finally {
42774
+ try {
42775
+ if (_iteratorAbruptCompletion3 && _iterator3.return != null) {
42776
+ await _iterator3.return();
42777
+ }
42778
+ } finally {
42779
+ if (_didIteratorError3) {
42780
+ throw _iteratorError3;
42781
+ }
42782
+ }
42783
+ }
42784
+ }
42785
+ return deletedDimensions;
42786
+ }
42559
42787
  autoSortDimension(dimension) {
42560
42788
  if (dimension.qLibraryId) {
42561
42789
  return getAutoSortLibraryDimension(this, dimension);
@@ -42620,6 +42848,54 @@ class HyperCubeHandler extends DataPropertyHandler {
42620
42848
  });
42621
42849
  return addedMeasures;
42622
42850
  }
42851
+ removeMeasure(idx, alternative) {
42852
+ if (alternative) {
42853
+ removeAltMeasureByIndex(this, idx);
42854
+ }
42855
+ removeMainMeasure(this, idx);
42856
+ }
42857
+ async removeMeasures(indexes, alternative) {
42858
+ const measures = this.getMeasures();
42859
+ const altMeasures = this.getAlternativeMeasures();
42860
+ if (indexes.length === 0) return [];
42861
+ let deletedMeasures = [];
42862
+ if (alternative && altMeasures.length > 0) {
42863
+ // Keep the original deleted order
42864
+ deletedMeasures = getDeletedFields(altMeasures, indexes);
42865
+ removeAlternativeMeasure(this, indexes);
42866
+ } else if (measures.length > 0) {
42867
+ // Keep the original deleted order
42868
+ deletedMeasures = getDeletedFields(measures, indexes);
42869
+ const sortedIndexes = [...indexes].sort((a, b) => b - a);
42870
+
42871
+ // eslint-disable-next-line no-restricted-syntax
42872
+ var _iteratorAbruptCompletion4 = false;
42873
+ var _didIteratorError4 = false;
42874
+ var _iteratorError4;
42875
+ try {
42876
+ for (var _iterator4 = _asyncIterator(sortedIndexes), _step4; _iteratorAbruptCompletion4 = !(_step4 = await _iterator4.next()).done; _iteratorAbruptCompletion4 = false) {
42877
+ const index = _step4.value;
42878
+ {
42879
+ await removeMainMeasure(this, index);
42880
+ }
42881
+ }
42882
+ } catch (err) {
42883
+ _didIteratorError4 = true;
42884
+ _iteratorError4 = err;
42885
+ } finally {
42886
+ try {
42887
+ if (_iteratorAbruptCompletion4 && _iterator4.return != null) {
42888
+ await _iterator4.return();
42889
+ }
42890
+ } finally {
42891
+ if (_didIteratorError4) {
42892
+ throw _iteratorError4;
42893
+ }
42894
+ }
42895
+ }
42896
+ }
42897
+ return deletedMeasures;
42898
+ }
42623
42899
  }
42624
42900
 
42625
42901
  /* eslint no-param-reassign: 0, no-restricted-globals: 0 */
@@ -45074,6 +45350,7 @@ function viz() {
45074
45350
  model,
45075
45351
  /**
45076
45352
  * Destroys the visualization and removes it from the the DOM.
45353
+ * @returns {Promise<void>}
45077
45354
  * @example
45078
45355
  * const viz = await embed(app).render({
45079
45356
  * element,
@@ -46211,6 +46488,7 @@ var hasRequiredParseOptions;
46211
46488
  function requireParseOptions() {
46212
46489
  if (hasRequiredParseOptions) return parseOptions_1;
46213
46490
  hasRequiredParseOptions = 1;
46491
+
46214
46492
  // parse out just the options we care about
46215
46493
  const looseOption = Object.freeze({
46216
46494
  loose: true
@@ -46236,6 +46514,7 @@ var hasRequiredConstants;
46236
46514
  function requireConstants() {
46237
46515
  if (hasRequiredConstants) return constants;
46238
46516
  hasRequiredConstants = 1;
46517
+
46239
46518
  // Note: this is the semver.org version of the spec that it implements
46240
46519
  // Not necessarily the package version of this code.
46241
46520
  const SEMVER_SPEC_VERSION = '2.0.0';
@@ -46282,6 +46561,7 @@ function requireRe() {
46282
46561
  if (hasRequiredRe) return re.exports;
46283
46562
  hasRequiredRe = 1;
46284
46563
  (function (module, exports) {
46564
+
46285
46565
  const {
46286
46566
  MAX_SAFE_COMPONENT_LENGTH,
46287
46567
  MAX_SAFE_BUILD_LENGTH,
@@ -46346,9 +46626,11 @@ function requireRe() {
46346
46626
 
46347
46627
  // ## Pre-release Version Identifier
46348
46628
  // A numeric identifier, or a non-numeric identifier.
46629
+ // Non-numberic identifiers include numberic identifiers but can be longer.
46630
+ // Therefore non-numberic identifiers must go first.
46349
46631
 
46350
- createToken('PRERELEASEIDENTIFIER', "(?:".concat(src[t.NUMERICIDENTIFIER], "|").concat(src[t.NONNUMERICIDENTIFIER], ")"));
46351
- createToken('PRERELEASEIDENTIFIERLOOSE', "(?:".concat(src[t.NUMERICIDENTIFIERLOOSE], "|").concat(src[t.NONNUMERICIDENTIFIER], ")"));
46632
+ createToken('PRERELEASEIDENTIFIER', "(?:".concat(src[t.NONNUMERICIDENTIFIER], "|").concat(src[t.NUMERICIDENTIFIER], ")"));
46633
+ createToken('PRERELEASEIDENTIFIERLOOSE', "(?:".concat(src[t.NONNUMERICIDENTIFIER], "|").concat(src[t.NUMERICIDENTIFIERLOOSE], ")"));
46352
46634
 
46353
46635
  // ## Pre-release Version
46354
46636
  // Hyphen, followed by one or more dot-separated pre-release version
@@ -46481,7 +46763,6 @@ function requireSemver() {
46481
46763
  } = requireConstants();
46482
46764
  const {
46483
46765
  safeRe: re,
46484
- safeSrc: src,
46485
46766
  t
46486
46767
  } = requireRe();
46487
46768
  const parseOptions = requireParseOptions();
@@ -46638,8 +46919,7 @@ function requireSemver() {
46638
46919
  }
46639
46920
  // Avoid an invalid semver results
46640
46921
  if (identifier) {
46641
- const r = new RegExp("^".concat(this.options.loose ? src[t.PRERELEASELOOSE] : src[t.PRERELEASE], "$"));
46642
- const match = "-".concat(identifier).match(r);
46922
+ const match = "-".concat(identifier).match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);
46643
46923
  if (!match || match[1] !== identifier) {
46644
46924
  throw new Error("invalid identifier: ".concat(identifier));
46645
46925
  }
@@ -48655,7 +48935,10 @@ function fromGenericObjects(genericObjects) {
48655
48935
  destroySessionObject: async () => {},
48656
48936
  getObject,
48657
48937
  getAppLayout,
48658
- getListObject: async () => {}
48938
+ getListObject: async props => {
48939
+ var _props$qInfo;
48940
+ return getObject((_props$qInfo = props.qInfo) === null || _props$qInfo === void 0 ? void 0 : _props$qInfo.qId);
48941
+ }
48659
48942
  };
48660
48943
  return Promise.resolve(app);
48661
48944
  }