import { useCallback, useContext } from 'preact/hooks' import { SeamlyLiveRegionContext } from 'ui/components/core/seamly-live-region-context' import { ariaLiveLevels } from 'ui/utils/seamly-utils' export const useSeamlyLiveRegionContext = () => { const sendMessage = useContext(SeamlyLiveRegionContext) if (!sendMessage) { throw new Error( 'useSeamlyLiveRegionContext has to be used within ', ) } return sendMessage } export const useLiveRegion = () => { const sendMessage = useSeamlyLiveRegionContext() const sendPolite = useCallback( (messageText) => { if (!messageText) return sendMessage({ ariaLive: ariaLiveLevels.polite, messageText, }) }, [sendMessage], ) const sendAssertive = useCallback( (messageText) => { if (!messageText) return sendMessage({ ariaLive: ariaLiveLevels.assertive, messageText, }) }, [sendMessage], ) return { sendPolite, sendAssertive } }