UNPKG

rumble-charts

Version:

Truly declarative React charts components

58 lines (55 loc) 2.35 kB
import { __assign, __spreadArray } from '../../external/tslib/tslib.es6.js'; import { isUndefined } from '../isUndefined.js'; function stack(props, options) { if (options === void 0) { options = {}; } var normalize = (options || {}).normalize; var series = props.series, maxY = props.maxY, minY = props.minY; var seriesNormalized = props.seriesNormalized, maxX = props.maxX, minX = props.minX; var stackedY = [], lowestY = []; series = series === null || series === void 0 ? void 0 : series.map(function (series) { var _a; var newSeries = { data: (_a = series.data) === null || _a === void 0 ? void 0 : _a.map(function (point, pointIndex) { stackedY[pointIndex] = stackedY[pointIndex] || 0; if (isUndefined(lowestY[pointIndex])) { lowestY[pointIndex] = stackedY[pointIndex]; } var newPoint = { y0: stackedY[pointIndex], y: stackedY[pointIndex] + point.y }; stackedY[pointIndex] = newPoint.y; return __assign(__assign({}, point), newPoint); }) }; return __assign(__assign({}, series), newSeries); }); minY = Math.min.apply(Math, __spreadArray([minY || 0], lowestY, false)); var stackedMaxY = Math.max.apply(Math, stackedY); maxY = Math.max(stackedMaxY, maxY || 0); if (normalize) { var ratios_1 = stackedY.map(function (y) { return stackedMaxY / y; }); series = series === null || series === void 0 ? void 0 : series.map(function (series) { var _a; var newSeries = { data: (_a = series.data) === null || _a === void 0 ? void 0 : _a.map(function (point, pointIndex) { var newPoint = { y0: (point.y0 || 0) * ratios_1[pointIndex], y: point.y * ratios_1[pointIndex] }; return __assign(__assign({}, point), newPoint); }) }; return __assign(__assign({}, series), newSeries); }); } return { series: series, seriesNormalized: seriesNormalized, maxX: maxX, maxY: maxY, minX: minX, minY: minY }; } export { stack };