UNPKG

@hypothesis/frontend-shared

Version:

Shared components, styles and utilities for Hypothesis projects

28 lines (27 loc) 981 B
import { useCallback, useState } from 'preact/hooks'; // Keep a global incremental counter to use as unique toast message ID let toastMessageCounter = 0; function dataToToastMessage(toastMessageData) { toastMessageCounter++; const id = `${toastMessageCounter}`; return { ...toastMessageData, id }; } /** * Hook providing a simple way to handle state for {@link ToastMessages} */ export function useToastMessages(initialToastMessages = []) { const [toastMessages, setToastMessages] = useState(initialToastMessages.map(dataToToastMessage)); const appendToastMessage = useCallback(toastMessageData => { setToastMessages(messages => [...messages, dataToToastMessage(toastMessageData)]); }, []); const dismissToastMessage = useCallback(id => setToastMessages(messages => messages.filter(message => message.id !== id)), []); return { toastMessages, appendToastMessage, dismissToastMessage }; } //# sourceMappingURL=use-toast-messages.js.map