UNPKG

@mui/material

Version:

Quickly build beautiful React apps. MUI is a simple and customizable component library to build faster, beautiful, and more accessible React applications. Follow your own design system, or start with Material Design.

91 lines (79 loc) 3.14 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = adaptV4Theme; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _system = require("@mui/system"); const _excluded = ["defaultProps", "mixins", "overrides", "palette", "props", "styleOverrides"], _excluded2 = ["type", "mode"]; function adaptV4Theme(inputTheme) { if (process.env.NODE_ENV !== 'production') { console.warn(['MUI: adaptV4Theme() is deprecated.', 'Follow the upgrade guide on https://mui.com/r/migration-v4#theme.'].join('\n')); } const { defaultProps = {}, mixins = {}, overrides = {}, palette = {}, props = {}, styleOverrides = {} } = inputTheme, other = (0, _objectWithoutPropertiesLoose2.default)(inputTheme, _excluded); const theme = (0, _extends2.default)({}, other, { components: {} }); // default props Object.keys(defaultProps).forEach(component => { const componentValue = theme.components[component] || {}; componentValue.defaultProps = defaultProps[component]; theme.components[component] = componentValue; }); Object.keys(props).forEach(component => { const componentValue = theme.components[component] || {}; componentValue.defaultProps = props[component]; theme.components[component] = componentValue; }); // CSS overrides Object.keys(styleOverrides).forEach(component => { const componentValue = theme.components[component] || {}; componentValue.styleOverrides = styleOverrides[component]; theme.components[component] = componentValue; }); Object.keys(overrides).forEach(component => { const componentValue = theme.components[component] || {}; componentValue.styleOverrides = overrides[component]; theme.components[component] = componentValue; }); // theme.spacing theme.spacing = (0, _system.createSpacing)(inputTheme.spacing); // theme.mixins.gutters const breakpoints = (0, _system.createBreakpoints)(inputTheme.breakpoints || {}); const spacing = theme.spacing; theme.mixins = (0, _extends2.default)({ gutters: (styles = {}) => { return (0, _extends2.default)({ paddingLeft: spacing(2), paddingRight: spacing(2) }, styles, { [breakpoints.up('sm')]: (0, _extends2.default)({ paddingLeft: spacing(3), paddingRight: spacing(3) }, styles[breakpoints.up('sm')]) }); } }, mixins); const { type: typeInput, mode: modeInput } = palette, paletteRest = (0, _objectWithoutPropertiesLoose2.default)(palette, _excluded2); const finalMode = modeInput || typeInput || 'light'; theme.palette = (0, _extends2.default)({ // theme.palette.text.hint text: { hint: finalMode === 'dark' ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.38)' }, mode: finalMode, type: finalMode }, paletteRest); return theme; }