GoScrobble/web/node_modules/@material-ui/system/es/styleFunctionSx.js

65 lines
1.8 KiB
JavaScript
Raw Normal View History

2022-04-25 02:47:15 +00:00
import _extends from "@babel/runtime/helpers/esm/extends";
import PropTypes from 'prop-types';
import { chainPropTypes } from '@material-ui/utils';
import merge from './merge';
function omit(input, fields) {
const output = {};
Object.keys(input).forEach(prop => {
if (fields.indexOf(prop) === -1) {
output[prop] = input[prop];
}
});
return output;
}
let warnedOnce = false;
function styleFunctionSx(styleFunction) {
const newStyleFunction = props => {
const output = styleFunction(props);
if (props.css) {
return _extends({}, merge(output, styleFunction(_extends({
theme: props.theme
}, props.css))), omit(props.css, [styleFunction.filterProps]));
}
if (props.sx) {
return _extends({}, merge(output, styleFunction(_extends({
theme: props.theme
}, props.sx))), omit(props.sx, [styleFunction.filterProps]));
}
return output;
};
newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {
css: chainPropTypes(PropTypes.object, props => {
if (!warnedOnce && props.css !== undefined) {
warnedOnce = true;
return new Error('Material-UI: The `css` prop is deprecated, please use the `sx` prop instead.');
}
return null;
}),
sx: PropTypes.object
}) : {};
newStyleFunction.filterProps = ['css', 'sx', ...styleFunction.filterProps];
return newStyleFunction;
}
/**
*
* @deprecated
* The css style function is deprecated. Use the `styleFunctionSx` instead.
*/
export function css(styleFunction) {
if (process.env.NODE_ENV !== 'production') {
console.warn('Material-UI: The `css` function is deprecated. Use the `styleFunctionSx` instead.');
}
return styleFunctionSx(styleFunction);
}
export default styleFunctionSx;