jbrowse-plugin-graphgenomeviewer 6.2.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/chunks/{GbzBaseSyntenyAdapter-TLI5IUU7.js → GbzBaseSyntenyAdapter-PT4IARIU.js} +2 -2
  2. package/dist/chunks/{GbzBaseSyntenyAdapter-TLI5IUU7.js.map → GbzBaseSyntenyAdapter-PT4IARIU.js.map} +1 -1
  3. package/dist/chunks/{GraphGenomeView-5OPCROMQ.js → GraphGenomeView-6CRBLHNG.js} +2 -2
  4. package/dist/chunks/{GraphTrackSettingsDialog-FGLLUIEE.js → GraphTrackSettingsDialog-2QQYWNWW.js} +2 -2
  5. package/dist/chunks/{LinearGraphDisplay-NBJHGOYX.js → LinearGraphDisplay-KNEXJAAV.js} +2 -2
  6. package/dist/chunks/{MinigraphBubbleAdapter-LQUIL3MD.js → MinigraphBubbleAdapter-MQRO5J7Z.js} +2 -2
  7. package/dist/chunks/{RgfaTabixAdapter-3BFNY4SB.js → RgfaTabixAdapter-ALEXRTPS.js} +2 -2
  8. package/dist/chunks/{bandage-layout-3AR6BCUD-I6CCWYSR.js → bandage-layout-3AR6BCUD-BW536UT3.js} +1 -1
  9. package/dist/chunks/{bandage-layout-3AR6BCUD-I6CCWYSR.js.map → bandage-layout-3AR6BCUD-BW536UT3.js.map} +1 -1
  10. package/dist/chunks/{chunk-EKMGHBWM.js → chunk-3MJ4ZXML.js} +1 -1
  11. package/dist/chunks/{chunk-EKMGHBWM.js.map → chunk-3MJ4ZXML.js.map} +1 -1
  12. package/dist/chunks/{chunk-O5EHYU3Y.js → chunk-4F2MWXJF.js} +2 -2
  13. package/dist/chunks/{chunk-NGQRKSHY.js → chunk-4LEFC42C.js} +2 -2
  14. package/dist/chunks/{chunk-NGQRKSHY.js.map → chunk-4LEFC42C.js.map} +2 -2
  15. package/dist/chunks/{chunk-F7V6ZPKD.js → chunk-5GRQIE5Q.js} +1 -1
  16. package/dist/chunks/{chunk-F7V6ZPKD.js.map → chunk-5GRQIE5Q.js.map} +1 -1
  17. package/dist/chunks/{chunk-JYZAMHIP.js → chunk-6IK6ZDSI.js} +2 -2
  18. package/dist/chunks/{chunk-JYZAMHIP.js.map → chunk-6IK6ZDSI.js.map} +1 -1
  19. package/dist/chunks/{chunk-X24J6VF4.js → chunk-C4PHHPUP.js} +1 -1
  20. package/dist/chunks/{chunk-X24J6VF4.js.map → chunk-C4PHHPUP.js.map} +1 -1
  21. package/dist/chunks/{chunk-XWGKHQYO.js → chunk-CJ47OHWP.js} +2 -2
  22. package/dist/chunks/{chunk-XWGKHQYO.js.map → chunk-CJ47OHWP.js.map} +1 -1
  23. package/dist/chunks/{chunk-7MWOPEIC.js → chunk-ETTZTJNK.js} +1 -1
  24. package/dist/chunks/{chunk-7MWOPEIC.js.map → chunk-ETTZTJNK.js.map} +1 -1
  25. package/dist/chunks/chunk-PZE3GABA.js +2 -0
  26. package/dist/chunks/chunk-PZE3GABA.js.map +7 -0
  27. package/dist/chunks/{chunk-ZKLOV6MW.js → chunk-SYHZ5T54.js} +2 -2
  28. package/dist/chunks/{chunk-ZKLOV6MW.js.map → chunk-SYHZ5T54.js.map} +1 -1
  29. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +4 -4
  30. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +3 -3
  31. package/package.json +2 -3
  32. package/src/GraphGenomeView/pane/hostViews.ts +1 -1
  33. package/src/GraphGenomeView/pane/paneBase.ts +1 -1
  34. package/src/GraphGenomeView/renderer/GraphRenderer.ts +2 -2
  35. package/src/version.ts +1 -1
  36. package/dist/chunks/chunk-LZUNK4MQ.js +0 -2
  37. package/dist/chunks/chunk-LZUNK4MQ.js.map +0 -7
  38. /package/dist/chunks/{GraphGenomeView-5OPCROMQ.js.map → GraphGenomeView-6CRBLHNG.js.map} +0 -0
  39. /package/dist/chunks/{GraphTrackSettingsDialog-FGLLUIEE.js.map → GraphTrackSettingsDialog-2QQYWNWW.js.map} +0 -0
  40. /package/dist/chunks/{LinearGraphDisplay-NBJHGOYX.js.map → LinearGraphDisplay-KNEXJAAV.js.map} +0 -0
  41. /package/dist/chunks/{MinigraphBubbleAdapter-LQUIL3MD.js.map → MinigraphBubbleAdapter-MQRO5J7Z.js.map} +0 -0
  42. /package/dist/chunks/{RgfaTabixAdapter-3BFNY4SB.js.map → RgfaTabixAdapter-ALEXRTPS.js.map} +0 -0
  43. /package/dist/chunks/{chunk-O5EHYU3Y.js.map → chunk-4F2MWXJF.js.map} +0 -0
@@ -1,2 +1,2 @@
1
1
  var a=0;function l(t){return t.stable!==void 0}function o(t){return t.stable?.rank===a}function f(t){return t.stable!==void 0&&t.stable.rank>a}function c(t){return t.nodes.filter(o)}function b(t,n){return t.stable.start<n.end&&t.stable.start+t.length>n.start}function u(t){let n={};for(let e of t)n[e.id]=[{x:e.stable.start,y:0},{x:e.stable.start+e.length,y:0}];return n}function d(t,n){let e=0,r=t.length;for(;e<r;){let s=e+r>>1;t[s].stable.start<n?e=s+1:r=s}return e}function i(t){let n=1/0,e=-1/0;for(let r of t)n=Math.min(n,r.stable.start),e=Math.max(e,r.stable.start+r.length);return e-n}function h(t,n){return n&&n.end>n.start?n.end-n.start:i(t)}export{a,l as b,o as c,f as d,c as e,b as f,u as g,d as h,i,h as j};
2
- //# sourceMappingURL=chunk-F7V6ZPKD.js.map
2
+ //# sourceMappingURL=chunk-5GRQIE5Q.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-FYQWPEEY.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-FYQWPEEY.js"],
4
4
  "sourcesContent": ["// 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 let lo = 0;\n let hi = nodes.length;\n while (lo < hi) {\n const mid = lo + hi >> 1;\n if (nodes[mid].stable.start < bp) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\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"],
5
5
  "mappings": "AACA,IAAIA,EAAiB,EACrB,SAASC,EAAWC,EAAM,CACxB,OAAOA,EAAK,SAAW,MACzB,CACA,SAASC,EAAWD,EAAM,CACxB,OAAOA,EAAK,QAAQ,OAASF,CAC/B,CACA,SAASI,EAAeF,EAAM,CAC5B,OAAOA,EAAK,SAAW,QAAUA,EAAK,OAAO,KAAOF,CACtD,CACA,SAASK,EAAcC,EAAO,CAC5B,OAAOA,EAAM,MAAM,OAAOH,CAAU,CACtC,CACA,SAASI,EAAeL,EAAMM,EAAQ,CACpC,OAAON,EAAK,OAAO,MAAQM,EAAO,KAAON,EAAK,OAAO,MAAQA,EAAK,OAASM,EAAO,KACpF,CACA,SAASC,EAAkBC,EAAU,CACnC,IAAMC,EAAY,CAAC,EACnB,QAAWT,KAAQQ,EACjBC,EAAUT,EAAK,EAAE,EAAI,CACnB,CAAE,EAAGA,EAAK,OAAO,MAAO,EAAG,CAAE,EAC7B,CAAE,EAAGA,EAAK,OAAO,MAAQA,EAAK,OAAQ,EAAG,CAAE,CAC7C,EAEF,OAAOS,CACT,CACA,SAASC,EAAmBC,EAAOC,EAAI,CACrC,IAAIC,EAAK,EACLC,EAAKH,EAAM,OACf,KAAOE,EAAKC,GAAI,CACd,IAAMC,EAAMF,EAAKC,GAAM,EACnBH,EAAMI,CAAG,EAAE,OAAO,MAAQH,EAC5BC,EAAKE,EAAM,EAEXD,EAAKC,CAET,CACA,OAAOF,CACT,CACA,SAASG,EAAaR,EAAU,CAC9B,IAAIS,EAAM,IACNC,EAAM,KACV,QAAWlB,KAAQQ,EACjBS,EAAM,KAAK,IAAIA,EAAKjB,EAAK,OAAO,KAAK,EACrCkB,EAAM,KAAK,IAAIA,EAAKlB,EAAK,OAAO,MAAQA,EAAK,MAAM,EAErD,OAAOkB,EAAMD,CACf,CACA,SAASE,EAAcX,EAAUY,EAAQ,CACvC,OAAOA,GAAUA,EAAO,IAAMA,EAAO,MAAQA,EAAO,IAAMA,EAAO,MAAQJ,EAAaR,CAAQ,CAChG",
6
6
  "names": ["REFERENCE_RANK", "isAnchored", "node", "isBackbone", "isOffReference", "backboneNodes", "graph", "overlapsWindow", "window", "backbonePositions", "backbone", "positions", "firstNodeAtOrAfter", "nodes", "bp", "lo", "hi", "mid", "backboneSpan", "min", "max", "referenceSpan", "region"]
@@ -1,5 +1,5 @@
1
- import{c as y}from"./chunk-F7V6ZPKD.js";import{a as m,b as L,c as S,d as u,e as N}from"./chunk-X24J6VF4.js";var O="unknown";function T(e){let t=e.split(" ");return{fields:t,name:t.slice(1,4).join(" "),start:+t[4],end:+t[5]}}var b=e=>e.fields[6].match(/[<>][^<>]+/g)??[];function A(e){let t=new Map;for(let o of e)if(o.startsWith("S ")){let[,n,s,...a]=o.split(" "),i=a.find(r=>r.startsWith("LN:i:"));t.set(n,s==="*"&&i?+i.slice(5):s.length)}return t}function G(e,t,o){if(t.end<=e.end)return e;let n=b(t),s=t.start;for(let[a,i]of n.entries()){if(s===e.end){let f=[...e.fields];return f[5]=String(t.end),f[6]=e.fields[6]+n.slice(a).join(""),{...e,fields:f,end:t.end}}let r=o.get(i.slice(1));if(s>e.end||r===void 0)return;s+=r}}function B(e,t,o){let n=[];for(let s of e.sort((a,i)=>a.start-i.start)){let a=n.at(-1),[,i,r,f]=s.fields,d=a!==void 0&&(s.start<a.end||s.start===a.end&&!o(i,+r,f,s.start))?G(a,s,t):void 0;d?n[n.length-1]=d:n.push(s)}return n}var M=e=>e==="+"?"-":"+";function*R(e){let t=b(e).map(o=>({id:o.slice(1),sign:o.startsWith(">")?"+":"-"}));for(let o=1;o<t.length;o++){let n=t[o-1],s=t[o];yield{forward:`L ${n.id} ${n.sign} ${s.id} ${s.sign} 0M`,reverse:`L ${s.id} ${M(s.sign)} ${n.id} ${M(n.sign)} 0M`}}}function x(e,t){if(e.length<=1)return e[0]??"";let o=e.map(c=>c.split(`
1
+ import{c as y}from"./chunk-5GRQIE5Q.js";import{a as m,b as L,c as S,d as u,e as N}from"./chunk-C4PHHPUP.js";var O="unknown";function T(e){let t=e.split(" ");return{fields:t,name:t.slice(1,4).join(" "),start:+t[4],end:+t[5]}}var b=e=>e.fields[6].match(/[<>][^<>]+/g)??[];function A(e){let t=new Map;for(let o of e)if(o.startsWith("S ")){let[,n,s,...a]=o.split(" "),i=a.find(r=>r.startsWith("LN:i:"));t.set(n,s==="*"&&i?+i.slice(5):s.length)}return t}function G(e,t,o){if(t.end<=e.end)return e;let n=b(t),s=t.start;for(let[a,i]of n.entries()){if(s===e.end){let f=[...e.fields];return f[5]=String(t.end),f[6]=e.fields[6]+n.slice(a).join(""),{...e,fields:f,end:t.end}}let r=o.get(i.slice(1));if(s>e.end||r===void 0)return;s+=r}}function B(e,t,o){let n=[];for(let s of e.sort((a,i)=>a.start-i.start)){let a=n.at(-1),[,i,r,f]=s.fields,d=a!==void 0&&(s.start<a.end||s.start===a.end&&!o(i,+r,f,s.start))?G(a,s,t):void 0;d?n[n.length-1]=d:n.push(s)}return n}var M=e=>e==="+"?"-":"+";function*R(e){let t=b(e).map(o=>({id:o.slice(1),sign:o.startsWith(">")?"+":"-"}));for(let o=1;o<t.length;o++){let n=t[o-1],s=t[o];yield{forward:`L ${n.id} ${n.sign} ${s.id} ${s.sign} 0M`,reverse:`L ${s.id} ${M(s.sign)} ${n.id} ${M(n.sign)} 0M`}}}function x(e,t){if(e.length<=1)return e[0]??"";let o=e.map(c=>c.split(`
2
2
  `).filter(l=>l!=="")),n=(c,l)=>c.filter(w=>w.startsWith(`${l} `)),s=A(o.flat()),a=0,i=o.map(c=>{let l=n(c,"W").map(T),w=a;for(let h of l.filter(g=>g.fields[1]===O)){let g=+h.fields[2]+w;h.fields[2]=String(g),h.name=h.fields.slice(1,4).join(" "),a=Math.max(a,g)}return l}),r=new Map;for(let c of[...i.flatMap(l=>l.slice(0,1)),...i.flatMap(l=>l.slice(1))]){let l=r.get(c.name);l?l.push(c):r.set(c.name,[c])}let f=[...r.values()].flatMap(c=>B(c,s,t)),p=new Set(o.flatMap(c=>n(c,"L")));for(let c of f)for(let l of R(c))!p.has(l.forward)&&!p.has(l.reverse)&&p.add(l.forward);return`${[...new Set([...n(o[0],"H"),...o.flatMap(c=>n(c,"S")),...p,...f.map(c=>c.fields.join(" "))])].join(`
3
3
  `)}
4
4
  `}var F=new Map([["hg38","GRCh38"],["hg19","GRCh37"],["hs1","CHM13"],["t2t-chm13","CHM13"],["chm13v2","CHM13"]]);function v(e){return F.get(e.toLowerCase())}function $(e){let t=e.includes("#")?m(e):void 0;return t===void 0||L(t)?void 0:t}function C(e){return S(e)??m(e)}function E(e){let t=new Set((e.anchorPaths??[]).map(n=>n.name));for(let n of e.nodes)n.stable&&t.add(n.stable.refName);let o=new Map;for(let n of t){let s=$(n);s!==void 0&&(o.get(s)??o.set(s,new Set).get(s)).add(C(n))}return o}function k(e,t){let o=new Set(e.map(f=>$(f.refName))),[n]=o;if(o.size!==1||n===void 0)return{contigs:e,prefixes:[],named:!1};let s=new Set(e.map(f=>C(f.refName))),a=[...t.get(n)??[]].every(f=>s.has(f)),i=new Set(e.map(f=>S(f.refName))),[r]=i;return{contigs:e,prefixes:[...a?[n]:[],...i.size===1&&r?[r]:[]],named:!0}}function H(e){let t=new Map;for(let n of e.nodes)if(y(n)){let{refName:s,start:a}=n.stable,i=a+n.length,r=t.get(s);r?(r.start=Math.min(r.start,a),r.end=Math.max(r.end,i)):t.set(s,{refName:s,contig:u(s),start:a,end:i})}let o=[...t.values()];return o.length?k(o,E(e)):void 0}function te(e,t){let o=H(e),n=t?u(t.refName):o?.contigs.length===1?o.contigs[0].contig:void 0,s=o?.named?m(o.contigs[0].refName):void 0;return n&&(s?`${s} ${n}`:n)}function U(e,t){let o=i=>[i.name,...i.aliases??[]],n=i=>r=>o(r).some(f=>f.toLowerCase()===i.toLowerCase()),s=[...e?.prefixes??[]].reverse(),a=e?.prefixes.find(i=>!i.includes("#"))?.toLowerCase();for(let i of s){let r=t.find(n(i));if(r)return r}return a===void 0?void 0:t.find(i=>o(i).some(r=>v(r)?.toLowerCase()===a))}function ne(e,t){let o=E(e);return e.anchorPaths?.find(n=>U(k([{refName:n.name,contig:u(n.name),start:n.start,end:n.start+n.length}],o),[t]))}function z(e){let t=e.replace(/^chr/i,""),o=t?/^(M|MT)$/i.test(t)?["M","MT"]:[t]:[];return[...new Set([e,...o.flatMap(n=>[n,`chr${n}`])])]}function K(e,t={}){let o=new Set(e),n=new Map;for(let s of o){let a=u(s),i=t[a];for(let r of new Set([...z(a),...i?[i]:[]]))n.set(r,n.has(r)?void 0:s)}return s=>o.has(s)?s:n.get(s)}function oe(e,t,o){let n=K(t.contigs.map(s=>s.refName),o);return e.flatMap(s=>{let a=n(s.refName);return a===void 0?[]:[a===s.refName?s:{...s,refName:a}]})}var W=class extends Error{constructor(e,t){super(t.length===0?`the graph names no reference sample (gbwt_reference_samples) and the anchor "${e}" maps to none; set referenceSample`:`the anchor "${e}" is none of the graph's reference samples (${t.join(", ")}); set referenceSample or map it through assemblyNameToPanSN`),this.name="NoReferenceSampleError"}},j=class extends Error{constructor(e,t,o){super(`this ${t.toLocaleString()} bp window reads more than nodeLimit (${e.toLocaleString()}) graph nodes; zoom in to about ${o.toLocaleString()} bp or raise nodeLimit`),this.fitsBp=o,this.name="NodeLimitError",this.regionTooLarge=!0}};function P(e){return`${e.sample}#${e.haplotype}`}function D(e,t){let o=P(e);return t===void 0||t.some(n=>N(o,n))}async function Q(e){return(await e.tag("gbwt_reference_samples")??"").split(/\s+/).filter(t=>t!=="")}function Z(e,t){let o=e.toLowerCase(),n=v(e)?.toLowerCase();return t.find(s=>s===e)??t.find(s=>s.toLowerCase()===o)??t.find(s=>s.toLowerCase()===n)}function q({configured:e,anchorPrefix:t,referenceSamples:o}){if(e!=="")return e;let n=Z(m(t),o)??(o.length===1?o[0]:void 0);if(n===void 0)throw new W(t,o);return n}async function I(e,t,o){let n=(await e.paths()).find(s=>s.isIndexed&&s.name.sample===t&&s.name.contig===o);return n?{sample:n.name.sample,contig:o,haplotype:n.name.haplotype}:void 0}function _(e,t,o){if(e instanceof Error&&(e.name==="SubgraphLimitError"||/^Subgraph size limit of \d+ nodes exceeded/.test(e.message))){let s=e.walkedBp,a=typeof s=="number"&&s>0?Math.floor(s*.8):Math.floor(o/2);return new j(t,o,Math.max(a,1))}else return}var J={context:1e3,snarls:"contained",limit:1e5};async function V(e,t,o,n,s){if(!t)return"";let a=await e.getSubgraphs({...s,path:t,start:o,end:n,haplotypes:"all"}).catch(r=>{throw _(r,s.limit,n-o)??r}),i=await e.paths();return x(await Promise.all(a.map(r=>r.toGFA())),(r,f,p,d)=>i.some(({name:c})=>c.sample===r&&c.haplotype===f&&c.contig===p&&c.fragment===d))}export{H as a,te as b,U as c,ne as d,oe as e,W as f,j as g,P as h,D as i,Q as j,q as k,I as l,_ as m,J as n,V as o};
5
- //# sourceMappingURL=chunk-JYZAMHIP.js.map
5
+ //# sourceMappingURL=chunk-6IK6ZDSI.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-WSIFAZU7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RAKOB6IV.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LTUWJKHD.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-WSIFAZU7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RAKOB6IV.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LTUWJKHD.js"],
4
4
  "sourcesContent": ["// src/gbzJoin.ts\nvar UNKNOWN_SAMPLE = \"unknown\";\nfunction parseWalk(line) {\n const fields = line.split(\"\t\");\n return {\n fields,\n name: fields.slice(1, 4).join(\"\t\"),\n start: +fields[4],\n end: +fields[5]\n };\n}\nvar stepsOf = (walk) => walk.fields[6].match(/[<>][^<>]+/g) ?? [];\nfunction segmentLengths(lines) {\n const lengths = /* @__PURE__ */ new Map();\n for (const line of lines) {\n if (line.startsWith(\"S\t\")) {\n const [, id, sequence, ...tags] = line.split(\"\t\");\n const ln = tags.find((tag) => tag.startsWith(\"LN:i:\"));\n lengths.set(\n id,\n sequence === \"*\" && ln ? +ln.slice(\"LN:i:\".length) : sequence.length\n );\n }\n }\n return lengths;\n}\nfunction extend(a, b, lengths) {\n if (b.end <= a.end) {\n return a;\n }\n const steps = stepsOf(b);\n let pos = b.start;\n for (const [i, step] of steps.entries()) {\n if (pos === a.end) {\n const fields = [...a.fields];\n fields[5] = String(b.end);\n fields[6] = a.fields[6] + steps.slice(i).join(\"\");\n return { ...a, fields, end: b.end };\n }\n const length = lengths.get(step.slice(1));\n if (pos > a.end || length === void 0) {\n return void 0;\n }\n pos += length;\n }\n return void 0;\n}\nfunction joinPieces(pieces, lengths, startsPath) {\n const joined = [];\n for (const piece of pieces.sort((a, b) => a.start - b.start)) {\n const last = joined.at(-1);\n const [, sample, haplotype, contig] = piece.fields;\n const joins = last !== void 0 && (piece.start < last.end || piece.start === last.end && !startsPath(sample, +haplotype, contig, piece.start));\n const extended = joins ? extend(last, piece, lengths) : void 0;\n if (extended) {\n joined[joined.length - 1] = extended;\n } else {\n joined.push(piece);\n }\n }\n return joined;\n}\nvar flip = (sign) => sign === \"+\" ? \"-\" : \"+\";\nfunction* stepLinks(walk) {\n const steps = stepsOf(walk).map((step) => ({\n id: step.slice(1),\n sign: step.startsWith(\">\") ? \"+\" : \"-\"\n }));\n for (let i = 1; i < steps.length; i++) {\n const a = steps[i - 1];\n const b = steps[i];\n yield {\n forward: `L\t${a.id}\t${a.sign}\t${b.id}\t${b.sign}\t0M`,\n reverse: `L\t${b.id}\t${flip(b.sign)}\t${a.id}\t${flip(a.sign)}\t0M`\n };\n }\n}\nfunction joinCuts(gfas, startsPath) {\n if (gfas.length <= 1) {\n return gfas[0] ?? \"\";\n }\n const cuts = gfas.map((gfa) => gfa.split(\"\\n\").filter((line) => line !== \"\"));\n const ofType = (cut, type) => cut.filter((line) => line.startsWith(`${type}\t`));\n const lengths = segmentLengths(cuts.flat());\n let unknownOffset = 0;\n const walksByCut = cuts.map((cut) => {\n const walks2 = ofType(cut, \"W\").map(parseWalk);\n const offset = unknownOffset;\n for (const walk of walks2.filter((w) => w.fields[1] === UNKNOWN_SAMPLE)) {\n const haplotype = +walk.fields[2] + offset;\n walk.fields[2] = String(haplotype);\n walk.name = walk.fields.slice(1, 4).join(\"\t\");\n unknownOffset = Math.max(unknownOffset, haplotype);\n }\n return walks2;\n });\n const byName = /* @__PURE__ */ new Map();\n for (const walk of [\n ...walksByCut.flatMap((walks2) => walks2.slice(0, 1)),\n ...walksByCut.flatMap((walks2) => walks2.slice(1))\n ]) {\n const pieces = byName.get(walk.name);\n if (pieces) {\n pieces.push(walk);\n } else {\n byName.set(walk.name, [walk]);\n }\n }\n const walks = [...byName.values()].flatMap(\n (pieces) => joinPieces(pieces, lengths, startsPath)\n );\n const links = new Set(cuts.flatMap((cut) => ofType(cut, \"L\")));\n for (const walk of walks) {\n for (const link of stepLinks(walk)) {\n if (!links.has(link.forward) && !links.has(link.reverse)) {\n links.add(link.forward);\n }\n }\n }\n const lines = /* @__PURE__ */ new Set([\n ...ofType(cuts[0], \"H\"),\n ...cuts.flatMap((cut) => ofType(cut, \"S\")),\n ...links,\n ...walks.map((walk) => walk.fields.join(\"\t\"))\n ]);\n return `${[...lines].join(\"\\n\")}\n`;\n}\n\nexport {\n joinCuts\n};\n", "import {\n isGenericSample,\n panSNContig,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-BPLIXMH7.js\";\nimport {\n isBackbone\n} from \"./chunk-FYQWPEEY.js\";\n\n// src/reference.ts\nvar WELL_KNOWN_SAMPLES = /* @__PURE__ */ new Map([\n [\"hg38\", \"GRCh38\"],\n [\"hg19\", \"GRCh37\"],\n [\"hs1\", \"CHM13\"],\n [\"t2t-chm13\", \"CHM13\"],\n [\"chm13v2\", \"CHM13\"]\n]);\nfunction wellKnownSample(assemblyName) {\n return WELL_KNOWN_SAMPLES.get(assemblyName.toLowerCase());\n}\nfunction sampleOf(refName) {\n const sample = refName.includes(\"#\") ? panSNSample(refName) : void 0;\n return sample === void 0 || isGenericSample(sample) ? void 0 : sample;\n}\nfunction haplotypeOf(refName) {\n return panSNHaplotype(refName) ?? panSNSample(refName);\n}\nfunction graphHaplotypes(graph) {\n const refNames = new Set((graph.anchorPaths ?? []).map((p) => p.name));\n for (const node of graph.nodes) {\n if (node.stable) {\n refNames.add(node.stable.refName);\n }\n }\n const bySample = /* @__PURE__ */ new Map();\n for (const refName of refNames) {\n const sample = sampleOf(refName);\n if (sample !== void 0) {\n const haplotypes = bySample.get(sample) ?? bySample.set(sample, /* @__PURE__ */ new Set()).get(sample);\n haplotypes.add(haplotypeOf(refName));\n }\n }\n return bySample;\n}\nfunction backboneFrom(contigs, haplotypes) {\n const samples = new Set(contigs.map((c) => sampleOf(c.refName)));\n const [sample] = samples;\n if (samples.size !== 1 || sample === void 0) {\n return { contigs, prefixes: [], named: false };\n }\n const own = new Set(contigs.map((c) => haplotypeOf(c.refName)));\n const unique = [...haplotypes.get(sample) ?? []].every((h) => own.has(h));\n const shared = new Set(contigs.map((c) => panSNHaplotype(c.refName)));\n const [haplotype] = shared;\n return {\n contigs,\n prefixes: [\n ...unique ? [sample] : [],\n ...shared.size === 1 && haplotype ? [haplotype] : []\n ],\n named: true\n };\n}\nfunction graphBackbone(graph) {\n const spans = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n if (isBackbone(node)) {\n const { refName, start } = node.stable;\n const end = start + node.length;\n const span = spans.get(refName);\n if (span) {\n span.start = Math.min(span.start, start);\n span.end = Math.max(span.end, end);\n } else {\n spans.set(refName, {\n refName,\n contig: panSNContig(refName),\n start,\n end\n });\n }\n }\n }\n const contigs = [...spans.values()];\n return contigs.length ? backboneFrom(contigs, graphHaplotypes(graph)) : void 0;\n}\nfunction referenceLabel(graph, region) {\n const backbone = graphBackbone(graph);\n const contig = region ? panSNContig(region.refName) : backbone?.contigs.length === 1 ? backbone.contigs[0].contig : void 0;\n const sample = backbone?.named ? panSNSample(backbone.contigs[0].refName) : void 0;\n return contig && (sample ? `${sample} ${contig}` : contig);\n}\nfunction backboneAssembly(backbone, assemblies) {\n const names = (a) => [a.name, ...a.aliases ?? []];\n const naming = (prefix) => (a) => names(a).some((n) => n.toLowerCase() === prefix.toLowerCase());\n const prefixes = [...backbone?.prefixes ?? []].reverse();\n const sample = backbone?.prefixes.find((p) => !p.includes(\"#\"))?.toLowerCase();\n for (const prefix of prefixes) {\n const assembly = assemblies.find(naming(prefix));\n if (assembly) {\n return assembly;\n }\n }\n return sample === void 0 ? void 0 : assemblies.find(\n (a) => names(a).some((n) => wellKnownSample(n)?.toLowerCase() === sample)\n );\n}\nfunction assemblyWalk(graph, assembly) {\n const haplotypes = graphHaplotypes(graph);\n return graph.anchorPaths?.find(\n (walk) => backboneAssembly(\n backboneFrom(\n [\n {\n refName: walk.name,\n contig: panSNContig(walk.name),\n start: walk.start,\n end: walk.start + walk.length\n }\n ],\n haplotypes\n ),\n [assembly]\n )\n );\n}\nfunction contigNames(contig) {\n const bare = contig.replace(/^chr/i, \"\");\n const forms = !bare ? [] : /^(M|MT)$/i.test(bare) ? [\"M\", \"MT\"] : [bare];\n return [.../* @__PURE__ */ new Set([contig, ...forms.flatMap((f) => [f, `chr${f}`])])];\n}\nfunction refNameBinding(refNames, aliases = {}) {\n const exact = new Set(refNames);\n const byName = /* @__PURE__ */ new Map();\n for (const refName of exact) {\n const contig = panSNContig(refName);\n const alias = aliases[contig];\n for (const name of /* @__PURE__ */ new Set([\n ...contigNames(contig),\n ...alias ? [alias] : []\n ])) {\n byName.set(name, byName.has(name) ? void 0 : refName);\n }\n }\n return (name) => exact.has(name) ? name : byName.get(name);\n}\nfunction featuresOnBackbone(features, backbone, aliases) {\n const bind = refNameBinding(\n backbone.contigs.map((c) => c.refName),\n aliases\n );\n return features.flatMap((f) => {\n const refName = bind(f.refName);\n return refName === void 0 ? [] : [refName === f.refName ? f : { ...f, refName }];\n });\n}\n\nexport {\n WELL_KNOWN_SAMPLES,\n wellKnownSample,\n graphBackbone,\n referenceLabel,\n backboneAssembly,\n assemblyWalk,\n contigNames,\n refNameBinding,\n featuresOnBackbone\n};\n", "import {\n joinCuts\n} from \"./chunk-WSIFAZU7.js\";\nimport {\n wellKnownSample\n} from \"./chunk-RAKOB6IV.js\";\nimport {\n panSNMatchesPrefix,\n panSNSample\n} from \"./chunk-BPLIXMH7.js\";\n\n// src/gbzWindow.ts\nvar NoReferenceSampleError = class extends Error {\n constructor(anchor, referenceSamples) {\n super(\n referenceSamples.length === 0 ? `the graph names no reference sample (gbwt_reference_samples) and the anchor \"${anchor}\" maps to none; set referenceSample` : `the anchor \"${anchor}\" is none of the graph's reference samples (${referenceSamples.join(\", \")}); set referenceSample or map it through assemblyNameToPanSN`\n );\n this.name = \"NoReferenceSampleError\";\n }\n};\nvar NodeLimitError = class extends Error {\n constructor(limit, windowBp, fitsBp) {\n super(\n `this ${windowBp.toLocaleString()} bp window reads more than nodeLimit (${limit.toLocaleString()}) graph nodes; zoom in to about ${fitsBp.toLocaleString()} bp or raise nodeLimit`\n );\n this.fitsBp = fitsBp;\n this.name = \"NodeLimitError\";\n this.regionTooLarge = true;\n }\n};\nfunction haplotypePrefix(name) {\n return `${name.sample}#${name.haplotype}`;\n}\nfunction haplotypeWanted(name, wanted) {\n const prefix = haplotypePrefix(name);\n return wanted === void 0 || wanted.some((candidate) => panSNMatchesPrefix(prefix, candidate));\n}\nasync function referenceSamplesOf(db) {\n return (await db.tag(\"gbwt_reference_samples\") ?? \"\").split(/\\s+/).filter((sample) => sample !== \"\");\n}\nfunction aliasedSample(anchorSample, referenceSamples) {\n const lower = anchorSample.toLowerCase();\n const alias = wellKnownSample(anchorSample)?.toLowerCase();\n return referenceSamples.find((s) => s === anchorSample) ?? referenceSamples.find((s) => s.toLowerCase() === lower) ?? referenceSamples.find((s) => s.toLowerCase() === alias);\n}\nfunction resolveReferenceSample({\n configured,\n anchorPrefix,\n referenceSamples\n}) {\n if (configured !== \"\") {\n return configured;\n }\n const sample = aliasedSample(panSNSample(anchorPrefix), referenceSamples) ?? (referenceSamples.length === 1 ? referenceSamples[0] : void 0);\n if (sample === void 0) {\n throw new NoReferenceSampleError(anchorPrefix, referenceSamples);\n }\n return sample;\n}\nasync function referencePathQuery(db, referenceSample, refName) {\n const path = (await db.paths()).find(\n (p) => p.isIndexed && p.name.sample === referenceSample && p.name.contig === refName\n );\n return path ? {\n sample: path.name.sample,\n contig: refName,\n haplotype: path.name.haplotype\n } : void 0;\n}\nfunction nodeLimitError(error, limit, windowBp) {\n const isLimit = error instanceof Error && (error.name === \"SubgraphLimitError\" || /^Subgraph size limit of \\d+ nodes exceeded/.test(error.message));\n if (!isLimit) {\n return void 0;\n } else {\n const walked = error.walkedBp;\n const fits = typeof walked === \"number\" && walked > 0 ? Math.floor(walked * 0.8) : Math.floor(windowBp / 2);\n return new NodeLimitError(limit, windowBp, Math.max(fits, 1));\n }\n}\nvar GBZ_CUT_DEFAULTS = {\n context: 1e3,\n snarls: \"contained\",\n limit: 1e5\n};\nasync function cutWindowGFA(db, query, start, end, opts) {\n if (!query) {\n return \"\";\n }\n const subgraphs = await db.getSubgraphs({ ...opts, path: query, start, end, haplotypes: \"all\" }).catch((error) => {\n throw nodeLimitError(error, opts.limit, end - start) ?? error;\n });\n const paths = await db.paths();\n return joinCuts(\n await Promise.all(subgraphs.map((subgraph) => subgraph.toGFA())),\n (sample, haplotype, contig, at) => paths.some(\n ({ name }) => name.sample === sample && name.haplotype === haplotype && name.contig === contig && name.fragment === at\n )\n );\n}\n\nexport {\n NoReferenceSampleError,\n NodeLimitError,\n haplotypePrefix,\n haplotypeWanted,\n referenceSamplesOf,\n resolveReferenceSample,\n referencePathQuery,\n nodeLimitError,\n GBZ_CUT_DEFAULTS,\n cutWindowGFA\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["UNKNOWN_SAMPLE", "parseWalk", "line", "fields", "stepsOf", "walk", "segmentLengths", "lines", "lengths", "id", "sequence", "tags", "ln", "tag", "extend", "a", "b", "steps", "pos", "i", "step", "length", "joinPieces", "pieces", "startsPath", "joined", "piece", "last", "sample", "haplotype", "contig", "extended", "flip", "sign", "stepLinks", "joinCuts", "gfas", "cuts", "gfa", "ofType", "cut", "type", "unknownOffset", "walksByCut", "walks2", "offset", "w", "byName", "walks", "links", "link", "WELL_KNOWN_SAMPLES", "wellKnownSample", "assemblyName", "sampleOf", "refName", "sample", "panSNSample", "isGenericSample", "haplotypeOf", "panSNHaplotype", "graphHaplotypes", "graph", "refNames", "p", "node", "bySample", "backboneFrom", "contigs", "haplotypes", "samples", "c", "own", "unique", "h", "shared", "haplotype", "graphBackbone", "spans", "isBackbone", "start", "end", "span", "panSNContig", "referenceLabel", "region", "backbone", "contig", "backboneAssembly", "assemblies", "names", "a", "naming", "prefix", "n", "prefixes", "assembly", "assemblyWalk", "walk", "contigNames", "bare", "forms", "f", "refNameBinding", "aliases", "exact", "byName", "alias", "name", "featuresOnBackbone", "features", "bind", "NoReferenceSampleError", "anchor", "referenceSamples", "NodeLimitError", "limit", "windowBp", "fitsBp", "haplotypePrefix", "name", "haplotypeWanted", "wanted", "prefix", "candidate", "panSNMatchesPrefix", "referenceSamplesOf", "db", "sample", "aliasedSample", "anchorSample", "lower", "alias", "wellKnownSample", "resolveReferenceSample", "configured", "anchorPrefix", "panSNSample", "referencePathQuery", "referenceSample", "refName", "path", "p", "nodeLimitError", "error", "walked", "fits", "GBZ_CUT_DEFAULTS", "cutWindowGFA", "query", "start", "end", "opts", "subgraphs", "paths", "joinCuts", "subgraph", "haplotype", "contig", "at"]
@@ -1,2 +1,2 @@
1
1
  var e="#";function c(t){return t.split(e)[0]}var a=new Set(["_gbwt_ref"]);function u(t){return a.has(t)}function l(t){let n=t.split(e);return n.length>=3?`${n[0]}${e}${n[1]}`:void 0}function S(t){let n=t.split(e);return n.length>=3?n.slice(2).join(e):n.length===2?n[1]:t}function f(t,n){return n!==void 0&&(t===n||t.startsWith(n+e))}function r(t){return t.getConf("assemblyNameToPanSN")??{}}function p(t,n){return n===void 0?void 0:r(t)[n]??n}var i=new WeakMap;function N(t){let n=i.get(t);if(n===void 0){let s=r(t);n={};for(let o of new Set([...Object.keys(s),...t.getConf("assemblyNames")]))n[s[o]??o]=o;i.set(t,n)}return n}export{c as a,u as b,l as c,S as d,f as e,p as f,N as g};
2
- //# sourceMappingURL=chunk-X24J6VF4.js.map
2
+ //# sourceMappingURL=chunk-C4PHHPUP.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BPLIXMH7.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BPLIXMH7.js"],
4
4
  "sourcesContent": ["// src/pansn.ts\nvar SEP = \"#\";\nfunction panSNSample(refName) {\n return refName.split(SEP)[0];\n}\nvar GENERIC_SAMPLES = /* @__PURE__ */ new Set([\"_gbwt_ref\"]);\nfunction isGenericSample(sample) {\n return GENERIC_SAMPLES.has(sample);\n}\nfunction panSNHaplotype(refName) {\n const parts = refName.split(SEP);\n return parts.length >= 3 ? `${parts[0]}${SEP}${parts[1]}` : void 0;\n}\nfunction panSNContig(refName) {\n const parts = refName.split(SEP);\n return parts.length >= 3 ? parts.slice(2).join(SEP) : parts.length === 2 ? parts[1] : refName;\n}\nfunction panSNMatchesPrefix(refName, prefix) {\n return prefix !== void 0 && (refName === prefix || refName.startsWith(prefix + SEP));\n}\nfunction assemblyNameToPanSN(adapter) {\n return adapter.getConf(\"assemblyNameToPanSN\") ?? {};\n}\nfunction resolvePanSNPrefix(adapter, name) {\n return name === void 0 ? void 0 : assemblyNameToPanSN(adapter)[name] ?? name;\n}\nvar asmByPrefixCache = /* @__PURE__ */ new WeakMap();\nfunction assemblyByPanSNPrefix(adapter) {\n let out = asmByPrefixCache.get(adapter);\n if (out === void 0) {\n const map = assemblyNameToPanSN(adapter);\n out = {};\n for (const asm of /* @__PURE__ */ new Set([\n ...Object.keys(map),\n ...adapter.getConf(\"assemblyNames\")\n ])) {\n out[map[asm] ?? asm] = asm;\n }\n asmByPrefixCache.set(adapter, out);\n }\n return out;\n}\n\nexport {\n panSNSample,\n isGenericSample,\n panSNHaplotype,\n panSNContig,\n panSNMatchesPrefix,\n resolvePanSNPrefix,\n assemblyByPanSNPrefix\n};\n"],
5
5
  "mappings": "AACA,IAAIA,EAAM,IACV,SAASC,EAAYC,EAAS,CAC5B,OAAOA,EAAQ,MAAMF,CAAG,EAAE,CAAC,CAC7B,CACA,IAAIG,EAAkC,IAAI,IAAI,CAAC,WAAW,CAAC,EAC3D,SAASC,EAAgBC,EAAQ,CAC/B,OAAOF,EAAgB,IAAIE,CAAM,CACnC,CACA,SAASC,EAAeJ,EAAS,CAC/B,IAAMK,EAAQL,EAAQ,MAAMF,CAAG,EAC/B,OAAOO,EAAM,QAAU,EAAI,GAAGA,EAAM,CAAC,CAAC,GAAGP,CAAG,GAAGO,EAAM,CAAC,CAAC,GAAK,MAC9D,CACA,SAASC,EAAYN,EAAS,CAC5B,IAAMK,EAAQL,EAAQ,MAAMF,CAAG,EAC/B,OAAOO,EAAM,QAAU,EAAIA,EAAM,MAAM,CAAC,EAAE,KAAKP,CAAG,EAAIO,EAAM,SAAW,EAAIA,EAAM,CAAC,EAAIL,CACxF,CACA,SAASO,EAAmBP,EAASQ,EAAQ,CAC3C,OAAOA,IAAW,SAAWR,IAAYQ,GAAUR,EAAQ,WAAWQ,EAASV,CAAG,EACpF,CACA,SAASW,EAAoBC,EAAS,CACpC,OAAOA,EAAQ,QAAQ,qBAAqB,GAAK,CAAC,CACpD,CACA,SAASC,EAAmBD,EAASE,EAAM,CACzC,OAAOA,IAAS,OAAS,OAASH,EAAoBC,CAAO,EAAEE,CAAI,GAAKA,CAC1E,CACA,IAAIC,EAAmC,IAAI,QAC3C,SAASC,EAAsBJ,EAAS,CACtC,IAAIK,EAAMF,EAAiB,IAAIH,CAAO,EACtC,GAAIK,IAAQ,OAAQ,CAClB,IAAMC,EAAMP,EAAoBC,CAAO,EACvCK,EAAM,CAAC,EACP,QAAWE,KAAuB,IAAI,IAAI,CACxC,GAAG,OAAO,KAAKD,CAAG,EAClB,GAAGN,EAAQ,QAAQ,eAAe,CACpC,CAAC,EACCK,EAAIC,EAAIC,CAAG,GAAKA,CAAG,EAAIA,EAEzBJ,EAAiB,IAAIH,EAASK,CAAG,CACnC,CACA,OAAOA,CACT",
6
6
  "names": ["SEP", "panSNSample", "refName", "GENERIC_SAMPLES", "isGenericSample", "sample", "panSNHaplotype", "parts", "panSNContig", "panSNMatchesPrefix", "prefix", "assemblyNameToPanSN", "adapter", "resolvePanSNPrefix", "name", "asmByPrefixCache", "assemblyByPanSNPrefix", "out", "map", "asm"]
@@ -1,2 +1,2 @@
1
- import{a as pt,c as H,h as xt}from"./chunk-F7V6ZPKD.js";import{a as dt,b as ht}from"./chunk-X24J6VF4.js";import{a as fn}from"./chunk-FY3BTKY4.js";var Me=fn((Ro,sn)=>{sn.exports=JBrowseExports["tss-react/mui"]});var yt=11,dn=6.2,U=4;function hn(t){return t.length*dn+U*2}function pn(t,n){return t.x0<n.x1&&t.x1>n.x0&&t.y0<n.y1&&t.y1>n.y0}function mt(t,n){return t.x1<=0||t.x0>=n.width||t.y1<=0||t.y0>=n.height}function xn(t,n){return t.x0>=0&&t.x1<=n.width&&t.y0>=0&&t.y1<=n.height}function yn(t,n=[]){let e=[...n];return o=>mt(o,t)||e.some(a=>pn(a,o))?!1:(e.push(o),!0)}function ve(t,n,e){let o=[],a=yt+U*2,r=(s,c)=>{let i=hn(c),l=s.y>n.height/2?-1:1;for(let f=0;f<=(s.stack??0);f++){let y=s.y+l*f*a,p={x0:s.x-i/2,x1:s.x+i/2,y0:y-yt-U,y1:y+U};if(mt(p,n))return;if(xn(p,n)&&(s.fits?.(p)??!0)&&e(p))return{...s,text:c,y,w:i}}};for(let s of t){let c=r(s,s.text)??(s.fallback===void 0?void 0:r(s,s.fallback));c&&o.push(c)}return o}var bt=20;function we(t){let n=e=>Math.round(e*100)/100;return t.map((e,o)=>`${o?"L":"M"}${n(e.x)},${n(e.y)}`).join("")}function gt(t,n,e,o,a){let r=Math.hypot(o-n,e-t);if(r===0)return[e,o];let s=(e-t)/r,c=(o-n)/r;return[e+a*s,o+a*c]}function Z(t,n){let e=1-n,o=e*e*e,a=3*e*e*n,r=3*e*n*n,s=n*n*n;return{x:o*t.x0+a*t.cx0+r*t.cx1+s*t.x1,y:o*t.y0+a*t.cy0+r*t.cy1+s*t.y1}}function Nt(t){let n=t[Math.floor(t.length/2)];return n?Z(n,.5):void 0}function Ot(t){let n=1/0,e=1/0,o=-1/0,a=-1/0;for(let r of t)n=Math.min(n,r.x0,r.cx0,r.cx1,r.x1),o=Math.max(o,r.x0,r.cx0,r.cx1,r.x1),e=Math.min(e,r.y0,r.cy0,r.cy1,r.y1),a=Math.max(a,r.y0,r.cy0,r.cy1,r.y1);return{minX:n,minY:e,maxX:o,maxY:a}}function mn(t,n,e){let o=Z(t,n),a=Z(t,e),r=(e-n)/3,s=Mt(t,n),c=Mt(t,e);return{x0:o.x,y0:o.y,cx0:o.x+s.x*r,cy0:o.y+s.y*r,cx1:a.x-c.x*r,cy1:a.y-c.y*r,x1:a.x,y1:a.y}}function Mt(t,n){let e=1-n,o=3*e*e,a=6*e*n,r=3*n*n;return{x:o*(t.cx0-t.x0)+a*(t.cx1-t.cx0)+r*(t.x1-t.cx1),y:o*(t.cy0-t.y0)+a*(t.cy1-t.cy0)+r*(t.y1-t.cy1)}}function _e(t,n){let e=t.map(s=>Math.hypot(s.cx0-s.x0,s.cy0-s.y0)+Math.hypot(s.cx1-s.cx0,s.cy1-s.cy0)+Math.hypot(s.x1-s.cx1,s.y1-s.cy1)),o=e.reduce((s,c)=>s+c,0),a=Math.max(3,Math.round(o/n)|1),r=[];for(let s=0;s<a;s+=2){let c=s/a*o,i=(s+1)/a*o,l=[],f=0;t.forEach((y,p)=>{let u=e[p],x=f+u;u>0&&x>c&&f<i&&l.push(mn(y,Math.max(0,(c-f)/u),Math.min(1,(i-f)/u))),f=x}),l.length&&r.push(l)}return r}function Ne(t,n,e){let o=new Array(t.length);for(let a=0;a<t.length;a++){let r=t[a];o[a]={x0:r.x0+n,y0:r.y0+e,cx0:r.cx0+n,cy0:r.cy0+e,cx1:r.cx1+n,cy1:r.cy1+e,x1:r.x1+n,y1:r.y1+e}}return o}function D(t,n){let e=t.length-1;return n==="end"?{at:t[e],inward:t[e-1]}:{at:t[0],inward:t[1]}}var bn=.5,gn=80;function F(t){return t.endsWith("-")?"-":"+"}function G(t){let n=(e,o)=>(o??F(e))===F(e);return{from:n(t.from,t.fromStrand)?"end":"start",to:n(t.to,t.toStrand)?"start":"end"}}function vt(t){let n=1/0,e=-1/0;for(let o of t)n=Math.min(n,o.x),e=Math.max(e,o.x);return{min:n,max:e}}function At(t,n){return Math.max(0,n.min-t,t-n.max)}function Et(t,n,e){let o=At(t[0].x,n),a=At(t[t.length-1].x,n);return o===a?e:o<a?"start":"end"}function Mn(t,n){return{from:Et(t,vt(n),"end"),to:Et(n,vt(t),"start")}}var Lt=new WeakMap;function vn(t,n){let e=Lt.get(t);e||(e=new WeakMap,Lt.set(t,e));let o=e.get(n);return o||(o=Mn(t,n),e.set(n,o)),o}var An=.75,En=1.15,Ln=.35,wn=3*bt;function _n(t,n,e,o,a,r){let s=Math.hypot(e-t,o-n),c=s===0?1:(e-t)/s,i=s===0?0:(o-n)/s,l=0,f=1/0,y=-1/0;for(let d of a){let h=d.x-t,b=d.y-n,m=h*-i+b*c;Math.abs(m)>Math.abs(l)&&(l=m);let g=h*c+b*i;f=Math.min(f,g),y=Math.max(y,g)}let p=a.length?y-f:0,u=Math.max(Math.abs(l)*En/An,p*Ln),x=r===void 0?u:Math.min(u,r);return l<0?-x:x}function St({scaleX:t,scaleY:n}){return n/t}var Nn=3;function K(t,n,e){let o=n.x-t.x,a=(n.y-t.y)*e,r=Math.hypot(o,a);return r===0?void 0:{x:o/r,y:a/r}}function Oe(t,n,e,o,a=Nn){let r=St(o),s=K(t[t.length-1],n[0],r)??K(t[0],t.at(-1),r)??K(n[0],n.at(-1),r)??{x:1,y:0},c=[];for(let i=0;i<e;i++){let l=(i-(e-1)/2)*a;c.push({x:-s.y*l,y:s.x*l/r})}return c}function Q(t,n){return t.map(e=>({x:e.x,y:e.y*n}))}function On(t,n){for(let e of t)e.y0/=n,e.cy0/=n,e.cy1/=n,e.y1/=n;return t}var Sn=12,In=40;function wt(t,n){let e=0;for(let r=1;r<t.length;r++)e+=Math.hypot(t[r].x-t[r-1].x,t[r].y-t[r-1].y);let o=e*n;return Math.min(In,Math.max(Sn,o/2))/Math.max(n,Number.EPSILON)}function Pn(t){return t.from!==t.to?!1:t.fromStrand&&t.toStrand&&t.fromStrand!==t.toStrand?t.fromStrand==="+"?"end":"start":!0}function It(t,n=!1){let e=Pn(t);if(!n)return e;let o=G(t);return e===!1?o:o.from===o.to?o.from:!0}function Rn(t,n,e,o){let{at:a,inward:r}=t,s=r?a.x-r.x:1,c=r?a.y-r.y:0,i=Math.hypot(s,c)||1,l=s/i,f=c/i,y=a.x+e,p=a.y+o,u=y+l*n/3,x=p+f*n/3,d=y+l*n,h=p+f*n,b=-f*n/2,m=l*n/2;return[{x0:y,y0:p,cx0:u,cy0:x,cx1:d+b,cy1:h+m,x1:d,y1:h},{x0:d,y0:h,cx0:d-b,cy0:h-m,cx1:u,cy1:x,x1:y,y1:p}]}function tt(t,n,e,o,a,r,s=[],c){let i=r.scaleX,l=St(r),f=c??(r.pixelRows?wn:void 0);if(e===!1&&(e=vn(t,n)),l!==1)return On(tt(Q(t,l),Q(n,l),e,o,a*l,{scaleX:i,scaleY:i},Q(s,l),f===void 0?void 0:f*l),l);if(typeof e=="string")return Rn(D(t,e),wt(t,i),o,a);let y=e===!0,p=e===!0?{from:"end",to:"start"}:e,u=D(t,p.from),x=D(n,p.to),d=u.at,h=x.at,b=d.x+o,m=d.y+a,g=h.x+o,w=h.y+a;if(y){let L=1,v=0;if(u.inward){let T=d.x-u.inward.x,C=d.y-u.inward.y,P=Math.hypot(T,C);P>0&&(L=T/P,v=C/P)}let M=wt(t,i),_=-v,E=L,A=(d.x+h.x)/2+o+_*M,S=(d.y+h.y)/2+a+E*M,O=b+L*M,R=m+v*M,I=g-L*M,N=w-v*M;return[{x0:b,y0:m,cx0:O,cy0:R,cx1:O+_*M,cy1:R+E*M,x1:A,y1:S},{x0:A,y0:S,cx0:I+_*M,cy0:N+E*M,cx1:I,cy1:N,x1:g,y1:w}]}else{let L=u.inward??{x:d.x-(h.x-d.x),y:d.y-(h.y-d.y)},v=x.inward??{x:h.x-(d.x-h.x),y:h.y-(d.y-h.y)},M=Math.hypot(g-b,w-m),_=(ct,it,cn,un)=>{let ut=it.x-ct.x,lt=it.y-ct.y,ft=Math.hypot(ut,lt),ln=ft===0?0:(cn*ut+un*lt)/ft;return Math.max(0,Math.min(M*bn,gn,ln*.5))},E=h.x-d.x,A=h.y-d.y,[S,O]=gt(L.x,L.y,d.x,d.y,_(L,d,E,A)),[R,I]=gt(v.x,v.y,h.x,h.y,_(v,h,-E,-A)),N=s.length?_n(b,m,g,w,s,f):0,T=M===0?1:M,C=(g-b)/T,P=(w-m)/T,k=-P*N,rt=C*N,at=C*Math.abs(N),st=P*Math.abs(N);return[{x0:b,y0:m,cx0:S+o+k-at,cy0:O+a+rt-st,cx1:R+o+k+at,cy1:I+a+rt+st,x1:g,y1:w}]}}function _t(t,n){let e=t[0],o=t.at(-1);return Math.hypot(e.x-n.x,e.y-n.y)<Math.hypot(o.x-n.x,o.y-n.y)?"start":"end"}function Pt(t,n,e,o){let a=D(t,o?.from??_t(t,e[0])),r=D(n,o?.to??_t(n,e.at(-1))),s=[a.at,...e,r.at],c=l=>{let f=s[l],y=u=>Math.hypot(u.x-f.x,u.y-f.y),p=(u,x)=>{let d=u?y(u):0,h=y(x);return d===0?{x:x.x-f.x,y:x.y-f.y}:{x:(f.x-u.x)/d*h,y:(f.y-u.y)/d*h}};if(l===0)return p(a.inward,s[1]);if(l===s.length-1){let u=p(r.inward,s[l-1]);return{x:-u.x,y:-u.y}}return{x:(s[l+1].x-s[l-1].x)/2,y:(s[l+1].y-s[l-1].y)/2}},i=[];for(let l=0;l<s.length-1;l++){let f=s[l],y=s[l+1],p=c(l),u=c(l+1);i.push({x0:f.x,y0:f.y,cx0:f.x+p.x/3,cy0:f.y+p.y/3,cx1:y.x-u.x/3,cy1:y.y-u.y/3,x1:y.x,y1:y.y})}return i}function Rt(t){return t==="+"?"-":"+"}function Re(t,n=new Set){let e=t.edges.map(G),o=new Map,a=(u,x,d)=>{let h=`${u}|${x}`,b=o.get(h);b?b.push(d):o.set(h,[d])};t.edges.forEach((u,x)=>{a(u.from,e[x].from,x),a(u.to,e[x].to,x)});let r=u=>{let x=o.get(`${u}|end`);if(x?.length!==1)return;let d=x[0],h=t.edges[d];return h.from===u&&h.to!==u&&!n.has(u)&&!n.has(h.to)&&e[d].from==="end"&&e[d].to==="start"&&o.get(`${h.to}|start`)?.length===1?d:void 0},s=new Set,c=new Map,i=new Map;for(let u of t.nodes){let x=o.get(`${u.id}|start`),d=x?.length===1?t.edges[x[0]].from:void 0;if(c.has(u.id)||d!==void 0&&r(d)===x[0])continue;let h=[u.id];for(;;){let b=r(h.at(-1)),m=b===void 0?void 0:t.edges[b].to;if(m===void 0||c.has(m))break;s.add(b),h.push(m)}for(let b of h)c.set(b,u.id);h.length>1&&i.set(u.id,h)}for(let u of t.nodes)c.has(u.id)||c.set(u.id,u.id);let l=new Map(t.nodes.map(u=>[u.id,u])),f=[];for(let u of t.nodes){if(c.get(u.id)!==u.id)continue;let x=i.get(u.id);if(!x){f.push(u);continue}let d=x.map(m=>l.get(m)),h=d.filter(H),b=h.length?h.reduce((m,g)=>m.stable.start<=g.stable.start?m:g):d[0];f.push({id:u.id,name:u.name,length:d.reduce((m,g)=>m+g.length,0),depth:u.depth,stable:b.stable})}let y=new Set,p=[];return t.edges.forEach((u,x)=>{let d=c.get(u.from),h=c.get(u.to),b=e[x],m=`${d}|${b.from}>${h}|${b.to}`;s.has(x)||y.has(m)||(y.add(m),p.push({from:d,to:h,...b.from==="start"?{fromStrand:Rt(F(d))}:{},...b.to==="end"?{toStrand:Rt(F(h))}:{}}))}),{graph:{...t,nodes:f,edges:p,paths:void 0,pathVisits:void 0},runs:i}}function Te(t,n,e){let o={...t};for(let[a,r]of n){let s=t[a];if(!s?.length)continue;delete o[a];let c=et(s),i=c.at(-1),l=r.map(p=>Math.max(e(p),0)),f=l.reduce((p,u)=>p+u,0)||r.length,y=0;r.forEach((p,u)=>{let x=f?l[u]/f*i:i/r.length,d=u===r.length-1?i:y+x;o[p]=Ct(s,c,y,d),y=d})}return o}function Ce(t,n,e){if(t.length===0)return[];let o=et(t),a=o.at(-1);return Ct(t,o,n*a,e*a)}function Tt(t){let n=et(t);return nt(t,n,n.at(-1)/2)}function et(t){let n=[0];for(let e=1;e<t.length;e++)n.push(n[e-1]+Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y));return n}function nt(t,n,e){if(e<=0)return{...t[0]};let o=1;for(;o<n.length&&n[o]<e;)o++;if(o>=n.length)return{...t.at(-1)};let a=n[o]-n[o-1],r=a>0?(e-n[o-1])/a:0,s=t[o-1],c=t[o];return{x:s.x+(c.x-s.x)*r,y:s.y+(c.y-s.y)*r}}function Ct(t,n,e,o){let a=[nt(t,n,e)];for(let r=0;r<t.length;r++)n[r]>e&&n[r]<o&&a.push({...t[r]});return a.push(nt(t,n,o)),a}var Tn=1;function Cn(t,n){return n.flatMap(e=>t[e]??[])}function Ht(t,n,e,o,a=!1){let r=t[n.from],s=t[n.to];if(!(!r?.length||!s?.length))return o?Pt(r,s,o,a?G(n):void 0):tt(r,s,It(n,a),0,0,e,Cn(t,n.bypassed))}function Bn(t){let n=new Map;for(let e of t.nodes)if(H(e)){let o=n.get(e.stable.refName);o?o.push(e):n.set(e.stable.refName,[e])}for(let e of n.values())e.sort((o,a)=>o.stable.start-a.stable.start);return n}function Hn(t,n,e){let o=[];if(t)for(let a=xt(t,n);a<t.length;a++){let r=t[a];if(r.stable.start>=e)break;r.stable.start+r.length<=e&&o.push(r.id)}return o}function Xn(t,n,e,o){let{fromStrand:a,toStrand:r}=t;if(a===void 0||r===void 0)return!0;let s=a===(n.stable.strand??"+"),c=r===(e.stable.strand??"+");return o?s&&c:!s&&!c}function ke(t){let n=new Map(t.nodes.map(a=>[a.id,a])),e=Bn(t),o=[];for(let a=0;a<t.edges.length;a++){let r=t.edges[a],s=n.get(r.from),c=n.get(r.to);if(s!==void 0&&c!==void 0&&H(s)&&H(c)&&s.stable.refName===c.stable.refName){let i=s.stable.start<=c.stable.start,[l,f]=i?[s,c]:[c,s],y=l.stable.start+l.length,p=f.stable.start,u=p-y;if(u>=Tn&&Xn(r,s,c,i)){let x=l.stable.refName;o.push({edgeIndex:a,from:r.from,to:r.to,...r.fromStrand?{fromStrand:r.fromStrand}:{},...r.toStrand?{toStrand:r.toStrand}:{},refName:x,start:y,end:p,bp:u,bypassed:Hn(e.get(x),y,p)})}}}return o}function kn(t,n){let e=new Map,o=s=>{let c=s;for(;e.has(c);)c=e.get(c);return c!==s&&e.set(s,c),c},a=(s,c)=>{let[i,l]=[o(s),o(c)];return i!==l&&e.set(i,l),i!==l},r=new Set(n.map(s=>s.edgeIndex));return t.edges.forEach((s,c)=>{r.has(c)||a(s.from,s.to)}),new Set(n.filter(s=>!a(s.from,s.to)).map(s=>s.edgeIndex))}var Bt=new WeakMap;function De(t,n,e=!0){let o=Bt.get(n);o||(o=new Map,Bt.set(n,o));let a=o.get(e);if(!a){let r=e?new Set:kn(t,n);a={shown:n.filter(s=>!r.has(s.edgeIndex)),bypassed:new Map(n.map(s=>[s.edgeIndex,s.bypassed])),hidden:r},o.set(e,a)}return a}var Dn=26,Fn=4e4,Gn=8,Wn=8,$n=5.7,Un=6,Yn=13,W=3,Y=2;function j(t){return(t.length*$n+Un+W)/2}var B=(Yn+W)/2,Vn=j("1 bp");function V(t,n,e){return{x0:n-t,x1:n+t,y0:e-B,y1:e+B}}function Ye(t,n){return{x0:6,x1:6+t.length*6.2+8+W,y0:n-8-W/2,y1:n+8+W/2}}function z(t,n,e){return e<n?t:Math.min(Math.max(t,n),e)}function Ft(t){return String(t).replace(/\B(?=(\d{3})+$)/g,",")}function Gt(t){return t>=1e6?`${+(t/1e6).toFixed(1)} Mb`:t>=1e3?`${+(t/1e3).toFixed(1)} kb`:`${t} bp`}function Xt(t){return`${Gt(t)} del`}function zn(t,n,e,o){let a=t[0],r=t[t.length-1],s=(n.x-(a.x0+r.x1)/2)*e,c=(n.y-(a.y0+r.y1)/2)*o,i=Math.hypot(s,c);return i===0?{x:0,y:-1}:{x:s/i,y:c/i}}function jn(t,n){return Math.abs(n.x)*(t.x1-t.x0)/2+Math.abs(n.y)*(t.y1-t.y0)/2}function qn(t,n){let e=(t.x1-t.x0)/2,o=(t.y1-t.y0)/2;return Math.min(n.x===0?1/0:e/Math.abs(n.x),n.y===0?1/0:o/Math.abs(n.y))}function Jn(t,n,e){let o=0;for(let a=1;a<t.length;a++){let r=t[a-1],s=t[a];o+=Math.hypot((s.x-r.x)*n,(s.y-r.y)*e)}return o}function Kn(t,n){let e=1/0,o=1/0,a=-1/0,r=-1/0;for(let s of t)for(let c of n[s]??[])e=Math.min(e,c.x),a=Math.max(a,c.x),o=Math.min(o,c.y),r=Math.max(r,c.y);return e===1/0?void 0:{minX:e,minY:o,maxX:a,maxY:r}}var kt=new WeakMap;function Qn(t,n){let e=kt.get(t);if(e?.nodeLengths===n)return e.order;let o=Object.entries(t).filter(([a,r])=>r.length>0&&n.has(a)).sort(([a],[r])=>n.get(r)-n.get(a));return kt.set(t,{nodeLengths:n,order:o}),o}var Dt=new WeakMap;function Zn(t,n,e,o,a,r){let{scaleX:s,scaleY:c}=e,i=Dt.get(t);if(i?.deletions===n&&i.routes===a&&i.stranded===r&&i.scaleX===s&&i.scaleY===c&&i.version===o)return i.arcs;let l=[];for(let f of[...n].sort((y,p)=>p.bp-y.bp)){let y=Ht(t,f,e,a?.[f.edgeIndex],r),p=y?Nt(y):void 0;if(y&&p){let{minX:u,minY:x,maxX:d,maxY:h}=Ot(y);l.push({deletion:f,curves:y,apex:p,extent:Math.max((d-u)*s,(h-x)*c)})}}return Dt.set(t,{deletions:n,routes:a,stranded:r,scaleX:s,scaleY:c,version:o,arcs:l}),l}function Ve({nodePositions:t,nodeLengths:n,deletions:e,deletionRoutes:o,stranded:a=!1,alleleDeletions:r,axis:s,translateX:c,translateY:i,width:l,height:f,version:y=0}){let{scaleX:p,scaleY:u}=s,x=[],d=[];for(let{deletion:m,curves:g,apex:w,extent:L}of Zn(t,e,s,y,o,a))if(L>=Dn){let v=Xt(m.bp),M=j(v),_=V(M,0,0),E=w.x*p+c,A=w.y*u+i,S=L>=M*2/Y,O=zn(g,w,p,u),R=jn(_,O)+Wn,I=S?E:z(E+O.x*R,M,l-M),N=S?A:z(A+O.y*R,B,f-B),T=Math.hypot(I-E,N-A),C;if(T>0){let P={x:(I-E)/T,y:(N-A)/T},k=qn(_,P);C={arcX:E,arcY:A,labelX:I-P.x*k,labelY:N-P.y*k}}x.push({label:{key:`del:${m.edgeIndex}`,text:v,x:I,y:N,kind:"deletion",leader:C},box:V(M,I,N)})}let h=new Set,b=[...r??[]].sort((m,g)=>g.bp-m.bp);for(let m of b){let g=Kn(m.nodeIds,t);if(!g)continue;let w=Math.max(g.minX*p+c,0),L=Math.min(g.maxX*p+c,l),v=Math.max(g.minY*u+i,0),M=Math.min(g.maxY*u+i,f);if(L<w||M<v)continue;let _=Math.max(L-w,M-v),E=Xt(m.bp),A=j(E);if(_>=A*2/Y){for(let R of m.nodeIds)h.add(R);let S=z((w+L)/2,A,l-A),O=z((v+M)/2,B,f-B);x.push({label:{key:`alleledel:${m.nodeIds.join(",")}`,text:E,x:S,y:O,kind:"deletion"},box:V(A,S,O)})}}for(let[m,g]of Qn(t,n)){if(h.has(m))continue;let{x:w,y:L}=Tt(g),v=L*u+i;if(v+B<=0||v-B>=f)continue;let M=Jn(g,p,u);if(M<Vn*2/Y)continue;let _=Gt(n.get(m)),E=j(_);if(M>=E*2/Y){let A=w*p+c;d.push({label:{key:`node:${m}`,text:_,x:A,y:v,kind:"node"},box:V(E,A,v)})}}return{deletions:x,nodes:d}}function ze(t,n){return Math.max(Gn,Math.floor(t*n/Fn))}function je(t,n,e=1/0){let o=[];for(let{label:a,box:r}of t){if(o.length>=e)break;n(r)&&o.push(a)}return o}var te=/:(\d+)-\d+$/;function q(t){let n=te.exec(t);return n?{name:t.slice(0,n.index),start:+n[1]}:{name:t,start:0}}function Qe(t,n){let e=[],o=new Map;for(let a of t){let r=dt(a.name),s=a.start;for(let c of a.steps){let i={path:a.name,sample:r,start:s,strand:c.strand},l=o.get(c.id);l?l.push(i):o.set(c.id,[i]),s+=n(c.id)}e.push({name:a.name,sample:r,start:a.start,length:s-a.start})}return{anchorPaths:e,pathVisits:o}}function ne(t,n){return t.find(o=>o.sample===n||o.name===n)??t[0]}var ee=1;function oe(t,n,e){let o=t;if(n&&n.length>0){let a=n.find(r=>r.path===e)??n[0];o={...t,stable:{refName:a.path,start:a.start,rank:a.path===e?pt:ee,strand:a.strand},samples:[...new Set(n.map(r=>r.sample))].sort()}}return o}function re(t,n){let{anchorPaths:e,pathVisits:o}=t,a=e&&o?ne(e,n):void 0;return a&&o?{...t,nodes:t.nodes.map(r=>oe(r,o.get(r.name),a.name)),anchoredBy:"paths",referencePath:a.name}:t}function Ze(t,n){return t.anchoredBy==="tags"?t:re(t,n)}function to(t,n){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(r=>[r.id,r.length])),o=(r,s=r.length)=>{let c=0;for(let i=0;i<s;i++)c+=e.get(r[i])??0;return c},a=new Map;for(let r of t.paths??[]){let s=q(r.name).name;a.set(s,[...a.get(s)??[],r])}return t.anchorPaths.map(r=>{let s=a.get(r.name),c=s?.length===1?s[0]:void 0,i=c&&n.get(c.name);return c&&i?{...r,start:r.start+o(c.nodeIds,i.first),length:o(i.nodeIds)}:r})}function ae(t){let n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);return Math.abs(n%360)}function Wt(t,n){return t*360/n}var $t=.7,Ut=.5,Yt=16;function se(t){return t>0&&t<=Yt}function Vt(t,n){return`hsl(${Wt(t,n)}, ${$t*100}%, ${Ut*100}%)`}function ce(t,n){return`hsl(0, 0%, ${n>1?25+45*t/(n-1):45}%)`}function ie(t){let n=q(t).name.split("#"),e=n.join("#");if(n.length>=3&&ht(n[0])){let o=n.slice(2).join("#");return[o,o,e]}return[n[0],n.slice(0,2).join("#"),e]}function ue(t,n){let{start:e}=q(t);return n.map(o=>`${o} @${Ft(e)}`)}function le(t,n){let e=new Map;t.forEach((i,l)=>{e.has(i.name)||e.set(i.name,l)});let o=[...e].map(([i,l])=>({name:i,i:l})),a=o.map(i=>ie(i.name)),r=[0,1,2].flatMap(i=>[o.map((l,f)=>a[f][i]),o.map((l,f)=>ue(l.name,a[f])[i])]),c=r.find(i=>new Set(i).size===o.length)??r.at(-1);return o.map(({name:i,i:l},f)=>({name:i,label:c[f],color:n?.[l]??Vt(l,t.length)}))}function fe(t){let n=new Map;return new Map([...t].sort((e,o)=>e.label.localeCompare(o.label)).map(e=>{let o=(n.get(e.label)??0)+1;return n.set(e.label,o),[e.name,o>1?`${e.label} (${o})`:e.label]}))}var zt=[{value:"auto",label:"Auto"},{value:"uniform",label:"Uniform"},{value:"random",label:"Random"},{value:"rainbow",label:"Rainbow"},{value:"depth",label:"Depth"},{value:"node-length",label:"Node length"},{value:"stable-rank",label:"Stable rank"},{value:"reference-position",label:"Reference position"},{value:"grey",label:"Grey"}],de=zt.map(t=>t.value);function he(t,n){return t!=="auto"?t:n?.anchoredBy?"reference-position":"uniform"}var jt=[{value:"depth",label:"By depth",description:"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform."},{value:"uniform",label:"Uniform",description:"Every node the same thickness."}],pe=jt.map(t=>t.value),xe=.3,qt=3;function Jt(t){let n=0,e=0;for(let o of t.nodes)n+=o.depth*o.length,e+=o.length;return e>0?n/e:0}function Kt(t,n){return!(n>0)||!(t.depth>0)?1:Math.min(qt,Math.max(xe,Math.sqrt(t.depth/n)))}function Qt(t,n,e,o){return n*(e==="depth"?Kt(t,o):1)}function Zt(t,n){return t*(n==="depth"?qt:1)}function ye(t,n,e,o){let a=t?Jt(t):0;return{maxHalfWidthPx:Zt(e,o)/2,halfWidthPx:r=>{let s=n?.get(r);return s?Qt(s,e,o,a)/2:e/2}}}var $=40,nn=500,J=5;function me(t,n){return Math.max(t.nodeLengthPerMegabase*n/1e6,t.minimumNodeLength)}function en(t,n=J){let o=t.nodes.reduce((r,s)=>r+s.length,0)/1e6,a=Math.max(t.nodes.length*$,nn);return{nodeLengthPerMegabase:o>0?a/o:1e4,minimumNodeLength:Math.max(J,n),edgeLength:5,nodeSegmentLength:20}}var X={power:1,effect:1};function on(t){return t.power===1&&t.effect===1}function rn(t,n){let e=t.nodes.length,o=t.nodes.reduce((s,c)=>s+c.length,0),a=e>0?o/e:0,r=e>0?Math.max(e*$,nn)/e:$;return s=>{if(a<=0)return r;let c=(s/a)**n.power;return Math.max(r*((c-1)*n.effect+1),J)}}var tn=1e3,an={law:X,minNodeLength:0};function lo(t,n=an){let{law:e,minNodeLength:o}=n,a=en(t,o);if(on(e))return{nodes:t.nodes,opts:a};let r=rn(t,e);return{nodes:t.nodes.map(s=>({...s,length:Math.round(r(s.length)*tn)})),opts:{...a,nodeLengthPerMegabase:1e6/tn,minimumNodeLength:J}}}function fo(t,n=an){if(on(n.law)){let e=en(t,n.minNodeLength);return o=>me(e,o)}return rn(t,n.law)}var ot=[{value:"auto",label:"Proportional",description:"Bandage's own scale: a node draws proportional to its length, so a 1 bp allele is a speck.",law:X,minNodeFactor:0},{value:"open",label:"Open bubbles",description:"Give every allele a drawn length, so a bubble reads as two arms rather than a knot.",law:X,minNodeFactor:2.5},{value:"wide",label:"Wide bubbles",description:"As open, spread further. Best on a window of a dozen bubbles.",law:X,minNodeFactor:10},{value:"compress",label:"Compress lengths",description:"Pull the longest and shortest nodes towards the graph\u2019s mean, so a cut spanning kb and bp fits one pane.",law:{power:.5,effect:.5},minNodeFactor:0}],be=ot.map(t=>t.value);function ge(t){let n=ot.find(e=>e.value===t);return{law:n?.law??X,minNodeLength:(n?.minNodeFactor??0)*$}}export{bt as a,yt as b,dn as c,U as d,yn as e,ve as f,we as g,Ot as h,_e as i,Ne as j,G as k,St as l,Oe as m,It as n,tt as o,Pt as p,Re as q,Te as r,Ce as s,Cn as t,ke as u,kn as v,De as w,Ye as x,Ft as y,Gt as z,Ve as A,ze as B,je as C,q as D,Qe as E,ne as F,re as G,Ze as H,to as I,ae as J,Wt as K,$t as L,Ut as M,Yt as N,se as O,Vt as P,ce as Q,le as R,fe as S,zt as T,de as U,he as V,jt as W,pe as X,Jt as Y,Qt as Z,ye as _,me as $,lo as aa,fo as ba,ot as ca,be as da,ge as ea,Me as fa};
2
- //# sourceMappingURL=chunk-XWGKHQYO.js.map
1
+ import{a as pt,c as H,h as xt}from"./chunk-5GRQIE5Q.js";import{a as dt,b as ht}from"./chunk-C4PHHPUP.js";import{a as fn}from"./chunk-FY3BTKY4.js";var Me=fn((Ro,sn)=>{sn.exports=JBrowseExports["tss-react/mui"]});var yt=11,dn=6.2,U=4;function hn(t){return t.length*dn+U*2}function pn(t,n){return t.x0<n.x1&&t.x1>n.x0&&t.y0<n.y1&&t.y1>n.y0}function mt(t,n){return t.x1<=0||t.x0>=n.width||t.y1<=0||t.y0>=n.height}function xn(t,n){return t.x0>=0&&t.x1<=n.width&&t.y0>=0&&t.y1<=n.height}function yn(t,n=[]){let e=[...n];return o=>mt(o,t)||e.some(a=>pn(a,o))?!1:(e.push(o),!0)}function ve(t,n,e){let o=[],a=yt+U*2,r=(s,c)=>{let i=hn(c),l=s.y>n.height/2?-1:1;for(let f=0;f<=(s.stack??0);f++){let y=s.y+l*f*a,p={x0:s.x-i/2,x1:s.x+i/2,y0:y-yt-U,y1:y+U};if(mt(p,n))return;if(xn(p,n)&&(s.fits?.(p)??!0)&&e(p))return{...s,text:c,y,w:i}}};for(let s of t){let c=r(s,s.text)??(s.fallback===void 0?void 0:r(s,s.fallback));c&&o.push(c)}return o}var bt=20;function we(t){let n=e=>Math.round(e*100)/100;return t.map((e,o)=>`${o?"L":"M"}${n(e.x)},${n(e.y)}`).join("")}function gt(t,n,e,o,a){let r=Math.hypot(o-n,e-t);if(r===0)return[e,o];let s=(e-t)/r,c=(o-n)/r;return[e+a*s,o+a*c]}function Z(t,n){let e=1-n,o=e*e*e,a=3*e*e*n,r=3*e*n*n,s=n*n*n;return{x:o*t.x0+a*t.cx0+r*t.cx1+s*t.x1,y:o*t.y0+a*t.cy0+r*t.cy1+s*t.y1}}function Nt(t){let n=t[Math.floor(t.length/2)];return n?Z(n,.5):void 0}function Ot(t){let n=1/0,e=1/0,o=-1/0,a=-1/0;for(let r of t)n=Math.min(n,r.x0,r.cx0,r.cx1,r.x1),o=Math.max(o,r.x0,r.cx0,r.cx1,r.x1),e=Math.min(e,r.y0,r.cy0,r.cy1,r.y1),a=Math.max(a,r.y0,r.cy0,r.cy1,r.y1);return{minX:n,minY:e,maxX:o,maxY:a}}function mn(t,n,e){let o=Z(t,n),a=Z(t,e),r=(e-n)/3,s=Mt(t,n),c=Mt(t,e);return{x0:o.x,y0:o.y,cx0:o.x+s.x*r,cy0:o.y+s.y*r,cx1:a.x-c.x*r,cy1:a.y-c.y*r,x1:a.x,y1:a.y}}function Mt(t,n){let e=1-n,o=3*e*e,a=6*e*n,r=3*n*n;return{x:o*(t.cx0-t.x0)+a*(t.cx1-t.cx0)+r*(t.x1-t.cx1),y:o*(t.cy0-t.y0)+a*(t.cy1-t.cy0)+r*(t.y1-t.cy1)}}function _e(t,n){let e=t.map(s=>Math.hypot(s.cx0-s.x0,s.cy0-s.y0)+Math.hypot(s.cx1-s.cx0,s.cy1-s.cy0)+Math.hypot(s.x1-s.cx1,s.y1-s.cy1)),o=e.reduce((s,c)=>s+c,0),a=Math.max(3,Math.round(o/n)|1),r=[];for(let s=0;s<a;s+=2){let c=s/a*o,i=(s+1)/a*o,l=[],f=0;t.forEach((y,p)=>{let u=e[p],x=f+u;u>0&&x>c&&f<i&&l.push(mn(y,Math.max(0,(c-f)/u),Math.min(1,(i-f)/u))),f=x}),l.length&&r.push(l)}return r}function Ne(t,n,e){let o=new Array(t.length);for(let a=0;a<t.length;a++){let r=t[a];o[a]={x0:r.x0+n,y0:r.y0+e,cx0:r.cx0+n,cy0:r.cy0+e,cx1:r.cx1+n,cy1:r.cy1+e,x1:r.x1+n,y1:r.y1+e}}return o}function D(t,n){let e=t.length-1;return n==="end"?{at:t[e],inward:t[e-1]}:{at:t[0],inward:t[1]}}var bn=.5,gn=80;function F(t){return t.endsWith("-")?"-":"+"}function G(t){let n=(e,o)=>(o??F(e))===F(e);return{from:n(t.from,t.fromStrand)?"end":"start",to:n(t.to,t.toStrand)?"start":"end"}}function vt(t){let n=1/0,e=-1/0;for(let o of t)n=Math.min(n,o.x),e=Math.max(e,o.x);return{min:n,max:e}}function At(t,n){return Math.max(0,n.min-t,t-n.max)}function Et(t,n,e){let o=At(t[0].x,n),a=At(t[t.length-1].x,n);return o===a?e:o<a?"start":"end"}function Mn(t,n){return{from:Et(t,vt(n),"end"),to:Et(n,vt(t),"start")}}var Lt=new WeakMap;function vn(t,n){let e=Lt.get(t);e||(e=new WeakMap,Lt.set(t,e));let o=e.get(n);return o||(o=Mn(t,n),e.set(n,o)),o}var An=.75,En=1.15,Ln=.35,wn=3*bt;function _n(t,n,e,o,a,r){let s=Math.hypot(e-t,o-n),c=s===0?1:(e-t)/s,i=s===0?0:(o-n)/s,l=0,f=1/0,y=-1/0;for(let d of a){let h=d.x-t,b=d.y-n,m=h*-i+b*c;Math.abs(m)>Math.abs(l)&&(l=m);let g=h*c+b*i;f=Math.min(f,g),y=Math.max(y,g)}let p=a.length?y-f:0,u=Math.max(Math.abs(l)*En/An,p*Ln),x=r===void 0?u:Math.min(u,r);return l<0?-x:x}function St({scaleX:t,scaleY:n}){return n/t}var Nn=3;function K(t,n,e){let o=n.x-t.x,a=(n.y-t.y)*e,r=Math.hypot(o,a);return r===0?void 0:{x:o/r,y:a/r}}function Oe(t,n,e,o,a=Nn){let r=St(o),s=K(t[t.length-1],n[0],r)??K(t[0],t.at(-1),r)??K(n[0],n.at(-1),r)??{x:1,y:0},c=[];for(let i=0;i<e;i++){let l=(i-(e-1)/2)*a;c.push({x:-s.y*l,y:s.x*l/r})}return c}function Q(t,n){return t.map(e=>({x:e.x,y:e.y*n}))}function On(t,n){for(let e of t)e.y0/=n,e.cy0/=n,e.cy1/=n,e.y1/=n;return t}var Sn=12,In=40;function wt(t,n){let e=0;for(let r=1;r<t.length;r++)e+=Math.hypot(t[r].x-t[r-1].x,t[r].y-t[r-1].y);let o=e*n;return Math.min(In,Math.max(Sn,o/2))/Math.max(n,Number.EPSILON)}function Pn(t){return t.from!==t.to?!1:t.fromStrand&&t.toStrand&&t.fromStrand!==t.toStrand?t.fromStrand==="+"?"end":"start":!0}function It(t,n=!1){let e=Pn(t);if(!n)return e;let o=G(t);return e===!1?o:o.from===o.to?o.from:!0}function Rn(t,n,e,o){let{at:a,inward:r}=t,s=r?a.x-r.x:1,c=r?a.y-r.y:0,i=Math.hypot(s,c)||1,l=s/i,f=c/i,y=a.x+e,p=a.y+o,u=y+l*n/3,x=p+f*n/3,d=y+l*n,h=p+f*n,b=-f*n/2,m=l*n/2;return[{x0:y,y0:p,cx0:u,cy0:x,cx1:d+b,cy1:h+m,x1:d,y1:h},{x0:d,y0:h,cx0:d-b,cy0:h-m,cx1:u,cy1:x,x1:y,y1:p}]}function tt(t,n,e,o,a,r,s=[],c){let i=r.scaleX,l=St(r),f=c??(r.pixelRows?wn:void 0);if(e===!1&&(e=vn(t,n)),l!==1)return On(tt(Q(t,l),Q(n,l),e,o,a*l,{scaleX:i,scaleY:i},Q(s,l),f===void 0?void 0:f*l),l);if(typeof e=="string")return Rn(D(t,e),wt(t,i),o,a);let y=e===!0,p=e===!0?{from:"end",to:"start"}:e,u=D(t,p.from),x=D(n,p.to),d=u.at,h=x.at,b=d.x+o,m=d.y+a,g=h.x+o,w=h.y+a;if(y){let L=1,v=0;if(u.inward){let T=d.x-u.inward.x,C=d.y-u.inward.y,P=Math.hypot(T,C);P>0&&(L=T/P,v=C/P)}let M=wt(t,i),_=-v,E=L,A=(d.x+h.x)/2+o+_*M,S=(d.y+h.y)/2+a+E*M,O=b+L*M,R=m+v*M,I=g-L*M,N=w-v*M;return[{x0:b,y0:m,cx0:O,cy0:R,cx1:O+_*M,cy1:R+E*M,x1:A,y1:S},{x0:A,y0:S,cx0:I+_*M,cy0:N+E*M,cx1:I,cy1:N,x1:g,y1:w}]}else{let L=u.inward??{x:d.x-(h.x-d.x),y:d.y-(h.y-d.y)},v=x.inward??{x:h.x-(d.x-h.x),y:h.y-(d.y-h.y)},M=Math.hypot(g-b,w-m),_=(ct,it,cn,un)=>{let ut=it.x-ct.x,lt=it.y-ct.y,ft=Math.hypot(ut,lt),ln=ft===0?0:(cn*ut+un*lt)/ft;return Math.max(0,Math.min(M*bn,gn,ln*.5))},E=h.x-d.x,A=h.y-d.y,[S,O]=gt(L.x,L.y,d.x,d.y,_(L,d,E,A)),[R,I]=gt(v.x,v.y,h.x,h.y,_(v,h,-E,-A)),N=s.length?_n(b,m,g,w,s,f):0,T=M===0?1:M,C=(g-b)/T,P=(w-m)/T,k=-P*N,rt=C*N,at=C*Math.abs(N),st=P*Math.abs(N);return[{x0:b,y0:m,cx0:S+o+k-at,cy0:O+a+rt-st,cx1:R+o+k+at,cy1:I+a+rt+st,x1:g,y1:w}]}}function _t(t,n){let e=t[0],o=t.at(-1);return Math.hypot(e.x-n.x,e.y-n.y)<Math.hypot(o.x-n.x,o.y-n.y)?"start":"end"}function Pt(t,n,e,o){let a=D(t,o?.from??_t(t,e[0])),r=D(n,o?.to??_t(n,e.at(-1))),s=[a.at,...e,r.at],c=l=>{let f=s[l],y=u=>Math.hypot(u.x-f.x,u.y-f.y),p=(u,x)=>{let d=u?y(u):0,h=y(x);return d===0?{x:x.x-f.x,y:x.y-f.y}:{x:(f.x-u.x)/d*h,y:(f.y-u.y)/d*h}};if(l===0)return p(a.inward,s[1]);if(l===s.length-1){let u=p(r.inward,s[l-1]);return{x:-u.x,y:-u.y}}return{x:(s[l+1].x-s[l-1].x)/2,y:(s[l+1].y-s[l-1].y)/2}},i=[];for(let l=0;l<s.length-1;l++){let f=s[l],y=s[l+1],p=c(l),u=c(l+1);i.push({x0:f.x,y0:f.y,cx0:f.x+p.x/3,cy0:f.y+p.y/3,cx1:y.x-u.x/3,cy1:y.y-u.y/3,x1:y.x,y1:y.y})}return i}function Rt(t){return t==="+"?"-":"+"}function Re(t,n=new Set){let e=t.edges.map(G),o=new Map,a=(u,x,d)=>{let h=`${u}|${x}`,b=o.get(h);b?b.push(d):o.set(h,[d])};t.edges.forEach((u,x)=>{a(u.from,e[x].from,x),a(u.to,e[x].to,x)});let r=u=>{let x=o.get(`${u}|end`);if(x?.length!==1)return;let d=x[0],h=t.edges[d];return h.from===u&&h.to!==u&&!n.has(u)&&!n.has(h.to)&&e[d].from==="end"&&e[d].to==="start"&&o.get(`${h.to}|start`)?.length===1?d:void 0},s=new Set,c=new Map,i=new Map;for(let u of t.nodes){let x=o.get(`${u.id}|start`),d=x?.length===1?t.edges[x[0]].from:void 0;if(c.has(u.id)||d!==void 0&&r(d)===x[0])continue;let h=[u.id];for(;;){let b=r(h.at(-1)),m=b===void 0?void 0:t.edges[b].to;if(m===void 0||c.has(m))break;s.add(b),h.push(m)}for(let b of h)c.set(b,u.id);h.length>1&&i.set(u.id,h)}for(let u of t.nodes)c.has(u.id)||c.set(u.id,u.id);let l=new Map(t.nodes.map(u=>[u.id,u])),f=[];for(let u of t.nodes){if(c.get(u.id)!==u.id)continue;let x=i.get(u.id);if(!x){f.push(u);continue}let d=x.map(m=>l.get(m)),h=d.filter(H),b=h.length?h.reduce((m,g)=>m.stable.start<=g.stable.start?m:g):d[0];f.push({id:u.id,name:u.name,length:d.reduce((m,g)=>m+g.length,0),depth:u.depth,stable:b.stable})}let y=new Set,p=[];return t.edges.forEach((u,x)=>{let d=c.get(u.from),h=c.get(u.to),b=e[x],m=`${d}|${b.from}>${h}|${b.to}`;s.has(x)||y.has(m)||(y.add(m),p.push({from:d,to:h,...b.from==="start"?{fromStrand:Rt(F(d))}:{},...b.to==="end"?{toStrand:Rt(F(h))}:{}}))}),{graph:{...t,nodes:f,edges:p,paths:void 0,pathVisits:void 0},runs:i}}function Te(t,n,e){let o={...t};for(let[a,r]of n){let s=t[a];if(!s?.length)continue;delete o[a];let c=et(s),i=c.at(-1),l=r.map(p=>Math.max(e(p),0)),f=l.reduce((p,u)=>p+u,0)||r.length,y=0;r.forEach((p,u)=>{let x=f?l[u]/f*i:i/r.length,d=u===r.length-1?i:y+x;o[p]=Ct(s,c,y,d),y=d})}return o}function Ce(t,n,e){if(t.length===0)return[];let o=et(t),a=o.at(-1);return Ct(t,o,n*a,e*a)}function Tt(t){let n=et(t);return nt(t,n,n.at(-1)/2)}function et(t){let n=[0];for(let e=1;e<t.length;e++)n.push(n[e-1]+Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y));return n}function nt(t,n,e){if(e<=0)return{...t[0]};let o=1;for(;o<n.length&&n[o]<e;)o++;if(o>=n.length)return{...t.at(-1)};let a=n[o]-n[o-1],r=a>0?(e-n[o-1])/a:0,s=t[o-1],c=t[o];return{x:s.x+(c.x-s.x)*r,y:s.y+(c.y-s.y)*r}}function Ct(t,n,e,o){let a=[nt(t,n,e)];for(let r=0;r<t.length;r++)n[r]>e&&n[r]<o&&a.push({...t[r]});return a.push(nt(t,n,o)),a}var Tn=1;function Cn(t,n){return n.flatMap(e=>t[e]??[])}function Ht(t,n,e,o,a=!1){let r=t[n.from],s=t[n.to];if(!(!r?.length||!s?.length))return o?Pt(r,s,o,a?G(n):void 0):tt(r,s,It(n,a),0,0,e,Cn(t,n.bypassed))}function Bn(t){let n=new Map;for(let e of t.nodes)if(H(e)){let o=n.get(e.stable.refName);o?o.push(e):n.set(e.stable.refName,[e])}for(let e of n.values())e.sort((o,a)=>o.stable.start-a.stable.start);return n}function Hn(t,n,e){let o=[];if(t)for(let a=xt(t,n);a<t.length;a++){let r=t[a];if(r.stable.start>=e)break;r.stable.start+r.length<=e&&o.push(r.id)}return o}function Xn(t,n,e,o){let{fromStrand:a,toStrand:r}=t;if(a===void 0||r===void 0)return!0;let s=a===(n.stable.strand??"+"),c=r===(e.stable.strand??"+");return o?s&&c:!s&&!c}function ke(t){let n=new Map(t.nodes.map(a=>[a.id,a])),e=Bn(t),o=[];for(let a=0;a<t.edges.length;a++){let r=t.edges[a],s=n.get(r.from),c=n.get(r.to);if(s!==void 0&&c!==void 0&&H(s)&&H(c)&&s.stable.refName===c.stable.refName){let i=s.stable.start<=c.stable.start,[l,f]=i?[s,c]:[c,s],y=l.stable.start+l.length,p=f.stable.start,u=p-y;if(u>=Tn&&Xn(r,s,c,i)){let x=l.stable.refName;o.push({edgeIndex:a,from:r.from,to:r.to,...r.fromStrand?{fromStrand:r.fromStrand}:{},...r.toStrand?{toStrand:r.toStrand}:{},refName:x,start:y,end:p,bp:u,bypassed:Hn(e.get(x),y,p)})}}}return o}function kn(t,n){let e=new Map,o=s=>{let c=s;for(;e.has(c);)c=e.get(c);return c!==s&&e.set(s,c),c},a=(s,c)=>{let[i,l]=[o(s),o(c)];return i!==l&&e.set(i,l),i!==l},r=new Set(n.map(s=>s.edgeIndex));return t.edges.forEach((s,c)=>{r.has(c)||a(s.from,s.to)}),new Set(n.filter(s=>!a(s.from,s.to)).map(s=>s.edgeIndex))}var Bt=new WeakMap;function De(t,n,e=!0){let o=Bt.get(n);o||(o=new Map,Bt.set(n,o));let a=o.get(e);if(!a){let r=e?new Set:kn(t,n);a={shown:n.filter(s=>!r.has(s.edgeIndex)),bypassed:new Map(n.map(s=>[s.edgeIndex,s.bypassed])),hidden:r},o.set(e,a)}return a}var Dn=26,Fn=4e4,Gn=8,Wn=8,$n=5.7,Un=6,Yn=13,W=3,Y=2;function j(t){return(t.length*$n+Un+W)/2}var B=(Yn+W)/2,Vn=j("1 bp");function V(t,n,e){return{x0:n-t,x1:n+t,y0:e-B,y1:e+B}}function Ye(t,n){return{x0:6,x1:6+t.length*6.2+8+W,y0:n-8-W/2,y1:n+8+W/2}}function z(t,n,e){return e<n?t:Math.min(Math.max(t,n),e)}function Ft(t){return String(t).replace(/\B(?=(\d{3})+$)/g,",")}function Gt(t){return t>=1e6?`${+(t/1e6).toFixed(1)} Mb`:t>=1e3?`${+(t/1e3).toFixed(1)} kb`:`${t} bp`}function Xt(t){return`${Gt(t)} del`}function zn(t,n,e,o){let a=t[0],r=t[t.length-1],s=(n.x-(a.x0+r.x1)/2)*e,c=(n.y-(a.y0+r.y1)/2)*o,i=Math.hypot(s,c);return i===0?{x:0,y:-1}:{x:s/i,y:c/i}}function jn(t,n){return Math.abs(n.x)*(t.x1-t.x0)/2+Math.abs(n.y)*(t.y1-t.y0)/2}function qn(t,n){let e=(t.x1-t.x0)/2,o=(t.y1-t.y0)/2;return Math.min(n.x===0?1/0:e/Math.abs(n.x),n.y===0?1/0:o/Math.abs(n.y))}function Jn(t,n,e){let o=0;for(let a=1;a<t.length;a++){let r=t[a-1],s=t[a];o+=Math.hypot((s.x-r.x)*n,(s.y-r.y)*e)}return o}function Kn(t,n){let e=1/0,o=1/0,a=-1/0,r=-1/0;for(let s of t)for(let c of n[s]??[])e=Math.min(e,c.x),a=Math.max(a,c.x),o=Math.min(o,c.y),r=Math.max(r,c.y);return e===1/0?void 0:{minX:e,minY:o,maxX:a,maxY:r}}var kt=new WeakMap;function Qn(t,n){let e=kt.get(t);if(e?.nodeLengths===n)return e.order;let o=Object.entries(t).filter(([a,r])=>r.length>0&&n.has(a)).sort(([a],[r])=>n.get(r)-n.get(a));return kt.set(t,{nodeLengths:n,order:o}),o}var Dt=new WeakMap;function Zn(t,n,e,o,a,r){let{scaleX:s,scaleY:c}=e,i=Dt.get(t);if(i?.deletions===n&&i.routes===a&&i.stranded===r&&i.scaleX===s&&i.scaleY===c&&i.version===o)return i.arcs;let l=[];for(let f of[...n].sort((y,p)=>p.bp-y.bp)){let y=Ht(t,f,e,a?.[f.edgeIndex],r),p=y?Nt(y):void 0;if(y&&p){let{minX:u,minY:x,maxX:d,maxY:h}=Ot(y);l.push({deletion:f,curves:y,apex:p,extent:Math.max((d-u)*s,(h-x)*c)})}}return Dt.set(t,{deletions:n,routes:a,stranded:r,scaleX:s,scaleY:c,version:o,arcs:l}),l}function Ve({nodePositions:t,nodeLengths:n,deletions:e,deletionRoutes:o,stranded:a=!1,alleleDeletions:r,axis:s,translateX:c,translateY:i,width:l,height:f,version:y=0}){let{scaleX:p,scaleY:u}=s,x=[],d=[];for(let{deletion:m,curves:g,apex:w,extent:L}of Zn(t,e,s,y,o,a))if(L>=Dn){let v=Xt(m.bp),M=j(v),_=V(M,0,0),E=w.x*p+c,A=w.y*u+i,S=L>=M*2/Y,O=zn(g,w,p,u),R=jn(_,O)+Wn,I=S?E:z(E+O.x*R,M,l-M),N=S?A:z(A+O.y*R,B,f-B),T=Math.hypot(I-E,N-A),C;if(T>0){let P={x:(I-E)/T,y:(N-A)/T},k=qn(_,P);C={arcX:E,arcY:A,labelX:I-P.x*k,labelY:N-P.y*k}}x.push({label:{key:`del:${m.edgeIndex}`,text:v,x:I,y:N,kind:"deletion",leader:C},box:V(M,I,N)})}let h=new Set,b=[...r??[]].sort((m,g)=>g.bp-m.bp);for(let m of b){let g=Kn(m.nodeIds,t);if(!g)continue;let w=Math.max(g.minX*p+c,0),L=Math.min(g.maxX*p+c,l),v=Math.max(g.minY*u+i,0),M=Math.min(g.maxY*u+i,f);if(L<w||M<v)continue;let _=Math.max(L-w,M-v),E=Xt(m.bp),A=j(E);if(_>=A*2/Y){for(let R of m.nodeIds)h.add(R);let S=z((w+L)/2,A,l-A),O=z((v+M)/2,B,f-B);x.push({label:{key:`alleledel:${m.nodeIds.join(",")}`,text:E,x:S,y:O,kind:"deletion"},box:V(A,S,O)})}}for(let[m,g]of Qn(t,n)){if(h.has(m))continue;let{x:w,y:L}=Tt(g),v=L*u+i;if(v+B<=0||v-B>=f)continue;let M=Jn(g,p,u);if(M<Vn*2/Y)continue;let _=Gt(n.get(m)),E=j(_);if(M>=E*2/Y){let A=w*p+c;d.push({label:{key:`node:${m}`,text:_,x:A,y:v,kind:"node"},box:V(E,A,v)})}}return{deletions:x,nodes:d}}function ze(t,n){return Math.max(Gn,Math.floor(t*n/Fn))}function je(t,n,e=1/0){let o=[];for(let{label:a,box:r}of t){if(o.length>=e)break;n(r)&&o.push(a)}return o}var te=/:(\d+)-\d+$/;function q(t){let n=te.exec(t);return n?{name:t.slice(0,n.index),start:+n[1]}:{name:t,start:0}}function Qe(t,n){let e=[],o=new Map;for(let a of t){let r=dt(a.name),s=a.start;for(let c of a.steps){let i={path:a.name,sample:r,start:s,strand:c.strand},l=o.get(c.id);l?l.push(i):o.set(c.id,[i]),s+=n(c.id)}e.push({name:a.name,sample:r,start:a.start,length:s-a.start})}return{anchorPaths:e,pathVisits:o}}function ne(t,n){return t.find(o=>o.sample===n||o.name===n)??t[0]}var ee=1;function oe(t,n,e){let o=t;if(n&&n.length>0){let a=n.find(r=>r.path===e)??n[0];o={...t,stable:{refName:a.path,start:a.start,rank:a.path===e?pt:ee,strand:a.strand},samples:[...new Set(n.map(r=>r.sample))].sort()}}return o}function re(t,n){let{anchorPaths:e,pathVisits:o}=t,a=e&&o?ne(e,n):void 0;return a&&o?{...t,nodes:t.nodes.map(r=>oe(r,o.get(r.name),a.name)),anchoredBy:"paths",referencePath:a.name}:t}function Ze(t,n){return t.anchoredBy==="tags"?t:re(t,n)}function to(t,n){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(r=>[r.id,r.length])),o=(r,s=r.length)=>{let c=0;for(let i=0;i<s;i++)c+=e.get(r[i])??0;return c},a=new Map;for(let r of t.paths??[]){let s=q(r.name).name;a.set(s,[...a.get(s)??[],r])}return t.anchorPaths.map(r=>{let s=a.get(r.name),c=s?.length===1?s[0]:void 0,i=c&&n.get(c.name);return c&&i?{...r,start:r.start+o(c.nodeIds,i.first),length:o(i.nodeIds)}:r})}function ae(t){let n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);return Math.abs(n%360)}function Wt(t,n){return t*360/n}var $t=.7,Ut=.5,Yt=16;function se(t){return t>0&&t<=Yt}function Vt(t,n){return`hsl(${Wt(t,n)}, ${$t*100}%, ${Ut*100}%)`}function ce(t,n){return`hsl(0, 0%, ${n>1?25+45*t/(n-1):45}%)`}function ie(t){let n=q(t).name.split("#"),e=n.join("#");if(n.length>=3&&ht(n[0])){let o=n.slice(2).join("#");return[o,o,e]}return[n[0],n.slice(0,2).join("#"),e]}function ue(t,n){let{start:e}=q(t);return n.map(o=>`${o} @${Ft(e)}`)}function le(t,n){let e=new Map;t.forEach((i,l)=>{e.has(i.name)||e.set(i.name,l)});let o=[...e].map(([i,l])=>({name:i,i:l})),a=o.map(i=>ie(i.name)),r=[0,1,2].flatMap(i=>[o.map((l,f)=>a[f][i]),o.map((l,f)=>ue(l.name,a[f])[i])]),c=r.find(i=>new Set(i).size===o.length)??r.at(-1);return o.map(({name:i,i:l},f)=>({name:i,label:c[f],color:n?.[l]??Vt(l,t.length)}))}function fe(t){let n=new Map;return new Map([...t].sort((e,o)=>e.label.localeCompare(o.label)).map(e=>{let o=(n.get(e.label)??0)+1;return n.set(e.label,o),[e.name,o>1?`${e.label} (${o})`:e.label]}))}var zt=[{value:"auto",label:"Auto"},{value:"uniform",label:"Uniform"},{value:"random",label:"Random"},{value:"rainbow",label:"Rainbow"},{value:"depth",label:"Depth"},{value:"node-length",label:"Node length"},{value:"stable-rank",label:"Stable rank"},{value:"reference-position",label:"Reference position"},{value:"grey",label:"Grey"}],de=zt.map(t=>t.value);function he(t,n){return t!=="auto"?t:n?.anchoredBy?"reference-position":"uniform"}var jt=[{value:"depth",label:"By depth",description:"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform."},{value:"uniform",label:"Uniform",description:"Every node the same thickness."}],pe=jt.map(t=>t.value),xe=.3,qt=3;function Jt(t){let n=0,e=0;for(let o of t.nodes)n+=o.depth*o.length,e+=o.length;return e>0?n/e:0}function Kt(t,n){return!(n>0)||!(t.depth>0)?1:Math.min(qt,Math.max(xe,Math.sqrt(t.depth/n)))}function Qt(t,n,e,o){return n*(e==="depth"?Kt(t,o):1)}function Zt(t,n){return t*(n==="depth"?qt:1)}function ye(t,n,e,o){let a=t?Jt(t):0;return{maxHalfWidthPx:Zt(e,o)/2,halfWidthPx:r=>{let s=n?.get(r);return s?Qt(s,e,o,a)/2:e/2}}}var $=40,nn=500,J=5;function me(t,n){return Math.max(t.nodeLengthPerMegabase*n/1e6,t.minimumNodeLength)}function en(t,n=J){let o=t.nodes.reduce((r,s)=>r+s.length,0)/1e6,a=Math.max(t.nodes.length*$,nn);return{nodeLengthPerMegabase:o>0?a/o:1e4,minimumNodeLength:Math.max(J,n),edgeLength:5,nodeSegmentLength:20}}var X={power:1,effect:1};function on(t){return t.power===1&&t.effect===1}function rn(t,n){let e=t.nodes.length,o=t.nodes.reduce((s,c)=>s+c.length,0),a=e>0?o/e:0,r=e>0?Math.max(e*$,nn)/e:$;return s=>{if(a<=0)return r;let c=(s/a)**n.power;return Math.max(r*((c-1)*n.effect+1),J)}}var tn=1e3,an={law:X,minNodeLength:0};function lo(t,n=an){let{law:e,minNodeLength:o}=n,a=en(t,o);if(on(e))return{nodes:t.nodes,opts:a};let r=rn(t,e);return{nodes:t.nodes.map(s=>({...s,length:Math.round(r(s.length)*tn)})),opts:{...a,nodeLengthPerMegabase:1e6/tn,minimumNodeLength:J}}}function fo(t,n=an){if(on(n.law)){let e=en(t,n.minNodeLength);return o=>me(e,o)}return rn(t,n.law)}var ot=[{value:"auto",label:"Proportional",description:"Bandage's own scale: a node draws proportional to its length, so a 1 bp allele is a speck.",law:X,minNodeFactor:0},{value:"open",label:"Open bubbles",description:"Give every allele a drawn length, so a bubble reads as two arms rather than a knot.",law:X,minNodeFactor:2.5},{value:"wide",label:"Wide bubbles",description:"As open, spread further. Best on a window of a dozen bubbles.",law:X,minNodeFactor:10},{value:"compress",label:"Compress lengths",description:"Pull the longest and shortest nodes towards the graph\u2019s mean, so a cut spanning kb and bp fits one pane.",law:{power:.5,effect:.5},minNodeFactor:0}],be=ot.map(t=>t.value);function ge(t){let n=ot.find(e=>e.value===t);return{law:n?.law??X,minNodeLength:(n?.minNodeFactor??0)*$}}export{bt as a,yt as b,dn as c,U as d,yn as e,ve as f,we as g,Ot as h,_e as i,Ne as j,G as k,St as l,Oe as m,It as n,tt as o,Pt as p,Re as q,Te as r,Ce as s,Cn as t,ke as u,kn as v,De as w,Ye as x,Ft as y,Gt as z,Ve as A,ze as B,je as C,q as D,Qe as E,ne as F,re as G,Ze as H,to as I,ae as J,Wt as K,$t as L,Ut as M,Yt as N,se as O,Vt as P,ce as Q,le as R,fe as S,zt as T,de as U,he as V,jt as W,pe as X,Jt as Y,Qt as Z,ye as _,me as $,lo as aa,fo as ba,ot as ca,be as da,ge as ea,Me as fa};
2
+ //# sourceMappingURL=chunk-CJ47OHWP.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["global-externals:tss-react/mui", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-AB35TJST.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-CPMHA4W5.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-2CVHXFK7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-TAMCZHLW.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-N6FECAXP.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-3ZZSX5HN.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-ST2IBUAN.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-7GBL7SJY.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JKJWSY4V.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-PBENCR5L.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-6JEWNXCQ.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-UVBGRJQX.js"],
3
+ "sources": ["global-externals:tss-react/mui", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-AB35TJST.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-CPMHA4W5.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-2CVHXFK7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-TAMCZHLW.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-N6FECAXP.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-3ZZSX5HN.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-ST2IBUAN.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-7GBL7SJY.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JKJWSY4V.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-PBENCR5L.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-6JEWNXCQ.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-UVBGRJQX.js"],
4
4
  "sourcesContent": ["module.exports = JBrowseExports[\"tss-react/mui\"];", "// src/overlayLabels.ts\nvar LABEL_PX = 11;\nvar LABEL_CHAR_PX = 6.2;\nvar LABEL_PAD = 4;\nfunction labelWidth(text) {\n return text.length * LABEL_CHAR_PX + LABEL_PAD * 2;\n}\nfunction overlaps(a, b) {\n return a.x0 < b.x1 && a.x1 > b.x0 && a.y0 < b.y1 && a.y1 > b.y0;\n}\nfunction offFrame(box, frame) {\n return box.x1 <= 0 || box.x0 >= frame.width || box.y1 <= 0 || box.y0 >= frame.height;\n}\nfunction insideFrame(box, frame) {\n return box.x0 >= 0 && box.x1 <= frame.width && box.y0 >= 0 && box.y1 <= frame.height;\n}\nfunction occupancy(frame, reserved = []) {\n const placed = [...reserved];\n return (box) => {\n if (offFrame(box, frame) || placed.some((p) => overlaps(p, box))) {\n return false;\n }\n placed.push(box);\n return true;\n };\n}\nfunction placeLabels(candidates, frame, take) {\n const out = [];\n const row = LABEL_PX + LABEL_PAD * 2;\n const place = (c, text) => {\n const w = labelWidth(text);\n const direction = c.y > frame.height / 2 ? -1 : 1;\n for (let tries = 0; tries <= (c.stack ?? 0); tries++) {\n const y = c.y + direction * tries * row;\n const box = {\n x0: c.x - w / 2,\n x1: c.x + w / 2,\n y0: y - LABEL_PX - LABEL_PAD,\n y1: y + LABEL_PAD\n };\n if (offFrame(box, frame)) {\n return void 0;\n }\n if (insideFrame(box, frame) && (c.fits?.(box) ?? true) && take(box)) {\n return { ...c, text, y, w };\n }\n }\n return void 0;\n };\n for (const c of candidates) {\n const placed = place(c, c.text) ?? (c.fallback === void 0 ? void 0 : place(c, c.fallback));\n if (placed) {\n out.push(placed);\n }\n }\n return out;\n}\n\nexport {\n LABEL_PX,\n LABEL_CHAR_PX,\n LABEL_PAD,\n labelWidth,\n overlaps,\n occupancy,\n placeLabels\n};\n", "// src/layout/rowSpacing.ts\nvar ROW_HEIGHT_PX = 20;\n\nexport {\n ROW_HEIGHT_PX\n};\n", "import {\n ROW_HEIGHT_PX\n} from \"./chunk-CPMHA4W5.js\";\n\n// src/util/geometry.ts\nfunction svgPath(points) {\n const round = (v) => Math.round(v * 100) / 100;\n return points.map((p, i) => `${i ? \"L\" : \"M\"}${round(p.x)},${round(p.y)}`).join(\"\");\n}\nfunction projectLine(x1, y1, x2, y2, distance) {\n const d = Math.hypot(y2 - y1, x2 - x1);\n if (d === 0) {\n return [x2, y2];\n }\n const vx = (x2 - x1) / d;\n const vy = (y2 - y1) / d;\n return [x2 + distance * vx, y2 + distance * vy];\n}\nfunction curvePointAt(c, t) {\n const u = 1 - t;\n const a = u * u * u;\n const b = 3 * u * u * t;\n const d = 3 * u * t * t;\n const e = t * t * t;\n return {\n x: a * c.x0 + b * c.cx0 + d * c.cx1 + e * c.x1,\n y: a * c.y0 + b * c.cy0 + d * c.cy1 + e * c.y1\n };\n}\nfunction curveMidpoint(curves) {\n const mid = curves[Math.floor(curves.length / 2)];\n return mid ? curvePointAt(mid, 0.5) : void 0;\n}\nfunction curveBounds(curves) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const c of curves) {\n minX = Math.min(minX, c.x0, c.cx0, c.cx1, c.x1);\n maxX = Math.max(maxX, c.x0, c.cx0, c.cx1, c.x1);\n minY = Math.min(minY, c.y0, c.cy0, c.cy1, c.y1);\n maxY = Math.max(maxY, c.y0, c.cy0, c.cy1, c.y1);\n }\n return { minX, minY, maxX, maxY };\n}\nfunction subCurve(c, t0, t1) {\n const p0 = curvePointAt(c, t0);\n const p1 = curvePointAt(c, t1);\n const dt = (t1 - t0) / 3;\n const d0 = curveTangentAt(c, t0);\n const d1 = curveTangentAt(c, t1);\n return {\n x0: p0.x,\n y0: p0.y,\n cx0: p0.x + d0.x * dt,\n cy0: p0.y + d0.y * dt,\n cx1: p1.x - d1.x * dt,\n cy1: p1.y - d1.y * dt,\n x1: p1.x,\n y1: p1.y\n };\n}\nfunction curveTangentAt(c, t) {\n const u = 1 - t;\n const a = 3 * u * u;\n const b = 6 * u * t;\n const d = 3 * t * t;\n return {\n x: a * (c.cx0 - c.x0) + b * (c.cx1 - c.cx0) + d * (c.x1 - c.cx1),\n y: a * (c.cy0 - c.y0) + b * (c.cy1 - c.cy0) + d * (c.y1 - c.cy1)\n };\n}\nfunction dashCurves(curves, dashWorld) {\n const lengths = curves.map(\n (c) => Math.hypot(c.cx0 - c.x0, c.cy0 - c.y0) + Math.hypot(c.cx1 - c.cx0, c.cy1 - c.cy0) + Math.hypot(c.x1 - c.cx1, c.y1 - c.cy1)\n );\n const total = lengths.reduce((a, b) => a + b, 0);\n const spans = Math.max(3, Math.round(total / dashWorld) | 1);\n const out = [];\n for (let i = 0; i < spans; i += 2) {\n const from = i / spans * total;\n const to = (i + 1) / spans * total;\n const dash = [];\n let start = 0;\n curves.forEach((c, k) => {\n const length = lengths[k];\n const end = start + length;\n if (length > 0 && end > from && start < to) {\n dash.push(\n subCurve(\n c,\n Math.max(0, (from - start) / length),\n Math.min(1, (to - start) / length)\n )\n );\n }\n start = end;\n });\n if (dash.length) {\n out.push(dash);\n }\n }\n return out;\n}\nfunction translateCurves(curves, dx, dy) {\n const out = new Array(curves.length);\n for (let i = 0; i < curves.length; i++) {\n const c = curves[i];\n out[i] = {\n x0: c.x0 + dx,\n y0: c.y0 + dy,\n cx0: c.cx0 + dx,\n cy0: c.cy0 + dy,\n cx1: c.cx1 + dx,\n cy1: c.cy1 + dy,\n x1: c.x1 + dx,\n y1: c.y1 + dy\n };\n }\n return out;\n}\nfunction attachment(segments, side) {\n const last = segments.length - 1;\n return side === \"end\" ? { at: segments[last], inward: segments[last - 1] } : { at: segments[0], inward: segments[1] };\n}\nvar TANGENT_SPAN_FACTOR = 0.5;\nvar MAX_TANGENT = 80;\nfunction ownStrand(id) {\n return id.endsWith(\"-\") ? \"-\" : \"+\";\n}\nfunction strandSides(edge) {\n const own = (id, strand) => (strand ?? ownStrand(id)) === ownStrand(id);\n return {\n from: own(edge.from, edge.fromStrand) ? \"end\" : \"start\",\n to: own(edge.to, edge.toStrand) ? \"start\" : \"end\"\n };\n}\nfunction spanOf(segments) {\n let min = Infinity;\n let max = -Infinity;\n for (const s of segments) {\n min = Math.min(min, s.x);\n max = Math.max(max, s.x);\n }\n return { min, max };\n}\nfunction distanceToSpan(x, span) {\n return Math.max(0, span.min - x, x - span.max);\n}\nfunction facingSide(segments, other, tieBreak) {\n const startGap = distanceToSpan(segments[0].x, other);\n const endGap = distanceToSpan(segments[segments.length - 1].x, other);\n return startGap === endGap ? tieBreak : startGap < endGap ? \"start\" : \"end\";\n}\nfunction facingSides(fromSegments, toSegments) {\n return {\n from: facingSide(fromSegments, spanOf(toSegments), \"end\"),\n to: facingSide(toSegments, spanOf(fromSegments), \"start\")\n };\n}\nvar laidSides = /* @__PURE__ */ new WeakMap();\nfunction heldFacingSides(fromSegments, toSegments) {\n let byTo = laidSides.get(fromSegments);\n if (!byTo) {\n byTo = /* @__PURE__ */ new WeakMap();\n laidSides.set(fromSegments, byTo);\n }\n let sides = byTo.get(toSegments);\n if (!sides) {\n sides = facingSides(fromSegments, toSegments);\n byTo.set(toSegments, sides);\n }\n return sides;\n}\nvar APEX_FRACTION = 0.75;\nvar BOW_CLEARANCE = 1.15;\nvar ALONG_FRACTION = 0.35;\nvar MAX_ROW_BOW_PX = 3 * ROW_HEIGHT_PX;\nfunction bowAround(p1x, p1y, p2x, p2y, toward, maxBow) {\n const chord = Math.hypot(p2x - p1x, p2y - p1y);\n const ux = chord === 0 ? 1 : (p2x - p1x) / chord;\n const uy = chord === 0 ? 0 : (p2y - p1y) / chord;\n let reach = 0;\n let minAlong = Infinity;\n let maxAlong = -Infinity;\n for (const p of toward) {\n const dx = p.x - p1x;\n const dy = p.y - p1y;\n const perp = dx * -uy + dy * ux;\n if (Math.abs(perp) > Math.abs(reach)) {\n reach = perp;\n }\n const along = dx * ux + dy * uy;\n minAlong = Math.min(minAlong, along);\n maxAlong = Math.max(maxAlong, along);\n }\n const span = toward.length ? maxAlong - minAlong : 0;\n const uncapped = Math.max(\n Math.abs(reach) * BOW_CLEARANCE / APEX_FRACTION,\n span * ALONG_FRACTION\n );\n const size = maxBow === void 0 ? uncapped : Math.min(uncapped, maxBow);\n return reach < 0 ? -size : size;\n}\nfunction yToXOf({ scaleX, scaleY }) {\n return scaleY / scaleX;\n}\nvar PATH_RIBBON_SPACING = 3;\nfunction drawnDirection(a, b, yToX) {\n const dx = b.x - a.x;\n const dy = (b.y - a.y) * yToX;\n const len = Math.hypot(dx, dy);\n return len === 0 ? void 0 : { x: dx / len, y: dy / len };\n}\nfunction pathRibbonOffsets(fromSegments, toSegments, count, axis, spacing = PATH_RIBBON_SPACING) {\n const yToX = yToXOf(axis);\n const dir = drawnDirection(\n fromSegments[fromSegments.length - 1],\n toSegments[0],\n yToX\n ) ?? drawnDirection(fromSegments[0], fromSegments.at(-1), yToX) ?? drawnDirection(toSegments[0], toSegments.at(-1), yToX) ?? { x: 1, y: 0 };\n const offsets = [];\n for (let i = 0; i < count; i++) {\n const distance = (i - (count - 1) / 2) * spacing;\n offsets.push({ x: -dir.y * distance, y: dir.x * distance / yToX });\n }\n return offsets;\n}\nfunction scaleYOf(points, yToX) {\n return points.map((p) => ({ x: p.x, y: p.y * yToX }));\n}\nfunction unscaleYOf(curves, yToX) {\n for (const c of curves) {\n c.y0 /= yToX;\n c.cy0 /= yToX;\n c.cy1 /= yToX;\n c.y1 /= yToX;\n }\n return curves;\n}\nvar SELF_LOOP_MIN_PX = 12;\nvar SELF_LOOP_MAX_PX = 40;\nfunction selfLoopReach(segments, scale) {\n let length = 0;\n for (let i = 1; i < segments.length; i++) {\n length += Math.hypot(\n segments[i].x - segments[i - 1].x,\n segments[i].y - segments[i - 1].y\n );\n }\n const nodePx = length * scale;\n const reachPx = Math.min(\n SELF_LOOP_MAX_PX,\n Math.max(SELF_LOOP_MIN_PX, nodePx / 2)\n );\n return reachPx / Math.max(scale, Number.EPSILON);\n}\nfunction selfLinkOf(edge) {\n if (edge.from !== edge.to) {\n return false;\n }\n return edge.fromStrand && edge.toStrand && edge.fromStrand !== edge.toStrand ? edge.fromStrand === \"+\" ? \"end\" : \"start\" : true;\n}\nfunction edgeJoinOf(edge, stranded = false) {\n const self = selfLinkOf(edge);\n if (!stranded) {\n return self;\n }\n const sides = strandSides(edge);\n return self === false ? sides : sides.from === sides.to ? sides.from : true;\n}\nfunction hairpinCurves(attach, reach, offsetX, offsetY) {\n const { at, inward } = attach;\n const dx = inward ? at.x - inward.x : 1;\n const dy = inward ? at.y - inward.y : 0;\n const len = Math.hypot(dx, dy) || 1;\n const ux = dx / len;\n const uy = dy / len;\n const px = at.x + offsetX;\n const py = at.y + offsetY;\n const nearX = px + ux * reach / 3;\n const nearY = py + uy * reach / 3;\n const apexX = px + ux * reach;\n const apexY = py + uy * reach;\n const sideX = -uy * reach / 2;\n const sideY = ux * reach / 2;\n return [\n {\n x0: px,\n y0: py,\n cx0: nearX,\n cy0: nearY,\n cx1: apexX + sideX,\n cy1: apexY + sideY,\n x1: apexX,\n y1: apexY\n },\n {\n x0: apexX,\n y0: apexY,\n cx0: apexX - sideX,\n cy0: apexY - sideY,\n cx1: nearX,\n cy1: nearY,\n x1: px,\n y1: py\n }\n ];\n}\nfunction computeEdgeCurves(fromSegments, toSegments, join, offsetX, offsetY, axis, bypassed = [], maxBowIn) {\n const scale = axis.scaleX;\n const yToX = yToXOf(axis);\n const maxBow = maxBowIn ?? (axis.pixelRows ? MAX_ROW_BOW_PX : void 0);\n if (join === false) {\n join = heldFacingSides(fromSegments, toSegments);\n }\n if (yToX !== 1) {\n return unscaleYOf(\n computeEdgeCurves(\n scaleYOf(fromSegments, yToX),\n scaleYOf(toSegments, yToX),\n join,\n offsetX,\n offsetY * yToX,\n { scaleX: scale, scaleY: scale },\n scaleYOf(bypassed, yToX),\n // the cap is a y measure and the body works in x units, so it converts\n // with everything else that crosses this boundary\n maxBow === void 0 ? void 0 : maxBow * yToX\n ),\n yToX\n );\n }\n if (typeof join === \"string\") {\n return hairpinCurves(\n attachment(fromSegments, join),\n selfLoopReach(fromSegments, scale),\n offsetX,\n offsetY\n );\n }\n const loop = join === true;\n const sides = join === true ? { from: \"end\", to: \"start\" } : join;\n const fromAttach = attachment(fromSegments, sides.from);\n const toAttach = attachment(toSegments, sides.to);\n const fromEnd = fromAttach.at;\n const toStart = toAttach.at;\n const p1x = fromEnd.x + offsetX;\n const p1y = fromEnd.y + offsetY;\n const p2x = toStart.x + offsetX;\n const p2y = toStart.y + offsetY;\n if (loop) {\n let segDirX = 1;\n let segDirY = 0;\n if (fromAttach.inward) {\n const dx = fromEnd.x - fromAttach.inward.x;\n const dy = fromEnd.y - fromAttach.inward.y;\n const len = Math.hypot(dx, dy);\n if (len > 0) {\n segDirX = dx / len;\n segDirY = dy / len;\n }\n }\n const ext = selfLoopReach(fromSegments, scale);\n const perpX = -segDirY;\n const perpY = segDirX;\n const midX = (fromEnd.x + toStart.x) / 2 + offsetX + perpX * ext;\n const midY = (fromEnd.y + toStart.y) / 2 + offsetY + perpY * ext;\n const cp1x = p1x + segDirX * ext;\n const cp1y = p1y + segDirY * ext;\n const cp2x = p2x - segDirX * ext;\n const cp2y = p2y - segDirY * ext;\n return [\n {\n x0: p1x,\n y0: p1y,\n cx0: cp1x,\n cy0: cp1y,\n cx1: cp1x + perpX * ext,\n cy1: cp1y + perpY * ext,\n x1: midX,\n y1: midY\n },\n {\n x0: midX,\n y0: midY,\n cx0: cp2x + perpX * ext,\n cy0: cp2y + perpY * ext,\n cx1: cp2x,\n cy1: cp2y,\n x1: p2x,\n y1: p2y\n }\n ];\n } else {\n const fromPrev = fromAttach.inward ?? {\n x: fromEnd.x - (toStart.x - fromEnd.x),\n y: fromEnd.y - (toStart.y - fromEnd.y)\n };\n const toNext = toAttach.inward ?? {\n x: toStart.x - (fromEnd.x - toStart.x),\n y: toStart.y - (fromEnd.y - toStart.y)\n };\n const dist = Math.hypot(p2x - p1x, p2y - p1y);\n const tangentProj = (prev, at, towardX, towardY) => {\n const dx = at.x - prev.x;\n const dy = at.y - prev.y;\n const len = Math.hypot(dx, dy);\n const along = len === 0 ? 0 : (towardX * dx + towardY * dy) / len;\n return Math.max(\n 0,\n Math.min(dist * TANGENT_SPAN_FACTOR, MAX_TANGENT, along * 0.5)\n );\n };\n const towardToX = toStart.x - fromEnd.x;\n const towardToY = toStart.y - fromEnd.y;\n const [cx1, cy1] = projectLine(\n fromPrev.x,\n fromPrev.y,\n fromEnd.x,\n fromEnd.y,\n tangentProj(fromPrev, fromEnd, towardToX, towardToY)\n );\n const [cx2, cy2] = projectLine(\n toNext.x,\n toNext.y,\n toStart.x,\n toStart.y,\n tangentProj(toNext, toStart, -towardToX, -towardToY)\n );\n const bulge = bypassed.length ? bowAround(p1x, p1y, p2x, p2y, bypassed, maxBow) : 0;\n const chordLen = dist === 0 ? 1 : dist;\n const ux = (p2x - p1x) / chordLen;\n const uy = (p2y - p1y) / chordLen;\n const bulgeX = -uy * bulge;\n const bulgeY = ux * bulge;\n const spreadX = ux * Math.abs(bulge);\n const spreadY = uy * Math.abs(bulge);\n return [\n {\n x0: p1x,\n y0: p1y,\n cx0: cx1 + offsetX + bulgeX - spreadX,\n cy0: cy1 + offsetY + bulgeY - spreadY,\n cx1: cx2 + offsetX + bulgeX + spreadX,\n cy1: cy2 + offsetY + bulgeY + spreadY,\n x1: p2x,\n y1: p2y\n }\n ];\n }\n}\nfunction nearerEnd(segments, to) {\n const start = segments[0];\n const end = segments.at(-1);\n return Math.hypot(start.x - to.x, start.y - to.y) < Math.hypot(end.x - to.x, end.y - to.y) ? \"start\" : \"end\";\n}\nfunction routedEdgeCurves(fromSegments, toSegments, route, sides) {\n const fromAttach = attachment(\n fromSegments,\n sides?.from ?? nearerEnd(fromSegments, route[0])\n );\n const toAttach = attachment(\n toSegments,\n sides?.to ?? nearerEnd(toSegments, route.at(-1))\n );\n const points = [fromAttach.at, ...route, toAttach.at];\n const tangent = (i) => {\n const p = points[i];\n const span = (q) => Math.hypot(q.x - p.x, q.y - p.y);\n const along = (inward, next) => {\n const len = inward ? span(inward) : 0;\n const reach = span(next);\n return len === 0 ? { x: next.x - p.x, y: next.y - p.y } : {\n x: (p.x - inward.x) / len * reach,\n y: (p.y - inward.y) / len * reach\n };\n };\n if (i === 0) {\n return along(fromAttach.inward, points[1]);\n }\n if (i === points.length - 1) {\n const out = along(toAttach.inward, points[i - 1]);\n return { x: -out.x, y: -out.y };\n }\n return {\n x: (points[i + 1].x - points[i - 1].x) / 2,\n y: (points[i + 1].y - points[i - 1].y) / 2\n };\n };\n const curves = [];\n for (let i = 0; i < points.length - 1; i++) {\n const a = points[i];\n const b = points[i + 1];\n const ta = tangent(i);\n const tb = tangent(i + 1);\n curves.push({\n x0: a.x,\n y0: a.y,\n cx0: a.x + ta.x / 3,\n cy0: a.y + ta.y / 3,\n cx1: b.x - tb.x / 3,\n cy1: b.y - tb.y / 3,\n x1: b.x,\n y1: b.y\n });\n }\n return curves;\n}\n\nexport {\n svgPath,\n projectLine,\n curvePointAt,\n curveMidpoint,\n curveBounds,\n dashCurves,\n translateCurves,\n ownStrand,\n strandSides,\n bowAround,\n yToXOf,\n PATH_RIBBON_SPACING,\n pathRibbonOffsets,\n selfLinkOf,\n edgeJoinOf,\n computeEdgeCurves,\n routedEdgeCurves\n};\n", "import {\n ownStrand,\n strandSides\n} from \"./chunk-2CVHXFK7.js\";\nimport {\n isBackbone\n} from \"./chunk-FYQWPEEY.js\";\n\n// src/layout/mergeRuns.ts\nfunction flip(strand) {\n return strand === \"+\" ? \"-\" : \"+\";\n}\nfunction mergeRuns(graph, alone = /* @__PURE__ */ new Set()) {\n const sides = graph.edges.map(strandSides);\n const at = /* @__PURE__ */ new Map();\n const attach = (id, side, ei) => {\n const key = `${id}|${side}`;\n const list = at.get(key);\n if (list) {\n list.push(ei);\n } else {\n at.set(key, [ei]);\n }\n };\n graph.edges.forEach((edge, ei) => {\n attach(edge.from, sides[ei].from, ei);\n attach(edge.to, sides[ei].to, ei);\n });\n const joinAfter = (a) => {\n const out = at.get(`${a}|end`);\n if (out?.length !== 1) {\n return void 0;\n }\n const ei = out[0];\n const edge = graph.edges[ei];\n return edge.from === a && edge.to !== a && !alone.has(a) && !alone.has(edge.to) && sides[ei].from === \"end\" && sides[ei].to === \"start\" && at.get(`${edge.to}|start`)?.length === 1 ? ei : void 0;\n };\n const joined = /* @__PURE__ */ new Set();\n const runOf = /* @__PURE__ */ new Map();\n const runs = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const into = at.get(`${node.id}|start`);\n const pred = into?.length === 1 ? graph.edges[into[0]].from : void 0;\n if (runOf.has(node.id) || pred !== void 0 && joinAfter(pred) === into[0]) {\n continue;\n }\n const run = [node.id];\n for (; ; ) {\n const ei = joinAfter(run.at(-1));\n const next = ei === void 0 ? void 0 : graph.edges[ei].to;\n if (next === void 0 || runOf.has(next)) {\n break;\n }\n joined.add(ei);\n run.push(next);\n }\n for (const id of run) {\n runOf.set(id, node.id);\n }\n if (run.length > 1) {\n runs.set(node.id, run);\n }\n }\n for (const node of graph.nodes) {\n if (!runOf.has(node.id)) {\n runOf.set(node.id, node.id);\n }\n }\n const byId = new Map(graph.nodes.map((n) => [n.id, n]));\n const nodes = [];\n for (const node of graph.nodes) {\n if (runOf.get(node.id) !== node.id) {\n continue;\n }\n const run = runs.get(node.id);\n if (!run) {\n nodes.push(node);\n continue;\n }\n const members = run.map((id) => byId.get(id));\n const backbone = members.filter(isBackbone);\n const first = backbone.length ? backbone.reduce((a, b) => a.stable.start <= b.stable.start ? a : b) : members[0];\n nodes.push({\n id: node.id,\n name: node.name,\n length: members.reduce((sum, n) => sum + n.length, 0),\n depth: node.depth,\n stable: first.stable\n });\n }\n const seen = /* @__PURE__ */ new Set();\n const edges = [];\n graph.edges.forEach((edge, ei) => {\n const from = runOf.get(edge.from);\n const to = runOf.get(edge.to);\n const side = sides[ei];\n const key = `${from}|${side.from}>${to}|${side.to}`;\n if (joined.has(ei) || seen.has(key)) {\n return;\n }\n seen.add(key);\n edges.push({\n from,\n to,\n ...side.from === \"start\" ? { fromStrand: flip(ownStrand(from)) } : {},\n ...side.to === \"end\" ? { toStrand: flip(ownStrand(to)) } : {}\n });\n });\n return {\n graph: { ...graph, nodes, edges, paths: void 0, pathVisits: void 0 },\n runs\n };\n}\nfunction splitRuns(positions, runs, weightOf) {\n const out = { ...positions };\n for (const [id, members] of runs) {\n const line = positions[id];\n if (!line?.length) {\n continue;\n }\n delete out[id];\n const arc = arcPrefix(line);\n const total = arc.at(-1);\n const weights = members.map((m) => Math.max(weightOf(m), 0));\n const weightSum = weights.reduce((a, b) => a + b, 0) || members.length;\n let from = 0;\n members.forEach((member, k) => {\n const share = weightSum ? weights[k] / weightSum * total : total / members.length;\n const to = k === members.length - 1 ? total : from + share;\n out[member] = slice(line, arc, from, to);\n from = to;\n });\n }\n return out;\n}\nfunction polylineSlice(line, from, to) {\n if (line.length === 0) {\n return [];\n }\n const arc = arcPrefix(line);\n const total = arc.at(-1);\n return slice(line, arc, from * total, to * total);\n}\nfunction polylineMidpoint(line) {\n const arc = arcPrefix(line);\n return pointAt(line, arc, arc.at(-1) / 2);\n}\nfunction arcPrefix(line) {\n const arc = [0];\n for (let i = 1; i < line.length; i++) {\n arc.push(\n arc[i - 1] + Math.hypot(line[i].x - line[i - 1].x, line[i].y - line[i - 1].y)\n );\n }\n return arc;\n}\nfunction pointAt(line, arc, s) {\n if (s <= 0) {\n return { ...line[0] };\n }\n let i = 1;\n while (i < arc.length && arc[i] < s) {\n i++;\n }\n if (i >= arc.length) {\n return { ...line.at(-1) };\n }\n const span = arc[i] - arc[i - 1];\n const t = span > 0 ? (s - arc[i - 1]) / span : 0;\n const a = line[i - 1];\n const b = line[i];\n return { x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t };\n}\nfunction slice(line, arc, from, to) {\n const points = [pointAt(line, arc, from)];\n for (let i = 0; i < line.length; i++) {\n if (arc[i] > from && arc[i] < to) {\n points.push({ ...line[i] });\n }\n }\n points.push(pointAt(line, arc, to));\n return points;\n}\n\nexport {\n mergeRuns,\n splitRuns,\n polylineSlice,\n polylineMidpoint\n};\n", "import {\n computeEdgeCurves,\n edgeJoinOf,\n routedEdgeCurves,\n strandSides\n} from \"./chunk-2CVHXFK7.js\";\nimport {\n firstNodeAtOrAfter,\n isBackbone\n} from \"./chunk-FYQWPEEY.js\";\n\n// src/deletionEdges.ts\nvar MIN_DELETION_BP = 1;\nfunction bypassedPoints(nodePositions, bypassed) {\n return bypassed.flatMap((id) => nodePositions[id] ?? []);\n}\nfunction deletionArcCurves(nodePositions, deletion, axis, route, stranded = false) {\n const from = nodePositions[deletion.from];\n const to = nodePositions[deletion.to];\n if (!from?.length || !to?.length) {\n return void 0;\n }\n return route ? routedEdgeCurves(\n from,\n to,\n route,\n stranded ? strandSides(deletion) : void 0\n ) : computeEdgeCurves(\n from,\n to,\n edgeJoinOf(deletion, stranded),\n 0,\n 0,\n axis,\n bypassedPoints(nodePositions, deletion.bypassed)\n );\n}\nfunction backboneBySequence(graph) {\n const bySequence = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n if (isBackbone(node)) {\n const list = bySequence.get(node.stable.refName);\n if (list) {\n list.push(node);\n } else {\n bySequence.set(node.stable.refName, [node]);\n }\n }\n }\n for (const list of bySequence.values()) {\n list.sort((a, b) => a.stable.start - b.stable.start);\n }\n return bySequence;\n}\nfunction bypassedNodes(nodes, start, end) {\n const bypassed = [];\n if (nodes) {\n for (let i = firstNodeAtOrAfter(nodes, start); i < nodes.length; i++) {\n const node = nodes[i];\n if (node.stable.start >= end) {\n break;\n }\n if (node.stable.start + node.length <= end) {\n bypassed.push(node.id);\n }\n }\n }\n return bypassed;\n}\nfunction skipsBetween(edge, from, to, forwards) {\n const { fromStrand, toStrand } = edge;\n if (fromStrand === void 0 || toStrand === void 0) {\n return true;\n }\n const leavesRight = fromStrand === (from.stable.strand ?? \"+\");\n const arrivesLeft = toStrand === (to.stable.strand ?? \"+\");\n return forwards ? leavesRight && arrivesLeft : !leavesRight && !arrivesLeft;\n}\nfunction deletionEdges(graph) {\n const byId = new Map(graph.nodes.map((n) => [n.id, n]));\n const backbone = backboneBySequence(graph);\n const found = [];\n for (let edgeIndex = 0; edgeIndex < graph.edges.length; edgeIndex++) {\n const edge = graph.edges[edgeIndex];\n const from = byId.get(edge.from);\n const to = byId.get(edge.to);\n if (from !== void 0 && to !== void 0 && isBackbone(from) && isBackbone(to) && from.stable.refName === to.stable.refName) {\n const forwards = from.stable.start <= to.stable.start;\n const [left, right] = forwards ? [from, to] : [to, from];\n const start = left.stable.start + left.length;\n const end = right.stable.start;\n const bp = end - start;\n if (bp >= MIN_DELETION_BP && skipsBetween(edge, from, to, forwards)) {\n const refName = left.stable.refName;\n found.push({\n edgeIndex,\n from: edge.from,\n to: edge.to,\n ...edge.fromStrand ? { fromStrand: edge.fromStrand } : {},\n ...edge.toStrand ? { toStrand: edge.toStrand } : {},\n refName,\n start,\n end,\n bp,\n bypassed: bypassedNodes(backbone.get(refName), start, end)\n });\n }\n }\n }\n return found;\n}\nfunction closableDeletions(graph, deletions) {\n const parent = /* @__PURE__ */ new Map();\n const root = (id) => {\n let r = id;\n while (parent.has(r)) {\n r = parent.get(r);\n }\n if (r !== id) {\n parent.set(id, r);\n }\n return r;\n };\n const join = (a, b) => {\n const [ra, rb] = [root(a), root(b)];\n if (ra !== rb) {\n parent.set(ra, rb);\n }\n return ra !== rb;\n };\n const candidates = new Set(deletions.map((d) => d.edgeIndex));\n graph.edges.forEach((e, ei) => {\n if (!candidates.has(ei)) {\n join(e.from, e.to);\n }\n });\n return new Set(\n deletions.filter((d) => !join(d.from, d.to)).map((d) => d.edgeIndex)\n );\n}\nvar drawings = /* @__PURE__ */ new WeakMap();\nfunction deletionDrawing(graph, deletions, show = true) {\n let byShow = drawings.get(deletions);\n if (!byShow) {\n byShow = /* @__PURE__ */ new Map();\n drawings.set(deletions, byShow);\n }\n let drawing = byShow.get(show);\n if (!drawing) {\n const hidden = show ? /* @__PURE__ */ new Set() : closableDeletions(graph, deletions);\n drawing = {\n shown: deletions.filter((d) => !hidden.has(d.edgeIndex)),\n bypassed: new Map(deletions.map((d) => [d.edgeIndex, d.bypassed])),\n hidden\n };\n byShow.set(show, drawing);\n }\n return drawing;\n}\n\nexport {\n bypassedPoints,\n deletionArcCurves,\n deletionEdges,\n closableDeletions,\n deletionDrawing\n};\n", "import {\n occupancy\n} from \"./chunk-AB35TJST.js\";\nimport {\n polylineMidpoint\n} from \"./chunk-TAMCZHLW.js\";\nimport {\n deletionArcCurves\n} from \"./chunk-N6FECAXP.js\";\nimport {\n curveBounds,\n curveMidpoint\n} from \"./chunk-2CVHXFK7.js\";\n\n// src/graphLabels.ts\nvar MIN_DELETION_LABEL_PX = 26;\nvar PX_PER_NODE_LABEL = 4e4;\nvar MIN_NODE_LABELS = 8;\nvar LEADER_GAP_PX = 8;\nvar LABEL_CHAR_PX = 5.7;\nvar LABEL_PAD_PX = 6;\nvar LABEL_HEIGHT_PX = 13;\nvar LABEL_GAP_PX = 3;\nvar MAX_LABEL_OVERHANG = 2;\nfunction labelHalfWidth(text) {\n return (text.length * LABEL_CHAR_PX + LABEL_PAD_PX + LABEL_GAP_PX) / 2;\n}\nvar LABEL_HALF_HEIGHT = (LABEL_HEIGHT_PX + LABEL_GAP_PX) / 2;\nvar MIN_LABEL_HALF_WIDTH = labelHalfWidth(\"1 bp\");\nfunction boxAt(halfW, x, y) {\n return {\n x0: x - halfW,\n x1: x + halfW,\n y0: y - LABEL_HALF_HEIGHT,\n y1: y + LABEL_HALF_HEIGHT\n };\n}\nfunction rowLabelBox(text, screenY) {\n return {\n x0: 6,\n x1: 6 + text.length * 6.2 + 8 + LABEL_GAP_PX,\n y0: screenY - 8 - LABEL_GAP_PX / 2,\n y1: screenY + 8 + LABEL_GAP_PX / 2\n };\n}\nfunction clamp(v, lo, hi) {\n return hi < lo ? v : Math.min(Math.max(v, lo), hi);\n}\nfunction groupDigits(n) {\n return String(n).replace(/\\B(?=(\\d{3})+$)/g, \",\");\n}\nfunction formatBp(bp) {\n if (bp >= 1e6) {\n return `${+(bp / 1e6).toFixed(1)} Mb`;\n }\n return bp >= 1e3 ? `${+(bp / 1e3).toFixed(1)} kb` : `${bp} bp`;\n}\nfunction deletionText(bp) {\n return `${formatBp(bp)} del`;\n}\nfunction arcOutward(curves, apex, scaleX, scaleY) {\n const first = curves[0];\n const last = curves[curves.length - 1];\n const dx = (apex.x - (first.x0 + last.x1) / 2) * scaleX;\n const dy = (apex.y - (first.y0 + last.y1) / 2) * scaleY;\n const len = Math.hypot(dx, dy);\n return len === 0 ? { x: 0, y: -1 } : { x: dx / len, y: dy / len };\n}\nfunction boxSupport(box, dir) {\n return Math.abs(dir.x) * (box.x1 - box.x0) / 2 + Math.abs(dir.y) * (box.y1 - box.y0) / 2;\n}\nfunction boxRayCrossing(box, dir) {\n const halfW = (box.x1 - box.x0) / 2;\n const halfH = (box.y1 - box.y0) / 2;\n return Math.min(\n dir.x === 0 ? Infinity : halfW / Math.abs(dir.x),\n dir.y === 0 ? Infinity : halfH / Math.abs(dir.y)\n );\n}\nfunction drawnLength(segments, scaleX, scaleY) {\n let total = 0;\n for (let i = 1; i < segments.length; i++) {\n const a = segments[i - 1];\n const b = segments[i];\n total += Math.hypot((b.x - a.x) * scaleX, (b.y - a.y) * scaleY);\n }\n return total;\n}\nfunction runBounds(nodeIds, nodePositions) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const id of nodeIds) {\n for (const p of nodePositions[id] ?? []) {\n minX = Math.min(minX, p.x);\n maxX = Math.max(maxX, p.x);\n minY = Math.min(minY, p.y);\n maxY = Math.max(maxY, p.y);\n }\n }\n return minX === Infinity ? void 0 : { minX, minY, maxX, maxY };\n}\nvar nodeOrderCache = /* @__PURE__ */ new WeakMap();\nfunction labelOrder(nodePositions, nodeLengths) {\n const cached = nodeOrderCache.get(nodePositions);\n if (cached?.nodeLengths === nodeLengths) {\n return cached.order;\n }\n const order = Object.entries(nodePositions).filter(([id, segments]) => segments.length > 0 && nodeLengths.has(id)).sort(([a], [b]) => nodeLengths.get(b) - nodeLengths.get(a));\n nodeOrderCache.set(nodePositions, { nodeLengths, order });\n return order;\n}\nvar arcCache = /* @__PURE__ */ new WeakMap();\nfunction arcPlacements(nodePositions, deletions, axis, version, routes, stranded) {\n const { scaleX, scaleY } = axis;\n const cached = arcCache.get(nodePositions);\n if (cached?.deletions === deletions && cached.routes === routes && cached.stranded === stranded && cached.scaleX === scaleX && cached.scaleY === scaleY && cached.version === version) {\n return cached.arcs;\n }\n const arcs = [];\n for (const deletion of [...deletions].sort((a, b) => b.bp - a.bp)) {\n const curves = deletionArcCurves(\n nodePositions,\n deletion,\n axis,\n routes?.[deletion.edgeIndex],\n stranded\n );\n const apex = curves ? curveMidpoint(curves) : void 0;\n if (curves && apex) {\n const { minX, minY, maxX, maxY } = curveBounds(curves);\n arcs.push({\n deletion,\n curves,\n apex,\n // in screen px, so the two axes' units cannot be added by accident\n extent: Math.max((maxX - minX) * scaleX, (maxY - minY) * scaleY)\n });\n }\n }\n arcCache.set(nodePositions, {\n deletions,\n routes,\n stranded,\n scaleX,\n scaleY,\n version,\n arcs\n });\n return arcs;\n}\nfunction sizeLabelCandidates({\n nodePositions,\n nodeLengths,\n deletions,\n deletionRoutes,\n stranded = false,\n alleleDeletions,\n axis,\n translateX,\n translateY,\n width,\n height,\n version = 0\n}) {\n const { scaleX, scaleY } = axis;\n const deletionCandidates = [];\n const nodeCandidates = [];\n for (const { deletion, curves, apex, extent } of arcPlacements(\n nodePositions,\n deletions,\n axis,\n version,\n deletionRoutes,\n stranded\n )) {\n if (extent >= MIN_DELETION_LABEL_PX) {\n const text = deletionText(deletion.bp);\n const halfW = labelHalfWidth(text);\n const box = boxAt(halfW, 0, 0);\n const arcX = apex.x * scaleX + translateX;\n const arcY = apex.y * scaleY + translateY;\n const fits = extent >= halfW * 2 / MAX_LABEL_OVERHANG;\n const bow = arcOutward(curves, apex, scaleX, scaleY);\n const offset = boxSupport(box, bow) + LEADER_GAP_PX;\n const x = fits ? arcX : clamp(arcX + bow.x * offset, halfW, width - halfW);\n const y = fits ? arcY : clamp(\n arcY + bow.y * offset,\n LABEL_HALF_HEIGHT,\n height - LABEL_HALF_HEIGHT\n );\n const away = Math.hypot(x - arcX, y - arcY);\n let leader;\n if (away > 0) {\n const dir = { x: (x - arcX) / away, y: (y - arcY) / away };\n const crossing = boxRayCrossing(box, dir);\n leader = {\n arcX,\n arcY,\n labelX: x - dir.x * crossing,\n labelY: y - dir.y * crossing\n };\n }\n deletionCandidates.push({\n label: {\n key: `del:${deletion.edgeIndex}`,\n text,\n x,\n y,\n kind: \"deletion\",\n leader\n },\n box: boxAt(halfW, x, y)\n });\n }\n }\n const labelledByDeletion = /* @__PURE__ */ new Set();\n const alleleRuns = [...alleleDeletions ?? []].sort((a, b) => b.bp - a.bp);\n for (const run of alleleRuns) {\n const drawn = runBounds(run.nodeIds, nodePositions);\n if (!drawn) {\n continue;\n }\n const shownLeft = Math.max(drawn.minX * scaleX + translateX, 0);\n const shownRight = Math.min(drawn.maxX * scaleX + translateX, width);\n const shownTop = Math.max(drawn.minY * scaleY + translateY, 0);\n const shownBottom = Math.min(drawn.maxY * scaleY + translateY, height);\n if (shownRight < shownLeft || shownBottom < shownTop) {\n continue;\n }\n const extent = Math.max(shownRight - shownLeft, shownBottom - shownTop);\n const text = deletionText(run.bp);\n const halfW = labelHalfWidth(text);\n if (extent >= halfW * 2 / MAX_LABEL_OVERHANG) {\n for (const id of run.nodeIds) {\n labelledByDeletion.add(id);\n }\n const x = clamp((shownLeft + shownRight) / 2, halfW, width - halfW);\n const y = clamp(\n (shownTop + shownBottom) / 2,\n LABEL_HALF_HEIGHT,\n height - LABEL_HALF_HEIGHT\n );\n deletionCandidates.push({\n label: {\n key: `alleledel:${run.nodeIds.join(\",\")}`,\n text,\n x,\n y,\n kind: \"deletion\"\n },\n box: boxAt(halfW, x, y)\n });\n }\n }\n for (const [id, segments] of labelOrder(nodePositions, nodeLengths)) {\n if (labelledByDeletion.has(id)) {\n continue;\n }\n const { x, y } = polylineMidpoint(segments);\n const screenY = y * scaleY + translateY;\n if (screenY + LABEL_HALF_HEIGHT <= 0 || screenY - LABEL_HALF_HEIGHT >= height) {\n continue;\n }\n const drawn = drawnLength(segments, scaleX, scaleY);\n if (drawn < MIN_LABEL_HALF_WIDTH * 2 / MAX_LABEL_OVERHANG) {\n continue;\n }\n const text = formatBp(nodeLengths.get(id));\n const halfW = labelHalfWidth(text);\n if (drawn >= halfW * 2 / MAX_LABEL_OVERHANG) {\n const screenX = x * scaleX + translateX;\n nodeCandidates.push({\n label: {\n key: `node:${id}`,\n text,\n x: screenX,\n y: screenY,\n kind: \"node\"\n },\n box: boxAt(halfW, screenX, screenY)\n });\n }\n }\n return { deletions: deletionCandidates, nodes: nodeCandidates };\n}\nfunction nodeLabelBudget(width, height) {\n return Math.max(\n MIN_NODE_LABELS,\n Math.floor(width * height / PX_PER_NODE_LABEL)\n );\n}\nfunction placeSizeLabels(candidates, take, budget = Infinity) {\n const labels = [];\n for (const { label, box } of candidates) {\n if (labels.length >= budget) {\n break;\n }\n if (take(box)) {\n labels.push(label);\n }\n }\n return labels;\n}\nfunction graphLabels({\n reserved,\n ...args\n}) {\n const take = occupancy(args, reserved);\n const { deletions, nodes } = sizeLabelCandidates(args);\n return [\n ...placeSizeLabels(deletions, take),\n ...placeSizeLabels(nodes, take, nodeLabelBudget(args.width, args.height))\n ];\n}\n\nexport {\n rowLabelBox,\n groupDigits,\n formatBp,\n sizeLabelCandidates,\n nodeLabelBudget,\n placeSizeLabels,\n graphLabels\n};\n", "import {\n panSNSample\n} from \"./chunk-BPLIXMH7.js\";\nimport {\n REFERENCE_RANK\n} from \"./chunk-FYQWPEEY.js\";\n\n// src/pathAnchoring.ts\nvar RANGE_SUFFIX = /:(\\d+)-\\d+$/;\nfunction pathOrigin(pathName) {\n const match = RANGE_SUFFIX.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 pathVisits = /* @__PURE__ */ new Map();\n for (const path of paths) {\n const sample = panSNSample(path.name);\n let pos = path.start;\n for (const step of path.steps) {\n const visit = {\n path: path.name,\n sample,\n start: pos,\n strand: step.strand\n };\n const existing = pathVisits.get(step.id);\n if (existing) {\n existing.push(visit);\n } else {\n pathVisits.set(step.id, [visit]);\n }\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 };\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) {\n let anchored = node;\n if (visits && visits.length > 0) {\n const anchor = visits.find((v) => v.path === reference) ?? visits[0];\n anchored = {\n ...node,\n stable: {\n refName: anchor.path,\n start: anchor.start,\n rank: anchor.path === reference ? REFERENCE_RANK : OFF_REFERENCE_RANK,\n strand: anchor.strand\n },\n samples: [...new Set(visits.map((v) => v.sample))].sort()\n };\n }\n return anchored;\n}\nfunction anchorFromPaths(graph, preferred) {\n const { anchorPaths, pathVisits } = graph;\n const reference = anchorPaths && pathVisits ? chooseReferencePath(anchorPaths, preferred) : void 0;\n return reference && pathVisits ? {\n ...graph,\n nodes: graph.nodes.map(\n (node) => anchorNode(node, pathVisits.get(node.name), reference.name)\n ),\n anchoredBy: \"paths\",\n referencePath: reference.name\n } : graph;\n}\nfunction anchorGraph(graph, preferred) {\n return graph.anchoredBy === \"tags\" ? graph : anchorFromPaths(graph, preferred);\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 = /* @__PURE__ */ new Map();\n for (const path of graph.paths ?? []) {\n const origin = pathOrigin(path.name).name;\n byOrigin.set(origin, [...byOrigin.get(origin) ?? [], path]);\n }\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", "import {\n groupDigits\n} from \"./chunk-3ZZSX5HN.js\";\nimport {\n pathOrigin\n} from \"./chunk-ST2IBUAN.js\";\nimport {\n isGenericSample\n} from \"./chunk-BPLIXMH7.js\";\n\n// src/pathColors.ts\nfunction nameHue(name) {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n return Math.abs(hash % 360);\n}\nfunction pathHueAt(index, count) {\n return index * 360 / count;\n}\nvar PATH_SATURATION = 0.7;\nvar PATH_LIGHTNESS = 0.5;\nvar MAX_PATH_COLORS = 16;\nfunction pathColorsLegible(pathCount) {\n return pathCount > 0 && pathCount <= MAX_PATH_COLORS;\n}\nfunction pathCssColor(index, count) {\n return `hsl(${pathHueAt(index, count)}, ${PATH_SATURATION * 100}%, ${PATH_LIGHTNESS * 100}%)`;\n}\nfunction pathGreyCssColor(index, count) {\n const lightness = count > 1 ? 25 + 45 * index / (count - 1) : 45;\n return `hsl(0, 0%, ${lightness}%)`;\n}\nfunction labelTiers(name) {\n const parts = pathOrigin(name).name.split(\"#\");\n const full = parts.join(\"#\");\n if (parts.length >= 3 && isGenericSample(parts[0])) {\n const contig = parts.slice(2).join(\"#\");\n return [contig, contig, full];\n }\n return [parts[0], parts.slice(0, 2).join(\"#\"), full];\n}\nfunction offsetTiers(name, tiers) {\n const { start } = pathOrigin(name);\n return tiers.map((t) => `${t} @${groupDigits(start)}`);\n}\nfunction pathLegend(paths, colors) {\n const firstOf = /* @__PURE__ */ new Map();\n paths.forEach((path, i) => {\n if (!firstOf.has(path.name)) {\n firstOf.set(path.name, i);\n }\n });\n const entries = [...firstOf].map(([name, i]) => ({ name, i }));\n const named = entries.map((e) => labelTiers(e.name));\n const candidates = [0, 1, 2].flatMap((t) => [\n entries.map((_, k) => named[k][t]),\n entries.map((e, k) => offsetTiers(e.name, named[k])[t])\n ]);\n const distinct = candidates.find(\n (labels2) => new Set(labels2).size === entries.length\n );\n const labels = distinct ?? candidates.at(-1);\n return entries.map(({ name, i }, k) => ({\n name,\n label: labels[k],\n color: colors?.[i] ?? pathCssColor(i, paths.length)\n }));\n}\nfunction walkLabelsOf(entries) {\n const seen = /* @__PURE__ */ new Map();\n return new Map(\n [...entries].sort((a, b) => a.label.localeCompare(b.label)).map((e) => {\n const n = (seen.get(e.label) ?? 0) + 1;\n seen.set(e.label, n);\n return [e.name, n > 1 ? `${e.label} (${n})` : e.label];\n })\n );\n}\n\nexport {\n nameHue,\n pathHueAt,\n PATH_SATURATION,\n PATH_LIGHTNESS,\n MAX_PATH_COLORS,\n pathColorsLegible,\n pathCssColor,\n pathGreyCssColor,\n pathLegend,\n walkLabelsOf\n};\n", "// src/colorSchemes.ts\nvar COLOR_SCHEMES = [\n // Mirrors `layoutModes`' 'auto': a value the model resolves rather than a\n // colour of its own. It exists because 'uniform' was the default, so a\n // launched graph opened flat grey and both tutorials spent a step saying \"now\n // pick a colour\" \u2014 one figure literally drives that click. A graph with\n // reference coordinates resolves to 'reference-position', which is the one\n // ramp a linear track beside it can be painted with too; a graph with none\n // keeps 'uniform', because there the ramp would be a hue nothing earned.\n //\n // Resolve through `effectiveColorScheme`; the dropdown reads the raw prop, so\n // \"Auto\" stays selectable and visible as what it is.\n { value: \"auto\", label: \"Auto\" },\n { value: \"uniform\", label: \"Uniform\" },\n { value: \"random\", label: \"Random\" },\n { value: \"rainbow\", label: \"Rainbow\" },\n { value: \"depth\", label: \"Depth\" },\n { value: \"node-length\", label: \"Node length\" },\n { value: \"stable-rank\", label: \"Stable rank\" },\n { value: \"reference-position\", label: \"Reference position\" },\n { value: \"grey\", label: \"Grey\" }\n];\nvar COLOR_SCHEME_VALUES = COLOR_SCHEMES.map((s) => s.value);\nfunction resolveColorScheme(scheme, graph) {\n return scheme !== \"auto\" ? scheme : graph?.anchoredBy ? \"reference-position\" : \"uniform\";\n}\n\nexport {\n COLOR_SCHEMES,\n COLOR_SCHEME_VALUES,\n resolveColorScheme\n};\n", "// src/nodeWidths.ts\nvar NODE_WIDTHS = [\n {\n value: \"depth\",\n label: \"By depth\",\n description: \"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform.\"\n },\n {\n value: \"uniform\",\n label: \"Uniform\",\n description: \"Every node the same thickness.\"\n }\n];\nvar NODE_WIDTH_VALUES = NODE_WIDTHS.map((w) => w.value);\nvar MIN_FACTOR = 0.3;\nvar MAX_FACTOR = 3;\nfunction meanDepth(graph) {\n let weighted = 0;\n let length = 0;\n for (const node of graph.nodes) {\n weighted += node.depth * node.length;\n length += node.length;\n }\n return length > 0 ? weighted / length : 0;\n}\nfunction depthWidthFactor(node, mean) {\n if (!(mean > 0) || !(node.depth > 0)) {\n return 1;\n }\n return Math.min(\n MAX_FACTOR,\n Math.max(MIN_FACTOR, Math.sqrt(node.depth / mean))\n );\n}\nfunction nodeWidthPx(node, contigThickness, nodeWidth, mean) {\n return contigThickness * (nodeWidth === \"depth\" ? depthWidthFactor(node, mean) : 1);\n}\nfunction maxNodeWidthPx(contigThickness, nodeWidth) {\n return contigThickness * (nodeWidth === \"depth\" ? MAX_FACTOR : 1);\n}\nfunction nodeInk(graph, nodeById, contigThickness, nodeWidth) {\n const mean = graph ? meanDepth(graph) : 0;\n return {\n maxHalfWidthPx: maxNodeWidthPx(contigThickness, nodeWidth) / 2,\n halfWidthPx: (id) => {\n const node = nodeById?.get(id);\n return node ? nodeWidthPx(node, contigThickness, nodeWidth, mean) / 2 : contigThickness / 2;\n }\n };\n}\n\nexport {\n NODE_WIDTHS,\n NODE_WIDTH_VALUES,\n meanDepth,\n depthWidthFactor,\n nodeWidthPx,\n maxNodeWidthPx,\n nodeInk\n};\n", "// src/layout/drawnScale.ts\nvar MEAN_NODE_LENGTH = 40;\nvar MIN_TOTAL_GRAPH_LENGTH = 500;\nvar BANDAGE_MINIMUM_NODE_LENGTH = 5;\nfunction drawnNodeLength(opts, length) {\n return Math.max(\n opts.nodeLengthPerMegabase * length / 1e6,\n opts.minimumNodeLength\n );\n}\nfunction bandageAutoScale(graph, minNodeLength = BANDAGE_MINIMUM_NODE_LENGTH) {\n const totalLength = graph.nodes.reduce((sum, n) => sum + n.length, 0);\n const megabases = totalLength / 1e6;\n const target = Math.max(\n graph.nodes.length * MEAN_NODE_LENGTH,\n MIN_TOTAL_GRAPH_LENGTH\n );\n return {\n nodeLengthPerMegabase: megabases > 0 ? target / megabases : 1e4,\n minimumNodeLength: Math.max(BANDAGE_MINIMUM_NODE_LENGTH, minNodeLength),\n edgeLength: 5,\n nodeSegmentLength: 20\n };\n}\nvar PROPORTIONAL_LENGTH = { power: 1, effect: 1 };\nfunction isProportional(law) {\n return law.power === 1 && law.effect === 1;\n}\nfunction drawnLengthFor(graph, law) {\n const count = graph.nodes.length;\n const totalLength = graph.nodes.reduce((sum, n) => sum + n.length, 0);\n const meanBp = count > 0 ? totalLength / count : 0;\n const meanDrawn = count > 0 ? Math.max(count * MEAN_NODE_LENGTH, MIN_TOTAL_GRAPH_LENGTH) / count : MEAN_NODE_LENGTH;\n return (bp) => {\n if (meanBp <= 0) {\n return meanDrawn;\n }\n const relative = (bp / meanBp) ** law.power;\n return Math.max(\n meanDrawn * ((relative - 1) * law.effect + 1),\n BANDAGE_MINIMUM_NODE_LENGTH\n );\n };\n}\nvar LAYOUT_LENGTH_PRECISION = 1e3;\nvar PROPORTIONAL_SPREAD = {\n law: PROPORTIONAL_LENGTH,\n minNodeLength: 0\n};\nfunction layoutScaling(graph, spread = PROPORTIONAL_SPREAD) {\n const { law, minNodeLength } = spread;\n const opts = bandageAutoScale(graph, minNodeLength);\n if (isProportional(law)) {\n return { nodes: graph.nodes, opts };\n }\n const drawn = drawnLengthFor(graph, law);\n return {\n nodes: graph.nodes.map((node) => ({\n ...node,\n length: Math.round(drawn(node.length) * LAYOUT_LENGTH_PRECISION)\n })),\n opts: {\n ...opts,\n nodeLengthPerMegabase: 1e6 / LAYOUT_LENGTH_PRECISION,\n // Bandage's own floor only. A law and a raised floor are alternatives\n // rather than a stack: the law has already lifted the small end, and a\n // floor on top of it would flatten exactly what it just spread.\n minimumNodeLength: BANDAGE_MINIMUM_NODE_LENGTH\n }\n };\n}\nfunction drawnLengthOf(graph, spread = PROPORTIONAL_SPREAD) {\n if (isProportional(spread.law)) {\n const opts = bandageAutoScale(graph, spread.minNodeLength);\n return (bp) => drawnNodeLength(opts, bp);\n }\n return drawnLengthFor(graph, spread.law);\n}\n\nexport {\n MEAN_NODE_LENGTH,\n drawnNodeLength,\n bandageAutoScale,\n PROPORTIONAL_LENGTH,\n isProportional,\n drawnLengthFor,\n PROPORTIONAL_SPREAD,\n layoutScaling,\n drawnLengthOf\n};\n", "import {\n MEAN_NODE_LENGTH,\n PROPORTIONAL_LENGTH\n} from \"./chunk-6JEWNXCQ.js\";\n\n// src/bubbleSpreads.ts\nvar BUBBLE_SPREADS = [\n {\n value: \"auto\",\n label: \"Proportional\",\n description: \"Bandage's own scale: a node draws proportional to its length, so a 1 bp allele is a speck.\",\n law: PROPORTIONAL_LENGTH,\n minNodeFactor: 0\n },\n {\n value: \"open\",\n label: \"Open bubbles\",\n description: \"Give every allele a drawn length, so a bubble reads as two arms rather than a knot.\",\n law: PROPORTIONAL_LENGTH,\n minNodeFactor: 2.5\n },\n {\n value: \"wide\",\n label: \"Wide bubbles\",\n description: \"As open, spread further. Best on a window of a dozen bubbles.\",\n law: PROPORTIONAL_LENGTH,\n minNodeFactor: 10\n },\n {\n value: \"compress\",\n label: \"Compress lengths\",\n description: \"Pull the longest and shortest nodes towards the graph\\u2019s mean, so a cut spanning kb and bp fits one pane.\",\n law: { power: 0.5, effect: 0.5 },\n minNodeFactor: 0\n }\n];\nvar BUBBLE_SPREAD_VALUES = BUBBLE_SPREADS.map((s) => s.value);\nfunction spreadFor(spread) {\n const entry = BUBBLE_SPREADS.find((s) => s.value === spread);\n return {\n law: entry?.law ?? PROPORTIONAL_LENGTH,\n minNodeLength: (entry?.minNodeFactor ?? 0) * MEAN_NODE_LENGTH\n };\n}\n\nexport {\n BUBBLE_SPREADS,\n BUBBLE_SPREAD_VALUES,\n spreadFor\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["require_mui", "__commonJSMin", "exports", "module", "LABEL_PX", "LABEL_CHAR_PX", "LABEL_PAD", "labelWidth", "text", "overlaps", "a", "b", "offFrame", "box", "frame", "insideFrame", "occupancy", "reserved", "placed", "p", "placeLabels", "candidates", "take", "out", "row", "place", "c", "w", "direction", "tries", "ROW_HEIGHT_PX", "svgPath", "points", "round", "v", "p", "i", "projectLine", "x1", "y1", "x2", "y2", "distance", "d", "vx", "vy", "curvePointAt", "c", "t", "u", "a", "b", "e", "curveMidpoint", "curves", "mid", "curveBounds", "minX", "minY", "maxX", "maxY", "subCurve", "t0", "t1", "p0", "p1", "dt", "d0", "curveTangentAt", "d1", "dashCurves", "dashWorld", "lengths", "total", "spans", "out", "from", "to", "dash", "start", "k", "length", "end", "translateCurves", "dx", "dy", "attachment", "segments", "side", "last", "TANGENT_SPAN_FACTOR", "MAX_TANGENT", "ownStrand", "id", "strandSides", "edge", "own", "strand", "spanOf", "min", "max", "s", "distanceToSpan", "x", "span", "facingSide", "other", "tieBreak", "startGap", "endGap", "facingSides", "fromSegments", "toSegments", "laidSides", "heldFacingSides", "byTo", "sides", "APEX_FRACTION", "BOW_CLEARANCE", "ALONG_FRACTION", "MAX_ROW_BOW_PX", "ROW_HEIGHT_PX", "bowAround", "p1x", "p1y", "p2x", "p2y", "toward", "maxBow", "chord", "ux", "uy", "reach", "minAlong", "maxAlong", "perp", "along", "uncapped", "size", "yToXOf", "scaleX", "scaleY", "PATH_RIBBON_SPACING", "drawnDirection", "yToX", "len", "pathRibbonOffsets", "count", "axis", "spacing", "dir", "offsets", "scaleYOf", "unscaleYOf", "SELF_LOOP_MIN_PX", "SELF_LOOP_MAX_PX", "selfLoopReach", "scale", "nodePx", "selfLinkOf", "edgeJoinOf", "stranded", "self", "hairpinCurves", "attach", "offsetX", "offsetY", "at", "inward", "px", "py", "nearX", "nearY", "apexX", "apexY", "sideX", "sideY", "computeEdgeCurves", "join", "bypassed", "maxBowIn", "loop", "fromAttach", "toAttach", "fromEnd", "toStart", "segDirX", "segDirY", "ext", "perpX", "perpY", "midX", "midY", "cp1x", "cp1y", "cp2x", "cp2y", "fromPrev", "toNext", "dist", "tangentProj", "prev", "towardX", "towardY", "towardToX", "towardToY", "cx1", "cy1", "cx2", "cy2", "bulge", "chordLen", "bulgeX", "bulgeY", "spreadX", "spreadY", "nearerEnd", "routedEdgeCurves", "route", "tangent", "q", "next", "ta", "tb", "flip", "strand", "mergeRuns", "graph", "alone", "sides", "strandSides", "at", "attach", "id", "side", "ei", "key", "list", "edge", "joinAfter", "a", "out", "joined", "runOf", "runs", "node", "into", "pred", "run", "next", "byId", "n", "nodes", "members", "backbone", "isBackbone", "first", "b", "sum", "seen", "edges", "from", "to", "ownStrand", "splitRuns", "positions", "weightOf", "line", "arc", "arcPrefix", "total", "weights", "m", "weightSum", "member", "k", "share", "slice", "polylineSlice", "polylineMidpoint", "pointAt", "i", "s", "span", "t", "points", "MIN_DELETION_BP", "bypassedPoints", "nodePositions", "bypassed", "id", "deletionArcCurves", "deletion", "axis", "route", "stranded", "from", "to", "routedEdgeCurves", "strandSides", "computeEdgeCurves", "edgeJoinOf", "backboneBySequence", "graph", "bySequence", "node", "isBackbone", "list", "a", "b", "bypassedNodes", "nodes", "start", "end", "i", "firstNodeAtOrAfter", "skipsBetween", "edge", "forwards", "fromStrand", "toStrand", "leavesRight", "arrivesLeft", "deletionEdges", "byId", "n", "backbone", "found", "edgeIndex", "left", "right", "bp", "refName", "closableDeletions", "deletions", "parent", "root", "r", "join", "ra", "rb", "candidates", "d", "e", "ei", "drawings", "deletionDrawing", "show", "byShow", "drawing", "hidden", "MIN_DELETION_LABEL_PX", "PX_PER_NODE_LABEL", "MIN_NODE_LABELS", "LEADER_GAP_PX", "LABEL_CHAR_PX", "LABEL_PAD_PX", "LABEL_HEIGHT_PX", "LABEL_GAP_PX", "MAX_LABEL_OVERHANG", "labelHalfWidth", "text", "LABEL_HALF_HEIGHT", "MIN_LABEL_HALF_WIDTH", "boxAt", "halfW", "x", "y", "rowLabelBox", "screenY", "clamp", "v", "lo", "hi", "groupDigits", "n", "formatBp", "bp", "deletionText", "arcOutward", "curves", "apex", "scaleX", "scaleY", "first", "last", "dx", "dy", "len", "boxSupport", "box", "dir", "boxRayCrossing", "halfH", "drawnLength", "segments", "total", "i", "a", "b", "runBounds", "nodeIds", "nodePositions", "minX", "minY", "maxX", "maxY", "id", "p", "nodeOrderCache", "labelOrder", "nodeLengths", "cached", "order", "arcCache", "arcPlacements", "deletions", "axis", "version", "routes", "stranded", "arcs", "deletion", "deletionArcCurves", "curveMidpoint", "curveBounds", "sizeLabelCandidates", "deletionRoutes", "alleleDeletions", "translateX", "translateY", "width", "height", "deletionCandidates", "nodeCandidates", "extent", "arcX", "arcY", "fits", "bow", "offset", "away", "leader", "crossing", "labelledByDeletion", "alleleRuns", "run", "drawn", "shownLeft", "shownRight", "shownTop", "shownBottom", "polylineMidpoint", "screenX", "nodeLabelBudget", "placeSizeLabels", "candidates", "take", "budget", "labels", "label", "RANGE_SUFFIX", "pathOrigin", "pathName", "match", "surveyPaths", "paths", "lengthOf", "anchorPaths", "pathVisits", "path", "sample", "panSNSample", "pos", "step", "visit", "existing", "chooseReferencePath", "preferred", "p", "OFF_REFERENCE_RANK", "anchorNode", "node", "visits", "reference", "anchored", "anchor", "v", "REFERENCE_RANK", "anchorFromPaths", "graph", "anchorGraph", "trimOrigins", "kept", "n", "bp", "ids", "end", "sum", "byOrigin", "origin", "o", "pieces", "stretch", "nameHue", "name", "hash", "i", "pathHueAt", "index", "count", "PATH_SATURATION", "PATH_LIGHTNESS", "MAX_PATH_COLORS", "pathColorsLegible", "pathCount", "pathCssColor", "pathGreyCssColor", "labelTiers", "parts", "pathOrigin", "full", "isGenericSample", "contig", "offsetTiers", "tiers", "start", "t", "groupDigits", "pathLegend", "paths", "colors", "firstOf", "path", "entries", "named", "e", "candidates", "_", "k", "labels", "labels2", "walkLabelsOf", "seen", "a", "b", "n", "COLOR_SCHEMES", "COLOR_SCHEME_VALUES", "s", "resolveColorScheme", "scheme", "graph", "NODE_WIDTHS", "NODE_WIDTH_VALUES", "w", "MIN_FACTOR", "MAX_FACTOR", "meanDepth", "graph", "weighted", "length", "node", "depthWidthFactor", "mean", "nodeWidthPx", "contigThickness", "nodeWidth", "maxNodeWidthPx", "nodeInk", "nodeById", "id", "MEAN_NODE_LENGTH", "MIN_TOTAL_GRAPH_LENGTH", "BANDAGE_MINIMUM_NODE_LENGTH", "drawnNodeLength", "opts", "length", "bandageAutoScale", "graph", "minNodeLength", "megabases", "sum", "n", "target", "PROPORTIONAL_LENGTH", "isProportional", "law", "drawnLengthFor", "count", "totalLength", "meanBp", "meanDrawn", "bp", "relative", "LAYOUT_LENGTH_PRECISION", "PROPORTIONAL_SPREAD", "layoutScaling", "spread", "drawn", "node", "drawnLengthOf", "BUBBLE_SPREADS", "PROPORTIONAL_LENGTH", "BUBBLE_SPREAD_VALUES", "s", "spreadFor", "spread", "entry", "MEAN_NODE_LENGTH"]
@@ -1,3 +1,3 @@
1
1
  var i=/([><])([^><]+)/g;function h(s){if(!s.startsWith(">")&&!s.startsWith("<"))return;let t=[];for(let[,e,n]of s.matchAll(i))t.push({name:n,strand:e===">"?"+":"-"});return t}function p(s){let t=s.split(" ");if(t.length<12||s.startsWith("#"))return;let e=h(t[5]);if(!e)return;let n,a=!1;for(let o=12;o<t.length;o++){let r=t[o];r.startsWith("cs:Z:")?n=r.slice(5):r==="tp:A:S"&&(a=!0)}return{name:t[0],queryLength:+t[1],queryStart:+t[2],queryEnd:+t[3],strand:t[4]==="-"?"-":"+",path:e,pathLength:+t[6],pathStart:+t[7],pathEnd:+t[8],matches:+t[9],blockLength:+t[10],mappingQuality:+t[11],secondary:a,...n===void 0?{}:{cs:n}}}function l(s){let t=[];for(let e of s.split(`
2
2
  `)){let n=p(e.trimEnd());n&&t.push(n)}return t}var f=/:(\d+)|=([A-Za-z]+)|\*[a-zA-Z]([a-zA-Z])|\+([A-Za-z]+)|-([A-Za-z]+)|~[a-z]{2}(\d+)[a-z]{2}/g;function c(s){let t=[];for(let e of s.matchAll(f))e[1]!==void 0?t.push({op:"match",length:+e[1]}):e[2]!==void 0?t.push({op:"match",length:e[2].length}):e[3]!==void 0?t.push({op:"substitution",seq:e[3].toUpperCase()}):e[4]!==void 0?t.push({op:"insertion",seq:e[4].toUpperCase()}):e[5]!==void 0?t.push({op:"deletion",length:e[5].length}):e[6]!==void 0&&t.push({op:"match",length:+e[6]});return t}export{p as a,l as b,c};
3
- //# sourceMappingURL=chunk-7MWOPEIC.js.map
3
+ //# sourceMappingURL=chunk-ETTZTJNK.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@7.5.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-C44YRP5F.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@8.0.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-C44YRP5F.js"],
4
4
  "sourcesContent": ["// src/gaf/parseGaf.ts\nvar STEP = /([><])([^><]+)/g;\nfunction parseGafPath(column) {\n if (!column.startsWith(\">\") && !column.startsWith(\"<\")) {\n return void 0;\n }\n const steps = [];\n for (const [, arrow, name] of column.matchAll(STEP)) {\n steps.push({ name, strand: arrow === \">\" ? \"+\" : \"-\" });\n }\n return steps;\n}\nfunction parseGafLine(line) {\n const columns = line.split(\"\t\");\n if (columns.length < 12 || line.startsWith(\"#\")) {\n return void 0;\n }\n const path = parseGafPath(columns[5]);\n if (!path) {\n return void 0;\n }\n let cs;\n let secondary = false;\n for (let i = 12; i < columns.length; i++) {\n const tag = columns[i];\n if (tag.startsWith(\"cs:Z:\")) {\n cs = tag.slice(5);\n } else if (tag === \"tp:A:S\") {\n secondary = true;\n }\n }\n return {\n name: columns[0],\n queryLength: +columns[1],\n queryStart: +columns[2],\n queryEnd: +columns[3],\n strand: columns[4] === \"-\" ? \"-\" : \"+\",\n path,\n pathLength: +columns[6],\n pathStart: +columns[7],\n pathEnd: +columns[8],\n matches: +columns[9],\n blockLength: +columns[10],\n mappingQuality: +columns[11],\n secondary,\n ...cs === void 0 ? {} : { cs }\n };\n}\nfunction parseGaf(text) {\n const records = [];\n for (const line of text.split(\"\\n\")) {\n const record = parseGafLine(line.trimEnd());\n if (record) {\n records.push(record);\n }\n }\n return records;\n}\nvar CS_OP = /:(\\d+)|=([A-Za-z]+)|\\*[a-zA-Z]([a-zA-Z])|\\+([A-Za-z]+)|-([A-Za-z]+)|~[a-z]{2}(\\d+)[a-z]{2}/g;\nfunction parseCs(cs) {\n const ops = [];\n for (const m of cs.matchAll(CS_OP)) {\n if (m[1] !== void 0) {\n ops.push({ op: \"match\", length: +m[1] });\n } else if (m[2] !== void 0) {\n ops.push({ op: \"match\", length: m[2].length });\n } else if (m[3] !== void 0) {\n ops.push({ op: \"substitution\", seq: m[3].toUpperCase() });\n } else if (m[4] !== void 0) {\n ops.push({ op: \"insertion\", seq: m[4].toUpperCase() });\n } else if (m[5] !== void 0) {\n ops.push({ op: \"deletion\", length: m[5].length });\n } else if (m[6] !== void 0) {\n ops.push({ op: \"match\", length: +m[6] });\n }\n }\n return ops;\n}\n\nexport {\n parseGafPath,\n parseGafLine,\n parseGaf,\n parseCs\n};\n"],
5
5
  "mappings": "AACA,IAAIA,EAAO,kBACX,SAASC,EAAaC,EAAQ,CAC5B,GAAI,CAACA,EAAO,WAAW,GAAG,GAAK,CAACA,EAAO,WAAW,GAAG,EACnD,OAEF,IAAMC,EAAQ,CAAC,EACf,OAAW,CAAC,CAAEC,EAAOC,CAAI,IAAKH,EAAO,SAASF,CAAI,EAChDG,EAAM,KAAK,CAAE,KAAAE,EAAM,OAAQD,IAAU,IAAM,IAAM,GAAI,CAAC,EAExD,OAAOD,CACT,CACA,SAASG,EAAaC,EAAM,CAC1B,IAAMC,EAAUD,EAAK,MAAM,GAAG,EAC9B,GAAIC,EAAQ,OAAS,IAAMD,EAAK,WAAW,GAAG,EAC5C,OAEF,IAAME,EAAOR,EAAaO,EAAQ,CAAC,CAAC,EACpC,GAAI,CAACC,EACH,OAEF,IAAIC,EACAC,EAAY,GAChB,QAASC,EAAI,GAAIA,EAAIJ,EAAQ,OAAQI,IAAK,CACxC,IAAMC,EAAML,EAAQI,CAAC,EACjBC,EAAI,WAAW,OAAO,EACxBH,EAAKG,EAAI,MAAM,CAAC,EACPA,IAAQ,WACjBF,EAAY,GAEhB,CACA,MAAO,CACL,KAAMH,EAAQ,CAAC,EACf,YAAa,CAACA,EAAQ,CAAC,EACvB,WAAY,CAACA,EAAQ,CAAC,EACtB,SAAU,CAACA,EAAQ,CAAC,EACpB,OAAQA,EAAQ,CAAC,IAAM,IAAM,IAAM,IACnC,KAAAC,EACA,WAAY,CAACD,EAAQ,CAAC,EACtB,UAAW,CAACA,EAAQ,CAAC,EACrB,QAAS,CAACA,EAAQ,CAAC,EACnB,QAAS,CAACA,EAAQ,CAAC,EACnB,YAAa,CAACA,EAAQ,EAAE,EACxB,eAAgB,CAACA,EAAQ,EAAE,EAC3B,UAAAG,EACA,GAAGD,IAAO,OAAS,CAAC,EAAI,CAAE,GAAAA,CAAG,CAC/B,CACF,CACA,SAASI,EAASC,EAAM,CACtB,IAAMC,EAAU,CAAC,EACjB,QAAWT,KAAQQ,EAAK,MAAM;AAAA,CAAI,EAAG,CACnC,IAAME,EAASX,EAAaC,EAAK,QAAQ,CAAC,EACtCU,GACFD,EAAQ,KAAKC,CAAM,CAEvB,CACA,OAAOD,CACT,CACA,IAAIE,EAAQ,8FACZ,SAASC,EAAQT,EAAI,CACnB,IAAMU,EAAM,CAAC,EACb,QAAWC,KAAKX,EAAG,SAASQ,CAAK,EAC3BG,EAAE,CAAC,IAAM,OACXD,EAAI,KAAK,CAAE,GAAI,QAAS,OAAQ,CAACC,EAAE,CAAC,CAAE,CAAC,EAC9BA,EAAE,CAAC,IAAM,OAClBD,EAAI,KAAK,CAAE,GAAI,QAAS,OAAQC,EAAE,CAAC,EAAE,MAAO,CAAC,EACpCA,EAAE,CAAC,IAAM,OAClBD,EAAI,KAAK,CAAE,GAAI,eAAgB,IAAKC,EAAE,CAAC,EAAE,YAAY,CAAE,CAAC,EAC/CA,EAAE,CAAC,IAAM,OAClBD,EAAI,KAAK,CAAE,GAAI,YAAa,IAAKC,EAAE,CAAC,EAAE,YAAY,CAAE,CAAC,EAC5CA,EAAE,CAAC,IAAM,OAClBD,EAAI,KAAK,CAAE,GAAI,WAAY,OAAQC,EAAE,CAAC,EAAE,MAAO,CAAC,EACvCA,EAAE,CAAC,IAAM,QAClBD,EAAI,KAAK,CAAE,GAAI,QAAS,OAAQ,CAACC,EAAE,CAAC,CAAE,CAAC,EAG3C,OAAOD,CACT",
6
6
  "names": ["STEP", "parseGafPath", "column", "steps", "arrow", "name", "parseGafLine", "line", "columns", "path", "cs", "secondary", "i", "tag", "parseGaf", "text", "records", "record", "CS_OP", "parseCs", "ops", "m"]