@graphty/graphty-element 2.2.4 → 2.3.0

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.
Files changed (29) hide show
  1. package/dist/ai.js +3 -3
  2. package/dist/catalog.js +5 -5
  3. package/dist/chunks/{AiManager-DC3JWPeM.js → AiManager-Bd_r1Hei.js} +7 -2
  4. package/dist/chunks/{DataSource-DEg3igzS.js → DataSource-bt0DhBjG.js} +3 -3
  5. package/dist/chunks/{GraphSession-DDrQWABb.js → GraphSession-iNyKm7Ds.js} +3308 -3284
  6. package/dist/chunks/{VoiceInputAdapter-BueUG885.js → VoiceInputAdapter-DszYl6Ha.js} +442 -424
  7. package/dist/chunks/{XRPivotCameraController-DENGN2uV.js → XRPivotCameraController-XtxbbZ-D.js} +1 -1
  8. package/dist/chunks/{capability-check-BC3Qn6fS.js → capability-check-BqIEXcun.js} +1 -1
  9. package/dist/chunks/{detect-CqN0mC6u.js → detect-DM29BEaB.js} +1 -1
  10. package/dist/chunks/{format-detection-C8vbCSlS.js → format-detection-BEdmtvsy.js} +1 -1
  11. package/dist/chunks/{index-COss7yTG.js → index-CD0_RJv-.js} +1001 -848
  12. package/dist/chunks/{paletteRegistry-NrWOKT-A.js → paletteRegistry-DnWHQsAD.js} +162 -160
  13. package/dist/chunks/{scales-DKsbJE2L.js → scales-DyuwlJKI.js} +237 -236
  14. package/dist/extend.js +3 -3
  15. package/dist/graphty-catalog.json +1 -1
  16. package/dist/graphty.bundle.js +22378 -22178
  17. package/dist/graphty.js +3 -3
  18. package/dist/session.js +37 -52
  19. package/dist/src/Graph.d.ts +3 -0
  20. package/dist/src/acceleration/AccelerationController.d.ts +11 -0
  21. package/dist/src/ai/input/VoiceInputAdapter.d.ts +18 -0
  22. package/dist/src/algorithms/metrics/context.d.ts +7 -5
  23. package/dist/src/algorithms/results/types.d.ts +17 -1
  24. package/dist/src/data/ingest.d.ts +13 -0
  25. package/dist/src/managers/DataManager.d.ts +51 -0
  26. package/dist/src/managers/RenderManager.d.ts +21 -0
  27. package/dist/src/managers/UpdateManager.d.ts +38 -23
  28. package/dist/src/session/limits.d.ts +24 -5
  29. package/package.json +4 -4
@@ -2,22 +2,22 @@ import { z as a } from "zod/v4";
2
2
  import { bellmanFord as ia, betweennessCentrality as sa, breadthFirstSearch as oa, bipartitePartition as ra, maximumBipartiteMatching as ca, closenessCentrality as la, depthFirstSearch as da, eigenvectorCentrality as ha, ConvergenceError as ua, floydWarshall as ma, girvanNewman as pa, hits as ga, katzCentrality as fa, labelPropagation as ya, leiden as ba, louvain as va, Graph as Jt, fordFulkerson as wa, kargerMinCut as Na, stoerWagner as Sa, minSTCut as xa, pageRank as ka, primMST as Oa, stronglyConnectedComponents as Ma } from "@graphty/algorithms";
3
3
  import { A as k, C as zt, n as Da } from "./Algorithm-RQ629NLb.js";
4
4
  import { G as De } from "./GraphtyError-BwcnblTH.js";
5
- import { D as C, i as S, P as Qt, h as D, V as Ia, W as za, n as H, L as Gt, s as Dt, g as de, m as Ce, j as Rt, o as Ee, b as F, S as P, a as Tt, X as Ca, Y as Ea, Z as ea, _ as Ra, p as ta } from "./paletteRegistry-NrWOKT-A.js";
5
+ import { D as C, i as S, P as Qt, h as D, Y as Ia, V as za, W as Ca, n as H, L as Gt, s as Dt, g as de, m as Ce, j as Rt, o as Ee, b as F, S as P, a as Tt, X as Ea, Z as Ra, _ as ea, $ as Ta, p as ta } from "./paletteRegistry-DnWHQsAD.js";
6
6
  import { INVALID_INDEX as K, makeMask as $t, maskSet as Ct } from "@graphty/graph-format";
7
- import { arfLayout as Ta, bfsLayout as Fa, bipartiteLayout as Pa, circularLayout as Wa, createSimulation as La, seedPositions as Ga, resolveNodeVector as $a, kamadaKawaiLayout as Ka, multipartiteLayout as Ua, planarLayout as qa, randomLayout as Ha, shellLayout as ja, spectralLayout as Ba, spiralLayout as Va } from "@graphty/layout";
8
- import { forceLink as Aa, forceSimulation as _a, forceManyBody as Ya, forceCenter as Za } from "d3-force-3d";
9
- import Xa from "ngraph.forcelayout";
10
- import Ja from "ngraph.graph";
11
- import { h as Qa } from "./cameras-ii4vngYY.js";
12
- import { V as en, Y as tn, g as an, I as nn, B as sn, G as on, d as rn, O as Kt, i as Ut, T as qt, P as Ht, C as jt, h as cn, b as ln, R as dn, a as Bt, c as Vt, e as At } from "./sequential-Zym81qm7.js";
13
- function hn(r) {
7
+ import { arfLayout as Fa, bfsLayout as Pa, bipartiteLayout as Wa, circularLayout as La, createSimulation as Ga, seedPositions as $a, resolveNodeVector as Ka, kamadaKawaiLayout as Ua, multipartiteLayout as qa, planarLayout as Ha, randomLayout as ja, shellLayout as Ba, spectralLayout as Va, spiralLayout as Aa } from "@graphty/layout";
8
+ import { forceLink as _a, forceSimulation as Ya, forceManyBody as Za, forceCenter as Xa } from "d3-force-3d";
9
+ import Ja from "ngraph.forcelayout";
10
+ import Qa from "ngraph.graph";
11
+ import { h as en } from "./cameras-ii4vngYY.js";
12
+ import { V as tn, Y as an, g as nn, I as sn, B as on, G as rn, d as cn, O as Kt, i as Ut, T as qt, P as Ht, C as jt, h as ln, b as dn, R as hn, a as Bt, c as Vt, e as At } from "./sequential-Zym81qm7.js";
13
+ function un(r) {
14
14
  const e = {};
15
15
  for (const [t, n] of Object.entries(r))
16
16
  e[t] = n.schema;
17
17
  return a.object(e);
18
18
  }
19
- function un(r, e) {
20
- return hn(r).parse(e);
19
+ function mn(r, e) {
20
+ return un(r).parse(e);
21
21
  }
22
22
  function R(r, e) {
23
23
  return `${String(r)}:${String(e)}`;
@@ -33,7 +33,7 @@ function Re(r, e, t, n) {
33
33
  });
34
34
  return i;
35
35
  }
36
- const mn = {
36
+ const pn = {
37
37
  source: {
38
38
  schema: a.union([a.string(), a.number()]).nullable().default(null),
39
39
  meta: {
@@ -143,7 +143,7 @@ const mn = {
143
143
  return t;
144
144
  }
145
145
  };
146
- A.namespace = "graphty", A.type = "bellman-ford", A.zodOptionsSchema = mn, A.optionsSchema = {
146
+ A.namespace = "graphty", A.type = "bellman-ford", A.zodOptionsSchema = pn, A.optionsSchema = {
147
147
  source: {
148
148
  type: "nodeId",
149
149
  default: null,
@@ -161,8 +161,8 @@ A.namespace = "graphty", A.type = "bellman-ford", A.zodOptionsSchema = mn, A.opt
161
161
  };
162
162
  let Te = A;
163
163
  k.register(Te);
164
- const pn = 2048;
165
- function gn(r) {
164
+ const gn = 2048;
165
+ function fn(r) {
166
166
  return {
167
167
  runId: r,
168
168
  signal: new AbortController().signal,
@@ -175,8 +175,9 @@ function gn(r) {
175
175
  }
176
176
  async function U(r, e, t, n) {
177
177
  const i = r.length;
178
- for (let s = 0; s < i; s++)
179
- e.signal.throwIfAborted(), n(r[s], s), (s + 1) % pn === 0 && s + 1 < i && (e.report({ phase: t, completed: s + 1, total: i }), await e.yieldNow());
178
+ let s = performance.now();
179
+ for (let l = 0; l < i; l++)
180
+ e.signal.throwIfAborted(), n(r[l], l), (l + 1) % gn === 0 && l + 1 < i && (e.report({ phase: t, completed: l + 1, total: i }), performance.now() - s >= Ia && (await e.yieldNow(), s = performance.now()));
180
181
  e.report({ phase: t, completed: i, total: i });
181
182
  }
182
183
  class j extends k {
@@ -199,7 +200,7 @@ class j extends k {
199
200
  * @returns A promise that settles once the result has been published.
200
201
  */
201
202
  async run() {
202
- await this.measureRun(gn(this.type));
203
+ await this.measureRun(fn(this.type));
203
204
  }
204
205
  /**
205
206
  * Measure the graph on behalf of a run, and hand the result back.
@@ -226,7 +227,7 @@ class j extends k {
226
227
  const t = this.graph.getDataManager(), n = Array.from(t.nodes.keys());
227
228
  if (n.length === 0)
228
229
  return;
229
- const i = Date.now(), s = await this.measure(e, n), l = Ia(this.graph), c = za({
230
+ const i = Date.now(), s = await this.measure(e, n), l = za(this.graph), c = Ca({
230
231
  ...l === void 0 ? {} : { labelOf: l },
231
232
  runId: e.runId,
232
233
  shape: "node-metric",
@@ -243,7 +244,7 @@ class j extends k {
243
244
  return this.#h = c, c;
244
245
  }
245
246
  }
246
- const fn = H({
247
+ const yn = H({
247
248
  plainName: "Bridging",
248
249
  technicalName: "betweenness"
249
250
  }), vt = class vt extends j {
@@ -252,7 +253,7 @@ const fn = H({
252
253
  * @returns The uniform node-metric fields.
253
254
  */
254
255
  resultFields() {
255
- return fn;
256
+ return yn;
256
257
  }
257
258
  /**
258
259
  * Score every node by the shortest paths that run through it.
@@ -296,7 +297,7 @@ const fn = H({
296
297
  vt.namespace = "graphty", vt.type = "betweenness";
297
298
  let Fe = vt;
298
299
  k.register(Fe);
299
- const yn = {
300
+ const bn = {
300
301
  source: {
301
302
  schema: a.union([a.string(), a.number()]).nullable().default(null),
302
303
  meta: {
@@ -414,7 +415,7 @@ const yn = {
414
415
  };
415
416
  }
416
417
  };
417
- _.namespace = "graphty", _.type = "bfs", _.zodOptionsSchema = yn, _.optionsSchema = {
418
+ _.namespace = "graphty", _.type = "bfs", _.zodOptionsSchema = bn, _.optionsSchema = {
418
419
  source: {
419
420
  type: "nodeId",
420
421
  default: null,
@@ -506,7 +507,7 @@ const wt = class wt extends C {
506
507
  wt.namespace = "graphty", wt.type = "bipartite-matching";
507
508
  let We = wt;
508
509
  k.register(We);
509
- const bn = H({
510
+ const vn = H({
510
511
  plainName: "Reach",
511
512
  technicalName: "closeness"
512
513
  }), Nt = class Nt extends j {
@@ -515,7 +516,7 @@ const bn = H({
515
516
  * @returns The uniform node-metric fields.
516
517
  */
517
518
  resultFields() {
518
- return bn;
519
+ return vn;
519
520
  }
520
521
  /**
521
522
  * Score every node by how short its paths to the rest of the graph are.
@@ -596,7 +597,7 @@ const St = class St extends C {
596
597
  St.namespace = "graphty", St.type = "connected-components";
597
598
  let Ge = St;
598
599
  k.register(Ge);
599
- const vn = [
600
+ const wn = [
600
601
  ...H({ plainName: "Connections", technicalName: "degree", type: "integer", unit: "links" }),
601
602
  Ce({
602
603
  name: "inDegree",
@@ -618,7 +619,7 @@ const vn = [
618
619
  * @returns The uniform node-metric fields, plus `inDegree` and `outDegree`.
619
620
  */
620
621
  resultFields() {
621
- return vn;
622
+ return wn;
622
623
  }
623
624
  /**
624
625
  * Count every node's edges.
@@ -649,7 +650,7 @@ const vn = [
649
650
  xt.namespace = "graphty", xt.type = "degree";
650
651
  let $e = xt;
651
652
  k.register($e);
652
- const wn = {
653
+ const Nn = {
653
654
  source: {
654
655
  schema: a.union([a.string(), a.number()]).nullable().default(null),
655
656
  meta: {
@@ -737,7 +738,7 @@ const wn = {
737
738
  };
738
739
  }
739
740
  };
740
- Y.namespace = "graphty", Y.type = "dfs", Y.zodOptionsSchema = wn, Y.optionsSchema = {
741
+ Y.namespace = "graphty", Y.type = "dfs", Y.zodOptionsSchema = Nn, Y.optionsSchema = {
741
742
  source: {
742
743
  type: "nodeId",
743
744
  default: null,
@@ -770,7 +771,7 @@ Y.namespace = "graphty", Y.type = "dfs", Y.zodOptionsSchema = wn, Y.optionsSchem
770
771
  };
771
772
  let Ke = Y;
772
773
  k.register(Ke);
773
- const Nn = {
774
+ const Sn = {
774
775
  source: {
775
776
  schema: a.union([a.string(), a.number()]).nullable().default(null),
776
777
  meta: {
@@ -865,7 +866,7 @@ const Nn = {
865
866
  };
866
867
  }
867
868
  };
868
- Z.namespace = "graphty", Z.type = "dijkstra", Z.zodOptionsSchema = Nn, Z.optionsSchema = {
869
+ Z.namespace = "graphty", Z.type = "dijkstra", Z.zodOptionsSchema = Sn, Z.optionsSchema = {
869
870
  source: {
870
871
  type: "nodeId",
871
872
  default: null,
@@ -890,7 +891,7 @@ Z.namespace = "graphty", Z.type = "dijkstra", Z.zodOptionsSchema = Nn, Z.options
890
891
  };
891
892
  let Ue = Z;
892
893
  k.register(Ue);
893
- const Sn = {
894
+ const xn = {
894
895
  maxIterations: {
895
896
  schema: a.number().int().min(1).max(1e4).default(1e3),
896
897
  meta: {
@@ -931,7 +932,7 @@ const Sn = {
931
932
  advanced: !0
932
933
  }
933
934
  }
934
- }, xn = H({
935
+ }, kn = H({
935
936
  plainName: "Influence by association",
936
937
  technicalName: "eigenvector score"
937
938
  }), $ = class $ extends j {
@@ -940,7 +941,7 @@ const Sn = {
940
941
  * @returns The uniform node-metric fields.
941
942
  */
942
943
  resultFields() {
943
- return xn;
944
+ return kn;
944
945
  }
945
946
  /**
946
947
  * Score every node by the influence of its neighbours.
@@ -1006,7 +1007,7 @@ const Sn = {
1006
1007
  };
1007
1008
  }
1008
1009
  };
1009
- $.namespace = "graphty", $.type = "eigenvector", $.zodOptionsSchema = Sn, $.optionsSchema = {
1010
+ $.namespace = "graphty", $.type = "eigenvector", $.zodOptionsSchema = xn, $.optionsSchema = {
1010
1011
  maxIterations: {
1011
1012
  type: "integer",
1012
1013
  default: 1e3,
@@ -1123,7 +1124,7 @@ const kt = class kt extends C {
1123
1124
  kt.namespace = "graphty", kt.type = "floyd-warshall";
1124
1125
  let He = kt;
1125
1126
  k.register(He);
1126
- const kn = {
1127
+ const On = {
1127
1128
  maxCommunities: {
1128
1129
  schema: a.number().int().min(0).max(100).default(0),
1129
1130
  meta: {
@@ -1194,7 +1195,7 @@ const kn = {
1194
1195
  };
1195
1196
  }
1196
1197
  };
1197
- X.namespace = "graphty", X.type = "girvan-newman", X.zodOptionsSchema = kn, X.optionsSchema = {
1198
+ X.namespace = "graphty", X.type = "girvan-newman", X.zodOptionsSchema = On, X.optionsSchema = {
1198
1199
  maxCommunities: {
1199
1200
  type: "integer",
1200
1201
  default: 0,
@@ -1224,7 +1225,7 @@ X.namespace = "graphty", X.type = "girvan-newman", X.zodOptionsSchema = kn, X.op
1224
1225
  };
1225
1226
  let je = X;
1226
1227
  k.register(je);
1227
- const On = {
1228
+ const Mn = {
1228
1229
  maxIterations: {
1229
1230
  schema: a.number().int().min(1).max(1e3).default(100),
1230
1231
  meta: {
@@ -1265,7 +1266,7 @@ const On = {
1265
1266
  advanced: !0
1266
1267
  }
1267
1268
  }
1268
- }, Mn = [
1269
+ }, Dn = [
1269
1270
  ...H({ plainName: "Hub and authority", technicalName: "combined HITS score" }),
1270
1271
  Ce({ name: "hub", plainName: "Hub", technicalName: "hub score", kind: "node", type: "number" }),
1271
1272
  Ce({
@@ -1281,7 +1282,7 @@ const On = {
1281
1282
  * @returns The uniform node-metric fields, plus `hub` and `authority`.
1282
1283
  */
1283
1284
  resultFields() {
1284
- return Mn;
1285
+ return Dn;
1285
1286
  }
1286
1287
  /**
1287
1288
  * Score every node as a hub and as an authority.
@@ -1337,7 +1338,7 @@ const On = {
1337
1338
  };
1338
1339
  }
1339
1340
  };
1340
- J.namespace = "graphty", J.type = "hits", J.zodOptionsSchema = On, J.optionsSchema = {
1341
+ J.namespace = "graphty", J.type = "hits", J.zodOptionsSchema = Mn, J.optionsSchema = {
1341
1342
  maxIterations: {
1342
1343
  type: "integer",
1343
1344
  default: 100,
@@ -1385,7 +1386,7 @@ J.namespace = "graphty", J.type = "hits", J.zodOptionsSchema = On, J.optionsSche
1385
1386
  };
1386
1387
  let Be = J;
1387
1388
  k.register(Be);
1388
- const Dn = {
1389
+ const In = {
1389
1390
  alpha: {
1390
1391
  schema: a.number().min(0.01).max(0.5).default(0.1),
1391
1392
  meta: {
@@ -1443,7 +1444,7 @@ const Dn = {
1443
1444
  advanced: !0
1444
1445
  }
1445
1446
  }
1446
- }, In = H({
1447
+ }, zn = H({
1447
1448
  plainName: "Influence at a distance",
1448
1449
  technicalName: "Katz score"
1449
1450
  }), Q = class Q extends j {
@@ -1452,7 +1453,7 @@ const Dn = {
1452
1453
  * @returns The uniform node-metric fields.
1453
1454
  */
1454
1455
  resultFields() {
1455
- return In;
1456
+ return zn;
1456
1457
  }
1457
1458
  /**
1458
1459
  * Score every node by the paths that reach it.
@@ -1505,7 +1506,7 @@ const Dn = {
1505
1506
  };
1506
1507
  }
1507
1508
  };
1508
- Q.namespace = "graphty", Q.type = "katz", Q.zodOptionsSchema = Dn, Q.optionsSchema = {
1509
+ Q.namespace = "graphty", Q.type = "katz", Q.zodOptionsSchema = In, Q.optionsSchema = {
1509
1510
  alpha: {
1510
1511
  type: "number",
1511
1512
  default: 0.1,
@@ -1610,7 +1611,7 @@ const Ot = class Ot extends C {
1610
1611
  Ot.namespace = "graphty", Ot.type = "kruskal";
1611
1612
  let Ae = Ot;
1612
1613
  k.register(Ae);
1613
- const zn = {
1614
+ const Cn = {
1614
1615
  maxIterations: {
1615
1616
  schema: a.number().int().min(1).max(500).default(100),
1616
1617
  meta: {
@@ -1665,7 +1666,7 @@ const zn = {
1665
1666
  };
1666
1667
  }
1667
1668
  };
1668
- ee.namespace = "graphty", ee.type = "label-propagation", ee.zodOptionsSchema = zn, ee.optionsSchema = {
1669
+ ee.namespace = "graphty", ee.type = "label-propagation", ee.zodOptionsSchema = Cn, ee.optionsSchema = {
1669
1670
  maxIterations: {
1670
1671
  type: "integer",
1671
1672
  default: 100,
@@ -1686,7 +1687,7 @@ ee.namespace = "graphty", ee.type = "label-propagation", ee.zodOptionsSchema = z
1686
1687
  };
1687
1688
  let _e = ee;
1688
1689
  k.register(_e);
1689
- const Cn = {
1690
+ const En = {
1690
1691
  resolution: {
1691
1692
  schema: a.number().min(0.1).max(5).default(1),
1692
1693
  meta: {
@@ -1758,7 +1759,7 @@ const Cn = {
1758
1759
  };
1759
1760
  }
1760
1761
  };
1761
- te.namespace = "graphty", te.type = "leiden", te.zodOptionsSchema = Cn, te.optionsSchema = {
1762
+ te.namespace = "graphty", te.type = "leiden", te.zodOptionsSchema = En, te.optionsSchema = {
1762
1763
  resolution: {
1763
1764
  type: "number",
1764
1765
  default: 1,
@@ -1798,7 +1799,7 @@ te.namespace = "graphty", te.type = "leiden", te.zodOptionsSchema = Cn, te.optio
1798
1799
  };
1799
1800
  let Ye = te;
1800
1801
  k.register(Ye);
1801
- const En = {
1802
+ const Rn = {
1802
1803
  resolution: {
1803
1804
  schema: a.number().min(0.1).max(5).default(1),
1804
1805
  meta: {
@@ -1873,7 +1874,7 @@ const En = {
1873
1874
  };
1874
1875
  }
1875
1876
  };
1876
- ae.namespace = "graphty", ae.type = "louvain", ae.zodOptionsSchema = En, ae.optionsSchema = {
1877
+ ae.namespace = "graphty", ae.type = "louvain", ae.zodOptionsSchema = Rn, ae.optionsSchema = {
1877
1878
  resolution: {
1878
1879
  type: "number",
1879
1880
  default: 1,
@@ -1911,7 +1912,7 @@ ae.namespace = "graphty", ae.type = "louvain", ae.zodOptionsSchema = En, ae.opti
1911
1912
  };
1912
1913
  let Ze = ae;
1913
1914
  k.register(Ze);
1914
- const Rn = {
1915
+ const Tn = {
1915
1916
  source: {
1916
1917
  schema: a.union([a.string(), a.number()]).nullable().default(null),
1917
1918
  meta: {
@@ -2005,7 +2006,7 @@ const Rn = {
2005
2006
  };
2006
2007
  }
2007
2008
  };
2008
- ne.namespace = "graphty", ne.type = "max-flow", ne.zodOptionsSchema = Rn, ne.optionsSchema = {
2009
+ ne.namespace = "graphty", ne.type = "max-flow", ne.zodOptionsSchema = Tn, ne.optionsSchema = {
2009
2010
  source: {
2010
2011
  type: "nodeId",
2011
2012
  default: null,
@@ -2023,7 +2024,7 @@ ne.namespace = "graphty", ne.type = "max-flow", ne.zodOptionsSchema = Rn, ne.opt
2023
2024
  };
2024
2025
  let Xe = ne;
2025
2026
  k.register(Xe);
2026
- const Tn = {
2027
+ const Fn = {
2027
2028
  source: {
2028
2029
  schema: a.union([a.string(), a.number()]).nullable().default(null),
2029
2030
  meta: {
@@ -2147,7 +2148,7 @@ const Tn = {
2147
2148
  };
2148
2149
  }
2149
2150
  };
2150
- ie.namespace = "graphty", ie.type = "min-cut", ie.zodOptionsSchema = Tn, ie.optionsSchema = {
2151
+ ie.namespace = "graphty", ie.type = "min-cut", ie.zodOptionsSchema = Fn, ie.optionsSchema = {
2151
2152
  source: {
2152
2153
  type: "nodeId",
2153
2154
  default: null,
@@ -2229,11 +2230,11 @@ const _t = {
2229
2230
  advanced: !0
2230
2231
  }
2231
2232
  }
2232
- }, Fn = H({
2233
+ }, Pn = H({
2233
2234
  plainName: "Influence",
2234
2235
  technicalName: "PageRank score"
2235
- }), Pn = 100;
2236
- function Wn(r) {
2236
+ }), Wn = 100;
2237
+ function Ln(r) {
2237
2238
  return r.hasPersonalization ? "a personalization vector was given, and only the reference implementation takes one" : r.hasInitialRanks ? "initial ranks were given, and only the reference implementation takes them" : r.directed ? null : "the graph is undirected, and rank flows along out-edges";
2238
2239
  }
2239
2240
  const se = class se extends j {
@@ -2243,7 +2244,7 @@ const se = class se extends j {
2243
2244
  * @param options - Optional configuration options
2244
2245
  */
2245
2246
  constructor(e, t) {
2246
- super(e, t), this.zodOptions = un(_t, t ?? {}), this.programmaticOptions = {
2247
+ super(e, t), this.zodOptions = mn(_t, t ?? {}), this.programmaticOptions = {
2247
2248
  initialRanks: t?.initialRanks ?? null,
2248
2249
  personalization: t?.personalization ?? null
2249
2250
  };
@@ -2253,7 +2254,7 @@ const se = class se extends j {
2253
2254
  * @returns The uniform node-metric fields.
2254
2255
  */
2255
2256
  resultFields() {
2256
- return Fn;
2257
+ return Pn;
2257
2258
  }
2258
2259
  /**
2259
2260
  * Rank every node by the influence flowing into it.
@@ -2262,7 +2263,7 @@ const se = class se extends j {
2262
2263
  * @returns One raw rank per node, unscaled.
2263
2264
  */
2264
2265
  async measure(e, t) {
2265
- const { dampingFactor: n, maxIterations: i, tolerance: s, weight: l, useDelta: c } = this.zodOptions, o = this.programmaticOptions.initialRanks ?? void 0, d = this.programmaticOptions.personalization ?? void 0, h = Wn({
2266
+ const { dampingFactor: n, maxIterations: i, tolerance: s, weight: l, useDelta: c } = this.zodOptions, o = this.programmaticOptions.initialRanks ?? void 0, d = this.programmaticOptions.personalization ?? void 0, h = Ln({
2266
2267
  directed: this.graph.getDataManager().getSnapshot().directed,
2267
2268
  hasInitialRanks: o !== void 0,
2268
2269
  hasPersonalization: d !== void 0
@@ -2312,7 +2313,7 @@ const se = class se extends j {
2312
2313
  }
2313
2314
  };
2314
2315
  }
2315
- const u = this.algorithmGraph("directed"), p = c && u.nodeCount > Pn;
2316
+ const u = this.algorithmGraph("directed"), p = c && u.nodeCount > Wn;
2316
2317
  e.report({
2317
2318
  phase: "iterating",
2318
2319
  completed: 0,
@@ -2405,7 +2406,7 @@ se.namespace = "graphty", se.type = "pagerank", se.zodOptionsSchema = _t, se.opt
2405
2406
  };
2406
2407
  let Qe = se;
2407
2408
  k.register(Qe);
2408
- const Ln = {
2409
+ const Gn = {
2409
2410
  startNode: {
2410
2411
  schema: a.union([a.string(), a.number()]).nullable().default(null),
2411
2412
  meta: {
@@ -2462,7 +2463,7 @@ const Ln = {
2462
2463
  };
2463
2464
  }
2464
2465
  };
2465
- oe.namespace = "graphty", oe.type = "prim", oe.zodOptionsSchema = Ln, oe.optionsSchema = {
2466
+ oe.namespace = "graphty", oe.type = "prim", oe.zodOptionsSchema = Gn, oe.optionsSchema = {
2466
2467
  startNode: {
2467
2468
  type: "nodeId",
2468
2469
  default: null,
@@ -2512,9 +2513,9 @@ const Mt = class Mt extends C {
2512
2513
  Mt.namespace = "graphty", Mt.type = "scc";
2513
2514
  let tt = Mt;
2514
2515
  k.register(tt);
2515
- const Gn = "results.$";
2516
+ const $n = "results.$";
2516
2517
  function f(r) {
2517
- return { ...r, path: `${Gn}.${r.name}` };
2518
+ return { ...r, path: `${$n}.${r.name}` };
2518
2519
  }
2519
2520
  function W(r, e) {
2520
2521
  return [
@@ -2601,7 +2602,7 @@ function Yt(...r) {
2601
2602
  t.has(i.name) || (t.add(i.name), e.push(i));
2602
2603
  return e;
2603
2604
  }
2604
- const $n = {
2605
+ const Kn = {
2605
2606
  method: {
2606
2607
  schema: a.enum(["dijkstra", "bellman-ford"]).nullable().default(null),
2607
2608
  meta: {
@@ -2611,7 +2612,7 @@ const $n = {
2611
2612
  group: "engine"
2612
2613
  }
2613
2614
  }
2614
- }, Kn = {
2615
+ }, Un = {
2615
2616
  strength: {
2616
2617
  schema: a.enum(["weak", "strong"]).default("weak"),
2617
2618
  meta: {
@@ -2800,7 +2801,7 @@ const $n = {
2800
2801
  options: Yt(
2801
2802
  O(Ge),
2802
2803
  O(tt),
2803
- Ee(Kn)
2804
+ Ee(Un)
2804
2805
  ),
2805
2806
  costClass: "instant",
2806
2807
  complexity: "O(n + m)",
@@ -2832,7 +2833,7 @@ const $n = {
2832
2833
  options: Yt(
2833
2834
  O(Ue),
2834
2835
  O(Te),
2835
- Ee($n)
2836
+ Ee(Kn)
2836
2837
  ),
2837
2838
  costClass: "instant",
2838
2839
  complexity: "O((n + m) log n) with dijkstra, O(n * m) with bellman-ford",
@@ -3012,16 +3013,16 @@ const $n = {
3012
3013
  legacyKeys: [{ key: "min-cut" }]
3013
3014
  }
3014
3015
  ];
3015
- function rs(r) {
3016
+ function cs(r) {
3016
3017
  return aa.find((e) => e.key === r);
3017
3018
  }
3018
- function cs(r) {
3019
+ function ls(r) {
3019
3020
  for (const e of aa)
3020
3021
  for (const t of e.legacyKeys)
3021
3022
  if (t.key === r)
3022
3023
  return { descriptor: e, params: t.params ?? {} };
3023
3024
  }
3024
- const Un = {
3025
+ const qn = {
3025
3026
  scalingFactor: {
3026
3027
  schema: a.number().min(1).max(1e3).default(100),
3027
3028
  meta: {
@@ -3061,7 +3062,7 @@ const Un = {
3061
3062
  advanced: !0
3062
3063
  }
3063
3064
  }
3064
- }, qn = a.strictObject({
3065
+ }, Hn = a.strictObject({
3065
3066
  ...P.shape,
3066
3067
  pos: a.record(a.number(), a.array(a.number())).or(a.null()).default(null),
3067
3068
  scaling: a.number().positive().default(1),
@@ -3074,7 +3075,7 @@ const Un = {
3074
3075
  * @param opts - Configuration options for the ARF algorithm
3075
3076
  */
3076
3077
  constructor(e) {
3077
- super(e), this.scalingFactor = 100, this.config = qn.parse(e);
3078
+ super(e), this.scalingFactor = 100, this.config = Hn.parse(e);
3078
3079
  }
3079
3080
  /**
3080
3081
  * Get dimension-specific options for ARF layout
@@ -3090,7 +3091,7 @@ const Un = {
3090
3091
  doLayout() {
3091
3092
  this.stale = !1;
3092
3093
  const e = () => this._nodes.map((n) => n.id), t = () => this._edges.map((n) => [n.srcId, n.dstId]);
3093
- this.positions = Ta(
3094
+ this.positions = Fa(
3094
3095
  { nodes: e, edges: t },
3095
3096
  this.config.pos,
3096
3097
  this.config.scaling,
@@ -3100,9 +3101,9 @@ const Un = {
3100
3101
  );
3101
3102
  }
3102
3103
  };
3103
- pe.type = "arf", pe.maxDimensions = 2, pe.zodOptionsSchema = Un;
3104
+ pe.type = "arf", pe.maxDimensions = 2, pe.zodOptionsSchema = qn;
3104
3105
  let at = pe;
3105
- const Hn = {
3106
+ const jn = {
3106
3107
  scalingFactor: {
3107
3108
  schema: a.number().min(1).max(1e3).default(20),
3108
3109
  meta: {
@@ -3132,7 +3133,7 @@ const Hn = {
3132
3133
  step: 0.1
3133
3134
  }
3134
3135
  }
3135
- }, jn = a.strictObject({
3136
+ }, Bn = a.strictObject({
3136
3137
  ...P.shape,
3137
3138
  start: a.number().or(a.string()),
3138
3139
  align: a.enum(["vertical", "horizontal"]).default("vertical"),
@@ -3144,7 +3145,7 @@ const Hn = {
3144
3145
  * @param opts - Configuration options including start node and alignment
3145
3146
  */
3146
3147
  constructor(e) {
3147
- super(e), this.scalingFactor = 20, this.config = jn.parse(e);
3148
+ super(e), this.scalingFactor = 20, this.config = Bn.parse(e);
3148
3149
  }
3149
3150
  /**
3150
3151
  * Get dimension-specific options for BFS layout
@@ -3160,7 +3161,7 @@ const Hn = {
3160
3161
  doLayout() {
3161
3162
  this.stale = !1;
3162
3163
  const e = () => this._nodes.map((n) => n.id), t = () => this._edges.map((n) => [n.srcId, n.dstId]);
3163
- this.positions = Fa(
3164
+ this.positions = Pa(
3164
3165
  { nodes: e, edges: t },
3165
3166
  this.config.start,
3166
3167
  this.config.align,
@@ -3169,9 +3170,9 @@ const Hn = {
3169
3170
  );
3170
3171
  }
3171
3172
  };
3172
- ge.type = "bfs", ge.maxDimensions = 2, ge.zodOptionsSchema = Hn;
3173
+ ge.type = "bfs", ge.maxDimensions = 2, ge.zodOptionsSchema = jn;
3173
3174
  let nt = ge;
3174
- const Bn = {
3175
+ const Vn = {
3175
3176
  scalingFactor: {
3176
3177
  schema: a.number().min(1).max(1e3).default(40),
3177
3178
  meta: {
@@ -3202,7 +3203,7 @@ const Bn = {
3202
3203
  step: 0.1
3203
3204
  }
3204
3205
  }
3205
- }, Vn = a.strictObject({
3206
+ }, An = a.strictObject({
3206
3207
  ...P.shape,
3207
3208
  nodes: a.array(a.number().or(a.string())),
3208
3209
  align: a.enum(["vertical", "horizontal"]).default("vertical"),
@@ -3215,7 +3216,7 @@ const Bn = {
3215
3216
  * @param opts - Configuration options including node partitions and alignment
3216
3217
  */
3217
3218
  constructor(e) {
3218
- super(e), this.scalingFactor = 40, this.config = Vn.parse(e);
3219
+ super(e), this.scalingFactor = 40, this.config = An.parse(e);
3219
3220
  }
3220
3221
  /**
3221
3222
  * Get dimension-specific options for bipartite layout
@@ -3231,7 +3232,7 @@ const Bn = {
3231
3232
  doLayout() {
3232
3233
  this.stale = !1;
3233
3234
  const e = () => this._nodes.map((n) => n.id), t = () => this._edges.map((n) => [n.srcId, n.dstId]);
3234
- this.positions = Pa(
3235
+ this.positions = Wa(
3235
3236
  { nodes: e, edges: t },
3236
3237
  this.config.nodes,
3237
3238
  this.config.align,
@@ -3241,9 +3242,9 @@ const Bn = {
3241
3242
  );
3242
3243
  }
3243
3244
  };
3244
- fe.type = "bipartite", fe.maxDimensions = 2, fe.zodOptionsSchema = Bn;
3245
+ fe.type = "bipartite", fe.maxDimensions = 2, fe.zodOptionsSchema = Vn;
3245
3246
  let it = fe;
3246
- const An = {
3247
+ const _n = {
3247
3248
  scalingFactor: {
3248
3249
  schema: a.number().min(1).max(1e3).default(100),
3249
3250
  meta: {
@@ -3266,7 +3267,7 @@ const An = {
3266
3267
  description: "Layout dimensionality (2D or 3D)"
3267
3268
  }
3268
3269
  }
3269
- }, _n = a.strictObject({
3270
+ }, Yn = a.strictObject({
3270
3271
  ...P.shape,
3271
3272
  scale: a.number().positive().default(1),
3272
3273
  center: a.array(a.number()).min(2).max(3).or(a.null()).default(null),
@@ -3277,7 +3278,7 @@ const An = {
3277
3278
  * @param opts - Configuration options including scale and dimensions
3278
3279
  */
3279
3280
  constructor(e) {
3280
- super(e), this.scalingFactor = 80, this.config = _n.parse(e);
3281
+ super(e), this.scalingFactor = 80, this.config = Yn.parse(e);
3281
3282
  }
3282
3283
  /**
3283
3284
  * Get dimension-specific options for circular layout
@@ -3293,12 +3294,12 @@ const An = {
3293
3294
  doLayout() {
3294
3295
  this.stale = !1;
3295
3296
  const e = () => this._nodes.map((n) => n.id), t = () => this._edges.map((n) => [n.srcId, n.dstId]);
3296
- this.positions = Wa({ nodes: e, edges: t }, this.config.scale, this.config.center, this.config.dim);
3297
+ this.positions = La({ nodes: e, edges: t }, this.config.scale, this.config.center, this.config.dim);
3297
3298
  }
3298
3299
  };
3299
- ye.type = "circular", ye.maxDimensions = 3, ye.zodOptionsSchema = An;
3300
+ ye.type = "circular", ye.maxDimensions = 3, ye.zodOptionsSchema = _n;
3300
3301
  let st = ye;
3301
- const Yn = {
3302
+ const Zn = {
3302
3303
  alphaMin: {
3303
3304
  schema: a.number().positive().default(0.1),
3304
3305
  meta: {
@@ -3338,13 +3339,13 @@ const Yn = {
3338
3339
  function Et(r) {
3339
3340
  return typeof r == "object" && r !== null && "index" in r && typeof r.index == "number" && "x" in r && typeof r.x == "number" && "y" in r && typeof r.y == "number" && "z" in r && typeof r.z == "number" && "vx" in r && typeof r.vx == "number" && "vy" in r && typeof r.vy == "number" && "vz" in r && typeof r.vz == "number";
3340
3341
  }
3341
- const Zn = a.strictObject({
3342
+ const Xn = a.strictObject({
3342
3343
  alphaMin: a.number().positive().default(0.1),
3343
3344
  alphaTarget: a.number().min(0).default(0),
3344
3345
  alphaDecay: a.number().positive().default(0.0228),
3345
3346
  velocityDecay: a.number().positive().default(0.4)
3346
3347
  });
3347
- function Xn(r) {
3348
+ function Jn(r) {
3348
3349
  return !!(typeof r == "object" && r !== null && Object.hasOwn(r, "index") && "index" in r && typeof r.index == "number" && "source" in r && Et(r.source) && "target" in r && Et(r.target));
3349
3350
  }
3350
3351
  const be = class be extends Tt {
@@ -3354,10 +3355,10 @@ const be = class be extends Tt {
3354
3355
  */
3355
3356
  constructor(e = {}) {
3356
3357
  super(), this.nodeMapping = /* @__PURE__ */ new Map(), this.edgeMapping = /* @__PURE__ */ new Map(), this.newNodeMap = /* @__PURE__ */ new Map(), this.newEdgeMap = /* @__PURE__ */ new Map(), this.reheat = !1;
3357
- const t = Zn.parse(e);
3358
+ const t = Xn.parse(e);
3358
3359
  this.d3AlphaMin = t.alphaMin, this.d3AlphaTarget = t.alphaTarget, this.d3AlphaDecay = t.alphaDecay, this.d3VelocityDecay = t.velocityDecay;
3359
- const n = Aa();
3360
- n.strength(0.9), this.d3ForceLayout = _a().numDimensions(3).alpha(1).force("link", n).force("charge", Ya()).force("center", Za()).force("dagRadial", null).stop(), this.d3ForceLayout.force("link").id((i) => i.id);
3360
+ const n = _a();
3361
+ n.strength(0.9), this.d3ForceLayout = Ya().numDimensions(3).alpha(1).force("link", n).force("charge", Za()).force("center", Xa()).force("dagRadial", null).stop(), this.d3ForceLayout.force("link").id((i) => i.id);
3361
3362
  }
3362
3363
  /**
3363
3364
  * Check if there are pending nodes or edges to be processed
@@ -3392,7 +3393,7 @@ const be = class be extends Tt {
3392
3393
  t = t.concat([...this.newEdgeMap.values()]), this.d3ForceLayout.force("link").links(t);
3393
3394
  for (const n of this.newEdgeMap.entries()) {
3394
3395
  const i = n[0], s = n[1];
3395
- if (!Xn(s))
3396
+ if (!Jn(s))
3396
3397
  throw new Error("Internal error: Edge is not settled as a complete D3 Edge");
3397
3398
  this.edgeMapping.set(i, s);
3398
3399
  }
@@ -3572,9 +3573,9 @@ const be = class be extends Tt {
3572
3573
  return t;
3573
3574
  }
3574
3575
  };
3575
- be.type = "d3", be.maxDimensions = 3, be.zodOptionsSchema = Yn;
3576
+ be.type = "d3", be.maxDimensions = 3, be.zodOptionsSchema = Zn;
3576
3577
  let ot = be;
3577
- const Jn = {
3578
+ const Qn = {
3578
3579
  dim: {
3579
3580
  schema: a.number().int().min(2).max(3).default(3),
3580
3581
  meta: {
@@ -3582,7 +3583,7 @@ const Jn = {
3582
3583
  description: "Layout dimensionality (2D or 3D)"
3583
3584
  }
3584
3585
  }
3585
- }, Qn = a.strictObject({
3586
+ }, ei = a.strictObject({
3586
3587
  ...P.shape,
3587
3588
  dim: a.number().default(3)
3588
3589
  }), ve = class ve extends F {
@@ -3591,7 +3592,7 @@ const Jn = {
3591
3592
  * @param opts - Configuration options including dimensions
3592
3593
  */
3593
3594
  constructor(e = {}) {
3594
- super(e), this.scalingFactor = 1, this.config = Qn.parse(e);
3595
+ super(e), this.scalingFactor = 1, this.config = ei.parse(e);
3595
3596
  }
3596
3597
  /**
3597
3598
  * Add a node and apply its fixed position immediately
@@ -3616,20 +3617,20 @@ const Jn = {
3616
3617
  this.positions = e;
3617
3618
  }
3618
3619
  };
3619
- ve.type = "fixed", ve.maxDimensions = 3, ve.zodOptionsSchema = Jn;
3620
+ ve.type = "fixed", ve.maxDimensions = 3, ve.zodOptionsSchema = Qn;
3620
3621
  let rt = ve;
3621
- const ei = 25e4, ti = 4;
3622
- function ai(r, e, t) {
3623
- return r !== null ? r : t > ei ? e * ti : e;
3622
+ const ti = 25e4, ai = 4;
3623
+ function ni(r, e, t) {
3624
+ return r !== null ? r : t > ti ? e * ai : e;
3624
3625
  }
3625
- function ni(r, e) {
3626
+ function ii(r, e) {
3626
3627
  if (r == null || typeof r == "string")
3627
3628
  return null;
3628
3629
  const t = e.outDegree();
3629
- return $a(r, e, (n) => t[n] + 1);
3630
+ return Ka(r, e, (n) => t[n] + 1);
3630
3631
  }
3631
- const ii = 1e-6;
3632
- function si(r, e, t, n = null) {
3632
+ const si = 1e-6;
3633
+ function oi(r, e, t, n = null) {
3633
3634
  let i = 0, s = 0, l = 0, c = 0;
3634
3635
  for (let h = 0; h < e; h += 1) {
3635
3636
  const u = r[3 * h], p = r[3 * h + 1], m = r[3 * h + 2];
@@ -3646,22 +3647,22 @@ function si(r, e, t, n = null) {
3646
3647
  Number.isFinite(g) && g > o && (o = g);
3647
3648
  }
3648
3649
  const d = Math.sqrt(o);
3649
- return { scale: d > ii ? t / d : 1, centre: [s, l, c], placed: i };
3650
+ return { scale: d > si ? t / d : 1, centre: [s, l, c], placed: i };
3650
3651
  }
3651
- function oi(r) {
3652
+ function ri(r) {
3652
3653
  return r == null ? [0, 0, 0] : [
3653
3654
  r.length > 0 ? r[0] : 0,
3654
3655
  r.length > 1 ? r[1] : 0,
3655
3656
  r.length > 2 ? r[2] : 0
3656
3657
  ];
3657
3658
  }
3658
- const ri = {
3659
+ const ci = {
3659
3660
  forceatlas2: "forceAtlas2",
3660
3661
  fruchtermanReingold: "fruchtermanReingold",
3661
3662
  spring: "fruchtermanReingold",
3662
3663
  "spring-electrical": "springElectrical"
3663
3664
  };
3664
- function ci() {
3665
+ function li() {
3665
3666
  return new De({
3666
3667
  code: "E_INTERNAL",
3667
3668
  message: "a simulation layout is constructed by LayoutManager with the graph's acceleration controller, not by LayoutEngine.get: this one was built without one",
@@ -3758,8 +3759,8 @@ class Ft extends Tt {
3758
3759
  super();
3759
3760
  const t = e;
3760
3761
  if (t.controller === void 0 || t.type === void 0)
3761
- throw ci();
3762
- this.simulationType = t.type, this.#h = t.layoutType ?? t.type, this.capability = ri[t.type], this.#t = t.options, this.#u = t.controller, this.#D = t.report, this.#i = t.dataManager, this.#n = oi(this.#t.model.center ?? this.#t.center), this.#a[0] = this.#n[0], this.#a[1] = this.#n[1], this.#a[2] = this.#n[2];
3762
+ throw li();
3763
+ this.simulationType = t.type, this.#h = t.layoutType ?? t.type, this.capability = ci[t.type], this.#t = t.options, this.#u = t.controller, this.#D = t.report, this.#i = t.dataManager, this.#n = ri(this.#t.model.center ?? this.#t.center), this.#a[0] = this.#n[0], this.#a[1] = this.#n[1], this.#a[2] = this.#n[2];
3763
3764
  }
3764
3765
  /**
3765
3766
  * The registered layout name, which every other engine reads off its class's `static type`.
@@ -4127,7 +4128,7 @@ class Ft extends Tt {
4127
4128
  const e = this.#s, t = this.#c;
4128
4129
  if (e === null || t === null)
4129
4130
  return;
4130
- const n = this.#i.positions, i = this.#l.size === 0 ? null : (o) => this.#l.has(o) && n.isPlaced(o), s = si(t, e.nodeCount, this.#t.scalingFactor, i);
4131
+ const n = this.#i.positions, i = this.#l.size === 0 ? null : (o) => this.#l.has(o) && n.isPlaced(o), s = oi(t, e.nodeCount, this.#t.scalingFactor, i);
4131
4132
  s.placed > 0 && (this.#y = s.scale, this.#a[0] = s.centre[0], this.#a[1] = s.centre[1], this.#a[2] = s.centre[2]);
4132
4133
  const l = this.#y, c = this.#a;
4133
4134
  for (const o of this.nodes) {
@@ -4218,7 +4219,7 @@ class Ft extends Tt {
4218
4219
  }
4219
4220
  });
4220
4221
  const c = this.#i.undirected(e).snapshot;
4221
- this.#T(e, i), this.#d = this.#P(c), this.#p = this.#F(e.nodeCount), this.#e = La(
4222
+ this.#T(e, i), this.#d = this.#P(c), this.#p = this.#F(e.nodeCount), this.#e = Ga(
4222
4223
  this.simulationType,
4223
4224
  this.#W(),
4224
4225
  l === null ? null : Da(l)
@@ -4231,7 +4232,7 @@ class Ft extends Tt {
4231
4232
  * @returns The masses, or null when the simulation resolves them itself.
4232
4233
  */
4233
4234
  #P(e) {
4234
- return ni(this.#t.model.nodeMass, e);
4235
+ return ii(this.#t.model.nodeMass, e);
4235
4236
  }
4236
4237
  /**
4237
4238
  * Gives a coordinate to every row that has none, before the simulation reads them.
@@ -4248,7 +4249,7 @@ class Ft extends Tt {
4248
4249
  */
4249
4250
  #T(e, t) {
4250
4251
  const { seed: n, dim: i, scale: s, center: l } = this.#t.model;
4251
- Ga(
4252
+ $a(
4252
4253
  e,
4253
4254
  t,
4254
4255
  n ?? null,
@@ -4293,7 +4294,7 @@ class Ft extends Tt {
4293
4294
  */
4294
4295
  #F(e) {
4295
4296
  const { iterationsPerStep: t, stepMultiplier: n } = this.#t;
4296
- return ai(t, n, e);
4297
+ return ni(t, n, e);
4297
4298
  }
4298
4299
  /**
4299
4300
  * Sets or clears one bit of the fixed mask and tells the simulation.
@@ -4352,7 +4353,7 @@ class Ft extends Tt {
4352
4353
  ));
4353
4354
  }
4354
4355
  }
4355
- const li = {
4356
+ const di = {
4356
4357
  scalingFactor: {
4357
4358
  schema: a.number().min(1).max(1e3).default(100),
4358
4359
  meta: {
@@ -4467,9 +4468,9 @@ const li = {
4467
4468
  return { dim: e };
4468
4469
  }
4469
4470
  };
4470
- q.type = "forceatlas2", q.simulationType = "forceatlas2", q.maxDimensions = 3, q.honoursWeights = !0, q.zodOptionsSchema = li;
4471
+ q.type = "forceatlas2", q.simulationType = "forceatlas2", q.maxDimensions = 3, q.honoursWeights = !0, q.zodOptionsSchema = di;
4471
4472
  let ct = q;
4472
- const di = "weight", hi = {
4473
+ const hi = "weight", ui = {
4473
4474
  scalingFactor: {
4474
4475
  schema: a.number().min(1).max(1e3).default(50),
4475
4476
  meta: {
@@ -4499,7 +4500,7 @@ const di = "weight", hi = {
4499
4500
  description: "Place strongly connected nodes closer together"
4500
4501
  }
4501
4502
  }
4502
- }, ui = a.strictObject({
4503
+ }, mi = a.strictObject({
4503
4504
  ...P.shape,
4504
4505
  dist: a.record(a.number(), a.record(a.number(), a.number())).or(a.null()).default(null),
4505
4506
  pos: a.record(a.number(), a.array(a.number()).min(1).max(3)).or(a.null()).default(null),
@@ -4513,7 +4514,7 @@ const di = "weight", hi = {
4513
4514
  * @param opts - Configuration options including scale and dimensions
4514
4515
  */
4515
4516
  constructor(e) {
4516
- super(e), this.scalingFactor = 50, this.config = ui.parse(e);
4517
+ super(e), this.scalingFactor = 50, this.config = mi.parse(e);
4517
4518
  }
4518
4519
  /**
4519
4520
  * Get dimension-specific options for Kamada-Kawai layout
@@ -4538,23 +4539,23 @@ const di = "weight", hi = {
4538
4539
  this.stale = !1;
4539
4540
  const n = { nodes: () => this._nodes.map((s) => s.id), edges: () => this._edges.map((s) => [s.srcId, s.dstId]) }, i = this.config.weighted ? this.pairWeights(this._edges) : null;
4540
4541
  i !== null && (this.reportClampedWeights("kamada-kawai", i), n.getEdgeData = (s, l) => {
4541
- const c = i.get(Ca(s, l));
4542
+ const c = i.get(Ea(s, l));
4542
4543
  if (c !== void 0)
4543
- return 1 / Math.max(c, Ea);
4544
- }), this.positions = Ka(
4544
+ return 1 / Math.max(c, Ra);
4545
+ }), this.positions = Ua(
4545
4546
  n,
4546
4547
  this.config.dist,
4547
4548
  this.config.pos,
4548
- di,
4549
+ hi,
4549
4550
  this.config.scale,
4550
4551
  this.config.center,
4551
4552
  this.config.dim
4552
4553
  );
4553
4554
  }
4554
4555
  };
4555
- re.type = "kamada-kawai", re.maxDimensions = 3, re.honoursWeights = !0, re.zodOptionsSchema = hi;
4556
+ re.type = "kamada-kawai", re.maxDimensions = 3, re.honoursWeights = !0, re.zodOptionsSchema = ui;
4556
4557
  let lt = re;
4557
- const mi = {
4558
+ const pi = {
4558
4559
  scalingFactor: {
4559
4560
  schema: a.number().min(1).max(1e3).default(40),
4560
4561
  meta: {
@@ -4577,7 +4578,7 @@ const mi = {
4577
4578
  step: 0.1
4578
4579
  }
4579
4580
  }
4580
- }, pi = a.strictObject({
4581
+ }, gi = a.strictObject({
4581
4582
  ...P.shape,
4582
4583
  // subsetKey: z.string().or(z.record(z.number(), z.array(z.string().or(z.number())))),
4583
4584
  subsetKey: a.record(a.string(), a.array(a.string().or(a.number()))),
@@ -4590,7 +4591,7 @@ const mi = {
4590
4591
  * @param opts - Configuration options including subset keys and alignment
4591
4592
  */
4592
4593
  constructor(e) {
4593
- super(e), this.scalingFactor = 40, this.config = pi.parse(e);
4594
+ super(e), this.scalingFactor = 40, this.config = gi.parse(e);
4594
4595
  }
4595
4596
  /**
4596
4597
  * Get dimension-specific options for multipartite layout
@@ -4606,7 +4607,7 @@ const mi = {
4606
4607
  doLayout() {
4607
4608
  this.stale = !1;
4608
4609
  const e = () => this._nodes.map((n) => n.id), t = () => this._edges.map((n) => [n.srcId, n.dstId]);
4609
- this.positions = Ua(
4610
+ this.positions = qa(
4610
4611
  { nodes: e, edges: t },
4611
4612
  this.config.subsetKey,
4612
4613
  this.config.align,
@@ -4615,10 +4616,10 @@ const mi = {
4615
4616
  );
4616
4617
  }
4617
4618
  };
4618
- we.type = "multipartite", we.maxDimensions = 2, we.zodOptionsSchema = mi;
4619
+ we.type = "multipartite", we.maxDimensions = 2, we.zodOptionsSchema = pi;
4619
4620
  let dt = we;
4620
4621
  var ue = { exports: {} }, Zt;
4621
- function gi() {
4622
+ function fi() {
4622
4623
  if (Zt) return ue.exports;
4623
4624
  Zt = 1, ue.exports = r, ue.exports.random = r, ue.exports.randomIterator = c;
4624
4625
  function r(o) {
@@ -4684,8 +4685,8 @@ function gi() {
4684
4685
  }
4685
4686
  return ue.exports;
4686
4687
  }
4687
- var fi = gi();
4688
- const yi = /* @__PURE__ */ Qa(fi), bi = {
4688
+ var yi = fi();
4689
+ const bi = /* @__PURE__ */ en(yi), vi = {
4689
4690
  dim: {
4690
4691
  schema: a.number().int().min(2).max(3).default(3),
4691
4692
  meta: {
@@ -4757,11 +4758,11 @@ const yi = /* @__PURE__ */ Qa(fi), bi = {
4757
4758
  * @param config - Configuration options for the NGraph simulation
4758
4759
  */
4759
4760
  constructor(e = {}) {
4760
- super(), this.nodeMapping = /* @__PURE__ */ new Map(), this.edgeMapping = /* @__PURE__ */ new Map(), this._settled = !0, this._stepCount = 0, this._lastMoves = [], this.ngraph = Ja();
4761
+ super(), this.nodeMapping = /* @__PURE__ */ new Map(), this.edgeMapping = /* @__PURE__ */ new Map(), this._settled = !0, this._stepCount = 0, this._lastMoves = [], this.ngraph = Qa();
4761
4762
  const t = e, n = {
4762
4763
  dimensions: t.dim !== void 0 ? t.dim : 3
4763
4764
  };
4764
- t.springLength !== void 0 && (n.springLength = t.springLength), t.springCoefficient !== void 0 && (n.springCoefficient = t.springCoefficient), t.gravity !== void 0 && (n.gravity = t.gravity), t.theta !== void 0 && (n.theta = t.theta), t.dragCoefficient !== void 0 && (n.dragCoefficient = t.dragCoefficient), t.timeStep !== void 0 && (n.timeStep = t.timeStep), t.seed !== void 0 && typeof t.seed == "number" && (n.random = yi(t.seed)), this.ngraphLayout = Xa(this.ngraph, n);
4765
+ t.springLength !== void 0 && (n.springLength = t.springLength), t.springCoefficient !== void 0 && (n.springCoefficient = t.springCoefficient), t.gravity !== void 0 && (n.gravity = t.gravity), t.theta !== void 0 && (n.theta = t.theta), t.dragCoefficient !== void 0 && (n.dragCoefficient = t.dragCoefficient), t.timeStep !== void 0 && (n.timeStep = t.timeStep), t.seed !== void 0 && typeof t.seed == "number" && (n.random = bi(t.seed)), this.ngraphLayout = Ja(this.ngraph, n);
4765
4766
  }
4766
4767
  /**
4767
4768
  * Get dimension-specific options for NGraph layout
@@ -4930,9 +4931,9 @@ const yi = /* @__PURE__ */ Qa(fi), bi = {
4930
4931
  return t;
4931
4932
  }
4932
4933
  };
4933
- Ne.type = "ngraph", Ne.maxDimensions = 3, Ne.zodOptionsSchema = bi;
4934
+ Ne.type = "ngraph", Ne.maxDimensions = 3, Ne.zodOptionsSchema = vi;
4934
4935
  let ht = Ne;
4935
- const vi = {
4936
+ const wi = {
4936
4937
  scalingFactor: {
4937
4938
  schema: a.number().min(1).max(1e3).default(70),
4938
4939
  meta: {
@@ -4963,7 +4964,7 @@ const vi = {
4963
4964
  advanced: !0
4964
4965
  }
4965
4966
  }
4966
- }, wi = a.strictObject({
4967
+ }, Ni = a.strictObject({
4967
4968
  ...P.shape,
4968
4969
  scale: a.number().positive().default(1),
4969
4970
  center: a.array(a.number()).length(2).or(a.null()).default(null),
@@ -4975,7 +4976,7 @@ const vi = {
4975
4976
  * @param opts - Configuration options including scale and seed
4976
4977
  */
4977
4978
  constructor(e) {
4978
- super(e), this.scalingFactor = 70, this.config = wi.parse(e);
4979
+ super(e), this.scalingFactor = 70, this.config = Ni.parse(e);
4979
4980
  }
4980
4981
  /**
4981
4982
  * Get dimension-specific options for planar layout
@@ -4991,7 +4992,7 @@ const vi = {
4991
4992
  doLayout() {
4992
4993
  this.stale = !1;
4993
4994
  const e = () => this._nodes.map((n) => n.id), t = () => this._edges.map((n) => [n.srcId, n.dstId]);
4994
- this.positions = qa(
4995
+ this.positions = Ha(
4995
4996
  { nodes: e, edges: t },
4996
4997
  this.config.scale,
4997
4998
  this.config.center,
@@ -5000,9 +5001,9 @@ const vi = {
5000
5001
  );
5001
5002
  }
5002
5003
  };
5003
- Se.type = "planar", Se.maxDimensions = 2, Se.zodOptionsSchema = vi;
5004
+ Se.type = "planar", Se.maxDimensions = 2, Se.zodOptionsSchema = wi;
5004
5005
  let ut = Se;
5005
- const Ni = {
5006
+ const Si = {
5006
5007
  scalingFactor: {
5007
5008
  schema: a.number().min(1).max(1e3).default(100),
5008
5009
  meta: {
@@ -5025,7 +5026,7 @@ const Ni = {
5025
5026
  advanced: !0
5026
5027
  }
5027
5028
  }
5028
- }, Si = a.strictObject({
5029
+ }, xi = a.strictObject({
5029
5030
  ...P.shape,
5030
5031
  center: a.array(a.number()).min(2).max(3).or(a.null()).default(null),
5031
5032
  dim: a.number().default(2),
@@ -5036,7 +5037,7 @@ const Ni = {
5036
5037
  * @param opts - Configuration options including dimensions and seed
5037
5038
  */
5038
5039
  constructor(e) {
5039
- super(e), this.scalingFactor = 100, this.config = Si.parse(e);
5040
+ super(e), this.scalingFactor = 100, this.config = xi.parse(e);
5040
5041
  }
5041
5042
  /**
5042
5043
  * Get dimension-specific options for random layout
@@ -5052,12 +5053,12 @@ const Ni = {
5052
5053
  doLayout() {
5053
5054
  this.stale = !1;
5054
5055
  const e = () => this._nodes.map((n) => n.id), t = () => this._edges.map((n) => [n.srcId, n.dstId]);
5055
- this.positions = Ha({ nodes: e, edges: t }, this.config.center, this.config.dim, this.config.seed);
5056
+ this.positions = ja({ nodes: e, edges: t }, this.config.center, this.config.dim, this.config.seed);
5056
5057
  }
5057
5058
  };
5058
- xe.type = "random", xe.maxDimensions = 3, xe.zodOptionsSchema = Ni;
5059
+ xe.type = "random", xe.maxDimensions = 3, xe.zodOptionsSchema = Si;
5059
5060
  let mt = xe;
5060
- const xi = {
5061
+ const ki = {
5061
5062
  scalingFactor: {
5062
5063
  schema: a.number().min(1).max(1e3).default(100),
5063
5064
  meta: {
@@ -5080,7 +5081,7 @@ const xi = {
5080
5081
  description: "Layout dimensionality (2D only for shell)"
5081
5082
  }
5082
5083
  }
5083
- }, ki = a.strictObject({
5084
+ }, Oi = a.strictObject({
5084
5085
  ...P.shape,
5085
5086
  nlist: a.array(a.array(a.number())).or(a.null()).default(null),
5086
5087
  dim: a.number().default(2),
@@ -5092,7 +5093,7 @@ const xi = {
5092
5093
  * @param opts - Configuration options including node lists for each shell
5093
5094
  */
5094
5095
  constructor(e) {
5095
- super(e), this.scalingFactor = 100, this.config = ki.parse(e);
5096
+ super(e), this.scalingFactor = 100, this.config = Oi.parse(e);
5096
5097
  }
5097
5098
  /**
5098
5099
  * Get dimension-specific options for shell layout
@@ -5108,7 +5109,7 @@ const xi = {
5108
5109
  doLayout() {
5109
5110
  this.stale = !1;
5110
5111
  const e = () => this._nodes.map((n) => n.id), t = () => this._edges.map((n) => [n.srcId, n.dstId]);
5111
- this.positions = ja(
5112
+ this.positions = Ba(
5112
5113
  { nodes: e, edges: t },
5113
5114
  this.config.nlist,
5114
5115
  this.config.scale,
@@ -5117,9 +5118,9 @@ const xi = {
5117
5118
  );
5118
5119
  }
5119
5120
  };
5120
- ke.type = "shell", ke.maxDimensions = 2, ke.zodOptionsSchema = xi;
5121
+ ke.type = "shell", ke.maxDimensions = 2, ke.zodOptionsSchema = ki;
5121
5122
  let pt = ke;
5122
- const Oi = {
5123
+ const Mi = {
5123
5124
  scalingFactor: {
5124
5125
  schema: a.number().min(1).max(1e3).default(100),
5125
5126
  meta: {
@@ -5142,7 +5143,7 @@ const Oi = {
5142
5143
  description: "Layout dimensionality (2D only for spectral)"
5143
5144
  }
5144
5145
  }
5145
- }, Mi = a.strictObject({
5146
+ }, Di = a.strictObject({
5146
5147
  ...P.shape,
5147
5148
  scale: a.number().positive().default(1),
5148
5149
  center: a.array(a.number()).length(2).or(a.null()).default(null),
@@ -5153,7 +5154,7 @@ const Oi = {
5153
5154
  * @param opts - Configuration options including scale and center
5154
5155
  */
5155
5156
  constructor(e) {
5156
- super(e), this.scalingFactor = 100, this.config = Mi.parse(e);
5157
+ super(e), this.scalingFactor = 100, this.config = Di.parse(e);
5157
5158
  }
5158
5159
  /**
5159
5160
  * Get dimension-specific options for spectral layout
@@ -5169,12 +5170,12 @@ const Oi = {
5169
5170
  doLayout() {
5170
5171
  this.stale = !1;
5171
5172
  const e = () => this._nodes.map((n) => n.id), t = () => this._edges.map((n) => [n.srcId, n.dstId]);
5172
- this.positions = Ba({ nodes: e, edges: t }, this.config.scale, this.config.center, this.config.dim);
5173
+ this.positions = Va({ nodes: e, edges: t }, this.config.scale, this.config.center, this.config.dim);
5173
5174
  }
5174
5175
  };
5175
- Oe.type = "spectral", Oe.maxDimensions = 2, Oe.zodOptionsSchema = Oi;
5176
+ Oe.type = "spectral", Oe.maxDimensions = 2, Oe.zodOptionsSchema = Mi;
5176
5177
  let gt = Oe;
5177
- const Di = {
5178
+ const Ii = {
5178
5179
  scalingFactor: {
5179
5180
  schema: a.number().min(1).max(1e3).default(80),
5180
5181
  meta: {
@@ -5214,7 +5215,7 @@ const Di = {
5214
5215
  advanced: !0
5215
5216
  }
5216
5217
  }
5217
- }, Ii = a.strictObject({
5218
+ }, zi = a.strictObject({
5218
5219
  ...P.shape,
5219
5220
  scale: a.number().positive().default(1),
5220
5221
  center: a.array(a.number()).length(2).or(a.null()).default(null),
@@ -5227,7 +5228,7 @@ const Di = {
5227
5228
  * @param opts - Configuration options including resolution and equidistant spacing
5228
5229
  */
5229
5230
  constructor(e) {
5230
- super(e), this.scalingFactor = 80, this.config = Ii.parse(e);
5231
+ super(e), this.scalingFactor = 80, this.config = zi.parse(e);
5231
5232
  }
5232
5233
  /**
5233
5234
  * Get dimension-specific options for spiral layout
@@ -5243,7 +5244,7 @@ const Di = {
5243
5244
  doLayout() {
5244
5245
  this.stale = !1;
5245
5246
  const e = () => this._nodes.map((n) => n.id), t = () => this._edges.map((n) => [n.srcId, n.dstId]);
5246
- this.positions = Va(
5247
+ this.positions = Aa(
5247
5248
  { nodes: e, edges: t },
5248
5249
  this.config.scale,
5249
5250
  this.config.center,
@@ -5253,9 +5254,9 @@ const Di = {
5253
5254
  );
5254
5255
  }
5255
5256
  };
5256
- Me.type = "spiral", Me.maxDimensions = 2, Me.zodOptionsSchema = Di;
5257
+ Me.type = "spiral", Me.maxDimensions = 2, Me.zodOptionsSchema = Ii;
5257
5258
  let ft = Me;
5258
- const zi = {
5259
+ const Ci = {
5259
5260
  springLength: {
5260
5261
  schema: a.number().positive().default(10),
5261
5262
  meta: {
@@ -5331,9 +5332,9 @@ const zi = {
5331
5332
  return { dim: e };
5332
5333
  }
5333
5334
  };
5334
- ce.type = "spring-electrical", ce.simulationType = "spring-electrical", ce.maxDimensions = 3, ce.zodOptionsSchema = zi;
5335
+ ce.type = "spring-electrical", ce.simulationType = "spring-electrical", ce.maxDimensions = 3, ce.zodOptionsSchema = Ci;
5335
5336
  let yt = ce;
5336
- const Ci = {
5337
+ const Ei = {
5337
5338
  scalingFactor: {
5338
5339
  schema: a.number().min(1).max(1e3).default(100),
5339
5340
  meta: {
@@ -5389,7 +5390,7 @@ const Ci = {
5389
5390
  return { dim: e };
5390
5391
  }
5391
5392
  };
5392
- le.type = "spring", le.simulationType = "spring", le.maxDimensions = 3, le.zodOptionsSchema = Ci;
5393
+ le.type = "spring", le.simulationType = "spring", le.maxDimensions = 3, le.zodOptionsSchema = Ei;
5393
5394
  let bt = le;
5394
5395
  const B = {
5395
5396
  seed: { type: "seed" }
@@ -5411,7 +5412,7 @@ function T(r, e, t = []) {
5411
5412
  ]
5412
5413
  };
5413
5414
  }
5414
- const Ei = {
5415
+ const Ri = {
5415
5416
  engine: "ngraph",
5416
5417
  plainName: "NGraph Force",
5417
5418
  technicalName: "ngraph.forcelayout",
@@ -5420,7 +5421,7 @@ const Ei = {
5420
5421
  reason: "The default: a Barnes-Hut simulation that runs live, accepts nodes and edges added while it is running, and stays interactive on graphs of a hundred thousand nodes.",
5421
5422
  options: z(ht.zodOptionsSchema, B),
5422
5423
  honoursWeights: ht.honoursWeights
5423
- }, Ri = {
5424
+ }, Ti = {
5424
5425
  engine: "d3",
5425
5426
  plainName: "D3 Force",
5426
5427
  technicalName: "d3-force-3d",
@@ -5429,7 +5430,7 @@ const Ei = {
5429
5430
  reason: "Choose it for d3's own tuning vocabulary -- alpha, alpha decay, velocity decay -- when the arrangement has to match a d3 drawing elsewhere in the product.",
5430
5431
  options: z(ot.zodOptionsSchema),
5431
5432
  honoursWeights: ot.honoursWeights
5432
- }, Ti = {
5433
+ }, Fi = {
5433
5434
  engine: "forceatlas2",
5434
5435
  plainName: "ForceAtlas2",
5435
5436
  technicalName: "ForceAtlas2 (Gephi)",
@@ -5438,7 +5439,7 @@ const Ei = {
5438
5439
  reason: "Choose it for the Gephi look, and for the arrangement an accelerator reproduces first. It keeps running until the layout settles and reheats on a drag or a pin.",
5439
5440
  options: z(ct.zodOptionsSchema, B),
5440
5441
  honoursWeights: ct.honoursWeights
5441
- }, Fi = {
5442
+ }, Pi = {
5442
5443
  engine: "spring",
5443
5444
  plainName: "Spring",
5444
5445
  technicalName: "Fruchterman-Reingold",
@@ -5447,7 +5448,7 @@ const Ei = {
5447
5448
  reason: "Choose it when the arrangement must be reproducible from a seed: the same seed gives the same settled shape.",
5448
5449
  options: z(bt.zodOptionsSchema, B),
5449
5450
  honoursWeights: bt.honoursWeights
5450
- }, Pi = {
5451
+ }, Wi = {
5451
5452
  engine: "spring-electrical",
5452
5453
  plainName: "Spring Electrical",
5453
5454
  technicalName: "ngraph.forcelayout (spring-electrical)",
@@ -5457,7 +5458,7 @@ const Ei = {
5457
5458
  options: z(yt.zodOptionsSchema, B),
5458
5459
  honoursWeights: yt.honoursWeights,
5459
5460
  requires: { accelerator: !0 }
5460
- }, Wi = {
5461
+ }, Li = {
5461
5462
  engine: "kamada-kawai",
5462
5463
  plainName: "Kamada-Kawai",
5463
5464
  technicalName: "Kamada-Kawai stress majorization",
@@ -5466,7 +5467,7 @@ const Ei = {
5466
5467
  reason: "Choose it for a small graph whose drawn distances should match its graph distances. It solves over every pair of nodes, so it is slow well before the other force engines are.",
5467
5468
  options: z(lt.zodOptionsSchema),
5468
5469
  honoursWeights: lt.honoursWeights
5469
- }, Li = {
5470
+ }, Gi = {
5470
5471
  engine: "arf",
5471
5472
  plainName: "ARF",
5472
5473
  technicalName: "Attractive and Repulsive Forces",
@@ -5475,7 +5476,7 @@ const Ei = {
5475
5476
  reason: "The only registered force engine that is two-dimensional by nature, so a flat result is what it computes rather than what it is flattened into afterwards.",
5476
5477
  options: z(at.zodOptionsSchema, B),
5477
5478
  honoursWeights: at.honoursWeights
5478
- }, Gi = {
5479
+ }, $i = {
5479
5480
  engine: "circular",
5480
5481
  plainName: "Circular",
5481
5482
  technicalName: "Circular layout",
@@ -5484,7 +5485,7 @@ const Ei = {
5484
5485
  reason: "The only engine that draws this arrangement.",
5485
5486
  options: z(st.zodOptionsSchema),
5486
5487
  honoursWeights: st.honoursWeights
5487
- }, $i = {
5488
+ }, Ki = {
5488
5489
  engine: "shell",
5489
5490
  plainName: "Shell",
5490
5491
  technicalName: "Shell layout",
@@ -5493,7 +5494,7 @@ const Ei = {
5493
5494
  reason: "The only engine that draws this arrangement.",
5494
5495
  options: z(pt.zodOptionsSchema),
5495
5496
  honoursWeights: pt.honoursWeights
5496
- }, Ki = {
5497
+ }, Ui = {
5497
5498
  engine: "spiral",
5498
5499
  plainName: "Spiral",
5499
5500
  technicalName: "Archimedean spiral layout",
@@ -5502,7 +5503,7 @@ const Ei = {
5502
5503
  reason: "The only engine that draws this arrangement.",
5503
5504
  options: z(ft.zodOptionsSchema),
5504
5505
  honoursWeights: ft.honoursWeights
5505
- }, Ui = {
5506
+ }, qi = {
5506
5507
  engine: "spectral",
5507
5508
  plainName: "Spectral",
5508
5509
  technicalName: "Laplacian eigenvector layout",
@@ -5511,7 +5512,7 @@ const Ei = {
5511
5512
  reason: "The only engine that draws this arrangement.",
5512
5513
  options: z(gt.zodOptionsSchema),
5513
5514
  honoursWeights: gt.honoursWeights
5514
- }, qi = {
5515
+ }, Hi = {
5515
5516
  engine: "planar",
5516
5517
  plainName: "Planar",
5517
5518
  technicalName: "Planar embedding",
@@ -5520,7 +5521,7 @@ const Ei = {
5520
5521
  reason: "The only engine that draws this arrangement.",
5521
5522
  options: z(ut.zodOptionsSchema, B),
5522
5523
  honoursWeights: ut.honoursWeights
5523
- }, Hi = {
5524
+ }, ji = {
5524
5525
  engine: "bfs",
5525
5526
  plainName: "BFS Tree",
5526
5527
  technicalName: "Breadth-first tree layout",
@@ -5529,7 +5530,7 @@ const Ei = {
5529
5530
  reason: "The only engine that draws this arrangement. It orders each row by breadth-first arrival and does not reduce edge crossings between rows.",
5530
5531
  options: z(nt.zodOptionsSchema),
5531
5532
  honoursWeights: nt.honoursWeights
5532
- }, ji = {
5533
+ }, Bi = {
5533
5534
  engine: "bipartite",
5534
5535
  plainName: "Bipartite",
5535
5536
  technicalName: "Bipartite layout",
@@ -5538,7 +5539,7 @@ const Ei = {
5538
5539
  reason: "The only engine that draws this arrangement.",
5539
5540
  options: z(it.zodOptionsSchema),
5540
5541
  honoursWeights: it.honoursWeights
5541
- }, Bi = {
5542
+ }, Vi = {
5542
5543
  engine: "multipartite",
5543
5544
  plainName: "Multipartite",
5544
5545
  technicalName: "Multipartite layout",
@@ -5547,7 +5548,7 @@ const Ei = {
5547
5548
  reason: "The only engine that draws this arrangement.",
5548
5549
  options: z(dt.zodOptionsSchema),
5549
5550
  honoursWeights: dt.honoursWeights
5550
- }, Vi = {
5551
+ }, Ai = {
5551
5552
  engine: "fixed",
5552
5553
  plainName: "Fixed",
5553
5554
  technicalName: "Fixed layout",
@@ -5556,7 +5557,7 @@ const Ei = {
5556
5557
  reason: "The only engine that draws this arrangement.",
5557
5558
  options: z(rt.zodOptionsSchema),
5558
5559
  honoursWeights: rt.honoursWeights
5559
- }, Ai = {
5560
+ }, _i = {
5560
5561
  engine: "random",
5561
5562
  plainName: "Random",
5562
5563
  technicalName: "Random layout",
@@ -5578,8 +5579,8 @@ const Ei = {
5578
5579
  sizeRating: "any",
5579
5580
  structuralInputs: []
5580
5581
  },
5581
- Ei,
5582
- [Ri, Ti, Fi, Wi, Pi]
5582
+ Ri,
5583
+ [Ti, Fi, Pi, Li, Wi]
5583
5584
  ),
5584
5585
  T(
5585
5586
  {
@@ -5593,7 +5594,7 @@ const Ei = {
5593
5594
  sizeRating: 2e3,
5594
5595
  structuralInputs: []
5595
5596
  },
5596
- Li
5597
+ Gi
5597
5598
  ),
5598
5599
  T(
5599
5600
  {
@@ -5607,7 +5608,7 @@ const Ei = {
5607
5608
  sizeRating: "any",
5608
5609
  structuralInputs: []
5609
5610
  },
5610
- Gi
5611
+ $i
5611
5612
  ),
5612
5613
  T(
5613
5614
  {
@@ -5621,7 +5622,7 @@ const Ei = {
5621
5622
  sizeRating: "any",
5622
5623
  structuralInputs: ["partition"]
5623
5624
  },
5624
- $i
5625
+ Ki
5625
5626
  ),
5626
5627
  T(
5627
5628
  {
@@ -5635,7 +5636,7 @@ const Ei = {
5635
5636
  sizeRating: "any",
5636
5637
  structuralInputs: []
5637
5638
  },
5638
- Ki
5639
+ Ui
5639
5640
  ),
5640
5641
  T(
5641
5642
  {
@@ -5649,7 +5650,7 @@ const Ei = {
5649
5650
  sizeRating: 2e3,
5650
5651
  structuralInputs: []
5651
5652
  },
5652
- Ui
5653
+ qi
5653
5654
  ),
5654
5655
  T(
5655
5656
  {
@@ -5663,7 +5664,7 @@ const Ei = {
5663
5664
  sizeRating: 2e3,
5664
5665
  structuralInputs: []
5665
5666
  },
5666
- qi
5667
+ Hi
5667
5668
  ),
5668
5669
  T(
5669
5670
  {
@@ -5677,7 +5678,7 @@ const Ei = {
5677
5678
  sizeRating: "any",
5678
5679
  structuralInputs: []
5679
5680
  },
5680
- Ai
5681
+ _i
5681
5682
  ),
5682
5683
  T(
5683
5684
  {
@@ -5691,7 +5692,7 @@ const Ei = {
5691
5692
  sizeRating: "any",
5692
5693
  structuralInputs: ["node"]
5693
5694
  },
5694
- Hi
5695
+ ji
5695
5696
  ),
5696
5697
  T(
5697
5698
  {
@@ -5705,7 +5706,7 @@ const Ei = {
5705
5706
  sizeRating: "any",
5706
5707
  structuralInputs: ["partition"]
5707
5708
  },
5708
- ji
5709
+ Bi
5709
5710
  ),
5710
5711
  T(
5711
5712
  {
@@ -5719,7 +5720,7 @@ const Ei = {
5719
5720
  sizeRating: "any",
5720
5721
  structuralInputs: ["partition"]
5721
5722
  },
5722
- Bi
5723
+ Vi
5723
5724
  ),
5724
5725
  T(
5725
5726
  {
@@ -5733,9 +5734,9 @@ const Ei = {
5733
5734
  sizeRating: "any",
5734
5735
  structuralInputs: []
5735
5736
  },
5736
- Vi
5737
+ Ai
5737
5738
  )
5738
- ], _i = Pt.map((r) => r.descriptor), ls = [
5739
+ ], Yi = Pt.map((r) => r.descriptor), ds = [
5739
5740
  {
5740
5741
  id: "radial",
5741
5742
  reason: "No engine arranges a graph in rings by distance from a chosen node. The spiral layout winds outward but orders nodes by position in the list, not by the graph, so it answers a different question and is published under its own name instead."
@@ -5745,13 +5746,13 @@ const Ei = {
5745
5746
  reason: "No engine places nodes on a regular lattice."
5746
5747
  }
5747
5748
  ];
5748
- function ds(r) {
5749
- return _i.find((e) => e.id === r) ?? ea(r)?.descriptor;
5750
- }
5751
5749
  function hs(r) {
5752
- return Pt.find((e) => e.descriptor.id === r);
5750
+ return Yi.find((e) => e.id === r) ?? ea(r)?.descriptor;
5753
5751
  }
5754
5752
  function us(r) {
5753
+ return Pt.find((e) => e.descriptor.id === r);
5754
+ }
5755
+ function ms(r) {
5755
5756
  const e = Pt.find(
5756
5757
  (t) => t.implementations.some((n) => n.engine === r)
5757
5758
  );
@@ -5762,7 +5763,7 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5762
5763
  id: "viridis",
5763
5764
  plainName: "Purple to Yellow",
5764
5765
  kind: "sequential",
5765
- colors: en,
5766
+ colors: tn,
5766
5767
  capacity: null,
5767
5768
  colorblindSafe: E
5768
5769
  },
@@ -5772,7 +5773,7 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5772
5773
  id: "ylorbr",
5773
5774
  plainName: "Orange to Brown",
5774
5775
  kind: "sequential",
5775
- colors: tn,
5776
+ colors: an,
5776
5777
  capacity: null,
5777
5778
  colorblindSafe: E
5778
5779
  },
@@ -5780,7 +5781,7 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5780
5781
  id: "plasma",
5781
5782
  plainName: "Blue to Yellow",
5782
5783
  kind: "sequential",
5783
- colors: an,
5784
+ colors: nn,
5784
5785
  capacity: null,
5785
5786
  colorblindSafe: E
5786
5787
  },
@@ -5788,7 +5789,7 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5788
5789
  id: "inferno",
5789
5790
  plainName: "Black to Yellow",
5790
5791
  kind: "sequential",
5791
- colors: nn,
5792
+ colors: sn,
5792
5793
  capacity: null,
5793
5794
  colorblindSafe: E
5794
5795
  },
@@ -5796,7 +5797,7 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5796
5797
  id: "blues",
5797
5798
  plainName: "Shades of Blue",
5798
5799
  kind: "sequential",
5799
- colors: sn,
5800
+ colors: on,
5800
5801
  capacity: null,
5801
5802
  colorblindSafe: E
5802
5803
  },
@@ -5804,7 +5805,7 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5804
5805
  id: "greens",
5805
5806
  plainName: "Shades of Green",
5806
5807
  kind: "sequential",
5807
- colors: on,
5808
+ colors: rn,
5808
5809
  capacity: null,
5809
5810
  colorblindSafe: []
5810
5811
  },
@@ -5812,7 +5813,7 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5812
5813
  id: "oranges",
5813
5814
  plainName: "Shades of Orange",
5814
5815
  kind: "sequential",
5815
- colors: rn,
5816
+ colors: cn,
5816
5817
  capacity: null,
5817
5818
  colorblindSafe: []
5818
5819
  },
@@ -5860,7 +5861,7 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5860
5861
  id: "purple-green",
5861
5862
  plainName: "Purple to Green",
5862
5863
  kind: "diverging",
5863
- colors: cn,
5864
+ colors: ln,
5864
5865
  capacity: null,
5865
5866
  colorblindSafe: E
5866
5867
  },
@@ -5868,7 +5869,7 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5868
5869
  id: "blue-orange",
5869
5870
  plainName: "Blue to Orange",
5870
5871
  kind: "diverging",
5871
- colors: ln,
5872
+ colors: dn,
5872
5873
  capacity: null,
5873
5874
  colorblindSafe: E
5874
5875
  },
@@ -5876,7 +5877,7 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5876
5877
  id: "red-blue",
5877
5878
  plainName: "Red to Blue",
5878
5879
  kind: "diverging",
5879
- colors: dn,
5880
+ colors: hn,
5880
5881
  capacity: null,
5881
5882
  colorblindSafe: []
5882
5883
  },
@@ -5905,14 +5906,14 @@ const E = ["deuteranopia", "protanopia", "tritanopia"], Wt = Object.freeze([
5905
5906
  colorblindSafe: E
5906
5907
  }
5907
5908
  ]);
5908
- function ms(r) {
5909
- return Wt.find((e) => e.id === r) ?? Ra(r);
5910
- }
5911
5909
  function ps(r) {
5910
+ return Wt.find((e) => e.id === r) ?? Ta(r);
5911
+ }
5912
+ function gs(r) {
5912
5913
  const e = Wt.filter((n) => n.kind === r), t = ta().filter((n) => n.kind === r);
5913
5914
  return t.length === 0 ? e : [...e, ...t];
5914
5915
  }
5915
- function gs() {
5916
+ function fs() {
5916
5917
  return [...Wt, ...ta()].map((r) => String(r.id));
5917
5918
  }
5918
5919
  const G = {
@@ -6018,10 +6019,10 @@ const na = [
6018
6019
  options: []
6019
6020
  }
6020
6021
  ];
6021
- function fs(r) {
6022
+ function ys(r) {
6022
6023
  return na.find((e) => e.name === r);
6023
6024
  }
6024
- function ys(r) {
6025
+ function bs(r) {
6025
6026
  return na.filter((e) => e.domainKind === r);
6026
6027
  }
6027
6028
  export {
@@ -6037,7 +6038,7 @@ export {
6037
6038
  je as I,
6038
6039
  Ye as J,
6039
6040
  lt as K,
6040
- Pt as L,
6041
+ Yi as L,
6041
6042
  dt as M,
6042
6043
  ht as N,
6043
6044
  _e as O,
@@ -6046,36 +6047,36 @@ export {
6046
6047
  mt as R,
6047
6048
  na as S,
6048
6049
  He as T,
6049
- ls as U,
6050
+ ds as U,
6050
6051
  Pe as V,
6051
6052
  Ke as W,
6052
6053
  Ge as X,
6053
6054
  tt as Y,
6054
6055
  Ae as Z,
6055
6056
  et as _,
6056
- _i as a,
6057
+ Pt as a,
6057
6058
  Xe as a0,
6058
6059
  Je as a1,
6059
6060
  Ft as a2,
6060
- hn as a3,
6061
- rs as b,
6062
- cs as c,
6063
- hs as d,
6064
- us as e,
6065
- ps as f,
6066
- ys as g,
6061
+ un as a3,
6062
+ cs as b,
6063
+ ls as c,
6064
+ us as d,
6065
+ ms as e,
6066
+ gs as f,
6067
+ bs as g,
6067
6068
  ft as h,
6068
6069
  pt as i,
6069
6070
  bt as j,
6070
- gs as k,
6071
- ds as l,
6071
+ fs as k,
6072
+ hs as l,
6072
6073
  yt as m,
6073
6074
  ut as n,
6074
6075
  gt as o,
6075
- ms as p,
6076
+ ps as p,
6076
6077
  nt as q,
6077
6078
  it as r,
6078
- fs as s,
6079
+ ys as s,
6079
6080
  rt as t,
6080
6081
  $e as u,
6081
6082
  Ue as v,