import { useMemo } from 'react'; import { useFnsWire } from '../fn-wire/use-fns-wire'; import { useStateWire } from '../state-wire/use-state-wire'; import { InitializerOrValue } from '../utils/is-initializer'; import { Wire } from './wire'; export function useWire( upLink: Wire, ): Wire; export function useWire( upLink: Wire | null | undefined, initialValue: InitializerOrValue, ): Wire; export function useWire( upLink: Wire | null | undefined, initialValue: InitializerOrValue, ): Wire; export function useWire( upLink: Wire | null | undefined, initialValue?: InitializerOrValue, ): Wire; export function useWire( upLink: Wire | null | undefined, initialValue?: InitializerOrValue, ): Wire | Wire { const fnsWire = useFnsWire(upLink); const stateWire = useStateWire(upLink, initialValue); return useMemo(() => ({ ...fnsWire, ...stateWire }), [fnsWire, stateWire]); }