@nitrogenbuilder/client-react
Version:
Nitrogen Builder React Client
24 lines (23 loc) • 677 B
JavaScript
export function getDefault(prop, def) {
if (def === undefined || def === null) {
return prop;
}
if (prop === undefined ||
prop === null ||
(typeof prop === 'object' && Object.keys(prop).length === 0)) {
return def;
}
return prop;
}
export default function getProps(props, defaults) {
if (!defaults)
return props;
let newProps = {};
let keys = Object.keys(props);
// merge default keys into keys
keys = keys.concat(Object.keys(defaults).filter((key) => !keys.includes(key)));
keys.forEach((key) => {
newProps[key] = getDefault(props[key], defaults[key]);
});
return newProps;
}