/** * 列表键盘导航公共 Hook * 统一处理 ArrowUp / ArrowDown / Space,支持吸顶偏移、底部加载更多 */ import React from "react"; export interface UseListKeyboardNavOptions { /** 列表容器 ref */ containerRef: React.RefObject; /** 当前导航列表的 ref(如 listRef / flatListRef / navigationListRef),调用方需在列表数据变化时同步更新此 ref */ listRef: React.RefObject; /** 用于滚动定位的 data 属性名,如 'data-index' | 'data-contact-index' | 'data-org-index' */ dataAttribute: string; /** 吸顶区域高度(如 sticky header),不传则使用 scrollIntoView */ stickyHeaderOffset?: number; /** 是否有更多数据(底部加载更多场景),用 ref 避免闭包旧值 */ hasMoreDataRef?: React.RefObject; /** 到达底部时加载更多(传入目标 index);调用方在数据加载完成后应调用 setHighlightedIndex(targetIndex) 以保持高亮一致 */ onLoadMore?: (targetIndex: number) => void; /** 空格键选中/取消时回调 */ onSelectItem: (index: number, item: any) => void; /** 判断某项是否禁用,禁用项不响应空格 */ isItemDisabled?: (item: any) => boolean; } export declare function useListKeyboardNavigation(options: UseListKeyboardNavOptions): { highlightedIndex: number; setHighlightedIndex: React.Dispatch>; handlePointerMove: (index: number) => void; scrollToItem: (index: number) => void; };