@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.
70 lines (69 loc) • 3.37 kB
TypeScript
import type { PolarLength, PolarMark } from './polar.js';
import type { TransformValue } from './transform.js';
import type { Channel, ChartKey, ChartMarkMotionOptions, VisualChannel } from './types.js';
export interface SunburstNode<TDatum> {
readonly id: string;
readonly parentId: string | null;
readonly ancestorIds: readonly string[];
readonly branchId: string | null;
readonly name: string;
readonly data: TDatum | null;
readonly depth: number;
readonly height: number;
readonly internal: boolean;
readonly external: boolean;
readonly value: number;
readonly source: readonly TDatum[];
readonly sourceIndexes: readonly number[];
}
export type SunburstNodeComparator<TDatum> = (left: SunburstNode<TDatum>, right: SunburstNode<TDatum>) => number;
interface SunburstSharedOptions<TDatum> extends ChartMarkMotionOptions<SunburstNode<TDatum>> {
readonly id?: string;
readonly className?: string;
readonly value: TransformValue<TDatum, number | null | undefined>;
readonly sort?: SunburstNodeComparator<TDatum>;
/** Hierarchy node whose children form the first rendered ring. */
readonly rootId?: string;
/** Maximum descendant rings rendered below the active root. */
readonly visibleDepth?: number;
readonly innerRadius?: PolarLength;
readonly outerRadius?: PolarLength;
/** Fixed pixel gap between adjacent hierarchy rings. Defaults to zero. */
readonly ringPadding?: number;
readonly z?: Channel<SunburstNode<TDatum>, ChartKey | null | undefined>;
readonly color?: Channel<SunburstNode<TDatum>, ChartKey | null | undefined>;
readonly fill?: VisualChannel<SunburstNode<TDatum>, string>;
readonly fillOpacity?: number;
readonly stroke?: VisualChannel<SunburstNode<TDatum>, string>;
readonly strokeOpacity?: number;
readonly strokeWidth?: number;
readonly strokeDasharray?: string;
readonly opacity?: number;
}
export type SunburstPathOptions<TDatum> = SunburstSharedOptions<TDatum> & {
readonly path: TransformValue<TDatum, string>;
readonly delimiter?: string;
readonly nodeId?: never;
readonly parentId?: never;
};
export type SunburstParentOptions<TDatum> = SunburstSharedOptions<TDatum> & {
readonly nodeId: TransformValue<TDatum, string>;
readonly parentId: TransformValue<TDatum, string | null | undefined>;
readonly path?: never;
readonly delimiter?: never;
};
export type SunburstOptions<TDatum> = SunburstPathOptions<TDatum> | SunburstParentOptions<TDatum>;
/** Lays out and renders a flat hierarchy as responsive polar sectors. */
export declare function sunburst<TDatum, const TPath extends TransformValue<TDatum, string>>(source: Iterable<TDatum>, options: SunburstSharedOptions<TDatum> & {
readonly path: TPath;
readonly delimiter?: string;
readonly nodeId?: never;
readonly parentId?: never;
}): PolarMark<SunburstNode<TDatum>, number, number>;
export declare function sunburst<TDatum, const TNodeId extends TransformValue<TDatum, string>, const TParentId extends TransformValue<TDatum, string | null | undefined>>(source: Iterable<TDatum>, options: SunburstSharedOptions<TDatum> & {
readonly nodeId: TNodeId;
readonly parentId: TParentId;
readonly path?: never;
readonly delimiter?: never;
}): PolarMark<SunburstNode<TDatum>, number, number>;
export {};