@equinor/fusion-observable
Version:
33 lines (32 loc) • 1.51 kB
TypeScript
import type { Observable, StatefulObservable } from '../types';
type ObservableStateOptions<TType = undefined> = {
initial?: TType;
teardown?: VoidFunction;
};
export type ObservableStateReturnType<TType, TError = unknown> = {
value: TType;
error: TError | null;
complete: boolean;
};
/**
* use state of observable
* @param subject [dep] Observable subject
*/
export declare function useObservableState<S, TError = unknown>(subject: Observable<S>): ObservableStateReturnType<S | undefined, TError>;
/**
* use state of observable
* @param subject [dep] Observable subject
*/
export declare function useObservableState<TType, TError = unknown, TInitial extends TType | undefined = undefined>(subject: Observable<TType>, opt: ObservableStateOptions<TInitial>): ObservableStateReturnType<TType | TInitial, TError>;
/** === StatefulObservable === */
/**
* use state of observable with value property (`FlowSubject`, `BehaviorSubject`)
* @param subject [dep] Observable subject
*/
export declare function useObservableState<TType, TError = unknown>(subject: StatefulObservable<TType>): ObservableStateReturnType<TType, TError>;
/**
* use state of observable with value property (`FlowSubject`, `BehaviorSubject`)
* @param subject [dep] Observable subject
*/
export declare function useObservableState<TType, TError = unknown>(subject: StatefulObservable<TType>, options: ObservableStateOptions<TType>): ObservableStateReturnType<TType, TError>;
export default useObservableState;