diff --git a/packages/reffuse/src/ReffuseContext.ts b/packages/reffuse/src/ReffuseContext.ts index 17b1588..8f50a81 100644 --- a/packages/reffuse/src/ReffuseContext.ts +++ b/packages/reffuse/src/ReffuseContext.ts @@ -27,7 +27,7 @@ export type ReactProvider = React.FC<{ readonly children?: React.ReactNode }> -function makeProvider(Context: React.Context>): ReactProvider { +const makeProvider = (Context: React.Context>): ReactProvider => { return function ReffuseContextReactProvider(props) { const runtime = ReffuseRuntime.useRuntime() @@ -46,13 +46,15 @@ export type AsyncReactProvider = React.FC<{ readonly children?: React.ReactNode }> -function makeAsyncProvider(Context: React.Context>): AsyncReactProvider { - function Inner({ promise, children }: { +const makeAsyncProvider = (Context: React.Context>): AsyncReactProvider => { + function ReffuseContextAsyncReactProviderInner({ promise, children }: { readonly promise: Promise> readonly children?: React.ReactNode }) { - const value = React.use(promise) - return React.createElement(Context, { value, children }) + return React.createElement(Context, { + value: React.use(promise), + children, + }) } return function ReffuseContextAsyncReactProvider(props) { @@ -63,26 +65,26 @@ function makeAsyncProvider(Context: React.Context>): Async Runtime.runPromise(runtime), ), [props.layer, runtime]) - const inner = React.createElement(Inner, { ...props, promise }) - return React.createElement(React.Suspense, { children: inner, fallback: props.fallback }) + return React.createElement(React.Suspense, { + children: React.createElement(ReffuseContextAsyncReactProviderInner, { ...props, promise }), + fallback: props.fallback, + }) } } -export function make() { - return new ReffuseContext() -} +export const make = () => new ReffuseContext() -export function useMergeAll>( +export const useMergeAll = >( ...contexts: [...{ [K in keyof T]: ReffuseContext }] -): Context.Context { +): Context.Context => { const values = contexts.map(v => React.use(v.Context)) return React.useMemo(() => Context.mergeAll(...values), values) } -export function useMergeAllLayers>( +export const useMergeAllLayers = >( ...contexts: [...{ [K in keyof T]: ReffuseContext }] -): Layer.Layer { +): Layer.Layer => { const values = contexts.map(v => React.use(v.Context)) return React.useMemo(() => Array.isNonEmptyArray(values) diff --git a/packages/reffuse/src/ReffuseRuntime.ts b/packages/reffuse/src/ReffuseRuntime.ts index 47e22b0..d070bb2 100644 --- a/packages/reffuse/src/ReffuseRuntime.ts +++ b/packages/reffuse/src/ReffuseRuntime.ts @@ -4,12 +4,13 @@ import * as React from "react" export const Context = React.createContext>(null!) -export const Provider = (props: { +export const Provider = function ReffuseRuntimeReactProvider(props: { readonly children?: React.ReactNode -}) => React.createElement(Context, { - ...props, - value: Runtime.defaultRuntime, -}) -Provider.displayName = "ReffuseRuntimeReactProvider" as const +}) { + return React.createElement(Context, { + ...props, + value: Runtime.defaultRuntime, + }) +} export const useRuntime = () => React.useContext(Context)