UNPKG

@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
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;