jbrowse-plugin-graphgenomeviewer 7.3.0 → 7.3.2

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 (110) hide show
  1. package/dist/chunks/{GbzBaseSyntenyAdapter-FXMGIM7Z.js → GbzBaseSyntenyAdapter-3MELVQRM.js} +2 -2
  2. package/dist/chunks/GbzBaseSyntenyAdapter-3MELVQRM.js.map +7 -0
  3. package/dist/chunks/{GraphGenomeView-WJ3FIDY2.js → GraphGenomeView-6EDKLBOJ.js} +2 -2
  4. package/dist/chunks/{GraphTrackSettingsDialog-ZW7ALMDV.js → GraphTrackSettingsDialog-KYEZWI4Z.js} +2 -2
  5. package/dist/chunks/{HighlightColorDialog-VBZRUKD5.js → HighlightColorDialog-IMLYI64R.js} +2 -2
  6. package/dist/chunks/{LinearGraphDisplay-SPOPTJEN.js → LinearGraphDisplay-CRIZLJDE.js} +2 -2
  7. package/dist/chunks/{MinigraphBubbleAdapter-QCOMFPLL.js → MinigraphBubbleAdapter-2HPTGZ5N.js} +2 -2
  8. package/dist/chunks/RgfaTabixAdapter-GNH3QCPZ.js +2 -0
  9. package/dist/chunks/RgfaTabixAdapter-GNH3QCPZ.js.map +7 -0
  10. package/dist/chunks/{WalkTabixSyntenyAdapter-7VDCNSFD.js → WalkTabixSyntenyAdapter-CUPHY36S.js} +2 -2
  11. package/dist/chunks/{chunk-44CJ2N3N.js → chunk-4EKOQHUX.js} +2 -2
  12. package/dist/chunks/{chunk-44CJ2N3N.js.map → chunk-4EKOQHUX.js.map} +4 -4
  13. package/dist/chunks/{chunk-RFDSEB2X.js → chunk-6DRBCLWY.js} +4 -4
  14. package/dist/chunks/chunk-B5SVBPXN.js +2 -0
  15. package/dist/chunks/chunk-B5SVBPXN.js.map +7 -0
  16. package/dist/chunks/chunk-CJMBJJLO.js +3 -0
  17. package/dist/chunks/chunk-CJMBJJLO.js.map +7 -0
  18. package/dist/chunks/{chunk-BXRTG7FU.js → chunk-F4T7JI7S.js} +2 -2
  19. package/dist/chunks/{chunk-BXRTG7FU.js.map → chunk-F4T7JI7S.js.map} +1 -1
  20. package/dist/chunks/chunk-GN4HSVLB.js +4 -0
  21. package/dist/chunks/{chunk-VQ77X5QU.js.map → chunk-GN4HSVLB.js.map} +4 -4
  22. package/dist/chunks/{chunk-WUSKVEA6.js → chunk-HOSCIP4U.js} +2 -2
  23. package/dist/chunks/{chunk-WUSKVEA6.js.map → chunk-HOSCIP4U.js.map} +2 -2
  24. package/dist/chunks/chunk-HTSG4T32.js +3 -0
  25. package/dist/chunks/chunk-HTSG4T32.js.map +7 -0
  26. package/dist/chunks/{chunk-2O3YVA2I.js → chunk-IFBKAC2H.js} +2 -2
  27. package/dist/chunks/{chunk-RW775LQN.js → chunk-MNL7IPTH.js} +2 -2
  28. package/dist/chunks/{chunk-RW775LQN.js.map → chunk-MNL7IPTH.js.map} +2 -2
  29. package/dist/chunks/chunk-N5VWQHTK.js +2 -0
  30. package/dist/chunks/{chunk-YKSUKPYY.js.map → chunk-N5VWQHTK.js.map} +2 -2
  31. package/dist/chunks/{chunk-DBPEUVUC.js → chunk-NGR473EL.js} +2 -2
  32. package/dist/chunks/{chunk-DBPEUVUC.js.map → chunk-NGR473EL.js.map} +2 -2
  33. package/dist/chunks/chunk-ORHUPW3G.js +3 -0
  34. package/dist/chunks/chunk-ORHUPW3G.js.map +7 -0
  35. package/dist/chunks/{chunk-DUR437TH.js → chunk-PUFH6DMJ.js} +2 -2
  36. package/dist/chunks/{chunk-DUR437TH.js.map → chunk-PUFH6DMJ.js.map} +1 -1
  37. package/dist/chunks/{chunk-FIRQAKMX.js → chunk-Q55PHRHV.js} +1 -1
  38. package/dist/chunks/{chunk-FIRQAKMX.js.map → chunk-Q55PHRHV.js.map} +1 -1
  39. package/dist/chunks/chunk-QQCTNB2Z.js +2 -0
  40. package/dist/chunks/chunk-QQCTNB2Z.js.map +7 -0
  41. package/dist/chunks/chunk-R25GOTED.js +2 -0
  42. package/dist/chunks/chunk-R25GOTED.js.map +7 -0
  43. package/dist/chunks/chunk-TQKSF3NI.js +2 -0
  44. package/dist/chunks/{chunk-7HWHWPRW.js.map → chunk-TQKSF3NI.js.map} +3 -3
  45. package/dist/chunks/{chunk-6MUBJVBG.js → chunk-ULLEUORS.js} +2 -2
  46. package/dist/chunks/{chunk-6MUBJVBG.js.map → chunk-ULLEUORS.js.map} +4 -4
  47. package/dist/chunks/chunk-VW4PPXH6.js +2 -0
  48. package/dist/chunks/{renderSvg-WD6YDV2I.js → renderSvg-HEEQJD5B.js} +2 -2
  49. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
  50. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +2 -2
  51. package/package.json +3 -3
  52. package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +3 -1
  53. package/src/RgfaTabixAdapter/configSchema.ts +4 -4
  54. package/src/RgfaTabixAdapter/test_data/{walks3_follow.GRCh38.walks.bed.gz → walks4_follow.GRCh38.walks.bed.gz} +0 -0
  55. package/src/RgfaTabixAdapter/test_data/{walks3_header.GRCh38.walks.bed.gz → walks4_header.GRCh38.walks.bed.gz} +0 -0
  56. package/src/RgfaTabixAdapter/test_data/walks4_inversion.GRCh38.walks.bed.gz +0 -0
  57. package/src/RgfaTabixAdapter/test_data/walks4_inversion.GRCh38.walks.bed.gz.tbi +0 -0
  58. package/src/RgfaTabixAdapter/test_data/walks4_lanepairs.GRCh38.walks.bed.gz +0 -0
  59. package/src/RgfaTabixAdapter/test_data/walks4_lanepairs.GRCh38.walks.bed.gz.tbi +0 -0
  60. package/src/RgfaTabixAdapter/test_data/walks4_maxnode.GRCh38.walks.bed.gz +0 -0
  61. package/src/RgfaTabixAdapter/test_data/walks4_rejoin.GRCh38.walks.bed.gz +0 -0
  62. package/src/RgfaTabixAdapter/test_data/{walks3_twopart.GRCh38.walks.bed.gz → walks4_twopart.GRCh38.walks.bed.gz} +0 -0
  63. package/src/RgfaTabixAdapter/walkFiles.test.ts +9 -9
  64. package/src/RgfaTabixAdapter/walkReader.ts +5 -1
  65. package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.test.ts +5 -5
  66. package/src/WalkTabixSyntenyAdapter/configSchema.ts +3 -3
  67. package/src/WalkTabixSyntenyAdapter/gbzParity.test.ts +2 -2
  68. package/src/panSNAliases/panSNAliases.test.ts +2 -2
  69. package/src/panSNTabix.ts +3 -3
  70. package/src/version.ts +1 -1
  71. package/dist/chunks/GbzBaseSyntenyAdapter-FXMGIM7Z.js.map +0 -7
  72. package/dist/chunks/RgfaTabixAdapter-O3NMNRZ2.js +0 -2
  73. package/dist/chunks/RgfaTabixAdapter-O3NMNRZ2.js.map +0 -7
  74. package/dist/chunks/chunk-2M4XYSLG.js +0 -2
  75. package/dist/chunks/chunk-2M4XYSLG.js.map +0 -7
  76. package/dist/chunks/chunk-6KUHGRHU.js +0 -2
  77. package/dist/chunks/chunk-6KUHGRHU.js.map +0 -7
  78. package/dist/chunks/chunk-7HWHWPRW.js +0 -2
  79. package/dist/chunks/chunk-B2EP6FOQ.js +0 -3
  80. package/dist/chunks/chunk-B2EP6FOQ.js.map +0 -7
  81. package/dist/chunks/chunk-JCAZTNYG.js +0 -2
  82. package/dist/chunks/chunk-N74HGPAW.js +0 -3
  83. package/dist/chunks/chunk-N74HGPAW.js.map +0 -7
  84. package/dist/chunks/chunk-PEDWEPNK.js +0 -2
  85. package/dist/chunks/chunk-PEDWEPNK.js.map +0 -7
  86. package/dist/chunks/chunk-PYQG3JHP.js +0 -3
  87. package/dist/chunks/chunk-PYQG3JHP.js.map +0 -7
  88. package/dist/chunks/chunk-VQ77X5QU.js +0 -4
  89. package/dist/chunks/chunk-YKSUKPYY.js +0 -2
  90. package/src/RgfaTabixAdapter/test_data/walks3_inversion.GRCh38.walks.bed.gz +0 -0
  91. package/src/RgfaTabixAdapter/test_data/walks3_inversion.GRCh38.walks.bed.gz.tbi +0 -0
  92. package/src/RgfaTabixAdapter/test_data/walks3_lanepairs.GRCh38.walks.bed.gz +0 -0
  93. package/src/RgfaTabixAdapter/test_data/walks3_lanepairs.GRCh38.walks.bed.gz.tbi +0 -0
  94. package/src/RgfaTabixAdapter/test_data/walks3_maxnode.GRCh38.walks.bed.gz +0 -0
  95. package/src/RgfaTabixAdapter/test_data/walks3_rejoin.GRCh38.walks.bed.gz +0 -0
  96. /package/dist/chunks/{GraphGenomeView-WJ3FIDY2.js.map → GraphGenomeView-6EDKLBOJ.js.map} +0 -0
  97. /package/dist/chunks/{GraphTrackSettingsDialog-ZW7ALMDV.js.map → GraphTrackSettingsDialog-KYEZWI4Z.js.map} +0 -0
  98. /package/dist/chunks/{HighlightColorDialog-VBZRUKD5.js.map → HighlightColorDialog-IMLYI64R.js.map} +0 -0
  99. /package/dist/chunks/{LinearGraphDisplay-SPOPTJEN.js.map → LinearGraphDisplay-CRIZLJDE.js.map} +0 -0
  100. /package/dist/chunks/{MinigraphBubbleAdapter-QCOMFPLL.js.map → MinigraphBubbleAdapter-2HPTGZ5N.js.map} +0 -0
  101. /package/dist/chunks/{WalkTabixSyntenyAdapter-7VDCNSFD.js.map → WalkTabixSyntenyAdapter-CUPHY36S.js.map} +0 -0
  102. /package/dist/chunks/{chunk-RFDSEB2X.js.map → chunk-6DRBCLWY.js.map} +0 -0
  103. /package/dist/chunks/{chunk-2O3YVA2I.js.map → chunk-IFBKAC2H.js.map} +0 -0
  104. /package/dist/chunks/{chunk-JCAZTNYG.js.map → chunk-VW4PPXH6.js.map} +0 -0
  105. /package/dist/chunks/{renderSvg-WD6YDV2I.js.map → renderSvg-HEEQJD5B.js.map} +0 -0
  106. /package/src/RgfaTabixAdapter/test_data/{walks3_follow.GRCh38.walks.bed.gz.tbi → walks4_follow.GRCh38.walks.bed.gz.tbi} +0 -0
  107. /package/src/RgfaTabixAdapter/test_data/{walks3_header.GRCh38.walks.bed.gz.tbi → walks4_header.GRCh38.walks.bed.gz.tbi} +0 -0
  108. /package/src/RgfaTabixAdapter/test_data/{walks3_maxnode.GRCh38.walks.bed.gz.tbi → walks4_maxnode.GRCh38.walks.bed.gz.tbi} +0 -0
  109. /package/src/RgfaTabixAdapter/test_data/{walks3_rejoin.GRCh38.walks.bed.gz.tbi → walks4_rejoin.GRCh38.walks.bed.gz.tbi} +0 -0
  110. /package/src/RgfaTabixAdapter/test_data/{walks3_twopart.GRCh38.walks.bed.gz.tbi → walks4_twopart.GRCh38.walks.bed.gz.tbi} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-G2FD7S3C.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-GQZVR5DW.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-WA5WNP6V.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VX656OAZ.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-XSF4RQRP.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-GM7M25NW.js"],
4
- "sourcesContent": ["// src/renderer/colorBits.ts\nfunction packAbgr(r, g, b, a) {\n return (a << 24 | b << 16 | g << 8 | r) >>> 0;\n}\nfunction abgrRed(c) {\n return c & 255;\n}\nfunction abgrGreen(c) {\n return c >>> 8 & 255;\n}\nfunction abgrBlue(c) {\n return c >>> 16 & 255;\n}\nfunction abgrAlpha(c) {\n return c >>> 24 & 255;\n}\nfunction abgrToCssRgba(c) {\n return `rgba(${abgrRed(c)},${abgrGreen(c)},${abgrBlue(c)},${abgrAlpha(c) / 255})`;\n}\nfunction normalizedRgbToCssRgba(c, alpha) {\n return `rgba(${Math.round(c[0] * 255)},${Math.round(c[1] * 255)},${Math.round(c[2] * 255)},${alpha})`;\n}\nfunction fadeAbgr(c, alpha) {\n return packAbgr(\n abgrRed(c),\n abgrGreen(c),\n abgrBlue(c),\n Math.round(abgrAlpha(c) * alpha)\n );\n}\nfunction brightenAbgr(c, factor) {\n const t = Math.max(0, 1 - 1 / factor);\n const lift = (v) => Math.round(v + (255 - v) * t);\n return packAbgr(\n lift(abgrRed(c)),\n lift(abgrGreen(c)),\n lift(abgrBlue(c)),\n abgrAlpha(c)\n );\n}\n\nexport {\n packAbgr,\n abgrRed,\n abgrGreen,\n abgrBlue,\n abgrAlpha,\n abgrToCssRgba,\n normalizedRgbToCssRgba,\n fadeAbgr,\n brightenAbgr\n};\n", "// src/referenceRampCss.ts\nvar REFERENCE_RAMP_MAX_HUE = 300;\nvar REFERENCE_RAMP_SATURATION = 0.7;\nvar REFERENCE_RAMP_LIGHTNESS = 0.5;\nfunction rampHueCss(hue) {\n return `hsl(${hue}, ${REFERENCE_RAMP_SATURATION * 100}%, ${REFERENCE_RAMP_LIGHTNESS * 100}%)`;\n}\nfunction rampHueAt(frac) {\n return Math.max(0, Math.min(1, frac)) * REFERENCE_RAMP_MAX_HUE;\n}\nfunction rampHue(bp, domain) {\n return rampHueAt((bp - domain.start) / (domain.end - domain.start));\n}\nvar HUE_STOP_DEG = 30;\nfunction rampStops({ start, bp, reversed }, domain) {\n const low = rampHue(start, domain);\n const high = rampHue(start + bp, domain);\n if (high - low < 1) {\n return [(low + high) / 2];\n }\n const n = Math.ceil((high - low) / HUE_STOP_DEG);\n return Array.from(\n { length: n + 1 },\n (_, i) => rampHue(start + bp * (reversed ? n - i : i) / n, domain)\n );\n}\nvar RAMP_GRADIENT_STOPS = Array.from({ length: 7 }, (_, i) => ({\n offset: i / 6,\n color: rampHueCss(i / 6 * REFERENCE_RAMP_MAX_HUE)\n}));\nvar RAMP_GRADIENT_CSS = `linear-gradient(to right, ${RAMP_GRADIENT_STOPS.map(\n (s) => `${s.color} ${s.offset * 100}%`\n).join(\", \")})`;\n\nexport {\n REFERENCE_RAMP_MAX_HUE,\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS,\n rampHueCss,\n rampHueAt,\n rampHue,\n rampStops,\n RAMP_GRADIENT_STOPS,\n RAMP_GRADIENT_CSS\n};\n", "import {\n weakMemo\n} from \"./chunk-HMXCN6PG.js\";\nimport {\n edgeCurvesOf\n} from \"./chunk-CGMSKIEO.js\";\n\n// src/util/edgeCurves.ts\nvar cache = weakMemo();\nfunction baseEdgeCurves(nodePositions, graph, axis, deletions, version, routes, stranded = false) {\n return cache(\n nodePositions,\n [graph, axis.scaleX, axis.scaleY, deletions, routes, stranded, version],\n () => {\n const curves = /* @__PURE__ */ new Map();\n for (let ei = 0; ei < graph.edges.length; ei++) {\n const bypassed = deletions?.get(ei);\n const edgeCurves = edgeCurvesOf(\n nodePositions,\n graph.edges[ei],\n axis,\n bypassed,\n bypassed && routes?.[ei],\n stranded\n );\n if (edgeCurves) {\n curves.set(ei, edgeCurves);\n }\n }\n return curves;\n }\n );\n}\n\nexport {\n baseEdgeCurves\n};\n", "import {\n pushTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/referenceSpan.ts\nvar MAX_BACKBONE_HOPS = 4;\nfunction buildNeighbors(graph) {\n const neighbors = /* @__PURE__ */ new Map();\n for (const edge of graph.edges) {\n pushTo(neighbors, edge.from, edge.to);\n pushTo(neighbors, edge.to, edge.from);\n }\n return neighbors;\n}\nfunction flankingSpan({\n nodeId,\n nodeById,\n neighbors\n}) {\n const seen = /* @__PURE__ */ new Set([nodeId]);\n let frontier = [nodeId];\n let minEnd = Infinity;\n let maxStart = -Infinity;\n for (let hop = 0; hop < MAX_BACKBONE_HOPS && frontier.length > 0; hop++) {\n const next = [];\n for (const id of frontier) {\n const adjacent = neighbors.get(id);\n if (adjacent) {\n for (const neighborId of adjacent) {\n if (!seen.has(neighborId)) {\n seen.add(neighborId);\n const neighbor = nodeById.get(neighborId);\n if (neighbor && isBackbone(neighbor)) {\n minEnd = Math.min(minEnd, neighbor.stable.start + neighbor.length);\n maxStart = Math.max(maxStart, neighbor.stable.start);\n } else {\n next.push(neighborId);\n }\n }\n }\n }\n }\n frontier = next;\n }\n return minEnd === Infinity ? void 0 : {\n start: Math.min(minEnd, maxStart),\n end: Math.max(minEnd, maxStart)\n };\n}\nfunction nodeReferenceSpan({\n nodeId,\n nodeById,\n neighbors\n}) {\n const node = nodeById.get(nodeId);\n return node === void 0 ? void 0 : isBackbone(node) ? { start: node.stable.start, end: node.stable.start + node.length } : flankingSpan({ nodeId, nodeById, neighbors });\n}\nfunction referenceMidpoints(graph) {\n const nodeById = new Map(graph.nodes.map((node) => [node.id, node]));\n const neighbors = buildNeighbors(graph);\n const midpoints = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const span = nodeReferenceSpan({ nodeId: node.id, nodeById, neighbors });\n if (span) {\n midpoints.set(node.id, (span.start + span.end) / 2);\n }\n }\n return midpoints;\n}\n\nexport {\n buildNeighbors,\n nodeReferenceSpan,\n referenceMidpoints\n};\n", "import {\n abgrToCssRgba,\n fadeAbgr,\n packAbgr\n} from \"./chunk-G2FD7S3C.js\";\nimport {\n REFERENCE_RAMP_LIGHTNESS,\n REFERENCE_RAMP_SATURATION,\n rampHueAt\n} from \"./chunk-GQZVR5DW.js\";\nimport {\n baseEdgeCurves\n} from \"./chunk-WA5WNP6V.js\";\nimport {\n PATH_LIGHTNESS,\n PATH_SATURATION,\n nameHue,\n pathHueAt\n} from \"./chunk-3GP3KT5L.js\";\nimport {\n meanDepth,\n nodeWidthPx\n} from \"./chunk-CRCD3ODN.js\";\nimport {\n referenceMidpoints\n} from \"./chunk-VX656OAZ.js\";\nimport {\n dashCurves,\n pathRibbonOffsets,\n polylinePx,\n strandSides,\n translateCurves,\n yToXOf\n} from \"./chunk-UBQSRCWR.js\";\nimport {\n pushTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/renderer/GeometryBuilder.ts\nvar EDGE_DEFAULT_COLOR = packAbgr(119, 119, 119, 217);\nvar EDGE_PATH_FALLBACK_COLOR = packAbgr(136, 136, 136, 217);\nvar EDGE_DELETION_COLOR = packAbgr(24, 24, 28, 240);\nvar DELETION_THICKNESS_FACTOR = 2.2;\nvar LIFT_BACKDROP_COLOR = packAbgr(160, 160, 160, 255);\nvar FADED_ALPHA = 0.18;\nvar LIFT_BACKDROP_CSS = abgrToCssRgba(\n fadeAbgr(LIFT_BACKDROP_COLOR, FADED_ALPHA)\n);\nvar DELETION_DASH_PX = 11;\nvar MIN_PATH_STRIPE_PX = 1.2;\nvar MIN_WALK_LANE_PX = 4;\nvar MIN_SCALE_FOR_OFFSET = 1e-6;\nvar ARROW_LENGTH_BASE_PX = 7;\nvar ARROW_LENGTH_PER_EDGE_PX = 3;\nvar ARROW_HALF_WIDTH_BASE_PX = 3;\nvar ARROW_HALF_WIDTH_PER_EDGE_PX = 1.5;\nvar MIN_LINK_HEADS = 3;\nvar MIN_ARROW_FIT = 0.5;\nvar MIN_ARROW_SCALE = 0.45;\nvar ARROW_CURVE_STEPS = 12;\nvar ABUTTING_PX = 1e-6;\nvar walkX = new Float64Array(64);\nvar walkY = new Float64Array(64);\nvar walkPx = new Float64Array(64);\nfunction backFromEnd(curves, scale, yToX, untilPx) {\n const most = curves.length * ARROW_CURVE_STEPS + 1;\n if (walkX.length < most) {\n walkX = new Float64Array(most);\n walkY = new Float64Array(most);\n walkPx = new Float64Array(most);\n }\n const last = curves[curves.length - 1];\n walkX[0] = last.x1;\n walkY[0] = last.y1;\n walkPx[0] = 0;\n let n = 1;\n let px = 0;\n for (let ci = curves.length - 1; ci >= 0 && px < untilPx; ci--) {\n const c = curves[ci];\n for (let k = 1; k <= ARROW_CURVE_STEPS && px < untilPx; k++) {\n const t = 1 - (k / ARROW_CURVE_STEPS) ** 2;\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 const x = a * c.x0 + b * c.cx0 + d * c.cx1 + e * c.x1;\n const y = a * c.y0 + b * c.cy0 + d * c.cy1 + e * c.y1;\n px += Math.hypot(x - walkX[n - 1], (y - walkY[n - 1]) * yToX) * scale;\n walkX[n] = x;\n walkY[n] = y;\n walkPx[n] = px;\n n++;\n }\n }\n return n;\n}\nfunction walkPointAt(n, px) {\n let i = 1;\n while (i < n - 1 && walkPx[i] < px) {\n i++;\n }\n const from = walkPx[i - 1];\n const to = walkPx[i];\n const f = to > from ? Math.min(1, Math.max(0, (px - from) / (to - from))) : 0;\n return {\n x: walkX[i - 1] + (walkX[i] - walkX[i - 1]) * f,\n y: walkY[i - 1] + (walkY[i] - walkY[i - 1]) * f\n };\n}\nfunction arrowheadFor({\n curves,\n edgeHalfWidth,\n nodeHalfWidth,\n scale,\n yToX,\n color,\n fromSegments,\n toSegments\n}) {\n const length = ARROW_LENGTH_BASE_PX + ARROW_LENGTH_PER_EDGE_PX * edgeHalfWidth;\n const n = backFromEnd(\n curves,\n scale,\n yToX,\n nodeHalfWidth + MIN_LINK_HEADS * length\n );\n const lengthPx = walkPx[n - 1];\n const abutting = lengthPx < ABUTTING_PX;\n const inset = Math.min(nodeHalfWidth, lengthPx);\n const fit = abutting ? Math.min(1, polylinePx(fromSegments, scale, scale * yToX) / length) : 1;\n if (abutting ? fit < MIN_ARROW_FIT : lengthPx < MIN_LINK_HEADS * length) {\n return void 0;\n }\n const tip = walkPointAt(n, inset);\n const base = walkPointAt(n, inset + length * fit);\n const dx = tip.x - base.x;\n const dy = (tip.y - base.y) * yToX;\n const last = curves[curves.length - 1];\n return {\n x: tip.x,\n y: tip.y,\n angle: Math.hypot(dx, dy) > 0 ? Math.atan2(dy, dx) : endTangent(last, yToX, intoDirection(last, toSegments)),\n length: length * fit,\n halfWidth: (ARROW_HALF_WIDTH_BASE_PX + ARROW_HALF_WIDTH_PER_EDGE_PX * edgeHalfWidth) * fit,\n color\n };\n}\nfunction leavesStart(edge, segments, first, stranded, yToX) {\n if (stranded) {\n return strandSides(edge).from === \"start\";\n }\n const gap = (p) => Math.hypot(p.x - first.x0, (p.y - first.y0) * yToX);\n return gap(segments[0]) < gap(segments.at(-1));\n}\nfunction intoDirection(last, toSegments) {\n if (toSegments.length < 2) {\n return void 0;\n }\n const first = toSegments[0];\n const final = toSegments[toSegments.length - 1];\n const atStart = Math.hypot(last.x1 - first.x, last.y1 - first.y) <= Math.hypot(last.x1 - final.x, last.y1 - final.y);\n return atStart ? { from: first, to: toSegments[1] } : { from: final, to: toSegments[toSegments.length - 2] };\n}\nfunction normal(a, b) {\n if (!a || !b) {\n return void 0;\n }\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const len = Math.hypot(dx, dy);\n return len > 0 ? { nx: -dy / len, ny: dx / len } : void 0;\n}\nfunction pointNormalsOf(rawPoints, yToX = 1) {\n const points = yToX === 1 ? rawPoints : rawPoints.map((p) => ({ x: p.x, y: p.y * yToX }));\n return points.map((p, i) => {\n const before = normal(points[i - 1], p);\n const after = normal(p, points[i + 1]);\n if (before && after) {\n const nx = (before.nx + after.nx) / 2;\n const ny = (before.ny + after.ny) / 2;\n const dot = before.nx * nx + before.ny * ny;\n return dot > 0.1 ? { nx: nx / dot, ny: ny / dot } : { nx, ny };\n }\n return before ?? after ?? { nx: 0, ny: 0 };\n });\n}\nfunction offsetPolyline(points, normals, distance, yToX = 1) {\n return points.map((p, i) => ({\n x: p.x + normals[i].nx * distance,\n y: p.y + normals[i].ny * distance / yToX\n }));\n}\nfunction hslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n let r = 0;\n let g = 0;\n let b = 0;\n if (h < 60) {\n r = c;\n g = x;\n } else if (h < 120) {\n r = x;\n g = c;\n } else if (h < 180) {\n g = c;\n b = x;\n } else if (h < 240) {\n g = x;\n b = c;\n } else if (h < 300) {\n r = x;\n b = c;\n } else {\n r = c;\n b = x;\n }\n return [r + m, g + m, b + m];\n}\nfunction packHsl(h, s, l, a = 1) {\n const [r, g, b] = hslToRgb(h, s, l);\n return packAbgr(\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255),\n Math.round(a * 255)\n );\n}\nvar DEPTH_GRADIENT = [\n [68, 1, 84],\n [59, 82, 139],\n [33, 145, 140],\n [94, 201, 98],\n [253, 231, 37]\n];\nvar STABLE_RANK_GRADIENT = [\n [237, 137, 44],\n [158, 42, 122]\n];\nvar NODE_LENGTH_GRADIENT = [\n [220, 50, 50],\n [50, 120, 220]\n];\nfunction sampleGradient(stops, t) {\n const pos = Math.max(0, Math.min(1, t)) * (stops.length - 1);\n const i = Math.min(stops.length - 2, Math.floor(pos));\n const f = pos - i;\n const a = stops[i];\n const b = stops[i + 1];\n return packAbgr(\n Math.round(a[0] + (b[0] - a[0]) * f),\n Math.round(a[1] + (b[1] - a[1]) * f),\n Math.round(a[2] + (b[2] - a[2]) * f),\n 255\n );\n}\nfunction hashColor(str, alpha) {\n return packHsl(nameHue(str), PATH_SATURATION, PATH_LIGHTNESS, alpha);\n}\nvar REFERENCE_RAMP_ALT_RGB = [60, 65, 72];\nvar REFERENCE_RAMP_ALT_COLOR = packAbgr(...REFERENCE_RAMP_ALT_RGB, 255);\nvar REFERENCE_RAMP_ALT_CSS = `rgb(${REFERENCE_RAMP_ALT_RGB.join(\", \")})`;\nfunction computeReferenceRamp(graph, domain) {\n const midpoints = referenceMidpoints(graph);\n if (domain && domain.end > domain.start) {\n return {\n start: domain.start,\n span: domain.end - domain.start,\n midpoints\n };\n }\n let min = Infinity;\n let max = -Infinity;\n for (const mid of midpoints.values()) {\n min = Math.min(min, mid);\n max = Math.max(max, mid);\n }\n return {\n start: min === Infinity ? 0 : min,\n span: max > min ? max - min : 1,\n midpoints\n };\n}\nfunction computeColorSchemeRange(graph, referenceRamp) {\n let minDepth = Infinity;\n let maxDepth = -Infinity;\n let minLength = Infinity;\n let maxLength = -Infinity;\n let maxRank = 0;\n for (const n of graph.nodes) {\n if (n.stable !== void 0 && n.stable.rank > maxRank) {\n maxRank = n.stable.rank;\n }\n if (n.depth < minDepth) {\n minDepth = n.depth;\n }\n if (n.depth > maxDepth) {\n maxDepth = n.depth;\n }\n if (n.length < minLength) {\n minLength = n.length;\n }\n if (n.length > maxLength) {\n maxLength = n.length;\n }\n }\n return {\n minDepth,\n maxDepth,\n minLength,\n maxLength,\n maxRank,\n nodeCount: graph.nodes.length,\n referenceRamp\n };\n}\nfunction getNodeColor(node, nodeIndex, colorScheme, range) {\n switch (colorScheme) {\n case \"random\":\n return hashColor(node.id, 1);\n case \"depth\":\n return sampleGradient(\n DEPTH_GRADIENT,\n range.maxDepth > range.minDepth ? (node.depth - range.minDepth) / (range.maxDepth - range.minDepth) : 0.5\n );\n case \"node-length\":\n return sampleGradient(\n NODE_LENGTH_GRADIENT,\n range.maxLength > range.minLength ? (node.length - range.minLength) / (range.maxLength - range.minLength) : 0.5\n );\n // rGFA states the backbone rather than leaving it to be inferred: rank 0 is\n // the reference, higher ranks are the sequence that diverges from it. A\n // graph with no SR tags draws every node as unranked.\n case \"stable-rank\":\n return node.stable === void 0 ? packAbgr(160, 160, 160, 255) : node.stable.rank === 0 ? packAbgr(52, 152, 219, 255) : sampleGradient(\n STABLE_RANK_GRADIENT,\n range.maxRank > 1 ? (node.stable.rank - 1) / (range.maxRank - 1) : 0\n );\n // Position on the reference, the one quantity both panels of a\n // graph-over-linear figure can state, so only the backbone takes a hue\n case \"reference-position\": {\n const ramp = range.referenceRamp;\n if (ramp === void 0) {\n return packAbgr(160, 160, 160, 255);\n }\n const mid = ramp.midpoints.get(node.id);\n if (!isBackbone(node) || mid === void 0) {\n return REFERENCE_RAMP_ALT_COLOR;\n }\n return packHsl(\n rampHueAt((mid - ramp.start) / ramp.span),\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS\n );\n }\n case \"grey\":\n return packAbgr(160, 160, 160, 255);\n case \"rainbow\": {\n const hue = range.nodeCount > 1 ? nodeIndex / range.nodeCount * 360 : 0;\n return packHsl(hue, 0.75, 0.5);\n }\n default:\n return packAbgr(52, 152, 219, 255);\n }\n}\nfunction endTangent(c, yToX = 1, into) {\n const candidates = [\n [c.cx1, c.cy1],\n [c.cx0, c.cy0],\n [c.x0, c.y0]\n ];\n for (const [x, y] of candidates) {\n const dx = c.x1 - x;\n const dy = (c.y1 - y) * yToX;\n if (Math.hypot(dx, dy) > 0) {\n return Math.atan2(dy, dx);\n }\n }\n return into ? Math.atan2((into.to.y - into.from.y) * yToX, into.to.x - into.from.x) : 0;\n}\nfunction isPolylineInBounds(segments, bounds) {\n let hit = false;\n for (let i = 0; i < segments.length - 1 && !hit; i++) {\n const a = segments[i];\n const b = segments[i + 1];\n hit = Math.max(a.x, b.x) >= bounds.minX && Math.min(a.x, b.x) <= bounds.maxX && Math.max(a.y, b.y) >= bounds.minY && Math.min(a.y, b.y) <= bounds.maxY;\n }\n return hit;\n}\nfunction isBezierInBounds(curves, bounds) {\n for (const c of curves) {\n const cMinX = Math.min(c.x0, c.cx0, c.cx1, c.x1);\n const cMaxX = Math.max(c.x0, c.cx0, c.cx1, c.x1);\n const cMinY = Math.min(c.y0, c.cy0, c.cy1, c.y1);\n const cMaxY = Math.max(c.y0, c.cy0, c.cy1, c.y1);\n if (cMaxX >= bounds.minX && cMinX <= bounds.maxX && cMaxY >= bounds.minY && cMinY <= bounds.maxY) {\n return true;\n }\n }\n return false;\n}\nvar paletteCache = /* @__PURE__ */ new WeakMap();\nfunction pathPaletteOf(graph) {\n let palette = paletteCache.get(graph);\n if (!palette) {\n const pathColorByIndex = [];\n const pathIndexByName = /* @__PURE__ */ new Map();\n const paths = graph.paths ?? [];\n for (let i = 0; i < paths.length; i++) {\n pathColorByIndex.push(\n packHsl(\n pathHueAt(i, paths.length),\n PATH_SATURATION,\n PATH_LIGHTNESS,\n 0.85\n )\n );\n if (!pathIndexByName.has(paths[i].name)) {\n pathIndexByName.set(paths[i].name, i);\n }\n }\n palette = { pathColorByIndex, pathIndexByName };\n paletteCache.set(graph, palette);\n }\n return palette;\n}\nvar slotsCache = /* @__PURE__ */ new WeakMap();\nvar NO_SLOTS = /* @__PURE__ */ new Map();\nfunction pathSlotsOf(graph) {\n let slots = slotsCache.get(graph);\n if (!slots) {\n slots = /* @__PURE__ */ new Map();\n for (const [pathIdx, path] of (graph.paths ?? []).entries()) {\n for (const nodeId of new Set(path.nodeIds)) {\n pushTo(slots, nodeId, pathIdx);\n }\n }\n slotsCache.set(graph, slots);\n }\n return slots;\n}\nfunction buildGeometry(options) {\n const {\n nodePositions,\n graph,\n nodeById,\n colorScheme,\n contigThickness,\n connectorThickness,\n drawPaths,\n nodeWidth = \"uniform\",\n highlight,\n axis,\n linearLayout,\n viewportBounds,\n referenceRamp,\n deletions,\n deletionRoutes,\n stranded,\n hiddenEdges,\n version = 0\n } = options;\n const depthNorm = nodeWidth === \"depth\" ? meanDepth(graph) : 0;\n const scale = axis.scaleX;\n const worldPerScreenPx = 1 / Math.max(scale, MIN_SCALE_FOR_OFFSET);\n const yToX = yToXOf(axis);\n const sharedCurves = baseEdgeCurves(\n nodePositions,\n graph,\n axis,\n deletions,\n version,\n deletionRoutes,\n stranded\n );\n const nodeStrokes = [];\n const nodeStrokeRuns = /* @__PURE__ */ new Map();\n const arrows = [];\n const arrowRuns = /* @__PURE__ */ new Map();\n const edgeCurves = [];\n const edgeCurveRuns = /* @__PURE__ */ new Map();\n const colorRange = computeColorSchemeRange(graph, referenceRamp);\n const nodeIndexMap = /* @__PURE__ */ new Map();\n if (colorScheme === \"rainbow\") {\n for (let i = 0; i < graph.nodes.length; i++) {\n nodeIndexMap.set(graph.nodes[i].id, i);\n }\n }\n const pathCount = graph.paths?.length ?? 0;\n const { pathColorByIndex, pathIndexByName } = pathPaletteOf(graph);\n const pathColorByName = (name) => pathColorByIndex[pathIndexByName.get(name) ?? -1] ?? EDGE_PATH_FALLBACK_COLOR;\n const nodePathSlots = drawPaths && pathCount > 1 ? pathSlotsOf(graph) : NO_SLOTS;\n const showArrows = scale > (linearLayout ? 1 : MIN_ARROW_SCALE);\n for (let ei = 0; ei < graph.edges.length; ei++) {\n const edge = graph.edges[ei];\n const fromSegments = nodePositions[edge.from];\n const toSegments = nodePositions[edge.to];\n const baseCurves = sharedCurves.get(ei);\n if (!fromSegments?.length || !toSegments?.length || !baseCurves || hiddenEdges?.has(ei)) {\n continue;\n }\n const numPaths = edge.pathIds?.length ?? 0;\n const bypassed = deletions?.get(ei);\n const isDeletion = bypassed !== void 0;\n const onWalk = highlight?.edgeIndexes.has(ei) ?? false;\n const edgeThickness = connectorThickness / 2 * (isDeletion ? DELETION_THICKNESS_FACTOR : 1);\n const ribbons = drawPaths && numPaths > 0;\n const plainEdgeColor = isDeletion ? EDGE_DELETION_COLOR : EDGE_DEFAULT_COLOR;\n const edgeColor = !highlight || onWalk ? plainEdgeColor : fadeAbgr(plainEdgeColor, FADED_ALPHA);\n const toNode = nodeById.get(edge.to);\n const intoHalfWidth = (toNode ? nodeWidthPx(toNode, contigThickness, nodeWidth, depthNorm) : contigThickness) / 2;\n const inView = (curves) => !viewportBounds || isBezierInBounds(curves, viewportBounds);\n const stroke = (curves, thickness, color) => {\n if (isDeletion) {\n for (const dash of dashCurves(curves, DELETION_DASH_PX / scale)) {\n edgeCurves.push({ curves: dash, thickness, color });\n }\n } else {\n edgeCurves.push({ curves, thickness, color });\n }\n };\n const arrowOn = (curves) => {\n const head = showArrows ? arrowheadFor({\n curves,\n edgeHalfWidth: connectorThickness / 2,\n nodeHalfWidth: intoHalfWidth,\n scale,\n yToX,\n color: edgeColor,\n fromSegments,\n toSegments\n }) : void 0;\n if (head) {\n arrows.push(head);\n }\n };\n const edgeCurveStart = edgeCurves.length;\n const arrowStart = arrows.length;\n const laneWalks = highlight?.walks.length && onWalk && !ribbons ? highlight.walks : void 0;\n if (laneWalks) {\n const fromNode = nodeById.get(edge.from);\n const width = fromNode ? nodeWidthPx(fromNode, contigThickness, nodeWidth, depthNorm) : contigThickness;\n const laneWidth = Math.max(width / laneWalks.length, MIN_WALK_LANE_PX);\n const normals = pointNormalsOf(fromSegments, yToX);\n const { nx, ny } = (leavesStart(\n edge,\n fromSegments,\n baseCurves[0],\n stranded,\n yToX\n ) ? normals[0] : normals.at(-1)) ?? {\n nx: 0,\n ny: 0\n };\n laneWalks.forEach((walk, lane) => {\n if (!walk.edgeIndexes.has(ei)) {\n return;\n }\n const offset = (lane - (laneWalks.length - 1) / 2) * laneWidth * worldPerScreenPx;\n const curves = offset === 0 ? baseCurves : translateCurves(baseCurves, nx * offset, ny * offset / yToX);\n if (inView(curves)) {\n stroke(\n curves,\n laneWidth / 2,\n walk.colors.get(edge.from) ?? walk.colors.get(edge.to) ?? plainEdgeColor\n );\n }\n });\n if (edgeCurves.length > edgeCurveStart) {\n arrowOn(baseCurves);\n }\n } else if (!ribbons) {\n if (inView(baseCurves)) {\n stroke(baseCurves, edgeThickness, edgeColor);\n arrowOn(baseCurves);\n }\n } else {\n const offsets = pathRibbonOffsets(\n fromSegments,\n toSegments,\n numPaths,\n axis\n );\n const arrowRibbon = Math.floor((numPaths - 1) / 2);\n for (let pathIdx = 0; pathIdx < numPaths; pathIdx++) {\n const { x, y } = offsets[pathIdx];\n const curves = x === 0 && y === 0 ? baseCurves : translateCurves(baseCurves, x, y);\n if (!inView(curves)) {\n continue;\n }\n const ribbonColor = pathColorByName(edge.pathIds[pathIdx]);\n stroke(\n curves,\n edgeThickness,\n highlight && (highlight.walks.length ? !highlight.names.has(edge.pathIds[pathIdx]) : !onWalk) ? fadeAbgr(ribbonColor, FADED_ALPHA) : ribbonColor\n );\n if (pathIdx === arrowRibbon) {\n arrowOn(curves);\n }\n }\n }\n const edgeCurveCount = edgeCurves.length - edgeCurveStart;\n if (edgeCurveCount > 0) {\n edgeCurveRuns.set(ei, { start: edgeCurveStart, count: edgeCurveCount });\n }\n const arrowCount = arrows.length - arrowStart;\n if (arrowCount > 0) {\n arrowRuns.set(ei, { start: arrowStart, count: arrowCount });\n }\n }\n for (const [nodeId, segments] of Object.entries(nodePositions)) {\n const node = nodeById.get(nodeId);\n if (!node) {\n continue;\n }\n if (viewportBounds && !isPolylineInBounds(segments, viewportBounds)) {\n continue;\n }\n const faded = highlight !== void 0 && !highlight.nodeIds.has(nodeId);\n const own = faded ? LIFT_BACKDROP_COLOR : getNodeColor(\n node,\n nodeIndexMap.get(nodeId) ?? 0,\n colorScheme,\n colorRange\n );\n const color = faded ? fadeAbgr(own, FADED_ALPHA) : own;\n const width = nodeWidthPx(node, contigThickness, nodeWidth, depthNorm);\n const nodeThickness = width / 2;\n const start = nodeStrokes.length;\n const slots = nodePathSlots.get(nodeId);\n const slotWidth = width / pathCount;\n const drawable = segments.length >= 2;\n const lanes = highlight?.walks.length && !faded && !slots?.length ? highlight.walks : void 0;\n if (drawable && lanes) {\n const laneWidth = Math.max(width / lanes.length, MIN_WALK_LANE_PX);\n const normals = pointNormalsOf(segments, yToX);\n lanes.forEach((walk, lane) => {\n const laneColor = walk.colors.get(nodeId);\n if (laneColor === void 0) {\n return;\n }\n const offset = (lane - (lanes.length - 1) / 2) * laneWidth * worldPerScreenPx;\n nodeStrokes.push({\n points: lanes.length === 1 ? segments : offsetPolyline(segments, normals, offset, yToX),\n thickness: laneWidth / 2,\n color: laneColor\n });\n });\n } else if (drawable && slots?.length && slotWidth >= MIN_PATH_STRIPE_PX) {\n const normals = pointNormalsOf(segments, yToX);\n for (const slot of slots) {\n const offset = (slot - (pathCount - 1) / 2) * slotWidth * worldPerScreenPx;\n const stripe = pathColorByIndex[slot] ?? EDGE_PATH_FALLBACK_COLOR;\n nodeStrokes.push({\n points: offsetPolyline(segments, normals, offset, yToX),\n thickness: slotWidth / 2,\n // a node off the lifted walk fades whichever way it is painted\n color: faded ? fadeAbgr(stripe, FADED_ALPHA) : stripe\n });\n }\n } else if (drawable) {\n nodeStrokes.push({ points: segments, thickness: nodeThickness, color });\n }\n const count = nodeStrokes.length - start;\n if (count > 0) {\n nodeStrokeRuns.set(nodeId, { start, count });\n }\n }\n return {\n nodeStrokes,\n nodeStrokeRuns,\n arrows,\n arrowRuns,\n edgeCurves,\n edgeCurveRuns\n };\n}\n\nexport {\n LIFT_BACKDROP_COLOR,\n FADED_ALPHA,\n LIFT_BACKDROP_CSS,\n hslToRgb,\n REFERENCE_RAMP_ALT_COLOR,\n REFERENCE_RAMP_ALT_CSS,\n computeReferenceRamp,\n computeColorSchemeRange,\n getNodeColor,\n endTangent,\n buildGeometry\n};\n", "import {\n REFERENCE_RAMP_ALT_COLOR,\n hslToRgb\n} from \"./chunk-XSF4RQRP.js\";\nimport {\n packAbgr\n} from \"./chunk-G2FD7S3C.js\";\nimport {\n REFERENCE_RAMP_LIGHTNESS,\n REFERENCE_RAMP_SATURATION,\n rampHueAt\n} from \"./chunk-GQZVR5DW.js\";\n\n// src/walkEncoding.ts\nvar WALK_FIELDS = [\n { value: \"progress\", label: \"Progress along the walk\" },\n { value: \"walk\", label: \"One colour for the walk\" },\n { value: \"reference\", label: \"Reference position\" }\n];\nvar WALK_SCHEMES = [\n { value: \"grey\", label: \"Grey to black\", ends: [\"#a3a3a3\", \"#151515\"] },\n { value: \"blue\", label: \"Cyan to navy\", ends: [\"#6ee0f0\", \"#0b2c7a\"] },\n { value: \"red\", label: \"Yellow to red\", ends: [\"#ffd24a\", \"#b3121b\"] },\n { value: \"purple\", label: \"Pink to plum\", ends: [\"#f5a3d8\", \"#5e1a6e\"] },\n { value: \"green\", label: \"Lime to forest\", ends: [\"#b6e36c\", \"#0b5d3b\"] },\n { value: \"rainbow\", label: \"Rainbow\" }\n];\nvar FAMILIES = [\"blue\", \"red\", \"purple\", \"green\"];\nvar isField = (v) => WALK_FIELDS.some((f) => f.value === v);\nvar isScheme = (v) => WALK_SCHEMES.some((s) => s.value === v);\nfunction resolveEncoding(layer, reference, picked, alone = true) {\n const { field: askedField, scheme: askedScheme } = layer.color ?? {};\n const field = isField(askedField) ? askedField : alone ? \"progress\" : \"walk\";\n const family = reference ? \"grey\" : FAMILIES[picked % FAMILIES.length];\n const scheme = isScheme(askedScheme) ? askedScheme === \"rainbow\" && field !== \"reference\" ? family : askedScheme : family;\n return { field, scheme };\n}\nvar BASE_T = 0.5;\nvar toLinear = (c) => c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\nvar toGamma = (c) => c <= 31308e-7 ? c * 12.92 : 1.055 * c ** (1 / 2.4) - 0.055;\nfunction oklab(hex) {\n const [r, g, b] = [1, 3, 5].map(\n (i) => toLinear(Number.parseInt(hex.slice(i, i + 2), 16) / 255)\n );\n const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);\n const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);\n const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n ];\n}\nfunction oklabToRgb([L, a, b]) {\n const l = (L + 0.3963377774 * a + 0.2158037573 * b) ** 3;\n const m = (L - 0.1055613458 * a - 0.0638541728 * b) ** 3;\n const s = (L - 0.0894841775 * a - 1.291485548 * b) ** 3;\n return [\n 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,\n -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,\n -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s\n ].map((c) => toGamma(Math.max(0, Math.min(1, c))) * 255);\n}\nfunction schemeRgb(scheme, t) {\n const x = Math.max(0, Math.min(1, t));\n const family = WALK_SCHEMES.find((s) => s.value === scheme);\n if (!family || !(\"ends\" in family)) {\n return hslToRgb(\n rampHueAt(x),\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS\n ).map((c) => c * 255);\n }\n const from = oklab(family.ends[0]);\n const to = oklab(family.ends[1]);\n return oklabToRgb(from.map((v, i) => v + (to[i] - v) * x));\n}\nfunction schemeCss(scheme, t) {\n const [r, g, b] = schemeRgb(scheme, t).map(Math.round);\n return `rgb(${r}, ${g}, ${b})`;\n}\nfunction schemeColor(scheme, t) {\n const [r, g, b] = schemeRgb(scheme, t).map(Math.round);\n return packAbgr(r, g, b, 255);\n}\nfunction encodedColor({ field, scheme }, t) {\n return field === \"walk\" ? schemeColor(scheme, BASE_T) : t === void 0 ? NO_VALUE_COLOR : schemeColor(scheme, t);\n}\nvar NO_VALUE_COLOR = REFERENCE_RAMP_ALT_COLOR;\nfunction encodingStops({ field, scheme }) {\n const stop = (offset, t) => ({\n offset,\n color: schemeCss(scheme, t),\n abgr: schemeColor(scheme, t)\n });\n return field === \"walk\" ? [stop(0, BASE_T)] : Array.from({ length: 7 }, (_, i) => stop(i / 6, i / 6));\n}\nfunction encodingSwatchCss(encoding) {\n const stops = encodingStops(encoding);\n return stops.length === 1 ? stops[0].color : `linear-gradient(to right, ${stops.map((s) => `${s.color} ${s.offset * 100}%`).join(\", \")})`;\n}\n\nexport {\n WALK_FIELDS,\n WALK_SCHEMES,\n resolveEncoding,\n schemeRgb,\n schemeCss,\n schemeColor,\n encodedColor,\n NO_VALUE_COLOR,\n encodingStops,\n encodingSwatchCss\n};\n"],
5
- "mappings": "gMACA,SAASA,EAASC,EAAGC,EAAGC,EAAGC,EAAG,CAC5B,OAAQA,GAAK,GAAKD,GAAK,GAAKD,GAAK,EAAID,KAAO,CAC9C,CACA,SAASI,GAAQC,EAAG,CAClB,OAAOA,EAAI,GACb,CACA,SAASC,GAAUD,EAAG,CACpB,OAAOA,IAAM,EAAI,GACnB,CACA,SAASE,GAASF,EAAG,CACnB,OAAOA,IAAM,GAAK,GACpB,CACA,SAASG,GAAUH,EAAG,CACpB,OAAOA,IAAM,GAAK,GACpB,CACA,SAASI,GAAcJ,EAAG,CACxB,MAAO,QAAQD,GAAQC,CAAC,CAAC,IAAIC,GAAUD,CAAC,CAAC,IAAIE,GAASF,CAAC,CAAC,IAAIG,GAAUH,CAAC,EAAI,GAAG,GAChF,CACA,SAASK,GAAuBL,EAAGM,EAAO,CACxC,MAAO,QAAQ,KAAK,MAAMN,EAAE,CAAC,EAAI,GAAG,CAAC,IAAI,KAAK,MAAMA,EAAE,CAAC,EAAI,GAAG,CAAC,IAAI,KAAK,MAAMA,EAAE,CAAC,EAAI,GAAG,CAAC,IAAIM,CAAK,GACpG,CACA,SAASC,EAASP,EAAGM,EAAO,CAC1B,OAAOZ,EACLK,GAAQC,CAAC,EACTC,GAAUD,CAAC,EACXE,GAASF,CAAC,EACV,KAAK,MAAMG,GAAUH,CAAC,EAAIM,CAAK,CACjC,CACF,CACA,SAASE,GAAaR,EAAGS,EAAQ,CAC/B,IAAMC,EAAI,KAAK,IAAI,EAAG,EAAI,EAAID,CAAM,EAC9BE,EAAQC,GAAM,KAAK,MAAMA,GAAK,IAAMA,GAAKF,CAAC,EAChD,OAAOhB,EACLiB,EAAKZ,GAAQC,CAAC,CAAC,EACfW,EAAKV,GAAUD,CAAC,CAAC,EACjBW,EAAKT,GAASF,CAAC,CAAC,EAChBG,GAAUH,CAAC,CACb,CACF,CCtCA,IAAIa,GAAyB,IACzBC,EAA4B,GAC5BC,GAA2B,GAC/B,SAASC,GAAWC,EAAK,CACvB,MAAO,OAAOA,CAAG,KAAKH,EAA4B,GAAG,MAAMC,GAA2B,GAAG,IAC3F,CACA,SAASG,GAAUC,EAAM,CACvB,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,CAAI,CAAC,EAAIN,EAC1C,CACA,SAASO,GAAQC,EAAIC,EAAQ,CAC3B,OAAOJ,IAAWG,EAAKC,EAAO,QAAUA,EAAO,IAAMA,EAAO,MAAM,CACpE,CACA,IAAIC,GAAe,GACnB,SAASC,GAAU,CAAE,MAAAC,EAAO,GAAAJ,EAAI,SAAAK,CAAS,EAAGJ,EAAQ,CAClD,IAAMK,EAAMP,GAAQK,EAAOH,CAAM,EAC3BM,EAAOR,GAAQK,EAAQJ,EAAIC,CAAM,EACvC,GAAIM,EAAOD,EAAM,EACf,MAAO,EAAEA,EAAMC,GAAQ,CAAC,EAE1B,IAAMC,EAAI,KAAK,MAAMD,EAAOD,GAAOJ,EAAY,EAC/C,OAAO,MAAM,KACX,CAAE,OAAQM,EAAI,CAAE,EAChB,CAACC,EAAG,IAAMV,GAAQK,EAAQJ,GAAMK,EAAWG,EAAI,EAAI,GAAKA,EAAGP,CAAM,CACnE,CACF,CACA,IAAIS,GAAsB,MAAM,KAAK,CAAE,OAAQ,CAAE,EAAG,CAACD,EAAGE,KAAO,CAC7D,OAAQA,EAAI,EACZ,MAAOhB,GAAWgB,EAAI,EAAInB,EAAsB,CAClD,EAAE,EACEoB,GAAoB,6BAA6BF,GAAoB,IACtEG,GAAM,GAAGA,EAAE,KAAK,IAAIA,EAAE,OAAS,GAAG,GACrC,EAAE,KAAK,IAAI,CAAC,ICxBZ,IAAIC,GAAQC,GAAS,EACrB,SAASC,GAAeC,EAAeC,EAAOC,EAAMC,EAAWC,EAASC,EAAQC,EAAW,GAAO,CAChG,OAAOT,GACLG,EACA,CAACC,EAAOC,EAAK,OAAQA,EAAK,OAAQC,EAAWE,EAAQC,EAAUF,CAAO,EACtE,IAAM,CACJ,IAAMG,EAAyB,IAAI,IACnC,QAASC,EAAK,EAAGA,EAAKP,EAAM,MAAM,OAAQO,IAAM,CAC9C,IAAMC,EAAWN,GAAW,IAAIK,CAAE,EAC5BE,EAAaC,GACjBX,EACAC,EAAM,MAAMO,CAAE,EACdN,EACAO,EACAA,GAAYJ,IAASG,CAAE,EACvBF,CACF,EACII,GACFH,EAAO,IAAIC,EAAIE,CAAU,CAE7B,CACA,OAAOH,CACT,CACF,CACF,CCxBA,IAAIK,GAAoB,EACxB,SAASC,GAAeC,EAAO,CAC7B,IAAMC,EAA4B,IAAI,IACtC,QAAWC,KAAQF,EAAM,MACvBG,EAAOF,EAAWC,EAAK,KAAMA,EAAK,EAAE,EACpCC,EAAOF,EAAWC,EAAK,GAAIA,EAAK,IAAI,EAEtC,OAAOD,CACT,CACA,SAASG,GAAa,CACpB,OAAAC,EACA,SAAAC,EACA,UAAAL,CACF,EAAG,CACD,IAAMM,EAAuB,IAAI,IAAI,CAACF,CAAM,CAAC,EACzCG,EAAW,CAACH,CAAM,EAClBI,EAAS,IACTC,EAAW,KACf,QAASC,EAAM,EAAGA,EAAMb,IAAqBU,EAAS,OAAS,EAAGG,IAAO,CACvE,IAAMC,EAAO,CAAC,EACd,QAAWC,KAAML,EAAU,CACzB,IAAMM,EAAWb,EAAU,IAAIY,CAAE,EACjC,GAAIC,GACF,QAAWC,KAAcD,EACvB,GAAI,CAACP,EAAK,IAAIQ,CAAU,EAAG,CACzBR,EAAK,IAAIQ,CAAU,EACnB,IAAMC,EAAWV,EAAS,IAAIS,CAAU,EACpCC,GAAYC,EAAWD,CAAQ,GACjCP,EAAS,KAAK,IAAIA,EAAQO,EAAS,OAAO,MAAQA,EAAS,MAAM,EACjEN,EAAW,KAAK,IAAIA,EAAUM,EAAS,OAAO,KAAK,GAEnDJ,EAAK,KAAKG,CAAU,CAExB,EAGN,CACAP,EAAWI,CACb,CACA,OAAOH,IAAW,IAAW,OAAS,CACpC,MAAO,KAAK,IAAIA,EAAQC,CAAQ,EAChC,IAAK,KAAK,IAAID,EAAQC,CAAQ,CAChC,CACF,CACA,SAASQ,GAAkB,CACzB,OAAAb,EACA,SAAAC,EACA,UAAAL,CACF,EAAG,CACD,IAAMkB,EAAOb,EAAS,IAAID,CAAM,EAChC,OAAOc,IAAS,OAAS,OAASF,EAAWE,CAAI,EAAI,CAAE,MAAOA,EAAK,OAAO,MAAO,IAAKA,EAAK,OAAO,MAAQA,EAAK,MAAO,EAAIf,GAAa,CAAE,OAAAC,EAAQ,SAAAC,EAAU,UAAAL,CAAU,CAAC,CACxK,CACA,SAASmB,GAAmBpB,EAAO,CACjC,IAAMM,EAAW,IAAI,IAAIN,EAAM,MAAM,IAAKmB,GAAS,CAACA,EAAK,GAAIA,CAAI,CAAC,CAAC,EAC7DlB,EAAYF,GAAeC,CAAK,EAChCqB,EAA4B,IAAI,IACtC,QAAWF,KAAQnB,EAAM,MAAO,CAC9B,IAAMsB,EAAOJ,GAAkB,CAAE,OAAQC,EAAK,GAAI,SAAAb,EAAU,UAAAL,CAAU,CAAC,EACnEqB,GACFD,EAAU,IAAIF,EAAK,IAAKG,EAAK,MAAQA,EAAK,KAAO,CAAC,CAEtD,CACA,OAAOD,CACT,CC7BA,IAAIE,GAAqBC,EAAS,IAAK,IAAK,IAAK,GAAG,EAChDC,GAA2BD,EAAS,IAAK,IAAK,IAAK,GAAG,EACtDE,GAAsBF,EAAS,GAAI,GAAI,GAAI,GAAG,EAC9CG,GAA4B,IAC5BC,GAAsBJ,EAAS,IAAK,IAAK,IAAK,GAAG,EACjDK,GAAc,IACdC,GAAoBC,GACtBC,EAASJ,GAAqBC,EAAW,CAC3C,EACII,GAAmB,GACnBC,GAAqB,IACrBC,GAAmB,EACnBC,GAAuB,KACvBC,GAAuB,EACvBC,GAA2B,EAC3BC,GAA2B,EAC3BC,GAA+B,IAC/BC,GAAiB,EACjBC,GAAgB,GAChBC,GAAkB,IAClBC,GAAoB,GACpBC,GAAc,KACdC,EAAQ,IAAI,aAAa,EAAE,EAC3BC,EAAQ,IAAI,aAAa,EAAE,EAC3BC,EAAS,IAAI,aAAa,EAAE,EAChC,SAASC,GAAYC,EAAQC,EAAOC,EAAMC,EAAS,CACjD,IAAMC,EAAOJ,EAAO,OAASN,GAAoB,EAC7CE,EAAM,OAASQ,IACjBR,EAAQ,IAAI,aAAaQ,CAAI,EAC7BP,EAAQ,IAAI,aAAaO,CAAI,EAC7BN,EAAS,IAAI,aAAaM,CAAI,GAEhC,IAAMC,EAAOL,EAAOA,EAAO,OAAS,CAAC,EACrCJ,EAAM,CAAC,EAAIS,EAAK,GAChBR,EAAM,CAAC,EAAIQ,EAAK,GAChBP,EAAO,CAAC,EAAI,EACZ,IAAIQ,EAAI,EACJC,EAAK,EACT,QAASC,EAAKR,EAAO,OAAS,EAAGQ,GAAM,GAAKD,EAAKJ,EAASK,IAAM,CAC9D,IAAMC,EAAIT,EAAOQ,CAAE,EACnB,QAASE,EAAI,EAAGA,GAAKhB,IAAqBa,EAAKJ,EAASO,IAAK,CAC3D,IAAMC,EAAI,GAAKD,EAAIhB,KAAsB,EACnCkB,EAAI,EAAID,EACRE,EAAID,EAAIA,EAAIA,EACZE,EAAI,EAAIF,EAAIA,EAAID,EAChBI,EAAI,EAAIH,EAAID,EAAIA,EAChBK,EAAIL,EAAIA,EAAIA,EACZM,EAAIJ,EAAIJ,EAAE,GAAKK,EAAIL,EAAE,IAAMM,EAAIN,EAAE,IAAMO,EAAIP,EAAE,GAC7CS,EAAIL,EAAIJ,EAAE,GAAKK,EAAIL,EAAE,IAAMM,EAAIN,EAAE,IAAMO,EAAIP,EAAE,GACnDF,GAAM,KAAK,MAAMU,EAAIrB,EAAMU,EAAI,CAAC,GAAIY,EAAIrB,EAAMS,EAAI,CAAC,GAAKJ,CAAI,EAAID,EAChEL,EAAMU,CAAC,EAAIW,EACXpB,EAAMS,CAAC,EAAIY,EACXpB,EAAOQ,CAAC,EAAIC,EACZD,GACF,CACF,CACA,OAAOA,CACT,CACA,SAASa,GAAYb,EAAGC,EAAI,CAC1B,IAAIa,EAAI,EACR,KAAOA,EAAId,EAAI,GAAKR,EAAOsB,CAAC,EAAIb,GAC9Ba,IAEF,IAAMC,EAAOvB,EAAOsB,EAAI,CAAC,EACnBE,EAAKxB,EAAOsB,CAAC,EACbG,EAAID,EAAKD,EAAO,KAAK,IAAI,EAAG,KAAK,IAAI,GAAId,EAAKc,IAASC,EAAKD,EAAK,CAAC,EAAI,EAC5E,MAAO,CACL,EAAGzB,EAAMwB,EAAI,CAAC,GAAKxB,EAAMwB,CAAC,EAAIxB,EAAMwB,EAAI,CAAC,GAAKG,EAC9C,EAAG1B,EAAMuB,EAAI,CAAC,GAAKvB,EAAMuB,CAAC,EAAIvB,EAAMuB,EAAI,CAAC,GAAKG,CAChD,CACF,CACA,SAASC,GAAa,CACpB,OAAAxB,EACA,cAAAyB,EACA,cAAAC,EACA,MAAAzB,EACA,KAAAC,EACA,MAAAyB,EACA,aAAAC,EACA,WAAAC,CACF,EAAG,CACD,IAAMC,EAAS3C,GAAuBC,GAA2BqC,EAC3DnB,EAAIP,GACRC,EACAC,EACAC,EACAwB,EAAgBnC,GAAiBuC,CACnC,EACMC,EAAWjC,EAAOQ,EAAI,CAAC,EACvB0B,EAAWD,EAAWpC,GACtBsC,EAAQ,KAAK,IAAIP,EAAeK,CAAQ,EACxCG,EAAMF,EAAW,KAAK,IAAI,EAAGG,GAAWP,EAAc3B,EAAOA,EAAQC,CAAI,EAAI4B,CAAM,EAAI,EAC7F,GAAIE,EAAWE,EAAM1C,GAAgBuC,EAAWxC,GAAiBuC,EAC/D,OAEF,IAAMM,EAAMjB,GAAYb,EAAG2B,CAAK,EAC1BI,EAAOlB,GAAYb,EAAG2B,EAAQH,EAASI,CAAG,EAC1CI,EAAKF,EAAI,EAAIC,EAAK,EAClBE,GAAMH,EAAI,EAAIC,EAAK,GAAKnC,EACxBG,EAAOL,EAAOA,EAAO,OAAS,CAAC,EACrC,MAAO,CACL,EAAGoC,EAAI,EACP,EAAGA,EAAI,EACP,MAAO,KAAK,MAAME,EAAIC,CAAE,EAAI,EAAI,KAAK,MAAMA,EAAID,CAAE,EAAIE,GAAWnC,EAAMH,EAAMuC,GAAcpC,EAAMwB,CAAU,CAAC,EAC3G,OAAQC,EAASI,EACjB,WAAY7C,GAA2BC,GAA+BmC,GAAiBS,EACvF,MAAAP,CACF,CACF,CACA,SAASe,GAAYC,EAAMC,EAAUC,EAAOC,EAAU5C,EAAM,CAC1D,GAAI4C,EACF,OAAOC,GAAYJ,CAAI,EAAE,OAAS,QAEpC,IAAMK,EAAOC,GAAM,KAAK,MAAMA,EAAE,EAAIJ,EAAM,IAAKI,EAAE,EAAIJ,EAAM,IAAM3C,CAAI,EACrE,OAAO8C,EAAIJ,EAAS,CAAC,CAAC,EAAII,EAAIJ,EAAS,GAAG,EAAE,CAAC,CAC/C,CACA,SAASH,GAAcpC,EAAMwB,EAAY,CACvC,GAAIA,EAAW,OAAS,EACtB,OAEF,IAAMgB,EAAQhB,EAAW,CAAC,EACpBqB,EAAQrB,EAAWA,EAAW,OAAS,CAAC,EAE9C,OADgB,KAAK,MAAMxB,EAAK,GAAKwC,EAAM,EAAGxC,EAAK,GAAKwC,EAAM,CAAC,GAAK,KAAK,MAAMxC,EAAK,GAAK6C,EAAM,EAAG7C,EAAK,GAAK6C,EAAM,CAAC,EAClG,CAAE,KAAML,EAAO,GAAIhB,EAAW,CAAC,CAAE,EAAI,CAAE,KAAMqB,EAAO,GAAIrB,EAAWA,EAAW,OAAS,CAAC,CAAE,CAC7G,CACA,SAASsB,GAAOtC,EAAGC,EAAG,CACpB,GAAI,CAACD,GAAK,CAACC,EACT,OAEF,IAAMwB,EAAKxB,EAAE,EAAID,EAAE,EACb0B,EAAKzB,EAAE,EAAID,EAAE,EACbuC,EAAM,KAAK,MAAMd,EAAIC,CAAE,EAC7B,OAAOa,EAAM,EAAI,CAAE,GAAI,CAACb,EAAKa,EAAK,GAAId,EAAKc,CAAI,EAAI,MACrD,CACA,SAASC,GAAeC,EAAWpD,EAAO,EAAG,CAC3C,IAAMqD,EAASrD,IAAS,EAAIoD,EAAYA,EAAU,IAAKL,IAAO,CAAE,EAAGA,EAAE,EAAG,EAAGA,EAAE,EAAI/C,CAAK,EAAE,EACxF,OAAOqD,EAAO,IAAI,CAACN,EAAG7B,IAAM,CAC1B,IAAMoC,EAASL,GAAOI,EAAOnC,EAAI,CAAC,EAAG6B,CAAC,EAChCQ,EAAQN,GAAOF,EAAGM,EAAOnC,EAAI,CAAC,CAAC,EACrC,GAAIoC,GAAUC,EAAO,CACnB,IAAMC,GAAMF,EAAO,GAAKC,EAAM,IAAM,EAC9BE,GAAMH,EAAO,GAAKC,EAAM,IAAM,EAC9BG,EAAMJ,EAAO,GAAKE,EAAKF,EAAO,GAAKG,EACzC,OAAOC,EAAM,GAAM,CAAE,GAAIF,EAAKE,EAAK,GAAID,EAAKC,CAAI,EAAI,CAAE,GAAAF,EAAI,GAAAC,CAAG,CAC/D,CACA,OAAOH,GAAUC,GAAS,CAAE,GAAI,EAAG,GAAI,CAAE,CAC3C,CAAC,CACH,CACA,SAASI,GAAeN,EAAQO,EAASC,EAAU7D,EAAO,EAAG,CAC3D,OAAOqD,EAAO,IAAI,CAACN,EAAG7B,KAAO,CAC3B,EAAG6B,EAAE,EAAIa,EAAQ1C,CAAC,EAAE,GAAK2C,EACzB,EAAGd,EAAE,EAAIa,EAAQ1C,CAAC,EAAE,GAAK2C,EAAW7D,CACtC,EAAE,CACJ,CACA,SAAS8D,GAASC,EAAGC,EAAGC,EAAG,CACzB,IAAM1D,GAAK,EAAI,KAAK,IAAI,EAAI0D,EAAI,CAAC,GAAKD,EAChCjD,EAAIR,GAAK,EAAI,KAAK,IAAIwD,EAAI,GAAK,EAAI,CAAC,GACpCG,EAAID,EAAI1D,EAAI,EACd4D,EAAI,EACJC,EAAI,EACJxD,EAAI,EACR,OAAImD,EAAI,IACNI,EAAI5D,EACJ6D,EAAIrD,GACKgD,EAAI,KACbI,EAAIpD,EACJqD,EAAI7D,GACKwD,EAAI,KACbK,EAAI7D,EACJK,EAAIG,GACKgD,EAAI,KACbK,EAAIrD,EACJH,EAAIL,GACKwD,EAAI,KACbI,EAAIpD,EACJH,EAAIL,IAEJ4D,EAAI5D,EACJK,EAAIG,GAEC,CAACoD,EAAID,EAAGE,EAAIF,EAAGtD,EAAIsD,CAAC,CAC7B,CACA,SAASG,GAAQN,EAAGC,EAAGC,EAAGtD,EAAI,EAAG,CAC/B,GAAM,CAAC,EAAGyD,EAAGxD,CAAC,EAAIkD,GAASC,EAAGC,EAAGC,CAAC,EAClC,OAAO7F,EACL,KAAK,MAAM,EAAI,GAAG,EAClB,KAAK,MAAMgG,EAAI,GAAG,EAClB,KAAK,MAAMxD,EAAI,GAAG,EAClB,KAAK,MAAMD,EAAI,GAAG,CACpB,CACF,CACA,IAAI2D,GAAiB,CACnB,CAAC,GAAI,EAAG,EAAE,EACV,CAAC,GAAI,GAAI,GAAG,EACZ,CAAC,GAAI,IAAK,GAAG,EACb,CAAC,GAAI,IAAK,EAAE,EACZ,CAAC,IAAK,IAAK,EAAE,CACf,EACIC,GAAuB,CACzB,CAAC,IAAK,IAAK,EAAE,EACb,CAAC,IAAK,GAAI,GAAG,CACf,EACIC,GAAuB,CACzB,CAAC,IAAK,GAAI,EAAE,EACZ,CAAC,GAAI,IAAK,GAAG,CACf,EACA,SAASC,GAAeC,EAAOjE,EAAG,CAChC,IAAMkE,EAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGlE,CAAC,CAAC,GAAKiE,EAAM,OAAS,GACpDxD,EAAI,KAAK,IAAIwD,EAAM,OAAS,EAAG,KAAK,MAAMC,CAAG,CAAC,EAC9CtD,EAAIsD,EAAMzD,EACVP,EAAI+D,EAAMxD,CAAC,EACXN,EAAI8D,EAAMxD,EAAI,CAAC,EACrB,OAAO9C,EACL,KAAK,MAAMuC,EAAE,CAAC,GAAKC,EAAE,CAAC,EAAID,EAAE,CAAC,GAAKU,CAAC,EACnC,KAAK,MAAMV,EAAE,CAAC,GAAKC,EAAE,CAAC,EAAID,EAAE,CAAC,GAAKU,CAAC,EACnC,KAAK,MAAMV,EAAE,CAAC,GAAKC,EAAE,CAAC,EAAID,EAAE,CAAC,GAAKU,CAAC,EACnC,GACF,CACF,CACA,SAASuD,GAAUC,EAAKC,EAAO,CAC7B,OAAOT,GAAQU,GAAQF,CAAG,EAAGG,GAAiBC,GAAgBH,CAAK,CACrE,CACA,IAAII,GAAyB,CAAC,GAAI,GAAI,EAAE,EACpCC,GAA2B/G,EAAS,GAAG8G,GAAwB,GAAG,EAClEE,GAAyB,OAAOF,GAAuB,KAAK,IAAI,CAAC,IACrE,SAASG,GAAqBC,EAAOC,EAAQ,CAC3C,IAAMC,EAAYC,GAAmBH,CAAK,EAC1C,GAAIC,GAAUA,EAAO,IAAMA,EAAO,MAChC,MAAO,CACL,MAAOA,EAAO,MACd,KAAMA,EAAO,IAAMA,EAAO,MAC1B,UAAAC,CACF,EAEF,IAAIE,EAAM,IACNC,EAAM,KACV,QAAWC,KAAOJ,EAAU,OAAO,EACjCE,EAAM,KAAK,IAAIA,EAAKE,CAAG,EACvBD,EAAM,KAAK,IAAIA,EAAKC,CAAG,EAEzB,MAAO,CACL,MAAOF,IAAQ,IAAW,EAAIA,EAC9B,KAAMC,EAAMD,EAAMC,EAAMD,EAAM,EAC9B,UAAAF,CACF,CACF,CACA,SAASK,GAAwBP,EAAOQ,EAAe,CACrD,IAAIC,EAAW,IACXC,EAAW,KACXC,EAAY,IACZC,EAAY,KACZC,EAAU,EACd,QAAW/F,KAAKkF,EAAM,MAChBlF,EAAE,SAAW,QAAUA,EAAE,OAAO,KAAO+F,IACzCA,EAAU/F,EAAE,OAAO,MAEjBA,EAAE,MAAQ2F,IACZA,EAAW3F,EAAE,OAEXA,EAAE,MAAQ4F,IACZA,EAAW5F,EAAE,OAEXA,EAAE,OAAS6F,IACbA,EAAY7F,EAAE,QAEZA,EAAE,OAAS8F,IACbA,EAAY9F,EAAE,QAGlB,MAAO,CACL,SAAA2F,EACA,SAAAC,EACA,UAAAC,EACA,UAAAC,EACA,QAAAC,EACA,UAAWb,EAAM,MAAM,OACvB,cAAAQ,CACF,CACF,CACA,SAASM,GAAaC,EAAMC,EAAWC,EAAaC,EAAO,CACzD,OAAQD,EAAa,CACnB,IAAK,SACH,OAAO3B,GAAUyB,EAAK,GAAI,CAAC,EAC7B,IAAK,QACH,OAAO5B,GACLH,GACAkC,EAAM,SAAWA,EAAM,UAAYH,EAAK,MAAQG,EAAM,WAAaA,EAAM,SAAWA,EAAM,UAAY,EACxG,EACF,IAAK,cACH,OAAO/B,GACLD,GACAgC,EAAM,UAAYA,EAAM,WAAaH,EAAK,OAASG,EAAM,YAAcA,EAAM,UAAYA,EAAM,WAAa,EAC9G,EAIF,IAAK,cACH,OAAOH,EAAK,SAAW,OAASjI,EAAS,IAAK,IAAK,IAAK,GAAG,EAAIiI,EAAK,OAAO,OAAS,EAAIjI,EAAS,GAAI,IAAK,IAAK,GAAG,EAAIqG,GACpHF,GACAiC,EAAM,QAAU,GAAKH,EAAK,OAAO,KAAO,IAAMG,EAAM,QAAU,GAAK,CACrE,EAGF,IAAK,qBAAsB,CACzB,IAAMC,EAAOD,EAAM,cACnB,GAAIC,IAAS,OACX,OAAOrI,EAAS,IAAK,IAAK,IAAK,GAAG,EAEpC,IAAMwH,EAAMa,EAAK,UAAU,IAAIJ,EAAK,EAAE,EACtC,MAAI,CAACK,EAAWL,CAAI,GAAKT,IAAQ,OACxBT,GAEFd,GACLsC,IAAWf,EAAMa,EAAK,OAASA,EAAK,IAAI,EACxCG,EACAC,EACF,CACF,CACA,IAAK,OACH,OAAOzI,EAAS,IAAK,IAAK,IAAK,GAAG,EACpC,IAAK,UAAW,CACd,IAAM0I,EAAMN,EAAM,UAAY,EAAIF,EAAYE,EAAM,UAAY,IAAM,EACtE,OAAOnC,GAAQyC,EAAK,IAAM,EAAG,CAC/B,CACA,QACE,OAAO1I,EAAS,GAAI,IAAK,IAAK,GAAG,CACrC,CACF,CACA,SAASkE,GAAW/B,EAAGP,EAAO,EAAG+G,EAAM,CACrC,IAAMC,EAAa,CACjB,CAACzG,EAAE,IAAKA,EAAE,GAAG,EACb,CAACA,EAAE,IAAKA,EAAE,GAAG,EACb,CAACA,EAAE,GAAIA,EAAE,EAAE,CACb,EACA,OAAW,CAACQ,EAAGC,CAAC,IAAKgG,EAAY,CAC/B,IAAM5E,EAAK7B,EAAE,GAAKQ,EACZsB,GAAM9B,EAAE,GAAKS,GAAKhB,EACxB,GAAI,KAAK,MAAMoC,EAAIC,CAAE,EAAI,EACvB,OAAO,KAAK,MAAMA,EAAID,CAAE,CAE5B,CACA,OAAO2E,EAAO,KAAK,OAAOA,EAAK,GAAG,EAAIA,EAAK,KAAK,GAAK/G,EAAM+G,EAAK,GAAG,EAAIA,EAAK,KAAK,CAAC,EAAI,CACxF,CACA,SAASE,GAAmBvE,EAAUwE,EAAQ,CAC5C,IAAIC,EAAM,GACV,QAASjG,EAAI,EAAGA,EAAIwB,EAAS,OAAS,GAAK,CAACyE,EAAKjG,IAAK,CACpD,IAAMP,EAAI+B,EAASxB,CAAC,EACdN,EAAI8B,EAASxB,EAAI,CAAC,EACxBiG,EAAM,KAAK,IAAIxG,EAAE,EAAGC,EAAE,CAAC,GAAKsG,EAAO,MAAQ,KAAK,IAAIvG,EAAE,EAAGC,EAAE,CAAC,GAAKsG,EAAO,MAAQ,KAAK,IAAIvG,EAAE,EAAGC,EAAE,CAAC,GAAKsG,EAAO,MAAQ,KAAK,IAAIvG,EAAE,EAAGC,EAAE,CAAC,GAAKsG,EAAO,IACpJ,CACA,OAAOC,CACT,CACA,SAASC,GAAiBtH,EAAQoH,EAAQ,CACxC,QAAW3G,KAAKT,EAAQ,CACtB,IAAMuH,EAAQ,KAAK,IAAI9G,EAAE,GAAIA,EAAE,IAAKA,EAAE,IAAKA,EAAE,EAAE,EACzC+G,EAAQ,KAAK,IAAI/G,EAAE,GAAIA,EAAE,IAAKA,EAAE,IAAKA,EAAE,EAAE,EACzCgH,EAAQ,KAAK,IAAIhH,EAAE,GAAIA,EAAE,IAAKA,EAAE,IAAKA,EAAE,EAAE,EACzCiH,EAAQ,KAAK,IAAIjH,EAAE,GAAIA,EAAE,IAAKA,EAAE,IAAKA,EAAE,EAAE,EAC/C,GAAI+G,GAASJ,EAAO,MAAQG,GAASH,EAAO,MAAQM,GAASN,EAAO,MAAQK,GAASL,EAAO,KAC1F,MAAO,EAEX,CACA,MAAO,EACT,CACA,IAAIO,GAA+B,IAAI,QACvC,SAASC,GAAcpC,EAAO,CAC5B,IAAIqC,EAAUF,GAAa,IAAInC,CAAK,EACpC,GAAI,CAACqC,EAAS,CACZ,IAAMC,EAAmB,CAAC,EACpBC,EAAkC,IAAI,IACtCC,EAAQxC,EAAM,OAAS,CAAC,EAC9B,QAASpE,EAAI,EAAGA,EAAI4G,EAAM,OAAQ5G,IAChC0G,EAAiB,KACfvD,GACE0D,GAAU7G,EAAG4G,EAAM,MAAM,EACzB9C,GACAC,GACA,GACF,CACF,EACK4C,EAAgB,IAAIC,EAAM5G,CAAC,EAAE,IAAI,GACpC2G,EAAgB,IAAIC,EAAM5G,CAAC,EAAE,KAAMA,CAAC,EAGxCyG,EAAU,CAAE,iBAAAC,EAAkB,gBAAAC,CAAgB,EAC9CJ,GAAa,IAAInC,EAAOqC,CAAO,CACjC,CACA,OAAOA,CACT,CACA,IAAIK,GAA6B,IAAI,QACjCC,GAA2B,IAAI,IACnC,SAASC,GAAY5C,EAAO,CAC1B,IAAI6C,EAAQH,GAAW,IAAI1C,CAAK,EAChC,GAAI,CAAC6C,EAAO,CACVA,EAAwB,IAAI,IAC5B,OAAW,CAACC,EAASC,CAAI,IAAM/C,EAAM,OAAS,CAAC,GAAG,QAAQ,EACxD,QAAWgD,KAAU,IAAI,IAAID,EAAK,OAAO,EACvCE,EAAOJ,EAAOG,EAAQF,CAAO,EAGjCJ,GAAW,IAAI1C,EAAO6C,CAAK,CAC7B,CACA,OAAOA,CACT,CACA,SAASK,GAAcC,EAAS,CAC9B,GAAM,CACJ,cAAAC,EACA,MAAApD,EACA,SAAAqD,EACA,YAAApC,EACA,gBAAAqC,EACA,mBAAAC,EACA,UAAAC,EACA,UAAAC,EAAY,UACZ,UAAAC,EACA,KAAAC,EACA,aAAAC,EACA,eAAAC,EACA,cAAArD,EACA,UAAAsD,EACA,eAAAC,EACA,SAAAzG,EACA,YAAA0G,EACA,QAAAC,EAAU,CACZ,EAAId,EACEe,GAAYT,IAAc,QAAUU,GAAUnE,CAAK,EAAI,EACvDvF,GAAQkJ,EAAK,OACbS,GAAmB,EAAI,KAAK,IAAI3J,GAAOf,EAAoB,EAC3DgB,EAAO2J,GAAOV,CAAI,EAClBW,GAAeC,GACnBnB,EACApD,EACA2D,EACAG,EACAG,EACAF,EACAzG,CACF,EACMkH,EAAc,CAAC,EACfC,GAAiC,IAAI,IACrCC,GAAS,CAAC,EACVC,GAA4B,IAAI,IAChCC,EAAa,CAAC,EACdC,GAAgC,IAAI,IACpCC,GAAavE,GAAwBP,EAAOQ,CAAa,EACzDuE,GAA+B,IAAI,IACzC,GAAI9D,IAAgB,UAClB,QAASrF,EAAI,EAAGA,EAAIoE,EAAM,MAAM,OAAQpE,IACtCmJ,GAAa,IAAI/E,EAAM,MAAMpE,CAAC,EAAE,GAAIA,CAAC,EAGzC,IAAMoJ,GAAYhF,EAAM,OAAO,QAAU,EACnC,CAAE,iBAAAsC,GAAkB,gBAAAC,EAAgB,EAAIH,GAAcpC,CAAK,EAC3DiF,GAAmBC,GAAS5C,GAAiBC,GAAgB,IAAI2C,CAAI,GAAK,EAAE,GAAKnM,GACjFoM,GAAgB3B,GAAawB,GAAY,EAAIpC,GAAY5C,CAAK,EAAI2C,GAClEyC,GAAa3K,IAASmJ,EAAe,EAAI3J,IAC/C,QAASoL,EAAK,EAAGA,EAAKrF,EAAM,MAAM,OAAQqF,IAAM,CAC9C,IAAMlI,EAAO6C,EAAM,MAAMqF,CAAE,EACrBjJ,EAAegH,EAAcjG,EAAK,IAAI,EACtCd,EAAa+G,EAAcjG,EAAK,EAAE,EAClCmI,EAAahB,GAAa,IAAIe,CAAE,EACtC,GAAI,CAACjJ,GAAc,QAAU,CAACC,GAAY,QAAU,CAACiJ,GAActB,GAAa,IAAIqB,CAAE,EACpF,SAEF,IAAME,EAAWpI,EAAK,SAAS,QAAU,EAEnCqI,EADW1B,GAAW,IAAIuB,CAAE,IACF,OAC1BI,EAAS/B,GAAW,YAAY,IAAI2B,CAAE,GAAK,GAC3CK,EAAgBnC,EAAqB,GAAKiC,EAAavM,GAA4B,GACnF0M,EAAUnC,GAAa+B,EAAW,EAClCK,EAAiBJ,EAAaxM,GAAsBH,GACpDgN,EAAY,CAACnC,GAAa+B,EAASG,EAAiBtM,EAASsM,EAAgBzM,EAAW,EACxF2M,EAASzC,EAAS,IAAIlG,EAAK,EAAE,EAC7B4I,GAAiBD,EAASE,GAAYF,EAAQxC,EAAiBG,EAAWS,EAAS,EAAIZ,GAAmB,EAC1G2C,EAAUzL,GAAW,CAACqJ,GAAkB/B,GAAiBtH,EAAQqJ,CAAc,EAC/EqC,EAAS,CAAC1L,EAAQ2L,EAAWhK,IAAU,CAC3C,GAAIqJ,EACF,QAAWY,KAAQC,GAAW7L,EAAQjB,GAAmBkB,EAAK,EAC5DmK,EAAW,KAAK,CAAE,OAAQwB,EAAM,UAAAD,EAAW,MAAAhK,CAAM,CAAC,OAGpDyI,EAAW,KAAK,CAAE,OAAApK,EAAQ,UAAA2L,EAAW,MAAAhK,CAAM,CAAC,CAEhD,EACMmK,EAAW9L,GAAW,CAC1B,IAAM+L,EAAOnB,GAAapJ,GAAa,CACrC,OAAAxB,EACA,cAAe+I,EAAqB,EACpC,cAAewC,EACf,MAAAtL,GACA,KAAAC,EACA,MAAOmL,EACP,aAAAzJ,EACA,WAAAC,CACF,CAAC,EAAI,OACDkK,GACF7B,GAAO,KAAK6B,CAAI,CAEpB,EACMC,EAAiB5B,EAAW,OAC5B6B,GAAa/B,GAAO,OACpBgC,GAAYhD,GAAW,MAAM,QAAU+B,GAAU,CAACE,EAAUjC,EAAU,MAAQ,OACpF,GAAIgD,GAAW,CACb,IAAMC,EAAWtD,EAAS,IAAIlG,EAAK,IAAI,EACjCyJ,EAAQD,EAAWX,GAAYW,EAAUrD,EAAiBG,EAAWS,EAAS,EAAIZ,EAClFuD,EAAY,KAAK,IAAID,EAAQF,GAAU,OAAQjN,EAAgB,EAC/D6E,EAAUT,GAAezB,EAAc1B,CAAI,EAC3C,CAAE,GAAAwD,GAAI,GAAAC,CAAG,GAAKjB,GAClBC,EACAf,EACAkJ,EAAW,CAAC,EACZhI,EACA5C,CACF,EAAI4D,EAAQ,CAAC,EAAIA,EAAQ,GAAG,EAAE,IAAM,CAClC,GAAI,EACJ,GAAI,CACN,EACAoI,GAAU,QAAQ,CAACI,EAAMC,KAAS,CAChC,GAAI,CAACD,EAAK,YAAY,IAAIzB,CAAE,EAC1B,OAEF,IAAM2B,IAAUD,IAAQL,GAAU,OAAS,GAAK,GAAKG,EAAYzC,GAC3D5J,GAASwM,KAAW,EAAI1B,EAAa2B,GAAgB3B,EAAYpH,GAAK8I,GAAQ7I,EAAK6I,GAAStM,CAAI,EAClGuL,EAAOzL,EAAM,GACf0L,EACE1L,GACAqM,EAAY,EACZC,EAAK,OAAO,IAAI3J,EAAK,IAAI,GAAK2J,EAAK,OAAO,IAAI3J,EAAK,EAAE,GAAKyI,CAC5D,CAEJ,CAAC,EACGhB,EAAW,OAAS4B,GACtBF,EAAQhB,CAAU,CAEtB,SAAW,CAACK,EACNM,EAAOX,CAAU,IACnBY,EAAOZ,EAAYI,EAAeG,CAAS,EAC3CS,EAAQhB,CAAU,OAEf,CACL,IAAM4B,EAAUC,GACd/K,EACAC,EACAkJ,EACA5B,CACF,EACMyD,EAAc,KAAK,OAAO7B,EAAW,GAAK,CAAC,EACjD,QAASzC,EAAU,EAAGA,EAAUyC,EAAUzC,IAAW,CACnD,GAAM,CAAE,EAAArH,EAAG,EAAAC,EAAE,EAAIwL,EAAQpE,CAAO,EAC1BtI,EAASiB,IAAM,GAAKC,KAAM,EAAI4J,EAAa2B,GAAgB3B,EAAY7J,EAAGC,EAAC,EACjF,GAAI,CAACuK,EAAOzL,CAAM,EAChB,SAEF,IAAM6M,EAAcpC,GAAgB9H,EAAK,QAAQ2F,CAAO,CAAC,EACzDoD,EACE1L,EACAkL,EACAhC,IAAcA,EAAU,MAAM,OAAS,CAACA,EAAU,MAAM,IAAIvG,EAAK,QAAQ2F,CAAO,CAAC,EAAI,CAAC2C,GAAUnM,EAAS+N,EAAalO,EAAW,EAAIkO,CACvI,EACIvE,IAAYsE,GACdd,EAAQ9L,CAAM,CAElB,CACF,CACA,IAAM8M,GAAiB1C,EAAW,OAAS4B,EACvCc,GAAiB,GACnBzC,GAAc,IAAIQ,EAAI,CAAE,MAAOmB,EAAgB,MAAOc,EAAe,CAAC,EAExE,IAAMC,GAAa7C,GAAO,OAAS+B,GAC/Bc,GAAa,GACf5C,GAAU,IAAIU,EAAI,CAAE,MAAOoB,GAAY,MAAOc,EAAW,CAAC,CAE9D,CACA,OAAW,CAACvE,EAAQ5F,CAAQ,IAAK,OAAO,QAAQgG,CAAa,EAAG,CAC9D,IAAMrC,EAAOsC,EAAS,IAAIL,CAAM,EAIhC,GAHI,CAACjC,GAGD8C,GAAkB,CAAClC,GAAmBvE,EAAUyG,CAAc,EAChE,SAEF,IAAM2D,EAAQ9D,IAAc,QAAU,CAACA,EAAU,QAAQ,IAAIV,CAAM,EAC7DyE,EAAMD,EAAQtO,GAAsB4H,GACxCC,EACAgE,GAAa,IAAI/B,CAAM,GAAK,EAC5B/B,EACA6D,EACF,EACM3I,EAAQqL,EAAQlO,EAASmO,EAAKtO,EAAW,EAAIsO,EAC7Cb,GAAQZ,GAAYjF,EAAMuC,EAAiBG,EAAWS,EAAS,EAC/DwD,EAAgBd,GAAQ,EACxBe,EAAQnD,EAAY,OACpB3B,EAAQsC,GAAc,IAAInC,CAAM,EAChC4E,EAAYhB,GAAQ5B,GACpB6C,EAAWzK,EAAS,QAAU,EAC9B0K,EAAQpE,GAAW,MAAM,QAAU,CAAC8D,GAAS,CAAC3E,GAAO,OAASa,EAAU,MAAQ,OACtF,GAAImE,GAAYC,EAAO,CACrB,IAAMjB,EAAY,KAAK,IAAID,GAAQkB,EAAM,OAAQrO,EAAgB,EAC3D6E,EAAUT,GAAeT,EAAU1C,CAAI,EAC7CoN,EAAM,QAAQ,CAAChB,EAAMC,IAAS,CAC5B,IAAMgB,EAAYjB,EAAK,OAAO,IAAI9D,CAAM,EACxC,GAAI+E,IAAc,OAChB,OAEF,IAAMf,IAAUD,GAAQe,EAAM,OAAS,GAAK,GAAKjB,EAAYzC,GAC7DI,EAAY,KAAK,CACf,OAAQsD,EAAM,SAAW,EAAI1K,EAAWiB,GAAejB,EAAUkB,EAAS0I,GAAQtM,CAAI,EACtF,UAAWmM,EAAY,EACvB,MAAOkB,CACT,CAAC,CACH,CAAC,CACH,SAAWF,GAAYhF,GAAO,QAAU+E,GAAapO,GAAoB,CACvE,IAAM8E,EAAUT,GAAeT,EAAU1C,CAAI,EAC7C,QAAWsN,KAAQnF,EAAO,CACxB,IAAMmE,GAAUgB,GAAQhD,GAAY,GAAK,GAAK4C,EAAYxD,GACpD6D,EAAS3F,GAAiB0F,CAAI,GAAKjP,GACzCyL,EAAY,KAAK,CACf,OAAQnG,GAAejB,EAAUkB,EAAS0I,EAAQtM,CAAI,EACtD,UAAWkN,EAAY,EAEvB,MAAOJ,EAAQlO,EAAS2O,EAAQ9O,EAAW,EAAI8O,CACjD,CAAC,CACH,CACF,MAAWJ,GACTrD,EAAY,KAAK,CAAE,OAAQpH,EAAU,UAAWsK,EAAe,MAAAvL,CAAM,CAAC,EAExE,IAAM+L,EAAQ1D,EAAY,OAASmD,EAC/BO,EAAQ,GACVzD,GAAe,IAAIzB,EAAQ,CAAE,MAAA2E,EAAO,MAAAO,CAAM,CAAC,CAE/C,CACA,MAAO,CACL,YAAA1D,EACA,eAAAC,GACA,OAAAC,GACA,UAAAC,GACA,WAAAC,EACA,cAAAC,EACF,CACF,CC3pBA,IAAIsD,GAAc,CAChB,CAAE,MAAO,WAAY,MAAO,yBAA0B,EACtD,CAAE,MAAO,OAAQ,MAAO,yBAA0B,EAClD,CAAE,MAAO,YAAa,MAAO,oBAAqB,CACpD,EACIC,GAAe,CACjB,CAAE,MAAO,OAAQ,MAAO,gBAAiB,KAAM,CAAC,UAAW,SAAS,CAAE,EACtE,CAAE,MAAO,OAAQ,MAAO,eAAgB,KAAM,CAAC,UAAW,SAAS,CAAE,EACrE,CAAE,MAAO,MAAO,MAAO,gBAAiB,KAAM,CAAC,UAAW,SAAS,CAAE,EACrE,CAAE,MAAO,SAAU,MAAO,eAAgB,KAAM,CAAC,UAAW,SAAS,CAAE,EACvE,CAAE,MAAO,QAAS,MAAO,iBAAkB,KAAM,CAAC,UAAW,SAAS,CAAE,EACxE,CAAE,MAAO,UAAW,MAAO,SAAU,CACvC,EACIC,GAAW,CAAC,OAAQ,MAAO,SAAU,OAAO,EAC5CC,GAAWC,GAAMJ,GAAY,KAAMK,GAAMA,EAAE,QAAUD,CAAC,EACtDE,GAAYF,GAAMH,GAAa,KAAMM,GAAMA,EAAE,QAAUH,CAAC,EAC5D,SAASI,GAAgBC,EAAOC,EAAWC,EAAQC,EAAQ,GAAM,CAC/D,GAAM,CAAE,MAAOC,EAAY,OAAQC,CAAY,EAAIL,EAAM,OAAS,CAAC,EAC7DM,EAAQZ,GAAQU,CAAU,EAAIA,EAAaD,EAAQ,WAAa,OAChEI,EAASN,EAAY,OAASR,GAASS,EAAST,GAAS,MAAM,EAC/De,EAASX,GAASQ,CAAW,EAAIA,IAAgB,WAAaC,IAAU,YAAcC,EAASF,EAAcE,EACnH,MAAO,CAAE,MAAAD,EAAO,OAAAE,CAAO,CACzB,CACA,IAAIC,GAAS,GACTC,GAAYC,GAAMA,GAAK,OAAUA,EAAI,QAAUA,EAAI,MAAS,QAAU,IACtEC,GAAWD,GAAMA,GAAK,SAAWA,EAAI,MAAQ,MAAQA,IAAM,EAAI,KAAO,KAC1E,SAASE,GAAMC,EAAK,CAClB,GAAM,CAACC,EAAGC,EAAGC,CAAC,EAAI,CAAC,EAAG,EAAG,CAAC,EAAE,IACzBC,GAAMR,GAAS,OAAO,SAASI,EAAI,MAAMI,EAAGA,EAAI,CAAC,EAAG,EAAE,EAAI,GAAG,CAChE,EACMC,EAAI,KAAK,KAAK,YAAeJ,EAAI,YAAeC,EAAI,YAAeC,CAAC,EACpEG,EAAI,KAAK,KAAK,YAAeL,EAAI,YAAeC,EAAI,YAAeC,CAAC,EACpEnB,EAAI,KAAK,KAAK,YAAeiB,EAAI,YAAeC,EAAI,YAAeC,CAAC,EAC1E,MAAO,CACL,YAAeE,EAAI,WAAcC,EAAI,YAAetB,EACpD,aAAeqB,EAAI,YAAcC,EAAI,YAAetB,EACpD,YAAeqB,EAAI,YAAeC,EAAI,WAActB,CACtD,CACF,CACA,SAASuB,GAAW,CAACC,EAAGC,EAAGN,CAAC,EAAG,CAC7B,IAAME,GAAKG,EAAI,YAAeC,EAAI,YAAeN,IAAM,EACjDG,GAAKE,EAAI,YAAeC,EAAI,YAAeN,IAAM,EACjD,GAAKK,EAAI,YAAeC,EAAI,YAAcN,IAAM,EACtD,MAAO,CACL,aAAeE,EAAI,aAAeC,EAAI,YAAe,EACrD,cAAgBD,EAAI,aAAeC,EAAI,YAAe,EACtD,aAAgBD,EAAI,YAAeC,EAAI,YAAc,CACvD,EAAE,IAAKT,GAAMC,GAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGD,CAAC,CAAC,CAAC,EAAI,GAAG,CACzD,CACA,SAASa,GAAUhB,EAAQiB,EAAG,CAC5B,IAAMC,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGD,CAAC,CAAC,EAC9BlB,EAASf,GAAa,KAAMM,GAAMA,EAAE,QAAUU,CAAM,EAC1D,GAAI,CAACD,GAAU,EAAE,SAAUA,GACzB,OAAOoB,GACLC,GAAUF,CAAC,EACXG,EACAC,EACF,EAAE,IAAKnB,GAAMA,EAAI,GAAG,EAEtB,IAAMoB,EAAOlB,GAAMN,EAAO,KAAK,CAAC,CAAC,EAC3ByB,EAAKnB,GAAMN,EAAO,KAAK,CAAC,CAAC,EAC/B,OAAOc,GAAWU,EAAK,IAAI,CAACpC,EAAGuB,IAAMvB,GAAKqC,EAAGd,CAAC,EAAIvB,GAAK+B,CAAC,CAAC,CAC3D,CACA,SAASO,GAAUzB,EAAQiB,EAAG,CAC5B,GAAM,CAACV,EAAGC,EAAGC,CAAC,EAAIO,GAAUhB,EAAQiB,CAAC,EAAE,IAAI,KAAK,KAAK,EACrD,MAAO,OAAOV,CAAC,KAAKC,CAAC,KAAKC,CAAC,GAC7B,CACA,SAASiB,GAAY1B,EAAQiB,EAAG,CAC9B,GAAM,CAACV,EAAGC,EAAGC,CAAC,EAAIO,GAAUhB,EAAQiB,CAAC,EAAE,IAAI,KAAK,KAAK,EACrD,OAAOU,EAASpB,EAAGC,EAAGC,EAAG,GAAG,CAC9B,CACA,SAASmB,GAAa,CAAE,MAAA9B,EAAO,OAAAE,CAAO,EAAGiB,EAAG,CAC1C,OAAOnB,IAAU,OAAS4B,GAAY1B,EAAQC,EAAM,EAAIgB,IAAM,OAASY,GAAiBH,GAAY1B,EAAQiB,CAAC,CAC/G,CACA,IAAIY,GAAiBC,GACrB,SAASC,GAAc,CAAE,MAAAjC,EAAO,OAAAE,CAAO,EAAG,CACxC,IAAMgC,EAAO,CAACC,EAAQhB,KAAO,CAC3B,OAAAgB,EACA,MAAOR,GAAUzB,EAAQiB,CAAC,EAC1B,KAAMS,GAAY1B,EAAQiB,CAAC,CAC7B,GACA,OAAOnB,IAAU,OAAS,CAACkC,EAAK,EAAG/B,EAAM,CAAC,EAAI,MAAM,KAAK,CAAE,OAAQ,CAAE,EAAG,CAACiC,EAAGxB,IAAMsB,EAAKtB,EAAI,EAAGA,EAAI,CAAC,CAAC,CACtG",
6
- "names": ["packAbgr", "r", "g", "b", "a", "abgrRed", "c", "abgrGreen", "abgrBlue", "abgrAlpha", "abgrToCssRgba", "normalizedRgbToCssRgba", "alpha", "fadeAbgr", "brightenAbgr", "factor", "t", "lift", "v", "REFERENCE_RAMP_MAX_HUE", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "rampHueCss", "hue", "rampHueAt", "frac", "rampHue", "bp", "domain", "HUE_STOP_DEG", "rampStops", "start", "reversed", "low", "high", "n", "_", "RAMP_GRADIENT_STOPS", "i", "RAMP_GRADIENT_CSS", "s", "cache", "weakMemo", "baseEdgeCurves", "nodePositions", "graph", "axis", "deletions", "version", "routes", "stranded", "curves", "ei", "bypassed", "edgeCurves", "edgeCurvesOf", "MAX_BACKBONE_HOPS", "buildNeighbors", "graph", "neighbors", "edge", "pushTo", "flankingSpan", "nodeId", "nodeById", "seen", "frontier", "minEnd", "maxStart", "hop", "next", "id", "adjacent", "neighborId", "neighbor", "isBackbone", "nodeReferenceSpan", "node", "referenceMidpoints", "midpoints", "span", "EDGE_DEFAULT_COLOR", "packAbgr", "EDGE_PATH_FALLBACK_COLOR", "EDGE_DELETION_COLOR", "DELETION_THICKNESS_FACTOR", "LIFT_BACKDROP_COLOR", "FADED_ALPHA", "LIFT_BACKDROP_CSS", "abgrToCssRgba", "fadeAbgr", "DELETION_DASH_PX", "MIN_PATH_STRIPE_PX", "MIN_WALK_LANE_PX", "MIN_SCALE_FOR_OFFSET", "ARROW_LENGTH_BASE_PX", "ARROW_LENGTH_PER_EDGE_PX", "ARROW_HALF_WIDTH_BASE_PX", "ARROW_HALF_WIDTH_PER_EDGE_PX", "MIN_LINK_HEADS", "MIN_ARROW_FIT", "MIN_ARROW_SCALE", "ARROW_CURVE_STEPS", "ABUTTING_PX", "walkX", "walkY", "walkPx", "backFromEnd", "curves", "scale", "yToX", "untilPx", "most", "last", "n", "px", "ci", "c", "k", "t", "u", "a", "b", "d", "e", "x", "y", "walkPointAt", "i", "from", "to", "f", "arrowheadFor", "edgeHalfWidth", "nodeHalfWidth", "color", "fromSegments", "toSegments", "length", "lengthPx", "abutting", "inset", "fit", "polylinePx", "tip", "base", "dx", "dy", "endTangent", "intoDirection", "leavesStart", "edge", "segments", "first", "stranded", "strandSides", "gap", "p", "final", "normal", "len", "pointNormalsOf", "rawPoints", "points", "before", "after", "nx", "ny", "dot", "offsetPolyline", "normals", "distance", "hslToRgb", "h", "s", "l", "m", "r", "g", "packHsl", "DEPTH_GRADIENT", "STABLE_RANK_GRADIENT", "NODE_LENGTH_GRADIENT", "sampleGradient", "stops", "pos", "hashColor", "str", "alpha", "nameHue", "PATH_SATURATION", "PATH_LIGHTNESS", "REFERENCE_RAMP_ALT_RGB", "REFERENCE_RAMP_ALT_COLOR", "REFERENCE_RAMP_ALT_CSS", "computeReferenceRamp", "graph", "domain", "midpoints", "referenceMidpoints", "min", "max", "mid", "computeColorSchemeRange", "referenceRamp", "minDepth", "maxDepth", "minLength", "maxLength", "maxRank", "getNodeColor", "node", "nodeIndex", "colorScheme", "range", "ramp", "isBackbone", "rampHueAt", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "hue", "into", "candidates", "isPolylineInBounds", "bounds", "hit", "isBezierInBounds", "cMinX", "cMaxX", "cMinY", "cMaxY", "paletteCache", "pathPaletteOf", "palette", "pathColorByIndex", "pathIndexByName", "paths", "pathHueAt", "slotsCache", "NO_SLOTS", "pathSlotsOf", "slots", "pathIdx", "path", "nodeId", "pushTo", "buildGeometry", "options", "nodePositions", "nodeById", "contigThickness", "connectorThickness", "drawPaths", "nodeWidth", "highlight", "axis", "linearLayout", "viewportBounds", "deletions", "deletionRoutes", "hiddenEdges", "version", "depthNorm", "meanDepth", "worldPerScreenPx", "yToXOf", "sharedCurves", "baseEdgeCurves", "nodeStrokes", "nodeStrokeRuns", "arrows", "arrowRuns", "edgeCurves", "edgeCurveRuns", "colorRange", "nodeIndexMap", "pathCount", "pathColorByName", "name", "nodePathSlots", "showArrows", "ei", "baseCurves", "numPaths", "isDeletion", "onWalk", "edgeThickness", "ribbons", "plainEdgeColor", "edgeColor", "toNode", "intoHalfWidth", "nodeWidthPx", "inView", "stroke", "thickness", "dash", "dashCurves", "arrowOn", "head", "edgeCurveStart", "arrowStart", "laneWalks", "fromNode", "width", "laneWidth", "walk", "lane", "offset", "translateCurves", "offsets", "pathRibbonOffsets", "arrowRibbon", "ribbonColor", "edgeCurveCount", "arrowCount", "faded", "own", "nodeThickness", "start", "slotWidth", "drawable", "lanes", "laneColor", "slot", "stripe", "count", "WALK_FIELDS", "WALK_SCHEMES", "FAMILIES", "isField", "v", "f", "isScheme", "s", "resolveEncoding", "layer", "reference", "picked", "alone", "askedField", "askedScheme", "field", "family", "scheme", "BASE_T", "toLinear", "c", "toGamma", "oklab", "hex", "r", "g", "b", "i", "l", "m", "oklabToRgb", "L", "a", "schemeRgb", "t", "x", "hslToRgb", "rampHueAt", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "from", "to", "schemeCss", "schemeColor", "packAbgr", "encodedColor", "NO_VALUE_COLOR", "REFERENCE_RAMP_ALT_COLOR", "encodingStops", "stop", "offset", "_"]
7
- }
@@ -1,2 +0,0 @@
1
- import{c as Lt,o as Wt,r as dt}from"./chunk-6MUBJVBG.js";import{a as At,d as Ct,e as Gt}from"./chunk-7HWHWPRW.js";var se="ws",ne="we",Dt=["elsewhere","break","end"],de={missing:"not in the graph",elsewhere:"on nodes filed elsewhere",unknown:"gap, cause unknown"},pe="outside the extracted subgraph";function Zt(t,e,s){if(!e&&!s)return[{bp:t}];let n=Math.min(e?.trimmed??0,t),r=Math.min(s?.trimmed??0,t-n),c=t-n-r,a=e?.kind==="break"?Math.min(e.bp,c):0;c-=a;let u=s?.kind==="break"?Math.min(s.bp,c):0;c-=u;let i=[e,s].find(b=>b?.kind==="elsewhere");return[{bp:n},{bp:a,cause:"missing"},i?.kind==="elsewhere"?{bp:c,cause:"elsewhere",chunk:i.chunk}:{bp:c,cause:"unknown"},{bp:u,cause:"missing"},{bp:r}].filter(b=>b.bp>0)}function Et(t,e){let s=t.bp[e],n=t.chunkRefs[e];return Ht(t.kindNames[t.kinds[e]],Number.isNaN(s)?void 0:s,t.trimmed[e],n<0?void 0:{refName:t.chunkRefNames[n],start:t.chunkStarts[e]})}function Ht(t,e,s,n){let r=s>0?{trimmed:s}:{};return t==="elsewhere"&&n?{kind:t,chunk:n,...e===void 0?{}:{bp:e},...r}:t==="break"&&e!==void 0?{kind:t,bp:e,...n?{chunk:n}:{},...r}:t==="end"?{kind:t,...r}:void 0}function Vt(t){let[e,...s]=t.split(","),n,r=0,c;for(let a of s)if(a.startsWith("bp="))n=+a.slice(3);else if(a.startsWith("trimmed="))r=+a.slice(8);else if(a.startsWith("chunk=")){let u=a.lastIndexOf(":");c={refName:a.slice(6,u),start:+a.slice(u+1)}}return Ht(e,n,r,c)}function Ot(t,e){return{...t?{before:t}:{},...e?{after:e}:{}}}function ge(t){let e=t[se],s=t[ne];return Ot(typeof e=="string"?Vt(e):void 0,typeof s=="string"?Vt(s):void 0)}var ve=class{constructor(){this.kinds=[],this.bp=[],this.trimmed=[],this.chunkRefs=[],this.chunkStarts=[],this.chunkRefNames=[],this.refIndex=new Map}push(t){this.kinds.push(Dt.indexOf(t.kind)),this.bp.push("bp"in t&&t.bp!==void 0?t.bp:NaN),this.trimmed.push(t.trimmed??0);let e="chunk"in t?t.chunk:void 0;if(e){let s=this.refIndex.get(e.refName);s===void 0&&(s=this.chunkRefNames.length,this.refIndex.set(e.refName,s),this.chunkRefNames.push(e.refName)),this.chunkRefs.push(s),this.chunkStarts.push(e.start)}else this.chunkRefs.push(-1),this.chunkStarts.push(NaN)}table(){return{kinds:Uint8Array.from(this.kinds),kindNames:[...Dt],bp:Float64Array.from(this.bp),trimmed:Float64Array.from(this.trimmed),chunkRefs:Int32Array.from(this.chunkRefs),chunkStarts:Float64Array.from(this.chunkStarts),chunkRefNames:this.chunkRefNames}}};function re(t,e,s){return e===0?t:`${t}:${e}-${s}`}function xt(t,e){let s=t.names[e],n=Gt(s),r=t.starts[e];return n?{name:`${n.sample}#${n.haplotype}#${n.contig}`,start:r,...n,...Ot(t.before&&Et(t.before,e),t.after&&Et(t.after,e))}:{name:re(s,r,t.ends[e]),start:r}}function oe(t,e,s,n){let r=new Int32Array(s+1);for(let i of t)r[i+1]++;for(let i=0;i<s;i++)r[i+1]+=r[i];let c=r.slice(0,s),a=new Int32Array(t.length);t.forEach((i,d)=>{a[c[i]++]=e[d]});let u=new Int32Array(n.length).fill(-1);return Array.from({length:s},(i,d)=>{let b=[];for(let I=r[d];I<r[d+1];I++){let U=a[I];u[U]!==d&&(u[U]=d,b.push(n[U]))}return b})}function Ft({nodes:t,links:e,walks:s}){let n=new Uint8Array(t.names.length),r=(a,u)=>{n[a]===0&&(n[a]=u?2:1)};for(let a=0;a<e.from.length;a++)r(e.from[a],e.strands[a]&1),r(e.to[a],e.strands[a]&2);let c=s.offsets[s.names.length]??0;for(let a=0;a<c;a++)r(s.steps[a],s.reversed[a]);return t.names.map((a,u)=>`${a}${n[u]===2?"-":"+"}`)}function Se({nodes:t,links:e,walks:s},n="Imported GFA"){let r=t.names.length,c=t.lengths.length,a=[];for(let o=0;o<s.names.length;o++)s.offsets[o+1]>s.offsets[o]&&a.push(o);let u=new Int32Array(r);for(let o of s.steps.subarray(0,s.offsets[s.names.length]))u[o]++;let i=Ft({nodes:t,links:e,walks:s}),d=[];for(let o=0;o<c;o++){let g=t.refs[o];d.push({id:i[o],name:t.names[o],length:t.lengths[o],depth:Math.max(u[o],1),stable:g<0?void 0:{refName:t.refNames[g],start:t.starts[o],rank:t.ranks[o]},samples:void 0})}let b=[],I=new Array(r),U=(o,g)=>{let h=I[o];if(h){for(let y=0;y<h.length;y+=2)if(h[y]===g)return h[y+1]}},B=(o,g,h)=>{let y=I[o];y?y.push(g,h):I[o]=[g,h]},st=[],X=0;for(let o=0;o<e.from.length;o++){let g=e.from[o],h=e.to[o];b.push({from:i[g],to:i[h],fromStrand:e.strands[o]&1?"-":"+",toStrand:e.strands[o]&2?"-":"+"});let y=U(g,h);y===void 0&&(y=X++,B(g,h,y),B(h,g,y)),st.push(y)}let F=new Int32Array(r+1);for(let o=0;o<r;o++)F[o+1]=F[o]+(I[o]?.length??0)/2;let nt=new Int32Array(F[r]),rt=new Int32Array(F[r]);I.forEach((o,g)=>{for(let h=0;h<o.length;h+=2)nt[F[g]+h/2]=o[h],rt[F[g]+h/2]=o[h+1]});let St=(o,g)=>{for(let h=F[o];h<F[o+1];h++)if(nt[h]===g)return rt[h];return-1},O=new Map,M=[],K=new Int32Array(s.offsets[s.names.length]??0),ot=new Int32Array(K.length),$=0,gt=new Int32Array(X).fill(-1),_=[],q=[],z=s.offsets[s.names.length]??0,vt=new Int32Array(z),G=new Float64Array(z),R=new Uint8Array(z),x=new Int32Array(r).fill(-1),at=[],L=[0],W=[],it=new Map,ft=[];for(let o of a){let g=xt(s,o),{start:h,name:y}=g,f=g.sample===void 0?s.names[o]:y,m=O.get(f);m===void 0&&(m=M.length,O.set(f,m),M.push(f),W.push(At(f)));let S=it.get(y);S===void 0&&(S=ft.length,it.set(y,S),ft.push(y));let P=W[m],k=s.offsets[o],lt=new Array(s.offsets[o+1]-k),T=h,D=-1;for(let C=k;C<s.offsets[o+1];C++){let E=s.steps[C];lt[C-k]=i[E],x[E]===-1&&(x[E]=L.at(-1),L.push(x[E]+u[E]),at.push(E));let V=x[E]++;if(vt[V]=m,G[V]=T,R[V]=s.reversed[C],T+=E<c?t.lengths[E]:0,D>=0){let J=St(D,E);J>=0&&gt[J]!==o&&(gt[J]=o,K[$]=J,ot[$++]=S)}D=E}_.push({...g,nodeIds:lt}),q.push({name:f,sample:P,start:h,length:T-h})}let It=oe(K.subarray(0,$),ot,X,ft);b.forEach((o,g)=>{let h=It[st[g]];h.length>0&&(o.pathIds=h)});let ct=a.length>0;return{name:n,nodes:d,edges:b,paths:ct?_:void 0,anchorPaths:ct?q:void 0,pathVisits:ct?new Wt({segments:at.map(o=>t.names[o]),offsets:Int32Array.from(L),path:vt.subarray(0,L.at(-1)),start:G.subarray(0,L.at(-1)),reversed:R.subarray(0,L.at(-1)),paths:M,samples:W}):void 0,anchoredBy:d.some(o=>o.stable)?"tags":void 0}}var Tt=1,Kt=2,wt=4,qt=[void 0,"missing","elsewhere","unknown"],zt=3,ae=t=>qt.indexOf(t)<<zt;function Jt(t,e,s){return e!==void 0&&t.includes(e)?e:t.find(n=>s.has(n))??t[0]}function ie(t){return Jt((t.paths??[]).map(e=>dt(e.name).name),t.referencePath,new Set(t.nodes.flatMap(e=>e.stable?.rank===0?[e.stable.refName]:[])))}function fe(t){let e=new Map,s=[],n=[],r=d=>{let b=e.get(d);return b===void 0&&(b=s.length,e.set(d,b),s.push(d),n.push(0)),b};for(let d of t.nodes)n[r(d.id)]=d.length;let c=t.paths??[],a=new Int32Array(c.length),u=new Int32Array(c.length),i=[];return c.forEach((d,b)=>{a[b]=i.length;for(let I of d.nodeIds)i.push(r(I));u[b]=i.length}),{heads:c,from:a,to:u,steps:i,lengths:n,names:s,reference:ie(t)}}function ce(t,e,s){let{nodes:n,walks:r}=t,c=[];for(let i=0;i<r.names.length;i++)r.offsets[i+1]>r.offsets[i]&&c.push(i);let a=c.map(i=>xt(r,i)),u=new Set;for(let i=0;i<n.lengths.length;i++)n.refs[i]>=0&&n.ranks[i]===0&&u.add(n.refNames[n.refs[i]]);return{heads:a,from:c.map(i=>r.offsets[i]),to:c.map(i=>r.offsets[i+1]),steps:r.steps,lengths:n.lengths,names:s?Ft(t):n.names,reference:Jt(a.map(i=>dt(i.name).name),e,u)}}function Qt(t){return t.sample??At(t.name)}function le(t){return t.haplotype!==void 0&&t.sample!==void 0?`${t.sample}#${t.haplotype}`:Qt(t)}var Xt=class{constructor(t){this.offsets=[0],this.values=Array.from({length:t},()=>[])}get length(){return this.values[0].length}push(...t){t.forEach((e,s)=>this.values[s].push(e))}endRow(){this.offsets.push(this.length)}reorder(t,e){let s=e.map(c=>c(this.length)),n=new Uint32Array(t.length+1),r=0;return t.forEach((c,a)=>{for(let u=this.offsets[c];u<this.offsets[c+1];u++,r++)s.forEach((i,d)=>{i[r]=this.values[d][u]});n[a+1]=r}),{offsets:n,columns:s}}},pt=t=>new Float64Array(t);function Fe(t,e,s={}){let{heads:n,from:r,to:c,steps:a,lengths:u,names:i,reference:d}="walks"in t?ce(t,s.referencePath,s.visits):fe(t),b=u.length,I=f=>f<b?u[f]:0,U=f=>dt(n[f].name).name,B=f=>n[f].start,st=(f,m)=>(B(f)??0)-(B(m)??0),X=n.map((f,m)=>m),F=X.filter(f=>U(f)===d).sort(st),nt=F[0],rt=X.filter(f=>U(f)!==d);if(nt===void 0||rt.length===0)return;let St=Lt(rt,U),O=new Float64Array(i.length).fill(Number.NaN),M=new Float64Array(i.length),K=!1,ot=!1,$=e&&e.end>e.start?e:void 0;for(let f of F){let m=B(f)??0;for(let S=r[f];S<c[f];S++){let P=a[S],k=I(P);Number.isNaN(O[P])&&(O[P]=m,M[P]=m+k,$&&(K||=m+k<=$.start,ot||=m>=$.end)),m+=k}}let gt=$===void 0||K&&ot,_=new Xt(5),q=[],z=new Map,vt=f=>{if(!f)return-1;let m=`${f.refName}:${f.start}`,S=z.get(m);return S===void 0&&(S=q.length,z.set(m,S),q.push(f)),S},G=s.visits?new Xt(4):void 0,R=new Int32Array(0),x=new Float64Array(0),at=f=>{let m=n[f[0]],S=[...f].sort(st),P=S.length-1;for(let l of S)P+=c[l]-r[l];P>R.length&&(R=new Int32Array(P*2),x=new Float64Array(P*2));let k=0,lt=!1,T,D,C=new Map;for(let l of S){let p=B(l);(p===void 0||T!==void 0&&p<T)&&(lt=!0),T!==void 0&&p!==void 0&&p>T&&(C.set(k,Zt(p-T,D===void 0?void 0:n[D].after,n[l].before)),R[k]=-(p-T),x[k++]=T);let v=p??0;for(let w=r[l];w<c[l];w++){let N=a[w];R[k]=N,x[k++]=v,v+=I(N)}T=p===void 0?void 0:v,D=l}let E=l=>l>=0&&l<k&&R[l]>=0&&!Number.isNaN(O[R[l]]),V=l=>{let p=R[l];return x[l]+(p<0?-p:I(p))},J=(l,p)=>{let v=l>=0?l:p,w=-1;for(let H=1;w<0&&H<k;H++)w=[v-H,v+H].find(E)??-1;if(w<0)return;let N=w>v==O[R[w]]>O[R[v]],A=N===(v===l),tt=A?k-1:0,et=E(tt);return{stop:{contigEnds:et,shortBp:et?Math.max(0,$.start-M[R[tt]],O[R[tt]]-$.end):0},lo:A?v+1:0,hi:A?k:v,backward:!N,axisStart:N?A?V(v):x[0]:A?V(k-1):x[v]}},Nt=0,kt=k,ht=!1,Pt=!0,ut=-1,Mt=-1,Rt,_t;if($&&gt){let l=-1,p=-1,v=-1/0,w=1/0;for(let N=0;N<k;N++)if(E(N)){let A=R[N];M[A]<=$.start&&M[A]>v&&(v=M[A],l=N),O[A]>=$.end&&O[A]<w&&(w=O[A],p=N)}if(l<0||p<0){Pt=!1;let N=l>=0||p>=0?J(l,p):void 0;N&&({lo:Nt,hi:kt,backward:ht,axisStart:Rt,stop:_t}=N)}else Nt=Math.min(l,p)+1,kt=Math.max(l,p),ht=l>p,ut=l,Mt=p}let bt=m.contig??Ct(dt(m.name).name),Yt=lt||k===0?void 0:Rt!==void 0?{contig:bt,start:Rt,reversed:ht}:ut<0?{contig:bt,start:x[0],reversed:!1}:ut<Mt?{contig:bt,start:V(ut),reversed:!1}:{contig:bt,start:x[ut],reversed:!0},Q=0,Ut=0,jt=0,mt=0,j=-1,Y=0,Z=Number.NaN,[,$t,te,ee]=_.values;for(let l=Nt;l<kt;l++){let p=ht?kt-1-(l-Nt):l,v=R[p];if(v<0){let H=C.get(p);for(let yt of ht?[...H].reverse():H)_.push(Q,yt.bp,Number.NaN,wt|ae(yt.cause),vt(yt.chunk)),Q+=yt.bp;j=_.length-1,Y=wt,Z=Number.NaN,jt+=-v,mt=0;continue}let w=I(v),N=O[v],A=!Number.isNaN(N);G?.push(v,Q,w,A?1:0);let tt=j>=0&&!Number.isNaN(Z),et=A&&tt&&mt>=0&&Z+($t[j]??0)===N,Bt=A&&tt&&mt<=0&&M[v]===Z;!A&&j>=0&&!(Y&(Tt|wt))?$t[j]+=w:et||Bt?($t[j]+=w,et||(Z=N,te[j]=N,Y|=Kt,ee[j]=Y),mt=et?1:-1):(Y=A?Tt:0,Z=A?N:Number.NaN,_.push(Q,w,Z,Y,-1),j=_.length-1,mt=0),Q+=w,A||(Ut+=w)}return _.endRow(),G?.endRow(),{name:m.name,label:le(m),sample:Qt(m),haplotype:m.haplotype,bp:Q,offReferenceBp:Ut,gapBp:jt,complete:Pt,stop:_t,axis:Yt}},L=at(F),W=[...St.values()].map((f,m)=>({meta:at(f),row:m+1}));W.sort((f,m)=>Number(m.meta.complete)-Number(f.meta.complete)||m.meta.bp-f.meta.bp||f.meta.label.localeCompare(m.meta.label));let it=[0,...W.map(f=>f.row)],{offsets:ft,columns:It}=_.reorder(it,[pt,pt,pt,f=>new Uint8Array(f),f=>new Int32Array(f)]),[ct,o,g,h,y]=It;return{origin:$?$.start:B(nt)??0,rows:[L,...W.map(f=>f.meta)],offsets:ft,start:ct,bp:o,referenceStart:g,flags:h,chunk:y,chunks:q,visits:G&&he(G,it,i)}}function he(t,e,s){let{offsets:n,columns:r}=t.reorder(e,[d=>new Int32Array(d),pt,pt,d=>new Uint8Array(d)]),[c,a,u,i]=r;return{offsets:n,node:c,start:a,bp:u,onReference:i,names:s}}function ue(t,e){let s=t.flags[e],n={start:t.start[e],bp:t.bp[e],onReference:(s&Tt)!==0};if(s&wt){n.gap=!0;let r=qt[s>>zt&3];r&&(n.cause=r);let c=t.chunks[t.chunk[e]];c&&(n.chunk=c)}else n.referenceStart=Number.isNaN(t.referenceStart[e])?void 0:t.referenceStart[e];return s&Kt&&(n.reversed=!0),n}function me(t,e){let s=[];for(let n=t.offsets[e];n<t.offsets[e+1];n++)s.push({node:t.names[t.node[n]],start:t.start[n],bp:t.bp[n],onReference:t.onReference[n]===1});return s}function Te(t,e){let s=t.rows.map((n,r)=>{let c=[];for(let a=t.offsets[r];a<t.offsets[r+1];a++)c.push(ue(t,a));return{...n,runs:c,visits:t.visits&&me(t.visits,r)}});return{origin:t.origin,unit:e,reference:s[0],rows:s.slice(1)}}export{se as a,ne as b,de as c,pe as d,Zt as e,Vt as f,ge as g,ve as h,xt as i,Se as j,ie as k,Fe as l,Te as m};
2
- //# sourceMappingURL=chunk-6KUHGRHU.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-EIY2SKD3.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-B5ARSBOH.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.4.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-M75QPZNJ.js"],
4
- "sourcesContent": ["// src/gfa/walkStops.ts\nvar START_STOP_TAG = \"ws\";\nvar END_STOP_TAG = \"we\";\nvar STOP_KINDS = [\"elsewhere\", \"break\", \"end\"];\nvar GAP_CAUSE_TEXT = {\n missing: \"not in the graph\",\n elsewhere: \"on nodes filed elsewhere\",\n unknown: \"gap, cause unknown\"\n};\nvar OUTSIDE_TEXT = \"outside the extracted subgraph\";\nfunction gapParts(bp, after, before) {\n if (!after && !before) {\n return [{ bp }];\n }\n const left = Math.min(after?.trimmed ?? 0, bp);\n const right = Math.min(before?.trimmed ?? 0, bp - left);\n let rest = bp - left - right;\n const lead = after?.kind === \"break\" ? Math.min(after.bp, rest) : 0;\n rest -= lead;\n const trail = before?.kind === \"break\" ? Math.min(before.bp, rest) : 0;\n rest -= trail;\n const elsewhere = [after, before].find((s) => s?.kind === \"elsewhere\");\n const parts = [\n { bp: left },\n { bp: lead, cause: \"missing\" },\n elsewhere?.kind === \"elsewhere\" ? { bp: rest, cause: \"elsewhere\", chunk: elsewhere.chunk } : { bp: rest, cause: \"unknown\" },\n { bp: trail, cause: \"missing\" },\n { bp: right }\n ];\n return parts.filter((part) => part.bp > 0);\n}\nfunction stopAt(table, i) {\n const bp = table.bp[i];\n const ref = table.chunkRefs[i];\n return stopOf(\n table.kindNames[table.kinds[i]],\n Number.isNaN(bp) ? void 0 : bp,\n table.trimmed[i],\n ref < 0 ? void 0 : { refName: table.chunkRefNames[ref], start: table.chunkStarts[i] }\n );\n}\nfunction stopOf(kind, bp, trimmed, chunk) {\n const cut = trimmed > 0 ? { trimmed } : {};\n if (kind === \"elsewhere\" && chunk) {\n return { kind, chunk, ...bp === void 0 ? {} : { bp }, ...cut };\n }\n if (kind === \"break\" && bp !== void 0) {\n return { kind, bp, ...chunk ? { chunk } : {}, ...cut };\n }\n return kind === \"end\" ? { kind, ...cut } : void 0;\n}\nfunction stopTag(stop) {\n const parts = [stop.kind];\n if (\"bp\" in stop && stop.bp !== void 0) {\n parts.push(`bp=${stop.bp}`);\n }\n if (stop.trimmed) {\n parts.push(`trimmed=${stop.trimmed}`);\n }\n if (\"chunk\" in stop && stop.chunk) {\n parts.push(`chunk=${stop.chunk.refName}:${stop.chunk.start}`);\n }\n return parts.join(\",\");\n}\nfunction parseStopTag(value) {\n const [kind, ...fields] = value.split(\",\");\n let bp;\n let trimmed = 0;\n let chunk;\n for (const field of fields) {\n if (field.startsWith(\"bp=\")) {\n bp = +field.slice(3);\n } else if (field.startsWith(\"trimmed=\")) {\n trimmed = +field.slice(8);\n } else if (field.startsWith(\"chunk=\")) {\n const at = field.lastIndexOf(\":\");\n chunk = { refName: field.slice(6, at), start: +field.slice(at + 1) };\n }\n }\n return stopOf(kind, bp, trimmed, chunk);\n}\nfunction stopFields(before, after) {\n return {\n ...before ? { before } : {},\n ...after ? { after } : {}\n };\n}\nfunction walkStopFields(tags) {\n const before = tags[START_STOP_TAG];\n const after = tags[END_STOP_TAG];\n return stopFields(\n typeof before === \"string\" ? parseStopTag(before) : void 0,\n typeof after === \"string\" ? parseStopTag(after) : void 0\n );\n}\nfunction walkStopTags(walks, p) {\n const tags = [];\n for (const [tag, table] of [\n [START_STOP_TAG, walks.before],\n [END_STOP_TAG, walks.after]\n ]) {\n const stop = table && stopAt(table, p);\n if (stop) {\n tags.push(`\t${tag}:Z:${stopTag(stop)}`);\n }\n }\n return tags.join(\"\");\n}\nvar StopColumns = class {\n constructor() {\n this.kinds = [];\n this.bp = [];\n this.trimmed = [];\n this.chunkRefs = [];\n this.chunkStarts = [];\n this.chunkRefNames = [];\n this.refIndex = /* @__PURE__ */ new Map();\n }\n push(stop) {\n this.kinds.push(STOP_KINDS.indexOf(stop.kind));\n this.bp.push(\"bp\" in stop && stop.bp !== void 0 ? stop.bp : NaN);\n this.trimmed.push(stop.trimmed ?? 0);\n const chunk = \"chunk\" in stop ? stop.chunk : void 0;\n if (chunk) {\n let ref = this.refIndex.get(chunk.refName);\n if (ref === void 0) {\n ref = this.chunkRefNames.length;\n this.refIndex.set(chunk.refName, ref);\n this.chunkRefNames.push(chunk.refName);\n }\n this.chunkRefs.push(ref);\n this.chunkStarts.push(chunk.start);\n } else {\n this.chunkRefs.push(-1);\n this.chunkStarts.push(NaN);\n }\n }\n table() {\n return {\n kinds: Uint8Array.from(this.kinds),\n kindNames: [...STOP_KINDS],\n bp: Float64Array.from(this.bp),\n trimmed: Float64Array.from(this.trimmed),\n chunkRefs: Int32Array.from(this.chunkRefs),\n chunkStarts: Float64Array.from(this.chunkStarts),\n chunkRefNames: this.chunkRefNames\n };\n }\n};\n\nexport {\n START_STOP_TAG,\n END_STOP_TAG,\n GAP_CAUSE_TEXT,\n OUTSIDE_TEXT,\n gapParts,\n stopAt,\n stopTag,\n parseStopTag,\n stopFields,\n walkStopFields,\n walkStopTags,\n StopColumns\n};\n", "import {\n stopAt,\n stopFields,\n walkStopTags\n} from \"./chunk-EIY2SKD3.js\";\nimport {\n PathVisits\n} from \"./chunk-ZPZ7GNBT.js\";\nimport {\n panSNFields,\n panSNSample\n} from \"./chunk-4XWZNPQ2.js\";\n\n// src/gfa/graphTables.ts\nfunction pLineName(name, start, end) {\n return start === 0 ? name : `${name}:${start}-${end}`;\n}\nfunction tablePath(w, p) {\n const walkName = w.names[p];\n const fields = panSNFields(walkName);\n const start = w.starts[p];\n return fields ? {\n name: `${fields.sample}#${fields.haplotype}#${fields.contig}`,\n start,\n ...fields,\n ...stopFields(\n w.before && stopAt(w.before, p),\n w.after && stopAt(w.after, p)\n )\n } : { name: pLineName(walkName, start, w.ends[p]), start };\n}\nfunction namesByList(lists, names, listCount, pathNames) {\n const starts = new Int32Array(listCount + 1);\n for (const list of lists) {\n starts[list + 1]++;\n }\n for (let i = 0; i < listCount; i++) {\n starts[i + 1] += starts[i];\n }\n const fill = starts.slice(0, listCount);\n const grouped = new Int32Array(lists.length);\n lists.forEach((list, i) => {\n grouped[fill[list]++] = names[i];\n });\n const listed = new Int32Array(pathNames.length).fill(-1);\n return Array.from({ length: listCount }, (_, list) => {\n const out = [];\n for (let i = starts[list]; i < starts[list + 1]; i++) {\n const k = grouped[i];\n if (listed[k] !== list) {\n listed[k] = list;\n out.push(pathNames[k]);\n }\n }\n return out;\n });\n}\nfunction tableNodeIds({ nodes: n, links: l, walks: w }) {\n const canonical = new Uint8Array(n.names.length);\n const claim = (node, reversed) => {\n if (canonical[node] === 0) {\n canonical[node] = reversed ? 2 : 1;\n }\n };\n for (let i = 0; i < l.from.length; i++) {\n claim(l.from[i], l.strands[i] & 1);\n claim(l.to[i], l.strands[i] & 2);\n }\n const stepCount = w.offsets[w.names.length] ?? 0;\n for (let s = 0; s < stepCount; s++) {\n claim(w.steps[s], w.reversed[s]);\n }\n return n.names.map(\n (segment, i) => `${segment}${canonical[i] === 2 ? \"-\" : \"+\"}`\n );\n}\nfunction graphFromTables({ nodes: n, links: l, walks: w }, name = \"Imported GFA\") {\n const count = n.names.length;\n const declared = n.lengths.length;\n const drawnWalks = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n drawnWalks.push(p);\n }\n }\n const traversals = new Int32Array(count);\n for (const node of w.steps.subarray(0, w.offsets[w.names.length])) {\n traversals[node]++;\n }\n const ids = tableNodeIds({ nodes: n, links: l, walks: w });\n const nodes = [];\n for (let i = 0; i < declared; i++) {\n const ref = n.refs[i];\n nodes.push({\n id: ids[i],\n name: n.names[i],\n length: n.lengths[i],\n depth: Math.max(traversals[i], 1),\n stable: ref < 0 ? void 0 : {\n refName: n.refNames[ref],\n start: n.starts[i],\n rank: n.ranks[i]\n },\n samples: void 0\n });\n }\n const edges = [];\n const neighbours = new Array(count);\n const pairList = (a, b) => {\n const near = neighbours[a];\n if (near) {\n for (let j = 0; j < near.length; j += 2) {\n if (near[j] === b) {\n return near[j + 1];\n }\n }\n }\n return void 0;\n };\n const addPair = (a, b, list) => {\n const near = neighbours[a];\n if (near) {\n near.push(b, list);\n } else {\n neighbours[a] = [b, list];\n }\n };\n const edgeLists = [];\n let lists = 0;\n for (let i = 0; i < l.from.length; i++) {\n const a = l.from[i];\n const b = l.to[i];\n edges.push({\n from: ids[a],\n to: ids[b],\n fromStrand: l.strands[i] & 1 ? \"-\" : \"+\",\n toStrand: l.strands[i] & 2 ? \"-\" : \"+\"\n });\n let list = pairList(a, b);\n if (list === void 0) {\n list = lists++;\n addPair(a, b, list);\n addPair(b, a, list);\n }\n edgeLists.push(list);\n }\n const adjacency = new Int32Array(count + 1);\n for (let a = 0; a < count; a++) {\n adjacency[a + 1] = adjacency[a] + (neighbours[a]?.length ?? 0) / 2;\n }\n const adjacentNode = new Int32Array(adjacency[count]);\n const adjacentList = new Int32Array(adjacency[count]);\n neighbours.forEach((near, a) => {\n for (let j = 0; j < near.length; j += 2) {\n adjacentNode[adjacency[a] + j / 2] = near[j];\n adjacentList[adjacency[a] + j / 2] = near[j + 1];\n }\n });\n const listOf = (a, b) => {\n for (let j = adjacency[a]; j < adjacency[a + 1]; j++) {\n if (adjacentNode[j] === b) {\n return adjacentList[j];\n }\n }\n return -1;\n };\n const nameIndex = /* @__PURE__ */ new Map();\n const pathNames = [];\n const crossedList = new Int32Array(w.offsets[w.names.length] ?? 0);\n const crossedName = new Int32Array(crossedList.length);\n let crossings = 0;\n const lastWalk = new Int32Array(lists).fill(-1);\n const paths = [];\n const anchorPaths = [];\n const totalSteps = w.offsets[w.names.length] ?? 0;\n const visitPath = new Int32Array(totalSteps);\n const visitStart = new Float64Array(totalSteps);\n const visitReversed = new Uint8Array(totalSteps);\n const fill = new Int32Array(count).fill(-1);\n const visitOrder = [];\n const blocks = [0];\n const pathSamples = [];\n const edgeNameIndex = /* @__PURE__ */ new Map();\n const edgeNames = [];\n for (const p of drawnWalks) {\n const head = tablePath(w, p);\n const { start, name: pathName } = head;\n const visitName = head.sample === void 0 ? w.names[p] : pathName;\n let named = nameIndex.get(visitName);\n if (named === void 0) {\n named = pathNames.length;\n nameIndex.set(visitName, named);\n pathNames.push(visitName);\n pathSamples.push(panSNSample(visitName));\n }\n let edgeNamed = edgeNameIndex.get(pathName);\n if (edgeNamed === void 0) {\n edgeNamed = edgeNames.length;\n edgeNameIndex.set(pathName, edgeNamed);\n edgeNames.push(pathName);\n }\n const visitSample = pathSamples[named];\n const first = w.offsets[p];\n const nodeIds = new Array(w.offsets[p + 1] - first);\n let pos = start;\n let prev = -1;\n for (let s = first; s < w.offsets[p + 1]; s++) {\n const node = w.steps[s];\n nodeIds[s - first] = ids[node];\n if (fill[node] === -1) {\n fill[node] = blocks.at(-1);\n blocks.push(fill[node] + traversals[node]);\n visitOrder.push(node);\n }\n const at = fill[node]++;\n visitPath[at] = named;\n visitStart[at] = pos;\n visitReversed[at] = w.reversed[s];\n pos += node < declared ? n.lengths[node] : 0;\n if (prev >= 0) {\n const list = listOf(prev, node);\n if (list >= 0 && lastWalk[list] !== p) {\n lastWalk[list] = p;\n crossedList[crossings] = list;\n crossedName[crossings++] = edgeNamed;\n }\n }\n prev = node;\n }\n paths.push({ ...head, nodeIds });\n anchorPaths.push({\n name: visitName,\n sample: visitSample,\n start,\n length: pos - start\n });\n }\n const listNames = namesByList(\n crossedList.subarray(0, crossings),\n crossedName,\n lists,\n edgeNames\n );\n edges.forEach((edge, i) => {\n const names = listNames[edgeLists[i]];\n if (names.length > 0) {\n edge.pathIds = names;\n }\n });\n const walked = drawnWalks.length > 0;\n return {\n name,\n nodes,\n edges,\n paths: walked ? paths : void 0,\n anchorPaths: walked ? anchorPaths : void 0,\n pathVisits: walked ? new PathVisits({\n segments: visitOrder.map((node) => n.names[node]),\n offsets: Int32Array.from(blocks),\n path: visitPath.subarray(0, blocks.at(-1)),\n start: visitStart.subarray(0, blocks.at(-1)),\n reversed: visitReversed.subarray(0, blocks.at(-1)),\n paths: pathNames,\n samples: pathSamples\n }) : void 0,\n anchoredBy: nodes.some((node) => node.stable) ? \"tags\" : void 0\n };\n}\nfunction graphTablesGFA({ nodes, links, walks }) {\n const { names } = nodes;\n const lines = [\"H\tVN:Z:1.1\"];\n for (let i = 0; i < nodes.lengths.length; i++) {\n const ref = nodes.refs[i];\n const stable = ref < 0 ? \"\" : `\tSN:Z:${nodes.refNames[ref]}\tSO:i:${nodes.starts[i]}\tSR:i:${nodes.ranks[i]}`;\n lines.push(`S\t${names[i]}\t*\tLN:i:${nodes.lengths[i]}${stable}`);\n }\n for (let i = 0; i < links.from.length; i++) {\n const strands = links.strands[i];\n lines.push(\n `L\t${names[links.from[i]]}\t${strands & 1 ? \"-\" : \"+\"}\t${names[links.to[i]]}\t${strands & 2 ? \"-\" : \"+\"}\t0M`\n );\n }\n for (let p = 0; p < walks.names.length; p++) {\n const name = walks.names[p];\n const fields = panSNFields(name);\n const start = walks.starts[p];\n const end = walks.ends[p];\n const steps = [];\n for (let s = walks.offsets[p]; s < walks.offsets[p + 1]; s++) {\n steps.push([names[walks.steps[s]], walks.reversed[s]]);\n }\n lines.push(\n fields ? `W\t${fields.sample}\t${fields.haplotype}\t${fields.contig}\t${start}\t${end}\t${steps.map(([id, rev]) => (rev ? \"<\" : \">\") + id).join(\"\")}${walkStopTags(walks, p)}` : `P\t${pLineName(name, start, end)}\t${steps.map(([id, rev]) => id + (rev ? \"-\" : \"+\")).join(\",\")}\t*`\n );\n }\n return lines.join(\"\\n\");\n}\n\nexport {\n tablePath,\n tableNodeIds,\n graphFromTables,\n graphTablesGFA\n};\n", "import {\n tableNodeIds,\n tablePath\n} from \"./chunk-B5ARSBOH.js\";\nimport {\n pathOrigin\n} from \"./chunk-B5X2RLJG.js\";\nimport {\n gapParts\n} from \"./chunk-EIY2SKD3.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\n panSNSample\n} from \"./chunk-4XWZNPQ2.js\";\n\n// src/layout/walkRowRuns.ts\nvar RUN_ON_REFERENCE = 1;\nvar RUN_REVERSED = 2;\nvar RUN_GAP = 4;\nvar GAP_CAUSES = [void 0, \"missing\", \"elsewhere\", \"unknown\"];\nvar CAUSE_SHIFT = 3;\nvar causeFlags = (cause) => GAP_CAUSES.indexOf(cause) << CAUSE_SHIFT;\nfunction referenceOf(names, referencePath, rankZero) {\n return referencePath !== void 0 && names.includes(referencePath) ? referencePath : names.find((n) => rankZero.has(n)) ?? names[0];\n}\nfunction referenceWalkName(graph) {\n return referenceOf(\n (graph.paths ?? []).map((p) => pathOrigin(p.name).name),\n graph.referencePath,\n new Set(\n graph.nodes.flatMap(\n (n) => n.stable?.rank === 0 ? [n.stable.refName] : []\n )\n )\n );\n}\nfunction graphPieces(graph) {\n const index = /* @__PURE__ */ new Map();\n const names = [];\n const lengths = [];\n const indexOf = (id) => {\n let i = index.get(id);\n if (i === void 0) {\n i = names.length;\n index.set(id, i);\n names.push(id);\n lengths.push(0);\n }\n return i;\n };\n for (const node of graph.nodes) {\n lengths[indexOf(node.id)] = node.length;\n }\n const heads = graph.paths ?? [];\n const from = new Int32Array(heads.length);\n const to = new Int32Array(heads.length);\n const steps = [];\n heads.forEach((path, p) => {\n from[p] = steps.length;\n for (const id of path.nodeIds) {\n steps.push(indexOf(id));\n }\n to[p] = steps.length;\n });\n return {\n heads,\n from,\n to,\n steps,\n lengths,\n names,\n reference: referenceWalkName(graph)\n };\n}\nfunction tablePieces(tables, referencePath, visits) {\n const { nodes: n, walks: w } = tables;\n const kept = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n kept.push(p);\n }\n }\n const heads = kept.map((p) => tablePath(w, p));\n const rankZero = /* @__PURE__ */ new Set();\n for (let i = 0; i < n.lengths.length; i++) {\n if (n.refs[i] >= 0 && n.ranks[i] === 0) {\n rankZero.add(n.refNames[n.refs[i]]);\n }\n }\n return {\n heads,\n from: kept.map((p) => w.offsets[p]),\n to: kept.map((p) => w.offsets[p + 1]),\n steps: w.steps,\n lengths: n.lengths,\n // a visit names its node as the Graph does, which costs a pass over the\n // steps\n names: visits ? tableNodeIds(tables) : n.names,\n reference: referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n )\n };\n}\nfunction sampleOf(path) {\n return path.sample ?? panSNSample(path.name);\n}\nfunction labelOf(path) {\n return path.haplotype !== void 0 && path.sample !== void 0 ? `${path.sample}#${path.haplotype}` : sampleOf(path);\n}\nvar Columns = class {\n constructor(width) {\n this.offsets = [0];\n this.values = Array.from({ length: width }, () => []);\n }\n get length() {\n return this.values[0].length;\n }\n push(...row) {\n row.forEach((v, i) => this.values[i].push(v));\n }\n endRow() {\n this.offsets.push(this.length);\n }\n // the rows in `order`, column i in the array `make[i]` makes\n reorder(order, make) {\n const columns = make.map((m) => m(this.length));\n const offsets = new Uint32Array(order.length + 1);\n let at = 0;\n order.forEach((row, i) => {\n for (let k = this.offsets[row]; k < this.offsets[row + 1]; k++, at++) {\n columns.forEach((column, c) => {\n column[at] = this.values[c][k];\n });\n }\n offsets[i + 1] = at;\n });\n return { offsets, columns };\n }\n};\nvar float64 = (n) => new Float64Array(n);\nfunction walkRowRuns(source, region, o = {}) {\n const {\n heads,\n from,\n to,\n steps: all,\n lengths,\n names,\n reference\n } = \"walks\" in source ? tablePieces(source, o.referencePath, o.visits) : graphPieces(source);\n const declared = lengths.length;\n const lengthOf = (node) => node < declared ? lengths[node] : 0;\n const nameOf = (p) => pathOrigin(heads[p].name).name;\n const startOf = (p) => heads[p].start;\n const byStart = (a, b) => (startOf(a) ?? 0) - (startOf(b) ?? 0);\n const pieceIds = heads.map((_, p) => p);\n const referencePieces = pieceIds.filter((p) => nameOf(p) === reference).sort(byStart);\n const first = referencePieces[0];\n const others = pieceIds.filter((p) => nameOf(p) !== reference);\n if (first === void 0 || others.length === 0) {\n return void 0;\n }\n const walks = groupBy(others, nameOf);\n const spanStart = new Float64Array(names.length).fill(Number.NaN);\n const spanEnd = new Float64Array(names.length);\n let reachesBefore = false;\n let reachesAfter = false;\n const cut = region && region.end > region.start ? region : void 0;\n for (const piece of referencePieces) {\n let pos = startOf(piece) ?? 0;\n for (let s = from[piece]; s < to[piece]; s++) {\n const node = all[s];\n const len = lengthOf(node);\n if (Number.isNaN(spanStart[node])) {\n spanStart[node] = pos;\n spanEnd[node] = pos + len;\n if (cut) {\n reachesBefore ||= pos + len <= cut.start;\n reachesAfter ||= pos >= cut.end;\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || reachesBefore && reachesAfter;\n const runs = new Columns(5);\n const chunks = [];\n const chunkIndex = /* @__PURE__ */ new Map();\n const chunkOf = (chunk2) => {\n if (!chunk2) {\n return -1;\n }\n const key = `${chunk2.refName}:${chunk2.start}`;\n let i = chunkIndex.get(key);\n if (i === void 0) {\n i = chunks.length;\n chunkIndex.set(key, i);\n chunks.push(chunk2);\n }\n return i;\n };\n const visits = o.visits ? new Columns(4) : void 0;\n let steps = new Int32Array(0);\n let stepStart = new Float64Array(0);\n const rowOf = (pieces) => {\n const head = heads[pieces[0]];\n const ordered = [...pieces].sort(byStart);\n let count = ordered.length - 1;\n for (const piece of ordered) {\n count += to[piece] - from[piece];\n }\n if (count > steps.length) {\n steps = new Int32Array(count * 2);\n stepStart = new Float64Array(count * 2);\n }\n let length = 0;\n let unplaced = false;\n let end;\n let previous;\n const partsAt = /* @__PURE__ */ new Map();\n for (const piece of ordered) {\n const start2 = startOf(piece);\n if (start2 === void 0 || end !== void 0 && start2 < end) {\n unplaced = true;\n }\n if (end !== void 0 && start2 !== void 0 && start2 > end) {\n partsAt.set(\n length,\n gapParts(\n start2 - end,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -(start2 - end);\n stepStart[length++] = end;\n }\n let pos = start2 ?? 0;\n for (let s = from[piece]; s < to[piece]; s++) {\n const node = all[s];\n steps[length] = node;\n stepStart[length++] = pos;\n pos += lengthOf(node);\n }\n end = start2 === void 0 ? void 0 : pos;\n previous = piece;\n }\n const onReference = (i) => i >= 0 && i < length && steps[i] >= 0 && !Number.isNaN(spanStart[steps[i]]);\n const stepEnd = (i) => {\n const id = steps[i];\n return stepStart[i] + (id < 0 ? -id : lengthOf(id));\n };\n const partialSide = (i0, i1) => {\n const flank = i0 >= 0 ? i0 : i1;\n let near = -1;\n for (let d = 1; near < 0 && d < length; d++) {\n near = [flank - d, flank + d].find(onReference) ?? -1;\n }\n if (near < 0) {\n return void 0;\n }\n const forward = near > flank === spanStart[steps[near]] > spanStart[steps[flank]];\n const after = forward === (flank === i0);\n const last2 = after ? length - 1 : 0;\n const contigEnds = onReference(last2);\n const stop2 = {\n contigEnds,\n shortBp: contigEnds ? Math.max(\n 0,\n cut.start - spanEnd[steps[last2]],\n spanStart[steps[last2]] - cut.end\n ) : 0\n };\n return {\n stop: stop2,\n lo: after ? flank + 1 : 0,\n hi: after ? length : flank,\n backward: !forward,\n axisStart: forward ? after ? stepEnd(flank) : stepStart[0] : after ? stepEnd(length - 1) : stepStart[flank]\n };\n };\n let lo = 0;\n let hi = length;\n let backward = false;\n let complete = true;\n let flankFrom = -1;\n let flankTo = -1;\n let axisStart;\n let stop;\n if (cut && flanked) {\n let i0 = -1;\n let i1 = -1;\n let bestEnd = -Infinity;\n let bestStart = Infinity;\n for (let i = 0; i < length; i++) {\n if (onReference(i)) {\n const id = steps[i];\n if (spanEnd[id] <= cut.start && spanEnd[id] > bestEnd) {\n bestEnd = spanEnd[id];\n i0 = i;\n }\n if (spanStart[id] >= cut.end && spanStart[id] < bestStart) {\n bestStart = spanStart[id];\n i1 = i;\n }\n }\n }\n if (i0 < 0 || i1 < 0) {\n complete = false;\n const inside = i0 >= 0 || i1 >= 0 ? partialSide(i0, i1) : void 0;\n if (inside) {\n ;\n ({ lo, hi, backward, axisStart, stop } = inside);\n }\n } else {\n lo = Math.min(i0, i1) + 1;\n hi = Math.max(i0, i1);\n backward = i0 > i1;\n flankFrom = i0;\n flankTo = i1;\n }\n }\n const contig = head.contig ?? panSNContig(pathOrigin(head.name).name);\n const axis = unplaced || length === 0 ? void 0 : axisStart !== void 0 ? { contig, start: axisStart, reversed: backward } : flankFrom < 0 ? { contig, start: stepStart[0], reversed: false } : flankFrom < flankTo ? { contig, start: stepEnd(flankFrom), reversed: false } : { contig, start: stepStart[flankFrom], reversed: true };\n let bp2 = 0;\n let offReferenceBp = 0;\n let gapBp = 0;\n let step = 0;\n let last = -1;\n let lastFlags = 0;\n let lastRef = Number.NaN;\n const [, runBp, runRef, runFlags] = runs.values;\n for (let k = lo; k < hi; k++) {\n const index = backward ? hi - 1 - (k - lo) : k;\n const id = steps[index];\n if (id < 0) {\n const parts = partsAt.get(index);\n for (const part of backward ? [...parts].reverse() : parts) {\n runs.push(\n bp2,\n part.bp,\n Number.NaN,\n RUN_GAP | causeFlags(part.cause),\n chunkOf(part.chunk)\n );\n bp2 += part.bp;\n }\n last = runs.length - 1;\n lastFlags = RUN_GAP;\n lastRef = Number.NaN;\n gapBp += -id;\n step = 0;\n continue;\n }\n const len = lengthOf(id);\n const at = spanStart[id];\n const on = !Number.isNaN(at);\n visits?.push(id, bp2, len, on ? 1 : 0);\n const placed = last >= 0 && !Number.isNaN(lastRef);\n const forward = on && placed && step >= 0 && lastRef + (runBp[last] ?? 0) === at;\n const back = on && placed && step <= 0 && spanEnd[id] === lastRef;\n if (!on && last >= 0 && !(lastFlags & (RUN_ON_REFERENCE | RUN_GAP))) {\n runBp[last] += len;\n } else if (forward || back) {\n runBp[last] += len;\n if (!forward) {\n lastRef = at;\n runRef[last] = at;\n lastFlags |= RUN_REVERSED;\n runFlags[last] = lastFlags;\n }\n step = forward ? 1 : -1;\n } else {\n lastFlags = on ? RUN_ON_REFERENCE : 0;\n lastRef = on ? at : Number.NaN;\n runs.push(bp2, len, lastRef, lastFlags, -1);\n last = runs.length - 1;\n step = 0;\n }\n bp2 += len;\n if (!on) {\n offReferenceBp += len;\n }\n }\n runs.endRow();\n visits?.endRow();\n return {\n name: head.name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: bp2,\n offReferenceBp,\n gapBp,\n complete,\n stop,\n axis\n };\n };\n const referenceRow = rowOf(referencePieces);\n const rows = [...walks.values()].map((pieces, i) => ({\n meta: rowOf(pieces),\n row: i + 1\n }));\n rows.sort(\n (a, b) => Number(b.meta.complete) - Number(a.meta.complete) || b.meta.bp - a.meta.bp || a.meta.label.localeCompare(b.meta.label)\n );\n const order = [0, ...rows.map((r) => r.row)];\n const { offsets, columns } = runs.reorder(order, [\n float64,\n float64,\n float64,\n (n) => new Uint8Array(n),\n (n) => new Int32Array(n)\n ]);\n const [start, bp, referenceStart, flags, chunk] = columns;\n return {\n origin: cut ? cut.start : startOf(first) ?? 0,\n rows: [referenceRow, ...rows.map((r) => r.meta)],\n offsets,\n start,\n bp,\n referenceStart,\n flags,\n chunk,\n chunks,\n visits: visits && visitColumns(visits, order, names)\n };\n}\nfunction visitColumns(visits, order, names) {\n const { offsets, columns } = visits.reorder(order, [\n (n) => new Int32Array(n),\n float64,\n float64,\n (n) => new Uint8Array(n)\n ]);\n const [node, start, bp, onReference] = columns;\n return { offsets, node, start, bp, onReference, names };\n}\nfunction runAt(t, k) {\n const f = t.flags[k];\n const run = {\n start: t.start[k],\n bp: t.bp[k],\n onReference: (f & RUN_ON_REFERENCE) !== 0\n };\n if (f & RUN_GAP) {\n run.gap = true;\n const cause = GAP_CAUSES[f >> CAUSE_SHIFT & 3];\n if (cause) {\n run.cause = cause;\n }\n const chunk = t.chunks[t.chunk[k]];\n if (chunk) {\n run.chunk = chunk;\n }\n } else {\n run.referenceStart = Number.isNaN(t.referenceStart[k]) ? void 0 : t.referenceStart[k];\n }\n if (f & RUN_REVERSED) {\n run.reversed = true;\n }\n return run;\n}\nfunction visitsOf(v, row) {\n const out = [];\n for (let k = v.offsets[row]; k < v.offsets[row + 1]; k++) {\n out.push({\n node: v.names[v.node[k]],\n start: v.start[k],\n bp: v.bp[k],\n onReference: v.onReference[k] === 1\n });\n }\n return out;\n}\nfunction walkRowsOf(t, unit) {\n const rows = t.rows.map((meta, i) => {\n const runs = [];\n for (let k = t.offsets[i]; k < t.offsets[i + 1]; k++) {\n runs.push(runAt(t, k));\n }\n return {\n ...meta,\n runs,\n visits: t.visits && visitsOf(t.visits, i)\n };\n });\n return { origin: t.origin, unit, reference: rows[0], rows: rows.slice(1) };\n}\n\nexport {\n referenceWalkName,\n walkRowRuns,\n runAt,\n walkRowsOf\n};\n"],
5
- "mappings": "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",
6
- "names": ["START_STOP_TAG", "END_STOP_TAG", "STOP_KINDS", "GAP_CAUSE_TEXT", "OUTSIDE_TEXT", "gapParts", "bp", "after", "before", "left", "right", "rest", "lead", "trail", "elsewhere", "s", "part", "stopAt", "table", "i", "ref", "stopOf", "kind", "trimmed", "chunk", "cut", "parseStopTag", "value", "kind", "fields", "bp", "trimmed", "chunk", "field", "at", "stopOf", "stopFields", "before", "after", "walkStopFields", "tags", "START_STOP_TAG", "END_STOP_TAG", "StopColumns", "stop", "STOP_KINDS", "chunk", "ref", "pLineName", "name", "start", "end", "tablePath", "w", "p", "walkName", "fields", "panSNFields", "stopFields", "stopAt", "namesByList", "lists", "names", "listCount", "pathNames", "starts", "list", "fill", "grouped", "i", "listed", "_", "out", "k", "tableNodeIds", "n", "l", "canonical", "claim", "node", "reversed", "stepCount", "s", "segment", "graphFromTables", "count", "declared", "drawnWalks", "traversals", "ids", "nodes", "ref", "edges", "neighbours", "pairList", "a", "b", "near", "j", "addPair", "edgeLists", "adjacency", "adjacentNode", "adjacentList", "listOf", "nameIndex", "crossedList", "crossedName", "crossings", "lastWalk", "paths", "anchorPaths", "totalSteps", "visitPath", "visitStart", "visitReversed", "visitOrder", "blocks", "pathSamples", "edgeNameIndex", "edgeNames", "head", "pathName", "visitName", "named", "panSNSample", "edgeNamed", "visitSample", "first", "nodeIds", "pos", "prev", "at", "listNames", "edge", "walked", "PathVisits", "RUN_ON_REFERENCE", "RUN_REVERSED", "RUN_GAP", "GAP_CAUSES", "CAUSE_SHIFT", "causeFlags", "cause", "referenceOf", "names", "referencePath", "rankZero", "referenceWalkName", "graph", "p", "pathOrigin", "n", "graphPieces", "index", "lengths", "indexOf", "id", "i", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "tableNodeIds", "h", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "row", "v", "order", "make", "columns", "m", "offsets", "at", "k", "column", "c", "float64", "walkRowRuns", "source", "region", "o", "all", "reference", "declared", "lengthOf", "nameOf", "startOf", "byStart", "a", "b", "pieceIds", "_", "referencePieces", "first", "others", "walks", "groupBy", "spanStart", "spanEnd", "reachesBefore", "reachesAfter", "cut", "piece", "pos", "s", "len", "flanked", "runs", "chunks", "chunkIndex", "chunkOf", "chunk2", "key", "stepStart", "rowOf", "pieces", "head", "ordered", "count", "length", "unplaced", "end", "previous", "partsAt", "start2", "gapParts", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "d", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "stop", "bestEnd", "bestStart", "inside", "contig", "panSNContig", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "runBp", "runRef", "runFlags", "parts", "part", "on", "placed", "back", "referenceRow", "rows", "r", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "out", "walkRowsOf", "unit", "meta"]
7
- }
@@ -1,2 +0,0 @@
1
- var e="#";function l(t){return t.split(e)[0]}var r=new Set(["_gbwt_ref"]);function p(t){return r.has(t)}function c(t){let n=t.split(e);return n.length>=3?`${n[0]}${e}${n[1]}`:void 0}function u(t){let n=t.split(e);return n.length>=3?n.slice(2).join(e):n.length===2?n[1]:t}function N(t){let[n="",o="",...s]=t.split(e);return s.length>0?{sample:n,haplotype:+o,contig:s.join(e)}:void 0}function S(t){let n=t.split(e),o=n.length>=2?Number(n[1]):Number.NaN;return{sample:n[0],haplotype:Number.isFinite(o)?o:void 0}}function f(t,n){return n!==void 0&&(t===n||t.startsWith(n+e))}function a(t){return t.getConf("assemblyNameToPanSN")??{}}function h(t,n){return n===void 0?void 0:a(t)[n]??n}var i=new WeakMap;function m(t){let n=i.get(t);if(n===void 0){let o=a(t);n={};for(let s of new Set([...Object.keys(o),...t.getConf("assemblyNames")]))n[o[s]??s]=s;i.set(t,n)}return n}export{l as a,p as b,c,u as d,N as e,S as f,f as g,h,m as i};
2
- //# sourceMappingURL=chunk-7HWHWPRW.js.map