@ark-ui/vue
Version:
A collection of unstyled, accessible UI components for Vue, utilizing state machines for seamless interaction.
17 lines (16 loc) • 671 B
JavaScript
import { DEFAULT_ENVIRONMENT, useEnvironmentContext } from "../environment/use-environment-context.js";
import { useSyncExternalStore } from "@zag-js/vue";
import { isFocusVisible, trackFocusVisible } from "@zag-js/focus-visible";
//#region src/providers/interaction/use-focus-visible.ts
function useFocusVisible(props = {}) {
const { isTextInput, autoFocus } = props;
const env = useEnvironmentContext(DEFAULT_ENVIRONMENT);
return useSyncExternalStore((listener) => trackFocusVisible({
root: env.value.getRootNode(),
isTextInput,
autoFocus,
onChange: listener
}), () => autoFocus || isFocusVisible(), () => false);
}
//#endregion
export { useFocusVisible };