@dpuse/dpuse-tool-d3-visualiser 0.0.46 → 0.0.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +51 -51
  2. package/dist/array-Cv4-2llb.js +0 -2
  3. package/dist/axis-DjmZ9QYe.js +0 -2
  4. package/dist/{band-C1twWuW2.js → band-BFcwtSdG.js} +2 -4
  5. package/dist/{band-C1twWuW2.js.map → band-BFcwtSdG.js.map} +1 -1
  6. package/dist/{billboardJs-DS82ViEw.js → billboardJs-oaee80Fh.js} +85 -72
  7. package/dist/{billboardJs-DS82ViEw.js.map → billboardJs-oaee80Fh.js.map} +1 -1
  8. package/dist/{chordDiagram-Cz0sVVgD.js → chordDiagram-CTDXv74T.js} +35 -29
  9. package/dist/{chordDiagram-Cz0sVVgD.js.map → chordDiagram-CTDXv74T.js.map} +1 -1
  10. package/dist/{d3BarChart-DIN2KQsU.js → d3BarChart-BQCPo1ub.js} +3 -5
  11. package/dist/{d3BarChart-DIN2KQsU.js.map → d3BarChart-BQCPo1ub.js.map} +1 -1
  12. package/dist/dpuse-tool-d3-visualiser.css +1 -1
  13. package/dist/dpuse-tool-d3-visualiser.es.js +10 -12
  14. package/dist/dpuse-tool-d3-visualiser.es.js.map +1 -1
  15. package/dist/drag-DfL4uwqz.js +0 -2
  16. package/dist/{erdDiagram-Ds1hsQDD.js → erdDiagram-C_Hobpls.js} +8 -8
  17. package/dist/{erdDiagram-Ds1hsQDD.js.map → erdDiagram-C_Hobpls.js.map} +1 -1
  18. package/dist/hierarchy-CDFAetye.js +0 -2
  19. package/dist/{linear-BnhqTvdX.js → linear-C-jur735.js} +4 -5
  20. package/dist/{linear-BnhqTvdX.js.map → linear-C-jur735.js.map} +1 -1
  21. package/dist/{link-D-9z7kEr.js → link-DRDgTeij.js} +1 -3
  22. package/dist/{link-D-9z7kEr.js.map → link-DRDgTeij.js.map} +1 -1
  23. package/dist/math-C5EhTgJw.js +0 -2
  24. package/dist/max-CPVNm4tn.js +0 -2
  25. package/dist/{networkDiagram-yraPhqxN.js → networkDiagram-CcQxxJMB.js} +10 -10
  26. package/dist/{networkDiagram-yraPhqxN.js.map → networkDiagram-CcQxxJMB.js.map} +1 -1
  27. package/dist/nodrag-Dq2tlBbe.js +0 -2
  28. package/dist/{observablePlot-C7764aFq.js → observablePlot-BE2I-5e2.js} +46 -38
  29. package/dist/{observablePlot-C7764aFq.js.map → observablePlot-BE2I-5e2.js.map} +1 -1
  30. package/dist/{ordinal-uZdoVxAx.js → ordinal-CDNZetSD.js} +1 -3
  31. package/dist/{ordinal-uZdoVxAx.js.map → ordinal-CDNZetSD.js.map} +1 -1
  32. package/dist/palette-BuTjISrV.js +0 -2
  33. package/dist/{path-6kmCrmEz.js → path-BoJ8LMXE.js} +6 -6
  34. package/dist/{path-6kmCrmEz.js.map → path-BoJ8LMXE.js.map} +1 -1
  35. package/dist/{point-6cHftmvM.js → point-GXxVI808.js} +1 -3
  36. package/dist/{point-6cHftmvM.js.map → point-GXxVI808.js.map} +1 -1
  37. package/dist/{pow-BFDPqS3s.js → pow-CxQV96gC.js} +1 -3
  38. package/dist/{pow-BFDPqS3s.js.map → pow-CxQV96gC.js.map} +1 -1
  39. package/dist/{sankeyDiagram-BT2RCRpi.js → sankeyDiagram-DOF6arSJ.js} +1 -3
  40. package/dist/{sankeyDiagram-BT2RCRpi.js.map → sankeyDiagram-DOF6arSJ.js.map} +1 -1
  41. package/dist/select-BIuoFcZG.js +0 -2
  42. package/dist/{src-Xlr4CcSw.js → src-Dl4_vNYa.js} +5 -5
  43. package/dist/{src-Xlr4CcSw.js.map → src-Dl4_vNYa.js.map} +1 -1
  44. package/dist/src-WDualLFV.js +0 -2
  45. package/dist/src-yL3ZdoR1.js +0 -2
  46. package/dist/{step-DgCcZZ3W.js → step-C2rRFtYO.js} +4 -4
  47. package/dist/{step-DgCcZZ3W.js.map → step-C2rRFtYO.js.map} +1 -1
  48. package/dist/string-CnCj7THX.js +0 -2
  49. package/dist/sum-CNP0Xric.js +0 -2
  50. package/dist/{tanStackCharts-DNzjtkwh.js → tanStackCharts-CqP0qIAr.js} +293 -263
  51. package/dist/tanStackCharts-CqP0qIAr.js.map +1 -0
  52. package/dist/{treeDiagram-DsHUD8ou.js → treeDiagram-FUVkkblR.js} +1 -3
  53. package/dist/{treeDiagram-DsHUD8ou.js.map → treeDiagram-FUVkkblR.js.map} +1 -1
  54. package/dist/types/src/index.d.ts +1 -1
  55. package/package.json +10 -10
  56. package/dist/tanStackCharts-DNzjtkwh.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { g as e, p as t } from "./linear-BnhqTvdX.js";
1
+ import { g as e, p as t } from "./linear-C-jur735.js";
2
2
  //#region node_modules/d3-scale/src/ordinal.js
3
3
  var n = Symbol("implicit");
4
4
  function r() {
@@ -26,5 +26,3 @@ function r() {
26
26
  }
27
27
  //#endregion
28
28
  export { r as n, n as t };
29
-
30
- //# sourceMappingURL=ordinal-uZdoVxAx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ordinal-uZdoVxAx.js","names":[],"sources":["../node_modules/d3-scale/src/ordinal.js"],"sourcesContent":["import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n"],"x_google_ignoreList":[0],"mappings":";;AAGA,IAAa,IAAW,OAAO,UAAU;AAEzC,SAAwB,IAAU;CAChC,IAAI,IAAQ,IAAI,EAAU,GACtB,IAAS,CAAC,GACV,IAAQ,CAAC,GACT,IAAU;CAEd,SAAS,EAAM,GAAG;EAChB,IAAI,IAAI,EAAM,IAAI,CAAC;EACnB,IAAI,MAAM,KAAA,GAAW;GACnB,IAAI,MAAY,GAAU,OAAO;GACjC,EAAM,IAAI,GAAG,IAAI,EAAO,KAAK,CAAC,IAAI,CAAC;EACrC;EACA,OAAO,EAAM,IAAI,EAAM;CACzB;CA0BA,OAxBA,EAAM,SAAS,SAAS,GAAG;EACzB,IAAI,CAAC,UAAU,QAAQ,OAAO,EAAO,MAAM;EAC3C,IAAS,CAAC,GAAG,IAAQ,IAAI,EAAU;EACnC,KAAK,IAAM,KAAS,GACd,EAAM,IAAI,CAAK,KACnB,EAAM,IAAI,GAAO,EAAO,KAAK,CAAK,IAAI,CAAC;EAEzC,OAAO;CACT,GAEA,EAAM,QAAQ,SAAS,GAAG;EACxB,OAAO,UAAU,UAAU,IAAQ,MAAM,KAAK,CAAC,GAAG,KAAS,EAAM,MAAM;CACzE,GAEA,EAAM,UAAU,SAAS,GAAG;EAC1B,OAAO,UAAU,UAAU,IAAU,GAAG,KAAS;CACnD,GAEA,EAAM,OAAO,WAAW;EACtB,OAAO,EAAQ,GAAQ,CAAK,CAAC,CAAC,QAAQ,CAAO;CAC/C,GAEA,EAAU,MAAM,GAAO,SAAS,GAEzB;AACT"}
1
+ {"version":3,"file":"ordinal-CDNZetSD.js","names":[],"sources":["../node_modules/d3-scale/src/ordinal.js"],"sourcesContent":["import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n"],"x_google_ignoreList":[0],"mappings":";;AAGA,IAAa,IAAW,OAAO,UAAU;AAEzC,SAAwB,IAAU;CAChC,IAAI,IAAQ,IAAI,EAAU,GACtB,IAAS,CAAC,GACV,IAAQ,CAAC,GACT,IAAU;CAEd,SAAS,EAAM,GAAG;EAChB,IAAI,IAAI,EAAM,IAAI,CAAC;EACnB,IAAI,MAAM,KAAA,GAAW;GACnB,IAAI,MAAY,GAAU,OAAO;GACjC,EAAM,IAAI,GAAG,IAAI,EAAO,KAAK,CAAC,IAAI,CAAC;EACrC;EACA,OAAO,EAAM,IAAI,EAAM;CACzB;CA0BA,OAxBA,EAAM,SAAS,SAAS,GAAG;EACzB,IAAI,CAAC,UAAU,QAAQ,OAAO,EAAO,MAAM;EAC3C,IAAS,CAAC,GAAG,IAAQ,IAAI,EAAU;EACnC,KAAK,IAAM,KAAS,GACd,EAAM,IAAI,CAAK,KACnB,EAAM,IAAI,GAAO,EAAO,KAAK,CAAK,IAAI,CAAC;EAEzC,OAAO;CACT,GAEA,EAAM,QAAQ,SAAS,GAAG;EACxB,OAAO,UAAU,UAAU,IAAQ,MAAM,KAAK,CAAC,GAAG,KAAS,EAAM,MAAM;CACzE,GAEA,EAAM,UAAU,SAAS,GAAG;EAC1B,OAAO,UAAU,UAAU,IAAU,GAAG,KAAS;CACnD,GAEA,EAAM,OAAO,WAAW;EACtB,OAAO,EAAQ,GAAQ,CAAK,CAAC,CAAC,QAAQ,CAAO;CAC/C,GAEA,EAAU,MAAM,GAAO,SAAS,GAEzB;AACT"}
@@ -60,5 +60,3 @@ function r(t, n) {
60
60
  }
61
61
  //#endregion
62
62
  export { n, r, t };
63
-
64
- //# sourceMappingURL=palette-BuTjISrV.js.map
@@ -37,10 +37,12 @@ var o = class {
37
37
  if (t = +t, r = +r, i = +i, a = +a, o = +o, o < 0) throw Error(`negative radius: ${o}`);
38
38
  let s = this._x1, c = this._y1, l = i - t, u = a - r, d = s - t, f = c - r, p = d * d + f * f;
39
39
  if (this._x1 === null) this._append`M${this._x1 = t},${this._y1 = r}`;
40
- else if (p > n) if (!(Math.abs(f * l - u * d) > n) || !o) this._append`L${this._x1 = t},${this._y1 = r}`;
41
- else {
42
- let m = i - s, h = a - c, g = l * l + u * u, _ = m * m + h * h, v = Math.sqrt(g), y = Math.sqrt(p), b = o * Math.tan((e - Math.acos((g + p - _) / (2 * v * y))) / 2), x = b / y, S = b / v;
43
- Math.abs(x - 1) > n && this._append`L${t + x * d},${r + x * f}`, this._append`A${o},${o},0,0,${+(f * m > d * h)},${this._x1 = t + S * l},${this._y1 = r + S * u}`;
40
+ else if (p > n) {
41
+ if (!(Math.abs(f * l - u * d) > n) || !o) this._append`L${this._x1 = t},${this._y1 = r}`;
42
+ else {
43
+ let m = i - s, h = a - c, g = l * l + u * u, _ = m * m + h * h, v = Math.sqrt(g), y = Math.sqrt(p), b = o * Math.tan((e - Math.acos((g + p - _) / (2 * v * y))) / 2), x = b / y, S = b / v;
44
+ Math.abs(x - 1) > n && this._append`L${t + x * d},${r + x * f}`, this._append`A${o},${o},0,0,${+(f * m > d * h)},${this._x1 = t + S * l},${this._y1 = r + S * u}`;
45
+ }
44
46
  }
45
47
  }
46
48
  arc(i, a, o, s, c, l) {
@@ -64,5 +66,3 @@ function c(e = 3) {
64
66
  }
65
67
  //#endregion
66
68
  export { s as n, c as r, o as t };
67
-
68
- //# sourceMappingURL=path-6kmCrmEz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"path-6kmCrmEz.js","names":[],"sources":["../node_modules/d3-path/src/path.js"],"sourcesContent":["const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"path-BoJ8LMXE.js","names":[],"sources":["../node_modules/d3-path/src/path.js"],"sourcesContent":["const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./path-6kmCrmEz.js";
1
+ import { t as e } from "./path-BoJ8LMXE.js";
2
2
  //#region node_modules/d3-shape/src/path.js
3
3
  function t(t) {
4
4
  let n = 3;
@@ -23,5 +23,3 @@ function r(e) {
23
23
  }
24
24
  //#endregion
25
25
  export { r as n, t as r, n as t };
26
-
27
- //# sourceMappingURL=point-6cHftmvM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"point-6cHftmvM.js","names":[],"sources":["../node_modules/d3-shape/src/path.js","../node_modules/d3-shape/src/point.js"],"sourcesContent":["import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n"],"x_google_ignoreList":[0,1],"mappings":";;AAEA,SAAgB,EAAS,GAAO;CAC9B,IAAI,IAAS;CAcb,OAZA,EAAM,SAAS,SAAS,GAAG;EACzB,IAAI,CAAC,UAAU,QAAQ,OAAO;EAC9B,IAAI,KAAK,MACP,IAAS;OACJ;GACL,IAAM,IAAI,KAAK,MAAM,CAAC;GACtB,IAAI,EAAE,KAAK,IAAI,MAAU,WAAW,mBAAmB,GAAG;GAC1D,IAAS;EACX;EACA,OAAO;CACT,SAEa,IAAI,EAAK,CAAM;AAC9B;;;AClBA,SAAgB,EAAE,GAAG;CACnB,OAAO,EAAE;AACX;AAEA,SAAgB,EAAE,GAAG;CACnB,OAAO,EAAE;AACX"}
1
+ {"version":3,"file":"point-GXxVI808.js","names":[],"sources":["../node_modules/d3-shape/src/path.js","../node_modules/d3-shape/src/point.js"],"sourcesContent":["import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n"],"x_google_ignoreList":[0,1],"mappings":";;AAEA,SAAgB,EAAS,GAAO;CAC9B,IAAI,IAAS;CAcb,OAZA,EAAM,SAAS,SAAS,GAAG;EACzB,IAAI,CAAC,UAAU,QAAQ,OAAO;EAC9B,IAAI,KAAK,MACP,IAAS;OACJ;GACL,IAAM,IAAI,KAAK,MAAM,CAAC;GACtB,IAAI,EAAE,KAAK,IAAI,MAAU,WAAW,mBAAmB,GAAG;GAC1D,IAAS;EACX;EACA,OAAO;CACT,SAEa,IAAI,EAAK,CAAM;AAC9B;;;AClBA,SAAgB,EAAE,GAAG;CACnB,OAAO,EAAE;AACX;AAEA,SAAgB,EAAE,GAAG;CACnB,OAAO,EAAE;AACX"}
@@ -1,4 +1,4 @@
1
- import { c as e, g as t, n, o as r, p as i, s as a } from "./linear-BnhqTvdX.js";
1
+ import { c as e, g as t, n, o as r, p as i, s as a } from "./linear-C-jur735.js";
2
2
  //#region \0rolldown/runtime.js
3
3
  var o = Object.create, s = Object.defineProperty, c = Object.getOwnPropertyDescriptor, l = Object.getOwnPropertyNames, u = Object.getPrototypeOf, d = Object.prototype.hasOwnProperty, f = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), p = (e, t) => {
4
4
  let n = {};
@@ -82,5 +82,3 @@ function D() {
82
82
  }
83
83
  //#endregion
84
84
  export { v as a, p as c, b as i, h as l, E as n, y as o, _ as r, f as s, D as t };
85
-
86
- //# sourceMappingURL=pow-BFDPqS3s.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pow-BFDPqS3s.js","names":["identity"],"sources":["../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/group.js","../node_modules/d3-scale/src/pow.js"],"sourcesContent":["export default function identity(x) {\n return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,SAAwB,EAAS,GAAG;CAClC,OAAO;AACT;;;ACCA,SAAwB,EAAM,GAAQ,GAAG,GAAM;CAC7C,OAAO,EAAK,GAAQ,GAAU,GAAU,CAAI;AAC9C;AAqBA,SAAgB,EAAO,GAAQ,GAAQ,GAAG,GAAM;CAC9C,OAAO,EAAK,GAAQ,GAAU,GAAQ,CAAI;AAC5C;AAEA,SAAgB,EAAQ,GAAQ,GAAQ,GAAG,GAAM;CAC/C,OAAO,EAAK,GAAQ,MAAM,MAAM,GAAQ,CAAI;AAC9C;AAEA,SAAgB,EAAM,GAAQ,GAAG,GAAM;CACrC,OAAO,EAAK,GAAQ,GAAU,GAAQ,CAAI;AAC5C;AAMA,SAAS,EAAO,GAAQ;CACtB,IAAI,EAAO,WAAW,GAAG,MAAU,MAAM,eAAe;CACxD,OAAO,EAAO;AAChB;AAEA,SAAS,EAAK,GAAQ,GAAK,GAAQ,GAAM;CACvC,QAAQ,SAAS,EAAQ,GAAQ,GAAG;EAClC,IAAI,KAAK,EAAK,QAAQ,OAAO,EAAO,CAAM;EAC1C,IAAM,IAAS,IAAI,EAAU,GACvB,IAAQ,EAAK,MACf,IAAQ;EACZ,KAAK,IAAM,KAAS,GAAQ;GAC1B,IAAM,IAAM,EAAM,GAAO,EAAE,GAAO,CAAM,GAClC,IAAQ,EAAO,IAAI,CAAG;GAC5B,AAAI,IAAO,EAAM,KAAK,CAAK,IACtB,EAAO,IAAI,GAAK,CAAC,CAAK,CAAC;EAC9B;EACA,KAAK,IAAM,CAAC,GAAK,MAAW,GAC1B,EAAO,IAAI,GAAK,EAAQ,GAAQ,CAAC,CAAC;EAEpC,OAAO,EAAI,CAAM;CACnB,EAAA,CAAG,GAAQ,CAAC;AACd;;;AC5DA,SAAS,EAAa,GAAU;CAC9B,OAAO,SAAS,GAAG;EACjB,OAAO,IAAI,IAAI,GAAU,CAAC,OAAG,KAAqB,MAAG;CACvD;AACF;AAEA,SAAS,EAAc,GAAG;CACxB,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;AAC7C;AAEA,SAAS,EAAgB,GAAG;CAC1B,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;AAC9B;AAEA,SAAgB,EAAO,GAAW;CAChC,IAAI,IAAQ,EAAUA,GAAUA,CAAQ,GACpC,IAAW;CAEf,SAAS,IAAU;EACjB,OAAO,MAAa,IAAI,EAAUA,GAAUA,CAAQ,IAC9C,MAAa,KAAM,EAAU,GAAe,CAAe,IAC3D,EAAU,EAAa,CAAQ,GAAG,EAAa,IAAI,CAAQ,CAAC;CACpE;CAMA,OAJA,EAAM,WAAW,SAAS,GAAG;EAC3B,OAAO,UAAU,UAAU,IAAW,CAAC,GAAG,EAAQ,KAAK;CACzD,GAEO,EAAU,CAAK;AACxB;AAEA,SAAwB,IAAM;CAC5B,IAAI,IAAQ,EAAO,EAAY,CAAC;CAQhC,OANA,EAAM,OAAO,WAAW;EACtB,OAAO,EAAK,GAAO,EAAI,CAAC,CAAC,CAAC,SAAS,EAAM,SAAS,CAAC;CACrD,GAEA,EAAU,MAAM,GAAO,SAAS,GAEzB;AACT"}
1
+ {"version":3,"file":"pow-CxQV96gC.js","names":["identity"],"sources":["../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/group.js","../node_modules/d3-scale/src/pow.js"],"sourcesContent":["export default function identity(x) {\n return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,SAAwB,EAAS,GAAG;CAClC,OAAO;AACT;;;ACCA,SAAwB,EAAM,GAAQ,GAAG,GAAM;CAC7C,OAAO,EAAK,GAAQ,GAAU,GAAU,CAAI;AAC9C;AAqBA,SAAgB,EAAO,GAAQ,GAAQ,GAAG,GAAM;CAC9C,OAAO,EAAK,GAAQ,GAAU,GAAQ,CAAI;AAC5C;AAEA,SAAgB,EAAQ,GAAQ,GAAQ,GAAG,GAAM;CAC/C,OAAO,EAAK,GAAQ,MAAM,MAAM,GAAQ,CAAI;AAC9C;AAEA,SAAgB,EAAM,GAAQ,GAAG,GAAM;CACrC,OAAO,EAAK,GAAQ,GAAU,GAAQ,CAAI;AAC5C;AAMA,SAAS,EAAO,GAAQ;CACtB,IAAI,EAAO,WAAW,GAAG,MAAU,MAAM,eAAe;CACxD,OAAO,EAAO;AAChB;AAEA,SAAS,EAAK,GAAQ,GAAK,GAAQ,GAAM;CACvC,QAAQ,SAAS,EAAQ,GAAQ,GAAG;EAClC,IAAI,KAAK,EAAK,QAAQ,OAAO,EAAO,CAAM;EAC1C,IAAM,IAAS,IAAI,EAAU,GACvB,IAAQ,EAAK,MACf,IAAQ;EACZ,KAAK,IAAM,KAAS,GAAQ;GAC1B,IAAM,IAAM,EAAM,GAAO,EAAE,GAAO,CAAM,GAClC,IAAQ,EAAO,IAAI,CAAG;GAC5B,AAAI,IAAO,EAAM,KAAK,CAAK,IACtB,EAAO,IAAI,GAAK,CAAC,CAAK,CAAC;EAC9B;EACA,KAAK,IAAM,CAAC,GAAK,MAAW,GAC1B,EAAO,IAAI,GAAK,EAAQ,GAAQ,CAAC,CAAC;EAEpC,OAAO,EAAI,CAAM;CACnB,EAAA,CAAG,GAAQ,CAAC;AACd;;;AC5DA,SAAS,EAAa,GAAU;CAC9B,OAAO,SAAS,GAAG;EACjB,OAAO,IAAI,IAAI,GAAU,CAAC,OAAG,KAAqB,MAAG;CACvD;AACF;AAEA,SAAS,EAAc,GAAG;CACxB,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;AAC7C;AAEA,SAAS,EAAgB,GAAG;CAC1B,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;AAC9B;AAEA,SAAgB,EAAO,GAAW;CAChC,IAAI,IAAQ,EAAUA,GAAUA,CAAQ,GACpC,IAAW;CAEf,SAAS,IAAU;EACjB,OAAO,MAAa,IAAI,EAAUA,GAAUA,CAAQ,IAC9C,MAAa,KAAM,EAAU,GAAe,CAAe,IAC3D,EAAU,EAAa,CAAQ,GAAG,EAAa,IAAI,CAAQ,CAAC;CACpE;CAMA,OAJA,EAAM,WAAW,SAAS,GAAG;EAC3B,OAAO,UAAU,UAAU,IAAW,CAAC,GAAG,EAAQ,KAAK;CACzD,GAEO,EAAU,CAAK;AACxB;AAEA,SAAwB,IAAM;CAC5B,IAAI,IAAQ,EAAO,EAAY,CAAC;CAQhC,OANA,EAAM,OAAO,WAAW;EACtB,OAAO,EAAK,GAAO,EAAI,CAAC,CAAC,CAAC,SAAS,EAAM,SAAS,CAAC;CACrD,GAEA,EAAU,MAAM,GAAO,SAAS,GAEzB;AACT"}
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./max-CPVNm4tn.js";
2
2
  import { n as t, t as n } from "./sum-CNP0Xric.js";
3
3
  import { t as r } from "./select-BIuoFcZG.js";
4
- import { t as i } from "./link-D-9z7kEr.js";
4
+ import { t as i } from "./link-DRDgTeij.js";
5
5
  import { n as a, r as o, t as s } from "./palette-BuTjISrV.js";
6
6
  //#region node_modules/d3-sankey/src/align.js
7
7
  function c(e, t) {
@@ -297,5 +297,3 @@ function O(e, t, n = {}) {
297
297
  }
298
298
  //#endregion
299
299
  export { O as renderSankeyDiagram };
300
-
301
- //# sourceMappingURL=sankeyDiagram-BT2RCRpi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sankeyDiagram-BT2RCRpi.js","names":[],"sources":["../node_modules/d3-sankey/src/align.js","../node_modules/d3-sankey/src/constant.js","../node_modules/d3-sankey/src/sankey.js","../node_modules/d3-sankey/src/sankeyLinkHorizontal.js","../src/sankeyDiagram.ts"],"sourcesContent":["import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n","export default function constant(x) {\n return function() {\n return x;\n };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n","// ── External Dependencies & Registrations\nimport { select } from 'd3-selection';\nimport { sankey, type SankeyGraph, type SankeyLink as SankeyLinkExtra, sankeyLinkHorizontal, type SankeyNode as SankeyNodeExtra } from 'd3-sankey';\n\n// ── Local\nimport { categoricalColor, type ColorModeId, INK, SURFACE } from '@/palette';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport interface SankeyDiagramNode {\n id: string;\n name: string;\n}\n\nexport interface SankeyDiagramLink {\n source: string;\n target: string;\n value: number;\n}\n\nexport interface SankeyDiagramData {\n links: SankeyDiagramLink[];\n nodes: SankeyDiagramNode[];\n}\n\nexport interface SankeyDiagramOptions {\n colorModeId?: ColorModeId;\n nodePadding?: number;\n nodeWidth?: number;\n}\n\nexport interface SankeyDiagramHandle {\n resize: () => void;\n svg: SVGSVGElement;\n}\n\ntype LaidOutNode = SankeyDiagramNode & SankeyNodeExtra<SankeyDiagramNode, SankeyDiagramLink>;\ntype LaidOutLink = SankeyLinkExtra<SankeyDiagramNode, SankeyDiagramLink>;\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_NODE_WIDTH = 16;\nconst DEFAULT_NODE_PADDING = 12;\nconst DEFAULT_HEIGHT = 480;\nconst DEFAULT_WIDTH = 640;\nconst LABEL_MARGIN = 6;\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function renderSankeyDiagram(data: SankeyDiagramData, renderTo: HTMLElement, options: SankeyDiagramOptions = {}): SankeyDiagramHandle {\n const colorModeId = options.colorModeId ?? 'light';\n const ink = INK[colorModeId];\n const surface = SURFACE[colorModeId];\n\n if (getComputedStyle(renderTo).position === 'static') renderTo.style.position = 'relative';\n\n const tooltip = select(renderTo)\n .append('div')\n .attr('role', 'tooltip')\n .style('position', 'absolute')\n .style('pointer-events', 'none')\n .style('z-index', '1')\n .style('opacity', '0')\n .style('transition', 'opacity 120ms ease')\n .style('padding', '4px 8px')\n .style('border-radius', '4px')\n .style('font', '12px system-ui, -apple-system, \"Segoe UI\", sans-serif')\n .style('white-space', 'nowrap')\n .style('background', surface.chart)\n .style('color', ink.primary)\n .style('border', `1px solid ${surface.border}`)\n .style('box-shadow', '0 2px 8px rgba(0,0,0,0.15)');\n\n function showTooltip(event: MouseEvent, text: string): void {\n const bounds = renderTo.getBoundingClientRect();\n tooltip\n .html(text)\n .style('left', `${String(event.clientX - bounds.left + 12)}px`)\n .style('top', `${String(event.clientY - bounds.top + 12)}px`)\n .style('opacity', '1');\n }\n\n function hideTooltip(): void {\n tooltip.style('opacity', '0');\n }\n\n function draw(): SVGSVGElement {\n select(renderTo).selectAll('svg').remove();\n\n const width = renderTo.clientWidth || DEFAULT_WIDTH;\n const height = renderTo.clientHeight || DEFAULT_HEIGHT;\n\n const graph: SankeyGraph<SankeyDiagramNode, SankeyDiagramLink> = {\n links: data.links.map((link) => ({ ...link })),\n nodes: data.nodes.map((node) => ({ ...node }))\n };\n\n const layout = sankey<SankeyDiagramNode, SankeyDiagramLink>()\n .nodeId((node) => node.id)\n .nodeWidth(options.nodeWidth ?? DEFAULT_NODE_WIDTH)\n .nodePadding(options.nodePadding ?? DEFAULT_NODE_PADDING)\n .extent([\n [1, 1],\n [width - 1, height - 1]\n ]);\n\n const { links, nodes } = layout(graph) as { links: LaidOutLink[]; nodes: LaidOutNode[] };\n\n const svgSelection = select(renderTo)\n .insert('svg', 'div')\n .attr('viewBox', `0 0 ${String(width)} ${String(height)}`)\n .attr('width', '100%')\n .attr('height', '100%')\n .attr('font-family', 'system-ui, -apple-system, \"Segoe UI\", sans-serif')\n .attr('font-size', 12);\n\n const linkPath = sankeyLinkHorizontal<SankeyDiagramNode, SankeyDiagramLink>();\n\n svgSelection\n .append('g')\n .attr('fill', 'none')\n .selectAll('path')\n .data(links)\n .join('path')\n .attr('d', linkPath)\n .attr('stroke', (link) => categoricalColor(nodes.indexOf(link.source as LaidOutNode), colorModeId))\n .attr('stroke-opacity', 0.35)\n .attr('stroke-width', (link) => Math.max(1, link.width ?? 1))\n .on('mouseenter', (event: MouseEvent, link) => {\n select(event.currentTarget as SVGPathElement).attr('stroke-opacity', 0.6);\n const source = link.source as LaidOutNode;\n const target = link.target as LaidOutNode;\n showTooltip(event, `${source.name} → ${target.name}<br>${link.value.toLocaleString()}`);\n })\n .on('mousemove', (event: MouseEvent, link) => {\n const source = link.source as LaidOutNode;\n const target = link.target as LaidOutNode;\n showTooltip(event, `${source.name} → ${target.name}<br>${link.value.toLocaleString()}`);\n })\n .on('mouseleave', (event: MouseEvent) => {\n select(event.currentTarget as SVGPathElement).attr('stroke-opacity', 0.35);\n hideTooltip();\n });\n\n const nodeGroup = svgSelection.append('g').selectAll('g').data(nodes).join('g');\n\n nodeGroup\n .append('rect')\n .attr('x', (node) => node.x0 ?? 0)\n .attr('y', (node) => node.y0 ?? 0)\n .attr('width', (node) => (node.x1 ?? 0) - (node.x0 ?? 0))\n .attr('height', (node) => Math.max(1, (node.y1 ?? 0) - (node.y0 ?? 0)))\n .attr('rx', 2)\n .attr('fill', (_node, index) => categoricalColor(index, colorModeId))\n .on('mouseenter', (event: MouseEvent, node) => {\n showTooltip(event, `${node.name}<br>${(node.value ?? 0).toLocaleString()}`);\n })\n .on('mousemove', (event: MouseEvent, node) => {\n showTooltip(event, `${node.name}<br>${(node.value ?? 0).toLocaleString()}`);\n })\n .on('mouseleave', hideTooltip);\n\n nodeGroup\n .append('text')\n .attr('x', (node) => ((node.x0 ?? 0) < width / 2 ? (node.x1 ?? 0) + LABEL_MARGIN : (node.x0 ?? 0) - LABEL_MARGIN))\n .attr('y', (node) => ((node.y0 ?? 0) + (node.y1 ?? 0)) / 2)\n .attr('dy', '0.35em')\n .attr('text-anchor', (node) => ((node.x0 ?? 0) < width / 2 ? 'start' : 'end'))\n .attr('fill', ink.primary)\n .text((node) => node.name);\n\n const svgNode = svgSelection.node();\n if (svgNode == null) throw new Error('Failed to create Sankey diagram SVG element.');\n return svgNode;\n }\n\n let svg = draw();\n\n return {\n resize: () => {\n svg = draw();\n },\n get svg() {\n return svg;\n }\n };\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
1
+ {"version":3,"file":"sankeyDiagram-DOF6arSJ.js","names":[],"sources":["../node_modules/d3-sankey/src/align.js","../node_modules/d3-sankey/src/constant.js","../node_modules/d3-sankey/src/sankey.js","../node_modules/d3-sankey/src/sankeyLinkHorizontal.js","../src/sankeyDiagram.ts"],"sourcesContent":["import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n","export default function constant(x) {\n return function() {\n return x;\n };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n","// ── External Dependencies & Registrations\nimport { select } from 'd3-selection';\nimport { sankey, type SankeyGraph, type SankeyLink as SankeyLinkExtra, sankeyLinkHorizontal, type SankeyNode as SankeyNodeExtra } from 'd3-sankey';\n\n// ── Local\nimport { categoricalColor, type ColorModeId, INK, SURFACE } from '@/palette';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport interface SankeyDiagramNode {\n id: string;\n name: string;\n}\n\nexport interface SankeyDiagramLink {\n source: string;\n target: string;\n value: number;\n}\n\nexport interface SankeyDiagramData {\n links: SankeyDiagramLink[];\n nodes: SankeyDiagramNode[];\n}\n\nexport interface SankeyDiagramOptions {\n colorModeId?: ColorModeId;\n nodePadding?: number;\n nodeWidth?: number;\n}\n\nexport interface SankeyDiagramHandle {\n resize: () => void;\n svg: SVGSVGElement;\n}\n\ntype LaidOutNode = SankeyDiagramNode & SankeyNodeExtra<SankeyDiagramNode, SankeyDiagramLink>;\ntype LaidOutLink = SankeyLinkExtra<SankeyDiagramNode, SankeyDiagramLink>;\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_NODE_WIDTH = 16;\nconst DEFAULT_NODE_PADDING = 12;\nconst DEFAULT_HEIGHT = 480;\nconst DEFAULT_WIDTH = 640;\nconst LABEL_MARGIN = 6;\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function renderSankeyDiagram(data: SankeyDiagramData, renderTo: HTMLElement, options: SankeyDiagramOptions = {}): SankeyDiagramHandle {\n const colorModeId = options.colorModeId ?? 'light';\n const ink = INK[colorModeId];\n const surface = SURFACE[colorModeId];\n\n if (getComputedStyle(renderTo).position === 'static') renderTo.style.position = 'relative';\n\n const tooltip = select(renderTo)\n .append('div')\n .attr('role', 'tooltip')\n .style('position', 'absolute')\n .style('pointer-events', 'none')\n .style('z-index', '1')\n .style('opacity', '0')\n .style('transition', 'opacity 120ms ease')\n .style('padding', '4px 8px')\n .style('border-radius', '4px')\n .style('font', '12px system-ui, -apple-system, \"Segoe UI\", sans-serif')\n .style('white-space', 'nowrap')\n .style('background', surface.chart)\n .style('color', ink.primary)\n .style('border', `1px solid ${surface.border}`)\n .style('box-shadow', '0 2px 8px rgba(0,0,0,0.15)');\n\n function showTooltip(event: MouseEvent, text: string): void {\n const bounds = renderTo.getBoundingClientRect();\n tooltip\n .html(text)\n .style('left', `${String(event.clientX - bounds.left + 12)}px`)\n .style('top', `${String(event.clientY - bounds.top + 12)}px`)\n .style('opacity', '1');\n }\n\n function hideTooltip(): void {\n tooltip.style('opacity', '0');\n }\n\n function draw(): SVGSVGElement {\n select(renderTo).selectAll('svg').remove();\n\n const width = renderTo.clientWidth || DEFAULT_WIDTH;\n const height = renderTo.clientHeight || DEFAULT_HEIGHT;\n\n const graph: SankeyGraph<SankeyDiagramNode, SankeyDiagramLink> = {\n links: data.links.map((link) => ({ ...link })),\n nodes: data.nodes.map((node) => ({ ...node }))\n };\n\n const layout = sankey<SankeyDiagramNode, SankeyDiagramLink>()\n .nodeId((node) => node.id)\n .nodeWidth(options.nodeWidth ?? DEFAULT_NODE_WIDTH)\n .nodePadding(options.nodePadding ?? DEFAULT_NODE_PADDING)\n .extent([\n [1, 1],\n [width - 1, height - 1]\n ]);\n\n const { links, nodes } = layout(graph) as { links: LaidOutLink[]; nodes: LaidOutNode[] };\n\n const svgSelection = select(renderTo)\n .insert('svg', 'div')\n .attr('viewBox', `0 0 ${String(width)} ${String(height)}`)\n .attr('width', '100%')\n .attr('height', '100%')\n .attr('font-family', 'system-ui, -apple-system, \"Segoe UI\", sans-serif')\n .attr('font-size', 12);\n\n const linkPath = sankeyLinkHorizontal<SankeyDiagramNode, SankeyDiagramLink>();\n\n svgSelection\n .append('g')\n .attr('fill', 'none')\n .selectAll('path')\n .data(links)\n .join('path')\n .attr('d', linkPath)\n .attr('stroke', (link) => categoricalColor(nodes.indexOf(link.source as LaidOutNode), colorModeId))\n .attr('stroke-opacity', 0.35)\n .attr('stroke-width', (link) => Math.max(1, link.width ?? 1))\n .on('mouseenter', (event: MouseEvent, link) => {\n select(event.currentTarget as SVGPathElement).attr('stroke-opacity', 0.6);\n const source = link.source as LaidOutNode;\n const target = link.target as LaidOutNode;\n showTooltip(event, `${source.name} → ${target.name}<br>${link.value.toLocaleString()}`);\n })\n .on('mousemove', (event: MouseEvent, link) => {\n const source = link.source as LaidOutNode;\n const target = link.target as LaidOutNode;\n showTooltip(event, `${source.name} → ${target.name}<br>${link.value.toLocaleString()}`);\n })\n .on('mouseleave', (event: MouseEvent) => {\n select(event.currentTarget as SVGPathElement).attr('stroke-opacity', 0.35);\n hideTooltip();\n });\n\n const nodeGroup = svgSelection.append('g').selectAll('g').data(nodes).join('g');\n\n nodeGroup\n .append('rect')\n .attr('x', (node) => node.x0 ?? 0)\n .attr('y', (node) => node.y0 ?? 0)\n .attr('width', (node) => (node.x1 ?? 0) - (node.x0 ?? 0))\n .attr('height', (node) => Math.max(1, (node.y1 ?? 0) - (node.y0 ?? 0)))\n .attr('rx', 2)\n .attr('fill', (_node, index) => categoricalColor(index, colorModeId))\n .on('mouseenter', (event: MouseEvent, node) => {\n showTooltip(event, `${node.name}<br>${(node.value ?? 0).toLocaleString()}`);\n })\n .on('mousemove', (event: MouseEvent, node) => {\n showTooltip(event, `${node.name}<br>${(node.value ?? 0).toLocaleString()}`);\n })\n .on('mouseleave', hideTooltip);\n\n nodeGroup\n .append('text')\n .attr('x', (node) => ((node.x0 ?? 0) < width / 2 ? (node.x1 ?? 0) + LABEL_MARGIN : (node.x0 ?? 0) - LABEL_MARGIN))\n .attr('y', (node) => ((node.y0 ?? 0) + (node.y1 ?? 0)) / 2)\n .attr('dy', '0.35em')\n .attr('text-anchor', (node) => ((node.x0 ?? 0) < width / 2 ? 'start' : 'end'))\n .attr('fill', ink.primary)\n .text((node) => node.name);\n\n const svgNode = svgSelection.node();\n if (svgNode == null) throw new Error('Failed to create Sankey diagram SVG element.');\n return svgNode;\n }\n\n let svg = draw();\n\n return {\n resize: () => {\n svg = draw();\n },\n get svg() {\n return svg;\n }\n };\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
@@ -645,5 +645,3 @@ function Qe(e) {
645
645
  }
646
646
  //#endregion
647
647
  export { U as a, c, t as d, e as f, $ as i, o as l, Q as n, p as o, Z as r, u as s, Qe as t, i as u };
648
-
649
- //# sourceMappingURL=select-BIuoFcZG.js.map
@@ -1,4 +1,4 @@
1
- import { a as e, c as t, h as n, i as r, m as i, n as a, o, p as s, r as c, x as l } from "./linear-BnhqTvdX.js";
1
+ import { a as e, c as t, h as n, i as r, m as i, n as a, o, p as s, r as c, x as l } from "./linear-C-jur735.js";
2
2
  import "./src-yL3ZdoR1.js";
3
3
  //#region node_modules/d3-time/src/interval.js
4
4
  var u = /* @__PURE__ */ new Date(), d = /* @__PURE__ */ new Date();
@@ -20,8 +20,10 @@ function f(e, t, n, r) {
20
20
  }, i.filter = (n) => f((t) => {
21
21
  if (t >= t) for (; e(t), !n(t);) t.setTime(t - 1);
22
22
  }, (e, r) => {
23
- if (e >= e) if (r < 0) for (; ++r <= 0;) for (; t(e, -1), !n(e););
24
- else for (; --r >= 0;) for (; t(e, 1), !n(e););
23
+ if (e >= e) {
24
+ if (r < 0) for (; ++r <= 0;) for (; t(e, -1), !n(e););
25
+ else for (; --r >= 0;) for (; t(e, 1), !n(e););
26
+ }
25
27
  }), n && (i.count = (t, r) => (u.setTime(+t), d.setTime(+r), e(u), e(d), Math.floor(n(u, d))), i.every = (e) => (e = Math.floor(e), !isFinite(e) || !(e > 0) ? null : e > 1 ? i.filter(r ? (t) => r(t) % e === 0 : (t) => i.count(0, t) % e === 0) : i)), i;
26
28
  }
27
29
  //#endregion
@@ -953,5 +955,3 @@ function Zt(e) {
953
955
  }
954
956
  //#endregion
955
957
  export { E as A, V as C, B as D, I as E, C as F, x as I, w as M, T as N, R as O, S as P, N as S, H as T, j as _, Bt as a, P as b, St as c, Tt as d, G as f, ee as g, W as h, Vt as i, O as j, z as k, Ct as l, U as m, Kt as n, Lt as o, K as p, Gt as r, It as s, Zt as t, wt as u, te as v, L as w, M as x, A as y };
956
-
957
- //# sourceMappingURL=src-Xlr4CcSw.js.map