@mui/material 5.10.5 → 5.10.7

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 (79) hide show
  1. package/Button/Button.js +3 -10
  2. package/CHANGELOG.md +153 -0
  3. package/CardHeader/CardHeader.js +1 -3
  4. package/Checkbox/Checkbox.js +12 -3
  5. package/Chip/chipClasses.d.ts +8 -0
  6. package/Chip/chipClasses.js +1 -1
  7. package/DialogContentText/DialogContentText.js +14 -3
  8. package/InputLabel/InputLabel.js +12 -3
  9. package/ListItemButton/ListItemButton.js +10 -3
  10. package/MenuItem/MenuItem.js +10 -3
  11. package/OutlinedInput/NotchedOutline.js +2 -2
  12. package/README.md +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/CardHeader/CardHeader.js +1 -3
  23. package/esm/Checkbox/Checkbox.js +11 -3
  24. package/esm/Chip/chipClasses.js +1 -1
  25. package/esm/DialogContentText/DialogContentText.js +13 -3
  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/OutlinedInput/NotchedOutline.js +2 -2
  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/index.js +2 -1
  36. package/esm/styles/CssVarsProvider.js +3 -1
  37. package/esm/styles/excludeVariablesFromRoot.js +6 -0
  38. package/index.d.ts +3 -0
  39. package/index.js +11 -2
  40. package/legacy/Button/Button.js +2 -4
  41. package/legacy/CardHeader/CardHeader.js +1 -3
  42. package/legacy/Checkbox/Checkbox.js +10 -2
  43. package/legacy/Chip/chipClasses.js +1 -1
  44. package/legacy/DialogContentText/DialogContentText.js +10 -2
  45. package/legacy/InputLabel/InputLabel.js +10 -2
  46. package/legacy/ListItemButton/ListItemButton.js +9 -2
  47. package/legacy/MenuItem/MenuItem.js +9 -2
  48. package/legacy/OutlinedInput/NotchedOutline.js +2 -2
  49. package/legacy/Radio/Radio.js +10 -2
  50. package/legacy/StepLabel/StepLabel.js +5 -4
  51. package/legacy/SvgIcon/SvgIcon.js +2 -2
  52. package/legacy/Tooltip/Tooltip.js +3 -5
  53. package/legacy/Unstable_TrapFocus/index.js +1 -1
  54. package/legacy/index.js +3 -2
  55. package/legacy/styles/CssVarsProvider.js +3 -1
  56. package/legacy/styles/excludeVariablesFromRoot.js +12 -0
  57. package/modern/Button/Button.js +3 -8
  58. package/modern/CardHeader/CardHeader.js +1 -3
  59. package/modern/Checkbox/Checkbox.js +11 -3
  60. package/modern/Chip/chipClasses.js +1 -1
  61. package/modern/DialogContentText/DialogContentText.js +13 -3
  62. package/modern/InputLabel/InputLabel.js +11 -3
  63. package/modern/ListItemButton/ListItemButton.js +10 -3
  64. package/modern/MenuItem/MenuItem.js +10 -3
  65. package/modern/OutlinedInput/NotchedOutline.js +2 -2
  66. package/modern/Radio/Radio.js +11 -3
  67. package/modern/StepLabel/StepLabel.js +5 -3
  68. package/modern/SvgIcon/SvgIcon.js +2 -2
  69. package/modern/Tooltip/Tooltip.js +3 -5
  70. package/modern/Unstable_TrapFocus/index.js +1 -1
  71. package/modern/index.js +3 -2
  72. package/modern/styles/CssVarsProvider.js +3 -1
  73. package/modern/styles/excludeVariablesFromRoot.js +6 -0
  74. package/package.json +7 -7
  75. package/styles/CssVarsProvider.js +4 -1
  76. package/styles/excludeVariablesFromRoot.d.ts +5 -0
  77. package/styles/excludeVariablesFromRoot.js +14 -0
  78. package/umd/material-ui.development.js +512 -479
  79. package/umd/material-ui.production.min.js +20 -20
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.10.5
1
+ /** @license MUI v5.10.7
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.
@@ -1838,6 +1838,16 @@
1838
1838
  };
1839
1839
 
1840
1840
  var isBrowser$3 = typeof document !== 'undefined';
1841
+
1842
+ var syncFallback = function syncFallback(create) {
1843
+ return create();
1844
+ };
1845
+
1846
+ var useInsertionEffect = React__namespace['useInsertion' + 'Effect'] ? React__namespace['useInsertion' + 'Effect'] : false;
1847
+ var useInsertionEffectAlwaysWithSyncFallback = !isBrowser$3 ? syncFallback : useInsertionEffect || syncFallback;
1848
+ var useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;
1849
+
1850
+ var isBrowser$2 = typeof document !== 'undefined';
1841
1851
  var hasOwnProperty$1 = {}.hasOwnProperty;
1842
1852
 
1843
1853
  var EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case
@@ -1865,7 +1875,7 @@
1865
1875
  });
1866
1876
  };
1867
1877
 
1868
- if (!isBrowser$3) {
1878
+ if (!isBrowser$2) {
1869
1879
  withEmotionCache = function withEmotionCache(func) {
1870
1880
  return function (props) {
1871
1881
  var cache = React.useContext(EmotionCacheContext);
@@ -1895,18 +1905,6 @@
1895
1905
  ThemeContext$2.displayName = 'EmotionThemeContext';
1896
1906
  }
1897
1907
 
1898
- var isBrowser$1$1 = typeof document !== 'undefined';
1899
- var useInsertionEffect$2 = React__namespace['useInsertion' + 'Effect'] ? React__namespace['useInsertion' + 'Effect'] : function useInsertionEffect(create) {
1900
- create();
1901
- };
1902
- function useInsertionEffectMaybe$1(create) {
1903
- if (!isBrowser$1$1) {
1904
- return create();
1905
- }
1906
-
1907
- useInsertionEffect$2(create);
1908
- }
1909
-
1910
1908
  var typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';
1911
1909
  var labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';
1912
1910
 
@@ -1915,11 +1913,11 @@
1915
1913
  serialized = _ref.serialized,
1916
1914
  isStringTag = _ref.isStringTag;
1917
1915
  registerStyles(cache, serialized, isStringTag);
1918
- var rules = useInsertionEffectMaybe$1(function () {
1916
+ var rules = useInsertionEffectAlwaysWithSyncFallback(function () {
1919
1917
  return insertStyles(cache, serialized, isStringTag);
1920
1918
  });
1921
1919
 
1922
- if (!isBrowser$3 && rules !== undefined) {
1920
+ if (!isBrowser$2 && rules !== undefined) {
1923
1921
  var _ref2;
1924
1922
 
1925
1923
  var serializedNames = serialized.name;
@@ -1991,7 +1989,7 @@
1991
1989
 
1992
1990
  var pkg = {
1993
1991
  name: "@emotion/react",
1994
- version: "11.10.0",
1992
+ version: "11.10.4",
1995
1993
  main: "dist/emotion-react.cjs.js",
1996
1994
  module: "dist/emotion-react.esm.js",
1997
1995
  browser: {
@@ -2057,6 +2055,7 @@
2057
2055
  "@emotion/babel-plugin": "^11.10.0",
2058
2056
  "@emotion/cache": "^11.10.0",
2059
2057
  "@emotion/serialize": "^1.1.0",
2058
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
2060
2059
  "@emotion/utils": "^1.2.0",
2061
2060
  "@emotion/weak-memoize": "^0.3.0",
2062
2061
  "hoist-non-react-statics": "^3.3.1"
@@ -2079,7 +2078,7 @@
2079
2078
  "@emotion/css": "11.10.0",
2080
2079
  "@emotion/css-prettifier": "1.1.0",
2081
2080
  "@emotion/server": "11.10.0",
2082
- "@emotion/styled": "11.10.0",
2081
+ "@emotion/styled": "11.10.4",
2083
2082
  "html-tag-names": "^1.1.2",
2084
2083
  react: "16.14.0",
2085
2084
  "svg-tag-names": "^1.1.1",
@@ -2111,7 +2110,6 @@
2111
2110
  }
2112
2111
  };
2113
2112
 
2114
- var useInsertionEffect$1 = React__namespace['useInsertion' + 'Effect'] ? React__namespace['useInsertion' + 'Effect'] : React.useLayoutEffect;
2115
2113
  var warnedAboutCssPropForGlobal = false; // maintain place over rerenders.
2116
2114
  // initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild
2117
2115
  // initial client-side render from SSR, use place of hydrating tag
@@ -2129,7 +2127,7 @@
2129
2127
  var styles = props.styles;
2130
2128
  var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext$2));
2131
2129
 
2132
- if (!isBrowser$3) {
2130
+ if (!isBrowser$2) {
2133
2131
  var _ref;
2134
2132
 
2135
2133
  var serializedNames = serialized.name;
@@ -2162,7 +2160,7 @@
2162
2160
 
2163
2161
 
2164
2162
  var sheetRef = React.useRef();
2165
- useInsertionEffect$1(function () {
2163
+ useInsertionEffectWithLayoutFallback(function () {
2166
2164
  var key = cache.key + "-global"; // use case of https://github.com/emotion-js/emotion/issues/2675
2167
2165
 
2168
2166
  var sheet = new cache.sheet.constructor({
@@ -2191,7 +2189,7 @@
2191
2189
  sheet.flush();
2192
2190
  };
2193
2191
  }, [cache]);
2194
- useInsertionEffect$1(function () {
2192
+ useInsertionEffectWithLayoutFallback(function () {
2195
2193
  var sheetRefCurrent = sheetRef.current;
2196
2194
  var sheet = sheetRefCurrent[0],
2197
2195
  rehydrating = sheetRefCurrent[1];
@@ -2309,23 +2307,23 @@
2309
2307
  var Insertion$1 = function Insertion(_ref) {
2310
2308
  var cache = _ref.cache,
2311
2309
  serializedArr = _ref.serializedArr;
2312
- var rules = useInsertionEffectMaybe$1(function () {
2310
+ var rules = useInsertionEffectAlwaysWithSyncFallback(function () {
2313
2311
  var rules = '';
2314
2312
 
2315
2313
  for (var i = 0; i < serializedArr.length; i++) {
2316
2314
  var res = insertStyles(cache, serializedArr[i], false);
2317
2315
 
2318
- if (!isBrowser$3 && res !== undefined) {
2316
+ if (!isBrowser$2 && res !== undefined) {
2319
2317
  rules += res;
2320
2318
  }
2321
2319
  }
2322
2320
 
2323
- if (!isBrowser$3) {
2321
+ if (!isBrowser$2) {
2324
2322
  return rules;
2325
2323
  }
2326
2324
  });
2327
2325
 
2328
- if (!isBrowser$3 && rules.length !== 0) {
2326
+ if (!isBrowser$2 && rules.length !== 0) {
2329
2327
  var _ref2;
2330
2328
 
2331
2329
  return /*#__PURE__*/React.createElement("style", (_ref2 = {}, _ref2["data-emotion"] = cache.key + " " + serializedArr.map(function (serialized) {
@@ -2388,15 +2386,15 @@
2388
2386
  }
2389
2387
 
2390
2388
  {
2391
- var isBrowser$2 = typeof document !== 'undefined'; // #1727 for some reason Jest evaluates modules twice if some consuming module gets mocked with jest.mock
2389
+ var isBrowser$1 = typeof document !== 'undefined'; // #1727 for some reason Jest evaluates modules twice if some consuming module gets mocked with jest.mock
2392
2390
 
2393
2391
  var isJest = typeof jest !== 'undefined';
2394
2392
 
2395
- if (isBrowser$2 && !isJest) {
2393
+ if (isBrowser$1 && !isJest) {
2396
2394
  // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later
2397
2395
  var globalContext = // $FlowIgnore
2398
2396
  typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef
2399
- : isBrowser$2 ? window : global$1;
2397
+ : isBrowser$1 ? window : global$1;
2400
2398
  var globalKey = "__EMOTION_REACT_" + pkg.version.split('.')[0] + "__";
2401
2399
 
2402
2400
  if (globalContext[globalKey]) {
@@ -2436,31 +2434,19 @@
2436
2434
  return shouldForwardProp;
2437
2435
  };
2438
2436
 
2439
- var isBrowser = typeof document !== 'undefined';
2440
- var useInsertionEffect = React__namespace['useInsertion' + 'Effect'] ? React__namespace['useInsertion' + 'Effect'] : function useInsertionEffect(create) {
2441
- create();
2442
- };
2443
- function useInsertionEffectMaybe(create) {
2444
- if (!isBrowser) {
2445
- return create();
2446
- }
2447
-
2448
- useInsertionEffect(create);
2449
- }
2450
-
2451
2437
  var ILLEGAL_ESCAPE_SEQUENCE_ERROR = "You have illegal escape sequence in your template literal, most likely inside content's property value.\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \"content: '\\00d7';\" should become \"content: '\\\\00d7';\".\nYou can read more about this here:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences";
2452
- var isBrowser$1 = typeof document !== 'undefined';
2438
+ var isBrowser = typeof document !== 'undefined';
2453
2439
 
2454
2440
  var Insertion = function Insertion(_ref) {
2455
2441
  var cache = _ref.cache,
2456
2442
  serialized = _ref.serialized,
2457
2443
  isStringTag = _ref.isStringTag;
2458
2444
  registerStyles(cache, serialized, isStringTag);
2459
- var rules = useInsertionEffectMaybe(function () {
2445
+ var rules = useInsertionEffectAlwaysWithSyncFallback(function () {
2460
2446
  return insertStyles(cache, serialized, isStringTag);
2461
2447
  });
2462
2448
 
2463
- if (!isBrowser$1 && rules !== undefined) {
2449
+ if (!isBrowser && rules !== undefined) {
2464
2450
  var _ref2;
2465
2451
 
2466
2452
  var serializedNames = serialized.name;
@@ -7018,7 +7004,7 @@
7018
7004
  }
7019
7005
 
7020
7006
  const _excluded$2i = ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"],
7021
- _excluded2$d = ["theme"],
7007
+ _excluded2$c = ["theme"],
7022
7008
  _excluded3$1 = ["theme"];
7023
7009
 
7024
7010
  function isEmpty$2(obj) {
@@ -7159,7 +7145,7 @@
7159
7145
  let {
7160
7146
  theme: themeInput
7161
7147
  } = _ref,
7162
- other = _objectWithoutPropertiesLoose(_ref, _excluded2$d);
7148
+ other = _objectWithoutPropertiesLoose(_ref, _excluded2$c);
7163
7149
 
7164
7150
  return stylesArg(_extends({
7165
7151
  theme: isEmpty$2(themeInput) ? defaultTheme : themeInput
@@ -7477,7 +7463,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
7477
7463
 
7478
7464
  function getLuminance(color) {
7479
7465
  color = decomposeColor(color);
7480
- 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;
7481
7467
  rgb = rgb.map(val => {
7482
7468
  if (color.type !== 'color') {
7483
7469
  val /= 255; // normalized
@@ -7784,7 +7770,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
7784
7770
  function getInitColorSchemeScript$1(options) {
7785
7771
  const {
7786
7772
  enableColorScheme = true,
7787
- enableSystem = false,
7773
+ defaultMode = 'light',
7788
7774
  defaultLightColorScheme = 'light',
7789
7775
  defaultDarkColorScheme = 'dark',
7790
7776
  modeStorageKey = DEFAULT_MODE_STORAGE_KEY,
@@ -7796,10 +7782,10 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
7796
7782
  // eslint-disable-next-line react/no-danger
7797
7783
  dangerouslySetInnerHTML: {
7798
7784
  __html: `(function() { try {
7799
- var mode = localStorage.getItem('${modeStorageKey}');
7785
+ var mode = localStorage.getItem('${modeStorageKey}') || '${defaultMode}';
7800
7786
  var cssColorScheme = mode;
7801
7787
  var colorScheme = '';
7802
- if (mode === 'system' || (!mode && !!${enableSystem})) {
7788
+ if (mode === 'system') {
7803
7789
  // handle system mode
7804
7790
  var mql = window.matchMedia('(prefers-color-scheme: dark)');
7805
7791
  if (mql.matches) {
@@ -8078,7 +8064,8 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
8078
8064
  disableTransitionOnChange: designSystemTransitionOnChange = false,
8079
8065
  enableColorScheme: designSystemEnableColorScheme = true,
8080
8066
  shouldSkipGeneratingVar: designSystemShouldSkipGeneratingVar,
8081
- resolveTheme
8067
+ resolveTheme,
8068
+ excludeVariablesFromRoot
8082
8069
  } = options;
8083
8070
 
8084
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]) {
@@ -8209,6 +8196,15 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
8209
8196
  })();
8210
8197
 
8211
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
+
8212
8208
  defaultColorSchemeStyleSheet[`${colorSchemeSelector}, [${attribute}="${key}"]`] = css;
8213
8209
  } else {
8214
8210
  otherColorSchemesStyleSheet[`${colorSchemeSelector === ':root' ? '' : colorSchemeSelector}[${attribute}="${key}"]`] = css;
@@ -8946,7 +8942,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
8946
8942
  }
8947
8943
 
8948
8944
  const _excluded$2e = ["defaultProps", "mixins", "overrides", "palette", "props", "styleOverrides"],
8949
- _excluded2$c = ["type", "mode"];
8945
+ _excluded2$b = ["type", "mode"];
8950
8946
  function adaptV4Theme(inputTheme) {
8951
8947
  {
8952
8948
  console.warn(['MUI: adaptV4Theme() is deprecated.', 'Follow the upgrade guide on https://mui.com/r/migration-v4#theme.'].join('\n'));
@@ -9011,7 +9007,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
9011
9007
  type: typeInput,
9012
9008
  mode: modeInput
9013
9009
  } = palette,
9014
- paletteRest = _objectWithoutPropertiesLoose(palette, _excluded2$c);
9010
+ paletteRest = _objectWithoutPropertiesLoose(palette, _excluded2$b);
9015
9011
 
9016
9012
  const finalMode = modeInput || typeInput || 'light';
9017
9013
  theme.palette = _extends({
@@ -10439,7 +10435,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
10439
10435
  *
10440
10436
  * Demos:
10441
10437
  *
10442
- * - [Click-away listener](https://mui.com/base/react-click-away-listener/)
10438
+ * - [Click-Away Listener](https://mui.com/base/react-click-away-listener/)
10443
10439
  *
10444
10440
  * API:
10445
10441
  *
@@ -10610,6 +10606,363 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
10610
10606
  ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);
10611
10607
  }
10612
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
+
10613
10966
  var top = 'top';
10614
10967
  var bottom = 'bottom';
10615
10968
  var right = 'right';
@@ -12675,7 +13028,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
12675
13028
  generateUtilityClasses('MuiPopperUnstyled', ['root']);
12676
13029
 
12677
13030
  const _excluded$2b = ["anchorEl", "children", "component", "components", "componentsProps", "direction", "disablePortal", "modifiers", "open", "ownerState", "placement", "popperOptions", "popperRef", "TransitionProps"],
12678
- _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"];
12679
13032
 
12680
13033
  function flipPlacement(placement, direction) {
12681
13034
  if (direction === 'ltr') {
@@ -12864,7 +13217,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
12864
13217
  style,
12865
13218
  transition = false
12866
13219
  } = props,
12867
- other = _objectWithoutPropertiesLoose(props, _excluded2$b);
13220
+ other = _objectWithoutPropertiesLoose(props, _excluded2$a);
12868
13221
 
12869
13222
  const [exited, setExited] = React__namespace.useState(true);
12870
13223
 
@@ -13306,363 +13659,6 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
13306
13659
 
13307
13660
  }
13308
13661
 
13309
- const candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])'].join(',');
13310
-
13311
- function getTabIndex(node) {
13312
- const tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);
13313
-
13314
- if (!Number.isNaN(tabindexAttr)) {
13315
- return tabindexAttr;
13316
- } // Browsers do not return `tabIndex` correctly for contentEditable nodes;
13317
- // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2
13318
- // so if they don't have a tabindex attribute specifically set, assume it's 0.
13319
- // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default
13320
- // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,
13321
- // yet they are still part of the regular tab order; in FF, they get a default
13322
- // `tabIndex` of 0; since Chrome still puts those elements in the regular tab
13323
- // order, consider their tab index to be 0.
13324
-
13325
-
13326
- if (node.contentEditable === 'true' || (node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {
13327
- return 0;
13328
- }
13329
-
13330
- return node.tabIndex;
13331
- }
13332
-
13333
- function isNonTabbableRadio(node) {
13334
- if (node.tagName !== 'INPUT' || node.type !== 'radio') {
13335
- return false;
13336
- }
13337
-
13338
- if (!node.name) {
13339
- return false;
13340
- }
13341
-
13342
- const getRadio = selector => node.ownerDocument.querySelector(`input[type="radio"]${selector}`);
13343
-
13344
- let roving = getRadio(`[name="${node.name}"]:checked`);
13345
-
13346
- if (!roving) {
13347
- roving = getRadio(`[name="${node.name}"]`);
13348
- }
13349
-
13350
- return roving !== node;
13351
- }
13352
-
13353
- function isNodeMatchingSelectorFocusable(node) {
13354
- if (node.disabled || node.tagName === 'INPUT' && node.type === 'hidden' || isNonTabbableRadio(node)) {
13355
- return false;
13356
- }
13357
-
13358
- return true;
13359
- }
13360
-
13361
- function defaultGetTabbable(root) {
13362
- const regularTabNodes = [];
13363
- const orderedTabNodes = [];
13364
- Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {
13365
- const nodeTabIndex = getTabIndex(node);
13366
-
13367
- if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {
13368
- return;
13369
- }
13370
-
13371
- if (nodeTabIndex === 0) {
13372
- regularTabNodes.push(node);
13373
- } else {
13374
- orderedTabNodes.push({
13375
- documentOrder: i,
13376
- tabIndex: nodeTabIndex,
13377
- node
13378
- });
13379
- }
13380
- });
13381
- return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map(a => a.node).concat(regularTabNodes);
13382
- }
13383
-
13384
- function defaultIsEnabled() {
13385
- return true;
13386
- }
13387
- /**
13388
- * Utility component that locks focus inside the component.
13389
- */
13390
-
13391
-
13392
- function TrapFocus(props) {
13393
- const {
13394
- children,
13395
- disableAutoFocus = false,
13396
- disableEnforceFocus = false,
13397
- disableRestoreFocus = false,
13398
- getTabbable = defaultGetTabbable,
13399
- isEnabled = defaultIsEnabled,
13400
- open
13401
- } = props;
13402
- const ignoreNextEnforceFocus = React__namespace.useRef();
13403
- const sentinelStart = React__namespace.useRef(null);
13404
- const sentinelEnd = React__namespace.useRef(null);
13405
- const nodeToRestore = React__namespace.useRef(null);
13406
- const reactFocusEventTarget = React__namespace.useRef(null); // This variable is useful when disableAutoFocus is true.
13407
- // It waits for the active element to move into the component to activate.
13408
-
13409
- const activated = React__namespace.useRef(false);
13410
- const rootRef = React__namespace.useRef(null);
13411
- const handleRef = useForkRef(children.ref, rootRef);
13412
- const lastKeydown = React__namespace.useRef(null);
13413
- React__namespace.useEffect(() => {
13414
- // We might render an empty child.
13415
- if (!open || !rootRef.current) {
13416
- return;
13417
- }
13418
-
13419
- activated.current = !disableAutoFocus;
13420
- }, [disableAutoFocus, open]);
13421
- React__namespace.useEffect(() => {
13422
- // We might render an empty child.
13423
- if (!open || !rootRef.current) {
13424
- return;
13425
- }
13426
-
13427
- const doc = ownerDocument(rootRef.current);
13428
-
13429
- if (!rootRef.current.contains(doc.activeElement)) {
13430
- if (!rootRef.current.hasAttribute('tabIndex')) {
13431
- {
13432
- 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'));
13433
- }
13434
-
13435
- rootRef.current.setAttribute('tabIndex', -1);
13436
- }
13437
-
13438
- if (activated.current) {
13439
- rootRef.current.focus();
13440
- }
13441
- }
13442
-
13443
- return () => {
13444
- // restoreLastFocus()
13445
- if (!disableRestoreFocus) {
13446
- // In IE11 it is possible for document.activeElement to be null resulting
13447
- // in nodeToRestore.current being null.
13448
- // Not all elements in IE11 have a focus method.
13449
- // Once IE11 support is dropped the focus() call can be unconditional.
13450
- if (nodeToRestore.current && nodeToRestore.current.focus) {
13451
- ignoreNextEnforceFocus.current = true;
13452
- nodeToRestore.current.focus();
13453
- }
13454
-
13455
- nodeToRestore.current = null;
13456
- }
13457
- }; // Missing `disableRestoreFocus` which is fine.
13458
- // We don't support changing that prop on an open TrapFocus
13459
- // eslint-disable-next-line react-hooks/exhaustive-deps
13460
- }, [open]);
13461
- React__namespace.useEffect(() => {
13462
- // We might render an empty child.
13463
- if (!open || !rootRef.current) {
13464
- return;
13465
- }
13466
-
13467
- const doc = ownerDocument(rootRef.current);
13468
-
13469
- const contain = nativeEvent => {
13470
- const {
13471
- current: rootElement
13472
- } = rootRef; // Cleanup functions are executed lazily in React 17.
13473
- // Contain can be called between the component being unmounted and its cleanup function being run.
13474
-
13475
- if (rootElement === null) {
13476
- return;
13477
- }
13478
-
13479
- if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {
13480
- ignoreNextEnforceFocus.current = false;
13481
- return;
13482
- }
13483
-
13484
- if (!rootElement.contains(doc.activeElement)) {
13485
- // if the focus event is not coming from inside the children's react tree, reset the refs
13486
- if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {
13487
- reactFocusEventTarget.current = null;
13488
- } else if (reactFocusEventTarget.current !== null) {
13489
- return;
13490
- }
13491
-
13492
- if (!activated.current) {
13493
- return;
13494
- }
13495
-
13496
- let tabbable = [];
13497
-
13498
- if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
13499
- tabbable = getTabbable(rootRef.current);
13500
- }
13501
-
13502
- if (tabbable.length > 0) {
13503
- var _lastKeydown$current, _lastKeydown$current2;
13504
-
13505
- const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
13506
- const focusNext = tabbable[0];
13507
- const focusPrevious = tabbable[tabbable.length - 1];
13508
-
13509
- if (isShiftTab) {
13510
- focusPrevious.focus();
13511
- } else {
13512
- focusNext.focus();
13513
- }
13514
- } else {
13515
- rootElement.focus();
13516
- }
13517
- }
13518
- };
13519
-
13520
- const loopFocus = nativeEvent => {
13521
- lastKeydown.current = nativeEvent;
13522
-
13523
- if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {
13524
- return;
13525
- } // Make sure the next tab starts from the right place.
13526
- // doc.activeElement referes to the origin.
13527
-
13528
-
13529
- if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {
13530
- // We need to ignore the next contain as
13531
- // it will try to move the focus back to the rootRef element.
13532
- ignoreNextEnforceFocus.current = true;
13533
- sentinelEnd.current.focus();
13534
- }
13535
- };
13536
-
13537
- doc.addEventListener('focusin', contain);
13538
- 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.
13539
- // e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=559561.
13540
- // Instead, we can look if the active element was restored on the BODY element.
13541
- //
13542
- // The whatwg spec defines how the browser should behave but does not explicitly mention any events:
13543
- // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.
13544
-
13545
- const interval = setInterval(() => {
13546
- if (doc.activeElement.tagName === 'BODY') {
13547
- contain();
13548
- }
13549
- }, 50);
13550
- return () => {
13551
- clearInterval(interval);
13552
- doc.removeEventListener('focusin', contain);
13553
- doc.removeEventListener('keydown', loopFocus, true);
13554
- };
13555
- }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);
13556
-
13557
- const onFocus = event => {
13558
- if (nodeToRestore.current === null) {
13559
- nodeToRestore.current = event.relatedTarget;
13560
- }
13561
-
13562
- activated.current = true;
13563
- reactFocusEventTarget.current = event.target;
13564
- const childrenPropsHandler = children.props.onFocus;
13565
-
13566
- if (childrenPropsHandler) {
13567
- childrenPropsHandler(event);
13568
- }
13569
- };
13570
-
13571
- const handleFocusSentinel = event => {
13572
- if (nodeToRestore.current === null) {
13573
- nodeToRestore.current = event.relatedTarget;
13574
- }
13575
-
13576
- activated.current = true;
13577
- };
13578
-
13579
- return /*#__PURE__*/jsxRuntime_2(React__namespace.Fragment, {
13580
- children: [/*#__PURE__*/jsxRuntime_1("div", {
13581
- tabIndex: open ? 0 : -1,
13582
- onFocus: handleFocusSentinel,
13583
- ref: sentinelStart,
13584
- "data-testid": "sentinelStart"
13585
- }), /*#__PURE__*/React__namespace.cloneElement(children, {
13586
- ref: handleRef,
13587
- onFocus
13588
- }), /*#__PURE__*/jsxRuntime_1("div", {
13589
- tabIndex: open ? 0 : -1,
13590
- onFocus: handleFocusSentinel,
13591
- ref: sentinelEnd,
13592
- "data-testid": "sentinelEnd"
13593
- })]
13594
- });
13595
- }
13596
-
13597
- TrapFocus.propTypes
13598
- /* remove-proptypes */
13599
- = {
13600
- // ----------------------------- Warning --------------------------------
13601
- // | These PropTypes are generated from the TypeScript type definitions |
13602
- // | To update them edit the d.ts file and run "yarn proptypes" |
13603
- // ----------------------------------------------------------------------
13604
-
13605
- /**
13606
- * A single child content element.
13607
- */
13608
- children: elementAcceptingRef$1,
13609
-
13610
- /**
13611
- * If `true`, the trap focus will not automatically shift focus to itself when it opens, and
13612
- * replace it to the last focused element when it closes.
13613
- * This also works correctly with any trap focus children that have the `disableAutoFocus` prop.
13614
- *
13615
- * Generally this should never be set to `true` as it makes the trap focus less
13616
- * accessible to assistive technologies, like screen readers.
13617
- * @default false
13618
- */
13619
- disableAutoFocus: PropTypes.bool,
13620
-
13621
- /**
13622
- * If `true`, the trap focus will not prevent focus from leaving the trap focus while open.
13623
- *
13624
- * Generally this should never be set to `true` as it makes the trap focus less
13625
- * accessible to assistive technologies, like screen readers.
13626
- * @default false
13627
- */
13628
- disableEnforceFocus: PropTypes.bool,
13629
-
13630
- /**
13631
- * If `true`, the trap focus will not restore focus to previously focused element once
13632
- * trap focus is hidden or unmounted.
13633
- * @default false
13634
- */
13635
- disableRestoreFocus: PropTypes.bool,
13636
-
13637
- /**
13638
- * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.
13639
- * For instance, you can provide the "tabbable" npm dependency.
13640
- * @param {HTMLElement} root
13641
- */
13642
- getTabbable: PropTypes.func,
13643
-
13644
- /**
13645
- * This prop extends the `open` prop.
13646
- * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.
13647
- * This prop should be memoized.
13648
- * It can be used to support multiple trap focus mounted at the same time.
13649
- * @default function defaultIsEnabled() {
13650
- * return true;
13651
- * }
13652
- */
13653
- isEnabled: PropTypes.func,
13654
-
13655
- /**
13656
- * If `true`, focus is locked.
13657
- */
13658
- open: PropTypes.bool.isRequired
13659
- } ;
13660
-
13661
- {
13662
- // eslint-disable-next-line
13663
- TrapFocus['propTypes' + ''] = exactProp(TrapFocus.propTypes);
13664
- }
13665
-
13666
13662
  function getModalUtilityClass(slot) {
13667
13663
  return generateUtilityClass('MuiModal', slot);
13668
13664
  }
@@ -13924,7 +13920,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
13924
13920
  container: container,
13925
13921
  disablePortal: disablePortal,
13926
13922
  children: /*#__PURE__*/jsxRuntime_2(Root, _extends({}, rootProps, {
13927
- 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, {
13928
13924
  disableEnforceFocus: disableEnforceFocus,
13929
13925
  disableAutoFocus: disableAutoFocus,
13930
13926
  disableRestoreFocus: disableRestoreFocus,
@@ -14162,8 +14158,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14162
14158
  const {
14163
14159
  children,
14164
14160
  className,
14165
- value,
14166
- theme
14161
+ value
14167
14162
  } = props;
14168
14163
  const classes = useValueLabelClasses(props);
14169
14164
  return /*#__PURE__*/React__namespace.cloneElement(children, {
@@ -14171,7 +14166,6 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14171
14166
  }, /*#__PURE__*/jsxRuntime_2(React__namespace.Fragment, {
14172
14167
  children: [children.props.children, /*#__PURE__*/jsxRuntime_1("span", {
14173
14168
  className: clsx(classes.offset, className),
14174
- theme: theme,
14175
14169
  "aria-hidden": true,
14176
14170
  children: /*#__PURE__*/jsxRuntime_1("span", {
14177
14171
  className: classes.circle,
@@ -14540,8 +14534,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14540
14534
 
14541
14535
  const getFingerNewValue = ({
14542
14536
  finger,
14543
- move = false,
14544
- values: values2
14537
+ move = false
14545
14538
  }) => {
14546
14539
  const {
14547
14540
  current: slider
@@ -14579,19 +14572,19 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14579
14572
 
14580
14573
  if (range) {
14581
14574
  if (!move) {
14582
- activeIndex = findClosest(values2, newValue);
14575
+ activeIndex = findClosest(values, newValue);
14583
14576
  } else {
14584
14577
  activeIndex = previousIndex.current;
14585
14578
  } // Bound the new value to the thumb's neighbours.
14586
14579
 
14587
14580
 
14588
14581
  if (disableSwap) {
14589
- 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);
14590
14583
  }
14591
14584
 
14592
14585
  const previousValue = newValue;
14593
14586
  newValue = setValueIndex({
14594
- values: values2,
14587
+ values,
14595
14588
  newValue,
14596
14589
  index: activeIndex
14597
14590
  }); // Potentially swap the index if needed.
@@ -14629,8 +14622,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14629
14622
  activeIndex
14630
14623
  } = getFingerNewValue({
14631
14624
  finger,
14632
- move: true,
14633
- values
14625
+ move: true
14634
14626
  });
14635
14627
  focusThumb({
14636
14628
  sliderRef,
@@ -14643,7 +14635,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14643
14635
  setDragging(true);
14644
14636
  }
14645
14637
 
14646
- if (handleChange) {
14638
+ if (handleChange && newValue !== valueDerived) {
14647
14639
  handleChange(nativeEvent, newValue, activeIndex);
14648
14640
  }
14649
14641
  });
@@ -14659,8 +14651,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14659
14651
  newValue
14660
14652
  } = getFingerNewValue({
14661
14653
  finger,
14662
- move: true,
14663
- values
14654
+ move: true
14664
14655
  });
14665
14656
  setActive(-1);
14666
14657
 
@@ -14700,8 +14691,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14700
14691
  newValue,
14701
14692
  activeIndex
14702
14693
  } = getFingerNewValue({
14703
- finger,
14704
- values
14694
+ finger
14705
14695
  });
14706
14696
  focusThumb({
14707
14697
  sliderRef,
@@ -14775,8 +14765,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14775
14765
  newValue,
14776
14766
  activeIndex
14777
14767
  } = getFingerNewValue({
14778
- finger,
14779
- values
14768
+ finger
14780
14769
  });
14781
14770
  focusThumb({
14782
14771
  sliderRef,
@@ -14946,7 +14935,7 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
14946
14935
  componentsProps = {}
14947
14936
  } = props,
14948
14937
  other = _objectWithoutPropertiesLoose(props, _excluded$29); // all props with defaults
14949
- // 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
14950
14939
 
14951
14940
 
14952
14941
  const ownerState = _extends({}, props, {
@@ -15519,8 +15508,6 @@ The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rg
15519
15508
  // ResizeObserver's handler that runs because of the change in the layout is trying to
15520
15509
  // access a dom node that is no longer there (as the fallback component is being shown instead).
15521
15510
  // See https://github.com/mui/material-ui/issues/32640
15522
- // TODO: Add tests that will ensure the component is not failing when
15523
- // replaced by Suspense with a fallback, once React is updated to version 18
15524
15511
 
15525
15512
  if (inputRef.current) {
15526
15513
  syncHeightWithFlushSycn();
@@ -16693,7 +16680,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
16693
16680
  var Paper$1 = Paper;
16694
16681
 
16695
16682
  const _excluded$22 = ["colorSchemes", "cssVarPrefix"],
16696
- _excluded2$a = ["palette"];
16683
+ _excluded2$9 = ["palette"];
16697
16684
  const defaultDarkOverlays = [...Array(25)].map((_, index) => {
16698
16685
  if (index === 0) {
16699
16686
  return undefined;
@@ -16733,7 +16720,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
16733
16720
  {
16734
16721
  palette: lightPalette
16735
16722
  } = _createThemeWithoutVa,
16736
- muiTheme = _objectWithoutPropertiesLoose(_createThemeWithoutVa, _excluded2$a);
16723
+ muiTheme = _objectWithoutPropertiesLoose(_createThemeWithoutVa, _excluded2$9);
16737
16724
 
16738
16725
  const {
16739
16726
  palette: darkPalette
@@ -16951,6 +16938,13 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
16951
16938
  return theme;
16952
16939
  }
16953
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
+
16954
16948
  const shouldSkipGeneratingVar = keys => {
16955
16949
  var _keys$;
16956
16950
 
@@ -16978,7 +16972,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
16978
16972
 
16979
16973
  return newTheme;
16980
16974
  },
16981
- shouldSkipGeneratingVar
16975
+ shouldSkipGeneratingVar,
16976
+ excludeVariablesFromRoot: excludeVariablesFromRoot$1
16982
16977
  });
16983
16978
 
16984
16979
  function getSvgIconUtilityClass(slot) {
@@ -17030,7 +17025,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
17030
17025
  inherit: 'inherit',
17031
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',
17032
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',
17033
- 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'
17034
17029
  }[ownerState.fontSize],
17035
17030
  // TODO v5 deprecate, v6 remove for sx
17036
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 : {
@@ -17078,13 +17073,13 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
17078
17073
  return /*#__PURE__*/jsxRuntime_2(SvgIconRoot, _extends({
17079
17074
  as: component,
17080
17075
  className: clsx(classes.root, className),
17081
- ownerState: ownerState,
17082
17076
  focusable: "false",
17083
17077
  color: htmlColor,
17084
17078
  "aria-hidden": titleAccess ? undefined : true,
17085
17079
  role: titleAccess ? 'img' : undefined,
17086
17080
  ref: ref
17087
17081
  }, more, other, {
17082
+ ownerState: ownerState,
17088
17083
  children: [children, titleAccess ? /*#__PURE__*/jsxRuntime_1("title", {
17089
17084
  children: titleAccess
17090
17085
  }) : null]
@@ -21563,7 +21558,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
21563
21558
  function getChipUtilityClass(slot) {
21564
21559
  return generateUtilityClass('MuiChip', slot);
21565
21560
  }
21566
- 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']);
21567
21562
  var chipClasses$1 = chipClasses;
21568
21563
 
21569
21564
  const _excluded$1P = ["avatar", "className", "clickable", "color", "component", "deleteIcon", "disabled", "icon", "label", "onClick", "onDelete", "onKeyDown", "onKeyUp", "size", "variant"];
@@ -25875,8 +25870,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
25875
25870
 
25876
25871
  var ButtonGroupContext$1 = ButtonGroupContext;
25877
25872
 
25878
- const _excluded$1E = ["children", "color", "component", "className", "disabled", "disableElevation", "disableFocusRipple", "endIcon", "focusVisibleClassName", "fullWidth", "size", "startIcon", "type", "variant"],
25879
- _excluded2$9 = ["root"];
25873
+ const _excluded$1E = ["children", "color", "component", "className", "disabled", "disableElevation", "disableFocusRipple", "endIcon", "focusVisibleClassName", "fullWidth", "size", "startIcon", "type", "variant"];
25880
25874
 
25881
25875
  const useUtilityClasses$1n = ownerState => {
25882
25876
  const {
@@ -26120,11 +26114,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
26120
26114
  variant
26121
26115
  });
26122
26116
 
26123
- const _useUtilityClasses = useUtilityClasses$1n(ownerState),
26124
- {
26125
- root: classesRoot
26126
- } = _useUtilityClasses,
26127
- classes = _objectWithoutPropertiesLoose(_useUtilityClasses, _excluded2$9);
26117
+ const classes = useUtilityClasses$1n(ownerState);
26128
26118
 
26129
26119
  const startIcon = startIconProp && /*#__PURE__*/jsxRuntime_1(ButtonStartIcon, {
26130
26120
  className: classes.startIcon,
@@ -26140,7 +26130,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
26140
26130
 
26141
26131
  return /*#__PURE__*/jsxRuntime_2(ButtonRoot, _extends({
26142
26132
  ownerState: ownerState,
26143
- className: clsx(contextProps.className, classesRoot, className),
26133
+ className: clsx(contextProps.className, classes.root, className),
26144
26134
  component: component,
26145
26135
  disabled: disabled,
26146
26136
  focusRipple: !disableFocusRipple,
@@ -27124,9 +27114,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
27124
27114
  * The component used for the root node.
27125
27115
  * Either a string to use a HTML element or a component.
27126
27116
  */
27127
- component: PropTypes
27128
- /* @typescript-to-proptypes-ignore */
27129
- .elementType,
27117
+ component: PropTypes.elementType,
27130
27118
 
27131
27119
  /**
27132
27120
  * If `true`, `subheader` and `title` won't be wrapped by a Typography component.
@@ -27630,7 +27618,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
27630
27618
  const checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary']);
27631
27619
  var checkboxClasses$1 = checkboxClasses;
27632
27620
 
27633
- const _excluded$1v = ["checkedIcon", "color", "icon", "indeterminate", "indeterminateIcon", "inputProps", "size"];
27621
+ const _excluded$1v = ["checkedIcon", "color", "icon", "indeterminate", "indeterminateIcon", "inputProps", "size", "className"];
27634
27622
 
27635
27623
  const useUtilityClasses$1e = ownerState => {
27636
27624
  const {
@@ -27698,7 +27686,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
27698
27686
  indeterminate = false,
27699
27687
  indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,
27700
27688
  inputProps,
27701
- size = 'medium'
27689
+ size = 'medium',
27690
+ className
27702
27691
  } = props,
27703
27692
  other = _objectWithoutPropertiesLoose(props, _excluded$1v);
27704
27693
 
@@ -27724,7 +27713,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
27724
27713
  fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size
27725
27714
  }),
27726
27715
  ownerState: ownerState,
27727
- ref: ref
27716
+ ref: ref,
27717
+ className: clsx(classes.root, className)
27728
27718
  }, other, {
27729
27719
  classes: classes
27730
27720
  }));
@@ -27753,6 +27743,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
27753
27743
  */
27754
27744
  classes: PropTypes.object,
27755
27745
 
27746
+ /**
27747
+ * @ignore
27748
+ */
27749
+ className: PropTypes.string,
27750
+
27756
27751
  /**
27757
27752
  * The color of the component.
27758
27753
  * It supports both default and custom theme colors, which can be added as shown in the
@@ -29251,7 +29246,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
29251
29246
  const dialogContentTextClasses = generateUtilityClasses('MuiDialogContentText', ['root']);
29252
29247
  var dialogContentTextClasses$1 = dialogContentTextClasses;
29253
29248
 
29254
- const _excluded$1p = ["children"];
29249
+ const _excluded$1p = ["children", "className"];
29255
29250
 
29256
29251
  const useUtilityClasses$19 = ownerState => {
29257
29252
  const {
@@ -29276,7 +29271,10 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
29276
29271
  name: 'MuiDialogContentText'
29277
29272
  });
29278
29273
 
29279
- const ownerState = _objectWithoutPropertiesLoose(props, _excluded$1p);
29274
+ const {
29275
+ className
29276
+ } = props,
29277
+ ownerState = _objectWithoutPropertiesLoose(props, _excluded$1p);
29280
29278
 
29281
29279
  const classes = useUtilityClasses$19(ownerState);
29282
29280
  return /*#__PURE__*/jsxRuntime_1(DialogContentTextRoot, _extends({
@@ -29284,7 +29282,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
29284
29282
  variant: "body1",
29285
29283
  color: "text.secondary",
29286
29284
  ref: ref,
29287
- ownerState: ownerState
29285
+ ownerState: ownerState,
29286
+ className: clsx(classes.root, className)
29288
29287
  }, props, {
29289
29288
  classes: classes
29290
29289
  }));
@@ -29307,6 +29306,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
29307
29306
  */
29308
29307
  classes: PropTypes.object,
29309
29308
 
29309
+ /**
29310
+ * @ignore
29311
+ */
29312
+ className: PropTypes.string,
29313
+
29310
29314
  /**
29311
29315
  * The system prop that allows defining system overrides as well as additional CSS styles.
29312
29316
  */
@@ -34971,7 +34975,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
34971
34975
  const inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);
34972
34976
  var inputLabelClasses$1 = inputLabelClasses;
34973
34977
 
34974
- const _excluded$12 = ["disableAnimation", "margin", "shrink", "variant"];
34978
+ const _excluded$12 = ["disableAnimation", "margin", "shrink", "variant", "className"];
34975
34979
 
34976
34980
  const useUtilityClasses$S = ownerState => {
34977
34981
  const {
@@ -35071,7 +35075,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
35071
35075
 
35072
35076
  const {
35073
35077
  disableAnimation = false,
35074
- shrink: shrinkProp
35078
+ shrink: shrinkProp,
35079
+ className
35075
35080
  } = props,
35076
35081
  other = _objectWithoutPropertiesLoose(props, _excluded$12);
35077
35082
 
@@ -35101,7 +35106,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
35101
35106
  return /*#__PURE__*/jsxRuntime_1(InputLabelRoot, _extends({
35102
35107
  "data-shrink": shrink,
35103
35108
  ownerState: ownerState,
35104
- ref: ref
35109
+ ref: ref,
35110
+ className: clsx(classes.root, className)
35105
35111
  }, other, {
35106
35112
  classes: classes
35107
35113
  }));
@@ -35124,6 +35130,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
35124
35130
  */
35125
35131
  classes: PropTypes.object,
35126
35132
 
35133
+ /**
35134
+ * @ignore
35135
+ */
35136
+ className: PropTypes.string,
35137
+
35127
35138
  /**
35128
35139
  * The color of the component.
35129
35140
  * It supports both default and custom theme colors, which can be added as shown in the
@@ -35977,7 +35988,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
35977
35988
  const listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);
35978
35989
  var listItemButtonClasses$1 = listItemButtonClasses;
35979
35990
 
35980
- const _excluded$_ = ["alignItems", "autoFocus", "component", "children", "dense", "disableGutters", "divider", "focusVisibleClassName", "selected"];
35991
+ const _excluded$_ = ["alignItems", "autoFocus", "component", "children", "dense", "disableGutters", "divider", "focusVisibleClassName", "selected", "className"];
35981
35992
  const overridesResolver$3 = (props, styles) => {
35982
35993
  const {
35983
35994
  ownerState
@@ -36079,7 +36090,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
36079
36090
  disableGutters = false,
36080
36091
  divider = false,
36081
36092
  focusVisibleClassName,
36082
- selected = false
36093
+ selected = false,
36094
+ className
36083
36095
  } = props,
36084
36096
  other = _objectWithoutPropertiesLoose(props, _excluded$_);
36085
36097
 
@@ -36117,7 +36129,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
36117
36129
  href: other.href || other.to,
36118
36130
  component: (other.href || other.to) && component === 'div' ? 'a' : component,
36119
36131
  focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),
36120
- ownerState: ownerState
36132
+ ownerState: ownerState,
36133
+ className: clsx(classes.root, className)
36121
36134
  }, other, {
36122
36135
  classes: classes,
36123
36136
  children: children
@@ -36156,6 +36169,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
36156
36169
  */
36157
36170
  classes: PropTypes.object,
36158
36171
 
36172
+ /**
36173
+ * @ignore
36174
+ */
36175
+ className: PropTypes.string,
36176
+
36159
36177
  /**
36160
36178
  * The component used for the root node.
36161
36179
  * Either a string to use a HTML element or a component.
@@ -38174,7 +38192,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
38174
38192
  const menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);
38175
38193
  var menuItemClasses$1 = menuItemClasses;
38176
38194
 
38177
- const _excluded$R = ["autoFocus", "component", "dense", "divider", "disableGutters", "focusVisibleClassName", "role", "tabIndex"];
38195
+ const _excluded$R = ["autoFocus", "component", "dense", "divider", "disableGutters", "focusVisibleClassName", "role", "tabIndex", "className"];
38178
38196
  const overridesResolver$1 = (props, styles) => {
38179
38197
  const {
38180
38198
  ownerState
@@ -38296,7 +38314,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
38296
38314
  disableGutters = false,
38297
38315
  focusVisibleClassName,
38298
38316
  role = 'menuitem',
38299
- tabIndex: tabIndexProp
38317
+ tabIndex: tabIndexProp,
38318
+ className
38300
38319
  } = props,
38301
38320
  other = _objectWithoutPropertiesLoose(props, _excluded$R);
38302
38321
 
@@ -38337,7 +38356,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
38337
38356
  role: role,
38338
38357
  tabIndex: tabIndex,
38339
38358
  component: component,
38340
- focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName)
38359
+ focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),
38360
+ className: clsx(classes.root, className)
38341
38361
  }, other, {
38342
38362
  ownerState: ownerState,
38343
38363
  classes: classes
@@ -38369,6 +38389,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
38369
38389
  */
38370
38390
  classes: PropTypes.object,
38371
38391
 
38392
+ /**
38393
+ * @ignore
38394
+ */
38395
+ className: PropTypes.string,
38396
+
38372
38397
  /**
38373
38398
  * The component used for the root node.
38374
38399
  * Either a string to use a HTML element or a component.
@@ -39027,6 +39052,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
39027
39052
  }) => _extends({
39028
39053
  float: 'unset',
39029
39054
  // Fix conflict with bootstrap
39055
+ width: 'auto',
39056
+ // Fix conflict with bootstrap
39030
39057
  overflow: 'hidden'
39031
39058
  }, !ownerState.withLabel && {
39032
39059
  padding: 0,
@@ -39039,8 +39066,6 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
39039
39066
  }, ownerState.withLabel && _extends({
39040
39067
  display: 'block',
39041
39068
  // Fix conflict with normalize.css and sanitize.css
39042
- width: 'auto',
39043
- // Fix conflict with bootstrap
39044
39069
  padding: 0,
39045
39070
  height: 11,
39046
39071
  // sync with `lineHeight` in `legend` styles
@@ -40361,7 +40386,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
40361
40386
  const radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary']);
40362
40387
  var radioClasses$1 = radioClasses;
40363
40388
 
40364
- const _excluded$I = ["checked", "checkedIcon", "color", "icon", "name", "onChange", "size"];
40389
+ const _excluded$I = ["checked", "checkedIcon", "color", "icon", "name", "onChange", "size", "className"];
40365
40390
 
40366
40391
  const useUtilityClasses$z = ownerState => {
40367
40392
  const {
@@ -40436,7 +40461,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
40436
40461
  icon = defaultIcon$1,
40437
40462
  name: nameProp,
40438
40463
  onChange: onChangeProp,
40439
- size = 'medium'
40464
+ size = 'medium',
40465
+ className
40440
40466
  } = props,
40441
40467
  other = _objectWithoutPropertiesLoose(props, _excluded$I);
40442
40468
 
@@ -40474,7 +40500,8 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
40474
40500
  name: name,
40475
40501
  checked: checked,
40476
40502
  onChange: onChange,
40477
- ref: ref
40503
+ ref: ref,
40504
+ className: clsx(classes.root, className)
40478
40505
  }, other));
40479
40506
  });
40480
40507
  Radio.propTypes
@@ -40501,6 +40528,11 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
40501
40528
  */
40502
40529
  classes: PropTypes.object,
40503
40530
 
40531
+ /**
40532
+ * @ignore
40533
+ */
40534
+ className: PropTypes.string,
40535
+
40504
40536
  /**
40505
40537
  * The color of the component.
40506
40538
  * It supports both default and custom theme colors, which can be added as shown in the
@@ -45293,7 +45325,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
45293
45325
  const handleFocusRef = useForkRef(focusVisibleRef, handleUseRef);
45294
45326
  const handleRef = useForkRef(children.ref, handleFocusRef); // There is no point in displaying an empty tooltip.
45295
45327
 
45296
- if (title === '') {
45328
+ if (typeof title !== 'number' && !title) {
45297
45329
  open = false;
45298
45330
  }
45299
45331
 
@@ -45635,11 +45667,9 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
45635
45667
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
45636
45668
 
45637
45669
  /**
45638
- * Tooltip title. Zero-length titles string are never displayed.
45670
+ * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.
45639
45671
  */
45640
- title: PropTypes
45641
- /* @typescript-to-proptypes-ignore */
45642
- .node.isRequired,
45672
+ title: PropTypes.node,
45643
45673
 
45644
45674
  /**
45645
45675
  * The component used for the transition.
@@ -46656,7 +46686,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
46656
46686
  root: ['root', orientation, error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],
46657
46687
  label: ['label', active && 'active', completed && 'completed', error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],
46658
46688
  iconContainer: ['iconContainer', active && 'active', completed && 'completed', error && 'error', disabled && 'disabled', alternativeLabel && 'alternativeLabel'],
46659
- labelContainer: ['labelContainer']
46689
+ labelContainer: ['labelContainer', alternativeLabel && 'alternativeLabel']
46660
46690
  };
46661
46691
  return composeClasses(slots, getStepLabelUtilityClass, classes);
46662
46692
  };
@@ -46705,7 +46735,6 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
46705
46735
  fontWeight: 500
46706
46736
  },
46707
46737
  [`&.${stepLabelClasses$1.alternativeLabel}`]: {
46708
- textAlign: 'center',
46709
46738
  marginTop: 16
46710
46739
  },
46711
46740
  [`&.${stepLabelClasses$1.error}`]: {
@@ -46733,7 +46762,10 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
46733
46762
  theme
46734
46763
  }) => ({
46735
46764
  width: '100%',
46736
- color: (theme.vars || theme).palette.text.secondary
46765
+ color: (theme.vars || theme).palette.text.secondary,
46766
+ [`&.${stepLabelClasses$1.alternativeLabel}`]: {
46767
+ textAlign: 'center'
46768
+ }
46737
46769
  }));
46738
46770
  const StepLabel = /*#__PURE__*/React__namespace.forwardRef(function StepLabel(inProps, ref) {
46739
46771
  const props = useThemeProps({
@@ -52735,6 +52767,7 @@ See https://mui.com/r/migration-v4/#mui-material-styles for more details.` );
52735
52767
  exports.Tooltip = Tooltip$1;
52736
52768
  exports.Typography = Typography$1;
52737
52769
  exports.Unstable_Grid2 = Grid2$1;
52770
+ exports.Unstable_TrapFocus = FocusTrap;
52738
52771
  exports.Zoom = Zoom$1;
52739
52772
  exports.accordionActionsClasses = accordionActionsClasses$1;
52740
52773
  exports.accordionClasses = accordionClasses$1;