@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.
35 lines (34 loc) • 1.85 kB
TypeScript
import type { TransformValue } from './transform.js';
export type TransformNumericReducer = 'count' | 'sum' | 'mean' | 'min' | 'max';
export interface TransformReduceContext<TDatum> {
values: readonly number[];
data: readonly TDatum[];
indexes: readonly number[];
group: Readonly<Record<string, unknown>>;
}
export type TransformReducer<TDatum, TResult = unknown> = TransformNumericReducer | ((context: TransformReduceContext<TDatum>) => TResult);
export type TransformOutputSpec<TDatum, TResult = unknown> = {
reduce: 'count';
value?: never;
} | {
value: TransformValue<TDatum, number | null | undefined>;
reduce: TransformNumericReducer;
} | {
value?: TransformValue<TDatum, number | null | undefined>;
reduce: (context: TransformReduceContext<TDatum>) => TResult;
};
export type TransformOutputs<TDatum> = Record<string, TransformOutputSpec<TDatum, any>>;
export type TransformOutputValue<TSpec> = TSpec extends {
reduce: (context: any) => infer TResult;
} ? TResult : number;
export type TransformOutputRow<TOutputs> = {
readonly [TKey in keyof TOutputs]: TransformOutputValue<TOutputs[TKey]>;
};
export declare function quantile<TDatum>(probability: number): (context: TransformReduceContext<TDatum>) => number;
export declare function median(context: TransformReduceContext<unknown>): number;
export declare function variance({ values }: TransformReduceContext<unknown>): number;
export declare function deviation(context: TransformReduceContext<unknown>): number;
export declare function first({ values }: TransformReduceContext<unknown>): number;
export declare function last({ values }: TransformReduceContext<unknown>): number;
export declare function delta({ values }: TransformReduceContext<unknown>): number;
export declare function ratio({ values }: TransformReduceContext<unknown>): number;