import * as React from 'react'; // @ts-ignore import type { Observable } from 'rxjs'; /** * @internal */ export function useObservableState( observable: Observable | undefined, startWith: T, resetWhenObservableChanges = true, ) { const [state, setState] = React.useState(startWith); React.useEffect(() => { if (resetWhenObservableChanges) { setState(startWith); } // observable state doesn't run in SSR if (typeof window === 'undefined' || !observable) return; const subscription = observable.subscribe(setState); return () => subscription.unsubscribe(); }, [observable, resetWhenObservableChanges]); return state; }