@equinor/fusion-observable
Version:
12 lines (11 loc) • 643 B
TypeScript
import { type Observable, type ObservableInput, Subject } from 'rxjs';
import type { ObservableType } from '../types';
export type UseDebounceOptions<TArgs extends any[]> = {
debounce: ((value: TArgs) => ObservableInput<unknown>) | number;
queuer?: Subject<TArgs>;
};
export declare const useDebounce: <TFn extends (...args: TArgs) => TType, TType extends ObservableInput<any> = ReturnType<TFn>, TArgs extends any[] = Parameters<TFn>>(fn: TFn, options: UseDebounceOptions<TArgs>) => {
value$: Observable<TType extends ObservableInput<any> ? ObservableType<TType> : TType>;
next: (...args: TArgs) => void;
idle: boolean;
};