UNPKG

@mui/utils

Version:
43 lines 1.44 kB
/** * Add keys, values of `defaultProps` that does not exist in `props` * @param defaultProps * @param props * @returns resolved props */ export default function resolveProps(defaultProps, props) { const output = { ...props }; for (const key in defaultProps) { if (Object.prototype.hasOwnProperty.call(defaultProps, key)) { const propName = key; if (propName === 'components' || propName === 'slots') { output[propName] = { ...defaultProps[propName], ...output[propName] }; } else if (propName === 'componentsProps' || propName === 'slotProps') { const defaultSlotProps = defaultProps[propName]; const slotProps = props[propName]; if (!slotProps) { output[propName] = defaultSlotProps || {}; } else if (!defaultSlotProps) { output[propName] = slotProps; } else { output[propName] = { ...slotProps }; for (const slotKey in defaultSlotProps) { if (Object.prototype.hasOwnProperty.call(defaultSlotProps, slotKey)) { const slotPropName = slotKey; output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]); } } } } else if (output[propName] === undefined) { output[propName] = defaultProps[propName]; } } } return output; }