jbrowse-plugin-graphgenomeviewer 7.4.2 → 7.4.4

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 (122) hide show
  1. package/README.md +53 -24
  2. package/dist/chunks/{AddTrackWorkflow-LK25EC3H.js → AddTrackWorkflow-NLSZYK56.js} +2 -2
  3. package/dist/chunks/{GbzBaseSyntenyAdapter-BVLBK4OO.js → GbzBaseSyntenyAdapter-A5MNPCKX.js} +2 -2
  4. package/dist/chunks/{GbzBaseSyntenyAdapter-BVLBK4OO.js.map → GbzBaseSyntenyAdapter-A5MNPCKX.js.map} +1 -1
  5. package/dist/chunks/{GraphGenomeView-UCOAMRF7.js → GraphGenomeView-SEAPDRXS.js} +2 -2
  6. package/dist/chunks/{GraphTrackSettingsDialog-MR7X75EY.js → GraphTrackSettingsDialog-EVIIGC5G.js} +2 -2
  7. package/dist/chunks/{HighlightColorDialog-ZBAZDYIR.js → HighlightColorDialog-QAYWLO5I.js} +2 -2
  8. package/dist/chunks/{LinearGraphDisplay-AJ5OZN27.js → LinearGraphDisplay-ZC4BQ27J.js} +2 -2
  9. package/dist/chunks/MinigraphBubbleAdapter-3QM4XV47.js +2 -0
  10. package/dist/chunks/{MinigraphBubbleAdapter-PEQK5NII.js.map → MinigraphBubbleAdapter-3QM4XV47.js.map} +1 -1
  11. package/dist/chunks/{RgfaTabixAdapter-Q63YLPK4.js → RgfaTabixAdapter-XSOIEWBK.js} +2 -2
  12. package/dist/chunks/WalkFormsAdapter-FT2SW4H6.js +2 -0
  13. package/dist/chunks/WalkFormsAdapter-FT2SW4H6.js.map +7 -0
  14. package/dist/chunks/{WalkTabixSyntenyAdapter-N5PFI4LS.js → WalkTabixSyntenyAdapter-3WRVNDLB.js} +2 -2
  15. package/dist/chunks/{chunk-2XZYJLCE.js → chunk-2KVE7YAS.js} +1 -1
  16. package/dist/chunks/{chunk-2XZYJLCE.js.map → chunk-2KVE7YAS.js.map} +1 -1
  17. package/dist/chunks/{chunk-RCXOOBLX.js → chunk-6SWXMRAV.js} +1 -1
  18. package/dist/chunks/{chunk-RCXOOBLX.js.map → chunk-6SWXMRAV.js.map} +1 -1
  19. package/dist/chunks/{chunk-WY5W5X62.js → chunk-6VNU7SD4.js} +2 -2
  20. package/dist/chunks/{chunk-WY5W5X62.js.map → chunk-6VNU7SD4.js.map} +1 -1
  21. package/dist/chunks/{chunk-DXNE2CFX.js → chunk-6WUWQX2P.js} +2 -2
  22. package/dist/chunks/{chunk-DXNE2CFX.js.map → chunk-6WUWQX2P.js.map} +1 -1
  23. package/dist/chunks/{chunk-ZG2CQXOW.js → chunk-7RJMG6I2.js} +2 -2
  24. package/dist/chunks/{chunk-ZG2CQXOW.js.map → chunk-7RJMG6I2.js.map} +1 -1
  25. package/dist/chunks/chunk-FTXDTU27.js +3 -0
  26. package/dist/chunks/chunk-FTXDTU27.js.map +7 -0
  27. package/dist/chunks/chunk-G53BI7VK.js +2 -0
  28. package/dist/chunks/{chunk-MEMUEG5Z.js.map → chunk-G53BI7VK.js.map} +4 -4
  29. package/dist/chunks/chunk-GRTN25B6.js +3 -0
  30. package/dist/chunks/chunk-GRTN25B6.js.map +7 -0
  31. package/dist/chunks/{chunk-62AHPP6H.js → chunk-HCDKP3IP.js} +2 -2
  32. package/dist/chunks/{chunk-62AHPP6H.js.map → chunk-HCDKP3IP.js.map} +1 -1
  33. package/dist/chunks/{chunk-HI3YK2SO.js → chunk-HF4H6LQI.js} +2 -2
  34. package/dist/chunks/{chunk-MVVXRZXV.js → chunk-JRJHXLGP.js} +2 -2
  35. package/dist/chunks/{chunk-MVVXRZXV.js.map → chunk-JRJHXLGP.js.map} +2 -2
  36. package/dist/chunks/{chunk-LFTZNUXB.js → chunk-KIYRMZWP.js} +2 -2
  37. package/dist/chunks/{chunk-LFTZNUXB.js.map → chunk-KIYRMZWP.js.map} +1 -1
  38. package/dist/chunks/{chunk-WJGCVNGH.js → chunk-LE43I4PT.js} +2 -2
  39. package/dist/chunks/{chunk-U5PIXAF2.js → chunk-LE7FZM6Y.js} +2 -2
  40. package/dist/chunks/{chunk-U5PIXAF2.js.map → chunk-LE7FZM6Y.js.map} +1 -1
  41. package/dist/chunks/chunk-MUONTMYZ.js +2 -0
  42. package/dist/chunks/chunk-MUONTMYZ.js.map +7 -0
  43. package/dist/chunks/{chunk-SFYSQ52W.js → chunk-OJWBLPPH.js} +2 -2
  44. package/dist/chunks/{chunk-JSRGX4TC.js → chunk-P3FBI5ML.js} +1 -1
  45. package/dist/chunks/{chunk-JSRGX4TC.js.map → chunk-P3FBI5ML.js.map} +1 -1
  46. package/dist/chunks/chunk-QV7SSOMJ.js +2 -0
  47. package/dist/chunks/chunk-S333HOG5.js +2 -0
  48. package/dist/chunks/chunk-S333HOG5.js.map +7 -0
  49. package/dist/chunks/{chunk-QJ43NDYS.js → chunk-TYV6UXJA.js} +2 -2
  50. package/dist/chunks/chunk-VZQ6VOUP.js +2 -0
  51. package/dist/chunks/chunk-VZQ6VOUP.js.map +7 -0
  52. package/dist/chunks/chunk-WLRRI35A.js +3 -0
  53. package/dist/chunks/chunk-WLRRI35A.js.map +7 -0
  54. package/dist/chunks/{chunk-PUREF4BM.js → chunk-XXBE4IFZ.js} +2 -2
  55. package/dist/chunks/{chunk-PUREF4BM.js.map → chunk-XXBE4IFZ.js.map} +1 -1
  56. package/dist/chunks/{renderSvg-Z7YIXVQ5.js → renderSvg-ZIUOPWJQ.js} +2 -2
  57. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +3 -4
  58. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
  59. package/package.json +3 -3
  60. package/src/GraphGenomeView/model.test.ts +2 -109
  61. package/src/GraphGenomeView/pane/fitViews.ts +0 -109
  62. package/src/GraphGenomeView/pane/graphViews.ts +0 -4
  63. package/src/GraphGenomeView/pane/launchActions.ts +0 -22
  64. package/src/GraphGenomeView/pane/loadActions.ts +1 -1
  65. package/src/GraphGenomeView/pane/paneBase.ts +0 -7
  66. package/src/GraphGenomeView/viewModel.ts +0 -3
  67. package/src/RgfaTabixAdapter/configSchema.ts +3 -3
  68. package/src/RgfaTabixAdapter/walkFiles.test.ts +6 -6
  69. package/src/WalkFormsAdapter/WalkFormsAdapter.test.ts +204 -0
  70. package/src/WalkFormsAdapter/WalkFormsAdapter.ts +232 -0
  71. package/src/WalkFormsAdapter/configSchema.ts +127 -0
  72. package/src/WalkFormsAdapter/formRows.test.ts +258 -0
  73. package/src/WalkFormsAdapter/formRows.ts +231 -0
  74. package/src/WalkFormsAdapter/formsMenu.test.ts +237 -0
  75. package/src/WalkFormsAdapter/formsMenu.ts +202 -0
  76. package/src/WalkFormsAdapter/index.ts +21 -0
  77. package/src/WalkFormsAdapter/pinned.ts +33 -0
  78. package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.test.ts +5 -5
  79. package/src/WalkTabixSyntenyAdapter/configSchema.ts +2 -2
  80. package/src/index.ts +4 -0
  81. package/src/panSNAliases/panSNAliases.test.ts +2 -2
  82. package/src/version.ts +1 -1
  83. package/dist/chunks/MinigraphBubbleAdapter-PEQK5NII.js +0 -2
  84. package/dist/chunks/chunk-55DIX25J.js +0 -3
  85. package/dist/chunks/chunk-55DIX25J.js.map +0 -7
  86. package/dist/chunks/chunk-AWGMTI73.js +0 -3
  87. package/dist/chunks/chunk-AWGMTI73.js.map +0 -7
  88. package/dist/chunks/chunk-FWVXBJ64.js +0 -3
  89. package/dist/chunks/chunk-FWVXBJ64.js.map +0 -7
  90. package/dist/chunks/chunk-J3AXN7JQ.js +0 -2
  91. package/dist/chunks/chunk-MEMUEG5Z.js +0 -2
  92. package/dist/chunks/chunk-Q3BXNKEL.js +0 -2
  93. package/dist/chunks/chunk-Q3BXNKEL.js.map +0 -7
  94. package/dist/chunks/chunk-S75MFZDE.js +0 -2
  95. package/dist/chunks/chunk-S75MFZDE.js.map +0 -7
  96. /package/dist/chunks/{AddTrackWorkflow-LK25EC3H.js.map → AddTrackWorkflow-NLSZYK56.js.map} +0 -0
  97. /package/dist/chunks/{GraphGenomeView-UCOAMRF7.js.map → GraphGenomeView-SEAPDRXS.js.map} +0 -0
  98. /package/dist/chunks/{GraphTrackSettingsDialog-MR7X75EY.js.map → GraphTrackSettingsDialog-EVIIGC5G.js.map} +0 -0
  99. /package/dist/chunks/{HighlightColorDialog-ZBAZDYIR.js.map → HighlightColorDialog-QAYWLO5I.js.map} +0 -0
  100. /package/dist/chunks/{LinearGraphDisplay-AJ5OZN27.js.map → LinearGraphDisplay-ZC4BQ27J.js.map} +0 -0
  101. /package/dist/chunks/{RgfaTabixAdapter-Q63YLPK4.js.map → RgfaTabixAdapter-XSOIEWBK.js.map} +0 -0
  102. /package/dist/chunks/{WalkTabixSyntenyAdapter-N5PFI4LS.js.map → WalkTabixSyntenyAdapter-3WRVNDLB.js.map} +0 -0
  103. /package/dist/chunks/{chunk-HI3YK2SO.js.map → chunk-HF4H6LQI.js.map} +0 -0
  104. /package/dist/chunks/{chunk-WJGCVNGH.js.map → chunk-LE43I4PT.js.map} +0 -0
  105. /package/dist/chunks/{chunk-SFYSQ52W.js.map → chunk-OJWBLPPH.js.map} +0 -0
  106. /package/dist/chunks/{chunk-J3AXN7JQ.js.map → chunk-QV7SSOMJ.js.map} +0 -0
  107. /package/dist/chunks/{chunk-QJ43NDYS.js.map → chunk-TYV6UXJA.js.map} +0 -0
  108. /package/dist/chunks/{renderSvg-Z7YIXVQ5.js.map → renderSvg-ZIUOPWJQ.js.map} +0 -0
  109. /package/src/RgfaTabixAdapter/test_data/{walks4_follow.GRCh38.walks.bed.gz → walks5_follow.GRCh38.walks.bed.gz} +0 -0
  110. /package/src/RgfaTabixAdapter/test_data/{walks4_follow.GRCh38.walks.bed.gz.tbi → walks5_follow.GRCh38.walks.bed.gz.tbi} +0 -0
  111. /package/src/RgfaTabixAdapter/test_data/{walks4_header.GRCh38.walks.bed.gz → walks5_header.GRCh38.walks.bed.gz} +0 -0
  112. /package/src/RgfaTabixAdapter/test_data/{walks4_header.GRCh38.walks.bed.gz.tbi → walks5_header.GRCh38.walks.bed.gz.tbi} +0 -0
  113. /package/src/RgfaTabixAdapter/test_data/{walks4_inversion.GRCh38.walks.bed.gz → walks5_inversion.GRCh38.walks.bed.gz} +0 -0
  114. /package/src/RgfaTabixAdapter/test_data/{walks4_inversion.GRCh38.walks.bed.gz.tbi → walks5_inversion.GRCh38.walks.bed.gz.tbi} +0 -0
  115. /package/src/RgfaTabixAdapter/test_data/{walks4_lanepairs.GRCh38.walks.bed.gz → walks5_lanepairs.GRCh38.walks.bed.gz} +0 -0
  116. /package/src/RgfaTabixAdapter/test_data/{walks4_lanepairs.GRCh38.walks.bed.gz.tbi → walks5_lanepairs.GRCh38.walks.bed.gz.tbi} +0 -0
  117. /package/src/RgfaTabixAdapter/test_data/{walks4_maxnode.GRCh38.walks.bed.gz → walks5_maxnode.GRCh38.walks.bed.gz} +0 -0
  118. /package/src/RgfaTabixAdapter/test_data/{walks4_maxnode.GRCh38.walks.bed.gz.tbi → walks5_maxnode.GRCh38.walks.bed.gz.tbi} +0 -0
  119. /package/src/RgfaTabixAdapter/test_data/{walks4_rejoin.GRCh38.walks.bed.gz → walks5_rejoin.GRCh38.walks.bed.gz} +0 -0
  120. /package/src/RgfaTabixAdapter/test_data/{walks4_rejoin.GRCh38.walks.bed.gz.tbi → walks5_rejoin.GRCh38.walks.bed.gz.tbi} +0 -0
  121. /package/src/RgfaTabixAdapter/test_data/{walks4_twopart.GRCh38.walks.bed.gz → walks5_twopart.GRCh38.walks.bed.gz} +0 -0
  122. /package/src/RgfaTabixAdapter/test_data/{walks4_twopart.GRCh38.walks.bed.gz.tbi → walks5_twopart.GRCh38.walks.bed.gz.tbi} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-CPMHA4W5.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JJV2GT2Z.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HMXCN6PG.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-AB35TJST.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HNNP5QUN.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-TLWXLNLY.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-3GORESBG.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-AURNOR27.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VQ353UDK.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.9.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-ZANALBSX.js"],
4
+ "sourcesContent": ["// src/layout/rowSpacing.ts\nvar ROW_HEIGHT_PX = 20;\n\nexport {\n ROW_HEIGHT_PX\n};\n", "import {\n ROW_HEIGHT_PX\n} from \"./chunk-CPMHA4W5.js\";\n\n// src/util/geometry.ts\nfunction svgPath(points) {\n const round = (v) => Math.round(v * 100) / 100;\n return points.map((p, i) => `${i ? \"L\" : \"M\"}${round(p.x)},${round(p.y)}`).join(\"\");\n}\nfunction projectLine(x1, y1, x2, y2, distance) {\n const d = Math.hypot(y2 - y1, x2 - x1);\n if (d === 0) {\n return [x2, y2];\n }\n const vx = (x2 - x1) / d;\n const vy = (y2 - y1) / d;\n return [x2 + distance * vx, y2 + distance * vy];\n}\nfunction curvePointAt(c, t) {\n const u = 1 - t;\n const a = u * u * u;\n const b = 3 * u * u * t;\n const d = 3 * u * t * t;\n const e = t * t * t;\n return {\n x: a * c.x0 + b * c.cx0 + d * c.cx1 + e * c.x1,\n y: a * c.y0 + b * c.cy0 + d * c.cy1 + e * c.y1\n };\n}\nfunction curveMidpoint(curves) {\n const mid = curves[Math.floor(curves.length / 2)];\n return mid ? curvePointAt(mid, 0.5) : void 0;\n}\nfunction curveBounds(curves) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const c of curves) {\n minX = Math.min(minX, c.x0, c.cx0, c.cx1, c.x1);\n maxX = Math.max(maxX, c.x0, c.cx0, c.cx1, c.x1);\n minY = Math.min(minY, c.y0, c.cy0, c.cy1, c.y1);\n maxY = Math.max(maxY, c.y0, c.cy0, c.cy1, c.y1);\n }\n return { minX, minY, maxX, maxY };\n}\nfunction subCurve(c, t0, t1) {\n const p0 = curvePointAt(c, t0);\n const p1 = curvePointAt(c, t1);\n const dt = (t1 - t0) / 3;\n const d0 = curveTangentAt(c, t0);\n const d1 = curveTangentAt(c, t1);\n return {\n x0: p0.x,\n y0: p0.y,\n cx0: p0.x + d0.x * dt,\n cy0: p0.y + d0.y * dt,\n cx1: p1.x - d1.x * dt,\n cy1: p1.y - d1.y * dt,\n x1: p1.x,\n y1: p1.y\n };\n}\nfunction curveTangentAt(c, t) {\n const u = 1 - t;\n const a = 3 * u * u;\n const b = 6 * u * t;\n const d = 3 * t * t;\n return {\n x: a * (c.cx0 - c.x0) + b * (c.cx1 - c.cx0) + d * (c.x1 - c.cx1),\n y: a * (c.cy0 - c.y0) + b * (c.cy1 - c.cy0) + d * (c.y1 - c.cy1)\n };\n}\nvar VISIBLE_SAMPLES = 32;\nfunction visibleStretches(curves, lengths, bounds, yToX) {\n const stretches = [];\n let start = 0;\n curves.forEach((c, k) => {\n const length = lengths[k];\n const pad = length / VISIBLE_SAMPLES;\n let last = curvePointAt(c, 0);\n for (let i = 1; i <= VISIBLE_SAMPLES; i++) {\n const next = curvePointAt(c, i / VISIBLE_SAMPLES);\n if (Math.max(last.x, next.x) + pad >= bounds.minX && Math.min(last.x, next.x) - pad <= bounds.maxX && Math.max(last.y, next.y) + pad / yToX >= bounds.minY && Math.min(last.y, next.y) - pad / yToX <= bounds.maxY) {\n const from = start + length * (i - 1) / VISIBLE_SAMPLES;\n const to = start + length * i / VISIBLE_SAMPLES;\n const prev = stretches.at(-1);\n if (prev && prev[1] >= from) {\n prev[1] = to;\n } else {\n stretches.push([from, to]);\n }\n }\n last = next;\n }\n start += length;\n });\n return stretches;\n}\nvar dashCurves = (curves, dashWorld, yToX = 1, bounds) => dashSpans(curves, dashWorld, yToX, bounds).map((d) => d.curves);\nfunction dashSpans(curves, dashWorld, yToX = 1, bounds) {\n const lengths = curves.map(\n (c) => Math.hypot(c.cx0 - c.x0, (c.cy0 - c.y0) * yToX) + Math.hypot(c.cx1 - c.cx0, (c.cy1 - c.cy0) * yToX) + Math.hypot(c.x1 - c.cx1, (c.y1 - c.cy1) * yToX)\n );\n const total = lengths.reduce((a, b) => a + b, 0);\n const periods = Math.round(total / dashWorld);\n const spans = Math.max(3, periods % 2 ? periods : periods + 1);\n const stretches = bounds ? visibleStretches(curves, lengths, bounds, yToX) : void 0;\n let seen = 0;\n const out = [];\n for (let i = 0; i < spans; i += 2) {\n const from = i / spans * total;\n const to = (i + 1) / spans * total;\n if (stretches) {\n while (seen < stretches.length && stretches[seen][1] < from) {\n seen++;\n }\n if (seen === stretches.length) {\n break;\n }\n if (stretches[seen][0] > to) {\n continue;\n }\n }\n const dash = [];\n const along = [];\n let start = 0;\n curves.forEach((c, k) => {\n const length = lengths[k];\n const end = start + length;\n if (length > 0 && end > from && start < to) {\n const t0 = Math.max(0, (from - start) / length);\n const t1 = Math.min(1, (to - start) / length);\n dash.push(subCurve(c, t0, t1));\n along.push((k + t0) / curves.length, (k + t1) / curves.length);\n }\n start = end;\n });\n if (dash.length) {\n out.push({\n curves: dash,\n startAlong: along[0],\n endAlong: along.at(-1)\n });\n }\n }\n return out;\n}\nvar slideAt = (from, to, along) => ({\n dx: from.dx + (to.dx - from.dx) * along,\n dy: from.dy + (to.dy - from.dy) * along\n});\nfunction slideCurves(curves, fromDx, fromDy, toDx, toDy) {\n const n = curves.length;\n const out = new Array(n);\n for (let i = 0; i < n; i++) {\n const c = curves[i];\n const a = i / n;\n const b = (i + 1) / n;\n const adx = fromDx + (toDx - fromDx) * a;\n const ady = fromDy + (toDy - fromDy) * a;\n const bdx = fromDx + (toDx - fromDx) * b;\n const bdy = fromDy + (toDy - fromDy) * b;\n out[i] = {\n x0: c.x0 + adx,\n y0: c.y0 + ady,\n cx0: c.cx0 + adx,\n cy0: c.cy0 + ady,\n cx1: c.cx1 + bdx,\n cy1: c.cy1 + bdy,\n x1: c.x1 + bdx,\n y1: c.y1 + bdy\n };\n }\n return out;\n}\nfunction translateCurves(curves, dx, dy) {\n const out = new Array(curves.length);\n for (let i = 0; i < curves.length; i++) {\n const c = curves[i];\n out[i] = {\n x0: c.x0 + dx,\n y0: c.y0 + dy,\n cx0: c.cx0 + dx,\n cy0: c.cy0 + dy,\n cx1: c.cx1 + dx,\n cy1: c.cy1 + dy,\n x1: c.x1 + dx,\n y1: c.y1 + dy\n };\n }\n return out;\n}\nfunction attachment(segments, side) {\n const last = segments.length - 1;\n return side === \"end\" ? { at: segments[last], inward: segments[last - 1] } : { at: segments[0], inward: segments[1] };\n}\nvar TANGENT_SPAN_FACTOR = 0.5;\nvar MAX_TANGENT = 80;\nfunction ownStrand(id) {\n return id.endsWith(\"-\") ? \"-\" : \"+\";\n}\nfunction strandSides(edge) {\n const own = (id, strand) => (strand ?? ownStrand(id)) === ownStrand(id);\n return {\n from: own(edge.from, edge.fromStrand) ? \"end\" : \"start\",\n to: own(edge.to, edge.toStrand) ? \"start\" : \"end\"\n };\n}\nfunction spanOf(segments) {\n let min = Infinity;\n let max = -Infinity;\n for (const s of segments) {\n min = Math.min(min, s.x);\n max = Math.max(max, s.x);\n }\n return { min, max };\n}\nfunction distanceToSpan(x, span) {\n return Math.max(0, span.min - x, x - span.max);\n}\nfunction facingSide(segments, other, tieBreak) {\n const startGap = distanceToSpan(segments[0].x, other);\n const endGap = distanceToSpan(segments[segments.length - 1].x, other);\n return startGap === endGap ? tieBreak : startGap < endGap ? \"start\" : \"end\";\n}\nfunction facingSides(fromSegments, toSegments) {\n return {\n from: facingSide(fromSegments, spanOf(toSegments), \"end\"),\n to: facingSide(toSegments, spanOf(fromSegments), \"start\")\n };\n}\nvar laidSides = /* @__PURE__ */ new WeakMap();\nfunction heldFacingSides(fromSegments, toSegments) {\n let byTo = laidSides.get(fromSegments);\n if (!byTo) {\n byTo = /* @__PURE__ */ new WeakMap();\n laidSides.set(fromSegments, byTo);\n }\n let sides = byTo.get(toSegments);\n if (!sides) {\n sides = facingSides(fromSegments, toSegments);\n byTo.set(toSegments, sides);\n }\n return sides;\n}\nvar APEX_FRACTION = 0.75;\nvar BOW_CLEARANCE = 1.15;\nvar ALONG_FRACTION = 0.35;\nvar MAX_ROW_BOW_PX = 3 * ROW_HEIGHT_PX;\nfunction bowAround(p1x, p1y, p2x, p2y, toward, maxBow) {\n const chord = Math.hypot(p2x - p1x, p2y - p1y);\n const ux = chord === 0 ? 1 : (p2x - p1x) / chord;\n const uy = chord === 0 ? 0 : (p2y - p1y) / chord;\n let reach = 0;\n let minAlong = Infinity;\n let maxAlong = -Infinity;\n for (const p of toward) {\n const dx = p.x - p1x;\n const dy = p.y - p1y;\n const perp = dx * -uy + dy * ux;\n if (Math.abs(perp) > Math.abs(reach)) {\n reach = perp;\n }\n const along = dx * ux + dy * uy;\n minAlong = Math.min(minAlong, along);\n maxAlong = Math.max(maxAlong, along);\n }\n const span = toward.length ? maxAlong - minAlong : 0;\n const uncapped = Math.max(\n Math.abs(reach) * BOW_CLEARANCE / APEX_FRACTION,\n span * ALONG_FRACTION\n );\n const size = maxBow === void 0 ? uncapped : Math.min(uncapped, maxBow);\n return reach < 0 ? -size : size;\n}\nfunction yToXOf({ scaleX, scaleY }) {\n return scaleY / scaleX;\n}\nvar PATH_RIBBON_SPACING_PX = 3;\nfunction drawnDirection(a, b, yToX) {\n const dx = b.x - a.x;\n const dy = (b.y - a.y) * yToX;\n const len = Math.hypot(dx, dy);\n return len === 0 ? void 0 : { x: dx / len, y: dy / len };\n}\nfunction pathRibbonOffsets(fromSegments, toSegments, count, axis) {\n const yToX = yToXOf(axis);\n const spacing = PATH_RIBBON_SPACING_PX / Math.max(axis.scaleX, 1e-6);\n const dir = drawnDirection(\n fromSegments[fromSegments.length - 1],\n toSegments[0],\n yToX\n ) ?? drawnDirection(fromSegments[0], fromSegments.at(-1), yToX) ?? drawnDirection(toSegments[0], toSegments.at(-1), yToX) ?? { x: 1, y: 0 };\n const offsets = [];\n for (let i = 0; i < count; i++) {\n const distance = (i - (count - 1) / 2) * spacing;\n offsets.push({ x: -dir.y * distance, y: dir.x * distance / yToX });\n }\n return offsets;\n}\nfunction scaleYOf(points, yToX) {\n return points.map((p) => ({ x: p.x, y: p.y * yToX }));\n}\nfunction unscaleYOf(curves, yToX) {\n for (const c of curves) {\n c.y0 /= yToX;\n c.cy0 /= yToX;\n c.cy1 /= yToX;\n c.y1 /= yToX;\n }\n return curves;\n}\nfunction polylinePx(points, scaleX, scaleY) {\n let total = 0;\n for (let i = 1; i < points.length; i++) {\n const a = points[i - 1];\n const b = points[i];\n total += Math.hypot((b.x - a.x) * scaleX, (b.y - a.y) * scaleY);\n }\n return total;\n}\nvar SELF_LOOP_MIN_PX = 12;\nvar SELF_LOOP_MAX_PX = 40;\nfunction selfLoopReach(segments, scale) {\n const nodePx = polylinePx(segments, scale, scale);\n const reachPx = Math.min(\n SELF_LOOP_MAX_PX,\n Math.max(SELF_LOOP_MIN_PX, nodePx / 2)\n );\n return reachPx / Math.max(scale, Number.EPSILON);\n}\nfunction selfLinkOf(edge) {\n if (edge.from !== edge.to) {\n return false;\n }\n return edge.fromStrand && edge.toStrand && edge.fromStrand !== edge.toStrand ? edge.fromStrand === \"+\" ? \"end\" : \"start\" : true;\n}\nfunction edgeJoinOf(edge, stranded = false) {\n const self = selfLinkOf(edge);\n if (!stranded) {\n return self;\n }\n const sides = strandSides(edge);\n return self === false ? sides : sides.from === sides.to ? sides.from : true;\n}\nfunction hairpinCurves(attach, reach) {\n const { at, inward } = attach;\n const dx = inward ? at.x - inward.x : 1;\n const dy = inward ? at.y - inward.y : 0;\n const len = Math.hypot(dx, dy) || 1;\n const ux = dx / len;\n const uy = dy / len;\n const px = at.x;\n const py = at.y;\n const nearX = px + ux * reach / 3;\n const nearY = py + uy * reach / 3;\n const apexX = px + ux * reach;\n const apexY = py + uy * reach;\n const sideX = -uy * reach / 2;\n const sideY = ux * reach / 2;\n return [\n {\n x0: px,\n y0: py,\n cx0: nearX,\n cy0: nearY,\n cx1: apexX + sideX,\n cy1: apexY + sideY,\n x1: apexX,\n y1: apexY\n },\n {\n x0: apexX,\n y0: apexY,\n cx0: apexX - sideX,\n cy0: apexY - sideY,\n cx1: nearX,\n cy1: nearY,\n x1: px,\n y1: py\n }\n ];\n}\nfunction computeEdgeCurves(fromSegments, toSegments, join, axis, bypassed = [], maxBowIn) {\n const scale = axis.scaleX;\n const yToX = yToXOf(axis);\n const maxBow = maxBowIn ?? (axis.pixelRows ? MAX_ROW_BOW_PX : void 0);\n if (join === false) {\n join = heldFacingSides(fromSegments, toSegments);\n }\n if (yToX !== 1) {\n return unscaleYOf(\n computeEdgeCurves(\n scaleYOf(fromSegments, yToX),\n scaleYOf(toSegments, yToX),\n join,\n { scaleX: scale, scaleY: scale },\n scaleYOf(bypassed, yToX),\n // the cap is a y measure and the body works in x units, so it converts\n // with everything else that crosses this boundary\n maxBow === void 0 ? void 0 : maxBow * yToX\n ),\n yToX\n );\n }\n if (typeof join === \"string\") {\n return hairpinCurves(\n attachment(fromSegments, join),\n selfLoopReach(fromSegments, scale)\n );\n }\n const loop = join === true;\n const sides = join === true ? { from: \"end\", to: \"start\" } : join;\n const fromAttach = attachment(fromSegments, sides.from);\n const toAttach = attachment(toSegments, sides.to);\n const fromEnd = fromAttach.at;\n const toStart = toAttach.at;\n const p1x = fromEnd.x;\n const p1y = fromEnd.y;\n const p2x = toStart.x;\n const p2y = toStart.y;\n if (loop) {\n let segDirX = 1;\n let segDirY = 0;\n if (fromAttach.inward) {\n const dx = fromEnd.x - fromAttach.inward.x;\n const dy = fromEnd.y - fromAttach.inward.y;\n const len = Math.hypot(dx, dy);\n if (len > 0) {\n segDirX = dx / len;\n segDirY = dy / len;\n }\n }\n const ext = selfLoopReach(fromSegments, scale);\n const perpX = -segDirY;\n const perpY = segDirX;\n const midX = (fromEnd.x + toStart.x) / 2 + perpX * ext;\n const midY = (fromEnd.y + toStart.y) / 2 + perpY * ext;\n const cp1x = p1x + segDirX * ext;\n const cp1y = p1y + segDirY * ext;\n const cp2x = p2x - segDirX * ext;\n const cp2y = p2y - segDirY * ext;\n return [\n {\n x0: p1x,\n y0: p1y,\n cx0: cp1x,\n cy0: cp1y,\n cx1: cp1x + perpX * ext,\n cy1: cp1y + perpY * ext,\n x1: midX,\n y1: midY\n },\n {\n x0: midX,\n y0: midY,\n cx0: cp2x + perpX * ext,\n cy0: cp2y + perpY * ext,\n cx1: cp2x,\n cy1: cp2y,\n x1: p2x,\n y1: p2y\n }\n ];\n } else {\n const fromPrev = fromAttach.inward ?? {\n x: fromEnd.x - (toStart.x - fromEnd.x),\n y: fromEnd.y - (toStart.y - fromEnd.y)\n };\n const toNext = toAttach.inward ?? {\n x: toStart.x - (fromEnd.x - toStart.x),\n y: toStart.y - (fromEnd.y - toStart.y)\n };\n const dist = Math.hypot(p2x - p1x, p2y - p1y);\n const tangentProj = (prev, at, towardX, towardY) => {\n const dx = at.x - prev.x;\n const dy = at.y - prev.y;\n const len = Math.hypot(dx, dy);\n const along = len === 0 ? 0 : (towardX * dx + towardY * dy) / len;\n return Math.max(\n 0,\n Math.min(dist * TANGENT_SPAN_FACTOR, MAX_TANGENT, along * 0.5)\n );\n };\n const towardToX = toStart.x - fromEnd.x;\n const towardToY = toStart.y - fromEnd.y;\n const [cx1, cy1] = projectLine(\n fromPrev.x,\n fromPrev.y,\n fromEnd.x,\n fromEnd.y,\n tangentProj(fromPrev, fromEnd, towardToX, towardToY)\n );\n const [cx2, cy2] = projectLine(\n toNext.x,\n toNext.y,\n toStart.x,\n toStart.y,\n tangentProj(toNext, toStart, -towardToX, -towardToY)\n );\n const bulge = bypassed.length ? bowAround(p1x, p1y, p2x, p2y, bypassed, maxBow) : 0;\n const chordLen = dist === 0 ? 1 : dist;\n const ux = (p2x - p1x) / chordLen;\n const uy = (p2y - p1y) / chordLen;\n const bulgeX = -uy * bulge;\n const bulgeY = ux * bulge;\n const spreadX = ux * Math.abs(bulge);\n const spreadY = uy * Math.abs(bulge);\n return [\n {\n x0: p1x,\n y0: p1y,\n cx0: cx1 + bulgeX - spreadX,\n cy0: cy1 + bulgeY - spreadY,\n cx1: cx2 + bulgeX + spreadX,\n cy1: cy2 + bulgeY + spreadY,\n x1: p2x,\n y1: p2y\n }\n ];\n }\n}\nfunction nearerEnd(segments, to) {\n const start = segments[0];\n const end = segments.at(-1);\n return Math.hypot(start.x - to.x, start.y - to.y) < Math.hypot(end.x - to.x, end.y - to.y) ? \"start\" : \"end\";\n}\nfunction routedEdgeCurves(fromSegments, toSegments, route, sides) {\n const fromAttach = attachment(\n fromSegments,\n sides?.from ?? nearerEnd(fromSegments, route[0])\n );\n const toAttach = attachment(\n toSegments,\n sides?.to ?? nearerEnd(toSegments, route.at(-1))\n );\n const points = [fromAttach.at, ...route, toAttach.at];\n const tangent = (i) => {\n const p = points[i];\n const span = (q) => Math.hypot(q.x - p.x, q.y - p.y);\n const along = (inward, next) => {\n const len = inward ? span(inward) : 0;\n const reach = span(next);\n return len === 0 ? { x: next.x - p.x, y: next.y - p.y } : {\n x: (p.x - inward.x) / len * reach,\n y: (p.y - inward.y) / len * reach\n };\n };\n if (i === 0) {\n return along(fromAttach.inward, points[1]);\n }\n if (i === points.length - 1) {\n const out = along(toAttach.inward, points[i - 1]);\n return { x: -out.x, y: -out.y };\n }\n return {\n x: (points[i + 1].x - points[i - 1].x) / 2,\n y: (points[i + 1].y - points[i - 1].y) / 2\n };\n };\n const curves = [];\n for (let i = 0; i < points.length - 1; i++) {\n const a = points[i];\n const b = points[i + 1];\n const ta = tangent(i);\n const tb = tangent(i + 1);\n curves.push({\n x0: a.x,\n y0: a.y,\n cx0: a.x + ta.x / 3,\n cy0: a.y + ta.y / 3,\n cx1: b.x - tb.x / 3,\n cy1: b.y - tb.y / 3,\n x1: b.x,\n y1: b.y\n });\n }\n return curves;\n}\n\nexport {\n svgPath,\n projectLine,\n curvePointAt,\n curveMidpoint,\n curveBounds,\n dashCurves,\n dashSpans,\n slideAt,\n slideCurves,\n translateCurves,\n ownStrand,\n strandSides,\n bowAround,\n yToXOf,\n PATH_RIBBON_SPACING_PX,\n pathRibbonOffsets,\n polylinePx,\n selfLinkOf,\n edgeJoinOf,\n computeEdgeCurves,\n routedEdgeCurves\n};\n", "// src/util/weakMemo.ts\nfunction weakMemo() {\n const cache = /* @__PURE__ */ new WeakMap();\n return (key, deps, compute) => {\n const hit = cache.get(key);\n if (hit?.deps.length === deps.length && hit.deps.every((d, i) => Object.is(d, deps[i]))) {\n return hit.value;\n }\n const value = compute();\n cache.set(key, { deps, value });\n return value;\n };\n}\n\nexport {\n weakMemo\n};\n", "// src/overlayLabels.ts\nvar LABEL_PX = 11;\nvar LABEL_CHAR_PX = 6.2;\nvar LABEL_PAD = 4;\nfunction labelWidth(text) {\n return text.length * LABEL_CHAR_PX + LABEL_PAD * 2;\n}\nfunction overlaps(a, b) {\n return a.x0 < b.x1 && a.x1 > b.x0 && a.y0 < b.y1 && a.y1 > b.y0;\n}\nfunction offFrame(box, frame) {\n return box.x1 <= 0 || box.x0 >= frame.width || box.y1 <= 0 || box.y0 >= frame.height;\n}\nfunction insideFrame(box, frame) {\n return box.x0 >= 0 && box.x1 <= frame.width && box.y0 >= 0 && box.y1 <= frame.height;\n}\nfunction occupancy(frame, reserved = []) {\n const placed = [...reserved];\n return (box) => {\n if (offFrame(box, frame) || placed.some((p) => overlaps(p, box))) {\n return false;\n }\n placed.push(box);\n return true;\n };\n}\nfunction placeLabels(candidates, frame, take) {\n const out = [];\n const row = LABEL_PX + LABEL_PAD * 2;\n const place = (c, text) => {\n const w = labelWidth(text);\n const direction = c.y > frame.height / 2 ? -1 : 1;\n for (let tries = 0; tries <= (c.stack ?? 0); tries++) {\n const y = c.y + direction * tries * row;\n const box = {\n x0: c.x - w / 2,\n x1: c.x + w / 2,\n y0: y - LABEL_PX - LABEL_PAD,\n y1: y + LABEL_PAD\n };\n if (offFrame(box, frame)) {\n return void 0;\n }\n if (insideFrame(box, frame) && (c.fits?.(box) ?? true) && take(box)) {\n return { ...c, text, y, w };\n }\n }\n return void 0;\n };\n for (const c of candidates) {\n const placed = place(c, c.text) ?? (c.fallback === void 0 ? void 0 : place(c, c.fallback));\n if (placed) {\n out.push(placed);\n }\n }\n return out;\n}\n\nexport {\n LABEL_PX,\n LABEL_CHAR_PX,\n LABEL_PAD,\n labelWidth,\n overlaps,\n occupancy,\n placeLabels\n};\n", "import {\n ownStrand,\n strandSides\n} from \"./chunk-JJV2GT2Z.js\";\nimport {\n pushTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/layout/mergeRuns.ts\nfunction flip(strand) {\n return strand === \"+\" ? \"-\" : \"+\";\n}\nfunction mergeRuns(graph, alone = /* @__PURE__ */ new Set()) {\n const sides = graph.edges.map(strandSides);\n const at = /* @__PURE__ */ new Map();\n const attach = (id, side, ei) => {\n pushTo(at, `${id}|${side}`, ei);\n };\n graph.edges.forEach((edge, ei) => {\n attach(edge.from, sides[ei].from, ei);\n attach(edge.to, sides[ei].to, ei);\n });\n const joinAfter = (a) => {\n const out = at.get(`${a}|end`);\n if (out?.length !== 1) {\n return void 0;\n }\n const ei = out[0];\n const edge = graph.edges[ei];\n return edge.from === a && edge.to !== a && !alone.has(a) && !alone.has(edge.to) && sides[ei].from === \"end\" && sides[ei].to === \"start\" && at.get(`${edge.to}|start`)?.length === 1 ? ei : void 0;\n };\n const joined = /* @__PURE__ */ new Set();\n const runOf = /* @__PURE__ */ new Map();\n const runs = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const into = at.get(`${node.id}|start`);\n const pred = into?.length === 1 ? graph.edges[into[0]].from : void 0;\n if (runOf.has(node.id) || pred !== void 0 && joinAfter(pred) === into[0]) {\n continue;\n }\n const run = [node.id];\n for (; ; ) {\n const ei = joinAfter(run.at(-1));\n const next = ei === void 0 ? void 0 : graph.edges[ei].to;\n if (next === void 0 || runOf.has(next)) {\n break;\n }\n joined.add(ei);\n run.push(next);\n }\n for (const id of run) {\n runOf.set(id, node.id);\n }\n if (run.length > 1) {\n runs.set(node.id, run);\n }\n }\n for (const node of graph.nodes) {\n if (!runOf.has(node.id)) {\n runOf.set(node.id, node.id);\n }\n }\n const byId = new Map(graph.nodes.map((n) => [n.id, n]));\n const nodes = [];\n for (const node of graph.nodes) {\n if (runOf.get(node.id) !== node.id) {\n continue;\n }\n const run = runs.get(node.id);\n if (!run) {\n nodes.push(node);\n continue;\n }\n const members = run.map((id) => byId.get(id));\n const backbone = members.filter(isBackbone);\n const first = backbone.length ? backbone.reduce((a, b) => a.stable.start <= b.stable.start ? a : b) : members[0];\n nodes.push({\n id: node.id,\n name: node.name,\n length: members.reduce((sum, n) => sum + n.length, 0),\n depth: node.depth,\n stable: first.stable\n });\n }\n const seen = /* @__PURE__ */ new Set();\n const edges = [];\n graph.edges.forEach((edge, ei) => {\n const from = runOf.get(edge.from);\n const to = runOf.get(edge.to);\n const side = sides[ei];\n const key = `${from}|${side.from}>${to}|${side.to}`;\n if (joined.has(ei) || seen.has(key)) {\n return;\n }\n seen.add(key);\n edges.push({\n from,\n to,\n ...side.from === \"start\" ? { fromStrand: flip(ownStrand(from)) } : {},\n ...side.to === \"end\" ? { toStrand: flip(ownStrand(to)) } : {}\n });\n });\n return {\n graph: { ...graph, nodes, edges, paths: void 0, pathVisits: void 0 },\n runs\n };\n}\nfunction splitRuns(positions, runs, weightOf) {\n const out = { ...positions };\n for (const [id, members] of runs) {\n const line = positions[id];\n if (!line?.length) {\n continue;\n }\n delete out[id];\n const arc = arcPrefix(line);\n const total = arc.at(-1);\n const weights = members.map((m) => Math.max(weightOf(m), 0));\n const weightSum = weights.reduce((a, b) => a + b, 0);\n let from = 0;\n members.forEach((member, k) => {\n const share = weightSum ? weights[k] / weightSum * total : total / members.length;\n const to = k === members.length - 1 ? total : from + share;\n out[member] = slice(line, arc, from, to);\n from = to;\n });\n }\n return out;\n}\nfunction polylineSlice(line, from, to) {\n if (line.length === 0) {\n return [];\n }\n const arc = arcPrefix(line);\n const total = arc.at(-1);\n return slice(line, arc, from * total, to * total);\n}\nfunction polylineMidpoint(line) {\n const arc = arcPrefix(line);\n return pointAt(line, arc, arc.at(-1) / 2);\n}\nfunction arcPrefix(line) {\n const arc = [0];\n for (let i = 1; i < line.length; i++) {\n arc.push(\n arc[i - 1] + Math.hypot(line[i].x - line[i - 1].x, line[i].y - line[i - 1].y)\n );\n }\n return arc;\n}\nfunction firstReaching(arc, s) {\n let lo = 0;\n let hi = arc.length;\n while (lo < hi) {\n const mid = lo + hi >> 1;\n if (arc[mid] < s) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\n}\nfunction pointAt(line, arc, s) {\n if (s <= 0) {\n return { ...line[0] };\n }\n const i = firstReaching(arc, s);\n if (i >= arc.length) {\n return { ...line.at(-1) };\n }\n const span = arc[i] - arc[i - 1];\n const t = span > 0 ? (s - arc[i - 1]) / span : 0;\n const a = line[i - 1];\n const b = line[i];\n return { x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t };\n}\nfunction slice(line, arc, from, to) {\n const points = [pointAt(line, arc, from)];\n for (let i = firstReaching(arc, from); i < line.length && arc[i] < to; i++) {\n if (arc[i] > from) {\n points.push({ ...line[i] });\n }\n }\n points.push(pointAt(line, arc, to));\n return points;\n}\n\nexport {\n mergeRuns,\n splitRuns,\n polylineSlice,\n polylineMidpoint\n};\n", "import {\n pathOrigin,\n trimOrigins\n} from \"./chunk-3YBP46PB.js\";\nimport {\n PathVisitsBuilder\n} from \"./chunk-ZPZ7GNBT.js\";\nimport {\n isBackbone,\n overlapsWindow\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/layout/trimToWindow.ts\nfunction trimToWindow(graph, window) {\n const inWindow = new Set(\n graph.nodes.filter((n) => isBackbone(n) && overlapsWindow(n, window)).map((n) => n.id)\n );\n const paths = graph.paths ?? [];\n if (inWindow.size === 0 || paths.length === 0) {\n return graph;\n }\n const spans = paths.map((path) => {\n let first = -1;\n let last = -1;\n path.nodeIds.forEach((id, i) => {\n if (inWindow.has(id)) {\n if (first < 0) {\n first = i;\n }\n last = i;\n }\n });\n return first < 0 ? void 0 : { first, last };\n });\n if (spans.every(\n (span, i) => span?.first === 0 && span.last === paths[i].nodeIds.length - 1\n )) {\n return graph;\n }\n const kept = /* @__PURE__ */ new Set();\n const trimmed = [];\n const stretches = /* @__PURE__ */ new Map();\n paths.forEach((path, i) => {\n const span = spans[i];\n if (span) {\n const nodeIds = path.nodeIds.slice(span.first, span.last + 1);\n for (const id of nodeIds) {\n kept.add(id);\n }\n trimmed.push({ ...path, nodeIds });\n stretches.set(path.name, { first: span.first, nodeIds });\n }\n });\n return {\n ...graph,\n nodes: graph.nodes.filter((n) => kept.has(n.id)),\n edges: graph.edges.filter((e) => kept.has(e.from) && kept.has(e.to)),\n paths: trimmed,\n pathVisits: graph.pathVisits && trimVisits(\n graph.pathVisits,\n paths,\n spans,\n new Map(graph.nodes.map((n) => [n.id, n.name]))\n ),\n anchorPaths: trimOrigins(graph, stretches)\n };\n}\nfunction trimVisits(visits, paths, spans, nameOf) {\n const next = visits.replay();\n const out = new PathVisitsBuilder();\n paths.forEach((path, p) => {\n const origin = visits.pathIndex(pathOrigin(path.name).name);\n const span = spans[p];\n path.nodeIds.forEach((id, i) => {\n const segment = nameOf.get(id) ?? id;\n const at = next(visits.slot(segment), origin);\n if (at >= 0 && span && i >= span.first && i <= span.last) {\n out.add(\n segment,\n visits.paths[origin],\n visits.samples[origin],\n visits.start[at],\n visits.reversed[at] === 1\n );\n }\n });\n });\n return out.build();\n}\nfunction clipToWindow(graph, window, reachBp) {\n const nodes = graph.nodes.map((node) => {\n if (!isBackbone(node)) {\n return node;\n }\n const from = node.stable.start;\n const to = from + node.length;\n const [start, end] = overlapsWindow(node, window) ? [Math.max(from, window.start), Math.min(to, window.end)] : to <= window.start ? [Math.max(from, to - reachBp), to] : [from, Math.min(to, from + reachBp)];\n return start === from && end === to ? node : {\n ...node,\n length: end - start,\n stable: { ...node.stable, start },\n unclipped: { start: from, length: node.length }\n };\n });\n return nodes.some((node, i) => node !== graph.nodes[i]) ? { ...graph, nodes } : graph;\n}\nfunction unclipped(graph) {\n return graph.nodes.some((n) => n.unclipped) ? {\n ...graph,\n nodes: graph.nodes.map(\n ({ unclipped: full, ...node }) => full && node.stable ? {\n ...node,\n length: full.length,\n stable: { ...node.stable, start: full.start }\n } : node\n )\n } : graph;\n}\n\nexport {\n trimToWindow,\n clipToWindow,\n unclipped\n};\n", "import {\n unclipped\n} from \"./chunk-TLWXLNLY.js\";\nimport {\n referenceVisitStarts\n} from \"./chunk-3YBP46PB.js\";\nimport {\n computeEdgeCurves,\n edgeJoinOf,\n routedEdgeCurves,\n strandSides\n} from \"./chunk-JJV2GT2Z.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n firstNodeAtOrAfter,\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n partitionPoint\n} from \"./chunk-HOAIOEI7.js\";\n\n// src/deletionEdges.ts\nvar MIN_DELETION_BP = 1;\nfunction bypassedPoints(nodePositions, bypassed) {\n return bypassed.flatMap((id) => nodePositions[id] ?? []);\n}\nfunction edgeCurvesOf(nodePositions, edge, axis, bypassed, route, stranded) {\n const from = nodePositions[edge.from];\n const to = nodePositions[edge.to];\n if (!from?.length || !to?.length) {\n return void 0;\n }\n return route ? routedEdgeCurves(\n from,\n to,\n route,\n stranded ? strandSides(edge) : void 0\n ) : computeEdgeCurves(\n from,\n to,\n edgeJoinOf(edge, stranded),\n axis,\n bypassed ? bypassedPoints(nodePositions, bypassed) : []\n );\n}\nfunction backboneBySequence(graph) {\n const bySequence = groupBy(\n graph.nodes.filter(isBackbone),\n (node) => node.stable.refName\n );\n for (const list of bySequence.values()) {\n list.sort((a, b) => a.stable.start - b.stable.start);\n }\n return bySequence;\n}\nfunction bypassedNodes(nodes, start, end) {\n const bypassed = [];\n if (nodes) {\n for (let i = firstNodeAtOrAfter(nodes, start); i < nodes.length; i++) {\n const node = nodes[i];\n if (node.stable.start >= end) {\n break;\n }\n if (node.stable.start + node.length <= end) {\n bypassed.push(node.id);\n }\n }\n }\n return bypassed;\n}\nfunction skipsBetween(edge, from, to, forwards) {\n const { fromStrand, toStrand } = edge;\n if (fromStrand === void 0 || toStrand === void 0) {\n return true;\n }\n const leavesRight = fromStrand === (from.stable.strand ?? \"+\");\n const arrivesLeft = toStrand === (to.stable.strand ?? \"+\");\n return forwards ? leavesRight && arrivesLeft : !leavesRight && !arrivesLeft;\n}\nfunction skippedSpan(edge, from, to, startsOf) {\n let best;\n for (const a of startsOf(from)) {\n for (const b of startsOf(to)) {\n const forwards = a <= b;\n const span = forwards ? { start: a + from.length, end: b } : { start: b + to.length, end: a };\n if (skipsBetween(edge, from, to, forwards) && (!best || Math.abs(span.end - span.start) < Math.abs(best.end - best.start))) {\n best = span;\n }\n }\n }\n return best;\n}\nvar COPY_SWITCH_SHARE = 0.01;\nfunction repeatCopies(backbone, startsOf) {\n const bySequence = /* @__PURE__ */ new Map();\n for (const [refName, nodes] of backbone) {\n const copies = nodes.flatMap((node) => {\n const starts = startsOf(node);\n return starts.slice(1).map((next, i) => ({\n at: starts[i],\n copy: next - starts[i]\n }));\n });\n if (copies.length) {\n bySequence.set(\n refName,\n copies.sort((a, b) => a.at - b.at)\n );\n }\n }\n return bySequence;\n}\nfunction switchesCopy(copies, start, bp) {\n if (!copies) {\n return false;\n }\n const i = partitionPoint(copies.length, (k) => copies[k].at < start);\n const near = [copies[i - 1], copies[i]].filter((c) => c !== void 0).sort((a, b) => Math.abs(a.at - start) - Math.abs(b.at - start))[0];\n return near !== void 0 && Math.abs(near.at - start) <= near.copy && Math.abs(bp - near.copy) <= near.copy * COPY_SWITCH_SHARE;\n}\nfunction deletionEdges(cut) {\n const graph = unclipped(cut);\n const byId = new Map(graph.nodes.map((n) => [n.id, n]));\n const backbone = backboneBySequence(graph);\n const startsOf = referenceVisitStarts(graph);\n const copies = repeatCopies(backbone, startsOf);\n const found = [];\n for (let edgeIndex = 0; edgeIndex < graph.edges.length; edgeIndex++) {\n const edge = graph.edges[edgeIndex];\n const from = byId.get(edge.from);\n const to = byId.get(edge.to);\n if (!edge.foldBridge && from !== void 0 && to !== void 0 && isBackbone(from) && isBackbone(to) && from.stable.refName === to.stable.refName) {\n const span = skippedSpan(edge, from, to, startsOf);\n const refName = from.stable.refName;\n const bp = span ? span.end - span.start : 0;\n if (span && bp >= MIN_DELETION_BP && !switchesCopy(copies.get(refName), span.start, bp)) {\n const { start, end } = span;\n found.push({\n edgeIndex,\n from: edge.from,\n to: edge.to,\n ...edge.fromStrand ? { fromStrand: edge.fromStrand } : {},\n ...edge.toStrand ? { toStrand: edge.toStrand } : {},\n refName,\n start,\n end,\n bp,\n bypassed: bypassedNodes(backbone.get(refName), start, end)\n });\n }\n }\n }\n return found;\n}\nfunction closableDeletions(graph, deletions) {\n const parent = /* @__PURE__ */ new Map();\n const root = (id) => {\n let r = id;\n while (parent.has(r)) {\n r = parent.get(r);\n }\n if (r !== id) {\n parent.set(id, r);\n }\n return r;\n };\n const join = (a, b) => {\n const [ra, rb] = [root(a), root(b)];\n if (ra !== rb) {\n parent.set(ra, rb);\n }\n return ra !== rb;\n };\n const candidates = new Set(deletions.map((d) => d.edgeIndex));\n graph.edges.forEach((e, ei) => {\n if (!candidates.has(ei)) {\n join(e.from, e.to);\n }\n });\n return new Set(\n deletions.filter((d) => !join(d.from, d.to)).map((d) => d.edgeIndex)\n );\n}\nvar drawings = /* @__PURE__ */ new WeakMap();\nfunction deletionDrawing(graph, deletions, show = true) {\n let byShow = drawings.get(deletions);\n if (!byShow) {\n byShow = /* @__PURE__ */ new Map();\n drawings.set(deletions, byShow);\n }\n let drawing = byShow.get(show);\n if (!drawing) {\n const hidden = show ? /* @__PURE__ */ new Set() : closableDeletions(graph, deletions);\n drawing = {\n shown: deletions.filter((d) => !hidden.has(d.edgeIndex)),\n bypassed: new Map(deletions.map((d) => [d.edgeIndex, d.bypassed])),\n hidden\n };\n byShow.set(show, drawing);\n }\n return drawing;\n}\n\nexport {\n edgeCurvesOf,\n deletionEdges,\n closableDeletions,\n deletionDrawing\n};\n", "import {\n weakMemo\n} from \"./chunk-HMXCN6PG.js\";\nimport {\n labelWidth,\n occupancy\n} from \"./chunk-AB35TJST.js\";\nimport {\n polylineMidpoint\n} from \"./chunk-HNNP5QUN.js\";\nimport {\n edgeCurvesOf\n} from \"./chunk-3GORESBG.js\";\nimport {\n curveBounds,\n curveMidpoint,\n polylinePx\n} from \"./chunk-JJV2GT2Z.js\";\n\n// src/graphLabels.ts\nvar MIN_DELETION_LABEL_PX = 26;\nvar PX_PER_NODE_LABEL = 4e4;\nvar MIN_NODE_LABELS = 8;\nvar LEADER_GAP_PX = 8;\nvar LABEL_CHAR_PX = 5.7;\nvar LABEL_PAD_PX = 6;\nvar LABEL_HEIGHT_PX = 13;\nvar LABEL_GAP_PX = 3;\nvar MAX_LABEL_OVERHANG = 2;\nfunction labelHalfWidth(text) {\n return (text.length * LABEL_CHAR_PX + LABEL_PAD_PX + LABEL_GAP_PX) / 2;\n}\nvar LABEL_HALF_HEIGHT = (LABEL_HEIGHT_PX + LABEL_GAP_PX) / 2;\nvar MIN_LABEL_HALF_WIDTH = labelHalfWidth(\"1 bp\");\nfunction boxAt(halfW, x, y) {\n return {\n x0: x - halfW,\n x1: x + halfW,\n y0: y - LABEL_HALF_HEIGHT,\n y1: y + LABEL_HALF_HEIGHT\n };\n}\nfunction rowLabelBox(text, screenY) {\n return {\n x0: 6,\n x1: 6 + labelWidth(text) + LABEL_GAP_PX,\n y0: screenY - 8 - LABEL_GAP_PX / 2,\n y1: screenY + 8 + LABEL_GAP_PX / 2\n };\n}\nfunction clamp(v, lo, hi) {\n return hi < lo ? v : Math.min(Math.max(v, lo), hi);\n}\nfunction groupDigits(n) {\n return String(n).replace(/\\B(?=(\\d{3})+$)/g, \",\");\n}\nfunction formatBp(bp) {\n const [value, unit] = bp >= 999500 ? [bp / 1e6, \"Mb\"] : bp >= 1e3 ? [bp / 1e3, \"kb\"] : [];\n if (value === void 0) {\n return `${bp} bp`;\n }\n return `${+value.toFixed(value >= 100 ? 0 : 1)} ${unit}`;\n}\nfunction deletionText(bp) {\n return `${formatBp(bp)} del`;\n}\nfunction arcOutward(curves, apex, scaleX, scaleY) {\n const first = curves[0];\n const last = curves[curves.length - 1];\n const dx = (apex.x - (first.x0 + last.x1) / 2) * scaleX;\n const dy = (apex.y - (first.y0 + last.y1) / 2) * scaleY;\n const len = Math.hypot(dx, dy);\n return len === 0 ? { x: 0, y: -1 } : { x: dx / len, y: dy / len };\n}\nfunction boxSupport(box, dir) {\n return Math.abs(dir.x) * (box.x1 - box.x0) / 2 + Math.abs(dir.y) * (box.y1 - box.y0) / 2;\n}\nfunction boxRayCrossing(box, dir) {\n const halfW = (box.x1 - box.x0) / 2;\n const halfH = (box.y1 - box.y0) / 2;\n return Math.min(\n dir.x === 0 ? Infinity : halfW / Math.abs(dir.x),\n dir.y === 0 ? Infinity : halfH / Math.abs(dir.y)\n );\n}\nfunction runBounds(nodeIds, nodePositions) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const id of nodeIds) {\n for (const p of nodePositions[id] ?? []) {\n minX = Math.min(minX, p.x);\n maxX = Math.max(maxX, p.x);\n minY = Math.min(minY, p.y);\n maxY = Math.max(maxY, p.y);\n }\n }\n return minX === Infinity ? void 0 : { minX, minY, maxX, maxY };\n}\nvar nodeOrderCache = weakMemo();\nfunction labelOrder(nodePositions, nodeLengths) {\n return nodeOrderCache(\n nodePositions,\n [nodeLengths],\n () => Object.entries(nodePositions).filter(([id, segments]) => segments.length > 0 && nodeLengths.has(id)).sort(([a], [b]) => nodeLengths.get(b) - nodeLengths.get(a))\n );\n}\nvar arcCache = weakMemo();\nfunction arcPlacements(nodePositions, deletions, axis, version, routes, stranded) {\n const { scaleX, scaleY } = axis;\n return arcCache(\n nodePositions,\n [deletions, routes, stranded, scaleX, scaleY, version],\n () => {\n const arcs = [];\n for (const deletion of [...deletions].sort((a, b) => b.bp - a.bp)) {\n const curves = edgeCurvesOf(\n nodePositions,\n deletion,\n axis,\n deletion.bypassed,\n routes?.[deletion.edgeIndex],\n stranded\n );\n const apex = curves ? curveMidpoint(curves) : void 0;\n if (curves && apex) {\n const { minX, minY, maxX, maxY } = curveBounds(curves);\n arcs.push({\n deletion,\n curves,\n apex,\n // in screen px, so the two axes' units cannot be added by accident\n extent: Math.max((maxX - minX) * scaleX, (maxY - minY) * scaleY)\n });\n }\n }\n return arcs;\n }\n );\n}\nfunction sizeLabelCandidates({\n nodePositions,\n nodeLengths,\n deletions,\n deletionRoutes,\n stranded = false,\n alleleDeletions,\n axis,\n translateX,\n translateY,\n width,\n height,\n version = 0\n}) {\n const { scaleX, scaleY } = axis;\n const deletionCandidates = [];\n const nodeCandidates = [];\n for (const { deletion, curves, apex, extent } of arcPlacements(\n nodePositions,\n deletions,\n axis,\n version,\n deletionRoutes,\n stranded\n )) {\n if (extent >= MIN_DELETION_LABEL_PX) {\n const text = deletionText(deletion.bp);\n const halfW = labelHalfWidth(text);\n const box = boxAt(halfW, 0, 0);\n const arcX = apex.x * scaleX + translateX;\n const arcY = apex.y * scaleY + translateY;\n if (arcX < 0 || arcX > width || arcY < 0 || arcY > height) {\n continue;\n }\n const fits = extent >= halfW * 2 / MAX_LABEL_OVERHANG;\n const bow = arcOutward(curves, apex, scaleX, scaleY);\n const offset = boxSupport(box, bow) + LEADER_GAP_PX;\n const x = fits ? arcX : clamp(arcX + bow.x * offset, halfW, width - halfW);\n const y = fits ? arcY : clamp(\n arcY + bow.y * offset,\n LABEL_HALF_HEIGHT,\n height - LABEL_HALF_HEIGHT\n );\n const away = Math.hypot(x - arcX, y - arcY);\n let leader;\n if (away > 0) {\n const dir = { x: (x - arcX) / away, y: (y - arcY) / away };\n const crossing = boxRayCrossing(box, dir);\n leader = {\n arcX,\n arcY,\n labelX: x - dir.x * crossing,\n labelY: y - dir.y * crossing\n };\n }\n deletionCandidates.push({\n label: {\n key: `del:${deletion.edgeIndex}`,\n text,\n x,\n y,\n kind: \"deletion\",\n leader\n },\n box: boxAt(halfW, x, y)\n });\n }\n }\n const labelledByDeletion = /* @__PURE__ */ new Set();\n const alleleRuns = [...alleleDeletions ?? []].sort((a, b) => b.bp - a.bp);\n for (const run of alleleRuns) {\n const drawn = runBounds(run.nodeIds, nodePositions);\n if (!drawn) {\n continue;\n }\n const shownLeft = Math.max(drawn.minX * scaleX + translateX, 0);\n const shownRight = Math.min(drawn.maxX * scaleX + translateX, width);\n const shownTop = Math.max(drawn.minY * scaleY + translateY, 0);\n const shownBottom = Math.min(drawn.maxY * scaleY + translateY, height);\n if (shownRight < shownLeft || shownBottom < shownTop) {\n continue;\n }\n const extent = Math.max(shownRight - shownLeft, shownBottom - shownTop);\n const text = deletionText(run.bp);\n const halfW = labelHalfWidth(text);\n if (extent >= halfW * 2 / MAX_LABEL_OVERHANG) {\n for (const id of run.nodeIds) {\n labelledByDeletion.add(id);\n }\n const x = clamp((shownLeft + shownRight) / 2, halfW, width - halfW);\n const y = clamp(\n (shownTop + shownBottom) / 2,\n LABEL_HALF_HEIGHT,\n height - LABEL_HALF_HEIGHT\n );\n deletionCandidates.push({\n label: {\n key: `alleledel:${run.nodeIds.join(\",\")}`,\n text,\n x,\n y,\n kind: \"deletion\"\n },\n box: boxAt(halfW, x, y)\n });\n }\n }\n for (const [id, segments] of labelOrder(nodePositions, nodeLengths)) {\n if (labelledByDeletion.has(id)) {\n continue;\n }\n const { x, y } = polylineMidpoint(segments);\n const screenY = y * scaleY + translateY;\n if (screenY + LABEL_HALF_HEIGHT <= 0 || screenY - LABEL_HALF_HEIGHT >= height) {\n continue;\n }\n const drawn = polylinePx(segments, scaleX, scaleY);\n if (drawn < MIN_LABEL_HALF_WIDTH * 2 / MAX_LABEL_OVERHANG) {\n continue;\n }\n const text = formatBp(nodeLengths.get(id));\n const halfW = labelHalfWidth(text);\n if (drawn >= halfW * 2 / MAX_LABEL_OVERHANG) {\n const screenX = x * scaleX + translateX;\n nodeCandidates.push({\n label: {\n key: `node:${id}`,\n text,\n x: screenX,\n y: screenY,\n kind: \"node\"\n },\n box: boxAt(halfW, screenX, screenY)\n });\n }\n }\n return { deletions: deletionCandidates, nodes: nodeCandidates };\n}\nfunction nodeLabelBudget(width, height) {\n return Math.max(\n MIN_NODE_LABELS,\n Math.floor(width * height / PX_PER_NODE_LABEL)\n );\n}\nfunction placeSizeLabels(candidates, take, budget = Infinity) {\n const labels = [];\n for (const { label, box } of candidates) {\n if (labels.length >= budget) {\n break;\n }\n if (take(box)) {\n labels.push(label);\n }\n }\n return labels;\n}\nfunction graphLabels({\n reserved,\n take,\n ...args\n}) {\n take ??= occupancy(args, reserved);\n const { deletions, nodes } = sizeLabelCandidates(args);\n return [\n ...placeSizeLabels(deletions, take),\n ...placeSizeLabels(nodes, take, nodeLabelBudget(args.width, args.height))\n ];\n}\n\nexport {\n rowLabelBox,\n groupDigits,\n formatBp,\n sizeLabelCandidates,\n nodeLabelBudget,\n placeSizeLabels,\n graphLabels\n};\n", "import {\n groupDigits\n} from \"./chunk-AURNOR27.js\";\nimport {\n pathOrigin\n} from \"./chunk-3YBP46PB.js\";\nimport {\n isGenericSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/pathColors.ts\nfunction nameHue(name) {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n return Math.abs(hash % 360);\n}\nfunction pathHueAt(index, count) {\n return index * 360 / count;\n}\nvar PATH_SATURATION = 0.7;\nvar PATH_LIGHTNESS = 0.5;\nvar MAX_PATH_COLORS = 16;\nfunction pathColorsLegible(pathCount) {\n return pathCount > 0 && pathCount <= MAX_PATH_COLORS;\n}\nfunction pathCssColor(index, count) {\n return `hsl(${pathHueAt(index, count)}, ${PATH_SATURATION * 100}%, ${PATH_LIGHTNESS * 100}%)`;\n}\nfunction pathGreyCssColor(index, count) {\n const lightness = count > 1 ? 25 + 45 * index / (count - 1) : 45;\n return `hsl(0, 0%, ${lightness}%)`;\n}\nfunction labelTiers(name) {\n const parts = pathOrigin(name).name.split(\"#\");\n const full = parts.join(\"#\");\n if (parts.length >= 3 && isGenericSample(parts[0])) {\n const contig = parts.slice(2).join(\"#\");\n return [contig, contig, full];\n }\n return [parts[0], parts.slice(0, 2).join(\"#\"), full];\n}\nfunction offsetTiers(name, tiers) {\n const { start } = pathOrigin(name);\n return tiers.map((t) => `${t} @${groupDigits(start)}`);\n}\nfunction pathLegend(paths, colors) {\n const firstOf = /* @__PURE__ */ new Map();\n paths.forEach((path, i) => {\n if (!firstOf.has(path.name)) {\n firstOf.set(path.name, i);\n }\n });\n const entries = [...firstOf].map(([name2, i]) => ({ name: name2, i }));\n const named = entries.map((e) => labelTiers(e.name));\n const name = (t) => entries.map((_, k) => named[k][t]);\n const offset = (t) => entries.map((e, k) => offsetTiers(e.name, named[k])[t]);\n const candidates = [\n name(0),\n name(1),\n offset(0),\n name(2),\n offset(1),\n offset(2)\n ];\n const distinct = candidates.find(\n (labels2) => new Set(labels2).size === entries.length\n );\n const labels = distinct ?? candidates.at(-1);\n return entries.map(({ name: name2, i }, k) => ({\n name: name2,\n label: labels[k],\n color: colors?.[i] ?? pathCssColor(i, paths.length)\n }));\n}\nfunction walkLabelsOf(entries) {\n const seen = /* @__PURE__ */ new Map();\n return new Map(\n [...entries].sort((a, b) => a.label.localeCompare(b.label)).map((e) => {\n const n = (seen.get(e.label) ?? 0) + 1;\n seen.set(e.label, n);\n return [e.name, n > 1 ? `${e.label} (${n})` : e.label];\n })\n );\n}\n\nexport {\n nameHue,\n pathHueAt,\n PATH_SATURATION,\n PATH_LIGHTNESS,\n MAX_PATH_COLORS,\n pathColorsLegible,\n pathCssColor,\n pathGreyCssColor,\n pathLegend,\n walkLabelsOf\n};\n", "// src/nodeWidths.ts\nvar NODE_WIDTHS = [\n {\n value: \"depth\",\n label: \"By depth\",\n description: \"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform.\"\n },\n {\n value: \"uniform\",\n label: \"Uniform\",\n description: \"Every node the same thickness.\"\n }\n];\nvar MIN_FACTOR = 0.3;\nvar MAX_FACTOR = 3;\nfunction meanDepth(graph) {\n let weighted = 0;\n let length = 0;\n for (const node of graph.nodes) {\n weighted += node.depth * node.length;\n length += node.length;\n }\n return length > 0 ? weighted / length : 0;\n}\nfunction depthWidthFactor(node, mean) {\n if (!(mean > 0) || !(node.depth > 0)) {\n return 1;\n }\n return Math.min(\n MAX_FACTOR,\n Math.max(MIN_FACTOR, Math.sqrt(node.depth / mean))\n );\n}\nfunction nodeWidthPx(node, contigThickness, nodeWidth, mean) {\n return contigThickness * (nodeWidth === \"depth\" ? depthWidthFactor(node, mean) : 1);\n}\nfunction maxNodeWidthPx(contigThickness, nodeWidth) {\n return contigThickness * (nodeWidth === \"depth\" ? MAX_FACTOR : 1);\n}\nvar MIN_WALK_LANE_PX = 4;\nfunction walkLaneWidthPx(width, lanes) {\n return Math.max(width / lanes, MIN_WALK_LANE_PX);\n}\nfunction nodeInk(graph, nodeById, contigThickness, nodeWidth, lanes = 0) {\n const mean = graph ? meanDepth(graph) : 0;\n const reach = (width) => lanes > 0 ? walkLaneWidthPx(width, lanes) * lanes / 2 : width / 2;\n return {\n maxHalfWidthPx: reach(maxNodeWidthPx(contigThickness, nodeWidth)),\n halfWidthPx: (id) => {\n const node = nodeById?.get(id);\n return reach(\n node ? nodeWidthPx(node, contigThickness, nodeWidth, mean) : contigThickness\n );\n }\n };\n}\n\nexport {\n NODE_WIDTHS,\n meanDepth,\n nodeWidthPx,\n maxNodeWidthPx,\n walkLaneWidthPx,\n nodeInk\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["ROW_HEIGHT_PX", "svgPath", "points", "round", "v", "p", "i", "projectLine", "x1", "y1", "x2", "y2", "distance", "d", "vx", "vy", "curvePointAt", "c", "t", "u", "a", "b", "e", "curveMidpoint", "curves", "mid", "curveBounds", "minX", "minY", "maxX", "maxY", "subCurve", "t0", "t1", "p0", "p1", "dt", "d0", "curveTangentAt", "d1", "VISIBLE_SAMPLES", "visibleStretches", "lengths", "bounds", "yToX", "stretches", "start", "k", "length", "pad", "last", "next", "from", "to", "prev", "dashSpans", "curves", "dashWorld", "yToX", "bounds", "lengths", "c", "total", "a", "b", "periods", "spans", "stretches", "visibleStretches", "seen", "out", "i", "from", "to", "dash", "along", "start", "k", "length", "end", "t0", "t1", "subCurve", "slideAt", "slideCurves", "fromDx", "fromDy", "toDx", "toDy", "n", "adx", "ady", "bdx", "bdy", "translateCurves", "dx", "dy", "attachment", "segments", "side", "last", "TANGENT_SPAN_FACTOR", "MAX_TANGENT", "ownStrand", "id", "strandSides", "edge", "own", "strand", "spanOf", "min", "max", "s", "distanceToSpan", "x", "span", "facingSide", "other", "tieBreak", "startGap", "endGap", "facingSides", "fromSegments", "toSegments", "laidSides", "heldFacingSides", "byTo", "sides", "APEX_FRACTION", "BOW_CLEARANCE", "ALONG_FRACTION", "MAX_ROW_BOW_PX", "ROW_HEIGHT_PX", "bowAround", "p1x", "p1y", "p2x", "p2y", "toward", "maxBow", "chord", "ux", "uy", "reach", "minAlong", "maxAlong", "p", "perp", "uncapped", "size", "yToXOf", "scaleX", "scaleY", "PATH_RIBBON_SPACING_PX", "drawnDirection", "len", "pathRibbonOffsets", "count", "axis", "spacing", "dir", "offsets", "distance", "scaleYOf", "points", "unscaleYOf", "polylinePx", "SELF_LOOP_MIN_PX", "SELF_LOOP_MAX_PX", "selfLoopReach", "scale", "nodePx", "selfLinkOf", "edgeJoinOf", "stranded", "self", "hairpinCurves", "attach", "at", "inward", "px", "py", "nearX", "nearY", "apexX", "apexY", "sideX", "sideY", "computeEdgeCurves", "join", "bypassed", "maxBowIn", "loop", "fromAttach", "toAttach", "fromEnd", "toStart", "segDirX", "segDirY", "ext", "perpX", "perpY", "midX", "midY", "cp1x", "cp1y", "cp2x", "cp2y", "fromPrev", "toNext", "dist", "tangentProj", "prev", "towardX", "towardY", "towardToX", "towardToY", "cx1", "cy1", "projectLine", "cx2", "cy2", "bulge", "chordLen", "bulgeX", "bulgeY", "spreadX", "spreadY", "nearerEnd", "routedEdgeCurves", "route", "tangent", "q", "next", "ta", "tb", "weakMemo", "cache", "key", "deps", "compute", "hit", "d", "i", "value", "LABEL_PX", "LABEL_CHAR_PX", "LABEL_PAD", "labelWidth", "text", "overlaps", "a", "b", "offFrame", "box", "frame", "insideFrame", "occupancy", "reserved", "placed", "p", "placeLabels", "candidates", "take", "out", "row", "place", "w", "direction", "tries", "y", "flip", "strand", "mergeRuns", "graph", "alone", "sides", "strandSides", "at", "attach", "id", "side", "ei", "pushTo", "edge", "joinAfter", "a", "out", "joined", "runOf", "runs", "node", "into", "pred", "run", "next", "byId", "n", "nodes", "members", "backbone", "isBackbone", "first", "b", "sum", "seen", "edges", "from", "to", "key", "ownStrand", "splitRuns", "positions", "weightOf", "line", "arc", "arcPrefix", "total", "weights", "m", "weightSum", "member", "k", "share", "slice", "polylineSlice", "polylineMidpoint", "pointAt", "i", "firstReaching", "s", "lo", "hi", "mid", "span", "t", "points", "trimToWindow", "graph", "window", "inWindow", "n", "isBackbone", "overlapsWindow", "paths", "spans", "path", "first", "last", "id", "i", "span", "kept", "trimmed", "stretches", "nodeIds", "e", "trimVisits", "trimOrigins", "visits", "nameOf", "next", "out", "PathVisitsBuilder", "p", "origin", "pathOrigin", "segment", "at", "clipToWindow", "reachBp", "nodes", "node", "from", "to", "start", "end", "unclipped", "full", "MIN_DELETION_BP", "bypassedPoints", "nodePositions", "bypassed", "id", "edgeCurvesOf", "edge", "axis", "route", "stranded", "from", "to", "routedEdgeCurves", "strandSides", "computeEdgeCurves", "edgeJoinOf", "backboneBySequence", "graph", "bySequence", "groupBy", "isBackbone", "node", "list", "a", "b", "bypassedNodes", "nodes", "start", "end", "i", "firstNodeAtOrAfter", "skipsBetween", "forwards", "fromStrand", "toStrand", "leavesRight", "arrivesLeft", "skippedSpan", "startsOf", "best", "span", "COPY_SWITCH_SHARE", "repeatCopies", "backbone", "refName", "copies", "starts", "next", "switchesCopy", "bp", "partitionPoint", "k", "near", "c", "deletionEdges", "cut", "unclipped", "byId", "n", "referenceVisitStarts", "found", "edgeIndex", "closableDeletions", "deletions", "parent", "root", "r", "join", "ra", "rb", "candidates", "d", "e", "ei", "drawings", "deletionDrawing", "show", "byShow", "drawing", "hidden", "MIN_DELETION_LABEL_PX", "PX_PER_NODE_LABEL", "MIN_NODE_LABELS", "LEADER_GAP_PX", "LABEL_CHAR_PX", "LABEL_PAD_PX", "LABEL_HEIGHT_PX", "LABEL_GAP_PX", "MAX_LABEL_OVERHANG", "labelHalfWidth", "text", "LABEL_HALF_HEIGHT", "MIN_LABEL_HALF_WIDTH", "boxAt", "halfW", "x", "y", "rowLabelBox", "screenY", "labelWidth", "clamp", "v", "lo", "hi", "groupDigits", "n", "formatBp", "bp", "value", "unit", "deletionText", "arcOutward", "curves", "apex", "scaleX", "scaleY", "first", "last", "dx", "dy", "len", "boxSupport", "box", "dir", "boxRayCrossing", "halfH", "runBounds", "nodeIds", "nodePositions", "minX", "minY", "maxX", "maxY", "id", "p", "nodeOrderCache", "weakMemo", "labelOrder", "nodeLengths", "segments", "a", "b", "arcCache", "arcPlacements", "deletions", "axis", "version", "routes", "stranded", "arcs", "deletion", "edgeCurvesOf", "curveMidpoint", "curveBounds", "sizeLabelCandidates", "deletionRoutes", "alleleDeletions", "translateX", "translateY", "width", "height", "deletionCandidates", "nodeCandidates", "extent", "arcX", "arcY", "fits", "bow", "offset", "away", "leader", "crossing", "labelledByDeletion", "alleleRuns", "run", "drawn", "shownLeft", "shownRight", "shownTop", "shownBottom", "polylineMidpoint", "polylinePx", "screenX", "nodeLabelBudget", "placeSizeLabels", "candidates", "take", "budget", "labels", "label", "graphLabels", "reserved", "args", "occupancy", "nodes", "nameHue", "name", "hash", "i", "pathHueAt", "index", "count", "PATH_SATURATION", "PATH_LIGHTNESS", "MAX_PATH_COLORS", "pathColorsLegible", "pathCount", "pathCssColor", "pathGreyCssColor", "labelTiers", "parts", "pathOrigin", "full", "isGenericSample", "contig", "offsetTiers", "tiers", "start", "t", "groupDigits", "pathLegend", "paths", "colors", "firstOf", "path", "entries", "name2", "named", "e", "_", "k", "offset", "candidates", "labels", "labels2", "walkLabelsOf", "seen", "a", "b", "n", "NODE_WIDTHS", "MIN_FACTOR", "MAX_FACTOR", "meanDepth", "graph", "weighted", "length", "node", "depthWidthFactor", "mean", "nodeWidthPx", "contigThickness", "nodeWidth", "maxNodeWidthPx", "MIN_WALK_LANE_PX", "walkLaneWidthPx", "width", "lanes", "nodeInk", "nodeById", "reach", "id"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{a as o,b,c as w,g as r,h as f,i as l}from"./chunk-IKJZPPOA.js";import{b as c}from"./chunk-7WIBGKBU.js";import{a as L}from"./chunk-OGQ6OQDN.js";var M=5e3;function A(e){return typeof e=="string"&&/^[\w+-][\w.+-]*$/.test(e)}function h(e){return e==null}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function T(e){return I(e)&&A(e.prefix)&&typeof e.foldBelowBp=="number"&&Number.isFinite(e.foldBelowBp)&&e.foldBelowBp>0}function E(e){let n;try{n=JSON.parse(e)}catch{return}if(!I(n)||n.schema!==1)return;let{reference:i,tier:t,index:a,contig:s,bubbles:p,alleles:d}=n;if((h(i)||typeof i=="string"&&i.trim()!=="")&&(h(t)||T(t))&&[a,s,p,d].every(S=>h(S)||A(S)))return{...typeof i=="string"?{reference:i.trim()}:{},...T(t)?{tier:{prefix:t.prefix,foldBelowBp:t.foldBelowBp}}:{}}}function m(e,n){return l(e,i=>i.replace(/[^/\\]*$/,n))}function R(e){return f(e)&&r(e).endsWith(o)}function x(e,n){return l(e,i=>`${i.slice(0,-o.length)}${n}`)}function z(e){return R(e)?x(e,".graph.json"):void 0}async function $(e,n){let i=z(e);if(i)try{let t=await L(i,n).readFile({encoding:"utf8",signal:AbortSignal.timeout(M)});return E(t)}catch{return}}var O={RgfaTabixAdapter:"rGFA segments (tabix BED pair)",RgfaTabixWalks:"Haplotype walks (.walks.bed.gz)",GbzBaseSyntenyAdapter:"GBZ database (.gbz.db)",MinigraphBubbleAdapter:"Minigraph bubbles (tabix BED)"},v={RgfaTabixAdapter:"Path to segments BED (.segs.bed.gz from gfa-to-tabix; the .links.bed.gz, its index and any .graph.json are read beside it)",RgfaTabixWalks:"Path to a walk file (<prefix>.<sample>.walks.bed.gz from gfa-to-tabix --walks, for the sample this assembly is)",GbzBaseSyntenyAdapter:"Path to the .gbz.db written by gbz-base construct",MinigraphBubbleAdapter:"Path to bubbles BED (.bed.gz from gfatools bubble)"},y="Path to tabix index (optional; the sibling .tbi is assumed, a .csi is recognised by name)",J={RgfaTabixAdapter:y,RgfaTabixWalks:y,GbzBaseSyntenyAdapter:"Path to the haplotype index (optional; graph.haplotype-index.db beside the database is assumed)",MinigraphBubbleAdapter:y};function g(e,n){return l(e,i=>i+n)}function N(e){if(!r(e).endsWith(o))throw new Error(`Expected a segments BED ending in ${o}, got ${r(e)}`);return x(e,".links.bed.gz")}function F(e,n){return n?{location:n,indexType:c(r(n),"CSI","TBI")}:{location:g(e,".tbi"),indexType:"TBI"}}function B(e,n){return n!==void 0&&c(r(n),"CSI","TBI")==="CSI"?{location:g(e,".csi"),indexType:"CSI"}:{location:g(e,".tbi"),indexType:"TBI"}}function k(e,n){let i=n.trim();return i&&e?{assemblyNameToPanSN:{[e]:i}}:{}}function P(e,n,i){if(!i)return{};let t=m(e,`${i.prefix}${o}`),a=m(e,`${i.prefix}.links.bed.gz`);return{coarse:{foldBelowBp:i.foldBelowBp,segmentsLocation:t,segmentsIndex:B(t,n),linksLocation:a,linksIndex:B(a,n)}}}function G(e,n,i){let t=i===e?void 0:i;return k(e,n.trim()||t||"")}function C(e){return e?{readsLocation:e,...r(e).endsWith(".gz")&&f(e)?{readsIndex:{location:g(e,".tbi")}}:{}}:{}}function K(e){return e.split(/[\s,]+/).filter(n=>n!=="")}function _({choice:e,loc:n,indexLoc:i,readsLoc:t,manifest:a,assembly:s,sample:p,haplotypes:d=[]}){if(e==="RgfaTabixWalks"){if(!r(n).endsWith(b))throw new Error(`Expected a walk file ending in ${b}, got ${r(n)}`);return{type:"RgfaTabixAdapter",walksLocation:n,walksIndex:F(n,i),...G(s,p,w(n)),...d.length>0?{defaultHaplotypes:d}:{}}}if(e==="GbzBaseSyntenyAdapter")return{type:"GbzBaseSyntenyAdapter",gbzDbLocation:n,...i?{haplotypeIndexLocation:i}:{},...C(t),...k(s,p)};if(e==="MinigraphBubbleAdapter")return{type:"MinigraphBubbleAdapter",bubblesLocation:n,index:F(n,i),...k(s,p)};let u=N(n);return{type:"RgfaTabixAdapter",segmentsLocation:n,segmentsIndex:F(n,i),linksLocation:u,linksIndex:B(u,i),...G(s,p,a?.reference),...P(n,i,a?.tier)}}function Z(e){let{choice:n,assembly:i,trackId:t,name:a}=e;return{type:n==="MinigraphBubbleAdapter"?"FeatureTrack":"GraphTrack",trackId:t,name:a,assemblyNames:[i],adapter:_(e),...n==="RgfaTabixAdapter"||n==="RgfaTabixWalks"?{displayDefaults:{showLabels:"none"}}:{}}}export{R as a,$ as b,O as c,v as d,J as e,K as f,_ as g,Z as h};
2
- //# sourceMappingURL=chunk-QJ43NDYS.js.map
1
+ import{b as c}from"./chunk-7WIBGKBU.js";import{a as o,b,c as w,g as r,h as f,i as l}from"./chunk-IKJZPPOA.js";import{a as L}from"./chunk-OGQ6OQDN.js";var M=5e3;function A(e){return typeof e=="string"&&/^[\w+-][\w.+-]*$/.test(e)}function h(e){return e==null}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function T(e){return I(e)&&A(e.prefix)&&typeof e.foldBelowBp=="number"&&Number.isFinite(e.foldBelowBp)&&e.foldBelowBp>0}function E(e){let n;try{n=JSON.parse(e)}catch{return}if(!I(n)||n.schema!==1)return;let{reference:i,tier:t,index:a,contig:s,bubbles:p,alleles:d}=n;if((h(i)||typeof i=="string"&&i.trim()!=="")&&(h(t)||T(t))&&[a,s,p,d].every(S=>h(S)||A(S)))return{...typeof i=="string"?{reference:i.trim()}:{},...T(t)?{tier:{prefix:t.prefix,foldBelowBp:t.foldBelowBp}}:{}}}function m(e,n){return l(e,i=>i.replace(/[^/\\]*$/,n))}function R(e){return f(e)&&r(e).endsWith(o)}function x(e,n){return l(e,i=>`${i.slice(0,-o.length)}${n}`)}function z(e){return R(e)?x(e,".graph.json"):void 0}async function $(e,n){let i=z(e);if(i)try{let t=await L(i,n).readFile({encoding:"utf8",signal:AbortSignal.timeout(M)});return E(t)}catch{return}}var O={RgfaTabixAdapter:"rGFA segments (tabix BED pair)",RgfaTabixWalks:"Haplotype walks (.walks.bed.gz)",GbzBaseSyntenyAdapter:"GBZ database (.gbz.db)",MinigraphBubbleAdapter:"Minigraph bubbles (tabix BED)"},v={RgfaTabixAdapter:"Path to segments BED (.segs.bed.gz from gfa-to-tabix; the .links.bed.gz, its index and any .graph.json are read beside it)",RgfaTabixWalks:"Path to a walk file (<prefix>.<sample>.walks.bed.gz from gfa-to-tabix --walks, for the sample this assembly is)",GbzBaseSyntenyAdapter:"Path to the .gbz.db written by gbz-base construct",MinigraphBubbleAdapter:"Path to bubbles BED (.bed.gz from gfatools bubble)"},y="Path to tabix index (optional; the sibling .tbi is assumed, a .csi is recognised by name)",J={RgfaTabixAdapter:y,RgfaTabixWalks:y,GbzBaseSyntenyAdapter:"Path to the haplotype index (optional; graph.haplotype-index.db beside the database is assumed)",MinigraphBubbleAdapter:y};function g(e,n){return l(e,i=>i+n)}function N(e){if(!r(e).endsWith(o))throw new Error(`Expected a segments BED ending in ${o}, got ${r(e)}`);return x(e,".links.bed.gz")}function F(e,n){return n?{location:n,indexType:c(r(n),"CSI","TBI")}:{location:g(e,".tbi"),indexType:"TBI"}}function B(e,n){return n!==void 0&&c(r(n),"CSI","TBI")==="CSI"?{location:g(e,".csi"),indexType:"CSI"}:{location:g(e,".tbi"),indexType:"TBI"}}function k(e,n){let i=n.trim();return i&&e?{assemblyNameToPanSN:{[e]:i}}:{}}function P(e,n,i){if(!i)return{};let t=m(e,`${i.prefix}${o}`),a=m(e,`${i.prefix}.links.bed.gz`);return{coarse:{foldBelowBp:i.foldBelowBp,segmentsLocation:t,segmentsIndex:B(t,n),linksLocation:a,linksIndex:B(a,n)}}}function G(e,n,i){let t=i===e?void 0:i;return k(e,n.trim()||t||"")}function C(e){return e?{readsLocation:e,...r(e).endsWith(".gz")&&f(e)?{readsIndex:{location:g(e,".tbi")}}:{}}:{}}function K(e){return e.split(/[\s,]+/).filter(n=>n!=="")}function _({choice:e,loc:n,indexLoc:i,readsLoc:t,manifest:a,assembly:s,sample:p,haplotypes:d=[]}){if(e==="RgfaTabixWalks"){if(!r(n).endsWith(b))throw new Error(`Expected a walk file ending in ${b}, got ${r(n)}`);return{type:"RgfaTabixAdapter",walksLocation:n,walksIndex:F(n,i),...G(s,p,w(n)),...d.length>0?{defaultHaplotypes:d}:{}}}if(e==="GbzBaseSyntenyAdapter")return{type:"GbzBaseSyntenyAdapter",gbzDbLocation:n,...i?{haplotypeIndexLocation:i}:{},...C(t),...k(s,p)};if(e==="MinigraphBubbleAdapter")return{type:"MinigraphBubbleAdapter",bubblesLocation:n,index:F(n,i),...k(s,p)};let u=N(n);return{type:"RgfaTabixAdapter",segmentsLocation:n,segmentsIndex:F(n,i),linksLocation:u,linksIndex:B(u,i),...G(s,p,a?.reference),...P(n,i,a?.tier)}}function Z(e){let{choice:n,assembly:i,trackId:t,name:a}=e;return{type:n==="MinigraphBubbleAdapter"?"FeatureTrack":"GraphTrack",trackId:t,name:a,assemblyNames:[i],adapter:_(e),...n==="RgfaTabixAdapter"||n==="RgfaTabixWalks"?{displayDefaults:{showLabels:"none"}}:{}}}export{R as a,$ as b,O as c,v as d,J as e,K as f,_ as g,Z as h};
2
+ //# sourceMappingURL=chunk-TYV6UXJA.js.map
@@ -0,0 +1,2 @@
1
+ import{F as In,G as Nn,H as Bt,I as $t,Q as Pn,R as Nt,S as Kt,d as _n,e as Rn,f as bn,g as Xt,i as Sn,j as Tn,k as Cn,l as On,m as It,y as kn}from"./chunk-S333HOG5.js";import{a as Rt,g as bt}from"./chunk-LE7FZM6Y.js";var lt=2,Gn=1.5,Se=4,Ln=12,Te=64,Ce=24,Oe=48,Hn="a thread per pass through a node",Ut=t=>t.length>1&&t.some(n=>n.mostPasses>1),Xn=t=>t*lt+Math.max(0,t-1)*Gn,Dn=t=>t.reduce((n,o)=>n+o,0);function Bn(t,n,o){let e=t.map((a,c)=>n[c]>1?Xn(a):o*Math.min(1,a)),s=0,r=t.map(a=>{let c=Math.min(1,a),i=Se*c*s;return s=Math.max(s,c),i});return{widths:e,gaps:r,band:Dn(e)+Dn(r)}}var $n=lt+Gn;function Yt(t,n,o=t){let{widths:e,gaps:s,band:r}=Bn(t,n,lt),a=-r/2;return e.map((c,i)=>{a+=s[i];let l=n[i]>1?Math.max(0,c-Xn(o[i])):0,u=a+l/2+lt/2;return a+=c,u})}var Pt=t=>Bn(t,t,lt).band,Lt=t=>Math.min(1,Oe/(Pt(t)||1)),$o=t=>Lt(t.map(n=>n.mostPasses))<1?`${Hn}, thinned to fit`:Hn;function Vt(t,n,o){let e=({normal:c,offsetX:i})=>({dx:c.nx*i,dy:c.ny*i}),{dx:s,dy:r}=Rn(e(t),e(n),o),a=Math.hypot(s,r);return a>0?{normal:{nx:s/a,ny:r/a},offsetX:a}:{normal:{nx:0,ny:0},offsetX:0}}var jt=(t,n)=>Math.hypot(n.x-t.x,n.y-t.y);function xt(t){let n=new Float64Array(t.length);for(let o=1;o<t.length;o++)n[o]=n[o-1]+jt(t[o-1],t[o]);return n}function ke(t,n,o,e){let s=new Set,r=t.map(f=>f.map(p=>s.has(p)?!1:(s.add(p),!!n[p]?.length))),a=(f,p)=>Math.hypot(p.x-f.x,p.y*o-f.y),c=[],i=[],l=[],u=[],h=()=>{l.length&&(c.push(l),i.push(u)),l=[],u=[]};return t.forEach((f,p)=>{r[p].includes(!0)&&(f.forEach((k,I)=>{let v=n[k];if(!v?.length){h();return}let _=v[0],x=v.at(-1),R=l.at(-1),A=n[f[I+1]??""],y=w=>{let b={x:w.x,y:w.y*o};return A?.length?Math.min(a(b,A[0]),a(b,A.at(-1))):0},g=R?a(R,_)<=a(R,x):y(x)<=y(_);R&&a(R,g?_:x)>e&&h();let T=Math.floor(v.length/2);for(let w=0;w<v.length;w++){let b=g?w:v.length-1-w,P=v[b];l.push({x:P.x,y:P.y*o,id:k,index:b,middle:b===T,forward:g}),u.push(r[p][I])}}),h())}),{runs:c,owned:i}}function Kn(t,n,o){let e=[];for(let s=0;s<n.length;s++){if(!n[s])continue;let r=s;for(;r+1<n.length&&n[r+1];)r++;let a=e.at(-1),c=a?a[1]:0,i=s;for(;i>c&&t[s]-t[i-1]<=o;)i--;let l=r;for(;l+1<t.length&&t[l+1]-t[r]<=o;)l++;a&&i<=a[1]+1?a[1]=l:e.push([i,l]),s=r}return e}function Ie(t,n){let o=xt(t),e=o.at(-1),s=(c,i)=>{let l=t[i],u=t[Math.min(i+1,t.length-1)],h=o[Math.min(i+1,t.length-1)]-o[i],f=h>0?(c-o[i])/h:0;return{x:l.x+(u.x-l.x)*f,y:l.y+(u.y-l.y)*f}},r=0,a=0;return t.map((c,i)=>{let l=Math.max(0,o[i]-n/2),u=Math.min(e,o[i]+n/2);for(;r<t.length-1&&o[r+1]<=l;)r++;for(;a<t.length-1&&o[a+1]<=u;)a++;let h=s(l,r),f=s(u,a),p=jt(h,f);return p>0?{nx:-(f.y-h.y)/p,ny:(f.x-h.x)/p}:void 0})}function Ne(t,n,o){let e=xt(t),s=t.slice(),r=[];e.forEach((c,i)=>{let l=r.at(-1);(l===void 0||c-e[l]>=n/4)&&r.push(i)}),r.at(-1)!==t.length-1&&r.push(t.length-1);let a=0;for(;a<r.length;){let c=r[a],i=-1;for(let f=a+1;f<r.length&&e[r[f]]-e[c]<=o;f++){let p=r[f];e[p]-e[c]>Math.PI*n&&jt(t[c],t[p])<=n&&(i=f)}if(i<0){a++;continue}let l=r[i],u=t[c],h=t[l];for(let f=c+1;f<l;f++){let p=(e[f]-e[c])/(e[l]-e[c]);s[f]={...t[f],x:u.x+(h.x-u.x)*p,y:u.y+(h.y-u.y)*p}}a=i}return s}function Pe(t,n){let o=t.length,e=xt(t),s=e[o-1],r=new Float64Array(o+1),a=new Float64Array(o+1),c=new Float64Array(o+1);for(let h=0;h<o;h++){let f=t[h],p=(e[Math.min(h+1,o-1)]-e[Math.max(h-1,0)])/2;r[h+1]=r[h]+p,a[h+1]=a[h]+p*f.x,c[h+1]=c[h]+p*f.y}let i=new Array(o),l=0,u=0;for(let h=0;h<o;h++){let f=t[h],p=Math.min(n,e[h],s-e[h]),k=e[h]-p,I=e[h]+p+1e-9*(1+s);for(;l<o&&e[l]<k;)l++;for(;u<o&&e[u]<I;)u++;let v=r[u]-r[l];i[h]=v>0?{x:(a[u]-a[l])/v,y:(c[u]-c[l])/v}:{x:f.x,y:f.y}}return i}function Fn(t,n){return({id:o,index:e},s)=>{let r=t.get(o);r||(r=new Array(n[o].length),t.set(o,r)),r[e]=s}}function Le(t,n,o,e,s,r=!0){let a=Math.max(e,2*s),c=Math.PI*s,i=r?c+s/2+a/2:a/2,l=new Map,u=new Map,h=Fn(l,n),f=Fn(u,n);return t.runs.forEach((p,k)=>{let I=t.owned[k],v=Kn(xt(p),I,i).map(([A,y])=>{let g=p.slice(A,y+1),T=r?Pe(Ne(g,s/2,c),s/2):g;return{lo:A,points:g,line:T,normals:Ie(T,a)}}),_=0,x=0;for(let A of v)A.points.forEach((y,g)=>{let T=l.get(y.id)?.[y.index],w=A.normals[g];T&&w&&(_+=T.nx*w.nx+T.ny*w.ny),x+=y.forward?1:-1});let R=(_===0?x:_)<0?-1:1;for(let{lo:A,points:y,line:g,normals:T}of v)y.forEach((w,b)=>{if(!I[A+b])return;let P=T[b];P&&h(w,R>0?P:{nx:-P.nx,ny:-P.ny}),r&&f(w,{dx:g[b].x-w.x,dy:(g[b].y-w.y)/o})})}),{normals:l,shifts:u}}function Un(t,n,o,e){let s=new Array(n.length),r=[],a=0,c=0;for(let i=0;i<n.length;i++){for(;c<n.length&&t[c]-t[i]<=o;){for(;r.length>a&&e*n[r.at(-1)]<=e*n[c];)r.pop();r.push(c++)}for(;t[i]-t[r[a]]>o;)a++;s[i]=n[r[a]]}return s}function Wn(t,n,o,e=()=>!0){let s=n.length,r=t.map((u,h)=>e(n[h])?s>1?(t[Math.min(h+1,s-1)]-t[Math.max(h-1,0)])/2:1:0),a=[0],c=[0];for(let u=0;u<s;u++)a.push(a[u]+r[u]),c.push(c[u]+r[u]*n[u]);let i=0,l=0;return n.map((u,h)=>{for(;t[h]-t[i]>o;)i++;for(;l<s&&t[l]-t[h]<=o;)l++;let f=a[l]-a[i];return f>0?(c[l]-c[i])/f:u})}var He=[0];function De(t){for(let n of t.values())if(n>1)return!0;return!1}function Fe(t,n,o,e,s){if(!De(n))return{span:n,nodeThreads:new Map,linkThreads:new Map};let r=new Map,a=[],c=[],i=[],l=[],u=[],h=[];for(let x of t){let R=[],A=[];for(let M of x){let X=r.get(M);X===void 0&&(X=a.length,r.set(M,X),a.push(M),c.push(0),i.push(0)),A.push(X);let B=o[M],q=B?.[Math.floor(B.length/2)];R.push(q?{x:q.x,y:q.y*e}:R.at(-1)??{x:0,y:0})}let y=xt(R),g=x.map(M=>n.get(M)??1),T=Un(y,g,s/2,1),w=A.map(M=>++i[M]),b=x.length,P=new Int32Array(b),G=-1;for(let M=0;M<b;M++)G=g[M]===T[M]?M:G,P[M]=G;let D=new Int32Array(b);G=-1;for(let M=b-1;M>=0;M--)G=g[M]===T[M]?M:G,D[M]=G;let Mt=new Array(b);for(let M=0;M<b;M++){let X=P[M],B=D[M],q=X<0?B:B<0||y[M]-y[X]<=y[B]-y[M]?X:B;Mt[M]=Math.min(w[q],T[M])-1,c[A[M]]=Math.max(c[A[M]],T[M])}l.push(A),u.push(w),h.push(Mt)}let f=[],p=[],k=(x,R)=>{let A=c[x],y=f[x]??=new Set;for(let g=0;g<A;g++)for(let T of[R-g,R+g])if(T>=0&&T<A&&!y.has(T))return T;return R};l.forEach((x,R)=>{x.forEach((A,y)=>{if(c[A]>1){let g=k(A,h[R][y]);f[A].add(g),(p[A]??=[])[u[R][y]]=g}})});let I=new Map,v=new Map;a.forEach((x,R)=>{I.set(x,c[R]),v.set(x,f[R]?[...f[R]].sort((A,y)=>A-y):He)});let _=new Map;return l.forEach((x,R)=>{let A=u[R];for(let y=1;y<x.length;y++){let g=x[y-1],T=x[y],w=[p[g]?.[A[y-1]]??0,p[T]?.[A[y]]??0],b=_.get(a[g]);b||(b=new Map,_.set(a[g],b));let P=b.get(a[T]);P?P.some(([G,D])=>G===w[0]&&D===w[1])||P.push(w):b.set(a[T],[w])}}),{span:I,nodeThreads:v,linkThreads:_}}function We(t,n,{reach:o,taper:e}){let s=new Map;return t.runs.forEach((r,a)=>{let c=xt(r),i=r.flatMap((h,f)=>h.middle?[f]:[]),l=i.map(h=>c[h]),u=i.map(h=>t.owned[a][h]);for(let[h,f]of Kn(l,u,o/2+e/2)){let p=l.slice(h,f+1),k=i.slice(h,f+1).map(v=>r[v].id),I=n.map(v=>{let _=k.map(x=>v.get(x)??0);return _.every(x=>x===_[0])?{slot:_,held:_}:{slot:Wn(p,Un(p,_,o/2,1),e/2),held:Wn(p,_,e/2,x=>x>0)}});k.forEach((v,_)=>{u[h+_]&&s.set(v,{slot:I.map(x=>x.slot[_]),held:I.map(x=>x.held[_])})})}}),s}function Yn(t,n,o,e){let s=Ut(t),r=t.map(f=>f.mostPasses),a=Te*e,c=ke(t.flatMap(f=>f.route),n,o,Ln*e),i=Le(c,n,o,Ln*e,Pt(r)*(s?Lt(r):1)*e,s),l=s?t.map(f=>Fe(f.route,f.passes,n,o,a)):void 0,u=l?We(c,l.map(f=>f.span),{reach:a,taper:Ce*e}):void 0,h={dx:0,dy:0};for(let f of i.shifts.values())for(let p of f)h.dx=Math.max(h.dx,Math.abs(p?.dx??0)),h.dy=Math.max(h.dy,Math.abs(p?.dy??0));return{lines:i,threads:l,spans:u,furthestShift:h}}function L(t,n,o,e){return(e<<24|o<<16|n<<8|t)>>>0}function qt(t){return t&255}function zt(t){return t>>>8&255}function Jt(t){return t>>>16&255}function Qt(t){return t>>>24&255}function Vn(t){return`rgba(${qt(t)},${zt(t)},${Jt(t)},${Qt(t)/255})`}function Uo(t,n){return`rgba(${Math.round(t[0]*255)},${Math.round(t[1]*255)},${Math.round(t[2]*255)},${n})`}function yt(t,n){return L(qt(t),zt(t),Jt(t),Math.round(Qt(t)*n))}function Yo(t,n){let o=Math.max(0,1-1/n),e=s=>Math.round(s+(255-s)*o);return L(e(qt(t)),e(zt(t)),e(Jt(t)),Qt(t))}var jn=300,St=.7,Tt=.5;function Ge(t){return`hsl(${t}, ${St*100}%, ${Tt*100}%)`}function Ct(t){return Math.max(0,Math.min(1,t))*jn}function Zt(t,n){return Ct((t-n.start)/(n.end-n.start))}var Xe=30;function jo({start:t,bp:n,reversed:o},e){let s=Zt(t,e),r=Zt(t+n,e);if(r-s<1)return[(s+r)/2];let a=Math.ceil((r-s)/Xe);return Array.from({length:a+1},(c,i)=>Zt(t+n*(o?a-i:i)/a,e))}var Be=Array.from({length:7},(t,n)=>({offset:n/6,color:Ge(n/6*jn)})),qo=`linear-gradient(to right, ${Be.map(t=>`${t.color} ${t.offset*100}%`).join(", ")})`;var $e=It();function qn(t,n,o,e,s,r,a=!1){return $e(t,[n,o.scaleX,o.scaleY,e,r,a,s],()=>{let c=new Map;for(let i=0;i<n.edges.length;i++){let l=e?.get(i),u=kn(t,n.edges[i],o,l,l&&r?.[i],a);u&&c.set(i,u)}return c})}var Ke=4;function Ue(t){let n=new Map;for(let o of t.edges)Rt(n,o.from,o.to),Rt(n,o.to,o.from);return n}function Ye({nodeId:t,nodeById:n,neighbors:o}){let e=new Set([t]),s=[t],r=1/0,a=-1/0;for(let c=0;c<Ke&&s.length>0;c++){let i=[];for(let l of s){let u=o.get(l);if(u){for(let h of u)if(!e.has(h)){e.add(h);let f=n.get(h);f&&bt(f)?(r=Math.min(r,f.stable.start+f.length),a=Math.max(a,f.stable.start)):i.push(h)}}}s=i}return r===1/0?void 0:{start:Math.min(r,a),end:Math.max(r,a)}}function Ve({nodeId:t,nodeById:n,neighbors:o}){let e=n.get(t);return e===void 0?void 0:bt(e)?{start:e.stable.start,end:e.stable.start+e.length}:Ye({nodeId:t,nodeById:n,neighbors:o})}function zn(t){let n=new Map(t.nodes.map(s=>[s.id,s])),o=Ue(t),e=new Map;for(let s of t.nodes){let r=Ve({nodeId:s.id,nodeById:n,neighbors:o});r&&e.set(s.id,(r.start+r.end)/2)}return e}var je=L(119,119,119,217),Jn=L(136,136,136,217),qe=L(24,24,28,240),ze=2.2,ce=L(160,160,160,255),Ot=.18,ms=Vn(yt(ce,Ot)),Je=11,Qe=1.2,Ze=1e-6,to=7,no=3,eo=3,oo=1.5,Qn=3,so=.5,ro=.45,tn=12,ao=1e-6,et=new Float64Array(64),ht=new Float64Array(64),ft=new Float64Array(64);function co(t,n,o,e){let s=t.length*tn+1;et.length<s&&(et=new Float64Array(s),ht=new Float64Array(s),ft=new Float64Array(s));let r=t[t.length-1];et[0]=r.x1,ht[0]=r.y1,ft[0]=0;let a=1,c=0;for(let i=t.length-1;i>=0&&c<e;i--){let l=t[i];for(let u=1;u<=tn&&c<e;u++){let h=1-(u/tn)**2,f=1-h,p=f*f*f,k=3*f*f*h,I=3*f*h*h,v=h*h*h,_=p*l.x0+k*l.cx0+I*l.cx1+v*l.x1,x=p*l.y0+k*l.cy0+I*l.cy1+v*l.y1;c+=Math.hypot(_-et[a-1],(x-ht[a-1])*o)*n,et[a]=_,ht[a]=x,ft[a]=c,a++}}return a}function Zn(t,n){let o=1;for(;o<t-1&&ft[o]<n;)o++;let e=ft[o-1],s=ft[o],r=s>e?Math.min(1,Math.max(0,(n-e)/(s-e))):0;return{x:et[o-1]+(et[o]-et[o-1])*r,y:ht[o-1]+(ht[o]-ht[o-1])*r}}function io({curves:t,edgeHalfWidth:n,nodeHalfWidth:o,scale:e,yToX:s,color:r,fromSegments:a,toSegments:c}){let i=to+no*n,l=co(t,e,s,o+Qn*i),u=ft[l-1],h=u<ao,f=Math.min(o,u),p=h?Math.min(1,On(a,e,e*s)/i):1;if(h?p<so:u<Qn*i)return;let k=Zn(l,f),I=Zn(l,f+i*p),v=k.x-I.x,_=(k.y-I.y)*s,x=t[t.length-1];return{x:k.x,y:k.y,angle:Math.hypot(v,_)>0?Math.atan2(_,v):vo(x,s,uo(x,c)),length:i*p,halfWidth:(eo+oo*n)*p,color:r}}var te=[[0,0]],lo=[0],ho={dx:0,dy:0};function ie(t,n,o){let e=s=>Math.hypot(s.x-t.x,(s.y-t.y)*o);return e(n[0])<e(n.at(-1))}function fo(t,n,o,e,s){return e?Sn(t).from==="start":ie({x:o.x0,y:o.y0},n,s)}function uo(t,n){if(n.length<2)return;let o=n[0],e=n[n.length-1];return Math.hypot(t.x1-o.x,t.y1-o.y)<=Math.hypot(t.x1-e.x,t.y1-e.y)?{from:o,to:n[1]}:{from:e,to:n[n.length-2]}}function ne(t,n){if(!t||!n)return;let o=n.x-t.x,e=n.y-t.y,s=Math.hypot(o,e);return s>0?{nx:-e/s,ny:o/s}:void 0}var le=.1,mo=1/Math.sqrt(le);function nn(t,n=1){let o=n===1?t:t.map(e=>({x:e.x,y:e.y*n}));return o.map((e,s)=>{let r=ne(o[s-1],e),a=ne(e,o[s+1]);if(r&&a){let c=(r.nx+a.nx)/2,i=(r.ny+a.ny)/2,l=r.nx*c+r.ny*i;return l>le?{nx:c/l,ny:i/l}:{nx:c,ny:i}}return r??a??{nx:0,ny:0}})}function ee(t,n,o,e=1){let s=new Array(t.length);for(let r=0;r<t.length;r++)s[r]={x:t[r].x+n[r].nx*o,y:t[r].y+n[r].ny*o/e};return s}function on(t,n,o){let e=(1-Math.abs(2*o-1))*n,s=e*(1-Math.abs(t/60%2-1)),r=o-e/2,a=0,c=0,i=0;return t<60?(a=e,c=s):t<120?(a=s,c=e):t<180?(c=e,i=s):t<240?(c=s,i=e):t<300?(a=s,i=e):(a=e,i=s),[a+r,c+r,i+r]}function Ht(t,n,o,e=1){let[s,r,a]=on(t,n,o);return L(Math.round(s*255),Math.round(r*255),Math.round(a*255),Math.round(e*255))}var po=[[68,1,84],[59,82,139],[33,145,140],[94,201,98],[253,231,37]],go=[[237,137,44],[158,42,122]],xo=[[220,50,50],[50,120,220]];function en(t,n){let o=Math.max(0,Math.min(1,n))*(t.length-1),e=Math.min(t.length-2,Math.floor(o)),s=o-e,r=t[e],a=t[e+1];return L(Math.round(r[0]+(a[0]-r[0])*s),Math.round(r[1]+(a[1]-r[1])*s),Math.round(r[2]+(a[2]-r[2])*s),255)}function yo(t,n){return Ht(In(t),Bt,$t,n)}var he=[60,65,72],sn=L(...he,255),ps=`rgb(${he.join(", ")})`;function Mo(t,n){let o=n.midpoints.get(t.id);return bt(t)&&o!==void 0?(o-n.start)/n.span:void 0}function gs(t,n){let o=zn(t);if(n&&n.end>n.start)return{start:n.start,span:n.end-n.start,midpoints:o};let e=1/0,s=-1/0;for(let r of o.values())e=Math.min(e,r),s=Math.max(s,r);return{start:e===1/0?0:e,span:s>e?s-e:1,midpoints:o}}function Eo(t,n){let o=1/0,e=-1/0,s=1/0,r=-1/0,a=0;for(let c of t.nodes)c.stable!==void 0&&c.stable.rank>a&&(a=c.stable.rank),c.depth<o&&(o=c.depth),c.depth>e&&(e=c.depth),c.length<s&&(s=c.length),c.length>r&&(r=c.length);return{minDepth:o,maxDepth:e,minLength:s,maxLength:r,maxRank:a,nodeCount:t.nodes.length,referenceRamp:n}}function Ao(t,n,o,e){switch(o){case"random":return yo(t.id,1);case"depth":return en(po,e.maxDepth>e.minDepth?(t.depth-e.minDepth)/(e.maxDepth-e.minDepth):.5);case"node-length":return en(xo,e.maxLength>e.minLength?(t.length-e.minLength)/(e.maxLength-e.minLength):.5);case"stable-rank":return t.stable===void 0?L(160,160,160,255):t.stable.rank===0?L(52,152,219,255):en(go,e.maxRank>1?(t.stable.rank-1)/(e.maxRank-1):0);case"reference-position":{let s=e.referenceRamp;if(s===void 0)return L(160,160,160,255);let r=Mo(t,s);return r===void 0?sn:Ht(Ct(r),St,Tt)}case"grey":return L(160,160,160,255);case"rainbow":{let s=e.nodeCount>1?n/e.nodeCount*360:0;return Ht(s,.75,.5)}default:return L(52,152,219,255)}}function vo(t,n=1,o){let e=[[t.cx1,t.cy1],[t.cx0,t.cy0],[t.x0,t.y0]];for(let[s,r]of e){let a=t.x1-s,c=(t.y1-r)*n;if(Math.hypot(a,c)>0)return Math.atan2(c,a)}return o?Math.atan2((o.to.y-o.from.y)*n,o.to.x-o.from.x):0}function wo(t,n){let o=!1;for(let e=0;e<t.length-1&&!o;e++){let s=t[e],r=t[e+1];o=Math.max(s.x,r.x)>=n.minX&&Math.min(s.x,r.x)<=n.maxX&&Math.max(s.y,r.y)>=n.minY&&Math.min(s.y,r.y)<=n.maxY}return o}function oe(t,n,o=0,e=0){for(let s of t){let r=Math.min(s.x0,s.cx0,s.cx1,s.x1),a=Math.max(s.x0,s.cx0,s.cx1,s.x1),c=Math.min(s.y0,s.cy0,s.cy1,s.y1),i=Math.max(s.y0,s.cy0,s.cy1,s.y1);if(a>=n.minX-o&&r<=n.maxX+o&&i>=n.minY-e&&c<=n.maxY+e)return!0}return!1}var se=new WeakMap;function _o(t){let n=se.get(t);if(!n){let o=[],e=new Map,s=t.paths??[];for(let r=0;r<s.length;r++)o.push(Ht(Nn(r,s.length),Bt,$t,.85)),e.has(s[r].name)||e.set(s[r].name,r);n={pathColorByIndex:o,pathIndexByName:e},se.set(t,n)}return n}var re=new WeakMap,Ro=new Map;function bo(t){let n=re.get(t);if(!n){n=new Map;for(let[o,e]of(t.paths??[]).entries())for(let s of new Set(e.nodeIds))Rt(n,s,o);re.set(t,n)}return n}var So=It(),ae=new WeakMap;function To(t){let n=ae.get(t);if(!n){n=new Map;for(let{from:o,to:e}of t.edges){let s=n.get(o);s||(s=new Set,n.set(o,s)),s.add(e)}ae.set(t,n)}return n}function xs(t){let{nodePositions:n,graph:o,nodeById:e,colorScheme:s,contigThickness:r,connectorThickness:a,drawPaths:c,nodeWidth:i="uniform",highlight:l,axis:u,linearLayout:h,viewportBounds:f,referenceRamp:p,deletions:k,deletionRoutes:I,stranded:v,hiddenEdges:_,version:x=0}=t,R=i==="depth"?Pn(o):0,A=u.scaleX,y=1/Math.max(A,Ze),g=Tn(u),T=qn(n,o,u,k,x,I,v),w=[],b=new Map,P=[],G=new Map,D=[],Mt=new Map,M=Eo(o,p),X=new Map;if(s==="rainbow")for(let d=0;d<o.nodes.length;d++)X.set(o.nodes[d].id,d);let B=o.paths?.length??0,{pathColorByIndex:q,pathIndexByName:xe}=_o(o),ye=d=>q[xe.get(d)??-1]??Jn,Me=c&&B>1?bo(o):Ro,ot=l?.walks??[],z=Ut(ot),Et=ot.map(d=>d.mostPasses),Ft=z?Lt(Et):1,At=l&&ot.length>1?So(l,[n,x,u.scaleX,u.scaleY],()=>Yn(ot,n,g,y)):void 0,Wt=At?.lines,fn=At?.threads,Ee=At?.spans,Ae=z?Yt(Et,Et):[],un=new Map,ve=d=>{let m=un.get(d);if(!m){let E=Ee?.get(d);m=E?Yt(E.slot,Et,E.held):Ae,un.set(d,m)}return m},Gt=(d,m,E,S)=>z?(ve(d)[E]+S*$n)*Ft:(E-(ot.length-1)/2)*m,dn=d=>z?lt/2*Ft:d/2,mn=new Map,pn=(d,m)=>{let E=mn.get(d);if(!E){let S=Wt?.normals.get(d);E=S?nn(m,g).map((O,F)=>S[F]??O):nn(m,g),mn.set(d,E)}return E},gn=new Map,xn=d=>{let m=gn.get(d);if(m===void 0){let E=e.get(d);m=Kt(E?Nt(E,r,i,R):r,ot.length),gn.set(d,m)}return m},yn=(d,m)=>Wt?.shifts.get(d)?.[m]??ho,Mn=(d,m,E)=>{let S=E?0:m.length-1;return{id:d,laneWidth:xn(d),normal:pn(d,m)[S]??{nx:0,ny:0},shift:yn(d,S)}},we=(d,m)=>{if(!f)return!0;let E=z?Pt(Et)*Ft:(ot.length-1)/2*xn(m),S=mo*E*y;return oe(d,f,S+(At?.furthestShift.dx??0),S/g+(At?.furthestShift.dy??0))},_e=(d,m,E)=>{let S=fn?.[d]?.linkThreads;if(!S?.size)return te;let O=S.get(m)?.get(E),F=To(o).get(E)?.has(m)?void 0:S.get(E)?.get(m);if(!F)return O??te;let st=F.map(([J,Q])=>[Q,J]);return O?[...O,...st]:st},Re=(d,m)=>Wt?.shifts.has(d)?m.map((E,S)=>{let{dx:O,dy:F}=yn(d,S);return{...E,x:E.x+O,y:E.y+F}}):m,be=A>(h?1:ro);for(let d=0;d<o.edges.length;d++){let m=o.edges[d],E=n[m.from],S=n[m.to],O=T.get(d);if(!E?.length||!S?.length||!O||_?.has(d))continue;let F=m.pathIds?.length??0,J=k?.get(d)!==void 0,Q=l?.edgeIndexes.has(d)??!1,ut=a/2*(J?ze:1),dt=c&&F>0,rt=J?qe:je,K=!l||Q?rt:yt(rt,Ot),vt=e.get(m.to),mt=(vt?Nt(vt,r,i,R):r)/2,U=C=>!f||oe(C,f),pt=C=>_n(C,Je/A,g,f),Z=(C,W,N)=>{if(!J){D.push({curves:C,thickness:W,color:N});return}for(let V of pt(C))D.push({curves:V.curves,thickness:W,color:N})},Y=(C,W,N,V,ct,H,j,_t,kt)=>{if(!J){D.push({curves:C,thickness:W,color:N,walk:V,pass:ct,normal:H,offsetX:j,endNormal:_t,endOffsetX:kt});return}let $={normal:H,offsetX:j},it={normal:_t,offsetX:kt};for(let nt of pt(C)){let vn=nt.startAlong===0?$:Vt($,it,nt.startAlong),wn=nt.endAlong===1?it:Vt($,it,nt.endAlong);D.push({curves:nt.curves,thickness:W,color:N,walk:V,pass:ct,normal:vn.normal,offsetX:vn.offsetX,endNormal:wn.normal,endOffsetX:wn.offsetX})}},at=C=>{let W=be?io({curves:C,edgeHalfWidth:a/2,nodeHalfWidth:mt,scale:A,yToX:g,color:K,fromSegments:E,toSegments:S}):void 0;W&&P.push(W)},wt=D.length,gt=P.length,tt=l?.walks.length&&Q&&!dt?l.walks:void 0;if(tt&&!we(O,m.from))continue;if(tt){let C=Mn(m.from,E,fo(m,E,O[0],v,g)),W=O.at(-1),N=z?Mn(m.to,S,ie({x:W.x1,y:W.y1},S,g)):C,V=tt.length===1,ct=dn(C.laneWidth);for(let H=0;H<tt.length;H++){let j=tt[H];if(j.edgeIndexes.has(d))for(let[_t,kt]of _e(H,m.from,m.to)){let $=V?0:Gt(C.id,C.laneWidth,H,_t)*y,it=z?Gt(N.id,N.laneWidth,H,kt)*y:$,nt=z?bn(O,C.shift.dx+C.normal.nx*$,C.shift.dy+C.normal.ny*$/g,N.shift.dx+N.normal.nx*it,N.shift.dy+N.normal.ny*it/g):$===0?O:Xt(O,C.normal.nx*$,C.normal.ny*$/g);U(nt)&&Y(nt,ct,j.colors.get(m.from)??j.colors.get(m.to)??rt,H,_t,C.normal,$,N.normal,it)}}D.length>wt&&at(O)}else if(!dt)U(O)&&(Z(O,ut,K),at(O));else{let C=Cn(E,S,F,u),W=Math.floor((F-1)/2);for(let N=0;N<F;N++){let{x:V,y:ct}=C[N],H=V===0&&ct===0?O:Xt(O,V,ct);if(!U(H))continue;let j=ye(m.pathIds[N]);Z(H,ut,l&&(l.walks.length?!l.names.has(m.pathIds[N]):!Q)?yt(j,Ot):j),N===W&&at(H)}}let En=D.length-wt;En>0&&Mt.set(d,{start:wt,count:En});let An=P.length-gt;An>0&&G.set(d,{start:gt,count:An})}for(let[d,m]of Object.entries(n)){let E=e.get(d);if(!E||f&&!wo(m,f))continue;let S=l!==void 0&&!l.nodeIds.has(d),O=S?ce:Ao(E,X.get(d)??0,s,M),F=S?yt(O,Ot):O,st=Nt(E,r,i,R),J=st/2,Q=w.length,ut=Me.get(d),dt=st/B,rt=m.length>=2,K=l?.walks.length&&!S&&!ut?.length?l.walks:void 0;if(rt&&K){let mt=Kt(st,K.length),U=K.length>1?pn(d,m):[],pt=K.length>1?Re(d,m):m,Z=dn(mt);for(let Y=0;Y<K.length;Y++){let at=K[Y].colors.get(d);if(at===void 0)continue;let wt=fn?.[Y]?.nodeThreads.get(d)??lo;for(let gt of wt){if(K.length===1){w.push({points:m,thickness:Z,color:at,walk:Y,pass:gt});continue}let tt=Gt(d,mt,Y,gt)*y;w.push({points:ee(pt,U,tt,g),thickness:Z,color:at,walk:Y,pass:gt,normals:U,offsetX:tt})}}}else if(rt&&ut?.length&&dt>=Qe){let mt=nn(m,g);for(let U of ut){let pt=(U-(B-1)/2)*dt*y,Z=q[U]??Jn;w.push({points:ee(m,mt,pt,g),thickness:dt/2,color:S?yt(Z,Ot):Z})}}else rt&&w.push({points:m,thickness:J,color:F});let vt=w.length-Q;vt>0&&b.set(d,{start:Q,count:vt})}return{nodeStrokes:w,nodeStrokeRuns:b,arrows:P,arrowRuns:G,edgeCurves:D,edgeCurveRuns:Mt}}var de=[{value:"progress",label:"Progress along the walk"},{value:"walk",label:"One colour for the walk"},{value:"reference",label:"Reference position"}],cn=[{value:"grey",label:"Grey to black",ends:["#a3a3a3","#151515"]},{value:"blue",label:"Cyan to navy",ends:["#6ee0f0","#0b2c7a"]},{value:"red",label:"Yellow to red",ends:["#ffd24a","#b3121b"]},{value:"purple",label:"Pink to plum",ends:["#f5a3d8","#5e1a6e"]},{value:"green",label:"Lime to forest",ends:["#b6e36c","#0b5d3b"]},{value:"rainbow",label:"Rainbow"}],rn=["blue","red","purple","green"],Co=t=>de.some(n=>n.value===t),Oo=t=>cn.some(n=>n.value===t);function ko(t,n,o,e=!0){let{field:s,scheme:r}=t.color??{},a=Co(s)?s:e?"progress":"walk",c=n?"grey":rn[o%rn.length],i=Oo(r)?r==="rainbow"&&a!=="reference"?c:r:c,l=Math.floor(o/rn.length)%fe.length;return a==="walk"&&i===c&&l>0?{field:a,scheme:i,shade:fe[l]}:e||a==="walk"?{field:a,scheme:i}:{field:a,scheme:i,darkest:Io}}var Io=.55,ln=.5,fe=[ln,.85,.2],No=.08,ue=({field:t,scheme:n})=>t!=="walk"&&n!=="rainbow";function Po(t){let n=new Map;for(let e of t)ue(e)&&n.set(e.scheme,(n.get(e.scheme)??0)+1);let o=new Map;return t.map(e=>{let s=ue(e)?n.get(e.scheme):1;if(s<2)return e;let r=o.get(e.scheme)??0;o.set(e.scheme,r+1);let a=No/2;return{...e,stretch:[r/s+(r>0?a:0),(r+1)/s-(r<s-1?a:0)]}})}var me=({stretch:t},n)=>t?t[0]+(t[1]-t[0])*n:n,Lo=t=>t<=.04045?t/12.92:((t+.055)/1.055)**2.4,Ho=t=>t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055;function Do(t){let[n,o,e]=[1,3,5].map(c=>Lo(Number.parseInt(t.slice(c,c+2),16)/255)),s=Math.cbrt(.4122214708*n+.5363325363*o+.0514459929*e),r=Math.cbrt(.2119034982*n+.6806995451*o+.1073969566*e),a=Math.cbrt(.0883024619*n+.2817188376*o+.6299787005*e);return[.2104542553*s+.793617785*r-.0040720468*a,1.9779984951*s-2.428592205*r+.4505937099*a,.0259040371*s+.7827717662*r-.808675766*a]}function Fo([t,n,o]){let e=(t+.3963377774*n+.2158037573*o)**3,s=(t-.1055613458*n-.0638541728*o)**3,r=(t-.0894841775*n-1.291485548*o)**3;return[4.0767416621*e-3.3077115913*s+.2309699292*r,-1.2684380046*e+2.6097574011*s-.3413193965*r,-.0041960863*e-.7034186147*s+1.707614701*r].map(a=>Ho(Math.max(0,Math.min(1,a)))*255)}var an=new Map;function Wo(t){if(!an.has(t)){let n=cn.find(o=>o.value===t);an.set(t,n&&"ends"in n?n.ends.map(Do):void 0)}return an.get(t)}function hn(t,n,o=0){let e=Math.max(0,Math.min(1,n)),s=Wo(t);if(!s)return on(Ct(e),St,Tt).map(u=>u*255);let[r,a]=s,c=r[0],i=a[0],l=i<o&&c>o?(c-o)/(c-i):1;return Fo(r.map((u,h)=>u+(a[h]-u)*e*l))}function pe(t,n,o){let[e,s,r]=hn(t,n,o).map(Math.round);return`rgb(${e}, ${s}, ${r})`}function Dt(t,n,o){let[e,s,r]=hn(t,n,o).map(Math.round);return L(e,s,r,255)}function Go(t,n){let{field:o,scheme:e,darkest:s,shade:r=ln}=t;return o==="walk"?Dt(e,r):n===void 0?ge:Dt(e,me(t,n),s)}var ge=sn;function Xo(t){let{field:n,scheme:o,darkest:e,shade:s=ln}=t,r=(a,c)=>({offset:a,color:pe(o,c,e),abgr:Dt(o,c,e)});return n==="walk"?[r(0,s)]:Array.from({length:7},(a,c)=>r(c/6,me(t,c/6)))}export{Ue as a,Ve as b,lt as c,Ut as d,$o as e,L as f,Vn as g,Uo as h,yt as i,Yo as j,Ge as k,jo as l,Be as m,qo as n,qn as o,ms as p,on as q,ps as r,Mo as s,gs as t,Eo as u,Ao as v,xs as w,de as x,cn as y,ko as z,Po as A,Go as B,ge as C,Xo as D};
2
+ //# sourceMappingURL=chunk-VZQ6VOUP.js.map