| 70 | * Subscribes to a provided toast queue and provides methods to update it. |
| 71 | */ |
| 72 | export function useToastQueue<T>(queue: ToastQueue<T>): ToastState<T> { |
| 73 | let subscribe = useCallback(fn => queue.subscribe(fn), [queue]); |
| 74 | let getSnapshot = useCallback(() => queue.visibleToasts, [queue]); |
| 75 | let visibleToasts = useSyncExternalStore(subscribe, getSnapshot, getSnapshot); |
| 76 | |
| 77 | return { |
| 78 | visibleToasts, |
| 79 | add: (content, options) => queue.add(content, options), |
| 80 | close: key => queue.close(key), |
| 81 | pauseAll: () => queue.pauseAll(), |
| 82 | resumeAll: () => queue.resumeAll() |
| 83 | }; |
| 84 | } |
| 85 | |
| 86 | /** |
| 87 | * A ToastQueue manages the order of toasts. |