import { MiddlewareData, ArrowOptions, AutoPlacementOptions, ComputePositionConfig, FlipOptions, HideOptions, Middleware, MiddlewareState, OffsetOptions, Placement, ShiftOptions, SizeOptions } from '@floating-ui/dom'; import { CSSObject } from '../utils/types'; /** * Function option to derive middleware options from state. */ type Derivable = (state: MiddlewareState) => T; /** * Returns a styling object to set the visibility of the floating element based * on middleware data * * @param middleware */ export declare const visibilityHandler: (middleware: MiddlewareData) => CSSObject; /** * Provides data to position an inner element of the floating element so that it * appears centered to the reference element. * @see https://floating-ui.com/docs/arrow */ export declare const arrowMiddleware: (options: ArrowOptions | Derivable) => Middleware; export type MiddlewareModifier = Middleware[] | ((middleware: Middleware[]) => Middleware[]); export interface FloatingUIConfigArgs { baseConfig: Partial; middleware: { overrides?: MiddlewareModifier; autoPlacement?: boolean | AutoPlacementOptions; flip?: boolean | FlipOptions; hide?: boolean | HideOptions; shift?: boolean | ShiftOptions; size?: boolean | SizeOptions; }; arrow: { options: ArrowOptions; hide: boolean; }; placement?: Placement; offset: OffsetOptions; } /** * Build a configuration to pass to floating-ui's computePosition or useFloating hook. * * If autoPlacement is specified, flip is automatically disabled. * Default behavior such as `placement=top` is assigned here. * * @param baseConfig * @param middleware * @param offsetOptions * @param arrow * @param placement */ export declare const buildFloatingUIConfig: ({ baseConfig, middleware, offset: offsetOptions, arrow, placement, }: FloatingUIConfigArgs) => { placement?: Placement | undefined; strategy?: import('@floating-ui/utils').Strategy | undefined; middleware?: Array | undefined; platform?: import('@floating-ui/dom').Platform | undefined; }; /** * Generate styles for an arrow based on the tooltip placement and arrow dimensions. * * @param placement - the placement of the tooltip relative to the anchor * @param arrowHeight - the height of the arrow * @param arrowWidth - the width of the arrow * @param x - optional x position, calculated from arrow middleware * @param y - optional y position, calculated from arrow middleware */ export declare const arrowStyles: ({ placement, arrowHeight, arrowWidth, x, y, }: { x?: number; y?: number; placement: Placement; arrowHeight: number; arrowWidth: number; }) => Partial; export {};