UNPKG

victory-vendor

Version:
79 lines (76 loc) 2.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = _default; var _array = _interopRequireDefault(require("./array.js")); var _constant = _interopRequireDefault(require("./constant.js")); var _descending = _interopRequireDefault(require("./descending.js")); var _identity = _interopRequireDefault(require("./identity.js")); var _math = require("./math.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _default() { var value = _identity.default, sortValues = _descending.default, sort = null, startAngle = (0, _constant.default)(0), endAngle = (0, _constant.default)(_math.tau), padAngle = (0, _constant.default)(0); function pie(data) { var i, n = (data = (0, _array.default)(data)).length, j, k, sum = 0, index = new Array(n), arcs = new Array(n), a0 = +startAngle.apply(this, arguments), da = Math.min(_math.tau, Math.max(-_math.tau, endAngle.apply(this, arguments) - a0)), a1, p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), pa = p * (da < 0 ? -1 : 1), v; for (i = 0; i < n; ++i) { if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { sum += v; } } // Optionally sort the arcs by previously-computed values or by data. if (sortValues != null) index.sort(function (i, j) { return sortValues(arcs[i], arcs[j]); });else if (sort != null) index.sort(function (i, j) { return sort(data[i], data[j]); }); // Compute the arcs! They are stored in the original data's order. for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { data: data[j], index: i, value: v, startAngle: a0, endAngle: a1, padAngle: p }; } return arcs; } pie.value = function (_) { return arguments.length ? (value = typeof _ === "function" ? _ : (0, _constant.default)(+_), pie) : value; }; pie.sortValues = function (_) { return arguments.length ? (sortValues = _, sort = null, pie) : sortValues; }; pie.sort = function (_) { return arguments.length ? (sort = _, sortValues = null, pie) : sort; }; pie.startAngle = function (_) { return arguments.length ? (startAngle = typeof _ === "function" ? _ : (0, _constant.default)(+_), pie) : startAngle; }; pie.endAngle = function (_) { return arguments.length ? (endAngle = typeof _ === "function" ? _ : (0, _constant.default)(+_), pie) : endAngle; }; pie.padAngle = function (_) { return arguments.length ? (padAngle = typeof _ === "function" ? _ : (0, _constant.default)(+_), pie) : padAngle; }; return pie; }