import type { AxisID, CrossLine, DynamicContext } from 'ag-charts-core'; import type { ChartRegistry } from '../../module/moduleContext'; /** An axis's cross lines, as the keyboard proxies see them. */ export interface CrossLinesProxySource { readonly axisId: AxisID; isVisible(): boolean; getInstances(): readonly CrossLine[]; isKeyboardClickable(crossLine: CrossLine): boolean; keyboardClick(crossLine: CrossLine, sourceEvent: Event): void; } /** The cross line whose proxy has keyboard focus, and the plugin of its axis. */ export interface CrossLineFocusState { readonly plugin: CrossLinesProxySource; readonly crossLine: CrossLine; } /** * Keyboard proxies for clickable cross lines: a single roving-tabindex list across every axis, each item a * button bounding its cross line and label. The buttons ignore the pointer, so pointer clicks still reach the * series area, which hit-tests cross lines itself. */ export declare class CrossLinesDOMProxy { private readonly ctx; private readonly cleanup; private readonly list; private readonly buttons; /** Drawn beside the button they outline, as a button's text content would replace them. */ private readonly focusPaths; private readonly plugins; private entries; private dirty; private focusedIndex; constructor(ctx: DynamicContext); attach(plugin: CrossLinesProxySource): void; detach(plugin: CrossLinesProxySource): void; destroy(): void; getFocusState(): CrossLineFocusState | undefined; /** Entries are rebuilt only before the scene renders, so one may name a cross line its plugin has since replaced. */ private liveEntry; private update; private updateFocusPath; private createButton; }