Page MenuHomePhorge

provider-tree.tsx

Authored By
themackabu
Oct 26 2025, 11:59 PM
Size
885 B
Referenced Files
None
Subscribers
None

provider-tree.tsx

type ComposedProvider = Component<Children>;
type FlexibleProvider = Component<NonNullableChildren> | Component<Children>;
type ProviderConfig =
| [FlexibleProvider]
| [FlexibleProviderWithProps<Record<string, unknown>>, Record<string, unknown>];
type FlexibleProviderWithProps<TProps extends Record<string, unknown>> =
| Component<NonNullableChildren & TProps>
| Component<Children<TProps>>;
export function buildProvidersTree<TProviders extends ReadonlyArray<ProviderConfig>>(
providers: TProviders,
): ComposedProvider {
return providers.reduce<ComposedProvider>(
(AccumulatedProviders, providerConfig) => {
const [Provider, props = {}] = providerConfig;
return ({ children }) => (
<AccumulatedProviders>
<Provider {...props}>{children}</Provider>
</AccumulatedProviders>
);
},
({ children }) => children,
);
}

File Metadata

Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
476864
Default Alt Text
provider-tree.tsx (885 B)

Event Timeline