diff options
Diffstat (limited to 'build/server/chunks')
-rw-r--r-- | build/server/chunks/624.js | 2510 |
1 files changed, 0 insertions, 2510 deletions
diff --git a/build/server/chunks/624.js b/build/server/chunks/624.js deleted file mode 100644 index 8fd3f14..0000000 --- a/build/server/chunks/624.js +++ /dev/null @@ -1,2510 +0,0 @@ -exports.id = 624; -exports.ids = [624]; -exports.modules = { - -/***/ 265: -/***/ (function(__unused_webpack_module, exports) { - -// https://github.com/vasturiano/d3-binarytree v0.2.0 Copyright 2021 Vasco Asturiano -(function (global, factory) { - true ? factory(exports) : 0; -})(this, function (exports) { - 'use strict'; - - function tree_add(d) { - var x = +this._x.call(null, d); - return add(this.cover(x), x, d); - } - - function add(tree, x, d) { - if (isNaN(x)) return tree; // ignore invalid points - - var parent, - node = tree._root, - leaf = { - data: d - }, - x0 = tree._x0, - x1 = tree._x1, - xm, - xp, - right, - i, - j; // If the tree is empty, initialize the root as a leaf. - - if (!node) return tree._root = leaf, tree; // Find the existing leaf for the new point, or add it. - - while (node.length) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm; - if (parent = node, !(node = node[i = +right])) return parent[i] = leaf, tree; - } // Is the new point is exactly coincident with the existing point? - - - xp = +tree._x.call(null, node.data); - if (x === xp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; // Otherwise, split the leaf node until the old and new point are separated. - - do { - parent = parent ? parent[i] = new Array(2) : tree._root = new Array(2); - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm; - } while ((i = +right) === (j = +(xp >= xm))); - - return parent[j] = node, parent[i] = leaf, tree; - } - - function addAll(data) { - var i, - n = data.length, - x, - xz = new Array(n), - x0 = Infinity, - x1 = -Infinity; // Compute the points and their extent. - - for (i = 0; i < n; ++i) { - if (isNaN(x = +this._x.call(null, data[i]))) continue; - xz[i] = x; - if (x < x0) x0 = x; - if (x > x1) x1 = x; - } // If there were no (valid) points, abort. - - - if (x0 > x1) return this; // Expand the tree to cover the new points. - - this.cover(x0).cover(x1); // Add the new points. - - for (i = 0; i < n; ++i) { - add(this, xz[i], data[i]); - } - - return this; - } - - function tree_cover(x) { - if (isNaN(x = +x)) return this; // ignore invalid points - - var x0 = this._x0, - x1 = this._x1; // If the binarytree has no extent, initialize them. - // Integer extent are necessary so that if we later double the extent, - // the existing half boundaries don’t change due to floating point error! - - if (isNaN(x0)) { - x1 = (x0 = Math.floor(x)) + 1; - } // Otherwise, double repeatedly to cover. - else { - var z = x1 - x0 || 1, - node = this._root, - parent, - i; - - while (x0 > x || x >= x1) { - i = +(x < x0); - parent = new Array(2), parent[i] = node, node = parent, z *= 2; - - switch (i) { - case 0: - x1 = x0 + z; - break; - - case 1: - x0 = x1 - z; - break; - } - } - - if (this._root && this._root.length) this._root = node; - } - - this._x0 = x0; - this._x1 = x1; - return this; - } - - function tree_data() { - var data = []; - this.visit(function (node) { - if (!node.length) do data.push(node.data); while (node = node.next); - }); - return data; - } - - function tree_extent(_) { - return arguments.length ? this.cover(+_[0][0]).cover(+_[1][0]) : isNaN(this._x0) ? undefined : [[this._x0], [this._x1]]; - } - - function Half(node, x0, x1) { - this.node = node; - this.x0 = x0; - this.x1 = x1; - } - - function tree_find(x, radius) { - var data, - x0 = this._x0, - x1, - x2, - x3 = this._x1, - halves = [], - node = this._root, - q, - i; - if (node) halves.push(new Half(node, x0, x3)); - if (radius == null) radius = Infinity;else { - x0 = x - radius; - x3 = x + radius; - } - - while (q = halves.pop()) { - // Stop searching if this half can’t contain a closer node. - if (!(node = q.node) || (x1 = q.x0) > x3 || (x2 = q.x1) < x0) continue; // Bisect the current half. - - if (node.length) { - var xm = (x1 + x2) / 2; - halves.push(new Half(node[1], xm, x2), new Half(node[0], x1, xm)); // Visit the closest half first. - - if (i = +(x >= xm)) { - q = halves[halves.length - 1]; - halves[halves.length - 1] = halves[halves.length - 1 - i]; - halves[halves.length - 1 - i] = q; - } - } // Visit this point. (Visiting coincident points isn’t necessary!) - else { - var d = Math.abs(x - +this._x.call(null, node.data)); - - if (d < radius) { - radius = d; - x0 = x - d; - x3 = x + d; - data = node.data; - } - } - } - - return data; - } - - function tree_remove(d) { - if (isNaN(x = +this._x.call(null, d))) return this; // ignore invalid points - - var parent, - node = this._root, - retainer, - previous, - next, - x0 = this._x0, - x1 = this._x1, - x, - xm, - right, - i, - j; // If the tree is empty, initialize the root as a leaf. - - if (!node) return this; // Find the leaf node for the point. - // While descending, also retain the deepest parent with a non-removed sibling. - - if (node.length) while (true) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm; - if (!(parent = node, node = node[i = +right])) return this; - if (!node.length) break; - if (parent[i + 1 & 1]) retainer = parent, j = i; - } // Find the point to remove. - - while (node.data !== d) if (!(previous = node, node = node.next)) return this; - - if (next = node.next) delete node.next; // If there are multiple coincident points, remove just the point. - - if (previous) return next ? previous.next = next : delete previous.next, this; // If this is the root point, remove it. - - if (!parent) return this._root = next, this; // Remove this leaf. - - next ? parent[i] = next : delete parent[i]; // If the parent now contains exactly one leaf, collapse superfluous parents. - - if ((node = parent[0] || parent[1]) && node === (parent[1] || parent[0]) && !node.length) { - if (retainer) retainer[j] = node;else this._root = node; - } - - return this; - } - - function removeAll(data) { - for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); - - return this; - } - - function tree_root() { - return this._root; - } - - function tree_size() { - var size = 0; - this.visit(function (node) { - if (!node.length) do ++size; while (node = node.next); - }); - return size; - } - - function tree_visit(callback) { - var halves = [], - q, - node = this._root, - child, - x0, - x1; - if (node) halves.push(new Half(node, this._x0, this._x1)); - - while (q = halves.pop()) { - if (!callback(node = q.node, x0 = q.x0, x1 = q.x1) && node.length) { - var xm = (x0 + x1) / 2; - if (child = node[1]) halves.push(new Half(child, xm, x1)); - if (child = node[0]) halves.push(new Half(child, x0, xm)); - } - } - - return this; - } - - function tree_visitAfter(callback) { - var halves = [], - next = [], - q; - if (this._root) halves.push(new Half(this._root, this._x0, this._x1)); - - while (q = halves.pop()) { - var node = q.node; - - if (node.length) { - var child, - x0 = q.x0, - x1 = q.x1, - xm = (x0 + x1) / 2; - if (child = node[0]) halves.push(new Half(child, x0, xm)); - if (child = node[1]) halves.push(new Half(child, xm, x1)); - } - - next.push(q); - } - - while (q = next.pop()) { - callback(q.node, q.x0, q.x1); - } - - return this; - } - - function defaultX(d) { - return d[0]; - } - - function tree_x(_) { - return arguments.length ? (this._x = _, this) : this._x; - } - - function binarytree(nodes, x) { - var tree = new Binarytree(x == null ? defaultX : x, NaN, NaN); - return nodes == null ? tree : tree.addAll(nodes); - } - - function Binarytree(x, x0, x1) { - this._x = x; - this._x0 = x0; - this._x1 = x1; - this._root = undefined; - } - - function leaf_copy(leaf) { - var copy = { - data: leaf.data - }, - next = copy; - - while (leaf = leaf.next) next = next.next = { - data: leaf.data - }; - - return copy; - } - - var treeProto = binarytree.prototype = Binarytree.prototype; - - treeProto.copy = function () { - var copy = new Binarytree(this._x, this._x0, this._x1), - node = this._root, - nodes, - child; - if (!node) return copy; - if (!node.length) return copy._root = leaf_copy(node), copy; - nodes = [{ - source: node, - target: copy._root = new Array(2) - }]; - - while (node = nodes.pop()) { - for (var i = 0; i < 2; ++i) { - if (child = node.source[i]) { - if (child.length) nodes.push({ - source: child, - target: node.target[i] = new Array(2) - });else node.target[i] = leaf_copy(child); - } - } - } - - return copy; - }; - - treeProto.add = tree_add; - treeProto.addAll = addAll; - treeProto.cover = tree_cover; - treeProto.data = tree_data; - treeProto.extent = tree_extent; - treeProto.find = tree_find; - treeProto.remove = tree_remove; - treeProto.removeAll = removeAll; - treeProto.root = tree_root; - treeProto.size = tree_size; - treeProto.visit = tree_visit; - treeProto.visitAfter = tree_visitAfter; - treeProto.x = tree_x; - exports.binarytree = binarytree; - Object.defineProperty(exports, '__esModule', { - value: true - }); -}); - -/***/ }), - -/***/ 624: -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -// ESM COMPAT FLAG -__webpack_require__.r(__webpack_exports__); - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - "forceCenter": function() { return /* reexport */ center; }, - "forceCollide": function() { return /* reexport */ collide; }, - "forceLink": function() { return /* reexport */ src_link; }, - "forceManyBody": function() { return /* reexport */ manyBody; }, - "forceRadial": function() { return /* reexport */ radial; }, - "forceSimulation": function() { return /* reexport */ simulation; }, - "forceX": function() { return /* reexport */ src_x; }, - "forceY": function() { return /* reexport */ src_y; }, - "forceZ": function() { return /* reexport */ src_z; } -}); - -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/center.js -/* harmony default export */ function center(x, y, z) { - var nodes, - strength = 1; - if (x == null) x = 0; - if (y == null) y = 0; - if (z == null) z = 0; - - function force() { - var i, - n = nodes.length, - node, - sx = 0, - sy = 0, - sz = 0; - - for (i = 0; i < n; ++i) { - node = nodes[i], sx += node.x || 0, sy += node.y || 0, sz += node.z || 0; - } - - for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, sz = (sz / n - z) * strength, i = 0; i < n; ++i) { - node = nodes[i]; - - if (sx) { - node.x -= sx; - } - - if (sy) { - node.y -= sy; - } - - if (sz) { - node.z -= sz; - } - } - } - - force.initialize = function (_) { - nodes = _; - }; - - force.x = function (_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function (_) { - return arguments.length ? (y = +_, force) : y; - }; - - force.z = function (_) { - return arguments.length ? (z = +_, force) : z; - }; - - force.strength = function (_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - return force; -} -// EXTERNAL MODULE: ./node_modules/d3-binarytree/dist/d3-binarytree.js -var d3_binarytree = __webpack_require__(265); -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/add.js -/* harmony default export */ function add(d) { - const x = +this._x.call(null, d), - y = +this._y.call(null, d); - return add_add(this.cover(x, y), x, y, d); -} - -function add_add(tree, x, y, d) { - if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points - - var parent, - node = tree._root, - leaf = { - data: d - }, - x0 = tree._x0, - y0 = tree._y0, - x1 = tree._x1, - y1 = tree._y1, - xm, - ym, - xp, - yp, - right, - bottom, - i, - j; // If the tree is empty, initialize the root as a leaf. - - if (!node) return tree._root = leaf, tree; // Find the existing leaf for the new point, or add it. - - while (node.length) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym; - if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; - } // Is the new point is exactly coincident with the existing point? - - - xp = +tree._x.call(null, node.data); - yp = +tree._y.call(null, node.data); - if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; // Otherwise, split the leaf node until the old and new point are separated. - - do { - parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym; - } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | xp >= xm)); - - return parent[j] = node, parent[i] = leaf, tree; -} - -function addAll(data) { - var d, - i, - n = data.length, - x, - y, - xz = new Array(n), - yz = new Array(n), - x0 = Infinity, - y0 = Infinity, - x1 = -Infinity, - y1 = -Infinity; // Compute the points and their extent. - - for (i = 0; i < n; ++i) { - if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; - xz[i] = x; - yz[i] = y; - if (x < x0) x0 = x; - if (x > x1) x1 = x; - if (y < y0) y0 = y; - if (y > y1) y1 = y; - } // If there were no (valid) points, abort. - - - if (x0 > x1 || y0 > y1) return this; // Expand the tree to cover the new points. - - this.cover(x0, y0).cover(x1, y1); // Add the new points. - - for (i = 0; i < n; ++i) { - add_add(this, xz[i], yz[i], data[i]); - } - - return this; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/cover.js -/* harmony default export */ function cover(x, y) { - if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points - - var x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1; // If the quadtree has no extent, initialize them. - // Integer extent are necessary so that if we later double the extent, - // the existing quadrant boundaries don’t change due to floating point error! - - if (isNaN(x0)) { - x1 = (x0 = Math.floor(x)) + 1; - y1 = (y0 = Math.floor(y)) + 1; - } // Otherwise, double repeatedly to cover. - else { - var z = x1 - x0 || 1, - node = this._root, - parent, - i; - - while (x0 > x || x >= x1 || y0 > y || y >= y1) { - i = (y < y0) << 1 | x < x0; - parent = new Array(4), parent[i] = node, node = parent, z *= 2; - - switch (i) { - case 0: - x1 = x0 + z, y1 = y0 + z; - break; - - case 1: - x0 = x1 - z, y1 = y0 + z; - break; - - case 2: - x1 = x0 + z, y0 = y1 - z; - break; - - case 3: - x0 = x1 - z, y0 = y1 - z; - break; - } - } - - if (this._root && this._root.length) this._root = node; - } - - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - return this; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/data.js -/* harmony default export */ function data() { - var data = []; - this.visit(function (node) { - if (!node.length) do data.push(node.data); while (node = node.next); - }); - return data; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/extent.js -/* harmony default export */ function extent(_) { - return arguments.length ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]]; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/quad.js -/* harmony default export */ function quad(node, x0, y0, x1, y1) { - this.node = node; - this.x0 = x0; - this.y0 = y0; - this.x1 = x1; - this.y1 = y1; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/find.js - -/* harmony default export */ function find(x, y, radius) { - var data, - x0 = this._x0, - y0 = this._y0, - x1, - y1, - x2, - y2, - x3 = this._x1, - y3 = this._y1, - quads = [], - node = this._root, - q, - i; - if (node) quads.push(new quad(node, x0, y0, x3, y3)); - if (radius == null) radius = Infinity;else { - x0 = x - radius, y0 = y - radius; - x3 = x + radius, y3 = y + radius; - radius *= radius; - } - - while (q = quads.pop()) { - // Stop searching if this quadrant can’t contain a closer node. - if (!(node = q.node) || (x1 = q.x0) > x3 || (y1 = q.y0) > y3 || (x2 = q.x1) < x0 || (y2 = q.y1) < y0) continue; // Bisect the current quadrant. - - if (node.length) { - var xm = (x1 + x2) / 2, - ym = (y1 + y2) / 2; - quads.push(new quad(node[3], xm, ym, x2, y2), new quad(node[2], x1, ym, xm, y2), new quad(node[1], xm, y1, x2, ym), new quad(node[0], x1, y1, xm, ym)); // Visit the closest quadrant first. - - if (i = (y >= ym) << 1 | x >= xm) { - q = quads[quads.length - 1]; - quads[quads.length - 1] = quads[quads.length - 1 - i]; - quads[quads.length - 1 - i] = q; - } - } // Visit this point. (Visiting coincident points isn’t necessary!) - else { - var dx = x - +this._x.call(null, node.data), - dy = y - +this._y.call(null, node.data), - d2 = dx * dx + dy * dy; - - if (d2 < radius) { - var d = Math.sqrt(radius = d2); - x0 = x - d, y0 = y - d; - x3 = x + d, y3 = y + d; - data = node.data; - } - } - } - - return data; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/remove.js -/* harmony default export */ function remove(d) { - if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points - - var parent, - node = this._root, - retainer, - previous, - next, - x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1, - x, - y, - xm, - ym, - right, - bottom, - i, - j; // If the tree is empty, initialize the root as a leaf. - - if (!node) return this; // Find the leaf node for the point. - // While descending, also retain the deepest parent with a non-removed sibling. - - if (node.length) while (true) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym; - if (!(parent = node, node = node[i = bottom << 1 | right])) return this; - if (!node.length) break; - if (parent[i + 1 & 3] || parent[i + 2 & 3] || parent[i + 3 & 3]) retainer = parent, j = i; - } // Find the point to remove. - - while (node.data !== d) if (!(previous = node, node = node.next)) return this; - - if (next = node.next) delete node.next; // If there are multiple coincident points, remove just the point. - - if (previous) return next ? previous.next = next : delete previous.next, this; // If this is the root point, remove it. - - if (!parent) return this._root = next, this; // Remove this leaf. - - next ? parent[i] = next : delete parent[i]; // If the parent now contains exactly one leaf, collapse superfluous parents. - - if ((node = parent[0] || parent[1] || parent[2] || parent[3]) && node === (parent[3] || parent[2] || parent[1] || parent[0]) && !node.length) { - if (retainer) retainer[j] = node;else this._root = node; - } - - return this; -} -function removeAll(data) { - for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); - - return this; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/root.js -/* harmony default export */ function root() { - return this._root; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/size.js -/* harmony default export */ function size() { - var size = 0; - this.visit(function (node) { - if (!node.length) do ++size; while (node = node.next); - }); - return size; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/visit.js - -/* harmony default export */ function visit(callback) { - var quads = [], - q, - node = this._root, - child, - x0, - y0, - x1, - y1; - if (node) quads.push(new quad(node, this._x0, this._y0, this._x1, this._y1)); - - while (q = quads.pop()) { - if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { - var xm = (x0 + x1) / 2, - ym = (y0 + y1) / 2; - if (child = node[3]) quads.push(new quad(child, xm, ym, x1, y1)); - if (child = node[2]) quads.push(new quad(child, x0, ym, xm, y1)); - if (child = node[1]) quads.push(new quad(child, xm, y0, x1, ym)); - if (child = node[0]) quads.push(new quad(child, x0, y0, xm, ym)); - } - } - - return this; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/visitAfter.js - -/* harmony default export */ function visitAfter(callback) { - var quads = [], - next = [], - q; - if (this._root) quads.push(new quad(this._root, this._x0, this._y0, this._x1, this._y1)); - - while (q = quads.pop()) { - var node = q.node; - - if (node.length) { - var child, - x0 = q.x0, - y0 = q.y0, - x1 = q.x1, - y1 = q.y1, - xm = (x0 + x1) / 2, - ym = (y0 + y1) / 2; - if (child = node[0]) quads.push(new quad(child, x0, y0, xm, ym)); - if (child = node[1]) quads.push(new quad(child, xm, y0, x1, ym)); - if (child = node[2]) quads.push(new quad(child, x0, ym, xm, y1)); - if (child = node[3]) quads.push(new quad(child, xm, ym, x1, y1)); - } - - next.push(q); - } - - while (q = next.pop()) { - callback(q.node, q.x0, q.y0, q.x1, q.y1); - } - - return this; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/x.js -function defaultX(d) { - return d[0]; -} -/* harmony default export */ function x(_) { - return arguments.length ? (this._x = _, this) : this._x; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/y.js -function defaultY(d) { - return d[1]; -} -/* harmony default export */ function y(_) { - return arguments.length ? (this._y = _, this) : this._y; -} -;// CONCATENATED MODULE: ./node_modules/d3-quadtree/src/quadtree.js - - - - - - - - - - - - -function quadtree(nodes, x, y) { - var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN); - return nodes == null ? tree : tree.addAll(nodes); -} - -function Quadtree(x, y, x0, y0, x1, y1) { - this._x = x; - this._y = y; - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - this._root = undefined; -} - -function leaf_copy(leaf) { - var copy = { - data: leaf.data - }, - next = copy; - - while (leaf = leaf.next) next = next.next = { - data: leaf.data - }; - - return copy; -} - -var treeProto = quadtree.prototype = Quadtree.prototype; - -treeProto.copy = function () { - var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), - node = this._root, - nodes, - child; - if (!node) return copy; - if (!node.length) return copy._root = leaf_copy(node), copy; - nodes = [{ - source: node, - target: copy._root = new Array(4) - }]; - - while (node = nodes.pop()) { - for (var i = 0; i < 4; ++i) { - if (child = node.source[i]) { - if (child.length) nodes.push({ - source: child, - target: node.target[i] = new Array(4) - });else node.target[i] = leaf_copy(child); - } - } - } - - return copy; -}; - -treeProto.add = add; -treeProto.addAll = addAll; -treeProto.cover = cover; -treeProto.data = data; -treeProto.extent = extent; -treeProto.find = find; -treeProto.remove = remove; -treeProto.removeAll = removeAll; -treeProto.root = root; -treeProto.size = size; -treeProto.visit = visit; -treeProto.visitAfter = visitAfter; -treeProto.x = x; -treeProto.y = y; -// EXTERNAL MODULE: ./node_modules/d3-octree/dist/d3-octree.js -var d3_octree = __webpack_require__(681); -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/constant.js -/* harmony default export */ function constant(x) { - return function () { - return x; - }; -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/jiggle.js -/* harmony default export */ function jiggle(random) { - return (random() - 0.5) * 1e-6; -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/collide.js - - - - - - -function collide_x(d) { - return d.x + d.vx; -} - -function collide_y(d) { - return d.y + d.vy; -} - -function z(d) { - return d.z + d.vz; -} - -/* harmony default export */ function collide(radius) { - var nodes, - nDim, - radii, - random, - strength = 1, - iterations = 1; - if (typeof radius !== "function") radius = constant(radius == null ? 1 : +radius); - - function force() { - var i, - n = nodes.length, - tree, - node, - xi, - yi, - zi, - ri, - ri2; - - for (var k = 0; k < iterations; ++k) { - tree = (nDim === 1 ? (0,d3_binarytree.binarytree)(nodes, collide_x) : nDim === 2 ? quadtree(nodes, collide_x, collide_y) : nDim === 3 ? (0,d3_octree.octree)(nodes, collide_x, collide_y, z) : null).visitAfter(prepare); - - for (i = 0; i < n; ++i) { - node = nodes[i]; - ri = radii[node.index], ri2 = ri * ri; - xi = node.x + node.vx; - - if (nDim > 1) { - yi = node.y + node.vy; - } - - if (nDim > 2) { - zi = node.z + node.vz; - } - - tree.visit(apply); - } - } - - function apply(treeNode, arg1, arg2, arg3, arg4, arg5, arg6) { - var args = [arg1, arg2, arg3, arg4, arg5, arg6]; - var x0 = args[0], - y0 = args[1], - z0 = args[2], - x1 = args[nDim], - y1 = args[nDim + 1], - z1 = args[nDim + 2]; - var data = treeNode.data, - rj = treeNode.r, - r = ri + rj; - - if (data) { - if (data.index > node.index) { - var x = xi - data.x - data.vx, - y = nDim > 1 ? yi - data.y - data.vy : 0, - z = nDim > 2 ? zi - data.z - data.vz : 0, - l = x * x + y * y + z * z; - - if (l < r * r) { - if (x === 0) x = jiggle(random), l += x * x; - if (nDim > 1 && y === 0) y = jiggle(random), l += y * y; - if (nDim > 2 && z === 0) z = jiggle(random), l += z * z; - l = (r - (l = Math.sqrt(l))) / l * strength; - node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj)); - - if (nDim > 1) { - node.vy += (y *= l) * r; - } - - if (nDim > 2) { - node.vz += (z *= l) * r; - } - - data.vx -= x * (r = 1 - r); - - if (nDim > 1) { - data.vy -= y * r; - } - - if (nDim > 2) { - data.vz -= z * r; - } - } - } - - return; - } - - return x0 > xi + r || x1 < xi - r || nDim > 1 && (y0 > yi + r || y1 < yi - r) || nDim > 2 && (z0 > zi + r || z1 < zi - r); - } - } - - function prepare(treeNode) { - if (treeNode.data) return treeNode.r = radii[treeNode.data.index]; - - for (var i = treeNode.r = 0; i < Math.pow(2, nDim); ++i) { - if (treeNode[i] && treeNode[i].r > treeNode.r) { - treeNode.r = treeNode[i].r; - } - } - } - - function initialize() { - if (!nodes) return; - var i, - n = nodes.length, - node; - radii = new Array(n); - - for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes); - } - - force.initialize = function (_nodes, ...args) { - nodes = _nodes; - random = args.find(arg => typeof arg === 'function') || Math.random; - nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2; - initialize(); - }; - - force.iterations = function (_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function (_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - force.radius = function (_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initialize(), force) : radius; - }; - - return force; -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/link.js - - - -function index(d) { - return d.index; -} - -function link_find(nodeById, nodeId) { - var node = nodeById.get(nodeId); - if (!node) throw new Error("node not found: " + nodeId); - return node; -} - -/* harmony default export */ function src_link(links) { - var id = index, - strength = defaultStrength, - strengths, - distance = constant(30), - distances, - nodes, - nDim, - count, - bias, - random, - iterations = 1; - if (links == null) links = []; - - function defaultStrength(link) { - return 1 / Math.min(count[link.source.index], count[link.target.index]); - } - - function force(alpha) { - for (var k = 0, n = links.length; k < iterations; ++k) { - for (var i = 0, link, source, target, x = 0, y = 0, z = 0, l, b; i < n; ++i) { - link = links[i], source = link.source, target = link.target; - x = target.x + target.vx - source.x - source.vx || jiggle(random); - - if (nDim > 1) { - y = target.y + target.vy - source.y - source.vy || jiggle(random); - } - - if (nDim > 2) { - z = target.z + target.vz - source.z - source.vz || jiggle(random); - } - - l = Math.sqrt(x * x + y * y + z * z); - l = (l - distances[i]) / l * alpha * strengths[i]; - x *= l, y *= l, z *= l; - target.vx -= x * (b = bias[i]); - - if (nDim > 1) { - target.vy -= y * b; - } - - if (nDim > 2) { - target.vz -= z * b; - } - - source.vx += x * (b = 1 - b); - - if (nDim > 1) { - source.vy += y * b; - } - - if (nDim > 2) { - source.vz += z * b; - } - } - } - } - - function initialize() { - if (!nodes) return; - var i, - n = nodes.length, - m = links.length, - nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])), - link; - - for (i = 0, count = new Array(n); i < m; ++i) { - link = links[i], link.index = i; - if (typeof link.source !== "object") link.source = link_find(nodeById, link.source); - if (typeof link.target !== "object") link.target = link_find(nodeById, link.target); - count[link.source.index] = (count[link.source.index] || 0) + 1; - count[link.target.index] = (count[link.target.index] || 0) + 1; - } - - for (i = 0, bias = new Array(m); i < m; ++i) { - link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]); - } - - strengths = new Array(m), initializeStrength(); - distances = new Array(m), initializeDistance(); - } - - function initializeStrength() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - strengths[i] = +strength(links[i], i, links); - } - } - - function initializeDistance() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - distances[i] = +distance(links[i], i, links); - } - } - - force.initialize = function (_nodes, ...args) { - nodes = _nodes; - random = args.find(arg => typeof arg === 'function') || Math.random; - nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2; - initialize(); - }; - - force.links = function (_) { - return arguments.length ? (links = _, initialize(), force) : links; - }; - - force.id = function (_) { - return arguments.length ? (id = _, force) : id; - }; - - force.iterations = function (_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function (_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initializeStrength(), force) : strength; - }; - - force.distance = function (_) { - return arguments.length ? (distance = typeof _ === "function" ? _ : constant(+_), initializeDistance(), force) : distance; - }; - - return force; -} -;// CONCATENATED MODULE: ./node_modules/d3-dispatch/src/dispatch.js -var noop = { - value: () => {} -}; - -function dispatch() { - for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { - if (!(t = arguments[i] + "") || t in _ || /[\s.]/.test(t)) throw new Error("illegal type: " + t); - _[t] = []; - } - - return new Dispatch(_); -} - -function Dispatch(_) { - this._ = _; -} - -function parseTypenames(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function (t) { - var name = "", - i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); - return { - type: t, - name: name - }; - }); -} - -Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function (typename, callback) { - var _ = this._, - T = parseTypenames(typename + "", _), - t, - i = -1, - n = T.length; // If no callback was specified, return the callback of the given type and name. - - if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; - - return; - } // If a type was specified, set the callback for the given type and name. - // Otherwise, if a null callback was specified, remove callbacks of the given name. - - - if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); - - while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); - } - - return this; - }, - copy: function () { - var copy = {}, - _ = this._; - - for (var t in _) copy[t] = _[t].slice(); - - return new Dispatch(copy); - }, - call: function (type, that) { - if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - - for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - }, - apply: function (type, that, args) { - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - - for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - } -}; - -function get(type, name) { - for (var i = 0, n = type.length, c; i < n; ++i) { - if ((c = type[i]).name === name) { - return c.value; - } - } -} - -function set(type, name, callback) { - for (var i = 0, n = type.length; i < n; ++i) { - if (type[i].name === name) { - type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); - break; - } - } - - if (callback != null) type.push({ - name: name, - value: callback - }); - return type; -} - -/* harmony default export */ var src_dispatch = (dispatch); -;// CONCATENATED MODULE: ./node_modules/d3-timer/src/timer.js -var timer_frame = 0, - // is an animation frame pending? -timeout = 0, - // is a timeout pending? -interval = 0, - // are any timers active? -pokeDelay = 1000, - // how frequently we check for clock skew -taskHead, - taskTail, - clockLast = 0, - clockNow = 0, - clockSkew = 0, - clock = typeof performance === "object" && performance.now ? performance : Date, - setFrame = false ? 0 : function (f) { - setTimeout(f, 17); -}; -function now() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); -} - -function clearNow() { - clockNow = 0; -} - -function Timer() { - this._call = this._time = this._next = null; -} -Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function (callback, delay, time) { - if (typeof callback !== "function") throw new TypeError("callback is not a function"); - time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); - - if (!this._next && taskTail !== this) { - if (taskTail) taskTail._next = this;else taskHead = this; - taskTail = this; - } - - this._call = callback; - this._time = time; - sleep(); - }, - stop: function () { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } -}; -function timer(callback, delay, time) { - var t = new Timer(); - t.restart(callback, delay, time); - return t; -} -function timerFlush() { - now(); // Get the current time, if not already set. - - ++timer_frame; // Pretend we’ve set an alarm, if we haven’t already. - - var t = taskHead, - e; - - while (t) { - if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e); - t = t._next; - } - - --timer_frame; -} - -function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - timer_frame = timeout = 0; - - try { - timerFlush(); - } finally { - timer_frame = 0; - nap(); - clockNow = 0; - } -} - -function poke() { - var now = clock.now(), - delay = now - clockLast; - if (delay > pokeDelay) clockSkew -= delay, clockLast = now; -} - -function nap() { - var t0, - t1 = taskHead, - t2, - time = Infinity; - - while (t1) { - if (t1._call) { - if (time > t1._time) time = t1._time; - t0 = t1, t1 = t1._next; - } else { - t2 = t1._next, t1._next = null; - t1 = t0 ? t0._next = t2 : taskHead = t2; - } - } - - taskTail = t0; - sleep(time); -} - -function sleep(time) { - if (timer_frame) return; // Soonest alarm already set, or will be. - - if (timeout) timeout = clearTimeout(timeout); - var delay = time - clockNow; // Strictly less than if we recomputed clockNow. - - if (delay > 24) { - if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); - if (interval) interval = clearInterval(interval); - } else { - if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); - timer_frame = 1, setFrame(wake); - } -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/lcg.js -// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use -const a = 1664525; -const c = 1013904223; -const m = 4294967296; // 2^32 - -/* harmony default export */ function lcg() { - let s = 1; - return () => (s = (a * s + c) % m) / m; -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/simulation.js - - - -var MAX_DIMENSIONS = 3; -function simulation_x(d) { - return d.x; -} -function simulation_y(d) { - return d.y; -} -function simulation_z(d) { - return d.z; -} -var initialRadius = 10, - initialAngleRoll = Math.PI * (3 - Math.sqrt(5)), - // Golden ratio angle -initialAngleYaw = Math.PI * 20 / (9 + Math.sqrt(221)); // Markov irrational number - -/* harmony default export */ function simulation(nodes, numDimensions) { - numDimensions = numDimensions || 2; - var nDim = Math.min(MAX_DIMENSIONS, Math.max(1, Math.round(numDimensions))), - simulation, - alpha = 1, - alphaMin = 0.001, - alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), - alphaTarget = 0, - velocityDecay = 0.6, - forces = new Map(), - stepper = timer(step), - event = src_dispatch("tick", "end"), - random = lcg(); - if (nodes == null) nodes = []; - - function step() { - tick(); - event.call("tick", simulation); - - if (alpha < alphaMin) { - stepper.stop(); - event.call("end", simulation); - } - } - - function tick(iterations) { - var i, - n = nodes.length, - node; - if (iterations === undefined) iterations = 1; - - for (var k = 0; k < iterations; ++k) { - alpha += (alphaTarget - alpha) * alphaDecay; - forces.forEach(function (force) { - force(alpha); - }); - - for (i = 0; i < n; ++i) { - node = nodes[i]; - if (node.fx == null) node.x += node.vx *= velocityDecay;else node.x = node.fx, node.vx = 0; - - if (nDim > 1) { - if (node.fy == null) node.y += node.vy *= velocityDecay;else node.y = node.fy, node.vy = 0; - } - - if (nDim > 2) { - if (node.fz == null) node.z += node.vz *= velocityDecay;else node.z = node.fz, node.vz = 0; - } - } - } - - return simulation; - } - - function initializeNodes() { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.index = i; - if (node.fx != null) node.x = node.fx; - if (node.fy != null) node.y = node.fy; - if (node.fz != null) node.z = node.fz; - - if (isNaN(node.x) || nDim > 1 && isNaN(node.y) || nDim > 2 && isNaN(node.z)) { - var radius = initialRadius * (nDim > 2 ? Math.cbrt(0.5 + i) : nDim > 1 ? Math.sqrt(0.5 + i) : i), - rollAngle = i * initialAngleRoll, - yawAngle = i * initialAngleYaw; - - if (nDim === 1) { - node.x = radius; - } else if (nDim === 2) { - node.x = radius * Math.cos(rollAngle); - node.y = radius * Math.sin(rollAngle); - } else { - // 3 dimensions: use spherical distribution along 2 irrational number angles - node.x = radius * Math.sin(rollAngle) * Math.cos(yawAngle); - node.y = radius * Math.cos(rollAngle); - node.z = radius * Math.sin(rollAngle) * Math.sin(yawAngle); - } - } - - if (isNaN(node.vx) || nDim > 1 && isNaN(node.vy) || nDim > 2 && isNaN(node.vz)) { - node.vx = 0; - - if (nDim > 1) { - node.vy = 0; - } - - if (nDim > 2) { - node.vz = 0; - } - } - } - } - - function initializeForce(force) { - if (force.initialize) force.initialize(nodes, random, nDim); - return force; - } - - initializeNodes(); - return simulation = { - tick: tick, - restart: function () { - return stepper.restart(step), simulation; - }, - stop: function () { - return stepper.stop(), simulation; - }, - numDimensions: function (_) { - return arguments.length ? (nDim = Math.min(MAX_DIMENSIONS, Math.max(1, Math.round(_))), forces.forEach(initializeForce), simulation) : nDim; - }, - nodes: function (_) { - return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes; - }, - alpha: function (_) { - return arguments.length ? (alpha = +_, simulation) : alpha; - }, - alphaMin: function (_) { - return arguments.length ? (alphaMin = +_, simulation) : alphaMin; - }, - alphaDecay: function (_) { - return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; - }, - alphaTarget: function (_) { - return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; - }, - velocityDecay: function (_) { - return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; - }, - randomSource: function (_) { - return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random; - }, - force: function (name, _) { - return arguments.length > 1 ? (_ == null ? forces.delete(name) : forces.set(name, initializeForce(_)), simulation) : forces.get(name); - }, - find: function () { - var args = Array.prototype.slice.call(arguments); - var x = args.shift() || 0, - y = (nDim > 1 ? args.shift() : null) || 0, - z = (nDim > 2 ? args.shift() : null) || 0, - radius = args.shift() || Infinity; - var i = 0, - n = nodes.length, - dx, - dy, - dz, - d2, - node, - closest; - radius *= radius; - - for (i = 0; i < n; ++i) { - node = nodes[i]; - dx = x - node.x; - dy = y - (node.y || 0); - dz = z - (node.z || 0); - d2 = dx * dx + dy * dy + dz * dz; - if (d2 < radius) closest = node, radius = d2; - } - - return closest; - }, - on: function (name, _) { - return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); - } - }; -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/manyBody.js - - - - - - -/* harmony default export */ function manyBody() { - var nodes, - nDim, - node, - random, - alpha, - strength = constant(-30), - strengths, - distanceMin2 = 1, - distanceMax2 = Infinity, - theta2 = 0.81; - - function force(_) { - var i, - n = nodes.length, - tree = (nDim === 1 ? (0,d3_binarytree.binarytree)(nodes, simulation_x) : nDim === 2 ? quadtree(nodes, simulation_x, simulation_y) : nDim === 3 ? (0,d3_octree.octree)(nodes, simulation_x, simulation_y, simulation_z) : null).visitAfter(accumulate); - - for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply); - } - - function initialize() { - if (!nodes) return; - var i, - n = nodes.length, - node; - strengths = new Array(n); - - for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes); - } - - function accumulate(treeNode) { - var strength = 0, - q, - c, - weight = 0, - x, - y, - z, - i; - var numChildren = treeNode.length; // For internal nodes, accumulate forces from children. - - if (numChildren) { - for (x = y = z = i = 0; i < numChildren; ++i) { - if ((q = treeNode[i]) && (c = Math.abs(q.value))) { - strength += q.value, weight += c, x += c * (q.x || 0), y += c * (q.y || 0), z += c * (q.z || 0); - } - } - - strength *= Math.sqrt(4 / numChildren); // scale accumulated strength according to number of dimensions - - treeNode.x = x / weight; - - if (nDim > 1) { - treeNode.y = y / weight; - } - - if (nDim > 2) { - treeNode.z = z / weight; - } - } // For leaf nodes, accumulate forces from coincident nodes. - else { - q = treeNode; - q.x = q.data.x; - - if (nDim > 1) { - q.y = q.data.y; - } - - if (nDim > 2) { - q.z = q.data.z; - } - - do strength += strengths[q.data.index]; while (q = q.next); - } - - treeNode.value = strength; - } - - function apply(treeNode, x1, arg1, arg2, arg3) { - if (!treeNode.value) return true; - var x2 = [arg1, arg2, arg3][nDim - 1]; - var x = treeNode.x - node.x, - y = nDim > 1 ? treeNode.y - node.y : 0, - z = nDim > 2 ? treeNode.z - node.z : 0, - w = x2 - x1, - l = x * x + y * y + z * z; // Apply the Barnes-Hut approximation if possible. - // Limit forces for very close nodes; randomize direction if coincident. - - if (w * w / theta2 < l) { - if (l < distanceMax2) { - if (x === 0) x = jiggle(random), l += x * x; - if (nDim > 1 && y === 0) y = jiggle(random), l += y * y; - if (nDim > 2 && z === 0) z = jiggle(random), l += z * z; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - node.vx += x * treeNode.value * alpha / l; - - if (nDim > 1) { - node.vy += y * treeNode.value * alpha / l; - } - - if (nDim > 2) { - node.vz += z * treeNode.value * alpha / l; - } - } - - return true; - } // Otherwise, process points directly. - else if (treeNode.length || l >= distanceMax2) return; // Limit forces for very close nodes; randomize direction if coincident. - - - if (treeNode.data !== node || treeNode.next) { - if (x === 0) x = jiggle(random), l += x * x; - if (nDim > 1 && y === 0) y = jiggle(random), l += y * y; - if (nDim > 2 && z === 0) z = jiggle(random), l += z * z; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - } - - do if (treeNode.data !== node) { - w = strengths[treeNode.data.index] * alpha / l; - node.vx += x * w; - - if (nDim > 1) { - node.vy += y * w; - } - - if (nDim > 2) { - node.vz += z * w; - } - } while (treeNode = treeNode.next); - } - - force.initialize = function (_nodes, ...args) { - nodes = _nodes; - random = args.find(arg => typeof arg === 'function') || Math.random; - nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2; - initialize(); - }; - - force.strength = function (_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; - }; - - force.distanceMin = function (_) { - return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); - }; - - force.distanceMax = function (_) { - return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); - }; - - force.theta = function (_) { - return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); - }; - - return force; -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/radial.js - -/* harmony default export */ function radial(radius, x, y, z) { - var nodes, - nDim, - strength = constant(0.1), - strengths, - radiuses; - if (typeof radius !== "function") radius = constant(+radius); - if (x == null) x = 0; - if (y == null) y = 0; - if (z == null) z = 0; - - function force(alpha) { - for (var i = 0, n = nodes.length; i < n; ++i) { - var node = nodes[i], - dx = node.x - x || 1e-6, - dy = (node.y || 0) - y || 1e-6, - dz = (node.z || 0) - z || 1e-6, - r = Math.sqrt(dx * dx + dy * dy + dz * dz), - k = (radiuses[i] - r) * strengths[i] * alpha / r; - node.vx += dx * k; - - if (nDim > 1) { - node.vy += dy * k; - } - - if (nDim > 2) { - node.vz += dz * k; - } - } - } - - function initialize() { - if (!nodes) return; - var i, - n = nodes.length; - strengths = new Array(n); - radiuses = new Array(n); - - for (i = 0; i < n; ++i) { - radiuses[i] = +radius(nodes[i], i, nodes); - strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function (initNodes, ...args) { - nodes = initNodes; - nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2; - initialize(); - }; - - force.strength = function (_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; - }; - - force.radius = function (_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initialize(), force) : radius; - }; - - force.x = function (_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function (_) { - return arguments.length ? (y = +_, force) : y; - }; - - force.z = function (_) { - return arguments.length ? (z = +_, force) : z; - }; - - return force; -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/x.js - -/* harmony default export */ function src_x(x) { - var strength = constant(0.1), - nodes, - strengths, - xz; - if (typeof x !== "function") x = constant(x == null ? 0 : +x); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, - n = nodes.length; - strengths = new Array(n); - xz = new Array(n); - - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function (_) { - nodes = _; - initialize(); - }; - - force.strength = function (_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; - }; - - force.x = function (_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant(+_), initialize(), force) : x; - }; - - return force; -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/y.js - -/* harmony default export */ function src_y(y) { - var strength = constant(0.1), - nodes, - strengths, - yz; - if (typeof y !== "function") y = constant(y == null ? 0 : +y); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, - n = nodes.length; - strengths = new Array(n); - yz = new Array(n); - - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function (_) { - nodes = _; - initialize(); - }; - - force.strength = function (_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; - }; - - force.y = function (_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant(+_), initialize(), force) : y; - }; - - return force; -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/z.js - -/* harmony default export */ function src_z(z) { - var strength = constant(0.1), - nodes, - strengths, - zz; - if (typeof z !== "function") z = constant(z == null ? 0 : +z); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vz += (zz[i] - node.z) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, - n = nodes.length; - strengths = new Array(n); - zz = new Array(n); - - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(zz[i] = +z(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function (_) { - nodes = _; - initialize(); - }; - - force.strength = function (_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; - }; - - force.z = function (_) { - return arguments.length ? (z = typeof _ === "function" ? _ : constant(+_), initialize(), force) : z; - }; - - return force; -} -;// CONCATENATED MODULE: ./node_modules/d3-force-3d/src/index.js - - - - - - - - - - -/***/ }), - -/***/ 681: -/***/ (function(__unused_webpack_module, exports) { - -// https://github.com/vasturiano/d3-octree v0.2.0 Copyright 2021 Vasco Asturiano -(function (global, factory) { - true ? factory(exports) : 0; -})(this, function (exports) { - 'use strict'; - - function tree_add(d) { - var x = +this._x.call(null, d), - y = +this._y.call(null, d), - z = +this._z.call(null, d); - return add(this.cover(x, y, z), x, y, z, d); - } - - function add(tree, x, y, z, d) { - if (isNaN(x) || isNaN(y) || isNaN(z)) return tree; // ignore invalid points - - var parent, - node = tree._root, - leaf = { - data: d - }, - x0 = tree._x0, - y0 = tree._y0, - z0 = tree._z0, - x1 = tree._x1, - y1 = tree._y1, - z1 = tree._z1, - xm, - ym, - zm, - xp, - yp, - zp, - right, - bottom, - deep, - i, - j; // If the tree is empty, initialize the root as a leaf. - - if (!node) return tree._root = leaf, tree; // Find the existing leaf for the new point, or add it. - - while (node.length) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym; - if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm;else z1 = zm; - if (parent = node, !(node = node[i = deep << 2 | bottom << 1 | right])) return parent[i] = leaf, tree; - } // Is the new point is exactly coincident with the existing point? - - - xp = +tree._x.call(null, node.data); - yp = +tree._y.call(null, node.data); - zp = +tree._z.call(null, node.data); - if (x === xp && y === yp && z === zp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; // Otherwise, split the leaf node until the old and new point are separated. - - do { - parent = parent ? parent[i] = new Array(8) : tree._root = new Array(8); - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym; - if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm;else z1 = zm; - } while ((i = deep << 2 | bottom << 1 | right) === (j = (zp >= zm) << 2 | (yp >= ym) << 1 | xp >= xm)); - - return parent[j] = node, parent[i] = leaf, tree; - } - - function addAll(data) { - var d, - i, - n = data.length, - x, - y, - z, - xz = new Array(n), - yz = new Array(n), - zz = new Array(n), - x0 = Infinity, - y0 = Infinity, - z0 = Infinity, - x1 = -Infinity, - y1 = -Infinity, - z1 = -Infinity; // Compute the points and their extent. - - for (i = 0; i < n; ++i) { - if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d)) || isNaN(z = +this._z.call(null, d))) continue; - xz[i] = x; - yz[i] = y; - zz[i] = z; - if (x < x0) x0 = x; - if (x > x1) x1 = x; - if (y < y0) y0 = y; - if (y > y1) y1 = y; - if (z < z0) z0 = z; - if (z > z1) z1 = z; - } // If there were no (valid) points, abort. - - - if (x0 > x1 || y0 > y1 || z0 > z1) return this; // Expand the tree to cover the new points. - - this.cover(x0, y0, z0).cover(x1, y1, z1); // Add the new points. - - for (i = 0; i < n; ++i) { - add(this, xz[i], yz[i], zz[i], data[i]); - } - - return this; - } - - function tree_cover(x, y, z) { - if (isNaN(x = +x) || isNaN(y = +y) || isNaN(z = +z)) return this; // ignore invalid points - - var x0 = this._x0, - y0 = this._y0, - z0 = this._z0, - x1 = this._x1, - y1 = this._y1, - z1 = this._z1; // If the octree has no extent, initialize them. - // Integer extent are necessary so that if we later double the extent, - // the existing octant boundaries don’t change due to floating point error! - - if (isNaN(x0)) { - x1 = (x0 = Math.floor(x)) + 1; - y1 = (y0 = Math.floor(y)) + 1; - z1 = (z0 = Math.floor(z)) + 1; - } // Otherwise, double repeatedly to cover. - else { - var t = x1 - x0 || 1, - node = this._root, - parent, - i; - - while (x0 > x || x >= x1 || y0 > y || y >= y1 || z0 > z || z >= z1) { - i = (z < z0) << 2 | (y < y0) << 1 | x < x0; - parent = new Array(8), parent[i] = node, node = parent, t *= 2; - - switch (i) { - case 0: - x1 = x0 + t, y1 = y0 + t, z1 = z0 + t; - break; - - case 1: - x0 = x1 - t, y1 = y0 + t, z1 = z0 + t; - break; - - case 2: - x1 = x0 + t, y0 = y1 - t, z1 = z0 + t; - break; - - case 3: - x0 = x1 - t, y0 = y1 - t, z1 = z0 + t; - break; - - case 4: - x1 = x0 + t, y1 = y0 + t, z0 = z1 - t; - break; - - case 5: - x0 = x1 - t, y1 = y0 + t, z0 = z1 - t; - break; - - case 6: - x1 = x0 + t, y0 = y1 - t, z0 = z1 - t; - break; - - case 7: - x0 = x1 - t, y0 = y1 - t, z0 = z1 - t; - break; - } - } - - if (this._root && this._root.length) this._root = node; - } - - this._x0 = x0; - this._y0 = y0; - this._z0 = z0; - this._x1 = x1; - this._y1 = y1; - this._z1 = z1; - return this; - } - - function tree_data() { - var data = []; - this.visit(function (node) { - if (!node.length) do data.push(node.data); while (node = node.next); - }); - return data; - } - - function tree_extent(_) { - return arguments.length ? this.cover(+_[0][0], +_[0][1], +_[0][2]).cover(+_[1][0], +_[1][1], +_[1][2]) : isNaN(this._x0) ? undefined : [[this._x0, this._y0, this._z0], [this._x1, this._y1, this._z1]]; - } - - function Octant(node, x0, y0, z0, x1, y1, z1) { - this.node = node; - this.x0 = x0; - this.y0 = y0; - this.z0 = z0; - this.x1 = x1; - this.y1 = y1; - this.z1 = z1; - } - - function tree_find(x, y, z, radius) { - var data, - x0 = this._x0, - y0 = this._y0, - z0 = this._z0, - x1, - y1, - z1, - x2, - y2, - z2, - x3 = this._x1, - y3 = this._y1, - z3 = this._z1, - octs = [], - node = this._root, - q, - i; - if (node) octs.push(new Octant(node, x0, y0, z0, x3, y3, z3)); - if (radius == null) radius = Infinity;else { - x0 = x - radius, y0 = y - radius, z0 = z - radius; - x3 = x + radius, y3 = y + radius, z3 = z + radius; - radius *= radius; - } - - while (q = octs.pop()) { - // Stop searching if this octant can’t contain a closer node. - if (!(node = q.node) || (x1 = q.x0) > x3 || (y1 = q.y0) > y3 || (z1 = q.z0) > z3 || (x2 = q.x1) < x0 || (y2 = q.y1) < y0 || (z2 = q.z1) < z0) continue; // Bisect the current octant. - - if (node.length) { - var xm = (x1 + x2) / 2, - ym = (y1 + y2) / 2, - zm = (z1 + z2) / 2; - octs.push(new Octant(node[7], xm, ym, zm, x2, y2, z2), new Octant(node[6], x1, ym, zm, xm, y2, z2), new Octant(node[5], xm, y1, zm, x2, ym, z2), new Octant(node[4], x1, y1, zm, xm, ym, z2), new Octant(node[3], xm, ym, z1, x2, y2, zm), new Octant(node[2], x1, ym, z1, xm, y2, zm), new Octant(node[1], xm, y1, z1, x2, ym, zm), new Octant(node[0], x1, y1, z1, xm, ym, zm)); // Visit the closest octant first. - - if (i = (z >= zm) << 2 | (y >= ym) << 1 | x >= xm) { - q = octs[octs.length - 1]; - octs[octs.length - 1] = octs[octs.length - 1 - i]; - octs[octs.length - 1 - i] = q; - } - } // Visit this point. (Visiting coincident points isn’t necessary!) - else { - var dx = x - +this._x.call(null, node.data), - dy = y - +this._y.call(null, node.data), - dz = z - +this._z.call(null, node.data), - d2 = dx * dx + dy * dy + dz * dz; - - if (d2 < radius) { - var d = Math.sqrt(radius = d2); - x0 = x - d, y0 = y - d, z0 = z - d; - x3 = x + d, y3 = y + d, z3 = z + d; - data = node.data; - } - } - } - - return data; - } - - function tree_remove(d) { - if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d)) || isNaN(z = +this._z.call(null, d))) return this; // ignore invalid points - - var parent, - node = this._root, - retainer, - previous, - next, - x0 = this._x0, - y0 = this._y0, - z0 = this._z0, - x1 = this._x1, - y1 = this._y1, - z1 = this._z1, - x, - y, - z, - xm, - ym, - zm, - right, - bottom, - deep, - i, - j; // If the tree is empty, initialize the root as a leaf. - - if (!node) return this; // Find the leaf node for the point. - // While descending, also retain the deepest parent with a non-removed sibling. - - if (node.length) while (true) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym; - if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm;else z1 = zm; - if (!(parent = node, node = node[i = deep << 2 | bottom << 1 | right])) return this; - if (!node.length) break; - if (parent[i + 1 & 7] || parent[i + 2 & 7] || parent[i + 3 & 7] || parent[i + 4 & 7] || parent[i + 5 & 7] || parent[i + 6 & 7] || parent[i + 7 & 7]) retainer = parent, j = i; - } // Find the point to remove. - - while (node.data !== d) if (!(previous = node, node = node.next)) return this; - - if (next = node.next) delete node.next; // If there are multiple coincident points, remove just the point. - - if (previous) return next ? previous.next = next : delete previous.next, this; // If this is the root point, remove it. - - if (!parent) return this._root = next, this; // Remove this leaf. - - next ? parent[i] = next : delete parent[i]; // If the parent now contains exactly one leaf, collapse superfluous parents. - - if ((node = parent[0] || parent[1] || parent[2] || parent[3] || parent[4] || parent[5] || parent[6] || parent[7]) && node === (parent[7] || parent[6] || parent[5] || parent[4] || parent[3] || parent[2] || parent[1] || parent[0]) && !node.length) { - if (retainer) retainer[j] = node;else this._root = node; - } - - return this; - } - - function removeAll(data) { - for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); - - return this; - } - - function tree_root() { - return this._root; - } - - function tree_size() { - var size = 0; - this.visit(function (node) { - if (!node.length) do ++size; while (node = node.next); - }); - return size; - } - - function tree_visit(callback) { - var octs = [], - q, - node = this._root, - child, - x0, - y0, - z0, - x1, - y1, - z1; - if (node) octs.push(new Octant(node, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1)); - - while (q = octs.pop()) { - if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, z0 = q.z0, x1 = q.x1, y1 = q.y1, z1 = q.z1) && node.length) { - var xm = (x0 + x1) / 2, - ym = (y0 + y1) / 2, - zm = (z0 + z1) / 2; - if (child = node[7]) octs.push(new Octant(child, xm, ym, zm, x1, y1, z1)); - if (child = node[6]) octs.push(new Octant(child, x0, ym, zm, xm, y1, z1)); - if (child = node[5]) octs.push(new Octant(child, xm, y0, zm, x1, ym, z1)); - if (child = node[4]) octs.push(new Octant(child, x0, y0, zm, xm, ym, z1)); - if (child = node[3]) octs.push(new Octant(child, xm, ym, z0, x1, y1, zm)); - if (child = node[2]) octs.push(new Octant(child, x0, ym, z0, xm, y1, zm)); - if (child = node[1]) octs.push(new Octant(child, xm, y0, z0, x1, ym, zm)); - if (child = node[0]) octs.push(new Octant(child, x0, y0, z0, xm, ym, zm)); - } - } - - return this; - } - - function tree_visitAfter(callback) { - var octs = [], - next = [], - q; - if (this._root) octs.push(new Octant(this._root, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1)); - - while (q = octs.pop()) { - var node = q.node; - - if (node.length) { - var child, - x0 = q.x0, - y0 = q.y0, - z0 = q.z0, - x1 = q.x1, - y1 = q.y1, - z1 = q.z1, - xm = (x0 + x1) / 2, - ym = (y0 + y1) / 2, - zm = (z0 + z1) / 2; - if (child = node[0]) octs.push(new Octant(child, x0, y0, z0, xm, ym, zm)); - if (child = node[1]) octs.push(new Octant(child, xm, y0, z0, x1, ym, zm)); - if (child = node[2]) octs.push(new Octant(child, x0, ym, z0, xm, y1, zm)); - if (child = node[3]) octs.push(new Octant(child, xm, ym, z0, x1, y1, zm)); - if (child = node[4]) octs.push(new Octant(child, x0, y0, zm, xm, ym, z1)); - if (child = node[5]) octs.push(new Octant(child, xm, y0, zm, x1, ym, z1)); - if (child = node[6]) octs.push(new Octant(child, x0, ym, zm, xm, y1, z1)); - if (child = node[7]) octs.push(new Octant(child, xm, ym, zm, x1, y1, z1)); - } - - next.push(q); - } - - while (q = next.pop()) { - callback(q.node, q.x0, q.y0, q.z0, q.x1, q.y1, q.z1); - } - - return this; - } - - function defaultX(d) { - return d[0]; - } - - function tree_x(_) { - return arguments.length ? (this._x = _, this) : this._x; - } - - function defaultY(d) { - return d[1]; - } - - function tree_y(_) { - return arguments.length ? (this._y = _, this) : this._y; - } - - function defaultZ(d) { - return d[2]; - } - - function tree_z(_) { - return arguments.length ? (this._z = _, this) : this._z; - } - - function octree(nodes, x, y, z) { - var tree = new Octree(x == null ? defaultX : x, y == null ? defaultY : y, z == null ? defaultZ : z, NaN, NaN, NaN, NaN, NaN, NaN); - return nodes == null ? tree : tree.addAll(nodes); - } - - function Octree(x, y, z, x0, y0, z0, x1, y1, z1) { - this._x = x; - this._y = y; - this._z = z; - this._x0 = x0; - this._y0 = y0; - this._z0 = z0; - this._x1 = x1; - this._y1 = y1; - this._z1 = z1; - this._root = undefined; - } - - function leaf_copy(leaf) { - var copy = { - data: leaf.data - }, - next = copy; - - while (leaf = leaf.next) next = next.next = { - data: leaf.data - }; - - return copy; - } - - var treeProto = octree.prototype = Octree.prototype; - - treeProto.copy = function () { - var copy = new Octree(this._x, this._y, this._z, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1), - node = this._root, - nodes, - child; - if (!node) return copy; - if (!node.length) return copy._root = leaf_copy(node), copy; - nodes = [{ - source: node, - target: copy._root = new Array(8) - }]; - - while (node = nodes.pop()) { - for (var i = 0; i < 8; ++i) { - if (child = node.source[i]) { - if (child.length) nodes.push({ - source: child, - target: node.target[i] = new Array(8) - });else node.target[i] = leaf_copy(child); - } - } - } - - return copy; - }; - - treeProto.add = tree_add; - treeProto.addAll = addAll; - treeProto.cover = tree_cover; - treeProto.data = tree_data; - treeProto.extent = tree_extent; - treeProto.find = tree_find; - treeProto.remove = tree_remove; - treeProto.removeAll = removeAll; - treeProto.root = tree_root; - treeProto.size = tree_size; - treeProto.visit = tree_visit; - treeProto.visitAfter = tree_visitAfter; - treeProto.x = tree_x; - treeProto.y = tree_y; - treeProto.z = tree_z; - exports.octree = octree; - Object.defineProperty(exports, '__esModule', { - value: true - }); -}); - -/***/ }) - -}; -;
\ No newline at end of file |