@szhsin/react-menu
Version:
React component for building accessible menu, dropdown, submenu, context menu, and more
31 lines (28 loc) • 565 B
JavaScript
;
const createSubmenuCtx = () => {
let timer,
count = 0;
return {
toggle: isOpen => {
isOpen ? count++ : count--;
count = Math.max(count, 0);
},
on: (closeDelay, pending, settled) => {
if (count) {
if (!timer) timer = setTimeout(() => {
timer = 0;
pending();
}, closeDelay);
} else {
settled?.();
}
},
off: () => {
if (timer) {
clearTimeout(timer);
timer = 0;
}
}
};
};
exports.createSubmenuCtx = createSubmenuCtx;