UNPKG

@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.

66 lines 2.79 kB
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' | 'updateKey'>>; /** * A toast once it lives in the store. `addToast` is the only way in and it always * assigns `updateKey`, so unlike the public `ToastObject` it is never missing. */ export type StoredToast<Data extends object = any> = ToastObject<Data> & { updateKey: number; }; export type State = { toasts: StoredToast[]; toastMetadata: Map<string, ToastMetadata>; hovering: boolean; focused: boolean; timeout: number; limit: number; isWindowFocused: boolean; viewport: HTMLElement | null; prevFocusElement: HTMLElement | null; }; type ToastMetadata = { value: StoredToast; domIndex: number; visibleIndex: number; offsetY: number; }; type InitialState = Omit<State, 'toastMetadata'>; export declare const selectors: { toasts: (state: State) => StoredToast<any>[]; isEmpty: (state: State) => boolean; toast: (state: State, id: string) => StoredToast<any> | undefined; toastIndex: (state: State, id: string) => number; toastOffsetY: (state: State, id: string) => number; toastVisibleIndex: (state: State, id: string) => number; 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: InitialState); setViewport: (viewport: HTMLElement | null) => void; syncProviderProps(timeout: number, limit: number): void; disposeEffect: () => () => void; removeToast(toastId: string, skipOnRemove?: boolean): 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>, resetTimer?: boolean, markUpdated?: boolean) => 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 clearTimers; private clearTimer; private handleTimerFired; private resetPausedStateIfNoTimersRemain; private setToasts; private handleFocusManagement; } export {};