sonner-native
Version:
An opinionated toast component for React Native. A port of @emilkowalski's sonner.
61 lines • 2.17 kB
TypeScript
import * as React from 'react';
import type { ToastProps, ToastRef } from './types';
type ToastTimer = {
timeout: ReturnType<typeof setTimeout>;
startTime: number;
remainingTime: number;
isPaused: boolean;
};
type ToastStoreState = {
toasts: ToastProps[];
toastsById: Map<string | number, ToastProps>;
toastsCounter: number;
toastRefs: Record<string | number, React.RefObject<ToastRef | null>>;
shouldShowOverlay: boolean;
toastTimers: Record<string | number, ToastTimer>;
toastHeights: Record<string | number, number>;
toastHeightsVersion: number;
isExpanded: boolean;
};
type Subscriber = () => void;
type ToastStoreConfig = {
autoWiggleOnUpdate?: 'never' | 'toast-change' | 'always';
visibleToasts?: number;
duration?: number;
pauseWhenPageIsHidden?: boolean;
};
declare class ToastStore {
private state;
private subscribers;
private config;
private hideOverlayTimeout;
private promiseResolvers;
private collapseCooldown;
private collapseCooldownTimeout;
subscribe: (callback: Subscriber) => () => void;
getSnapshot: () => ToastStoreState;
setConfig: (config: ToastStoreConfig) => void;
private notify;
private cloneIndex;
private startTimer;
private clearTimer;
pauseTimer: (id: string | number) => void;
resumeTimer: (id: string | number) => void;
pauseAllTimers: () => void;
resumeAllTimers: () => void;
private handlePromise;
addToast: (options: Omit<ToastProps, "id" | "numberOfToasts" | "index" | "orderedToastIds"> & {
id?: string | number;
}) => string | number;
dismissToast: (id: string | number | undefined, origin?: "onDismiss" | "onAutoClose") => string | number | undefined;
private scheduleHideOverlay;
wiggleToast: (id: string | number) => void;
getToastRef: (id: string | number) => React.RefObject<ToastRef | null> | undefined;
setToastHeight: (id: string | number, height: number) => void;
expand: () => void;
collapse: () => void;
toggleExpand: () => void;
}
export declare const toastStore: ToastStore;
export {};
//# sourceMappingURL=toast-store.d.ts.map