0.1.0 #1
@@ -58,18 +58,20 @@ export function useMergeAll<T extends Array<unknown>>(
|
|||||||
return React.useMemo(() => Context.mergeAll(...values), values)
|
return React.useMemo(() => Context.mergeAll(...values), values)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useMergeAllLayers<
|
/** TODO: find a way to make 'contexts' a NonEmptyArray */
|
||||||
const Contexts extends Array.NonEmptyReadonlyArray<ReffuseContext<any>>
|
export function useMergeAllLayers<T extends Array<unknown>>(
|
||||||
>(
|
...contexts: [...{ [K in keyof T]: ReffuseContext<T[K]> }]
|
||||||
...contexts: Contexts
|
): Layer.Layer<T[number]> {
|
||||||
): Layer.Layer<{ [K in keyof Contexts]: R<Contexts[K]> }[number]> {
|
const values = Array.map(
|
||||||
const values = Array.map(contexts, v => React.use(v.Context))
|
contexts as Array.NonEmptyArray<ReffuseContext<T[number]>>,
|
||||||
|
v => React.use(v.Context),
|
||||||
|
)
|
||||||
|
|
||||||
return React.useMemo(() => Layer.mergeAll(
|
return React.useMemo(() => Layer.mergeAll(
|
||||||
...Array.map(values, context => Layer.effectContext(Effect.succeed(context)))
|
...Array.map(values, context => Layer.effectContext(Effect.succeed(context)))
|
||||||
) as Layer.Layer<any>, values)
|
) as Layer.Layer<any>, values)
|
||||||
}
|
}
|
||||||
|
|
||||||
declare const context1: ReffuseContext<never>
|
// declare const context1: ReffuseContext<never>
|
||||||
declare const context2: ReffuseContext<"prout">
|
// declare const context2: ReffuseContext<"prout">
|
||||||
const res = useMergeAll(context1, context2)
|
// const res = useMergeAllLayers(context1, context2)
|
||||||
|
|||||||
Reference in New Issue
Block a user