import type { DependencyList } from 'react'; export interface UseActiveDescendantConfig { /** DOM element which controls and has active descendants */ focusEl: HTMLElement | null; /** Root scope for descendant options */ scope: HTMLElement | null; /** Custom selector for specific descendant scope in root descendant scope */ scopeSelector?: string; /** Custom selector for descendant options */ selector?: string; /** Orientation of descendant navigation * @default 'vertical' */ orientation?: 'horizontal' | 'vertical'; /** One-time override for the focused descendant, triggers re-evaluation. * Include `clearFocusDescendantEl` for cleanup. */ focusDescendantEl?: HTMLElement | null; /** Callback to clear focusDescendantEl after use. */ clearFocusDescendant?: () => void; /** One-time override for focused element on NEXT re-evaluation of active descendants. * Include `clearFocusReturn` for cleanup. */ focusReturnEl?: HTMLElement | null; /** Callback to clear focusReturnEl after use. */ clearFocusReturn?: () => void; /** * Descendant ID used for continuous override of current active descendant, * used for external focus control / keyDown bindings (see RTE). * NOTE: setting currentDescendantId once effectively disables the keybindings of this hook. * If you only need to set the current element once, use focusReturnEl & clearFocusReturn. * @deprecated */ currentDescendantId?: string; /** Explicit onClick handler called on keydown 'enter' event */ onClick?: (currentDescendantEl: HTMLElement) => void; /** Prevent scrolling to the active descendant on the initial render. * Include `clearPreventScroll` to scroll on subsequent interactions if applicable. */ preventInitialScroll?: boolean; /** Callback to clear preventInitialScroll after use. */ clearPreventScroll?: () => void; /** Boolean to prevent descendant evaluation. * @default false */ pauseDescendantEvaluation?: boolean; /** * If true, the down or up arrow key will navigate to the first or last element if the active element is last or first. * @default true */ cycle?: boolean; } type CurrentDescendant = HTMLElement | undefined; type Descendants = HTMLElement[] | null; declare const useActiveDescendant: ({ focusEl, scope, scopeSelector, selector, orientation, focusDescendantEl, clearFocusDescendant, focusReturnEl, clearFocusReturn, currentDescendantId, onClick, preventInitialScroll, pauseDescendantEvaluation, clearPreventScroll, cycle }: UseActiveDescendantConfig, dependencyArray?: DependencyList) => { activeDescendant: CurrentDescendant; descendants: Descendants; }; export declare const useLazyDescendant: ({ loading, descendants, previousActiveDescendant, activeDescendant, focusReturnEl, setFocusReturnEl, scrollEl }: { loading: boolean; descendants: Descendants; previousActiveDescendant: CurrentDescendant; activeDescendant: CurrentDescendant; focusReturnEl: UseActiveDescendantConfig["focusReturnEl"]; setFocusReturnEl: (el: HTMLElement | null | undefined) => void; scrollEl?: HTMLElement | null; }) => void; export default useActiveDescendant; //# sourceMappingURL=useActiveDescendant.d.ts.map