jbrowse-plugin-graphgenomeviewer 8.3.3 → 8.3.5

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 (86) hide show
  1. package/README.md +2 -2
  2. package/dist/chunks/GbzBaseSyntenyAdapter-RRLBONL5.js +2 -0
  3. package/dist/chunks/GbzBaseSyntenyAdapter-RRLBONL5.js.map +7 -0
  4. package/dist/chunks/{GraphGenomeView-TC3UNRFN.js → GraphGenomeView-JJNU2432.js} +2 -2
  5. package/dist/chunks/{GraphTrackSettingsDialog-JZBOLXZW.js → GraphTrackSettingsDialog-7NGUPDUJ.js} +2 -2
  6. package/dist/chunks/{HighlightColorDialog-4VGVC7SN.js → HighlightColorDialog-KFXSZXTC.js} +2 -2
  7. package/dist/chunks/{LinearGraphDisplay-6IO5ADGB.js → LinearGraphDisplay-K3AT3S7J.js} +2 -2
  8. package/dist/chunks/{MinigraphBubbleAdapter-X4VJ3AEX.js → MinigraphBubbleAdapter-P66QLENP.js} +2 -2
  9. package/dist/chunks/{RgfaTabixAdapter-535GN32R.js → RgfaTabixAdapter-CQJROUIP.js} +2 -2
  10. package/dist/chunks/{WalkFormsAdapter-DAGNKDXV.js → WalkFormsAdapter-YSYANJD5.js} +2 -2
  11. package/dist/chunks/WalkTabixSyntenyAdapter-4I32E62Y.js +2 -0
  12. package/dist/chunks/WalkTabixSyntenyAdapter-4I32E62Y.js.map +7 -0
  13. package/dist/chunks/{chunk-QCEM5AXZ.js → chunk-3HS6N7WB.js} +2 -2
  14. package/dist/chunks/{chunk-QCEM5AXZ.js.map → chunk-3HS6N7WB.js.map} +1 -1
  15. package/dist/chunks/{chunk-MBGXXS3Z.js → chunk-3S33TTXF.js} +2 -2
  16. package/dist/chunks/{chunk-MBGXXS3Z.js.map → chunk-3S33TTXF.js.map} +1 -1
  17. package/dist/chunks/{chunk-37XRCKBJ.js → chunk-4B3GQTHX.js} +2 -2
  18. package/dist/chunks/{chunk-37XRCKBJ.js.map → chunk-4B3GQTHX.js.map} +1 -1
  19. package/dist/chunks/chunk-C5YAQNOO.js +4 -0
  20. package/dist/chunks/chunk-C5YAQNOO.js.map +7 -0
  21. package/dist/chunks/chunk-CNFMSSE2.js +3 -0
  22. package/dist/chunks/chunk-CNFMSSE2.js.map +7 -0
  23. package/dist/chunks/chunk-DAF7EWRF.js +3 -0
  24. package/dist/chunks/{chunk-UMCYJHEB.js.map → chunk-DAF7EWRF.js.map} +4 -4
  25. package/dist/chunks/chunk-DKQFTMWL.js +2 -0
  26. package/dist/chunks/chunk-DKQFTMWL.js.map +7 -0
  27. package/dist/chunks/{chunk-YUA46UN2.js → chunk-EVKN4Y3R.js} +2 -2
  28. package/dist/chunks/{chunk-YUA46UN2.js.map → chunk-EVKN4Y3R.js.map} +1 -1
  29. package/dist/chunks/{chunk-ELO4G2TG.js → chunk-HICKAMKK.js} +2 -2
  30. package/dist/chunks/{chunk-ELO4G2TG.js.map → chunk-HICKAMKK.js.map} +1 -1
  31. package/dist/chunks/{chunk-SZZZD7I3.js → chunk-HMIJBEUE.js} +3 -3
  32. package/dist/chunks/{chunk-SZZZD7I3.js.map → chunk-HMIJBEUE.js.map} +2 -2
  33. package/dist/chunks/{chunk-B6YUND32.js → chunk-HQ7FQACT.js} +2 -2
  34. package/dist/chunks/{chunk-B6YUND32.js.map → chunk-HQ7FQACT.js.map} +1 -1
  35. package/dist/chunks/{chunk-UZYU3HDD.js → chunk-KVZIGTH3.js} +2 -2
  36. package/dist/chunks/{chunk-CCPRHM4X.js → chunk-L372SDUG.js} +1 -1
  37. package/dist/chunks/{chunk-CCPRHM4X.js.map → chunk-L372SDUG.js.map} +1 -1
  38. package/dist/chunks/{chunk-YVRZM7FP.js → chunk-LD6RX4AZ.js} +1 -1
  39. package/dist/chunks/{chunk-YVRZM7FP.js.map → chunk-LD6RX4AZ.js.map} +1 -1
  40. package/dist/chunks/chunk-NBS4FGQ6.js +4 -0
  41. package/dist/chunks/{chunk-QY2UJ4TX.js.map → chunk-NBS4FGQ6.js.map} +3 -3
  42. package/dist/chunks/{chunk-DXJSOZY2.js → chunk-NFPLX56S.js} +1 -1
  43. package/dist/chunks/{chunk-DXJSOZY2.js.map → chunk-NFPLX56S.js.map} +1 -1
  44. package/dist/chunks/{chunk-JBQSIRNH.js → chunk-QB5JERW4.js} +1 -1
  45. package/dist/chunks/{chunk-JBQSIRNH.js.map → chunk-QB5JERW4.js.map} +1 -1
  46. package/dist/chunks/{chunk-4CP5H6LQ.js → chunk-RCJQCBBI.js} +2 -2
  47. package/dist/chunks/chunk-SYKOZDP6.js +2 -0
  48. package/dist/chunks/{chunk-NLMAQYCK.js → chunk-YS3R3J2I.js} +2 -2
  49. package/dist/chunks/{chunk-NLMAQYCK.js.map → chunk-YS3R3J2I.js.map} +2 -2
  50. package/dist/chunks/{renderSvg-MNRHFE4C.js → renderSvg-2YULK24A.js} +2 -2
  51. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
  52. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +2 -2
  53. package/package.json +10 -10
  54. package/src/GraphGenomeView/components/LabelLayer.tsx +9 -4
  55. package/src/RgfaTabixAdapter/test_data/walks5_skippair.GRCh38.walks.bed.gz +0 -0
  56. package/src/RgfaTabixAdapter/test_data/walks5_skippair.GRCh38.walks.bed.gz.tbi +0 -0
  57. package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.test.ts +127 -0
  58. package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.ts +163 -46
  59. package/src/WalkTabixSyntenyAdapter/walkLanes.ts +88 -1
  60. package/src/readinessConformance.test.ts +66 -0
  61. package/src/synteny/matchFeature.ts +3 -2
  62. package/src/version.ts +1 -1
  63. package/dist/chunks/GbzBaseSyntenyAdapter-OLFYIFN4.js +0 -2
  64. package/dist/chunks/GbzBaseSyntenyAdapter-OLFYIFN4.js.map +0 -7
  65. package/dist/chunks/WalkTabixSyntenyAdapter-M453NH3L.js +0 -2
  66. package/dist/chunks/WalkTabixSyntenyAdapter-M453NH3L.js.map +0 -7
  67. package/dist/chunks/chunk-2EDOJEF3.js +0 -4
  68. package/dist/chunks/chunk-2EDOJEF3.js.map +0 -7
  69. package/dist/chunks/chunk-52L7CQAG.js +0 -3
  70. package/dist/chunks/chunk-52L7CQAG.js.map +0 -7
  71. package/dist/chunks/chunk-A4YJFEBE.js +0 -2
  72. package/dist/chunks/chunk-BI2RYKPA.js +0 -2
  73. package/dist/chunks/chunk-BI2RYKPA.js.map +0 -7
  74. package/dist/chunks/chunk-QY2UJ4TX.js +0 -4
  75. package/dist/chunks/chunk-UMCYJHEB.js +0 -3
  76. /package/dist/chunks/{GraphGenomeView-TC3UNRFN.js.map → GraphGenomeView-JJNU2432.js.map} +0 -0
  77. /package/dist/chunks/{GraphTrackSettingsDialog-JZBOLXZW.js.map → GraphTrackSettingsDialog-7NGUPDUJ.js.map} +0 -0
  78. /package/dist/chunks/{HighlightColorDialog-4VGVC7SN.js.map → HighlightColorDialog-KFXSZXTC.js.map} +0 -0
  79. /package/dist/chunks/{LinearGraphDisplay-6IO5ADGB.js.map → LinearGraphDisplay-K3AT3S7J.js.map} +0 -0
  80. /package/dist/chunks/{MinigraphBubbleAdapter-X4VJ3AEX.js.map → MinigraphBubbleAdapter-P66QLENP.js.map} +0 -0
  81. /package/dist/chunks/{RgfaTabixAdapter-535GN32R.js.map → RgfaTabixAdapter-CQJROUIP.js.map} +0 -0
  82. /package/dist/chunks/{WalkFormsAdapter-DAGNKDXV.js.map → WalkFormsAdapter-YSYANJD5.js.map} +0 -0
  83. /package/dist/chunks/{chunk-UZYU3HDD.js.map → chunk-KVZIGTH3.js.map} +0 -0
  84. /package/dist/chunks/{chunk-4CP5H6LQ.js.map → chunk-RCJQCBBI.js.map} +0 -0
  85. /package/dist/chunks/{chunk-A4YJFEBE.js.map → chunk-SYKOZDP6.js.map} +0 -0
  86. /package/dist/chunks/{renderSvg-MNRHFE4C.js.map → renderSvg-2YULK24A.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.2.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VA5U4F23.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.2.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-4FPEQQFT.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.2.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JJJIUIE2.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.3.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VA5U4F23.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.3.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-4FPEQQFT.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.3.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JJJIUIE2.js"],
4
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 // a walk file's skip row: the haplotype jumps over the window\n deleted: \"deleted in this haplotype\"\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-VA5U4F23.js\";\nimport {\n PathVisits\n} from \"./chunk-BEUTROKU.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-4FPEQQFT.js\";\nimport {\n gapParts\n} from \"./chunk-VA5U4F23.js\";\nimport {\n pathOrigin\n} from \"./chunk-BRH73RCH.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\n panSNFields,\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 \"deleted\"\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}\nvar namesReference = (reference) => {\n const contig = reference && panSNContig(reference);\n return (name) => name !== void 0 && (name === reference || name === contig);\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 const reference = referenceWalkName(graph);\n const onReferenceContig = namesReference(reference);\n const stable = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const i = indexOf(node.id);\n lengths[i] = node.length;\n if (node.stable?.rank === 0 && onReferenceContig(node.stable.refName)) {\n stable.set(i, node.stable.start);\n }\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,\n stableStart: (node) => stable.get(node) ?? Number.NaN\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 const reference = referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n );\n const onReferenceContig = namesReference(reference);\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,\n stableStart: (node) => node < n.lengths.length && n.ranks[node] === 0 && onReferenceContig(n.refNames[n.refs[node]]) ? n.starts[node] : Number.NaN\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 stableStart\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 const skips = \"walks\" in source ? source.skips : void 0;\n if (first === void 0 || others.length === 0 && !skips?.names.length) {\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 flankEnd = -Infinity;\n let flankStart = Infinity;\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 if (pos + len <= cut.start) {\n flankEnd = Math.max(flankEnd, pos + len);\n }\n if (pos >= cut.end) {\n flankStart = Math.min(flankStart, pos);\n }\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || flankEnd > -Infinity && flankStart < Infinity;\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 const trimAbridged = (inner, bp3) => {\n const parts = partsAt.get(inner);\n const gap = parts?.[0];\n if (bp3 <= 0 || gap?.cause !== \"abridged\") {\n return 0;\n }\n const trimmed = Math.min(bp3, gap.bp);\n partsAt.set(\n inner,\n gap.bp > trimmed ? [{ ...gap, bp: gap.bp - trimmed }] : []\n );\n steps[inner] += trimmed;\n return trimmed;\n };\n const abridgedAt = (i) => partsAt.get(i)?.[0]?.cause === \"abridged\";\n const placeStart = (i) => {\n const id = steps[i];\n if (id < 0 || partsAt.has(i)) {\n return Number.NaN;\n }\n return Number.isNaN(spanStart[id]) && (abridgedAt(i - 1) || abridgedAt(i + 1)) ? stableStart(id) : spanStart[id];\n };\n let leftTrim = 0;\n let rightTrim = 0;\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 start2 = placeStart(i);\n if (!Number.isNaN(start2)) {\n const end2 = start2 + lengthOf(steps[i]);\n if (end2 <= cut.start && end2 > bestEnd) {\n bestEnd = end2;\n i0 = i;\n }\n if (start2 >= cut.end && start2 < bestStart) {\n bestStart = start2;\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 const inward = backward ? -1 : 1;\n leftTrim = trimAbridged(i0 + inward, flankEnd - bestEnd);\n rightTrim = trimAbridged(i1 - inward, bestStart - flankStart);\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 ? {\n contig,\n start: stepEnd(flankFrom) + leftTrim,\n reversed: false\n } : {\n contig,\n start: stepStart[flankFrom] - leftTrim,\n reversed: true\n };\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 const parts = partsAt.get(index);\n if (parts) {\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 ...leftTrim + rightTrim > 0 ? { estimated: true } : {}\n };\n };\n const skipRowOf = (name, start2, end) => {\n const from2 = cut ? Math.max(start2, cut.start) : start2;\n const bp2 = (cut ? Math.min(end, cut.end) : end) - from2;\n runs.push(\n from2 - (cut ? cut.start : start2),\n bp2,\n Number.NaN,\n RUN_GAP | causeFlags(\"deleted\"),\n -1\n );\n runs.endRow();\n visits?.endRow();\n const head = { name, ...panSNFields(name) };\n return {\n name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: 0,\n offReferenceBp: 0,\n gapBp: bp2,\n complete: true,\n stop: void 0,\n axis: void 0\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 drawn = new Set(walks.keys());\n skips?.names.forEach((name, k) => {\n const contig = pathOrigin(name).name;\n if (!drawn.has(contig)) {\n drawn.add(contig);\n rows.push({\n meta: skipRowOf(contig, skips.starts[k], skips.ends[k]),\n row: rows.length + 1\n });\n }\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
5
  "mappings": "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",
6
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", "a", "b", "near", "j", "addPair", "edgeLists", "adjacency", "adjacentNode", "adjacentList", "listOf", "nameIndex", "crossedList", "crossedName", "crossings", "lastWalk", "paths", "anchorPaths", "totalSteps", "visitPath", "visitStart", "visitReversed", "visitOrder", "blocks", "pathSamples", "edgeNameIndex", "edgeNames", "head", "pathName", "visitName", "named", "panSNSample", "edgeNamed", "visitSample", "first", "nodeIds", "pos", "prev", "at", "listNames", "edge", "walked", "PathVisits", "RUN_ON_REFERENCE", "RUN_REVERSED", "RUN_GAP", "GAP_CAUSES", "CAUSE_SHIFT", "causeFlags", "cause", "referenceOf", "names", "referencePath", "rankZero", "referenceWalkName", "graph", "p", "pathOrigin", "n", "namesReference", "reference", "contig", "panSNContig", "name", "graphPieces", "index", "lengths", "indexOf", "id", "i", "onReferenceContig", "stable", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "h", "tableNodeIds", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "a", "b", "c", "d", "e", "v", "order", "make", "offsets", "row", "columns", "m", "out", "at", "k", "float64", "walkRowRuns", "source", "region", "o", "all", "stableStart", "declared", "lengthOf", "nameOf", "startOf", "byStart", "pieceIds", "_", "referencePieces", "first", "others", "skips", "walks", "groupBy", "spanStart", "spanEnd", "revisits", "flankEnd", "flankStart", "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", "trimAbridged", "inner", "trimmed", "abridgedAt", "placeStart", "leftTrim", "rightTrim", "bestEnd", "bestStart", "end2", "inside", "inward", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "cursor", "placeOf", "best", "bestGap", "runBp", "runRef", "runFlags", "parts", "part", "on", "placed", "back", "skipRowOf", "from2", "panSNFields", "referenceRow", "rows", "drawn", "metas", "r", "meta", "panSNHaplotype", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit"]
@@ -1,2 +1,2 @@
1
- import{a as W,b as vt}from"./chunk-37XRCKBJ.js";import{B as St,C as xt,a as tt,b as nt,c as ee,d as ot,e as rt,f as te,h as at,i as it,j as st,k as lt,l as ct,m as pt,o as ne,p as ut,q as oe,r as dt,t as ue,u as ft,v as ht,w as yt,x as bt,z as wt}from"./chunk-QY2UJ4TX.js";import{N as Je,O as Qe,R as pe,T as et,U as mt,V as gt,a as x,c as He,f as J,g as Ae,h as _e,q as ze,r as Oe,t as $e,u as je,v as Ke,w as qe}from"./chunk-2EDOJEF3.js";import{p as z}from"./chunk-DXJSOZY2.js";import{Da as Ye,Gb as A,K as se,Ka as Ze,Kb as le,Mb as ce,O as Q,Ob as F,S as Xe,U as Be,a as X,b as be,da as Fe,hc as Ue,r as We,s as Ne,wa as Ve}from"./chunk-52L7CQAG.js";import{n as De}from"./chunk-NLMAQYCK.js";import{e as T}from"./chunk-3WG3GF2A.js";import{j as K}from"./chunk-J5RMHLFJ.js";import{a as Ie,e as H,f as Ge,g as Te,h as k,i as C}from"./chunk-NIEZKWQV.js";import{D as Ee,G as U,H as B,b as we,c as Se,e as ie,k as xe,o as Pe,p as Me,s as ke,v as q,w as Re,y as Ce,z as Le}from"./chunk-5Z4VIKXZ.js";import{a as G,b as n,c as f,d as h}from"./chunk-JMBDTNUR.js";function Pt(t){return Promise.resolve(new A(t))}var _=JBrowseExports["@jbrowse/render-core/useRenderingBackend"],hn=t=>_!=null&&t in Object(_)?_[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/render-core/useRenderingBackend' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var Mt=hn("useRenderingBackend"),bo=_&&_.__esModule?_.default:_;var de=nt(1);function fe({model:t}){let[e,o]=C(null);return H(()=>{if(!e)return;let i=new A(e),r=X(()=>{Fe(Ue()),i.resize(t.paneWidth,t.canvasHeight),t.paintHover(i,t.drawnBatch)});return()=>{r(),i.dispose()}},[e,t]),n("canvas",{ref:o,"data-testid":"graph-hover-layer",style:de})}function re({row:t,at:e,hint:o,after:i,column:r}){let c=r===void 0?void 0:{paddingLeft:r+5};return t.swatch?f("div",{title:[t.title,o].filter(Boolean).join(" \xB7 ")||void 0,children:[f("div",{style:oe,children:[n("span",{style:{display:"flex",flex:"none",justifyContent:"center",width:r},children:n(ne,{swatch:t.swatch})}),f("span",{children:[t.strong?n("strong",{children:t.strong}):null,t.label]}),i]}),e?n("div",{style:c,"data-testid":"graph-walk-at",children:e}):t.under?n("div",{style:c,children:t.under}):null]}):n("div",{style:dt,children:t.label})}var mn={pointerEvents:"auto",cursor:"pointer",border:"none",background:"none",padding:"0 2px",font:"inherit",textDecoration:"underline"},kt=h(function({model:e}){let o=pt(e);if(o.length===0)return null;let i=o.flatMap(l=>l.rows),r=it(i),c=at(i);return n("div",{style:{...ut,lineHeight:`${r}px`},children:o.map(({testid:l,rows:p,heading:s,spaced:u},m)=>f(Ie,{children:[s?n("div",{style:{...ft,paddingTop:m===0?0:ue},children:s}):null,n("div",{"data-testid":l,style:u?{paddingTop:ue}:void 0,children:p.map(w=>n(re,{row:w,column:c,at:w.walk?e.hoveredOn(w.walk):void 0,after:w.closesBubble?n("button",{type:"button",style:mn,"data-testid":"graph-close-bubble",onClick:()=>{e.closeBubbles()},children:"close"}):null},w.key))})]},l))})});var gn={position:"absolute",left:0,top:0,zIndex:4,display:"grid",gap:We,lineHeight:"normal"},vn={height:Ne,padding:"2px 6px",boxSizing:"border-box",fontFamily:"inherit",fontSize:11,color:"inherit",cursor:"pointer",border:"none",background:"none",textAlign:"left",display:"block"},yn={position:"relative"},bn={gridColumn:"1 / -1",height:Qe,padding:"2px 6px",boxSizing:"border-box",display:"flex",gap:14,fontSize:11,lineHeight:"15px"},wn=h(function({model:e,lift:o,width:i,height:r,cell:c,handlers:l,canvasStyle:p}){let[s,u]=C(null),[m,w]=C(null),S=o.walks[0];H(()=>{if(!s||!m)return;let I=new A(s),O=new A(m),D=be(()=>e.buildDrawing(o,!1)),Z,$=[X(()=>{let R=e.facetGrid;R&&I.resize(R.width,R.height);let L=D.get();L&&(L!==Z&&(I.uploadGeometry(L.batch),Z=L),e.applySelection(I),e.paint(I))}),X(()=>{let R=e.facetGrid;R&&O.resize(R.width,R.height);let L=D.get();L&&e.paintHover(O,L.batch)})];return()=>{for(let R of $)R();I.dispose(),O.dispose()}},[s,m,e,o]);let N=e.walkLabel(S.name);return f("div",{style:c,children:[n("button",{type:"button",style:vn,"data-testid":"graph-facet-title",onClick:()=>{e.liftWalks([S.name]),e.setFacet("")},children:n(re,{row:lt(e,S),hint:`click to lift ${N} alone`,at:e.hoveredOn(S)})}),f("div",{style:yn,children:[n("canvas",{ref:u,"data-testid":"graph-facet-canvas",style:{...p,width:i,height:r,display:"block"},...l}),n("canvas",{ref:w,style:de})]})]})}),Sn=h(function({model:e,handlers:o,canvasStyle:i}){let r=e.facetPanels,c=e.facetGrid,l=e.facetPlacement;if(!r||!c||!l)return null;let{columns:p,width:s,height:u}=c;return f("div",{"data-testid":"graph-facet-panels",style:{...gn,width:e.paneWidth,minHeight:e.canvasHeight,gridTemplateColumns:`repeat(${p}, ${s}px)`,background:Q},children:[r.map((m,w)=>n(wn,{model:e,lift:m,width:s,height:u,cell:{gridRow:Math.floor(l.cells[w]/p)+1,gridColumn:l.cells[w]%p+1},handlers:o,canvasStyle:i},m.walks[0].name)),n("div",{style:{...bn,gridRow:Math.floor(l.cells.reduce((m,w)=>Math.max(m,w),-1/0)/p)+2},"data-testid":"graph-facet-key",children:ct(e).map(m=>n(re,{row:m},m.key))})]})}),Rt=Sn;var Ct=x(n("path",{d:"M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2m2 10H3v4c0 1.1.9 2 2 2h4v-2H5zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2"}),"CropFree");var Lt=x([n("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"},"0"),n("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"},"1")],"ZoomIn");var Et=x(n("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z"}),"ZoomOut");var xn=h(function({model:e}){let o=e.colorSchemeLock;return n(W,{label:"Color",size:"small",sx:{minWidth:100},disabled:o!==void 0,title:o?.why,shown:o?.value,value:e.chosenColorScheme,options:ze.map(({value:i})=>({value:i,label:e.colorSchemeLabel(i)})),testId:"graph-color-select",onChange:i=>{e.setColorScheme(i)}})}),It=xn;var Gt=z()({stats:{marginLeft:"auto"},perf:{color:"#888",fontVariantNumeric:"tabular-nums"}});function he(t){return t===void 0?"\u2013":`${Math.round(t)}ms`}var Pn=h(function({model:e}){let{classes:o}=Gt(),{lastFetchMs:i,lastLayoutMs:r,lastGeometryMs:c}=e,l=i!==void 0||r!==void 0||c!==void 0;return e.showPerf&&l?f(B,{variant:"caption",className:o.perf,"data-testid":"graph-perf-stats",children:["fetch ",he(i)," \xB7 layout ",he(r)," \xB7 geom"," ",he(c)]}):null}),Mn=h(function({model:e}){let{classes:o}=Gt();return f("div",{className:o.stats,"data-testid":"graph-stats","data-node-count":e.nodeCount,"data-edge-count":e.edgeCount,"data-path-count":e.pathCount,"data-fetch-ms":e.lastFetchMs??"","data-layout-ms":e.lastLayoutMs??"","data-geometry-ms":e.lastGeometryMs??"","data-geometry-strokes":e.lastGeometryStrokeCount??"",children:[f(B,{variant:"body2",component:"span",children:[e.nodeCount," nodes, ",e.edgeCount," edges",e.pathCount>0?`, ${e.pathCount} paths`:""]})," ",n(Pn,{model:e})]})}),Tt=Mn;var kn=h(function({model:e}){let{graph:o}=e;return n(W,{label:"Layout",size:"small",sx:{minWidth:140},testId:"graph-layout-select",value:e.chosenLayoutMode,options:He.map(({value:i,label:r,description:c,available:l})=>({value:i,label:r,description:c,disabled:o?!l(o):!1})),onChange:i=>{e.switchLayout(i)}})}),Ht=kn;var Rn=h(function({model:e}){return e.chosenLayoutMode!=="walkrows"||e.repeatChoices.length===0?null:n(W,{label:"Repeat",size:"small",sx:{minWidth:130,maxWidth:260},testId:"graph-repeat-select",value:e.selectedRepeat?.key??"",options:e.repeatOptions,onChange:o=>{e.setRepeatKey(o)}})}),At=Rn;var _t=x(n("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");var zt=x(n("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreVert");var Cn=h(function({model:e}){let o=e.highlightMenuItems({picks:!1});return n(we,{size:"small",tooltip:"Graph options",menuItems:[...o.length>0?[{label:"Haplotypes",icon:mt,subMenu:o}]:[],...e.layoutOptionMenuItems({repeat:!1}),{label:"Show",icon:Oe,subMenu:[...e.showMenuItems(),...e.modeDrawsNodes&&e.walkChoices.length>1?[{type:"checkbox",label:"Show walk rows under the graph",checked:e.walkStrip,onClick:()=>{e.setWalkStrip(!e.walkStrip)}}]:[],{type:"checkbox",label:"Show timings",checked:e.showPerf,onClick:()=>{e.setShowPerf(!e.showPerf)}}]},{type:"divider"},{label:"Graph settings...",icon:gt,helpText:"Subgraph node limit; node width and path colors; the force-directed layout engine",onClick:()=>{K(e).queueDialog(i=>[vt,{model:e,onClose:i}])}},{type:"divider"},{label:"Close graph",icon:_t,onClick:()=>{e.clearGraph()}}],children:n(zt,{})})}),Wt=Cn;var Ln=z()({formControl:{minWidth:130,maxWidth:260}}),En=h(function({model:e}){let{classes:o}=Ln(),i=Ge(),{walkChoices:r}=e;if(r.length===0||!e.liftsWalks)return null;let c=new Set(r.map(s=>s.name)),l=new Map(r.map(s=>[s.name,s.label])),p=e.walkLayers.map(s=>s.walk).filter(s=>c.has(s));return r.length>Be?n(Pe,{size:"small",variant:"outlined",color:"inherit","data-testid":"graph-walk-choose",onClick:()=>{K(e).queueDialog(s=>[Xe,{model:e,onClose:s}])},children:p.length>0?`${p.length} of ${r.length} haplotypes`:"Highlight haplotypes..."}):f(ke,{size:"small",className:o.formControl,children:[n(Re,{id:i,children:"Highlight"}),n(Ee,{labelId:i,multiple:!0,value:p,label:"Highlight","data-testid":"graph-walk-select",renderValue:s=>s.map(u=>l.get(u)).join(", "),onChange:s=>{let{value:u}=s.target;e.liftAmongChoices(typeof u=="string"?u.split(","):u)},children:r.map(({name:s,label:u})=>f(Le,{value:s,dense:!0,children:[n(Me,{size:"small",checked:p.includes(s)}),n(Ce,{primary:u})]},s))})]})}),Nt=En;var In=z()({toolbar:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,padding:"2px 4px",borderBottom:"1px solid #ddd"}}),Gn=h(function({model:e}){return n(B,{variant:"body2",children:e.zoomPercent})}),Tn=h(function({model:e}){let{classes:o}=In(),i=r=>{e.zoom(r,e.viewBox.width/2,e.viewBox.height/2)};return f("div",{className:o.toolbar,children:[n(Ht,{model:e}),n(It,{model:e}),n(Nt,{model:e}),n(At,{model:e}),n(U,{title:"Zoom in",children:n(q,{size:"small",onClick:()=>{i(1.5)},children:n(Lt,{})})}),n(U,{title:"Zoom out",children:n(q,{size:"small",onClick:()=>{i(1/1.5)},children:n(Et,{})})}),n(U,{title:"Zoom to fit",children:n(q,{size:"small",onClick:()=>{e.refitView()},children:n(Ct,{})})}),n(Gn,{model:e}),n(Tt,{model:e}),n(Wt,{model:e})]})}),Ot=Tn;var Hn={position:"absolute",bottom:Je,lineHeight:"normal",background:"rgba(0,0,0,0.75)",color:"white",padding:"4px 8px",borderRadius:4,fontSize:12,pointerEvents:"none",zIndex:6};function me({label:t,readout:e}){return f(G,{children:[n("strong",{children:t})," \u2014 ",e]})}function An(t,e){if(e)return{testId:"graph-chip-tooltip",body:me(e)};let o=t.hoveredNode?t.hoverNodeById?.get(t.hoveredNode):void 0;if(o){let l=t.hoverDrawing?.members.get(o.id),p=_e(o);return{body:f(G,{children:[n("strong",{children:o.name}),l?` and ${l.length-1} more`:""," \u2014"," ",o.length.toLocaleString()," bp, depth ",o.depth.toFixed(1),p?f(G,{children:[n("br",{}),p.sample," ",J(p)," (rank ",o.stable?.rank,")"]}):null,o.moved?f(G,{children:[n("br",{}),"End of a component too large to draw here"]}):null]})}}let i=t.hoveredEdge===null?void 0:t.graph?.edges[t.hoveredEdge];if(i){let l=Ae(i,t.deletions.find(p=>p.edgeIndex===t.hoveredEdge),p=>t.nodeById?.get(p)?.name??p);return{body:l.deletion?f(G,{children:[n("strong",{children:"Deletion"})," ",l.deletion.bp,n("br",{}),l.deletion.where]}):f(G,{children:["Edge: ",l.ends]})}}let r=t.hoveredWalkRowText;if(r)return{testId:"graph-walk-row-tooltip",body:me(r)};let c=t.hoveredTubeText;return c?{testId:"graph-tube-tooltip",body:me(c)}:void 0}var _n=h(function({model:e,chip:o}){let i=An(e,o);return i?n("div",{style:{...Hn,right:e.tooltipRightPx},"data-testid":i.testId,children:i.body}):null}),Dt=_n;var Xt=x(n("path",{d:"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z"}),"FilterList");var Bt=x(n("path",{d:"M10.83 8H21V6H8.83zm5 5H18v-2h-4.17zM14 16.83V18h-4v-2h3.17l-3-3H6v-2h2.17l-3-3H3V6h.17L1.39 4.22 2.8 2.81l18.38 18.38-1.41 1.41z"}),"FilterListOff");var Ft=x(n("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info");var zn={x:0,y:0};function Wn(t,e){let{own:o,reference:i,highlight:r}=t.nodeLaunchTargets(e);return[{label:"Node details",icon:Ft,onClick:()=>{t.showNodeDetails(e)}},...et({own:o,reference:i,highlight:r,onShowLinear:c=>{t.showInLinearView(c)},onHighlight:t.canHighlightInLinearView?c=>{t.highlightInLinearView(c)}:void 0})]}function Nn(t){return t>=1e3?`${Math.round(t/1e3)} k`:`${t}`}function On(t,e,o){let i=o??t.walkRowBars,r=t.walkRowLaunchTarget(e,i),c=r?.assembly,l=e>0?i?.rows[e-1]:void 0,p=l?.sample,s=!o&&t.walkRowBars,u=t.walkRowSamples;return[r&&c?{label:`Linear genome view \u2014 ${c} ${J(r.location)}`,icon:pe,onClick:()=>{t.showInLinearView({location:r.location,assembly:c})}}:{label:"Linear genome view",icon:pe,disabled:!0,disabledHelpText:r?`No assembly in this session is ${r.location.haplotype??r.label}`:"This walk states no contig coordinates",onClick:()=>{}},...l?.abridgedSteps?[{label:`Load the ${Nn(l.abridgedSteps)} abridged steps`,onClick:()=>{t.expandWalk(l.name)}}]:[],...l&&t.liftsWalks&&t.modeDrawsNodes?[{type:"checkbox",label:`Highlight ${l.label}`,checked:t.walkLayers.some(m=>m.walk===l.name),onClick:()=>{t.toggleWalk(l.name)}}]:[],...s&&p&&!(u?.length===1&&u[0]===p)?[{label:`Show only ${p}`,icon:Xt,onClick:()=>{t.setWalkRowSamples([p])}}]:[],...s&&u?[{label:"Show every sample",icon:Bt,onClick:()=>{t.setWalkRowSamples(void 0)}}]:[]]}function V({model:t,at:e,onClose:o}){return n(Se,{anchor:e,offset:zn,onClose:o,menuItems:()=>e===void 0?[]:"nodeId"in e?Wn(t,e.nodeId):On(t,e.row,e.bars)})}var Dn={display:"flex",flexWrap:"wrap",gap:"2px 14px",padding:"2px 8px 6px",fontSize:11,color:"#333"},Xn={position:"absolute",pointerEvents:"none",background:"rgba(255,255,255,0.92)",border:"1px solid #ccc",borderRadius:3,padding:"1px 6px",fontSize:11,whiteSpace:"nowrap",zIndex:4},Bn=h(function({bars:e,frame:o,ramp:i,rowGenes:r}){let c=rt(),l=Te(()=>Ze(e,o,{ramp:i,rowGenes:r,idPrefix:c}),[e,o,i,r,c]);return n(te,{el:l})}),Fn=h(function({model:e}){let o=e.walkStripRows,i=e.walkStripFrame,r=e.stripHover,c=o?[o.reference,...o.rows]:[],l=r?c.findIndex(m=>m.name===r.row):-1,p=c[l];if(!o||!i||i.labelled||!r||!p)return null;let s=(o.origin+r.offset)*i.scaleX+i.translateX,u=s>i.width/2?{right:i.width-s+12}:{left:s+12};return f("div",{"data-testid":"graph-walk-strip-tip",style:{...Xn,...u,top:l*i.rowPx+i.translateY-18},children:[p.label," \xB7"," ",Ve(p,l===0?void 0:o.reference)]})}),Vn=h(function({model:e,bars:o,frame:i}){return n(te,{el:je(o,i,e.walkStripMarks)})}),Yn=h(function({model:e}){let o=e.walkStripRows,i=e.walkStripFrame,[r,c]=C();if(!o||!i)return null;let l=s=>{let u=s.currentTarget.getBoundingClientRect();return $e(o,i,s.clientX-u.left,s.clientY-u.top)},p=Ye(o,{ramp:e.referenceRampDomain,rampCss:De,genes:qe(i,e.walkRowGenes,e.walkRowGeneGaps),annotation:e.walkRowAnnotation});return f("div",{"data-testid":"graph-walk-strip",style:{position:"relative",borderTop:"1px solid #ddd"},onMouseEnter:()=>{e.setPointerInPane(!0)},onMouseLeave:()=>{T(e)&&(e.setPointerInPane(!1),e.setStripHover(null))},children:[f("svg",{width:i.width,height:i.height,style:{display:"block"},onMouseMove:s=>{let u=l(s);s.currentTarget.style.cursor=u&&u.index>0?"pointer":"",e.setStripHover(u?{row:u.row.name,offset:u.offset}:null)},onClick:s=>{let u=l(s);u&&u.index>0&&e.toggleWalk(u.row.name)},onContextMenu:s=>{let u=l(s);u&&(s.preventDefault(),c({clientX:s.clientX,clientY:s.clientY,row:u.index}))},children:[n(Bn,{bars:o,frame:i,ramp:e.referenceRampDomain,rowGenes:e.walkRowGenes}),n(Vn,{model:e,bars:o,frame:i}),n(te,{el:Ke(o,i,new Set(e.walkLayers.map(s=>s.walk)))})]}),n(Fn,{model:e}),f("div",{style:Dn,"data-testid":"graph-walk-strip-key",children:[p.map(s=>f("div",{style:oe,children:[n(ne,{swatch:st(s.swatch)}),n("span",{children:s.label})]},s.label)),n("span",{style:{color:"#777"},children:"Ticks mark where each walk passes the node under the pointer; click a haplotype's bar to lift its walk"})]}),n(V,{model:e,at:r&&{...r,bars:o},onClose:()=>{c(void 0)}})]})}),Vt=Yn;var Zn=h(function({model:e}){let o=e.walkStripLocator;return o?f(ee,{model:e,zIndex:4,overflow:"visible",testId:"graph-walk-strip-locator",children:[n("circle",{cx:o.x,cy:o.y,r:11,fill:"none",stroke:"white",strokeWidth:4}),n("circle",{cx:o.x,cy:o.y,r:11,fill:"none",stroke:"#111",strokeWidth:1.75})]}):null}),Yt=Zn;var $n=1.1,jn=100,Kn=40,qn=800,Un=10,Zt=2;function ge(t){let e=t.deltaY*(t.deltaMode===1?Kn:t.deltaMode===2?qn:1),o=(t.ctrlKey?Un:1)*e/jn;return $n**-Math.max(-Zt,Math.min(Zt,o))}var Jn=40,Qn=100,eo=24,$t=Math.log(16);function to(t,e){let o=t*Math.exp(-Math.max(0,e)/eo);return Math.abs(o)<.001?t:t-o}function no(t,e){let o=Math.abs(t.deltaX)>Math.abs(t.deltaY);return t.ctrlKey||t.metaKey||!o&&(!e||e.scrollZoom)?"zoom":o?"pan":"page"}function qt(t,e,o){H(()=>{if(!t)return;let i=-1/0,r={backlog:0,x:0,y:0,frame:0,last:0},c=p=>{let s=to(r.backlog,Math.min(100,p-r.last));r.backlog-=s,r.last=p,r.frame=r.backlog?requestAnimationFrame(c):0,T(o)&&o.zoom(Math.exp(s),r.x,r.y)},l=p=>{if(o.hostPlacesX||o.followsHostView)return;let m=((p.target instanceof Element?p.target.closest("canvas"):null)??(o.facetPanels?null:e))?.getBoundingClientRect();if(m&&p.clientY-m.top<o.referenceStripZonePx)return;let w=no(p,o.host);if(w!=="page"){if(o.host&&p.stopPropagation(),p.preventDefault(),w==="pan"){if(p.timeStamp-i>Qn){let S=p.deltaMode===1?Jn:1;o.setTransform(o.scale,o.translateX-p.deltaX*S,o.translateY)}return}i=p.timeStamp,m&&(r.x=p.clientX-m.left,r.y=p.clientY-m.top,r.backlog=Math.max(-$t,Math.min($t,r.backlog+Math.log(ge(p)))),r.frame||(r.last=performance.now()-1e3/60,r.frame=requestAnimationFrame(c)))}};return t.addEventListener("wheel",l,{passive:!1}),()=>{cancelAnimationFrame(r.frame),t.removeEventListener("wheel",l)}},[t,e,o])}var jt=3,ve="data-gesture-owner",Y=t=>({x:t.clientX,y:t.clientY});function Kt(t){let[e,o]=[...t.values()];return{spread:Math.hypot(e.x-o.x,e.y-o.y),mid:{x:(e.x+o.x)/2,y:(e.y+o.y)/2}}}function Ut(t){let e=k({x:0,y:0}),o=k({x:0,y:0}),i=k(!1),r=k(void 0),c=a=>r.current!==void 0&&a.pointerId!==r.current,l=k(new Map),p=k(null),s=k(null),u=k(!1),m=k(null),w=k(!1),S=k({frame:0,pan:null,hover:null,pinch:!1});H(()=>()=>{cancelAnimationFrame(S.current.frame)},[]);let[N,I]=C(),[O,D]=C(!1),[Z,$]=C(void 0);function R(a){let d=a.currentTarget.getBoundingClientRect();return{x:a.clientX-d.left,y:a.clientY-d.top}}function L(a,d){if(t.layoutResult?.tubeMap)return t.tubeMapNodeAt(a,d);let g=t.referenceStripNodeAt(a,d);if(g)return g;let{nodePositions:v}=t;if(!v)return null;let{x:y,y:b}=se(a,d,t,t.axisScale);return le(v,y,b,t.axisScale,t.positionsVersion,t.nodeInk)}function en(a,d){let{nodePositions:g,graph:v}=t;if(!g||!v)return null;let{x:y,y:b}=se(a,d,t,t.axisScale);return ce(g,v,y,b,t.axisScale,t.effectiveDrawPaths&&!t.facetPanels,t.positionsVersion,t.deletionEdgeIndexes,t.hiddenEdgeIndexes,t.deletionRoutes,t.layoutResult?.stranded)}function tn(a){a.button===0&&a.preventDefault()}function nn(a){if(a.button!==0)return;let d=l.current;if(c(a)){t.isPanning&&!w.current&&a.pointerType==="touch"&&d.size===1&&(a.currentTarget.setPointerCapture(a.pointerId),d.set(a.pointerId,Y(a)),s.current=Kt(d),i.current=!0);return}i.current=!1,o.current={x:a.clientX,y:a.clientY},a.currentTarget.removeAttribute(ve);let g=t.followsHostView;if(t.hostPlacesX||g&&a.shiftKey)return;a.currentTarget.setPointerCapture(a.pointerId),r.current=a.pointerId,p.current=a.currentTarget,d.clear(),d.set(a.pointerId,Y(a));let{x:v,y}=R(a),b=y<t.referenceStripZonePx,P=t.layoutResult?.tubeMap||b?null:L(v,y);g&&P&&a.currentTarget.setAttribute(ve,""),w.current=g,u.current=b&&!g,P?t.setDraggingNode(P):t.setPanning(!0),e.current={x:a.clientX,y:a.clientY}}function ye(){let a=s.current,d=p.current;if(!a||!d)return;let g=Kt(l.current),v=d.getBoundingClientRect();a.spread>0&&g.spread>0&&t.zoom(g.spread/a.spread,a.mid.x-v.left,a.mid.y-v.top),t.setTransform(t.scale,t.translateX+g.mid.x-a.mid.x,t.translateY+g.mid.y-a.mid.y),s.current=g}function on(){let a=S.current,{pan:d,hover:g,pinch:v}=a;if(a.frame=0,a.pan=null,a.hover=null,a.pinch=!1,v&&ye(),d&&u.current?t.host?.horizontalScroll(-d.dx):d&&w.current?t.setTransform(t.scale,t.translateX,t.translateY+d.dy):d&&t.setTransform(t.scale,t.translateX+d.dx,t.translateY+d.dy),!g)return;let{x:y,y:b}=g,P=t.facetPanels?void 0:yt(t.overlayLabels,y,b);$(M=>M?.label===P?.label&&M?.readout===P?.readout?M:P);let E=t.walkRowBars;if(E){let M=t.walkRowAt(y,b);t.setHoveredWalkRow(M===void 0?null:[E.reference,...E.rows][M].name)}if(t.nodePositions&&t.graph){let M=L(y,b);t.setHoveredPanel(t.tubeMapPanelAt(b)),t.setHoveredNode(M,{x:y,y:b}),D(M!==null&&!t.hostPlacesX&&!t.layoutResult?.tubeMap&&b>=t.referenceStripZonePx),t.setHoveredTube(M===null&&t.layoutResult?.tubeMap?t.tubeAt(y,b):null),t.setHoveredEdge(M||t.layoutResult?.tubeMap||!t.hoverLightsEverything?null:en(y,b))}}function j(){S.current.frame||(S.current.frame=requestAnimationFrame(on))}function rn(){let a=S.current;cancelAnimationFrame(a.frame),a.frame=0,a.pan=null,a.hover=null,a.pinch=!1}function an(a){let d=l.current;if(s.current&&d.has(a.pointerId)){d.set(a.pointerId,Y(a)),S.current.pinch=!0,j();return}if(c(a)||m.current)return;let g=a.clientX-e.current.x,v=a.clientY-e.current.y;e.current={x:a.clientX,y:a.clientY},Math.hypot(a.clientX-o.current.x,a.clientY-o.current.y)>jt&&(i.current=!0);let y=S.current;if(t.draggingNode)t.moveNode(t.draggingNode,g/t.scaleX,v/t.scaleY);else if(t.isPanning)y.pan={dx:(y.pan?.dx??0)+g,dy:(y.pan?.dy??0)+v},j();else{let b=a.currentTarget.getBoundingClientRect();y.hover={x:a.clientX-b.left,y:a.clientY-b.top},j()}}function ae(a){let d=l.current;if(s.current&&d.has(a.pointerId)){S.current.pinch&&(S.current.pinch=!1,ye()),d.delete(a.pointerId),s.current=null;let[[g,v]]=[...d];r.current=g,e.current=v;return}c(a)||(r.current=void 0,d.clear(),T(t)&&t.stopDragging())}function sn(a){c(a)||(r.current=void 0,l.current.clear(),s.current=null,rn(),$(void 0),D(!1),T(t)&&(t.stopDragging(),t.clearHover()))}function ln(a){let{x:d,y:g}=R(a),v=L(d,g),{clientX:y,clientY:b}=a;if(v){a.preventDefault(),I({clientX:y,clientY:b,nodeId:v});return}let P=t.walkRowAt(d,g);P!==void 0&&(a.preventDefault(),I({clientX:y,clientY:b,row:P}))}function cn(a){if(!i.current){let{x:d,y:g}=R(a),v=L(d,g);t.setSelectedNode(v),v&&t.showNodeDetails(v)}}H(()=>()=>{m.current?.end()},[]);function pn(a){if(a.button!==0||t.hostPlacesX||t.followsHostView||!(a.target instanceof Element)||!a.target.closest(`[${tt}]`))return;m.current?.end(),u.current=!1,w.current=!1;let d=a.pointerId,g=Y(a),v=g,y={moved:!1,end:()=>{window.removeEventListener("pointermove",b,!0),window.removeEventListener("pointerup",P,!0),window.removeEventListener("pointercancel",P,!0),y.moved&&T(t)&&t.stopDragging()}};function b(E){if(E.pointerId!==d)return;if(!y.moved){if(Math.hypot(E.clientX-g.x,E.clientY-g.y)<=jt)return;y.moved=!0,t.setPanning(!0)}let M=S.current;M.pan={dx:(M.pan?.dx??0)+E.clientX-v.x,dy:(M.pan?.dy??0)+E.clientY-v.y},v=Y(E),j()}function P(E){E.pointerId===d&&(y.end(),setTimeout(()=>{m.current===y&&(m.current=null)},0))}m.current=y,window.addEventListener("pointermove",b,!0),window.addEventListener("pointerup",P,!0),window.addEventListener("pointercancel",P,!0)}function un(a){m.current?.moved&&(m.current=null,a.stopPropagation())}let dn={cursor:t.isPanning||t.draggingNode?"grabbing":O?"move":"grab",touchAction:t.hostPlacesX?"auto":"none",overscrollBehavior:"contain"},fn=t.host!==void 0&&!t.hostPlacesX&&!t.followsHostView?{[ve]:"",onMouseDown:a=>{a.stopPropagation()}}:{};return{canvasStyle:dn,surfaceProps:fn,handlers:{onMouseDown:tn,onPointerDown:nn,onPointerMove:an,onPointerUp:ae,onPointerCancel:ae,onLostPointerCapture:ae,onPointerLeave:sn,onClick:cn,onContextMenu:ln},contextMenu:N,hoveredChip:Z,labelHandlers:{onPointerDown:pn,onClickCapture:un},closeContextMenu:()=>{I(void 0)}}}var oo={position:"relative"},ro={position:"relative",lineHeight:0,isolation:"isolate"},ao={position:"absolute",left:0,right:0,bottom:0,zIndex:0},io={position:"absolute",inset:0,zIndex:10,lineHeight:"normal",pointerEvents:"none"},so={position:"absolute",left:6,transform:"translateY(-50%)",background:"rgba(255,255,255,0.82)",padding:"0 4px",borderRadius:3,fontSize:11,lineHeight:"16px",whiteSpace:"nowrap",pointerEvents:"none",zIndex:4},lo=h(function({model:e}){return n(G,{children:e.visibleRowLabels.map(({label:o,y:i,top:r})=>n("div",{"data-testid":"graph-row-label",style:{...so,top:r},children:o},i))})}),co={position:"absolute",top:F,right:F,display:"flex",flexDirection:"column",borderRadius:3,overflowX:"hidden",overflowY:"auto",zIndex:4},Jt={position:"absolute",transform:"translate(-50%, -50%)",background:"rgba(255,255,255,0.78)",padding:"0 3px",borderRadius:3,fontSize:10,lineHeight:"13px",whiteSpace:"nowrap",pointerEvents:"none",zIndex:3},po={...Jt,color:"#18181c",fontWeight:600},uo=h(function({model:e}){let o=k(null),i=e.legendAtRest;return H(()=>{let r=o.current;if(!r||!i)return;let c=()=>{T(e)&&e.legendAtRest&&e.setLegendSize({width:r.offsetWidth,height:r.scrollHeight})};c();let l=new ResizeObserver(c);return l.observe(r),r.firstElementChild&&l.observe(r.firstElementChild),()=>{l.disconnect()}},[e,i]),n("div",{ref:o,style:{...co,top:F+e.referenceStripZonePx,maxHeight:e.canvasHeight-2*F-e.referenceStripZonePx},children:n(kt,{model:e})})}),fo=h(function({model:e}){let o=e.overlayLabels.sizes,i=o.flatMap(({key:r,leader:c})=>c?[{key:r,...c}]:[]);return f(G,{children:[i.length>0?n(ee,{model:e,zIndex:2,overflow:"visible",children:i.map(({key:r,arcX:c,arcY:l,labelX:p,labelY:s})=>n("line",{"data-testid":"graph-label-leader",x1:c,y1:l,x2:p,y2:s,stroke:"#18181c",strokeWidth:1},r))}):null,o.map(({key:r,text:c,x:l,y:p,kind:s})=>n("div",{"data-testid":"graph-size-label",style:{...s==="deletion"?po:Jt,left:l,top:p},children:c},r))]})}),Qt=h(function({model:e,handle:{canvasRef:o,canvas:i},ownChrome:r}){let{handlers:c,canvasStyle:l,surfaceProps:p,labelHandlers:s,contextMenu:u,closeContextMenu:m,hoveredChip:w}=Ut(e),[S,N]=C(null);qt(S,i,e);let I=e.facetPanels!==void 0;return f("div",{style:oo,...p,children:[r?n(Ot,{model:e}):null,f("div",{ref:N,style:ro,...s,onMouseEnter:()=>{e.setPointerInPane(!0)},onMouseLeave:()=>{T(e)&&e.setPointerInPane(!1)},children:[e.referenceStripShown?n("div",{style:{...ao,top:e.referenceStripZonePx,background:Q}}):null,n("canvas",{ref:o,"data-testid":"graph-genome-canvas",style:{...l,width:e.paneWidth,height:e.canvasHeight,display:"block",position:"relative",zIndex:1},...c}),I?n(Rt,{model:e,handlers:c,canvasStyle:l}):f(G,{children:[n(St,{model:e}),n(fe,{model:e}),n(wt,{model:e}),n(lo,{model:e}),n(fo,{model:e}),n(ot,{model:e}),n(ht,{model:e}),n(bt,{model:e}),n(xt,{model:e}),n(Yt,{model:e}),n(uo,{model:e})]}),r?n("div",{style:io,children:n(xe,{isVisible:e.isLoading,immediate:!e.layoutResult,statusMessage:e.statusMessage,onCancel:e.canCancelLoad?()=>{e.cancelLoad()}:void 0})}):null,n(Dt,{model:e,chip:w})]}),e.walkStripShown?n(Vt,{model:e}):null,n(V,{model:e,at:u,onClose:m}),r?.renderError?n(ie,{error:r.renderError,onReset:r.retryRender}):null,r&&e.error?n(ie,{error:e.error,onReset:e.canRetryLoad?()=>{e.retryLoad()}:void 0}):null]})}),ho=h(function({model:e}){let{canvasRef:o,canvas:i,error:r,retry:c}=Mt(Pt,e);return n(Qt,{model:e,handle:{canvasRef:o,canvas:i},ownChrome:{renderError:r,retryRender:c}})}),mo=h(function({model:e,handle:o}){return o?n(Qt,{model:e,handle:o}):n(ho,{model:e})}),$i=mo;export{Pt as a,$i as b};
2
- //# sourceMappingURL=chunk-MBGXXS3Z.js.map
1
+ import{a as W,b as vt}from"./chunk-4B3GQTHX.js";import{B as St,C as xt,a as tt,b as nt,c as ee,d as ot,e as rt,f as te,h as at,i as it,j as st,k as lt,l as ct,m as pt,o as ne,p as ut,q as oe,r as dt,t as ue,u as ft,v as ht,w as yt,x as bt,z as wt}from"./chunk-NBS4FGQ6.js";import{N as Je,O as Qe,R as pe,T as et,U as mt,V as gt,a as x,c as He,f as J,g as Ae,h as _e,q as ze,r as Oe,t as $e,u as je,v as Ke,w as qe}from"./chunk-C5YAQNOO.js";import{p as z}from"./chunk-NFPLX56S.js";import{Da as Ye,Gb as A,K as se,Ka as Ze,Kb as le,Mb as ce,O as Q,Ob as F,S as Xe,U as Be,a as X,b as be,da as Fe,ic as Ue,r as We,s as Ne,wa as Ve}from"./chunk-CNFMSSE2.js";import{n as De}from"./chunk-YS3R3J2I.js";import{e as T}from"./chunk-3WG3GF2A.js";import{j as K}from"./chunk-J5RMHLFJ.js";import{a as Ie,e as H,f as Ge,g as Te,h as k,i as C}from"./chunk-NIEZKWQV.js";import{D as Ee,G as U,H as B,b as we,c as Se,e as ie,k as xe,o as Pe,p as Me,s as ke,v as q,w as Re,y as Ce,z as Le}from"./chunk-5Z4VIKXZ.js";import{a as G,b as n,c as f,d as h}from"./chunk-JMBDTNUR.js";function Pt(t){return Promise.resolve(new A(t))}var _=JBrowseExports["@jbrowse/render-core/useRenderingBackend"],hn=t=>_!=null&&t in Object(_)?_[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/render-core/useRenderingBackend' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var Mt=hn("useRenderingBackend"),bo=_&&_.__esModule?_.default:_;var de=nt(1);function fe({model:t}){let[e,o]=C(null);return H(()=>{if(!e)return;let i=new A(e),r=X(()=>{Fe(Ue()),i.resize(t.paneWidth,t.canvasHeight),t.paintHover(i,t.drawnBatch)});return()=>{r(),i.dispose()}},[e,t]),n("canvas",{ref:o,"data-testid":"graph-hover-layer",style:de})}function re({row:t,at:e,hint:o,after:i,column:r}){let c=r===void 0?void 0:{paddingLeft:r+5};return t.swatch?f("div",{title:[t.title,o].filter(Boolean).join(" \xB7 ")||void 0,children:[f("div",{style:oe,children:[n("span",{style:{display:"flex",flex:"none",justifyContent:"center",width:r},children:n(ne,{swatch:t.swatch})}),f("span",{children:[t.strong?n("strong",{children:t.strong}):null,t.label]}),i]}),e?n("div",{style:c,"data-testid":"graph-walk-at",children:e}):t.under?n("div",{style:c,children:t.under}):null]}):n("div",{style:dt,children:t.label})}var mn={pointerEvents:"auto",cursor:"pointer",border:"none",background:"none",padding:"0 2px",font:"inherit",textDecoration:"underline"},kt=h(function({model:e}){let o=pt(e);if(o.length===0)return null;let i=o.flatMap(l=>l.rows),r=it(i),c=at(i);return n("div",{style:{...ut,lineHeight:`${r}px`},children:o.map(({testid:l,rows:p,heading:s,spaced:u},m)=>f(Ie,{children:[s?n("div",{style:{...ft,paddingTop:m===0?0:ue},children:s}):null,n("div",{"data-testid":l,style:u?{paddingTop:ue}:void 0,children:p.map(w=>n(re,{row:w,column:c,at:w.walk?e.hoveredOn(w.walk):void 0,after:w.closesBubble?n("button",{type:"button",style:mn,"data-testid":"graph-close-bubble",onClick:()=>{e.closeBubbles()},children:"close"}):null},w.key))})]},l))})});var gn={position:"absolute",left:0,top:0,zIndex:4,display:"grid",gap:We,lineHeight:"normal"},vn={height:Ne,padding:"2px 6px",boxSizing:"border-box",fontFamily:"inherit",fontSize:11,color:"inherit",cursor:"pointer",border:"none",background:"none",textAlign:"left",display:"block"},yn={position:"relative"},bn={gridColumn:"1 / -1",height:Qe,padding:"2px 6px",boxSizing:"border-box",display:"flex",gap:14,fontSize:11,lineHeight:"15px"},wn=h(function({model:e,lift:o,width:i,height:r,cell:c,handlers:l,canvasStyle:p}){let[s,u]=C(null),[m,w]=C(null),S=o.walks[0];H(()=>{if(!s||!m)return;let I=new A(s),O=new A(m),D=be(()=>e.buildDrawing(o,!1)),Z,$=[X(()=>{let R=e.facetGrid;R&&I.resize(R.width,R.height);let L=D.get();L&&(L!==Z&&(I.uploadGeometry(L.batch),Z=L),e.applySelection(I),e.paint(I))}),X(()=>{let R=e.facetGrid;R&&O.resize(R.width,R.height);let L=D.get();L&&e.paintHover(O,L.batch)})];return()=>{for(let R of $)R();I.dispose(),O.dispose()}},[s,m,e,o]);let N=e.walkLabel(S.name);return f("div",{style:c,children:[n("button",{type:"button",style:vn,"data-testid":"graph-facet-title",onClick:()=>{e.liftWalks([S.name]),e.setFacet("")},children:n(re,{row:lt(e,S),hint:`click to lift ${N} alone`,at:e.hoveredOn(S)})}),f("div",{style:yn,children:[n("canvas",{ref:u,"data-testid":"graph-facet-canvas",style:{...p,width:i,height:r,display:"block"},...l}),n("canvas",{ref:w,style:de})]})]})}),Sn=h(function({model:e,handlers:o,canvasStyle:i}){let r=e.facetPanels,c=e.facetGrid,l=e.facetPlacement;if(!r||!c||!l)return null;let{columns:p,width:s,height:u}=c;return f("div",{"data-testid":"graph-facet-panels",style:{...gn,width:e.paneWidth,minHeight:e.canvasHeight,gridTemplateColumns:`repeat(${p}, ${s}px)`,background:Q},children:[r.map((m,w)=>n(wn,{model:e,lift:m,width:s,height:u,cell:{gridRow:Math.floor(l.cells[w]/p)+1,gridColumn:l.cells[w]%p+1},handlers:o,canvasStyle:i},m.walks[0].name)),n("div",{style:{...bn,gridRow:Math.floor(l.cells.reduce((m,w)=>Math.max(m,w),-1/0)/p)+2},"data-testid":"graph-facet-key",children:ct(e).map(m=>n(re,{row:m},m.key))})]})}),Rt=Sn;var Ct=x(n("path",{d:"M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2m2 10H3v4c0 1.1.9 2 2 2h4v-2H5zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2"}),"CropFree");var Lt=x([n("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"},"0"),n("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"},"1")],"ZoomIn");var Et=x(n("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z"}),"ZoomOut");var xn=h(function({model:e}){let o=e.colorSchemeLock;return n(W,{label:"Color",size:"small",sx:{minWidth:100},disabled:o!==void 0,title:o?.why,shown:o?.value,value:e.chosenColorScheme,options:ze.map(({value:i})=>({value:i,label:e.colorSchemeLabel(i)})),testId:"graph-color-select",onChange:i=>{e.setColorScheme(i)}})}),It=xn;var Gt=z()({stats:{marginLeft:"auto"},perf:{color:"#888",fontVariantNumeric:"tabular-nums"}});function he(t){return t===void 0?"\u2013":`${Math.round(t)}ms`}var Pn=h(function({model:e}){let{classes:o}=Gt(),{lastFetchMs:i,lastLayoutMs:r,lastGeometryMs:c}=e,l=i!==void 0||r!==void 0||c!==void 0;return e.showPerf&&l?f(B,{variant:"caption",className:o.perf,"data-testid":"graph-perf-stats",children:["fetch ",he(i)," \xB7 layout ",he(r)," \xB7 geom"," ",he(c)]}):null}),Mn=h(function({model:e}){let{classes:o}=Gt();return f("div",{className:o.stats,"data-testid":"graph-stats","data-node-count":e.nodeCount,"data-edge-count":e.edgeCount,"data-path-count":e.pathCount,"data-fetch-ms":e.lastFetchMs??"","data-layout-ms":e.lastLayoutMs??"","data-geometry-ms":e.lastGeometryMs??"","data-geometry-strokes":e.lastGeometryStrokeCount??"",children:[f(B,{variant:"body2",component:"span",children:[e.nodeCount," nodes, ",e.edgeCount," edges",e.pathCount>0?`, ${e.pathCount} paths`:""]})," ",n(Pn,{model:e})]})}),Tt=Mn;var kn=h(function({model:e}){let{graph:o}=e;return n(W,{label:"Layout",size:"small",sx:{minWidth:140},testId:"graph-layout-select",value:e.chosenLayoutMode,options:He.map(({value:i,label:r,description:c,available:l})=>({value:i,label:r,description:c,disabled:o?!l(o):!1})),onChange:i=>{e.switchLayout(i)}})}),Ht=kn;var Rn=h(function({model:e}){return e.chosenLayoutMode!=="walkrows"||e.repeatChoices.length===0?null:n(W,{label:"Repeat",size:"small",sx:{minWidth:130,maxWidth:260},testId:"graph-repeat-select",value:e.selectedRepeat?.key??"",options:e.repeatOptions,onChange:o=>{e.setRepeatKey(o)}})}),At=Rn;var _t=x(n("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");var zt=x(n("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreVert");var Cn=h(function({model:e}){let o=e.highlightMenuItems({picks:!1});return n(we,{size:"small",tooltip:"Graph options",menuItems:[...o.length>0?[{label:"Haplotypes",icon:mt,subMenu:o}]:[],...e.layoutOptionMenuItems({repeat:!1}),{label:"Show",icon:Oe,subMenu:[...e.showMenuItems(),...e.modeDrawsNodes&&e.walkChoices.length>1?[{type:"checkbox",label:"Show walk rows under the graph",checked:e.walkStrip,onClick:()=>{e.setWalkStrip(!e.walkStrip)}}]:[],{type:"checkbox",label:"Show timings",checked:e.showPerf,onClick:()=>{e.setShowPerf(!e.showPerf)}}]},{type:"divider"},{label:"Graph settings...",icon:gt,helpText:"Subgraph node limit; node width and path colors; the force-directed layout engine",onClick:()=>{K(e).queueDialog(i=>[vt,{model:e,onClose:i}])}},{type:"divider"},{label:"Close graph",icon:_t,onClick:()=>{e.clearGraph()}}],children:n(zt,{})})}),Wt=Cn;var Ln=z()({formControl:{minWidth:130,maxWidth:260}}),En=h(function({model:e}){let{classes:o}=Ln(),i=Ge(),{walkChoices:r}=e;if(r.length===0||!e.liftsWalks)return null;let c=new Set(r.map(s=>s.name)),l=new Map(r.map(s=>[s.name,s.label])),p=e.walkLayers.map(s=>s.walk).filter(s=>c.has(s));return r.length>Be?n(Pe,{size:"small",variant:"outlined",color:"inherit","data-testid":"graph-walk-choose",onClick:()=>{K(e).queueDialog(s=>[Xe,{model:e,onClose:s}])},children:p.length>0?`${p.length} of ${r.length} haplotypes`:"Highlight haplotypes..."}):f(ke,{size:"small",className:o.formControl,children:[n(Re,{id:i,children:"Highlight"}),n(Ee,{labelId:i,multiple:!0,value:p,label:"Highlight","data-testid":"graph-walk-select",renderValue:s=>s.map(u=>l.get(u)).join(", "),onChange:s=>{let{value:u}=s.target;e.liftAmongChoices(typeof u=="string"?u.split(","):u)},children:r.map(({name:s,label:u})=>f(Le,{value:s,dense:!0,children:[n(Me,{size:"small",checked:p.includes(s)}),n(Ce,{primary:u})]},s))})]})}),Nt=En;var In=z()({toolbar:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,padding:"2px 4px",borderBottom:"1px solid #ddd"}}),Gn=h(function({model:e}){return n(B,{variant:"body2",children:e.zoomPercent})}),Tn=h(function({model:e}){let{classes:o}=In(),i=r=>{e.zoom(r,e.viewBox.width/2,e.viewBox.height/2)};return f("div",{className:o.toolbar,children:[n(Ht,{model:e}),n(It,{model:e}),n(Nt,{model:e}),n(At,{model:e}),n(U,{title:"Zoom in",children:n(q,{size:"small",onClick:()=>{i(1.5)},children:n(Lt,{})})}),n(U,{title:"Zoom out",children:n(q,{size:"small",onClick:()=>{i(1/1.5)},children:n(Et,{})})}),n(U,{title:"Zoom to fit",children:n(q,{size:"small",onClick:()=>{e.refitView()},children:n(Ct,{})})}),n(Gn,{model:e}),n(Tt,{model:e}),n(Wt,{model:e})]})}),Ot=Tn;var Hn={position:"absolute",bottom:Je,lineHeight:"normal",background:"rgba(0,0,0,0.75)",color:"white",padding:"4px 8px",borderRadius:4,fontSize:12,pointerEvents:"none",zIndex:6};function me({label:t,readout:e}){return f(G,{children:[n("strong",{children:t})," \u2014 ",e]})}function An(t,e){if(e)return{testId:"graph-chip-tooltip",body:me(e)};let o=t.hoveredNode?t.hoverNodeById?.get(t.hoveredNode):void 0;if(o){let l=t.hoverDrawing?.members.get(o.id),p=_e(o);return{body:f(G,{children:[n("strong",{children:o.name}),l?` and ${l.length-1} more`:""," \u2014"," ",o.length.toLocaleString()," bp, depth ",o.depth.toFixed(1),p?f(G,{children:[n("br",{}),p.sample," ",J(p)," (rank ",o.stable?.rank,")"]}):null,o.moved?f(G,{children:[n("br",{}),"End of a component too large to draw here"]}):null]})}}let i=t.hoveredEdge===null?void 0:t.graph?.edges[t.hoveredEdge];if(i){let l=Ae(i,t.deletions.find(p=>p.edgeIndex===t.hoveredEdge),p=>t.nodeById?.get(p)?.name??p);return{body:l.deletion?f(G,{children:[n("strong",{children:"Deletion"})," ",l.deletion.bp,n("br",{}),l.deletion.where]}):f(G,{children:["Edge: ",l.ends]})}}let r=t.hoveredWalkRowText;if(r)return{testId:"graph-walk-row-tooltip",body:me(r)};let c=t.hoveredTubeText;return c?{testId:"graph-tube-tooltip",body:me(c)}:void 0}var _n=h(function({model:e,chip:o}){let i=An(e,o);return i?n("div",{style:{...Hn,right:e.tooltipRightPx},"data-testid":i.testId,children:i.body}):null}),Dt=_n;var Xt=x(n("path",{d:"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z"}),"FilterList");var Bt=x(n("path",{d:"M10.83 8H21V6H8.83zm5 5H18v-2h-4.17zM14 16.83V18h-4v-2h3.17l-3-3H6v-2h2.17l-3-3H3V6h.17L1.39 4.22 2.8 2.81l18.38 18.38-1.41 1.41z"}),"FilterListOff");var Ft=x(n("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info");var zn={x:0,y:0};function Wn(t,e){let{own:o,reference:i,highlight:r}=t.nodeLaunchTargets(e);return[{label:"Node details",icon:Ft,onClick:()=>{t.showNodeDetails(e)}},...et({own:o,reference:i,highlight:r,onShowLinear:c=>{t.showInLinearView(c)},onHighlight:t.canHighlightInLinearView?c=>{t.highlightInLinearView(c)}:void 0})]}function Nn(t){return t>=1e3?`${Math.round(t/1e3)} k`:`${t}`}function On(t,e,o){let i=o??t.walkRowBars,r=t.walkRowLaunchTarget(e,i),c=r?.assembly,l=e>0?i?.rows[e-1]:void 0,p=l?.sample,s=!o&&t.walkRowBars,u=t.walkRowSamples;return[r&&c?{label:`Linear genome view \u2014 ${c} ${J(r.location)}`,icon:pe,onClick:()=>{t.showInLinearView({location:r.location,assembly:c})}}:{label:"Linear genome view",icon:pe,disabled:!0,disabledHelpText:r?`No assembly in this session is ${r.location.haplotype??r.label}`:"This walk states no contig coordinates",onClick:()=>{}},...l?.abridgedSteps?[{label:`Load the ${Nn(l.abridgedSteps)} abridged steps`,onClick:()=>{t.expandWalk(l.name)}}]:[],...l&&t.liftsWalks&&t.modeDrawsNodes?[{type:"checkbox",label:`Highlight ${l.label}`,checked:t.walkLayers.some(m=>m.walk===l.name),onClick:()=>{t.toggleWalk(l.name)}}]:[],...s&&p&&!(u?.length===1&&u[0]===p)?[{label:`Show only ${p}`,icon:Xt,onClick:()=>{t.setWalkRowSamples([p])}}]:[],...s&&u?[{label:"Show every sample",icon:Bt,onClick:()=>{t.setWalkRowSamples(void 0)}}]:[]]}function V({model:t,at:e,onClose:o}){return n(Se,{anchor:e,offset:zn,onClose:o,menuItems:()=>e===void 0?[]:"nodeId"in e?Wn(t,e.nodeId):On(t,e.row,e.bars)})}var Dn={display:"flex",flexWrap:"wrap",gap:"2px 14px",padding:"2px 8px 6px",fontSize:11,color:"#333"},Xn={position:"absolute",pointerEvents:"none",background:"rgba(255,255,255,0.92)",border:"1px solid #ccc",borderRadius:3,padding:"1px 6px",fontSize:11,whiteSpace:"nowrap",zIndex:4},Bn=h(function({bars:e,frame:o,ramp:i,rowGenes:r}){let c=rt(),l=Te(()=>Ze(e,o,{ramp:i,rowGenes:r,idPrefix:c}),[e,o,i,r,c]);return n(te,{el:l})}),Fn=h(function({model:e}){let o=e.walkStripRows,i=e.walkStripFrame,r=e.stripHover,c=o?[o.reference,...o.rows]:[],l=r?c.findIndex(m=>m.name===r.row):-1,p=c[l];if(!o||!i||i.labelled||!r||!p)return null;let s=(o.origin+r.offset)*i.scaleX+i.translateX,u=s>i.width/2?{right:i.width-s+12}:{left:s+12};return f("div",{"data-testid":"graph-walk-strip-tip",style:{...Xn,...u,top:l*i.rowPx+i.translateY-18},children:[p.label," \xB7"," ",Ve(p,l===0?void 0:o.reference)]})}),Vn=h(function({model:e,bars:o,frame:i}){return n(te,{el:je(o,i,e.walkStripMarks)})}),Yn=h(function({model:e}){let o=e.walkStripRows,i=e.walkStripFrame,[r,c]=C();if(!o||!i)return null;let l=s=>{let u=s.currentTarget.getBoundingClientRect();return $e(o,i,s.clientX-u.left,s.clientY-u.top)},p=Ye(o,{ramp:e.referenceRampDomain,rampCss:De,genes:qe(i,e.walkRowGenes,e.walkRowGeneGaps),annotation:e.walkRowAnnotation});return f("div",{"data-testid":"graph-walk-strip",style:{position:"relative",borderTop:"1px solid #ddd"},onMouseEnter:()=>{e.setPointerInPane(!0)},onMouseLeave:()=>{T(e)&&(e.setPointerInPane(!1),e.setStripHover(null))},children:[f("svg",{width:i.width,height:i.height,style:{display:"block"},onMouseMove:s=>{let u=l(s);s.currentTarget.style.cursor=u&&u.index>0?"pointer":"",e.setStripHover(u?{row:u.row.name,offset:u.offset}:null)},onClick:s=>{let u=l(s);u&&u.index>0&&e.toggleWalk(u.row.name)},onContextMenu:s=>{let u=l(s);u&&(s.preventDefault(),c({clientX:s.clientX,clientY:s.clientY,row:u.index}))},children:[n(Bn,{bars:o,frame:i,ramp:e.referenceRampDomain,rowGenes:e.walkRowGenes}),n(Vn,{model:e,bars:o,frame:i}),n(te,{el:Ke(o,i,new Set(e.walkLayers.map(s=>s.walk)))})]}),n(Fn,{model:e}),f("div",{style:Dn,"data-testid":"graph-walk-strip-key",children:[p.map(s=>f("div",{style:oe,children:[n(ne,{swatch:st(s.swatch)}),n("span",{children:s.label})]},s.label)),n("span",{style:{color:"#777"},children:"Ticks mark where each walk passes the node under the pointer; click a haplotype's bar to lift its walk"})]}),n(V,{model:e,at:r&&{...r,bars:o},onClose:()=>{c(void 0)}})]})}),Vt=Yn;var Zn=h(function({model:e}){let o=e.walkStripLocator;return o?f(ee,{model:e,zIndex:4,overflow:"visible",testId:"graph-walk-strip-locator",children:[n("circle",{cx:o.x,cy:o.y,r:11,fill:"none",stroke:"white",strokeWidth:4}),n("circle",{cx:o.x,cy:o.y,r:11,fill:"none",stroke:"#111",strokeWidth:1.75})]}):null}),Yt=Zn;var $n=1.1,jn=100,Kn=40,qn=800,Un=10,Zt=2;function ge(t){let e=t.deltaY*(t.deltaMode===1?Kn:t.deltaMode===2?qn:1),o=(t.ctrlKey?Un:1)*e/jn;return $n**-Math.max(-Zt,Math.min(Zt,o))}var Jn=40,Qn=100,eo=24,$t=Math.log(16);function to(t,e){let o=t*Math.exp(-Math.max(0,e)/eo);return Math.abs(o)<.001?t:t-o}function no(t,e){let o=Math.abs(t.deltaX)>Math.abs(t.deltaY);return t.ctrlKey||t.metaKey||!o&&(!e||e.scrollZoom)?"zoom":o?"pan":"page"}function qt(t,e,o){H(()=>{if(!t)return;let i=-1/0,r={backlog:0,x:0,y:0,frame:0,last:0},c=p=>{let s=to(r.backlog,Math.min(100,p-r.last));r.backlog-=s,r.last=p,r.frame=r.backlog?requestAnimationFrame(c):0,T(o)&&o.zoom(Math.exp(s),r.x,r.y)},l=p=>{if(o.hostPlacesX||o.followsHostView)return;let m=((p.target instanceof Element?p.target.closest("canvas"):null)??(o.facetPanels?null:e))?.getBoundingClientRect();if(m&&p.clientY-m.top<o.referenceStripZonePx)return;let w=no(p,o.host);if(w!=="page"){if(o.host&&p.stopPropagation(),p.preventDefault(),w==="pan"){if(p.timeStamp-i>Qn){let S=p.deltaMode===1?Jn:1;o.setTransform(o.scale,o.translateX-p.deltaX*S,o.translateY)}return}i=p.timeStamp,m&&(r.x=p.clientX-m.left,r.y=p.clientY-m.top,r.backlog=Math.max(-$t,Math.min($t,r.backlog+Math.log(ge(p)))),r.frame||(r.last=performance.now()-1e3/60,r.frame=requestAnimationFrame(c)))}};return t.addEventListener("wheel",l,{passive:!1}),()=>{cancelAnimationFrame(r.frame),t.removeEventListener("wheel",l)}},[t,e,o])}var jt=3,ve="data-gesture-owner",Y=t=>({x:t.clientX,y:t.clientY});function Kt(t){let[e,o]=[...t.values()];return{spread:Math.hypot(e.x-o.x,e.y-o.y),mid:{x:(e.x+o.x)/2,y:(e.y+o.y)/2}}}function Ut(t){let e=k({x:0,y:0}),o=k({x:0,y:0}),i=k(!1),r=k(void 0),c=a=>r.current!==void 0&&a.pointerId!==r.current,l=k(new Map),p=k(null),s=k(null),u=k(!1),m=k(null),w=k(!1),S=k({frame:0,pan:null,hover:null,pinch:!1});H(()=>()=>{cancelAnimationFrame(S.current.frame)},[]);let[N,I]=C(),[O,D]=C(!1),[Z,$]=C(void 0);function R(a){let d=a.currentTarget.getBoundingClientRect();return{x:a.clientX-d.left,y:a.clientY-d.top}}function L(a,d){if(t.layoutResult?.tubeMap)return t.tubeMapNodeAt(a,d);let g=t.referenceStripNodeAt(a,d);if(g)return g;let{nodePositions:v}=t;if(!v)return null;let{x:y,y:b}=se(a,d,t,t.axisScale);return le(v,y,b,t.axisScale,t.positionsVersion,t.nodeInk)}function en(a,d){let{nodePositions:g,graph:v}=t;if(!g||!v)return null;let{x:y,y:b}=se(a,d,t,t.axisScale);return ce(g,v,y,b,t.axisScale,t.effectiveDrawPaths&&!t.facetPanels,t.positionsVersion,t.deletionEdgeIndexes,t.hiddenEdgeIndexes,t.deletionRoutes,t.layoutResult?.stranded)}function tn(a){a.button===0&&a.preventDefault()}function nn(a){if(a.button!==0)return;let d=l.current;if(c(a)){t.isPanning&&!w.current&&a.pointerType==="touch"&&d.size===1&&(a.currentTarget.setPointerCapture(a.pointerId),d.set(a.pointerId,Y(a)),s.current=Kt(d),i.current=!0);return}i.current=!1,o.current={x:a.clientX,y:a.clientY},a.currentTarget.removeAttribute(ve);let g=t.followsHostView;if(t.hostPlacesX||g&&a.shiftKey)return;a.currentTarget.setPointerCapture(a.pointerId),r.current=a.pointerId,p.current=a.currentTarget,d.clear(),d.set(a.pointerId,Y(a));let{x:v,y}=R(a),b=y<t.referenceStripZonePx,P=t.layoutResult?.tubeMap||b?null:L(v,y);g&&P&&a.currentTarget.setAttribute(ve,""),w.current=g,u.current=b&&!g,P?t.setDraggingNode(P):t.setPanning(!0),e.current={x:a.clientX,y:a.clientY}}function ye(){let a=s.current,d=p.current;if(!a||!d)return;let g=Kt(l.current),v=d.getBoundingClientRect();a.spread>0&&g.spread>0&&t.zoom(g.spread/a.spread,a.mid.x-v.left,a.mid.y-v.top),t.setTransform(t.scale,t.translateX+g.mid.x-a.mid.x,t.translateY+g.mid.y-a.mid.y),s.current=g}function on(){let a=S.current,{pan:d,hover:g,pinch:v}=a;if(a.frame=0,a.pan=null,a.hover=null,a.pinch=!1,v&&ye(),d&&u.current?t.host?.horizontalScroll(-d.dx):d&&w.current?t.setTransform(t.scale,t.translateX,t.translateY+d.dy):d&&t.setTransform(t.scale,t.translateX+d.dx,t.translateY+d.dy),!g)return;let{x:y,y:b}=g,P=t.facetPanels?void 0:yt(t.overlayLabels,y,b);$(M=>M?.label===P?.label&&M?.readout===P?.readout?M:P);let E=t.walkRowBars;if(E){let M=t.walkRowAt(y,b);t.setHoveredWalkRow(M===void 0?null:[E.reference,...E.rows][M].name)}if(t.nodePositions&&t.graph){let M=L(y,b);t.setHoveredPanel(t.tubeMapPanelAt(b)),t.setHoveredNode(M,{x:y,y:b}),D(M!==null&&!t.hostPlacesX&&!t.layoutResult?.tubeMap&&b>=t.referenceStripZonePx),t.setHoveredTube(M===null&&t.layoutResult?.tubeMap?t.tubeAt(y,b):null),t.setHoveredEdge(M||t.layoutResult?.tubeMap||!t.hoverLightsEverything?null:en(y,b))}}function j(){S.current.frame||(S.current.frame=requestAnimationFrame(on))}function rn(){let a=S.current;cancelAnimationFrame(a.frame),a.frame=0,a.pan=null,a.hover=null,a.pinch=!1}function an(a){let d=l.current;if(s.current&&d.has(a.pointerId)){d.set(a.pointerId,Y(a)),S.current.pinch=!0,j();return}if(c(a)||m.current)return;let g=a.clientX-e.current.x,v=a.clientY-e.current.y;e.current={x:a.clientX,y:a.clientY},Math.hypot(a.clientX-o.current.x,a.clientY-o.current.y)>jt&&(i.current=!0);let y=S.current;if(t.draggingNode)t.moveNode(t.draggingNode,g/t.scaleX,v/t.scaleY);else if(t.isPanning)y.pan={dx:(y.pan?.dx??0)+g,dy:(y.pan?.dy??0)+v},j();else{let b=a.currentTarget.getBoundingClientRect();y.hover={x:a.clientX-b.left,y:a.clientY-b.top},j()}}function ae(a){let d=l.current;if(s.current&&d.has(a.pointerId)){S.current.pinch&&(S.current.pinch=!1,ye()),d.delete(a.pointerId),s.current=null;let[[g,v]]=[...d];r.current=g,e.current=v;return}c(a)||(r.current=void 0,d.clear(),T(t)&&t.stopDragging())}function sn(a){c(a)||(r.current=void 0,l.current.clear(),s.current=null,rn(),$(void 0),D(!1),T(t)&&(t.stopDragging(),t.clearHover()))}function ln(a){let{x:d,y:g}=R(a),v=L(d,g),{clientX:y,clientY:b}=a;if(v){a.preventDefault(),I({clientX:y,clientY:b,nodeId:v});return}let P=t.walkRowAt(d,g);P!==void 0&&(a.preventDefault(),I({clientX:y,clientY:b,row:P}))}function cn(a){if(!i.current){let{x:d,y:g}=R(a),v=L(d,g);t.setSelectedNode(v),v&&t.showNodeDetails(v)}}H(()=>()=>{m.current?.end()},[]);function pn(a){if(a.button!==0||t.hostPlacesX||t.followsHostView||!(a.target instanceof Element)||!a.target.closest(`[${tt}]`))return;m.current?.end(),u.current=!1,w.current=!1;let d=a.pointerId,g=Y(a),v=g,y={moved:!1,end:()=>{window.removeEventListener("pointermove",b,!0),window.removeEventListener("pointerup",P,!0),window.removeEventListener("pointercancel",P,!0),y.moved&&T(t)&&t.stopDragging()}};function b(E){if(E.pointerId!==d)return;if(!y.moved){if(Math.hypot(E.clientX-g.x,E.clientY-g.y)<=jt)return;y.moved=!0,t.setPanning(!0)}let M=S.current;M.pan={dx:(M.pan?.dx??0)+E.clientX-v.x,dy:(M.pan?.dy??0)+E.clientY-v.y},v=Y(E),j()}function P(E){E.pointerId===d&&(y.end(),setTimeout(()=>{m.current===y&&(m.current=null)},0))}m.current=y,window.addEventListener("pointermove",b,!0),window.addEventListener("pointerup",P,!0),window.addEventListener("pointercancel",P,!0)}function un(a){m.current?.moved&&(m.current=null,a.stopPropagation())}let dn={cursor:t.isPanning||t.draggingNode?"grabbing":O?"move":"grab",touchAction:t.hostPlacesX?"auto":"none",overscrollBehavior:"contain"},fn=t.host!==void 0&&!t.hostPlacesX&&!t.followsHostView?{[ve]:"",onMouseDown:a=>{a.stopPropagation()}}:{};return{canvasStyle:dn,surfaceProps:fn,handlers:{onMouseDown:tn,onPointerDown:nn,onPointerMove:an,onPointerUp:ae,onPointerCancel:ae,onLostPointerCapture:ae,onPointerLeave:sn,onClick:cn,onContextMenu:ln},contextMenu:N,hoveredChip:Z,labelHandlers:{onPointerDown:pn,onClickCapture:un},closeContextMenu:()=>{I(void 0)}}}var oo={position:"relative"},ro={position:"relative",lineHeight:0,isolation:"isolate"},ao={position:"absolute",left:0,right:0,bottom:0,zIndex:0},io={position:"absolute",inset:0,zIndex:10,lineHeight:"normal",pointerEvents:"none"},so={position:"absolute",left:6,transform:"translateY(-50%)",background:"rgba(255,255,255,0.82)",padding:"0 4px",borderRadius:3,fontSize:11,lineHeight:"16px",whiteSpace:"nowrap",pointerEvents:"none",zIndex:4},lo=h(function({model:e}){return n(G,{children:e.visibleRowLabels.map(({label:o,y:i,top:r})=>n("div",{"data-testid":"graph-row-label",style:{...so,top:r},children:o},i))})}),co={position:"absolute",top:F,right:F,display:"flex",flexDirection:"column",borderRadius:3,overflowX:"hidden",overflowY:"auto",zIndex:4},Jt={position:"absolute",transform:"translate(-50%, -50%)",background:"rgba(255,255,255,0.78)",padding:"0 3px",borderRadius:3,fontSize:10,lineHeight:"13px",whiteSpace:"nowrap",pointerEvents:"none",zIndex:3},po={...Jt,color:"#18181c",fontWeight:600},uo=h(function({model:e}){let o=k(null),i=e.legendAtRest;return H(()=>{let r=o.current;if(!r||!i)return;let c=()=>{T(e)&&e.legendAtRest&&e.setLegendSize({width:r.offsetWidth,height:r.scrollHeight})};c();let l=new ResizeObserver(c);return l.observe(r),r.firstElementChild&&l.observe(r.firstElementChild),()=>{l.disconnect()}},[e,i]),n("div",{ref:o,style:{...co,top:F+e.referenceStripZonePx,maxHeight:e.canvasHeight-2*F-e.referenceStripZonePx},children:n(kt,{model:e})})}),fo=h(function({model:e}){let o=e.overlayLabels.sizes,i=o.flatMap(({key:r,leader:c})=>c?[{key:r,...c}]:[]);return f(G,{children:[i.length>0?n(ee,{model:e,zIndex:2,overflow:"visible",children:i.map(({key:r,arcX:c,arcY:l,labelX:p,labelY:s})=>n("line",{"data-testid":"graph-label-leader",x1:c,y1:l,x2:p,y2:s,stroke:"#18181c",strokeWidth:1},r))}):null,o.map(({key:r,text:c,x:l,y:p,kind:s})=>n("div",{"data-testid":"graph-size-label",style:{...s==="deletion"?po:Jt,left:l,top:p},children:c},r))]})}),Qt=h(function({model:e,handle:{canvasRef:o,canvas:i},ownChrome:r}){let{handlers:c,canvasStyle:l,surfaceProps:p,labelHandlers:s,contextMenu:u,closeContextMenu:m,hoveredChip:w}=Ut(e),[S,N]=C(null);qt(S,i,e);let I=e.facetPanels!==void 0;return f("div",{style:oo,...p,children:[r?n(Ot,{model:e}):null,f("div",{ref:N,style:ro,...s,onMouseEnter:()=>{e.setPointerInPane(!0)},onMouseLeave:()=>{T(e)&&e.setPointerInPane(!1)},children:[e.referenceStripShown?n("div",{style:{...ao,top:e.referenceStripZonePx,background:Q}}):null,n("canvas",{ref:o,"data-testid":"graph-genome-canvas",style:{...l,width:e.paneWidth,height:e.canvasHeight,display:"block",position:"relative",zIndex:1},...c}),I?n(Rt,{model:e,handlers:c,canvasStyle:l}):f(G,{children:[n(St,{model:e}),n(fe,{model:e}),n(wt,{model:e}),n(lo,{model:e}),n(fo,{model:e}),n(ot,{model:e}),n(ht,{model:e}),n(bt,{model:e}),n(xt,{model:e}),n(Yt,{model:e}),n(uo,{model:e})]}),r?n("div",{style:io,children:n(xe,{isVisible:e.isLoading,immediate:!e.layoutResult,statusMessage:e.statusMessage,onCancel:e.canCancelLoad?()=>{e.cancelLoad()}:void 0})}):null,n(Dt,{model:e,chip:w})]}),e.walkStripShown?n(Vt,{model:e}):null,n(V,{model:e,at:u,onClose:m}),r?.renderError?n(ie,{error:r.renderError,onReset:r.retryRender}):null,r&&e.error?n(ie,{error:e.error,onReset:e.canRetryLoad?()=>{e.retryLoad()}:void 0}):null]})}),ho=h(function({model:e}){let{canvasRef:o,canvas:i,error:r,retry:c}=Mt(Pt,e);return n(Qt,{model:e,handle:{canvasRef:o,canvas:i},ownChrome:{renderError:r,retryRender:c}})}),mo=h(function({model:e,handle:o}){return o?n(Qt,{model:e,handle:o}):n(ho,{model:e})}),$i=mo;export{Pt as a,$i as b};
2
+ //# sourceMappingURL=chunk-3S33TTXF.js.map