import { Effect, Runtime } from "effect" import * as React from "react" export const useCallbackSync: { ( callback: (...args: Args) => Effect.Effect, deps: React.DependencyList, ): Effect.Effect<(...args: Args) => A, never, R> } = Effect.fnUntraced(function* ( callback: (...args: Args) => Effect.Effect, deps: React.DependencyList, ) { const runtimeRef = React.useRef>(null!) runtimeRef.current = yield* Effect.runtime() return React.useCallback((...args: Args) => Runtime.runSync(runtimeRef.current)(callback(...args)), deps) })