@shopify/polaris
Version:
Shopify’s product component library
33 lines (28 loc) • 834 B
JavaScript
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 };