UNPKG

@nitrogenbuilder/client-react

Version:

Nitrogen Builder React Client

29 lines (28 loc) 826 B
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; }