@nebula.js/stardust 5.0.0-alpha4 → 5.0.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.0.0-alpha4
2
+ * @nebula.js/stardust v5.0.0
3
3
  * Copyright (c) 2024 QlikTech International AB
4
4
  * Released under the MIT license.
5
5
  */
@@ -1009,6 +1009,26 @@
1009
1009
  "zh-TW": "{0}/ {1}"
1010
1010
  }
1011
1011
  };
1012
+ var Listbox_Cyclic = {
1013
+ id: "Listbox.Cyclic",
1014
+ locale: {
1015
+ "de-DE": "Zyklische Dimension",
1016
+ "en-US": "Cyclic dimension",
1017
+ "es-ES": "Dimensión cíclica",
1018
+ "fr-FR": "Dimension cyclique",
1019
+ "it-IT": "Dimensione ciclica",
1020
+ "ja-JP": "サイクリック軸",
1021
+ "ko-KR": "순환 차원",
1022
+ "nl-NL": "Cyclische dimensie",
1023
+ "pl-PL": "Wymiar cykliczny",
1024
+ "pt-BR": "Dimensão cíclica",
1025
+ "ru-RU": "Циклическое измерение",
1026
+ "sv-SE": "Cyklisk dimension",
1027
+ "tr-TR": "Döngüsel boyut",
1028
+ "zh-CN": "循环维度",
1029
+ "zh-TW": "循環維度"
1030
+ }
1031
+ };
1012
1032
  var Listbox_Dismiss = {
1013
1033
  id: "Listbox.Dismiss",
1014
1034
  locale: {
@@ -2013,6 +2033,7 @@
2013
2033
  Cancel: Cancel$1,
2014
2034
  CurrentSelections_All: CurrentSelections_All,
2015
2035
  CurrentSelections_Of: CurrentSelections_Of,
2036
+ Listbox_Cyclic: Listbox_Cyclic,
2016
2037
  Listbox_Dismiss: Listbox_Dismiss,
2017
2038
  Listbox_DrillDown: Listbox_DrillDown,
2018
2039
  Listbox_ItemsOverflow: Listbox_ItemsOverflow,
@@ -3308,9 +3329,15 @@
3308
3329
  };
3309
3330
  },
3310
3331
  uiColor(c, shift) {
3332
+ const indexIsValid = typeof (c === null || c === void 0 ? void 0 : c.index) === 'number' && !Number.isNaN(c === null || c === void 0 ? void 0 : c.index);
3333
+ const colorIsValid = typeof (c === null || c === void 0 ? void 0 : c.color) === 'string';
3334
+ const somethingIsValid = indexIsValid || colorIsValid;
3335
+ if (!somethingIsValid) {
3336
+ return undefined;
3337
+ }
3311
3338
  // eslint-disable-next-line no-param-reassign
3312
3339
  shift = !!shift;
3313
- if (c.index < 0 || typeof c.index === 'undefined') {
3340
+ if ((c === null || c === void 0 ? void 0 : c.index) < 0 || typeof (c === null || c === void 0 ? void 0 : c.index) === 'undefined') {
3314
3341
  return c.color;
3315
3342
  }
3316
3343
  if (typeof uiPalette === 'undefined') {
@@ -6827,7 +6854,7 @@
6827
6854
  isPlainObject: isPlainObject
6828
6855
  });
6829
6856
 
6830
- const _excluded$S = ["values", "unit", "step"];
6857
+ const _excluded$T = ["values", "unit", "step"];
6831
6858
  const sortBreakpointsValues = values => {
6832
6859
  const breakpointsAsArray = Object.keys(values).map(key => ({
6833
6860
  key,
@@ -6861,7 +6888,7 @@
6861
6888
  unit = 'px',
6862
6889
  step = 5
6863
6890
  } = breakpoints,
6864
- other = _objectWithoutPropertiesLoose$2(breakpoints, _excluded$S);
6891
+ other = _objectWithoutPropertiesLoose$2(breakpoints, _excluded$T);
6865
6892
  const sortedValues = sortBreakpointsValues(values);
6866
6893
  const keys = Object.keys(sortedValues);
6867
6894
  function up(key) {
@@ -7981,7 +8008,7 @@
7981
8008
  return {};
7982
8009
  }
7983
8010
 
7984
- const _excluded$R = ["breakpoints", "palette", "spacing", "shape"];
8011
+ const _excluded$S = ["breakpoints", "palette", "spacing", "shape"];
7985
8012
  function createTheme$2(options = {}, ...args) {
7986
8013
  const {
7987
8014
  breakpoints: breakpointsInput = {},
@@ -7989,7 +8016,7 @@
7989
8016
  spacing: spacingInput,
7990
8017
  shape: shapeInput = {}
7991
8018
  } = options,
7992
- other = _objectWithoutPropertiesLoose$2(options, _excluded$R);
8019
+ other = _objectWithoutPropertiesLoose$2(options, _excluded$S);
7993
8020
  const breakpoints = createBreakpoints(breakpointsInput);
7994
8021
  const spacing = createSpacing(spacingInput);
7995
8022
  let muiTheme = deepmerge$1({
@@ -8047,7 +8074,7 @@
8047
8074
  });
8048
8075
  }
8049
8076
 
8050
- const _excluded$Q = ["sx"];
8077
+ const _excluded$R = ["sx"];
8051
8078
  const splitProps = props => {
8052
8079
  var _props$theme$unstable, _props$theme;
8053
8080
  const result = {
@@ -8068,7 +8095,7 @@
8068
8095
  const {
8069
8096
  sx: inSx
8070
8097
  } = props,
8071
- other = _objectWithoutPropertiesLoose$2(props, _excluded$Q);
8098
+ other = _objectWithoutPropertiesLoose$2(props, _excluded$R);
8072
8099
  const {
8073
8100
  systemProps,
8074
8101
  otherProps
@@ -8119,7 +8146,7 @@
8119
8146
 
8120
8147
  function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
8121
8148
 
8122
- const _excluded$P = ["className", "component"];
8149
+ const _excluded$Q = ["className", "component"];
8123
8150
  function createBox(options = {}) {
8124
8151
  const {
8125
8152
  themeId,
@@ -8137,7 +8164,7 @@
8137
8164
  className,
8138
8165
  component = 'div'
8139
8166
  } = _extendSxProp,
8140
- other = _objectWithoutPropertiesLoose$2(_extendSxProp, _excluded$P);
8167
+ other = _objectWithoutPropertiesLoose$2(_extendSxProp, _excluded$Q);
8141
8168
  return /*#__PURE__*/jsxRuntimeExports.jsx(BoxRoot, _extends$5({
8142
8169
  as: component,
8143
8170
  ref: ref,
@@ -8227,7 +8254,7 @@
8227
8254
  getFunctionName: getFunctionName
8228
8255
  });
8229
8256
 
8230
- const _excluded$O = ["ownerState"],
8257
+ const _excluded$P = ["ownerState"],
8231
8258
  _excluded2$6 = ["variants"],
8232
8259
  _excluded3$2 = ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"];
8233
8260
  function isEmpty$3(obj) {
@@ -8271,7 +8298,7 @@
8271
8298
  let {
8272
8299
  ownerState
8273
8300
  } = _ref,
8274
- props = _objectWithoutPropertiesLoose$2(_ref, _excluded$O);
8301
+ props = _objectWithoutPropertiesLoose$2(_ref, _excluded$P);
8275
8302
  const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends$5({
8276
8303
  ownerState
8277
8304
  }, props)) : callableStyle;
@@ -8751,11 +8778,11 @@
8751
8778
 
8752
8779
  class Timeout {
8753
8780
  constructor() {
8754
- this.currentId = 0;
8781
+ this.currentId = null;
8755
8782
  this.clear = () => {
8756
- if (this.currentId !== 0) {
8783
+ if (this.currentId !== null) {
8757
8784
  clearTimeout(this.currentId);
8758
- this.currentId = 0;
8785
+ this.currentId = null;
8759
8786
  }
8760
8787
  };
8761
8788
  this.disposeEffect = () => {
@@ -8771,7 +8798,7 @@
8771
8798
  start(delay, fn) {
8772
8799
  this.clear();
8773
8800
  this.currentId = setTimeout(() => {
8774
- this.currentId = 0;
8801
+ this.currentId = null;
8775
8802
  fn();
8776
8803
  }, delay);
8777
8804
  }
@@ -9015,6 +9042,22 @@
9015
9042
  });
9016
9043
  }
9017
9044
 
9045
+ const _excluded$O = ["value"];
9046
+ const RtlContext = /*#__PURE__*/reactExports.createContext();
9047
+ function RtlProvider(_ref) {
9048
+ let {
9049
+ value
9050
+ } = _ref,
9051
+ props = _objectWithoutPropertiesLoose$2(_ref, _excluded$O);
9052
+ return /*#__PURE__*/jsxRuntimeExports.jsx(RtlContext.Provider, _extends$5({
9053
+ value: value != null ? value : true
9054
+ }, props));
9055
+ }
9056
+ const useRtl = () => {
9057
+ const value = reactExports.useContext(RtlContext);
9058
+ return value != null ? value : false;
9059
+ };
9060
+
9018
9061
  const EMPTY_THEME = {};
9019
9062
  function useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {
9020
9063
  return reactExports.useMemo(() => {
@@ -9054,11 +9097,15 @@
9054
9097
  const upperPrivateTheme = useTheme$3() || EMPTY_THEME;
9055
9098
  const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);
9056
9099
  const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);
9100
+ const rtlValue = engineTheme.direction === 'rtl';
9057
9101
  return /*#__PURE__*/jsxRuntimeExports.jsx(ThemeProvider$2, {
9058
9102
  theme: privateTheme,
9059
9103
  children: /*#__PURE__*/jsxRuntimeExports.jsx(ThemeContext$2.Provider, {
9060
9104
  value: engineTheme,
9061
- children: children
9105
+ children: /*#__PURE__*/jsxRuntimeExports.jsx(RtlProvider, {
9106
+ value: rtlValue,
9107
+ children: children
9108
+ })
9062
9109
  })
9063
9110
  });
9064
9111
  }
@@ -12051,7 +12098,7 @@
12051
12098
  function getButtonUtilityClass(slot) {
12052
12099
  return generateUtilityClass$1('MuiButton', slot);
12053
12100
  }
12054
- const buttonClasses = generateUtilityClasses$1('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);
12101
+ const buttonClasses = generateUtilityClasses$1('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorError', 'colorInfo', 'colorWarning', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'icon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);
12055
12102
  var buttonClasses$1 = buttonClasses;
12056
12103
 
12057
12104
  /**
@@ -12077,10 +12124,10 @@
12077
12124
  classes
12078
12125
  } = ownerState;
12079
12126
  const slots = {
12080
- root: ['root', variant, `${variant}${capitalize$1(color)}`, `size${capitalize$1(size)}`, `${variant}Size${capitalize$1(size)}`, color === 'inherit' && 'colorInherit', disableElevation && 'disableElevation', fullWidth && 'fullWidth'],
12127
+ root: ['root', variant, `${variant}${capitalize$1(color)}`, `size${capitalize$1(size)}`, `${variant}Size${capitalize$1(size)}`, `color${capitalize$1(color)}`, disableElevation && 'disableElevation', fullWidth && 'fullWidth'],
12081
12128
  label: ['label'],
12082
- startIcon: ['startIcon', `iconSize${capitalize$1(size)}`],
12083
- endIcon: ['endIcon', `iconSize${capitalize$1(size)}`]
12129
+ startIcon: ['icon', 'startIcon', `iconSize${capitalize$1(size)}`],
12130
+ endIcon: ['icon', 'endIcon', `iconSize${capitalize$1(size)}`]
12084
12131
  };
12085
12132
  const composedClasses = composeClasses(slots, getButtonUtilityClass, classes);
12086
12133
  return _extends$7({}, classes, composedClasses);
@@ -12670,7 +12717,7 @@
12670
12717
  return cache[key];
12671
12718
  }
12672
12719
 
12673
- const NEBULA_VERSION_HASH = "41f6" ;
12720
+ const NEBULA_VERSION_HASH = "e6be" ;
12674
12721
  ClassNameGenerator.configure(componentName => {
12675
12722
  return "njs-".concat(NEBULA_VERSION_HASH, "-").concat(componentName.replace('Mui', ''));
12676
12723
  });
@@ -12902,7 +12949,7 @@
12902
12949
  const appRef = React$1.createRef();
12903
12950
  const element = document.createElement('div');
12904
12951
  element.style.display = 'none';
12905
- element.setAttribute('data-nebulajs-version', "5.0.0-alpha4" );
12952
+ element.setAttribute('data-nebulajs-version', "5.0.0" );
12906
12953
  element.setAttribute('data-app-id', app.id);
12907
12954
  document.body.appendChild(element);
12908
12955
  if (context) {
@@ -13436,6 +13483,254 @@
13436
13483
  return props;
13437
13484
  }
13438
13485
 
13486
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
13487
+ function createUseThemeProps(name) {
13488
+ return useThemeProps$1;
13489
+ }
13490
+
13491
+ function getIconButtonUtilityClass(slot) {
13492
+ return generateUtilityClass$1('MuiIconButton', slot);
13493
+ }
13494
+ const iconButtonClasses = generateUtilityClasses$1('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);
13495
+
13496
+ const _excluded$z = ["edge", "children", "className", "color", "disabled", "disableFocusRipple", "size"];
13497
+ const useUtilityClasses$n = ownerState => {
13498
+ const {
13499
+ classes,
13500
+ disabled,
13501
+ color,
13502
+ edge,
13503
+ size
13504
+ } = ownerState;
13505
+ const slots = {
13506
+ root: ['root', disabled && 'disabled', color !== 'default' && `color${capitalize$1(color)}`, edge && `edge${capitalize$1(edge)}`, `size${capitalize$1(size)}`]
13507
+ };
13508
+ return composeClasses(slots, getIconButtonUtilityClass, classes);
13509
+ };
13510
+ const IconButtonRoot = styled(ButtonBase$1, {
13511
+ name: 'MuiIconButton',
13512
+ slot: 'Root',
13513
+ overridesResolver: (props, styles) => {
13514
+ const {
13515
+ ownerState
13516
+ } = props;
13517
+ return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize$1(ownerState.color)}`], ownerState.edge && styles[`edge${capitalize$1(ownerState.edge)}`], styles[`size${capitalize$1(ownerState.size)}`]];
13518
+ }
13519
+ })(({
13520
+ theme,
13521
+ ownerState
13522
+ }) => _extends$7({
13523
+ textAlign: 'center',
13524
+ flex: '0 0 auto',
13525
+ fontSize: theme.typography.pxToRem(24),
13526
+ padding: 8,
13527
+ borderRadius: '50%',
13528
+ overflow: 'visible',
13529
+ // Explicitly set the default value to solve a bug on IE11.
13530
+ color: (theme.vars || theme).palette.action.active,
13531
+ transition: theme.transitions.create('background-color', {
13532
+ duration: theme.transitions.duration.shortest
13533
+ })
13534
+ }, !ownerState.disableRipple && {
13535
+ '&:hover': {
13536
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha_1(theme.palette.action.active, theme.palette.action.hoverOpacity),
13537
+ // Reset on touch devices, it doesn't add specificity
13538
+ '@media (hover: none)': {
13539
+ backgroundColor: 'transparent'
13540
+ }
13541
+ }
13542
+ }, ownerState.edge === 'start' && {
13543
+ marginLeft: ownerState.size === 'small' ? -3 : -12
13544
+ }, ownerState.edge === 'end' && {
13545
+ marginRight: ownerState.size === 'small' ? -3 : -12
13546
+ }), ({
13547
+ theme,
13548
+ ownerState
13549
+ }) => {
13550
+ var _palette;
13551
+ const palette = (_palette = (theme.vars || theme).palette) == null ? void 0 : _palette[ownerState.color];
13552
+ return _extends$7({}, ownerState.color === 'inherit' && {
13553
+ color: 'inherit'
13554
+ }, ownerState.color !== 'inherit' && ownerState.color !== 'default' && _extends$7({
13555
+ color: palette == null ? void 0 : palette.main
13556
+ }, !ownerState.disableRipple && {
13557
+ '&:hover': _extends$7({}, palette && {
13558
+ backgroundColor: theme.vars ? `rgba(${palette.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha_1(palette.main, theme.palette.action.hoverOpacity)
13559
+ }, {
13560
+ // Reset on touch devices, it doesn't add specificity
13561
+ '@media (hover: none)': {
13562
+ backgroundColor: 'transparent'
13563
+ }
13564
+ })
13565
+ }), ownerState.size === 'small' && {
13566
+ padding: 5,
13567
+ fontSize: theme.typography.pxToRem(18)
13568
+ }, ownerState.size === 'large' && {
13569
+ padding: 12,
13570
+ fontSize: theme.typography.pxToRem(28)
13571
+ }, {
13572
+ [`&.${iconButtonClasses.disabled}`]: {
13573
+ backgroundColor: 'transparent',
13574
+ color: (theme.vars || theme).palette.action.disabled
13575
+ }
13576
+ });
13577
+ });
13578
+
13579
+ /**
13580
+ * Refer to the [Icons](/material-ui/icons/) section of the documentation
13581
+ * regarding the available icon options.
13582
+ */
13583
+ const IconButton = /*#__PURE__*/reactExports.forwardRef(function IconButton(inProps, ref) {
13584
+ const props = useThemeProps$1({
13585
+ props: inProps,
13586
+ name: 'MuiIconButton'
13587
+ });
13588
+ const {
13589
+ edge = false,
13590
+ children,
13591
+ className,
13592
+ color = 'default',
13593
+ disabled = false,
13594
+ disableFocusRipple = false,
13595
+ size = 'medium'
13596
+ } = props,
13597
+ other = _objectWithoutPropertiesLoose$3(props, _excluded$z);
13598
+ const ownerState = _extends$7({}, props, {
13599
+ edge,
13600
+ color,
13601
+ disabled,
13602
+ disableFocusRipple,
13603
+ size
13604
+ });
13605
+ const classes = useUtilityClasses$n(ownerState);
13606
+ return /*#__PURE__*/jsxRuntimeExports.jsx(IconButtonRoot, _extends$7({
13607
+ className: clsx(classes.root, className),
13608
+ centerRipple: true,
13609
+ focusRipple: !disableFocusRipple,
13610
+ disabled: disabled,
13611
+ ref: ref
13612
+ }, other, {
13613
+ ownerState: ownerState,
13614
+ children: children
13615
+ }));
13616
+ });
13617
+ var IconButton$1 = IconButton;
13618
+
13619
+ function getTypographyUtilityClass(slot) {
13620
+ return generateUtilityClass$1('MuiTypography', slot);
13621
+ }
13622
+ generateUtilityClasses$1('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);
13623
+
13624
+ const _excluded$y = ["align", "className", "component", "gutterBottom", "noWrap", "paragraph", "variant", "variantMapping"];
13625
+ const useUtilityClasses$m = ownerState => {
13626
+ const {
13627
+ align,
13628
+ gutterBottom,
13629
+ noWrap,
13630
+ paragraph,
13631
+ variant,
13632
+ classes
13633
+ } = ownerState;
13634
+ const slots = {
13635
+ root: ['root', variant, ownerState.align !== 'inherit' && `align${capitalize$1(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']
13636
+ };
13637
+ return composeClasses(slots, getTypographyUtilityClass, classes);
13638
+ };
13639
+ const TypographyRoot = styled('span', {
13640
+ name: 'MuiTypography',
13641
+ slot: 'Root',
13642
+ overridesResolver: (props, styles) => {
13643
+ const {
13644
+ ownerState
13645
+ } = props;
13646
+ return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${capitalize$1(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];
13647
+ }
13648
+ })(({
13649
+ theme,
13650
+ ownerState
13651
+ }) => _extends$7({
13652
+ margin: 0
13653
+ }, ownerState.variant === 'inherit' && {
13654
+ // Some elements, like <button> on Chrome have default font that doesn't inherit, reset this.
13655
+ font: 'inherit'
13656
+ }, ownerState.variant !== 'inherit' && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && {
13657
+ textAlign: ownerState.align
13658
+ }, ownerState.noWrap && {
13659
+ overflow: 'hidden',
13660
+ textOverflow: 'ellipsis',
13661
+ whiteSpace: 'nowrap'
13662
+ }, ownerState.gutterBottom && {
13663
+ marginBottom: '0.35em'
13664
+ }, ownerState.paragraph && {
13665
+ marginBottom: 16
13666
+ }));
13667
+ const defaultVariantMapping = {
13668
+ h1: 'h1',
13669
+ h2: 'h2',
13670
+ h3: 'h3',
13671
+ h4: 'h4',
13672
+ h5: 'h5',
13673
+ h6: 'h6',
13674
+ subtitle1: 'h6',
13675
+ subtitle2: 'h6',
13676
+ body1: 'p',
13677
+ body2: 'p',
13678
+ inherit: 'p'
13679
+ };
13680
+
13681
+ // TODO v6: deprecate these color values in v5.x and remove the transformation in v6
13682
+ const colorTransformations = {
13683
+ primary: 'primary.main',
13684
+ textPrimary: 'text.primary',
13685
+ secondary: 'secondary.main',
13686
+ textSecondary: 'text.secondary',
13687
+ error: 'error.main'
13688
+ };
13689
+ const transformDeprecatedColors = color => {
13690
+ return colorTransformations[color] || color;
13691
+ };
13692
+ const Typography = /*#__PURE__*/reactExports.forwardRef(function Typography(inProps, ref) {
13693
+ const themeProps = useThemeProps$1({
13694
+ props: inProps,
13695
+ name: 'MuiTypography'
13696
+ });
13697
+ const color = transformDeprecatedColors(themeProps.color);
13698
+ const props = extendSxProp(_extends$7({}, themeProps, {
13699
+ color
13700
+ }));
13701
+ const {
13702
+ align = 'inherit',
13703
+ className,
13704
+ component,
13705
+ gutterBottom = false,
13706
+ noWrap = false,
13707
+ paragraph = false,
13708
+ variant = 'body1',
13709
+ variantMapping = defaultVariantMapping
13710
+ } = props,
13711
+ other = _objectWithoutPropertiesLoose$3(props, _excluded$y);
13712
+ const ownerState = _extends$7({}, props, {
13713
+ align,
13714
+ color,
13715
+ className,
13716
+ component,
13717
+ gutterBottom,
13718
+ noWrap,
13719
+ paragraph,
13720
+ variant,
13721
+ variantMapping
13722
+ });
13723
+ const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';
13724
+ const classes = useUtilityClasses$m(ownerState);
13725
+ return /*#__PURE__*/jsxRuntimeExports.jsx(TypographyRoot, _extends$7({
13726
+ as: Component,
13727
+ ref: ref,
13728
+ ownerState: ownerState,
13729
+ className: clsx(classes.root, className)
13730
+ }, other));
13731
+ });
13732
+ var Typography$1 = Typography;
13733
+
13439
13734
  /**
13440
13735
  *
13441
13736
  * Demos:
@@ -16018,7 +16313,7 @@
16018
16313
  }
16019
16314
  generateUtilityClasses(COMPONENT_NAME, ['root']);
16020
16315
 
16021
- const _excluded$z = ["anchorEl", "children", "direction", "disablePortal", "modifiers", "open", "placement", "popperOptions", "popperRef", "slotProps", "slots", "TransitionProps", "ownerState"],
16316
+ const _excluded$x = ["anchorEl", "children", "direction", "disablePortal", "modifiers", "open", "placement", "popperOptions", "popperRef", "slotProps", "slots", "TransitionProps", "ownerState"],
16022
16317
  _excluded2$3 = ["anchorEl", "children", "container", "direction", "disablePortal", "keepMounted", "modifiers", "open", "placement", "popperOptions", "popperRef", "style", "transition", "slotProps", "slots"];
16023
16318
  function flipPlacement(placement, direction) {
16024
16319
  if (direction === 'ltr') {
@@ -16043,7 +16338,7 @@
16043
16338
  function isHTMLElement(element) {
16044
16339
  return element.nodeType !== undefined;
16045
16340
  }
16046
- const useUtilityClasses$n = () => {
16341
+ const useUtilityClasses$l = () => {
16047
16342
  const slots = {
16048
16343
  root: ['root']
16049
16344
  };
@@ -16068,7 +16363,7 @@
16068
16363
  // @ts-ignore internal logic
16069
16364
  // prevent from spreading to DOM, it can come from the parent component e.g. Select.
16070
16365
  } = props,
16071
- other = _objectWithoutPropertiesLoose(props, _excluded$z);
16366
+ other = _objectWithoutPropertiesLoose(props, _excluded$x);
16072
16367
  const tooltipRef = reactExports.useRef(null);
16073
16368
  const ownRef = useForkRef(tooltipRef, forwardedRef);
16074
16369
  const popperRef = reactExports.useRef(null);
@@ -16145,7 +16440,7 @@
16145
16440
  if (TransitionProps !== null) {
16146
16441
  childProps.TransitionProps = TransitionProps;
16147
16442
  }
16148
- const classes = useUtilityClasses$n();
16443
+ const classes = useUtilityClasses$l();
16149
16444
  const Root = (_slots$root = slots.root) != null ? _slots$root : 'div';
16150
16445
  const rootProps = useSlotProps({
16151
16446
  elementType: Root,
@@ -16250,7 +16545,7 @@
16250
16545
  });
16251
16546
  });
16252
16547
 
16253
- const _excluded$y = ["onChange", "maxRows", "minRows", "style", "value"];
16548
+ const _excluded$w = ["onChange", "maxRows", "minRows", "style", "value"];
16254
16549
  function getStyleValue(value) {
16255
16550
  return parseInt(value, 10) || 0;
16256
16551
  }
@@ -16292,7 +16587,7 @@
16292
16587
  style,
16293
16588
  value
16294
16589
  } = props,
16295
- other = _objectWithoutPropertiesLoose(props, _excluded$y);
16590
+ other = _objectWithoutPropertiesLoose(props, _excluded$w);
16296
16591
  const {
16297
16592
  current: isControlled
16298
16593
  } = reactExports.useRef(value != null);
@@ -16403,7 +16698,8 @@
16403
16698
  ref: handleRef
16404
16699
  // Apply the rows prop to get a "correct" first SSR paint
16405
16700
  ,
16406
- rows: minRows
16701
+ rows: minRows,
16702
+ style: style
16407
16703
  }, other)), /*#__PURE__*/jsxRuntimeExports.jsx("textarea", {
16408
16704
  "aria-hidden": true,
16409
16705
  className: props.className,
@@ -16418,249 +16714,6 @@
16418
16714
  });
16419
16715
  });
16420
16716
 
16421
- function getIconButtonUtilityClass(slot) {
16422
- return generateUtilityClass$1('MuiIconButton', slot);
16423
- }
16424
- const iconButtonClasses = generateUtilityClasses$1('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);
16425
-
16426
- const _excluded$x = ["edge", "children", "className", "color", "disabled", "disableFocusRipple", "size"];
16427
- const useUtilityClasses$m = ownerState => {
16428
- const {
16429
- classes,
16430
- disabled,
16431
- color,
16432
- edge,
16433
- size
16434
- } = ownerState;
16435
- const slots = {
16436
- root: ['root', disabled && 'disabled', color !== 'default' && `color${capitalize$1(color)}`, edge && `edge${capitalize$1(edge)}`, `size${capitalize$1(size)}`]
16437
- };
16438
- return composeClasses(slots, getIconButtonUtilityClass, classes);
16439
- };
16440
- const IconButtonRoot = styled(ButtonBase$1, {
16441
- name: 'MuiIconButton',
16442
- slot: 'Root',
16443
- overridesResolver: (props, styles) => {
16444
- const {
16445
- ownerState
16446
- } = props;
16447
- return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize$1(ownerState.color)}`], ownerState.edge && styles[`edge${capitalize$1(ownerState.edge)}`], styles[`size${capitalize$1(ownerState.size)}`]];
16448
- }
16449
- })(({
16450
- theme,
16451
- ownerState
16452
- }) => _extends$7({
16453
- textAlign: 'center',
16454
- flex: '0 0 auto',
16455
- fontSize: theme.typography.pxToRem(24),
16456
- padding: 8,
16457
- borderRadius: '50%',
16458
- overflow: 'visible',
16459
- // Explicitly set the default value to solve a bug on IE11.
16460
- color: (theme.vars || theme).palette.action.active,
16461
- transition: theme.transitions.create('background-color', {
16462
- duration: theme.transitions.duration.shortest
16463
- })
16464
- }, !ownerState.disableRipple && {
16465
- '&:hover': {
16466
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha_1(theme.palette.action.active, theme.palette.action.hoverOpacity),
16467
- // Reset on touch devices, it doesn't add specificity
16468
- '@media (hover: none)': {
16469
- backgroundColor: 'transparent'
16470
- }
16471
- }
16472
- }, ownerState.edge === 'start' && {
16473
- marginLeft: ownerState.size === 'small' ? -3 : -12
16474
- }, ownerState.edge === 'end' && {
16475
- marginRight: ownerState.size === 'small' ? -3 : -12
16476
- }), ({
16477
- theme,
16478
- ownerState
16479
- }) => {
16480
- var _palette;
16481
- const palette = (_palette = (theme.vars || theme).palette) == null ? void 0 : _palette[ownerState.color];
16482
- return _extends$7({}, ownerState.color === 'inherit' && {
16483
- color: 'inherit'
16484
- }, ownerState.color !== 'inherit' && ownerState.color !== 'default' && _extends$7({
16485
- color: palette == null ? void 0 : palette.main
16486
- }, !ownerState.disableRipple && {
16487
- '&:hover': _extends$7({}, palette && {
16488
- backgroundColor: theme.vars ? `rgba(${palette.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha_1(palette.main, theme.palette.action.hoverOpacity)
16489
- }, {
16490
- // Reset on touch devices, it doesn't add specificity
16491
- '@media (hover: none)': {
16492
- backgroundColor: 'transparent'
16493
- }
16494
- })
16495
- }), ownerState.size === 'small' && {
16496
- padding: 5,
16497
- fontSize: theme.typography.pxToRem(18)
16498
- }, ownerState.size === 'large' && {
16499
- padding: 12,
16500
- fontSize: theme.typography.pxToRem(28)
16501
- }, {
16502
- [`&.${iconButtonClasses.disabled}`]: {
16503
- backgroundColor: 'transparent',
16504
- color: (theme.vars || theme).palette.action.disabled
16505
- }
16506
- });
16507
- });
16508
-
16509
- /**
16510
- * Refer to the [Icons](/material-ui/icons/) section of the documentation
16511
- * regarding the available icon options.
16512
- */
16513
- const IconButton = /*#__PURE__*/reactExports.forwardRef(function IconButton(inProps, ref) {
16514
- const props = useThemeProps$1({
16515
- props: inProps,
16516
- name: 'MuiIconButton'
16517
- });
16518
- const {
16519
- edge = false,
16520
- children,
16521
- className,
16522
- color = 'default',
16523
- disabled = false,
16524
- disableFocusRipple = false,
16525
- size = 'medium'
16526
- } = props,
16527
- other = _objectWithoutPropertiesLoose$3(props, _excluded$x);
16528
- const ownerState = _extends$7({}, props, {
16529
- edge,
16530
- color,
16531
- disabled,
16532
- disableFocusRipple,
16533
- size
16534
- });
16535
- const classes = useUtilityClasses$m(ownerState);
16536
- return /*#__PURE__*/jsxRuntimeExports.jsx(IconButtonRoot, _extends$7({
16537
- className: clsx(classes.root, className),
16538
- centerRipple: true,
16539
- focusRipple: !disableFocusRipple,
16540
- disabled: disabled,
16541
- ref: ref
16542
- }, other, {
16543
- ownerState: ownerState,
16544
- children: children
16545
- }));
16546
- });
16547
- var IconButton$1 = IconButton;
16548
-
16549
- function getTypographyUtilityClass(slot) {
16550
- return generateUtilityClass$1('MuiTypography', slot);
16551
- }
16552
- generateUtilityClasses$1('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);
16553
-
16554
- const _excluded$w = ["align", "className", "component", "gutterBottom", "noWrap", "paragraph", "variant", "variantMapping"];
16555
- const useUtilityClasses$l = ownerState => {
16556
- const {
16557
- align,
16558
- gutterBottom,
16559
- noWrap,
16560
- paragraph,
16561
- variant,
16562
- classes
16563
- } = ownerState;
16564
- const slots = {
16565
- root: ['root', variant, ownerState.align !== 'inherit' && `align${capitalize$1(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']
16566
- };
16567
- return composeClasses(slots, getTypographyUtilityClass, classes);
16568
- };
16569
- const TypographyRoot = styled('span', {
16570
- name: 'MuiTypography',
16571
- slot: 'Root',
16572
- overridesResolver: (props, styles) => {
16573
- const {
16574
- ownerState
16575
- } = props;
16576
- return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${capitalize$1(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];
16577
- }
16578
- })(({
16579
- theme,
16580
- ownerState
16581
- }) => _extends$7({
16582
- margin: 0
16583
- }, ownerState.variant === 'inherit' && {
16584
- // Some elements, like <button> on Chrome have default font that doesn't inherit, reset this.
16585
- font: 'inherit'
16586
- }, ownerState.variant !== 'inherit' && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && {
16587
- textAlign: ownerState.align
16588
- }, ownerState.noWrap && {
16589
- overflow: 'hidden',
16590
- textOverflow: 'ellipsis',
16591
- whiteSpace: 'nowrap'
16592
- }, ownerState.gutterBottom && {
16593
- marginBottom: '0.35em'
16594
- }, ownerState.paragraph && {
16595
- marginBottom: 16
16596
- }));
16597
- const defaultVariantMapping = {
16598
- h1: 'h1',
16599
- h2: 'h2',
16600
- h3: 'h3',
16601
- h4: 'h4',
16602
- h5: 'h5',
16603
- h6: 'h6',
16604
- subtitle1: 'h6',
16605
- subtitle2: 'h6',
16606
- body1: 'p',
16607
- body2: 'p',
16608
- inherit: 'p'
16609
- };
16610
-
16611
- // TODO v6: deprecate these color values in v5.x and remove the transformation in v6
16612
- const colorTransformations = {
16613
- primary: 'primary.main',
16614
- textPrimary: 'text.primary',
16615
- secondary: 'secondary.main',
16616
- textSecondary: 'text.secondary',
16617
- error: 'error.main'
16618
- };
16619
- const transformDeprecatedColors = color => {
16620
- return colorTransformations[color] || color;
16621
- };
16622
- const Typography = /*#__PURE__*/reactExports.forwardRef(function Typography(inProps, ref) {
16623
- const themeProps = useThemeProps$1({
16624
- props: inProps,
16625
- name: 'MuiTypography'
16626
- });
16627
- const color = transformDeprecatedColors(themeProps.color);
16628
- const props = extendSxProp(_extends$7({}, themeProps, {
16629
- color
16630
- }));
16631
- const {
16632
- align = 'inherit',
16633
- className,
16634
- component,
16635
- gutterBottom = false,
16636
- noWrap = false,
16637
- paragraph = false,
16638
- variant = 'body1',
16639
- variantMapping = defaultVariantMapping
16640
- } = props,
16641
- other = _objectWithoutPropertiesLoose$3(props, _excluded$w);
16642
- const ownerState = _extends$7({}, props, {
16643
- align,
16644
- color,
16645
- className,
16646
- component,
16647
- gutterBottom,
16648
- noWrap,
16649
- paragraph,
16650
- variant,
16651
- variantMapping
16652
- });
16653
- const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';
16654
- const classes = useUtilityClasses$l(ownerState);
16655
- return /*#__PURE__*/jsxRuntimeExports.jsx(TypographyRoot, _extends$7({
16656
- as: Component,
16657
- ref: ref,
16658
- ownerState: ownerState,
16659
- className: clsx(classes.root, className)
16660
- }, other));
16661
- });
16662
- var Typography$1 = Typography;
16663
-
16664
16717
  var useThemeWithoutDefault = {};
16665
16718
 
16666
16719
  Object.defineProperty(useThemeWithoutDefault, "__esModule", {
@@ -17455,11 +17508,6 @@
17455
17508
  });
17456
17509
  var Backdrop$1 = Backdrop;
17457
17510
 
17458
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
17459
- function createUseThemeProps(name) {
17460
- return useThemeProps$1;
17461
- }
17462
-
17463
17511
  function getBadgeUtilityClass(slot) {
17464
17512
  return generateUtilityClass$1('MuiBadge', slot);
17465
17513
  }
@@ -20110,13 +20158,15 @@
20110
20158
  }
20111
20159
  }, [autoFocus]);
20112
20160
  reactExports.useImperativeHandle(actions, () => ({
20113
- adjustStyleForScrollbar: (containerElement, theme) => {
20161
+ adjustStyleForScrollbar: (containerElement, {
20162
+ direction
20163
+ }) => {
20114
20164
  // Let's ignore that piece of logic if users are already overriding the width
20115
20165
  // of the menu.
20116
20166
  const noExplicitWidth = !listRef.current.style.width;
20117
20167
  if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {
20118
20168
  const scrollbarSize = `${getScrollbarSize$1(ownerDocument(containerElement))}px`;
20119
- listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;
20169
+ listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;
20120
20170
  listRef.current.style.width = `calc(100% + ${scrollbarSize})`;
20121
20171
  }
20122
20172
  return listRef.current;
@@ -21370,11 +21420,11 @@
21370
21420
  y: 0
21371
21421
  };
21372
21422
  function composeEventHandler(handler, eventHandler) {
21373
- return event => {
21423
+ return (event, ...params) => {
21374
21424
  if (eventHandler) {
21375
- eventHandler(event);
21425
+ eventHandler(event, ...params);
21376
21426
  }
21377
- handler(event);
21427
+ handler(event, ...params);
21378
21428
  };
21379
21429
  }
21380
21430
 
@@ -21421,7 +21471,7 @@
21421
21471
  children: childrenProp
21422
21472
  });
21423
21473
  const theme = useTheme$2();
21424
- const isRtl = theme.direction === 'rtl';
21474
+ const isRtl = useRtl();
21425
21475
  const [childNode, setChildNode] = reactExports.useState();
21426
21476
  const [arrowRef, setArrowRef] = reactExports.useState(null);
21427
21477
  const ignoreNonTouchEvents = reactExports.useRef(false);
@@ -22790,31 +22840,52 @@
22790
22840
  } = _ref;
22791
22841
  return (isAlternative(cell) || isExcluded(cell)) && checkboxes;
22792
22842
  };
22793
- const getValueStateClasses = _ref2 => {
22843
+ function getSelectionStateClass(_ref2) {
22844
+ let {
22845
+ cell,
22846
+ showGray
22847
+ } = _ref2;
22848
+ let selectionStateClass;
22849
+ switch (cell.qState) {
22850
+ case 'XS':
22851
+ selectionStateClass = showGray ? rowColClasses.XS : rowColClasses.S;
22852
+ break;
22853
+ case 'S':
22854
+ case 'L':
22855
+ selectionStateClass = rowColClasses.S;
22856
+ break;
22857
+ case 'A':
22858
+ selectionStateClass = showGray ? rowColClasses.A : false;
22859
+ break;
22860
+ case 'X':
22861
+ case 'XL':
22862
+ selectionStateClass = showGray ? rowColClasses.X : false;
22863
+ break;
22864
+ default:
22865
+ selectionStateClass = false;
22866
+ }
22867
+ return selectionStateClass;
22868
+ }
22869
+ const getValueStateClasses = _ref3 => {
22794
22870
  let {
22795
22871
  column,
22796
22872
  histogram,
22797
- checkboxes,
22798
22873
  cell,
22799
22874
  showGray
22800
- } = _ref2;
22875
+ } = _ref3;
22876
+ if (!cell) {
22877
+ return [];
22878
+ }
22801
22879
  const clazzArr = [column ? rowColClasses.column : rowColClasses.row];
22802
22880
  if (!histogram) {
22803
22881
  clazzArr.push(rowColClasses.rowBorderBottom);
22804
22882
  }
22805
- if (!cell) {
22806
- return [];
22807
- }
22808
- if (!checkboxes) {
22809
- if (cell.qState === 'XS') {
22810
- clazzArr.push(showGray ? rowColClasses.XS : rowColClasses.S);
22811
- } else if (cell.qState === 'S' || cell.qState === 'L') {
22812
- clazzArr.push(rowColClasses.S);
22813
- } else if (showGray && isAlternative(cell)) {
22814
- clazzArr.push(rowColClasses.A);
22815
- } else if (showGray && isExcluded(cell)) {
22816
- clazzArr.push(rowColClasses.X);
22817
- }
22883
+ const selectionStateClass = getSelectionStateClass({
22884
+ cell,
22885
+ showGray
22886
+ });
22887
+ if (selectionStateClass) {
22888
+ clazzArr.push(selectionStateClass);
22818
22889
  }
22819
22890
  return clazzArr;
22820
22891
  };
@@ -22881,15 +22952,27 @@
22881
22952
  }
22882
22953
  return sizes.freqMaxWidth;
22883
22954
  };
22884
- const getSelectedStyle = _ref3 => {
22955
+ const getRowSelectionStyle = _ref3 => {
22885
22956
  let {
22886
22957
  theme,
22958
+ checkboxes,
22887
22959
  styles,
22888
- selectedState
22960
+ selectionState
22889
22961
  } = _ref3;
22962
+ if (checkboxes) {
22963
+ if (selectionState === 'selected') {
22964
+ return {
22965
+ ["& .".concat(rowColClasses.labelText)]: {
22966
+ // Override labels (value and frequency count) color when selected.
22967
+ color: styles.selections.selected
22968
+ }
22969
+ };
22970
+ }
22971
+ return {};
22972
+ }
22890
22973
  const selectionStyles = styles.selections;
22891
- const backgroundColor = selectionStyles[selectedState];
22892
- const contrastTextColor = selectionStyles["".concat(selectedState, "Contrast")];
22974
+ const backgroundColor = selectionStyles[selectionState];
22975
+ const contrastTextColor = selectionStyles["".concat(selectionState, "Contrast")];
22893
22976
  return {
22894
22977
  background: backgroundColor,
22895
22978
  color: contrastTextColor,
@@ -22935,16 +23018,29 @@
22935
23018
  } = _ref4;
22936
23019
  const _styles$content = styles.content,
22937
23020
  contentFontStyles = _objectWithoutProperties(_styles$content, _excluded$5);
22938
- const selectStyle = getSelectedStyle({
23021
+ const rowSelectionStyle = getRowSelectionStyle({
22939
23022
  theme,
22940
23023
  styles,
22941
- selectedState: 'selected'
23024
+ checkboxes,
23025
+ selectionState: 'selected'
22942
23026
  });
22943
- const excludedSelectStyle = getSelectedStyle({
23027
+ const rowExcludedStyle = getRowSelectionStyle({
22944
23028
  theme,
22945
23029
  styles,
22946
- selectedState: 'excluded'
23030
+ checkboxes,
23031
+ selectionState: 'excluded'
22947
23032
  });
23033
+ const barDefaultFilledStyle = {
23034
+ height: '100%',
23035
+ transition: 'width 0.2s',
23036
+ border: "".concat(barBorderWidthPx, "px solid"),
23037
+ borderColor: '#D9D9D9',
23038
+ // overridden by selected color (classes.S),
23039
+ backgroundColor: '#FAFAFA'
23040
+ };
23041
+ const barSelectedFilledStyle = {
23042
+ opacity: '30%'
23043
+ };
22948
23044
  return {
22949
23045
  '&:focus': {
22950
23046
  boxShadow: "inset 0 0 0 2px ".concat(theme.palette.custom.focusBorder, " !important")
@@ -23026,26 +23122,33 @@
23026
23122
  color: contentFontStyles.color
23027
23123
  },
23028
23124
  // Selection styles (S=Selected, XS=ExcludedSelected, A=Alternative, X=Excluded).
23029
- ["& .".concat(rowColClasses.S)]: _objectSpread2(_objectSpread2({}, selectStyle), {}, {
23125
+ ["& .".concat(rowColClasses.S)]: _objectSpread2(_objectSpread2({}, rowSelectionStyle), {}, {
23030
23126
  border: isGridMode ? 'none' : undefined
23031
23127
  }),
23032
- ["& .".concat(rowColClasses.XS)]: _objectSpread2(_objectSpread2({}, getSelectedStyle({
23128
+ ["& .".concat(rowColClasses.XS)]: _objectSpread2(_objectSpread2({}, getRowSelectionStyle({
23033
23129
  theme,
23034
23130
  styles,
23035
- selectedState: 'selectedExcluded'
23131
+ checkboxes,
23132
+ selectionState: 'selectedExcluded'
23036
23133
  })), {}, {
23037
23134
  border: isGridMode ? 'none' : undefined
23038
23135
  }),
23039
- ["& .".concat(rowColClasses.A)]: _objectSpread2(_objectSpread2({}, getSelectedStyle({
23136
+ ["& .".concat(rowColClasses.A)]: _objectSpread2(_objectSpread2({}, getRowSelectionStyle({
23040
23137
  theme,
23041
23138
  styles,
23042
- selectedState: 'alternative'
23139
+ checkboxes,
23140
+ selectionState: 'alternative'
23043
23141
  })), {}, {
23044
23142
  border: isGridMode ? 'none' : undefined
23045
23143
  }),
23046
- ["& .".concat(rowColClasses.X)]: _objectSpread2(_objectSpread2({}, excludedSelectStyle), {}, {
23144
+ ["& .".concat(rowColClasses.X)]: _objectSpread2(_objectSpread2({}, rowExcludedStyle), {}, {
23047
23145
  border: isGridMode ? 'none' : undefined
23048
23146
  }),
23147
+ ["& .".concat(rowColClasses.X, ", & .").concat(rowColClasses.XS)]: {
23148
+ // Override the selected color for bar-filled, when the value is selected and excluded.
23149
+ border: isGridMode ? 'none' : undefined,
23150
+ ["& .".concat(rowColClasses.barSelected, " .bar-filled")]: _objectSpread2({}, barDefaultFilledStyle)
23151
+ },
23049
23152
  ["& .".concat(rowColClasses.frequencyCount)]: _objectSpread2(_objectSpread2({
23050
23153
  zIndex: 3,
23051
23154
  justifyContent: 'flex-end'
@@ -23081,33 +23184,23 @@
23081
23184
  width: "calc(100% - ".concat(barPadPx * 2, "px)"),
23082
23185
  display: 'flex',
23083
23186
  alignItems: 'center',
23084
- '& .bar-filled': {
23085
- border: "".concat(barBorderWidthPx, "px solid"),
23086
- borderColor: '#D9D9D9',
23087
- transition: 'width 0.2s',
23088
- backgroundColor: '#FAFAFA',
23089
- height: '100%'
23090
- }
23187
+ '& .bar-filled': _objectSpread2({}, barDefaultFilledStyle)
23091
23188
  },
23092
23189
  ["& .".concat(rowColClasses.barSelected)]: {
23093
- '& .bar-filled': {
23094
- opacity: '30%',
23095
- background: theme.palette.background.lighter
23096
- }
23190
+ '& .bar-filled': _objectSpread2({}, barSelectedFilledStyle)
23097
23191
  },
23098
23192
  ["& .".concat(rowColClasses.barWithCheckbox)]: {
23099
23193
  left: direction === 'rtl' ? barPadPx : barWithCheckboxLeftPadPx,
23100
23194
  width: "calc(100% - ".concat(barWithCheckboxLeftPadPx + barPadPx, "px)")
23101
23195
  },
23102
23196
  ["& .".concat(rowColClasses.barSelectedWithCheckbox)]: {
23103
- '& .bar-filled': {
23104
- opacity: '30%',
23105
- background: selectStyle.background || '#BFE5D0',
23106
- borderColor: selectStyle.background || '#BFE5D0'
23107
- }
23197
+ '& .bar-filled': _objectSpread2(_objectSpread2({}, barSelectedFilledStyle), {}, {
23198
+ backgroundColor: styles.selections.selected || '#BFE5D0',
23199
+ borderColor: styles.selections.selected
23200
+ })
23108
23201
  },
23109
23202
  ["& .".concat(rowColClasses.excludedTextWithCheckbox)]: {
23110
- color: '#828282',
23203
+ color: styles.content.color,
23111
23204
  fontStyle: 'italic'
23112
23205
  }
23113
23206
  };
@@ -23582,94 +23675,6 @@
23582
23675
  return c;
23583
23676
  }
23584
23677
 
23585
- /* eslint-disable import/prefer-default-export */
23586
- const LOC_STATES = {
23587
- S: 'Object.Listbox.Selected',
23588
- A: 'Object.Listbox.Alternative',
23589
- O: 'Object.Listbox.Optional',
23590
- XS: 'Object.Listbox.SelectedExcluded',
23591
- L: 'Object.Listbox.Locked',
23592
- X: 'Object.Listbox.Excluded',
23593
- XL: 'Object.Listbox.ExcludedLock'
23594
- };
23595
- function getValueLabel(_ref) {
23596
- let {
23597
- translator: translatorDynamic,
23598
- label,
23599
- qState,
23600
- isSelected,
23601
- currentIndex,
23602
- maxIndex,
23603
- showSearch
23604
- } = _ref;
23605
- const stateTranslation = LOC_STATES[qState];
23606
- const state = translatorDynamic.get(stateTranslation);
23607
- const srStringArr = [];
23608
- if (isSelected) {
23609
- const navTranslation = showSearch ? 'Listbox.ScreenReader.SearchThenSelectionsMenu.WithAccSelMenu' : 'Listbox.ScreenReader.SelectionMenu.WithAccSelMenu';
23610
- const nav = translatorDynamic.get(navTranslation);
23611
- srStringArr.push(nav);
23612
- }
23613
- const valueString = "".concat(label, " ").concat(state);
23614
- const indexString = translatorDynamic.get('CurrentSelections.Of', [currentIndex + 1, maxIndex + 1]); // E.g. 3 of 20
23615
- srStringArr.unshift(valueString, indexString);
23616
- const srString = srStringArr.join('. ').trim();
23617
- return srString;
23618
- }
23619
-
23620
- /**
23621
- * Announces the selection state.
23622
- *
23623
- * @ignore
23624
- * @param {Layout} object
23625
- * @returns {Element} An (invisible) component.
23626
- */
23627
- function ScreenReaderForSelections(_ref2) {
23628
- var _layout$qListObject;
23629
- let {
23630
- layout
23631
- } = _ref2;
23632
- const {
23633
- translator: translatorDynamic
23634
- } = reactExports.useContext(InstanceContext);
23635
- const {
23636
- qStateCounts: s = {}
23637
- } = (layout === null || layout === void 0 || (_layout$qListObject = layout.qListObject) === null || _layout$qListObject === void 0 ? void 0 : _layout$qListObject.qDimensionInfo) || {};
23638
- const count = s.qSelected + s.qSelectedExcluded + s.qLocked + s.qLockedExcluded;
23639
- let t;
23640
- switch (count) {
23641
- case 0:
23642
- t = 'ScreenReader.ZeroSelected';
23643
- break;
23644
- case 1:
23645
- t = 'ScreenReader.OneSelected';
23646
- break;
23647
- default:
23648
- t = 'ScreenReader.ManySelected';
23649
- break;
23650
- }
23651
- const text = translatorDynamic.get(t, [count]);
23652
- return /*#__PURE__*/React$1.createElement("div", {
23653
- className: "screenReaderOnly",
23654
- "aria-live": "assertive"
23655
- }, text);
23656
- }
23657
- function getScreenReaderSearchText(listCount) {
23658
- let t;
23659
- switch (listCount) {
23660
- case 0:
23661
- t = 'Listbox.NoMatchesForYourTerms';
23662
- break;
23663
- case 1:
23664
- t = 'ScreenReader.OneSearchResult';
23665
- break;
23666
- default:
23667
- t = 'ScreenReader.ManySearchResults';
23668
- break;
23669
- }
23670
- return t;
23671
- }
23672
-
23673
23678
  const KEYS = Object.freeze({
23674
23679
  ENTER: 13,
23675
23680
  ESCAPE: 27,
@@ -23955,6 +23960,40 @@
23955
23960
  return ALLOWED_OPTIONS.includes(valueTextAlign) ? valueTextAlign : 'left';
23956
23961
  }
23957
23962
 
23963
+ const LOC_STATES = {
23964
+ S: 'Object.Listbox.Selected',
23965
+ A: 'Object.Listbox.Alternative',
23966
+ O: 'Object.Listbox.Optional',
23967
+ XS: 'Object.Listbox.SelectedExcluded',
23968
+ L: 'Object.Listbox.Locked',
23969
+ X: 'Object.Listbox.Excluded',
23970
+ XL: 'Object.Listbox.ExcludedLock'
23971
+ };
23972
+ function getValueLabel(_ref) {
23973
+ let {
23974
+ translator: translatorDynamic,
23975
+ label,
23976
+ qState,
23977
+ isSelected,
23978
+ currentIndex,
23979
+ maxIndex,
23980
+ showSearch
23981
+ } = _ref;
23982
+ const stateTranslation = LOC_STATES[qState];
23983
+ const state = translatorDynamic.get(stateTranslation);
23984
+ const srStringArr = [];
23985
+ if (isSelected) {
23986
+ const navTranslation = showSearch ? 'Listbox.ScreenReader.SearchThenSelectionsMenu.WithAccSelMenu' : 'Listbox.ScreenReader.SelectionMenu.WithAccSelMenu';
23987
+ const nav = translatorDynamic.get(navTranslation);
23988
+ srStringArr.push(nav);
23989
+ }
23990
+ const valueString = "".concat(label, " ").concat(state);
23991
+ const indexString = translatorDynamic.get('CurrentSelections.Of', [currentIndex + 1, maxIndex + 1]); // E.g. 3 of 20
23992
+ srStringArr.unshift(valueString, indexString);
23993
+ const srString = srStringArr.join('. ').trim();
23994
+ return srString;
23995
+ }
23996
+
23958
23997
  function RowColumn(_ref) {
23959
23998
  var _cell$qText, _cell$qHighlightRange;
23960
23999
  let {
@@ -24070,10 +24109,9 @@
24070
24109
  const classArr = reactExports.useMemo(() => getValueStateClasses({
24071
24110
  column,
24072
24111
  histogram,
24073
- checkboxes,
24074
24112
  cell,
24075
24113
  showGray
24076
- }), [cell === null || cell === void 0 ? void 0 : cell.qState, histogram, dense, checkboxes]);
24114
+ }), [cell === null || cell === void 0 ? void 0 : cell.qState, histogram, dense]);
24077
24115
  const preventContextMenu = reactExports.useCallback(event => {
24078
24116
  event.preventDefault();
24079
24117
  }, [checkboxes]);
@@ -26561,6 +26599,82 @@
26561
26599
  };
26562
26600
  };
26563
26601
 
26602
+ /**
26603
+ * Announces the selection state.
26604
+ *
26605
+ * @ignore
26606
+ * @param {Layout} object
26607
+ * @returns {string}
26608
+ */
26609
+ function getSRForSelectedState(_ref) {
26610
+ var _layout$qListObject;
26611
+ let {
26612
+ layout,
26613
+ translatorDynamic
26614
+ } = _ref;
26615
+ const {
26616
+ qStateCounts: s = {}
26617
+ } = (layout === null || layout === void 0 || (_layout$qListObject = layout.qListObject) === null || _layout$qListObject === void 0 ? void 0 : _layout$qListObject.qDimensionInfo) || {};
26618
+ const count = s.qSelected + s.qSelectedExcluded + s.qLocked + s.qLockedExcluded;
26619
+ let t;
26620
+ switch (count) {
26621
+ case 0:
26622
+ t = 'ScreenReader.ZeroSelected';
26623
+ break;
26624
+ case 1:
26625
+ t = 'ScreenReader.OneSelected';
26626
+ break;
26627
+ default:
26628
+ t = 'ScreenReader.ManySelected';
26629
+ break;
26630
+ }
26631
+ const text = translatorDynamic.get(t, [count]);
26632
+ return text;
26633
+ }
26634
+ function getSearchTranslationString(listCount) {
26635
+ let t;
26636
+ switch (listCount) {
26637
+ case 0:
26638
+ t = 'Listbox.NoMatchesForYourTerms';
26639
+ break;
26640
+ case 1:
26641
+ t = 'ScreenReader.OneSearchResult';
26642
+ break;
26643
+ default:
26644
+ t = 'ScreenReader.ManySearchResults';
26645
+ break;
26646
+ }
26647
+ return t;
26648
+ }
26649
+ function getScreenReaderAssertiveText(_ref2) {
26650
+ let {
26651
+ layout,
26652
+ searchInputText,
26653
+ listCount
26654
+ } = _ref2;
26655
+ const {
26656
+ translator: translatorDynamic
26657
+ } = reactExports.useContext(InstanceContext);
26658
+ const finalStringArr = [];
26659
+ if (searchInputText !== null && searchInputText !== void 0 && searchInputText.length) {
26660
+ // Add search result text.
26661
+ const srSearchTranslationString = getSearchTranslationString(listCount);
26662
+ const srSearchString = translatorDynamic.get(srSearchTranslationString, [listCount]);
26663
+ finalStringArr.push(srSearchString);
26664
+ }
26665
+
26666
+ // Add selection value text.
26667
+ const srSelectionValueText = getSRForSelectedState({
26668
+ layout,
26669
+ translatorDynamic
26670
+ });
26671
+ finalStringArr.push(srSelectionValueText);
26672
+
26673
+ // Merge texts into one text string, targeting the assertive screen reader.
26674
+ const finalString = finalStringArr.filter(v => !!(v !== null && v !== void 0 && v.length)).join('. ');
26675
+ return finalString;
26676
+ }
26677
+
26564
26678
  function deduceFrequencyMode(pages) {
26565
26679
  const hasPercentSign = pages.some(_ref => {
26566
26680
  let {
@@ -26629,7 +26743,6 @@
26629
26743
  checkboxes = checkboxOption,
26630
26744
  histogram
26631
26745
  } = layout !== null && layout !== void 0 ? layout : {};
26632
- const [screenReaderText, setScreenReaderText] = reactExports.useState('');
26633
26746
  const loaderRef = reactExports.useRef(null);
26634
26747
  const local = reactExports.useRef({
26635
26748
  queue: [],
@@ -26787,14 +26900,12 @@
26787
26900
  listCount
26788
26901
  } = sizes;
26789
26902
  setStoreValue('listCount', listCount);
26790
- const inputText = getStoreValue('inputText');
26791
- reactExports.useEffect(() => {
26792
- if (inputText) {
26793
- const srText = getScreenReaderSearchText(listCount);
26794
- const srFinalText = translatorDynamic.get(srText, [listCount]);
26795
- setScreenReaderText(srFinalText);
26796
- }
26797
- }, [inputText, listCount]);
26903
+ const searchInputText = getStoreValue('inputText');
26904
+ const screenReaderText = getScreenReaderAssertiveText({
26905
+ layout,
26906
+ searchInputText,
26907
+ listCount
26908
+ });
26798
26909
  const setScrollPosition = position => {
26799
26910
  const {
26800
26911
  scrollIndex,
@@ -26903,10 +27014,7 @@
26903
27014
  itemHeight
26904
27015
  });
26905
27016
  }
26906
- return /*#__PURE__*/React$1.createElement(StyledWrapper, null, /*#__PURE__*/React$1.createElement(ScreenReaderForSelections, {
26907
- className: "screenReaderOnly",
26908
- layout: layout
26909
- }), /*#__PURE__*/React$1.createElement("div", {
27017
+ return /*#__PURE__*/React$1.createElement(StyledWrapper, null, /*#__PURE__*/React$1.createElement("div", {
26910
27018
  className: "screenReaderOnly",
26911
27019
  "aria-live": "assertive"
26912
27020
  }, screenReaderText), !listCount && cardinal > 0 && /*#__PURE__*/React$1.createElement(ListBoxDisclaimer, {
@@ -27568,6 +27676,9 @@
27568
27676
  transformOrigin: popoverTransformOrigin,
27569
27677
  hideBackdrop: true,
27570
27678
  style: popoverStyle,
27679
+ onMouseDown: e => {
27680
+ e.stopPropagation(); // prevent click through, closing when it should not
27681
+ },
27571
27682
  slotProps: {
27572
27683
  paper: {
27573
27684
  id: 'njs-action-toolbar-popover',
@@ -27592,8 +27703,10 @@
27592
27703
  });
27593
27704
  var SearchIcon = (props => SvgIcon(search(props)));
27594
27705
 
27706
+ const MAX_SEARCH_LENGTH = 64000;
27595
27707
  const TREE_PATH = '/qListObjectDef';
27596
27708
  const WILDCARD = '**';
27709
+ const limitSearchLength = val => val === null || val === void 0 ? void 0 : val.substring(0, MAX_SEARCH_LENGTH);
27597
27710
  const StyledOutlinedInput = styled(OutlinedInput$1, {
27598
27711
  shouldForwardProp: p => !['styles', 'dense', 'isRtl'].includes(p)
27599
27712
  })(_ref => {
@@ -27702,11 +27815,12 @@
27702
27815
  setStoreValue('inputText', value);
27703
27816
  }, [value]);
27704
27817
  const onChange = async e => {
27705
- setValue(e.target.value);
27706
- if (!e.target.value.length) {
27818
+ const searchValue = limitSearchLength(e.target.value);
27819
+ setValue(searchValue);
27820
+ if (!searchValue.length) {
27707
27821
  return abortSearch();
27708
27822
  }
27709
- return model.searchListObjectFor(TREE_PATH, e.target.value);
27823
+ return model.searchListObjectFor(TREE_PATH, searchValue);
27710
27824
  };
27711
27825
  const handleFocus = () => {
27712
27826
  if (wildCardSearch) {
@@ -27723,11 +27837,12 @@
27723
27837
  };
27724
27838
  const performSearch = async () => {
27725
27839
  let response;
27726
- const success = await model.searchListObjectFor(TREE_PATH, value);
27840
+ const searchValue = limitSearchLength(value);
27841
+ const success = await model.searchListObjectFor(TREE_PATH, searchValue);
27727
27842
  if (selectionState.selectDisabled()) {
27728
27843
  return success;
27729
27844
  }
27730
- if (success && value.length && hasHits()) {
27845
+ if (success && searchValue.length && hasHits()) {
27731
27846
  response = model.acceptListObjectSearch(TREE_PATH, true);
27732
27847
  // eslint-disable-next-line no-param-reassign
27733
27848
  selections.selectionsMade = true;
@@ -31636,6 +31751,7 @@
31636
31751
  defaultWidth,
31637
31752
  disableHeight = false,
31638
31753
  disableWidth = false,
31754
+ doNotBailOutOnEmptyChildren = false,
31639
31755
  nonce,
31640
31756
  onResize,
31641
31757
  style = {},
@@ -31676,6 +31792,9 @@
31676
31792
  childParams.width = width;
31677
31793
  childParams.scaledWidth = scaledWidth;
31678
31794
  }
31795
+ if (doNotBailOutOnEmptyChildren) {
31796
+ bailoutOnChildren = false;
31797
+ }
31679
31798
  return reactExports.createElement(tagName, {
31680
31799
  ref: this._setRef,
31681
31800
  style: {
@@ -31957,16 +32076,6 @@
31957
32076
  return containerPadding;
31958
32077
  }
31959
32078
 
31960
- const drillDown = props => _objectSpread2(_objectSpread2({}, props), {}, {
31961
- shapes: [{
31962
- type: 'path',
31963
- attrs: {
31964
- d: 'M15.9993744,3 L15.9993744,5 L4.99937445,5 L4.99937445,3 L15.9993744,3 Z M8.99937445,7 L15.9993744,7 L15.9993744,9 L8.99937445,9 L8.99937445,7 Z M11.9993744,11 L15.9993744,11 L15.9993744,13 L11.9993744,13 L11.9993744,11 Z M2.2,11 L7,11 L7,9.00369263 C7,8.89323568 7.08954305,8.80369263 7.2,8.80369263 C7.2549016,8.80369263 7.30738916,8.82626165 7.34515712,8.86610844 L10.1852182,11.8624926 C10.2583124,11.93961 10.258346,12.0604218 10.1852948,12.13758 L7.34523376,15.1373102 C7.2692928,15.2175206 7.14270711,15.2209817 7.06249671,15.1450407 C7.02260076,15.1072683 7,15.0547472 7,14.9998069 L7,12.9043747 C4.79351111,12.9043747 2.8018683,12.9266213 1.02507156,12.9711145 L1.02507252,12.9711526 C0.472939773,12.9849787 0.014139487,12.5485949 0.000313396522,11.9964622 C0.000104473692,11.988119 -1.32268838e-12,11.9797736 -1.3231638e-12,11.9714278 L-1.83320026e-12,3 L2,3 L2,10.8 C2,10.9104569 2.08954305,11 2.2,11 Z'
31965
- }
31966
- }]
31967
- });
31968
- var DrillDownIcon = (props => SvgIcon(drillDown(props)));
31969
-
31970
32079
  function showToolbarDetached(_ref) {
31971
32080
  var _titleRef$current$cli, _titleRef$current, _titleRef$current2, _titleRef$current3;
31972
32081
  let {
@@ -32122,6 +32231,112 @@
32122
32231
  return component;
32123
32232
  }
32124
32233
 
32234
+ const cyclic = props => _objectSpread2(_objectSpread2({}, props), {}, {
32235
+ shapes: [{
32236
+ type: 'path',
32237
+ attrs: {
32238
+ d: 'M 6 2 h 10 V 1 H 6 Z m 5 5 h 5 V 6 h -5 Z m 5 5 h -5 v -1 h 5 Z M 5 10 h 1 v 2.663 a 3.5 3.5 0 1 0 -2.922 0.036 l -0.406 0.914 A 4.501 4.501 0 1 1 7.329 13 H 9 v 1 H 5 Z'
32239
+ }
32240
+ }]
32241
+ });
32242
+ var CyclicIcon = (props => SvgIcon(cyclic(props)));
32243
+
32244
+ const drillDown = props => _objectSpread2(_objectSpread2({}, props), {}, {
32245
+ shapes: [{
32246
+ type: 'path',
32247
+ attrs: {
32248
+ d: 'M7 4h9v1H7zm2 4h7v1H9zm2 4h5v1h-5zM1 4v3.526a3.5 3.5 0 0 0 3.5 3.5h2.31L5.22 9.402l.715-.7L8.7 11.527 5.935 14.35l-.714-.7 1.59-1.624H4.5a4.5 4.5 0 0 1-4.5-4.5V4z'
32249
+ }
32250
+ }]
32251
+ });
32252
+ var DrillDownIcon = (props => SvgIcon(drillDown(props)));
32253
+
32254
+ const reload = props => _objectSpread2(_objectSpread2({}, props), {}, {
32255
+ shapes: [{
32256
+ type: 'path',
32257
+ attrs: {
32258
+ d: 'M1 8a7 7 0 1 1 10 6.326V11h-1v5h5v-1h-3.124A8 8 0 1 0 8 16v-1a7 7 0 0 1-7-7Z'
32259
+ }
32260
+ }]
32261
+ });
32262
+ var ReloadIcon = (props => SvgIcon(reload(props)));
32263
+
32264
+ const dimensionTypes = {
32265
+ single: 'N',
32266
+ drillDown: 'H',
32267
+ cyclic: 'C'
32268
+ };
32269
+ const createDimensionIconData = (dimInfo, app) => {
32270
+ switch (dimInfo.qGrouping) {
32271
+ case dimensionTypes.drillDown:
32272
+ return {
32273
+ icon: DrillDownIcon,
32274
+ tooltip: 'Listbox.DrillDown',
32275
+ onClick: undefined
32276
+ };
32277
+ case dimensionTypes.cyclic:
32278
+ return {
32279
+ icon: app ? ReloadIcon : CyclicIcon,
32280
+ tooltip: 'Listbox.Cyclic',
32281
+ onClick: app ? () => {
32282
+ app.getDimension(dimInfo.qLibraryId).then(dimensionModel => {
32283
+ if (!dimensionModel.stepCycle) {
32284
+ // eslint-disable-next-line no-console
32285
+ console.log("engine api spec version doesn't have support for function stepCycle");
32286
+ return;
32287
+ }
32288
+ dimensionModel.stepCycle(1);
32289
+ }).catch(() => null);
32290
+ } : undefined
32291
+ };
32292
+ default:
32293
+ return undefined;
32294
+ }
32295
+ };
32296
+ var iconUtils = {
32297
+ createDimensionIconData
32298
+ };
32299
+
32300
+ const StyledButton = styled(Button$1)(() => ({
32301
+ borderRadius: 4,
32302
+ width: 24,
32303
+ height: 24,
32304
+ minWidth: 22,
32305
+ padding: 0
32306
+ }));
32307
+ function DimensionIcon(_ref) {
32308
+ let {
32309
+ iconData,
32310
+ translator,
32311
+ iconStyle
32312
+ } = _ref;
32313
+ if (!iconData) return undefined;
32314
+ const {
32315
+ icon,
32316
+ tooltip,
32317
+ onClick
32318
+ } = iconData;
32319
+ const Icon = icon;
32320
+ const title = translator.get(tooltip);
32321
+ const isButton = onClick;
32322
+ return isButton ? /*#__PURE__*/React$1.createElement(StyledButton, {
32323
+ variant: "outlined",
32324
+ onClick: onClick,
32325
+ tabIndex: -1,
32326
+ title: title,
32327
+ size: "large",
32328
+ disableRipple: true
32329
+ }, /*#__PURE__*/React$1.createElement(Icon, {
32330
+ style: iconStyle
32331
+ })) : /*#__PURE__*/React$1.createElement(Icon, {
32332
+ title: title,
32333
+ size: "large",
32334
+ style: _objectSpread2(_objectSpread2({}, iconStyle), {}, {
32335
+ padding: "".concat(ICON_PADDING, "px")
32336
+ })
32337
+ });
32338
+ }
32339
+
32125
32340
  // ms that needs to pass before the lock button can be toggled again
32126
32341
  const lockTimeFrameMs = 500;
32127
32342
  let lastTime = 0;
@@ -32156,7 +32371,7 @@
32156
32371
  };
32157
32372
  }
32158
32373
  function ListBoxHeader(_ref2) {
32159
- var _layout$qListObject, _layout$qListObject3;
32374
+ var _layout$qListObject, _layout$qListObject3, _layout$qListObject4;
32160
32375
  let {
32161
32376
  layout,
32162
32377
  translator,
@@ -32164,7 +32379,6 @@
32164
32379
  isRtl,
32165
32380
  showLock,
32166
32381
  showSearchIcon,
32167
- isDrillDown,
32168
32382
  constraints,
32169
32383
  onShowSearch,
32170
32384
  classes,
@@ -32178,7 +32392,8 @@
32178
32392
  isDirectQuery,
32179
32393
  selections,
32180
32394
  keyboard,
32181
- autoConfirm
32395
+ autoConfirm,
32396
+ app
32182
32397
  } = _ref2;
32183
32398
  const [isToolbarDetached, setIsToolbarDetached] = reactExports.useState(showDetachedToolbarOnly);
32184
32399
  const [isLocked, setLocked] = reactExports.useState(layout === null || layout === void 0 || (_layout$qListObject = layout.qListObject) === null || _layout$qListObject === void 0 || (_layout$qListObject = _layout$qListObject.qDimensionInfo) === null || _layout$qListObject === void 0 ? void 0 : _layout$qListObject.qLocked);
@@ -32188,15 +32403,16 @@
32188
32403
  setLocked(layout === null || layout === void 0 || (_layout$qListObject2 = layout.qListObject) === null || _layout$qListObject2 === void 0 || (_layout$qListObject2 = _layout$qListObject2.qDimensionInfo) === null || _layout$qListObject2 === void 0 ? void 0 : _layout$qListObject2.qLocked);
32189
32404
  }, [layout === null || layout === void 0 || (_layout$qListObject3 = layout.qListObject) === null || _layout$qListObject3 === void 0 || (_layout$qListObject3 = _layout$qListObject3.qDimensionInfo) === null || _layout$qListObject3 === void 0 ? void 0 : _layout$qListObject3.qLocked]);
32190
32405
  const titleRef = reactExports.useRef(null);
32406
+ const iconData = iconUtils.createDimensionIconData(layout === null || layout === void 0 || (_layout$qListObject4 = layout.qListObject) === null || _layout$qListObject4 === void 0 ? void 0 : _layout$qListObject4.qDimensionInfo, app);
32191
32407
  const showUnlock = showLock && isLocked;
32192
32408
  const showLockIcon = !showLock && isLocked; // shows instead of the cover button when field/dim is locked.
32193
- const showLeftIcon = showSearchIcon || showLockIcon || isDrillDown; // the left-most icon outside of the actions/selections toolbar.
32409
+ const showLeftIcon = showSearchIcon || showLockIcon || iconData; // the left-most icon outside of the actions/selections toolbar.
32194
32410
 
32195
32411
  const paddingLeft = CELL_PADDING_LEFT - (showLeftIcon ? ICON_PADDING : 0);
32196
32412
  const paddingRight = isRtl ? CELL_PADDING_LEFT - (showLeftIcon ? ICON_PADDING : 0) : HEADER_PADDING_RIGHT;
32197
32413
 
32198
32414
  // Calculate explicit width for icons container. Search and lock cannot exist combined.
32199
- const iconsWidth = (showSearchIcon ? BUTTON_ICON_WIDTH : 0) + (showLockIcon ? BUTTON_ICON_WIDTH : 0) + (isDrillDown ? BUTTON_ICON_WIDTH : 0);
32415
+ const iconsWidth = (showSearchIcon ? BUTTON_ICON_WIDTH : 0) + (showLockIcon ? BUTTON_ICON_WIDTH : 0) + (iconData ? BUTTON_ICON_WIDTH : 0);
32200
32416
  const toggleLock = getToggleLock({
32201
32417
  isLocked,
32202
32418
  setLocked,
@@ -32295,12 +32511,10 @@
32295
32511
  alignItems: "center",
32296
32512
  width: iconsWidth,
32297
32513
  className: "header-action-container"
32298
- }, lockedIconComp || showSearchIcon && searchIconComp, isDrillDown && /*#__PURE__*/React$1.createElement(DrillDownIcon, {
32299
- tabIndex: -1,
32300
- title: translator.get('Listbox.DrillDown'),
32301
- style: _objectSpread2(_objectSpread2({}, iconStyle), {}, {
32302
- padding: "".concat(ICON_PADDING, "px")
32303
- })
32514
+ }, lockedIconComp || showSearchIcon && searchIconComp, /*#__PURE__*/React$1.createElement(DimensionIcon, {
32515
+ iconData: iconData,
32516
+ iconStyle: iconStyle,
32517
+ translator: translator
32304
32518
  })), /*#__PURE__*/React$1.createElement(Grid$1, {
32305
32519
  item: true,
32306
32520
  xs: true,
@@ -32370,7 +32584,7 @@
32370
32584
  return (_app$isInModalSelecti = (_app$isInModalSelecti2 = app.isInModalSelection) === null || _app$isInModalSelecti2 === void 0 ? void 0 : _app$isInModalSelecti2.call(app)) !== null && _app$isInModalSelecti !== void 0 ? _app$isInModalSelecti : appSelections.isInModal();
32371
32585
  };
32372
32586
  function ListBoxInline(_ref3) {
32373
- var _layout$qListObject, _layout$qListObject2, _layout$title, _layoutOptions$dense, _containerRef$current;
32587
+ var _layout$qListObject, _layout$title, _layoutOptions$dense, _containerRef$current;
32374
32588
  let {
32375
32589
  options,
32376
32590
  layout
@@ -32536,7 +32750,6 @@
32536
32750
  } = layout !== null && layout !== void 0 ? layout : {};
32537
32751
  const isLocked = layout === null || layout === void 0 || (_layout$qListObject = layout.qListObject) === null || _layout$qListObject === void 0 || (_layout$qListObject = _layout$qListObject.qDimensionInfo) === null || _layout$qListObject === void 0 ? void 0 : _layout$qListObject.qLocked;
32538
32752
  const showSearchIcon = searchEnabled !== false && search === 'toggle' && !isLocked;
32539
- const isDrillDown = (layout === null || layout === void 0 || (_layout$qListObject2 = layout.qListObject) === null || _layout$qListObject2 === void 0 || (_layout$qListObject2 = _layout$qListObject2.qDimensionInfo) === null || _layout$qListObject2 === void 0 ? void 0 : _layout$qListObject2.qGrouping) === 'H';
32540
32753
  const canShowTitle = (layout === null || layout === void 0 || (_layout$title = layout.title) === null || _layout$title === void 0 ? void 0 : _layout$title.length) && (layout === null || layout === void 0 ? void 0 : layout.showTitle) !== false;
32541
32754
  const showDetachedToolbarOnly = toolbar && !canShowTitle && !isPopover;
32542
32755
  const showAttachedToolbar = toolbar && canShowTitle || isPopover;
@@ -32574,8 +32787,8 @@
32574
32787
  }
32575
32788
  const listBoxMinHeight = showAttachedToolbar ? DENSE_ROW_HEIGHT + SCROLL_BAR_WIDTH : 0;
32576
32789
  const listBoxHeader = /*#__PURE__*/React$1.createElement(ListBoxHeader, {
32790
+ app: app,
32577
32791
  showSearchIcon: showSearchIcon,
32578
- isDrillDown: isDrillDown,
32579
32792
  onShowSearch: handleShowSearch,
32580
32793
  isPopover: isPopover,
32581
32794
  showToolbar: showToolbar,
@@ -32759,7 +32972,7 @@
32759
32972
  /**
32760
32973
  * Extends `ListObjectDef`, see Engine API: `ListObjectDef`.
32761
32974
  * @interface ListObjectDef
32762
- * @extends EngineAPI.IListObjectDef
32975
+ * @extends qix.ListObjectDef
32763
32976
  * @property {boolean} [frequencyEnabled=false] Show frequency count. also requires qListObjectDef.qFrequencyMode to be set
32764
32977
  */
32765
32978
 
@@ -33598,10 +33811,10 @@
33598
33811
  /**
33599
33812
  * @since 1.1.0
33600
33813
  * @interface ExportDataDef
33601
- * @property {EngineAPI.INxDimension[]} dimensions
33602
- * @property {EngineAPI.INxMeasure[]} measures
33603
- * @property {EngineAPI.INxDimension[]} excludedDimensions
33604
- * @property {EngineAPI.INxMeasure[]} excludedMeasures
33814
+ * @property {qix.NxDimension[]} dimensions
33815
+ * @property {qix.NxMeasure[]} measures
33816
+ * @property {qix.NxDimension[]} excludedDimensions
33817
+ * @property {qix.NxMeasure[]} excludedMeasures
33605
33818
  * @property {number[]} interColumnSortOrder
33606
33819
  */
33607
33820
 
@@ -36818,7 +37031,7 @@
36818
37031
  /**
36819
37032
  * Gets the layout of the generic object associated with this visualization.
36820
37033
  * @entry
36821
- * @returns {EngineAPI.IGenericObjectLayout}
37034
+ * @returns {qix.GenericObjectLayout}
36822
37035
  * @example
36823
37036
  * import { useLayout } from '@nebula.js/stardust';
36824
37037
  * // ...
@@ -36838,7 +37051,7 @@
36838
37051
  * The returned value from `useStaleLayout()` and `useLayout()` are identical when the object
36839
37052
  * is not in a modal state.
36840
37053
  * @entry
36841
- * @returns {EngineAPI.IGenericObjectLayout}
37054
+ * @returns {qix.GenericObjectLayout}
36842
37055
  * @example
36843
37056
  * import { useStaleLayout } from '@nebula.js/stardust';
36844
37057
  * // ...
@@ -36859,7 +37072,7 @@
36859
37072
  /**
36860
37073
  * Gets the layout of the app associated with this visualization.
36861
37074
  * @entry
36862
- * @returns {EngineAPI.INxAppLayout} The app layout
37075
+ * @returns {qix.NxAppLayout} The app layout
36863
37076
  * @example
36864
37077
  * import { useAppLayout } from '@nebula.js/stardust';
36865
37078
  * // ...
@@ -36873,7 +37086,7 @@
36873
37086
  /**
36874
37087
  * Gets the generic object API of the generic object connected to this visualization.
36875
37088
  * @entry
36876
- * @returns {EngineAPI.IGenericObject|undefined}
37089
+ * @returns {qix.GenericObject|undefined}
36877
37090
  * @example
36878
37091
  * import { useModel } from '@nebula.js/stardust';
36879
37092
  * // ...
@@ -36892,7 +37105,7 @@
36892
37105
  /**
36893
37106
  * Gets the doc API.
36894
37107
  * @entry
36895
- * @returns {EngineAPI.IApp|undefined} The doc API.
37108
+ * @returns {qix.Doc|undefined} The doc API.
36896
37109
  * @example
36897
37110
  * import { useApp } from '@nebula.js/stardust';
36898
37111
  * // ...
@@ -36911,7 +37124,7 @@
36911
37124
  /**
36912
37125
  * Gets the global API.
36913
37126
  * @entry
36914
- * @returns {EngineAPI.IGlobal|undefined} The global API.
37127
+ * @returns {qix.Global|undefined} The global API.
36915
37128
  * @example
36916
37129
  * import { useGlobal } from '@nebula.js/stardust';
36917
37130
  *
@@ -36961,7 +37174,7 @@
36961
37174
  * import { useTheme } from '@nebula.js/stardust';
36962
37175
  *
36963
37176
  * const theme = useTheme();
36964
- * console.log(theme.getContrastinColorTo('#ff0000'));
37177
+ * console.log(theme.getContrastingColorTo('#ff0000'));
36965
37178
  */
36966
37179
  function useTheme() {
36967
37180
  return useInternalContext('theme');
@@ -37154,7 +37367,7 @@
37154
37367
  * @interface Interactions
37155
37368
  * @property {boolean=} passive=true Whether or not passive interactions are on. Allows passive interaction by users, ie: tooltips
37156
37369
  * @property {boolean=} active=true Whether or not active interactions are on. Allows active interaction by users, ie: scroll, click
37157
- * @property {boolean=} select=true Whether or not select interactions are on. Alows selection actions. Implied when active is false.
37370
+ * @property {boolean=} select=true Whether or not select interactions are on. Allows selection actions. Implied when active is false.
37158
37371
  * @property {boolean=} edit=false Whether or not edit actions are on. Allows edit actions.
37159
37372
  */
37160
37373
  /**
@@ -37282,7 +37495,7 @@
37282
37495
  /**
37283
37496
  * Registers a callback that is called when a snapshot is taken.
37284
37497
  * @entry
37285
- * @param {function(EngineAPI.IGenericObjectLayout): Promise<EngineAPI.IGenericObjectLayout>} snapshotCallback
37498
+ * @param {function(qix.GenericObjectLayout): Promise<qix.GenericObjectLayout>} snapshotCallback
37286
37499
  * @example
37287
37500
  * import { onTakeSnapshot } from '@nebula.js/stardust';
37288
37501
  * import { useState } from '@nebula.js/stardust';
@@ -37343,7 +37556,7 @@
37343
37556
  *
37344
37557
  * const renderState = useRenderState();
37345
37558
  * useState(() => {
37346
- * if(needProperteisUpdate(...)) {
37559
+ * if(needPropertiesUpdate(...)) {
37347
37560
  * useRenderState.pending();
37348
37561
  * updateProperties(...);
37349
37562
  * } else {
@@ -37885,7 +38098,7 @@
37885
38098
 
37886
38099
  /**
37887
38100
  * @interface QAEDefinition
37888
- * @property {EngineAPI.IGenericObjectProperties=} properties
38101
+ * @property {qix.GenericObjectProperties=} properties
37889
38102
  * @property {object=} data
37890
38103
  * @property {DataTarget[]} data.targets
37891
38104
  * @property {importProperties=} importProperties
@@ -37895,22 +38108,22 @@
37895
38108
  /**
37896
38109
  * @interface DataTarget
37897
38110
  * @property {string} path
37898
- * @property {FieldTarget<EngineAPI.INxDimension>=} dimensions
37899
- * @property {FieldTarget<EngineAPI.INxMeasure>=} measures
38111
+ * @property {FieldTarget<qix.NxDimension>=} dimensions
38112
+ * @property {FieldTarget<qix.NxMeasure>=} measures
37900
38113
  */
37901
38114
 
37902
38115
  /**
37903
38116
  * @callback fieldTargetAddedCallback
37904
38117
  * @template T
37905
38118
  * @param {T} field
37906
- * @param {EngineAPI.IGenericObjectProperties} properties
38119
+ * @param {qix.GenericObjectProperties} properties
37907
38120
  */
37908
38121
 
37909
38122
  /**
37910
38123
  * @callback fieldTargetRemovedCallback
37911
38124
  * @template T
37912
38125
  * @param {T} field
37913
- * @param {EngineAPI.IGenericObjectProperties} properties
38126
+ * @param {qix.GenericObjectProperties} properties
37914
38127
  * @param {number} index
37915
38128
  */
37916
38129
 
@@ -38174,7 +38387,7 @@
38174
38387
  id: model.id,
38175
38388
  /**
38176
38389
  * This visualizations Enigma model, a representation of the generic object.
38177
- * @type {EngineAPI.IGenericObject}
38390
+ * @type {qix.GenericObject}
38178
38391
  */
38179
38392
  model,
38180
38393
  /**
@@ -38295,7 +38508,6 @@
38295
38508
  },
38296
38509
  /**
38297
38510
  * Listens to custom events from inside the visualization. See useEmitter
38298
- * @experimental
38299
38511
  * @param {string} eventName Event name to listen to
38300
38512
  * @param {Function} listener Callback function to invoke
38301
38513
  */
@@ -38304,7 +38516,6 @@
38304
38516
  },
38305
38517
  /**
38306
38518
  * Removes a listener
38307
- * @experimental
38308
38519
  * @param {string} eventName Event name to remove from
38309
38520
  * @param {Function} listener Callback function to remove
38310
38521
  */
@@ -38319,6 +38530,16 @@
38319
38530
  await rendered;
38320
38531
  return cellRef.current.getImperativeHandle();
38321
38532
  },
38533
+ /**
38534
+ * Takes a snapshot of the Viz layout and state
38535
+ * @experimental
38536
+ * @private
38537
+ * @returns {Promise<object>} viz layout object with snapshot settings
38538
+ */
38539
+ async takeSnapshot() {
38540
+ await rendered;
38541
+ return cellRef.current.takeSnapshot();
38542
+ },
38322
38543
  // ===== unexposed experimental API - use at own risk ======
38323
38544
  __DO_NOT_USE__: {
38324
38545
  mount(element) {
@@ -38453,7 +38674,7 @@
38453
38674
  }
38454
38675
 
38455
38676
  /**
38456
- * @typedef {string | EngineAPI.INxDimension | EngineAPI.INxMeasure | LibraryField} Field
38677
+ * @typedef {string | qix.NxDimension | qix.NxMeasure | LibraryField} Field
38457
38678
  */
38458
38679
 
38459
38680
  /**
@@ -38467,7 +38688,7 @@
38467
38688
  * @property {string=} version For creating objects: Version of visualization to render
38468
38689
  * @property {(Field[])=} fields For creating objects: Data fields to use
38469
38690
  * @property {boolean=} [extendProperties=false] For creating objects: Whether to deeply extend properties or not. If false then subtrees will be overwritten.
38470
- * @property {EngineAPI.IGenericObjectProperties=} properties For creating objects: Explicit properties to set
38691
+ * @property {qix.GenericObjectProperties=} properties For creating objects: Explicit properties to set
38471
38692
  * @example
38472
38693
  * // A config for Creating objects:
38473
38694
  * const createConfig = {
@@ -38558,7 +38779,7 @@
38558
38779
  }
38559
38780
 
38560
38781
  /**
38561
- * @typedef {string | EngineAPI.INxDimension | EngineAPI.INxMeasure | LibraryField} Field
38782
+ * @typedef {string | qix.NxDimension | qix.NxMeasure | LibraryField} Field
38562
38783
  */
38563
38784
 
38564
38785
  /**
@@ -38567,7 +38788,7 @@
38567
38788
  * @property {string} type
38568
38789
  * @property {string=} version
38569
38790
  * @property {(Field[])=} fields
38570
- * @property {EngineAPI.IGenericObjectProperties=} properties
38791
+ * @property {qix.GenericObjectProperties=} properties
38571
38792
  */
38572
38793
 
38573
38794
  async function createObject(_ref, halo, generateOnly, store) {
@@ -41288,7 +41509,10 @@
41288
41509
  themes: [],
41289
41510
  anything: {},
41290
41511
  flags: {
41291
- KPI_REACTCOLORPICKER: true
41512
+ KPI_REACTCOLORPICKER: true,
41513
+ IM_1869_HIDE_DIM_MEA_LINE: true,
41514
+ IM_1579_HIDE_DIM_MEA: true,
41515
+ CLIENT_IM_3365: true
41292
41516
  },
41293
41517
  snapshot: DEFAULT_SNAPSHOT_CONFIG
41294
41518
  };
@@ -41369,7 +41593,7 @@
41369
41593
  * Initiates a new `Embed` instance using the specified enigma `app`.
41370
41594
  * @entry
41371
41595
  * @function embed
41372
- * @param {EngineAPI.IApp} app
41596
+ * @param {qix.Doc} app
41373
41597
  * @param {Configuration=} instanceConfig
41374
41598
  * @returns {Embed}
41375
41599
  * @example
@@ -41484,8 +41708,7 @@
41484
41708
  /**
41485
41709
  * Creates a visualization model
41486
41710
  * @param {CreateConfig} cfg The create configuration.
41487
- * @experimental
41488
- * @returns {Promise<EngineAPI.IGenericObject>} An engima model
41711
+ * @returns {Promise<qix.GenericObject>} An engima model
41489
41712
  * @example
41490
41713
  * // create a barchart in the app and return the model
41491
41714
  * const model = await n.create({
@@ -41499,7 +41722,6 @@
41499
41722
  /**
41500
41723
  * Generates properties for a visualization object
41501
41724
  * @param {CreateConfig} cfg The create configuration.
41502
- * @experimental
41503
41725
  * @returns {Promise<object>} The objects properties
41504
41726
  * @example
41505
41727
  * // generate properties for a barchart
@@ -42119,7 +42341,7 @@
42119
42341
  */
42120
42342
  const mocker = /** @lends EnigmaMocker# */{
42121
42343
  /**
42122
- * Mocks Engima app functionality. It accepts one / many generic objects as input argument and returns the mocked Enigma app. Each generic object represents one visulization and specifies how it behaves. For example, what layout to use the data to present.
42344
+ * Mocks Engima app functionality. It accepts one / many generic objects as input argument and returns the mocked Enigma app. Each generic object represents one visualisation and specifies how it behaves. For example, what layout to use the data to present.
42123
42345
  *
42124
42346
  * The generic object is represented with a Javascript object with a number of properties. The name of the property correlates to the name in the Enigma model for `app.getObject(id)`. For example, the property `getLayout` in the generic object is used to define `app.getObject(id).getLayout()`. Any property can be added to the fixture (just make sure it exists and behaves as in the Enigma model!).
42125
42347
  *
@@ -42127,9 +42349,9 @@
42127
42349
  * @type function
42128
42350
  * @experimental
42129
42351
  * @since 3.0.0
42130
- * @param {Array<object>} genericObjects Generic objects controling behaviour of visualizations.
42352
+ * @param {Array<object>} genericObjects Generic objects controlling behaviour of visualizations.
42131
42353
  * @param {EnigmaMockerOptions=} options Options
42132
- * @returns {Promise<EngineAPI.IApp>}
42354
+ * @returns {Promise<qix.Doc>}
42133
42355
  * @example
42134
42356
  * const genericObject = {
42135
42357
  * getLayout() {