import type { Observable, SourceObservable } from '@noshiro/syncflow'; import { source } from '@noshiro/syncflow'; import { useCallback, useMemo } from 'react'; export const useVoidEventObservable = (): [Observable, () => void] => { const src$ = useMemo>(source, []); const emitter = useCallback(() => { src$.next(undefined); }, []); return [src$, emitter]; }; export const useEventObservable = (): [ Observable, (value: A) => void ] => { const src$ = useMemo>(source, []); const emitter = useCallback((value: A) => { src$.next(value); }, []); return [src$, emitter]; };