UNPKG

2.81 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3const _excluded = ["defaultProps", "mixins", "overrides", "palette", "props", "styleOverrides"],
4 _excluded2 = ["type", "mode"];
5import { createBreakpoints, createSpacing } from '@mui/system';
6export default function adaptV4Theme(inputTheme) {
7 if (process.env.NODE_ENV !== 'production') {
8 console.warn(['MUI: adaptV4Theme() is deprecated.', 'Follow the upgrade guide on https://mui.com/r/migration-v4#theme.'].join('\n'));
9 }
10
11 const {
12 defaultProps = {},
13 mixins = {},
14 overrides = {},
15 palette = {},
16 props = {},
17 styleOverrides = {}
18 } = inputTheme,
19 other = _objectWithoutPropertiesLoose(inputTheme, _excluded);
20
21 const theme = _extends({}, other, {
22 components: {}
23 }); // default props
24
25
26 Object.keys(defaultProps).forEach(component => {
27 const componentValue = theme.components[component] || {};
28 componentValue.defaultProps = defaultProps[component];
29 theme.components[component] = componentValue;
30 });
31 Object.keys(props).forEach(component => {
32 const componentValue = theme.components[component] || {};
33 componentValue.defaultProps = props[component];
34 theme.components[component] = componentValue;
35 }); // CSS overrides
36
37 Object.keys(styleOverrides).forEach(component => {
38 const componentValue = theme.components[component] || {};
39 componentValue.styleOverrides = styleOverrides[component];
40 theme.components[component] = componentValue;
41 });
42 Object.keys(overrides).forEach(component => {
43 const componentValue = theme.components[component] || {};
44 componentValue.styleOverrides = overrides[component];
45 theme.components[component] = componentValue;
46 }); // theme.spacing
47
48 theme.spacing = createSpacing(inputTheme.spacing); // theme.mixins.gutters
49
50 const breakpoints = createBreakpoints(inputTheme.breakpoints || {});
51 const spacing = theme.spacing;
52 theme.mixins = _extends({
53 gutters: (styles = {}) => {
54 return _extends({
55 paddingLeft: spacing(2),
56 paddingRight: spacing(2)
57 }, styles, {
58 [breakpoints.up('sm')]: _extends({
59 paddingLeft: spacing(3),
60 paddingRight: spacing(3)
61 }, styles[breakpoints.up('sm')])
62 });
63 }
64 }, mixins);
65
66 const {
67 type: typeInput,
68 mode: modeInput
69 } = palette,
70 paletteRest = _objectWithoutPropertiesLoose(palette, _excluded2);
71
72 const finalMode = modeInput || typeInput || 'light';
73 theme.palette = _extends({
74 // theme.palette.text.hint
75 text: {
76 hint: finalMode === 'dark' ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.38)'
77 },
78 mode: finalMode,
79 type: finalMode
80 }, paletteRest);
81 return theme;
82}
\No newline at end of file