UNPKG

@shopify/polaris

Version:

Shopify’s product component library

33 lines (28 loc) 834 B
import { useContext, useMemo, useEffect } from 'react'; import { MissingAppProviderError } from '../errors.js'; import { FocusManagerContext } from './context.js'; import { useUniqueId } from '../unique-id/hooks.js'; function useFocusManager() { var focusManager = useContext(FocusManagerContext); var id = useUniqueId(); if (!focusManager) { throw new MissingAppProviderError('No FocusManager was provided.'); } var { trapFocusList, add: addFocusItem, remove: removeFocusItem } = focusManager; var canSafelyFocus = trapFocusList[0] === id; var value = useMemo(() => ({ canSafelyFocus }), [canSafelyFocus]); useEffect(() => { addFocusItem(id); return () => { removeFocusItem(id); }; }, [addFocusItem, id, removeFocusItem]); return value; } export { useFocusManager };