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.

36 lines (35 loc) 718 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, sync = false, shouldFocus } = options; cancelAnimationFrame(rafId); function exec() { if (shouldFocus && !shouldFocus()) { return; } el?.focus({ preventScroll }); } if (sync) { exec(); return _empty.NOOP; } const currentRafId = requestAnimationFrame(exec); rafId = currentRafId; return () => { if (rafId === currentRafId) { cancelAnimationFrame(currentRafId); rafId = 0; } }; }