jbrowse-plugin-graphgenomeviewer 7.3.1 → 7.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{GbzBaseSyntenyAdapter-NYI2YVNG.js → GbzBaseSyntenyAdapter-3MELVQRM.js} +2 -2
- package/dist/chunks/GbzBaseSyntenyAdapter-3MELVQRM.js.map +7 -0
- package/dist/chunks/{GraphGenomeView-WJ3FIDY2.js → GraphGenomeView-6EDKLBOJ.js} +2 -2
- package/dist/chunks/{GraphTrackSettingsDialog-ZW7ALMDV.js → GraphTrackSettingsDialog-KYEZWI4Z.js} +2 -2
- package/dist/chunks/{HighlightColorDialog-VBZRUKD5.js → HighlightColorDialog-IMLYI64R.js} +2 -2
- package/dist/chunks/{LinearGraphDisplay-SPOPTJEN.js → LinearGraphDisplay-CRIZLJDE.js} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-ABZPIZYV.js → MinigraphBubbleAdapter-2HPTGZ5N.js} +2 -2
- package/dist/chunks/RgfaTabixAdapter-GNH3QCPZ.js +2 -0
- package/dist/chunks/RgfaTabixAdapter-GNH3QCPZ.js.map +7 -0
- package/dist/chunks/{WalkTabixSyntenyAdapter-ZJJ4SQHH.js → WalkTabixSyntenyAdapter-CUPHY36S.js} +2 -2
- package/dist/chunks/{chunk-44CJ2N3N.js → chunk-4EKOQHUX.js} +2 -2
- package/dist/chunks/{chunk-44CJ2N3N.js.map → chunk-4EKOQHUX.js.map} +4 -4
- package/dist/chunks/{chunk-RFDSEB2X.js → chunk-6DRBCLWY.js} +4 -4
- package/dist/chunks/chunk-B5SVBPXN.js +2 -0
- package/dist/chunks/chunk-B5SVBPXN.js.map +7 -0
- package/dist/chunks/chunk-CJMBJJLO.js +3 -0
- package/dist/chunks/chunk-CJMBJJLO.js.map +7 -0
- package/dist/chunks/{chunk-BXRTG7FU.js → chunk-F4T7JI7S.js} +2 -2
- package/dist/chunks/{chunk-BXRTG7FU.js.map → chunk-F4T7JI7S.js.map} +1 -1
- package/dist/chunks/chunk-GN4HSVLB.js +4 -0
- package/dist/chunks/{chunk-VQ77X5QU.js.map → chunk-GN4HSVLB.js.map} +4 -4
- package/dist/chunks/{chunk-WUSKVEA6.js → chunk-HOSCIP4U.js} +2 -2
- package/dist/chunks/{chunk-WUSKVEA6.js.map → chunk-HOSCIP4U.js.map} +2 -2
- package/dist/chunks/chunk-HTSG4T32.js +3 -0
- package/dist/chunks/chunk-HTSG4T32.js.map +7 -0
- package/dist/chunks/{chunk-YXVEGNFQ.js → chunk-IFBKAC2H.js} +2 -2
- package/dist/chunks/{chunk-RW775LQN.js → chunk-MNL7IPTH.js} +2 -2
- package/dist/chunks/{chunk-RW775LQN.js.map → chunk-MNL7IPTH.js.map} +2 -2
- package/dist/chunks/chunk-N5VWQHTK.js +2 -0
- package/dist/chunks/{chunk-QTOA4RB7.js.map → chunk-N5VWQHTK.js.map} +2 -2
- package/dist/chunks/{chunk-DBPEUVUC.js → chunk-NGR473EL.js} +2 -2
- package/dist/chunks/{chunk-DBPEUVUC.js.map → chunk-NGR473EL.js.map} +2 -2
- package/dist/chunks/chunk-ORHUPW3G.js +3 -0
- package/dist/chunks/chunk-ORHUPW3G.js.map +7 -0
- package/dist/chunks/{chunk-DUR437TH.js → chunk-PUFH6DMJ.js} +2 -2
- package/dist/chunks/{chunk-DUR437TH.js.map → chunk-PUFH6DMJ.js.map} +1 -1
- package/dist/chunks/{chunk-FIRQAKMX.js → chunk-Q55PHRHV.js} +1 -1
- package/dist/chunks/{chunk-FIRQAKMX.js.map → chunk-Q55PHRHV.js.map} +1 -1
- package/dist/chunks/chunk-QQCTNB2Z.js +2 -0
- package/dist/chunks/chunk-QQCTNB2Z.js.map +7 -0
- package/dist/chunks/chunk-R25GOTED.js +2 -0
- package/dist/chunks/chunk-R25GOTED.js.map +7 -0
- package/dist/chunks/chunk-TQKSF3NI.js +2 -0
- package/dist/chunks/{chunk-7HWHWPRW.js.map → chunk-TQKSF3NI.js.map} +3 -3
- package/dist/chunks/{chunk-6MUBJVBG.js → chunk-ULLEUORS.js} +2 -2
- package/dist/chunks/{chunk-6MUBJVBG.js.map → chunk-ULLEUORS.js.map} +4 -4
- package/dist/chunks/chunk-VW4PPXH6.js +2 -0
- package/dist/chunks/{renderSvg-WD6YDV2I.js → renderSvg-HEEQJD5B.js} +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +2 -2
- package/package.json +3 -3
- package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +3 -1
- package/src/RgfaTabixAdapter/walkReader.ts +5 -1
- package/src/panSNTabix.ts +3 -3
- package/src/version.ts +1 -1
- package/dist/chunks/GbzBaseSyntenyAdapter-NYI2YVNG.js.map +0 -7
- package/dist/chunks/RgfaTabixAdapter-3NQC5QPT.js +0 -2
- package/dist/chunks/RgfaTabixAdapter-3NQC5QPT.js.map +0 -7
- package/dist/chunks/chunk-2M4XYSLG.js +0 -2
- package/dist/chunks/chunk-2M4XYSLG.js.map +0 -7
- package/dist/chunks/chunk-6KUHGRHU.js +0 -2
- package/dist/chunks/chunk-6KUHGRHU.js.map +0 -7
- package/dist/chunks/chunk-7HWHWPRW.js +0 -2
- package/dist/chunks/chunk-BKBH3WGW.js +0 -3
- package/dist/chunks/chunk-BKBH3WGW.js.map +0 -7
- package/dist/chunks/chunk-JCAZTNYG.js +0 -2
- package/dist/chunks/chunk-N74HGPAW.js +0 -3
- package/dist/chunks/chunk-N74HGPAW.js.map +0 -7
- package/dist/chunks/chunk-PEDWEPNK.js +0 -2
- package/dist/chunks/chunk-PEDWEPNK.js.map +0 -7
- package/dist/chunks/chunk-PYQG3JHP.js +0 -3
- package/dist/chunks/chunk-PYQG3JHP.js.map +0 -7
- package/dist/chunks/chunk-QTOA4RB7.js +0 -2
- package/dist/chunks/chunk-VQ77X5QU.js +0 -4
- /package/dist/chunks/{GraphGenomeView-WJ3FIDY2.js.map → GraphGenomeView-6EDKLBOJ.js.map} +0 -0
- /package/dist/chunks/{GraphTrackSettingsDialog-ZW7ALMDV.js.map → GraphTrackSettingsDialog-KYEZWI4Z.js.map} +0 -0
- /package/dist/chunks/{HighlightColorDialog-VBZRUKD5.js.map → HighlightColorDialog-IMLYI64R.js.map} +0 -0
- /package/dist/chunks/{LinearGraphDisplay-SPOPTJEN.js.map → LinearGraphDisplay-CRIZLJDE.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-ABZPIZYV.js.map → MinigraphBubbleAdapter-2HPTGZ5N.js.map} +0 -0
- /package/dist/chunks/{WalkTabixSyntenyAdapter-ZJJ4SQHH.js.map → WalkTabixSyntenyAdapter-CUPHY36S.js.map} +0 -0
- /package/dist/chunks/{chunk-RFDSEB2X.js.map → chunk-6DRBCLWY.js.map} +0 -0
- /package/dist/chunks/{chunk-YXVEGNFQ.js.map → chunk-IFBKAC2H.js.map} +0 -0
- /package/dist/chunks/{chunk-JCAZTNYG.js.map → chunk-VW4PPXH6.js.map} +0 -0
- /package/dist/chunks/{renderSvg-WD6YDV2I.js.map → renderSvg-HEEQJD5B.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.
|
|
4
|
-
"sourcesContent": ["// src/util/groups.ts\nfunction pushTo(map, key, value) {\n const list = map.get(key);\n if (list) {\n list.push(value);\n } else {\n map.set(key, [value]);\n }\n}\nfunction addTo(map, key, value) {\n const set = map.get(key);\n if (set) {\n set.add(value);\n } else {\n map.set(key, /* @__PURE__ */ new Set([value]));\n }\n}\nfunction groupBy(items, keyOf) {\n const groups = /* @__PURE__ */ new Map();\n for (const item of items) {\n pushTo(groups, keyOf(item), item);\n }\n return groups;\n}\n\nexport {\n pushTo,\n addTo,\n groupBy\n};\n", "// src/util/partitionPoint.ts\nfunction partitionPoint(n, pred) {\n let lo = 0;\n let hi = n;\n while (lo < hi) {\n const mid = lo + hi >> 1;\n if (pred(mid)) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\n}\n\nexport {\n partitionPoint\n};\n", "import {\n partitionPoint\n} from \"./chunk-HOAIOEI7.js\";\n\n// src/anchoredNodes.ts\nvar REFERENCE_RANK = 0;\nfunction isAnchored(node) {\n return node.stable !== void 0;\n}\nfunction isBackbone(node) {\n return node.stable?.rank === REFERENCE_RANK;\n}\nfunction isOffReference(node) {\n return node.stable !== void 0 && node.stable.rank > REFERENCE_RANK;\n}\nfunction backboneNodes(graph) {\n return graph.nodes.filter(isBackbone);\n}\nfunction overlapsWindow(node, window) {\n return node.stable.start < window.end && node.stable.start + node.length > window.start;\n}\nfunction backbonePositions(backbone) {\n const positions = {};\n for (const node of backbone) {\n positions[node.id] = [\n { x: node.stable.start, y: 0 },\n { x: node.stable.start + node.length, y: 0 }\n ];\n }\n return positions;\n}\nfunction firstNodeAtOrAfter(nodes, bp) {\n return partitionPoint(nodes.length, (i) => nodes[i].stable.start < bp);\n}\nfunction backboneSpan(backbone) {\n let min = Infinity;\n let max = -Infinity;\n for (const node of backbone) {\n min = Math.min(min, node.stable.start);\n max = Math.max(max, node.stable.start + node.length);\n }\n return max - min;\n}\nfunction referenceSpan(backbone, region) {\n return region && region.end > region.start ? region.end - region.start : backboneSpan(backbone);\n}\n\nexport {\n REFERENCE_RANK,\n isAnchored,\n isBackbone,\n isOffReference,\n backboneNodes,\n overlapsWindow,\n backbonePositions,\n firstNodeAtOrAfter,\n backboneSpan,\n referenceSpan\n};\n", "// src/pathVisits.ts\nvar PathVisits = class {\n constructor(columns) {\n this.segments = columns.segments;\n this.offsets = columns.offsets;\n this.path = columns.path;\n this.start = columns.start;\n this.reversed = columns.reversed;\n this.paths = columns.paths;\n this.samples = columns.samples;\n this.slots = new Map(this.segments.map((s, i) => [s, i]));\n }\n static from(entries) {\n const builder = new PathVisitsBuilder();\n for (const [segment, visits] of entries) {\n builder.declare(segment);\n for (const v of visits) {\n builder.add(segment, v.path, v.sample, v.start, v.strand === \"-\");\n }\n }\n return builder.build();\n }\n get size() {\n return this.segments.length;\n }\n // the segment's index into `segments` and `offsets`, -1 when unvisited\n slot(segment) {\n return this.slots.get(segment) ?? -1;\n }\n pathIndex(path) {\n return this.paths.indexOf(path);\n }\n // the first of `slot`'s visits by path `p`, -1 for none\n firstBy(slot, p) {\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n if (this.path[i] === p) {\n return i;\n }\n }\n return -1;\n }\n // Paths' steps replayed in walk order against their visits: the k-th call\n // for one path and segment answers that path's k-th visit there, -1 past\n // its last. A walk in pieces lists its pieces in path order, so replaying\n // the pieces in order reads each step's own visit.\n replay() {\n const cursor = /* @__PURE__ */ new Map();\n return (slot, p) => {\n if (slot < 0 || p < 0) {\n return -1;\n }\n const key = slot * this.paths.length + p;\n const end = this.offsets[slot + 1];\n let at = cursor.get(key) ?? this.offsets[slot];\n while (at < end && this.path[at] !== p) {\n at++;\n }\n cursor.set(key, at + 1);\n return at < end ? at : -1;\n };\n }\n // the visits of paths `keepPath` accepts, at segments `keepSegment` does\n filter(keepPath, keepSegment = () => true) {\n const kept = this.paths.map(keepPath);\n const builder = new PathVisitsBuilder();\n this.segments.forEach((segment, s) => {\n if (!keepSegment(segment)) {\n return;\n }\n const slot = builder.declare(segment);\n for (let i = this.offsets[s]; i < this.offsets[s + 1]; i++) {\n const p = this.path[i];\n if (kept[p]) {\n builder.addAt(\n slot,\n builder.pathOf(this.paths[p], this.samples[p]),\n this.start[i],\n this.reversed[i] === 1\n );\n }\n }\n });\n return builder.build();\n }\n strand(i) {\n return this.reversed[i] ? \"-\" : \"+\";\n }\n visit(i) {\n const p = this.path[i];\n return {\n path: this.paths[p],\n sample: this.samples[p],\n start: this.start[i],\n strand: this.strand(i)\n };\n }\n visitsAt(slot) {\n const out = [];\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n out.push(this.visit(i));\n }\n return out;\n }\n get(segment) {\n const slot = this.slot(segment);\n return slot < 0 ? void 0 : this.visitsAt(slot);\n }\n has(segment) {\n return this.slots.has(segment);\n }\n keys() {\n return this.segments[Symbol.iterator]();\n }\n *values() {\n for (let s = 0; s < this.segments.length; s++) {\n yield this.visitsAt(s);\n }\n }\n *entries() {\n for (let s = 0; s < this.segments.length; s++) {\n yield [this.segments[s], this.visitsAt(s)];\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n};\nvar Column = class {\n constructor(data) {\n this.data = data;\n this.length = 0;\n }\n push(value) {\n if (this.length === this.data.length) {\n const grown = new this.data.constructor(\n this.data.length * 2\n );\n grown.set(this.data);\n this.data = grown;\n }\n this.data[this.length++] = value;\n }\n};\nvar PathVisitsBuilder = class {\n constructor() {\n this.segments = [];\n this.slots = /* @__PURE__ */ new Map();\n this.paths = [];\n this.samples = [];\n this.pathIndex = /* @__PURE__ */ new Map();\n this.slot = new Column(new Int32Array(1024));\n this.path = new Column(new Int32Array(1024));\n this.start = new Column(new Float64Array(1024));\n this.reversed = new Column(new Uint8Array(1024));\n }\n // a segment's place in iteration order, though it has no visits yet\n declare(segment) {\n let s = this.slots.get(segment);\n if (s === void 0) {\n s = this.segments.length;\n this.slots.set(segment, s);\n this.segments.push(segment);\n }\n return s;\n }\n // a path's index, so a caller adding many of its visits names it once\n pathOf(path, sample) {\n let p = this.pathIndex.get(path);\n if (p === void 0) {\n p = this.paths.length;\n this.pathIndex.set(path, p);\n this.paths.push(path);\n this.samples.push(sample);\n }\n return p;\n }\n add(segment, path, sample, start, reversed) {\n this.addAt(\n this.declare(segment),\n this.pathOf(path, sample),\n start,\n reversed\n );\n }\n addAt(slot, path, start, reversed) {\n this.slot.push(slot);\n this.path.push(path);\n this.start.push(start);\n this.reversed.push(reversed ? 1 : 0);\n }\n build() {\n const n = this.slot.length;\n const segments = this.segments.length;\n const offsets = new Int32Array(segments + 1);\n const slot = this.slot.data;\n for (let i = 0; i < n; i++) {\n offsets[slot[i] + 1]++;\n }\n for (let s = 0; s < segments; s++) {\n offsets[s + 1] += offsets[s];\n }\n const fill = offsets.slice(0, segments);\n const path = new Int32Array(n);\n const start = new Float64Array(n);\n const reversed = new Uint8Array(n);\n for (let i = 0; i < n; i++) {\n const at = fill[slot[i]]++;\n path[at] = this.path.data[i];\n start[at] = this.start.data[i];\n reversed[at] = this.reversed.data[i];\n }\n return new PathVisits({\n segments: this.segments,\n offsets,\n path,\n start,\n reversed,\n paths: this.paths,\n samples: this.samples\n });\n }\n};\n\nexport {\n PathVisits,\n Column,\n PathVisitsBuilder\n};\n", "import {\n PathVisitsBuilder\n} from \"./chunk-ZPZ7GNBT.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n REFERENCE_RANK\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n panSNSample\n} from \"./chunk-4XWZNPQ2.js\";\n\n// src/pathAnchoring.ts\nvar RANGE_SUFFIX = /:(\\d+)-\\d+$/;\nvar VG_FRAGMENT = /^([^#]*#[^#]*#[^#[]*)#(\\d+)(?:\\[(\\d+)-\\d+\\])?$/;\nvar VG_SUBRANGE = /\\[(\\d+)-\\d+\\]$/;\nfunction pathOrigin(pathName) {\n const fragment = VG_FRAGMENT.exec(pathName);\n if (fragment) {\n return { name: fragment[1], start: +fragment[2] + +(fragment[3] ?? 0) };\n }\n const match = RANGE_SUFFIX.exec(pathName) ?? VG_SUBRANGE.exec(pathName);\n return match ? { name: pathName.slice(0, match.index), start: +match[1] } : { name: pathName, start: 0 };\n}\nfunction surveyPaths(paths, lengthOf) {\n const anchorPaths = [];\n const visits = new PathVisitsBuilder();\n for (const path of paths) {\n const sample = panSNSample(path.name);\n const p = visits.pathOf(path.name, sample);\n let pos = path.start;\n for (const step of path.steps) {\n visits.addAt(visits.declare(step.id), p, pos, step.strand === \"-\");\n pos += lengthOf(step.id);\n }\n anchorPaths.push({\n name: path.name,\n sample,\n start: path.start,\n length: pos - path.start\n });\n }\n return { anchorPaths, pathVisits: visits.build() };\n}\nfunction chooseReferencePath(anchorPaths, preferred) {\n const named = anchorPaths.find(\n (p) => p.sample === preferred || p.name === preferred\n );\n return named ?? anchorPaths[0];\n}\nvar OFF_REFERENCE_RANK = 1;\nfunction anchorNode(node, visits, reference, samplesOf) {\n const slot = visits.slot(node.name);\n if (slot < 0 || visits.offsets[slot] === visits.offsets[slot + 1]) {\n return node;\n }\n const own = visits.firstBy(slot, reference);\n const anchor = own >= 0 ? own : visits.offsets[slot];\n return {\n ...node,\n stable: {\n refName: visits.paths[visits.path[anchor]],\n start: visits.start[anchor],\n rank: own >= 0 ? REFERENCE_RANK : OFF_REFERENCE_RANK,\n strand: visits.strand(anchor)\n },\n samples: samplesOf(slot)\n };\n}\nfunction sampleSorter(visits) {\n const sorted = [...new Set(visits.samples)].sort();\n const rank = new Map(sorted.map((sample, i) => [sample, i]));\n const pathRank = Int32Array.from(visits.samples, (s) => rank.get(s));\n const seen = new Uint8Array(sorted.length);\n const ranks = new Int32Array(sorted.length);\n return (slot) => {\n let n = 0;\n for (let i = visits.offsets[slot]; i < visits.offsets[slot + 1]; i++) {\n const r = pathRank[visits.path[i]];\n if (seen[r] === 0) {\n seen[r] = 1;\n ranks[n++] = r;\n }\n }\n let out;\n if (n === sorted.length) {\n out = sorted;\n seen.fill(0);\n } else if (n * 8 < sorted.length) {\n const found = ranks.subarray(0, n);\n found.forEach((r) => seen[r] = 0);\n out = Array.from(found.sort(), (r) => sorted[r]);\n } else {\n out = [];\n for (let r = 0; r < sorted.length; r++) {\n if (seen[r] === 1) {\n seen[r] = 0;\n out.push(sorted[r]);\n }\n }\n }\n return out;\n };\n}\nfunction anchorFromPaths(graph, preferred) {\n const { anchorPaths, pathVisits } = graph;\n const reference = anchorPaths && pathVisits ? chooseReferencePath(anchorPaths, preferred) : void 0;\n if (!reference || !anchorPaths || !pathVisits) {\n return graph;\n }\n const samplesOf = sampleSorter(pathVisits);\n const referenceIndex = pathVisits.pathIndex(reference.name);\n return {\n ...graph,\n nodes: graph.nodes.map(\n (node) => anchorNode(node, pathVisits, referenceIndex, samplesOf)\n ),\n anchoredBy: \"paths\",\n referencePath: reference.name\n };\n}\nfunction anchorGraph(graph, preferred) {\n if (graph.anchoredBy !== \"tags\") {\n return anchorFromPaths(graph, preferred);\n }\n const referencePath = taggedReferencePath(graph);\n return referencePath ? { ...graph, referencePath } : graph;\n}\nfunction taggedReferencePath(graph) {\n const refName = graph.nodes.find((n) => n.stable?.rank === 0)?.stable?.refName;\n return refName !== void 0 && graph.anchorPaths?.some((p) => p.name === refName) ? refName : void 0;\n}\nfunction trimOrigins(graph, kept) {\n if (!graph.anchorPaths) {\n return void 0;\n }\n const lengthOf = new Map(graph.nodes.map((n) => [n.id, n.length]));\n const bp = (ids, end = ids.length) => {\n let sum = 0;\n for (let i = 0; i < end; i++) {\n sum += lengthOf.get(ids[i]) ?? 0;\n }\n return sum;\n };\n const byOrigin = groupBy(graph.paths ?? [], (p) => pathOrigin(p.name).name);\n return graph.anchorPaths.map((o) => {\n const pieces = byOrigin.get(o.name);\n const path = pieces?.length === 1 ? pieces[0] : void 0;\n const stretch = path && kept.get(path.name);\n return path && stretch ? {\n ...o,\n start: o.start + bp(path.nodeIds, stretch.first),\n length: bp(stretch.nodeIds)\n } : o;\n });\n}\n\nexport {\n pathOrigin,\n surveyPaths,\n chooseReferencePath,\n anchorFromPaths,\n anchorGraph,\n trimOrigins\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["pushTo", "map", "key", "value", "list", "addTo", "set", "groupBy", "items", "keyOf", "groups", "item", "partitionPoint", "n", "pred", "lo", "hi", "mid", "REFERENCE_RANK", "isAnchored", "node", "isBackbone", "isOffReference", "backboneNodes", "graph", "overlapsWindow", "window", "backbonePositions", "backbone", "positions", "firstNodeAtOrAfter", "nodes", "bp", "partitionPoint", "i", "backboneSpan", "min", "max", "referenceSpan", "region", "PathVisits", "columns", "i", "entries", "builder", "PathVisitsBuilder", "segment", "visits", "v", "path", "slot", "p", "cursor", "key", "end", "at", "keepPath", "keepSegment", "kept", "s", "out", "Column", "data", "value", "grown", "sample", "start", "reversed", "n", "segments", "offsets", "fill", "RANGE_SUFFIX", "VG_FRAGMENT", "VG_SUBRANGE", "pathOrigin", "pathName", "fragment", "match", "surveyPaths", "paths", "lengthOf", "anchorPaths", "visits", "PathVisitsBuilder", "path", "sample", "panSNSample", "p", "pos", "step", "chooseReferencePath", "preferred", "OFF_REFERENCE_RANK", "anchorNode", "node", "reference", "samplesOf", "slot", "own", "anchor", "REFERENCE_RANK", "sampleSorter", "sorted", "rank", "i", "pathRank", "s", "seen", "ranks", "n", "r", "out", "found", "anchorFromPaths", "graph", "pathVisits", "referenceIndex", "anchorGraph", "referencePath", "taggedReferencePath", "refName", "trimOrigins", "kept", "bp", "ids", "end", "sum", "byOrigin", "groupBy", "o", "pieces", "stretch"]
|
|
3
|
+
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BSOZW3FC.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HOAIOEI7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RJWPJCIB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-ZPZ7GNBT.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-3YBP46PB.js"],
|
|
4
|
+
"sourcesContent": ["// src/util/groups.ts\nfunction pushTo(map, key, value) {\n const list = map.get(key);\n if (list) {\n list.push(value);\n } else {\n map.set(key, [value]);\n }\n}\nfunction addTo(map, key, value) {\n const set = map.get(key);\n if (set) {\n set.add(value);\n } else {\n map.set(key, /* @__PURE__ */ new Set([value]));\n }\n}\nfunction groupBy(items, keyOf) {\n const groups = /* @__PURE__ */ new Map();\n for (const item of items) {\n pushTo(groups, keyOf(item), item);\n }\n return groups;\n}\n\nexport {\n pushTo,\n addTo,\n groupBy\n};\n", "// src/util/partitionPoint.ts\nfunction partitionPoint(n, pred) {\n let lo = 0;\n let hi = n;\n while (lo < hi) {\n const mid = lo + hi >> 1;\n if (pred(mid)) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\n}\n\nexport {\n partitionPoint\n};\n", "import {\n partitionPoint\n} from \"./chunk-HOAIOEI7.js\";\n\n// src/anchoredNodes.ts\nvar REFERENCE_RANK = 0;\nfunction isAnchored(node) {\n return node.stable !== void 0;\n}\nfunction isBackbone(node) {\n return node.stable?.rank === REFERENCE_RANK;\n}\nfunction isOffReference(node) {\n return node.stable !== void 0 && node.stable.rank > REFERENCE_RANK;\n}\nfunction backboneNodes(graph) {\n return graph.nodes.filter(isBackbone);\n}\nfunction overlapsWindow(node, window) {\n return node.stable.start < window.end && node.stable.start + node.length > window.start;\n}\nfunction backbonePositions(backbone) {\n const positions = {};\n for (const node of backbone) {\n positions[node.id] = [\n { x: node.stable.start, y: 0 },\n { x: node.stable.start + node.length, y: 0 }\n ];\n }\n return positions;\n}\nfunction firstNodeAtOrAfter(nodes, bp) {\n return partitionPoint(nodes.length, (i) => nodes[i].stable.start < bp);\n}\nfunction backboneSpan(backbone) {\n let min = Infinity;\n let max = -Infinity;\n for (const node of backbone) {\n min = Math.min(min, node.stable.start);\n max = Math.max(max, node.stable.start + node.length);\n }\n return max - min;\n}\nfunction referenceSpan(backbone, region) {\n return region && region.end > region.start ? region.end - region.start : backboneSpan(backbone);\n}\n\nexport {\n REFERENCE_RANK,\n isAnchored,\n isBackbone,\n isOffReference,\n backboneNodes,\n overlapsWindow,\n backbonePositions,\n firstNodeAtOrAfter,\n backboneSpan,\n referenceSpan\n};\n", "// src/pathVisits.ts\nvar PathVisits = class {\n constructor(columns) {\n this.segments = columns.segments;\n this.offsets = columns.offsets;\n this.path = columns.path;\n this.start = columns.start;\n this.reversed = columns.reversed;\n this.paths = columns.paths;\n this.samples = columns.samples;\n this.slots = new Map(this.segments.map((s, i) => [s, i]));\n }\n static from(entries) {\n const builder = new PathVisitsBuilder();\n for (const [segment, visits] of entries) {\n builder.declare(segment);\n for (const v of visits) {\n builder.add(segment, v.path, v.sample, v.start, v.strand === \"-\");\n }\n }\n return builder.build();\n }\n get size() {\n return this.segments.length;\n }\n // the segment's index into `segments` and `offsets`, -1 when unvisited\n slot(segment) {\n return this.slots.get(segment) ?? -1;\n }\n pathIndex(path) {\n return this.paths.indexOf(path);\n }\n // the first of `slot`'s visits by path `p`, -1 for none\n firstBy(slot, p) {\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n if (this.path[i] === p) {\n return i;\n }\n }\n return -1;\n }\n // Paths' steps replayed in walk order against their visits: the k-th call\n // for one path and segment answers that path's k-th visit there, -1 past\n // its last. A walk in pieces lists its pieces in path order, so replaying\n // the pieces in order reads each step's own visit.\n replay() {\n const cursor = /* @__PURE__ */ new Map();\n return (slot, p) => {\n if (slot < 0 || p < 0) {\n return -1;\n }\n const key = slot * this.paths.length + p;\n const end = this.offsets[slot + 1];\n let at = cursor.get(key) ?? this.offsets[slot];\n while (at < end && this.path[at] !== p) {\n at++;\n }\n cursor.set(key, at + 1);\n return at < end ? at : -1;\n };\n }\n // the visits of paths `keepPath` accepts, at segments `keepSegment` does\n filter(keepPath, keepSegment = () => true) {\n const kept = this.paths.map(keepPath);\n const builder = new PathVisitsBuilder();\n this.segments.forEach((segment, s) => {\n if (!keepSegment(segment)) {\n return;\n }\n const slot = builder.declare(segment);\n for (let i = this.offsets[s]; i < this.offsets[s + 1]; i++) {\n const p = this.path[i];\n if (kept[p]) {\n builder.addAt(\n slot,\n builder.pathOf(this.paths[p], this.samples[p]),\n this.start[i],\n this.reversed[i] === 1\n );\n }\n }\n });\n return builder.build();\n }\n strand(i) {\n return this.reversed[i] ? \"-\" : \"+\";\n }\n visit(i) {\n const p = this.path[i];\n return {\n path: this.paths[p],\n sample: this.samples[p],\n start: this.start[i],\n strand: this.strand(i)\n };\n }\n visitsAt(slot) {\n const out = [];\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n out.push(this.visit(i));\n }\n return out;\n }\n get(segment) {\n const slot = this.slot(segment);\n return slot < 0 ? void 0 : this.visitsAt(slot);\n }\n has(segment) {\n return this.slots.has(segment);\n }\n keys() {\n return this.segments[Symbol.iterator]();\n }\n *values() {\n for (let s = 0; s < this.segments.length; s++) {\n yield this.visitsAt(s);\n }\n }\n *entries() {\n for (let s = 0; s < this.segments.length; s++) {\n yield [this.segments[s], this.visitsAt(s)];\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n};\nvar Column = class {\n constructor(data) {\n this.data = data;\n this.length = 0;\n }\n push(value) {\n if (this.length === this.data.length) {\n const grown = new this.data.constructor(\n this.data.length * 2\n );\n grown.set(this.data);\n this.data = grown;\n }\n this.data[this.length++] = value;\n }\n};\nvar PathVisitsBuilder = class {\n constructor() {\n this.segments = [];\n this.slots = /* @__PURE__ */ new Map();\n this.paths = [];\n this.samples = [];\n this.pathIndex = /* @__PURE__ */ new Map();\n this.slot = new Column(new Int32Array(1024));\n this.path = new Column(new Int32Array(1024));\n this.start = new Column(new Float64Array(1024));\n this.reversed = new Column(new Uint8Array(1024));\n }\n // a segment's place in iteration order, though it has no visits yet\n declare(segment) {\n let s = this.slots.get(segment);\n if (s === void 0) {\n s = this.segments.length;\n this.slots.set(segment, s);\n this.segments.push(segment);\n }\n return s;\n }\n // a path's index, so a caller adding many of its visits names it once\n pathOf(path, sample) {\n let p = this.pathIndex.get(path);\n if (p === void 0) {\n p = this.paths.length;\n this.pathIndex.set(path, p);\n this.paths.push(path);\n this.samples.push(sample);\n }\n return p;\n }\n add(segment, path, sample, start, reversed) {\n this.addAt(\n this.declare(segment),\n this.pathOf(path, sample),\n start,\n reversed\n );\n }\n addAt(slot, path, start, reversed) {\n this.slot.push(slot);\n this.path.push(path);\n this.start.push(start);\n this.reversed.push(reversed ? 1 : 0);\n }\n build() {\n const n = this.slot.length;\n const segments = this.segments.length;\n const offsets = new Int32Array(segments + 1);\n const slot = this.slot.data;\n for (let i = 0; i < n; i++) {\n offsets[slot[i] + 1]++;\n }\n for (let s = 0; s < segments; s++) {\n offsets[s + 1] += offsets[s];\n }\n const fill = offsets.slice(0, segments);\n const path = new Int32Array(n);\n const start = new Float64Array(n);\n const reversed = new Uint8Array(n);\n for (let i = 0; i < n; i++) {\n const at = fill[slot[i]]++;\n path[at] = this.path.data[i];\n start[at] = this.start.data[i];\n reversed[at] = this.reversed.data[i];\n }\n return new PathVisits({\n segments: this.segments,\n offsets,\n path,\n start,\n reversed,\n paths: this.paths,\n samples: this.samples\n });\n }\n};\n\nexport {\n PathVisits,\n Column,\n PathVisitsBuilder\n};\n", "import {\n PathVisitsBuilder\n} from \"./chunk-ZPZ7GNBT.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n REFERENCE_RANK\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/pathAnchoring.ts\nvar RANGE_SUFFIX = /:(\\d+)-\\d+$/;\nvar VG_FRAGMENT = /^([^#]*#[^#]*#[^#[]*)#(\\d+)(?:\\[(\\d+)-\\d+\\])?$/;\nvar VG_SUBRANGE = /\\[(\\d+)-\\d+\\]$/;\nfunction pathOrigin(pathName) {\n const fragment = VG_FRAGMENT.exec(pathName);\n if (fragment) {\n return { name: fragment[1], start: +fragment[2] + +(fragment[3] ?? 0) };\n }\n const match = RANGE_SUFFIX.exec(pathName) ?? VG_SUBRANGE.exec(pathName);\n return match ? { name: pathName.slice(0, match.index), start: +match[1] } : { name: pathName, start: 0 };\n}\nfunction surveyPaths(paths, lengthOf) {\n const anchorPaths = [];\n const visits = new PathVisitsBuilder();\n for (const path of paths) {\n const sample = panSNSample(path.name);\n const p = visits.pathOf(path.name, sample);\n let pos = path.start;\n for (const step of path.steps) {\n visits.addAt(visits.declare(step.id), p, pos, step.strand === \"-\");\n pos += lengthOf(step.id);\n }\n anchorPaths.push({\n name: path.name,\n sample,\n start: path.start,\n length: pos - path.start\n });\n }\n return { anchorPaths, pathVisits: visits.build() };\n}\nfunction chooseReferencePath(anchorPaths, preferred) {\n const named = anchorPaths.find(\n (p) => p.sample === preferred || p.name === preferred\n );\n return named ?? anchorPaths[0];\n}\nvar OFF_REFERENCE_RANK = 1;\nfunction anchorNode(node, visits, reference, samplesOf) {\n const slot = visits.slot(node.name);\n if (slot < 0 || visits.offsets[slot] === visits.offsets[slot + 1]) {\n return node;\n }\n const own = visits.firstBy(slot, reference);\n const anchor = own >= 0 ? own : visits.offsets[slot];\n return {\n ...node,\n stable: {\n refName: visits.paths[visits.path[anchor]],\n start: visits.start[anchor],\n rank: own >= 0 ? REFERENCE_RANK : OFF_REFERENCE_RANK,\n strand: visits.strand(anchor)\n },\n samples: samplesOf(slot)\n };\n}\nfunction sampleSorter(visits) {\n const sorted = [...new Set(visits.samples)].sort();\n const rank = new Map(sorted.map((sample, i) => [sample, i]));\n const pathRank = Int32Array.from(visits.samples, (s) => rank.get(s));\n const seen = new Uint8Array(sorted.length);\n const ranks = new Int32Array(sorted.length);\n return (slot) => {\n let n = 0;\n for (let i = visits.offsets[slot]; i < visits.offsets[slot + 1]; i++) {\n const r = pathRank[visits.path[i]];\n if (seen[r] === 0) {\n seen[r] = 1;\n ranks[n++] = r;\n }\n }\n let out;\n if (n === sorted.length) {\n out = sorted;\n seen.fill(0);\n } else if (n * 8 < sorted.length) {\n const found = ranks.subarray(0, n);\n found.forEach((r) => seen[r] = 0);\n out = Array.from(found.sort(), (r) => sorted[r]);\n } else {\n out = [];\n for (let r = 0; r < sorted.length; r++) {\n if (seen[r] === 1) {\n seen[r] = 0;\n out.push(sorted[r]);\n }\n }\n }\n return out;\n };\n}\nfunction anchorFromPaths(graph, preferred) {\n const { anchorPaths, pathVisits } = graph;\n const reference = anchorPaths && pathVisits ? chooseReferencePath(anchorPaths, preferred) : void 0;\n if (!reference || !anchorPaths || !pathVisits) {\n return graph;\n }\n const samplesOf = sampleSorter(pathVisits);\n const referenceIndex = pathVisits.pathIndex(reference.name);\n return {\n ...graph,\n nodes: graph.nodes.map(\n (node) => anchorNode(node, pathVisits, referenceIndex, samplesOf)\n ),\n anchoredBy: \"paths\",\n referencePath: reference.name\n };\n}\nfunction anchorGraph(graph, preferred) {\n if (graph.anchoredBy !== \"tags\") {\n return anchorFromPaths(graph, preferred);\n }\n const referencePath = taggedReferencePath(graph);\n return referencePath ? { ...graph, referencePath } : graph;\n}\nfunction taggedReferencePath(graph) {\n const refName = graph.nodes.find((n) => n.stable?.rank === 0)?.stable?.refName;\n return refName !== void 0 && graph.anchorPaths?.some((p) => p.name === refName) ? refName : void 0;\n}\nfunction trimOrigins(graph, kept) {\n if (!graph.anchorPaths) {\n return void 0;\n }\n const lengthOf = new Map(graph.nodes.map((n) => [n.id, n.length]));\n const bp = (ids, end = ids.length) => {\n let sum = 0;\n for (let i = 0; i < end; i++) {\n sum += lengthOf.get(ids[i]) ?? 0;\n }\n return sum;\n };\n const byOrigin = groupBy(graph.paths ?? [], (p) => pathOrigin(p.name).name);\n return graph.anchorPaths.map((o) => {\n const pieces = byOrigin.get(o.name);\n const path = pieces?.length === 1 ? pieces[0] : void 0;\n const stretch = path && kept.get(path.name);\n return path && stretch ? {\n ...o,\n start: o.start + bp(path.nodeIds, stretch.first),\n length: bp(stretch.nodeIds)\n } : o;\n });\n}\nfunction referenceVisitStarts(graph) {\n const { pathVisits } = graph;\n const cache = /* @__PURE__ */ new Map();\n return (node) => {\n let starts = cache.get(node.id);\n if (!starts) {\n starts = [];\n const slot = pathVisits ? pathVisits.slot(node.name) : -1;\n const p = slot >= 0 ? pathVisits.pathIndex(node.stable.refName) : -1;\n if (p >= 0) {\n for (let i = pathVisits.offsets[slot]; i < pathVisits.offsets[slot + 1]; i++) {\n if (pathVisits.path[i] === p) {\n starts.push(pathVisits.start[i]);\n }\n }\n }\n if (starts.length < 2) {\n starts = [node.stable.start];\n }\n cache.set(node.id, starts);\n }\n return starts;\n };\n}\n\nexport {\n pathOrigin,\n surveyPaths,\n chooseReferencePath,\n anchorFromPaths,\n anchorGraph,\n trimOrigins,\n referenceVisitStarts\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["pushTo", "map", "key", "value", "list", "addTo", "set", "groupBy", "items", "keyOf", "groups", "item", "partitionPoint", "n", "pred", "lo", "hi", "mid", "REFERENCE_RANK", "isAnchored", "node", "isBackbone", "isOffReference", "backboneNodes", "graph", "overlapsWindow", "window", "backbonePositions", "backbone", "positions", "firstNodeAtOrAfter", "nodes", "bp", "partitionPoint", "i", "backboneSpan", "min", "max", "referenceSpan", "region", "PathVisits", "columns", "i", "entries", "builder", "PathVisitsBuilder", "segment", "visits", "v", "path", "slot", "p", "cursor", "key", "end", "at", "keepPath", "keepSegment", "kept", "s", "out", "Column", "data", "value", "grown", "sample", "start", "reversed", "n", "segments", "offsets", "fill", "RANGE_SUFFIX", "VG_FRAGMENT", "VG_SUBRANGE", "pathOrigin", "pathName", "fragment", "match", "surveyPaths", "paths", "lengthOf", "anchorPaths", "visits", "PathVisitsBuilder", "path", "sample", "panSNSample", "p", "pos", "step", "chooseReferencePath", "preferred", "OFF_REFERENCE_RANK", "anchorNode", "node", "reference", "samplesOf", "slot", "own", "anchor", "REFERENCE_RANK", "sampleSorter", "sorted", "rank", "i", "pathRank", "s", "seen", "ranks", "n", "r", "out", "found", "anchorFromPaths", "graph", "pathVisits", "referenceIndex", "anchorGraph", "referencePath", "taggedReferencePath", "refName", "trimOrigins", "kept", "bp", "ids", "end", "sum", "byOrigin", "groupBy", "o", "pieces", "stretch", "referenceVisitStarts", "cache", "starts"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{d as B,g as C,i as $,j as O,k as j,l as W,n as X,p as H,q as A,s as z,u as F}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=renderSvg-
|
|
1
|
+
import{d as B,g as C,i as $,j as O,k as j,l as W,n as X,p as H,q as A,s as z,u as F}from"./chunk-6DRBCLWY.js";import{Eb as E,Fb as M,M as S,N as L,Nb as R}from"./chunk-ORHUPW3G.js";import"./chunk-QQCTNB2Z.js";import"./chunk-4EKOQHUX.js";import{m as P}from"./chunk-B5SVBPXN.js";import"./chunk-Q55PHRHV.js";import"./chunk-GN4HSVLB.js";import"./chunk-R25GOTED.js";import"./chunk-ULLEUORS.js";import"./chunk-TQKSF3NI.js";import"./chunk-IKJZPPOA.js";import"./chunk-NDRLCGPC.js";import"./chunk-YU7T5WOQ.js";import{a as v,b as e,c as f}from"./chunk-JMBDTNUR.js";var m=JBrowseExports["@jbrowse/display-kit/renderDisplaySvg"],U=t=>m!=null&&t in Object(m)?m[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/display-kit/renderDisplaySvg' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var Y=U("renderDisplaySvg");var ot=m&&m.__esModule?m.default:m;var w=JBrowseExports["@jbrowse/core/util/paintLayer"],Z=t=>w!=null&&t in Object(w)?w[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/core/util/paintLayer' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t}),G=Z("PaintLayer"),lt=w&&w.__esModule?w.default:w;var k={fontFamily:"sans-serif",fontSize:11},x=16,q=2,J=t=>t;function N({model:t,lift:n,drawPaths:o,width:r,height:a,rasterize:s}){let l=t.buildDrawing(n,o);if(!l)return null;let c=s?q:1,g=s?void 0:M(r,a),h=g?.canvas??document.createElement("canvas");g||(h.width=Math.round(r*c),h.height=Math.round(a*c));let{scaleX:u,scaleY:y,translateX:i,translateY:p}=t.screenTransform,d=new E(h);return d.uploadGeometry(l.batch),d.updateTransform({scaleX:u*c,scaleY:y*c,translateX:i*c,translateY:p*c,dpr:c}),d.render([0,0,0,0]),g?e("svg",{width:r,height:a,overflow:"hidden",children:e("g",{dangerouslySetInnerHTML:{__html:g.markup()}})}):e("image",{width:r,height:a,href:h.toDataURL("image/png")})}function D(t,n){if(!t.swatch)return{key:t.key,width:t.label.length*P,height:x,draw:s=>e("text",{...k,x:s,y:0,fill:"#666",children:t.label},t.key)};let o=t.swatch,r=C(o),a=(t.strong??"")+t.label;return{key:t.key,width:Math.max(r+5+a.length*P,(t.under?.length??0)*P),height:t.under?x*2:x,draw:s=>f("g",{...k,children:[e(W,{swatch:o,x:s,id:n}),f("text",{x:s+r+5,y:0,children:[t.strong?e("tspan",{fontWeight:"bold",children:t.strong}):null,t.label]}),t.under?e("text",{x:s,y:x,children:t.under}):null]},t.key)}}function Q({model:t,idPrefix:n}){let o=j(t).map(({testid:i,rows:p})=>p.map((d,b)=>D(d,`${n}-${i}-${b}`)));if(o.length===0)return null;let r=6,a=o.flat(),s=Math.max(...a.map(i=>i.width))+r*2,l=a.reduce((i,p)=>i+p.height,0)+o.length*r,g=t.paneWidth-R-s+r,h=R+t.referenceStripZonePx,u=[],y=h+12-r/2;for(let i of o){y+=r;for(let p of i)u.push({row:p,y}),y+=p.height}return f("g",{"data-testid":"graph-svg-keys",children:[e("rect",{x:g-r,y:h,width:s,height:l,rx:3,fill:"#fff",fillOpacity:.82}),u.map(({row:i,y:p})=>e("g",{transform:`translate(0 ${p})`,children:i.draw(g)},i.key))]})}function K({x:t,y:n,text:o,fontSize:r,anchor:a,bold:s}){let l=o.length*r*.56+6,c=a==="middle"?t-l/2:t-3;return f(v,{children:[e("rect",{x:c,y:n-r*.65,width:l,height:r*1.3,rx:3,fill:"#fff",fillOpacity:.8}),e("text",{x:t,y:n+r*.35,textAnchor:a,fontSize:r,fontWeight:s?600:void 0,fill:"#18181c",children:o})]})}function tt({model:t}){return e("g",{fontFamily:k.fontFamily,children:t.overlayLabels.sizes.map(({key:n,text:o,x:r,y:a,kind:s,leader:l})=>f("g",{children:[l?e("line",{x1:l.arcX,y1:l.arcY,x2:l.labelX,y2:l.labelY,stroke:"#18181c"}):null,e(K,{x:r,y:a,text:o,fontSize:10,anchor:"middle",bold:s==="deletion"})]},n))})}function et({model:t}){return e("g",{fontFamily:k.fontFamily,children:t.visibleRowLabels.map(({label:n,y:o,top:r})=>e(K,{x:10,y:r,text:n,fontSize:11,anchor:"start"},o))})}function rt({model:t,rasterize:n,idPrefix:o}){let r=t.facetPanels,a=t.facetGrid,s=t.facetPlacement;if(!r||!a||!s)return null;let{columns:l,width:c,height:g}=a,h=a.total+S+14,u=O(t).map((i,p)=>D(i,`${o}-facet-key-${p}`)),y=u.map((i,p)=>u.slice(0,p).reduce((d,b)=>d+b.width+14,6));return f(v,{children:[e("g",{transform:`translate(0 ${h})`,children:u.map((i,p)=>i.draw(y[p]))}),r.map((i,p)=>{let d=s.cells[p],b=d%l*(c+S),I=Math.floor(d/l)*(L+g+S),_=i.walks[0],V=D($(t,_),`${o}-facet-${p}`);return f("g",{transform:`translate(${b} ${I})`,children:[e("g",{transform:`translate(0 ${x-2})`,children:V.draw(6)}),e("g",{transform:`translate(0 ${L})`,children:e(N,{model:t,lift:i,drawPaths:!1,width:c,height:g,rasterize:n})})]},_.name)})]})}function T({model:t,rasterize:n=!1,idPrefix:o}){let r=t.paneWidth,a=t.canvasHeight,s=!!t.layoutResult?.tubeMap,l={rasterizeLayers:n};return f("g",{"data-testid":"graph-pane-svg",children:[t.facetPanels?e(rt,{model:t,rasterize:n,idPrefix:o}):s?e(G,{width:r,height:a,opts:l,paint:c=>{z(J(c),t,{highlightNode:null})}}):e(N,{model:t,lift:t.drawnHighlight,drawPaths:t.effectiveDrawPaths,width:r,height:a,rasterize:n}),t.facetPanels?null:f(v,{children:[e(B,{model:t}),e(X,{model:t}),e(tt,{model:t}),e(H,{model:t}),e(F,{model:t,vector:!0}),e(et,{model:t})]}),t.referenceStripShown?e(G,{width:r,height:a,opts:l,paint:c=>{A(J(c),t,{lit:void 0,dpr:1})}}):null,t.facetPanels?null:e(Q,{model:t,idPrefix:o})]})}function nt({model:t,opts:n}){return e(T,{model:t,rasterize:!!n?.rasterizeLayers,idPrefix:`graph-${t.id}`})}function Gt(t,n){return Y(t,n,nt)}export{Gt as renderGraphTrackSvg};
|
|
2
|
+
//# sourceMappingURL=renderSvg-HEEQJD5B.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{A as Mr,B as kr,C as Sr,D as Ct,E as Vr,F as Xe,G as Ur,H as Xr,I as Kr,J as qr,K as en,L as tn,M as on,P as qe,Q as rn,S as nn,U as sn,V as pn,a as _,b as Wo,c as _o,d as ze,e as F,f as $o,g as Jo,l as qo,n as xt,o as $,p as $e,q as Pe,r as Rt,s as Je,t as Zo,u as Qo,v as er,w as Tt,x as or,y as fr,z as wr}from"./chunks/chunk-N74HGPAW.js";import{a as St,b as Yo,c as Uo,d as Ae,e as Xo,f as Ko,i as Zr,m as Qr,n as an}from"./chunks/chunk-DBPEUVUC.js";import{$a as Ir,Ab as $r,Bb as Jr,Ca as yr,Cb as Yr,Da as Be,Ea as br,Ia as At,Ja as Pt,Ka as xr,La as Bt,Oa as Rr,Pa as Tr,Q as tr,Ra as Gr,Sa as Lr,T as Ye,V as rr,Va as vr,Wa as Ar,X as nr,Xa as Pr,Y as ar,Za as Cr,_a as Br,a as ve,ab as Er,b as bt,ba as ir,bb as Nr,c as C,ca as sr,d as se,db as Hr,dc as Ke,g as Do,ja as pe,jb as It,ka as pr,la as cr,lb as Fr,ma as ur,mb as jr,na as dr,o as kt,oa as mr,ob as Or,p as zo,pa as lr,qa as Gt,qb as Dr,sa as hr,ub as Ue,va as gr,vb as Wr,wa as Ce,wb as _r,xa as Lt,xb as zr,ya as ce,za as ue}from"./chunks/chunk-PYQG3JHP.js";import"./chunks/chunk-2M4XYSLG.js";import{c as jo,d as Oo}from"./chunks/chunk-44CJ2N3N.js";import{m as _e,z as Mt}from"./chunks/chunk-PEDWEPNK.js";import{b as vt}from"./chunks/chunk-FIRQAKMX.js";import{j as je}from"./chunks/chunk-WUSKVEA6.js";import{e as mt}from"./chunks/chunk-RW775LQN.js";import{a as lt}from"./chunks/chunk-VQ77X5QU.js";import{s as wt}from"./chunks/chunk-M2D7NUOY.js";import"./chunks/chunk-YBLNN5FU.js";import{i as yt,m as Io}from"./chunks/chunk-6KUHGRHU.js";import{a as wo,c as Mo,g as j,j as dt,q as So,r as ie,t as Co,u as De,w as Bo}from"./chunks/chunk-6MUBJVBG.js";import{f as Se,l as E,m as z,n as Le,o as Oe}from"./chunks/chunk-BKBH3WGW.js";import"./chunks/chunk-YBLNN5FU.js";import{a as xo,b as O,d as Z,e as Q,f as Ro}from"./chunks/chunk-MVVXRZXV.js";import{a as ko}from"./chunks/chunk-7HWHWPRW.js";import{a as Ho,g as Fo}from"./chunks/chunk-QJ43NDYS.js";import{b as Go,c as Lo,e as vo,f as Ao,g as ht,h as Po}from"./chunks/chunk-IKJZPPOA.js";import{a as Eo}from"./chunks/chunk-7WIBGKBU.js";import{a as gt}from"./chunks/chunk-OGQ6OQDN.js";import{a as L,b as D,c as Ge,e as H,f as To,g as M}from"./chunks/chunk-NDRLCGPC.js";import{i as ae,j as R,k as go,l as yo,n as bo}from"./chunks/chunk-TENPGIPX.js";import{b as ee}from"./chunks/chunk-YU7T5WOQ.js";import{I as We,i as No,l as Vo}from"./chunks/chunk-UGCNPRKC.js";import{a as fo,b as A,d as ft}from"./chunks/chunk-JMBDTNUR.js";var Ze=JBrowseExports["@jbrowse/core/Plugin"];var cn=Ze&&Ze.__esModule?Ze.default:Ze;var Qe=_([A("circle",{cx:"7.2",cy:"14.4",r:"3.2"},"0"),A("circle",{cx:"14.8",cy:"18",r:"2"},"1"),A("circle",{cx:"15.2",cy:"8.8",r:"4.8"},"2")],"BubbleChart");var et=JBrowseExports["@jbrowse/core/pluggableElementTypes/AdapterType"];var te=et&&et.__esModule?et.default:et;var Sa=O("GbzBaseSyntenyAdapter",{assemblyNames:{type:"stringArray",defaultValue:[]},gbzDbLocation:E("/path/to/graph.gbz.db"),haplotypeIndexLocation:E(""),readsLocation:E(""),readsIndex:z("GbzBaseReadsIndex"),samplesTsvLocation:E(""),subgraphSnarls:{type:"stringEnum",model:M.enumeration("SnarlOutput",["none","contained","overlapping"]),defaultValue:je.snarls},referenceSample:{type:"string",defaultValue:""},assemblyNameToPanSN:{type:"frozen",defaultValue:{}},context:{type:"number",defaultValue:je.context,advanced:!0},nodeLimit:{type:"number",defaultValue:je.limit,advanced:!0}},{explicitlyTyped:!0,preProcessSnapshot:e=>{let{uri:t,baseUri:o,reads:r}=e;return{...e,...t?{gbzDbLocation:{uri:t,baseUri:o}}:{},...typeof r=="string"?{readsLocation:{uri:r,baseUri:o},...xa(r,o)}:{}}}});function xa(e,t){let{name:o,query:r}=Ao(e);return o.endsWith(".gz")?{readsIndex:{location:{uri:`${o}.tbi${r}`,baseUri:t}}}:{}}var un=Sa;function Et(e){e.addAdapterType(()=>new te({name:"GbzBaseSyntenyAdapter",displayName:"gbz-base pangenome adapter",configSchema:un,adapterCapabilities:["getSubgraph","headerLanes","lanePairsOnAnchor","lanePairBatches"],adapterMetadata:{category:"Synteny adapters"},getAdapterClass:()=>import("./chunks/GbzBaseSyntenyAdapter-NYI2YVNG.js").then(t=>t.default)}))}var de=JBrowseExports["@jbrowse/core/pluggableElementTypes"],oe=e=>de!=null&&e in Object(de)?de[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/pluggableElementTypes' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var dn=oe("AddTrackWorkflowType");var mn=oe("BaseDisplay");var ln=oe("DisplayType");var xe=oe("RpcMethodType"),hn=oe("RpcMethodTypeWithRenameRegion");var gn=oe("TrackType");var yn=oe("createBaseTrackConfig"),bn=oe("createBaseTrackModel");var Yi=de&&de.__esModule?de.default:de;var me=JBrowseExports["@jbrowse/core/data_adapters/dataAdapterCache"],Ra=e=>me!=null&&e in Object(me)?me[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/data_adapters/dataAdapterCache' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var fn=Ra("getAdapter"),Xi=me&&me.__esModule?me.default:me;async function Re(e,{sessionId:t,adapterConfig:o},r){let{dataAdapter:n}=await fn(e,t,o);return{adapter:typeof n[r]=="function"?n:void 0,name:n.constructor.name}}var Ie=class extends xe{constructor(){super(...arguments);this.name="GetGraphHaplotypes"}async execute(o){let{adapter:r}=await Re(this.pluginManager,o,"getHaplotypeNames");return r?.getHaplotypeNames({signal:o.signal})}};function wn(e){return typeof e.reads=="string"&&e.reads!==""||vo(e.readsLocation)}var Ee=class extends xe{constructor(){super(...arguments);this.name="GetGraphReads"}async execute(o){let{nodeNames:r,signal:n}=o,{adapter:a}=await Re(this.pluginManager,o,"getReads");return a?a.getReads(r,{signal:n}):{records:[],total:0}}};var le=JBrowseExports["@jbrowse/core/util/librpc"],Ta=e=>le!=null&&e in Object(le)?le[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/util/librpc' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var Nt=Ta("rpcResultWithArrayBuffers");var us=le&&le.__esModule?le.default:le;var Ne=class extends hn{constructor(){super(...arguments);this.name="GetSubgraph"}async execute(o){let{region:r,opts:n,signal:a}=o,{adapter:i,name:p}=await Re(this.pluginManager,o,"getSubgraph");if(i){let s=await i.getSubgraph(r,{...n,signal:a});if(typeof s!="string")return Nt(s);let c=s?lt(s):void 0;return c?Nt(c):s}return console.warn(`[GetSubgraph] ${p} does not implement getSubgraph`),""}};var Ga=ee(()=>import("./chunks/AddTrackWorkflow-LK25EC3H.js"));function Vt(e){e.addAddTrackWorkflowType(()=>new dn({name:"Pangenome graph track",displayName:"Add pangenome graph track",ReactComponent:Ga,stateModel:M.model({})}))}var Ve=class extends xe{constructor(){super(...arguments);this.name="GraphComputeLayout"}async execute(o){let{graph:r,options:n,statusCallback:a}=o;return a?.("Computing layout"),Oo({graph:r,options:n})}};var tt=JBrowseExports["@jbrowse/core/pluggableElementTypes/ViewType"];var Mn=tt&&tt.__esModule?tt.default:tt;var he=JBrowseExports["@jbrowse/core/util/withLaunchInput"],La=e=>he!=null&&e in Object(he)?he[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/util/withLaunchInput' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),kn=La("defineLaunchKeys");var Ts=he&&he.__esModule?he.default:he;var ge=JBrowseExports["@jbrowse/core/pluggableElementTypes/models"],va=e=>ge!=null&&e in Object(ge)?ge[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/pluggableElementTypes/models' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var Sn=va("BaseViewModel");var Ls=ge&&ge.__esModule?ge.default:ge;var Te=["off","nodes","everything"];var xn=_(A("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"}),"ContentCopy");var Rn=_(A("path",{d:"M8.4 18.2c.38.5.6 1.12.6 1.8 0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3c.44 0 .85.09 1.23.26l1.41-1.77c-.92-1.03-1.29-2.39-1.09-3.69l-2.03-.68c-.54.83-1.46 1.38-2.52 1.38-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3c0 .07 0 .14-.01.21l2.03.68c.64-1.21 1.82-2.09 3.22-2.32V5.91C9.96 5.57 9 4.4 9 3c0-1.66 1.34-3 3-3s3 1.34 3 3c0 1.4-.96 2.57-2.25 2.91v2.16c1.4.23 2.58 1.11 3.22 2.32L18 9.71V9.5c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3c-1.06 0-1.98-.55-2.52-1.37l-2.03.68c.2 1.29-.16 2.65-1.09 3.69l1.41 1.77Q17.34 17 18 17c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3c0-.68.22-1.3.6-1.8l-1.41-1.77c-1.35.75-3.01.76-4.37 0z"}),"Hub");var Tn=_(A("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10c1.38 0 2.5-1.12 2.5-2.5 0-.61-.23-1.2-.64-1.67-.08-.1-.13-.21-.13-.33 0-.28.22-.5.5-.5H16c3.31 0 6-2.69 6-6 0-4.96-4.49-9-10-9m5.5 11c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5m-3-4c-.83 0-1.5-.67-1.5-1.5S13.67 6 14.5 6s1.5.67 1.5 1.5S15.33 9 14.5 9M5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S7.33 13 6.5 13 5 12.33 5 11.5m6-4c0 .83-.67 1.5-1.5 1.5S8 8.33 8 7.5 8.67 6 9.5 6s1.5.67 1.5 1.5"}),"Palette");var Gn=_([A("circle",{cx:"12",cy:"12",r:"3.2"},"0"),A("path",{d:"M9 2 7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5"},"1")],"PhotoCamera");function Ft(e,t){if(!(t>0)||e.paths?.length||!e.nodes.some(b=>j(b)))return e;let{nodes:o,edges:r}=Aa(e),n=new Map(o.map((b,v)=>[b.id,v])),a=r.map(An),i=Ca(o.length,r,a,n),p=Ia(o,r,a,n),s=Mo(p.keys(),b=>p[b]),c=new Uint8Array(o.length),m=[];for(let b of s.values())if(Ea(b,o,i,p)>=t){for(let v of b)c[v]=1;j(o[b[0]])||m.push(b)}let{dist:k,pred:T}=Ha(o,i);for(let b of m)for(let[v,I]of Na(b,o,i,p)){let h=Va(v,I,i,p,k,o);for(;h!==void 0&&!c[h];)c[h]=1,h=j(o[h])?void 0:T[h]}let g=r.filter((b,v)=>{let I=n.get(b.from),h=n.get(b.to);if(I===void 0||h===void 0)return!1;let y=Ba(o[I],a[v].from,o[h],a[v].to);return c[I]&&c[h]&&!(y>0&&y<t)});return ja({...e,nodes:o,edges:g},c,p)}function Aa({nodes:e,edges:t}){let o=new Set(e.filter(n=>n.stable?.strand==="-").map(n=>n.id));if(o.size===0)return{nodes:e,edges:t};let r=(n,a)=>{let i=a??_e(n);return o.has(n)?Pa(i):i};return{nodes:e.map(n=>o.has(n.id)?{...n,stable:{...n.stable,strand:"+"}}:n),edges:t.map(n=>o.has(n.from)||o.has(n.to)?{...n,fromStrand:r(n.from,n.fromStrand),toStrand:r(n.to,n.toStrand)}:n)}}function Pa(e){return e==="+"?"-":"+"}function An(e){return{from:(e.fromStrand??_e(e.from))==="+"?"e":"s",to:(e.toStrand??_e(e.to))==="+"?"s":"e"}}function Ca(e,t,o,r){let n=Array.from({length:e},()=>[]);return t.forEach((a,i)=>{let p=r.get(a.from),s=r.get(a.to);if(p!==void 0&&s!==void 0){let{from:c,to:m}=o[i];n[p].push({other:s,side:c,otherSide:m}),n[s].push({other:p,side:m,otherSide:c})}}),n}function Pn(e,t){let o=e.stable,r=t.stable;return o&&r?.refName===o.refName&&r.rank===o.rank?[o,r]:void 0}function jt(e,t,o,r){let n=Pn(e,o);if(!n)return!1;let[a,i]=n;return t==="e"&&r==="s"&&a.start+e.length===i.start||r==="e"&&t==="s"&&i.start+o.length===a.start}function Ba(e,t,o,r){let n=Pn(e,o);if(!n||jt(e,t,o,r))return 0;let[a,i]=n;return Math.abs(Ht(i,o,r)-Ht(a,e,t))}function Ht({start:e},t,o){return o==="s"?e:e+t.length}function Ia(e,t,o,r){let n=e.map((i,p)=>p),a=i=>{for(;n[i]!==i;)n[i]=n[n[i]],i=n[i];return i};return t.forEach((i,p)=>{let s=r.get(i.from),c=r.get(i.to);s!==void 0&&c!==void 0&&jt(e[s],o[p].from,e[c],o[p].to)&&(n[a(s)]=a(c))}),e.map((i,p)=>a(p))}function Ea(e,t,o,r){if(j(t[e[0]]))return 1/0;let n=0,a,i=1/0,p=-1/0,s=!0;for(let c of e){n+=t[c].length;for(let{other:m,otherSide:k}of o[c]){let T=t[m];if(r[m]!==r[c]&&j(T)){a??=T.stable.refName,s&&=T.stable.refName===a;let g=Ht(T.stable,T,k);i=Math.min(i,g),p=Math.max(p,g)}}}return s&&p>i?Math.max(n,p-i):n}function Na(e,t,o,r){let n=c=>t[c].stable?.start??0,a=c=>n(c)+t[c].length,i=e[0],p=e[0];for(let c of e)n(c)<n(i)&&(i=c),a(c)>a(p)&&(p=c);let s=[];for(let c of new Set([i,p]))for(let m of["s","e"])o[c].some(k=>k.side===m&&r[k.other]===r[c])||s.push([c,m]);return s}function Va(e,t,o,r,n,a){let i;for(let p of o[e]){let s=p.other;p.side===t&&r[s]!==r[e]&&Number.isFinite(n[s])&&(i===void 0||n[s]<n[i]||n[s]===n[i]&&a[s].name<a[i].name)&&(i=s)}return i}function Ha(e,t){let o=new Float64Array(e.length).fill(1/0),r=new Int32Array(e.length).fill(-1),n=new Fa(([a,i],[p,s])=>a-p||Ln(e[i].name,e[s].name));e.forEach((a,i)=>{j(a)&&(o[i]=0,n.push([0,i]))});for(let a=n.pop();a!==void 0;a=n.pop()){let[i,p]=a;if(!(i>o[p]))for(let{other:s}of t[p]){if(j(e[s]))continue;let c=i+e[s].length;c<o[s]?(o[s]=c,r[s]=p,n.push([c,s])):c===o[s]&&Ln(e[p].name,e[r[s]].name)<0&&(r[s]=p)}}return{dist:o,pred:Array.from(r,a=>a<0?void 0:a)}}function Ln(e,t){return e<t?-1:e>t?1:0}var Fa=class{constructor(e){this.order=e,this.items=[]}push(e){let{items:t}=this;t.push(e);let o=t.length-1;for(;o>0;){let r=o-1>>1;if(this.order(t[o],t[r])>=0)break;[t[o],t[r]]=[t[r],t[o]],o=r}}pop(){let{items:e}=this,t=e[0],o=e.pop();if(e.length>0&&o!==void 0){e[0]=o;let r=0;for(;;){let n=2*r+1,a=n+1,i=r;if(n<e.length&&this.order(e[n],e[i])<0&&(i=n),a<e.length&&this.order(e[a],e[i])<0&&(i=a),i===r)break;[e[r],e[i]]=[e[i],e[r]],r=i}}return t}};function ja(e,t,o){let{nodes:r,edges:n}=e,a=new Map(r.map((h,y)=>[h.id,y])),i=n.map(An),p=n.map((h,y)=>[{i:a.get(h.from),side:i[y].from},{i:a.get(h.to),side:i[y].to}]),s=new Map,c=(h,y)=>`${h}${y}`;for(let h of p)for(let{i:y,side:P}of h)s.set(c(y,P),(s.get(c(y,P))??0)+1);let m=new Map,k=new Set,T=new Set;p.forEach(([h,y],P)=>{if(h.i!==y.i&&o[h.i]===o[y.i]&&jt(r[h.i],h.side,r[y.i],y.side)&&s.get(c(h.i,h.side))===1&&s.get(c(y.i,y.side))===1){let[J,B]=h.side==="e"?[h,y]:[y,h];m.set(J.i,{j:B.i,out:J.side,in:B.side}),k.add(B.i),T.add(P)}});let g=r.map((h,y)=>y),b=new Map,v=new Map;r.forEach((h,y)=>{if(!t[y]||k.has(y)||!m.has(y))return;let P=[y],J=vn(m.get(y).out);b.set(c(y,J),"s");for(let B=m.get(y);B;B=m.get(B.j))P.push(B.j),J=B.in;b.set(c(P.at(-1),vn(J)),"e");for(let B of P)g[B]=y;v.set(y,Oa(P.map(B=>r[B])))});let I=({i:h,side:y})=>({id:r[g[h]].id,side:g[h]===h&&!v.has(h)?y:b.get(c(h,y))});return{...e,nodes:r.flatMap((h,y)=>!t[y]||g[y]!==y?[]:[v.get(y)??h]),edges:n.flatMap((h,y)=>{if(T.has(y))return[];let[P,J]=p[y];if(!v.has(g[P.i])&&!v.has(g[J.i]))return[h];let B=I(P),He=I(J);return[{...h,from:B.id,to:He.id,fromStrand:B.side==="e"?"+":"-",toStrand:He.side==="s"?"+":"-"}]})}}function vn(e){return e==="s"?"e":"s"}function Oa(e){let{samples:t,...o}=e[0],r=e.reduce((i,p)=>i+p.length,0),n=r>0?e.reduce((i,p)=>i+p.depth*p.length,0)/r:o.depth,a=e.every(i=>i.samples)?e.reduce((i,p)=>i.filter(s=>p.samples.includes(s)),t):void 0;return a?{...o,length:r,depth:n,samples:a}:{...o,length:r,depth:n}}function Cn(e,t){let o=new Set(e.nodes.filter(s=>j(s)&&dt(s,t)).map(s=>s.id)),r=e.paths??[];if(o.size===0||r.length===0)return e;let n=r.map(s=>{let c=-1,m=-1;return s.nodeIds.forEach((k,T)=>{o.has(k)&&(c<0&&(c=T),m=T)}),c<0?void 0:{first:c,last:m}});if(n.every((s,c)=>s?.first===0&&s.last===r[c].nodeIds.length-1))return e;let a=new Set,i=[],p=new Map;return r.forEach((s,c)=>{let m=n[c];if(m){let k=s.nodeIds.slice(m.first,m.last+1);for(let T of k)a.add(T);i.push({...s,nodeIds:k}),p.set(s.name,{first:m.first,nodeIds:k})}}),{...e,nodes:e.nodes.filter(s=>a.has(s.id)),edges:e.edges.filter(s=>a.has(s.from)&&a.has(s.to)),paths:i,pathVisits:e.pathVisits&&Da(e.pathVisits,r,n,new Map(e.nodes.map(s=>[s.id,s.name]))),anchorPaths:Bo(e,p)}}function Da(e,t,o,r){let n=e.replay(),a=new So;return t.forEach((i,p)=>{let s=e.pathIndex(ie(i.name).name),c=o[p];i.nodeIds.forEach((m,k)=>{let T=r.get(m)??m,g=n(e.slot(T),s);g>=0&&c&&k>=c.first&&k<=c.last&&a.add(T,e.paths[s],e.samples[s],e.start[g],e.reversed[g]===1)})}),a.build()}function Bn(e,t,o){let r=e.nodes.map(n=>{if(!j(n))return n;let a=n.stable.start,i=a+n.length,[p,s]=dt(n,t)?[Math.max(a,t.start),Math.min(i,t.end)]:i<=t.start?[Math.max(a,i-o),i]:[a,Math.min(i,a+o)];return p===a&&s===i?n:{...n,length:s-p,stable:{...n.stable,start:p}}});return r.some((n,a)=>n!==e.nodes[a])?{...e,nodes:r}:e}function Ot(e,t=()=>"",o=!0){let r=e.paths??[],n=Do(e),a=new Map;r.forEach((g,b)=>{wo(a,ie(g.name).name,b)});let i=g=>n[g].map(b=>`${b.node.id}${b.strand}`).join(","),p=g=>a.get(g).map(b=>r[b]),s=new Map,c=new Map;for(let[g,b]of a){let v=g===e.referencePath?`\0${g}`:b.map(i).join("|"),I=t(g),h=s.get(v)??s.size;s.set(v,h);let y=`${v} ${I}`,P=c.get(y);P?P.walks.push(g):c.set(y,{rank:h,group:I,walks:[g]})}if(o&&c.size===a.size)return e;let m=[...c.values()].sort((g,b)=>g.rank-b.rank||g.group.localeCompare(b.group));if(!o)return{...e,paths:m.flatMap(({walks:g})=>g.flatMap(p))};let k=m.flatMap(({walks:g})=>p(g[0]).map(b=>g.length>1?{...b,members:g}:b)),T=new Set(m.map(g=>g.walks[0]));return{...e,paths:k,anchorPaths:e.anchorPaths?.filter(g=>T.has(g.name)),pathVisits:e.pathVisits?.filter(g=>T.has(g))}}function In(e,t,o){let r=Math.min(48,t,o);return Math.max(0,r-(e+t))-Math.max(0,e-(o-r))}function En(e,t,o){return{translateX:t.translateX+In(e.minX*t.scaleX+t.translateX,e.w*t.scaleX,o.width),translateY:t.translateY+In(e.minY*t.scaleY+t.translateY,e.h*t.scaleY,o.height)}}function Nn(e,t,o){let r=e.minX*t.scaleX+t.translateX,n=e.minY*t.scaleY+t.translateY;return r<o.width&&r+e.w*t.scaleX>0&&n<o.height&&n+e.h*t.scaleY>0}var Wa=.05,ot=9;function _a(e,t){let{minY:o,maxY:r}=e.layout.bounds,n=r-o;return e.columns&&n>0?Math.max(Wa,Math.min(1,t/n)):1}function rt(e,t){let{scaleX:o,translateX:r,translateY:n}=t,a=t.scaleY*_a(e,t.usableHeight),i=s=>(s-e.yOffset)*a+n,{columns:p}=e;if(p){let s=vr(p,c=>c*o+r);return{x:c=>Ar(s,c),y:i,yScale:a}}return{x:s=>s*o+r,y:i,yScale:a}}function Dt(e,{x:t,y:o},r,n){let a=null;return e.layout.nodes.forEach(i=>{i.order>=0&&t(i.x-ot)<=r&&r<=t(i.x+i.pixelWidth+ot)&&o(i.y-ot)<=n&&n<=o(i.y+i.contentHeight+ot)&&(a=i.name)}),a}var Vn=20,za=.05,Hn=6;function $a(e){let t=e.length-Hn;return t>0?`${e.slice(0,Hn).join(", ")} and ${t} more`:e.join(", ")}function Ja(e){if(e.kind==="deletion")return`deletion of ${Mt(e.length)}`;if(e.kind==="substitution")return`substitution ${e.seq}`;let t=e.seq??"",o=t.length>Vn?`${t.slice(0,Vn)}\u2026`:t;return`insertion of ${Mt(t.length)} ${o}`.trim()}function Ya(e,t,o){let r={substitution:!1,insertion:!1,deletion:!1};if(e&&t&&Br(t.yScale)){let n=3;for(let a of e.mismatches)if(!r[a.kind]&&Ir(a,{x:t.x,width:o})&&(r[a.kind]=!0,--n===0))break}return r}var Fn=rn.views(e=>({get tubeMapFrame(){let t=e.layoutResult?.tubeMap;return t?rt(t,{...e.screenTransform,usableHeight:e.usableHeight}):void 0},get tubeMapRulerBoxes(){let t=e.tubeMapReference;return t&&!e.hostPlacesX&&!e.layoutResult?.tubeMapPanels?Bt(t):void 0},get tubeMapPanelRulerBoxes(){let{layoutResult:t}=e,o=t?.tubeMapPanels?.at(-1);return o&&t?.referenceAxis&&!e.hostPlacesX?Bt(xr(o.result.tubeMap)):void 0},get connectorZoneBottom(){let t=e.tubeMapPicture,o=this.tubeMapFrame;return t&&o?o.y(t.bounds.minY)-2:0},get tubeMapConnectors(){let t=e.tubeMapConnectedBoxes,o=this.tubeMapFrame,r=t&&o?e.hostBpFrame:void 0;return t&&o&&r?Rr(t,n=>n*r.scale+r.translateX,o.x,e.paneWidth):[]},get tubeMapPanelPictures(){let t=e.layoutResult?.tubeMapPanels;if(!t)return;let{field:o}=e.facetSetting;return t.map(r=>{let n=r.result.tubeMap,{graph:a,coarse:i}=n;return{panel:r,label:r.label??(o==="walk"?e.walkLabel(r.paths[0]):r.key),picture:Pr(n),tubeColors:e.tubeColorsOf(a,n.pathColors),nodeColors:e.tubeMapNodeColors?Vr(a,e.effectiveColorScheme,e.referenceRamp):void 0,deviations:i?Lr(n,i.deviations):[]}})}})).views(e=>({get hoveredMember(){let t=e.hoveredNode,o=t===null?void 0:e.hoverDrawing?.members.get(t);if(!o)return t;let r=e.hoveredAt,n=e.hoveredPanel,a=n===null?void 0:this.tubeMapPanelViews?.[n],i;return a?.panel.result.tubeMap.layout.nodes.forEach(s=>{s.name===t&&(i=s)}),(r&&a&&i?_r(o,s=>e.nodeSpan(s),a.frame.x(i.x),a.frame.x(i.x+i.pixelWidth),r.x):void 0)??o[0]},get tubeMapPanelHover(){let t=e.hoveredNode,o=e.tubeMapPanelPictures;if(t===null||!o)return;let r=this.hoveredMember??t;return o.map(({panel:n})=>{let a=n.result.tubeMap,i=Wr(a,r);return i?{box:i,...zr(a.graph,i)}:void 0})},get tubeMapPanelTubeColors(){return e.tubeMapPanelPictures?.map(({panel:t,tubeColors:o})=>{let{graph:r}=t.result.tubeMap;return e.fadeUnhovered(o,r.paths??[],r.referencePath)})},get tubeMapPanelViews(){let t=e.tubeMapPanelPictures,o=this.tubeMapPanelTubeColors,r=e.layoutResult;if(!t||!o||!r)return;let n=t.length*It,a=t.reduce((c,m)=>c+m.panel.height,0),i=e.usableHeight-n,p=e.scaleY*(r.referenceAxis&&a>0?Math.max(za,Math.min(1,i/a)):1),s=e.translateY;return t.map((c,m)=>{let{panel:k}=c,T=k.result.extent?.minY??0,g=s,b=g+It;return s=b+k.height*p,{...c,tubeColors:o[m],frame:rt(k.result.tubeMap,{scaleX:e.scaleX,translateX:e.translateX,scaleY:p,translateY:b-T*p,usableHeight:1/0}),titleTop:g,top:b,bottom:s}})},tubeMapPanelAt(t){let o=this.tubeMapPanelViews?.findIndex(r=>r.titleTop<=t&&t<=r.bottom)??-1;return o<0?null:o}})).views(e=>({paintHover(t,o){let r=e.tubeMapPicture,n=e.tubeMapFrame,a=e.hoverLayerNode;if(r&&n){let{ctx:i,canvas:p}=t,s=Ke(e.paneWidth,e.canvasHeight);i.setTransform(1,0,0,1,0,0),i.clearRect(0,0,p.width,p.height),i.setTransform(s,0,0,s,0,0);let c=e.tubeMapPanelViews;c?$r(i,c,e.tubeMapPanelHover,{width:e.paneWidth,lit:a!==null}):Cr(i,r,{...n,width:e.paneWidth,highlightNode:a}),Gr(i,e.tubeMapConnectors,e.connectorZoneBottom,a),i.setTransform(1,0,0,1,0,0)}else t.uploadGeometry(o),t.setNodeHighlights(a===null?new Map:new Map([[a,Gt]])),t.setEdgeHighlight(e.hoveredEdge,Gt),t.updateTransform(e.paintTransform),t.renderHighlights()}})).views(e=>{let t=(n,a)=>JSON.stringify(n)===JSON.stringify(a),o=bt(()=>Ya(e.layoutResult?.tubeMapPanels!==void 0?void 0:e.tubeMapPicture,e.tubeMapFrame,e.paneWidth),{equals:t}),r=bt(()=>{let n=e.layoutResult,i=n?.tubeMapPanels!==void 0?[]:n?.tubeMap?.layout.reads??[],p=e.drawnGraph?.paths??[],s=e.tubeMapColoring,c=e.tubeColorKind;return{bundled:p.some(m=>m.members),values:c==="value"&&s?[...[...s.palette].map(([m,k])=>({value:m,color:k})),...s.unvalued?[{value:`${s.field}: none`,color:Dr}]:[]]:void 0,roles:c==="role"||c==="tinted",haplotypeTube:c==="tinted"?jr[0]:Fr,logWidths:n?.tubeMap!==void 0&&!n.referenceAxis,foldBp:e.tubeMapDeviations.length>0?e.tubeMapFold:void 0,forwardReads:i.some(m=>!m.is_reverse),reverseReads:i.some(m=>m.is_reverse)}},{equals:t});return{get tubeMapKeys(){return{...r.get(),...o.get()}}}}).views(e=>({tubeMapUnder(t){let o=e.tubeMapPanelViews;if(o){let i=e.tubeMapPanelAt(t),p=i===null?void 0:o[i];return p&&{drawing:p.panel.result.tubeMap,...p}}let r=e.layoutResult?.tubeMap,n=e.tubeMapPicture,a=e.tubeMapFrame;return r&&n&&a?{drawing:r,picture:n,frame:a}:void 0},tubeMapNodeAt(t,o){let r=this.tubeMapUnder(o);return(r?Dt(r.drawing,r.frame,t,o):null)??Tr(e.tubeMapConnectors,e.connectorZoneBottom,t,o)??null},tubeAt(t,o){let r=this.tubeMapUnder(o);if(!r)return null;let{picture:n,frame:a}=r,i=Nr(n,a,t,o),p=i?.readId??Er(n,a,t,o);return p===void 0?null:{track:p,mismatch:i}},get hoveredTubeText(){let t=e.hoveredTube,o=e.layoutResult?.tubeMap?.layout,r=t&&o?.reads.find(i=>i.id===t.track);if(t&&r){let i=r.mapping_quality;return{label:r.name??"read",readout:[`MAPQ ${i??"unknown"}`,`${r.is_reverse?"reverse":"forward"} strand`,...t.mismatch?[Ja(t.mismatch)]:[]].join(", ")}}let n=t?e.hoverGraph?.paths?.[t.track]:void 0,a=n?.members;return a?{label:`${a.length} haplotypes`,readout:`one route: ${$a(a.map(i=>e.walkLabel(i)))}`}:n?{label:e.walkLabel(n.name),readout:"haplotype"}:void 0}}));var jn=Fn.actions(()=>({writeGrammar(e){}})).actions(e=>({keepDrawingInView(){let t=e.layoutBounds,o=e.viewBox;if(!t||e.viewportOwner==="fit"||!e.paneMeasured||o.width<=0||o.height<=0)return;let r=En(t,e,o);e.viewportOwner!=="host"&&(e.translateX=r.translateX),e.translateY=r.translateY}})).actions(e=>{let t;return{setColorScheme(o){(e.statedColorDomain||e.chosenColorScheme==="reference-position")&&(t=e.statedColorDomain),e.writeGrammar({color:tn(o,t)})}}}).actions(e=>({setError(t){e.error=t,e.isLoading=!1,e.statusMessage=""},finishLoading(){e.isLoading=!1,e.statusMessage=""},setStatusMessage(t){e.statusMessage=t},setFetchMs(t){e.lastFetchMs=t},setLayoutMs(t){e.lastLayoutMs=t},setGeometryMetrics(t,o,r){e.lastGeometryMs=t,e.lastGeometryStrokeCount=o.nodeStrokes.length,e.builtViewport={...r,viewportDirty:e.viewportDirty},e.drawnBatch=o},markPainted(){e.paintedViewport=e.builtViewport},setLayoutQuality(t){e.layoutQuality=t},setLayoutEngine(t){e.layoutEngine=t},setLinearLayout(t){e.linearLayout=t},setLayoutMode(t){e.writeGrammar({layoutMode:t})},setHover(t){e.writeGrammar({hover:t}),e.hoverLightsEverything||(e.hoveredEdge=null)},setReferencePath(t){e.referencePath=t;let o=e.graph;if(o?.anchoredBy==="paths"){let r=De(o,t);Be.inherit(o,r),e.graph=r}},setLayer(t,o){e.writeGrammar({layers:en(e.grammar.layers,t,o)})},setShowPerf(t){e.showPerf=t},setBubbleSpread(t){e.bubbleSpread=t},setMaxGraphNodes(t){e.maxGraphNodes=t},setNodeWidth(t){e.writeGrammar({size:on(t,e.contigThickness)})},setTubeMapFold(t){e.tubeMapFold=t},setTubeMapRoutes(t){e.tubeMapRoutes=t},setTubeMapColorBy(t){e.tubeMapColorBy=t},setGeneTrackId(t){e.geneTrackId=t},setRepeatTrackId(t){e.repeatTrackId=t},setRepeatKey(t){e.repeatKey=t},setWalkLayers(t){e.walkLayers=t},liftWalks(t){let o=new Map(e.walkLayers.map(r=>[r.walk,r]));e.walkLayers=t.map(r=>o.get(r)??{walk:r})},liftAmongChoices(t){let o=new Set(e.walkChoices.map(r=>r.name));this.liftWalks([...t,...e.walkLayers.map(r=>r.walk).filter(r=>!o.has(r))])},setFacet(t){let o=e.facetSetting;t===""?o.field!==""&&e.writeGrammar({facet:{}}):e.writeGrammar({facet:{...o,field:t,domain:t===o.field?o.domain:[]}})},toggleWalk(t){let o=e.walkLayers;e.walkLayers=o.some(r=>r.walk===t)?o.filter(r=>r.walk!==t):[...o,{walk:t}]},setWalkColor(t,o){e.walkLayers=e.walkLayers.map(r=>r.walk===t?{...r,color:{...r.color,...o}}:r)},setWalkRowSamples(t){e.writeGrammar({rows:t?{kept:t}:{}})},setWalkRowGroupBy(t){(t||e.walkRowGroupBy)&&e.writeGrammar({facet:t??{}})},pairWithLinearView(t){let o=e.connectedViewId;o!==void 0&&$e([...R(e).views]).some(n=>n.id===o)||(e.connectedViewId=t)},setHoveredNode(t,o){e.hoveredNode=t,e.hoveredAt=t===null?null:o??null},setHoveredPanel(t){e.hoveredPanel=t},setHoveredTube(t){let o=e.hoveredTube;(t?.track!==o?.track||t?.mismatch!==o?.mismatch)&&(e.hoveredTube=t)},setHoveredRowWalks(t){t.join(`
|
|
1
|
+
import{A as Mr,B as kr,C as Sr,D as Ct,E as Vr,F as Xe,G as Ur,H as Xr,I as Kr,J as qr,K as en,L as tn,M as on,P as qe,Q as rn,S as nn,U as sn,V as pn,a as _,b as Wo,c as _o,d as ze,e as F,f as $o,g as Jo,l as qo,n as xt,o as $,p as $e,q as Pe,r as Rt,s as Je,t as Zo,u as Qo,v as er,w as Tt,x as or,y as fr,z as wr}from"./chunks/chunk-CJMBJJLO.js";import{a as St,b as Yo,c as Uo,d as Ae,e as Xo,f as Ko,i as Zr,m as Qr,n as an}from"./chunks/chunk-NGR473EL.js";import{$a as Ir,Ab as $r,Bb as Jr,Ca as yr,Cb as Yr,Da as Be,Ea as br,Ia as At,Ja as Pt,Ka as xr,La as Bt,Oa as Rr,Pa as Tr,Q as tr,Ra as Gr,Sa as Lr,T as Ye,V as rr,Va as vr,Wa as Ar,X as nr,Xa as Pr,Y as ar,Za as Cr,_a as Br,a as ve,ab as Er,b as bt,ba as ir,bb as Nr,c as C,ca as sr,d as se,db as Hr,dc as Ke,g as Do,ja as pe,jb as It,ka as pr,la as cr,lb as Fr,ma as ur,mb as jr,na as dr,o as kt,oa as mr,ob as Or,p as zo,pa as lr,qa as Gt,qb as Dr,sa as hr,ub as Ue,va as gr,vb as Wr,wa as Ce,wb as _r,xa as Lt,xb as zr,ya as ce,za as ue}from"./chunks/chunk-ORHUPW3G.js";import"./chunks/chunk-QQCTNB2Z.js";import{c as jo,d as Oo}from"./chunks/chunk-4EKOQHUX.js";import{f as _e,z as Mt}from"./chunks/chunk-B5SVBPXN.js";import{b as vt}from"./chunks/chunk-Q55PHRHV.js";import{j as je}from"./chunks/chunk-HOSCIP4U.js";import{e as mt}from"./chunks/chunk-MNL7IPTH.js";import{a as lt}from"./chunks/chunk-GN4HSVLB.js";import{s as wt}from"./chunks/chunk-M2D7NUOY.js";import"./chunks/chunk-YBLNN5FU.js";import{i as yt,m as Io}from"./chunks/chunk-R25GOTED.js";import{a as wo,c as Mo,g as j,j as dt,q as So,r as ie,t as Co,u as De,w as Bo}from"./chunks/chunk-ULLEUORS.js";import{f as Se,l as E,m as z,n as Le,o as Oe}from"./chunks/chunk-HTSG4T32.js";import"./chunks/chunk-YBLNN5FU.js";import{a as xo,b as O,d as Z,e as Q,f as Ro}from"./chunks/chunk-MVVXRZXV.js";import{a as ko}from"./chunks/chunk-TQKSF3NI.js";import{a as Ho,g as Fo}from"./chunks/chunk-QJ43NDYS.js";import{b as Go,c as Lo,e as vo,f as Ao,g as ht,h as Po}from"./chunks/chunk-IKJZPPOA.js";import{a as Eo}from"./chunks/chunk-7WIBGKBU.js";import{a as gt}from"./chunks/chunk-OGQ6OQDN.js";import{a as L,b as D,c as Ge,e as H,f as To,g as M}from"./chunks/chunk-NDRLCGPC.js";import{i as ae,j as R,k as go,l as yo,n as bo}from"./chunks/chunk-TENPGIPX.js";import{b as ee}from"./chunks/chunk-YU7T5WOQ.js";import{I as We,i as No,l as Vo}from"./chunks/chunk-UGCNPRKC.js";import{a as fo,b as A,d as ft}from"./chunks/chunk-JMBDTNUR.js";var Ze=JBrowseExports["@jbrowse/core/Plugin"];var cn=Ze&&Ze.__esModule?Ze.default:Ze;var Qe=_([A("circle",{cx:"7.2",cy:"14.4",r:"3.2"},"0"),A("circle",{cx:"14.8",cy:"18",r:"2"},"1"),A("circle",{cx:"15.2",cy:"8.8",r:"4.8"},"2")],"BubbleChart");var et=JBrowseExports["@jbrowse/core/pluggableElementTypes/AdapterType"];var te=et&&et.__esModule?et.default:et;var Sa=O("GbzBaseSyntenyAdapter",{assemblyNames:{type:"stringArray",defaultValue:[]},gbzDbLocation:E("/path/to/graph.gbz.db"),haplotypeIndexLocation:E(""),readsLocation:E(""),readsIndex:z("GbzBaseReadsIndex"),samplesTsvLocation:E(""),subgraphSnarls:{type:"stringEnum",model:M.enumeration("SnarlOutput",["none","contained","overlapping"]),defaultValue:je.snarls},referenceSample:{type:"string",defaultValue:""},assemblyNameToPanSN:{type:"frozen",defaultValue:{}},context:{type:"number",defaultValue:je.context,advanced:!0},nodeLimit:{type:"number",defaultValue:je.limit,advanced:!0}},{explicitlyTyped:!0,preProcessSnapshot:e=>{let{uri:t,baseUri:o,reads:r}=e;return{...e,...t?{gbzDbLocation:{uri:t,baseUri:o}}:{},...typeof r=="string"?{readsLocation:{uri:r,baseUri:o},...xa(r,o)}:{}}}});function xa(e,t){let{name:o,query:r}=Ao(e);return o.endsWith(".gz")?{readsIndex:{location:{uri:`${o}.tbi${r}`,baseUri:t}}}:{}}var un=Sa;function Et(e){e.addAdapterType(()=>new te({name:"GbzBaseSyntenyAdapter",displayName:"gbz-base pangenome adapter",configSchema:un,adapterCapabilities:["getSubgraph","headerLanes","lanePairsOnAnchor","lanePairBatches"],adapterMetadata:{category:"Synteny adapters"},getAdapterClass:()=>import("./chunks/GbzBaseSyntenyAdapter-3MELVQRM.js").then(t=>t.default)}))}var de=JBrowseExports["@jbrowse/core/pluggableElementTypes"],oe=e=>de!=null&&e in Object(de)?de[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/pluggableElementTypes' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var dn=oe("AddTrackWorkflowType");var mn=oe("BaseDisplay");var ln=oe("DisplayType");var xe=oe("RpcMethodType"),hn=oe("RpcMethodTypeWithRenameRegion");var gn=oe("TrackType");var yn=oe("createBaseTrackConfig"),bn=oe("createBaseTrackModel");var Yi=de&&de.__esModule?de.default:de;var me=JBrowseExports["@jbrowse/core/data_adapters/dataAdapterCache"],Ra=e=>me!=null&&e in Object(me)?me[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/data_adapters/dataAdapterCache' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var fn=Ra("getAdapter"),Xi=me&&me.__esModule?me.default:me;async function Re(e,{sessionId:t,adapterConfig:o},r){let{dataAdapter:n}=await fn(e,t,o);return{adapter:typeof n[r]=="function"?n:void 0,name:n.constructor.name}}var Ie=class extends xe{constructor(){super(...arguments);this.name="GetGraphHaplotypes"}async execute(o){let{adapter:r}=await Re(this.pluginManager,o,"getHaplotypeNames");return r?.getHaplotypeNames({signal:o.signal})}};function wn(e){return typeof e.reads=="string"&&e.reads!==""||vo(e.readsLocation)}var Ee=class extends xe{constructor(){super(...arguments);this.name="GetGraphReads"}async execute(o){let{nodeNames:r,signal:n}=o,{adapter:a}=await Re(this.pluginManager,o,"getReads");return a?a.getReads(r,{signal:n}):{records:[],total:0}}};var le=JBrowseExports["@jbrowse/core/util/librpc"],Ta=e=>le!=null&&e in Object(le)?le[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/util/librpc' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var Nt=Ta("rpcResultWithArrayBuffers");var us=le&&le.__esModule?le.default:le;var Ne=class extends hn{constructor(){super(...arguments);this.name="GetSubgraph"}async execute(o){let{region:r,opts:n,signal:a}=o,{adapter:i,name:p}=await Re(this.pluginManager,o,"getSubgraph");if(i){let s=await i.getSubgraph(r,{...n,signal:a});if(typeof s!="string")return Nt(s);let c=s?lt(s):void 0;return c?Nt(c):s}return console.warn(`[GetSubgraph] ${p} does not implement getSubgraph`),""}};var Ga=ee(()=>import("./chunks/AddTrackWorkflow-LK25EC3H.js"));function Vt(e){e.addAddTrackWorkflowType(()=>new dn({name:"Pangenome graph track",displayName:"Add pangenome graph track",ReactComponent:Ga,stateModel:M.model({})}))}var Ve=class extends xe{constructor(){super(...arguments);this.name="GraphComputeLayout"}async execute(o){let{graph:r,options:n,statusCallback:a}=o;return a?.("Computing layout"),Oo({graph:r,options:n})}};var tt=JBrowseExports["@jbrowse/core/pluggableElementTypes/ViewType"];var Mn=tt&&tt.__esModule?tt.default:tt;var he=JBrowseExports["@jbrowse/core/util/withLaunchInput"],La=e=>he!=null&&e in Object(he)?he[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/util/withLaunchInput' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),kn=La("defineLaunchKeys");var Ts=he&&he.__esModule?he.default:he;var ge=JBrowseExports["@jbrowse/core/pluggableElementTypes/models"],va=e=>ge!=null&&e in Object(ge)?ge[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/pluggableElementTypes/models' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var Sn=va("BaseViewModel");var Ls=ge&&ge.__esModule?ge.default:ge;var Te=["off","nodes","everything"];var xn=_(A("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"}),"ContentCopy");var Rn=_(A("path",{d:"M8.4 18.2c.38.5.6 1.12.6 1.8 0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3c.44 0 .85.09 1.23.26l1.41-1.77c-.92-1.03-1.29-2.39-1.09-3.69l-2.03-.68c-.54.83-1.46 1.38-2.52 1.38-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3c0 .07 0 .14-.01.21l2.03.68c.64-1.21 1.82-2.09 3.22-2.32V5.91C9.96 5.57 9 4.4 9 3c0-1.66 1.34-3 3-3s3 1.34 3 3c0 1.4-.96 2.57-2.25 2.91v2.16c1.4.23 2.58 1.11 3.22 2.32L18 9.71V9.5c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3c-1.06 0-1.98-.55-2.52-1.37l-2.03.68c.2 1.29-.16 2.65-1.09 3.69l1.41 1.77Q17.34 17 18 17c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3c0-.68.22-1.3.6-1.8l-1.41-1.77c-1.35.75-3.01.76-4.37 0z"}),"Hub");var Tn=_(A("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10c1.38 0 2.5-1.12 2.5-2.5 0-.61-.23-1.2-.64-1.67-.08-.1-.13-.21-.13-.33 0-.28.22-.5.5-.5H16c3.31 0 6-2.69 6-6 0-4.96-4.49-9-10-9m5.5 11c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5m-3-4c-.83 0-1.5-.67-1.5-1.5S13.67 6 14.5 6s1.5.67 1.5 1.5S15.33 9 14.5 9M5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S7.33 13 6.5 13 5 12.33 5 11.5m6-4c0 .83-.67 1.5-1.5 1.5S8 8.33 8 7.5 8.67 6 9.5 6s1.5.67 1.5 1.5"}),"Palette");var Gn=_([A("circle",{cx:"12",cy:"12",r:"3.2"},"0"),A("path",{d:"M9 2 7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5"},"1")],"PhotoCamera");function Ft(e,t){if(!(t>0)||e.paths?.length||!e.nodes.some(b=>j(b)))return e;let{nodes:o,edges:r}=Aa(e),n=new Map(o.map((b,v)=>[b.id,v])),a=r.map(An),i=Ca(o.length,r,a,n),p=Ia(o,r,a,n),s=Mo(p.keys(),b=>p[b]),c=new Uint8Array(o.length),m=[];for(let b of s.values())if(Ea(b,o,i,p)>=t){for(let v of b)c[v]=1;j(o[b[0]])||m.push(b)}let{dist:k,pred:T}=Ha(o,i);for(let b of m)for(let[v,I]of Na(b,o,i,p)){let h=Va(v,I,i,p,k,o);for(;h!==void 0&&!c[h];)c[h]=1,h=j(o[h])?void 0:T[h]}let g=r.filter((b,v)=>{let I=n.get(b.from),h=n.get(b.to);if(I===void 0||h===void 0)return!1;let y=Ba(o[I],a[v].from,o[h],a[v].to);return c[I]&&c[h]&&!(y>0&&y<t)});return ja({...e,nodes:o,edges:g},c,p)}function Aa({nodes:e,edges:t}){let o=new Set(e.filter(n=>n.stable?.strand==="-").map(n=>n.id));if(o.size===0)return{nodes:e,edges:t};let r=(n,a)=>{let i=a??_e(n);return o.has(n)?Pa(i):i};return{nodes:e.map(n=>o.has(n.id)?{...n,stable:{...n.stable,strand:"+"}}:n),edges:t.map(n=>o.has(n.from)||o.has(n.to)?{...n,fromStrand:r(n.from,n.fromStrand),toStrand:r(n.to,n.toStrand)}:n)}}function Pa(e){return e==="+"?"-":"+"}function An(e){return{from:(e.fromStrand??_e(e.from))==="+"?"e":"s",to:(e.toStrand??_e(e.to))==="+"?"s":"e"}}function Ca(e,t,o,r){let n=Array.from({length:e},()=>[]);return t.forEach((a,i)=>{let p=r.get(a.from),s=r.get(a.to);if(p!==void 0&&s!==void 0){let{from:c,to:m}=o[i];n[p].push({other:s,side:c,otherSide:m}),n[s].push({other:p,side:m,otherSide:c})}}),n}function Pn(e,t){let o=e.stable,r=t.stable;return o&&r?.refName===o.refName&&r.rank===o.rank?[o,r]:void 0}function jt(e,t,o,r){let n=Pn(e,o);if(!n)return!1;let[a,i]=n;return t==="e"&&r==="s"&&a.start+e.length===i.start||r==="e"&&t==="s"&&i.start+o.length===a.start}function Ba(e,t,o,r){let n=Pn(e,o);if(!n||jt(e,t,o,r))return 0;let[a,i]=n;return Math.abs(Ht(i,o,r)-Ht(a,e,t))}function Ht({start:e},t,o){return o==="s"?e:e+t.length}function Ia(e,t,o,r){let n=e.map((i,p)=>p),a=i=>{for(;n[i]!==i;)n[i]=n[n[i]],i=n[i];return i};return t.forEach((i,p)=>{let s=r.get(i.from),c=r.get(i.to);s!==void 0&&c!==void 0&&jt(e[s],o[p].from,e[c],o[p].to)&&(n[a(s)]=a(c))}),e.map((i,p)=>a(p))}function Ea(e,t,o,r){if(j(t[e[0]]))return 1/0;let n=0,a,i=1/0,p=-1/0,s=!0;for(let c of e){n+=t[c].length;for(let{other:m,otherSide:k}of o[c]){let T=t[m];if(r[m]!==r[c]&&j(T)){a??=T.stable.refName,s&&=T.stable.refName===a;let g=Ht(T.stable,T,k);i=Math.min(i,g),p=Math.max(p,g)}}}return s&&p>i?Math.max(n,p-i):n}function Na(e,t,o,r){let n=c=>t[c].stable?.start??0,a=c=>n(c)+t[c].length,i=e[0],p=e[0];for(let c of e)n(c)<n(i)&&(i=c),a(c)>a(p)&&(p=c);let s=[];for(let c of new Set([i,p]))for(let m of["s","e"])o[c].some(k=>k.side===m&&r[k.other]===r[c])||s.push([c,m]);return s}function Va(e,t,o,r,n,a){let i;for(let p of o[e]){let s=p.other;p.side===t&&r[s]!==r[e]&&Number.isFinite(n[s])&&(i===void 0||n[s]<n[i]||n[s]===n[i]&&a[s].name<a[i].name)&&(i=s)}return i}function Ha(e,t){let o=new Float64Array(e.length).fill(1/0),r=new Int32Array(e.length).fill(-1),n=new Fa(([a,i],[p,s])=>a-p||Ln(e[i].name,e[s].name));e.forEach((a,i)=>{j(a)&&(o[i]=0,n.push([0,i]))});for(let a=n.pop();a!==void 0;a=n.pop()){let[i,p]=a;if(!(i>o[p]))for(let{other:s}of t[p]){if(j(e[s]))continue;let c=i+e[s].length;c<o[s]?(o[s]=c,r[s]=p,n.push([c,s])):c===o[s]&&Ln(e[p].name,e[r[s]].name)<0&&(r[s]=p)}}return{dist:o,pred:Array.from(r,a=>a<0?void 0:a)}}function Ln(e,t){return e<t?-1:e>t?1:0}var Fa=class{constructor(e){this.order=e,this.items=[]}push(e){let{items:t}=this;t.push(e);let o=t.length-1;for(;o>0;){let r=o-1>>1;if(this.order(t[o],t[r])>=0)break;[t[o],t[r]]=[t[r],t[o]],o=r}}pop(){let{items:e}=this,t=e[0],o=e.pop();if(e.length>0&&o!==void 0){e[0]=o;let r=0;for(;;){let n=2*r+1,a=n+1,i=r;if(n<e.length&&this.order(e[n],e[i])<0&&(i=n),a<e.length&&this.order(e[a],e[i])<0&&(i=a),i===r)break;[e[r],e[i]]=[e[i],e[r]],r=i}}return t}};function ja(e,t,o){let{nodes:r,edges:n}=e,a=new Map(r.map((h,y)=>[h.id,y])),i=n.map(An),p=n.map((h,y)=>[{i:a.get(h.from),side:i[y].from},{i:a.get(h.to),side:i[y].to}]),s=new Map,c=(h,y)=>`${h}${y}`;for(let h of p)for(let{i:y,side:P}of h)s.set(c(y,P),(s.get(c(y,P))??0)+1);let m=new Map,k=new Set,T=new Set;p.forEach(([h,y],P)=>{if(h.i!==y.i&&o[h.i]===o[y.i]&&jt(r[h.i],h.side,r[y.i],y.side)&&s.get(c(h.i,h.side))===1&&s.get(c(y.i,y.side))===1){let[J,B]=h.side==="e"?[h,y]:[y,h];m.set(J.i,{j:B.i,out:J.side,in:B.side}),k.add(B.i),T.add(P)}});let g=r.map((h,y)=>y),b=new Map,v=new Map;r.forEach((h,y)=>{if(!t[y]||k.has(y)||!m.has(y))return;let P=[y],J=vn(m.get(y).out);b.set(c(y,J),"s");for(let B=m.get(y);B;B=m.get(B.j))P.push(B.j),J=B.in;b.set(c(P.at(-1),vn(J)),"e");for(let B of P)g[B]=y;v.set(y,Oa(P.map(B=>r[B])))});let I=({i:h,side:y})=>({id:r[g[h]].id,side:g[h]===h&&!v.has(h)?y:b.get(c(h,y))});return{...e,nodes:r.flatMap((h,y)=>!t[y]||g[y]!==y?[]:[v.get(y)??h]),edges:n.flatMap((h,y)=>{if(T.has(y))return[];let[P,J]=p[y];if(!v.has(g[P.i])&&!v.has(g[J.i]))return[h];let B=I(P),He=I(J);return[{...h,from:B.id,to:He.id,fromStrand:B.side==="e"?"+":"-",toStrand:He.side==="s"?"+":"-"}]})}}function vn(e){return e==="s"?"e":"s"}function Oa(e){let{samples:t,...o}=e[0],r=e.reduce((i,p)=>i+p.length,0),n=r>0?e.reduce((i,p)=>i+p.depth*p.length,0)/r:o.depth,a=e.every(i=>i.samples)?e.reduce((i,p)=>i.filter(s=>p.samples.includes(s)),t):void 0;return a?{...o,length:r,depth:n,samples:a}:{...o,length:r,depth:n}}function Cn(e,t){let o=new Set(e.nodes.filter(s=>j(s)&&dt(s,t)).map(s=>s.id)),r=e.paths??[];if(o.size===0||r.length===0)return e;let n=r.map(s=>{let c=-1,m=-1;return s.nodeIds.forEach((k,T)=>{o.has(k)&&(c<0&&(c=T),m=T)}),c<0?void 0:{first:c,last:m}});if(n.every((s,c)=>s?.first===0&&s.last===r[c].nodeIds.length-1))return e;let a=new Set,i=[],p=new Map;return r.forEach((s,c)=>{let m=n[c];if(m){let k=s.nodeIds.slice(m.first,m.last+1);for(let T of k)a.add(T);i.push({...s,nodeIds:k}),p.set(s.name,{first:m.first,nodeIds:k})}}),{...e,nodes:e.nodes.filter(s=>a.has(s.id)),edges:e.edges.filter(s=>a.has(s.from)&&a.has(s.to)),paths:i,pathVisits:e.pathVisits&&Da(e.pathVisits,r,n,new Map(e.nodes.map(s=>[s.id,s.name]))),anchorPaths:Bo(e,p)}}function Da(e,t,o,r){let n=e.replay(),a=new So;return t.forEach((i,p)=>{let s=e.pathIndex(ie(i.name).name),c=o[p];i.nodeIds.forEach((m,k)=>{let T=r.get(m)??m,g=n(e.slot(T),s);g>=0&&c&&k>=c.first&&k<=c.last&&a.add(T,e.paths[s],e.samples[s],e.start[g],e.reversed[g]===1)})}),a.build()}function Bn(e,t,o){let r=e.nodes.map(n=>{if(!j(n))return n;let a=n.stable.start,i=a+n.length,[p,s]=dt(n,t)?[Math.max(a,t.start),Math.min(i,t.end)]:i<=t.start?[Math.max(a,i-o),i]:[a,Math.min(i,a+o)];return p===a&&s===i?n:{...n,length:s-p,stable:{...n.stable,start:p}}});return r.some((n,a)=>n!==e.nodes[a])?{...e,nodes:r}:e}function Ot(e,t=()=>"",o=!0){let r=e.paths??[],n=Do(e),a=new Map;r.forEach((g,b)=>{wo(a,ie(g.name).name,b)});let i=g=>n[g].map(b=>`${b.node.id}${b.strand}`).join(","),p=g=>a.get(g).map(b=>r[b]),s=new Map,c=new Map;for(let[g,b]of a){let v=g===e.referencePath?`\0${g}`:b.map(i).join("|"),I=t(g),h=s.get(v)??s.size;s.set(v,h);let y=`${v} ${I}`,P=c.get(y);P?P.walks.push(g):c.set(y,{rank:h,group:I,walks:[g]})}if(o&&c.size===a.size)return e;let m=[...c.values()].sort((g,b)=>g.rank-b.rank||g.group.localeCompare(b.group));if(!o)return{...e,paths:m.flatMap(({walks:g})=>g.flatMap(p))};let k=m.flatMap(({walks:g})=>p(g[0]).map(b=>g.length>1?{...b,members:g}:b)),T=new Set(m.map(g=>g.walks[0]));return{...e,paths:k,anchorPaths:e.anchorPaths?.filter(g=>T.has(g.name)),pathVisits:e.pathVisits?.filter(g=>T.has(g))}}function In(e,t,o){let r=Math.min(48,t,o);return Math.max(0,r-(e+t))-Math.max(0,e-(o-r))}function En(e,t,o){return{translateX:t.translateX+In(e.minX*t.scaleX+t.translateX,e.w*t.scaleX,o.width),translateY:t.translateY+In(e.minY*t.scaleY+t.translateY,e.h*t.scaleY,o.height)}}function Nn(e,t,o){let r=e.minX*t.scaleX+t.translateX,n=e.minY*t.scaleY+t.translateY;return r<o.width&&r+e.w*t.scaleX>0&&n<o.height&&n+e.h*t.scaleY>0}var Wa=.05,ot=9;function _a(e,t){let{minY:o,maxY:r}=e.layout.bounds,n=r-o;return e.columns&&n>0?Math.max(Wa,Math.min(1,t/n)):1}function rt(e,t){let{scaleX:o,translateX:r,translateY:n}=t,a=t.scaleY*_a(e,t.usableHeight),i=s=>(s-e.yOffset)*a+n,{columns:p}=e;if(p){let s=vr(p,c=>c*o+r);return{x:c=>Ar(s,c),y:i,yScale:a}}return{x:s=>s*o+r,y:i,yScale:a}}function Dt(e,{x:t,y:o},r,n){let a=null;return e.layout.nodes.forEach(i=>{i.order>=0&&t(i.x-ot)<=r&&r<=t(i.x+i.pixelWidth+ot)&&o(i.y-ot)<=n&&n<=o(i.y+i.contentHeight+ot)&&(a=i.name)}),a}var Vn=20,za=.05,Hn=6;function $a(e){let t=e.length-Hn;return t>0?`${e.slice(0,Hn).join(", ")} and ${t} more`:e.join(", ")}function Ja(e){if(e.kind==="deletion")return`deletion of ${Mt(e.length)}`;if(e.kind==="substitution")return`substitution ${e.seq}`;let t=e.seq??"",o=t.length>Vn?`${t.slice(0,Vn)}\u2026`:t;return`insertion of ${Mt(t.length)} ${o}`.trim()}function Ya(e,t,o){let r={substitution:!1,insertion:!1,deletion:!1};if(e&&t&&Br(t.yScale)){let n=3;for(let a of e.mismatches)if(!r[a.kind]&&Ir(a,{x:t.x,width:o})&&(r[a.kind]=!0,--n===0))break}return r}var Fn=rn.views(e=>({get tubeMapFrame(){let t=e.layoutResult?.tubeMap;return t?rt(t,{...e.screenTransform,usableHeight:e.usableHeight}):void 0},get tubeMapRulerBoxes(){let t=e.tubeMapReference;return t&&!e.hostPlacesX&&!e.layoutResult?.tubeMapPanels?Bt(t):void 0},get tubeMapPanelRulerBoxes(){let{layoutResult:t}=e,o=t?.tubeMapPanels?.at(-1);return o&&t?.referenceAxis&&!e.hostPlacesX?Bt(xr(o.result.tubeMap)):void 0},get connectorZoneBottom(){let t=e.tubeMapPicture,o=this.tubeMapFrame;return t&&o?o.y(t.bounds.minY)-2:0},get tubeMapConnectors(){let t=e.tubeMapConnectedBoxes,o=this.tubeMapFrame,r=t&&o?e.hostBpFrame:void 0;return t&&o&&r?Rr(t,n=>n*r.scale+r.translateX,o.x,e.paneWidth):[]},get tubeMapPanelPictures(){let t=e.layoutResult?.tubeMapPanels;if(!t)return;let{field:o}=e.facetSetting;return t.map(r=>{let n=r.result.tubeMap,{graph:a,coarse:i}=n;return{panel:r,label:r.label??(o==="walk"?e.walkLabel(r.paths[0]):r.key),picture:Pr(n),tubeColors:e.tubeColorsOf(a,n.pathColors),nodeColors:e.tubeMapNodeColors?Vr(a,e.effectiveColorScheme,e.referenceRamp):void 0,deviations:i?Lr(n,i.deviations):[]}})}})).views(e=>({get hoveredMember(){let t=e.hoveredNode,o=t===null?void 0:e.hoverDrawing?.members.get(t);if(!o)return t;let r=e.hoveredAt,n=e.hoveredPanel,a=n===null?void 0:this.tubeMapPanelViews?.[n],i;return a?.panel.result.tubeMap.layout.nodes.forEach(s=>{s.name===t&&(i=s)}),(r&&a&&i?_r(o,s=>e.nodeSpan(s),a.frame.x(i.x),a.frame.x(i.x+i.pixelWidth),r.x):void 0)??o[0]},get tubeMapPanelHover(){let t=e.hoveredNode,o=e.tubeMapPanelPictures;if(t===null||!o)return;let r=this.hoveredMember??t;return o.map(({panel:n})=>{let a=n.result.tubeMap,i=Wr(a,r);return i?{box:i,...zr(a.graph,i)}:void 0})},get tubeMapPanelTubeColors(){return e.tubeMapPanelPictures?.map(({panel:t,tubeColors:o})=>{let{graph:r}=t.result.tubeMap;return e.fadeUnhovered(o,r.paths??[],r.referencePath)})},get tubeMapPanelViews(){let t=e.tubeMapPanelPictures,o=this.tubeMapPanelTubeColors,r=e.layoutResult;if(!t||!o||!r)return;let n=t.length*It,a=t.reduce((c,m)=>c+m.panel.height,0),i=e.usableHeight-n,p=e.scaleY*(r.referenceAxis&&a>0?Math.max(za,Math.min(1,i/a)):1),s=e.translateY;return t.map((c,m)=>{let{panel:k}=c,T=k.result.extent?.minY??0,g=s,b=g+It;return s=b+k.height*p,{...c,tubeColors:o[m],frame:rt(k.result.tubeMap,{scaleX:e.scaleX,translateX:e.translateX,scaleY:p,translateY:b-T*p,usableHeight:1/0}),titleTop:g,top:b,bottom:s}})},tubeMapPanelAt(t){let o=this.tubeMapPanelViews?.findIndex(r=>r.titleTop<=t&&t<=r.bottom)??-1;return o<0?null:o}})).views(e=>({paintHover(t,o){let r=e.tubeMapPicture,n=e.tubeMapFrame,a=e.hoverLayerNode;if(r&&n){let{ctx:i,canvas:p}=t,s=Ke(e.paneWidth,e.canvasHeight);i.setTransform(1,0,0,1,0,0),i.clearRect(0,0,p.width,p.height),i.setTransform(s,0,0,s,0,0);let c=e.tubeMapPanelViews;c?$r(i,c,e.tubeMapPanelHover,{width:e.paneWidth,lit:a!==null}):Cr(i,r,{...n,width:e.paneWidth,highlightNode:a}),Gr(i,e.tubeMapConnectors,e.connectorZoneBottom,a),i.setTransform(1,0,0,1,0,0)}else t.uploadGeometry(o),t.setNodeHighlights(a===null?new Map:new Map([[a,Gt]])),t.setEdgeHighlight(e.hoveredEdge,Gt),t.updateTransform(e.paintTransform),t.renderHighlights()}})).views(e=>{let t=(n,a)=>JSON.stringify(n)===JSON.stringify(a),o=bt(()=>Ya(e.layoutResult?.tubeMapPanels!==void 0?void 0:e.tubeMapPicture,e.tubeMapFrame,e.paneWidth),{equals:t}),r=bt(()=>{let n=e.layoutResult,i=n?.tubeMapPanels!==void 0?[]:n?.tubeMap?.layout.reads??[],p=e.drawnGraph?.paths??[],s=e.tubeMapColoring,c=e.tubeColorKind;return{bundled:p.some(m=>m.members),values:c==="value"&&s?[...[...s.palette].map(([m,k])=>({value:m,color:k})),...s.unvalued?[{value:`${s.field}: none`,color:Dr}]:[]]:void 0,roles:c==="role"||c==="tinted",haplotypeTube:c==="tinted"?jr[0]:Fr,logWidths:n?.tubeMap!==void 0&&!n.referenceAxis,foldBp:e.tubeMapDeviations.length>0?e.tubeMapFold:void 0,forwardReads:i.some(m=>!m.is_reverse),reverseReads:i.some(m=>m.is_reverse)}},{equals:t});return{get tubeMapKeys(){return{...r.get(),...o.get()}}}}).views(e=>({tubeMapUnder(t){let o=e.tubeMapPanelViews;if(o){let i=e.tubeMapPanelAt(t),p=i===null?void 0:o[i];return p&&{drawing:p.panel.result.tubeMap,...p}}let r=e.layoutResult?.tubeMap,n=e.tubeMapPicture,a=e.tubeMapFrame;return r&&n&&a?{drawing:r,picture:n,frame:a}:void 0},tubeMapNodeAt(t,o){let r=this.tubeMapUnder(o);return(r?Dt(r.drawing,r.frame,t,o):null)??Tr(e.tubeMapConnectors,e.connectorZoneBottom,t,o)??null},tubeAt(t,o){let r=this.tubeMapUnder(o);if(!r)return null;let{picture:n,frame:a}=r,i=Nr(n,a,t,o),p=i?.readId??Er(n,a,t,o);return p===void 0?null:{track:p,mismatch:i}},get hoveredTubeText(){let t=e.hoveredTube,o=e.layoutResult?.tubeMap?.layout,r=t&&o?.reads.find(i=>i.id===t.track);if(t&&r){let i=r.mapping_quality;return{label:r.name??"read",readout:[`MAPQ ${i??"unknown"}`,`${r.is_reverse?"reverse":"forward"} strand`,...t.mismatch?[Ja(t.mismatch)]:[]].join(", ")}}let n=t?e.hoverGraph?.paths?.[t.track]:void 0,a=n?.members;return a?{label:`${a.length} haplotypes`,readout:`one route: ${$a(a.map(i=>e.walkLabel(i)))}`}:n?{label:e.walkLabel(n.name),readout:"haplotype"}:void 0}}));var jn=Fn.actions(()=>({writeGrammar(e){}})).actions(e=>({keepDrawingInView(){let t=e.layoutBounds,o=e.viewBox;if(!t||e.viewportOwner==="fit"||!e.paneMeasured||o.width<=0||o.height<=0)return;let r=En(t,e,o);e.viewportOwner!=="host"&&(e.translateX=r.translateX),e.translateY=r.translateY}})).actions(e=>{let t;return{setColorScheme(o){(e.statedColorDomain||e.chosenColorScheme==="reference-position")&&(t=e.statedColorDomain),e.writeGrammar({color:tn(o,t)})}}}).actions(e=>({setError(t){e.error=t,e.isLoading=!1,e.statusMessage=""},finishLoading(){e.isLoading=!1,e.statusMessage=""},setStatusMessage(t){e.statusMessage=t},setFetchMs(t){e.lastFetchMs=t},setLayoutMs(t){e.lastLayoutMs=t},setGeometryMetrics(t,o,r){e.lastGeometryMs=t,e.lastGeometryStrokeCount=o.nodeStrokes.length,e.builtViewport={...r,viewportDirty:e.viewportDirty},e.drawnBatch=o},markPainted(){e.paintedViewport=e.builtViewport},setLayoutQuality(t){e.layoutQuality=t},setLayoutEngine(t){e.layoutEngine=t},setLinearLayout(t){e.linearLayout=t},setLayoutMode(t){e.writeGrammar({layoutMode:t})},setHover(t){e.writeGrammar({hover:t}),e.hoverLightsEverything||(e.hoveredEdge=null)},setReferencePath(t){e.referencePath=t;let o=e.graph;if(o?.anchoredBy==="paths"){let r=De(o,t);Be.inherit(o,r),e.graph=r}},setLayer(t,o){e.writeGrammar({layers:en(e.grammar.layers,t,o)})},setShowPerf(t){e.showPerf=t},setBubbleSpread(t){e.bubbleSpread=t},setMaxGraphNodes(t){e.maxGraphNodes=t},setNodeWidth(t){e.writeGrammar({size:on(t,e.contigThickness)})},setTubeMapFold(t){e.tubeMapFold=t},setTubeMapRoutes(t){e.tubeMapRoutes=t},setTubeMapColorBy(t){e.tubeMapColorBy=t},setGeneTrackId(t){e.geneTrackId=t},setRepeatTrackId(t){e.repeatTrackId=t},setRepeatKey(t){e.repeatKey=t},setWalkLayers(t){e.walkLayers=t},liftWalks(t){let o=new Map(e.walkLayers.map(r=>[r.walk,r]));e.walkLayers=t.map(r=>o.get(r)??{walk:r})},liftAmongChoices(t){let o=new Set(e.walkChoices.map(r=>r.name));this.liftWalks([...t,...e.walkLayers.map(r=>r.walk).filter(r=>!o.has(r))])},setFacet(t){let o=e.facetSetting;t===""?o.field!==""&&e.writeGrammar({facet:{}}):e.writeGrammar({facet:{...o,field:t,domain:t===o.field?o.domain:[]}})},toggleWalk(t){let o=e.walkLayers;e.walkLayers=o.some(r=>r.walk===t)?o.filter(r=>r.walk!==t):[...o,{walk:t}]},setWalkColor(t,o){e.walkLayers=e.walkLayers.map(r=>r.walk===t?{...r,color:{...r.color,...o}}:r)},setWalkRowSamples(t){e.writeGrammar({rows:t?{kept:t}:{}})},setWalkRowGroupBy(t){(t||e.walkRowGroupBy)&&e.writeGrammar({facet:t??{}})},pairWithLinearView(t){let o=e.connectedViewId;o!==void 0&&$e([...R(e).views]).some(n=>n.id===o)||(e.connectedViewId=t)},setHoveredNode(t,o){e.hoveredNode=t,e.hoveredAt=t===null?null:o??null},setHoveredPanel(t){e.hoveredPanel=t},setHoveredTube(t){let o=e.hoveredTube;(t?.track!==o?.track||t?.mismatch!==o?.mismatch)&&(e.hoveredTube=t)},setHoveredRowWalks(t){t.join(`
|
|
2
2
|
`)!==e.hoveredRowWalks.join(`
|
|
3
3
|
`)&&(e.hoveredRowWalks=t)},setHoveredWalkRow(t){e.hoveredWalkRow=t},setHoveredBubble(t){e.hoveredBubble=t},setPointerInPane(t){e.pointerInPane=t},setWalkStrip(t){this.setLayer("walkStrip",t),e.stripHover=null},setStripHover(t){e.stripHover=t;let o=e.walkStripRows,r=e.walkStripFrame,n=t&&o?[o.reference,...o.rows].find(i=>i.name===t.row):void 0,a=n&&r&&e.graph?Jo(e.graph,n,t.offset,r.scaleX):void 0;e.hoveredNode=a??null},setLegendSize(t){e.legendSize=t},setHoveredEdge(t){e.hoveredEdge=e.hoverLightsEverything?t:null},setSelectedNode(t){e.selectedNode=t},setDraggingNode(t){e.draggingNode=t},setPanning(t){e.isPanning=t},stopDragging(){e.draggingNode=null,e.isPanning=!1},clearHover(){e.hoveredNode=null,e.hoveredAt=null,e.hoveredTube=null,e.hoveredPanel=null,e.hoveredWalkRow=null,e.hoveredBubble=null,e.hoveredEdge=null},clearInteractionState(){this.clearHover(),e.hoveredRowWalks=[],e.stripHover=null,e.selectedNode=null,e.draggingNode=null,e.isPanning=!1},showNodeDetails(t){let o=e.nodeById?.get(t);if(o){let r=R(e),n=e.graphRegion,a=n?e.nodeSpan(t):void 0;yo(r)&&r.showWidget(r.addWidget("BaseFeatureWidget","baseFeature",{featureData:{id:o.id,name:o.name,length:o.length,depth:o.depth,rank:o.stable?.rank,stableName:o.stable?.refName,contributingAssembly:xt(o)?.sample,contributingHaplotype:xt(o)?.haplotype,sampleCount:o.samples?.length,samples:o.samples,...n&&a?{refName:n.refName,assemblyName:n.assemblyName,start:a.start,end:a.end}:{}}}))}},setTransform(t,o,r){let{host:n}=e;e.viewportOwner==="host"&&n?n.horizontalScroll(e.translateX-o):(e.viewportOwner="user",e.scale=nr(t),e.translateX=o),e.translateY=r,e.keepDrawingInView()},zoom(t,o,r){let{host:n}=e;if(e.viewportOwner==="host"&&n){n.zoomTo(n.bpPerPx/t,o);return}e.viewportOwner="user";let a=sr(e,t,o,r,e.pixelRows);e.scale=a.scale,e.translateX=a.translateX,e.translateY=a.translateY,e.keepDrawingInView()},setViewportDirty(){e.viewportRebuildPending=!1,e.viewportDirty++},setPositionsDirty(){e.positionsVersion++},setMorphFrame(t){e.morphEntering=t,e.positionsVersion++},zoomToFit(){if(e.viewportOwner==="host"){let o=e.layoutBounds,{usableHeight:r}=e;o&&r>0&&(e.translateY=ar(o,r,e.scaleY,e.fitPads.top));return}let t=e.fittedTransform;t&&(e.scale=t.scale,e.translateX=t.translateX,e.translateY=t.translateY)},clearPerfMetrics(){e.lastFetchMs=void 0,e.lastLayoutMs=void 0,e.lastGeometryMs=void 0,e.lastGeometryStrokeCount=void 0,e.builtViewport=void 0}})).actions(e=>({hostTransform(t,o){let r=e.viewportOwner!=="host";r&&(e.viewportOwner="host"),e.scale=t,e.translateX=o,r&&e.zoomToFit()},followNewLayout(t){let o=e.layoutBounds;if(e.viewportOwner!=="user"||!o||t===e.layoutResult)return;let r=t?.referenceAxis===!0&&e.xIsReferenceBp;t===void 0||r&&(!e.paneMeasured||Nn(o,e,e.viewBox))?e.keepDrawingInView():(e.viewportOwner="fit",e.zoomToFit())},refitView(){e.viewportOwner==="user"&&(e.viewportOwner="fit"),e.zoomToFit()},releaseHost(){e.viewportOwner==="host"&&(e.xIsReferenceBp?e.viewportOwner="user":(e.viewportOwner="fit",e.zoomToFit()))}})).actions(e=>{function t(){clearTimeout(e.viewportDirtyTimer),e.viewportRebuildPending=!0,e.viewportDirtyTimer=setTimeout(()=>{H(e)&&e.setViewportDirty()},hr)}function o(){cancelAnimationFrame(e.positionsDirtyFrame),e.positionsDirtyFrame=requestAnimationFrame(()=>{H(e)&&e.setPositionsDirty()})}let r;function n(){r&&(cancelAnimationFrame(r.frame),r=void 0)}function a(){let i=r;n(),i?.finish()}return{morphFrom(i,p){let s=e.layoutResult;if(i===s)return;let c=r&&i?structuredClone(i.nodePositions):i?.nodePositions;a();let m=e.graph;if(!i||!c||!s||!m||!Mr(i,s,m.nodes.length,!!e.facetGrid)||!kr())return;e.viewportOwner==="fit"&&e.zoomToFit();let k=s.deletionRoutes??{},T=structuredClone({nodes:s.nodePositions,routes:k}),g=fr(c,p,s.nodePositions,e.screenTransform,m.edges),b={nodes:g,routes:wr(k,m.edges,g,T.nodes)},v=new Set(Object.keys(s.nodePositions).filter(h=>!c[h])),I=h=>{Ct(s.nodePositions,b.nodes,T.nodes,h),Ct(k,b.routes,T.routes,h),H(e)&&e.setMorphFrame(h<1&&v.size>0?{layout:s,ids:v,alpha:h}:void 0)};I(0),r=Sr(I,()=>H(e)&&e.layoutResult===s,()=>{r=void 0})},finishMorph:a,moveNode(i,p,s){a();let c=e.layoutResult?.nodePositions;if(c?.[i]){for(let m of c[i])m.x+=p,m.y+=s;o()}},scheduleViewportDirty:t}});var ye=JBrowseExports["@jbrowse/core/util/unzip"],Ua=e=>ye!=null&&e in Object(ye)?ye[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/util/unzip' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),On=Ua("unzip"),Oc=ye&&ye.__esModule?ye.default:ye;async function Wt(e){let t=e[0]===31&&e[1]===139;return new TextDecoder().decode(t?await On(e):e)}function Dn(e,t,o){let r=e.walks,n=r.offsets[1]??0,a={nodes:e.nodes,links:e.links,walks:{names:r.names.slice(0,1),starts:r.starts.subarray(0,1),ends:r.ends.subarray(0,1),offsets:Int32Array.of(0,n),steps:r.steps.subarray(0,n),reversed:r.reversed.subarray(0,n)}},i=Ye(a,t,{referencePath:o}),p=new Int32Array(e.nodes.names.length);for(let c of r.steps)p[c]++;i.nodes.forEach((c,m)=>{c.depth=Math.max(p[m],1)});let s=r.names.slice(1).flatMap((c,m)=>r.offsets[m+2]>r.offsets[m+1]?[{...yt(r,m+1),nodeIds:[]}]:[]);return i.paths=[...i.paths??[],...s],i}var Xa=jn.views(e=>({get engineSettings(){return rr({engine:e.layoutEngine,quality:e.layoutQuality,linearLayout:e.linearLayout,bubbleSpread:e.bubbleSpread,showDeletionEdges:e.showDeletionEdges})}})),Wn=Xa.actions(e=>{let t,o,r,n=new WeakMap;function a(u,d){let{rpcManager:l}=R(e);return l.call(ae(e),"GraphComputeLayout",{...u,signal:t?.signal,statusCallback:S=>{d===r&&e.setStatusMessage(bo(S)??"")}})}function*i(u){let d=performance.now(),l=pe.has(e.chosenLayoutMode),S=e.graphRegion,w=l&&S?Cn(u,S):u,f=l&&e.tubeMapFold>0&&!w.reads?Pt(w,e.tubeMapFold):void 0,x=f?.graph??w,G=Y=>l&&e.tubeMapRoutes!=="each"?Ot(Y,e.tubeMapColoring?.valueOf,e.tubeMapRoutes==="bundled"):Y,V=e.walkCut?.walkRowRuns,N=e.chosenLayoutMode==="walkrows"&&V?Wo(u,Io(V),e.graphRegion):F(e.chosenLayoutMode).run(G(x),e.graphRegion,e.host?e.layoutResult?.sampleRows:void 0);if(N){let Y=X=>f&&X.tubeMap?{...X,tubeMap:{...X.tubeMap,coarse:f}}:X,Fe=Y(N),ke=e.tubeMapPanelSplit;return{result:l&&ke?Yr(Fe,Ue(x,ke).map(X=>{let ho=F(e.chosenLayoutMode).run(G(Jr(x,X.paths)),e.graphRegion);return{...X,result:ho&&Y(ho)}})):Fe,duration:performance.now()-d,mode:e.chosenLayoutMode}}let W=e.engineSettings,re=Be.ready(u,W);if(re)return{result:re,duration:performance.now()-d,mode:"force"};let ne={},K=Be.layout(u,W,Y=>a(Y,ne));return r=n.get(K)??ne,n.set(K,r),{...yield K,mode:"force"}}let p=0,s=!1,c,m,k=new Map;function T(){e.graph!==m&&(m=void 0,e.layoutResult=void 0,e.drawnLayoutMode=void 0)}function*g(u){let d=++p;s=!0,r=void 0;let l=()=>e.graph===u&&d===p,S=t?.signal,w;try{if(e.modeDrawsNodes&&u.nodes.length>e.maxGraphNodes)throw new Error(`Graph too large to draw: ${u.nodes.length.toLocaleString()} nodes (limit ${e.maxGraphNodes.toLocaleString()}). Pick Layout \u2192 Walk rows, zoom in to a smaller region, or raise the node limit in Graph settings.`);w=yield*i(u)}catch(x){if(!l()||S?.aborted)return!1;throw c=x,T(),x}finally{d===p&&(s=!1,B())}let f=l();if(f){c!==void 0&&e.error===c&&(e.error=void 0),c=void 0;let x=e.layoutResult,G=e.screenTransform;m=u,e.layoutResult=w.result,e.drawnLayoutMode=w.mode,e.setLayoutMs(w.duration),e.followNewLayout(x),e.morphFrom(x,G)}return f}function b(u,d){let l=u.anchorPaths;return u.anchoredBy==="paths"&&l?(mt(u,e.assemblySpellings(d.assemblyName))??Co(l,d.assemblyName))?.name:void 0}function v(u,d,l,S=!1){let w=e.referencePath||l?.assemblyName,f=typeof u!="string"&&u.walkRowRuns&&!S?Dn(u,d,w):Ye(u,d,{referencePath:w});return f.anchoredBy==="tags"&&!f.referencePath&&f.paths?.length&&l&&(f.referencePath=mt(f,e.assemblySpellings(l.assemblyName))?.name),f}function I(u){e.graph=u?.graph,e.walkCut=u?.walkCut,e.graphRegion=u?.region,e.loadedReferencePath=u?.loadedReferencePath,e.foldedBelowBp=u?.foldedBelowBp,e.readsShown=u?.readsShown,e.indexBubbles=void 0,e.geneTrackFeatures=void 0,e.walkGeneFeatures=void 0,k.clear(),e.repeatArrays=void 0,e.clearInteractionState()}function*h(u,d,l,S=!1,w,f=0,x){let G=t?.signal,V=typeof u!="string"&&u.walkRowRuns?u:void 0,N=v(u,d,l),W=l?b(N,l):void 0,re=!e.referencePath&&W!==void 0&&W!==N.referencePath?De(N,W):N,ne=f>0&&!w?Ft(re,f):re,K=l&&ne!==re?Bn(ne,l,f):ne,ut;if(w){e.setStatusMessage("Reading alignments");try{let{records:U,total:X}=yield w(K);K.reads=U,ut={shown:U.length,total:X}}catch(U){if(G?.aborted)return;console.warn("[GraphGenomeView] no reads for this graph",U)}if(G?.aborted)return}let Y=S?e.selectedNode:null;I({graph:K,walkCut:V,region:l,loadedReferencePath:W,foldedBelowBp:ne===re?void 0:f,readsShown:ut});let Fe=new Set(K.nodes.map(U=>U.name));e.openBubbles=e.openBubbles.filter(U=>At(U).some(X=>Fe.has(X))),Y!==null&&K.nodes.some(U=>U.id===Y)&&(e.selectedNode=Y),e.setStatusMessage("Computing layout");let ke=x?.();ke?.catch(()=>{}),yield*g(K),ke&&!G?.aborted&&(e.setStatusMessage("Reading annotations"),yield ke)}let y=0,P;function J(){let u=++y;return t?.abort(),t=new AbortController,P=u,e.loadCanceled=!1,{isLive:()=>u===y,signal:t.signal}}function B(){P===void 0&&!s&&e.finishLoading()}function He(){P=void 0,B()}function*ao(u,d){let l=J();e.isLoading=!0,e.error=void 0;try{yield*d(l)}catch(S){l.isLive()&&(console.error(`[GraphGenomeView.${u}]`,S),e.error=S)}finally{l.isLive()&&He()}}function*io(u,d,l,S){try{return yield R(e).rpcManager.call(ae(e),"CoreGetFeatures",{adapterConfig:u,regions:[d],signal:S})}catch(w){console.warn(`[GraphGenomeView] no ${l} for this graph`,w);return}}function*Ma(u,d,l,S,w=0){let f=lr(u);if(u.type!=="RgfaTabixAdapter"||f===void 0)return;let x=yield*io({type:"MinigraphBubbleAdapter",uri:`${f}.bubbles.bed.gz`,baseUri:u.baseUri,assemblyNameToPanSN:u.assemblyNameToPanSN},d,"bubble index",S);x&&l()&&(e.indexBubbles=x.flatMap(G=>{let V=G.get("start"),N=G.get("end"),W=G.get("longestAlleleLength");return Math.max(N-V,W)<w?[]:[{refName:d.refName,start:V,end:N,segmentCount:G.get("segmentCount"),pathCount:G.get("pathCount")??0,inversion:G.get("inversion"),shortestAlleleLength:G.get("shortestAlleleLength"),longestAlleleLength:W,segments:G.get("segments"),shortestAllele:void 0,longestAllele:void 0}]}))}function*so(u,d,l,S){let w=u?e.sessionTrack(u):void 0;if(w)return yield*io(Q(w,"adapter"),d,l,S)}let po={genes:{trackId:()=>e.geneTrack?.trackId,set:u=>{e.geneTrackFeatures=u}},repeats:{trackId:()=>e.repeatTrack?.trackId,set:u=>{e.repeatArrays=u&&Zr(u)}}};function*co(u,d,l,S){let{trackId:w,set:f}=po[u],x=w(),G=yield*so(x,d,u,S);G&&l()&&w()===x&&f(G)}function uo(u,d,l){return["genes","repeats"].map(S=>D(co)(S,u,d,l))}function*mo(u){let d=e.graphRegion;d&&(po[u].set(void 0),yield*co(u,d,()=>e.graphRegion===d))}function*pt(u,d,l){yield*ao("loadWholeGFA",function*({isLive:S,signal:w}){let f=typeof d=="string"?d:yield d(w);S()&&(yield*h(f,u,l,!1,void 0,0,l&&(()=>Promise.all(uo(l,S,w)))))})}function ct(){t?.abort(),t=void 0,P=void 0,y++,p++,s=!1,r=void 0}function ka(){let u=e.walkCut,d=e.graph;if(!u||!d||e.chosenLayoutMode==="walkrows")return d;let l=v(u,d.name,e.graphRegion,!0);return e.graph=l,e.walkCut=void 0,l}function lo(){ct(),e.finishMorph(),e.morphEntering=void 0,e.drawnBatch=Ce,e.paintedViewport=void 0,I(),m=void 0,c=void 0,e.layoutResult=void 0,e.drawnLayoutMode=void 0,e.walkRowSampleTable=void 0,o=void 0,e.openBubbles=[],e.error=void 0,e.isLoading=!1,e.loadCanceled=!1,e.statusMessage="",e.clearPerfMetrics(),e.viewportOwner==="user"&&(e.viewportOwner="fit")}return{clearGraph(){lo()},cancelLoad(){e.canCancelLoad&&(lo(),e.loadCanceled=!0)},stopLoad(){ct(),T(),e.layoutResult||I(),e.isLoading=!1,e.statusMessage="",e.loadCanceled=!0},beforeDestroy(){ct()},loadGFA:D(function*(u,d="Imported GFA"){yield*pt(d,u)}),loadGFAFile:D(function*(u,d){e.setStatusMessage("Reading file"),yield*pt(d,()=>u.arrayBuffer().then(l=>Wt(new Uint8Array(l))))}),loadGFAFromLocation:D(function*(u,d){e.setStatusMessage("Fetching GFA"),yield*pt(ue(u)||"GFA",l=>gt(u,Ge(e).pluginManager).readFile({signal:l}).then(Wt),d)}),cutSubgraph:D(function*(u,d,l={},S=0){yield*ao("cutSubgraph",function*({isLive:w,signal:f}){e.setStatusMessage("Fetching subgraph");let x=performance.now(),G=yield R(e).rpcManager.call(ae(e),"GetSubgraph",{adapterConfig:u,region:d,opts:l,signal:f});if(w()){if(e.setFetchMs(performance.now()-x),!G)throw new Error("Adapter returned no GFA \u2014 region may be outside indexed data or the adapter does not implement getSubgraph");yield*h(G,qo(d),d,!0,wn(u)?V=>R(e).rpcManager.call(ae(e),"GetGraphReads",{adapterConfig:u,nodeNames:V.nodes.map(N=>N.name),signal:f}):void 0,S,()=>Promise.all([l.tier==="coarse"?void 0:D(Ma)(u,d,w,f,e.foldedBelowBp),...uo(d,w,f)]))}})}),reloadRepeats:D(function*(){yield*mo("repeats")}),reloadGenes:D(function*(){yield*mo("genes")}),loadWalkRowSampleTable:D(function*(){let u=e.walkRowSamplesTsv,d=u?JSON.stringify(u):void 0;if(d!==o&&(o=d,e.walkRowSampleTable=void 0,!!u))try{let l=yield gt(u,Ge(e).pluginManager).readFile("utf8");H(e)&&d===o&&(e.walkRowSampleTable=Hr(l))}catch(l){H(e)&&d===o&&(o=void 0,R(e).notify(`Walk rows cannot be grouped: the samples table did not load (${String(l)})`,"warning"))}}),loadWalkGenes:D(function*(){let u=e.walkGeneReads?.reads??[],d=JSON.stringify(u),l=e.graph,S=new Map;yield Promise.all(u.map(({row:w,trackId:f,region:x})=>D(function*(){let G=`${f} ${x.refName}:${x.start}-${x.end}`,V=k.get(G);if(!V){let N=yield*so(f,x,"haplotype genes");if(!N)return;V=Qr(N).map(W=>({...W,refName:x.refName})),k.set(G,V)}S.set(w,V)})())),H(e)&&e.graph===l&&JSON.stringify(e.walkGeneReads?.reads??[])===d&&(e.walkGeneFeatures=u.length?S:void 0)}),toggleBubble(u){let d=e.openBubbles,l=d.findIndex(x=>vt(x,u));if(l>=0){e.openBubbles=d.slice(0,l);return}let S=new Set(At(u));if(!e.graph?.nodes.some(x=>S.has(x.name))){R(e).notify("None of the segments of this bubble are in the cut; widen the graph context to open it","info");return}let w=e.openBubbleInsides,f=w.length-1;for(;f>=0&&!w[f].some(x=>vt(x,u));)f--;e.openBubbles=[...d.slice(0,f+1),u]},closeBubbles(){e.openBubbles.length>0&&(e.openBubbles=[])},recomputeLayout:D(function*(){let u=ka();if(u){e.isLoading=!0,e.setStatusMessage("Computing layout");try{yield*g(u)}catch(d){console.error("[GraphGenomeView.recomputeLayout]",d),e.error=d}}})}});function Ka(e){return $(e)&&typeof e.get=="function"}function qa(e){let t=Ka(e)?e.get("name"):$(e)?e.name:void 0;return typeof t=="string"?t:void 0}function _n(e){let t;if($(e)&&$(e.hoverPosition)){let{refName:o,coord:r,coord0:n,assemblyName:a}=e.hoverPosition;typeof o=="string"&&typeof r=="number"&&(t={refName:o,coord:typeof n=="number"?n:r-1,assemblyName:typeof a=="string"?a:void 0,featureName:qa(e.hoverFeature)})}return t}function zn(e,t){return(e.assemblyName===void 0||e.assemblyName===t.assemblyName)&&e.refName===t.refName&&e.coord>=t.start&&e.coord<t.end}function $n({hover:e,nodes:t}){let o,r;for(let n of t)n.name===e.featureName?o=n.id:r===void 0&&j(n)&&e.coord>=n.stable.start&&e.coord<n.stable.start+n.length&&(r=n.id);return o??r??null}var Za=/^(.+) HP(\d+)$/,Qa=/^(.+)\.(\d+)$/;function ei(e){let t=Za.exec(e),o=Qa.exec(e);return[...t?[{sample:t[1],haplotype:String(Number(t[2])+1)}]:[],...o?[{sample:o[1],haplotype:o[2]}]:[],{sample:e,haplotype:void 0}]}function ti(e){return ie(e).name.split("#")[1]}function Jn(e,t){let o=t.map(r=>r.name);for(let{sample:r,haplotype:n}of ei(e)){let a=o.filter(i=>ko(ie(i).name)===r&&(n===void 0||ti(i)===n));if(a.length>0)return a}return[]}var Yn=Wn.actions(e=>({startRenderingBackend(t){if(!e.autorunsInstalled){L(e,ve(()=>{e.fittedTransform&&se(()=>e.viewportOwner==="fit")&&e.zoomToFit()})),L(e,C(()=>`${e.viewBox.width} ${e.viewBox.height}`,()=>{e.keepDrawingInView()})),L(e,C(()=>{let r=e.facetGrid;return r?`${e.facetSetting.field} ${e.facetPanels?.length} ${r.columns}`:""},()=>{e.refitView()})),L(e,C(()=>({graph:e.graph,reads:JSON.stringify(e.walkGeneReads?.reads??[])}),()=>{e.loadWalkGenes()},{fireImmediately:!0,equals:(r,n)=>r.graph===n.graph&&r.reads===n.reads})),L(e,C(()=>e.hasGraph&&(e.chosenLayoutMode==="walkrows"||pe.has(e.chosenLayoutMode))?JSON.stringify(e.walkRowSamplesTsv??null):void 0,r=>{r!==void 0&&e.loadWalkRowSampleTable()},{fireImmediately:!0})),L(e,C(()=>`${e.fitPadTop} ${e.layoutBounds?.h} ${e.usableHeight}`,()=>{e.viewportOwner==="host"&&e.zoomToFit()})),L(e,ve(()=>{let r=_n(R(e).hovered),n=e.hoverLightsEverything;se(()=>{let a=e.graphRegion,i=e.graph,p=r&&a&&zn(r,a)?r:void 0,s=p?.featureName&&i?.paths?Jn(p.featureName,i.paths):[];a&&i&&!e.pointerInPane&&e.setHoveredNode(p&&n&&s.length===0?$n({hover:p,nodes:i.nodes}):null),e.setHoveredRowWalks(s)})})),L(e,C(()=>`${e.scale}-${e.translateX}-${e.translateY}`,()=>{e.clearHover()},{name:"GraphClearHoverOnViewportChange"}));let o=!0;L(e,ve(()=>{let{scale:r}=e,n=yr(e);if(o){o=!1;return}let a=se(()=>e.builtViewport);a?.scale===r&&ir(a.bounds,n)||e.scheduleViewportDirty()})),L(e,ve(()=>{let r=e.currentRenderingBackend;r&&(e.applySelection(r),e.renderNow())}))}e.attachRenderingBackend(t,()=>({upload:o=>{if(Lt(Ke()),o.resize(e.paneWidth,e.canvasHeight),e.layoutResult?.tubeMap||e.facetPanels)return Lt(e.viewportDirty),o.uploadGeometry(Ce),e.setGeometryMetrics(0,Ce,{scale:se(()=>e.scale),bounds:se(()=>e.viewportToBuild())}),!0;let r=performance.now(),n=e.buildDrawing(e.drawnHighlight,e.effectiveDrawPaths);return n?(o.uploadGeometry(n.batch),e.setGeometryMetrics(performance.now()-r,n.batch,{scale:se(()=>e.scale),bounds:n.viewportBounds}),!0):!1},render:o=>e.nodePositions?(e.paint(o),e.markPainted(),!0):!1,releaseTargets:o=>{o.releaseOffscreenTargets()}}))}})).actions(e=>({relayoutFrom(t){return e.recomputeLayout()}})).actions(e=>({relayout(t){return e.handledLayoutMode=e.chosenLayoutMode,e.relayoutFrom(t)}})).actions(e=>({switchLayout(t){let o=e.chosenLayoutMode;return e.setLayoutMode(t),e.relayout(o)},retryLoad(){},afterAttach(){e.isDefaultViewport||(e.viewportOwner="user");for(let[t,o]of[[()=>e.geneTrack?.trackId,()=>e.reloadGenes()],[()=>e.repeatTrack?.trackId,()=>e.reloadRepeats()]])L(e,C(()=>({track:t(),region:e.graphRegion}),(r,n)=>{r.region&&r.region===n.region&&o()},{equals:(r,n)=>r.track===n.track&&r.region===n.region}));L(e,C(()=>e.chosenLayoutMode,(t,o)=>{t!==e.handledLayoutMode&&e.relayout(o)})),L(e,C(()=>({mode:e.chosenLayoutMode,engine:JSON.stringify(e.engineSettings),maxNodes:e.maxGraphNodes}),(t,o)=>{e.graph&&t.mode===o.mode&&(t.engine!==o.engine&&e.usesLayoutEngine||t.maxNodes!==o.maxNodes&&e.modeDrawsNodes)&&e.recomputeLayout()},{equals:(t,o)=>t.mode===o.mode&&t.engine===o.engine&&t.maxNodes===o.maxNodes})),L(e,C(()=>pe.has(e.chosenLayoutMode)?JSON.stringify({fold:e.tubeMapFold,facet:e.facetSetting,groupBy:e.walkRowGroupBy,table:e.walkRowGroupBy&&e.walkRowSampleTable?.length,routes:e.tubeMapRoutes,bundledBy:e.tubeMapRoutes!=="each"?e.tubeMapColoring?.field:void 0}):void 0,(t,o)=>{t!==void 0&&o!==void 0&&e.graph&&e.recomputeLayout()}))}})).actions(e=>({switchForceEngine(t){return e.setLayoutEngine(t),e.chosenLayoutMode==="force"?void 0:e.switchLayout("force")}}));var oi="FeatureTrack";function Un({session:e,assemblyName:t,first:o}){let r=Pe(e,t),n=[];for(let a of e.tracks){let i=Q(a,"trackId");Q(a,"type")===oi&&typeof i=="string"&&i!==o&&Je(e,a).includes(r)&&n.push(i)}return o?[o,...n]:n}var Xn=_(A("path",{d:"M9.19 6.35c-2.04 2.29-3.44 5.58-3.57 5.89L2 10.69l4.05-4.05c.47-.47 1.15-.68 1.81-.55zM11.17 17s3.74-1.55 5.89-3.7c5.4-5.4 4.5-9.62 4.21-10.57-.95-.3-5.17-1.19-10.57 4.21C8.55 9.09 7 12.83 7 12.83zm6.48-2.19c-2.29 2.04-5.58 3.44-5.89 3.57L13.31 22l4.05-4.05c.47-.47.68-1.15.55-1.81zM9 18c0 .83-.34 1.58-.88 2.12C6.94 21.3 2 22 2 22s.7-4.94 1.88-6.12C4.42 15.34 5.17 15 6 15c1.66 0 3 1.34 3 3m4-9c0-1.1.9-2 2-2s2 .9 2 2-.9 2-2 2-2-.9-2-2"}),"RocketLaunch");function nt(e,t){Vo(e,t);let o=e.find(r=>"subMenu"in r&&r.label===No);o&&!o.icon&&(o.icon=Xn)}var ri="SyntenyTrack",ni="Synteny adapters";function ai(e){if(Q(e,"type")===ri)return!0;let t=e.adapter?.type;if(typeof t!="string"||!To(e))return!1;let{pluginManager:o}=Ge(e);return!!o?.hasAdapterType(t)&&o.getAdapterType(t).adapterMetadata?.category===ni}function Kn(e,t){let o=new Set(t),r=[];for(let n of e.tracks){let a=Q(n,"trackId");if(ai(n)&&typeof a=="string"){let i=Je(e,n).filter(p=>o.has(p)).length;i>=2&&r.push({trackId:a,name:Eo(n,e),coverage:i})}}return r.sort((n,a)=>a.coverage-n.coverage)}function qn(e,t,o="image/svg+xml"){let r=URL.createObjectURL(new Blob([e],{type:o})),n=document.createElement("a");n.href=r,n.download=t,n.click(),setTimeout(()=>{URL.revokeObjectURL(r)},0)}var Zn=[["fmmm","FMMM"],["stress","stress"]],_t=e=>e.label.replace(/ layout$/,"");function q(e,t,o){return e.map(({value:r,label:n,disabled:a})=>({type:"radio",label:n,disabled:a,checked:r===t,onClick:()=>{o(r)}}))}var Qn=Yn.actions(e=>({showInLinearView(t){let o=R(e),r=t.assembly===e.graphRegion?.assemblyName,n=Zo({session:o,location:t.location,assembly:t.assembly,connectedViewId:e.pairedViewId,tracks:Un({session:o,assemblyName:t.assembly,first:r?e.sourceTrackId:void 0})});r&&e.pairWithLinearView(n)},highlightInLinearView(t){Qo({session:R(e),location:t.location,assembly:t.assembly,connectedViewId:e.pairedViewId})},showSyntenyView(t){er({session:R(e),contributors:e.launchableAssemblies,trackId:t,graphTrackId:e.sourceTrackId})}})).views(e=>({get syntenyLaunchTracks(){let t=e.launchableAssemblies.map(o=>o.sample);return t.length>=2?Kn(R(e),t):[]}})).views(e=>({walkRowSampleMenuItems(){let{disagreeing:t}=e.walkRowSampleChoices,o=e.walkRowSamples,r=n=>n.join(`
|
|
4
4
|
`)===o?.join(`
|
|
5
5
|
`);return[{type:"radio",label:"Every sample",checked:o===void 0,onClick:()=>{e.setWalkRowSamples(void 0)}},...t.length>0?[{type:"radio",label:"Where walk and call disagree",checked:r(t),onClick:()=>{e.setWalkRowSamples(t)}}]:[],{type:"radio",label:"Choose samples...",checked:o!==void 0&&!r(t),onClick:()=>{R(e).queueDialog(n=>[pr,{model:e,onClose:n}])}}]},walkRowGroupMenuItems(){let t=e.walkRowGroups?e.walkRowGroupBy?.field:void 0;return q([{value:void 0,label:"None"},...e.walkRowGroupFields.map(o=>({value:o,label:o}))],t,o=>{e.setWalkRowGroupBy(o===void 0?void 0:{field:o})})},tubeMapPanelMenuItems(){let{graph:t,walkRowSampleTable:o}=e,{field:r}=e.facetSetting,n=r===""?e.walkRowGroupBy?.field:void 0,a=i=>!!t&&Ue(t,i).length>1;return[...q(Or.map(i=>({value:i.field,label:i.label,disabled:i.field!==""&&!a({by:i.field})})),n?void 0:r,i=>{e.setFacet(i),i===""&&e.setWalkRowGroupBy(void 0)}),...q(e.walkRowGroupFields.map(i=>({value:i,label:`By ${i}`,disabled:!o||!a({by:"column",field:i,table:o})})),n,i=>{e.setFacet(""),e.setWalkRowGroupBy({field:i})})]},layoutOptionMenuItems({repeat:t=!0}={}){return[...pe.has(e.chosenLayoutMode)?[{label:"Fold variants",subMenu:q(mr.map(({bp:o,label:r})=>({value:o,label:r,disabled:o>0&&e.graph?.reads!==void 0})),e.graph?.reads?0:e.tubeMapFold,e.setTubeMapFold)},{label:"Panels",subMenu:this.tubeMapPanelMenuItems()},{label:"Routes",subMenu:q(gr,e.tubeMapRoutes,e.setTubeMapRoutes)},...e.walkRowGroupFields.length>0?[{label:"Tube color",subMenu:q(["",...e.walkRowGroupFields].map(o=>({value:o,label:o?`By ${o}`:"By role"})),e.tubeMapColorBy,e.setTubeMapColorBy)}]:[]]:[],...t&&e.chosenLayoutMode==="walkrows"&&e.repeatChoices.length>0?[{label:"Repeat",subMenu:q(e.repeatOptions,e.selectedRepeat?.key??"",e.setRepeatKey)}]:[],...e.chosenLayoutMode==="walkrows"&&e.walkRowBars?[{label:"Samples",subMenu:this.walkRowSampleMenuItems()}]:[],...e.chosenLayoutMode==="walkrows"&&e.walkRowBars&&e.walkRowGroupFields.length>0?[{label:"Group by...",subMenu:this.walkRowGroupMenuItems()}]:[]]},showMenuItems(){let t=(o,r)=>({type:"checkbox",label:o,checked:e.layerSet.has(r),onClick:()=>{e.setLayer(r,!e.layerSet.has(r))}});return[t("Show bubble halos","bubbles"),t("Show deletion edges","deletions"),{label:"Hover highlight",subMenu:q(Te.map(o=>({value:o,label:o[0].toUpperCase()+o.slice(1)})),e.chosenHover,e.setHover)},t("Show genes on the backbone","genes"),...e.referenceStripApplies?[t("Show reference strip","referenceStrip")]:[]]},exportMenuItems(){return[{label:"Export SVG",icon:Gn,disabled:e.figureUnavailable!==void 0,disabledHelpText:e.figureUnavailable,onClick:()=>{let t=e.figure();t&&qn(t,`${(e.graph?.name??"graph").replaceAll(/[^\w.-]+/g,"_")}.svg`)}},{label:"Copy figure spec",icon:xn,disabled:e.figureSpecUnavailable!==void 0,disabledHelpText:e.figureSpecUnavailable,onClick:()=>{let t=e.figureSpec(),o=R(e);navigator.clipboard.writeText(`${JSON.stringify(t,null,2)}
|
|
6
|
-
`).then(()=>{o.notify("Figure spec copied. Save it as spec.json and run: npx -p @jbrowse/bandage-core bandage-figure spec.json -o figure.svg","info")}).catch(r=>{o.notify(`Could not copy the figure spec: ${String(r)}`)})}}]},highlightMenuItems({picks:t=!0}={}){let o=t?e.walkChoices:[];if(e.walkChoices.length===0||!e.liftsWalks||!t&&e.walkLayers.length===0)return[];let r=a=>e.walkLayers.some(i=>i.walk===a),n=o.length>dr;return[{type:"subHeader",label:"Highlight"},...n?[{label:"Choose haplotypes...",onClick:()=>{R(e).queueDialog(a=>[cr,{model:e,onClose:a}])}}]:[],...(n?o.filter(a=>r(a.name)):o).map(a=>({type:"checkbox",label:a.label,checked:r(a.name),onClick:()=>{e.toggleWalk(a.name)}})),{label:"Clear highlights",disabled:e.walkLayers.length===0,onClick:()=>{e.setWalkLayers([])}},...e.drawnWalks.length>0?[{label:"Color highlighted...",onClick:()=>{R(e).queueDialog(a=>[ur,{model:e,onClose:a}])}}]:[],...e.walkLayers.length>1&&e.modeDrawsNodes?[{type:"subHeader",label:"Arrange"},...q(tr.map(({value:a,label:i})=>({value:a,label:a==="walk"?"A panel per haplotype":i})),e.facetSetting.field,e.setFacet)]:[]]},colorSchemeLabel(t){let o=Tt.find(r=>r.value===t)?.label??t;return t==="auto"?`${o} (${this.colorSchemeLabel(e.effectiveColorScheme)})`:o},graphMenuItems(){let t=this.layoutOptionMenuItems(),o=F(e.chosenLayoutMode),r=Zn.find(([n])=>n===e.layoutEngine)[1];return[{label:`Layout: ${_t(o)}${o.value==="force"?` (${r})`:""}`,icon:Rn,subMenu:[..._o.flatMap(n=>{let a={type:"radio",disabled:e.graph?!n.available(e.graph):!1,disabledHelpText:n.description};return n.value==="force"?Zn.map(([i,p])=>({...a,label:`${_t(n)} (${p})`,checked:e.chosenLayoutMode===n.value&&e.layoutEngine===i,onClick:()=>{e.switchForceEngine(i)}})):[{...a,label:_t(n),checked:e.chosenLayoutMode===n.value,onClick:()=>{e.switchLayout(n.value)}}]}),...t.length>0?[{type:"divider"},...t]:[],...e.hostPlacesX?[]:[{type:"divider"},{label:"Zoom to fit",onClick:()=>{e.refitView()}}]]},{label:`Color: ${e.colorSchemeLock?.value??this.colorSchemeLabel(e.chosenColorScheme)}`,icon:Tn,disabled:e.colorSchemeLock!==void 0,disabledHelpText:e.colorSchemeLock?.why,subMenu:q(Tt.map(({value:n})=>({value:n,label:this.colorSchemeLabel(n)})),e.chosenColorScheme,e.setColorScheme)},{label:"Show...",icon:or,subMenu:this.showMenuItems()}]},launchMenuItems(){let t=[],o=e.launchableAssemblies,r=e.graphRegion?.assemblyName;for(let n of nn({contributors:o,linearContributors:e.host?o.filter(a=>a.sample!==r):o,syntenyTracks:e.syntenyLaunchTracks,onShowLinear:a=>{e.showInLinearView(a)},onShowSynteny:a=>{e.showSyntenyView(a)}}))nt(t,n);return t}}));var at=Qn.views(e=>({get trackHaplotypes(){let t=e.sourceAdapter;return t&&Ae(t)}})).views(e=>({get cutHaplotypes(){return e.subgraphHaplotypes??e.trackHaplotypes},offReference(t){let o=e.sourceTrack,r=o&&Xo(o),n=R(e);return r===void 0?void 0:Ko(Pe(n,r),Pe(n,t.assemblyName))},cutChangedFrom(t){let o=$o(F(t),{walkStrip:e.walkStrip,host:!!e.host});return e.cutsWholeWalks!==o||t==="walkrows"!=(e.chosenLayoutMode==="walkrows")}})).views(e=>({get cutOptions(){return{hops:e.subgraphContext,haplotypes:e.cutHaplotypes,...e.chosenLayoutMode==="walkrows"?{walkRows:!0}:{},...e.cutsWholeWalks?{snarls:"overlapping"}:{}}}}));function zt(){return M.compose("GraphGenomeView",Sn,at,M.model({type:M.literal("GraphGenomeView"),gfaLocation:M.maybe(M.frozen()),loadedRegion:M.maybe(M.frozen()),loadedTrackId:M.optional(M.string,""),layoutMode:kt(ze),color:M.maybe(M.frozen()),size:M.maybe(M.frozen()),layers:M.maybe(M.frozen()),facet:M.maybe(M.frozen()),rows:M.maybe(M.frozen()),hover:kt(Te)})).views(e=>({get grammar(){return{layoutMode:e.layoutMode,color:e.color,size:e.size,layers:e.layers,facet:e.facet,rows:e.rows,hover:e.hover}}})).actions(e=>({writeGrammar(t){Object.assign(e,t)}})).volatile(()=>({widthMeasured:!1})).actions(e=>{let t=e.setWidth;return{setWidth(o){t(o),e.widthMeasured=!0}}}).views(e=>({get rpcSessionId(){return e.id},get paneWidth(){return e.width},get paneMeasured(){return e.widthMeasured},get sourceGfaLocation(){return e.gfaLocation},get sourceTrack(){return e.loadedTrackId?e.sessionTrack(e.loadedTrackId):void 0},get canRetryLoad(){return e.gfaLocation!==void 0||e.loadedTrackId!==""&&e.loadedRegion!==void 0}})).views(e=>({get hasPendingSource(){return e.canRetryLoad&&!e.graph&&!e.loadCanceled},menuItems(){return[...e.exportMenuItems(),...e.launchMenuItems()]}})).actions(e=>{let t=e.clearGraph;function o(r){if(e.gfaLocation)return e.displayName||e.setDisplayName(ue(e.gfaLocation)),e.loadGFAFromLocation(e.gfaLocation,r);if(!e.loadedTrackId||!r)return;let n=e.sourceAdapter,a=r.end-r.start,i=e.offReference(r);if(!n)e.setError(new Error(`The track this graph was cut from, "${e.loadedTrackId}", is not in this session`));else if(i)e.setError(new Error(i));else if(a>e.maxRegionBp)e.setError(new Error(`Region too large (${ce(a)}) \u2014 zoom in to view graph (max ${ce(e.maxRegionBp)})`));else return e.cutSubgraph(n,r,e.cutOptions)}return{clearGraph(){t(),e.gfaLocation&&e.displayName===ue(e.gfaLocation)&&(e.displayName=void 0),e.gfaLocation=void 0,e.loadedRegion=void 0,e.loadedTrackId=""},load(){let r=e.loadedRegion,n=R(e),{assemblyManager:a}=n,i=r&&a.has(r.assemblyName)?a.get(r.assemblyName):void 0;return r&&i?.initialized===!1?a.waitForAssembly(r.assemblyName).catch(()=>{}).then(()=>e.loadedRegion===r?o(Rt(n,r)):void 0):o(r&&Rt(n,r))}}}).actions(e=>({retryLoad(){e.load()},setGfaLocation(t){e.gfaLocation=t},relayoutFrom(t){return e.loadedTrackId&&e.cutChangedFrom(t)?e.load():e.recomputeLayout()},async openGfaLocation(t){await e.loadGFAFromLocation(t),H(e)&&e.hasGraph&&(this.setGfaLocation(t),e.displayName||e.setDisplayName(ue(t)))},afterAttach(){e.graph||e.load(),L(e,C(()=>e.walkStrip,()=>{e.loadedTrackId&&!F(e.chosenLayoutMode).wholeWalks&&e.load()}))}}))}var ii=kn()({});function $t(e){e.addViewType(()=>new Mn({name:"GraphGenomeView",displayName:"Graph genome view",stateModel:zt(),launchKeys:ii,ReactComponent:ee(()=>import("./chunks/GraphGenomeView-WJ3FIDY2.js"))}))}var Jt=["MultiWaySyntenyDisplay","LinearSyntenyDisplay","DotplotDisplay","ChordSyntenyDisplay"];function si(e){let t=e.getElementTypesInGroup("display"),o=n=>t.find(a=>a.name===n),r=n=>n&&Object.assign(Object.create(n),{adapterCapabilities:["headerLanes"]});return[o("LinearGraphDisplay"),o("LinearBasicDisplay"),...Jt.map(n=>r(o(n)))].filter(n=>n!==void 0)}function Yt(e){e.addTrackType(()=>{let t=O("GraphTrack",{},{baseConfiguration:yn(e),explicitIdentifier:"trackId"}),o=new gn({name:"GraphTrack",displayName:"Pangenome graph track",configSchema:t,stateModel:bn(e,"GraphTrack",t)});for(let r of si(e))o.addDisplayType(r);return o})}function Ut(e){e.addToExtensionPoint("LaunchView-GraphGenomeView",t=>{let{session:o,...r}=t;return o.addView("GraphGenomeView",r),t})}var it=JBrowseExports["@jbrowse/core/pluggableElementTypes/DisplayType"];var ea=it&&it.__esModule?it.default:it;var be=JBrowseExports["@jbrowse/display-kit/trackHeightConfigSchemaFields"],pi=e=>be!=null&&e in Object(be)?be[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/display-kit/trackHeightConfigSchemaFields' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),ta=pi("trackHeightConfigSchemaFields"),em=be&&be.__esModule?be.default:be;function oa(){return O("LinearGraphDisplay",{layoutMode:{type:"stringEnum",model:M.enumeration("LayoutMode",ze),defaultValue:"auto"},color:{type:"frozen",defaultValue:{},plot:!0},size:{type:"frozen",defaultValue:{field:"depth",value:6},plot:!0},layers:{type:"frozen",defaultValue:{},plot:!0},facet:{type:"frozen",defaultValue:{},plot:!0},rows:{type:"frozen",defaultValue:{},plot:!0},hover:{type:"stringEnum",model:M.enumeration("HoverHighlight",Te),defaultValue:"nodes"},...ta({defaultHeight:300,height:"the height of the track the graph is drawn in"})},{explicitlyTyped:!0,explicitIdentifier:"displayId"})}var fe=JBrowseExports["@jbrowse/core/svg/svgReady"],ci=e=>fe!=null&&e in Object(fe)?fe[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/svg/svgReady' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var ra=ci("computeSvgReady");var pm=fe&&fe.__esModule?fe.default:fe;var st=JBrowseExports["@jbrowse/display-kit/TrackHeightMixin"];var na=st&&st.__esModule?st.default:st;var we=JBrowseExports["@jbrowse/display-kit/plotMenu"],ui=e=>we!=null&&e in Object(we)?we[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/display-kit/plotMenu' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),aa=ui("editPlotMenuItems");var dm=we&&we.__esModule?we.default:we;var Me=JBrowseExports["@jbrowse/render-core/displayPhase"],ia=e=>Me!=null&&e in Object(Me)?Me[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/render-core/displayPhase' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),sa=ia("computeActivityPhase");var pa=ia("computeDisplayStatusPhase"),lm=Me&&Me.__esModule?Me.default:Me;function Xt(e,t){if(e?.refName!==t.refName||e.assemblyName!==t.assemblyName)return!1;let o=e.end-e.start;return t.end-t.start>=o&&t.end>e.start-o&&t.start<e.end+o}var di=new Set(["scale","translateX","translateY"]);function mi(e){return Object.fromEntries(Object.keys(br.properties).filter(t=>!di.has(t)).map(t=>[t,e[t]]))}var Kt=10;function li(e){let{aboveBpPerPx:t,foldBelowBp:o}=e??{};return typeof t=="number"?t:typeof o=="number"&&o>0?o/Kt:void 0}var hi=ee(()=>import("./chunks/GraphTrackSettingsDialog-ZW7ALMDV.js"));function ca(e){return M.compose("LinearGraphDisplay",mn,na(),at,M.model({type:M.literal("LinearGraphDisplay"),configuration:xo(e),layoutEngine:zo(jo,"stress"),cutRegion:M.maybe(M.frozen()),coarseCut:M.optional(M.boolean,!1)})).volatile(()=>({recuts:0,settledWindow:void 0,dense:void 0,haplotypeNames:void 0,cutFoldBp:0})).views(t=>({get grammar(){return{layoutMode:Z(t,"layoutMode"),color:Z(t,"color"),size:Z(t,"size"),layers:Z(t,"layers"),facet:Z(t,"facet"),rows:Z(t,"rows"),hover:Z(t,"hover")}},get drawsGenomicCoordinates(){return t.layoutResult===void 0||t.hostPlacesX},get canvasHeight(){return t.height},get canRetryLoad(){return t.cutRegion!==void 0},get trackHaplotypes(){let o=t.sourceAdapter,r=t.sourceTrack;return(o&&Ae(o))??(r&&St(r))},get coarseAboveBpPerPx(){return li(t.sourceAdapter?.coarse)}})).views(t=>({tierAt(o){let r=t.coarseAboveBpPerPx;return r!==void 0&&o>r?"coarse":"fine"},capFor(o){return o==="coarse"?1/0:t.maxRegionBp},foldDrifted(o){let r=Kt*o,n=t.cutFoldBp;return!t.graph?.paths?.length&&(r>=2*Math.max(n,1)||t.foldedBelowBp!==void 0&&r<=n/2)},get cutTier(){return t.coarseCut&&t.coarseAboveBpPerPx!==void 0?"coarse":"fine"}})).views(t=>({get settledCapBp(){let o=t.settledWindow;return o?t.capFor(t.tierAt(o.bpPerPx)):1/0}})).views(t=>({get regionTooLarge(){let o=t.settledWindow;return o!==void 0&&o.end-o.start>t.settledCapBp},get regionTooLargeReason(){let o=t.settledWindow;return o?`Region too large for a graph cut (${ce(o.end-o.start)}, max ${ce(t.settledCapBp)})`:""},get zoomCanReleaseGate(){return!0},get fetchCanceled(){return t.loadCanceled}})).views(t=>({get svgReady(){return ra({error:t.error,regionTooLarge:t.regionTooLarge,extraTerminal:!1,fetchCanceled:t.loadCanceled},()=>!t.isLoading&&t.hasGraph&&!!t.layoutResult)}})).views(t=>({get displayPhase(){return pa({regionTooLarge:t.regionTooLarge,error:t.error??t.renderError},()=>sa({isMinimized:t.isMinimized,fetchInert:!1,viewportEmpty:t.host?.initialized===!0&&t.host.hasVisibleContent===!1,isLoading:t.isLoading||!t.hasGraph,fetchCanceled:t.loadCanceled,awaitingDependentData:!1,rendersCanvas:!0,canvasDrawn:t.painted&&t.geometryPainted},()=>!0,()=>t.host?.effectiveBodyMounted??!0))}})).actions(t=>({writeGrammar(o){for(let[r,n]of Object.entries(o))Ro(t,r,n)},setSubgraphContext(o){t.subgraphContext=o,t.dense=void 0},setSubgraphHaplotypes(o){t.subgraphHaplotypes=o,t.dense=void 0},setDense(o){t.dense=o},setHaplotypeNames(o){t.haplotypeNames=o},setMaxRegionBp(o){t.maxRegionBp=o},cut(){let o=t.cutRegion,r=t.sourceAdapter;if(!o||!r)return;let n=t.offReference(o);if(n){t.clearGraph(),t.setError(new Error(n));return}let a=t.cutTier==="coarse";return t.cutFoldBp=Math.round(Kt*(t.settledWindow?.bpPerPx??t.host?.bpPerPx??0)),t.cutSubgraph(r,o,{...t.cutOptions,tier:a?"coarse":void 0},t.cutFoldBp)}})).actions(t=>({recutAt(o){let r=t.tierAt(o.bpPerPx);return t.coarseCut=r==="coarse",t.cutRegion=Ur(o,t.capFor(r),F(t.chosenLayoutMode).cutMargins),t.recuts++,t.cut()}})).actions(t=>({settleOn(o){t.settledWindow=o;let r=F(t.chosenLayoutMode).cutMargins;if(t.regionTooLarge||Xt(t.dense,o)||!t.loadCanceled&&t.tierAt(o.bpPerPx)===t.cutTier&&Xr(t.cutRegion,o,r)&&!t.foldDrifted(o.bpPerPx))return!1;let n=t.recutAt(o),a=t.recuts;return Promise.resolve(n).then(()=>{H(t)&&t.recuts===a&&wt(t.error)&&this.refuseDenseCut(o)}),!0},refuseDenseCut(o){t.setDense(o),t.cutRegion=void 0,this.settleOn(t.settledWindow??o)},recut(){t.cutRegion?t.cut():t.settledWindow&&this.settleOn(t.settledWindow)},relayoutFrom(o){let r=t.host?Xe(t.host):void 0;return r&&!t.regionTooLarge&&(t.cutChangedFrom(o)||F(o).cutMargins!==F(t.chosenLayoutMode).cutMargins)?t.recutAt(r):t.recomputeLayout()},retryLoad(){t.cut()},reload(){t.cut()},cancelFetchByUser(){t.stopLoad()}})).actions(t=>({async fetchHaplotypeNames(o,r){try{let n=await R(t).rpcManager.call(ae(t),"GetGraphHaplotypes",{adapterConfig:o,signal:r});H(t)&&!r?.aborted&&t.setHaplotypeNames(n)}catch(n){r?.aborted||console.warn("[LinearGraphDisplay] no haplotype names",n)}}})).actions(t=>({stretchWithHost(o,r){let n=t.layoutBounds;if(!n||!t.followsHostView)return;t.viewportOwner==="fit"&&(t.viewportOwner="user");let a=o.bpPerPx/r.bpPerPx,i=t.translateY+t.scaleY*(n.minY+n.h/2);t.scale*=a,t.translateX=a*(t.translateX+o.offsetPx)-r.offsetPx,t.translateY=i-a*(i-t.translateY)}})).actions(t=>({forceLoad(){let o=t.settledWindow;o&&(t.setMaxRegionBp(Math.ceil(o.end-o.start)),t.settleOn(o))},afterAttach(){t.cutRegion&&!t.graph&&t.cut();let o;L(t,()=>{o?.abort()}),L(t,C(()=>{let n=t.sourceAdapter;return n&&Yo(n)?n:void 0},n=>{o?.abort(),o=void 0,t.setHaplotypeNames(void 0),n&&(o=new AbortController,t.fetchHaplotypeNames(n,o.signal))},{fireImmediately:!0,equals:(n,a)=>JSON.stringify(n)===JSON.stringify(a),name:"GraphHaplotypeNames"})),L(t,C(()=>t.hostPlacesX,n=>{n||t.releaseHost()},{name:"GraphHostPlacesX"})),L(t,C(()=>t.hostFrame,n=>{n&&t.hostTransform(n.scale,n.translateX)},{equals:(n,a)=>n?.scale===a?.scale&&n?.translateX===a?.translateX,fireImmediately:!0,name:"GraphHostFrame"}));let r;L(t,C(()=>t.host&&!t.hostPlacesX?{bpPerPx:t.host.bpPerPx,offsetPx:t.host.offsetPx}:void 0,n=>{let a=r;r=n,n&&a&&n.bpPerPx>0&&t.stretchWithHost(a,n)},{equals:(n,a)=>n?.bpPerPx===a?.bpPerPx&&n?.offsetPx===a?.offsetPx,fireImmediately:!0,name:"GraphHostStretch"})),L(t,C(()=>`${t.facetSetting.field} ${t.facetPlacement?.count}`,()=>{let n=(t.facetGridIn(t.paneCeiling-qe)?.total??0)+qe;(t.facetGrid?.total??0)+qe>t.height&&t.setHeight(Math.max(t.height,Math.ceil(n)))},{name:"GraphFacetHeight"})),L(t,C(()=>t.host?.coarseDynamicBlocks,n=>{let{host:a}=t,i=n&&a?Xe(a):void 0;i&&t.settleOn(i)},{fireImmediately:!0,name:"GraphHostSettle"}))}})).views(t=>({get graphViewSpec(){let o=t.host?Xe(t.host):void 0,r=t.sourceTrackId;if(!o||!r||!t.hasGraph||t.coarseCut||t.regionTooLarge||Xt(t.dense,o))return;let n=Math.floor(o.start),a=Math.ceil(o.end);return{...mi(t),loadedTrackId:r,loadedRegion:{refName:o.refName,assemblyName:o.assemblyName,start:n,end:a},subgraphHaplotypes:t.cutHaplotypes,maxRegionBp:Math.max(t.maxRegionBp,a-n),...t.grammar,layoutMode:t.chosenLayoutMode,connectedViewId:t.host?.id}}})).actions(t=>({openGraphView(){let o=t.graphViewSpec;o&&R(t).addView("GraphGenomeView",o)}})).views(t=>({cutMenuItems(){let o=t.sourceAdapter,r=t.sourceTrack;if(!o||!r||!Uo(o))return[];let n=Ae(o),a=St(r),i=t.haplotypeNames,p=t.subgraphHaplotypes,s=c=>{t.setSubgraphHaplotypes(c),t.recut()};return[{type:"subHeader",label:"Load"},{type:"radio",label:i?`Every haplotype in the graph (${i.length.toLocaleString()})`:"Every haplotype in the graph",checked:p?p.length===0:!n&&!a,onClick:()=>{s([])}},...n||a?[{type:"radio",label:n?"The track's default haplotypes":`The track's ${a?.length} assemblies`,checked:p===void 0,onClick:()=>{s(void 0)}}]:[],{type:"radio",label:"Chosen in Graph settings...",checked:(p?.length??0)>0,onClick:()=>{this.openSettings()}}]},openSettings(){R(t).queueDialog(o=>[hi,{model:t,onClose:o}])},async renderSvg(o){let{renderGraphTrackSvg:r}=await import("./chunks/renderSvg-WD6YDV2I.js");return r(t,o)},trackMenuItems(){let o=t.launchMenuItems();nt(o,{label:"Graph genome view",icon:Qe,disabled:!t.graphViewSpec,disabledHelpText:t.error&&!wt(t.error)?"The track could not cut a graph here":t.isLoading&&!t.hasGraph?"The track is still cutting its graph":"Zoom in until the track cuts a graph",onClick:()=>{t.openGraphView()}});let r=[...this.cutMenuItems(),...t.highlightMenuItems()];return[...r.length>0?[{label:"Haplotypes",icon:sn,subMenu:r}]:[],...t.graphMenuItems(),{label:"Graph settings...",icon:pn,helpText:"Subgraph, drawing and force-directed layout",onClick:()=>{this.openSettings()}},...o,...aa(t)]}}))}function qt(e){e.addDisplayType(()=>{let t=oa();return Object.assign(new ea({name:"LinearGraphDisplay",displayName:"Graph",configSchema:t,stateModel:ca(t),trackType:["GraphTrack","FeatureTrack","SyntenyTrack"],viewType:"LinearGenomeView",ReactComponent:ee(()=>import("./chunks/LinearGraphDisplay-SPOPTJEN.js"))}),{adapterCapabilities:["getSubgraph"]})})}function gi(e){let{uri:t,baseUri:o,csi:r}=e;return typeof t=="string"?{...e,bubblesLocation:{uri:t,baseUri:o},index:Le(t,o,r)}:e}var yi=O("MinigraphBubbleAdapter",{bubblesLocation:E("/path/to/graph.bb.bed.gz"),index:z("MinigraphBubbleIndex","/path/to/graph.bb.bed.gz.tbi"),assemblyNameToPanSN:{type:"frozen",defaultValue:{}}},{explicitlyTyped:!0,preProcessSnapshot:gi}),ua=yi;function Zt(e){e.addAdapterType(()=>new te({name:"MinigraphBubbleAdapter",displayName:"Minigraph bubble BED adapter",configSchema:ua,adapterMetadata:{category:"Graph adapters"},getAdapterClass:()=>import("./chunks/MinigraphBubbleAdapter-ABZPIZYV.js").then(t=>t.default)}))}function da(e){let{uri:t,baseUri:o,csi:r}=e;return typeof t=="string"?{...e,segmentsLocation:{uri:`${t}.segs.bed.gz`,baseUri:o},segmentsIndex:Le(`${t}.segs.bed.gz`,o,r),linksLocation:{uri:`${t}.links.bed.gz`,baseUri:o},linksIndex:Le(`${t}.links.bed.gz`,o,r)}:e}function bi(e){let{coarse:t,baseUri:o,csi:r}=e;return Oe(da(typeof t=="object"&&t!==null?{...e,coarse:da({baseUri:o,csi:r,...t})}:e))}var fi=O("RgfaTabixCoarseTier",{aboveBpPerPx:{type:"maybeNumber"},foldBelowBp:{type:"maybeNumber"},segmentsLocation:E("/path/to/graph.tier.segs.bed.gz"),segmentsIndex:z("RgfaCoarseSegmentsIndex","/path/to/graph.tier.segs.bed.gz.tbi"),linksLocation:E("/path/to/graph.tier.links.bed.gz"),linksIndex:z("RgfaCoarseLinksIndex","/path/to/graph.tier.links.bed.gz.tbi")}),wi=O("RgfaTabixAdapter",{segmentsLocation:E("/path/to/graph.segs.bed.gz"),segmentsIndex:z("RgfaSegmentsIndex","/path/to/graph.segs.bed.gz.tbi"),linksLocation:E("/path/to/graph.links.bed.gz"),linksIndex:z("RgfaLinksIndex","/path/to/graph.links.bed.gz.tbi"),walksLocation:E(""),walksIndex:z("RgfaWalksIndex"),walkStepBudget:{type:"integer",defaultValue:Se.stepBudget},walkByteBudget:{type:"integer",defaultValue:Se.byteBudget},defaultHaplotypes:{type:"stringArray",defaultValue:[]},assemblyNameToPanSN:{type:"frozen",defaultValue:{}},coarse:fi},{explicitlyTyped:!0,preProcessSnapshot:bi}),ma=wi;function Qt(e){e.addAdapterType(()=>new te({name:"RgfaTabixAdapter",displayName:"Indexed rGFA adapter",configSchema:ma,adapterCapabilities:["getSubgraph"],adapterMetadata:{category:"Graph adapters"},getAdapterClass:()=>import("./chunks/RgfaTabixAdapter-3NQC5QPT.js").then(t=>t.default)}))}var Mi=O("WalkTabixSyntenyAdapter",{assemblyNames:{type:"stringArray",defaultValue:[]},walksLocation:E("/path/to/graph.walks.bed.gz"),walksIndex:z("WalkTabixWalksIndex"),walkStepBudget:{type:"integer",defaultValue:Se.stepBudget},walkByteBudget:{type:"integer",defaultValue:Se.byteBudget},defaultHaplotypes:{type:"stringArray",defaultValue:[]},samplesTsvLocation:E(""),assemblyNameToPanSN:{type:"frozen",defaultValue:{}}},{explicitlyTyped:!0,preProcessSnapshot:Oe}),la=Mi;function eo(e){e.addAdapterType(()=>new te({name:"WalkTabixSyntenyAdapter",displayName:"Walk-indexed graph adapter",configSchema:la,adapterCapabilities:["getSubgraph","headerLanes","lanePairsOnAnchor","lanePairBatches"],adapterMetadata:{category:"Synteny adapters"},getAdapterClass:()=>import("./chunks/WalkTabixSyntenyAdapter-ZJJ4SQHH.js").then(t=>t.default)}))}var ki=new Set(["RgfaTabixAdapter","GbzBaseSyntenyAdapter"]);function Si(e){return ht(e).toLowerCase().endsWith(".gbz.db")}function xi(e){let t=e.adapter;return t?.type!==void 0&&Kr.has(t.type)&&!t.assemblyNames?.length&&Array.isArray(e.assemblyNames)&&e.assemblyNames.length>0?{...e,adapter:{...t,assemblyNames:e.assemblyNames}}:e}function Ri(e){let t=e.adapter,[o]=Array.isArray(e.assemblyNames)?e.assemblyNames:[],r=t?.type==="RgfaTabixAdapter"&&t.walksLocation?Lo(t.walksLocation):void 0;return o&&r&&r!==o&&t?.assemblyNameToPanSN===void 0?{...e,adapter:{...t,assemblyNameToPanSN:{[o]:r}}}:e}function Ti(e,t,o){let r=n=>Fo({choice:n,loc:e,indexLoc:t,assembly:"",sample:""});if((!o||o==="GbzBaseSyntenyAdapter")&&Si(e))return r("GbzBaseSyntenyAdapter");if(!o||o==="RgfaTabixAdapter"){if(Ho(e))return r("RgfaTabixAdapter");if(ht(e).endsWith(Go)&&(t!==void 0||Po(e)))return r("RgfaTabixWalks")}}function to(e){e.addToExtensionPoint("Core-preProcessTrackConfig",xi),e.addToExtensionPoint("Core-preProcessTrackConfig",Ri),e.addToExtensionPoint("Core-guessAdapterForLocation",t=>(o,r,n)=>Ti(o,r,n)??t(o,r,n)),e.addToExtensionPoint("Core-guessTrackTypeForLocation",t=>(o,r)=>ki.has(o)?"GraphTrack":t(o,r))}function ha(e){let t;if($(e)){let{refName:o,start:r,end:n,assemblyName:a}=e;typeof o=="string"&&typeof r=="number"&&typeof n=="number"&&(t={refName:o,start:r,end:n,assemblyName:typeof a=="string"?a:void 0})}return t}function Gi(e,t,o){let r=e.connectedViewId;return r===void 0||r===t||!o.has(r)}function ga(e,t){return e.assemblyName===void 0||t===void 0||t.includes(e.assemblyName)}function Li(e){return(Array.isArray(e.tracks)?e.tracks:[]).flatMap(o=>$(o)&&Array.isArray(o.displays)?o.displays.filter(r=>$(r)&&r.type==="LinearGraphDisplay"):[])}function ya(e,t,o){let r=[],n=$e(e),a=new Set(n.map(i=>$(i)?i.id:void 0));for(let i of n){if($(i)&&i.id===t)for(let p of Li(i)){let s=ha(p.hoverHighlight);s&&ga(s,o)&&r.push({key:typeof p.id=="string"?p.id:"graph-track",region:s})}if($(i)&&i.type==="GraphGenomeView"&&Gi(i,t,a)){let p=ha(i.hoverHighlight);p&&ga(p,o)&&r.push({key:typeof i.id=="string"?i.id:"graph",region:p})}}return r}var vi=an()(e=>({highlight:{height:"100%",position:"absolute",background:We(e.palette.primary.main,.08),borderLeft:`1px solid ${We(e.palette.primary.main,.4)}`,borderRight:`1px solid ${We(e.palette.primary.main,.4)}`,pointerEvents:"none",zIndex:10}})),Ai=ft(function({model:t,region:o}){let{classes:r}=vi(),n=t.getHighlightCoords(o);return n?A("div",{"data-testid":"graph-node-highlight",className:r.highlight,style:{left:n.left,width:n.width}}):null}),Pi=ft(function({model:t}){let{views:o}=R(t);return A(fo,{children:ya([...o],t.id,t.assemblyNames).map(({key:r,region:n})=>A(Ai,{model:t,region:n},`graph-hover-${r}`))})}),ba=Pi;var Ci="LinearGenomeView-TracksContainerComponent";function oo(e){e.contributeToExtensionPoint(Ci,({model:t})=>A(ba,{model:t},"graphgenomeview-hover-highlight"))}function Bi(e){return e.views(t=>({get adapterConfig(){return qr(t,t.parentTrack.configuration)}}))}function ro(e){e.addToExtensionPoint("Core-extendPluggableElement",t=>(t instanceof ln&&Jt.includes(t.name)&&t.extendStateModel(Bi),t))}var fa="GraphGenomeView";var wa="7.3.1";var no=class extends cn{constructor(){super(...arguments);this.name=fa;this.version=wa}install(o){$t(o),qt(o),Yt(o),Ut(o),oo(o),Qt(o),Zt(o),Et(o),eo(o),Vt(o),to(o),ro(o),o.addRpcMethod(()=>new Ve(o)),o.addRpcMethod(()=>new Ne(o)),o.addRpcMethod(()=>new Ee(o)),o.addRpcMethod(()=>new Ie(o))}configure(o){try{go(o.rootModel)&&o.rootModel.appendToSubMenu(["Add"],{label:"Graph genome view",icon:Qe,onClick:r=>{r.addView("GraphGenomeView",{})}})}catch(r){console.warn("[GraphGenomeView] could not add the Add menu entry",r)}}};export{no as default};
|
|
6
|
+
`).then(()=>{o.notify("Figure spec copied. Save it as spec.json and run: npx -p @jbrowse/bandage-core bandage-figure spec.json -o figure.svg","info")}).catch(r=>{o.notify(`Could not copy the figure spec: ${String(r)}`)})}}]},highlightMenuItems({picks:t=!0}={}){let o=t?e.walkChoices:[];if(e.walkChoices.length===0||!e.liftsWalks||!t&&e.walkLayers.length===0)return[];let r=a=>e.walkLayers.some(i=>i.walk===a),n=o.length>dr;return[{type:"subHeader",label:"Highlight"},...n?[{label:"Choose haplotypes...",onClick:()=>{R(e).queueDialog(a=>[cr,{model:e,onClose:a}])}}]:[],...(n?o.filter(a=>r(a.name)):o).map(a=>({type:"checkbox",label:a.label,checked:r(a.name),onClick:()=>{e.toggleWalk(a.name)}})),{label:"Clear highlights",disabled:e.walkLayers.length===0,onClick:()=>{e.setWalkLayers([])}},...e.drawnWalks.length>0?[{label:"Color highlighted...",onClick:()=>{R(e).queueDialog(a=>[ur,{model:e,onClose:a}])}}]:[],...e.walkLayers.length>1&&e.modeDrawsNodes?[{type:"subHeader",label:"Arrange"},...q(tr.map(({value:a,label:i})=>({value:a,label:a==="walk"?"A panel per haplotype":i})),e.facetSetting.field,e.setFacet)]:[]]},colorSchemeLabel(t){let o=Tt.find(r=>r.value===t)?.label??t;return t==="auto"?`${o} (${this.colorSchemeLabel(e.effectiveColorScheme)})`:o},graphMenuItems(){let t=this.layoutOptionMenuItems(),o=F(e.chosenLayoutMode),r=Zn.find(([n])=>n===e.layoutEngine)[1];return[{label:`Layout: ${_t(o)}${o.value==="force"?` (${r})`:""}`,icon:Rn,subMenu:[..._o.flatMap(n=>{let a={type:"radio",disabled:e.graph?!n.available(e.graph):!1,disabledHelpText:n.description};return n.value==="force"?Zn.map(([i,p])=>({...a,label:`${_t(n)} (${p})`,checked:e.chosenLayoutMode===n.value&&e.layoutEngine===i,onClick:()=>{e.switchForceEngine(i)}})):[{...a,label:_t(n),checked:e.chosenLayoutMode===n.value,onClick:()=>{e.switchLayout(n.value)}}]}),...t.length>0?[{type:"divider"},...t]:[],...e.hostPlacesX?[]:[{type:"divider"},{label:"Zoom to fit",onClick:()=>{e.refitView()}}]]},{label:`Color: ${e.colorSchemeLock?.value??this.colorSchemeLabel(e.chosenColorScheme)}`,icon:Tn,disabled:e.colorSchemeLock!==void 0,disabledHelpText:e.colorSchemeLock?.why,subMenu:q(Tt.map(({value:n})=>({value:n,label:this.colorSchemeLabel(n)})),e.chosenColorScheme,e.setColorScheme)},{label:"Show...",icon:or,subMenu:this.showMenuItems()}]},launchMenuItems(){let t=[],o=e.launchableAssemblies,r=e.graphRegion?.assemblyName;for(let n of nn({contributors:o,linearContributors:e.host?o.filter(a=>a.sample!==r):o,syntenyTracks:e.syntenyLaunchTracks,onShowLinear:a=>{e.showInLinearView(a)},onShowSynteny:a=>{e.showSyntenyView(a)}}))nt(t,n);return t}}));var at=Qn.views(e=>({get trackHaplotypes(){let t=e.sourceAdapter;return t&&Ae(t)}})).views(e=>({get cutHaplotypes(){return e.subgraphHaplotypes??e.trackHaplotypes},offReference(t){let o=e.sourceTrack,r=o&&Xo(o),n=R(e);return r===void 0?void 0:Ko(Pe(n,r),Pe(n,t.assemblyName))},cutChangedFrom(t){let o=$o(F(t),{walkStrip:e.walkStrip,host:!!e.host});return e.cutsWholeWalks!==o||t==="walkrows"!=(e.chosenLayoutMode==="walkrows")}})).views(e=>({get cutOptions(){return{hops:e.subgraphContext,haplotypes:e.cutHaplotypes,...e.chosenLayoutMode==="walkrows"?{walkRows:!0}:{},...e.cutsWholeWalks?{snarls:"overlapping"}:{}}}}));function zt(){return M.compose("GraphGenomeView",Sn,at,M.model({type:M.literal("GraphGenomeView"),gfaLocation:M.maybe(M.frozen()),loadedRegion:M.maybe(M.frozen()),loadedTrackId:M.optional(M.string,""),layoutMode:kt(ze),color:M.maybe(M.frozen()),size:M.maybe(M.frozen()),layers:M.maybe(M.frozen()),facet:M.maybe(M.frozen()),rows:M.maybe(M.frozen()),hover:kt(Te)})).views(e=>({get grammar(){return{layoutMode:e.layoutMode,color:e.color,size:e.size,layers:e.layers,facet:e.facet,rows:e.rows,hover:e.hover}}})).actions(e=>({writeGrammar(t){Object.assign(e,t)}})).volatile(()=>({widthMeasured:!1})).actions(e=>{let t=e.setWidth;return{setWidth(o){t(o),e.widthMeasured=!0}}}).views(e=>({get rpcSessionId(){return e.id},get paneWidth(){return e.width},get paneMeasured(){return e.widthMeasured},get sourceGfaLocation(){return e.gfaLocation},get sourceTrack(){return e.loadedTrackId?e.sessionTrack(e.loadedTrackId):void 0},get canRetryLoad(){return e.gfaLocation!==void 0||e.loadedTrackId!==""&&e.loadedRegion!==void 0}})).views(e=>({get hasPendingSource(){return e.canRetryLoad&&!e.graph&&!e.loadCanceled},menuItems(){return[...e.exportMenuItems(),...e.launchMenuItems()]}})).actions(e=>{let t=e.clearGraph;function o(r){if(e.gfaLocation)return e.displayName||e.setDisplayName(ue(e.gfaLocation)),e.loadGFAFromLocation(e.gfaLocation,r);if(!e.loadedTrackId||!r)return;let n=e.sourceAdapter,a=r.end-r.start,i=e.offReference(r);if(!n)e.setError(new Error(`The track this graph was cut from, "${e.loadedTrackId}", is not in this session`));else if(i)e.setError(new Error(i));else if(a>e.maxRegionBp)e.setError(new Error(`Region too large (${ce(a)}) \u2014 zoom in to view graph (max ${ce(e.maxRegionBp)})`));else return e.cutSubgraph(n,r,e.cutOptions)}return{clearGraph(){t(),e.gfaLocation&&e.displayName===ue(e.gfaLocation)&&(e.displayName=void 0),e.gfaLocation=void 0,e.loadedRegion=void 0,e.loadedTrackId=""},load(){let r=e.loadedRegion,n=R(e),{assemblyManager:a}=n,i=r&&a.has(r.assemblyName)?a.get(r.assemblyName):void 0;return r&&i?.initialized===!1?a.waitForAssembly(r.assemblyName).catch(()=>{}).then(()=>e.loadedRegion===r?o(Rt(n,r)):void 0):o(r&&Rt(n,r))}}}).actions(e=>({retryLoad(){e.load()},setGfaLocation(t){e.gfaLocation=t},relayoutFrom(t){return e.loadedTrackId&&e.cutChangedFrom(t)?e.load():e.recomputeLayout()},async openGfaLocation(t){await e.loadGFAFromLocation(t),H(e)&&e.hasGraph&&(this.setGfaLocation(t),e.displayName||e.setDisplayName(ue(t)))},afterAttach(){e.graph||e.load(),L(e,C(()=>e.walkStrip,()=>{e.loadedTrackId&&!F(e.chosenLayoutMode).wholeWalks&&e.load()}))}}))}var ii=kn()({});function $t(e){e.addViewType(()=>new Mn({name:"GraphGenomeView",displayName:"Graph genome view",stateModel:zt(),launchKeys:ii,ReactComponent:ee(()=>import("./chunks/GraphGenomeView-6EDKLBOJ.js"))}))}var Jt=["MultiWaySyntenyDisplay","LinearSyntenyDisplay","DotplotDisplay","ChordSyntenyDisplay"];function si(e){let t=e.getElementTypesInGroup("display"),o=n=>t.find(a=>a.name===n),r=n=>n&&Object.assign(Object.create(n),{adapterCapabilities:["headerLanes"]});return[o("LinearGraphDisplay"),o("LinearBasicDisplay"),...Jt.map(n=>r(o(n)))].filter(n=>n!==void 0)}function Yt(e){e.addTrackType(()=>{let t=O("GraphTrack",{},{baseConfiguration:yn(e),explicitIdentifier:"trackId"}),o=new gn({name:"GraphTrack",displayName:"Pangenome graph track",configSchema:t,stateModel:bn(e,"GraphTrack",t)});for(let r of si(e))o.addDisplayType(r);return o})}function Ut(e){e.addToExtensionPoint("LaunchView-GraphGenomeView",t=>{let{session:o,...r}=t;return o.addView("GraphGenomeView",r),t})}var it=JBrowseExports["@jbrowse/core/pluggableElementTypes/DisplayType"];var ea=it&&it.__esModule?it.default:it;var be=JBrowseExports["@jbrowse/display-kit/trackHeightConfigSchemaFields"],pi=e=>be!=null&&e in Object(be)?be[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/display-kit/trackHeightConfigSchemaFields' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),ta=pi("trackHeightConfigSchemaFields"),em=be&&be.__esModule?be.default:be;function oa(){return O("LinearGraphDisplay",{layoutMode:{type:"stringEnum",model:M.enumeration("LayoutMode",ze),defaultValue:"auto"},color:{type:"frozen",defaultValue:{},plot:!0},size:{type:"frozen",defaultValue:{field:"depth",value:6},plot:!0},layers:{type:"frozen",defaultValue:{},plot:!0},facet:{type:"frozen",defaultValue:{},plot:!0},rows:{type:"frozen",defaultValue:{},plot:!0},hover:{type:"stringEnum",model:M.enumeration("HoverHighlight",Te),defaultValue:"nodes"},...ta({defaultHeight:300,height:"the height of the track the graph is drawn in"})},{explicitlyTyped:!0,explicitIdentifier:"displayId"})}var fe=JBrowseExports["@jbrowse/core/svg/svgReady"],ci=e=>fe!=null&&e in Object(fe)?fe[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/svg/svgReady' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var ra=ci("computeSvgReady");var pm=fe&&fe.__esModule?fe.default:fe;var st=JBrowseExports["@jbrowse/display-kit/TrackHeightMixin"];var na=st&&st.__esModule?st.default:st;var we=JBrowseExports["@jbrowse/display-kit/plotMenu"],ui=e=>we!=null&&e in Object(we)?we[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/display-kit/plotMenu' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),aa=ui("editPlotMenuItems");var dm=we&&we.__esModule?we.default:we;var Me=JBrowseExports["@jbrowse/render-core/displayPhase"],ia=e=>Me!=null&&e in Object(Me)?Me[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/render-core/displayPhase' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),sa=ia("computeActivityPhase");var pa=ia("computeDisplayStatusPhase"),lm=Me&&Me.__esModule?Me.default:Me;function Xt(e,t){if(e?.refName!==t.refName||e.assemblyName!==t.assemblyName)return!1;let o=e.end-e.start;return t.end-t.start>=o&&t.end>e.start-o&&t.start<e.end+o}var di=new Set(["scale","translateX","translateY"]);function mi(e){return Object.fromEntries(Object.keys(br.properties).filter(t=>!di.has(t)).map(t=>[t,e[t]]))}var Kt=10;function li(e){let{aboveBpPerPx:t,foldBelowBp:o}=e??{};return typeof t=="number"?t:typeof o=="number"&&o>0?o/Kt:void 0}var hi=ee(()=>import("./chunks/GraphTrackSettingsDialog-KYEZWI4Z.js"));function ca(e){return M.compose("LinearGraphDisplay",mn,na(),at,M.model({type:M.literal("LinearGraphDisplay"),configuration:xo(e),layoutEngine:zo(jo,"stress"),cutRegion:M.maybe(M.frozen()),coarseCut:M.optional(M.boolean,!1)})).volatile(()=>({recuts:0,settledWindow:void 0,dense:void 0,haplotypeNames:void 0,cutFoldBp:0})).views(t=>({get grammar(){return{layoutMode:Z(t,"layoutMode"),color:Z(t,"color"),size:Z(t,"size"),layers:Z(t,"layers"),facet:Z(t,"facet"),rows:Z(t,"rows"),hover:Z(t,"hover")}},get drawsGenomicCoordinates(){return t.layoutResult===void 0||t.hostPlacesX},get canvasHeight(){return t.height},get canRetryLoad(){return t.cutRegion!==void 0},get trackHaplotypes(){let o=t.sourceAdapter,r=t.sourceTrack;return(o&&Ae(o))??(r&&St(r))},get coarseAboveBpPerPx(){return li(t.sourceAdapter?.coarse)}})).views(t=>({tierAt(o){let r=t.coarseAboveBpPerPx;return r!==void 0&&o>r?"coarse":"fine"},capFor(o){return o==="coarse"?1/0:t.maxRegionBp},foldDrifted(o){let r=Kt*o,n=t.cutFoldBp;return!t.graph?.paths?.length&&(r>=2*Math.max(n,1)||t.foldedBelowBp!==void 0&&r<=n/2)},get cutTier(){return t.coarseCut&&t.coarseAboveBpPerPx!==void 0?"coarse":"fine"}})).views(t=>({get settledCapBp(){let o=t.settledWindow;return o?t.capFor(t.tierAt(o.bpPerPx)):1/0}})).views(t=>({get regionTooLarge(){let o=t.settledWindow;return o!==void 0&&o.end-o.start>t.settledCapBp},get regionTooLargeReason(){let o=t.settledWindow;return o?`Region too large for a graph cut (${ce(o.end-o.start)}, max ${ce(t.settledCapBp)})`:""},get zoomCanReleaseGate(){return!0},get fetchCanceled(){return t.loadCanceled}})).views(t=>({get svgReady(){return ra({error:t.error,regionTooLarge:t.regionTooLarge,extraTerminal:!1,fetchCanceled:t.loadCanceled},()=>!t.isLoading&&t.hasGraph&&!!t.layoutResult)}})).views(t=>({get displayPhase(){return pa({regionTooLarge:t.regionTooLarge,error:t.error??t.renderError},()=>sa({isMinimized:t.isMinimized,fetchInert:!1,viewportEmpty:t.host?.initialized===!0&&t.host.hasVisibleContent===!1,isLoading:t.isLoading||!t.hasGraph,fetchCanceled:t.loadCanceled,awaitingDependentData:!1,rendersCanvas:!0,canvasDrawn:t.painted&&t.geometryPainted},()=>!0,()=>t.host?.effectiveBodyMounted??!0))}})).actions(t=>({writeGrammar(o){for(let[r,n]of Object.entries(o))Ro(t,r,n)},setSubgraphContext(o){t.subgraphContext=o,t.dense=void 0},setSubgraphHaplotypes(o){t.subgraphHaplotypes=o,t.dense=void 0},setDense(o){t.dense=o},setHaplotypeNames(o){t.haplotypeNames=o},setMaxRegionBp(o){t.maxRegionBp=o},cut(){let o=t.cutRegion,r=t.sourceAdapter;if(!o||!r)return;let n=t.offReference(o);if(n){t.clearGraph(),t.setError(new Error(n));return}let a=t.cutTier==="coarse";return t.cutFoldBp=Math.round(Kt*(t.settledWindow?.bpPerPx??t.host?.bpPerPx??0)),t.cutSubgraph(r,o,{...t.cutOptions,tier:a?"coarse":void 0},t.cutFoldBp)}})).actions(t=>({recutAt(o){let r=t.tierAt(o.bpPerPx);return t.coarseCut=r==="coarse",t.cutRegion=Ur(o,t.capFor(r),F(t.chosenLayoutMode).cutMargins),t.recuts++,t.cut()}})).actions(t=>({settleOn(o){t.settledWindow=o;let r=F(t.chosenLayoutMode).cutMargins;if(t.regionTooLarge||Xt(t.dense,o)||!t.loadCanceled&&t.tierAt(o.bpPerPx)===t.cutTier&&Xr(t.cutRegion,o,r)&&!t.foldDrifted(o.bpPerPx))return!1;let n=t.recutAt(o),a=t.recuts;return Promise.resolve(n).then(()=>{H(t)&&t.recuts===a&&wt(t.error)&&this.refuseDenseCut(o)}),!0},refuseDenseCut(o){t.setDense(o),t.cutRegion=void 0,this.settleOn(t.settledWindow??o)},recut(){t.cutRegion?t.cut():t.settledWindow&&this.settleOn(t.settledWindow)},relayoutFrom(o){let r=t.host?Xe(t.host):void 0;return r&&!t.regionTooLarge&&(t.cutChangedFrom(o)||F(o).cutMargins!==F(t.chosenLayoutMode).cutMargins)?t.recutAt(r):t.recomputeLayout()},retryLoad(){t.cut()},reload(){t.cut()},cancelFetchByUser(){t.stopLoad()}})).actions(t=>({async fetchHaplotypeNames(o,r){try{let n=await R(t).rpcManager.call(ae(t),"GetGraphHaplotypes",{adapterConfig:o,signal:r});H(t)&&!r?.aborted&&t.setHaplotypeNames(n)}catch(n){r?.aborted||console.warn("[LinearGraphDisplay] no haplotype names",n)}}})).actions(t=>({stretchWithHost(o,r){let n=t.layoutBounds;if(!n||!t.followsHostView)return;t.viewportOwner==="fit"&&(t.viewportOwner="user");let a=o.bpPerPx/r.bpPerPx,i=t.translateY+t.scaleY*(n.minY+n.h/2);t.scale*=a,t.translateX=a*(t.translateX+o.offsetPx)-r.offsetPx,t.translateY=i-a*(i-t.translateY)}})).actions(t=>({forceLoad(){let o=t.settledWindow;o&&(t.setMaxRegionBp(Math.ceil(o.end-o.start)),t.settleOn(o))},afterAttach(){t.cutRegion&&!t.graph&&t.cut();let o;L(t,()=>{o?.abort()}),L(t,C(()=>{let n=t.sourceAdapter;return n&&Yo(n)?n:void 0},n=>{o?.abort(),o=void 0,t.setHaplotypeNames(void 0),n&&(o=new AbortController,t.fetchHaplotypeNames(n,o.signal))},{fireImmediately:!0,equals:(n,a)=>JSON.stringify(n)===JSON.stringify(a),name:"GraphHaplotypeNames"})),L(t,C(()=>t.hostPlacesX,n=>{n||t.releaseHost()},{name:"GraphHostPlacesX"})),L(t,C(()=>t.hostFrame,n=>{n&&t.hostTransform(n.scale,n.translateX)},{equals:(n,a)=>n?.scale===a?.scale&&n?.translateX===a?.translateX,fireImmediately:!0,name:"GraphHostFrame"}));let r;L(t,C(()=>t.host&&!t.hostPlacesX?{bpPerPx:t.host.bpPerPx,offsetPx:t.host.offsetPx}:void 0,n=>{let a=r;r=n,n&&a&&n.bpPerPx>0&&t.stretchWithHost(a,n)},{equals:(n,a)=>n?.bpPerPx===a?.bpPerPx&&n?.offsetPx===a?.offsetPx,fireImmediately:!0,name:"GraphHostStretch"})),L(t,C(()=>`${t.facetSetting.field} ${t.facetPlacement?.count}`,()=>{let n=(t.facetGridIn(t.paneCeiling-qe)?.total??0)+qe;(t.facetGrid?.total??0)+qe>t.height&&t.setHeight(Math.max(t.height,Math.ceil(n)))},{name:"GraphFacetHeight"})),L(t,C(()=>t.host?.coarseDynamicBlocks,n=>{let{host:a}=t,i=n&&a?Xe(a):void 0;i&&t.settleOn(i)},{fireImmediately:!0,name:"GraphHostSettle"}))}})).views(t=>({get graphViewSpec(){let o=t.host?Xe(t.host):void 0,r=t.sourceTrackId;if(!o||!r||!t.hasGraph||t.coarseCut||t.regionTooLarge||Xt(t.dense,o))return;let n=Math.floor(o.start),a=Math.ceil(o.end);return{...mi(t),loadedTrackId:r,loadedRegion:{refName:o.refName,assemblyName:o.assemblyName,start:n,end:a},subgraphHaplotypes:t.cutHaplotypes,maxRegionBp:Math.max(t.maxRegionBp,a-n),...t.grammar,layoutMode:t.chosenLayoutMode,connectedViewId:t.host?.id}}})).actions(t=>({openGraphView(){let o=t.graphViewSpec;o&&R(t).addView("GraphGenomeView",o)}})).views(t=>({cutMenuItems(){let o=t.sourceAdapter,r=t.sourceTrack;if(!o||!r||!Uo(o))return[];let n=Ae(o),a=St(r),i=t.haplotypeNames,p=t.subgraphHaplotypes,s=c=>{t.setSubgraphHaplotypes(c),t.recut()};return[{type:"subHeader",label:"Load"},{type:"radio",label:i?`Every haplotype in the graph (${i.length.toLocaleString()})`:"Every haplotype in the graph",checked:p?p.length===0:!n&&!a,onClick:()=>{s([])}},...n||a?[{type:"radio",label:n?"The track's default haplotypes":`The track's ${a?.length} assemblies`,checked:p===void 0,onClick:()=>{s(void 0)}}]:[],{type:"radio",label:"Chosen in Graph settings...",checked:(p?.length??0)>0,onClick:()=>{this.openSettings()}}]},openSettings(){R(t).queueDialog(o=>[hi,{model:t,onClose:o}])},async renderSvg(o){let{renderGraphTrackSvg:r}=await import("./chunks/renderSvg-HEEQJD5B.js");return r(t,o)},trackMenuItems(){let o=t.launchMenuItems();nt(o,{label:"Graph genome view",icon:Qe,disabled:!t.graphViewSpec,disabledHelpText:t.error&&!wt(t.error)?"The track could not cut a graph here":t.isLoading&&!t.hasGraph?"The track is still cutting its graph":"Zoom in until the track cuts a graph",onClick:()=>{t.openGraphView()}});let r=[...this.cutMenuItems(),...t.highlightMenuItems()];return[...r.length>0?[{label:"Haplotypes",icon:sn,subMenu:r}]:[],...t.graphMenuItems(),{label:"Graph settings...",icon:pn,helpText:"Subgraph, drawing and force-directed layout",onClick:()=>{this.openSettings()}},...o,...aa(t)]}}))}function qt(e){e.addDisplayType(()=>{let t=oa();return Object.assign(new ea({name:"LinearGraphDisplay",displayName:"Graph",configSchema:t,stateModel:ca(t),trackType:["GraphTrack","FeatureTrack","SyntenyTrack"],viewType:"LinearGenomeView",ReactComponent:ee(()=>import("./chunks/LinearGraphDisplay-CRIZLJDE.js"))}),{adapterCapabilities:["getSubgraph"]})})}function gi(e){let{uri:t,baseUri:o,csi:r}=e;return typeof t=="string"?{...e,bubblesLocation:{uri:t,baseUri:o},index:Le(t,o,r)}:e}var yi=O("MinigraphBubbleAdapter",{bubblesLocation:E("/path/to/graph.bb.bed.gz"),index:z("MinigraphBubbleIndex","/path/to/graph.bb.bed.gz.tbi"),assemblyNameToPanSN:{type:"frozen",defaultValue:{}}},{explicitlyTyped:!0,preProcessSnapshot:gi}),ua=yi;function Zt(e){e.addAdapterType(()=>new te({name:"MinigraphBubbleAdapter",displayName:"Minigraph bubble BED adapter",configSchema:ua,adapterMetadata:{category:"Graph adapters"},getAdapterClass:()=>import("./chunks/MinigraphBubbleAdapter-2HPTGZ5N.js").then(t=>t.default)}))}function da(e){let{uri:t,baseUri:o,csi:r}=e;return typeof t=="string"?{...e,segmentsLocation:{uri:`${t}.segs.bed.gz`,baseUri:o},segmentsIndex:Le(`${t}.segs.bed.gz`,o,r),linksLocation:{uri:`${t}.links.bed.gz`,baseUri:o},linksIndex:Le(`${t}.links.bed.gz`,o,r)}:e}function bi(e){let{coarse:t,baseUri:o,csi:r}=e;return Oe(da(typeof t=="object"&&t!==null?{...e,coarse:da({baseUri:o,csi:r,...t})}:e))}var fi=O("RgfaTabixCoarseTier",{aboveBpPerPx:{type:"maybeNumber"},foldBelowBp:{type:"maybeNumber"},segmentsLocation:E("/path/to/graph.tier.segs.bed.gz"),segmentsIndex:z("RgfaCoarseSegmentsIndex","/path/to/graph.tier.segs.bed.gz.tbi"),linksLocation:E("/path/to/graph.tier.links.bed.gz"),linksIndex:z("RgfaCoarseLinksIndex","/path/to/graph.tier.links.bed.gz.tbi")}),wi=O("RgfaTabixAdapter",{segmentsLocation:E("/path/to/graph.segs.bed.gz"),segmentsIndex:z("RgfaSegmentsIndex","/path/to/graph.segs.bed.gz.tbi"),linksLocation:E("/path/to/graph.links.bed.gz"),linksIndex:z("RgfaLinksIndex","/path/to/graph.links.bed.gz.tbi"),walksLocation:E(""),walksIndex:z("RgfaWalksIndex"),walkStepBudget:{type:"integer",defaultValue:Se.stepBudget},walkByteBudget:{type:"integer",defaultValue:Se.byteBudget},defaultHaplotypes:{type:"stringArray",defaultValue:[]},assemblyNameToPanSN:{type:"frozen",defaultValue:{}},coarse:fi},{explicitlyTyped:!0,preProcessSnapshot:bi}),ma=wi;function Qt(e){e.addAdapterType(()=>new te({name:"RgfaTabixAdapter",displayName:"Indexed rGFA adapter",configSchema:ma,adapterCapabilities:["getSubgraph"],adapterMetadata:{category:"Graph adapters"},getAdapterClass:()=>import("./chunks/RgfaTabixAdapter-GNH3QCPZ.js").then(t=>t.default)}))}var Mi=O("WalkTabixSyntenyAdapter",{assemblyNames:{type:"stringArray",defaultValue:[]},walksLocation:E("/path/to/graph.walks.bed.gz"),walksIndex:z("WalkTabixWalksIndex"),walkStepBudget:{type:"integer",defaultValue:Se.stepBudget},walkByteBudget:{type:"integer",defaultValue:Se.byteBudget},defaultHaplotypes:{type:"stringArray",defaultValue:[]},samplesTsvLocation:E(""),assemblyNameToPanSN:{type:"frozen",defaultValue:{}}},{explicitlyTyped:!0,preProcessSnapshot:Oe}),la=Mi;function eo(e){e.addAdapterType(()=>new te({name:"WalkTabixSyntenyAdapter",displayName:"Walk-indexed graph adapter",configSchema:la,adapterCapabilities:["getSubgraph","headerLanes","lanePairsOnAnchor","lanePairBatches"],adapterMetadata:{category:"Synteny adapters"},getAdapterClass:()=>import("./chunks/WalkTabixSyntenyAdapter-CUPHY36S.js").then(t=>t.default)}))}var ki=new Set(["RgfaTabixAdapter","GbzBaseSyntenyAdapter"]);function Si(e){return ht(e).toLowerCase().endsWith(".gbz.db")}function xi(e){let t=e.adapter;return t?.type!==void 0&&Kr.has(t.type)&&!t.assemblyNames?.length&&Array.isArray(e.assemblyNames)&&e.assemblyNames.length>0?{...e,adapter:{...t,assemblyNames:e.assemblyNames}}:e}function Ri(e){let t=e.adapter,[o]=Array.isArray(e.assemblyNames)?e.assemblyNames:[],r=t?.type==="RgfaTabixAdapter"&&t.walksLocation?Lo(t.walksLocation):void 0;return o&&r&&r!==o&&t?.assemblyNameToPanSN===void 0?{...e,adapter:{...t,assemblyNameToPanSN:{[o]:r}}}:e}function Ti(e,t,o){let r=n=>Fo({choice:n,loc:e,indexLoc:t,assembly:"",sample:""});if((!o||o==="GbzBaseSyntenyAdapter")&&Si(e))return r("GbzBaseSyntenyAdapter");if(!o||o==="RgfaTabixAdapter"){if(Ho(e))return r("RgfaTabixAdapter");if(ht(e).endsWith(Go)&&(t!==void 0||Po(e)))return r("RgfaTabixWalks")}}function to(e){e.addToExtensionPoint("Core-preProcessTrackConfig",xi),e.addToExtensionPoint("Core-preProcessTrackConfig",Ri),e.addToExtensionPoint("Core-guessAdapterForLocation",t=>(o,r,n)=>Ti(o,r,n)??t(o,r,n)),e.addToExtensionPoint("Core-guessTrackTypeForLocation",t=>(o,r)=>ki.has(o)?"GraphTrack":t(o,r))}function ha(e){let t;if($(e)){let{refName:o,start:r,end:n,assemblyName:a}=e;typeof o=="string"&&typeof r=="number"&&typeof n=="number"&&(t={refName:o,start:r,end:n,assemblyName:typeof a=="string"?a:void 0})}return t}function Gi(e,t,o){let r=e.connectedViewId;return r===void 0||r===t||!o.has(r)}function ga(e,t){return e.assemblyName===void 0||t===void 0||t.includes(e.assemblyName)}function Li(e){return(Array.isArray(e.tracks)?e.tracks:[]).flatMap(o=>$(o)&&Array.isArray(o.displays)?o.displays.filter(r=>$(r)&&r.type==="LinearGraphDisplay"):[])}function ya(e,t,o){let r=[],n=$e(e),a=new Set(n.map(i=>$(i)?i.id:void 0));for(let i of n){if($(i)&&i.id===t)for(let p of Li(i)){let s=ha(p.hoverHighlight);s&&ga(s,o)&&r.push({key:typeof p.id=="string"?p.id:"graph-track",region:s})}if($(i)&&i.type==="GraphGenomeView"&&Gi(i,t,a)){let p=ha(i.hoverHighlight);p&&ga(p,o)&&r.push({key:typeof i.id=="string"?i.id:"graph",region:p})}}return r}var vi=an()(e=>({highlight:{height:"100%",position:"absolute",background:We(e.palette.primary.main,.08),borderLeft:`1px solid ${We(e.palette.primary.main,.4)}`,borderRight:`1px solid ${We(e.palette.primary.main,.4)}`,pointerEvents:"none",zIndex:10}})),Ai=ft(function({model:t,region:o}){let{classes:r}=vi(),n=t.getHighlightCoords(o);return n?A("div",{"data-testid":"graph-node-highlight",className:r.highlight,style:{left:n.left,width:n.width}}):null}),Pi=ft(function({model:t}){let{views:o}=R(t);return A(fo,{children:ya([...o],t.id,t.assemblyNames).map(({key:r,region:n})=>A(Ai,{model:t,region:n},`graph-hover-${r}`))})}),ba=Pi;var Ci="LinearGenomeView-TracksContainerComponent";function oo(e){e.contributeToExtensionPoint(Ci,({model:t})=>A(ba,{model:t},"graphgenomeview-hover-highlight"))}function Bi(e){return e.views(t=>({get adapterConfig(){return qr(t,t.parentTrack.configuration)}}))}function ro(e){e.addToExtensionPoint("Core-extendPluggableElement",t=>(t instanceof ln&&Jt.includes(t.name)&&t.extendStateModel(Bi),t))}var fa="GraphGenomeView";var wa="7.3.2";var no=class extends cn{constructor(){super(...arguments);this.name=fa;this.version=wa}install(o){$t(o),qt(o),Yt(o),Ut(o),oo(o),Qt(o),Zt(o),Et(o),eo(o),Vt(o),to(o),ro(o),o.addRpcMethod(()=>new Ve(o)),o.addRpcMethod(()=>new Ne(o)),o.addRpcMethod(()=>new Ee(o)),o.addRpcMethod(()=>new Ie(o))}configure(o){try{go(o.rootModel)&&o.rootModel.appendToSubMenu(["Add"],{label:"Graph genome view",icon:Qe,onClick:r=>{r.addView("GraphGenomeView",{})}})}catch(r){console.warn("[GraphGenomeView] could not add the Add menu entry",r)}}};export{no as default};
|
|
7
7
|
//# sourceMappingURL=jbrowse-plugin-graphgenomeviewer.esm.js.map
|