@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.
34 lines (33 loc) • 1.02 kB
JavaScript
import { isChartValue } from "./mark.js";
function materializeLayoutXYRows(data, xValues, yValues) {
return data.flatMap((datum, sourceIndex) => {
const xValue = xValues[sourceIndex];
const yValue = yValues[sourceIndex];
return isChartValue(xValue) && isChartValue(yValue) ? [{ datum, sourceIndex, xValue, yValue }] : [];
});
}
function projectLayoutX(rows, values, scale) {
return projectLayoutAxis(rows, values, scale, "xValue", "x");
}
function projectLayoutY(rows, values, scale) {
return projectLayoutAxis(rows, values, scale, "yValue", "y");
}
function projectLayoutAxis(rows, values, scale, valueKey, positionKey) {
return rows.flatMap((row) => {
const value = values[row.sourceIndex];
if (!isChartValue(value)) return [];
const position = scale.map(value);
return Number.isFinite(position) ? [
{
...row,
[valueKey]: value,
[positionKey]: position
}
] : [];
});
}
export {
materializeLayoutXYRows,
projectLayoutX,
projectLayoutY
};