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