@dpuse/dpuse-tool-d3-visualiser 0.0.46 → 0.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -51
- package/dist/array-Cv4-2llb.js +0 -2
- package/dist/axis-DjmZ9QYe.js +0 -2
- package/dist/{band-C1twWuW2.js → band-BFcwtSdG.js} +2 -4
- package/dist/{band-C1twWuW2.js.map → band-BFcwtSdG.js.map} +1 -1
- package/dist/{billboardJs-DS82ViEw.js → billboardJs-oaee80Fh.js} +85 -72
- package/dist/{billboardJs-DS82ViEw.js.map → billboardJs-oaee80Fh.js.map} +1 -1
- package/dist/{chordDiagram-Cz0sVVgD.js → chordDiagram-CTDXv74T.js} +35 -29
- package/dist/{chordDiagram-Cz0sVVgD.js.map → chordDiagram-CTDXv74T.js.map} +1 -1
- package/dist/{d3BarChart-DIN2KQsU.js → d3BarChart-BQCPo1ub.js} +3 -5
- package/dist/{d3BarChart-DIN2KQsU.js.map → d3BarChart-BQCPo1ub.js.map} +1 -1
- package/dist/dpuse-tool-d3-visualiser.css +1 -1
- package/dist/dpuse-tool-d3-visualiser.es.js +10 -12
- package/dist/dpuse-tool-d3-visualiser.es.js.map +1 -1
- package/dist/drag-DfL4uwqz.js +0 -2
- package/dist/{erdDiagram-Ds1hsQDD.js → erdDiagram-C_Hobpls.js} +8 -8
- package/dist/{erdDiagram-Ds1hsQDD.js.map → erdDiagram-C_Hobpls.js.map} +1 -1
- package/dist/hierarchy-CDFAetye.js +0 -2
- package/dist/{linear-BnhqTvdX.js → linear-C-jur735.js} +4 -5
- package/dist/{linear-BnhqTvdX.js.map → linear-C-jur735.js.map} +1 -1
- package/dist/{link-D-9z7kEr.js → link-DRDgTeij.js} +1 -3
- package/dist/{link-D-9z7kEr.js.map → link-DRDgTeij.js.map} +1 -1
- package/dist/math-C5EhTgJw.js +0 -2
- package/dist/max-CPVNm4tn.js +0 -2
- package/dist/{networkDiagram-yraPhqxN.js → networkDiagram-CcQxxJMB.js} +10 -10
- package/dist/{networkDiagram-yraPhqxN.js.map → networkDiagram-CcQxxJMB.js.map} +1 -1
- package/dist/nodrag-Dq2tlBbe.js +0 -2
- package/dist/{observablePlot-C7764aFq.js → observablePlot-BE2I-5e2.js} +46 -38
- package/dist/{observablePlot-C7764aFq.js.map → observablePlot-BE2I-5e2.js.map} +1 -1
- package/dist/{ordinal-uZdoVxAx.js → ordinal-CDNZetSD.js} +1 -3
- package/dist/{ordinal-uZdoVxAx.js.map → ordinal-CDNZetSD.js.map} +1 -1
- package/dist/palette-BuTjISrV.js +0 -2
- package/dist/{path-6kmCrmEz.js → path-BoJ8LMXE.js} +6 -6
- package/dist/{path-6kmCrmEz.js.map → path-BoJ8LMXE.js.map} +1 -1
- package/dist/{point-6cHftmvM.js → point-GXxVI808.js} +1 -3
- package/dist/{point-6cHftmvM.js.map → point-GXxVI808.js.map} +1 -1
- package/dist/{pow-BFDPqS3s.js → pow-CxQV96gC.js} +1 -3
- package/dist/{pow-BFDPqS3s.js.map → pow-CxQV96gC.js.map} +1 -1
- package/dist/{sankeyDiagram-BT2RCRpi.js → sankeyDiagram-DOF6arSJ.js} +1 -3
- package/dist/{sankeyDiagram-BT2RCRpi.js.map → sankeyDiagram-DOF6arSJ.js.map} +1 -1
- package/dist/select-BIuoFcZG.js +0 -2
- package/dist/{src-Xlr4CcSw.js → src-Dl4_vNYa.js} +5 -5
- package/dist/{src-Xlr4CcSw.js.map → src-Dl4_vNYa.js.map} +1 -1
- package/dist/src-WDualLFV.js +0 -2
- package/dist/src-yL3ZdoR1.js +0 -2
- package/dist/{step-DgCcZZ3W.js → step-C2rRFtYO.js} +4 -4
- package/dist/{step-DgCcZZ3W.js.map → step-C2rRFtYO.js.map} +1 -1
- package/dist/string-CnCj7THX.js +0 -2
- package/dist/sum-CNP0Xric.js +0 -2
- package/dist/{tanStackCharts-DNzjtkwh.js → tanStackCharts-CqP0qIAr.js} +293 -263
- package/dist/tanStackCharts-CqP0qIAr.js.map +1 -0
- package/dist/{treeDiagram-DsHUD8ou.js → treeDiagram-FUVkkblR.js} +1 -3
- package/dist/{treeDiagram-DsHUD8ou.js.map → treeDiagram-FUVkkblR.js.map} +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/package.json +10 -10
- package/dist/tanStackCharts-DNzjtkwh.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkDiagram-yraPhqxN.js","names":["Quad","Quad","Quad","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","tree_find","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","tree_x","tree_y","constant","jiggle","lcg","constant","jiggle"],"sources":["../node_modules/d3-force/src/center.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-force/src/link.js","../node_modules/d3-force/src/lcg.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../src/networkDiagram.ts"],"sourcesContent":["export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","// ── External Dependencies & Registrations\nimport { select } from 'd3-selection';\nimport { type D3DragEvent, drag } from 'd3-drag';\nimport { type D3ZoomEvent, zoom } from 'd3-zoom';\nimport { forceCenter, forceLink, forceManyBody, forceSimulation, type Simulation, type SimulationLinkDatum, type SimulationNodeDatum } from 'd3-force';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport interface NetworkDiagramNode {\n id: string;\n}\n\nexport interface NetworkDiagramLink {\n source: string;\n target: string;\n}\n\nexport interface NetworkDiagramData {\n links: NetworkDiagramLink[];\n nodes: NetworkDiagramNode[];\n}\n\nexport interface NetworkDiagramOptions {\n chargeStrength?: number;\n linkDistance?: number;\n}\n\nexport interface NetworkDiagramHandle {\n destroy: () => void;\n resize: () => void;\n svg: SVGSVGElement;\n triggerAutoLayout: () => void;\n}\n\ntype LaidOutNode = NetworkDiagramNode & SimulationNodeDatum;\ntype LaidOutLink = SimulationLinkDatum<LaidOutNode>;\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_CHARGE_STRENGTH = -300;\nconst DEFAULT_LINK_DISTANCE = 100;\nconst DEFAULT_WIDTH = 640;\nconst DEFAULT_HEIGHT = 480;\nconst AUTO_LAYOUT_TICKS = 180;\nconst NODE_RADIUS = 20;\nconst NODE_RADIUS_ACTIVE = 22;\n\nconst COLOR = {\n linkStroke: '#9ca3af',\n nodeFill: '#2563eb',\n nodeFillHovered: '#3b82f6',\n nodeFillSelected: '#f59e0b',\n nodeStroke: '#1e40af',\n nodeStrokeHovered: '#1d4ed8',\n nodeStrokeSelected: '#b45309',\n nodeText: '#ffffff'\n};\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function renderNetworkDiagram(data: NetworkDiagramData, renderTo: HTMLElement, options: NetworkDiagramOptions = {}): NetworkDiagramHandle {\n const width = renderTo.clientWidth || DEFAULT_WIDTH;\n const height = renderTo.clientHeight || DEFAULT_HEIGHT;\n\n const nodes: LaidOutNode[] = data.nodes.map((node) => ({ ...node }));\n const links: LaidOutLink[] = data.links.map((link) => ({ ...link }));\n\n // Set deterministic initial positions so the graph is readable before force layout runs.\n const startRadius = Math.min(width, height) * 0.22;\n for (const [index, node] of nodes.entries()) {\n const angle = (index / nodes.length) * Math.PI * 2;\n node.x = width / 2 + Math.cos(angle) * startRadius;\n node.y = height / 2 + Math.sin(angle) * startRadius;\n }\n\n const simulation: Simulation<LaidOutNode, LaidOutLink> = forceSimulation(nodes)\n .force(\n 'link',\n forceLink<LaidOutNode, LaidOutLink>(links)\n .id((node) => node.id)\n .distance(options.linkDistance ?? DEFAULT_LINK_DISTANCE)\n )\n .force('charge', forceManyBody().strength(options.chargeStrength ?? DEFAULT_CHARGE_STRENGTH))\n .force('center', forceCenter(width / 2, height / 2));\n\n const svgSelection = select(renderTo)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .attr('viewBox', `0 0 ${String(width)} ${String(height)}`)\n .style('touch-action', 'none');\n const viewport = svgSelection.append('g');\n\n const link = viewport.selectAll<SVGLineElement, LaidOutLink>('line').data(links).join('line').attr('stroke', COLOR.linkStroke).attr('stroke-width', 2);\n\n const node = viewport.selectAll<SVGGElement, LaidOutNode>('g').data(nodes).join('g').style('cursor', 'pointer');\n node.append('circle').attr('r', NODE_RADIUS).attr('fill', COLOR.nodeFill).attr('stroke', COLOR.nodeStroke).attr('stroke-width', 2);\n node.append('text')\n .text((laidOutNode) => laidOutNode.id)\n .attr('text-anchor', 'middle')\n .attr('dy', 4)\n .attr('fill', COLOR.nodeText); // explicit - iOS Safari can default to transparent\n\n let selectedNodeId: string | null = null;\n let hoveredNodeId: string | null = null;\n\n const updateNodeStyles = (): void => {\n node.selectAll<SVGCircleElement, LaidOutNode>('circle')\n .attr('fill', (laidOutNode) => {\n if (laidOutNode.id === selectedNodeId) return COLOR.nodeFillSelected;\n if (laidOutNode.id === hoveredNodeId) return COLOR.nodeFillHovered;\n return COLOR.nodeFill;\n })\n .attr('stroke', (laidOutNode) => {\n if (laidOutNode.id === selectedNodeId) return COLOR.nodeStrokeSelected;\n if (laidOutNode.id === hoveredNodeId) return COLOR.nodeStrokeHovered;\n return COLOR.nodeStroke;\n })\n .attr('stroke-width', (laidOutNode) => (laidOutNode.id === selectedNodeId ? 3 : 2))\n .attr('r', (laidOutNode) => (laidOutNode.id === selectedNodeId || laidOutNode.id === hoveredNodeId ? NODE_RADIUS_ACTIVE : NODE_RADIUS));\n };\n\n node.on('mouseenter', (_event, laidOutNode) => {\n hoveredNodeId = laidOutNode.id;\n updateNodeStyles();\n })\n .on('mouseleave', (_event, laidOutNode) => {\n if (hoveredNodeId === laidOutNode.id) hoveredNodeId = null;\n updateNodeStyles();\n })\n .on('click', (event: MouseEvent, laidOutNode) => {\n event.stopPropagation();\n selectedNodeId = selectedNodeId === laidOutNode.id ? null : laidOutNode.id;\n updateNodeStyles();\n });\n\n svgSelection.on('click', () => {\n selectedNodeId = null;\n updateNodeStyles();\n });\n\n const zoomBehavior = zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.5, 4])\n .on('zoom', (event: D3ZoomEvent<SVGSVGElement, unknown>) => {\n viewport.attr('transform', event.transform.toString());\n });\n\n svgSelection.call(zoomBehavior).on('dblclick.zoom', null);\n\n const getNodePosition = (value: LaidOutNode | string | number, axis: 'x' | 'y'): number => {\n if (typeof value === 'object') return value[axis] ?? 0;\n return 0;\n };\n\n const renderGraph = (): void => {\n link.attr('x1', (laidOutLink) => getNodePosition(laidOutLink.source, 'x'))\n .attr('y1', (laidOutLink) => getNodePosition(laidOutLink.source, 'y'))\n .attr('x2', (laidOutLink) => getNodePosition(laidOutLink.target, 'x'))\n .attr('y2', (laidOutLink) => getNodePosition(laidOutLink.target, 'y'));\n node.attr('transform', (laidOutNode) => `translate(${String(laidOutNode.x ?? 0)},${String(laidOutNode.y ?? 0)})`);\n };\n\n // Keep force simulation idle by default; run it only on explicit request.\n simulation.stop();\n\n type DragEvent = D3DragEvent<SVGGElement, LaidOutNode, LaidOutNode>;\n\n node.call(\n drag<SVGGElement, LaidOutNode>()\n .on('start', (event: DragEvent, laidOutNode) => {\n (event.sourceEvent as MouseEvent | TouchEvent | undefined)?.stopPropagation();\n laidOutNode.fx = laidOutNode.x;\n laidOutNode.fy = laidOutNode.y;\n })\n .on('drag', (event: DragEvent, laidOutNode) => {\n laidOutNode.x = event.x;\n laidOutNode.y = event.y;\n laidOutNode.fx = event.x;\n laidOutNode.fy = event.y;\n renderGraph();\n })\n .on('end', (_event: DragEvent, laidOutNode) => {\n laidOutNode.fx = null;\n laidOutNode.fy = null;\n })\n );\n\n renderGraph();\n\n const svgNode = svgSelection.node();\n if (svgNode == null) throw new Error('Failed to create network diagram SVG element.');\n\n return {\n destroy: () => {\n simulation.stop();\n svgSelection.remove();\n },\n resize: () => {\n const newWidth = renderTo.clientWidth || DEFAULT_WIDTH;\n const newHeight = renderTo.clientHeight || DEFAULT_HEIGHT;\n svgSelection.attr('width', newWidth).attr('height', newHeight).attr('viewBox', `0 0 ${String(newWidth)} ${String(newHeight)}`);\n simulation.force('center', forceCenter(newWidth / 2, newHeight / 2));\n },\n svg: svgNode,\n triggerAutoLayout: () => {\n simulation.alpha(1);\n for (let step = 0; step < AUTO_LAYOUT_TICKS; step += 1) simulation.tick();\n simulation.stop();\n renderGraph();\n }\n };\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"networkDiagram-CcQxxJMB.js","names":["Quad","Quad","Quad","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","tree_find","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","tree_x","tree_y","constant","jiggle","lcg","constant","jiggle"],"sources":["../node_modules/d3-force/src/center.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-force/src/link.js","../node_modules/d3-force/src/lcg.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../src/networkDiagram.ts"],"sourcesContent":["export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","// ── External Dependencies & Registrations\nimport { select } from 'd3-selection';\nimport { type D3DragEvent, drag } from 'd3-drag';\nimport { type D3ZoomEvent, zoom } from 'd3-zoom';\nimport { forceCenter, forceLink, forceManyBody, forceSimulation, type Simulation, type SimulationLinkDatum, type SimulationNodeDatum } from 'd3-force';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport interface NetworkDiagramNode {\n id: string;\n}\n\nexport interface NetworkDiagramLink {\n source: string;\n target: string;\n}\n\nexport interface NetworkDiagramData {\n links: NetworkDiagramLink[];\n nodes: NetworkDiagramNode[];\n}\n\nexport interface NetworkDiagramOptions {\n chargeStrength?: number;\n linkDistance?: number;\n}\n\nexport interface NetworkDiagramHandle {\n destroy: () => void;\n resize: () => void;\n svg: SVGSVGElement;\n triggerAutoLayout: () => void;\n}\n\ntype LaidOutNode = NetworkDiagramNode & SimulationNodeDatum;\ntype LaidOutLink = SimulationLinkDatum<LaidOutNode>;\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_CHARGE_STRENGTH = -300;\nconst DEFAULT_LINK_DISTANCE = 100;\nconst DEFAULT_WIDTH = 640;\nconst DEFAULT_HEIGHT = 480;\nconst AUTO_LAYOUT_TICKS = 180;\nconst NODE_RADIUS = 20;\nconst NODE_RADIUS_ACTIVE = 22;\n\nconst COLOR = {\n linkStroke: '#9ca3af',\n nodeFill: '#2563eb',\n nodeFillHovered: '#3b82f6',\n nodeFillSelected: '#f59e0b',\n nodeStroke: '#1e40af',\n nodeStrokeHovered: '#1d4ed8',\n nodeStrokeSelected: '#b45309',\n nodeText: '#ffffff'\n};\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function renderNetworkDiagram(data: NetworkDiagramData, renderTo: HTMLElement, options: NetworkDiagramOptions = {}): NetworkDiagramHandle {\n const width = renderTo.clientWidth || DEFAULT_WIDTH;\n const height = renderTo.clientHeight || DEFAULT_HEIGHT;\n\n const nodes: LaidOutNode[] = data.nodes.map((node) => ({ ...node }));\n const links: LaidOutLink[] = data.links.map((link) => ({ ...link }));\n\n // Set deterministic initial positions so the graph is readable before force layout runs.\n const startRadius = Math.min(width, height) * 0.22;\n for (const [index, node] of nodes.entries()) {\n const angle = (index / nodes.length) * Math.PI * 2;\n node.x = width / 2 + Math.cos(angle) * startRadius;\n node.y = height / 2 + Math.sin(angle) * startRadius;\n }\n\n const simulation: Simulation<LaidOutNode, LaidOutLink> = forceSimulation(nodes)\n .force(\n 'link',\n forceLink<LaidOutNode, LaidOutLink>(links)\n .id((node) => node.id)\n .distance(options.linkDistance ?? DEFAULT_LINK_DISTANCE)\n )\n .force('charge', forceManyBody().strength(options.chargeStrength ?? DEFAULT_CHARGE_STRENGTH))\n .force('center', forceCenter(width / 2, height / 2));\n\n const svgSelection = select(renderTo)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .attr('viewBox', `0 0 ${String(width)} ${String(height)}`)\n .style('touch-action', 'none');\n const viewport = svgSelection.append('g');\n\n const link = viewport.selectAll<SVGLineElement, LaidOutLink>('line').data(links).join('line').attr('stroke', COLOR.linkStroke).attr('stroke-width', 2);\n\n const node = viewport.selectAll<SVGGElement, LaidOutNode>('g').data(nodes).join('g').style('cursor', 'pointer');\n node.append('circle').attr('r', NODE_RADIUS).attr('fill', COLOR.nodeFill).attr('stroke', COLOR.nodeStroke).attr('stroke-width', 2);\n node.append('text')\n .text((laidOutNode) => laidOutNode.id)\n .attr('text-anchor', 'middle')\n .attr('dy', 4)\n .attr('fill', COLOR.nodeText); // explicit - iOS Safari can default to transparent\n\n let selectedNodeId: string | null = null;\n let hoveredNodeId: string | null = null;\n\n const updateNodeStyles = (): void => {\n node.selectAll<SVGCircleElement, LaidOutNode>('circle')\n .attr('fill', (laidOutNode) => {\n if (laidOutNode.id === selectedNodeId) return COLOR.nodeFillSelected;\n if (laidOutNode.id === hoveredNodeId) return COLOR.nodeFillHovered;\n return COLOR.nodeFill;\n })\n .attr('stroke', (laidOutNode) => {\n if (laidOutNode.id === selectedNodeId) return COLOR.nodeStrokeSelected;\n if (laidOutNode.id === hoveredNodeId) return COLOR.nodeStrokeHovered;\n return COLOR.nodeStroke;\n })\n .attr('stroke-width', (laidOutNode) => (laidOutNode.id === selectedNodeId ? 3 : 2))\n .attr('r', (laidOutNode) => (laidOutNode.id === selectedNodeId || laidOutNode.id === hoveredNodeId ? NODE_RADIUS_ACTIVE : NODE_RADIUS));\n };\n\n node.on('mouseenter', (_event, laidOutNode) => {\n hoveredNodeId = laidOutNode.id;\n updateNodeStyles();\n })\n .on('mouseleave', (_event, laidOutNode) => {\n if (hoveredNodeId === laidOutNode.id) hoveredNodeId = null;\n updateNodeStyles();\n })\n .on('click', (event: MouseEvent, laidOutNode) => {\n event.stopPropagation();\n selectedNodeId = selectedNodeId === laidOutNode.id ? null : laidOutNode.id;\n updateNodeStyles();\n });\n\n svgSelection.on('click', () => {\n selectedNodeId = null;\n updateNodeStyles();\n });\n\n const zoomBehavior = zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.5, 4])\n .on('zoom', (event: D3ZoomEvent<SVGSVGElement, unknown>) => {\n viewport.attr('transform', event.transform.toString());\n });\n\n svgSelection.call(zoomBehavior).on('dblclick.zoom', null);\n\n const getNodePosition = (value: LaidOutNode | string | number, axis: 'x' | 'y'): number => {\n if (typeof value === 'object') return value[axis] ?? 0;\n return 0;\n };\n\n const renderGraph = (): void => {\n link.attr('x1', (laidOutLink) => getNodePosition(laidOutLink.source, 'x'))\n .attr('y1', (laidOutLink) => getNodePosition(laidOutLink.source, 'y'))\n .attr('x2', (laidOutLink) => getNodePosition(laidOutLink.target, 'x'))\n .attr('y2', (laidOutLink) => getNodePosition(laidOutLink.target, 'y'));\n node.attr('transform', (laidOutNode) => `translate(${String(laidOutNode.x ?? 0)},${String(laidOutNode.y ?? 0)})`);\n };\n\n // Keep force simulation idle by default; run it only on explicit request.\n simulation.stop();\n\n type DragEvent = D3DragEvent<SVGGElement, LaidOutNode, LaidOutNode>;\n\n node.call(\n drag<SVGGElement, LaidOutNode>()\n .on('start', (event: DragEvent, laidOutNode) => {\n (event.sourceEvent as MouseEvent | TouchEvent | undefined)?.stopPropagation();\n laidOutNode.fx = laidOutNode.x;\n laidOutNode.fy = laidOutNode.y;\n })\n .on('drag', (event: DragEvent, laidOutNode) => {\n laidOutNode.x = event.x;\n laidOutNode.y = event.y;\n laidOutNode.fx = event.x;\n laidOutNode.fy = event.y;\n renderGraph();\n })\n .on('end', (_event: DragEvent, laidOutNode) => {\n laidOutNode.fx = null;\n laidOutNode.fy = null;\n })\n );\n\n renderGraph();\n\n const svgNode = svgSelection.node();\n if (svgNode == null) throw new Error('Failed to create network diagram SVG element.');\n\n return {\n destroy: () => {\n simulation.stop();\n svgSelection.remove();\n },\n resize: () => {\n const newWidth = renderTo.clientWidth || DEFAULT_WIDTH;\n const newHeight = renderTo.clientHeight || DEFAULT_HEIGHT;\n svgSelection.attr('width', newWidth).attr('height', newHeight).attr('viewBox', `0 0 ${String(newWidth)} ${String(newHeight)}`);\n simulation.force('center', forceCenter(newWidth / 2, newHeight / 2));\n },\n svg: svgNode,\n triggerAutoLayout: () => {\n simulation.alpha(1);\n for (let step = 0; step < AUTO_LAYOUT_TICKS; step += 1) simulation.tick();\n simulation.stop();\n renderGraph();\n }\n };\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"mappings":"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"}
|
package/dist/nodrag-Dq2tlBbe.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { a as e, n as t, o as n, r, t as i } from "./pow-
|
|
2
|
-
import { C as a, S as o, _ as s, b as c, d as l, f as u, g as d, h as f, l as p, n as m, p as h, r as g, s as _, t as v, u as y, v as b, x, y as S } from "./linear-
|
|
1
|
+
import { a as e, n as t, o as n, r, t as i } from "./pow-CxQV96gC.js";
|
|
2
|
+
import { C as a, S as o, _ as s, b as c, d as l, f as u, g as d, h as f, l as p, n as m, p as h, r as g, s as _, t as v, u as y, v as b, x, y as S } from "./linear-C-jur735.js";
|
|
3
3
|
import { t as C } from "./max-CPVNm4tn.js";
|
|
4
4
|
import { n as w, t as T } from "./sum-CNP0Xric.js";
|
|
5
|
-
import { n as E, r as D, t as O } from "./band-
|
|
5
|
+
import { n as E, r as D, t as O } from "./band-BFcwtSdG.js";
|
|
6
6
|
import "./src-yL3ZdoR1.js";
|
|
7
7
|
import { f as k, t as A, u as ee } from "./select-BIuoFcZG.js";
|
|
8
8
|
import { s as te } from "./nodrag-Dq2tlBbe.js";
|
|
9
|
-
import { A as ne, C as re, D as ie, E as ae, F as oe, I as se, M as ce, N as le, O as ue, P as de, S as fe, T as pe, _ as me, a as he, b as ge, c as _e, f as ve, g as ye, h as be, i as xe, j as Se, k as Ce, m as we, n as Te, o as Ee, p as De, r as Oe, s as ke, u as Ae, v as je, w as Me, x as Ne, y as Pe } from "./src-
|
|
10
|
-
import { n as Fe, t as Ie } from "./ordinal-
|
|
9
|
+
import { A as ne, C as re, D as ie, E as ae, F as oe, I as se, M as ce, N as le, O as ue, P as de, S as fe, T as pe, _ as me, a as he, b as ge, c as _e, f as ve, g as ye, h as be, i as xe, j as Se, k as Ce, m as we, n as Te, o as Ee, p as De, r as Oe, s as ke, u as Ae, v as je, w as Me, x as Ne, y as Pe } from "./src-Dl4_vNYa.js";
|
|
10
|
+
import { n as Fe, t as Ie } from "./ordinal-CDNZetSD.js";
|
|
11
11
|
import { _ as Le, a as Re, c as ze, f as Be, g as Ve, h as He, i as Ue, l as We, m as Ge, n as Ke, o as j, p as qe, r as Je, u as Ye } from "./string-CnCj7THX.js";
|
|
12
12
|
import "./src-WDualLFV.js";
|
|
13
13
|
import { a as Xe, d as Ze, f as M, l as Qe, p as $e, u as et } from "./math-C5EhTgJw.js";
|
|
14
|
-
import { r as tt } from "./path-
|
|
14
|
+
import { r as tt } from "./path-BoJ8LMXE.js";
|
|
15
15
|
import { t as nt } from "./axis-DjmZ9QYe.js";
|
|
16
16
|
//#region node_modules/d3-array/src/cross.js
|
|
17
17
|
function rt(e) {
|
|
@@ -3285,9 +3285,11 @@ function od(e, t) {
|
|
|
3285
3285
|
}
|
|
3286
3286
|
function sd(e, t = "greys") {
|
|
3287
3287
|
let n = /* @__PURE__ */ new Set(), [r, i] = od(t, 2);
|
|
3288
|
-
for (let t of e) if (t != null)
|
|
3289
|
-
|
|
3290
|
-
|
|
3288
|
+
for (let t of e) if (t != null) {
|
|
3289
|
+
if (t === !0) n.add(i);
|
|
3290
|
+
else if (t === !1) n.add(r);
|
|
3291
|
+
else return;
|
|
3292
|
+
}
|
|
3291
3293
|
return [...n];
|
|
3292
3294
|
}
|
|
3293
3295
|
var cd = /* @__PURE__ */ new Map([
|
|
@@ -3613,10 +3615,12 @@ function rf(e, t, { type: n, interval: r, domain: i, range: a, scheme: o, unknow
|
|
|
3613
3615
|
r = Al(r, n), i === void 0 && (i = cf(t, r, e));
|
|
3614
3616
|
let l;
|
|
3615
3617
|
if (Y.get(e) === cu) l = uf(t), a = a === void 0 ? df(l) : q(a, gu);
|
|
3616
|
-
else if (Y.get(e) === iu && (a === void 0 && (n === "ordinal" || n === tf) && (a = sd(i, o), a !== void 0 && (o = void 0)), o === void 0 && a === void 0 && (o = n === "ordinal" ? "turbo" : "observable10"), o !== void 0))
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3618
|
+
else if (Y.get(e) === iu && (a === void 0 && (n === "ordinal" || n === tf) && (a = sd(i, o), a !== void 0 && (o = void 0)), o === void 0 && a === void 0 && (o = n === "ordinal" ? "turbo" : "observable10"), o !== void 0)) {
|
|
3619
|
+
if (a !== void 0) {
|
|
3620
|
+
let e = ld(o), t = a[0], n = a[1] - a[0];
|
|
3621
|
+
a = ({ length: r }) => xn((r) => e(t + n * r), r);
|
|
3622
|
+
} else a = ad(o);
|
|
3623
|
+
}
|
|
3620
3624
|
if (s === Ie) throw Error(`implicit unknown on ${e} scale is not supported`);
|
|
3621
3625
|
return nf(e, Fe().unknown(s), t, {
|
|
3622
3626
|
...c,
|
|
@@ -4629,17 +4633,19 @@ function dm(e, t, { x: n, y: r, px: i, py: a, maxRadius: o = 40, channels: s, re
|
|
|
4629
4633
|
}
|
|
4630
4634
|
let [x, S] = em(this, a), { px: C, py: w } = i, T = C ? (e) => C[e] : hm(i, x), E = w ? (e) => w[e] : gm(i, S), D, O, k, A;
|
|
4631
4635
|
function ee(e, t) {
|
|
4632
|
-
if (y)
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
A =
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
|
|
4636
|
+
if (y) {
|
|
4637
|
+
if (A &&= cancelAnimationFrame(A), e == null) b.delete(n.fi);
|
|
4638
|
+
else {
|
|
4639
|
+
b.set(n.fi, t), A = requestAnimationFrame(() => {
|
|
4640
|
+
A = null;
|
|
4641
|
+
for (let [r, i] of b) if (i < t || i === t && r < n.fi) {
|
|
4642
|
+
e = null;
|
|
4643
|
+
break;
|
|
4644
|
+
}
|
|
4645
|
+
ne(e);
|
|
4646
|
+
});
|
|
4647
|
+
return;
|
|
4648
|
+
}
|
|
4643
4649
|
}
|
|
4644
4650
|
ne(e);
|
|
4645
4651
|
}
|
|
@@ -6335,10 +6341,12 @@ function __(e, t) {
|
|
|
6335
6341
|
r = v_(r, e, "x"), r = v_(r, e, "y"), this.format = r;
|
|
6336
6342
|
for (let t in r) {
|
|
6337
6343
|
let i = r[t];
|
|
6338
|
-
if (i !== null && i !== !1)
|
|
6339
|
-
|
|
6340
|
-
|
|
6341
|
-
|
|
6344
|
+
if (i !== null && i !== !1) {
|
|
6345
|
+
if (t === "fx" || t === "fy") n[t] = !0;
|
|
6346
|
+
else {
|
|
6347
|
+
let r = Zu(e, t);
|
|
6348
|
+
r && (n[t] = r);
|
|
6349
|
+
}
|
|
6342
6350
|
}
|
|
6343
6351
|
}
|
|
6344
6352
|
for (let t in e) {
|
|
@@ -6593,15 +6601,17 @@ function M_(e) {
|
|
|
6593
6601
|
function N_(e, t, n, r = Gc) {
|
|
6594
6602
|
for (let { channels: i } of t.values()) for (let t in i) {
|
|
6595
6603
|
let a = i[t], { scale: o } = a;
|
|
6596
|
-
if (o != null && r(o))
|
|
6597
|
-
if (
|
|
6598
|
-
|
|
6599
|
-
|
|
6600
|
-
|
|
6601
|
-
|
|
6604
|
+
if (o != null && r(o)) {
|
|
6605
|
+
if (o === "projection") {
|
|
6606
|
+
if (!vp(n)) {
|
|
6607
|
+
let t = n.x?.domain === void 0, r = n.y?.domain === void 0;
|
|
6608
|
+
if (t || r) {
|
|
6609
|
+
let [n, i] = bp(a);
|
|
6610
|
+
t && P_(e, "x", n), r && P_(e, "y", i);
|
|
6611
|
+
}
|
|
6602
6612
|
}
|
|
6603
|
-
}
|
|
6604
|
-
}
|
|
6613
|
+
} else P_(e, o, a);
|
|
6614
|
+
}
|
|
6605
6615
|
}
|
|
6606
6616
|
return e;
|
|
6607
6617
|
}
|
|
@@ -6904,5 +6914,3 @@ function ov(e) {
|
|
|
6904
6914
|
}
|
|
6905
6915
|
//#endregion
|
|
6906
6916
|
export { av as renderObservablePlot };
|
|
6907
|
-
|
|
6908
|
-
//# sourceMappingURL=observablePlot-C7764aFq.js.map
|