Buckets:
| import clsx from 'clsx'; | |
| /** | |
| * Add keys, values of `defaultProps` that does not exist in `props` | |
| * @param defaultProps | |
| * @param props | |
| * @param mergeClassNameAndStyle If `true`, merges `className` and `style` props instead of overriding them. | |
| * When `false` (default), props override defaultProps. When `true`, `className` values are concatenated | |
| * and `style` objects are merged with props taking precedence. | |
| * @returns resolved props | |
| */ | |
| export default function resolveProps(defaultProps, props, mergeClassNameAndStyle = false) { | |
| 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], mergeClassNameAndStyle); | |
| } | |
| } | |
| } | |
| } else if (propName === 'className' && mergeClassNameAndStyle && props.className) { | |
| output.className = clsx(defaultProps?.className, props?.className); | |
| } else if (propName === 'style' && mergeClassNameAndStyle && props.style) { | |
| output.style = { | |
| ...defaultProps?.style, | |
| ...props?.style | |
| }; | |
| } else if (output[propName] === undefined) { | |
| output[propName] = defaultProps[propName]; | |
| } | |
| } | |
| } | |
| return output; | |
| } |
Xet Storage Details
- Size:
- 2.14 kB
- Xet hash:
- 0b5cae40b98d32094fa27b0a5a7192206248778cd1ad588d3292c6bdd5da9a4f
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.