@@ -38,15 +38,15 @@ export const useState = Effect.fnUntraced(function* <A, ER, EW, RR, RW>(
|
|||||||
return [reactStateValue, setValue]
|
return [reactStateValue, setValue]
|
||||||
})
|
})
|
||||||
|
|
||||||
export declare namespace useFromState {
|
export declare namespace useFromReactState {
|
||||||
export interface Options<A> {
|
export interface Options<A> {
|
||||||
readonly equivalence?: Equivalence.Equivalence<A>
|
readonly equivalence?: Equivalence.Equivalence<A>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useFromState = Effect.fnUntraced(function* <A>(
|
export const useFromReactState = Effect.fnUntraced(function* <A>(
|
||||||
[value, setValue]: readonly [A, React.Dispatch<React.SetStateAction<A>>],
|
[value, setValue]: readonly [A, React.Dispatch<React.SetStateAction<A>>],
|
||||||
options?: useFromState.Options<NoInfer<A>>,
|
options?: useFromReactState.Options<NoInfer<A>>,
|
||||||
): Effect.fn.Return<Lens.Lens<A, never, never, never, never>> {
|
): Effect.fn.Return<Lens.Lens<A, never, never, never, never>> {
|
||||||
const lens = yield* Component.useOnMount(() => Effect.map(
|
const lens = yield* Component.useOnMount(() => Effect.map(
|
||||||
SubscriptionRef.make(value),
|
SubscriptionRef.make(value),
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import type * as React from "react"
|
|||||||
import * as Component from "./Component.js"
|
import * as Component from "./Component.js"
|
||||||
|
|
||||||
|
|
||||||
export const usePubSubFromReactiveValues = Effect.fnUntraced(function* <const A extends React.DependencyList>(
|
export const useFromReactiveValues = Effect.fnUntraced(function* <const A extends React.DependencyList>(
|
||||||
values: A
|
values: A
|
||||||
): Effect.fn.Return<PubSub.PubSub<A>, never, Scope.Scope> {
|
): Effect.fn.Return<PubSub.PubSub<A>, never, Scope.Scope> {
|
||||||
const pubsub = yield* Component.useOnMount(() => Effect.acquireRelease(PubSub.unbounded<A>(), PubSub.shutdown))
|
const pubsub = yield* Component.useOnMount(() => Effect.acquireRelease(PubSub.unbounded<A>(), PubSub.shutdown))
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import * as React from "react"
|
|||||||
import * as Component from "./Component.js"
|
import * as Component from "./Component.js"
|
||||||
|
|
||||||
|
|
||||||
export const useStream: {
|
export const use: {
|
||||||
<A, E, R>(
|
<A, E, R>(
|
||||||
stream: Stream.Stream<A, E, R>
|
stream: Stream.Stream<A, E, R>
|
||||||
): Effect.Effect<Option.Option<A>, never, R>
|
): Effect.Effect<Option.Option<A>, never, R>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ export const zipLatestAll = <const T extends readonly Subscribable.Subscribable<
|
|||||||
changes: Stream.zipLatestAll(...elements.map(v => v.changes)),
|
changes: Stream.zipLatestAll(...elements.map(v => v.changes)),
|
||||||
}) as any
|
}) as any
|
||||||
|
|
||||||
export declare namespace useSubscribables {
|
export declare namespace useAll {
|
||||||
export type Success<T extends readonly Subscribable.Subscribable<any, any, any>[]> = [T[number]] extends [never]
|
export type Success<T extends readonly Subscribable.Subscribable<any, any, any>[]> = [T[number]] extends [never]
|
||||||
? never
|
? never
|
||||||
: { [K in keyof T]: T[K] extends Subscribable.Subscribable<infer A, infer _E, infer _R> ? A : never }
|
: { [K in keyof T]: T[K] extends Subscribable.Subscribable<infer A, infer _E, infer _R> ? A : never }
|
||||||
@@ -29,11 +29,11 @@ export declare namespace useSubscribables {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useSubscribables = Effect.fnUntraced(function* <const T extends readonly Subscribable.Subscribable<any, any, any>[]>(
|
export const useAll = Effect.fnUntraced(function* <const T extends readonly Subscribable.Subscribable<any, any, any>[]>(
|
||||||
elements: T,
|
elements: T,
|
||||||
options?: useSubscribables.Options<useSubscribables.Success<NoInfer<T>>>,
|
options?: useAll.Options<useAll.Success<NoInfer<T>>>,
|
||||||
): Effect.fn.Return<
|
): Effect.fn.Return<
|
||||||
useSubscribables.Success<T>,
|
useAll.Success<T>,
|
||||||
[T[number]] extends [never] ? never : T[number] extends Subscribable.Subscribable<infer _A, infer E, infer _R> ? E : never,
|
[T[number]] extends [never] ? never : T[number] extends Subscribable.Subscribable<infer _A, infer E, infer _R> ? E : never,
|
||||||
[T[number]] extends [never] ? never : T[number] extends Subscribable.Subscribable<infer _A, infer _E, infer R> ? R : never
|
[T[number]] extends [never] ? never : T[number] extends Subscribable.Subscribable<infer _A, infer _E, infer R> ? R : never
|
||||||
> {
|
> {
|
||||||
|
|||||||
Reference in New Issue
Block a user