react-overrides
Version:
Helper for create reusable components through Overrides Pattern
20 lines (18 loc) • 646 B
JavaScript
// @flow
import * as React from "react";
import type { ExtractOverridesProps } from "./ExtractOverridesProps";
export function getComponents<T: { [key: string]: React$ComponentType<*> }>(
defaultComponents: T,
overrides?: ExtractOverridesProps<T>
): ExtractOverridesProps<T> {
return Object.keys(defaultComponents).reduce((components, name) => {
const override = (overrides && overrides[name]) || {};
return {
...components,
[name]: {
component: override.component || defaultComponents[name],
props: { ...override.props }
}
};
}, {});
}