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.

32 lines (31 loc) 832 B
import { materializeGroups, toArray } from "./transform-internal.js"; import { assertTransformOutputNames, prepareOutputs, reducePreparedOutputs } from "./transform-reduce-internal.js"; function groupBy(source, options) { const data = toArray(source); const groups = materializeGroups(data, options.by); const groupNames = groups[0] ? Object.keys(groups[0].group) : []; assertTransformOutputNames( options.outputs, [...groupNames, "source", "sourceIndexes"], "groupBy" ); const preparedOutputs = prepareOutputs(data, options.outputs); return groups.map(({ group, indexes }) => ({ ...group, source: indexes.map((index) => data[index]), sourceIndexes: indexes, ...reducePreparedOutputs( data, indexes, group, preparedOutputs ) })); } export { groupBy };