@tanstack/charts
Version:
A chart grammar for TypeScript and JavaScript. Marks consume your data directly, channels describe visual encodings, and the engine compiles them into a renderer-neutral keyed scene. TanStack's compact scales cover common numeric and categorical mappings.
29 lines (28 loc) • 2.37 kB
TypeScript
import type { ChartCursorBinding, ChartCursorController, ChartCursorExtensionToken, ChartCursorPresentation, ChartCursorState, ChartFocusSource, ChartFocusState, ChartFocusStrategy, ChartPoint, ChartScene, ChartValue } from './types.js';
export interface ChartCursorHostSession<TDatum, TXValue extends ChartValue, TYValue extends ChartValue> {
readonly controller: ChartCursorController<TXValue, TYValue>;
getState: () => ChartCursorState<TXValue, TYValue> | null;
subscribe: (listener: () => void) => () => void;
owns: (state: ChartCursorState<TXValue, TYValue> | null) => boolean;
publish: (state: ChartCursorState<TXValue, TYValue>) => void;
clearOwnedTransient: () => boolean;
clear: () => void;
destroy: () => void;
resolvePresentation: (scene: ChartScene<TDatum, TXValue, TYValue>, binding: ChartCursorBinding<TDatum, TXValue, TYValue>, state: ChartCursorState<TXValue, TYValue> | null) => ChartCursorPresentation<TXValue, TYValue> | null;
resolveFocus: (points: readonly ChartPoint<TDatum, TXValue, TYValue>[], binding: Extract<ChartCursorBinding<TDatum, TXValue, TYValue>, {
mode: 'focus';
}>, state: ChartCursorState<TXValue, TYValue> | null, strategy?: ChartFocusStrategy<TDatum, TXValue, TYValue>) => readonly ChartPoint<TDatum, TXValue, TYValue>[];
createFocusState: (scene: ChartScene<TDatum, TXValue, TYValue>, binding: Extract<ChartCursorBinding<TDatum, TXValue, TYValue>, {
mode: 'focus';
}>, focus: ChartFocusState<TDatum, TXValue, TYValue>) => ChartCursorState<TXValue, TYValue>;
createFreeState: (scene: ChartScene<TDatum, TXValue, TYValue>, binding: Extract<ChartCursorBinding<TDatum, TXValue, TYValue>, {
mode: 'free';
}>, position: Readonly<{
x: number;
y: number;
}>, source?: ChartFocusSource, pinned?: boolean) => ChartCursorState<TXValue, TYValue>;
}
export interface ChartCursorHostExtension extends ChartCursorExtensionToken {
create: <TDatum, TXValue extends ChartValue, TYValue extends ChartValue>(controller: ChartCursorController<TXValue, TYValue>) => ChartCursorHostSession<TDatum, TXValue, TYValue>;
}
export declare function createChartCursorHostSession<TDatum, TXValue extends ChartValue, TYValue extends ChartValue>(binding: ChartCursorBinding<TDatum, TXValue, TYValue>): ChartCursorHostSession<TDatum, TXValue, TYValue>;