UNPKG

@shopify/polaris

Version:

Shopify’s product component library

38 lines (33 loc) 895 B
import React$1, { useState, useCallback, useMemo } from 'react'; import { FocusManagerContext } from '../../utilities/focus-manager/context.js'; function FocusManager({ children }) { var [trapFocusList, setTrapFocusList] = useState([]); var add = useCallback(id => { setTrapFocusList(list => [...list, id]); }, []); var remove = useCallback(id => { var removed = true; setTrapFocusList(list => { var clone = [...list]; var index = clone.indexOf(id); if (index === -1) { removed = false; } else { clone.splice(index, 1); } return clone; }); return removed; }, []); var value = useMemo(() => ({ trapFocusList, add, remove }), [add, trapFocusList, remove]); return /*#__PURE__*/React$1.createElement(FocusManagerContext.Provider, { value: value }, children); } export { FocusManager };