UNPKG

@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.

43 lines 1.46 kB
import clsx from 'clsx'; export default 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 = clsx(ownerState?.className, defaultSlotPropsValue?.className, externalSlotPropsValue?.className); return { ...defaultSlotPropsValue, ...externalSlotPropsValue, ...(!!className && { className }), ...(defaultSlotPropsValue?.style && externalSlotPropsValue?.style && { style: { ...defaultSlotPropsValue.style, ...externalSlotPropsValue.style } }) }; }; } const className = clsx(defaultSlotProps?.className, externalSlotProps?.className); return { ...defaultSlotProps, ...externalSlotProps, ...(!!className && { className }), ...(defaultSlotProps?.style && externalSlotProps?.style && { style: { ...defaultSlotProps.style, ...externalSlotProps.style } }) }; }