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.

108 lines (80 loc) 4.03 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.createMuiTheme = createMuiTheme; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _utils = require("@mui/utils"); var _base = require("@mui/base"); var _system = require("@mui/system"); var _createMixins = _interopRequireDefault(require("./createMixins")); var _createPalette = _interopRequireDefault(require("./createPalette")); var _createTypography = _interopRequireDefault(require("./createTypography")); var _shadows = _interopRequireDefault(require("./shadows")); var _createTransitions = _interopRequireDefault(require("./createTransitions")); var _zIndex = _interopRequireDefault(require("./zIndex")); const _excluded = ["breakpoints", "mixins", "spacing", "palette", "transitions", "typography", "shape"]; function createTheme(options = {}, ...args) { const { mixins: mixinsInput = {}, palette: paletteInput = {}, transitions: transitionsInput = {}, typography: typographyInput = {} } = options, other = (0, _objectWithoutPropertiesLoose2.default)(options, _excluded); const palette = (0, _createPalette.default)(paletteInput); const systemTheme = (0, _system.createTheme)(options); let muiTheme = (0, _utils.deepmerge)(systemTheme, { mixins: (0, _createMixins.default)(systemTheme.breakpoints, systemTheme.spacing, mixinsInput), palette, // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol. shadows: _shadows.default.slice(), typography: (0, _createTypography.default)(palette, typographyInput), transitions: (0, _createTransitions.default)(transitionsInput), zIndex: (0, _extends2.default)({}, _zIndex.default) }); muiTheme = (0, _utils.deepmerge)(muiTheme, other); muiTheme = args.reduce((acc, argument) => (0, _utils.deepmerge)(acc, argument), muiTheme); if (process.env.NODE_ENV !== 'production') { const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected']; const traverse = (node, component) => { let key; // eslint-disable-next-line guard-for-in, no-restricted-syntax for (key in node) { const child = node[key]; if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) { if (process.env.NODE_ENV !== 'production') { const stateClass = (0, _base.generateUtilityClass)('', key); console.error([`MUI: The \`${component}\` component increases ` + `the CSS specificity of the \`${key}\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({ root: { [`&.${stateClass}`]: child } }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\n')); } // Remove the style to prevent global conflicts. node[key] = {}; } } }; Object.keys(muiTheme.components).forEach(component => { const styleOverrides = muiTheme.components[component].styleOverrides; if (styleOverrides && component.indexOf('Mui') === 0) { traverse(styleOverrides, component); } }); } return muiTheme; } let warnedOnce = false; function createMuiTheme(...args) { if (process.env.NODE_ENV !== 'production') { if (!warnedOnce) { warnedOnce = true; console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', "You should use `import { createTheme } from '@mui/material/styles'`"].join('\n')); } } return createTheme(...args); } var _default = createTheme; exports.default = _default;