import type { Quadtree } from 'd3-quadtree'; import type { Point } from '../../core/types/point.js'; import type { RelativeAbsolutePosition } from '../../core/types/pointer-events.js'; import type { AREA_VARIANT, SeriesId, AreaSeriesWithDatapoints, DotSeriesWithDatapoints, LineSeriesWithDatapoints, RECT_VARIANT, RectSeriesWithDatapoints, RectDatapointInternal, BarSeriesWithDatapoints, BAR_VARIANT } from '../types/xy-chart-internals.js'; import { DOT_VARIANT, LINE_VARIANT } from '../types/xy-chart-internals.js'; import type { AreaDatapoint, BarDatapoint, DotDatapoint, LineDatapoint } from '../types/xy-chart.js'; export type SeriesQuadtreeDatapoint = DotDatapoint | LineDatapoint | AreaDatapoint; export type SeriesToQuadtree = Map>; export type HoverGridDatapoint = RectDatapointInternal | BarDatapoint; export interface HoverGridEntry { datapoint: D; x: number; y: number; width: number; height: number; } export interface HoverGrid { cells: HoverGridEntry[][]; cellSize: number; originX: number; originY: number; cols: number; rows: number; } export type SeriesToHoverGrid = Map>; export type DotSeriesQueryResult = { type: typeof DOT_VARIANT; distance: number; datapoint: DotDatapoint; series: DotSeriesWithDatapoints; }; export type LineSeriesQueryResult = { type: typeof LINE_VARIANT; distance: number; datapoint: LineDatapoint; series: LineSeriesWithDatapoints; }; export type RectSeriesQueryResult = { type: typeof RECT_VARIANT; distance: number; datapoint: RectDatapointInternal; series: RectSeriesWithDatapoints; }; export type BarSeriesQueryResult = { type: typeof BAR_VARIANT; distance: number; datapoint: BarDatapoint; series: BarSeriesWithDatapoints; }; export type AreaSeriesQueryResult = { type: typeof AREA_VARIANT; distance: number; datapoint: AreaDatapoint; series: AreaSeriesWithDatapoints; }; export type SeriesQueryResult = DotSeriesQueryResult | LineSeriesQueryResult | AreaSeriesQueryResult | RectSeriesQueryResult | BarSeriesQueryResult; export type QueryClosest = { (series: DotSeriesWithDatapoints[], position: Point): DotSeriesQueryResult | undefined; (series: LineSeriesWithDatapoints[], position: Point): LineSeriesQueryResult | undefined; (series: AreaSeriesWithDatapoints[], position: Point): AreaSeriesQueryResult | undefined; }; export type QueryHovered = { (series: RectSeriesWithDatapoints[], position: Point): RectSeriesQueryResult | undefined; (series: BarSeriesWithDatapoints[], position: Point): BarSeriesQueryResult | undefined; }; export type HoverQueryArgs = { position: RelativeAbsolutePosition; dotSeriesData: DotSeriesWithDatapoints[]; lineSeriesData: LineSeriesWithDatapoints[]; areaSeriesData: AreaSeriesWithDatapoints[]; rectSeriesData: RectSeriesWithDatapoints[]; barSeriesData: BarSeriesWithDatapoints[]; }; export type HoverQueryResult = { preferred: SeriesQueryResult | undefined; datapoints: SeriesQueryResult[]; }; export type HoverQuery = (args: HoverQueryArgs) => HoverQueryResult; export interface XYChartOverlayPerformance { /** * Resolves the datapoint(s) under the cursor. The provider picks the * concrete strategy (single vs. shared-tooltip) based on the chart's * tooltip variant; consumers always call this same function. */ query: HoverQuery; } export declare const XYChartOverlayPerformanceContext: import("react").Context;