@base-ui/react
Version:
Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.
33 lines (32 loc) • 686 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.enqueueFocus = enqueueFocus;
var _empty = require("@base-ui/utils/empty");
let rafId = 0;
function enqueueFocus(el, options = {}) {
const {
preventScroll = false,
cancelPrevious = true,
sync = false
} = options;
if (cancelPrevious) {
cancelAnimationFrame(rafId);
}
const exec = () => el?.focus({
preventScroll
});
if (sync) {
exec();
return _empty.NOOP;
}
const currentRafId = requestAnimationFrame(exec);
rafId = currentRafId;
return () => {
if (rafId === currentRafId) {
cancelAnimationFrame(currentRafId);
rafId = 0;
}
};
}