UNPKG

@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
"use strict"; 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; } }; }