@shopify/polaris
Version:
Shopify’s admin product component library
38 lines (34 loc) • 914 B
JavaScript
var React = require('react');
var context = require('../../utilities/focus-manager/context.js');
function FocusManager({
children
}) {
const [trapFocusList, setTrapFocusList] = React.useState([]);
const add = React.useCallback(id => {
setTrapFocusList(list => [...list, id]);
}, []);
const remove = React.useCallback(id => {
let removed = true;
setTrapFocusList(list => {
const clone = [...list];
const index = clone.indexOf(id);
if (index === -1) {
removed = false;
} else {
clone.splice(index, 1);
}
return clone;
});
return removed;
}, []);
const value = React.useMemo(() => ({
trapFocusList,
add,
remove
}), [add, trapFocusList, remove]);
return /*#__PURE__*/React.createElement(context.FocusManagerContext.Provider, {
value: value
}, children);
}
exports.FocusManager = FocusManager;
;