@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.
30 lines (29 loc) • 2.29 kB
TypeScript
import type { ChartMark, ChartMarkDatum, ChartMarkPointX, ChartMarkPointY, ChartMotionDefinition, InitializedMark, MarkRenderContext, MarkScene, MaterializedChannel, SceneLabel } from './types.js';
export type AnyInitializedMark = InitializedMark<any, any, any>;
type ChildDatum<TMark> = TMark extends InitializedMark<infer TDatum, any, any> ? TDatum : never;
type ChildXValue<TMark> = TMark extends InitializedMark<any, infer TXValue, any> ? TXValue : never;
type ChildYValue<TMark> = TMark extends InitializedMark<any, any, infer TYValue> ? TYValue : never;
export interface InitializedMarkComposition<TChildren extends readonly AnyInitializedMark[]> {
channels: Readonly<Record<string, MaterializedChannel>>;
seriesFromColor?: boolean;
childMotions: ReadonlyMap<string, ChartMotionDefinition<any>>;
layoutLabels?: (context: MarkRenderContext) => readonly SceneLabel[];
render: (context: MarkRenderContext) => MarkScene<ChildDatum<TChildren[number]>, ChildXValue<TChildren[number]>, ChildYValue<TChildren[number]>>;
}
interface ComposeInitializedMarksOptions {
coordinates: 'semantic' | 'pixel';
owner: 'Composite mark' | 'Resolved layout';
interactiveChildren?: ReadonlySet<string>;
}
/** Composes initialized child marks while preserving their normal scene API. */
export declare function composeInitializedMarks<const TChildren extends readonly AnyInitializedMark[]>(parentId: string, children: TChildren, options: ComposeInitializedMarksOptions): InitializedMarkComposition<TChildren>;
type AnyChartMark = ChartMark<any, any, any, any, any>;
interface InitializeCompositeMarkOptions<TDatum> {
motion?: ChartMotionDefinition<TDatum>;
interactiveChildren?: ReadonlySet<string>;
}
/** Initializes one ordinary semantic composite through the shared scene kernel. */
export declare function initializeCompositeMark<const TMarks extends readonly AnyChartMark[]>(id: string, marks: TMarks, options?: InitializeCompositeMarkOptions<ChartMarkDatum<TMarks[number]>>): InitializedMark<ChartMarkDatum<TMarks[number]>, ChartMarkPointX<TMarks[number]>, ChartMarkPointY<TMarks[number]>>;
/** Resolves one direct child's stable mark and scene namespace. */
export declare function compositeChildMarkId(parentId: string, childId: string): string;
export {};