@mui/material 5.10.6 → 5.10.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/Button/Button.js +3 -10
  2. package/CHANGELOG.md +78 -0
  3. package/Checkbox/Checkbox.js +12 -3
  4. package/Chip/chipClasses.d.ts +8 -0
  5. package/Chip/chipClasses.js +1 -1
  6. package/DialogContentText/DialogContentText.js +14 -3
  7. package/Fab/Fab.js +5 -2
  8. package/FormControlLabel/FormControlLabel.d.ts +1 -1
  9. package/InputLabel/InputLabel.js +12 -3
  10. package/ListItemButton/ListItemButton.js +10 -3
  11. package/MenuItem/MenuItem.js +10 -3
  12. package/Popover/Popover.js +1 -0
  13. package/Radio/Radio.js +12 -3
  14. package/StepLabel/StepLabel.js +5 -3
  15. package/SvgIcon/SvgIcon.js +2 -2
  16. package/SvgIcon/svgIconClasses.d.ts +2 -0
  17. package/Tooltip/Tooltip.d.ts +2 -2
  18. package/Tooltip/Tooltip.js +3 -5
  19. package/Unstable_TrapFocus/index.d.ts +2 -2
  20. package/Unstable_TrapFocus/index.js +2 -2
  21. package/esm/Button/Button.js +3 -8
  22. package/esm/Checkbox/Checkbox.js +11 -3
  23. package/esm/Chip/chipClasses.js +1 -1
  24. package/esm/DialogContentText/DialogContentText.js +13 -3
  25. package/esm/Fab/Fab.js +5 -2
  26. package/esm/InputLabel/InputLabel.js +11 -3
  27. package/esm/ListItemButton/ListItemButton.js +10 -3
  28. package/esm/MenuItem/MenuItem.js +10 -3
  29. package/esm/Popover/Popover.js +1 -0
  30. package/esm/Radio/Radio.js +11 -3
  31. package/esm/StepLabel/StepLabel.js +5 -3
  32. package/esm/SvgIcon/SvgIcon.js +2 -2
  33. package/esm/Tooltip/Tooltip.js +3 -5
  34. package/esm/Unstable_TrapFocus/index.js +1 -1
  35. package/esm/locale/index.js +81 -1
  36. package/esm/styles/CssVarsProvider.js +3 -1
  37. package/esm/styles/excludeVariablesFromRoot.js +6 -0
  38. package/index.js +1 -1
  39. package/legacy/Button/Button.js +2 -4
  40. package/legacy/Checkbox/Checkbox.js +10 -2
  41. package/legacy/Chip/chipClasses.js +1 -1
  42. package/legacy/DialogContentText/DialogContentText.js +10 -2
  43. package/legacy/Fab/Fab.js +7 -2
  44. package/legacy/InputLabel/InputLabel.js +10 -2
  45. package/legacy/ListItemButton/ListItemButton.js +9 -2
  46. package/legacy/MenuItem/MenuItem.js +9 -2
  47. package/legacy/Popover/Popover.js +1 -0
  48. package/legacy/Radio/Radio.js +10 -2
  49. package/legacy/StepLabel/StepLabel.js +5 -4
  50. package/legacy/SvgIcon/SvgIcon.js +2 -2
  51. package/legacy/Tooltip/Tooltip.js +3 -5
  52. package/legacy/Unstable_TrapFocus/index.js +1 -1
  53. package/legacy/index.js +1 -1
  54. package/legacy/locale/index.js +224 -141
  55. package/legacy/styles/CssVarsProvider.js +3 -1
  56. package/legacy/styles/excludeVariablesFromRoot.js +12 -0
  57. package/locale/index.d.ts +1 -0
  58. package/locale/index.js +83 -2
  59. package/modern/Button/Button.js +3 -8
  60. package/modern/Checkbox/Checkbox.js +11 -3
  61. package/modern/Chip/chipClasses.js +1 -1
  62. package/modern/DialogContentText/DialogContentText.js +13 -3
  63. package/modern/Fab/Fab.js +5 -2
  64. package/modern/InputLabel/InputLabel.js +11 -3
  65. package/modern/ListItemButton/ListItemButton.js +10 -3
  66. package/modern/MenuItem/MenuItem.js +10 -3
  67. package/modern/Popover/Popover.js +1 -0
  68. package/modern/Radio/Radio.js +11 -3
  69. package/modern/StepLabel/StepLabel.js +5 -3
  70. package/modern/SvgIcon/SvgIcon.js +2 -2
  71. package/modern/Tooltip/Tooltip.js +3 -5
  72. package/modern/Unstable_TrapFocus/index.js +1 -1
  73. package/modern/index.js +1 -1
  74. package/modern/locale/index.js +81 -1
  75. package/modern/styles/CssVarsProvider.js +3 -1
  76. package/modern/styles/excludeVariablesFromRoot.js +6 -0
  77. package/package.json +5 -5
  78. package/styles/CssVarsProvider.js +4 -1
  79. package/styles/excludeVariablesFromRoot.d.ts +5 -0
  80. package/styles/excludeVariablesFromRoot.js +14 -0
  81. package/umd/material-ui.development.js +485 -431
  82. package/umd/material-ui.production.min.js +9 -9
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.10.6
1
+ /** @license MUI v5.10.8
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -7004,7 +7004,7 @@
7004
7004
  }
7005
7005
 
7006
7006
  const _excluded$2i = ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"],
7007
- _excluded2$d = ["theme"],
7007
+ _excluded2$c = ["theme"],
7008
7008
  _excluded3$1 = ["theme"];
7009
7009
 
7010
7010
  function isEmpty$2(obj) {
@@ -7145,7 +7145,7 @@
7145
7145
  let {
7146
7146
  theme: themeInput
7147
7147
  } = _ref,
7148
- other = _objectWithoutPropertiesLoose(_ref, _excluded2$d);
7148
+ other = _objectWithoutPropertiesLoose(_ref, _excluded2$c);
7149
7149
 
7150
7150
  return stylesArg(_extends({
7151
7151
  theme: isEmpty$2(themeInput) ? defaultTheme : themeInput
@@ -7463,7 +7463,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
7463
7463
 
7464
7464
  function getLuminance(color) {
7465
7465
  color = decomposeColor(color);
7466
- let rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;
7466
+ let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;
7467
7467
  rgb = rgb.map(val => {
7468
7468
  if (color.type !== 'color') {
7469
7469
  val /= 255; // normalized
@@ -7770,7 +7770,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
7770
7770
  function getInitColorSchemeScript$1(options) {
7771
7771
  const {
7772
7772
  enableColorScheme = true,
7773
- enableSystem = false,
7773
+ defaultMode = 'light',
7774
7774
  defaultLightColorScheme = 'light',
7775
7775
  defaultDarkColorScheme = 'dark',
7776
7776
  modeStorageKey = DEFAULT_MODE_STORAGE_KEY,
@@ -7782,10 +7782,10 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
7782
7782
  // eslint-disable-next-line react/no-danger
7783
7783
  dangerouslySetInnerHTML: {
7784
7784
  __html: `(function() { try {
7785
- var mode = localStorage.getItem('${modeStorageKey}');
7785
+ var mode = localStorage.getItem('${modeStorageKey}') || '${defaultMode}';
7786
7786
  var cssColorScheme = mode;
7787
7787
  var colorScheme = '';
7788
- if (mode === 'system' || (!mode && !!${enableSystem})) {
7788
+ if (mode === 'system') {
7789
7789
  // handle system mode
7790
7790
  var mql = window.matchMedia('(prefers-color-scheme: dark)');
7791
7791
  if (mql.matches) {
@@ -8064,7 +8064,8 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
8064
8064
  disableTransitionOnChange: designSystemTransitionOnChange = false,
8065
8065
  enableColorScheme: designSystemEnableColorScheme = true,
8066
8066
  shouldSkipGeneratingVar: designSystemShouldSkipGeneratingVar,
8067
- resolveTheme
8067
+ resolveTheme,
8068
+ excludeVariablesFromRoot
8068
8069
  } = options;
8069
8070
 
8070
8071
  if (!defaultTheme.colorSchemes || typeof designSystemColorScheme === 'string' && !defaultTheme.colorSchemes[designSystemColorScheme] || typeof designSystemColorScheme === 'object' && !defaultTheme.colorSchemes[designSystemColorScheme == null ? void 0 : designSystemColorScheme.light] || typeof designSystemColorScheme === 'object' && !defaultTheme.colorSchemes[designSystemColorScheme == null ? void 0 : designSystemColorScheme.dark]) {
@@ -8195,6 +8196,15 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
8195
8196
  })();
8196
8197
 
8197
8198
  if (key === resolvedDefaultColorScheme) {
8199
+ if (excludeVariablesFromRoot) {
8200
+ const excludedVariables = {};
8201
+ excludeVariablesFromRoot(cssVarPrefix).forEach(cssVar => {
8202
+ excludedVariables[cssVar] = css[cssVar];
8203
+ delete css[cssVar];
8204
+ });
8205
+ defaultColorSchemeStyleSheet[`[${attribute}="${key}"]`] = excludedVariables;
8206
+ }
8207
+
8198
8208
  defaultColorSchemeStyleSheet[`${colorSchemeSelector}, [${attribute}="${key}"]`] = css;
8199
8209
  } else {
8200
8210
  otherColorSchemesStyleSheet[`${colorSchemeSelector === ':root' ? '' : colorSchemeSelector}[${attribute}="${key}"]`] = css;
@@ -8932,7 +8942,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
8932
8942
  }
8933
8943
 
8934
8944
  const _excluded$2e = ["defaultProps", "mixins", "overrides", "palette", "props", "styleOverrides"],
8935
- _excluded2$c = ["type", "mode"];
8945
+ _excluded2$b = ["type", "mode"];
8936
8946
  function adaptV4Theme(inputTheme) {
8937
8947
  {
8938
8948
  console.warn(['MUI: adaptV4Theme() is deprecated.', 'Follow the upgrade guide on https://mui.com/r/migration-v4#theme.'].join('\n'));
@@ -8997,7 +9007,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
8997
9007
  type: typeInput,
8998
9008
  mode: modeInput
8999
9009
  } = palette,
9000
- paletteRest = _objectWithoutPropertiesLoose(palette, _excluded2$c);
9010
+ paletteRest = _objectWithoutPropertiesLoose(palette, _excluded2$b);
9001
9011
 
9002
9012
  const finalMode = modeInput || typeInput || 'light';
9003
9013
  theme.palette = _extends({
@@ -9228,7 +9238,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
9228
9238
  input = stripDiacritics(input);
9229
9239
  }
9230
9240
 
9231
- const filteredOptions = options.filter(option => {
9241
+ const filteredOptions = !input ? options : options.filter(option => {
9232
9242
  let candidate = (stringify || getOptionLabel)(option);
9233
9243
 
9234
9244
  if (ignoreCase) {
@@ -10596,6 +10606,363 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
10596
10606
  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);
10597
10607
  }
10598
10608
 
10609
+ const candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])'].join(',');
10610
+
10611
+ function getTabIndex(node) {
10612
+ const tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);
10613
+
10614
+ if (!Number.isNaN(tabindexAttr)) {
10615
+ return tabindexAttr;
10616
+ } // Browsers do not return `tabIndex` correctly for contentEditable nodes;
10617
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2
10618
+ // so if they don't have a tabindex attribute specifically set, assume it's 0.
10619
+ // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default
10620
+ // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,
10621
+ // yet they are still part of the regular tab order; in FF, they get a default
10622
+ // `tabIndex` of 0; since Chrome still puts those elements in the regular tab
10623
+ // order, consider their tab index to be 0.
10624
+
10625
+
10626
+ if (node.contentEditable === 'true' || (node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {
10627
+ return 0;
10628
+ }
10629
+
10630
+ return node.tabIndex;
10631
+ }
10632
+
10633
+ function isNonTabbableRadio(node) {
10634
+ if (node.tagName !== 'INPUT' || node.type !== 'radio') {
10635
+ return false;
10636
+ }
10637
+
10638
+ if (!node.name) {
10639
+ return false;
10640
+ }
10641
+
10642
+ const getRadio = selector => node.ownerDocument.querySelector(`input[type="radio"]${selector}`);
10643
+
10644
+ let roving = getRadio(`[name="${node.name}"]:checked`);
10645
+
10646
+ if (!roving) {
10647
+ roving = getRadio(`[name="${node.name}"]`);
10648
+ }
10649
+
10650
+ return roving !== node;
10651
+ }
10652
+
10653
+ function isNodeMatchingSelectorFocusable(node) {
10654
+ if (node.disabled || node.tagName === 'INPUT' && node.type === 'hidden' || isNonTabbableRadio(node)) {
10655
+ return false;
10656
+ }
10657
+
10658
+ return true;
10659
+ }
10660
+
10661
+ function defaultGetTabbable(root) {
10662
+ const regularTabNodes = [];
10663
+ const orderedTabNodes = [];
10664
+ Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {
10665
+ const nodeTabIndex = getTabIndex(node);
10666
+
10667
+ if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {
10668
+ return;
10669
+ }
10670
+
10671
+ if (nodeTabIndex === 0) {
10672
+ regularTabNodes.push(node);
10673
+ } else {
10674
+ orderedTabNodes.push({
10675
+ documentOrder: i,
10676
+ tabIndex: nodeTabIndex,
10677
+ node
10678
+ });
10679
+ }
10680
+ });
10681
+ return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map(a => a.node).concat(regularTabNodes);
10682
+ }
10683
+
10684
+ function defaultIsEnabled() {
10685
+ return true;
10686
+ }
10687
+ /**
10688
+ * Utility component that locks focus inside the component.
10689
+ */
10690
+
10691
+
10692
+ function FocusTrap(props) {
10693
+ const {
10694
+ children,
10695
+ disableAutoFocus = false,
10696
+ disableEnforceFocus = false,
10697
+ disableRestoreFocus = false,
10698
+ getTabbable = defaultGetTabbable,
10699
+ isEnabled = defaultIsEnabled,
10700
+ open
10701
+ } = props;
10702
+ const ignoreNextEnforceFocus = React__namespace.useRef();
10703
+ const sentinelStart = React__namespace.useRef(null);
10704
+ const sentinelEnd = React__namespace.useRef(null);
10705
+ const nodeToRestore = React__namespace.useRef(null);
10706
+ const reactFocusEventTarget = React__namespace.useRef(null); // This variable is useful when disableAutoFocus is true.
10707
+ // It waits for the active element to move into the component to activate.
10708
+
10709
+ const activated = React__namespace.useRef(false);
10710
+ const rootRef = React__namespace.useRef(null);
10711
+ const handleRef = useForkRef(children.ref, rootRef);
10712
+ const lastKeydown = React__namespace.useRef(null);
10713
+ React__namespace.useEffect(() => {
10714
+ // We might render an empty child.
10715
+ if (!open || !rootRef.current) {
10716
+ return;
10717
+ }
10718
+
10719
+ activated.current = !disableAutoFocus;
10720
+ }, [disableAutoFocus, open]);
10721
+ React__namespace.useEffect(() => {
10722
+ // We might render an empty child.
10723
+ if (!open || !rootRef.current) {
10724
+ return;
10725
+ }
10726
+
10727
+ const doc = ownerDocument(rootRef.current);
10728
+
10729
+ if (!rootRef.current.contains(doc.activeElement)) {
10730
+ if (!rootRef.current.hasAttribute('tabIndex')) {
10731
+ {
10732
+ console.error(['MUI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to "-1".'].join('\n'));
10733
+ }
10734
+
10735
+ rootRef.current.setAttribute('tabIndex', -1);
10736
+ }
10737
+
10738
+ if (activated.current) {
10739
+ rootRef.current.focus();
10740
+ }
10741
+ }
10742
+
10743
+ return () => {
10744
+ // restoreLastFocus()
10745
+ if (!disableRestoreFocus) {
10746
+ // In IE11 it is possible for document.activeElement to be null resulting
10747
+ // in nodeToRestore.current being null.
10748
+ // Not all elements in IE11 have a focus method.
10749
+ // Once IE11 support is dropped the focus() call can be unconditional.
10750
+ if (nodeToRestore.current && nodeToRestore.current.focus) {
10751
+ ignoreNextEnforceFocus.current = true;
10752
+ nodeToRestore.current.focus();
10753
+ }
10754
+
10755
+ nodeToRestore.current = null;
10756
+ }
10757
+ }; // Missing `disableRestoreFocus` which is fine.
10758
+ // We don't support changing that prop on an open FocusTrap
10759
+ // eslint-disable-next-line react-hooks/exhaustive-deps
10760
+ }, [open]);
10761
+ React__namespace.useEffect(() => {
10762
+ // We might render an empty child.
10763
+ if (!open || !rootRef.current) {
10764
+ return;
10765
+ }
10766
+
10767
+ const doc = ownerDocument(rootRef.current);
10768
+
10769
+ const contain = nativeEvent => {
10770
+ const {
10771
+ current: rootElement
10772
+ } = rootRef; // Cleanup functions are executed lazily in React 17.
10773
+ // Contain can be called between the component being unmounted and its cleanup function being run.
10774
+
10775
+ if (rootElement === null) {
10776
+ return;
10777
+ }
10778
+
10779
+ if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {
10780
+ ignoreNextEnforceFocus.current = false;
10781
+ return;
10782
+ }
10783
+
10784
+ if (!rootElement.contains(doc.activeElement)) {
10785
+ // if the focus event is not coming from inside the children's react tree, reset the refs
10786
+ if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {
10787
+ reactFocusEventTarget.current = null;
10788
+ } else if (reactFocusEventTarget.current !== null) {
10789
+ return;
10790
+ }
10791
+
10792
+ if (!activated.current) {
10793
+ return;
10794
+ }
10795
+
10796
+ let tabbable = [];
10797
+
10798
+ if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
10799
+ tabbable = getTabbable(rootRef.current);
10800
+ }
10801
+
10802
+ if (tabbable.length > 0) {
10803
+ var _lastKeydown$current, _lastKeydown$current2;
10804
+
10805
+ const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
10806
+ const focusNext = tabbable[0];
10807
+ const focusPrevious = tabbable[tabbable.length - 1];
10808
+
10809
+ if (isShiftTab) {
10810
+ focusPrevious.focus();
10811
+ } else {
10812
+ focusNext.focus();
10813
+ }
10814
+ } else {
10815
+ rootElement.focus();
10816
+ }
10817
+ }
10818
+ };
10819
+
10820
+ const loopFocus = nativeEvent => {
10821
+ lastKeydown.current = nativeEvent;
10822
+
10823
+ if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {
10824
+ return;
10825
+ } // Make sure the next tab starts from the right place.
10826
+ // doc.activeElement referes to the origin.
10827
+
10828
+
10829
+ if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {
10830
+ // We need to ignore the next contain as
10831
+ // it will try to move the focus back to the rootRef element.
10832
+ ignoreNextEnforceFocus.current = true;
10833
+ sentinelEnd.current.focus();
10834
+ }
10835
+ };
10836
+
10837
+ doc.addEventListener('focusin', contain);
10838
+ doc.addEventListener('keydown', loopFocus, true); // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area.
10839
+ // e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=559561.
10840
+ // Instead, we can look if the active element was restored on the BODY element.
10841
+ //
10842
+ // The whatwg spec defines how the browser should behave but does not explicitly mention any events:
10843
+ // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.
10844
+
10845
+ const interval = setInterval(() => {
10846
+ if (doc.activeElement.tagName === 'BODY') {
10847
+ contain();
10848
+ }
10849
+ }, 50);
10850
+ return () => {
10851
+ clearInterval(interval);
10852
+ doc.removeEventListener('focusin', contain);
10853
+ doc.removeEventListener('keydown', loopFocus, true);
10854
+ };
10855
+ }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);
10856
+
10857
+ const onFocus = event => {
10858
+ if (nodeToRestore.current === null) {
10859
+ nodeToRestore.current = event.relatedTarget;
10860
+ }
10861
+
10862
+ activated.current = true;
10863
+ reactFocusEventTarget.current = event.target;
10864
+ const childrenPropsHandler = children.props.onFocus;
10865
+
10866
+ if (childrenPropsHandler) {
10867
+ childrenPropsHandler(event);
10868
+ }
10869
+ };
10870
+
10871
+ const handleFocusSentinel = event => {
10872
+ if (nodeToRestore.current === null) {
10873
+ nodeToRestore.current = event.relatedTarget;
10874
+ }
10875
+
10876
+ activated.current = true;
10877
+ };
10878
+
10879
+ return /*#__PURE__*/jsxRuntime_2(React__namespace.Fragment, {
10880
+ children: [/*#__PURE__*/jsxRuntime_1("div", {
10881
+ tabIndex: open ? 0 : -1,
10882
+ onFocus: handleFocusSentinel,
10883
+ ref: sentinelStart,
10884
+ "data-testid": "sentinelStart"
10885
+ }), /*#__PURE__*/React__namespace.cloneElement(children, {
10886
+ ref: handleRef,
10887
+ onFocus
10888
+ }), /*#__PURE__*/jsxRuntime_1("div", {
10889
+ tabIndex: open ? 0 : -1,
10890
+ onFocus: handleFocusSentinel,
10891
+ ref: sentinelEnd,
10892
+ "data-testid": "sentinelEnd"
10893
+ })]
10894
+ });
10895
+ }
10896
+
10897
+ FocusTrap.propTypes
10898
+ /* remove-proptypes */
10899
+ = {
10900
+ // ----------------------------- Warning --------------------------------
10901
+ // | These PropTypes are generated from the TypeScript type definitions |
10902
+ // | To update them edit the d.ts file and run "yarn proptypes" |
10903
+ // ----------------------------------------------------------------------
10904
+
10905
+ /**
10906
+ * A single child content element.
10907
+ */
10908
+ children: elementAcceptingRef$1,
10909
+
10910
+ /**
10911
+ * If `true`, the focus trap will not automatically shift focus to itself when it opens, and
10912
+ * replace it to the last focused element when it closes.
10913
+ * This also works correctly with any focus trap children that have the `disableAutoFocus` prop.
10914
+ *
10915
+ * Generally this should never be set to `true` as it makes the focus trap less
10916
+ * accessible to assistive technologies, like screen readers.
10917
+ * @default false
10918
+ */
10919
+ disableAutoFocus: PropTypes.bool,
10920
+
10921
+ /**
10922
+ * If `true`, the focus trap will not prevent focus from leaving the focus trap while open.
10923
+ *
10924
+ * Generally this should never be set to `true` as it makes the focus trap less
10925
+ * accessible to assistive technologies, like screen readers.
10926
+ * @default false
10927
+ */
10928
+ disableEnforceFocus: PropTypes.bool,
10929
+
10930
+ /**
10931
+ * If `true`, the focus trap will not restore focus to previously focused element once
10932
+ * focus trap is hidden or unmounted.
10933
+ * @default false
10934
+ */
10935
+ disableRestoreFocus: PropTypes.bool,
10936
+
10937
+ /**
10938
+ * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.
10939
+ * For instance, you can provide the "tabbable" npm dependency.
10940
+ * @param {HTMLElement} root
10941
+ */
10942
+ getTabbable: PropTypes.func,
10943
+
10944
+ /**
10945
+ * This prop extends the `open` prop.
10946
+ * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.
10947
+ * This prop should be memoized.
10948
+ * It can be used to support multiple focus trap mounted at the same time.
10949
+ * @default function defaultIsEnabled() {
10950
+ * return true;
10951
+ * }
10952
+ */
10953
+ isEnabled: PropTypes.func,
10954
+
10955
+ /**
10956
+ * If `true`, focus is locked.
10957
+ */
10958
+ open: PropTypes.bool.isRequired
10959
+ } ;
10960
+
10961
+ {
10962
+ // eslint-disable-next-line
10963
+ FocusTrap['propTypes' + ''] = exactProp(FocusTrap.propTypes);
10964
+ }
10965
+
10599
10966
  var top = 'top';
10600
10967
  var bottom = 'bottom';
10601
10968
  var right = 'right';
@@ -12661,7 +13028,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
12661
13028
  generateUtilityClasses('MuiPopperUnstyled', ['root']);
12662
13029
 
12663
13030
  const _excluded$2b = ["anchorEl", "children", "component", "components", "componentsProps", "direction", "disablePortal", "modifiers", "open", "ownerState", "placement", "popperOptions", "popperRef", "TransitionProps"],
12664
- _excluded2$b = ["anchorEl", "children", "container", "direction", "disablePortal", "keepMounted", "modifiers", "open", "placement", "popperOptions", "popperRef", "style", "transition"];
13031
+ _excluded2$a = ["anchorEl", "children", "container", "direction", "disablePortal", "keepMounted", "modifiers", "open", "placement", "popperOptions", "popperRef", "style", "transition"];
12665
13032
 
12666
13033
  function flipPlacement(placement, direction) {
12667
13034
  if (direction === 'ltr') {
@@ -12850,7 +13217,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
12850
13217
  style,
12851
13218
  transition = false
12852
13219
  } = props,
12853
- other = _objectWithoutPropertiesLoose(props, _excluded2$b);
13220
+ other = _objectWithoutPropertiesLoose(props, _excluded2$a);
12854
13221
 
12855
13222
  const [exited, setExited] = React__namespace.useState(true);
12856
13223
 
@@ -13292,363 +13659,6 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
13292
13659
 
13293
13660
  }
13294
13661
 
13295
- const candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])'].join(',');
13296
-
13297
- function getTabIndex(node) {
13298
- const tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);
13299
-
13300
- if (!Number.isNaN(tabindexAttr)) {
13301
- return tabindexAttr;
13302
- } // Browsers do not return `tabIndex` correctly for contentEditable nodes;
13303
- // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2
13304
- // so if they don't have a tabindex attribute specifically set, assume it's 0.
13305
- // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default
13306
- // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,
13307
- // yet they are still part of the regular tab order; in FF, they get a default
13308
- // `tabIndex` of 0; since Chrome still puts those elements in the regular tab
13309
- // order, consider their tab index to be 0.
13310
-
13311
-
13312
- if (node.contentEditable === 'true' || (node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {
13313
- return 0;
13314
- }
13315
-
13316
- return node.tabIndex;
13317
- }
13318
-
13319
- function isNonTabbableRadio(node) {
13320
- if (node.tagName !== 'INPUT' || node.type !== 'radio') {
13321
- return false;
13322
- }
13323
-
13324
- if (!node.name) {
13325
- return false;
13326
- }
13327
-
13328
- const getRadio = selector => node.ownerDocument.querySelector(`input[type="radio"]${selector}`);
13329
-
13330
- let roving = getRadio(`[name="${node.name}"]:checked`);
13331
-
13332
- if (!roving) {
13333
- roving = getRadio(`[name="${node.name}"]`);
13334
- }
13335
-
13336
- return roving !== node;
13337
- }
13338
-
13339
- function isNodeMatchingSelectorFocusable(node) {
13340
- if (node.disabled || node.tagName === 'INPUT' && node.type === 'hidden' || isNonTabbableRadio(node)) {
13341
- return false;
13342
- }
13343
-
13344
- return true;
13345
- }
13346
-
13347
- function defaultGetTabbable(root) {
13348
- const regularTabNodes = [];
13349
- const orderedTabNodes = [];
13350
- Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {
13351
- const nodeTabIndex = getTabIndex(node);
13352
-
13353
- if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {
13354
- return;
13355
- }
13356
-
13357
- if (nodeTabIndex === 0) {
13358
- regularTabNodes.push(node);
13359
- } else {
13360
- orderedTabNodes.push({
13361
- documentOrder: i,
13362
- tabIndex: nodeTabIndex,
13363
- node
13364
- });
13365
- }
13366
- });
13367
- return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map(a => a.node).concat(regularTabNodes);
13368
- }
13369
-
13370
- function defaultIsEnabled() {
13371
- return true;
13372
- }
13373
- /**
13374
- * Utility component that locks focus inside the component.
13375
- */
13376
-
13377
-
13378
- function TrapFocus(props) {
13379
- const {
13380
- children,
13381
- disableAutoFocus = false,
13382
- disableEnforceFocus = false,
13383
- disableRestoreFocus = false,
13384
- getTabbable = defaultGetTabbable,
13385
- isEnabled = defaultIsEnabled,
13386
- open
13387
- } = props;
13388
- const ignoreNextEnforceFocus = React__namespace.useRef();
13389
- const sentinelStart = React__namespace.useRef(null);
13390
- const sentinelEnd = React__namespace.useRef(null);
13391
- const nodeToRestore = React__namespace.useRef(null);
13392
- const reactFocusEventTarget = React__namespace.useRef(null); // This variable is useful when disableAutoFocus is true.
13393
- // It waits for the active element to move into the component to activate.
13394
-
13395
- const activated = React__namespace.useRef(false);
13396
- const rootRef = React__namespace.useRef(null);
13397
- const handleRef = useForkRef(children.ref, rootRef);
13398
- const lastKeydown = React__namespace.useRef(null);
13399
- React__namespace.useEffect(() => {
13400
- // We might render an empty child.
13401
- if (!open || !rootRef.current) {
13402
- return;
13403
- }
13404
-
13405
- activated.current = !disableAutoFocus;
13406
- }, [disableAutoFocus, open]);
13407
- React__namespace.useEffect(() => {
13408
- // We might render an empty child.
13409
- if (!open || !rootRef.current) {
13410
- return;
13411
- }
13412
-
13413
- const doc = ownerDocument(rootRef.current);
13414
-
13415
- if (!rootRef.current.contains(doc.activeElement)) {
13416
- if (!rootRef.current.hasAttribute('tabIndex')) {
13417
- {
13418
- console.error(['MUI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to "-1".'].join('\n'));
13419
- }
13420
-
13421
- rootRef.current.setAttribute('tabIndex', -1);
13422
- }
13423
-
13424
- if (activated.current) {
13425
- rootRef.current.focus();
13426
- }
13427
- }
13428
-
13429
- return () => {
13430
- // restoreLastFocus()
13431
- if (!disableRestoreFocus) {
13432
- // In IE11 it is possible for document.activeElement to be null resulting
13433
- // in nodeToRestore.current being null.
13434
- // Not all elements in IE11 have a focus method.
13435
- // Once IE11 support is dropped the focus() call can be unconditional.
13436
- if (nodeToRestore.current && nodeToRestore.current.focus) {
13437
- ignoreNextEnforceFocus.current = true;
13438
- nodeToRestore.current.focus();
13439
- }
13440
-
13441
- nodeToRestore.current = null;
13442
- }
13443
- }; // Missing `disableRestoreFocus` which is fine.
13444
- // We don't support changing that prop on an open TrapFocus
13445
- // eslint-disable-next-line react-hooks/exhaustive-deps
13446
- }, [open]);
13447
- React__namespace.useEffect(() => {
13448
- // We might render an empty child.
13449
- if (!open || !rootRef.current) {
13450
- return;
13451
- }
13452
-
13453
- const doc = ownerDocument(rootRef.current);
13454
-
13455
- const contain = nativeEvent => {
13456
- const {
13457
- current: rootElement
13458
- } = rootRef; // Cleanup functions are executed lazily in React 17.
13459
- // Contain can be called between the component being unmounted and its cleanup function being run.
13460
-
13461
- if (rootElement === null) {
13462
- return;
13463
- }
13464
-
13465
- if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {
13466
- ignoreNextEnforceFocus.current = false;
13467
- return;
13468
- }
13469
-
13470
- if (!rootElement.contains(doc.activeElement)) {
13471
- // if the focus event is not coming from inside the children's react tree, reset the refs
13472
- if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {
13473
- reactFocusEventTarget.current = null;
13474
- } else if (reactFocusEventTarget.current !== null) {
13475
- return;
13476
- }
13477
-
13478
- if (!activated.current) {
13479
- return;
13480
- }
13481
-
13482
- let tabbable = [];
13483
-
13484
- if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
13485
- tabbable = getTabbable(rootRef.current);
13486
- }
13487
-
13488
- if (tabbable.length > 0) {
13489
- var _lastKeydown$current, _lastKeydown$current2;
13490
-
13491
- const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
13492
- const focusNext = tabbable[0];
13493
- const focusPrevious = tabbable[tabbable.length - 1];
13494
-
13495
- if (isShiftTab) {
13496
- focusPrevious.focus();
13497
- } else {
13498
- focusNext.focus();
13499
- }
13500
- } else {
13501
- rootElement.focus();
13502
- }
13503
- }
13504
- };
13505
-
13506
- const loopFocus = nativeEvent => {
13507
- lastKeydown.current = nativeEvent;
13508
-
13509
- if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {
13510
- return;
13511
- } // Make sure the next tab starts from the right place.
13512
- // doc.activeElement referes to the origin.
13513
-
13514
-
13515
- if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {
13516
- // We need to ignore the next contain as
13517
- // it will try to move the focus back to the rootRef element.
13518
- ignoreNextEnforceFocus.current = true;
13519
- sentinelEnd.current.focus();
13520
- }
13521
- };
13522
-
13523
- doc.addEventListener('focusin', contain);
13524
- doc.addEventListener('keydown', loopFocus, true); // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area.
13525
- // e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=559561.
13526
- // Instead, we can look if the active element was restored on the BODY element.
13527
- //
13528
- // The whatwg spec defines how the browser should behave but does not explicitly mention any events:
13529
- // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.
13530
-
13531
- const interval = setInterval(() => {
13532
- if (doc.activeElement.tagName === 'BODY') {
13533
- contain();
13534
- }
13535
- }, 50);
13536
- return () => {
13537
- clearInterval(interval);
13538
- doc.removeEventListener('focusin', contain);
13539
- doc.removeEventListener('keydown', loopFocus, true);
13540
- };
13541
- }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);
13542
-
13543
- const onFocus = event => {
13544
- if (nodeToRestore.current === null) {
13545
- nodeToRestore.current = event.relatedTarget;
13546
- }
13547
-
13548
- activated.current = true;
13549
- reactFocusEventTarget.current = event.target;
13550
- const childrenPropsHandler = children.props.onFocus;
13551
-
13552
- if (childrenPropsHandler) {
13553
- childrenPropsHandler(event);
13554
- }
13555
- };
13556
-
13557
- const handleFocusSentinel = event => {
13558
- if (nodeToRestore.current === null) {
13559
- nodeToRestore.current = event.relatedTarget;
13560
- }
13561
-
13562
- activated.current = true;
13563
- };
13564
-
13565
- return /*#__PURE__*/jsxRuntime_2(React__namespace.Fragment, {
13566
- children: [/*#__PURE__*/jsxRuntime_1("div", {
13567
- tabIndex: open ? 0 : -1,
13568
- onFocus: handleFocusSentinel,
13569
- ref: sentinelStart,
13570
- "data-testid": "sentinelStart"
13571
- }), /*#__PURE__*/React__namespace.cloneElement(children, {
13572
- ref: handleRef,
13573
- onFocus
13574
- }), /*#__PURE__*/jsxRuntime_1("div", {
13575
- tabIndex: open ? 0 : -1,
13576
- onFocus: handleFocusSentinel,
13577
- ref: sentinelEnd,
13578
- "data-testid": "sentinelEnd"
13579
- })]
13580
- });
13581
- }
13582
-
13583
- TrapFocus.propTypes
13584
- /* remove-proptypes */
13585
- = {
13586
- // ----------------------------- Warning --------------------------------
13587
- // | These PropTypes are generated from the TypeScript type definitions |
13588
- // | To update them edit the d.ts file and run "yarn proptypes" |
13589
- // ----------------------------------------------------------------------
13590
-
13591
- /**
13592
- * A single child content element.
13593
- */
13594
- children: elementAcceptingRef$1,
13595
-
13596
- /**
13597
- * If `true`, the trap focus will not automatically shift focus to itself when it opens, and
13598
- * replace it to the last focused element when it closes.
13599
- * This also works correctly with any trap focus children that have the `disableAutoFocus` prop.
13600
- *
13601
- * Generally this should never be set to `true` as it makes the trap focus less
13602
- * accessible to assistive technologies, like screen readers.
13603
- * @default false
13604
- */
13605
- disableAutoFocus: PropTypes.bool,
13606
-
13607
- /**
13608
- * If `true`, the trap focus will not prevent focus from leaving the trap focus while open.
13609
- *
13610
- * Generally this should never be set to `true` as it makes the trap focus less
13611
- * accessible to assistive technologies, like screen readers.
13612
- * @default false
13613
- */
13614
- disableEnforceFocus: PropTypes.bool,
13615
-
13616
- /**
13617
- * If `true`, the trap focus will not restore focus to previously focused element once
13618
- * trap focus is hidden or unmounted.
13619
- * @default false
13620
- */
13621
- disableRestoreFocus: PropTypes.bool,
13622
-
13623
- /**
13624
- * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.
13625
- * For instance, you can provide the "tabbable" npm dependency.
13626
- * @param {HTMLElement} root
13627
- */
13628
- getTabbable: PropTypes.func,
13629
-
13630
- /**
13631
- * This prop extends the `open` prop.
13632
- * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.
13633
- * This prop should be memoized.
13634
- * It can be used to support multiple trap focus mounted at the same time.
13635
- * @default function defaultIsEnabled() {
13636
- * return true;
13637
- * }
13638
- */
13639
- isEnabled: PropTypes.func,
13640
-
13641
- /**
13642
- * If `true`, focus is locked.
13643
- */
13644
- open: PropTypes.bool.isRequired
13645
- } ;
13646
-
13647
- {
13648
- // eslint-disable-next-line
13649
- TrapFocus['propTypes' + ''] = exactProp(TrapFocus.propTypes);
13650
- }
13651
-
13652
13662
  function getModalUtilityClass(slot) {
13653
13663
  return generateUtilityClass('MuiModal', slot);
13654
13664
  }
@@ -13910,7 +13920,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
13910
13920
  container: container,
13911
13921
  disablePortal: disablePortal,
13912
13922
  children: /*#__PURE__*/jsxRuntime_2(Root, _extends({}, rootProps, {
13913
- children: [!hideBackdrop && BackdropComponent ? /*#__PURE__*/jsxRuntime_1(BackdropComponent, _extends({}, backdropProps)) : null, /*#__PURE__*/jsxRuntime_1(TrapFocus, {
13923
+ children: [!hideBackdrop && BackdropComponent ? /*#__PURE__*/jsxRuntime_1(BackdropComponent, _extends({}, backdropProps)) : null, /*#__PURE__*/jsxRuntime_1(FocusTrap, {
13914
13924
  disableEnforceFocus: disableEnforceFocus,
13915
13925
  disableAutoFocus: disableAutoFocus,
13916
13926
  disableRestoreFocus: disableRestoreFocus,
@@ -14524,8 +14534,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14524
14534
 
14525
14535
  const getFingerNewValue = ({
14526
14536
  finger,
14527
- move = false,
14528
- values: values2
14537
+ move = false
14529
14538
  }) => {
14530
14539
  const {
14531
14540
  current: slider
@@ -14563,19 +14572,19 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14563
14572
 
14564
14573
  if (range) {
14565
14574
  if (!move) {
14566
- activeIndex = findClosest(values2, newValue);
14575
+ activeIndex = findClosest(values, newValue);
14567
14576
  } else {
14568
14577
  activeIndex = previousIndex.current;
14569
14578
  } // Bound the new value to the thumb's neighbours.
14570
14579
 
14571
14580
 
14572
14581
  if (disableSwap) {
14573
- newValue = clamp$2(newValue, values2[activeIndex - 1] || -Infinity, values2[activeIndex + 1] || Infinity);
14582
+ newValue = clamp$2(newValue, values[activeIndex - 1] || -Infinity, values[activeIndex + 1] || Infinity);
14574
14583
  }
14575
14584
 
14576
14585
  const previousValue = newValue;
14577
14586
  newValue = setValueIndex({
14578
- values: values2,
14587
+ values,
14579
14588
  newValue,
14580
14589
  index: activeIndex
14581
14590
  }); // Potentially swap the index if needed.
@@ -14613,8 +14622,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14613
14622
  activeIndex
14614
14623
  } = getFingerNewValue({
14615
14624
  finger,
14616
- move: true,
14617
- values
14625
+ move: true
14618
14626
  });
14619
14627
  focusThumb({
14620
14628
  sliderRef,
@@ -14627,7 +14635,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14627
14635
  setDragging(true);
14628
14636
  }
14629
14637
 
14630
- if (handleChange) {
14638
+ if (handleChange && newValue !== valueDerived) {
14631
14639
  handleChange(nativeEvent, newValue, activeIndex);
14632
14640
  }
14633
14641
  });
@@ -14643,8 +14651,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14643
14651
  newValue
14644
14652
  } = getFingerNewValue({
14645
14653
  finger,
14646
- move: true,
14647
- values
14654
+ move: true
14648
14655
  });
14649
14656
  setActive(-1);
14650
14657
 
@@ -14684,8 +14691,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14684
14691
  newValue,
14685
14692
  activeIndex
14686
14693
  } = getFingerNewValue({
14687
- finger,
14688
- values
14694
+ finger
14689
14695
  });
14690
14696
  focusThumb({
14691
14697
  sliderRef,
@@ -14759,8 +14765,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14759
14765
  newValue,
14760
14766
  activeIndex
14761
14767
  } = getFingerNewValue({
14762
- finger,
14763
- values
14768
+ finger
14764
14769
  });
14765
14770
  focusThumb({
14766
14771
  sliderRef,
@@ -14930,7 +14935,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14930
14935
  componentsProps = {}
14931
14936
  } = props,
14932
14937
  other = _objectWithoutPropertiesLoose(props, _excluded$29); // all props with defaults
14933
- // consider extracting to hook an reusing the lint rule for the varints
14938
+ // consider extracting to hook an reusing the lint rule for the variants
14934
14939
 
14935
14940
 
14936
14941
  const ownerState = _extends({}, props, {
@@ -15059,7 +15064,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
15059
15064
  className: clsx(classes.markLabel, markLabelProps.className, markActive && classes.markLabelActive),
15060
15065
  children: mark.label
15061
15066
  })) : null]
15062
- }, mark.value);
15067
+ }, index);
15063
15068
  }), values.map((value, index) => {
15064
15069
  const percent = valueToPercent(value, min, max);
15065
15070
  const style = axisProps[axis].offset(percent);
@@ -15503,8 +15508,6 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
15503
15508
  // ResizeObserver's handler that runs because of the change in the layout is trying to
15504
15509
  // access a dom node that is no longer there (as the fallback component is being shown instead).
15505
15510
  // See https://github.com/mui/material-ui/issues/32640
15506
- // TODO: Add tests that will ensure the component is not failing when
15507
- // replaced by Suspense with a fallback, once React is updated to version 18
15508
15511
 
15509
15512
  if (inputRef.current) {
15510
15513
  syncHeightWithFlushSycn();
@@ -16677,7 +16680,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
16677
16680
  var Paper$1 = Paper;
16678
16681
 
16679
16682
  const _excluded$22 = ["colorSchemes", "cssVarPrefix"],
16680
- _excluded2$a = ["palette"];
16683
+ _excluded2$9 = ["palette"];
16681
16684
  const defaultDarkOverlays = [...Array(25)].map((_, index) => {
16682
16685
  if (index === 0) {
16683
16686
  return undefined;
@@ -16717,7 +16720,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
16717
16720
  {
16718
16721
  palette: lightPalette
16719
16722
  } = _createThemeWithoutVa,
16720
- muiTheme = _objectWithoutPropertiesLoose(_createThemeWithoutVa, _excluded2$a);
16723
+ muiTheme = _objectWithoutPropertiesLoose(_createThemeWithoutVa, _excluded2$9);
16721
16724
 
16722
16725
  const {
16723
16726
  palette: darkPalette
@@ -16935,6 +16938,13 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
16935
16938
  return theme;
16936
16939
  }
16937
16940
 
16941
+ /**
16942
+ * @internal These variables should not appear in the :root stylesheet when the `defaultMode="dark"`
16943
+ */
16944
+ const excludeVariablesFromRoot = cssVarPrefix => [...[...Array(24)].map((_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index + 1}`), `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkBg`, `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkColor`];
16945
+
16946
+ var excludeVariablesFromRoot$1 = excludeVariablesFromRoot;
16947
+
16938
16948
  const shouldSkipGeneratingVar = keys => {
16939
16949
  var _keys$;
16940
16950
 
@@ -16962,7 +16972,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
16962
16972
 
16963
16973
  return newTheme;
16964
16974
  },
16965
- shouldSkipGeneratingVar
16975
+ shouldSkipGeneratingVar,
16976
+ excludeVariablesFromRoot: excludeVariablesFromRoot$1
16966
16977
  });
16967
16978
 
16968
16979
  function getSvgIconUtilityClass(slot) {
@@ -17014,7 +17025,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
17014
17025
  inherit: 'inherit',
17015
17026
  small: ((_theme$typography = theme.typography) == null ? void 0 : (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',
17016
17027
  medium: ((_theme$typography2 = theme.typography) == null ? void 0 : (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',
17017
- large: ((_theme$typography3 = theme.typography) == null ? void 0 : (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875'
17028
+ large: ((_theme$typography3 = theme.typography) == null ? void 0 : (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'
17018
17029
  }[ownerState.fontSize],
17019
17030
  // TODO v5 deprecate, v6 remove for sx
17020
17031
  color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null ? void 0 : (_palette$ownerState$c2 = _palette[ownerState.color]) == null ? void 0 : _palette$ownerState$c2.main) != null ? _palette$ownerState$c : {
@@ -17062,13 +17073,13 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
17062
17073
  return /*#__PURE__*/jsxRuntime_2(SvgIconRoot, _extends({
17063
17074
  as: component,
17064
17075
  className: clsx(classes.root, className),
17065
- ownerState: ownerState,
17066
17076
  focusable: "false",
17067
17077
  color: htmlColor,
17068
17078
  "aria-hidden": titleAccess ? undefined : true,
17069
17079
  role: titleAccess ? 'img' : undefined,
17070
17080
  ref: ref
17071
17081
  }, more, other, {
17082
+ ownerState: ownerState,
17072
17083
  children: [children, titleAccess ? /*#__PURE__*/jsxRuntime_1("title", {
17073
17084
  children: titleAccess
17074
17085
  }) : null]
@@ -21547,7 +21558,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
21547
21558
  function getChipUtilityClass(slot) {
21548
21559
  return generateUtilityClass('MuiChip', slot);
21549
21560
  }
21550
- const chipClasses = generateUtilityClasses('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorPrimary', 'colorSecondary', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'filledPrimary', 'filledSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'deleteIconFilledColorPrimary', 'deleteIconFilledColorSecondary', 'focusVisible']);
21561
+ const chipClasses = generateUtilityClasses('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'filledPrimary', 'filledSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'deleteIconFilledColorPrimary', 'deleteIconFilledColorSecondary', 'focusVisible']);
21551
21562
  var chipClasses$1 = chipClasses;
21552
21563
 
21553
21564
  const _excluded$1P = ["avatar", "className", "clickable", "color", "component", "deleteIcon", "disabled", "icon", "label", "onClick", "onDelete", "onKeyDown", "onKeyUp", "size", "variant"];
@@ -25859,8 +25870,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
25859
25870
 
25860
25871
  var ButtonGroupContext$1 = ButtonGroupContext;
25861
25872
 
25862
- const _excluded$1E = ["children", "color", "component", "className", "disabled", "disableElevation", "disableFocusRipple", "endIcon", "focusVisibleClassName", "fullWidth", "size", "startIcon", "type", "variant"],
25863
- _excluded2$9 = ["root"];
25873
+ const _excluded$1E = ["children", "color", "component", "className", "disabled", "disableElevation", "disableFocusRipple", "endIcon", "focusVisibleClassName", "fullWidth", "size", "startIcon", "type", "variant"];
25864
25874
 
25865
25875
  const useUtilityClasses$1n = ownerState => {
25866
25876
  const {
@@ -26104,11 +26114,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
26104
26114
  variant
26105
26115
  });
26106
26116
 
26107
- const _useUtilityClasses = useUtilityClasses$1n(ownerState),
26108
- {
26109
- root: classesRoot
26110
- } = _useUtilityClasses,
26111
- classes = _objectWithoutPropertiesLoose(_useUtilityClasses, _excluded2$9);
26117
+ const classes = useUtilityClasses$1n(ownerState);
26112
26118
 
26113
26119
  const startIcon = startIconProp && /*#__PURE__*/jsxRuntime_1(ButtonStartIcon, {
26114
26120
  className: classes.startIcon,
@@ -26124,7 +26130,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
26124
26130
 
26125
26131
  return /*#__PURE__*/jsxRuntime_2(ButtonRoot, _extends({
26126
26132
  ownerState: ownerState,
26127
- className: clsx(contextProps.className, classesRoot, className),
26133
+ className: clsx(contextProps.className, classes.root, className),
26128
26134
  component: component,
26129
26135
  disabled: disabled,
26130
26136
  focusRipple: !disableFocusRipple,
@@ -27612,7 +27618,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
27612
27618
  const checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);
27613
27619
  var checkboxClasses$1 = checkboxClasses;
27614
27620
 
27615
- const _excluded$1v = ["checkedIcon", "color", "icon", "indeterminate", "indeterminateIcon", "inputProps", "size"];
27621
+ const _excluded$1v = ["checkedIcon", "color", "icon", "indeterminate", "indeterminateIcon", "inputProps", "size", "className"];
27616
27622
 
27617
27623
  const useUtilityClasses$1e = ownerState => {
27618
27624
  const {
@@ -27680,7 +27686,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
27680
27686
  indeterminate = false,
27681
27687
  indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,
27682
27688
  inputProps,
27683
- size = 'medium'
27689
+ size = 'medium',
27690
+ className
27684
27691
  } = props,
27685
27692
  other = _objectWithoutPropertiesLoose(props, _excluded$1v);
27686
27693
 
@@ -27706,7 +27713,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
27706
27713
  fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size
27707
27714
  }),
27708
27715
  ownerState: ownerState,
27709
- ref: ref
27716
+ ref: ref,
27717
+ className: clsx(classes.root, className)
27710
27718
  }, other, {
27711
27719
  classes: classes
27712
27720
  }));
@@ -27735,6 +27743,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
27735
27743
  */
27736
27744
  classes: PropTypes.object,
27737
27745
 
27746
+ /**
27747
+ * @ignore
27748
+ */
27749
+ className: PropTypes.string,
27750
+
27738
27751
  /**
27739
27752
  * The color of the component.
27740
27753
  * It supports both default and custom theme colors, which can be added as shown in the
@@ -29233,7 +29246,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
29233
29246
  const dialogContentTextClasses = generateUtilityClasses('MuiDialogContentText', ['root']);
29234
29247
  var dialogContentTextClasses$1 = dialogContentTextClasses;
29235
29248
 
29236
- const _excluded$1p = ["children"];
29249
+ const _excluded$1p = ["children", "className"];
29237
29250
 
29238
29251
  const useUtilityClasses$19 = ownerState => {
29239
29252
  const {
@@ -29258,7 +29271,10 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
29258
29271
  name: 'MuiDialogContentText'
29259
29272
  });
29260
29273
 
29261
- const ownerState = _objectWithoutPropertiesLoose(props, _excluded$1p);
29274
+ const {
29275
+ className
29276
+ } = props,
29277
+ ownerState = _objectWithoutPropertiesLoose(props, _excluded$1p);
29262
29278
 
29263
29279
  const classes = useUtilityClasses$19(ownerState);
29264
29280
  return /*#__PURE__*/jsxRuntime_1(DialogContentTextRoot, _extends({
@@ -29266,7 +29282,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
29266
29282
  variant: "body1",
29267
29283
  color: "text.secondary",
29268
29284
  ref: ref,
29269
- ownerState: ownerState
29285
+ ownerState: ownerState,
29286
+ className: clsx(classes.root, className)
29270
29287
  }, props, {
29271
29288
  classes: classes
29272
29289
  }));
@@ -29289,6 +29306,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
29289
29306
  */
29290
29307
  classes: PropTypes.object,
29291
29308
 
29309
+ /**
29310
+ * @ignore
29311
+ */
29312
+ className: PropTypes.string,
29313
+
29292
29314
  /**
29293
29315
  * The system prop that allows defining system overrides as well as additional CSS styles.
29294
29316
  */
@@ -30343,12 +30365,14 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
30343
30365
  const slots = {
30344
30366
  root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' ? 'colorInherit' : color]
30345
30367
  };
30346
- return composeClasses(slots, getFabUtilityClass, classes);
30368
+ const composedClasses = composeClasses(slots, getFabUtilityClass, classes);
30369
+ return _extends({}, classes, composedClasses);
30347
30370
  };
30348
30371
 
30349
30372
  const FabRoot = styled$1(ButtonBase$1, {
30350
30373
  name: 'MuiFab',
30351
30374
  slot: 'Root',
30375
+ shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',
30352
30376
  overridesResolver: (props, styles) => {
30353
30377
  const {
30354
30378
  ownerState
@@ -30474,6 +30498,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
30474
30498
  ownerState: ownerState,
30475
30499
  ref: ref
30476
30500
  }, other, {
30501
+ classes: classes,
30477
30502
  children: children
30478
30503
  }));
30479
30504
  });
@@ -34953,7 +34978,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
34953
34978
  const inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);
34954
34979
  var inputLabelClasses$1 = inputLabelClasses;
34955
34980
 
34956
- const _excluded$12 = ["disableAnimation", "margin", "shrink", "variant"];
34981
+ const _excluded$12 = ["disableAnimation", "margin", "shrink", "variant", "className"];
34957
34982
 
34958
34983
  const useUtilityClasses$S = ownerState => {
34959
34984
  const {
@@ -35053,7 +35078,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
35053
35078
 
35054
35079
  const {
35055
35080
  disableAnimation = false,
35056
- shrink: shrinkProp
35081
+ shrink: shrinkProp,
35082
+ className
35057
35083
  } = props,
35058
35084
  other = _objectWithoutPropertiesLoose(props, _excluded$12);
35059
35085
 
@@ -35083,7 +35109,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
35083
35109
  return /*#__PURE__*/jsxRuntime_1(InputLabelRoot, _extends({
35084
35110
  "data-shrink": shrink,
35085
35111
  ownerState: ownerState,
35086
- ref: ref
35112
+ ref: ref,
35113
+ className: clsx(classes.root, className)
35087
35114
  }, other, {
35088
35115
  classes: classes
35089
35116
  }));
@@ -35106,6 +35133,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
35106
35133
  */
35107
35134
  classes: PropTypes.object,
35108
35135
 
35136
+ /**
35137
+ * @ignore
35138
+ */
35139
+ className: PropTypes.string,
35140
+
35109
35141
  /**
35110
35142
  * The color of the component.
35111
35143
  * It supports both default and custom theme colors, which can be added as shown in the
@@ -35959,7 +35991,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
35959
35991
  const listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);
35960
35992
  var listItemButtonClasses$1 = listItemButtonClasses;
35961
35993
 
35962
- const _excluded$_ = ["alignItems", "autoFocus", "component", "children", "dense", "disableGutters", "divider", "focusVisibleClassName", "selected"];
35994
+ const _excluded$_ = ["alignItems", "autoFocus", "component", "children", "dense", "disableGutters", "divider", "focusVisibleClassName", "selected", "className"];
35963
35995
  const overridesResolver$3 = (props, styles) => {
35964
35996
  const {
35965
35997
  ownerState
@@ -36061,7 +36093,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
36061
36093
  disableGutters = false,
36062
36094
  divider = false,
36063
36095
  focusVisibleClassName,
36064
- selected = false
36096
+ selected = false,
36097
+ className
36065
36098
  } = props,
36066
36099
  other = _objectWithoutPropertiesLoose(props, _excluded$_);
36067
36100
 
@@ -36099,7 +36132,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
36099
36132
  href: other.href || other.to,
36100
36133
  component: (other.href || other.to) && component === 'div' ? 'a' : component,
36101
36134
  focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),
36102
- ownerState: ownerState
36135
+ ownerState: ownerState,
36136
+ className: clsx(classes.root, className)
36103
36137
  }, other, {
36104
36138
  classes: classes,
36105
36139
  children: children
@@ -36138,6 +36172,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
36138
36172
  */
36139
36173
  classes: PropTypes.object,
36140
36174
 
36175
+ /**
36176
+ * @ignore
36177
+ */
36178
+ className: PropTypes.string,
36179
+
36141
36180
  /**
36142
36181
  * The component used for the root node.
36143
36182
  * Either a string to use a HTML element or a component.
@@ -37683,6 +37722,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
37683
37722
  }, PaperProps, {
37684
37723
  ref: handlePaperRef,
37685
37724
  className: clsx(classes.paper, PaperProps.className),
37725
+ ownerState: ownerState,
37686
37726
  children: children
37687
37727
  }))
37688
37728
  }))
@@ -38156,7 +38196,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
38156
38196
  const menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);
38157
38197
  var menuItemClasses$1 = menuItemClasses;
38158
38198
 
38159
- const _excluded$R = ["autoFocus", "component", "dense", "divider", "disableGutters", "focusVisibleClassName", "role", "tabIndex"];
38199
+ const _excluded$R = ["autoFocus", "component", "dense", "divider", "disableGutters", "focusVisibleClassName", "role", "tabIndex", "className"];
38160
38200
  const overridesResolver$1 = (props, styles) => {
38161
38201
  const {
38162
38202
  ownerState
@@ -38278,7 +38318,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
38278
38318
  disableGutters = false,
38279
38319
  focusVisibleClassName,
38280
38320
  role = 'menuitem',
38281
- tabIndex: tabIndexProp
38321
+ tabIndex: tabIndexProp,
38322
+ className
38282
38323
  } = props,
38283
38324
  other = _objectWithoutPropertiesLoose(props, _excluded$R);
38284
38325
 
@@ -38319,7 +38360,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
38319
38360
  role: role,
38320
38361
  tabIndex: tabIndex,
38321
38362
  component: component,
38322
- focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName)
38363
+ focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),
38364
+ className: clsx(classes.root, className)
38323
38365
  }, other, {
38324
38366
  ownerState: ownerState,
38325
38367
  classes: classes
@@ -38351,6 +38393,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
38351
38393
  */
38352
38394
  classes: PropTypes.object,
38353
38395
 
38396
+ /**
38397
+ * @ignore
38398
+ */
38399
+ className: PropTypes.string,
38400
+
38354
38401
  /**
38355
38402
  * The component used for the root node.
38356
38403
  * Either a string to use a HTML element or a component.
@@ -40343,7 +40390,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
40343
40390
  const radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary']);
40344
40391
  var radioClasses$1 = radioClasses;
40345
40392
 
40346
- const _excluded$I = ["checked", "checkedIcon", "color", "icon", "name", "onChange", "size"];
40393
+ const _excluded$I = ["checked", "checkedIcon", "color", "icon", "name", "onChange", "size", "className"];
40347
40394
 
40348
40395
  const useUtilityClasses$z = ownerState => {
40349
40396
  const {
@@ -40418,7 +40465,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
40418
40465
  icon = defaultIcon$1,
40419
40466
  name: nameProp,
40420
40467
  onChange: onChangeProp,
40421
- size = 'medium'
40468
+ size = 'medium',
40469
+ className
40422
40470
  } = props,
40423
40471
  other = _objectWithoutPropertiesLoose(props, _excluded$I);
40424
40472
 
@@ -40456,7 +40504,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
40456
40504
  name: name,
40457
40505
  checked: checked,
40458
40506
  onChange: onChange,
40459
- ref: ref
40507
+ ref: ref,
40508
+ className: clsx(classes.root, className)
40460
40509
  }, other));
40461
40510
  });
40462
40511
  Radio.propTypes
@@ -40483,6 +40532,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
40483
40532
  */
40484
40533
  classes: PropTypes.object,
40485
40534
 
40535
+ /**
40536
+ * @ignore
40537
+ */
40538
+ className: PropTypes.string,
40539
+
40486
40540
  /**
40487
40541
  * The color of the component.
40488
40542
  * It supports both default and custom theme colors, which can be added as shown in the
@@ -45275,7 +45329,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
45275
45329
  const handleFocusRef = useForkRef(focusVisibleRef, handleUseRef);
45276
45330
  const handleRef = useForkRef(children.ref, handleFocusRef); // There is no point in displaying an empty tooltip.
45277
45331
 
45278
- if (title === '') {
45332
+ if (typeof title !== 'number' && !title) {
45279
45333
  open = false;
45280
45334
  }
45281
45335
 
@@ -45617,11 +45671,9 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
45617
45671
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
45618
45672
 
45619
45673
  /**
45620
- * Tooltip title. Zero-length titles string are never displayed.
45674
+ * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.
45621
45675
  */
45622
- title: PropTypes
45623
- /* @typescript-to-proptypes-ignore */
45624
- .node.isRequired,
45676
+ title: PropTypes.node,
45625
45677
 
45626
45678
  /**
45627
45679
  * The component used for the transition.
@@ -46638,7 +46690,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
46638
46690
  root: ['root', orientation, error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],
46639
46691
  label: ['label', active && 'active', completed && 'completed', error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],
46640
46692
  iconContainer: ['iconContainer', active && 'active', completed && 'completed', error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],
46641
- labelContainer: ['labelContainer']
46693
+ labelContainer: ['labelContainer', alternativeLabel && 'alternativeLabel']
46642
46694
  };
46643
46695
  return composeClasses(slots, getStepLabelUtilityClass, classes);
46644
46696
  };
@@ -46687,7 +46739,6 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
46687
46739
  fontWeight: 500
46688
46740
  },
46689
46741
  [`&.${stepLabelClasses$1.alternativeLabel}`]: {
46690
- textAlign: 'center',
46691
46742
  marginTop: 16
46692
46743
  },
46693
46744
  [`&.${stepLabelClasses$1.error}`]: {
@@ -46715,7 +46766,10 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
46715
46766
  theme
46716
46767
  }) => ({
46717
46768
  width: '100%',
46718
- color: (theme.vars || theme).palette.text.secondary
46769
+ color: (theme.vars || theme).palette.text.secondary,
46770
+ [`&.${stepLabelClasses$1.alternativeLabel}`]: {
46771
+ textAlign: 'center'
46772
+ }
46719
46773
  }));
46720
46774
  const StepLabel = /*#__PURE__*/React__namespace.forwardRef(function StepLabel(inProps, ref) {
46721
46775
  const props = useThemeProps({
@@ -52717,7 +52771,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
52717
52771
  exports.Tooltip = Tooltip$1;
52718
52772
  exports.Typography = Typography$1;
52719
52773
  exports.Unstable_Grid2 = Grid2$1;
52720
- exports.Unstable_TrapFocus = TrapFocus;
52774
+ exports.Unstable_TrapFocus = FocusTrap;
52721
52775
  exports.Zoom = Zoom$1;
52722
52776
  exports.accordionActionsClasses = accordionActionsClasses$1;
52723
52777
  exports.accordionClasses = accordionClasses$1;