@dpuse/dpuse-tool-d3-visualiser 0.0.33 → 0.0.41
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 +660 -201
- package/dist/{band-DbExrcif.js → band-C1twWuW2.js} +3 -2
- package/dist/{band-DbExrcif.js.map → band-C1twWuW2.js.map} +1 -1
- package/dist/{billboardJs-jmaH9Gag.js → billboardJs-DS82ViEw.js} +1081 -1747
- package/dist/billboardJs-DS82ViEw.js.map +1 -0
- package/dist/chordDiagram-Cz0sVVgD.js +2911 -0
- package/dist/chordDiagram-Cz0sVVgD.js.map +1 -0
- package/dist/{d3BarChart-DEzayAyh.js → d3BarChart-DIN2KQsU.js} +7 -6
- package/dist/{d3BarChart-DEzayAyh.js.map → d3BarChart-DIN2KQsU.js.map} +1 -1
- package/dist/dpuse-tool-d3-visualiser.es.js +17 -7
- package/dist/dpuse-tool-d3-visualiser.es.js.map +1 -1
- package/dist/{drag-DLokvdmv.js → drag-DfL4uwqz.js} +25 -24
- package/dist/{drag-DLokvdmv.js.map → drag-DfL4uwqz.js.map} +1 -1
- package/dist/hierarchy-CDFAetye.js +151 -0
- package/dist/hierarchy-CDFAetye.js.map +1 -0
- package/dist/{linear-D3BD7E1p.js → linear-BnhqTvdX.js} +59 -85
- package/dist/linear-BnhqTvdX.js.map +1 -0
- package/dist/{link-DKK0Q0lG.js → link-D-9z7kEr.js} +16 -39
- package/dist/link-D-9z7kEr.js.map +1 -0
- package/dist/math-C5EhTgJw.js +12 -0
- package/dist/math-C5EhTgJw.js.map +1 -0
- package/dist/max-CPVNm4tn.js +14 -0
- package/dist/max-CPVNm4tn.js.map +1 -0
- package/dist/{networkDiagram-HS-SgOZ0.js → networkDiagram-yraPhqxN.js} +28 -28
- package/dist/{networkDiagram-HS-SgOZ0.js.map → networkDiagram-yraPhqxN.js.map} +1 -1
- package/dist/nodrag-Dq2tlBbe.js +51 -0
- package/dist/nodrag-Dq2tlBbe.js.map +1 -0
- package/dist/{observablePlot-B1CSEvcU.js → observablePlot-C7764aFq.js} +2366 -2417
- package/dist/observablePlot-C7764aFq.js.map +1 -0
- package/dist/ordinal-uZdoVxAx.js +30 -0
- package/dist/ordinal-uZdoVxAx.js.map +1 -0
- package/dist/palette-BuTjISrV.js +64 -0
- package/dist/palette-BuTjISrV.js.map +1 -0
- package/dist/{path-Bt1sPr2f.js → path-6kmCrmEz.js} +7 -4
- package/dist/{path-Bt1sPr2f.js.map → path-6kmCrmEz.js.map} +1 -1
- package/dist/point-6cHftmvM.js +27 -0
- package/dist/point-6cHftmvM.js.map +1 -0
- package/dist/pow-BFDPqS3s.js +86 -0
- package/dist/pow-BFDPqS3s.js.map +1 -0
- package/dist/{sankeyDiagram-BXTYCHPV.js → sankeyDiagram-BT2RCRpi.js} +93 -152
- package/dist/sankeyDiagram-BT2RCRpi.js.map +1 -0
- package/dist/{src-Br_t1-IV.js → src-WDualLFV.js} +40 -39
- package/dist/{src-Br_t1-IV.js.map → src-WDualLFV.js.map} +1 -1
- package/dist/{math-Dc0ICuib.js → src-Xlr4CcSw.js} +70 -75
- package/dist/src-Xlr4CcSw.js.map +1 -0
- package/dist/{src-Du_hPZAX.js → src-yL3ZdoR1.js} +235 -282
- package/dist/src-yL3ZdoR1.js.map +1 -0
- package/dist/step-DgCcZZ3W.js +670 -0
- package/dist/step-DgCcZZ3W.js.map +1 -0
- package/dist/{sum-BAZU479z.js → sum-CNP0Xric.js} +4 -15
- package/dist/sum-CNP0Xric.js.map +1 -0
- package/dist/{tanStackCharts-vvQteV9z.js → tanStackCharts-BJAX22lS.js} +164 -151
- package/dist/tanStackCharts-BJAX22lS.js.map +1 -0
- package/dist/treeDiagram-DsHUD8ou.js +130 -0
- package/dist/treeDiagram-DsHUD8ou.js.map +1 -0
- package/dist/types/src/chordDiagram.d.ts +25 -0
- package/dist/types/src/index.d.ts +3 -0
- package/package.json +6 -4
- package/dist/billboardJs-jmaH9Gag.js.map +0 -1
- package/dist/linear-D3BD7E1p.js.map +0 -1
- package/dist/link-DKK0Q0lG.js.map +0 -1
- package/dist/math-Dc0ICuib.js.map +0 -1
- package/dist/observablePlot-B1CSEvcU.js.map +0 -1
- package/dist/sankeyDiagram-BXTYCHPV.js.map +0 -1
- package/dist/src-Du_hPZAX.js.map +0 -1
- package/dist/sum-BAZU479z.js.map +0 -1
- package/dist/tanStackCharts-vvQteV9z.js.map +0 -1
- package/dist/treeDiagram-DemHfVnX.js +0 -277
- package/dist/treeDiagram-DemHfVnX.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { t as r } from "./drag-
|
|
4
|
-
import { t as i } from "./src-
|
|
1
|
+
import { i as e, r as t } from "./src-yL3ZdoR1.js";
|
|
2
|
+
import { t as n } from "./select-BIuoFcZG.js";
|
|
3
|
+
import { t as r } from "./drag-DfL4uwqz.js";
|
|
4
|
+
import { t as i } from "./src-WDualLFV.js";
|
|
5
5
|
//#region node_modules/d3-force/src/center.js
|
|
6
6
|
function a(e, t) {
|
|
7
7
|
var n, r = 1;
|
|
@@ -305,31 +305,31 @@ function R(e) {
|
|
|
305
305
|
return e.y;
|
|
306
306
|
}
|
|
307
307
|
var z = 10, B = Math.PI * (3 - Math.sqrt(5));
|
|
308
|
-
function V(
|
|
309
|
-
var r, i = 1, a = .001, o = 1 - a ** (1 / 300), s = 0, c = .6, l = /* @__PURE__ */ new Map(), u = t(p), d =
|
|
310
|
-
|
|
308
|
+
function V(n) {
|
|
309
|
+
var r, i = 1, a = .001, o = 1 - a ** (1 / 300), s = 0, c = .6, l = /* @__PURE__ */ new Map(), u = t(p), d = e("tick", "end"), f = I();
|
|
310
|
+
n ??= [];
|
|
311
311
|
function p() {
|
|
312
312
|
m(), d.call("tick", r), i < a && (u.stop(), d.call("end", r));
|
|
313
313
|
}
|
|
314
|
-
function m(
|
|
315
|
-
var
|
|
316
|
-
|
|
317
|
-
for (var d = 0; d <
|
|
314
|
+
function m(e) {
|
|
315
|
+
var t, a = n.length, u;
|
|
316
|
+
e === void 0 && (e = 1);
|
|
317
|
+
for (var d = 0; d < e; ++d) for (i += (s - i) * o, l.forEach(function(e) {
|
|
318
318
|
e(i);
|
|
319
|
-
}),
|
|
319
|
+
}), t = 0; t < a; ++t) u = n[t], u.fx == null ? u.x += u.vx *= c : (u.x = u.fx, u.vx = 0), u.fy == null ? u.y += u.vy *= c : (u.y = u.fy, u.vy = 0);
|
|
320
320
|
return r;
|
|
321
321
|
}
|
|
322
322
|
function h() {
|
|
323
|
-
for (var
|
|
324
|
-
if (r = e
|
|
325
|
-
var i = z * Math.sqrt(.5 +
|
|
323
|
+
for (var e = 0, t = n.length, r; e < t; ++e) {
|
|
324
|
+
if (r = n[e], r.index = e, r.fx != null && (r.x = r.fx), r.fy != null && (r.y = r.fy), isNaN(r.x) || isNaN(r.y)) {
|
|
325
|
+
var i = z * Math.sqrt(.5 + e), a = e * B;
|
|
326
326
|
r.x = i * Math.cos(a), r.y = i * Math.sin(a);
|
|
327
327
|
}
|
|
328
328
|
(isNaN(r.vx) || isNaN(r.vy)) && (r.vx = r.vy = 0);
|
|
329
329
|
}
|
|
330
330
|
}
|
|
331
|
-
function g(
|
|
332
|
-
return
|
|
331
|
+
function g(e) {
|
|
332
|
+
return e.initialize && e.initialize(n, f), e;
|
|
333
333
|
}
|
|
334
334
|
return h(), r = {
|
|
335
335
|
tick: m,
|
|
@@ -339,8 +339,8 @@ function V(e) {
|
|
|
339
339
|
stop: function() {
|
|
340
340
|
return u.stop(), r;
|
|
341
341
|
},
|
|
342
|
-
nodes: function(
|
|
343
|
-
return arguments.length ? (
|
|
342
|
+
nodes: function(e) {
|
|
343
|
+
return arguments.length ? (n = e, h(), l.forEach(g), r) : n;
|
|
344
344
|
},
|
|
345
345
|
alpha: function(e) {
|
|
346
346
|
return arguments.length ? (i = +e, r) : i;
|
|
@@ -363,9 +363,9 @@ function V(e) {
|
|
|
363
363
|
force: function(e, t) {
|
|
364
364
|
return arguments.length > 1 ? (t == null ? l.delete(e) : l.set(e, g(t)), r) : l.get(e);
|
|
365
365
|
},
|
|
366
|
-
find: function(
|
|
367
|
-
var i = 0, a =
|
|
368
|
-
for (r == null ? r = Infinity : r *= r, i = 0; i < a; ++i) l =
|
|
366
|
+
find: function(e, t, r) {
|
|
367
|
+
var i = 0, a = n.length, o, s, c, l, u;
|
|
368
|
+
for (r == null ? r = Infinity : r *= r, i = 0; i < a; ++i) l = n[i], o = e - l.x, s = t - l.y, c = o * o + s * s, c < r && (u = l, r = c);
|
|
369
369
|
return u;
|
|
370
370
|
},
|
|
371
371
|
on: function(e, t) {
|
|
@@ -435,13 +435,13 @@ var U = -300, W = 100, G = 640, K = 480, q = 180, J = 20, Y = 22, X = {
|
|
|
435
435
|
nodeStrokeSelected: "#b45309",
|
|
436
436
|
nodeText: "#ffffff"
|
|
437
437
|
};
|
|
438
|
-
function Z(
|
|
439
|
-
let s =
|
|
438
|
+
function Z(e, t, o = {}) {
|
|
439
|
+
let s = t.clientWidth || G, c = t.clientHeight || K, l = e.nodes.map((e) => ({ ...e })), u = e.links.map((e) => ({ ...e })), d = Math.min(s, c) * .22;
|
|
440
440
|
for (let [e, t] of l.entries()) {
|
|
441
441
|
let n = e / l.length * Math.PI * 2;
|
|
442
442
|
t.x = s / 2 + Math.cos(n) * d, t.y = c / 2 + Math.sin(n) * d;
|
|
443
443
|
}
|
|
444
|
-
let f = V(l).force("link", M(u).id((e) => e.id).distance(o.linkDistance ?? W)).force("charge", H().strength(o.chargeStrength ?? U)).force("center", a(s / 2, c / 2)), p =
|
|
444
|
+
let f = V(l).force("link", M(u).id((e) => e.id).distance(o.linkDistance ?? W)).force("charge", H().strength(o.chargeStrength ?? U)).force("center", a(s / 2, c / 2)), p = n(t).append("svg").attr("width", s).attr("height", c).attr("viewBox", `0 0 ${String(s)} ${String(c)}`).style("touch-action", "none"), m = p.append("g"), h = m.selectAll("line").data(u).join("line").attr("stroke", X.linkStroke).attr("stroke-width", 2), g = m.selectAll("g").data(l).join("g").style("cursor", "pointer");
|
|
445
445
|
g.append("circle").attr("r", J).attr("fill", X.nodeFill).attr("stroke", X.nodeStroke).attr("stroke-width", 2), g.append("text").text((e) => e.id).attr("text-anchor", "middle").attr("dy", 4).attr("fill", X.nodeText);
|
|
446
446
|
let _ = null, v = null, y = () => {
|
|
447
447
|
g.selectAll("circle").attr("fill", (e) => e.id === _ ? X.nodeFillSelected : e.id === v ? X.nodeFillHovered : X.nodeFill).attr("stroke", (e) => e.id === _ ? X.nodeStrokeSelected : e.id === v ? X.nodeStrokeHovered : X.nodeStroke).attr("stroke-width", (e) => e.id === _ ? 3 : 2).attr("r", (e) => e.id === _ || e.id === v ? Y : J);
|
|
@@ -476,8 +476,8 @@ function Z(t, n, o = {}) {
|
|
|
476
476
|
f.stop(), p.remove();
|
|
477
477
|
},
|
|
478
478
|
resize: () => {
|
|
479
|
-
let e =
|
|
480
|
-
p.attr("width", e).attr("height",
|
|
479
|
+
let e = t.clientWidth || G, n = t.clientHeight || K;
|
|
480
|
+
p.attr("width", e).attr("height", n).attr("viewBox", `0 0 ${String(e)} ${String(n)}`), f.force("center", a(e / 2, n / 2));
|
|
481
481
|
},
|
|
482
482
|
svg: C,
|
|
483
483
|
triggerAutoLayout: () => {
|
|
@@ -490,4 +490,4 @@ function Z(t, n, o = {}) {
|
|
|
490
490
|
//#endregion
|
|
491
491
|
export { Z as renderNetworkDiagram };
|
|
492
492
|
|
|
493
|
-
//# sourceMappingURL=networkDiagram-
|
|
493
|
+
//# sourceMappingURL=networkDiagram-yraPhqxN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkDiagram-HS-SgOZ0.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-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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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { t as e } from "./select-BIuoFcZG.js";
|
|
2
|
+
//#region node_modules/d3-selection/src/sourceEvent.js
|
|
3
|
+
function t(e) {
|
|
4
|
+
let t;
|
|
5
|
+
for (; t = e.sourceEvent;) e = t;
|
|
6
|
+
return e;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region node_modules/d3-selection/src/pointer.js
|
|
10
|
+
function n(e, n) {
|
|
11
|
+
if (e = t(e), n === void 0 && (n = e.currentTarget), n) {
|
|
12
|
+
var r = n.ownerSVGElement || n;
|
|
13
|
+
if (r.createSVGPoint) {
|
|
14
|
+
var i = r.createSVGPoint();
|
|
15
|
+
return i.x = e.clientX, i.y = e.clientY, i = i.matrixTransform(n.getScreenCTM().inverse()), [i.x, i.y];
|
|
16
|
+
}
|
|
17
|
+
if (n.getBoundingClientRect) {
|
|
18
|
+
var a = n.getBoundingClientRect();
|
|
19
|
+
return [e.clientX - a.left - n.clientLeft, e.clientY - a.top - n.clientTop];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return [e.pageX, e.pageY];
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region node_modules/d3-drag/src/noevent.js
|
|
26
|
+
var r = { passive: !1 }, i = {
|
|
27
|
+
capture: !0,
|
|
28
|
+
passive: !1
|
|
29
|
+
};
|
|
30
|
+
function a(e) {
|
|
31
|
+
e.stopImmediatePropagation();
|
|
32
|
+
}
|
|
33
|
+
function o(e) {
|
|
34
|
+
e.preventDefault(), e.stopImmediatePropagation();
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region node_modules/d3-drag/src/nodrag.js
|
|
38
|
+
function s(t) {
|
|
39
|
+
var n = t.document.documentElement, r = e(t).on("dragstart.drag", o, i);
|
|
40
|
+
"onselectstart" in n ? r.on("selectstart.drag", o, i) : (n.__noselect = n.style.MozUserSelect, n.style.MozUserSelect = "none");
|
|
41
|
+
}
|
|
42
|
+
function c(t, n) {
|
|
43
|
+
var r = t.document.documentElement, a = e(t).on("dragstart.drag", null);
|
|
44
|
+
n && (a.on("click.drag", o, i), setTimeout(function() {
|
|
45
|
+
a.on("click.drag", null);
|
|
46
|
+
}, 0)), "onselectstart" in r ? a.on("selectstart.drag", null) : (r.style.MozUserSelect = r.__noselect, delete r.__noselect);
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { i as a, r as i, c as n, a as o, o as r, n as s, s as t };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=nodrag-Dq2tlBbe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodrag-Dq2tlBbe.js","names":["sourceEvent","select","noevent"],"sources":["../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/pointer.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js"],"sourcesContent":["export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":";;AAAA,SAAA,EAAwB,GAAO;CAC7B,IAAI;CACJ,OAAO,IAAc,EAAM,cAAa,IAAQ;CAChD,OAAO;AACT;;;ACFA,SAAA,EAAwB,GAAO,GAAM;CAGnC,IAFA,IAAQA,EAAY,CAAK,GACrB,MAAS,KAAA,MAAW,IAAO,EAAM,gBACjC,GAAM;EACR,IAAI,IAAM,EAAK,mBAAmB;EAClC,IAAI,EAAI,gBAAgB;GACtB,IAAI,IAAQ,EAAI,eAAe;GAG/B,OAFA,EAAM,IAAI,EAAM,SAAS,EAAM,IAAI,EAAM,SACzC,IAAQ,EAAM,gBAAgB,EAAK,aAAa,CAAC,CAAC,QAAQ,CAAC,GACpD,CAAC,EAAM,GAAG,EAAM,CAAC;EAC1B;EACA,IAAI,EAAK,uBAAuB;GAC9B,IAAI,IAAO,EAAK,sBAAsB;GACtC,OAAO,CAAC,EAAM,UAAU,EAAK,OAAO,EAAK,YAAY,EAAM,UAAU,EAAK,MAAM,EAAK,SAAS;EAChG;CACF;CACA,OAAO,CAAC,EAAM,OAAO,EAAM,KAAK;AAClC;;;ACjBA,IAAa,IAAa,EAAC,SAAS,GAAK,GAC5B,IAAoB;CAAC,SAAS;CAAM,SAAS;AAAK;AAE/D,SAAgB,EAAc,GAAO;CACnC,EAAM,yBAAyB;AACjC;AAEA,SAAA,EAAwB,GAAO;CAE7B,AADA,EAAM,eAAe,GACrB,EAAM,yBAAyB;AACjC;;;ACTA,SAAA,EAAwB,GAAM;CAC5B,IAAI,IAAO,EAAK,SAAS,iBACrB,IAAYC,EAAO,CAAI,CAAC,CAAC,GAAG,kBAAkBC,GAAS,CAAiB;CAC5E,AAAI,mBAAmB,IACrB,EAAU,GAAG,oBAAoBA,GAAS,CAAiB,KAE3D,EAAK,aAAa,EAAK,MAAM,eAC7B,EAAK,MAAM,gBAAgB;AAE/B;AAEA,SAAgB,EAAQ,GAAM,GAAS;CACrC,IAAI,IAAO,EAAK,SAAS,iBACrB,IAAYD,EAAO,CAAI,CAAC,CAAC,GAAG,kBAAkB,IAAI;CAKtD,AAJI,MACF,EAAU,GAAG,cAAcC,GAAS,CAAiB,GACrD,WAAW,WAAW;EAAE,EAAU,GAAG,cAAc,IAAI;CAAG,GAAG,CAAC,IAE5D,mBAAmB,IACrB,EAAU,GAAG,oBAAoB,IAAI,KAErC,EAAK,MAAM,gBAAgB,EAAK,YAChC,OAAO,EAAK;AAEhB"}
|