@ark-ui/react
Version:
A collection of unstyled, accessible UI components for React, utilizing state machines for seamless interaction.
27 lines (22 loc) • 899 B
JavaScript
'use client';
;
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const focusVisible = require('@zag-js/focus-visible');
const react = require('react');
const useEnvironmentContext = require('../environment/use-environment-context.cjs');
function useFocusVisible(props = {}) {
const { isTextInput, autoFocus } = props;
const { getRootNode } = useEnvironmentContext.useEnvironmentContext();
const subscribe = react.useCallback(
(onStoreChange) => focusVisible.trackFocusVisible({
root: getRootNode(),
isTextInput,
autoFocus,
onChange: onStoreChange
}),
[getRootNode, isTextInput, autoFocus]
);
const getSnapshot = react.useCallback(() => autoFocus || focusVisible.isFocusVisible(), [autoFocus]);
return react.useSyncExternalStore(subscribe, getSnapshot, () => false);
}
exports.useFocusVisible = useFocusVisible;