UNPKG

rumble-charts

Version:

Truly declarative React charts components

62 lines (57 loc) 2.52 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib_es6 = require('../../external/tslib/tslib.es6.js'); var isUndefined = require('../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.isUndefined(lowestY[pointIndex])) { lowestY[pointIndex] = stackedY[pointIndex]; } var newPoint = { y0: stackedY[pointIndex], y: stackedY[pointIndex] + point.y }; stackedY[pointIndex] = newPoint.y; return tslib_es6.__assign(tslib_es6.__assign({}, point), newPoint); }) }; return tslib_es6.__assign(tslib_es6.__assign({}, series), newSeries); }); minY = Math.min.apply(Math, tslib_es6.__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 tslib_es6.__assign(tslib_es6.__assign({}, point), newPoint); }) }; return tslib_es6.__assign(tslib_es6.__assign({}, series), newSeries); }); } return { series: series, seriesNormalized: seriesNormalized, maxX: maxX, maxY: maxY, minX: minX, minY: minY }; } exports.stack = stack;