import type { HTMLProps, RefObject } from 'react';
import type { FloatingEvents } from './createFloatingEvents';
import type { PopupTriggerMap } from './PopupTriggerMap';
export type { FloatingEvents };
export type ElementProps = {
reference?: HTMLProps;
floating?: HTMLProps;
item?: HTMLProps | ((props: {
active?: boolean;
selected?: boolean;
}) => HTMLProps);
};
export type OpenChangeReason = 'hover' | 'focus' | 'click' | 'dismiss' | 'list-navigation' | 'escape-key' | 'reference-press' | 'safe-polygon';
export interface FloatingInteractionContext {
open: boolean;
onOpenChange: (open: boolean, event?: Event, reason?: OpenChangeReason) => void;
refs: {
reference: RefObject;
floating: RefObject;
domReference: RefObject;
};
elements: {
reference: Element | null;
floating: HTMLElement | null;
domReference: Element | null;
};
dataRef: RefObject<{
openEvent?: Event;
placement?: string;
typing?: boolean;
}>;
events?: FloatingEvents;
triggerElements?: PopupTriggerMap;
handleCloseActiveRef?: RefObject;
}
export type Delay = number | Partial<{
open: number;
close: number;
}>;
export interface UseHoverProps {
enabled?: boolean;
delay?: Delay;
restMs?: number;
move?: boolean;
handleClose?: HandleCloseFn | null;
mouseOnly?: boolean;
}
export type HandleCloseFn = {
(context: {
x: number;
y: number;
placement: string;
elements: {
reference: Element;
floating: HTMLElement;
domReference: Element;
};
onClose: () => void;
tree?: any;
leave?: boolean;
}): (event: MouseEvent) => void;
__options?: SafePolygonOptions;
};
export interface SafePolygonOptions {
requireIntent?: boolean;
buffer?: number;
blockPointerEvents?: boolean;
/** render the safe polygon on screen for debugging */
__debug?: boolean;
}
export interface UseFocusProps {
enabled?: boolean;
visibleOnly?: boolean;
}
export interface UseRoleProps {
enabled?: boolean;
role?: 'dialog' | 'tooltip' | 'alertdialog' | 'menu' | 'listbox' | 'grid' | 'tree' | 'select' | 'combobox' | 'label';
}
export interface UseClickProps {
enabled?: boolean;
event?: 'click' | 'mousedown';
toggle?: boolean;
ignoreMouse?: boolean;
keyboardHandlers?: boolean;
stickIfOpen?: boolean;
}
export interface UseListNavigationProps {
listRef: RefObject>;
activeIndex: number | null;
selectedIndex?: number | null;
onNavigate?: (index: number | null) => void;
enabled?: boolean;
loop?: boolean;
nested?: boolean;
rtl?: boolean;
virtual?: boolean;
focusItemOnOpen?: boolean | 'auto';
focusItemOnHover?: boolean;
openOnArrowKeyDown?: boolean;
scrollItemIntoView?: boolean | ScrollIntoViewOptions;
allowEscape?: boolean;
orientation?: 'vertical' | 'horizontal' | 'both';
disabledIndices?: Array | ((index: number) => boolean);
cols?: number;
}
export interface UseTypeaheadProps {
listRef: RefObject>;
activeIndex: number | null;
selectedIndex?: number | null;
onMatch?: (index: number) => void;
onTypingChange?: (isTyping: boolean) => void;
enabled?: boolean;
findMatch?: null | ((list: Array, typedString: string) => string | null | undefined);
resetMs?: number;
ignoreKeys?: string[];
}
export interface UseInnerOffsetProps {
enabled?: boolean;
onChange: (offset: number | ((prev: number) => number)) => void;
overflowRef: RefObject;
scrollRef?: RefObject;
}
//# sourceMappingURL=types.d.ts.map