"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = extendSxProp; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _deepmerge = require("@mui/utils/deepmerge"); var _defaultSxConfig = _interopRequireDefault(require("./defaultSxConfig")); const _excluded = ["sx"]; const splitProps = props => { var _props$theme$unstable, _props$theme; const result = { systemProps: {}, otherProps: {} }; const config = (_props$theme$unstable = props == null || (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : _defaultSxConfig.default; Object.keys(props).forEach(prop => { if (config[prop]) { result.systemProps[prop] = props[prop]; } else { result.otherProps[prop] = props[prop]; } }); return result; }; function extendSxProp(props) { const { sx: inSx } = props, other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded); const { systemProps, otherProps } = splitProps(other); let finalSx; if (Array.isArray(inSx)) { finalSx = [systemProps, ...inSx]; } else if (typeof inSx === 'function') { finalSx = (...args) => { const result = inSx(...args); if (!(0, _deepmerge.isPlainObject)(result)) { return systemProps; } return (0, _extends2.default)({}, systemProps, result); }; } else { finalSx = (0, _extends2.default)({}, systemProps, inSx); } return (0, _extends2.default)({}, otherProps, { sx: finalSx }); }