UNPKG

@mui/styles

Version:

MUI Styles - The legacy JSS-based styling solution of Material UI.

56 lines (55 loc) 2.64 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getStylesCreator; var _utils = require("@mui/utils"); var _propsToClassKey = _interopRequireDefault(require("../propsToClassKey")); var _noopTheme = _interopRequireDefault(require("./noopTheme")); function getStylesCreator(stylesOrCreator) { const themingEnabled = typeof stylesOrCreator === 'function'; if (process.env.NODE_ENV !== 'production') { if (typeof stylesOrCreator !== 'object' && !themingEnabled) { console.error(['MUI: The `styles` argument provided is invalid.', 'You need to provide a function generating the styles or a styles object.'].join('\n')); } } return { create: (theme, name) => { let styles; try { styles = themingEnabled ? stylesOrCreator(theme) : stylesOrCreator; } catch (err) { if (process.env.NODE_ENV !== 'production') { if (themingEnabled === true && theme === _noopTheme.default) { // TODO: prepend error message/name instead console.error(['MUI: The `styles` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\n')); } } throw err; } if (!name || !theme.components || !theme.components[name] || !theme.components[name].styleOverrides && !theme.components[name].variants) { return styles; } const overrides = theme.components[name].styleOverrides || {}; const variants = theme.components[name].variants || []; const stylesWithOverrides = { ...styles }; Object.keys(overrides).forEach(key => { if (process.env.NODE_ENV !== 'production') { if (!stylesWithOverrides[key]) { console.warn(['MUI: You are trying to override a style that does not exist.', `Fix the \`${key}\` key of \`theme.components.${name}.styleOverrides\`.`, '', `If you intentionally wanted to add a new key, please use the theme.components[${name}].variants option.`].join('\n')); } } stylesWithOverrides[key] = (0, _utils.deepmerge)(stylesWithOverrides[key] || {}, overrides[key]); }); variants.forEach(definition => { const classKey = (0, _propsToClassKey.default)(definition.props); stylesWithOverrides[classKey] = (0, _utils.deepmerge)(stylesWithOverrides[classKey] || {}, definition.style); }); return stylesWithOverrides; }, options: {} }; }