import { Effect, PubSub, type Scope } from "effect" import type * as React from "react" import * as Component from "./Component.js" export const useFromReactiveValues = Effect.fnUntraced(function* ( values: A ): Effect.fn.Return, never, Scope.Scope> { const pubsub = yield* Component.useOnMount(() => Effect.acquireRelease(PubSub.unbounded(), PubSub.shutdown)) yield* Component.useReactEffect(() => Effect.unlessEffect(PubSub.publish(pubsub, values), PubSub.isShutdown(pubsub)), values) return pubsub }) export * from "effect/PubSub"