@nitrogenbuilder/client-react
Version:
Nitrogen Builder React Client
29 lines (28 loc) • 826 B
JavaScript
function getDefault(prop, def) {
if (def === undefined || def === null || def === '') {
return prop;
}
if (prop === undefined ||
prop === null) {
return def;
}
if (typeof prop === 'object') {
if (typeof def === 'object') {
return { ...def, ...prop };
}
throw new Error('Default value should be responsive, but it ain\'t bruh');
}
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;
}