UNPKG

chartx

Version:

Data Visualization Chart Library

75 lines (74 loc) 3.17 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = _default; var _accessors = require("../utils/accessors.js"); var _constant = _interopRequireWildcard(require("../utils/constant.js")); var _lcg = _interopRequireDefault(require("../utils/lcg.js")); var _siblings = require("./siblings.js"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function defaultRadius(d) { return Math.sqrt(d.value); } function _default() { var radius = null, dx = 1, dy = 1, padding = _constant.constantZero; function pack(root) { var random = (0, _lcg.default)(); root.x = dx / 2, root.y = dy / 2; if (radius) { root.eachBefore(radiusLeaf(radius)).eachAfter(packChildrenRandom(padding, 0.5, random)).eachBefore(translateChild(1)); } else { root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildrenRandom(_constant.constantZero, 1, random)).eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random)).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); } return root; } pack.radius = function (x) { return arguments.length ? (radius = (0, _accessors.optional)(x), pack) : radius; }; pack.size = function (x) { return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy]; }; pack.padding = function (x) { return arguments.length ? (padding = typeof x === "function" ? x : (0, _constant.default)(+x), pack) : padding; }; return pack; } function radiusLeaf(radius) { return function (node) { if (!node.children) { node.r = Math.max(0, +radius(node) || 0); } }; } function packChildrenRandom(padding, k, random) { return function (node) { if (children = node.children) { var children, i, n = children.length, r = padding(node) * k || 0, e; if (r) for (i = 0; i < n; ++i) children[i].r += r; e = (0, _siblings.packSiblingsRandom)(children, random); if (r) for (i = 0; i < n; ++i) children[i].r -= r; node.r = e + r; } }; } function translateChild(k) { return function (node) { var parent = node.parent; node.r *= k; if (parent) { node.x = parent.x + k * node.x; node.y = parent.y + k * node.y; } }; }