@mui/material
Version:
Material UI is an open-source React component library that implements Google's Material Design. It's comprehensive and can be used in production out of the box.
50 lines (49 loc) • 1.71 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = mergeSlotProps;
var _clsx = _interopRequireDefault(require("clsx"));
function mergeSlotProps(externalSlotProps, defaultSlotProps) {
if (!externalSlotProps) {
return defaultSlotProps;
}
if (typeof externalSlotProps === 'function' || typeof defaultSlotProps === 'function') {
return ownerState => {
const defaultSlotPropsValue = typeof defaultSlotProps === 'function' ? defaultSlotProps(ownerState) : defaultSlotProps;
const externalSlotPropsValue = typeof externalSlotProps === 'function' ? externalSlotProps({
...ownerState,
...defaultSlotPropsValue
}) : externalSlotProps;
const className = (0, _clsx.default)(ownerState?.className, defaultSlotPropsValue?.className, externalSlotPropsValue?.className);
return {
...defaultSlotPropsValue,
...externalSlotPropsValue,
...(!!className && {
className
}),
...(defaultSlotPropsValue?.style && externalSlotPropsValue?.style && {
style: {
...defaultSlotPropsValue.style,
...externalSlotPropsValue.style
}
})
};
};
}
const className = (0, _clsx.default)(defaultSlotProps?.className, externalSlotProps?.className);
return {
...defaultSlotProps,
...externalSlotProps,
...(!!className && {
className
}),
...(defaultSlotProps?.style && externalSlotProps?.style && {
style: {
...defaultSlotProps.style,
...externalSlotProps.style
}
})
};
}
;