@mui/system 5.16.14 → 5.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/GlobalStyles/GlobalStyles.js +25 -1
- package/ThemeProvider/ThemeProvider.js +4 -2
- package/ThemeProvider/useLayerOrder.d.ts +8 -0
- package/ThemeProvider/useLayerOrder.js +62 -0
- package/createStyled.js +23 -11
- package/esm/GlobalStyles/GlobalStyles.js +26 -2
- package/esm/ThemeProvider/ThemeProvider.js +5 -2
- package/esm/ThemeProvider/useLayerOrder.js +56 -0
- package/esm/createStyled.js +24 -12
- package/esm/styleFunctionSx/styleFunctionSx.js +9 -2
- package/esm/version/index.js +3 -3
- package/index.js +1 -1
- package/legacy/GlobalStyles/GlobalStyles.js +26 -2
- package/legacy/ThemeProvider/ThemeProvider.js +5 -2
- package/legacy/ThemeProvider/useLayerOrder.js +54 -0
- package/legacy/createStyled.js +28 -16
- package/legacy/index.js +1 -1
- package/legacy/styleFunctionSx/styleFunctionSx.js +9 -2
- package/legacy/version/index.js +3 -3
- package/modern/GlobalStyles/GlobalStyles.js +26 -2
- package/modern/ThemeProvider/ThemeProvider.js +5 -2
- package/modern/ThemeProvider/useLayerOrder.js +54 -0
- package/modern/createStyled.js +24 -12
- package/modern/index.js +1 -1
- package/modern/styleFunctionSx/styleFunctionSx.js +9 -2
- package/modern/version/index.js +3 -3
- package/package.json +5 -5
- package/styleFunctionSx/styleFunctionSx.js +9 -2
- package/version/index.js +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,52 @@
|
|
|
1
1
|
# [Versions](https://mui.com/versions/)
|
|
2
2
|
|
|
3
|
+
## 5.18.0
|
|
4
|
+
|
|
5
|
+
<!-- generated comparing v5.17.1..v5.x -->
|
|
6
|
+
|
|
7
|
+
_Jun 26, 2025_
|
|
8
|
+
|
|
9
|
+
A big thanks to the 2 contributors who made this release possible.
|
|
10
|
+
|
|
11
|
+
CSS layers make it easier to override styles by splitting a single style sheet into multiple layers.
|
|
12
|
+
To learn more, check out the [CSS layers documentation](https://v5.mui.com/material-ui/customization/css-layers/).
|
|
13
|
+
|
|
14
|
+
### `@mui/system@5.18.0`
|
|
15
|
+
|
|
16
|
+
- Backport CSS layers from v7 (#46320) @siriwatknp
|
|
17
|
+
|
|
18
|
+
### `@mui/material-nextjs@5.18.0`
|
|
19
|
+
|
|
20
|
+
- Backport CSS layers from v7 (#46320) @siriwatknp
|
|
21
|
+
|
|
22
|
+
### Docs
|
|
23
|
+
|
|
24
|
+
- Ease migration to v5 (#45991) @oliviertassinari
|
|
25
|
+
- Add AccordionSummary to the breaking change migration (@siriwatknp) (#45972) @siriwatknp
|
|
26
|
+
|
|
27
|
+
All contributors of this release in alphabetical order: @oliviertassinari, @siriwatknp
|
|
28
|
+
|
|
29
|
+
## v5.17.1
|
|
30
|
+
|
|
31
|
+
<!-- generated comparing v5.17.0..v5.x -->
|
|
32
|
+
|
|
33
|
+
_Mar 18, 2025_
|
|
34
|
+
|
|
35
|
+
This release fixes the `@mui/types` dependencies in all packages to fix a package layout bug (#45612) @DiegoAndai
|
|
36
|
+
|
|
37
|
+
## v5.17.0
|
|
38
|
+
|
|
39
|
+
_Mar 18, 2025_
|
|
40
|
+
|
|
41
|
+
A big thanks to the 2 contributors who made this release possible.
|
|
42
|
+
|
|
43
|
+
### `@mui/material@5.17.0`
|
|
44
|
+
|
|
45
|
+
- [TextareaAutosize] Temporarily disconnect ResizeObserver to avoid loop error (#44540) (#45238) @DiegoAndai
|
|
46
|
+
- Support nested theme when upper theme is CSS vars theme (#45604) @siriwatknp
|
|
47
|
+
|
|
48
|
+
All contributors of this release in alphabetical order: @DiegoAndai, @siriwatknp
|
|
49
|
+
|
|
3
50
|
## v5.16.14
|
|
4
51
|
|
|
5
52
|
<!-- generated comparing v5.16.13..v5.x -->
|
|
@@ -13,13 +13,37 @@ var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
|
13
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
14
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
15
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
+
function wrapGlobalLayer(styles) {
|
|
17
|
+
const serialized = (0, _styledEngine.internal_serializeStyles)(styles);
|
|
18
|
+
if (styles !== serialized && serialized.styles) {
|
|
19
|
+
if (!serialized.styles.match(/^@layer\s+[^{]*$/)) {
|
|
20
|
+
// If the styles are not already wrapped in a layer, wrap them in a global layer.
|
|
21
|
+
serialized.styles = `@layer global{${serialized.styles}}`;
|
|
22
|
+
}
|
|
23
|
+
return serialized;
|
|
24
|
+
}
|
|
25
|
+
return styles;
|
|
26
|
+
}
|
|
16
27
|
function GlobalStyles({
|
|
17
28
|
styles,
|
|
18
29
|
themeId,
|
|
19
30
|
defaultTheme = {}
|
|
20
31
|
}) {
|
|
21
32
|
const upperTheme = (0, _useTheme.default)(defaultTheme);
|
|
22
|
-
const
|
|
33
|
+
const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;
|
|
34
|
+
let globalStyles = typeof styles === 'function' ? styles(resolvedTheme) : styles;
|
|
35
|
+
if (resolvedTheme.modularCssLayers) {
|
|
36
|
+
if (Array.isArray(globalStyles)) {
|
|
37
|
+
globalStyles = globalStyles.map(styleArg => {
|
|
38
|
+
if (typeof styleArg === 'function') {
|
|
39
|
+
return wrapGlobalLayer(styleArg(resolvedTheme));
|
|
40
|
+
}
|
|
41
|
+
return wrapGlobalLayer(styleArg);
|
|
42
|
+
});
|
|
43
|
+
} else {
|
|
44
|
+
globalStyles = wrapGlobalLayer(globalStyles);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
23
47
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_styledEngine.GlobalStyles, {
|
|
24
48
|
styles: globalStyles
|
|
25
49
|
});
|
|
@@ -15,6 +15,7 @@ var _styledEngine = require("@mui/styled-engine");
|
|
|
15
15
|
var _useThemeWithoutDefault = _interopRequireDefault(require("../useThemeWithoutDefault"));
|
|
16
16
|
var _RtlProvider = _interopRequireDefault(require("../RtlProvider"));
|
|
17
17
|
var _DefaultPropsProvider = _interopRequireDefault(require("../DefaultPropsProvider"));
|
|
18
|
+
var _useLayerOrder = _interopRequireDefault(require("./useLayerOrder"));
|
|
18
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
20
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
20
21
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -63,15 +64,16 @@ function ThemeProvider(props) {
|
|
|
63
64
|
const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);
|
|
64
65
|
const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);
|
|
65
66
|
const rtlValue = engineTheme.direction === 'rtl';
|
|
67
|
+
const layerOrder = (0, _useLayerOrder.default)(engineTheme);
|
|
66
68
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_privateTheming.ThemeProvider, {
|
|
67
69
|
theme: privateTheme,
|
|
68
70
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_styledEngine.ThemeContext.Provider, {
|
|
69
71
|
value: engineTheme,
|
|
70
72
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_RtlProvider.default, {
|
|
71
73
|
value: rtlValue,
|
|
72
|
-
children: /*#__PURE__*/(0, _jsxRuntime.
|
|
74
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_DefaultPropsProvider.default, {
|
|
73
75
|
value: engineTheme == null ? void 0 : engineTheme.components,
|
|
74
|
-
children: children
|
|
76
|
+
children: [layerOrder, children]
|
|
75
77
|
})
|
|
76
78
|
})
|
|
77
79
|
})
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* This hook returns a `GlobalStyles` component that sets the CSS layer order (for server-side rendering).
|
|
4
|
+
* Then on client-side, it injects the CSS layer order into the document head to ensure that the layer order is always present first before other Emotion styles.
|
|
5
|
+
*/
|
|
6
|
+
export default function useLayerOrder(theme: {
|
|
7
|
+
modularCssLayers?: boolean | string;
|
|
8
|
+
}): React.JSX.Element | null;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = useLayerOrder;
|
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
11
|
+
var _useId = _interopRequireDefault(require("@mui/utils/useId"));
|
|
12
|
+
var _GlobalStyles = _interopRequireDefault(require("../GlobalStyles"));
|
|
13
|
+
var _useThemeWithoutDefault = _interopRequireDefault(require("../useThemeWithoutDefault"));
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
+
/**
|
|
18
|
+
* This hook returns a `GlobalStyles` component that sets the CSS layer order (for server-side rendering).
|
|
19
|
+
* Then on client-side, it injects the CSS layer order into the document head to ensure that the layer order is always present first before other Emotion styles.
|
|
20
|
+
*/function useLayerOrder(theme) {
|
|
21
|
+
const upperTheme = (0, _useThemeWithoutDefault.default)();
|
|
22
|
+
const id = (0, _useId.default)() || '';
|
|
23
|
+
const {
|
|
24
|
+
modularCssLayers
|
|
25
|
+
} = theme;
|
|
26
|
+
let layerOrder = 'mui.global, mui.components, mui.theme, mui.custom, mui.sx';
|
|
27
|
+
if (!modularCssLayers || upperTheme !== null) {
|
|
28
|
+
// skip this hook if upper theme exists.
|
|
29
|
+
layerOrder = '';
|
|
30
|
+
} else if (typeof modularCssLayers === 'string') {
|
|
31
|
+
layerOrder = modularCssLayers.replace(/mui(?!\.)/g, layerOrder);
|
|
32
|
+
} else {
|
|
33
|
+
layerOrder = `@layer ${layerOrder};`;
|
|
34
|
+
}
|
|
35
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
36
|
+
const head = document.querySelector('head');
|
|
37
|
+
if (!head) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const firstChild = head.firstChild;
|
|
41
|
+
if (layerOrder) {
|
|
42
|
+
var _firstChild$hasAttrib;
|
|
43
|
+
// Only insert if first child doesn't have data-mui-layer-order attribute
|
|
44
|
+
if (firstChild && (_firstChild$hasAttrib = firstChild.hasAttribute) != null && _firstChild$hasAttrib.call(firstChild, 'data-mui-layer-order') && firstChild.getAttribute('data-mui-layer-order') === id) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const styleElement = document.createElement('style');
|
|
48
|
+
styleElement.setAttribute('data-mui-layer-order', id);
|
|
49
|
+
styleElement.textContent = layerOrder;
|
|
50
|
+
head.prepend(styleElement);
|
|
51
|
+
} else {
|
|
52
|
+
var _head$querySelector;
|
|
53
|
+
(_head$querySelector = head.querySelector(`style[data-mui-layer-order="${id}"]`)) == null || _head$querySelector.remove();
|
|
54
|
+
}
|
|
55
|
+
}, [layerOrder, id]);
|
|
56
|
+
if (!layerOrder) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GlobalStyles.default, {
|
|
60
|
+
styles: layerOrder
|
|
61
|
+
});
|
|
62
|
+
}
|
package/createStyled.js
CHANGED
|
@@ -38,6 +38,13 @@ function isStringTag(tag) {
|
|
|
38
38
|
function shouldForwardProp(prop) {
|
|
39
39
|
return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';
|
|
40
40
|
}
|
|
41
|
+
function shallowLayer(serialized, layerName) {
|
|
42
|
+
if (layerName && serialized && typeof serialized === 'object' && serialized.styles && !serialized.styles.startsWith('@layer') // only add the layer if it is not already there.
|
|
43
|
+
) {
|
|
44
|
+
serialized.styles = `@layer ${layerName}{${String(serialized.styles)}}`;
|
|
45
|
+
}
|
|
46
|
+
return serialized;
|
|
47
|
+
}
|
|
41
48
|
const systemDefaultTheme = exports.systemDefaultTheme = (0, _createTheme.default)();
|
|
42
49
|
const lowercaseFirstLetter = string => {
|
|
43
50
|
if (!string) {
|
|
@@ -58,7 +65,7 @@ function defaultOverridesResolver(slot) {
|
|
|
58
65
|
}
|
|
59
66
|
return (props, styles) => styles[slot];
|
|
60
67
|
}
|
|
61
|
-
function processStyleArg(callableStyle, _ref) {
|
|
68
|
+
function processStyleArg(callableStyle, _ref, layerName) {
|
|
62
69
|
let {
|
|
63
70
|
ownerState
|
|
64
71
|
} = _ref,
|
|
@@ -69,7 +76,7 @@ function processStyleArg(callableStyle, _ref) {
|
|
|
69
76
|
if (Array.isArray(resolvedStylesArg)) {
|
|
70
77
|
return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, (0, _extends2.default)({
|
|
71
78
|
ownerState
|
|
72
|
-
}, props)));
|
|
79
|
+
}, props), layerName));
|
|
73
80
|
}
|
|
74
81
|
if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {
|
|
75
82
|
const {
|
|
@@ -94,14 +101,15 @@ function processStyleArg(callableStyle, _ref) {
|
|
|
94
101
|
if (!Array.isArray(result)) {
|
|
95
102
|
result = [result];
|
|
96
103
|
}
|
|
97
|
-
|
|
104
|
+
const variantStyle = typeof variant.style === 'function' ? variant.style((0, _extends2.default)({
|
|
98
105
|
ownerState
|
|
99
|
-
}, props, ownerState)) : variant.style
|
|
106
|
+
}, props, ownerState)) : variant.style;
|
|
107
|
+
result.push(layerName ? shallowLayer((0, _styledEngine.internal_serializeStyles)(variantStyle), layerName) : variantStyle);
|
|
100
108
|
}
|
|
101
109
|
});
|
|
102
110
|
return result;
|
|
103
111
|
}
|
|
104
|
-
return resolvedStylesArg;
|
|
112
|
+
return layerName ? shallowLayer((0, _styledEngine.internal_serializeStyles)(resolvedStylesArg), layerName) : resolvedStylesArg;
|
|
105
113
|
}
|
|
106
114
|
function createStyled(input = {}) {
|
|
107
115
|
const {
|
|
@@ -132,6 +140,7 @@ function createStyled(input = {}) {
|
|
|
132
140
|
overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))
|
|
133
141
|
} = inputOptions,
|
|
134
142
|
options = (0, _objectWithoutPropertiesLoose2.default)(inputOptions, _excluded3);
|
|
143
|
+
const layerName = componentName && componentName.startsWith('Mui') || !!componentSlot ? 'components' : 'custom';
|
|
135
144
|
|
|
136
145
|
// if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.
|
|
137
146
|
const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :
|
|
@@ -169,13 +178,16 @@ function createStyled(input = {}) {
|
|
|
169
178
|
// component stays as a function. This condition makes sure that we do not interpolate functions
|
|
170
179
|
// which are basically components used as a selectors.
|
|
171
180
|
if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || (0, _deepmerge.isPlainObject)(stylesArg)) {
|
|
172
|
-
return props =>
|
|
173
|
-
theme
|
|
181
|
+
return props => {
|
|
182
|
+
const theme = resolveTheme({
|
|
174
183
|
theme: props.theme,
|
|
175
184
|
defaultTheme,
|
|
176
185
|
themeId
|
|
177
|
-
})
|
|
178
|
-
|
|
186
|
+
});
|
|
187
|
+
return processStyleArg(stylesArg, (0, _extends2.default)({}, props, {
|
|
188
|
+
theme
|
|
189
|
+
}), theme.modularCssLayers ? layerName : undefined);
|
|
190
|
+
};
|
|
179
191
|
}
|
|
180
192
|
return stylesArg;
|
|
181
193
|
};
|
|
@@ -197,7 +209,7 @@ function createStyled(input = {}) {
|
|
|
197
209
|
Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {
|
|
198
210
|
resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, (0, _extends2.default)({}, props, {
|
|
199
211
|
theme
|
|
200
|
-
}));
|
|
212
|
+
}), theme.modularCssLayers ? 'theme' : undefined);
|
|
201
213
|
});
|
|
202
214
|
return overridesResolver(props, resolvedStyleOverrides);
|
|
203
215
|
});
|
|
@@ -214,7 +226,7 @@ function createStyled(input = {}) {
|
|
|
214
226
|
variants: themeVariants
|
|
215
227
|
}, (0, _extends2.default)({}, props, {
|
|
216
228
|
theme
|
|
217
|
-
}));
|
|
229
|
+
}), theme.modularCssLayers ? 'theme' : undefined);
|
|
218
230
|
});
|
|
219
231
|
}
|
|
220
232
|
if (!skipSx) {
|
|
@@ -2,16 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
-
import { GlobalStyles as MuiGlobalStyles } from '@mui/styled-engine';
|
|
5
|
+
import { GlobalStyles as MuiGlobalStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';
|
|
6
6
|
import useTheme from '../useTheme';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
function wrapGlobalLayer(styles) {
|
|
9
|
+
const serialized = serializeStyles(styles);
|
|
10
|
+
if (styles !== serialized && serialized.styles) {
|
|
11
|
+
if (!serialized.styles.match(/^@layer\s+[^{]*$/)) {
|
|
12
|
+
// If the styles are not already wrapped in a layer, wrap them in a global layer.
|
|
13
|
+
serialized.styles = `@layer global{${serialized.styles}}`;
|
|
14
|
+
}
|
|
15
|
+
return serialized;
|
|
16
|
+
}
|
|
17
|
+
return styles;
|
|
18
|
+
}
|
|
8
19
|
function GlobalStyles({
|
|
9
20
|
styles,
|
|
10
21
|
themeId,
|
|
11
22
|
defaultTheme = {}
|
|
12
23
|
}) {
|
|
13
24
|
const upperTheme = useTheme(defaultTheme);
|
|
14
|
-
const
|
|
25
|
+
const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;
|
|
26
|
+
let globalStyles = typeof styles === 'function' ? styles(resolvedTheme) : styles;
|
|
27
|
+
if (resolvedTheme.modularCssLayers) {
|
|
28
|
+
if (Array.isArray(globalStyles)) {
|
|
29
|
+
globalStyles = globalStyles.map(styleArg => {
|
|
30
|
+
if (typeof styleArg === 'function') {
|
|
31
|
+
return wrapGlobalLayer(styleArg(resolvedTheme));
|
|
32
|
+
}
|
|
33
|
+
return wrapGlobalLayer(styleArg);
|
|
34
|
+
});
|
|
35
|
+
} else {
|
|
36
|
+
globalStyles = wrapGlobalLayer(globalStyles);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
15
39
|
return /*#__PURE__*/_jsx(MuiGlobalStyles, {
|
|
16
40
|
styles: globalStyles
|
|
17
41
|
});
|
|
@@ -9,6 +9,8 @@ import { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';
|
|
|
9
9
|
import useThemeWithoutDefault from '../useThemeWithoutDefault';
|
|
10
10
|
import RtlProvider from '../RtlProvider';
|
|
11
11
|
import DefaultPropsProvider from '../DefaultPropsProvider';
|
|
12
|
+
import useLayerOrder from './useLayerOrder';
|
|
13
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
15
|
const EMPTY_THEME = {};
|
|
14
16
|
function useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {
|
|
@@ -55,15 +57,16 @@ function ThemeProvider(props) {
|
|
|
55
57
|
const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);
|
|
56
58
|
const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);
|
|
57
59
|
const rtlValue = engineTheme.direction === 'rtl';
|
|
60
|
+
const layerOrder = useLayerOrder(engineTheme);
|
|
58
61
|
return /*#__PURE__*/_jsx(MuiThemeProvider, {
|
|
59
62
|
theme: privateTheme,
|
|
60
63
|
children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {
|
|
61
64
|
value: engineTheme,
|
|
62
65
|
children: /*#__PURE__*/_jsx(RtlProvider, {
|
|
63
66
|
value: rtlValue,
|
|
64
|
-
children: /*#__PURE__*/
|
|
67
|
+
children: /*#__PURE__*/_jsxs(DefaultPropsProvider, {
|
|
65
68
|
value: engineTheme == null ? void 0 : engineTheme.components,
|
|
66
|
-
children: children
|
|
69
|
+
children: [layerOrder, children]
|
|
67
70
|
})
|
|
68
71
|
})
|
|
69
72
|
})
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
5
|
+
import useId from '@mui/utils/useId';
|
|
6
|
+
import GlobalStyles from '../GlobalStyles';
|
|
7
|
+
import useThemeWithoutDefault from '../useThemeWithoutDefault';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* This hook returns a `GlobalStyles` component that sets the CSS layer order (for server-side rendering).
|
|
11
|
+
* Then on client-side, it injects the CSS layer order into the document head to ensure that the layer order is always present first before other Emotion styles.
|
|
12
|
+
*/
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
export default function useLayerOrder(theme) {
|
|
15
|
+
const upperTheme = useThemeWithoutDefault();
|
|
16
|
+
const id = useId() || '';
|
|
17
|
+
const {
|
|
18
|
+
modularCssLayers
|
|
19
|
+
} = theme;
|
|
20
|
+
let layerOrder = 'mui.global, mui.components, mui.theme, mui.custom, mui.sx';
|
|
21
|
+
if (!modularCssLayers || upperTheme !== null) {
|
|
22
|
+
// skip this hook if upper theme exists.
|
|
23
|
+
layerOrder = '';
|
|
24
|
+
} else if (typeof modularCssLayers === 'string') {
|
|
25
|
+
layerOrder = modularCssLayers.replace(/mui(?!\.)/g, layerOrder);
|
|
26
|
+
} else {
|
|
27
|
+
layerOrder = `@layer ${layerOrder};`;
|
|
28
|
+
}
|
|
29
|
+
useEnhancedEffect(() => {
|
|
30
|
+
const head = document.querySelector('head');
|
|
31
|
+
if (!head) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const firstChild = head.firstChild;
|
|
35
|
+
if (layerOrder) {
|
|
36
|
+
var _firstChild$hasAttrib;
|
|
37
|
+
// Only insert if first child doesn't have data-mui-layer-order attribute
|
|
38
|
+
if (firstChild && (_firstChild$hasAttrib = firstChild.hasAttribute) != null && _firstChild$hasAttrib.call(firstChild, 'data-mui-layer-order') && firstChild.getAttribute('data-mui-layer-order') === id) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const styleElement = document.createElement('style');
|
|
42
|
+
styleElement.setAttribute('data-mui-layer-order', id);
|
|
43
|
+
styleElement.textContent = layerOrder;
|
|
44
|
+
head.prepend(styleElement);
|
|
45
|
+
} else {
|
|
46
|
+
var _head$querySelector;
|
|
47
|
+
(_head$querySelector = head.querySelector(`style[data-mui-layer-order="${id}"]`)) == null || _head$querySelector.remove();
|
|
48
|
+
}
|
|
49
|
+
}, [layerOrder, id]);
|
|
50
|
+
if (!layerOrder) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return /*#__PURE__*/_jsx(GlobalStyles, {
|
|
54
|
+
styles: layerOrder
|
|
55
|
+
});
|
|
56
|
+
}
|
package/esm/createStyled.js
CHANGED
|
@@ -4,7 +4,7 @@ const _excluded = ["ownerState"],
|
|
|
4
4
|
_excluded2 = ["variants"],
|
|
5
5
|
_excluded3 = ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"];
|
|
6
6
|
/* eslint-disable no-underscore-dangle */
|
|
7
|
-
import styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';
|
|
7
|
+
import styledEngineStyled, { internal_processStyles as processStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';
|
|
8
8
|
import { isPlainObject } from '@mui/utils/deepmerge';
|
|
9
9
|
import capitalize from '@mui/utils/capitalize';
|
|
10
10
|
import getDisplayName from '@mui/utils/getDisplayName';
|
|
@@ -27,6 +27,13 @@ function isStringTag(tag) {
|
|
|
27
27
|
export function shouldForwardProp(prop) {
|
|
28
28
|
return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';
|
|
29
29
|
}
|
|
30
|
+
function shallowLayer(serialized, layerName) {
|
|
31
|
+
if (layerName && serialized && typeof serialized === 'object' && serialized.styles && !serialized.styles.startsWith('@layer') // only add the layer if it is not already there.
|
|
32
|
+
) {
|
|
33
|
+
serialized.styles = `@layer ${layerName}{${String(serialized.styles)}}`;
|
|
34
|
+
}
|
|
35
|
+
return serialized;
|
|
36
|
+
}
|
|
30
37
|
export const systemDefaultTheme = createTheme();
|
|
31
38
|
const lowercaseFirstLetter = string => {
|
|
32
39
|
if (!string) {
|
|
@@ -47,7 +54,7 @@ function defaultOverridesResolver(slot) {
|
|
|
47
54
|
}
|
|
48
55
|
return (props, styles) => styles[slot];
|
|
49
56
|
}
|
|
50
|
-
function processStyleArg(callableStyle, _ref) {
|
|
57
|
+
function processStyleArg(callableStyle, _ref, layerName) {
|
|
51
58
|
let {
|
|
52
59
|
ownerState
|
|
53
60
|
} = _ref,
|
|
@@ -58,7 +65,7 @@ function processStyleArg(callableStyle, _ref) {
|
|
|
58
65
|
if (Array.isArray(resolvedStylesArg)) {
|
|
59
66
|
return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, _extends({
|
|
60
67
|
ownerState
|
|
61
|
-
}, props)));
|
|
68
|
+
}, props), layerName));
|
|
62
69
|
}
|
|
63
70
|
if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {
|
|
64
71
|
const {
|
|
@@ -83,14 +90,15 @@ function processStyleArg(callableStyle, _ref) {
|
|
|
83
90
|
if (!Array.isArray(result)) {
|
|
84
91
|
result = [result];
|
|
85
92
|
}
|
|
86
|
-
|
|
93
|
+
const variantStyle = typeof variant.style === 'function' ? variant.style(_extends({
|
|
87
94
|
ownerState
|
|
88
|
-
}, props, ownerState)) : variant.style
|
|
95
|
+
}, props, ownerState)) : variant.style;
|
|
96
|
+
result.push(layerName ? shallowLayer(serializeStyles(variantStyle), layerName) : variantStyle);
|
|
89
97
|
}
|
|
90
98
|
});
|
|
91
99
|
return result;
|
|
92
100
|
}
|
|
93
|
-
return resolvedStylesArg;
|
|
101
|
+
return layerName ? shallowLayer(serializeStyles(resolvedStylesArg), layerName) : resolvedStylesArg;
|
|
94
102
|
}
|
|
95
103
|
export default function createStyled(input = {}) {
|
|
96
104
|
const {
|
|
@@ -121,6 +129,7 @@ export default function createStyled(input = {}) {
|
|
|
121
129
|
overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))
|
|
122
130
|
} = inputOptions,
|
|
123
131
|
options = _objectWithoutPropertiesLoose(inputOptions, _excluded3);
|
|
132
|
+
const layerName = componentName && componentName.startsWith('Mui') || !!componentSlot ? 'components' : 'custom';
|
|
124
133
|
|
|
125
134
|
// if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.
|
|
126
135
|
const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :
|
|
@@ -158,13 +167,16 @@ export default function createStyled(input = {}) {
|
|
|
158
167
|
// component stays as a function. This condition makes sure that we do not interpolate functions
|
|
159
168
|
// which are basically components used as a selectors.
|
|
160
169
|
if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {
|
|
161
|
-
return props =>
|
|
162
|
-
theme
|
|
170
|
+
return props => {
|
|
171
|
+
const theme = resolveTheme({
|
|
163
172
|
theme: props.theme,
|
|
164
173
|
defaultTheme,
|
|
165
174
|
themeId
|
|
166
|
-
})
|
|
167
|
-
|
|
175
|
+
});
|
|
176
|
+
return processStyleArg(stylesArg, _extends({}, props, {
|
|
177
|
+
theme
|
|
178
|
+
}), theme.modularCssLayers ? layerName : undefined);
|
|
179
|
+
};
|
|
168
180
|
}
|
|
169
181
|
return stylesArg;
|
|
170
182
|
};
|
|
@@ -186,7 +198,7 @@ export default function createStyled(input = {}) {
|
|
|
186
198
|
Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {
|
|
187
199
|
resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {
|
|
188
200
|
theme
|
|
189
|
-
}));
|
|
201
|
+
}), theme.modularCssLayers ? 'theme' : undefined);
|
|
190
202
|
});
|
|
191
203
|
return overridesResolver(props, resolvedStyleOverrides);
|
|
192
204
|
});
|
|
@@ -203,7 +215,7 @@ export default function createStyled(input = {}) {
|
|
|
203
215
|
variants: themeVariants
|
|
204
216
|
}, _extends({}, props, {
|
|
205
217
|
theme
|
|
206
|
-
}));
|
|
218
|
+
}), theme.modularCssLayers ? 'theme' : undefined);
|
|
207
219
|
});
|
|
208
220
|
}
|
|
209
221
|
if (!skipSx) {
|
|
@@ -64,7 +64,8 @@ export function unstable_createStyleFunctionSx() {
|
|
|
64
64
|
var _theme$unstable_sxCon;
|
|
65
65
|
const {
|
|
66
66
|
sx,
|
|
67
|
-
theme = {}
|
|
67
|
+
theme = {},
|
|
68
|
+
nested
|
|
68
69
|
} = props || {};
|
|
69
70
|
if (!sx) {
|
|
70
71
|
return null; // Emotion & styled-components will neglect null
|
|
@@ -105,7 +106,8 @@ export function unstable_createStyleFunctionSx() {
|
|
|
105
106
|
if (objectsHaveSameKeys(breakpointsValues, value)) {
|
|
106
107
|
css[styleKey] = styleFunctionSx({
|
|
107
108
|
sx: value,
|
|
108
|
-
theme
|
|
109
|
+
theme,
|
|
110
|
+
nested: true
|
|
109
111
|
});
|
|
110
112
|
} else {
|
|
111
113
|
css = merge(css, breakpointsValues);
|
|
@@ -116,6 +118,11 @@ export function unstable_createStyleFunctionSx() {
|
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
120
|
});
|
|
121
|
+
if (!nested && theme.modularCssLayers) {
|
|
122
|
+
return {
|
|
123
|
+
'@layer sx': removeUnusedBreakpoints(breakpointsKeys, css)
|
|
124
|
+
};
|
|
125
|
+
}
|
|
119
126
|
return removeUnusedBreakpoints(breakpointsKeys, css);
|
|
120
127
|
}
|
|
121
128
|
return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);
|
package/esm/version/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export const version = "5.
|
|
1
|
+
export const version = "5.18.0";
|
|
2
2
|
export const major = Number("5");
|
|
3
|
-
export const minor = Number("
|
|
4
|
-
export const patch = Number("
|
|
3
|
+
export const minor = Number("18");
|
|
4
|
+
export const patch = Number("0");
|
|
5
5
|
export const preReleaseLabel = undefined || null;
|
|
6
6
|
export const preReleaseNumber = Number(undefined) || null;
|
|
7
7
|
export default version;
|
package/index.js
CHANGED
|
@@ -2,16 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
-
import { GlobalStyles as MuiGlobalStyles } from '@mui/styled-engine';
|
|
5
|
+
import { GlobalStyles as MuiGlobalStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';
|
|
6
6
|
import useTheme from '../useTheme';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
function wrapGlobalLayer(styles) {
|
|
9
|
+
var serialized = serializeStyles(styles);
|
|
10
|
+
if (styles !== serialized && serialized.styles) {
|
|
11
|
+
if (!serialized.styles.match(/^@layer\s+[^{]*$/)) {
|
|
12
|
+
// If the styles are not already wrapped in a layer, wrap them in a global layer.
|
|
13
|
+
serialized.styles = "@layer global{".concat(serialized.styles, "}");
|
|
14
|
+
}
|
|
15
|
+
return serialized;
|
|
16
|
+
}
|
|
17
|
+
return styles;
|
|
18
|
+
}
|
|
8
19
|
function GlobalStyles(_ref) {
|
|
9
20
|
var styles = _ref.styles,
|
|
10
21
|
themeId = _ref.themeId,
|
|
11
22
|
_ref$defaultTheme = _ref.defaultTheme,
|
|
12
23
|
defaultTheme = _ref$defaultTheme === void 0 ? {} : _ref$defaultTheme;
|
|
13
24
|
var upperTheme = useTheme(defaultTheme);
|
|
14
|
-
var
|
|
25
|
+
var resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;
|
|
26
|
+
var globalStyles = typeof styles === 'function' ? styles(resolvedTheme) : styles;
|
|
27
|
+
if (resolvedTheme.modularCssLayers) {
|
|
28
|
+
if (Array.isArray(globalStyles)) {
|
|
29
|
+
globalStyles = globalStyles.map(function (styleArg) {
|
|
30
|
+
if (typeof styleArg === 'function') {
|
|
31
|
+
return wrapGlobalLayer(styleArg(resolvedTheme));
|
|
32
|
+
}
|
|
33
|
+
return wrapGlobalLayer(styleArg);
|
|
34
|
+
});
|
|
35
|
+
} else {
|
|
36
|
+
globalStyles = wrapGlobalLayer(globalStyles);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
15
39
|
return /*#__PURE__*/_jsx(MuiGlobalStyles, {
|
|
16
40
|
styles: globalStyles
|
|
17
41
|
});
|
|
@@ -10,6 +10,8 @@ import { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';
|
|
|
10
10
|
import useThemeWithoutDefault from '../useThemeWithoutDefault';
|
|
11
11
|
import RtlProvider from '../RtlProvider';
|
|
12
12
|
import DefaultPropsProvider from '../DefaultPropsProvider';
|
|
13
|
+
import useLayerOrder from './useLayerOrder';
|
|
14
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
15
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
16
|
var EMPTY_THEME = {};
|
|
15
17
|
function useThemeScoping(themeId, upperTheme, localTheme) {
|
|
@@ -53,15 +55,16 @@ function ThemeProvider(props) {
|
|
|
53
55
|
var engineTheme = useThemeScoping(themeId, upperTheme, localTheme);
|
|
54
56
|
var privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);
|
|
55
57
|
var rtlValue = engineTheme.direction === 'rtl';
|
|
58
|
+
var layerOrder = useLayerOrder(engineTheme);
|
|
56
59
|
return /*#__PURE__*/_jsx(MuiThemeProvider, {
|
|
57
60
|
theme: privateTheme,
|
|
58
61
|
children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {
|
|
59
62
|
value: engineTheme,
|
|
60
63
|
children: /*#__PURE__*/_jsx(RtlProvider, {
|
|
61
64
|
value: rtlValue,
|
|
62
|
-
children: /*#__PURE__*/
|
|
65
|
+
children: /*#__PURE__*/_jsxs(DefaultPropsProvider, {
|
|
63
66
|
value: engineTheme == null ? void 0 : engineTheme.components,
|
|
64
|
-
children: children
|
|
67
|
+
children: [layerOrder, children]
|
|
65
68
|
})
|
|
66
69
|
})
|
|
67
70
|
})
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
5
|
+
import useId from '@mui/utils/useId';
|
|
6
|
+
import GlobalStyles from '../GlobalStyles';
|
|
7
|
+
import useThemeWithoutDefault from '../useThemeWithoutDefault';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* This hook returns a `GlobalStyles` component that sets the CSS layer order (for server-side rendering).
|
|
11
|
+
* Then on client-side, it injects the CSS layer order into the document head to ensure that the layer order is always present first before other Emotion styles.
|
|
12
|
+
*/
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
export default function useLayerOrder(theme) {
|
|
15
|
+
var upperTheme = useThemeWithoutDefault();
|
|
16
|
+
var id = useId() || '';
|
|
17
|
+
var modularCssLayers = theme.modularCssLayers;
|
|
18
|
+
var layerOrder = 'mui.global, mui.components, mui.theme, mui.custom, mui.sx';
|
|
19
|
+
if (!modularCssLayers || upperTheme !== null) {
|
|
20
|
+
// skip this hook if upper theme exists.
|
|
21
|
+
layerOrder = '';
|
|
22
|
+
} else if (typeof modularCssLayers === 'string') {
|
|
23
|
+
layerOrder = modularCssLayers.replace(/mui(?!\.)/g, layerOrder);
|
|
24
|
+
} else {
|
|
25
|
+
layerOrder = "@layer ".concat(layerOrder, ";");
|
|
26
|
+
}
|
|
27
|
+
useEnhancedEffect(function () {
|
|
28
|
+
var head = document.querySelector('head');
|
|
29
|
+
if (!head) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
var firstChild = head.firstChild;
|
|
33
|
+
if (layerOrder) {
|
|
34
|
+
var _firstChild$hasAttrib;
|
|
35
|
+
// Only insert if first child doesn't have data-mui-layer-order attribute
|
|
36
|
+
if (firstChild && (_firstChild$hasAttrib = firstChild.hasAttribute) != null && _firstChild$hasAttrib.call(firstChild, 'data-mui-layer-order') && firstChild.getAttribute('data-mui-layer-order') === id) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
var styleElement = document.createElement('style');
|
|
40
|
+
styleElement.setAttribute('data-mui-layer-order', id);
|
|
41
|
+
styleElement.textContent = layerOrder;
|
|
42
|
+
head.prepend(styleElement);
|
|
43
|
+
} else {
|
|
44
|
+
var _head$querySelector;
|
|
45
|
+
(_head$querySelector = head.querySelector("style[data-mui-layer-order=\"".concat(id, "\"]"))) == null || _head$querySelector.remove();
|
|
46
|
+
}
|
|
47
|
+
}, [layerOrder, id]);
|
|
48
|
+
if (!layerOrder) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return /*#__PURE__*/_jsx(GlobalStyles, {
|
|
52
|
+
styles: layerOrder
|
|
53
|
+
});
|
|
54
|
+
}
|
package/legacy/createStyled.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
-
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
4
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
5
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
5
|
+
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
6
6
|
/* eslint-disable no-underscore-dangle */
|
|
7
|
-
import styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';
|
|
7
|
+
import styledEngineStyled, { internal_processStyles as processStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';
|
|
8
8
|
import { isPlainObject } from '@mui/utils/deepmerge';
|
|
9
9
|
import capitalize from '@mui/utils/capitalize';
|
|
10
10
|
import getDisplayName from '@mui/utils/getDisplayName';
|
|
@@ -27,6 +27,13 @@ function isStringTag(tag) {
|
|
|
27
27
|
export function shouldForwardProp(prop) {
|
|
28
28
|
return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';
|
|
29
29
|
}
|
|
30
|
+
function shallowLayer(serialized, layerName) {
|
|
31
|
+
if (layerName && serialized && _typeof(serialized) === 'object' && serialized.styles && !serialized.styles.startsWith('@layer') // only add the layer if it is not already there.
|
|
32
|
+
) {
|
|
33
|
+
serialized.styles = "@layer ".concat(layerName, "{").concat(String(serialized.styles), "}");
|
|
34
|
+
}
|
|
35
|
+
return serialized;
|
|
36
|
+
}
|
|
30
37
|
export var systemDefaultTheme = createTheme();
|
|
31
38
|
var lowercaseFirstLetter = function lowercaseFirstLetter(string) {
|
|
32
39
|
if (!string) {
|
|
@@ -48,7 +55,7 @@ function defaultOverridesResolver(slot) {
|
|
|
48
55
|
return styles[slot];
|
|
49
56
|
};
|
|
50
57
|
}
|
|
51
|
-
function processStyleArg(callableStyle, _ref2) {
|
|
58
|
+
function processStyleArg(callableStyle, _ref2, layerName) {
|
|
52
59
|
var ownerState = _ref2.ownerState,
|
|
53
60
|
props = _objectWithoutProperties(_ref2, ["ownerState"]);
|
|
54
61
|
var resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends({
|
|
@@ -58,7 +65,7 @@ function processStyleArg(callableStyle, _ref2) {
|
|
|
58
65
|
return resolvedStylesArg.flatMap(function (resolvedStyle) {
|
|
59
66
|
return processStyleArg(resolvedStyle, _extends({
|
|
60
67
|
ownerState: ownerState
|
|
61
|
-
}, props));
|
|
68
|
+
}, props), layerName);
|
|
62
69
|
});
|
|
63
70
|
}
|
|
64
71
|
if (!!resolvedStylesArg && _typeof(resolvedStylesArg) === 'object' && Array.isArray(resolvedStylesArg.variants)) {
|
|
@@ -83,14 +90,15 @@ function processStyleArg(callableStyle, _ref2) {
|
|
|
83
90
|
if (!Array.isArray(result)) {
|
|
84
91
|
result = [result];
|
|
85
92
|
}
|
|
86
|
-
|
|
93
|
+
var variantStyle = typeof variant.style === 'function' ? variant.style(_extends({
|
|
87
94
|
ownerState: ownerState
|
|
88
|
-
}, props, ownerState)) : variant.style
|
|
95
|
+
}, props, ownerState)) : variant.style;
|
|
96
|
+
result.push(layerName ? shallowLayer(serializeStyles(variantStyle), layerName) : variantStyle);
|
|
89
97
|
}
|
|
90
98
|
});
|
|
91
99
|
return result;
|
|
92
100
|
}
|
|
93
|
-
return resolvedStylesArg;
|
|
101
|
+
return layerName ? shallowLayer(serializeStyles(resolvedStylesArg), layerName) : resolvedStylesArg;
|
|
94
102
|
}
|
|
95
103
|
export default function createStyled() {
|
|
96
104
|
var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -124,7 +132,10 @@ export default function createStyled() {
|
|
|
124
132
|
inputSkipSx = inputOptions.skipSx,
|
|
125
133
|
_inputOptions$overrid = inputOptions.overridesResolver,
|
|
126
134
|
overridesResolver = _inputOptions$overrid === void 0 ? defaultOverridesResolver(lowercaseFirstLetter(componentSlot)) : _inputOptions$overrid,
|
|
127
|
-
options = _objectWithoutProperties(inputOptions, ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"]);
|
|
135
|
+
options = _objectWithoutProperties(inputOptions, ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"]);
|
|
136
|
+
var layerName = componentName && componentName.startsWith('Mui') || !!componentSlot ? 'components' : 'custom';
|
|
137
|
+
|
|
138
|
+
// if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.
|
|
128
139
|
var skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :
|
|
129
140
|
// TODO v6: remove `Root` in the next major release
|
|
130
141
|
// For more details: https://github.com/mui/material-ui/pull/37908
|
|
@@ -161,13 +172,14 @@ export default function createStyled() {
|
|
|
161
172
|
// which are basically components used as a selectors.
|
|
162
173
|
if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {
|
|
163
174
|
return function (props) {
|
|
175
|
+
var theme = resolveTheme({
|
|
176
|
+
theme: props.theme,
|
|
177
|
+
defaultTheme: defaultTheme,
|
|
178
|
+
themeId: themeId
|
|
179
|
+
});
|
|
164
180
|
return processStyleArg(stylesArg, _extends({}, props, {
|
|
165
|
-
theme:
|
|
166
|
-
|
|
167
|
-
defaultTheme: defaultTheme,
|
|
168
|
-
themeId: themeId
|
|
169
|
-
})
|
|
170
|
-
}));
|
|
181
|
+
theme: theme
|
|
182
|
+
}), theme.modularCssLayers ? layerName : undefined);
|
|
171
183
|
};
|
|
172
184
|
}
|
|
173
185
|
return stylesArg;
|
|
@@ -196,7 +208,7 @@ export default function createStyled() {
|
|
|
196
208
|
slotStyle = _ref4[1];
|
|
197
209
|
resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {
|
|
198
210
|
theme: theme
|
|
199
|
-
}));
|
|
211
|
+
}), theme.modularCssLayers ? 'theme' : undefined);
|
|
200
212
|
});
|
|
201
213
|
return overridesResolver(props, resolvedStyleOverrides);
|
|
202
214
|
});
|
|
@@ -213,7 +225,7 @@ export default function createStyled() {
|
|
|
213
225
|
variants: themeVariants
|
|
214
226
|
}, _extends({}, props, {
|
|
215
227
|
theme: theme
|
|
216
|
-
}));
|
|
228
|
+
}), theme.modularCssLayers ? 'theme' : undefined);
|
|
217
229
|
});
|
|
218
230
|
}
|
|
219
231
|
if (!skipSx) {
|
package/legacy/index.js
CHANGED
|
@@ -64,7 +64,8 @@ export function unstable_createStyleFunctionSx() {
|
|
|
64
64
|
var _ref4 = props || {},
|
|
65
65
|
sx = _ref4.sx,
|
|
66
66
|
_ref4$theme = _ref4.theme,
|
|
67
|
-
theme = _ref4$theme === void 0 ? {} : _ref4$theme
|
|
67
|
+
theme = _ref4$theme === void 0 ? {} : _ref4$theme,
|
|
68
|
+
nested = _ref4.nested;
|
|
68
69
|
if (!sx) {
|
|
69
70
|
return null; // Emotion & styled-components will neglect null
|
|
70
71
|
}
|
|
@@ -104,7 +105,8 @@ export function unstable_createStyleFunctionSx() {
|
|
|
104
105
|
if (objectsHaveSameKeys(breakpointsValues, value)) {
|
|
105
106
|
css[styleKey] = styleFunctionSx({
|
|
106
107
|
sx: value,
|
|
107
|
-
theme: theme
|
|
108
|
+
theme: theme,
|
|
109
|
+
nested: true
|
|
108
110
|
});
|
|
109
111
|
} else {
|
|
110
112
|
css = merge(css, breakpointsValues);
|
|
@@ -115,6 +117,11 @@ export function unstable_createStyleFunctionSx() {
|
|
|
115
117
|
}
|
|
116
118
|
}
|
|
117
119
|
});
|
|
120
|
+
if (!nested && theme.modularCssLayers) {
|
|
121
|
+
return {
|
|
122
|
+
'@layer sx': removeUnusedBreakpoints(breakpointsKeys, css)
|
|
123
|
+
};
|
|
124
|
+
}
|
|
118
125
|
return removeUnusedBreakpoints(breakpointsKeys, css);
|
|
119
126
|
}
|
|
120
127
|
return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);
|
package/legacy/version/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export var version = "5.
|
|
1
|
+
export var version = "5.18.0";
|
|
2
2
|
export var major = Number("5");
|
|
3
|
-
export var minor = Number("
|
|
4
|
-
export var patch = Number("
|
|
3
|
+
export var minor = Number("18");
|
|
4
|
+
export var patch = Number("0");
|
|
5
5
|
export var preReleaseLabel = undefined || null;
|
|
6
6
|
export var preReleaseNumber = Number(undefined) || null;
|
|
7
7
|
export default version;
|
|
@@ -2,16 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
-
import { GlobalStyles as MuiGlobalStyles } from '@mui/styled-engine';
|
|
5
|
+
import { GlobalStyles as MuiGlobalStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';
|
|
6
6
|
import useTheme from '../useTheme';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
function wrapGlobalLayer(styles) {
|
|
9
|
+
const serialized = serializeStyles(styles);
|
|
10
|
+
if (styles !== serialized && serialized.styles) {
|
|
11
|
+
if (!serialized.styles.match(/^@layer\s+[^{]*$/)) {
|
|
12
|
+
// If the styles are not already wrapped in a layer, wrap them in a global layer.
|
|
13
|
+
serialized.styles = `@layer global{${serialized.styles}}`;
|
|
14
|
+
}
|
|
15
|
+
return serialized;
|
|
16
|
+
}
|
|
17
|
+
return styles;
|
|
18
|
+
}
|
|
8
19
|
function GlobalStyles({
|
|
9
20
|
styles,
|
|
10
21
|
themeId,
|
|
11
22
|
defaultTheme = {}
|
|
12
23
|
}) {
|
|
13
24
|
const upperTheme = useTheme(defaultTheme);
|
|
14
|
-
const
|
|
25
|
+
const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;
|
|
26
|
+
let globalStyles = typeof styles === 'function' ? styles(resolvedTheme) : styles;
|
|
27
|
+
if (resolvedTheme.modularCssLayers) {
|
|
28
|
+
if (Array.isArray(globalStyles)) {
|
|
29
|
+
globalStyles = globalStyles.map(styleArg => {
|
|
30
|
+
if (typeof styleArg === 'function') {
|
|
31
|
+
return wrapGlobalLayer(styleArg(resolvedTheme));
|
|
32
|
+
}
|
|
33
|
+
return wrapGlobalLayer(styleArg);
|
|
34
|
+
});
|
|
35
|
+
} else {
|
|
36
|
+
globalStyles = wrapGlobalLayer(globalStyles);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
15
39
|
return /*#__PURE__*/_jsx(MuiGlobalStyles, {
|
|
16
40
|
styles: globalStyles
|
|
17
41
|
});
|
|
@@ -9,6 +9,8 @@ import { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';
|
|
|
9
9
|
import useThemeWithoutDefault from '../useThemeWithoutDefault';
|
|
10
10
|
import RtlProvider from '../RtlProvider';
|
|
11
11
|
import DefaultPropsProvider from '../DefaultPropsProvider';
|
|
12
|
+
import useLayerOrder from './useLayerOrder';
|
|
13
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
15
|
const EMPTY_THEME = {};
|
|
14
16
|
function useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {
|
|
@@ -55,15 +57,16 @@ function ThemeProvider(props) {
|
|
|
55
57
|
const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);
|
|
56
58
|
const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);
|
|
57
59
|
const rtlValue = engineTheme.direction === 'rtl';
|
|
60
|
+
const layerOrder = useLayerOrder(engineTheme);
|
|
58
61
|
return /*#__PURE__*/_jsx(MuiThemeProvider, {
|
|
59
62
|
theme: privateTheme,
|
|
60
63
|
children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {
|
|
61
64
|
value: engineTheme,
|
|
62
65
|
children: /*#__PURE__*/_jsx(RtlProvider, {
|
|
63
66
|
value: rtlValue,
|
|
64
|
-
children: /*#__PURE__*/
|
|
67
|
+
children: /*#__PURE__*/_jsxs(DefaultPropsProvider, {
|
|
65
68
|
value: engineTheme?.components,
|
|
66
|
-
children: children
|
|
69
|
+
children: [layerOrder, children]
|
|
67
70
|
})
|
|
68
71
|
})
|
|
69
72
|
})
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
5
|
+
import useId from '@mui/utils/useId';
|
|
6
|
+
import GlobalStyles from '../GlobalStyles';
|
|
7
|
+
import useThemeWithoutDefault from '../useThemeWithoutDefault';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* This hook returns a `GlobalStyles` component that sets the CSS layer order (for server-side rendering).
|
|
11
|
+
* Then on client-side, it injects the CSS layer order into the document head to ensure that the layer order is always present first before other Emotion styles.
|
|
12
|
+
*/
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
export default function useLayerOrder(theme) {
|
|
15
|
+
const upperTheme = useThemeWithoutDefault();
|
|
16
|
+
const id = useId() || '';
|
|
17
|
+
const {
|
|
18
|
+
modularCssLayers
|
|
19
|
+
} = theme;
|
|
20
|
+
let layerOrder = 'mui.global, mui.components, mui.theme, mui.custom, mui.sx';
|
|
21
|
+
if (!modularCssLayers || upperTheme !== null) {
|
|
22
|
+
// skip this hook if upper theme exists.
|
|
23
|
+
layerOrder = '';
|
|
24
|
+
} else if (typeof modularCssLayers === 'string') {
|
|
25
|
+
layerOrder = modularCssLayers.replace(/mui(?!\.)/g, layerOrder);
|
|
26
|
+
} else {
|
|
27
|
+
layerOrder = `@layer ${layerOrder};`;
|
|
28
|
+
}
|
|
29
|
+
useEnhancedEffect(() => {
|
|
30
|
+
const head = document.querySelector('head');
|
|
31
|
+
if (!head) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const firstChild = head.firstChild;
|
|
35
|
+
if (layerOrder) {
|
|
36
|
+
// Only insert if first child doesn't have data-mui-layer-order attribute
|
|
37
|
+
if (firstChild && firstChild.hasAttribute?.('data-mui-layer-order') && firstChild.getAttribute('data-mui-layer-order') === id) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const styleElement = document.createElement('style');
|
|
41
|
+
styleElement.setAttribute('data-mui-layer-order', id);
|
|
42
|
+
styleElement.textContent = layerOrder;
|
|
43
|
+
head.prepend(styleElement);
|
|
44
|
+
} else {
|
|
45
|
+
head.querySelector(`style[data-mui-layer-order="${id}"]`)?.remove();
|
|
46
|
+
}
|
|
47
|
+
}, [layerOrder, id]);
|
|
48
|
+
if (!layerOrder) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return /*#__PURE__*/_jsx(GlobalStyles, {
|
|
52
|
+
styles: layerOrder
|
|
53
|
+
});
|
|
54
|
+
}
|
package/modern/createStyled.js
CHANGED
|
@@ -4,7 +4,7 @@ const _excluded = ["ownerState"],
|
|
|
4
4
|
_excluded2 = ["variants"],
|
|
5
5
|
_excluded3 = ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"];
|
|
6
6
|
/* eslint-disable no-underscore-dangle */
|
|
7
|
-
import styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';
|
|
7
|
+
import styledEngineStyled, { internal_processStyles as processStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';
|
|
8
8
|
import { isPlainObject } from '@mui/utils/deepmerge';
|
|
9
9
|
import capitalize from '@mui/utils/capitalize';
|
|
10
10
|
import getDisplayName from '@mui/utils/getDisplayName';
|
|
@@ -27,6 +27,13 @@ function isStringTag(tag) {
|
|
|
27
27
|
export function shouldForwardProp(prop) {
|
|
28
28
|
return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';
|
|
29
29
|
}
|
|
30
|
+
function shallowLayer(serialized, layerName) {
|
|
31
|
+
if (layerName && serialized && typeof serialized === 'object' && serialized.styles && !serialized.styles.startsWith('@layer') // only add the layer if it is not already there.
|
|
32
|
+
) {
|
|
33
|
+
serialized.styles = `@layer ${layerName}{${String(serialized.styles)}}`;
|
|
34
|
+
}
|
|
35
|
+
return serialized;
|
|
36
|
+
}
|
|
30
37
|
export const systemDefaultTheme = createTheme();
|
|
31
38
|
const lowercaseFirstLetter = string => {
|
|
32
39
|
if (!string) {
|
|
@@ -47,7 +54,7 @@ function defaultOverridesResolver(slot) {
|
|
|
47
54
|
}
|
|
48
55
|
return (props, styles) => styles[slot];
|
|
49
56
|
}
|
|
50
|
-
function processStyleArg(callableStyle, _ref) {
|
|
57
|
+
function processStyleArg(callableStyle, _ref, layerName) {
|
|
51
58
|
let {
|
|
52
59
|
ownerState
|
|
53
60
|
} = _ref,
|
|
@@ -58,7 +65,7 @@ function processStyleArg(callableStyle, _ref) {
|
|
|
58
65
|
if (Array.isArray(resolvedStylesArg)) {
|
|
59
66
|
return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, _extends({
|
|
60
67
|
ownerState
|
|
61
|
-
}, props)));
|
|
68
|
+
}, props), layerName));
|
|
62
69
|
}
|
|
63
70
|
if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {
|
|
64
71
|
const {
|
|
@@ -83,14 +90,15 @@ function processStyleArg(callableStyle, _ref) {
|
|
|
83
90
|
if (!Array.isArray(result)) {
|
|
84
91
|
result = [result];
|
|
85
92
|
}
|
|
86
|
-
|
|
93
|
+
const variantStyle = typeof variant.style === 'function' ? variant.style(_extends({
|
|
87
94
|
ownerState
|
|
88
|
-
}, props, ownerState)) : variant.style
|
|
95
|
+
}, props, ownerState)) : variant.style;
|
|
96
|
+
result.push(layerName ? shallowLayer(serializeStyles(variantStyle), layerName) : variantStyle);
|
|
89
97
|
}
|
|
90
98
|
});
|
|
91
99
|
return result;
|
|
92
100
|
}
|
|
93
|
-
return resolvedStylesArg;
|
|
101
|
+
return layerName ? shallowLayer(serializeStyles(resolvedStylesArg), layerName) : resolvedStylesArg;
|
|
94
102
|
}
|
|
95
103
|
export default function createStyled(input = {}) {
|
|
96
104
|
const {
|
|
@@ -121,6 +129,7 @@ export default function createStyled(input = {}) {
|
|
|
121
129
|
overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))
|
|
122
130
|
} = inputOptions,
|
|
123
131
|
options = _objectWithoutPropertiesLoose(inputOptions, _excluded3);
|
|
132
|
+
const layerName = componentName && componentName.startsWith('Mui') || !!componentSlot ? 'components' : 'custom';
|
|
124
133
|
|
|
125
134
|
// if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.
|
|
126
135
|
const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :
|
|
@@ -158,13 +167,16 @@ export default function createStyled(input = {}) {
|
|
|
158
167
|
// component stays as a function. This condition makes sure that we do not interpolate functions
|
|
159
168
|
// which are basically components used as a selectors.
|
|
160
169
|
if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {
|
|
161
|
-
return props =>
|
|
162
|
-
theme
|
|
170
|
+
return props => {
|
|
171
|
+
const theme = resolveTheme({
|
|
163
172
|
theme: props.theme,
|
|
164
173
|
defaultTheme,
|
|
165
174
|
themeId
|
|
166
|
-
})
|
|
167
|
-
|
|
175
|
+
});
|
|
176
|
+
return processStyleArg(stylesArg, _extends({}, props, {
|
|
177
|
+
theme
|
|
178
|
+
}), theme.modularCssLayers ? layerName : undefined);
|
|
179
|
+
};
|
|
168
180
|
}
|
|
169
181
|
return stylesArg;
|
|
170
182
|
};
|
|
@@ -186,7 +198,7 @@ export default function createStyled(input = {}) {
|
|
|
186
198
|
Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {
|
|
187
199
|
resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {
|
|
188
200
|
theme
|
|
189
|
-
}));
|
|
201
|
+
}), theme.modularCssLayers ? 'theme' : undefined);
|
|
190
202
|
});
|
|
191
203
|
return overridesResolver(props, resolvedStyleOverrides);
|
|
192
204
|
});
|
|
@@ -202,7 +214,7 @@ export default function createStyled(input = {}) {
|
|
|
202
214
|
variants: themeVariants
|
|
203
215
|
}, _extends({}, props, {
|
|
204
216
|
theme
|
|
205
|
-
}));
|
|
217
|
+
}), theme.modularCssLayers ? 'theme' : undefined);
|
|
206
218
|
});
|
|
207
219
|
}
|
|
208
220
|
if (!skipSx) {
|
package/modern/index.js
CHANGED
|
@@ -63,7 +63,8 @@ export function unstable_createStyleFunctionSx() {
|
|
|
63
63
|
function styleFunctionSx(props) {
|
|
64
64
|
const {
|
|
65
65
|
sx,
|
|
66
|
-
theme = {}
|
|
66
|
+
theme = {},
|
|
67
|
+
nested
|
|
67
68
|
} = props || {};
|
|
68
69
|
if (!sx) {
|
|
69
70
|
return null; // Emotion & styled-components will neglect null
|
|
@@ -104,7 +105,8 @@ export function unstable_createStyleFunctionSx() {
|
|
|
104
105
|
if (objectsHaveSameKeys(breakpointsValues, value)) {
|
|
105
106
|
css[styleKey] = styleFunctionSx({
|
|
106
107
|
sx: value,
|
|
107
|
-
theme
|
|
108
|
+
theme,
|
|
109
|
+
nested: true
|
|
108
110
|
});
|
|
109
111
|
} else {
|
|
110
112
|
css = merge(css, breakpointsValues);
|
|
@@ -115,6 +117,11 @@ export function unstable_createStyleFunctionSx() {
|
|
|
115
117
|
}
|
|
116
118
|
}
|
|
117
119
|
});
|
|
120
|
+
if (!nested && theme.modularCssLayers) {
|
|
121
|
+
return {
|
|
122
|
+
'@layer sx': removeUnusedBreakpoints(breakpointsKeys, css)
|
|
123
|
+
};
|
|
124
|
+
}
|
|
118
125
|
return removeUnusedBreakpoints(breakpointsKeys, css);
|
|
119
126
|
}
|
|
120
127
|
return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);
|
package/modern/version/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export const version = "5.
|
|
1
|
+
export const version = "5.18.0";
|
|
2
2
|
export const major = Number("5");
|
|
3
|
-
export const minor = Number("
|
|
4
|
-
export const patch = Number("
|
|
3
|
+
export const minor = Number("18");
|
|
4
|
+
export const patch = Number("0");
|
|
5
5
|
export const preReleaseLabel = undefined || null;
|
|
6
6
|
export const preReleaseNumber = Number(undefined) || null;
|
|
7
7
|
export default version;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/system",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.18.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "MUI Team",
|
|
6
6
|
"description": "MUI System is a set of CSS utilities to help you build custom designs more efficiently. It makes it possible to rapidly lay out custom designs.",
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"clsx": "^2.1.0",
|
|
31
31
|
"csstype": "^3.1.3",
|
|
32
32
|
"prop-types": "^15.8.1",
|
|
33
|
-
"@mui/
|
|
34
|
-
"@mui/
|
|
35
|
-
"@mui/utils": "^5.
|
|
36
|
-
"@mui/
|
|
33
|
+
"@mui/styled-engine": "^5.18.0",
|
|
34
|
+
"@mui/types": "~7.2.15",
|
|
35
|
+
"@mui/utils": "^5.17.1",
|
|
36
|
+
"@mui/private-theming": "^5.17.1"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"@emotion/react": "^11.5.0",
|
|
@@ -72,7 +72,8 @@ function unstable_createStyleFunctionSx() {
|
|
|
72
72
|
var _theme$unstable_sxCon;
|
|
73
73
|
const {
|
|
74
74
|
sx,
|
|
75
|
-
theme = {}
|
|
75
|
+
theme = {},
|
|
76
|
+
nested
|
|
76
77
|
} = props || {};
|
|
77
78
|
if (!sx) {
|
|
78
79
|
return null; // Emotion & styled-components will neglect null
|
|
@@ -113,7 +114,8 @@ function unstable_createStyleFunctionSx() {
|
|
|
113
114
|
if (objectsHaveSameKeys(breakpointsValues, value)) {
|
|
114
115
|
css[styleKey] = styleFunctionSx({
|
|
115
116
|
sx: value,
|
|
116
|
-
theme
|
|
117
|
+
theme,
|
|
118
|
+
nested: true
|
|
117
119
|
});
|
|
118
120
|
} else {
|
|
119
121
|
css = (0, _merge.default)(css, breakpointsValues);
|
|
@@ -124,6 +126,11 @@ function unstable_createStyleFunctionSx() {
|
|
|
124
126
|
}
|
|
125
127
|
}
|
|
126
128
|
});
|
|
129
|
+
if (!nested && theme.modularCssLayers) {
|
|
130
|
+
return {
|
|
131
|
+
'@layer sx': (0, _breakpoints.removeUnusedBreakpoints)(breakpointsKeys, css)
|
|
132
|
+
};
|
|
133
|
+
}
|
|
127
134
|
return (0, _breakpoints.removeUnusedBreakpoints)(breakpointsKeys, css);
|
|
128
135
|
}
|
|
129
136
|
return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);
|
package/version/index.js
CHANGED
|
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.version = exports.preReleaseNumber = exports.preReleaseLabel = exports.patch = exports.minor = exports.major = exports.default = void 0;
|
|
7
|
-
const version = exports.version = "5.
|
|
7
|
+
const version = exports.version = "5.18.0";
|
|
8
8
|
const major = exports.major = Number("5");
|
|
9
|
-
const minor = exports.minor = Number("
|
|
10
|
-
const patch = exports.patch = Number("
|
|
9
|
+
const minor = exports.minor = Number("18");
|
|
10
|
+
const patch = exports.patch = Number("0");
|
|
11
11
|
const preReleaseLabel = exports.preReleaseLabel = undefined || null;
|
|
12
12
|
const preReleaseNumber = exports.preReleaseNumber = Number(undefined) || null;
|
|
13
13
|
var _default = exports.default = version;
|