export interface IProviderComposerProps extends React.PropsWithChildren { /** * Providers list * */ with: React.FC[] } const ComposerFragment: React.FC = ({ children, }): JSX.Element => <>{children} const providerReducer = ( ParentProvider: React.FC, ChildProvider: React.FC, ) => ({ children }: React.PropsWithChildren) => ( {children} ) /** * @Component * @name ProviderComposer * @description Component that receives a list of providers and composes them to a single component. */ export const ProviderComposer = (props: IProviderComposerProps) => { const ComposedProviders = props.with.reduce(providerReducer, ComposerFragment) return {props.children} }