jbrowse-plugin-graphgenomeviewer 8.0.2 → 8.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/chunks/{AddTrackWorkflow-RJSOQZYQ.js → AddTrackWorkflow-7CXTSSMR.js} +2 -2
  2. package/dist/chunks/GbzBaseSyntenyAdapter-EJIR3HZM.js +2 -0
  3. package/dist/chunks/GbzBaseSyntenyAdapter-EJIR3HZM.js.map +7 -0
  4. package/dist/chunks/{GraphGenomeView-667ZUNDI.js → GraphGenomeView-2AKRM74B.js} +2 -2
  5. package/dist/chunks/{GraphTrackSettingsDialog-7M3Q635V.js → GraphTrackSettingsDialog-7XRZQW6T.js} +2 -2
  6. package/dist/chunks/{HighlightColorDialog-4F34Q4PY.js → HighlightColorDialog-LCBGD2ZA.js} +2 -2
  7. package/dist/chunks/LinearGraphDisplay-WWQ73BO5.js +2 -0
  8. package/dist/chunks/{MinigraphBubbleAdapter-G25V6MZL.js → MinigraphBubbleAdapter-4OOBJ44C.js} +2 -2
  9. package/dist/chunks/RgfaTabixAdapter-CEGFN2QY.js +2 -0
  10. package/dist/chunks/RgfaTabixAdapter-CEGFN2QY.js.map +7 -0
  11. package/dist/chunks/{WalkFormsAdapter-PBN7BJZW.js → WalkFormsAdapter-LTAKACZD.js} +2 -2
  12. package/dist/chunks/{WalkTabixSyntenyAdapter-27WDE5JF.js → WalkTabixSyntenyAdapter-B6V3YNW7.js} +2 -2
  13. package/dist/chunks/chunk-5FNGR33G.js +2 -0
  14. package/dist/chunks/chunk-5FNGR33G.js.map +7 -0
  15. package/dist/chunks/chunk-6VNDP3UB.js +2 -0
  16. package/dist/chunks/chunk-6VNDP3UB.js.map +7 -0
  17. package/dist/chunks/{chunk-CJAV55QB.js → chunk-BJHWGRMP.js} +1 -1
  18. package/dist/chunks/{chunk-CJAV55QB.js.map → chunk-BJHWGRMP.js.map} +1 -1
  19. package/dist/chunks/{chunk-IAXUZMOX.js → chunk-CNCYMJ5E.js} +2 -2
  20. package/dist/chunks/{chunk-IAXUZMOX.js.map → chunk-CNCYMJ5E.js.map} +2 -2
  21. package/dist/chunks/{chunk-2V75YPTT.js → chunk-CVHKXFVS.js} +2 -2
  22. package/dist/chunks/{chunk-2V75YPTT.js.map → chunk-CVHKXFVS.js.map} +2 -2
  23. package/dist/chunks/chunk-CZI7IP5S.js +2 -0
  24. package/dist/chunks/chunk-CZI7IP5S.js.map +7 -0
  25. package/dist/chunks/chunk-CZXJXNZN.js +3 -0
  26. package/dist/chunks/chunk-CZXJXNZN.js.map +7 -0
  27. package/dist/chunks/chunk-HAAABGE7.js +2 -0
  28. package/dist/chunks/{chunk-JMRW3IGK.js → chunk-IK3MQ4ZJ.js} +2 -2
  29. package/dist/chunks/chunk-IK3MQ4ZJ.js.map +7 -0
  30. package/dist/chunks/{chunk-JOYKGTDE.js → chunk-MCBYBZZJ.js} +2 -2
  31. package/dist/chunks/chunk-NOXHIOIM.js +2 -0
  32. package/dist/chunks/chunk-NOXHIOIM.js.map +7 -0
  33. package/dist/chunks/{chunk-FY7X6253.js → chunk-OGXVDZPS.js} +2 -2
  34. package/dist/chunks/{chunk-FY7X6253.js.map → chunk-OGXVDZPS.js.map} +2 -2
  35. package/dist/chunks/{chunk-3EQNVA3F.js → chunk-OLZZDBQJ.js} +2 -2
  36. package/dist/chunks/{chunk-3EQNVA3F.js.map → chunk-OLZZDBQJ.js.map} +2 -2
  37. package/dist/chunks/{chunk-I6F25EXY.js → chunk-PTOKTIQG.js} +2 -2
  38. package/dist/chunks/{chunk-O5FDMVL3.js → chunk-QWG7NASD.js} +2 -2
  39. package/dist/chunks/chunk-SL4JJJQJ.js +3 -0
  40. package/dist/chunks/chunk-SL4JJJQJ.js.map +7 -0
  41. package/dist/chunks/{chunk-XB5KC2EZ.js → chunk-T2VC3EEL.js} +1 -1
  42. package/dist/chunks/{chunk-XB5KC2EZ.js.map → chunk-T2VC3EEL.js.map} +1 -1
  43. package/dist/chunks/{chunk-2PNGGCQJ.js → chunk-UECOGSWM.js} +2 -2
  44. package/dist/chunks/{chunk-2PNGGCQJ.js.map → chunk-UECOGSWM.js.map} +1 -1
  45. package/dist/chunks/chunk-UHV6XIDG.js +2 -0
  46. package/dist/chunks/chunk-UHV6XIDG.js.map +7 -0
  47. package/dist/chunks/{chunk-5RHNR3TH.js → chunk-VKZALU57.js} +1 -1
  48. package/dist/chunks/{chunk-5RHNR3TH.js.map → chunk-VKZALU57.js.map} +1 -1
  49. package/dist/chunks/chunk-W7IHIVSE.js +2 -0
  50. package/dist/chunks/{chunk-XWCLYB5C.js.map → chunk-W7IHIVSE.js.map} +4 -4
  51. package/dist/chunks/{chunk-NLS74JSZ.js → chunk-WUOXZAGN.js} +2 -2
  52. package/dist/chunks/{chunk-NLS74JSZ.js.map → chunk-WUOXZAGN.js.map} +1 -1
  53. package/dist/chunks/{renderSvg-YNA5VK6A.js → renderSvg-E5Q7MLCH.js} +2 -2
  54. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +5 -5
  55. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
  56. package/package.json +4 -4
  57. package/src/GraphAddTrackWorkflow/buildTrackConfig.ts +12 -2
  58. package/src/GraphAddTrackWorkflow/graphManifest.ts +16 -9
  59. package/src/GraphGenomeView/components/HoverTooltip.tsx +8 -0
  60. package/src/GraphGenomeView/pane/paneBase.ts +14 -9
  61. package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +94 -41
  62. package/src/RgfaTabixAdapter/configSchema.ts +35 -4
  63. package/src/RgfaTabixAdapter/format2.test.ts +128 -0
  64. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.links.bed.gz +0 -0
  65. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.links.bed.gz.tbi +0 -0
  66. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.segs.bed.gz +0 -0
  67. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.segs.bed.gz.tbi +0 -0
  68. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f2.graph.bed.gz +0 -0
  69. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f2.graph.bed.gz.tbi +0 -0
  70. package/src/RgfaTabixAdapter/test_data/walks5_skip.GRCh38.walks.bed.gz +0 -0
  71. package/src/RgfaTabixAdapter/test_data/walks5_skip.GRCh38.walks.bed.gz.tbi +0 -0
  72. package/src/RgfaTabixAdapter/walkFiles.test.ts +21 -0
  73. package/src/RgfaTabixAdapter/walkReader.ts +20 -15
  74. package/src/graphTrackDefaults/index.ts +2 -2
  75. package/src/locationName.ts +2 -0
  76. package/src/version.ts +1 -1
  77. package/dist/chunks/GbzBaseSyntenyAdapter-EGNUOKB2.js +0 -2
  78. package/dist/chunks/GbzBaseSyntenyAdapter-EGNUOKB2.js.map +0 -7
  79. package/dist/chunks/LinearGraphDisplay-BAEMS5WG.js +0 -2
  80. package/dist/chunks/RgfaTabixAdapter-JPTUWO2Z.js +0 -2
  81. package/dist/chunks/RgfaTabixAdapter-JPTUWO2Z.js.map +0 -7
  82. package/dist/chunks/chunk-AH5UWTAV.js +0 -2
  83. package/dist/chunks/chunk-AH5UWTAV.js.map +0 -7
  84. package/dist/chunks/chunk-DG3E6BSX.js +0 -3
  85. package/dist/chunks/chunk-DG3E6BSX.js.map +0 -7
  86. package/dist/chunks/chunk-HLAQQI6G.js +0 -2
  87. package/dist/chunks/chunk-HLAQQI6G.js.map +0 -7
  88. package/dist/chunks/chunk-IKJZPPOA.js +0 -2
  89. package/dist/chunks/chunk-IKJZPPOA.js.map +0 -7
  90. package/dist/chunks/chunk-JMRW3IGK.js.map +0 -7
  91. package/dist/chunks/chunk-Q7QC2EQU.js +0 -2
  92. package/dist/chunks/chunk-RHYBJCA4.js +0 -2
  93. package/dist/chunks/chunk-RHYBJCA4.js.map +0 -7
  94. package/dist/chunks/chunk-X7YIGIYW.js +0 -2
  95. package/dist/chunks/chunk-X7YIGIYW.js.map +0 -7
  96. package/dist/chunks/chunk-XWCLYB5C.js +0 -2
  97. package/dist/chunks/chunk-ZGTG74GE.js +0 -3
  98. package/dist/chunks/chunk-ZGTG74GE.js.map +0 -7
  99. /package/dist/chunks/{AddTrackWorkflow-RJSOQZYQ.js.map → AddTrackWorkflow-7CXTSSMR.js.map} +0 -0
  100. /package/dist/chunks/{GraphGenomeView-667ZUNDI.js.map → GraphGenomeView-2AKRM74B.js.map} +0 -0
  101. /package/dist/chunks/{GraphTrackSettingsDialog-7M3Q635V.js.map → GraphTrackSettingsDialog-7XRZQW6T.js.map} +0 -0
  102. /package/dist/chunks/{HighlightColorDialog-4F34Q4PY.js.map → HighlightColorDialog-LCBGD2ZA.js.map} +0 -0
  103. /package/dist/chunks/{LinearGraphDisplay-BAEMS5WG.js.map → LinearGraphDisplay-WWQ73BO5.js.map} +0 -0
  104. /package/dist/chunks/{MinigraphBubbleAdapter-G25V6MZL.js.map → MinigraphBubbleAdapter-4OOBJ44C.js.map} +0 -0
  105. /package/dist/chunks/{WalkFormsAdapter-PBN7BJZW.js.map → WalkFormsAdapter-LTAKACZD.js.map} +0 -0
  106. /package/dist/chunks/{WalkTabixSyntenyAdapter-27WDE5JF.js.map → WalkTabixSyntenyAdapter-B6V3YNW7.js.map} +0 -0
  107. /package/dist/chunks/{chunk-Q7QC2EQU.js.map → chunk-HAAABGE7.js.map} +0 -0
  108. /package/dist/chunks/{chunk-JOYKGTDE.js.map → chunk-MCBYBZZJ.js.map} +0 -0
  109. /package/dist/chunks/{chunk-I6F25EXY.js.map → chunk-PTOKTIQG.js.map} +0 -0
  110. /package/dist/chunks/{chunk-O5FDMVL3.js.map → chunk-QWG7NASD.js.map} +0 -0
  111. /package/dist/chunks/{renderSvg-YNA5VK6A.js.map → renderSvg-E5Q7MLCH.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.2/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LG2UK4MB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.2/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-7L7MN2OM.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.0.2/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-G72GQNM2.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 abridged: \"abridged: steps not loaded\"\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-LG2UK4MB.js\";\nimport {\n PathVisits\n} from \"./chunk-ZPZ7GNBT.js\";\nimport {\n panSNFields,\n panSNSample\n} from \"./chunk-2JL2JVZ2.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 const steps = w.abridgedSteps?.[p] ?? Number.NaN;\n const abridged = Number.isNaN(steps) ? {} : { abridged: { steps, bp: w.abridgedBp?.[p] ?? 0 } };\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 ...abridged\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 }, traversals) {\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 const node = w.steps[s];\n claim(node, w.reversed[s]);\n if (traversals) {\n traversals[node]++;\n }\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 const ids = tableNodeIds({ nodes: n, links: l, walks: w }, traversals);\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-7L7MN2OM.js\";\nimport {\n gapParts\n} from \"./chunk-LG2UK4MB.js\";\nimport {\n pathOrigin\n} from \"./chunk-3YBP46PB.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/layout/walkRowRuns.ts\nvar RUN_ON_REFERENCE = 1;\nvar RUN_REVERSED = 2;\nvar RUN_GAP = 4;\nvar GAP_CAUSES = [\n void 0,\n \"missing\",\n \"elsewhere\",\n \"unknown\",\n \"abridged\"\n];\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: Int32Array.from(steps),\n lengths: Int32Array.from(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: Int32Array.from(kept, (p) => w.offsets[p]),\n to: Int32Array.from(kept, (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(a, b, c, d, e) {\n const v = this.values;\n v[0].push(a);\n v[1].push(b);\n v[2].push(c);\n v[3].push(d);\n if (e !== void 0) {\n v[4].push(e);\n }\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 offsets = new Uint32Array(order.length + 1);\n order.forEach((row, i) => {\n offsets[i + 1] = offsets[i] + this.offsets[row + 1] - this.offsets[row];\n });\n const columns = make.map((m, c) => {\n const from = this.values[c];\n const out = m(this.length);\n let at = 0;\n for (const row of order) {\n for (let k = this.offsets[row]; k < this.offsets[row + 1]; k++) {\n out[at++] = from[k];\n }\n }\n return out;\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 const revisits = /* @__PURE__ */ new Map();\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], stop = to[piece]; s < stop; s++) {\n const node = all[s];\n const len = lengthOf(node);\n if (!Number.isNaN(spanStart[node])) {\n const starts = revisits.get(node);\n if (starts) {\n starts.push(pos);\n } else {\n revisits.set(node, [spanStart[node], pos]);\n }\n } else {\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 let abridgedSteps = 0;\n for (const piece of ordered) {\n count += to[piece] - from[piece] + (heads[piece].abridged ? 1 : 0);\n abridgedSteps += heads[piece].abridged?.steps ?? 0;\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 let owed = 0;\n for (const piece of ordered) {\n const start2 = startOf(piece);\n const jump = start2 === void 0 || end === void 0 ? 0 : start2 - end;\n if (start2 === void 0 || jump < 0) {\n unplaced = true;\n }\n if (jump < 0 && heads[previous].abridged) {\n owed -= jump;\n }\n const covered = Math.min(owed, Math.max(jump, 0));\n owed -= covered;\n const gap = jump - covered;\n if (gap > 0) {\n partsAt.set(\n length,\n gapParts(\n gap,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -gap;\n stepStart[length++] = end;\n }\n let pos = start2 ?? 0;\n const abridged = heads[piece].abridged;\n for (let s = from[piece], stop2 = to[piece]; s < stop2; s++) {\n const node = all[s];\n const bp3 = abridged ? abridged.bp - (pos - (start2 ?? 0)) - lengthOf(node) : 0;\n if (bp3 > 0 && s === stop2 - 1 && s > from[piece]) {\n partsAt.set(length, [{ bp: bp3, cause: \"abridged\" }]);\n steps[length] = -bp3;\n stepStart[length++] = pos;\n pos += bp3;\n }\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 const id = steps[i];\n if (id >= 0 && !Number.isNaN(spanStart[id])) {\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 let cursor = Number.NaN;\n const placeOf = (id) => {\n const starts = revisits.get(id);\n if (!starts || Number.isNaN(cursor)) {\n return spanStart[id];\n }\n const len = lengthOf(id);\n let best = starts[0];\n let bestGap = Infinity;\n for (const start2 of starts) {\n const gap = Math.min(\n Math.abs(start2 - cursor),\n Math.abs(start2 + len - cursor)\n );\n if (gap < bestGap) {\n best = start2;\n bestGap = gap;\n }\n }\n return best;\n };\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 = placeOf(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 && at + len === 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 cursor = step < 0 ? at : at + len;\n } else {\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 ...abridgedSteps > 0 ? { abridgedSteps } : {}\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 const metas = [referenceRow, ...rows.map((r) => r.meta)];\n if (new Set(metas.map((m) => m.label)).size < metas.length) {\n for (const meta of metas) {\n meta.label = panSNHaplotype(meta.name) ?? meta.label;\n }\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 & 7];\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", "steps", "abridged", "stopFields", "stopAt", "namesByList", "lists", "names", "listCount", "pathNames", "starts", "list", "i", "fill", "grouped", "listed", "_", "out", "k", "tableNodeIds", "n", "l", "traversals", "canonical", "claim", "node", "reversed", "stepCount", "s", "segment", "graphFromTables", "count", "declared", "drawnWalks", "ids", "nodes", "ref", "edges", "neighbours", "pairList", "b", "near", "j", "addPair", "edgeLists", "a", "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", "a", "b", "c", "d", "e", "v", "order", "make", "offsets", "row", "columns", "m", "out", "at", "float64", "walkRowRuns", "source", "region", "o", "all", "reference", "declared", "lengthOf", "nameOf", "startOf", "byStart", "pieceIds", "_", "referencePieces", "first", "others", "walks", "groupBy", "spanStart", "spanEnd", "revisits", "reachesBefore", "reachesAfter", "cut", "piece", "pos", "s", "stop", "len", "starts", "flanked", "runs", "chunks", "chunkIndex", "chunkOf", "chunk2", "key", "stepStart", "rowOf", "pieces", "head", "ordered", "count", "abridgedSteps", "length", "unplaced", "end", "previous", "partsAt", "owed", "start2", "jump", "covered", "gap", "gapParts", "abridged", "stop2", "bp3", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "bestEnd", "bestStart", "inside", "contig", "panSNContig", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "cursor", "placeOf", "best", "bestGap", "runBp", "runRef", "runFlags", "k", "parts", "part", "on", "placed", "back", "referenceRow", "rows", "metas", "r", "meta", "panSNHaplotype", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit"]
7
- }
@@ -1,2 +0,0 @@
1
- import{G as Qn,H as Zn,I as mn,J as pn,S as to,U as tn,V as gn,Y as no,Z as oo,d as Kn,e as Un,f as Yn,g as dn,i as qn,j as Vn,k as zn,l as jn,m as Yt,z as Jn}from"./chunk-2V75YPTT.js";import{a as Kt,g as Ut}from"./chunk-JMRW3IGK.js";var Rt=2,io=1.5,qo=4,eo=12,Vo=64,so=24,zo=48,ro="a thread per pass through a node",yn=t=>t.length>1&&t.some(n=>n.mostPasses>1),lo=t=>t*Rt+Math.max(0,t-1)*io,ao=t=>t.reduce((n,e)=>n+e,0);function fo(t,n,e){let o=t.map((a,c)=>n[c]>1?lo(a):e*Math.min(1,a)),s=0,r=t.map(a=>{let c=Math.min(1,a),i=qo*c*s;return s=Math.max(s,c),i});return{widths:o,gaps:r,band:ao(o)+ao(r)}}var xn=Rt+io;function qt(t,n,e=t){let{widths:o,gaps:s,band:r}=fo(t,n,Rt),a=-r/2;return o.map((c,i)=>{a+=s[i];let f=n[i]>1?Math.max(0,c-lo(e[i])):0,l=a+f/2+Rt/2;return a+=c,l})}var en=t=>fo(t,t,Rt).band,sn=t=>Math.min(1,zo/(en(t)||1)),is=t=>sn(t.map(n=>n.mostPasses))<1?`${ro}, thinned to fit`:ro;function wn(t,n,e){let o=({normal:c,offsetX:i})=>({dx:c.nx*i,dy:c.ny*i}),{dx:s,dy:r}=Un(o(t),o(n),e),a=Math.hypot(s,r);return a>0?{normal:{nx:s/a,ny:r/a},offsetX:a}:{normal:{nx:0,ny:0},offsetX:0}}function nn(t,n){let e=t.stepOf[n],o=n-t.starts[e];return t.forward[e]?o:t.starts[e+1]-t.starts[e]-1-o}var Ft=(t,n)=>{let e=n.x-t.x,o=n.y-t.y;return Math.sqrt(e*e+o*o)};function Lt(t){let n=new Float64Array(t.length);for(let e=1;e<t.length;e++)n[e]=n[e-1]+Ft(t[e-1],t[e]);return n}function Mn(t,n){let e=new Set;return t.map(o=>{let s=new Map;return o.map(r=>r.map(a=>{let c=s.get(a)??0;s.set(a,c+1);let i=n[a],f=!!i?.length&&!e.has(a);return f&&e.add(a),{id:a,visit:c,owned:f,segments:i}}))})}function jo(t,n,e){let o=[];return t.forEach((s,r)=>{let a=0;for(let M of s)for(let{segments:A}of M)a+=A?.length??0;let c=new Float64Array(a),i=new Float64Array(a),f=0,l=0,h=u();function u(){return{walk:r,ids:[],visits:[],forward:[],owned:[],starts:[0]}}let m=()=>{if(h.ids.length){let M=new Int32Array(f-l);for(let A=0;A<h.ids.length;A++)M.fill(A,h.starts[A],h.starts[A+1]);o.push({...h,xs:c.subarray(l,f),ys:i.subarray(l,f),stepOf:M})}h=u(),l=f},w=(M,A,R)=>{let N=R.x-M,k=R.y*n-A;return Math.sqrt(N*N+k*k)};for(let M of s)M.forEach(({id:A,visit:R,owned:N,segments:k},W)=>{if(!k?.length){m();return}let F=k[0],S=k.at(-1),b;if(f>l){let g=c[f-1],E=i[f-1],x=w(g,E,F),C=w(g,E,S);b=x<=C,Math.min(x,C)>e&&m()}else{let g=M[W+1]?.segments,E=x=>g?.length?Math.min(w(x.x,x.y*n,g[0]),w(x.x,x.y*n,g.at(-1))):0;b=E(S)<=E(F)}h.ids.push(A),h.visits.push(R),h.forward.push(b),h.owned.push(N);for(let g=0;g<k.length;g++){let E=k[b?g:k.length-1-g];c[f]=E.x,i[f]=E.y*n,f++}h.starts.push(f-l)}),m()}),o}function An(t,n,e){let o=[];for(let s=0;s<n.length;s++){if(!n[s])continue;let r=s;for(;r+1<n.length&&n[r+1];)r++;let a=o.at(-1),c=a?a[1]:0,i=s;for(;i>c&&t[s]-t[i-1]<=e;)i--;let f=r;for(;f+1<t.length&&t[f+1]-t[r]<=e;)f++;a&&i<=a[1]+1?a[1]=f:o.push([i,f]),s=r}return o}function Jo(t,n){let e=Lt(t),o=e.at(-1),s=(c,i)=>{let f=t[i],l=t[Math.min(i+1,t.length-1)],h=e[Math.min(i+1,t.length-1)]-e[i],u=h>0?(c-e[i])/h:0;return{x:f.x+(l.x-f.x)*u,y:f.y+(l.y-f.y)*u}},r=0,a=0;return t.map((c,i)=>{let f=Math.max(0,e[i]-n/2),l=Math.min(o,e[i]+n/2);for(;r<t.length-1&&e[r+1]<=f;)r++;for(;a<t.length-1&&e[a+1]<=l;)a++;let h=s(f,r),u=s(l,a),m=Ft(h,u);return m>0?{nx:-(u.y-h.y)/m,ny:(u.x-h.x)/m}:void 0})}function Qo(t,n,e){let o=Lt(t),s=t.slice(),r=[];o.forEach((c,i)=>{let f=r.at(-1);(f===void 0||c-o[f]>=n/4)&&r.push(i)}),r.at(-1)!==t.length-1&&r.push(t.length-1);let a=0;for(;a<r.length;){let c=r[a],i=-1;for(let u=a+1;u<r.length&&o[r[u]]-o[c]<=e;u++){let m=r[u];o[m]-o[c]>Math.PI*n&&Ft(t[c],t[m])<=n&&(i=u)}if(i<0){a++;continue}let f=r[i],l=t[c],h=t[f];for(let u=c+1;u<f;u++){let m=(o[u]-o[c])/(o[f]-o[c]);s[u]={...t[u],x:l.x+(h.x-l.x)*m,y:l.y+(h.y-l.y)*m}}a=i}return s}function ho(t,n){let e=t.length,o=Lt(t),s=o[e-1],r=new Float64Array(e+1),a=new Float64Array(e+1),c=new Float64Array(e+1);for(let h=0;h<e;h++){let u=t[h],m=(o[Math.min(h+1,e-1)]-o[Math.max(h-1,0)])/2;r[h+1]=r[h]+m,a[h+1]=a[h]+m*u.x,c[h+1]=c[h]+m*u.y}let i=new Array(e),f=0,l=0;for(let h=0;h<e;h++){let u=t[h],m=Math.min(n,o[h],s-o[h]),w=o[h]-m,M=o[h]+m+1e-9*(1+s);for(;f<e&&o[f]<w;)f++;for(;l<e&&o[l]<M;)l++;let A=r[l]-r[f];i[h]=A>0?{x:(a[l]-a[f])/A,y:(c[l]-c[f])/A}:{x:u.x,y:u.y}}return i}function co(t,n){let e=t.length,o=Lt(t),s=o[e-1],r=new Uint8Array(e),a=(f,l)=>{let h=t[f],u=t[f+1];if(!u)return h;let m=o[f+1]-o[f],w=m>0?(l-o[f])/m:0;return{x:h.x+(u.x-h.x)*w,y:h.y+(u.y-h.y)*w}},c=0,i=0;for(let f=0;f<e;f++){if(o[f]<n||s-o[f]<n)continue;for(;c+1<e&&o[c+1]<=o[f]-n;)c++;for(;i+1<e&&o[i+1]<=o[f]+n;)i++;let l=t[f],h=a(c,o[f]-n),u=a(i,o[f]+n),m=Math.abs((u.x-h.x)*(l.y-h.y)-(u.y-h.y)*(l.x-h.x));r[f]=m>0&&Ft(h,u)*Ft(h,l)*Ft(l,u)/(2*m)<n?1:0}return{tight:r,s:o}}function Zo(t,n){let e=t.slice(),{tight:o,s}=co(e,n),r=An(s,Array.from(o,a=>a>0),3*n);for(let a=0;a<8&&r.length;a++)r=r.filter(([c,i])=>{let f=e.slice(c,i+1),l=co(f,n);if(!l.tight.includes(1))return!1;let h=on(l.s,l.tight,n),u=ho(f,n);for(let m=0;m<f.length;m++){let w=Math.min(1,3*h[m]);if(w>0){let M=f[m],A=u[m];e[c+m]={x:M.x+(A.x-M.x)*w,y:M.y+(A.y-M.y)*w}}}return!0});return e}function te(t,n,e,o,s,r){let a=n.length,c=new Float64Array(a),i=0,f=0,l=0,h=0,u=0;for(let m=0;m<a;m++){for(;i<a&&t[i]-t[m]<=r;){let w=e(i),M=n[i];c[i]=w&&M?w.nx*M.nx+w.ny*M.ny:0,l+=c[i],i++}for(;t[m]-t[f]>r;)l-=c[f++];if(Math.abs(l)>1e-9&&(h=l<0?-1:1),!!h)for(;u<=m;u++)s(u,h)}if(u<a){let m=0;for(let w=0;w<a;w++)m+=o(w)?1:-1;for(;u<a;u++)s(u,m<0?-1:1)}}function ne(t,n,e,o,s=!0){let r=Math.max(e,2*o),a=Math.PI*o,c=s?a+3*o+r/2:r/2,i=new Map,f=new Map,l=[],h=[],u=w=>({normals:new Array(w),shifts:s?new Array(w):[]}),m=(w,M,A,R)=>{let N=i.get(w);N||(N=[],i.set(w,N)),(N[M]??=[])[A]=R};return t.forEach((w,M)=>{let{walk:A,ids:R,visits:N,owned:k,starts:W,xs:F,ys:S,stepOf:b}=w,g=R.length,E=F.length,x=new Array(g);for(let d=0;d<g;d++)k[d]&&(x[d]=u(W[d+1]-W[d]),f.set(R[d],{run:M,step:d,frame:x[d]}),m(R[d],A,N[d],x[d]));let C=new Float64Array(E);for(let d=1;d<E;d++){let I=F[d]-F[d-1],P=S[d]-S[d-1];C[d]=C[d-1]+Math.sqrt(I*I+P*P)}let Z=C[E-1],D=new Int32Array(g).fill(-1),G=new Int32Array(g),q=new Array(g);for(let d=0;d<g;d++){let I=k[d]?void 0:f.get(R[d]);I&&(D[d]=I.run,G[d]=I.step,q[d]=I.frame)}let st=new Int32Array(g),it=new Int32Array(g);for(let d=0;d+1<g;d++){let P=D[d]>=0&&D[d+1]===D[d]?G[d+1]-G[d]:0;st[d+1]=st[d]+(P===1?1:0),it[d+1]=it[d]+(P===-1?1:0)}let ot=new Array(g),_=0,L=0;for(let d=0;d<g;d++){if(!s){ot[d]=!k[d];continue}let I=C[W[d]]-c,P=C[W[d+1]-1]+c;for(;C[_]<I;)_++;for(;L+1<E&&C[L+1]<=P;)L++;let j=b[Math.max(0,_-1)],at=b[Math.min(E-1,L+1)],H=at-j,ft=st[at]-st[j],wt=it[at]-it[j];ot[d]=!k[d]&&I>=0&&P<=Z&&H>0&&(ft===H||wt===H)}for(let d=0;d<g;d++){if(k[d])continue;let I=q[d];x[d]=!s&&ot[d]?I:ot[d]?{normals:I.normals,shifts:I.shifts}:u(I.normals.length),m(R[d],A,N[d],x[d])}h.push(x);let V=new Array(E);for(let d=0;d<E;d++)V[d]=!ot[b[d]];for(let[d,I]of An(C,V,c)){let P=[];for(let H=d;H<=I;H++)P.push({x:F[H],y:S[H]});let j=s?Zo(ho(Qo(P,o/2,a),o/2),o/2):P,at=Jo(j,r);te(Lt(j),at,H=>{let ft=b[d+H];return(k[ft]?x[ft]:q[ft])?.normals[nn(w,d+H)]},H=>w.forward[b[d+H]],(H,ft)=>{let wt=d+H,Dt=b[wt];if(ot[Dt])return;let Wt=nn(w,wt),Tt=at[H];x[Dt].normals[Wt]=Tt&&(ft>0?Tt:{nx:-Tt.nx,ny:-Tt.ny}),s&&(x[Dt].shifts[Wt]={dx:j[H].x-P[H].x,dy:(j[H].y-P[H].y)/n})},r)}if(!s){l.push(C);return}let rt=new Float64Array(E),X=0,z=0;for(let d=0;d<E;d++){let I=x[b[d]].shifts[nn(w,d)],P=F[d]+(I?.dx??0),j=S[d]+(I?.dy??0)*n;rt[d]=d?rt[d-1]+Math.sqrt((P-X)**2+(j-z)**2):0,X=P,z=j}l.push(rt)}),{frames:i,arcs:l,stepFrames:h}}function uo(t,n,e,o){let s=new Array(n.length),r=[],a=0,c=0;for(let i=0;i<n.length;i++){for(;c<n.length&&t[c]-t[i]<=e;){for(;r.length>a&&o*n[r.at(-1)]<=o*n[c];)r.pop();r.push(c++)}for(;t[i]-t[r[a]]>e;)a++;s[i]=n[r[a]]}return s}function on(t,n,e,o=()=>!0){let s=n.length,r=new Float64Array(s+1),a=new Float64Array(s+1);for(let l=0;l<s;l++){let h=o(n[l])?s>1?(t[Math.min(l+1,s-1)]-t[Math.max(l-1,0)])/2:1:0;r[l+1]=r[l]+h,a[l+1]=a[l]+h*n[l]}let c=new Float64Array(s),i=0,f=0;for(let l=0;l<s;l++){for(;t[l]-t[i]>e;)i++;for(;f<s&&t[f]-t[l]<=e;)f++;let h=r[f]-r[i];c[l]=h>0?(a[f]-a[i])/h:n[l]}return c}var oe=[0];function ee(t){for(let n of t.values())if(n>1)return!0;return!1}function se(t,n,e,o,s){if(!ee(n))return{span:n,nodeThreads:new Map,threadPasses:new Map,threadAt:new Map,linkThreads:new Map};let r=new Map,a=[],c=[],i=[],f=[],l=[],h=[],u=[];for(let S of t){let b=[],g=[];for(let _ of S){let L=r.get(_);L===void 0&&(L=a.length,r.set(_,L),a.push(_),c.push(0),i.push(0)),g.push(L);let V=e[_],rt=V?.[Math.floor(V.length/2)];b.push(rt?{x:rt.x,y:rt.y*o}:b.at(-1)??{x:0,y:0})}let E=Lt(b),x=S.map(_=>n.get(_)??1),C=uo(E,x,s/2,1),Z=g.map(_=>++i[_]),D=S.length,G=new Int32Array(D),q=-1;for(let _=0;_<D;_++)q=x[_]===C[_]?_:q,G[_]=q;let st=new Int32Array(D);q=-1;for(let _=D-1;_>=0;_--)q=x[_]===C[_]?_:q,st[_]=q;let it=new Array(D),ot=new Array(D).fill(NaN);for(let _=0;_<D;_++){let L=G[_],V=st[_],rt=L<0?V:V<0||E[_]-E[L]<=E[V]-E[_]?L:V,X=z=>Math.min(Z[z],C[_])-1;if(it[_]=X(rt),x[_]===1&&L>=0&&V>=0&&X(V)!==X(L)){let z=(E[_]-E[L])/(E[V]-E[L]||1);ot[_]=X(L)+(X(V)-X(L))*z}c[g[_]]=Math.max(c[g[_]],C[_])}f.push(g),l.push(Z),h.push(it),u.push(ot)}let m=[],w=[],M=(S,b)=>{let g=c[S],E=m[S]??=new Set;for(let x=0;x<g;x++)for(let C of[b-x,b+x])if(C>=0&&C<g&&!E.has(C))return C;return b},A=[];f.forEach((S,b)=>{S.forEach((g,E)=>{if(c[g]>1){let x=u[b][E],C=M(g,Number.isNaN(x)?h[b][E]:Math.round(x));m[g].add(C),(w[g]??=[])[l[b][E]]=C,Number.isNaN(x)||((A[g]??=[])[C]=x)}})});let R=new Map,N=new Map,k=new Map,W=new Map;a.forEach((S,b)=>{A[b]&&W.set(S,A[b]),R.set(S,c[b]),N.set(S,m[b]?[...m[b]].sort((E,x)=>E-x):oe);let g=[];w[b]?.forEach((E,x)=>{g[E]=x-1}),k.set(S,g)});let F=new Map;return f.forEach((S,b)=>{let g=l[b];for(let E=1;E<S.length;E++){let x=S[E-1],C=S[E],Z=[w[x]?.[g[E-1]]??0,w[C]?.[g[E]]??0],D=F.get(a[x]);D||(D=new Map,F.set(a[x],D));let G=D.get(a[C]);G?G.some(([q,st])=>q===Z[0]&&st===Z[1])||G.push(Z):D.set(a[C],[Z])}}),{span:R,nodeThreads:N,threadPasses:k,threadAt:W,linkThreads:F}}function re(t,n,e,{reach:o,taper:s}){let r=new Map;return t.forEach((a,c)=>{let i=n[c],f=a.ids.map((l,h)=>{let u=a.starts[h+1]-a.starts[h],m=Math.floor(u/2);return i[a.starts[h]+(a.forward[h]?m:u-1-m)]});for(let[l,h]of An(f,a.owned,o/2+s/2)){let u=f.slice(l,h+1),m=a.ids.slice(l,h+1),w=e.map(M=>{let A=m.map(R=>M.get(R)??0);return A.every(R=>R===A[0])?{slot:A,held:A}:{slot:on(u,uo(u,A,o/2,1),s/2),held:on(u,A,s/2,R=>R>0)}});m.forEach((M,A)=>{a.owned[l+A]&&r.set(M,{slot:w.map(R=>R.slot[A]),held:w.map(R=>R.held[A])})})}}),r}function ae(t,n,e,o,s,r,a){let c=qt(s,s),i=new Map,f=l=>{let h=i.get(l);if(!h){let u=o.get(l);h=u?qt(u.slot,s,u.held):c,i.set(l,h)}return h};t.forEach((l,h)=>{let{walk:u,ids:m,visits:w,starts:M}=l,{threadPasses:A,threadAt:R}=r[u],N=new Float64Array(l.xs.length);m.forEach((W,F)=>{let S=Math.max(0,A.get(W)?.indexOf(w[F])??0),b=R.get(W)?.[S]??S;N.fill(f(W)[u]+b*xn,M[F],M[F+1])});let k=on(e[h],N,a);n[h].forEach((W,F)=>{let S=M[F],b=M[F+1],g=!0;for(let x=S+1;g&&x<b;x++)g=Math.abs(k[x]-k[S])<1e-9;if(g){W.offset=k[S];return}let E=new Array(b-S);for(let x=S;x<b;x++)E[nn(l,x)]=k[x];W.offsets=E})})}function mo(t,n,e,o,s=Mn(t.map(r=>r.route),n)){let r=yn(t),a=t.map(M=>M.mostPasses),c=Vo*o,i=jo(s,e,eo*o),f=en(a)*(r?sn(a):1)*o,l=ne(i,e,eo*o,f,r),h=r?t.map(M=>se(M.route,M.passes,n,e,c)):void 0,u=h?re(i,l.arcs,h.map(M=>M.span),{reach:c,taper:so*o}):void 0;u&&h&&ae(i,l.stepFrames,l.arcs,u,a,h,so/2*o);let m={dx:0,dy:0},w=new Set;for(let M of l.frames.values())for(let{shifts:A}of M.flat())if(!w.has(A)){w.add(A);for(let R of A)m.dx=Math.max(m.dx,Math.abs(R?.dx??0)),m.dy=Math.max(m.dy,Math.abs(R?.dy??0))}return{lines:l,threads:h,spans:u,furthestShift:m}}function Y(t,n,e,o){return(o<<24|e<<16|n<<8|t)>>>0}function En(t){return t&255}function vn(t){return t>>>8&255}function bn(t){return t>>>16&255}function _n(t){return t>>>24&255}function po(t){return`rgba(${En(t)},${vn(t)},${bn(t)},${_n(t)/255})`}function fs(t,n){return`rgba(${Math.round(t[0]*255)},${Math.round(t[1]*255)},${Math.round(t[2]*255)},${n})`}function Ht(t,n){return Y(En(t),vn(t),bn(t),Math.round(_n(t)*n))}function hs(t,n){let e=Math.max(0,1-1/n),o=s=>Math.round(s+(255-s)*e);return Y(o(En(t)),o(vn(t)),o(bn(t)),_n(t))}var go=300,Vt=.7,zt=.5;function ce(t){return`hsl(${t}, ${Vt*100}%, ${zt*100}%)`}function jt(t){return Math.max(0,Math.min(1,t))*go}function Rn(t,n){return jt((t-n.start)/(n.end-n.start))}var ie=30;function ds({start:t,bp:n,reversed:e},o){let s=Rn(t,o),r=Rn(t+n,o);if(r-s<1)return[(s+r)/2];let a=Math.ceil((r-s)/ie);return Array.from({length:a+1},(c,i)=>Rn(t+n*(e?a-i:i)/a,o))}var le=Array.from({length:7},(t,n)=>({offset:n/6,color:ce(n/6*go)})),ms=`linear-gradient(to right, ${le.map(t=>`${t.color} ${t.offset*100}%`).join(", ")})`;var fe=Yt();function yo(t,n,e,o,s,r,a=!1){return fe(t,[n,e.scaleX,e.scaleY,o,r,a,s],()=>{let c=new Map;for(let i=0;i<n.edges.length;i++){let f=o?.get(i),l=Jn(t,n.edges[i],e,f,f&&r?.[i],a);l&&c.set(i,l)}return c})}var he=4;function ue(t){let n=new Map;for(let e of t.edges)Kt(n,e.from,e.to),Kt(n,e.to,e.from);return n}function de({nodeId:t,nodeById:n,neighbors:e}){let o=new Set([t]),s=[t],r=1/0,a=-1/0;for(let c=0;c<he&&s.length>0;c++){let i=[];for(let f of s){let l=e.get(f);if(l){for(let h of l)if(!o.has(h)){o.add(h);let u=n.get(h);u&&Ut(u)?(r=Math.min(r,u.stable.start+u.length),a=Math.max(a,u.stable.start)):i.push(h)}}}s=i}return r===1/0?void 0:{start:Math.min(r,a),end:Math.max(r,a)}}function me({nodeId:t,nodeById:n,neighbors:e}){let o=n.get(t);return o===void 0?void 0:Ut(o)?{start:o.stable.start,end:o.stable.start+o.length}:de({nodeId:t,nodeById:n,neighbors:e})}function xo(t){let n=new Map(t.nodes.map(s=>[s.id,s])),e=ue(t),o=new Map;for(let s of t.nodes){let r=me({nodeId:s.id,nodeById:n,neighbors:e});r&&o.set(s.id,(r.start+r.end)/2)}return o}var pe=Y(119,119,119,217),wo=Y(136,136,136,217),ge=Y(24,24,28,240),Mo=2.2,Io=Y(160,160,160,255),Jt=.18,Ps=po(Ht(Io,Jt)),ye=11,xe=1.2,we=1e-6,Me=7,Ae=3,Ee=3,ve=1.5,Ao=3,be=.5,_e=.45,Sn=12,Re=1e-6,xt=new Float64Array(64),St=new Float64Array(64),Ct=new Float64Array(64);function Se(t,n,e,o){let s=t.length*Sn+1;xt.length<s&&(xt=new Float64Array(s),St=new Float64Array(s),Ct=new Float64Array(s));let r=t[t.length-1];xt[0]=r.x1,St[0]=r.y1,Ct[0]=0;let a=1,c=0;for(let i=t.length-1;i>=0&&c<o;i--){let f=t[i];for(let l=1;l<=Sn&&c<o;l++){let h=1-(l/Sn)**2,u=1-h,m=u*u*u,w=3*u*u*h,M=3*u*h*h,A=h*h*h,R=m*f.x0+w*f.cx0+M*f.cx1+A*f.x1,N=m*f.y0+w*f.cy0+M*f.cy1+A*f.y1;c+=Math.hypot(R-xt[a-1],(N-St[a-1])*e)*n,xt[a]=R,St[a]=N,Ct[a]=c,a++}}return a}function Eo(t,n){let e=1;for(;e<t-1&&Ct[e]<n;)e++;let o=Ct[e-1],s=Ct[e],r=s>o?Math.min(1,Math.max(0,(n-o)/(s-o))):0;return{x:xt[e-1]+(xt[e]-xt[e-1])*r,y:St[e-1]+(St[e]-St[e-1])*r}}function Ce({curves:t,edgeHalfWidth:n,nodeHalfWidth:e,scale:o,yToX:s,color:r,fromSegments:a,toSegments:c}){let i=Me+Ae*n,f=Se(t,o,s,e+Ao*i),l=Ct[f-1],h=l<Re,u=Math.min(e,l),m=h?Math.min(1,jn(a,o,o*s)/i):1;if(h?m<be:l<Ao*i)return;let w=Eo(f,u),M=Eo(f,u+i*m),A=w.x-M.x,R=(w.y-M.y)*s,N=t[t.length-1];return{x:w.x,y:w.y,angle:Math.hypot(A,R)>0?Math.atan2(R,A):Ge(N,s,ke(N,c)),length:i*m,halfWidth:(Ee+ve*n)*m,color:r}}var vo=[[0,0]],Te=[0],bo={dx:0,dy:0};function No(t,n,e){let o=s=>Math.hypot(s.x-t.x,(s.y-t.y)*e);return o(n[0])<o(n.at(-1))}function Oe(t,n,e,o,s){return o?qn(t).from==="start":No({x:e.x0,y:e.y0},n,s)}function ke(t,n){if(n.length<2)return;let e=n[0],o=n[n.length-1];return Math.hypot(t.x1-e.x,t.y1-e.y)<=Math.hypot(t.x1-o.x,t.y1-o.y)?{from:e,to:n[1]}:{from:o,to:n[n.length-2]}}function _o(t,n){if(!t||!n)return;let e=n.x-t.x,o=n.y-t.y,s=Math.hypot(e,o);return s>0?{nx:-o/s,ny:e/s}:void 0}var Po=.1,Ie=1/Math.sqrt(Po);function Ro(t,n=1){let e=n===1?t:t.map(o=>({x:o.x,y:o.y*n}));return e.map((o,s)=>{let r=_o(e[s-1],o),a=_o(o,e[s+1]);if(r&&a){let c=(r.nx+a.nx)/2,i=(r.ny+a.ny)/2,f=r.nx*c+r.ny*i;return f>Po?{nx:c/f,ny:i/f}:{nx:c,ny:i}}return r??a??{nx:0,ny:0}})}function So(t,n,e,o=1){let s=new Array(t.length);for(let r=0;r<t.length;r++){let a=typeof e=="number"?e:e[r];s[r]={x:t[r].x+n[r].nx*a,y:t[r].y+n[r].ny*a/o}}return s}function Tn(t,n,e){let o=(1-Math.abs(2*e-1))*n,s=o*(1-Math.abs(t/60%2-1)),r=e-o/2,a=0,c=0,i=0;return t<60?(a=o,c=s):t<120?(a=s,c=o):t<180?(c=o,i=s):t<240?(c=s,i=o):t<300?(a=s,i=o):(a=o,i=s),[a+r,c+r,i+r]}function rn(t,n,e,o=1){let[s,r,a]=Tn(t,n,e);return Y(Math.round(s*255),Math.round(r*255),Math.round(a*255),Math.round(o*255))}var Ne=[[68,1,84],[59,82,139],[33,145,140],[94,201,98],[253,231,37]],Pe=[[237,137,44],[158,42,122]],Fe=[[220,50,50],[50,120,220]];function Cn(t,n){let e=Math.max(0,Math.min(1,n))*(t.length-1),o=Math.min(t.length-2,Math.floor(e)),s=e-o,r=t[o],a=t[o+1];return Y(Math.round(r[0]+(a[0]-r[0])*s),Math.round(r[1]+(a[1]-r[1])*s),Math.round(r[2]+(a[2]-r[2])*s),255)}function Le(t,n){return rn(Qn(t),mn,pn,n)}var Fo=[60,65,72],On=Y(...Fo,255),Fs=`rgb(${Fo.join(", ")})`;function He(t,n){let e=n.midpoints.get(t.id);return Ut(t)&&e!==void 0?(e-n.start)/n.span:void 0}function Ls(t,n){let e=xo(t);if(n&&n.end>n.start)return{start:n.start,span:n.end-n.start,midpoints:e};let o=1/0,s=-1/0;for(let r of e.values())o=Math.min(o,r),s=Math.max(s,r);return{start:o===1/0?0:o,span:s>o?s-o:1,midpoints:e}}function De(t,n){let e=1/0,o=-1/0,s=1/0,r=-1/0,a=0;for(let c of t.nodes)c.stable!==void 0&&c.stable.rank>a&&(a=c.stable.rank),c.depth<e&&(e=c.depth),c.depth>o&&(o=c.depth),c.length<s&&(s=c.length),c.length>r&&(r=c.length);return{minDepth:e,maxDepth:o,minLength:s,maxLength:r,maxRank:a,nodeCount:t.nodes.length,referenceRamp:n}}function We(t,n,e,o){switch(e){case"random":return Le(t.id,1);case"depth":return Cn(Ne,o.maxDepth>o.minDepth?(t.depth-o.minDepth)/(o.maxDepth-o.minDepth):.5);case"node-length":return Cn(Fe,o.maxLength>o.minLength?(t.length-o.minLength)/(o.maxLength-o.minLength):.5);case"stable-rank":return t.stable===void 0?Y(160,160,160,255):t.stable.rank===0?Y(52,152,219,255):Cn(Pe,o.maxRank>1?(t.stable.rank-1)/(o.maxRank-1):0);case"reference-position":{let s=o.referenceRamp;if(s===void 0)return Y(160,160,160,255);let r=He(t,s);return r===void 0?On:rn(jt(r),Vt,zt)}case"grey":return Y(160,160,160,255);case"rainbow":{let s=o.nodeCount>1?n/o.nodeCount*360:0;return rn(s,.75,.5)}default:return Y(52,152,219,255)}}function Ge(t,n=1,e){let o=[[t.cx1,t.cy1],[t.cx0,t.cy0],[t.x0,t.y0]];for(let[s,r]of o){let a=t.x1-s,c=(t.y1-r)*n;if(Math.hypot(a,c)>0)return Math.atan2(c,a)}return e?Math.atan2((e.to.y-e.from.y)*n,e.to.x-e.from.x):0}function Xe(t,n){let e=!1;for(let o=0;o<t.length-1&&!e;o++){let s=t[o],r=t[o+1];e=Math.max(s.x,r.x)>=n.minX&&Math.min(s.x,r.x)<=n.maxX&&Math.max(s.y,r.y)>=n.minY&&Math.min(s.y,r.y)<=n.maxY}return e}function Co(t,n,e=0,o=0){for(let s of t){let r=Math.min(s.x0,s.cx0,s.cx1,s.x1),a=Math.max(s.x0,s.cx0,s.cx1,s.x1),c=Math.min(s.y0,s.cy0,s.cy1,s.y1),i=Math.max(s.y0,s.cy0,s.cy1,s.y1);if(a>=n.minX-e&&r<=n.maxX+e&&i>=n.minY-o&&c<=n.maxY+o)return!0}return!1}var To=new WeakMap;function Be(t){let n=To.get(t);if(!n){let e=[],o=new Map,s=t.paths??[];for(let r=0;r<s.length;r++)e.push(rn(Zn(r,s.length),mn,pn,.85)),o.has(s[r].name)||o.set(s[r].name,r);n={pathColorByIndex:e,pathIndexByName:o},To.set(t,n)}return n}var Oo=new WeakMap,$e=new Map;function Ke(t){let n=Oo.get(t);if(!n){n=new Map;for(let[e,o]of(t.paths??[]).entries())for(let s of new Set(o.nodeIds))Kt(n,s,e);Oo.set(t,n)}return n}var Ue=Yt(),Ye=Yt(),ko=new WeakMap;function qe(t){let n=ko.get(t);if(!n){n=new Map;for(let{from:e,to:o}of t.edges){let s=n.get(e);s||(s=new Set,n.set(e,s)),s.add(o)}ko.set(t,n)}return n}function Hs(t){let{nodePositions:n,graph:e,nodeById:o,colorScheme:s,contigThickness:r,connectorThickness:a,drawPaths:c,nodeWidth:i="uniform",edgeWidth:f="uniform",highlight:l,axis:h,linearLayout:u,viewportBounds:m,referenceRamp:w,deletions:M,deletionRoutes:A,stranded:R,hiddenEdges:N,version:k=0}=t,W=to(e,i),F=f==="walks"?no(e):0,S=h.scaleX,b=1/Math.max(S,we),g=Vn(h),E=yo(n,e,h,M,k,A,R),x=[],C=new Map,Z=[],D=new Map,G=[],q=new Map,st=De(e,w),it=new Map;if(s==="rainbow")for(let p=0;p<e.nodes.length;p++)it.set(e.nodes[p].id,p);let ot=e.paths?.length??0,{pathColorByIndex:_,pathIndexByName:L}=Be(e),V=p=>_[L.get(p)??-1]??wo,rt=c&&ot>1?Ke(e):$e,X=l?.walks??[],z=yn(X),d=X.map(p=>p.mostPasses),I=z?sn(d):1,P=l&&X.length>1?Ue(l,[n,k,h.scaleX,h.scaleY],()=>mo(X,n,g,b,Ye(l,[n,k],()=>Mn(X.map(p=>p.route),n)))):void 0,j=P?.lines,at=P?.threads,H=P?.spans,ft=z?qt(d,d):[],wt=new Map,Dt=p=>{let y=wt.get(p);if(!y){let v=H?.get(p);y=v?qt(v.slot,d,v.held):ft,wt.set(p,y)}return y},Wt=(p,y,v,T)=>z?(Dt(p)[v]+T*xn)*I:(v-(X.length-1)/2)*y,Tt=(p,y,v)=>{let T=p?.offsets?.[y]??p?.offset;return T===void 0?v:T*I},Ln=p=>z?Rt/2*I:p/2,Hn=new Map,Dn=new WeakMap,Wn=(p,y,v)=>at?.[p]?.threadPasses.get(y)?.[v]??0,cn=(p,y)=>{let v=Hn.get(p);return v||(v=Ro(y,g),Hn.set(p,v)),v},Bo=(p,y,v)=>{if(!v)return cn(p,y);let T=Dn.get(v.normals);return T||(T=cn(p,y).map((O,$)=>v.normals[$]??O),Dn.set(v.normals,T)),T},Gn=new Map,ln=p=>{let y=Gn.get(p);if(y===void 0){let v=o.get(p);y=gn(v?tn(v,r,i,W):r,X.length),Gn.set(p,y)}return y},Xn=(p,y,v,T,O,$)=>{let tt=T?0:v.length-1,K=y?.[O]?.[Wn(O,p,$)],ct=K?.offsets?.[tt]??K?.offset;return{normal:K?.normals[tt]??cn(p,v)[tt]??{nx:0,ny:0},shift:K?.shifts[tt]??bo,offset:ct===void 0?Wt(p,ln(p),O,$):ct*I}},$o=(p,y)=>{if(!m)return!0;let v=z?en(d)*I:(X.length-1)/2*ln(y),T=Ie*v*b;return Co(p,m,T+(P?.furthestShift.dx??0),T/g+(P?.furthestShift.dy??0))},Ko=(p,y,v)=>{let T=at?.[p]?.linkThreads;if(!T?.size)return vo;let O=T.get(y)?.get(v),$=qe(e).get(v)?.has(y)?void 0:T.get(v)?.get(y);if(!$)return O??vo;let tt=$.map(([K,ct])=>[ct,K]);return O?[...O,...tt]:tt},fn=(p,y,v)=>X[p]?.passColors.get(y)?.[at?.[p]?.threadPasses.get(y)?.[v]??0],Bn=new WeakMap,Uo=(p,y)=>{if(!y||!z)return p;let v=Bn.get(y.shifts);if(!v){let{shifts:T}=y;v=p.map((O,$)=>{let{dx:tt,dy:K}=T[$]??bo;return{...O,x:O.x+tt,y:O.y+K}}),Bn.set(y.shifts,v)}return v},Yo=S>(u?1:_e);for(let p=0;p<e.edges.length;p++){let y=e.edges[p],v=n[y.from],T=n[y.to],O=E.get(p);if(!v?.length||!T?.length||!O||N?.has(p))continue;let $=y.pathIds?.length??0,K=M?.get(p)!==void 0,ct=l?.edgeIndexes.has(p)??!1,Gt=a/2*(K?Mo:1),Ot=oo($,F,f),kt=a/2*(K?f==="walks"&&F>0?Math.max(1,Ot):Mo:Ot),ht=c&&$>0,It=K?ge:pe,Mt=!l||ct?It:Ht(It,Jt),pt=o.get(y.to),Xt=(pt?tn(pt,r,i,W):r)/2,U=B=>!m||Co(B,m),Bt=B=>Kn(B,ye/S,g,m),Qt=(B,J,nt)=>{if(!K){G.push({curves:B,thickness:J,color:nt});return}for(let dt of Bt(B))G.push({curves:dt.curves,thickness:J,color:nt})},At=(B,J,nt,dt,vt,yt,bt,et,hn)=>{if(!K){G.push({curves:B,thickness:J,color:nt,walk:dt,pass:vt,normal:yt,offsetX:bt,endNormal:et,endOffsetX:hn});return}let _t={normal:yt,offsetX:bt},Pt={normal:et,offsetX:hn};for(let Q of Bt(B)){let mt=Q.startAlong===0?_t:wn(_t,Pt,Q.startAlong),lt=Q.endAlong===1?Pt:wn(_t,Pt,Q.endAlong);G.push({curves:Q.curves,thickness:J,color:nt,walk:dt,pass:vt,normal:mt.normal,offsetX:mt.offsetX,endNormal:lt.normal,endOffsetX:lt.offsetX})}},Nt=B=>{let J=Yo?Ce({curves:B,edgeHalfWidth:K||ht?a/2:kt,nodeHalfWidth:Xt,scale:S,yToX:g,color:Mt,fromSegments:v,toSegments:T}):void 0;J&&Z.push(J)},gt=G.length,$t=Z.length,Et=l?.walks.length&&ct&&!ht?l.walks:void 0;if(Et&&!$o(O,y.from))continue;if(Et){let B=Oe(y,v,O[0],R,g),J=O.at(-1),nt=No({x:J.x1,y:J.y1},T,g),dt=Et.length===1,vt=Ln(ln(y.from)),yt=j?.frames.get(y.from),bt=j?.frames.get(y.to);for(let et=0;et<Et.length;et++)if(Et[et].edgeIndexes.has(p))for(let[_t,Pt]of Ko(et,y.from,y.to)){let Q=Xn(y.from,yt,v,B,et,_t),mt=z?Xn(y.to,bt,T,nt,et,Pt):Q,lt=dt?0:Q.offset*b,un=z?mt.offset*b:lt,$n=z?Yn(O,Q.shift.dx+Q.normal.nx*lt,Q.shift.dy+Q.normal.ny*lt/g,mt.shift.dx+mt.normal.nx*un,mt.shift.dy+mt.normal.ny*un/g):lt===0?O:dn(O,Q.normal.nx*lt,Q.normal.ny*lt/g);U($n)&&At($n,vt,fn(et,y.from,_t)??fn(et,y.to,Pt)??It,et,_t,Q.normal,lt,mt.normal,un)}G.length>gt&&Nt(O)}else if(!ht)U(O)&&(Qt(O,kt,Mt),Nt(O));else{let B=zn(v,T,$,h),J=Math.floor(($-1)/2);for(let nt=0;nt<$;nt++){let{x:dt,y:vt}=B[nt],yt=dt===0&&vt===0?O:dn(O,dt,vt);if(!U(yt))continue;let bt=V(y.pathIds[nt]);Qt(yt,Gt,l&&(l.walks.length?!l.names.has(y.pathIds[nt]):!ct)?Ht(bt,Jt):bt),nt===J&&Nt(yt)}}let Zt=G.length-gt;Zt>0&&q.set(p,{start:gt,count:Zt});let ut=Z.length-$t;ut>0&&D.set(p,{start:$t,count:ut})}for(let[p,y]of Object.entries(n)){let v=o.get(p);if(!v||m&&!Xe(y,m))continue;let T=l!==void 0&&!l.nodeIds.has(p),O=T?Io:We(v,it.get(p)??0,s,st),$=T?Ht(O,Jt):O,tt=tn(v,r,i,W),K=tt/2,ct=x.length,Gt=rt.get(p),Ot=tt/ot,kt=y.length>=2,ht=l?.walks.length&&!T&&!Gt?.length?l.walks:void 0;if(kt&&ht){let Mt=gn(tt,ht.length),pt=Ln(Mt),Xt=j?.frames.get(p);for(let U=0;U<ht.length;U++){let Bt=ht[U].colors.get(p);if(Bt===void 0)continue;let Qt=at?.[U]?.nodeThreads.get(p)??Te;for(let At of Qt){let Nt=fn(U,p,At)??Bt;if(ht.length===1){x.push({points:y,thickness:pt,color:Nt,walk:U,pass:At});continue}let gt=Xt?.[U]?.[Wn(U,p,At)],$t=Bo(p,y,gt),Et=Uo(y,gt),Zt=Wt(p,Mt,U,At),ut=gt?.offsets?.map(J=>J*I*b),B=ut?ut[Math.floor(ut.length/2)]:Tt(gt,0,Zt)*b;x.push({points:So(Et,$t,ut??B,g),thickness:pt,color:Nt,walk:U,pass:At,normals:$t,offsetX:B,...ut&&{offsets:ut}})}}}else if(kt&&Gt?.length&&Ot>=xe){let Mt=Ro(y,g);for(let pt of Gt){let Xt=(pt-(ot-1)/2)*Ot*b,U=_[pt]??wo;x.push({points:So(y,Mt,Xt,g),thickness:Ot/2,color:T?Ht(U,Jt):U})}}else kt&&x.push({points:y,thickness:K,color:$});let It=x.length-ct;It>0&&C.set(p,{start:ct,count:It})}return{nodeStrokes:x,nodeStrokeRuns:C,arrows:Z,arrowRuns:D,edgeCurves:G,edgeCurveRuns:q}}var Do=[{value:"progress",label:"Progress along the walk"},{value:"walk",label:"One colour for the walk"},{value:"reference",label:"Reference position"}],Nn=[{value:"grey",label:"Grey to black",ends:["#a3a3a3","#151515"]},{value:"blue",label:"Cyan to navy",ends:["#6ee0f0","#0b2c7a"]},{value:"red",label:"Yellow to red",ends:["#ffd24a","#b3121b"]},{value:"purple",label:"Pink to plum",ends:["#f5a3d8","#5e1a6e"]},{value:"green",label:"Lime to forest",ends:["#b6e36c","#0b5d3b"]},{value:"orange",label:"Peach to rust",ends:["#ffc285","#8f3a00"]},{value:"rainbow",label:"Rainbow"}],kn=["blue","red","purple","green"],Ve=t=>Do.some(n=>n.value===t),ze=t=>Nn.some(n=>n.value===t);function je(t,n,e,o=!0){let{field:s,scheme:r}=t.color??{},a=Ve(s)?s:o?"progress":"walk",c=n?"grey":kn[e%kn.length],i=ze(r)?r==="rainbow"&&a!=="reference"?c:r:c,f=Math.floor(e/kn.length)%Lo.length;return a==="walk"&&i===c&&f>0?{field:a,scheme:i,shade:Lo[f]}:o||a==="walk"?{field:a,scheme:i}:{field:a,scheme:i,darkest:Je}}var Je=.55,Pn=.5,Lo=[Pn,.85,.2],Qe=.08,Ho=({field:t,scheme:n})=>t!=="walk"&&n!=="rainbow";function Ze(t){let n=new Map;for(let o of t)Ho(o)&&n.set(o.scheme,(n.get(o.scheme)??0)+1);let e=new Map;return t.map(o=>{let s=Ho(o)?n.get(o.scheme):1;if(s<2)return o;let r=e.get(o.scheme)??0;e.set(o.scheme,r+1);let a=Qe/2;return{...o,stretch:[r/s+(r>0?a:0),(r+1)/s-(r<s-1?a:0)]}})}var Wo=({stretch:t},n)=>t?t[0]+(t[1]-t[0])*n:n,ts=t=>t<=.04045?t/12.92:((t+.055)/1.055)**2.4,ns=t=>t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055;function os(t){let[n,e,o]=[1,3,5].map(c=>ts(Number.parseInt(t.slice(c,c+2),16)/255)),s=Math.cbrt(.4122214708*n+.5363325363*e+.0514459929*o),r=Math.cbrt(.2119034982*n+.6806995451*e+.1073969566*o),a=Math.cbrt(.0883024619*n+.2817188376*e+.6299787005*o);return[.2104542553*s+.793617785*r-.0040720468*a,1.9779984951*s-2.428592205*r+.4505937099*a,.0259040371*s+.7827717662*r-.808675766*a]}function es([t,n,e]){let o=(t+.3963377774*n+.2158037573*e)**3,s=(t-.1055613458*n-.0638541728*e)**3,r=(t-.0894841775*n-1.291485548*e)**3;return[4.0767416621*o-3.3077115913*s+.2309699292*r,-1.2684380046*o+2.6097574011*s-.3413193965*r,-.0041960863*o-.7034186147*s+1.707614701*r].map(a=>ns(Math.max(0,Math.min(1,a)))*255)}var In=new Map;function ss(t){if(!In.has(t)){let n=Nn.find(e=>e.value===t);In.set(t,n&&"ends"in n?n.ends.map(os):void 0)}return In.get(t)}function Fn(t,n,e=0){let o=Math.max(0,Math.min(1,n)),s=ss(t);if(!s)return Tn(jt(o),Vt,zt).map(l=>l*255);let[r,a]=s,c=r[0],i=a[0],f=i<e&&c>e?(c-e)/(c-i):1;return es(r.map((l,h)=>l+(a[h]-l)*o*f))}function Go(t,n,e){let[o,s,r]=Fn(t,n,e).map(Math.round);return`rgb(${o}, ${s}, ${r})`}function an(t,n,e){let[o,s,r]=Fn(t,n,e).map(Math.round);return Y(o,s,r,255)}function rs(t,n){let{field:e,scheme:o,darkest:s,shade:r=Pn}=t;return e==="walk"?an(o,r):n===void 0?Xo:an(o,Wo(t,n),s)}var Xo=On;function as(t){let{field:n,scheme:e,darkest:o,shade:s=Pn}=t,r=(a,c)=>({offset:a,color:Go(e,c,o),abgr:an(e,c,o)});return n==="walk"?[r(0,s)]:Array.from({length:7},(a,c)=>r(c/6,Wo(t,c/6)))}export{ue as a,me as b,Rt as c,yn as d,is as e,Y as f,po as g,fs as h,Ht as i,hs as j,ce as k,ds as l,le as m,ms as n,yo as o,Ps as p,Tn as q,Fs as r,He as s,Ls as t,De as u,We as v,Hs as w,Do as x,Nn as y,je as z,Ze as A,rs as B,Xo as C,as as D};
2
- //# sourceMappingURL=chunk-XWCLYB5C.js.map
@@ -1,3 +0,0 @@
1
- import{A as Pn,B as $n,a as Re,g as V,h as st,j as K,k as it,l as _n,m as On,n as An,o as Nn,p as Ae,r as Ne,s as at,u as ct,v as lt,z as dt}from"./chunk-XWCLYB5C.js";import{a as pn,c as hn,e as Oe,f as rt,g as kn,i as Rn,j as Tn}from"./chunk-XB5KC2EZ.js";import{A as et,B as tt,C as nt,D as ie,E as $,F as ot,M as En,N as Sn,a as Te,c as mn,g as gn,h as j,i as bn,j as Ze,k as _e,m as Je,n as xn,o as pe,p as yn,r as wn,s as Qe,t as Mn,u as vn}from"./chunk-2V75YPTT.js";import{e as In}from"./chunk-CJAV55QB.js";import{g as ln,j as un}from"./chunk-FY7X6253.js";import{c as G,d as se,e as sn,g as an,j as je,k as Se,l as dn,m as fn}from"./chunk-X7YIGIYW.js";import{a as re,c as nn,d as J,e as He,f as on,g as N,q as cn,r as P,s as Ve,v as Ke,x as ze}from"./chunk-JMRW3IGK.js";import{d as Ee,e as rn,f as ue}from"./chunk-5RHNR3TH.js";import{a as Ue}from"./chunk-IKJZPPOA.js";import{f as S}from"./chunk-3WG3GF2A.js";import{c as ke}from"./chunk-NIEZKWQV.js";var Pe=8,ft=34,$e=12,ns=60;function os({count:e,bounds:t,pixelRows:n,width:o,room:r,columns:s}){function i(l){let c=Math.ceil(e/l),f=Math.floor((o-(l-1)*Pe)/l),u=(r-c*ft-(c-1)*Pe)/c,d=(f-2*$e)/t.w,p=t.h>0?(u-2*$e)/t.h:1/0,m=n?d:Math.min(d,p),h=n?t.h:t.h*m,b=Math.floor(Math.max(ns,Math.min(h+2*$e,u)));return{columns:l,width:f,height:b,scale:m,total:c*(b+ft)+(c-1)*Pe}}if(s!==void 0)return i(Math.max(1,Math.min(e,Math.round(s))));let a=i(1);if(n)return a;for(let l=2;l<=e;l++){let c=i(l);c.scale>a.scale&&(a=c)}return a}var rs=[{value:"",label:"None",description:"Every lifted walk in one drawing"},{value:"walk",label:"A panel per walk",description:"One panel per lifted walk, side by side"},{value:"sample",label:"A row per sample",description:"A row per sample, a column per haplotype"}];function ss(e){let t=typeof e=="string"?{field:e}:e??{};return{field:t.field==="walk"||t.field==="sample"?t.field:"",sort:[...t.sort??t.domain??[]],...t.columns===void 0?{}:{columns:t.columns}}}function Cn(e,t){let n=new Map(t.map((r,s)=>[r,s])),o=r=>n.get(r)??t.length;return e.map((r,s)=>({name:r,i:s})).sort((r,s)=>o(r.name)-o(s.name)||r.i-s.i).map(({name:r})=>r)}function is(e,t,n=[]){let o=Cn(e,n),r={columns:void 0,count:e.length,cells:e.map(c=>o.indexOf(c))};if(t==="walk")return r;let s=e.map(c=>{let f=rn(c);return f&&Number.isInteger(f.haplotype)&&f.haplotype>=0?{sample:f.sample,column:Math.max(0,f.haplotype-1)}:void 0}),i=Cn([...new Set(s.flatMap(c=>c?[c.sample]:[]))],n),a=Math.max(1,...s.map(c=>c?c.column+1:1)),l=s.map(c=>c?i.indexOf(c.sample)*a+c.column:-1);return l.includes(-1)||new Set(l).size<l.length?r:{columns:a,count:i.length*a,cells:l}}var as=Math.PI/24;function Ln(e,t){let n=e[t-1],o=e[t],r=e[t+1];if(!n||!r)return 0;let s=Math.abs(Math.atan2(r.y-o.y,r.x-o.x)-Math.atan2(o.y-n.y,o.x-n.x));return s>Math.PI?2*Math.PI-s:s}function cs(e,t,n,o,r){let s=(m,h)=>Math.max(Math.hypot(h.x-m.x,h.y-m.y)**.5,1e-9),i=s(e,t),a=i+s(t,n),l=a+s(n,o),c=i+r*(a-i),f=(m,h,b,g)=>{let x=(c-b)/(g-b);return{x:m.x+(h.x-m.x)*x,y:m.y+(h.y-m.y)*x}},u=f(e,t,0,i),d=f(t,n,i,a),p=f(n,o,a,l);return f(f(u,d,0,a),f(d,p,i,l),i,a)}var Bn=(e,t)=>({x:2*t.x-e.x,y:2*t.y-e.y});function Xn(e){if(e.length<3)return e;let t=[e[0]];for(let n=0;n+1<e.length;n++){let o=e[n],r=e[n+1],s=Math.ceil(Math.max(Ln(e,n),Ln(e,n+1))/as),i=e[n-1]??Bn(r,o),a=e[n+2]??Bn(o,r);for(let l=1;l<s;l++)t.push(cs(i,o,r,a,l/s));t.push(r)}return t}function Dn(e,t){let o=e.nodes.filter(N).filter(b=>(t[b.id]?.length??0)>0).flatMap(b=>{let g=t[b.id],x=g.length-1,M=j(b.id)===(b.stable.strand??"+");return g.map((y,w)=>{let v=x===0?.5:w/x;return{x:y.x,y:y.y,r:b.stable.start+b.length*(M?v:1-v),w:b.length/g.length}})}),r=o.reduce((b,g)=>b+g.w,0);if(r===0)return t;let s=o.reduce((b,g)=>b+g.x*g.w,0)/r,i=o.reduce((b,g)=>b+g.y*g.w,0)/r,a=o.reduce((b,g)=>b+g.r*g.w,0)/r,l=0,c=0;for(let b of o)l+=b.w*(b.x-s)*(b.r-a),c+=b.w*(b.y-i)*(b.r-a);if(l===0&&c===0)return t;let f=-Math.atan2(c,l),u=Math.cos(f),d=Math.sin(f),p={};for(let[b,g]of Object.entries(t))p[b]=g.map(x=>{let M=x.x-s,y=x.y-i;return{x:s+u*M-d*y,y:i+d*M+u*y}});let m=0,h=0;for(let b of e.nodes)if(!N(b))for(let g of p[b.id]??[])g.y>i?m++:h++;if(h>m)for(let b of Object.values(p))for(let g of b)g.y=2*i-g.y;return p}var Fn=30;function ls(e,t){let{opts:n}=t,o=new Map(t.nodes.map(d=>[d.id,Oe(n,d.length)])),r=d=>o.get(d)??n.minimumNodeLength,s=e.nodes.filter(N).sort((d,p)=>d.stable.start-p.stable.start),i=new Map,a=0;for(let d of s)i.set(d.id,{x:a,y:0}),a+=r(d.id)+n.edgeLength;let l=Re(e),c=new Map(s.map(d=>[d.id,0])),f=s.map(d=>d.id);for(let d of f){let p=i.get(d),m=c.get(d)+1;for(let h of l.get(d)??[])c.has(h)||(c.set(h,m),i.set(h,{x:p.x+r(d)/2,y:Fn*m}),f.push(h))}let u=0;for(let d of e.nodes)i.has(d.id)||i.set(d.id,{x:u++*a/e.nodes.length,y:Fn*3});return i}function qn(e,t){let n=ls(e,t);return t.nodes.map(o=>({...o,...n.get(o.id)}))}var ds=.5;function Gn(e,t,n=new Set){let o=new Map(t.map(s=>[s.edgeIndex,`${pn}${s.edgeIndex}`])),r=[];return e.edges.forEach((s,i)=>{let a=o.get(i);if(!n.has(i))if(a===void 0)r.push(s);else{let{fromStrand:l,toStrand:c}=s;r.push({from:s.from,to:a,...l?{fromStrand:l}:{}},{from:a,to:s.to,...c?{toStrand:c}:{}})}}),{graph:{...e,nodes:[...e.nodes,...[...o.values()].map(s=>({id:s,name:s,length:0,depth:0}))],edges:r},routes:o,ids:new Set(o.values())}}function Wn(e,t,n,o,r){let s=new Map(e.nodes.map(i=>[i.id,i.length]));return t.map(i=>{let a=i.bypassed.reduce((f,u)=>f+(s.get(u)??0),0),l=Math.max(r.minimumNodeLength,o(a)*ds),c=n.get(i.edgeIndex);return{id:c,name:c,length:Math.round(l*1e6/r.nodeLengthPerMegabase),depth:0}})}function Yn(e,t){let n={...e},o={};for(let[r,s]of t){let i=n[s];delete n[s],i?.length&&(o[r]=i)}return{nodePositions:n,deletionRoutes:o}}function fs(e,t){let n=e.indexOf(":"),o=e.indexOf(":",n+1);if(n!==-1&&o!==-1){let r=e.slice(0,n),s=e.slice(n+1,o),i=e.slice(o+1);s==="i"||s==="f"?t[r]=+i:s==="Z"&&(t[r]=i)}}function he(e){let t={};for(let n of e)fs(n,t);return t}function Un(e){let{SN:t,SO:n,SR:o}=e.tags;return typeof t=="string"&&typeof n=="number"&&typeof o=="number"?{refName:t,start:n,rank:o}:void 0}var Hn=62,us=60;function ps(e){let t=[],n="+",o=0;function r(s){s>o&&t.push({id:e.slice(o,s),strand:n})}for(let s=0;s<e.length;s++){let i=e.charCodeAt(s);(i===Hn||i===us)&&(r(s),n=i===Hn?"+":"-",o=s+1)}return r(e.length),t}function jn(e){let t={nodes:[],links:[],paths:[],walks:[],header:[],id:""};for(let n of e.split(`
2
- `)){let o=n.endsWith("\r")?n.slice(0,-1):n,r=o.indexOf(" "),s=r===-1?o:o.slice(0,r);if(s==="H"){let[,...i]=o.split(" ");t.header.push(he(i))}else if(s==="S"){let[,i,...a]=o.split(" "),l,c,f,u=!1,d=a[0]??"*";/^\d+$/.test(d)?(l=+d,c=a[1]??"*",f=a.slice(2)):(u=!0,c=d,l=c==="*"?0:c.length,f=a.slice(1));let p=he(f);u&&"LN"in p&&(l=+p.LN),t.nodes.push({id:i,length:l,sequence:c,tags:p})}else if(s==="E"){let[,,i,a,,,,,l,...c]=o.split(" ");i&&a&&t.links.push({source:i.slice(0,-1),target:a.slice(0,-1),strand1:i.at(-1),strand2:a.at(-1),cigar:l??"*",tags:he(c)})}else if(s==="L"){let[,i,a,l,c,f,...u]=o.split(" ");i&&l&&c&&t.links.push({source:i,target:l,strand1:a,strand2:c,cigar:f??"*",tags:he(u)})}else if(s==="W"){let[,i,a,l,c,f,u,...d]=o.split(" ");i&&a&&l&&c&&f&&u&&t.walks.push({sample:i,haplotype:+a,contig:l,start:c==="*"?-1:+c,end:f==="*"?-1:+f,segments:ps(u),tags:he(d)})}else if(s==="P"){let[,i,a,...l]=o.split(" ");i&&a&&t.paths.push({name:i,path:a,rest:l})}}return t}function hs(e,t){let n=new Map,o=new Map;function r(i,a){n.has(i)||n.set(i,a)}function s(i,a){let l=o.get(i);l===void 0&&r(i,a),o.set(i,(l??0)+1)}for(let i of e.links)r(i.source,i.strand1==="-"?"-":"+"),r(i.target,i.strand2==="-"?"-":"+");for(let{steps:i}of t)for(let a of i)s(a.id,a.strand);for(let i of e.walks)for(let a of i.segments)s(a.id,a.strand);return{canonical:n,traversals:o}}var Vn=e=>e.start===-1?0:e.start;function ms(e){return{...P(e.name),steps:e.path.split(",").map(t=>({id:t.slice(0,-1),strand:t.endsWith("-")?"-":"+"}))}}function gs(e,t){return[...t,...e.walks.map(n=>({name:`${n.sample}#${n.haplotype}#${n.contig}`,start:Vn(n),steps:n.segments}))]}function bs(e){let t=e.tags.SM;if(typeof t!="string")return;let n=t.split(",").map(o=>o.trim()).filter(Boolean);return n.length>0?n:void 0}var me=e=>typeof e=="number"&&e>0?e:void 0;function xs({tags:e,length:t}){let n=me(e.RC)??me(e.FC)??me(e.KC);return me(e.dp)??me(e.DP)??(n!==void 0&&t>0?n/t:void 0)}function ys(e,t,n){let o=e.tags.AF;return{id:`${e.id}${t}`,name:e.id,length:e.length,depth:n,...typeof o=="number"&&o>=0?{frequency:o}:{},stable:Un(e),samples:bs(e)}}function Kn(e,t="Imported GFA"){let n=[],o=[],r=e.paths.map(ms),{canonical:s,traversals:i}=hs(e,r),a=new Map,l=g=>{let x=a.get(g);return x===void 0&&(x=`${g}${s.get(g)??"+"}`,a.set(g,x)),x},c=new Map;for(let g of e.nodes){if(c.has(g.id))continue;c.set(g.id,g.length);let x=xs(g)??Math.max(i.get(g.id)??1,1);n.push(ys(g,s.get(g.id)??"+",x))}for(let g of e.links)o.push({from:l(g.source),to:l(g.target),fromStrand:g.strand1==="-"?"-":"+",toStrand:g.strand2==="-"?"-":"+"});let f=[],u=new Map,d=(g,x)=>u.get(g)?.get(x);function p(g,x,M){let y=u.get(g);y||(y=new Map,u.set(g,y)),y.set(x,M)}let m=o.map(g=>{let x=d(g.from,g.to);return x||(x=new Set,p(g.from,g.to,x),p(g.to,g.from,x)),x});function h(g,x){for(let M=0;M<g.length-1;M++)d(g[M],g[M+1])?.add(x)}e.paths.forEach(({name:g},x)=>{let{start:M,steps:y}=r[x],w=y.map(v=>l(v.id));f.push({name:g,nodeIds:w,start:M}),h(w,g)});for(let g of e.walks){let x=g.segments.map(y=>l(y.id)),M=`${g.sample}#${g.haplotype}#${g.contig}`;f.push({name:M,nodeIds:x,start:Vn(g),sample:g.sample,haplotype:g.haplotype,contig:g.contig,...an(g.tags)}),h(x,M)}o.forEach((g,x)=>{let M=m[x];M.size>0&&(g.pathIds=[...M])});let b=e.paths.length>0||e.walks.length>0?Ve(gs(e,r),g=>c.get(g)??0):void 0;return{name:t,nodes:n,edges:o,paths:f.length>0?f:void 0,anchorPaths:b?.anchorPaths,pathVisits:b?.pathVisits,anchoredBy:n.some(g=>g.stable)?"tags":void 0}}function ws(e,t){if(typeof e!="string")return je(e,t);let n=ln(e);return n?je(n,t):Kn(jn(e),t)}function ad(e,t,n={}){let o=ws(e,t);if(o.nodes.length===0)throw new Error(`No graph segments in ${t}`);if(n.maxNodes!==void 0&&o.nodes.length>n.maxNodes)throw new Error(`Graph too large to draw: ${o.nodes.length.toLocaleString()} nodes (limit ${n.maxNodes.toLocaleString()}). Zoom in to a smaller region, or raise maxGraphNodes on this view.`);return Ke(o,n.referencePath)}var Q={engine:"fmmm",quality:2,linearLayout:!1,bubbleSpread:"auto",spacing:1,componentSeparation:1,showDeletionEdges:!0};function zn(e={}){return{engine:e.engine??Q.engine,quality:e.quality??Q.quality,linearLayout:e.linearLayout??Q.linearLayout,bubbleSpread:e.bubbleSpread??Q.bubbleSpread,spacing:e.spacing??Q.spacing,componentSeparation:e.componentSeparation??Q.componentSeparation,showDeletionEdges:e.showDeletionEdges??Q.showDeletionEdges}}var Ms=15;function vs(e,t,n){let o=e.nodes.some(N),r=zn(n),s={...t,opts:{...t.opts,edgeLength:t.opts.edgeLength*r.spacing}};return{graph:{nodes:o?qn(e,s):s.nodes,edges:e.edges},options:{quality:r.quality,linearLayout:r.linearLayout,...s.opts,componentSeparation:Ms*r.componentSeparation,...o?{rotateComponents:!1}:{},engine:r.engine}}}function ut(e,t){let n=e.nodes.some(N);return[...Object.values(zn(t)),n,e.referencePath??""].join("|")}async function Zn(e,t,n){let o=Tn(t.bubbleSpread),{shown:r,hidden:s}=tt(e,et(e),t.showDeletionEdges!==!1),i=Gn(e,r,s),a=Mn(i.graph,i.ids),l={...a.graph,nodes:a.graph.nodes.filter(x=>!i.ids.has(x.id))},c=rt(l,o),{result:f,duration:u}=await n(vs(a.graph,{...c,nodes:[...c.nodes,...Wn(e,r,i.routes,kn(l,o),c.opts)]},t)),d=rt(e,o),p=new Map(d.nodes.map(x=>[x.id,Oe(d.opts,x.length)])),m=Object.fromEntries(Object.entries(f.nodePositions).map(([x,M])=>[x,Xn(M)])),h=vn(m,a.runs,x=>p.get(x)??0),{nodePositions:b,deletionRoutes:g}=Yn(e.nodes.some(N)?Dn(e,h):h,i.routes);return{result:{...f,nodePositions:b,stranded:!0,...r.length?{deletionRoutes:g,extent:Jn(g)}:{}},duration:u}}function Jn(e){let t=1/0,n=1/0,o=-1/0,r=-1/0;for(let s of Object.values(e))for(let i of s)t=Math.min(t,i.x),n=Math.min(n,i.y),o=Math.max(o,i.x),r=Math.max(r,i.y);return{minX:t,minY:n,maxX:o,maxY:r}}var ge=40,Es=1e-6,Ss=100;function pt(e){return Math.max(Es,Math.min(Ss,e))}function ks(e,t,n,o=ge){let r=t-e.h*n;return o-e.minY*n+Math.max(0,r)/2}function cd(e,t,n,o,{minScale:r=0,padLeft:s=ge,padTop:i=ge,padRight:a=ge,padBottom:l=ge}={}){let c=t-s-a,f=n-i-l;if(c<=0||f<=0||!(e.w>0||!o&&e.h>0))return;let u=e.w>0?c/e.w:1/0,d=e.h>0?f/e.h:1/0,p=pt(Math.max(r,o?u:Math.min(u,d))),m=c-e.w*p;return{scale:p,translateX:s-e.minX*p+Math.max(0,m)/2,translateY:ks(e,f,o?1:p,i)}}function ld(e,t={}){let{minX:n,minY:o,maxX:r,maxY:s}=Jn(e.nodePositions),{region:i}=t;e.referenceAxis&&i&&i.end>i.start&&(n=i.start,r=i.end);let a=t.extent??e.extent;return a&&(n=Math.min(n,a.minX??n),o=Math.min(o,a.minY??o),r=Math.max(r,a.maxX??r),s=Math.max(s,a.maxY??s)),{minX:n,minY:o,w:r-n,h:s-o}}var Rs=4;function ht(e=Rs){let t=new WeakMap,n=o=>{let r=t.get(o);return r||(r=new Map,t.set(o,r)),r};return{layout(o,r,s){let i=n(o),a=ut(o,r),l=i.get(a);if(l)return l.run;i.size>=e&&i.delete(i.keys().next().value);let c=performance.now(),f={run:Zn(o,r,s).then(u=>(f.done=u.result,{...u,duration:u.duration||performance.now()-c}))};return f.run.catch(()=>{i.get(a)===f&&i.delete(a)}),i.set(a,f),f.run},ready(o,r){return t.get(o)?.get(ut(o,r))?.done},inherit(o,r){let s=t.get(o);s&&o!==r&&t.set(r,s)}}}function Ts(e,t){return{scaleX:e,scaleY:t?1:e,pixelRows:t}}function mt(e,t,n,o){return{minX:-e.translateX/t.scaleX,minY:-e.translateY/t.scaleY,maxX:(n-e.translateX)/t.scaleX,maxY:(o-e.translateY)/t.scaleY}}function _s(e,t){let n=(e.maxX-e.minX)*t,o=(e.maxY-e.minY)*t;return{minX:e.minX-n,minY:e.minY-o,maxX:e.maxX+n,maxY:e.maxY+o}}function Os(e,t){return t.minX>=e.minX&&t.maxX<=e.maxX&&t.minY>=e.minY&&t.maxY<=e.maxY}function As(e,t,n,o,r){let s=pt(e.scale*t),i=s/e.scale;return{scale:s,translateX:n-(n-e.translateX)*i,translateY:r?e.translateY:o-(o-e.translateY)*i}}function Ns(e,t,n,o){return{x:(e-n.translateX)/o.scaleX,y:(t-n.translateY)/o.scaleY}}var ee=JBrowseExports["@jbrowse/render-core/RenderLifecycleMixin"],Ps=e=>ee!=null&&e in Object(ee)?ee[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/render-core/RenderLifecycleMixin' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),Qn=Ps("RenderLifecycleMixin"),hf=ee&&ee.__esModule?ee.default:ee;function eo(e){return t=>e.includes(t)?t:void 0}function bf(e){return S.snapshotProcessor(S.maybe(S.enumeration(e)),{preProcessor:eo(e)})}function Ie(e,t){return S.snapshotProcessor(S.optional(S.enumeration(e),t),{preProcessor:eo(e)})}var _f=600,Of=160,Af=[1,1,1,1],Nf="rgb(255, 255, 255)",Pf=5,$f=new Set(["tubemap","tubemapref"]),If=ke(()=>import("./ChooseSamplesDialog-LO7FKFSS.js")),Cf=ke(()=>import("./ChooseWalksDialog-JJSOVCEU.js")),Lf=ke(()=>import("./HighlightColorDialog-4F34Q4PY.js")),Bf=12,Xf=[{bp:0,label:"None"},{bp:3,label:"Under 3 bp"},{bp:10,label:"Under 10 bp"},{bp:50,label:"Under 50 bp, leaving structural variants"},{bp:1e3,label:"Under 1 kb"}];function Df(e){if(typeof e.uri=="string")return e.uri;let n=e.segmentsLocation?.uri;return typeof n=="string"&&n.endsWith(Ue)?n.slice(0,-Ue.length):void 0}var Ff=1.15,qf=1.6,Gf=150,Wf=1,Yf=40,Hf=40,Uf=[{value:"each",label:"A tube per haplotype"},{value:"grouped",label:"A tube per haplotype, grouped by route"},{value:"bundled",label:"A tube per route"}],$s={nodeStrokes:[],nodeStrokeRuns:new Map,arrows:[],arrowRuns:new Map,edgeCurves:[],edgeCurveRuns:new Map};function jf(...e){}var Is=5e6;function Vf(e){return e>=1e6?`${+(e/1e6).toFixed(1)} Mb`:`${Math.round(e/1e3)} kb`}var Cs=2e4;function Kf(e){return("uri"in e?e.uri.split(/[?#]/)[0]:"localPath"in e?e.localPath:"name"in e?e.name:"").split(/[\\/]/).at(-1)??""}function zf(e){return e.builtViewport!==void 0&&e.paintedViewport===e.builtViewport&&e.builtViewport.viewportDirty===e.viewportDirty&&!e.viewportRebuildPending}function Zf(e){let{width:t,height:n}=e.viewBox;return mt(e,e.axisScale,t,n)}var Jf=ht(),Qf=S.compose("GraphPane",Qn(),S.model({layoutQuality:S.optional(S.number,2),layoutEngine:Ie(hn,"fmmm"),linearLayout:S.optional(S.boolean,!1),bubbleSpread:Ie(Rn,"auto"),tubeMapFold:S.optional(S.number,0),tubeMapRoutes:Ie(["each","grouped","bundled"],"each"),tubeMapColorBy:S.optional(S.string,""),geneTrackId:S.optional(S.string,""),repeatTrackId:S.optional(S.string,""),repeatKey:S.optional(S.string,""),walkLayers:S.optional(S.frozen(),[]),referencePath:S.optional(S.string,""),showPerf:S.optional(S.boolean,!1),connectorThickness:S.optional(S.number,2),scale:S.optional(S.number,1),translateX:S.optional(S.number,0),translateY:S.optional(S.number,0),paneHeight:S.maybe(S.number),maxGraphNodes:S.optional(S.number,Cs),connectedViewId:S.maybe(S.string),maxRegionBp:S.optional(S.number,Is),subgraphContext:S.optional(S.number,1),subgraphHaplotypes:S.maybe(S.frozen()),expandedWalks:S.optional(S.frozen(),[])})).volatile(()=>({graph:void 0,walkCut:void 0,graphRegion:void 0,loadedReferencePath:void 0,layoutResult:void 0,drawnLayoutMode:void 0,legendSize:{width:0,height:0},indexBubbles:void 0,foldedBelowBp:void 0,geneTrackFeatures:void 0,walkGeneFeatures:void 0,ownGeneFeatures:void 0,walkRowSampleTable:void 0,repeatArrays:void 0,handledLayoutMode:void 0,openBubbles:[],error:void 0,isLoading:!1,loadCanceled:!1,statusMessage:"",hoveredNode:null,hoveredAt:null,hoveredTube:null,hoveredPanel:null,hoveredRowWalks:[],hoveredBubble:null,pointerInPane:!1,stripHover:null,hoveredWalkRow:null,hoveredEdge:null,selectedNode:null,viewportDirty:0,positionsVersion:0,morphEntering:void 0,drawnBatch:$s,builtViewport:void 0,paintedViewport:void 0,draggingNode:null,isPanning:!1,viewportOwner:"fit",viewportDirtyTimer:void 0,positionsDirtyFrame:0,lastFetchMs:void 0,readsShown:void 0,lastLayoutMs:void 0,lastGeometryMs:void 0,lastGeometryStrokeCount:void 0,viewportRebuildPending:!1}));var C=e=>+e.toFixed(1),Ls=e=>+e.toFixed(3);function Bs(e){let t=/^rgba?\(([^,]+),([^,]+),([^,)]+)(?:,([^)]+))?\)$/.exec(e.replaceAll(" ",""));if(!t)return{color:e,opacity:1};let n=t[4]===void 0?1:Number(t[4]);return{color:`rgb(${t[1]},${t[2]},${t[3]})`,opacity:n}}function gt(e,t){let{color:n,opacity:o}=Bs(t);return`${e}="${n}"${o<1?` ${e}-opacity="${Ls(o)}"`:""}`}var to=.5,no=.25;function tu(e,t){let n=[],o=[],r=(c,f)=>{let u={d:`M${C(c)} ${C(f)}`,segments:0,x0:c,x1:c,y0:f,y1:f};return o.push(u),u},s=c=>{let f=o.at(-1)??r(c[0],c[1]);for(let u=0;u<c.length;u+=2)f.x0=Math.min(f.x0,c[u]),f.x1=Math.max(f.x1,c[u]),f.y0=Math.min(f.y0,c[u+1]),f.y1=Math.max(f.y1,c[u+1]);return f.segments++,f},i=c=>{let f=new Set;return o.map(u=>{if(!c||u.x1-u.x0>=to||u.y1-u.y0>=to)return u.d;let d=(u.x0+u.x1)/2,p=(u.y0+u.y1)/2,m=`${Math.round(d/no)} ${Math.round(p/no)}`;return u.segments===0||f.has(m)?"":(f.add(m),`M${C(d)} ${C(p)}h0`)}).join("")},a={canvas:void 0,fillStyle:"#000",strokeStyle:"#000",lineWidth:1,lineCap:"butt",lineJoin:"miter",beginPath(){o=[]},moveTo(c,f){r(c,f)},lineTo(c,f){s([c,f]).d+=`L${C(c)} ${C(f)}`},bezierCurveTo(c,f,u,d,p,m){s([c,f,u,d,p,m]).d+=`C${C(c)} ${C(f)} ${C(u)} ${C(d)} ${C(p)} ${C(m)}`},closePath(){let c=o.at(-1);c&&(c.d+="Z")},stroke(){let c=i(a.lineCap!=="butt");c&&n.push(`<path d="${c}" fill="none" ${gt("stroke",a.strokeStyle)} stroke-width="${C(a.lineWidth)}" stroke-linecap="${a.lineCap}" stroke-linejoin="${a.lineJoin}"/>`)},fill(){let c=i(!1);c&&n.push(`<path d="${c}" ${gt("fill",a.fillStyle)}/>`)},clearRect(){n.length=0},fillRect(c,f,u,d){n.push(`<rect x="${C(c)}" y="${C(f)}" width="${C(u)}" height="${C(d)}" ${gt("fill",a.fillStyle)}/>`)}},l={width:e,height:t,style:{},getContext:()=>a};return a.canvas=l,{canvas:l,markup:()=>n.join("")}}var oo=2,ro=8192;function ae(e=0,t=0){let n=typeof devicePixelRatio>"u"?1:Math.min(devicePixelRatio,oo);return Math.min(n,ro/Math.max(e,t,1))}function bt(e,t,n){let o=ae(t,n),r=Math.round(t*o),s=Math.round(n*o);(e.width!==r||e.height!==s)&&(e.width=r,e.height=s);let i=`${t}px`,a=`${n}px`;return e.style.width!==i&&(e.style.width=i),e.style.height!==a&&(e.style.height=a),o}var iu=class{constructor(e){this.transform=null,this.batch=null,this.nodeHighlights=new Map,this.highlightedEdge=null,this.highlightFactor=1,this.fit=1,this.painted=null;let t=e.getContext("2d");if(!t)throw new Error("Canvas 2D context not available");this.canvas=e,this.ctx=t}setErrorHandler(e){}releaseOffscreenTargets(){}resize(e,t){this.fit=bt(this.canvas,e,t)/ae()}uploadGeometry(e){this.batch=e,this.highlightedEdge=null,this.painted=null}setNodeHighlights(e){this.nodeHighlights=e,this.painted=null}setEdgeHighlight(e,t){this.highlightedEdge=e,this.highlightFactor=t,this.painted=null}updateTransform(e){this.transform=e}fitted(){let e=this.transform,t=this.fit;return!e||t===1?e:{...e,scaleX:e.scaleX*t,scaleY:e.scaleY*t,translateX:e.translateX*t,translateY:e.translateY*t,dpr:e.dpr*t}}render(e){let t=this.fitted();if(!t)return;let n=this.ctx,{width:o,height:r}=n.canvas;e[3]<1&&n.clearRect(0,0,o,r),e[3]>0&&(n.fillStyle=st([e[0],e[1],e[2]],e[3]),n.fillRect(0,0,o,r));let s=this.batch;if(!s)return;n.lineCap="round",n.lineJoin="round";let{edges:i,nodes:a,arrows:l}=this.paintedGroups(s);for(let{color:c,items:f}of i)this.strokeCurves(f,c,t);for(let{color:c,items:f}of a)this.strokeNodes(f,c,t);for(let{color:c,items:f}of l)this.fillArrows(f,c,t)}paintedGroups(e){if(this.painted)return this.painted;let t=this.highlightFactor,n=this.edgeRun(e.edgeCurveRuns),o=this.edgeRun(e.arrowRuns),r=this.liftedStrokes(e);return this.painted={edges:ce(e.edgeCurves,(s,i)=>({color:Ce(n,i)?K(s.color,t):s.color,weight:s.thickness,last:Ce(n,i)})),nodes:ce(e.nodeStrokes,(s,i)=>{let a=r.get(i);return{color:a===void 0?s.color:K(s.color,a),weight:s.thickness,last:a!==void 0}}),arrows:ce(e.arrows,(s,i)=>({color:Ce(o,i)?K(s.color,t):s.color,weight:0,last:Ce(o,i)}))}}renderHighlights(){let e=this.ctx;e.clearRect(0,0,e.canvas.width,e.canvas.height);let t=this.batch,n=this.fitted();if(!n||!t)return;e.lineCap="round",e.lineJoin="round";let o=this.highlightFactor,r=so(t.edgeCurves,this.edgeRun(t.edgeCurveRuns));for(let{color:a,items:l}of ce(r,c=>({color:K(c.color,o),weight:c.thickness,last:!1})))this.strokeCurves(l,a,n);let s=[...this.liftedStrokes(t)];for(let{color:a,items:l}of ce(s,([c,f])=>({color:K(t.nodeStrokes[c].color,f),weight:t.nodeStrokes[c].thickness,last:!1})))this.strokeNodes(l.map(([c])=>t.nodeStrokes[c]),a,n);let i=so(t.arrows,this.edgeRun(t.arrowRuns));for(let{color:a,items:l}of ce(i,c=>({color:K(c.color,o),weight:0,last:!1})))this.fillArrows(l,a,n)}edgeRun(e){return this.highlightedEdge===null?void 0:e.get(this.highlightedEdge)}liftedStrokes(e){let t=new Map;for(let[n,o]of this.nodeHighlights){let r=e.nodeStrokeRuns.get(n);if(r)for(let s=r.start;s<r.start+r.count;s++)t.set(s,o)}return t}strokeCurves(e,t,n){let o=this.ctx;o.strokeStyle=V(t),o.lineWidth=e[0].thickness*2*n.dpr,o.beginPath();for(let r of e){let s=r.curves[0];o.moveTo(s.x0*n.scaleX+n.translateX,s.y0*n.scaleY+n.translateY);for(let i of r.curves)o.bezierCurveTo(i.cx0*n.scaleX+n.translateX,i.cy0*n.scaleY+n.translateY,i.cx1*n.scaleX+n.translateX,i.cy1*n.scaleY+n.translateY,i.x1*n.scaleX+n.translateX,i.y1*n.scaleY+n.translateY)}o.stroke()}strokeNodes(e,t,n){let o=this.ctx;o.strokeStyle=V(t),o.lineWidth=e[0].thickness*2*n.dpr,o.beginPath();for(let r of e){let s=r.points[0];o.moveTo(s.x*n.scaleX+n.translateX,s.y*n.scaleY+n.translateY);for(let i=1,a=r.points.length;i<a;i++){let l=r.points[i];o.lineTo(l.x*n.scaleX+n.translateX,l.y*n.scaleY+n.translateY)}}o.stroke()}fillArrows(e,t,n){let o=this.ctx;o.fillStyle=V(t),o.beginPath();for(let r of e){let[s,i,a,l]=Ds(r,n);o.moveTo(s.x,s.y),o.lineTo(i.x,i.y),o.lineTo(a.x,a.y),o.lineTo(l.x,l.y),o.closePath()}o.fill()}dispose(){this.batch=null,this.nodeHighlights=new Map,this.highlightedEdge=null,this.painted=null}},Xs=.25;function Ds(e,t){let n=Math.cos(e.angle),o=Math.sin(e.angle),r=e.x*t.scaleX+t.translateX,s=e.y*t.scaleY+t.translateY,i=e.length*t.dpr,a=e.halfWidth*t.dpr,l=r-n*i,c=s-o*i,f=i*(1-Xs);return[{x:r,y:s},{x:l-o*a,y:c+n*a},{x:r-n*f,y:s-o*f},{x:l+o*a,y:c-n*a}]}function so(e,t){return t?e.slice(t.start,t.start+t.count):[]}function Ce(e,t){return e!==void 0&&t>=e.start&&t<e.start+e.count}function ce(e,t){let n=new Map,o=new Map;for(let r=0,s=e.length;r<s;r++){let i=e[r],{color:a,weight:l,last:c}=t(i,r),f=c?o:n,u=`${a}:${l}`,d=f.get(u);d?d.items.push(i):f.set(u,{color:a,items:[i]})}return[...n.values(),...o.values()]}var Fs=50;function io(e,t){return t>0?Math.max(1,e/t):Fs}function qs(e){let t=new Set,n=1/0,o=-1/0;for(let r of e)t.add(r.minY),n=Math.min(n,r.minY),o=Math.max(o,r.minY);return t.size>1?(o-n)/(t.size-1):void 0}function ao(e,t,n){let o=io(t,e.length);return{x:o,y:n>0?io(n,e.length):qs(e)??o}}function Gs(e,t,n,o){return e===void 0?ao(t,n,o):typeof e=="number"?{x:e,y:e}:e}function Ws(e,t,n){let o=e.get(t);o||(o=new Map,e.set(t,o));let r=o.get(n);return r||(r=[],o.set(n,r)),r}function co(e,t,n,o,r,s,i){let a=Math.floor(n/t.x),l=Math.floor(r/t.x),c=Math.floor(o/t.y),f=Math.floor(s/t.y);for(let u=a;u<=l;u++)for(let d=c;d<=f;d++)Ws(e,u,d).push(i)}function lo(e,t,n,o,r,s){let i=Math.floor((n-r)/t.x),a=Math.floor((n+r)/t.x),l=Math.floor((o-s)/t.y),c=Math.floor((o+s)/t.y),f=[],u=new Set;for(let d=i;d<=a;d++){let p=e.get(d);if(p)for(let m=l;m<=c;m++){let h=p.get(m);if(h)for(let b of h)u.has(b)||(u.add(b),f.push(b))}}return f}var fo=class{constructor(e,t){this.cells=new Map;let n=[],o=0,r=0;for(let[s,i]of Object.entries(e))for(let a=0;a<i.length-1;a++){let l=i[a],c=i[a+1],f=Math.min(l.x,c.x),u=Math.min(l.y,c.y),d=Math.max(l.x,c.x),p=Math.max(l.y,c.y);o+=d-f,r+=p-u,n.push({entry:{nodeId:s,segmentIdx:a},minX:f,minY:u,maxX:d,maxY:p})}this.cellSize=Gs(t,n,o,r);for(let s of n)co(this.cells,this.cellSize,s.minX,s.minY,s.maxX,s.maxY,s.entry)}query(e,t,n,o=n){return lo(this.cells,this.cellSize,e,t,n,o)}},uo=class{constructor(e,t,n,o,r,s=0,i,a=!1){this.cells=new Map,this.edgeCurves=Nn(e,t,o,r,s,i,a);let l=[],c=0,f=0;for(let u=0;u<t.edges.length;u++){let d=t.edges[u],p=e[d.from],m=e[d.to],h=this.edgeCurves.get(u);if(p?.length&&m?.length&&h){let{minX:b,minY:g,maxX:x,maxY:M}=mn(h),y=d.pathIds?.length??0;if(n&&y>0){let w=0,v=0;for(let k of _e(p,m,y,o))w=Math.max(w,Math.abs(k.x)),v=Math.max(v,Math.abs(k.y));b-=w,g-=v,x+=w,M+=v}c+=x-b,f+=M-g,l.push({ei:u,minX:b,minY:g,maxX:x,maxY:M})}}this.cellSize=ao(l,c,f);for(let u of l)co(this.cells,this.cellSize,u.minX,u.minY,u.maxX,u.maxY,u.ei)}getCurves(e){return this.edgeCurves.get(e)}query(e,t,n,o=n){return lo(this.cells,this.cellSize,e,t,n,o)}};function ho(e,t,n,o,r,s){let i=r-n,a=s-o,l=i*i+a*a;if(l===0)return Math.hypot(e-n,t-o);let c=Math.max(0,Math.min(1,((e-n)*i+(t-o)*a)/l));return Math.hypot(e-(n+c*i),t-(o+c*a))}function Ys(e,t,n){let o=1/0,r=20,s=n.x0,i=n.y0;for(let a=1;a<=r;a++){let l=a/r,c=1-l,f=c*c*c*n.x0+3*c*c*l*n.cx0+3*c*l*l*n.cx1+l*l*l*n.x1,u=c*c*c*n.y0+3*c*c*l*n.cy0+3*c*l*l*n.cy1+l*l*l*n.y1;o=Math.min(o,ho(e,t,s,i,f,u)),s=f,i=u}return o}function po(e,t,n,o=1){let r=1/0;for(let s of n){let i=Ys(e,t,o===1?s:{x0:s.x0,y0:s.y0*o,cx0:s.cx0,cy0:s.cy0*o,cx1:s.cx1,cy1:s.cy1*o,x1:s.x1,y1:s.y1*o});i<r&&(r=i)}return r}var Hs=Je();function mo(e,t){return Hs(e,[t],()=>new fo(e))}var Us=Je();function js(e,t,n,o,r,s,i,a=!1){return Us(e,[t,n,o.scaleX,o.scaleY,r,s,i,a],()=>new uo(e,t,n,o,s,r,i,a))}var Vs=5;function bu(e,t,n,o,r=0,s){let i=Ze(o),a=mo(e,r),l=p=>Math.max(Vs,p)/o.scaleX,c=l(s?.maxHalfWidthPx??0),f=a.query(t,n,c,c/i),u=null,d=1/0;for(let{nodeId:p,segmentIdx:m}of f){let h=e[p],b=ho(t,n*i,h[m].x,h[m].y*i,h[m+1].x,h[m+1].y*i);b<d&&b<l(s?.halfWidthPx(p)??0)&&(d=b,u=p)}return u}function Ks(e,t,n){let o=t.x-e.x,r=t.y-e.y,s=0,i=1;for(let[a,l]of[[-o,e.x-n.x0],[o,n.x1-e.x],[-r,e.y-n.y0],[r,n.y1-e.y]])if(a===0){if(l<0)return!1}else a<0?s=Math.max(s,l/a):i=Math.min(i,l/a);return s<=i}function go(e,t,n=0){let o=mo(e,n),r=s=>({x:s.x*t.scaleX+t.translateX,y:s.y*t.scaleY+t.translateY});return s=>{let i=new Set,a=o.query(((s.x0+s.x1)/2-t.translateX)/t.scaleX,((s.y0+s.y1)/2-t.translateY)/t.scaleY,Math.abs((s.x1-s.x0)/2/t.scaleX),Math.abs((s.y1-s.y0)/2/t.scaleY));for(let{nodeId:l,segmentIdx:c}of a){let f=e[l];!i.has(l)&&Ks(r(f[c]),r(f[c+1]),s)&&i.add(l)}return i}}function xu(e,t,n,o,r,s,i=0,a,l,c,f=!1){let u=Ze(r),d=10/r.scaleX,p=js(e,t,s,r,i,a,c,f),m=p.query(n,o,d,d/u),h=null,b=d;for(let g of m){let x=t.edges[g],M=e[x.from],y=e[x.to];if(!M?.length||!y?.length||l?.has(g))continue;let w=x.pathIds?.length??0,v=p.getCurves(g);if(!v)continue;let k;if(!s||w===0)k=po(n,o*u,v,u);else{let T=1/0;for(let E of _e(M,y,w,r)){let _=E.x===0&&E.y===0?v:gn(v,E.x,E.y),O=po(n,o*u,_,u);O<T&&(T=O)}k=T}k<b&&(b=k,h=g)}return h}var bo=3.4,xt=6,zs=18,Zs=2,Js=3,Qs=xn+yn;function xo(e){let t=e.gene.end-e.gene.start;if(e.covered>=.98)return;let[n,o]=t>=999500?[1e6,"Mb"]:t>=1e3?[1e3,"kb"]:[1,"bp"],r=s=>+(s/n).toFixed(n===1?0:1);return`${r(e.covered*t)} of ${r(t)} ${o}`}function yo(e,t,n,o){let r=n/2;return wo(e,s=>s.gene.end-s.gene.start).map(s=>{let{x:i,y:a}=t(s.at),l=xo(s);return{item:s,x:i,y:a+n+zs,text:l?`${s.gene.name} \xB7 ${l}`:s.gene.name,fallback:l?`${s.gene.name} \u2026`:void 0,stack:Zs,fits:c=>[...o({x0:c.x0-r,x1:c.x1+r,y0:c.y0-r,y1:c.y1+r})].every(f=>s.nodeIds.has(f))}})}function wo(e,t){return[...e].sort((n,o)=>t(o)-t(n))}function ei(e){let{paneWidth:t,canvasHeight:n,translateX:o,translateY:r}=e,{scaleX:s,scaleY:i}=e.axisScale,a={width:t,height:n},l=w=>({x:w.x*s+o,y:w.y*i+r}),c=e.drawnRowLabels.map(({label:w,y:v})=>nt(w,v*i+r)),f=e.referenceStripZonePx??0;f>0&&c.push({x0:0,x1:t,y0:0,y1:f}),e.legendSize.width>0&&c.push({x0:t-xt-e.legendSize.width,x1:t,y0:0,y1:f+xt+e.legendSize.height}),e.poppedFrom&&c.push({x0:0,x1:60+e.poppedFrom.label.length*pe*1.2,y0:0,y1:44});let u=wn(a,c),d=e.drawnRowLabels.length>0,p=d?Math.min(...e.drawnRowLabels.map(w=>w.y)):1/0,m=e.contigThickness*bo,h=(w,v)=>{let{x:k,y:T}=l({x:w.labelAt.x,y:Math.min(w.labelAt.y,p)}),E=T-m/2-v;return{x:k,y:d?Math.max(E,Qs):E}},b=wo(e.bubbleHalos.filter(w=>!w.tick),w=>w.whole?-1:w.members),g=Qe(b.map(w=>({item:w,...h(w,6),text:w.label,fallback:w.label.includes(",")?w.label.split(",")[0]:void 0,stack:Js})),a,u),x=e.bubbleHalos.filter(w=>w.tick).map(w=>({item:w,...h(w,2)})).filter(w=>w.x>=0&&w.x<=t&&w.y>=0&&w.y<=n),M=Qe(yo(e.genePins,l,e.contigThickness,go(e.nodePositions??{},{scaleX:s,scaleY:i,translateX:o,translateY:r},e.positionsVersion)),a,u),y=e.nodePositions&&e.labelsNodeSizes?ot({nodePositions:e.nodePositions,nodeLengths:e.nodeLengths,deletions:e.deletions,deletionRoutes:e.deletionRoutes,stranded:e.stranded,alleleDeletions:e.alleleDeletions,axis:e.axisScale,translateX:o,translateY:r,width:t,height:n,version:e.positionsVersion,take:u}):[];return{bubbles:g,ticks:x,genes:M,sizes:y}}var te=JBrowseExports.mobx,le=e=>te!=null&&e in Object(te)?te[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from 'mobx' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var Wu=le("autorun");var Yu=le("computed");var Mo=le("observable");var Hu=le("reaction");var vo=le("runInAction");var Uu=le("untracked");var ju=te&&te.__esModule?te.default:te;function yt(e,t){return t===j(e.id)?e.id:`-${e.id}`}function ti(e,t){let n=e.map(()=>{}),o=0,r=0;for(;r<e.length&&e[r]!==void 0;r++)n[r]=o,o+=e[r];let s=t;for(let i=e.length-1;i>r&&e[i]!==void 0;i--)s-=e[i],n[i]=s;return n}function ni(e,t){let n=e.path.map(()=>[]);if(e.cs===void 0)return n;let o=ti(t,e.pathLength),r=o.flatMap((d,p)=>d===void 0?[]:[p]),s=d=>o[r[d]],i=d=>s(d)+t[r[d]],a=0,l=d=>{for(;a<r.length&&i(a)<d;)a++;for(let p=a;p<r.length&&s(p)<=d;p++){let m=i(p);if(d<m)return{s:r[p],local:d-s(p),room:m-d}}},c=d=>{for(let p=a;p<r.length;p++)if(s(p)>d)return s(p)-d;return 1/0},f=(d,p)=>{let m=n[d],h=m.at(-1);p.type==="substitution"&&h?.type==="substitution"&&h.pos+h.seq.length===p.pos?h.seq+=p.seq:m.push(p)},u=e.pathStart;for(let d of un(e.cs))if(d.op==="match")u+=d.length;else if(d.op==="substitution"){let p=l(u);p&&f(p.s,{type:"substitution",pos:p.local,seq:d.seq}),u+=1}else if(d.op==="insertion"){let p=u>e.pathStart&&u<e.pathEnd?l(u):void 0;p&&f(p.s,{type:"insertion",pos:p.local,seq:d.seq})}else{let p=d.length;for(;p>0;){let m=l(u),h=Math.min(p,m?m.room:c(u));m&&f(m.s,{type:"deletion",pos:m.local,length:h}),u+=h,p-=h}}return n}function Eo(e,t,n){let o=new Map(e.nodes.map(s=>[s.name,s])),r=[];for(let s of t){let i=s.path.map(f=>o.get(f.name)),a=i.flatMap((f,u)=>f?[u]:[]),l=a[0],c=a.at(-1);if(l!==void 0&&c!==void 0){let f=ni(s,i.map(p=>p?.length)),u=a.map(p=>yt(i[p],s.path[p].strand)),d=i[c].length;r.push({id:n+r.length,name:s.name,type:"read",sourceTrackID:1,sequence:u,sequenceNew:a.map((p,m)=>({nodeName:u[m],mismatches:f[p]})),firstNodeOffset:l===0?s.pathStart:0,finalNodeCoverLength:c===s.path.length-1?d-(s.pathLength-s.pathEnd):d,mapping_quality:s.mappingQuality===255?void 0:s.mappingQuality,is_secondary:s.secondary,is_reverse:s.strand==="-"})}}return r}var oi=["#6baed6","#4292c6","#2171b5","#08519c"],ri=["#fb6a4a","#ef3b2c","#cb181d","#a50f15"];function So(e){let t=e.is_reverse?ri:oi;return t[e.id%t.length]}var si=10;function ii(e,t){let n=e.end-e.start,o=e.longestAlleleLength-e.shortestAlleleLength;return t.find(r=>o<=si*(r.end-r.start)&&(n===0?r.start<=e.start&&e.start<=r.end:Math.min(e.end,r.end)-Math.max(e.start,r.start)>=n/2))}var ai=40;function ci(e,t){let n=$(e),o=$(t),r=o.slice(o.indexOf(" "));return n.endsWith(r)?`${n.slice(0,-r.length)}\u2013${o}`:`${n}\u2013${o}`}function wt(e){return e>=In?"\u22652.1B routes":e>=1e5?`${(e/1e3).toFixed(0)}k routes`:`${e} routes`}function li(e,t=[]){let n=di(e,t);return e.partial?{...n,label:`${n.label}, partial`}:n}function di(e,t){let n=e.end-e.start,{shortestAlleleLength:o,longestAlleleLength:r,pathCount:s,segmentCount:i,inversion:a}=e,l=ci(o,r);if(i>=ai)return{kind:"superbubble",label:`${l} superbubble, ${i} segments, ${wt(s)}${a?", inv":""}`};if(a)return{kind:"inversion",label:`${$(r)} inv`};if(e.offReference)return o===r?ko(o):{kind:"complex",label:`${l}, ${wt(s)}`};let c=r!==o?ii(e,t):void 0;if(c){let u=c.name?` (${c.name})`:"";return{kind:"repeat",label:`${l} repeat array${u}, ${wt(s)}`}}let f=s>2?`, ${s} alleles`:"";return o===r&&o===n?ko(n):n===0||o===n?{kind:"insertion",label:`\u2264${$(r-n)} ins${f}`}:r===n?{kind:"deletion",label:`${$(n-o)} del${f}`}:{kind:"complex",label:`${$(n)} ref \u2192 ${l}, ${s} alleles`}}function ko(e){return e<=1?{kind:"snp",label:"SNP"}:{kind:"substitution",label:`${$(e)} sub`}}var fi={snp:"#5b6b7a",substitution:"#5b6b7a",insertion:"#2f8fd6",deletion:"#c94040",inversion:"#e07b00",repeat:"#8e3fbf",superbubble:"#8e3fbf",complex:"#8e3fbf"},ui={snp:"SNP",substitution:"substitution",insertion:"insertion",deletion:"deletion",inversion:"inversion",repeat:"repeat array",superbubble:"superbubble",complex:"site"};function pi(e){return e.segments.split(",").filter(Boolean)}function A(e,t={},...n){return{tag:e,attrs:t,children:n.filter(o=>!!o||o==="")}}function Ro(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function hi(e){return Ro(e).replaceAll('"',"&quot;")}function mi(e){if(typeof e=="string")return Ro(e);let t=Object.entries(e.attrs).filter(([,n])=>n!==void 0).map(([n,o])=>` ${n}="${hi(String(o))}"`).join("");return`<${e.tag}${t}>${e.children.map(mi).join("")}</${e.tag}>`}var kt="#2f8fd6",Rt="#8e3fbf",To="#bdbdbd",_o="#8a8a8a",Oo="#e2e2e2",Ao="#d9a441",be="#1c1c22",Tt=12,Le=4,No=1,Et=12,gi=6,bi=3;function W(e){return`${(e/1e3).toFixed(e<1e4?1:0)} kb`}function xi(e){let t=Math.abs(e);return`${e>0?"+":"\u2212"}${t<1e3?`${t} bp`:W(t)}`}function Mt(e,t){return t?` \u2248 ${Math.round(e/t)} units`:""}var yi=({refName:e,start:t})=>`${Ee(e)}:${t<1e6?`${Math.round(t/1e3)} kb`:`${(t/1e6).toFixed(1)} Mb`}`;function wi(e){return e<1e3?`${e}`:`${Math.round(e/1e3)} k`}function Mi(e,t,n=0){if(e<=0)return"";let o=(t??[]).filter(l=>l.gap);if(!o.some(l=>l.cause))return` \xB7 ${W(e)} ${se}`;let r=l=>o.filter(c=>c.cause===l).reduce((c,f)=>c+f.bp,0),s=[...new Set(o.flatMap(l=>l.chunk?[yi(l.chunk)]:[]))],i=[[r("missing"),G.missing],[r("elsewhere"),`on nodes filed near ${s[0]}${s.length>1?` and ${s.length-1} more place${s.length>2?"s":""}`:""}`],[r("unknown"),G.unknown],[r(void 0),se]],a=r("abridged");return(a>0?` \xB7 ${wi(n)} steps, ${W(a)} not loaded`:"")+i.filter(([l])=>l>0).map(([l,c])=>` \xB7 ${W(l)} ${c}`).join("")}function Po(e,t,n,o){let{bp:r,gapBp:s,complete:i,stop:a}=e;if(!t)return`${W(r)}${Mt(r,n)}`;let l=Mi(s,e.runs,e.abridgedSteps),c=o?` \xB7 called ${W(o.bp)}${o.spanningReads===0?" \xB7 no spanning read":""}`:"";if(i){let d=r-t.bp,p=d===0?"":` (${xi(d)})`;return`${W(r)}${Mt(r,n)}${p}${l}${c}`}let f=n?"repeat":"window";if(a?.contigEnds&&r===0)return`contig ends ${a.shortBp>0?`${W(a.shortBp)} before`:"at"} the ${f}${c}`;let u=a?a.contigEnds?`contig ends inside the ${f}`:"does not rejoin the reference within the extracted subgraph":"partial walk";return`\u2265 ${W(r)}${Mt(r,n)} \xB7 ${u}${l}${c}`}function $o(e,t,n){let o=t+6;return o+e.length*pe<n?{x:o,anchor:"start",halo:!1}:{x:t-6,anchor:"end",halo:!0}}function Io(e,t,n){if(t*n<bi)return[];let o=[];for(let r=t;r<e;r+=t)o.push(r);return o}function xe(e){return e==="missing"?{fill:_o,px:No,label:G.missing}:e==="unknown"?{fill:Oo,px:Le,label:G.unknown}:e==="abridged"?{fill:Ao,px:Le,label:G.abridged}:{fill:To,px:Le,label:se}}function Co(e,t){if(e.gap)return{fill:xe(e.cause).fill};if(!t)return{fill:e.onReference?kt:Rt};if(e.referenceStart===void 0)return{fill:Ne};let n=_n({...e,start:e.referenceStart},t);return n.length===1?{fill:it(n[0])}:{stops:n.map(it)}}function St(e,t,n){return e.reversed?{start:e.start-n,end:e.start-t}:{start:t-e.start,end:n-e.start}}function vi(e,t){return e.reversed?{start:e.start-t,end:e.start}:{start:e.start,end:e.start+t}}function Ei(e,t){let n=new Map;for(let o of e){let r=t.get(o.name);if(!o.axis||!r)continue;let s=o.axis,i=({start:a,end:l})=>({start:Math.max(0,a),end:Math.min(o.bp,l)});n.set(o.name,r.map(a=>({name:a.name,...i(St(s,a.start,a.end)),exons:a.exons.map(l=>i(St(s,l.start,l.end))).filter(l=>l.end>l.start)})).filter(a=>a.end>a.start).sort((a,l)=>a.start-l.start))}return n}var Si=9,ki=5.2,Ri=8,Lo=(e,t)=>Math.min(2,(e-t)/2-1);function Bo(e,t){return Lo(e,t)>=1}function Xo(e,t,n,{rowPx:o=Te,barPx:r=Tt}={}){if(!Bo(o,r))return[];let s=Lo(o,r),i=e.map(c=>{let f=t(c.start);return{g:c,x:f,w:Math.max(2,t(c.end)-f)}}),a=[],l=new Set((r>=Ri?[...i]:[]).sort((c,f)=>c.w-f.w).filter(({g:c,x:f,w:u})=>{let d=c.name.length*ki/2,p=[f+u/2-d,f+u/2+d];return 2*d>u+6||a.some(([m,h])=>p[0]<h+2&&p[1]>m-2)?!1:(a.push(p),!0)}));return i.map(c=>({name:c.g.name,x:c.x,y:n-r/2-s,w:c.w,h:r+2*s,exons:c.g.exons.map(f=>({x:t(f.start),w:Math.max(1,t(f.end)-t(f.start))})),label:l.has(c)?{x:c.x+c.w/2,y:n+3,size:Si}:void 0}))}var vt=e=>`${e} row${e===1?"":"s"}`;function Ti(e,t={}){let n=t.annotation??"gene",o=[{swatch:t.ramp?{kind:"bar",fill:t.rampCss??An,ramp:!0}:{kind:"bar",fill:kt},label:`on ${e.reference.label}'s path`},{swatch:{kind:"bar",fill:t.ramp?Ne:Rt},label:`off ${e.reference.label}'s path`}],r=[e.reference,...e.rows].flatMap(i=>i.runs.filter(a=>a.gap)),s=new Set(r.map(i=>xe(i.cause).label));for(let i of[void 0,"missing","unknown","abridged"]){let{fill:a,px:l,label:c}=xe(i);s.has(c)&&o.push({swatch:{kind:"gap",fill:a,px:l},label:c})}return t.genes?.crowded?o.push({swatch:{kind:"gene"},label:`${n}s left out: too many rows to box them in`,note:!0}):t.genes&&(o.push({swatch:{kind:"gene"},label:n}),t.genes.untracked&&o.push({swatch:{kind:"gene"},label:`no ${n} track for ${vt(t.genes.untracked)}`,note:!0}),t.genes.unplaced&&o.push({swatch:{kind:"gene"},label:`no contig coordinates for ${vt(t.genes.unplaced)}`,note:!0}),t.genes.unread&&o.push({swatch:{kind:"gene"},label:`${n}s not read for the last ${vt(t.genes.unread)}`,note:!0})),o}var Do="#111",Fo="#9e9e9e",_t="#c62828";function qo(e){return e.agrees===!1?_t:e.spanningReads===0?Fo:Do}function _i(e,t,n,o="walk-key"){let r=0,s=e.flatMap((i,a)=>{let l=`${o}-ramp-${a}`,c=!i.note&&i.swatch.kind==="bar"&&i.swatch.ramp?A("linearGradient",{id:l},...On.map(d=>A("stop",{offset:d.offset,"stop-color":d.color}))):void 0,f=i.note?void 0:i.swatch.kind==="gene"?A("rect",{x:r,y:5,width:18,height:8,fill:"none",stroke:be,"stroke-width":1.5}):A("rect",{x:r,y:i.swatch.kind==="gap"?9-i.swatch.px/2:5,width:18,height:i.swatch.kind==="gap"?i.swatch.px:8,rx:2,fill:c?`url(#${l})`:i.swatch.fill}),u=A("text",{x:i.note?r:r+23,y:13,"font-style":i.note?"italic":void 0,fill:i.note?"#666":void 0},i.label);return r+=(i.note?0:23)+i.label.length*pe+16,[c,f,u].filter(d=>d!==void 0)});return{width:r,tree:A("g",{transform:`translate(${t} ${n})`,"font-family":"Helvetica, Arial, sans-serif","font-size":11},...s)}}function Oi(e,t,n=0){let o=t/Math.max(1,e),r=Math.max(n,Math.min(Te,o>=1?Math.floor(o):o));return{rowPx:r,barPx:r<=3?r:Math.max(3,Math.round(r*.6)),labelled:r>=Et,readouts:r>=Et}}function Go(e,t){let n=1/t,o=[],r=[],s=()=>{if(r.length!==0){if(r.length===1)o.push(r[0]);else{let a=0,l=0;for(let u of r)u.onReference?a+=u.bp:l+=u.bp;let c=a>=l,f=r.find(u=>u.onReference===c);o.push({start:r[0].start,bp:a+l,onReference:c,referenceStart:c?f.referenceStart:void 0,...f.reversed?{reversed:!0}:{}})}r=[]}},i=0;for(let a of e){if(a.gap||a.bp>=n){s(),i=0,o.push(a);continue}r.push(a),i+=a.bp,i>=n&&(s(),i=0)}return s(),o}function Ai(e,t,n){return A("g",{class:"row-gene","data-testid":"graph-walk-gene"},A("title",{},e.name),...e.exons.map(o=>A("rect",{x:o.x,y:t-n/2,width:o.w,height:n,fill:be,opacity:.35})),A("rect",{x:e.x,y:e.y,width:e.w,height:e.h,fill:"none",stroke:be,"stroke-width":1.5}),e.label&&A("text",{x:e.label.x,y:e.label.y,"font-family":"sans-serif","font-size":e.label.size,"font-weight":600,"text-anchor":"middle",fill:be,stroke:"white","stroke-width":2.5,"paint-order":"stroke"},e.name))}function ye(e,t,n={}){let o=h=>h*t.scaleX+t.translateX,r=t.rowPx??Te,s=t.barPx??Tt,i=Math.min(3,Math.max(0,(r-s)/2)),a=h=>h*r*t.scaleY+t.translateY,{origin:l,unit:c,reference:f,rows:u}=e,d=h=>o(l+h),p=n.idPrefix??"walkrow",m=(h,b)=>{let g=a(b);if(g<-s||g>t.height+s)return;let x=t.bars===!1?[]:h.runs,M=Go(x,t.scaleX).flatMap(T=>{let E=Co(T,n.ramp),_=T.gap?Math.min(xe(T.cause).px,s):s,O=`${p}-${b}-${T.start}`,q=A("rect",{x:d(T.start),y:g-_/2,width:Math.max(1,T.bp*t.scaleX),height:_,fill:"stops"in E?`url(#${O})`:E.fill});return"stops"in E?[A("linearGradient",{id:O},...E.stops.map((z,H)=>A("stop",{offset:H/(E.stops.length-1),"stop-color":z}))),q]:[q]}),y=c&&s>=gi?Io(h.bp,c,t.scaleX).map(T=>A("line",{x1:d(T),x2:d(T),y1:g-s/2,y2:g+s/2,stroke:"white","stroke-width":1})):[],{call:w}=h,v=t.readouts??!0?{text:Po(h,b===0?void 0:f,c,w)}:void 0,k=v&&$o(v.text,d(h.bp),t.width);return A("g",{"data-testid":b===0?"graph-walk-reference":"graph-walk-row"},...M,...y,...Xo(n.rowGenes?.get(h.name)??[],d,g,{rowPx:r,barPx:s}).map(T=>Ai(T,g,s)),w&&A("rect",{"data-testid":"graph-walk-call",x:d(w.bp)-1,y:g-s/2-i,width:2,height:s+2*i,fill:qo(w)}),v&&k&&A("text",{x:k.x,y:g+4,"font-family":"sans-serif","font-size":11,fill:w?.agrees===!1?_t:"#333",stroke:k.halo?"white":void 0,"stroke-width":k.halo?3:void 0,"paint-order":"stroke","text-anchor":k.anchor},v.text))};return A("g",{},...[f,...u].map(m))}function Ot({graph:e,layout:t}){let n=new Map(e.nodes.map(r=>[r.id,r])),o=new Map;t.nodes.forEach((r,s)=>{let i=n.get(r.name);if(r.order>=0&&i&&N(i)){let{refName:a,start:l}=i.stable;re(o,a,{name:r.name,index:s,bp0:l,bp1:l+i.length,x0:r.x,x1:r.x+r.pixelWidth})}});for(let r of o.values())r.sort((s,i)=>s.bp0-i.bp0);return o}function Be(e,t,n=!1){let o=J(e.length-1,r=>n?e[r].bp1<t:e[r].bp1<=t);return we(e[o],t)}function we(e,t){let n=e.bp1-e.bp0;return t<=e.bp0||n<=0?e.x0:e.x0+(Math.min(t,e.bp1)-e.bp0)/n*(e.x1-e.x0)}function Xe(e,t,n){let o=Be(e,t),r=Be(e,n,!0);return{x0:Math.min(o,r),x1:Math.max(o,r)}}function Ni(e){let t;for(let n of e.values())(!t||n.length>t.length)&&(t=n);return t}var Wo=5,Pi=10,$i=110,Ii=3;function Yo(e){return e?"#b0b0b8":"#55555c"}function Ci(e){let t=10**Math.floor(Math.log10(e)),n=e/t;return(n<=1?1:n<=2?2:n<=5?5:10)*t}function Ho(e){let t=[];for(let n of e)t.every(o=>Math.abs(n.at-o.at)>=(n.width+o.width)/2+Pi)&&t.push(n);return t.map(({text:n,at:o})=>({text:n,at:o}))}function Li(e,t,n,o){let r=e[0],s=e.at(-1);if(!r||!s)return;let i=t(r.x0),a=t(s.x1),l=s.bp1-r.bp0;if(a<=i||l<=0)return;let c=Ci(l/(a-i)*$i),f=[],u=[];for(let d=Math.ceil(r.bp0/c)*c;d<=s.bp1;d+=c){let p=Math.round(t(Be(e,d)))+.5;if(p>=0&&p<=n){f.push(p);let m=d.toLocaleString("en-US");u.push({text:m,at:p,width:o(m)})}}return{spans:[{x0:i,x1:a}],ticks:f,labels:Ho(u)}}function Bi(e,t,n,o){let r=e.map(m=>({box:m,s0:t(m.x0),s1:t(m.x1)})).filter(({s0:m,s1:h})=>h>=0&&m<=n),s=r[0],i=r.at(-1);if(!s||!i)return;let a=(m,h)=>({text:m,at:h,width:o(m)}),l=(m,h)=>a(m.toLocaleString("en-US"),h),c=[],f=[],u=[],d=[];for(let{box:m,s0:h,s1:b}of r){c.push({x0:h,x1:b}),f.push(Math.round(h)+.5),b-h>=Ii&&f.push(Math.round(b)+.5);let g=a($(m.bp1-m.bp0),(h+b)/2);g.width<=b-h&&u.push(g),m!==s.box&&d.push(l(m.bp0,h))}let p=[l(s.box.bp0,s.s0),l(i.box.bp1,i.s1)];return{spans:c,ticks:f,labels:Ho([...p,...u,...d])}}function Uo(e,t,n,o,r=!1){return(r?Li:Bi)(e,t,n,o)}function Xi(e,t,n,o,r=!1){let{x:s,width:i,darkMode:a}=n;e.font="10px sans-serif";let l=Uo(t,s,i,u=>e.measureText(u).width,r);if(!l)return;let c=Yo(a),f=o+.5;e.strokeStyle=c,e.fillStyle=c,e.lineWidth=1,e.textAlign="center",e.textBaseline="top",e.beginPath();for(let{x0:u,x1:d}of l.spans)e.moveTo(Math.max(0,u),f),e.lineTo(Math.min(i,d),f);for(let u of l.ticks)e.moveTo(u,o),e.lineTo(u,o+Wo);e.stroke();for(let{text:u,at:d}of l.labels)e.fillText(u,d,o+Wo+2)}function Di(e,t,n,o){let r=[];for(let s of e){let i=n(s.x0),a=n(s.x1);a>=0&&i<=o&&r.push({node:s.name,top0:t(s.bp0),top1:t(s.bp1),bottom0:i,bottom1:a})}return r}var Fi=3;function qi(e,t,n,o){if(t<=0||o<0||o>t)return;let r=o/t,s,i=Fi;for(let a of e){let l=a.top0+(a.bottom0-a.top0)*r,c=a.top1+(a.bottom1-a.top1)*r,f=Math.max(0,Math.min(l,c)-n,n-Math.max(l,c));f<i&&(i=f,s=a.node)}return s}function jo(e,t,n){e.moveTo(t.top0,0),e.lineTo(t.top1,0),e.lineTo(t.bottom1,n),e.lineTo(t.bottom0,n),e.closePath()}function Vo(e,t,n){e.moveTo(t.top0,0),e.lineTo(t.bottom0,n),e.moveTo(t.top1,0),e.lineTo(t.bottom1,n)}function Gi(e,t,n,{highlightNode:o,darkMode:r}){if(n<=0||t.length===0)return;let s=r?"255,255,255":"0,0,0";e.beginPath();for(let i of t)jo(e,i,n);e.fillStyle=`rgba(${s},0.07)`,e.fill(),e.beginPath();for(let i of t)Vo(e,i,n);e.strokeStyle=`rgba(${s},0.35)`,e.lineWidth=.5,e.stroke(),Ko(e,t,n,o)}function Ko(e,t,n,o){let r=n>0&&o?t.find(s=>s.node===o):void 0;r&&(e.beginPath(),jo(e,r,n),e.fillStyle="rgba(255,192,203,0.5)",e.fill(),e.beginPath(),Vo(e,r,n),e.strokeStyle="#ff0000",e.lineWidth=1,e.stroke())}function zo(e,t){let n=new Map;for(let o of e){let r=t(o),s=n.get(r);s===void 0?n.set(r,[o]):s.push(o)}return n}var Wi=new Set(["_gbwt_ref","unknown"]);function Zo(e){let[t,n,o]=e?.split("#")??[];if(!(t===void 0||t===""||Wi.has(t)||n===void 0||!/^\d+$/.test(n)||o===void 0||o===""))return{sample:t,haplotype:Number(n),contig:o}}var Yi=["read_group","sample_name"],$h=[...Yi,"haplotype_sample"],De=8.401;function Hi({layers:e,coarsenedReadView:t=!1,showReads:n=!0},o){if(e!==void 0)return e;let r=t&&n,s=i=>i?{stat:"coarsen"}:{};return[{data:"haplotypes",...s(r&&!o)},{data:"reads",...s(r&&o)}]}function Jo(e,t){return e.find(n=>n.data===t)?.stat}function Ui(e,t){return{mergeNodes:e.mergeNodes??!0,showReads:e.showReads??!0,coarsenedReadView:e.coarsenedReadView??!1,layers:Hi(e,t),ignoreStrand:e.ignoreStrand??!1,nodeWidthOption:e.nodeWidthOption??"normal",charWidth:e.charWidth??De,trackWidth:e.trackWidth??15,freqWidth:e.freqWidth??"log"}}function ji(){return{rectangles:[],curves:[],corners:[],verticalRectangles:[]}}function fr(e){return{config:e,nodes:[],tracks:[],reads:[],nodeMap:new Map,nodesPerOrder:[],nodeOrders:[],assignments:[],extraLeft:[],extraRight:[],maxOrder:-1,shapes:ji(),trackForRuler:void 0,coarsenedEdgeMeta:new Map}}function ur(e,t,n=[],o={}){let r=Vi(e,t,n,o);return r&&Ki(r,o)}var pr=new WeakMap;function Vi(e,t,n=[],o={}){let r=Zi(e,t,n,o);if(r===void 0)return;let s=hr(r,r.tracks,r.reads,"measure");return s.nodes.forEach((i,a)=>{i.order>=0&&(r.nodes[a].x=i.x)}),pr.set(r,s),r}function Ki(e,t={}){return zi(e,ta(e,t.facet),Ji(e,t))}function zi(e,t,n,o){let r=pr.get(e);return r!==void 0&&t.length===e.tracks.length&&n.length===e.reads.length?r:hr(e,t,n,"topology",o)}function Zi(e,t,n,o){let r=fr(Ui(o,n.length>0));if(!(e.length===0||t.length===0)){structuredClone(e).forEach((s,i)=>{s.seq??="",s.sequenceLength??=s.seq.length,r.nodes[i+1]=s}),r.tracks=structuredClone(t),r.reads=r.config.showReads?structuredClone(n.filter(s=>s.is_secondary!==!0)):[];for(let s=r.tracks.length-1;s>=0;s-=1){let i=r.tracks[s];if(i.type??="haplotype",i.hidden===!0){r.tracks.splice(s,1);continue}i.indexOfFirstBase!==void 0&&(r.trackForRuler=i.name)}if(r.tracks.length!==0)return oa(r,0),r.nodeMap=nr(r),de(r,r.tracks),de(r,r.reads),lr(r),r.config.mergeNodes&&(or(r),Nt(r),$t(r),Ua(r),r.nodeMap=nr(r),lr(r),de(r,r.tracks),de(r,r.reads)),or(r),Sa(r),Nt(r),ka(r),Nt(r),$t(r),de(r,r.reads),{options:r.config,nodes:r.nodes,tracks:r.tracks,reads:r.reads,nodeMap:r.nodeMap,maxOrder:va(r),trackForRuler:r.trackForRuler}}}function Ji(e,{mappingQualityCutoff:t=0,focusReadNames:n=null,facet:o}){let r=n?new Set(n):null;return e.reads.filter(s=>(s.mapping_quality??0)>=t&&(r===null||s.name!==void 0&&r.has(s.name))&&(o===void 0||Qi(o,s)))}function Qi(e,t){return e.by==="haplotype_sample"?"reads"in e:(t[e.by]??null)===e.key}function ea(e){return new Set(e.tracks.filter((t,n)=>n===0||t.name===e.trackForRuler))}function ta(e,t){if(t?.by!=="haplotype_sample")return e.tracks;let n=ea(e);return e.tracks.filter(o=>n.has(o)||!("reads"in t)&&na(o)===t.key)}function na(e){return Zo(e.name)?.sample??null}function hr(e,t,n,o,r={}){let s=fr(e.options);e.nodes.forEach((d,p)=>{s.nodes[p]={...d}}),s.tracks=t.map(d=>({...d})),s.reads=n.map(d=>({...d})),s.nodeMap=e.nodeMap,s.maxOrder=e.maxOrder,s.trackForRuler=e.trackForRuler;let{layers:i,ignoreStrand:a}=s.config,l=r.haplotypes??Da,c=Jo(i,"haplotypes")==="coarsen"?Fa(s,l):void 0;c!==void 0&&(s.tracks=[c.ref]),Ba(s),Aa(s),ra(s);let f=Jo(i,"reads")==="coarsen"&&s.reads.length>0?yr(s,s.reads,"read",r.reads??l+(c?.bands.length??0)):void 0;f!==void 0&&(s.reads=f.bands);let u={};for(let[d,p,m]of[["haplotypes","haplotype",c],["reads","read",f]])m!==void 0&&($t(s,m.bands),de(s,m.bands),u[d]={unit:p,total:m.total,reverse:!a&&m.bands.some(h=>h.is_reverse)});return c!==void 0&&(s.reads=c.bands.concat(s.reads)),ia(s),s.tracks=s.tracks.concat(s.reads),o==="measure"&&Ta(s),Xa(s),{nodes:s.nodes,tracks:s.tracks,reads:s.reads,nodeMap:s.nodeMap,shapes:s.shapes,bounds:ga(s),maxOrder:s.maxOrder,trackForRuler:s.trackForRuler,coarsenedEdgeMeta:s.coarsenedEdgeMeta,coarsened:u}}function L(e){return e.startsWith("-")}function B(e){return L(e)?e.substring(1):e}function mr(e){return L(e)?e:`-${e}`}function It(e){return L(e)?B(e):mr(e)}function Qo(e){return e>0}function oa(e,t){let n=new Set,o=new Set;for(let r of e.tracks[t].sequence)L(r)?o.has(B(r))||n.add(B(r)):o.add(r);if(n.size!==0){for(let{sequence:r}of[...e.tracks,...e.reads])for(let s=0;s<r.length;s+=1)n.has(B(r[s]))&&(r[s]=It(r[s]));e.nodes.forEach(r=>{n.has(r.name)&&(r.seq=Bt(r.seq))})}}function ra(e){e.nodesPerOrder=Array.from({length:e.maxOrder+1},()=>[]);let t=new Map;e.nodes.forEach(n=>{n.y!==void 0&&er(t,n.order,n.y+n.contentHeight)}),e.tracks.forEach(n=>{n.type==="haplotype"&&n.path.forEach(o=>{er(t,o.order,(o.y??0)+n.width)})}),e.nodes.forEach((n,o)=>{n.order>=0&&n.y===void 0&&(n.y=(t.get(n.order)??0)+25,n.contentHeight=0,e.nodesPerOrder[n.order].push(o))})}function er(e,t,n){let o=e.get(t);o===void 0?e.set(t,n):e.set(t,Math.max(o,n))}var Ct=7;function sa(e){e.nodes.forEach(t=>{t.incomingReads=[],t.outgoingReads=[],t.internalReads=[]}),e.reads.forEach((t,n)=>{(t.width===void 0||t.width===0)&&(t.width=Ct),t.path.forEach((o,r)=>{if(o.node===null)return;let s=e.nodes[o.node];t.path.length===1?s.internalReads.push(n):r===0?s.outgoingReads.push([n,r]):s.incomingReads.push([n,r])})})}function ia(e){e.reads.forEach(a=>{a.path=gr(e,a)}),sa(e);let t=e.nodes.filter(a=>a.order>=0);t.sort(Dt);let n=new Map;for(let a=0;a<e.reads.length;a++){let l=e.reads[a],c=l.haplotypeShare===void 0?1:0,f=l.sourceTrackID,u=`${c}:${f}`,d=n.get(u);d===void 0?n.set(u,{layer:c,source:f,reads:new Set([a])}):d.reads.add(a)}let o=[...n.values()].sort((a,l)=>a.layer-l.layer||a.source-l.source),r=o.length>1?Ct:0;t.forEach(a=>{for(let{reads:l}of o)aa(e,l,a,r)});let s=pa(e),i=[];e.reads.forEach((a,l)=>{let c=[],f=[],u;a.path.forEach((d,p)=>{c[p]=u,d.node!==null&&(u=d)}),u=void 0;for(let d=a.path.length-1;d>=0;d-=1)f[d]=u,a.path[d].node!==null&&(u=a.path[d]);a.path.forEach((d,p)=>{if(d.y===void 0){let m=c[p],h=f[p],b=!!(h&&m&&(m.order>h.order||h.order===m.order&&h.isForward===m.isForward));d.betweenCycleReverseTraversal=b,i.push({readIndex:l,pathIndex:p,previousY:m?.y,previousNode:m?.node})}})}),i.sort((a,l)=>la(e,a,l)),i.forEach(a=>{let l=e.reads[a.readIndex],c=l.path[a.pathIndex];c.y=s[c.order],s[c.order]+=l.width})}function aa(e,t,n,o){let r=n.incomingReads.filter(([m])=>t.has(m)),s=n.outgoingReads.filter(([m])=>t.has(m)),i=n.internalReads.filter(m=>t.has(m));r.length===0&&s.length===0&&i.length===0&&(o=0);let a=n.y+n.contentHeight+o*2,l=r.map(m=>{let[h,b]=m,g=e.reads[h].path,x=b+1,M;for(let y=1;y<=b;y++){let w=g[b-y]?.y;if(w!==void 0){x=y,M=w;break}}return{entry:m,decisionStep:x,y:M}});l.sort(ca),r=l.map(m=>m.entry);let c=a,f=new Map;r.forEach(m=>{let h=e.reads[m[0]];h.path[m[1]].y=c,tr(f,h,m[1],c,n),c+=h.width});let u=c;s.sort((m,h)=>da(e,m,h));let d=new Map;c=a,s.forEach(m=>{let h=e.reads[m[0]],b=h.firstNodeOffset??0;h.path[m[1]].y=c,d.set(c,b);let g=f.get(c);g===void 0||g+1<=b?(c+=h.width,u=Math.max(u,c)):(f.set(c,0),r.forEach(x=>{let M=e.reads[x[0]],y=M.path[x[1]];y.y!==void 0&&y.y>=c&&(y.y+=h.width,tr(f,M,x[1],y.y,n))}),c+=h.width,u+=h.width)}),i.sort((m,h)=>ua(e,m,h)),i.forEach(m=>{let h=e.reads[m],b=h.firstNodeOffset??0,g=h.finalNodeCoverLength??0;for(c=a;b<(f.get(c)??-1/0)+2||g>(d.get(c)??1/0)-3;)c+=h.width;h.path[0].y=c,f.set(c,g),u=Math.max(u,c)});let p=u-n.y-n.contentHeight;n.contentHeight+=p,Ca(e,n,p)}function ca(e,t){return e.decisionStep!==t.decisionStep?e.decisionStep-t.decisionStep:e.y===void 0||t.y===void 0?(e.y===void 0?0:1)-(t.y===void 0?0:1):e.y-t.y}function tr(e,t,n,o,r){e.set(o,n===t.path.length-1?t.finalNodeCoverLength??0:r.sequenceLength)}function la(e,t,n){let o=e.reads[t.readIndex],r=e.reads[n.readIndex],s=o.path[t.pathIndex],i=r.path[n.pathIndex];if(s.order!==i.order)return s.order-i.order;if(o.sourceTrackID!==r.sourceTrackID)return o.sourceTrackID-r.sourceTrackID;if(t.previousNode&&n.previousNode){let u=e.nodes[t.previousNode],d=e.nodes[n.previousNode];if(u&&d&&u.order!==d.order)return u.order-d.order}let a=t.previousY??0,l=n.previousY??0,c=s.betweenCycleReverseTraversal===!0,f=i.betweenCycleReverseTraversal===!0;return c!==f?c?1:-1:c?l-a:a-l}function da(e,[t,n],[o,r]){let s=e.reads[t],i=e.reads[o],a=s.path.findLast(p=>p.y!==void 0)?.y,l=i.path.findLast(p=>p.y!==void 0)?.y;if(a!==void 0&&l!==void 0)return a-l;let c=(p,m)=>{let h=p.path[m]?.node;return h==null?null:e.nodes[h]??null},f=(p,m)=>{let h=m+1;for(;p.path[h]?.node===null;)h+=1;return h},u=c(s,n),d=c(i,r);for(;u!==null&&u===d;)n=f(s,n),r=f(i,r),u=c(s,n),d=c(i,r);return u!==null&&d!==null?Dt(u,d):u!==null||d!==null?u===null?-1:1:(s.firstNodeOffset??0)-(i.firstNodeOffset??0)||(s.finalNodeCoverLength??0)-(i.finalNodeCoverLength??0)}function fa(e,t){let n=e.path,o=t.path,r=0,s=0;for(;r<n.length&&s<o.length;){let i=n[r],a=o[s],l=i.order,c=a.order;if(l===c&&i.node&&a.node)return(a.y??0)-(i.y??0);l<c?r+=1:(l>c||(r+=1),s+=1)}return 0}function ua(e,t,n){let o=e.reads[t],r=e.reads[n];return(o.firstNodeOffset??0)-(r.firstNodeOffset??0)||(o.finalNodeCoverLength??0)-(r.finalNodeCoverLength??0)}function pa(e){let t=new Array(e.maxOrder+1).fill(0);return e.nodes.forEach(n=>{n.y!==void 0&&(t[n.order]=Math.max(t[n.order],n.y+n.contentHeight+20))}),e.tracks.forEach(n=>{n.path.forEach(o=>{t[o.order]=Math.max(t[o.order],(o.y??0)+n.width)})}),t}function gr(e,t){let n=[],o=(l,c)=>{n.push({order:l,isForward:c,node:null})},r=(l,c,f)=>{n.push({order:l,isForward:c,node:f})},s=Math.abs(t.indexSequence[0]),i=Qo(t.indexSequence[0]),a=e.nodes[s];r(a.order,i,s);for(let l=1;l<t.sequence.length;l+=1){let c=a,f=i;s=Math.abs(t.indexSequence[l]),i=Qo(t.indexSequence[l]),a=e.nodes[s];let{order:u}=a;if(u>c.order){f||o(c.order,!0);for(let d=c.order+1;d<u;d+=1)o(d,!0);i||o(u,!0)}else if(u<c.order){f&&o(c.order,!1);for(let d=c.order-1;d>u;d-=1)o(d,!1);i&&o(u,!1)}else i===f&&o(u,!i);r(u,i,s)}return n}function $t(e,t=e.reads){t.forEach(n=>{if(!n.sequence.every(L))return;n.is_reverse=n.is_reverse!==!0,n.sequence=n.sequence.toReversed().map(B),n.sequenceNew!==void 0&&(n.sequenceNew=n.sequenceNew.toReversed());for(let i of n.sequenceNew??[]){i.nodeName=B(i.nodeName);let{sequenceLength:a}=At(e,i.nodeName);i.mismatches=i.mismatches.map(l=>Lt(l,a))}let o=n.firstNodeOffset??0,r=At(e,n.sequence[0]).sequenceLength,s=At(e,n.sequence.at(-1)).sequenceLength;n.firstNodeOffset=r-(n.finalNodeCoverLength??0),n.finalNodeCoverLength=s-o})}function Lt(e,t){let n=e.type==="insertion"?0:e.type==="deletion"?e.length??0:e.seq?.length??0;return{...e,pos:t-e.pos-n,...e.seq!==void 0&&{seq:Bt(e.seq)}}}var ha={A:"T",T:"A",C:"G",G:"C"};function Bt(e){let t="";for(let n=e.length-1;n>=0;n-=1)t+=ha[e.charAt(n)]??"N";return t}function de(e,t){let n=new Map;t.forEach(o=>{o.indexSequence=o.sequence.map(r=>{let s=n.get(r);if(s===void 0){let i=e.nodeMap.get(B(r));if(i===void 0)throw new Error(`Track ${o.name??o.id} visits unknown node ${r}`);s=L(r)?-i:i,n.set(r,s)}return s})})}var ma=20;function ga(e){let t={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0},{rectangles:n,verticalRectangles:o,curves:r}=e.shapes;for(let s of[n,o,r])for(let{xStart:i,xEnd:a}of s)t.minX=Math.min(t.minX,i,a),t.maxX=Math.max(t.maxX,i,a);return e.nodes.forEach(s=>{s.x!==void 0&&(t.minX=Math.min(t.minX,s.x-9),t.maxX=Math.max(t.maxX,s.x+ma+s.pixelWidth)),s.y!==void 0&&(t.minY=Math.min(t.minY,s.y-10),t.maxY=Math.max(t.maxY,s.y+s.contentHeight+10))}),e.tracks.forEach(s=>{s.path.forEach(i=>{let a=i.y??0;t.maxY=Math.max(t.maxY,a+s.width),t.minY=Math.min(t.minY,a)})}),t}function At(e,t){let n=e.nodeMap.get(B(t)),o=n===void 0?void 0:e.nodes[n];if(o===void 0)throw new Error(`Unknown node ${t}`);return o}function nr(e){let t=new Map;return e.nodes.forEach((n,o)=>{t.set(n.name,o)}),t}function or(e){let t=e.nodes.map(()=>new Set),n=e.nodes.map(()=>new Set),o=r=>{for(let s=0;s<r.indexSequence.length-1;s+=1){let i=Math.abs(r.indexSequence[s]),a=Math.abs(r.indexSequence[s+1]);t[i].add(a),n[a].add(i)}};e.tracks.forEach(o),e.reads.forEach(o),e.nodes.forEach((r,s)=>{r.successors=Array.from(t[s]),r.predecessors=Array.from(n[s])})}function rr(e,t){let n=0,o=0,r=0;t.forEach(s=>{let i=Math.abs(s);if(s<0){let a=e.nodeOrders[i]??=o;a<r&&(r=a),n=a,o=a-1}else{let a=e.nodeOrders[i]??=n;n=a+1,o=a}}),r<0&&Xt(e,-r)}function ba(e,t){let n=0,o=0;for(;n<t.length&&e.nodeOrders[Math.abs(t[n])]===void 0;)n+=1;if(n>=t.length)return null;let r=t[n],s,i;r>=0?(s=e.nodeOrders[r]-1,i=-1):(s=e.nodeOrders[-r]+1,i=1);for(let a=n-1;a>=0;a-=1){let l=Math.abs(t[a]);e.nodeOrders[l]===void 0&&(e.nodeOrders[l]=s,o=Math.min(o,s),s+=i)}return o<0&&Xt(e,-o),n}var xa=-1;function ya(e){return Array.from(e,t=>t??xa)}function wa(e){let t=[...new Set(e.filter(o=>o>=0))].sort((o,r)=>o-r),n=new Map(t.map((o,r)=>[o,r]));return e.map(o=>n.get(o)??o)}function Nt(e){let t,n,o,r,s=0,i=e.tracks.concat(e.reads),a={stamp:new Int32Array(e.nodes.length),generation:0};e.nodeOrders=new Array(e.nodes.length).fill(void 0),e.nodes.forEach(l=>{l.order=void 0}),rr(e,e.tracks[0].indexSequence);for(let l=1;l<i.length;l+=1){if(o=ba(e,i[l].indexSequence),o===null){l<e.tracks.length?rr(e,i[l].indexSequence):(i.splice(l,1),e.reads.splice(l-e.tracks.length,1),l-=1);continue}for(t=Ea(i[l].indexSequence);o<t.length;){for(r=o,o+=1;o<t.length&&e.nodeOrders[t[o]]===void 0;)o+=1;if(o<t.length){n=e.nodeOrders[t[r]]+1;for(let c=r+1;c<o;c+=1)e.nodeOrders[t[c]]=n,n+=1;if(e.nodeOrders[t[o]]>e.nodeOrders[t[r]])e.nodeOrders[t[o]]<n&&sr(e,t[o],t[o-1],n);else if(i[l].indexSequence[o]>=0&&!Ma(e,t[o],t[r],a))sr(e,t[o],t[o-1],n);else if(i[l].indexSequence[r]<0||e.nodes[t[r+1]].degree<2&&e.nodeOrders[t[o]]<e.nodeOrders[t[r]]){n=e.nodeOrders[t[r]]-1;for(let c=r+1;c<o;c+=1)e.nodeOrders[t[c]]=n,s=Math.min(s,n),n-=1}}else if(i[l].indexSequence[r]>=0){n=e.nodeOrders[t[r]]+1;for(let c=r+1;c<t.length;c+=1){let f=t[c];e.nodeOrders[f]===void 0&&(e.nodeOrders[f]=n,n+=1)}}else{n=e.nodeOrders[t[r]]-1;for(let c=r+1;c<t.length;c+=1){let f=t[c];e.nodeOrders[f]===void 0&&(e.nodeOrders[f]=n,s=Math.min(s,n),n-=1)}}}}s<0&&Xt(e,-s),e.nodeOrders=wa(ya(e.nodeOrders)),e.nodes.forEach((l,c)=>{l.order=e.nodeOrders[c]})}function Ma(e,t,n,o){o.generation+=1;let{stamp:r,generation:s}=o,i=[t];for(r[t]=s;i.length>0;){let a=i.pop();if(a===n)return!0;for(let l of e.nodes[a].successors)r[l]!==s&&(r[l]=s,i.push(l))}return!1}function va(e){let t=-1;return e.nodeOrders.forEach(n=>{n!==void 0&&n>t&&(t=n)}),t}function Ea(e){return e.map(t=>Math.abs(t))}function Xt(e,t){e.nodeOrders.forEach((n,o)=>{n!==void 0&&(e.nodeOrders[o]=n+t)})}function sr(e,t,n,o){let r=new Map,s=[[t,o]],i=0;for(;i<s.length;){let[a,l]=s[i];i+=1;let c=e.nodeOrders[a];c!==void 0&&c<l&&(r.get(a)??-1/0)<l&&(r.set(a,l),e.nodes[a].successors.forEach(f=>{e.nodeOrders[f]>c&&f!==n&&s.push([f,l+1])}),a!==t&&e.nodes[a].predecessors.forEach(f=>{e.nodeOrders[f]>c&&f!==n&&s.push([f,l+1])}))}r.forEach((a,l)=>{e.nodeOrders[l]=a})}function Sa(e){e.nodes.forEach(t=>{t.tracks=[]}),e.tracks.forEach(t=>{t.indexSequence.forEach(n=>{e.nodes[Math.abs(n)].tracks.push(t.id)})}),e.nodes.forEach(t=>{t.degree=t.tracks.length})}function ka(e){Ra(e,[...e.tracks.slice(1),...e.reads],e.tracks[0])}function Ra(e,t,n){let o=new Int32Array(e.nodes.length),r=new Uint8Array(e.nodes.length);for(let s of n.sequence){let i=L(s)?void 0:e.nodeMap.get(s);i!==void 0&&(r[i]=1)}for(let s of t){let{sequence:i,indexSequence:a}=s,l=a.length-1;for(let c=0;c<=l;c+=1){let f=Math.abs(a[c]);if(r[f]===1)continue;let u=e.nodes[f].order,d=c>0?e.nodes[Math.abs(a[c-1])].order:void 0,p=c<l?e.nodes[Math.abs(a[c+1])].order:void 0,m=L(i[c])?1:-1;(d===void 0||d<u)&&(p===void 0||u<p)&&(o[f]+=m),(d===void 0||d>u)&&(p===void 0||u>p)&&(o[f]-=m)}}for(let s of t){let{sequence:i,indexSequence:a}=s;for(let l=0;l<a.length;l+=1)o[Math.abs(a[l])]>0&&(i[l]=It(i[l]),a[l]=-a[l])}e.nodes.forEach((s,i)=>{o[i]>0&&(s.seq=Bt(s.seq),s.switched=!0)})}function Ta(e){let t=0,n=20,o=-1,r=e.nodes.slice();r.sort(Dt);let s=Oa(e);r.forEach(i=>{i.order>=0&&(i.order>o&&(o=i.order,t=n+10*s[i.order]),i.x=t,n=Math.max(n,t+40+i.pixelWidth))})}var Pt=35;function _a(e){return e<=Pt?e/17.5:Pt/17.5*Math.sqrt(e/Pt)}function Oa(e){let t=e.maxOrder+1,n=new Array(t).fill(0),o=new Array(t).fill(0),r=new Array(t).fill(0),s=[];e.tracks.forEach(i=>{for(let a=1;a<i.path.length;a+=1){let l=i.path[a],c=i.path[a-1];l.order===c.order?l.isForward?n[l.order]+=1:o[l.order]+=1:r[l.order]=Math.max(_a(Math.abs((l.y??0)-(c.y??0))),r[l.order])}}),s.push(Math.max(0,n[0]-1));for(let i=1;i<=e.maxOrder;i+=1)s.push(Math.max(Math.max(0,n[i]-1)+Math.max(0,o[i-1]-1),r[i]));return s}function Aa(e){e.assignments=Array.from({length:e.maxOrder+1},()=>[]);let t=new Map;e.tracks.forEach((n,o)=>{n.path=gr(e,n),n.path.forEach(({order:r,node:s},i)=>{let a={trackID:o,segmentID:i},l=s===null?void 0:t.get(s);if(l===void 0){let c={node:s,tracks:[a]};e.assignments[r].push(c),s!==null&&t.set(s,c)}else l.tracks.push(a)})});for(let n=0;n<=e.maxOrder;n+=1)$a(e,e.assignments[n],n)}function Na(e,t,n){t.forEach(o=>{let r=0;o.tracks.forEach(s=>{let i=Pa(e.tracks[s.trackID].path,s.segmentID,n-1);s.idealLane=i===void 0?s.trackID:i.lane,s.idealY=i===void 0?null:i.y,r+=s.idealLane}),o.idealLane=r/o.tracks.length})}function Pa(e,t,n){if(t!==0)return e[t-1].order===n?e[t-1]:e[t+1]?.order===n?e[t+1]:e.slice(0,t).findLast(o=>o.order===n)}function $a(e,t,n){let o=0,r=new Set,s=20,i=!1,a=-1;Na(e,t,n),t.sort(ir),t.forEach(l=>{let c=l.node===null?void 0:e.nodes[l.node];c!==void 0?(i&&(s-=10),c.y=s,c.contentHeight=0,i=!1):(i?s-=25:s>20&&(s-=10),i=!0),l.tracks.sort(ir),l.tracks.forEach(f=>{let{path:u,width:d}=e.tracks[f.trackID];f.trackID===a&&c===void 0&&i&&(s+=10),u[f.segmentID].lane=o,u[f.segmentID].y=s,typeof f.idealY=="number"&&r.add(f.idealY-s),o+=1,s+=d,c!==void 0&&(c.contentHeight+=d),a=f.trackID}),s+=25}),Ia(e,t,r)}function Ia(e,t,n){let o=0,r=Number.MAX_SAFE_INTEGER;n.forEach(s=>{let i=La(e,t,s);i<r&&(r=i,o=s)}),t.forEach(s=>{s.node!==null&&(e.nodes[s.node].y+=o),s.tracks.forEach(i=>{let a=e.tracks[i.trackID].path[i.segmentID];a.y=a.y+o})})}function Ca(e,t,n){t.order<0||e.assignments[t.order]===void 0||(e.assignments[t.order].forEach(o=>{if(o.node!==null){let r=e.nodes[o.node];r!==t&&r.y>t.y&&(r.y+=n,o.tracks.forEach(s=>{let i=e.tracks[s.trackID].path[s.segmentID];i.y=i.y+n}))}else o.tracks.forEach(r=>{let s=e.tracks[r.trackID].path[r.segmentID];s.y>=t.y&&(s.y=s.y+n)})}),e.nodesPerOrder[t.order].forEach(o=>{let r=e.nodes[o];r!==t&&r.y>t.y&&(r.y+=n)}))}function La(e,t,n){let o=0;return t.forEach(r=>{r.tracks.forEach(s=>{let{type:i,path:a,width:l}=e.tracks[s.trackID];typeof s.idealY=="number"&&i!=="read"&&(o+=Math.abs(s.idealY-n-a[s.segmentID].y)*l)})}),o}function ir(e,t){return e.idealLane===void 0||t.idealLane===void 0?+(e.idealLane===void 0)-+(t.idealLane===void 0):e.idealLane-t.idealLane}function Dt(e,t){return e.order!==t.order?e.order-t.order:e.y!==void 0&&t.y!==void 0?e.y-t.y:0}function Ba(e){let n=e.config.trackWidth;if(e.config.freqWidth==="linear"){for(let o of e.tracks)o.width=o.type==="read"?4:Math.max(1,Math.round(o.freq??1))*n;return}for(let o of e.tracks)o.width=o.freq!==void 0?Math.round((Math.log(Math.max(o.freq,1))+1)*4):o.type==="read"?4:n;e.tracks.every(o=>o.width===4)&&e.tracks.forEach(o=>{o.freq!==void 0&&(o.width=n)})}function ar(e,t,n){let o=e.nodes[t.node];return xr(o,t.isForward?n:o.sequenceLength-n)}function br(e,t){return t>e.sequenceLength?null:xr(e,t)}function xr(e,t){let[n,o]=Ha(e);if(e.sequenceLength===0)return n;let r=Math.min(Math.max(t,0),e.sequenceLength);return n+r/e.sequenceLength*(o-n)}function Xa(e){e.extraLeft=new Array(e.maxOrder+1).fill(0),e.extraRight=new Array(e.maxOrder+1).fill(0);let t=[],n=[];e.nodes.forEach(r=>{r.x!==void 0&&(t[r.order]=r.x,n[r.order]=Math.max(n[r.order]??-1/0,r.x+r.pixelWidth))});let o=e.tracks[0];e.tracks.sort(fa),e.tracks.forEach(r=>{let{id:s,name:i,type:a,width:l,path:c}=r,f=(g,x,M)=>{e.shapes.rectangles.push({xStart:Math.min(g,x),yStart:M,xEnd:Math.max(g,x),yEnd:M+l-1,id:s,name:i,type:a})},u=g=>g.isForward?n[g.order]:t[g.order],d=c[0],p=d.y,m=a==="read"?ar(e,d,r.firstNodeOffset??0):d.isForward?t[d.order]-20:n[d.order]+20;for(let g=1;g<c.length;g+=1){let x=c[g-1],M=c[g];if(M.y===p)continue;let y=u(x);y!==m&&f(m,y,p);let w=M.y,v=M.order-x.order;if(v===1||v===-1){let k=v===1?t[M.order]:n[M.order];e.shapes.curves.push({xStart:v===1?y:y+1,yStart:p,xEnd:v===1?k+1:k,yEnd:w,width:l,id:s,name:i,type:a,nodeStart:x.node,nodeEnd:M.node,orderStart:x.order,orderEnd:M.order,...r===o?{reference:!0}:{}}),m=k}else Ya(e,r,x.isForward?1:-1,y,p,w,M.order),m=y;p=w}let h=c[c.length-1],b=a==="read"?ar(e,h,r.finalNodeCoverLength??0):u(h)+(h.isForward?20:-20);f(m,b,p)})}var Da=1e9;function yr(e,t,n,o){let r=new Map,s=0,i=e.nodes.length,a=(h,b)=>(h+i)*(2*i+1)+b+i,l=e.config.ignoreStrand;for(let[h,b]of t.entries()){let g=Math.max(b.freq??1,1);s+=g;let x=b.indexSequence;if(!(x.length<2))for(let M=0;M<x.length-1;M+=1){let y=x[M],w=x[M+1],v=e.nodes[Math.abs(y)],k=e.nodes[Math.abs(w)],T=l?Math.min(a(y,w),a(-w,-y)):a(y,w),E=r.get(T);E===void 0?r.set(T,{sSigned:y,dSigned:w,sName:y<0?`-${v.name}`:v.name,dName:w<0?`-${k.name}`:k.name,count:g,crossings:g,sourceTrackID:b.sourceTrackID,lastSource:h}):(E.crossings+=g,E.lastSource!==h&&(E.count+=g,E.lastSource=h))}}let c=0;for(let h of r.values())h.crossings>c&&(c=h.crossings);let f=Ct,u=60,d=h=>c<=1?f:f+(u-f)*Math.sqrt(h/c),p=[],m=0;for(let h of r.values()){let b=o+m,g=n==="haplotype"?{count:h.count,total:s}:void 0,x=g===void 0?"":` (${Wa(g)})`,M=h.crossings===h.count?"":`, ${h.crossings.toLocaleString()} crossings`,y=`${h.count.toLocaleString()} ${n}${h.count===1?"":"s"}${x}${M}: Node ${h.sName} \u2192 Node ${h.dName}`;e.coarsenedEdgeMeta.set(b,{count:h.count,label:y});let w=e.nodes[Math.abs(h.sSigned)].sequenceLength;p.push({id:b,sourceTrackID:h.sourceTrackID,type:"read",name:y,sequence:[h.sName,h.dName],indexSequence:[],path:[],width:d(h.crossings),firstNodeOffset:w,finalNodeCoverLength:0,sequenceNew:[{nodeName:h.sName,mismatches:[]},{nodeName:h.dName,mismatches:[]}],mapping_quality:0,is_secondary:!1,sample_name:null,read_group:null,score:h.count,haplotypeShare:g}),m+=1}return{bands:p,total:s}}function Fa(e,t){let n=e.trackForRuler===void 0?-1:e.tracks.findIndex(f=>f.name===e.trackForRuler),o=n===-1?0:n,r=e.tracks[o],s=(r.freq??1)-1,i=Ga(e,r),a=e.tracks.filter((f,u)=>u!==o).map(f=>qa(i,f));if(s>0&&a.push({...r,freq:s}),a.length===0)return;let{bands:l,total:c}=yr(e,a,"haplotype",t);return l.length>0?{ref:r,bands:l,total:c}:void 0}function qa(e,t){let n=0;for(let o of t.indexSequence){let r=e[Math.abs(o)];r!==void 0&&r!==0&&(n+=r===Math.sign(o)?1:-1)}return n>=0?t:{...t,sequence:t.sequence.map(It).reverse(),indexSequence:t.indexSequence.map(o=>-o).reverse()}}function Ga(e,t){let n=new Int8Array(e.nodes.length);for(let o of t.indexSequence){let r=Math.abs(o);n[r]===0&&(n[r]=Math.sign(o))}return n}function Wa({count:e,total:t}){let n=e/t;return n<.01?"<1%":n>.99&&e<t?">99%":`${Math.round(n*100)}%`}var cr=7;function Ya(e,{width:t,id:n,name:o,type:r},s,i,a,l,c){let f=s===1?e.extraRight:e.extraLeft,u=10*f[c],d=i+s*(u+5),p=cr,m=Math.min(cr,t),h=Math.min(a,l),b=Math.max(a,l),g=s===1?i:d-1,x=s===1?d:i,M=k=>{e.shapes.verticalRectangles.push({xStart:g,yStart:k,xEnd:x,yEnd:k+t-1,id:n,name:o,type:r})};M(a),e.shapes.verticalRectangles.push({xStart:s===1?d+p:d-p-m,yStart:h+t+p-1,xEnd:s===1?d+p+m-1:d-p-1,yEnd:b-p+1,id:n,name:o,type:r}),M(l);let y=d+s*p,w=d+s*(p+m),v=`M ${d} ${b}`;v+=` Q ${y} ${b} ${y} ${b-p}`,v+=` H ${w}`,v+=` Q ${w} ${b+t} ${d} ${b+t}`,v+=" Z ",e.shapes.corners.push({path:v,id:n,name:o,type:r}),v=`M ${d} ${h}`,v+=` Q ${w} ${h} ${w} ${h+t+p}`,v+=` H ${y}`,v+=` Q ${y} ${h+t} ${d} ${h+t}`,v+=" Z ",e.shapes.corners.push({path:v,id:n,name:o,type:r}),f[c]+=1}function Ha(e){let t=e.x-4,n=e.x+e.pixelWidth+4;return[t,n]}function lr(e){switch(e.config.nodeWidthOption){case"compressed":e.nodes.forEach(t=>{t.width=1+Math.log2(Math.max(t.sequenceLength,1)),t.pixelWidth=Math.round((t.width-1)*De)});break;case"small":e.nodes.forEach(t=>{t.width=t.sequenceLength/100,t.pixelWidth=Math.max(Math.round((t.width-1)*De),0)});break;case"fixed":e.nodes.forEach(t=>{t.width=10,t.pixelWidth=Math.round(t.width*De)});break;case"normal":{let t=e.config.charWidth;e.nodes.forEach(n=>{n.width=n.sequenceLength,n.pixelWidth=Math.round(t*Math.max(n.sequenceLength-1,0))});break}default:throw new Error(`${e.config.nodeWidthOption} not implemented`)}}var ne=0;function dr(e){return{first:new Int32Array(e),count:new Uint8Array(e)}}function D(e,t,n){let o=e.count[t];o===0?(e.first[t]=n,e.count[t]=1):o===1&&e.first[t]!==n&&(e.count[t]=2)}function Me(e,t){return e.count[t]===1?Math.abs(e.first[t]):0}function Ua(e){let t=dr(e.nodes.length),n=dr(e.nodes.length),o=new Map,r=u=>{let d=o.get(u);if(d===void 0){let p=e.nodeMap.get(B(u));d=L(u)?-p:p,o.set(u,d)}return d};e.tracks.concat(e.reads).forEach(u=>{let{sequence:d}=u,p=u.type==="haplotype",m=d.length-1,h=ne,b=m>=0?r(d[0]):ne;for(let g=0;g<=m;g+=1){let x=g<m?r(d[g+1]):ne;if(b>0)g>0?(D(t,b,h),h<0&&D(t,b,-h)):p&&D(t,b,ne),g<m?(D(n,b,x),x<0&&D(n,b,-x)):p&&D(n,b,ne);else{let M=-b;g>0?(D(n,M,-h),h>0&&D(n,M,h)):p&&D(n,M,ne),g<m?(D(t,M,-x),x>0&&D(t,M,x)):p&&D(t,M,ne)}h=b,b=x}});let i=new Uint8Array(e.nodes.length);e.nodes.forEach((u,d)=>{ja(d,t,n)&&(i[d]=1)});let a=new Int32Array(e.nodes.length),l=new Float64Array(e.nodes.length),c=new Float64Array(e.nodes.length);e.nodes.forEach((u,d)=>{if(i[d]!==1){a[d]=d,c[d]=u.sequenceLength;for(let p=d;Va(p,t,n);)p=Me(n,p),a[p]=d,l[p]=u.sequenceLength,u.sequenceLength+=e.nodes[p].sequenceLength,u.seq+=e.nodes[p].seq,c[p]=u.sequenceLength}}),e.reads.forEach(u=>{let{sequence:d}=u,p=u.sequenceNew??d.map(M=>({nodeName:M,mismatches:[]})),m=M=>{let y=Math.abs(r(M));return L(M)?e.nodes[a[y]].sequenceLength-c[y]:l[y]},h=d.length-1;u.firstNodeOffset=(u.firstNodeOffset??0)+m(d[0]),u.finalNodeCoverLength=(u.finalNodeCoverLength??0)+m(d[h]);let b=[],g=[],x=[];d.forEach((M,y)=>{let w=Math.abs(r(M)),{mismatches:v}=p[y],k=m(M);if(v.forEach(T=>{T.pos+=k}),i[w]===1&&!L(M)&&y>0)g.at(-1).mismatches.push(...v);else if(i[w]===1&&L(M)&&y<h)x.push(...v);else{let T=e.nodes[a[w]].name,E=L(M)?mr(T):T;b.push(E),g.push({nodeName:E,mismatches:x.concat(v)}),x=[]}}),u.sequence=b,u.sequenceNew!==void 0&&(u.sequenceNew=g)}),e.tracks.forEach(u=>{let{sequence:d}=u,p=0;for(let m of d)i[Math.abs(r(m))]===0&&(d[p]=m,p+=1);d.length=p});let f=1;for(let u=1;u<e.nodes.length;u+=1)i[u]===0&&(e.nodes[f]=e.nodes[u],f+=1);e.nodes.length=f}function ja(e,t,n){let o=Me(t,e);return o!==0&&Me(n,o)!==0}function Va(e,t,n){let o=Me(n,e);return o!==0&&Me(t,o)!==0}function Ka(e,t){return t.xStart-e.xStart||e.yStart-t.yStart}function Ft(e){return[e.nodeStart??-1,e.nodeEnd??-1,e.nodeStart===null?e.orderStart:-1,e.nodeEnd===null?e.orderEnd:-1]}function za(e,t){for(let n=0;n<e.length;n+=1){let o=e[n]-t[n];if(o!==0)return o}return 0}var wr=.75,Fe=.8;function Za(e,t){let n=e[0],o=Math.min(Math.abs(n.xEnd-n.xStart),t);if(o===0)return e.map(()=>0);let r=e.length>5?.4/e.length:0,s=e.map(d=>{let p=Math.abs(d.yEnd-d.yStart),m=p/Math.hypot(p,o)*Math.min(d.width,Fe*wr*o);return Math.max(r,m/(wr*o))}),i=d=>s.reduce((p,m,h)=>p+(d(e[h])?m:0),0),a=i(d=>d.reference===!0),l=i(d=>d.reference!==!0),c=a>Fe?Fe/a:1,f=Fe-a*c,u=l>f?f/l:1;return s.map((d,p)=>d*(e[p].reference?c:u))}function Mr(e,t,{gapWidth:n=1/0}={}){let o=zo(e.filter(r=>r.type===t),r=>Ft(r).join(","));return o.forEach(r=>{r.sort(Ka);let s=Za(r,n),i=.5-s.reduce((a,l)=>a+l,0)/2;r.forEach((a,l)=>{let c=p=>a.xStart+(a.xEnd-a.xStart)*(a.yStart<a.yEnd?1-p:p),f=c(i);i+=s[l];let u=c(i),d=`M ${a.xStart} ${a.yStart}`;d+=` C ${f} ${a.yStart} ${f} ${a.yEnd} ${a.xEnd} ${a.yEnd}`,d+=` V ${a.yEnd+a.width}`,d+=` C ${u} ${a.yEnd+a.width} ${u} ${a.yStart+a.width} ${a.xStart} ${a.yStart+a.width}`,d+=" Z",a.path=d})}),[...o.values()].sort((r,s)=>za(Ft(r[0]),Ft(s[0]))).flat()}function vr(e,t=16){let n=e.match(/[A-Za-z]|-?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?/g)??[],o=[],r=0,s=0,i=0,a=()=>Number(n[i++]);for(;i<n.length;){let l=n[i++];if(l==="M"||l==="L")r=a(),s=a(),o.push([r,s]);else if(l==="H")r=a(),o.push([r,s]);else if(l==="V")s=a(),o.push([r,s]);else if(l==="C"){let[c,f,u,d,p,m]=[a(),a(),a(),a(),a(),a()];for(let h=1;h<=t;h+=1){let b=h/t,g=1-b,x=g*g*g,M=3*g*g*b,y=3*g*b*b,w=b*b*b;o.push([x*r+M*c+y*u+w*p,x*s+M*f+y*d+w*m])}r=p,s=m}else if(l==="Q"){let[c,f,u,d]=[a(),a(),a(),a()];for(let p=1;p<=t;p+=1){let m=p/t,h=1-m;o.push([h*h*r+2*h*m*c+m*m*u,h*h*s+2*h*m*f+m*m*d])}r=u,s=d}else if(l!=="Z")throw new Error(`flattenPath: unsupported path command ${l}`)}return o}function Er(e){let t=`M ${e.x-9} ${e.y} Q ${e.x-9} ${e.y-9} ${e.x} ${e.y-9}`,n=e.x,o=e.y-9;return e.width>1&&(n+=e.pixelWidth,t+=` L ${n} ${o}`),t+=` Q ${n+9} ${o} ${n+9} ${o+9}`,n+=9,o+=9,e.contentHeight>0&&(o+=e.contentHeight,t+=` L ${n} ${o}`),t+=` Q ${n} ${o+9} ${n-9} ${o+9}`,n-=9,o+=9,e.width>1&&(n-=e.pixelWidth,t+=` L ${n} ${o}`),t+=` Q ${n-9} ${o} ${n-9} ${o-9}`,n-=9,o-=9,e.contentHeight>0&&(o-=e.contentHeight,t+=` L ${n} ${o}`),t}function qt(e){let t=new Map(e.nodes.map(r=>[r.id,r])),n=e.pathVisits,o=n?.replay();return(e.paths??[]).map(r=>{let s=n?.pathIndex(P(r.name).name)??-1;return r.nodeIds.flatMap(i=>{let a=t.get(i);if(!a)return[];let l=n&&o?o(n.slot(a.name),s):-1;return[{node:a,strand:l>=0?n.strand(l):j(a.id)}]})})}function Ja(e){let t=qt(e),n=(e.paths??[]).flatMap((s,i)=>{let a=t[i].map(l=>yt(l.node,l.strand));return a.length>0?[{id:i,name:s.name,sequence:a,sourceTrackID:0,type:"haplotype",...s.members?{freq:s.members.length}:{}}]:[]}),o=Se(e),r=n.findIndex(s=>P(s.name).name===o);return r>0&&n.unshift(...n.splice(r,1)),n}function Qa(e){return e.nodes.map(t=>({name:t.id,seq:"",sequenceLength:Math.max(1,t.length)}))}function kr(e){return(e.paths?.length??0)>0}var ec=600,tc=3,nc=15;function oc(e){return Math.max(tc,Math.min(nc,Math.floor(ec/Math.max(1,e))))}function rc(e){let t=new Set,n=new Set;for(let o of e?.sequence??[])L(o)?n.has(B(o))||t.add(B(o)):n.add(o);return t}function sc(e,t,n){let o=rc(n[0]),r=new Map;for(let{sequence:l,is_secondary:c}of n)c||l.forEach((f,u)=>{let d=B(f),m=L(f)!==o.has(d)?l[u+1]:l[u-1];!t.nodeMap.has(d)&&m!==void 0&&r.set(d,B(m))});let s=new Map(e.nodes.map(l=>[l.id,Math.max(1,l.length)])),i=new Map([...r].map(([l,c])=>[c,l])),a=new Map;for(let l of i.keys()){let c=t.nodeMap.get(l);if(c!==void 0){let f=[l];for(let d=i.get(l);d!==void 0;d=i.get(d))f.push(d);f.reduce((d,p)=>d+(s.get(p)??0),0)===t.nodes[c].sequenceLength&&a.set(l,f)}}return{members:a,flipped:o}}var ic={start:"end",end:"start"},Sr={"+":"-","-":"+"};function ac(e,{members:t,flipped:n}){if(t.size===0)return e;let o=new Map(e.nodes.map(d=>[d.id,d])),r=new Map,s=new Set,i=(d,p)=>n.has(d)?ic[p]:p;for(let[d,p]of t)p.forEach((m,h)=>{r.set(m,d);let b=p[h+1];b!==void 0&&s.add(`${m}:${i(m,"end")} ${b}:${i(b,"start")}`)});let a=new Set([...r].filter(([d,p])=>d!==p).map(([d])=>d)),l=e.nodes.flatMap(d=>{let p=t.get(d.id);if(!p)return a.has(d.id)?[]:[d];let m=p.map(b=>o.get(b)),h=m.flatMap(b=>b.stable?[b.stable.start]:[]);return[{...d,length:m.reduce((b,g)=>b+g.length,0),stable:d.stable&&{...d.stable,start:Math.min(...h)}}]}),c=(d,p,m)=>i(p,i(d,m))==="end"?j(p):Sr[j(p)],f=e.edges.flatMap(d=>{let p=bn(d),m=`${d.from}:${p.from}`,h=`${d.to}:${p.to}`;if(s.has(`${m} ${h}`)||s.has(`${h} ${m}`))return[];let b=r.get(d.from),g=r.get(d.to);return[{...d,...b===void 0?{}:{from:b,fromStrand:c(d.from,b,p.from)},...g===void 0?{}:{to:g,toStrand:Sr[c(d.to,g,p.to)]}}]}),u=new Set([...a].map(d=>o.get(d)?.name??d));return{...e,nodes:l,edges:f,paths:e.paths?.map(d=>({...d,nodeIds:d.nodeIds.filter(p=>!a.has(p))})),pathVisits:e.pathVisits?.filter(()=>!0,d=>!u.has(d))}}function Rr(e){let t=e.paths??[],n=Ja(e),o=e.reads?Eo(e,e.reads,t.length):[],r=o.length>0?Sn:En,s=t.map((f,u)=>r(u,t.length)),i=t.some(f=>f.members),a=t.reduce((f,u)=>f+(u.members?.length??1),0),l=ur(Qa(e),n,o,{nodeWidthOption:"compressed",trackWidth:oc(i?a:n.length),...i?{freqWidth:"linear"}:{}});if(!l)return;let c=sc(e,l,[...n,...o]);return{layout:l,pathColors:s,members:c.members,graph:ac(e,c)}}function Gt(e){let t=[];return e.nodes.forEach(n=>{n.order>=0&&t.push(n)}),t}function Tr(e,t,n,o){let r=e.y+e.contentHeight/2-t;return[{x:n,y:r},{x:o,y:r}]}function _r(e,t){return{minY:e.bounds.minY-t,maxY:e.bounds.maxY-t}}function Hh(e){let t=kr(e)?Rr(e):void 0;if(!t)return;let{layout:n,...o}=t,r=n.bounds.minY,s={};for(let l of Gt(n))s[l.name]=Tr(l,r,l.x,l.x+l.pixelWidth);let{minY:i,maxY:a}=_r(n,r);return{nodePositions:s,tubeMap:{layout:n,yOffset:r,...o},extent:{minX:n.bounds.minX,maxX:n.bounds.maxX,minY:i,maxY:a}}}function cc(e,t){let n=new Map(e.nodes.map(a=>[a.id,a])),o=nn(Gt(t),a=>a.order),r=[],s=-1/0;for(let a of[...o.keys()].sort((l,c)=>l-c)){let l=o.get(a),c=1/0,f=-1/0;for(let u of l){let d=n.get(u.name);d&&N(d)&&(c=Math.min(c,d.stable.start),f=Math.max(f,d.stable.start+d.length))}c===1/0&&(c=f=s),c<s&&(c=s,f=Math.max(s,f)),s=Math.max(s,f),r.push({order:a,x0:Math.min(...l.map(u=>u.x)),x1:Math.max(...l.map(u=>u.x+u.pixelWidth)),bp0:c,bp1:f})}let i=r.find(a=>a.bp0!==-1/0);for(let a of r)a.bp0===-1/0&&(a.bp0=a.bp1=i?.bp0??0);return r}function lc(e){return kr(e)&&e.nodes.some(N)}function Uh(e){let t=lc(e)?Rr(e):void 0;if(!t)return;let{layout:n,...o}=t,r=cc(o.graph,n),s=new Map(r.map(l=>[l.order,l])),i=n.bounds.minY,a={};for(let l of Gt(n)){let c=s.get(l.order);a[l.name]=Tr(l,i,c.bp0,c.bp1)}return{nodePositions:a,tubeMap:{layout:n,yOffset:i,columns:r,...o},referenceAxis:!0,pixelRows:!0,extent:_r(n,i)}}function dc(e,t){let n=[],o=()=>({a:-1/0,b:1/0,detour:[],bp:0}),r=[o()];for(let{node:s,strand:i}of t){let a=r.at(-1),l=n.at(-1);if(N(s)){let c=s.stable.start,f=c+s.length,u=i!==(s.stable.strand??"+"),d=l!==void 0&&a.detour.length===0;d&&!l.inverted&&!u&&l.end===c?l.end=f:d&&l.inverted&&u&&l.start===f?l.start=c:(n.push({start:c,end:f,inverted:u}),r.push(o()))}else a.detour.push({node:s,strand:i}),a.bp+=s.length}return n.forEach((s,i)=>{r[i].b=s.start,r[i+1].a=s.end}),{path:e,runs:n,gaps:r}}function Wt(e,t){return Number.isFinite(e.a)&&Number.isFinite(e.b)&&e.b>=e.a&&Math.max(e.b-e.a,e.bp)<t}function Or(e,t,n){let o=J(e.length,r=>e[r]<=t);return o<e.length&&e[o]<n}function fc(e){let t=new Map;for(let n=1;n<e.length;n++){let o=e[n-1],r=e[n],s=o.stable.start+o.length;s!==r.stable.start&&(t.set(s,"reference-gap"),t.set(r.stable.start,"reference-gap"))}return t}function uc(e,t,n){let o=(s,i)=>{Number.isFinite(s)&&!n.has(s)&&n.set(s,i)};for(let{runs:s,gaps:i}of e){let a=s[0],l=s.at(-1);a&&l&&(o(a.start,"walk-end"),o(l.end,"walk-end"));for(let c of s)c.inverted&&c.end-c.start>=t&&(o(c.start,"inversion"),o(c.end,"inversion"));for(let c of i)c.b<c.a?(o(c.a,"backward"),o(c.b,"backward")):Wt(c,t)||(o(c.a,"variant"),o(c.b,"variant"))}let r=e.flatMap(({runs:s,gaps:i})=>[...i.filter(a=>Wt(a,t)).map(a=>[a.a,a.b]),...s.filter(a=>a.inverted&&a.end-a.start<t).map(a=>[a.start,a.end])]);for(let s=!0;s;){s=!1;let i=[...n.keys()].sort((a,l)=>a-l);for(let[a,l]of r)Or(i,a,l)&&(s||=!n.has(a)||!n.has(l),o(a,"overlap"),o(l,"overlap"))}return n}function pc(e,t){let n=[],o=[],r=()=>{let s=o[0],i=o.at(-1);if(s&&i){let a=s.stable.start,l=i.stable.start+i.length,c=`${a}-${l}`;n.push({node:{id:`${c}+`,name:c,length:l-a,depth:0,stable:{refName:s.stable.refName,start:a,rank:0,strand:"+"}},members:o})}o=[]};for(let s of e)t.has(s.stable.start)&&r(),o.push(s);return r(),n}function Yt(e,t,n){return Math.max(0,J(e.length,o=>t(e[o])<=n)-1)}function Qh(e,t){let n=e.nodes.filter(N).sort((y,w)=>y.stable.start-w.stable.start),o=e.paths??[];if(n.length===0||o.length===0)return;let r=qt(e),s=o.map((y,w)=>dc(y,r[w])),i=uc(s,t,fc(n)),a=[...i.keys()].sort((y,w)=>y-w),l=pc(n,i),c=y=>Yt(l,w=>w.node.stable.start,y),f=new Map,u=new Map;for(let y of l){f.set(y.node.id,y.members.map(w=>w.id));for(let w of y.members)u.set(w.id,y.node.id)}let d=new Map,p=y=>{let w=`${y.a} ${y.b} ${y.detour.map(k=>k.node.id+k.strand).join(",")}`,v=d.get(w);if(!v){let k=`r${d.size}`;v={id:`${k}+`,name:k,length:y.bp,depth:0,stable:{refName:n[0].stable.refName,start:Number.isFinite(y.a)?y.a:y.b,rank:1,strand:"+"}},d.set(w,v),f.set(v.id,y.detour.map(T=>T.node.id));for(let T of y.detour)u.has(T.node.id)||u.set(T.node.id,v.id)}return v},m=new Map,h=[],b=new cn,g=new Map,x=new Map;for(let{path:y,runs:w,gaps:v}of s){let k=[],T=[],E=!1,_=(R,X)=>{let I=k.at(-1);E&&I?.node===R&&I.strand===X||k.push({node:R,strand:X}),E=!0},O=R=>{E=!1,R.detour.length>0&&(_(p(R),"+"),E=!1)},q=R=>{(R.bp>0||R.b>R.a)&&T.push({start:R.a,end:R.b,bp:R.bp});let X=l[c(R.b>R.a?R.a:R.a-1)];for(let I of R.detour)u.has(I.node.id)||(u.set(I.node.id,X.node.id),f.get(X.node.id).push(I.node.id))};w.forEach((R,X)=>{let I=v[X];Wt(I,t)&&!Or(a,I.a,I.b)?q(I):O(I);let U=c(R.start),fe=c(R.end-1),ve=R.end-R.start<t;if(R.inverted&&!ve){E=!1;for(let Z=fe;Z>=U;Z--)_(l[Z].node,"-");E=!1}else{R.inverted&&T.push({start:R.start,end:R.end,bp:R.end-R.start,inverted:!0});for(let Z=U;Z<=fe;Z++)_(l[Z].node,"+")}}),O(v.at(-1));let z=P(y.name).name,H=0;k.forEach(({node:R,strand:X},I)=>{x.set(R.id,(x.get(R.id)??0)+1),b.add(R.name,z,y.sample??z,H,X==="-"),H+=R.length;let U=k[I+1];if(U){let fe=`${R.id}${X} ${U.node.id}${U.strand}`,ve=g.get(fe);ve?ve.pathIds.push(y.name):g.set(fe,{from:R.id,to:U.node.id,fromStrand:X,toStrand:U.strand,pathIds:[y.name]})}}),h.push({...y,nodeIds:k.map(R=>R.node.id)}),m.set(y.name,T)}let M=[...l.map(y=>y.node),...d.values()].filter(y=>x.has(y.id)).map(y=>({...y,depth:x.get(y.id)}));return{graph:{...e,nodes:M,edges:[...g.values()],paths:h,pathVisits:b.build(),reads:void 0},members:f,coarseOf:u,deviations:m,cuts:i}}function nm(e,t){return t?e.filter(n=>t.includes(n.sample)).sort((n,o)=>t.indexOf(n.sample)-t.indexOf(o.sample)||n.label.localeCompare(o.label)):e}function om(e,t,n,o={}){let r=dn(e,t,o);return r&&fn(r,n)}function hc(e,t,n){let o=Yt(e,r=>r.bp0,t);return[e[o],e[o-1]].find(r=>r&&n.has(r.index)&&r.bp0<=t&&t<=r.bp1)}function mc(e,t){let n=new Map;for(let[r,s]of t)for(let i of s)re(n,P(r).name,i);let o=new Map;for(let r of e.paths??[])if(r.members){let s=new Map;for(let i of r.members.flatMap(a=>n.get(a)??[]))s.set(`${i.start}-${i.end}`,i);o.set(r.name,[...s.values()])}else o.set(r.name,t.get(r.name)??[]);return o}function Om(e,t){let{graph:n,layout:o}=e,r=[...Ot(e).values()].flat().sort((a,l)=>a.bp0-l.bp0),s=mc(n,t),i=[];for(let a of o.tracks){let l=a.name?s.get(a.name):void 0;if(l?.length){let c=new Map;for(let f of a.path)f.node!==null&&f.y!==void 0&&!c.has(f.node)&&c.set(f.node,f.y);for(let f of l){let u=hc(r,f.start,c);u&&i.push({x0:we(u,f.start),x1:we(u,f.end),y:c.get(u.index),height:a.width})}}}return i}function gc(e){return e?"rgba(255,255,255,0.9)":"rgba(0,0,0,0.8)"}function Am(e,t,{x:n,y:o,width:r,darkMode:s}){if(t.length!==0){e.fillStyle=gc(s),e.beginPath();for(let i of t){let a=n(i.x0),l=Math.max(n(i.x1),a+1);if(l>=0&&a<=r){let c=o(i.y);e.rect(a,c,l-a,o(i.y+i.height)-c)}}e.fill()}}function bc(e,t){let n=[],o=e.sequenceNew??[],r=e.path.filter(s=>s.node!==null);return o.forEach((s,i)=>{let a=t.nodeMap.get(B(s.nodeName)),l=a===void 0?void 0:t.nodes[a],c=r[i];if(l&&c?.y!==void 0){let f={readId:e.id,y:c.y,height:e.width},u=d=>br(l,d);for(let d of s.mismatches){let p=c.isForward?d:Lt(d,l.sequenceLength),m=u(p.pos);if(m!==null){if(p.type==="insertion")n.push({...f,kind:"insertion",x:m,seq:p.seq});else if(p.type==="deletion"&&p.length!==void 0){let h=u(p.pos+p.length);h!==null&&n.push({...f,kind:"deletion",x0:m,x1:h,length:p.length})}else if(p.type==="substitution"&&p.seq!==void 0){let h=u(p.pos+p.seq.length);h!==null&&n.push({...f,kind:"substitution",x0:m,x1:h,seq:p.seq})}}}}}),n}function Ar(e){return e.reads.flatMap(t=>bc(t,e))}var Ht=24,xc=.5,yc=e=>e.bp1>e.bp0;function Cm(e,t){let n=e.filter(yc);if(n.length===0){let c=e[0];return c?[{tx:c.x0,sx:t(c.bp0)}]:[]}let o=[],r=[],s=[];n.forEach((c,f)=>{o.push(c.x0,c.x1),r.push(t(c.bp0),t(c.bp1)),s.push(f===0?0:Math.min(c.x0-n[f-1].x1,Ht),0)});let i=r.at(-1)-r[0],a=s.reduce((c,f)=>c+f,0),l=a>0?Math.min(1,xc*i/a):1;return wc(r,s,l).map((c,f)=>({tx:o[f],sx:c}))}function wc(e,t,n){let o=[],r=0;for(let i of t)r+=i*n,o.push(r);let s=[];return e.forEach((i,a)=>{let l={mean:i-o[a],n:1},c=s.at(-1);for(;c&&c.mean>=l.mean;){s.pop();let f=c.n+l.n;l={mean:(c.mean*c.n+l.mean*l.n)/f,n:f},c=s.at(-1)}s.push(l)}),s.flatMap(i=>Array(i.n).fill(i.mean)).map((i,a)=>i+o[a])}function Lm(e,t){let n=e.length;if(n===0)return t;let o=e[0],r=e[n-1];if(t<=o.tx)return o.sx+(t-o.tx);if(t>=r.tx)return r.sx+(t-r.tx);let s=1+J(n-2,c=>e[c+1].tx<=t),i=e[s-1],a=e[s],l=a.tx-i.tx;return l>0?i.sx+(t-i.tx)/l*(a.sx-i.sx):i.sx}function Vt(e){let t=e.trim().split(/[\s,]+/),n=[],o=0,r=()=>Number(t[o++]);for(;o<t.length;){let s=t[o++];s==="M"||s==="L"?n.push({op:s,x:r(),y:r()}):s==="H"?n.push({op:s,x:r()}):s==="V"?n.push({op:s,y:r()}):s==="Q"?n.push({op:s,x1:r(),y1:r(),x:r(),y:r()}):s==="C"?n.push({op:s,x1:r(),y1:r(),x2:r(),y2:r(),x:r(),y:r()}):s==="Z"&&n.push({op:s})}return n}function Ir(e){let t=1/0,n=-1/0;for(let o of e)"x"in o&&(t=Math.min(t,o.x),n=Math.max(n,o.x)),"x1"in o&&(t=Math.min(t,o.x1),n=Math.max(n,o.x1));return{x0:t,x1:n}}function Nr(e,t,n,o,r){let s=Vt(e);return{commands:s,outline:vr(e,12),color:t,id:n,haplotype:o,reference:r,...Ir(s)}}function Cr(e,t){return new Map(e.tracks.map(n=>[n.id,n.type==="read"?So(n):t[n.id]]))}function Pr(e,t,n,o,r){let{shapes:s}=e,i=t==="haplotype",a=d=>n.get(d.id),l=d=>i&&o.has(d.id),c=[...s.rectangles,...s.verticalRectangles].filter(d=>d.type===t).map(d=>({color:a(d),id:d.id,haplotype:i,reference:l(d),x0:d.xStart,x1:d.xEnd+1,y0:d.yStart,y1:d.yEnd+1})),f=Mr(s.curves,t,{gapWidth:r}).map(d=>Nr(d.path,a(d),d.id,i,l(d))),u=s.corners.filter(d=>d.type===t).map(d=>Nr(d.path,a(d),d.id,i,l(d)));return{rects:c,shapes:[...f,...u]}}function Mc(e){let t=new Set,n=e&&Se(e);return e?.paths?.forEach((o,r)=>{P(o.name).name===n&&t.add(r)}),t}function vc({layout:e,pathColors:t,graph:n,columns:o}){let r=Cr(e,t),s=Mc(n),i=o?Ht:void 0,a=[];return e.nodes.forEach(l=>{if(l.order>=0){let c=Vt(Er(l));a.push({name:l.name,commands:c,...Ir(c)})}}),{bounds:e.bounds,layers:[Pr(e,"haplotype",r,s,i),Pr(e,"read",r,s,i)],nodes:a,mismatches:Ar(e)}}function Ut(e,t,n,o){let r=0,s=0;for(let i of t)switch(i.op){case"M":r=i.x,s=i.y,e.moveTo(n(r),o(s));break;case"L":r=i.x,s=i.y,e.lineTo(n(r),o(s));break;case"H":r=i.x,e.lineTo(n(r),o(s));break;case"V":s=i.y,e.lineTo(n(r),o(s));break;case"Q":r=i.x,s=i.y,e.quadraticCurveTo(n(i.x1),o(i.y1),n(r),o(s));break;case"C":r=i.x,s=i.y,e.bezierCurveTo(n(i.x1),o(i.y1),n(i.x2),o(i.y2),n(r),o(s));break;case"Z":e.closePath();break}}function $r(e,t,n,o,r){let s=new Map;for(let i of t)n(i)&&re(s,o(i),i);for(let i of s.values()){e.fillStyle=o(i[0]),e.beginPath();for(let a of i)r(a);e.fill()}}var Ec=12,Sc=.15;function kc(e){return Math.max(Sc,Math.min(1,e/Ec))}var Rc=.55;function Tc(e,t,n){let{x:o,y:r,width:s}=n,i=f=>o(f.x1)>=0&&o(f.x0)<=s,a=f=>f.haplotype&&n.tubeColors?.[f.id]||f.color;e.globalAlpha=1;for(let f of t.layers)for(let u of[!1,!0]){let d=p=>p.reference===u;$r(e,f.rects,p=>d(p)&&i(p),a,p=>{let m=o(p.x0),h=r(p.y0);e.rect(m,h,o(p.x1)-m,r(p.y1)-h)}),$r(e,f.shapes,p=>d(p)&&i(p),a,p=>{Ut(e,p.commands,o,r)})}let l=n.darkMode?"#d0d0d0":"#000000",c=n.darkMode?"rgba(40,40,40,0.4)":"rgba(255,255,255,0.4)";e.lineWidth=Lr(n);for(let f of t.nodes)if(i(f)&&f.name!==n.highlightNode){e.beginPath(),Ut(e,f.commands,o,r);let u=n.nodeColors?.get(f.name);e.fillStyle=u??c,e.strokeStyle=l,e.globalAlpha=u?Rc:1,e.fill(),e.globalAlpha=kc(o(f.x1)-o(f.x0)),e.stroke(),e.globalAlpha=1}qe(e,t,n),Oc(e,t.mismatches,n)}function Lr(e){return 2*Math.max(.25,Math.min(1,e.yScale))}function qe(e,t,n){let o=n.highlightNode?t.nodes.find(r=>r.name===n.highlightNode):void 0;o&&(e.beginPath(),Ut(e,o.commands,n.x,n.y),e.globalAlpha=1,e.lineWidth=Lr(n),e.fillStyle="rgba(255,192,203,0.5)",e.strokeStyle="#ff0000",e.fill(),e.stroke())}var Br=12,_c=6;function Kt(e){return Br*e>=_c}function jt(e,{x:t,width:n}){let[o,r]=e.kind==="insertion"?[e.x,e.x]:[e.x0,e.x1];return t(r)>=0&&t(o)<=n}function Oc(e,t,n){let{x:o,y:r,yScale:s,darkMode:i}=n;if(!Kt(s)||t.length===0)return;let a=Br*s;e.fillStyle="grey",e.beginPath();for(let l of t)if(l.kind==="deletion"&&jt(l,n)){let c=o(l.x0),f=r(l.y);e.rect(c,f,o(l.x1)-c,r(l.y+l.height)-f)}e.fill(),e.font=`${a}px monospace`,e.textAlign="left",e.textBaseline="alphabetic",e.fillStyle=i?"#ffffff":"#000000";for(let l of t)jt(l,n)&&(l.kind==="substitution"?e.fillText(l.seq,o(l.x0)+1,r(l.y+l.height)):l.kind==="insertion"&&e.fillText("*",o(l.x)-3,r(l.y+l.height)))}function Ac(e,t,n){let o=!1;for(let r=0,s=e.length-1;r<e.length;s=r++){let[i,a]=e[r],[l,c]=e[s];a>n!=c>n&&t<(l-i)*(n-a)/(c-a)+i&&(o=!o)}return o}function Nc(e,{x:t,y:n},o,r){for(let s=e.layers.length-1;s>=0;s--){let{rects:i,shapes:a}=e.layers[s];for(let l of[!0,!1]){for(let c of i)if(c.reference===l&&t(c.x0)<=o&&o<=t(c.x1)&&n(c.y0)<=r&&r<=n(c.y1))return c.id;for(let c of a)if(c.reference===l&&t(c.x0)<=o&&o<=t(c.x1)&&Ac(c.outline.map(([f,u])=>[t(f),n(u)]),o,r))return c.id}}}var Pc=4;function $c(e,t,n,o){let{x:r,y:s,yScale:i}=t;return Kt(i)?e.mismatches.find(a=>s(a.y)<=o&&o<=s(a.y+a.height)&&(a.kind==="insertion"?Math.abs(r(a.x)-n)<=Pc:r(a.x0)<=n&&n<=r(a.x1))):void 0}var oe=JBrowseExports["@jbrowse/core/util/groupKeys"],Ic=e=>oe!=null&&e in Object(oe)?oe[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/util/groupKeys' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var Ge=Ic("groupKeyComparator");var Xg=oe&&oe.__esModule?oe.default:oe;var We=16;function Gg(e){let[t="",...n]=e.split(/\r\n|\r|\n/),o=t.split(" ").slice(1),r=new Map;for(let s of n){if(!s)continue;let[i="",...a]=s.split(" ");i&&!r.has(i)&&r.set(i,{...Object.fromEntries(o.map((l,c)=>[l,a[c]??""])),name:i})}return[...r.values()]}function Wg(e){let t=new Set;for(let n of e??[])for(let o of Object.keys(n))o!=="name"&&t.add(o);return[...t]}function Yg(e){if(typeof e=="string")return e?{field:e}:void 0;let{field:t,sort:n,domain:o}=e??{};if(typeof t!="string"||!t)return;let r=n??o;return Array.isArray(r)?{field:t,sort:r.filter(s=>typeof s=="string")}:{field:t}}function zt(e,t){return`${e} ${t}${e===1?"":"s"}`}function Zt(e,t){let n=new Map(t.map(o=>[o.name,o[e]??""]));return(o,r)=>n.get(o)||n.get(r)||""}function Jt(e,t,{field:n,sort:o},r,s){let i=new Map;for(let a of e){let l=t(a),c=i.get(l);c?c.push(a):i.set(l,[a])}return[...i.keys()].sort(Ge(o)).map(a=>{let l=i.get(a),c=new Set(l.map(s)).size;return{key:a,members:l,title:`${a||`${n}: none`} \xB7 ${zt(c,r)}`}})}function Hg(e,t,n){let o=Zt(n.field,t),r=Jt(e,a=>o(a.label,a.sample),n,"haplotype",a=>a.label),s=1,i=r.map(({key:a,members:l,title:c})=>{let f={key:a,title:c,first:s,count:l.length};return s+=l.length,f});return{rows:r.flatMap(a=>a.members),sections:i}}function Ug(e,t){let n=r=>{let s=-1;for(;s+1<e.length&&e[s+1].first<=r;)s++;return s},o=r=>r*t+(n(r)+1)*We;return{rowY:o,headers:e.map((r,s)=>({...r,top:(r.first-.5)*t+s*We})),headersPx:e.length*We,rowAt(r,s){let i=0;for(let a=-1;a<e.length;a++){let l=a<0?0:e[a].first,c=a<0?Math.min(s,e[0]?.first??s):l+e[a].count,f=(a+1)*We,u=Math.min(c-1,Math.max(l,Math.round((r-f)/t)));Math.abs(o(u)-r)<Math.abs(o(i)-r)&&(i=u)}return i}}}function jg(e,t,n,o,r){return t.length===0?[ye(e,o,r)]:[ye({...e,rows:[]},o,r),...t.flatMap((s,i)=>ye({...e,rows:e.rows.slice(s.first-1,s.first-1+s.count)},{...o,translateY:o.translateY+(n(s.first)-o.rowPx)*o.scaleY},{...r,idPrefix:`${r.idPrefix}-s${i}`}).children.filter(l=>typeof l!="string"&&l.attrs["data-testid"]!=="graph-walk-reference"))]}function Cc(e,t,n,o){let r=[],s=[],i=[e];for(o.add(e);i.length>0;){let a=i.pop(),l=t.get(a);if(l){r.push(l);for(let c of n.get(a)??[]){let f=t.get(c);f&&(f.stable.rank===He?s.push(f):o.has(c)||(o.add(c),i.push(c)))}}}return{members:r,anchors:s}}function Lc(e){if(new Set(e.map(a=>a.stable.refName)).size!==1||e.length<2)return;let n=[...e].sort((a,l)=>a.stable.start-l.stable.start),o=n[0],r=n.at(-1),s=o.stable.start+o.length,i=r.stable.start;return i>=s?{start:s,end:i,entry:o}:void 0}function Bc(e,t,n){let o=new Map(e.map(i=>[i.id,i])),r=new Map,s=[];for(let i of n.get(t.id)??[])o.has(i)&&(r.set(i,0),s.push(i));if(s.length===0)for(let i of e)r.set(i.id,0),s.push(i.id);for(let i of s){let a=r.get(i)+o.get(i).length;for(let l of n.get(i)??[])if(o.has(l)){let c=r.get(l);(c===void 0||a<c)&&(r.set(l,a),s.push(l))}}return r}function Xc(e,t,n){let o=Bc(e,t,n),r=[...e].sort((l,c)=>o.get(l.id)-o.get(c.id)),s=new Map(r.map((l,c)=>[l.id,c])),i=new Map(e.map(l=>[l.id,l])),a=new Map;for(let[l,c]of r.entries()){let f=0;for(let u of n.get(c.id)??[]){let d=i.get(u);d&&s.get(u)<l&&(f=Math.max(f,a.get(u)+d.length))}a.set(c.id,f)}return{offsets:a,ordered:r}}function Dc(e){let t=new Map(e.nodes.filter(on).map(s=>[s.id,s])),n=Re(e),o=new Set,r=[];for(let s of t.values())if(s.stable.rank!==He&&!o.has(s.id)){let{members:i,anchors:a}=Cc(s.id,t,n,o),l=Lc(a);if(l){let{offsets:c,ordered:f}=Xc(i,l.entry,n);r.push({start:l.start,refSpan:l.end-l.start,nodeIds:f.map(u=>u.id),nodeOffsets:f.map(u=>c.get(u.id)),pathLength:f.reduce((u,d)=>Math.max(u,c.get(d.id)+d.length),0)})}}return r.sort((s,i)=>s.start-i.start)}var Fc=28,Xr="#4d4d4d",qc="#5b8cc4",Gc=[qc,"#82abd9"],M0=["#8c8c8c","#adadad"],Wc="12px sans-serif",v0=[{field:"",label:"None"},{field:"sample",label:"A panel per sample"},{field:"walk",label:"A panel per haplotype"}],F=e=>P(e).name;function E0(e,t,n=Gc){let o=0;return e.map(r=>F(r.name)===t?Xr:n[o++%n.length])}var Yc=["#4e79a7","#f28e2b","#59a14f","#e15759","#b07aa1","#76b7b2","#edc948","#9c755f","#ff9da7","#bab0ac"],Dr="#c8c8c8";function S0(e){let t=[...new Set(e)].filter(n=>n!=="").sort(Ge());return new Map(t.map((n,o)=>[n,Yc[o]??Dr]))}function k0(e,t,n,o){return e.map(r=>{let s=F(r.name);return s===t?Xr:o.get(n(r.members?.[0]??s))??Dr})}function Hc(e,t){let n=Zt(e,t);return o=>{let{sample:r,haplotype:s}=ue(o);return n(`${r}#${s}`,r)}}function R0(e,t){let n=(e.paths??[]).map(l=>l.name).filter(l=>F(l)!==e.referencePath);if(t.by==="column"){let l=Hc(t.field,t.table);return Jt(n,c=>l(F(c)),t,"sample",c=>ue(F(c)).sample).map(({key:c,members:f,title:u})=>({key:c,paths:f,label:u}))}let o=t.by==="sample"?l=>ue(l).sample:l=>l,r=new Map;for(let l of n){let c=o(F(l)),f=r.get(c);f?f.push(l):r.set(c,[l])}let s=t.sort??[],i=new Map(s.map((l,c)=>[l,c])),a=l=>i.get(l)??s.length;return[...r].map(([l,c],f)=>({key:l,paths:c,i:f})).sort((l,c)=>a(l.key)-a(c.key)||l.i-c.i).map(({key:l,paths:c})=>({key:l,paths:c}))}function T0(e,t){if(e.graph.nodes.some(n=>n.id===t))return t;for(let[n,o]of e.members)if(o.includes(t))return n}function _0(e,t,n,o,r){let s=e.flatMap(u=>{let d=t(u);return d?[{id:u,...d}]:[]});if(s.length===0)return;let i=s.reduce((u,d)=>Math.min(u,d.start),1/0),a=s.reduce((u,d)=>Math.max(u,d.end),-1/0),l=o>n?(r-n)/(o-n):0,c=i+Math.min(1,Math.max(0,l))*(a-i),f=u=>c<u.start?u.start-c:c>=u.end?c-u.end+1:0;return s.reduce((u,d)=>f(d)<f(u)?d:u).id}function O0(e,t){let n=new Set,o=new Set;for(let r of e.paths??[]){let s=F(r.name);if(s!==e.referencePath){let i=r.nodeIds.includes(t);for(let a of r.members??[s])n.add(a),i&&o.add(a)}}return{here:o.size,of:n.size}}var Uc="bold 11px sans-serif",jc=80,Vc=9;function A0(e,t,n,{x:o,y:r,width:s}){let i=n.paths??[];if(!i.some(l=>l.members))return;let a=new Map;i.forEach((l,c)=>{F(l.name)!==n.referencePath&&a.set(c,l.members?.length??1)}),e.font=Uc,e.textAlign="left",e.textBaseline="middle",e.fillStyle="#0b1f3a";for(let l of t.layers[0]?.rects??[]){let c=a.get(l.id),f=Math.max(0,o(l.x0)),u=Math.min(s,o(l.x1)),d=r(l.y0),p=r(l.y1);c!==void 0&&u-f>=jc&&p-d>=Vc&&e.fillText(`\xD7${c}`,f+4,(d+p)/2)}}var Kc="10px sans-serif",zc=1e3;function N0(e,t,{x:n,y:o,width:r}){if(!t.columns)return;let s=new Map(t.graph.nodes.map(l=>[l.id,l.length]));e.font=Kc;let i=new Map;t.layout.nodes.forEach(l=>{let c=s.get(l.name)??0,f=n(l.x),u=n(l.x+l.pixelWidth),d=$(c);if(l.order>=0&&c>=zc&&u-f<e.measureText(d).width){let p=(o(l.y)+o(l.y+l.contentHeight))/2,m=`${Math.round(u)}:${d}`,h=i.get(m);h?(h.count++,h.mid=Math.max(h.mid,p)):i.set(m,{text:d,right:u,mid:p,count:1})}}),e.textAlign="left",e.textBaseline="middle",e.lineJoin="round",e.lineWidth=3,e.strokeStyle="rgba(255,255,255,0.9)",e.fillStyle="rgba(0,0,0,0.75)";let a=[];for(let{text:l,right:c,mid:f,count:u}of i.values()){let d=u>1?`${l} each`:l,p={x0:c+3,x1:c+3+e.measureText(d).width,y0:f-6,y1:f+6};p.x1<=r&&!a.some(m=>m.x0<p.x1&&p.x0<m.x1&&m.y0<p.y1&&p.y0<m.y1)&&(a.push(p),e.strokeText(d,p.x0,f),e.fillText(d,p.x0,f))}}function P0(e,t,n,{width:o,lit:r}){t.forEach((s,i)=>{let a=n?.[i];a&&(r&&qe(e,s.picture,{...s.frame,width:o,highlightNode:a.box}),e.font=Wc,e.textAlign="left",e.textBaseline="top",e.fillStyle="#c00000",e.fillText(` \xB7 ${a.here} of ${zt(a.of,"haplotype")} here`,6+e.measureText(s.label).width,s.titleTop+4))})}function $0(e,t){let n=new Set(t),o=(e.paths??[]).filter(c=>n.has(c.name)||F(c.name)===e.referencePath),r=new Set(o.map(c=>F(c.name))),s=new Set(o.flatMap(c=>c.nodeIds)),i=e.nodes.filter(c=>s.has(c.id)),a=new Set(i.map(c=>c.name)),l=e.pathVisits?.filter(c=>r.has(c),c=>a.has(c));return{...e,nodes:i,edges:e.edges.filter(c=>s.has(c.from)&&s.has(c.to)),paths:o,anchorPaths:e.anchorPaths?.filter(c=>r.has(c.name)),pathVisits:l,reads:void 0}}function I0(e,t){let n=[],o={},r=0,s=1/0,i=-1/0;for(let{key:a,paths:l,label:c,result:f}of t){let u=f?.tubeMap,d=f?.extent;if(u&&d){let p=r+Fc,m=(d.maxY??0)-(d.minY??0);n.push({key:a,paths:l,label:c,result:{...f,tubeMap:u},top:p,height:m});let h=p-(d.minY??0);for(let[b,g]of Object.entries(f.nodePositions))o[b]=g.map(x=>({x:x.x,y:x.y+h}));r=p+m,s=Math.min(s,d.minX??s),i=Math.max(i,d.maxX??i)}}return n.length>1?{...e,nodePositions:o,extent:{...s<=i?{minX:s,maxX:i}:{},minY:0,maxY:r},tubeMapPanels:n}:e}var Zc="#daa520",Jc=1,Qc=2,el=4;function B0(e,t,n,o=r=>r){let r=s=>{let i=t(s)*2;return n?.nodeIds.has(s)?Math.max(i,n.walks.length*el):i};return e.flatMap(s=>s.exonsByNode.map(({nodeId:i,d:a})=>({key:`${s.gene.name}-${s.gene.start}-${i}`,d:o(a),inner:r(i)+2*Jc})))}function X0(e,t){if(e.length===0)return;let n=(o,r,s)=>A("path",{d:o.d,fill:"none",stroke:r,"stroke-width":s,"stroke-linecap":"round","stroke-linejoin":"round","vector-effect":t.transform?"non-scaling-stroke":void 0});return A("g",{},A("mask",{id:t.id,maskUnits:"userSpaceOnUse",x:0,y:0,width:t.width,height:t.height},A("g",{transform:t.transform},...e.map(o=>n(o,"#fff",o.inner+2*Qc)),...e.map(o=>n(o,"#000",o.inner)))),A("rect",{width:t.width,height:t.height,fill:Zc,mask:`url(#${t.id})`}))}function tl(e,t,n){let o=new Set;for(let r of e.paths??[])for(let s of r.nodeIds)o.add(s);return e.nodes.every(r=>t.nodeIds.has(r.id)||o.has(r.id))?"only in other haplotypes":`nodes and links not on ${n}`}var Fr=(e,t)=>!!e.referencePath&&P(t).name===e.referencePath;function nl(e,t){let n=P(t).name;return(e.paths??[]).filter(o=>P(o.name).name===n).sort((o,r)=>(o.start??0)-(r.start??0))}var qr=e=>new Map(e.nodes.map(t=>[t.id,t]));function ol(e){let t=new Map;return e.edges.forEach((n,o)=>{t.set(`${n.from}>${n.to}`,o)}),{byId:qr(e),edgeAt:t}}function rl(e,t,{byId:n,edgeAt:o}){let r=nl(e,t),s=r[0];if(!s)return;let i=E=>n.get(E)?.length??0,a=E=>E.nodeIds.reduce((_,O)=>_+i(O),0),l=r.reduce((E,_)=>E+a(_),0),c=E=>{let _=Math.min(...E.map(O=>O.start??1/0));return Number.isFinite(_)?{start:_,end:Math.max(...E.map(O=>(O.start??0)+a(O)))}:void 0},f=c(r),u=f&&{contig:s.contig??Ee(P(t).name),...f},d=u?u.end-u.start:l,p=new Set,m=new Set,h=new Map,b=new Map,g=new Map,x=1,M=0;for(let E of r)u&&(M=Math.max(M,(E.start??0)-u.start)),E.nodeIds.forEach((_,O)=>{p.add(_);let q=(g.get(_)??0)+1;if(g.set(_,q),x=Math.max(x,q),O>0){let X=E.nodeIds[O-1],I=o.get(`${X}>${_}`)??o.get(`${_}>${X}`);I!==void 0&&m.add(I)}let z=i(_),H=d>0?(M+z/2)/d:0;h.has(_)||h.set(_,H);let R=b.get(_);R?R.push(H):b.set(_,[H]),M+=z});let y=0,w=0,v;r.forEach((E,_)=>{if(v!==void 0&&E.start!==void 0&&E.start>v)for(let O of sn(E.start-v,r[_-1].after,E.before))y+=O.cause==="missing"?O.bp:0,w+=O.cause==="unknown"?O.bp:0;v=E.start===void 0?void 0:E.start+a(E)});let k=Fr(e,t),T=()=>{let E=k?[]:(e.paths??[]).filter(O=>Fr(e,O.name));if(E.length===0)return;let _=c(E);return _?_.end-_.start:E.reduce((O,q)=>O+a(q),0)};return{name:t,reference:k,range:u,nodeIds:p,edgeIndexes:m,progress:h,passProgress:b,passes:g,mostPasses:x,route:r.map(E=>E.nodeIds),steps:r.reduce((E,_)=>E+_.nodeIds.length,0),bp:l,referenceBp:T(),missingBp:y,unknownBp:w}}function Gr(e,t,n,o,r){let s=o.field==="progress"||!r?void 0:sl(e,t,n,r),i=new Map,a=new Map;for(let[l,c]of n.passProgress){let f=s?.get(l),u=c.map((d,p)=>$n(o,s?f?.[p]:d));i.set(l,u[0]),a.set(l,u)}return{colors:i,passColors:a}}function sl(e,t,n,o){let r=ze(e),s=new Map;for(let i of n.route){let a=Number.NaN,l=Number.NaN;for(let c of i){let f=t.get(c),u=f&&at(f,o);if(f&&u!==void 0&&N(f)){let p=r(f),m=f.length,h=p[0];if(p.length>1&&!Number.isNaN(a)){let b=1/0;for(let g of p){let x=Math.min(Math.abs(g-a),Math.abs(g+m-a));x<b&&(h=g,b=x)}u=(h+m/2-o.start)/o.span}a=h+m===l?h:h+m,l=h}let d=s.get(c);d?d.push(u):s.set(c,[u])}}return s}function il(e,t,n){let o=new Set,r=0,s=e.referencePath;if(!s||n.reference)return{reversed:o,bp:r};let i=e.pathVisits;if(!i)return{reversed:o,bp:r};let a=i.pathIndex(P(n.name).name),l=i.pathIndex(s);for(let c of n.progress.keys()){let f=t.get(c),u=f?i.slot(f.name):-1,d=u<0?-1:i.firstBy(u,a),p=u<0?-1:i.firstBy(u,l);d>=0&&p>=0&&i.reversed[d]!==i.reversed[p]&&(o.add(c),r+=f.length)}return{reversed:o,bp:r}}function al(e,t,n){let o=ol(e),r=new Set,s=t.filter(c=>!r.has(c.walk)&&r.add(c.walk)).flatMap(c=>{let f=rl(e,c.walk,o);return f?[{walk:f,layer:c}]:[]}).sort((c,f)=>Number(f.walk.reference)-Number(c.walk.reference));if(s.length===0)return;let i=0,a=Pn(s.map(({walk:c,layer:f})=>dt(f,c.reference,c.reference?0:i++,s.length===1))),l=s.map(({walk:c},f)=>{let u=a[f],{reversed:d,bp:p}=il(e,o.byId,c);return{...c,encoding:u,...Gr(e,o.byId,c,u,n),reversed:d,reversedBp:p}});return Wr(l,n)}var cl={field:"progress",scheme:"red"};function ll(e,t,n,o){let r=qr(e);return t.walks.map(s=>{let i=n.find(l=>l.walk===s.name)?.color,a=dt({walk:s.name,color:{...cl,...i}},s.reference,0);return Wr([{...s,encoding:a,...Gr(e,r,s,a,o)}],o)})}function Wr(e,t){return{walks:e,referenceDomain:t?{start:t.start,end:t.start+t.span}:void 0,nodeIds:new Set(e.flatMap(n=>[...n.nodeIds])),edgeIndexes:new Set(e.flatMap(n=>[...n.edgeIndexes])),names:new Set(e.map(n=>n.name))}}function Qt(e,t,n){let o=Math.round(t),r=Math.round(n);return`${e?`${e}:`:""}${ie(o+1)}-${ie(r)} (${$(r-o)})`}function dl(e,t){let{field:n}=e.encoding,o=e.range?Qt(e.range.contig,e.range.start,e.range.end):void 0,r=n==="progress"?o:n==="reference"&&t?Qt(t.name,t.start,t.end):void 0,s=e.range?e.range.end-e.range.start:e.bp,i=s-e.bp-e.missingBp-e.unknownBp,a=[[e.missingBp,G.missing],[e.unknownBp,G.unknown],[i,se]];return{delta:e.referenceBp===void 0||s===e.referenceBp?"":` ${s>e.referenceBp?"+":"\u2212"}${$(Math.abs(s-e.referenceBp))}`,gaps:a.filter(([l])=>l>0).map(([l,c])=>`, ${$(l)} ${c}`).join(""),reversed:e.reversedBp>0?`, ${$(e.reversedBp)} reversed`:"",shades:n!=="walk",scale:r,hover:r===o?void 0:o}}function fl(e,t,n){let o=e.progress.get(t),r=e.range;if(o===void 0||!r)return;let s=Math.round(r.start+o*(r.end-r.start)-n/2);return`${r.contig}:${ie(s+1)}-${ie(s+n)}`}function ul(e,t){let n=[];for(let o of t){let r=e.get(o.refName),s=r?.[0],i=r?.at(-1);if(!r||!s||!i)continue;let a=Math.max(o.start,s.bp0),l=Math.min(o.end,i.bp1);l<=a||n.push({gene:o,...Xe(r,a,l),exons:o.exons.filter(c=>c.end>a&&c.start<l).map(c=>Xe(r,Math.max(c.start,a),Math.min(c.end,l)))})}return n}var en=22,pl=4,Ye=8,hl="11px sans-serif",ml=8;function gl(e){let t=e.flatMap(r=>[{x:r.x0,step:1},{x:r.x1,step:-1}]).sort((r,s)=>r.x-s.x||r.step-s.step),n=0,o=0;for(let{step:r}of t)n+=r,o=Math.max(o,n);return Math.min(pl,o)}function bl(e,t,n,o,r=0){let{x:s,width:i,darkMode:a}=n,l=Math.max(1,Math.floor((o-r)/en)),c=[],f=a?"#e0e0e6":"#1c1c22";e.font=hl,e.textAlign="center",e.textBaseline="alphabetic",e.fillStyle=f,e.strokeStyle=f,e.lineWidth=1;let u=t.map(d=>({g:d,s0:s(d.x0),s1:s(d.x1)})).filter(({s0:d,s1:p})=>p>=0&&d<=i).sort((d,p)=>d.s0-p.s0);for(let{g:d,s0:p,s1:m}of u){let h=d.gene.strand>0?" \u2192":d.gene.strand<0?"\u2190 ":"",b=d.gene.strand<0?`${h}${d.gene.name}`:`${d.gene.name}${h}`,g=(Math.max(p,0)+Math.min(m,i))/2,x=e.measureText(b).width/2,M=Math.min(p,g-x),y=Math.max(m,g+x),w=c.findIndex(k=>k+ml<=M);w===-1&&(w=Math.min(c.length,l-1)),c[w]=Math.max(c[w]??-1/0,y);let v=o-w*en-Ye/2;e.beginPath(),e.moveTo(p,v+.5),e.lineTo(m,v+.5),e.stroke();for(let k of d.exons){let T=s(k.x0);e.fillRect(T,v-Ye/2,Math.max(1,s(k.x1)-T),Ye)}e.fillText(b,g,v-Ye/2-2)}}var Y=12,Vr=Y+8,Kr=8,Yr=Kr+3,xl=12;function yl(e,{colorScheme:t,referenceRamp:n,walks:o}){let r=ct(e,n),s=[];return e.nodes.forEach((i,a)=>{if(N(i)){let l=o?o.map(c=>{let f=c.colors.get(i.id);return f===void 0?Ae:V(f)}):[V(lt(i,a,t,r))];s.push({node:i.id,bp0:i.stable.start,bp1:i.stable.start+i.length,colors:l,faded:l.includes(Ae)})}}),s.sort((i,a)=>i.bp0-a.bp0)}function tn(e,t,n){let o=t*e.scale+e.translateX,r=n*e.scale+e.translateX;return o<r?[o,r]:[r,o]}var Hr=2;function zr(e,t,n){let o=-t.translateX/t.scale,r=(n-t.translateX)/t.scale,s=Math.min(o,r),i=Math.max(o,r),a=0,l=0;for(let c of e)a+=Math.max(0,Math.min(c.bp1,s)-c.bp0),l+=Math.max(0,c.bp1-Math.max(c.bp0,i));return t.scale>=0?{left:Math.round(a),right:Math.round(l)}:{left:Math.round(l),right:Math.round(a)}}function wl(e,t,n,o){if(o<0||o>Y+Hr)return;let r,s=Hr;for(let i of e){let[a,l]=tn(t,i.bp0,i.bp1),c=Math.max(0,a-n,n-l);c<=s&&(s=c,r=i.node)}return r}function Ml(e,t){let n=e?.[Math.floor(e.length/2)];return n?t(n):void 0}function Zr(e,t,n,o){let r=e.map(c=>{let[f,u]=tn(t,c.bp0,c.bp1),d=Math.round(f*o);return{colors:c.colors,x0:f,px0:d,px1:Math.max(Math.round(u*o),d+1)}}).filter(c=>c.px1>0&&c.px0<n*o).sort((c,f)=>c.x0-f.x0),s=[],i=-1/0,a=[-1/0,-1/0];for(let{colors:c,px0:f,px1:u}of r){let d=Math.max(f,i);if(u>d){let p=a[0]<d?0:1;a[p]=u,s.push({colors:c,x0:d/o,x1:u/o,tier:p}),i=u}}return(s.length>0?s.at(-1).x1-s[0].x0:0)>=s.length*xl?s:s.map(({tier:c,...f})=>f)}function Ur(e,t,n,o){let r=n>0?t:t-Yr;e.clearRect(r,0,Yr,Y);let s=t+n,i=s+n*Kr;e.beginPath(),e.moveTo(s,Y/2),e.lineTo(i,0),e.lineTo(i,Y),e.closePath(),e.fillStyle=o,e.fill()}function jr(e,t,n){return Math.round(e*Y*n/t)/n}function vl(e,t,n,{width:o,lit:r,darkMode:s,dpr:i=1}){let a=s?"#ffffff":"#18181c";e.clearRect(0,0,o,Vr);for(let c of Zr(t,n,o,i)){let{tier:f}=c,u=f!==void 0&&c.colors.length===1,d=u?2:c.colors.length;c.colors.forEach((p,m)=>{let h=u?f:m,b=jr(h,d,i);e.fillStyle=p,e.fillRect(c.x0,b,c.x1-c.x0,jr(h+1,d,i)-b)})}let l=zr(t,n,o);if(l.left>0&&Ur(e,0,1,a),l.right>0&&Ur(e,o,-1,a),r){let[c,f]=tn(n,r.start,r.end),u=Math.max(f-c,3),d=(c+f)/2-u/2;e.strokeStyle=a,e.lineWidth=1.5,e.strokeRect(d,.75,u,Y-1.5),r.anchor&&(e.beginPath(),e.moveTo(d+u/2,Y),e.lineTo(r.anchor.x,r.anchor.y),e.lineWidth=1,e.stroke())}}function El(e,t){return Math.abs(t-e)<=.1*Math.max(e,t)}function Sl(e,t){let n=e.length,o=t.length,r=Array.from({length:n+1},()=>new Array(o+1).fill(0)),s=Array.from({length:n+1},()=>new Array(o+1).fill(!1));for(let a=n-1;a>=0;a--)for(let l=o-1;l>=0;l--){let c=Math.abs(e[a]-t[l])+r[a+1][l+1],f=n-a>o-l?r[a+1][l]:1/0,u=o-l>n-a?r[a][l+1]:1/0;r[a][l]=Math.min(c,f,u),s[a][l]=r[a][l]===c}let i=new Array(n).fill(void 0);for(let a=0,l=0;a<n&&l<o;)s[a][l]?i[a++]=l++:n-a>o-l?a++:l++;return i}function Jr(e,t){return e.map((n,o)=>({item:n,i:o})).sort((n,o)=>t(n.item)-t(o.item))}var Qr=e=>e.spanningReads!==0;function kl(e,t){return{...t,agrees:e.complete&&Qr(t)?El(e.bp,t.bp):void 0}}function Rl(e,t){let n=new Map,o=new Set,r=Jr(e,i=>i.bp),s=(i,a)=>{let l=[[i.filter(c=>c.item.complete),a.filter(Qr)],[i,a]];for(let[c,f]of l){let u=c.filter(p=>!n.has(p.i)),d=Jr(f.filter(p=>!o.has(p)),p=>p.bp);Sl(u.map(p=>p.item.bp),d.map(p=>p.item.bp)).forEach((p,m)=>{if(p!==void 0){let h=u[m],b=d[p].item;o.add(b),n.set(h.i,kl(h.item,b))}})}};for(let i of new Set(t.flatMap(a=>a.haplotype??[])))s(r.filter(a=>a.item.haplotype===i),t.filter(a=>a.haplotype===i));return s(r,t.filter(i=>i.haplotype===void 0)),n}function Ty(e,t){if(!t)return e;let n=new Map,o=new Map;for(let r of e){let s=o.get(r.sample);s?s.push(r):o.set(r.sample,[r])}for(let[r,s]of o){let i=t[r];if(i)for(let[a,l]of Rl(s,i))n.set(s[a],l)}return e.map(r=>({...r,call:n.get(r)}))}var es=Mo.box(typeof devicePixelRatio>"u"?1:devicePixelRatio);function ts(){matchMedia(`(resolution: ${devicePixelRatio}dppx)`).addEventListener("change",()=>{vo(()=>{es.set(devicePixelRatio)}),ts()},{once:!0})}typeof matchMedia=="function"&&ts();function $y(e=0,t=0){return es.get(),ae(e,t)}export{Wu as a,Yu as b,Hu as c,Uu as d,Dc as e,oi as f,ri as g,qt as h,kr as i,Hh as j,lc as k,Uh as l,nm as m,om as n,bf as o,Ie as p,Pe as q,ft as r,$e as s,os as t,rs as u,ss as v,is as w,ad as x,Q as y,zn as z,ge as A,pt as B,ks as C,cd as D,ld as E,Ts as F,_s as G,Os as H,As as I,Ns as J,_f as K,Of as L,Af as M,Nf as N,Pf as O,$f as P,If as Q,Cf as R,Lf as S,Bf as T,Xf as U,Df as V,Ff as W,qf as X,Gf as Y,Wf as Z,Yf as _,Hf as $,Uf as aa,$s as ba,jf as ca,Vf as da,Kf as ea,zf as fa,Zf as ga,Jf as ha,Qf as ia,li as ja,fi as ka,ui as la,pi as ma,Qh as na,A as oa,hi as pa,mi as qa,be as ra,Tt as sa,Le as ta,No as ua,Po as va,xe as wa,Co as xa,St as ya,vi as za,Ei as Aa,Bo as Ba,Ti as Ca,Do as Da,Fo as Ea,_t as Fa,_i as Ga,Oi as Ha,Go as Ia,ye as Ja,Ot as Ka,Ni as La,Yo as Ma,Xi as Na,Di as Oa,qi as Pa,Gi as Qa,Ko as Ra,Om as Sa,gc as Ta,Am as Ua,Cm as Va,Lm as Wa,vc as Xa,Tc as Ya,qe as Za,Kt as _a,jt as $a,Nc as ab,$c as bb,We as cb,Gg as db,Wg as eb,Yg as fb,Hg as gb,Ug as hb,jg as ib,Fc as jb,Xr as kb,qc as lb,M0 as mb,Wc as nb,v0 as ob,E0 as pb,Dr as qb,S0 as rb,k0 as sb,Hc as tb,R0 as ub,T0 as vb,_0 as wb,O0 as xb,A0 as yb,N0 as zb,P0 as Ab,$0 as Bb,I0 as Cb,tu as Db,bt as Eb,iu as Fb,Zc as Gb,B0 as Hb,X0 as Ib,bu as Jb,go as Kb,xu as Lb,bo as Mb,xt as Nb,xo as Ob,yo as Pb,ei as Qb,tl as Rb,al as Sb,ll as Tb,Qt as Ub,dl as Vb,fl as Wb,ul as Xb,en as Yb,gl as Zb,bl as _b,Vr as $b,yl as ac,zr as bc,wl as cc,Ml as dc,vl as ec,Ty as fc,$y as gc};
3
- //# sourceMappingURL=chunk-ZGTG74GE.js.map