@base-ui/react
Version:
Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.
51 lines • 2.3 kB
TypeScript
import { ReactStore } from '@base-ui/utils/store';
import { ToastManagerAddOptions, ToastManagerPromiseOptions, ToastManagerUpdateOptions, ToastObject } from "./useToastManager.js";
type ToastInternalUpdateOptions<Data extends object> = Partial<Omit<ToastObject<Data>, 'id'>>;
export type State = {
toasts: ToastObject<any>[];
hovering: boolean;
focused: boolean;
timeout: number;
limit: number;
isWindowFocused: boolean;
viewport: HTMLElement | null;
prevFocusElement: HTMLElement | null;
};
export declare const selectors: {
toasts: (state: State) => ToastObject<any>[];
isEmpty: (state: State) => boolean;
toast: (args_0: State, id: string) => ToastObject<any> | undefined;
toastIndex: (args_0: State, id: string) => number;
toastOffsetY: (args_0: State, id: string) => number;
toastVisibleIndex: (args_0: State, id: string) => number;
hovering: (state: State) => boolean;
focused: (state: State) => boolean;
expanded: (state: State) => boolean;
expandedOrOutOfFocus: (state: State) => boolean;
prevFocusElement: (state: State) => HTMLElement | null;
};
export declare class ToastStore extends ReactStore<State, {}, typeof selectors> {
private timers;
private areTimersPaused;
constructor(initialState: State);
setFocused(focused: boolean): void;
setHovering(hovering: boolean): void;
setIsWindowFocused(isWindowFocused: boolean): void;
setPrevFocusElement(prevFocusElement: HTMLElement | null): void;
setViewport: (viewport: HTMLElement | null) => void;
disposeEffect: () => () => void;
removeToast(toastId: string): void;
addToast: <Data extends object>(toast: ToastManagerAddOptions<Data>) => string;
updateToast: <Data extends object>(id: string, updates: ToastManagerUpdateOptions<Data>) => void;
updateToastInternal: <Data extends object>(id: string, updates: ToastInternalUpdateOptions<Data>) => void;
closeToast: (toastId: string) => void;
promiseToast: <Value, Data extends object>(promiseValue: Promise<Value>, options: ToastManagerPromiseOptions<Value, Data>) => Promise<Value>;
pauseTimers(): void;
resumeTimers(): void;
restoreFocusToPrevElement(): void;
handleDocumentPointerDown: (event: PointerEvent) => void;
private scheduleTimer;
private setToasts;
private handleFocusManagement;
}
export {};