jbrowse-plugin-graphgenomeviewer 7.1.10 → 7.1.11

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-XXYOOWWV.js → GbzBaseSyntenyAdapter-2MA3I6BM.js} +2 -2
  2. package/dist/chunks/{GraphGenomeView-GKL2VBJI.js → GraphGenomeView-4O5F5I37.js} +2 -2
  3. package/dist/chunks/LinearGraphDisplay-Z33PVCJL.js +2 -0
  4. package/dist/chunks/{LinearGraphDisplay-KGCPGRYY.js.map → LinearGraphDisplay-Z33PVCJL.js.map} +3 -3
  5. package/dist/chunks/{MinigraphBubbleAdapter-2JRRNRI3.js → MinigraphBubbleAdapter-HDLUZ6YF.js} +2 -2
  6. package/dist/chunks/{RgfaTabixAdapter-ZSRYNXX7.js → RgfaTabixAdapter-XZRTWQMZ.js} +2 -2
  7. package/dist/chunks/{TrackWarningsDialog-TRYBOIHX.js → TrackWarningsDialog-CPAYIP6K.js} +1 -1
  8. package/dist/chunks/{TrackWarningsDialog-TRYBOIHX.js.map → TrackWarningsDialog-CPAYIP6K.js.map} +1 -1
  9. package/dist/chunks/{WalkTabixSyntenyAdapter-DMLJF27U.js → WalkTabixSyntenyAdapter-AIC3W7FL.js} +2 -2
  10. package/dist/chunks/{chunk-AQQ4HHN3.js → chunk-44HZPYGC.js} +2 -2
  11. package/dist/chunks/{chunk-AQQ4HHN3.js.map → chunk-44HZPYGC.js.map} +1 -1
  12. package/dist/chunks/chunk-EDSIYH4H.js +2 -0
  13. package/dist/chunks/chunk-EDSIYH4H.js.map +7 -0
  14. package/dist/chunks/{chunk-UD4NSJBX.js → chunk-N5GYTUIL.js} +2 -2
  15. package/dist/chunks/{chunk-UD4NSJBX.js.map → chunk-N5GYTUIL.js.map} +1 -1
  16. package/dist/chunks/{chunk-E7J6SB5P.js → chunk-T4R3ZVEM.js} +1 -1
  17. package/dist/chunks/{chunk-E7J6SB5P.js.map → chunk-T4R3ZVEM.js.map} +1 -1
  18. package/dist/chunks/{chunk-NWQ6NWI3.js → chunk-U4U5ZOCH.js} +2 -2
  19. package/dist/chunks/{chunk-NWQ6NWI3.js.map → chunk-U4U5ZOCH.js.map} +1 -1
  20. package/dist/chunks/{chunk-K7ZCYIXI.js → chunk-UFQTIWSN.js} +2 -2
  21. package/dist/chunks/{chunk-EEUKM4TK.js → chunk-WGVATZLM.js} +3 -3
  22. package/dist/chunks/{chunk-EEUKM4TK.js.map → chunk-WGVATZLM.js.map} +4 -4
  23. package/dist/chunks/{chunk-KEHEGRRO.js → chunk-ZNT7TQLN.js} +2 -2
  24. package/dist/chunks/{executeDiagonalize-JKESYBXN.js → executeDiagonalize-SGJDSTYC.js} +2 -2
  25. package/dist/chunks/{executeDiagonalize-JKESYBXN.js.map → executeDiagonalize-SGJDSTYC.js.map} +1 -1
  26. package/dist/chunks/{renderSvg-PIPQXCD2.js → renderSvg-RRWCAEGF.js} +2 -2
  27. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
  28. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +2 -2
  29. package/package.json +9 -9
  30. package/src/LinearGraphDisplay/components/GraphStatusChrome.test.tsx +82 -1
  31. package/src/LinearGraphDisplay/components/GraphStatusChrome.tsx +63 -5
  32. package/src/version.ts +1 -1
  33. package/dist/chunks/LinearGraphDisplay-KGCPGRYY.js +0 -2
  34. package/dist/chunks/chunk-HQVHNUXC.js +0 -2
  35. package/dist/chunks/chunk-HQVHNUXC.js.map +0 -7
  36. /package/dist/chunks/{GbzBaseSyntenyAdapter-XXYOOWWV.js.map → GbzBaseSyntenyAdapter-2MA3I6BM.js.map} +0 -0
  37. /package/dist/chunks/{GraphGenomeView-GKL2VBJI.js.map → GraphGenomeView-4O5F5I37.js.map} +0 -0
  38. /package/dist/chunks/{MinigraphBubbleAdapter-2JRRNRI3.js.map → MinigraphBubbleAdapter-HDLUZ6YF.js.map} +0 -0
  39. /package/dist/chunks/{RgfaTabixAdapter-ZSRYNXX7.js.map → RgfaTabixAdapter-XZRTWQMZ.js.map} +0 -0
  40. /package/dist/chunks/{WalkTabixSyntenyAdapter-DMLJF27U.js.map → WalkTabixSyntenyAdapter-AIC3W7FL.js.map} +0 -0
  41. /package/dist/chunks/{chunk-K7ZCYIXI.js.map → chunk-UFQTIWSN.js.map} +0 -0
  42. /package/dist/chunks/{chunk-KEHEGRRO.js.map → chunk-ZNT7TQLN.js.map} +0 -0
  43. /package/dist/chunks/{renderSvg-PIPQXCD2.js.map → renderSvg-RRWCAEGF.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as ae,b as re,c as de,d as oe,e as ie,f as H,g as se}from"./chunk-NWQ6NWI3.js";import{a as te}from"./chunk-KOB7YIMR.js";import{a as j,b as W,c as Z,d as u,e as M,f as $,g as U,h as k,i as z,k as X}from"./chunk-OBQFV4NL.js";import"./chunk-O7Y7LYN6.js";import{b as E,c as O}from"./chunk-N4WBX2OS.js";import"./chunk-BWP3XYKD.js";import"./chunk-T4HOC6O3.js";import{a as ne}from"./chunk-PFAHNHMM.js";import"./chunk-VDHDEEMF.js";import{a as V,c as L,m as ee}from"./chunk-HQVHNUXC.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import{g as F,h as P,i as C}from"./chunk-GUXZESDR.js";import"./chunk-E7J6SB5P.js";import{d as G,g as Y,h as J,i as K}from"./chunk-IKJZPPOA.js";import"./chunk-7WIBGKBU.js";import{a as N}from"./chunk-OGQ6OQDN.js";import"./chunk-NDRLCGPC.js";import{e as D,o as I}from"./chunk-TENPGIPX.js";function A(n){let i=/\.gbz\.db$/i;return i.test(n)?n.replace(i,".haplotype-index.db"):void 0}function he(n){return J(n)&&A(Y(n))?K(n,i=>A(i)):void 0}function ue(n){return n instanceof Error&&(/\bHTTP 40[34]\b/.test(n.message)||n.code==="ENOENT")}async function ce(n,i){let t=he(n);if(!t)return{};try{return await N(t,i).stat(),{location:t}}catch(e){return ue(e)?{}:{unreadable:String(e)}}}var ge=5e3,ye=50*2**20,q=class extends Error{constructor(t){super(`this GAF is ${(t/2**20).toFixed(0)} MB without an index; bgzip it and index it with tabix -p gaf`);this.name="UnindexedGafTooLargeError"}};function be(n,i){if(n.length<=i)return n;let t=n.length/i;return Array.from({length:i},(e,a)=>n[Math.floor(a*t)])}var pe=(n,i)=>n.path.some(t=>i.has(t.name)),v=class{constructor(i,t){this.file=i;this.tabix=t;this.whole=L({setup:async({signal:i})=>{let{size:t}=await this.file.stat();if(t>ye)throw new q(t);let e=await this.file.readFile({signal:i}),a=new TextDecoder().decode(e[0]===31&&e[1]===139?await V(e):e);return O(a)}})}async readIndexed(i,t,e){let a=1/0,r=-1/0;for(let s of t){let c=Number(s);Number.isInteger(c)&&(a=Math.min(a,c),r=Math.max(r,c))}let o=[];return a<=r&&await i.getLines("{node}",a,r+1,{signal:e,lineCallback:s=>{let c=E(s);c&&pe(c,t)&&o.push(c)}}),o}async readsOver(i,{signal:t}={}){let e=this.tabix?await this.readIndexed(this.tabix,i,t):(await this.whole({signal:t})).filter(a=>pe(a,i));return{records:be(e,ge),total:e.length}}};var B=class extends Error{constructor(t){super(t===void 0?"no haplotype index is set, so the walks cannot be named; build one with gbz-haplotype-index (cargo install gbz-haplotype-index) and set it as haplotypeIndexLocation":`the haplotype index beside the graph database could not be checked (${t}), so the walks cannot be named; if it is there, reload to try again, or set haplotypeIndexLocation`);this.name="NoHaplotypeIndexError"}},_=class extends Error{constructor(t,e){super(`the graph is cut on its reference, ${e}; a window on ${t} has no reference coordinates to cut at. Open the graph from a ${e} view, and find this haplotype's lane there`);this.name="HaplotypeWindowError"}};function we(n,i){return`${u(n)}#${n.contig}@${i.start.node}.${i.start.offset}`}function xe({alignment:n,assemblyName:i,refName:t,lane:e}){let{refStart:a,refEnd:r,strand:o,cigar:s}=n;if(!(r<=a)){let{name:c,hapStart:p,hapEnd:l}=n,d=we(c,n),g={uniqueId:d,assemblyName:i,refName:t,start:a,end:r,type:"match",strand:o==="-"?-1:1,CIGAR:s,syntenyId:d,mate:{refName:c.contig,start:p,end:l,assemblyName:e}};return new ae(g)}}function Se({pair:n,lane:i,mateLane:t}){return se({target:{name:`${u(n.target)}#${n.target.contig}`,assemblyName:i,refName:n.target.contig,start:n.targetStart,end:n.targetEnd},query:{name:`${u(n.query)}#${n.query.contig}`,assemblyName:t,refName:n.query.contig,start:n.queryStart,end:n.queryEnd},strand:n.strand,cigar:n.cigar,matches:n.matches,columns:n.columns})}var Pe=12e4;function Ne(n,i){let t=new Map;for(let a of n)for(let{name:r,start:o,end:s}of a.walkSpans()){let c=u(r);if(i.has(c)){let p=`${c}#${r.contig}`,l=t.get(p);l?l.push([o,s]):t.set(p,[[o,s]])}}let e=0;for(let a of t.values()){a.sort((r,o)=>r[0]-o[0]);for(let r=1;r<a.length;r++){let o=a[r][0]-a[r-1][1];o>0&&o<=Pe&&(e=Math.max(e,o))}}return e}function T(n,i){return n instanceof Z&&(n.message=`Zoom in to about ${D(n.fitsBp)} to see ${i}`),n}var le=n=>({...n,start:Math.floor(n.start),end:Math.ceil(n.end)}),Q=class extends re{constructor(){super(...arguments);this.graph=L({label:"Opening pangenome database",setup:async()=>{let t=this.getConf("gbzDbLocation"),e=this.getConf("haplotypeIndexLocation"),a=G(e)?{location:e}:await ce(t,this.pluginManager),r=a.location,o=await W.open({source:N(t,this.pluginManager),haplotypeIndex:r?N(r,this.pluginManager):void 0}),s=this.getConf("assemblyNames")[0];if(s===void 0)throw new Error("GbzBaseSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as");let c=await $(o),p=U({configured:this.getConf("referenceSample"),anchorPrefix:P(this,s),referenceSamples:c});return{db:o,anchor:s,referenceSample:p,referenceSamples:c,unreadableIndex:a.unreadable}}});this.gaf=L({label:"Opening reads",setup:async()=>{let t=this.getConf("readsLocation"),e=this.getConf(["readsIndex","location"]);return G(t)?new v(N(t,this.pluginManager),G(e)?ee(this,["readsLocation"],["readsIndex"]):void 0):void 0}})}async referenceQuery(t,e){let{db:a,referenceSample:r}=await this.graph(e);return k(a,r,t)}async getHaplotypes(t={}){let{db:e,referenceSamples:a}=await this.graph(t),r=new Map;for(let o of await e.paths()){let s=u(o.name),c=r.get(s);c?c.contigs.includes(o.name.contig)||c.contigs.push(o.name.contig):r.set(s,{prefix:s,sample:o.name.sample,haplotype:o.name.haplotype,contigs:[o.name.contig],isReference:a.includes(o.name.sample)})}return[...r.values()]}async getHeader(t={}){let{anchor:e,referenceSample:a}=await this.graph(t),r=C(this),o=[];for(let s of await this.getHaplotypes(t))s.sample!==a&&o.push({name:H(r,s.prefix),label:s.prefix,group:s.sample});return{hasCoarseTier:!1,anchorAssemblyName:e,lanes:o}}async getRefNames(t={}){let{db:e,anchor:a,referenceSample:r}=await this.graph(t),{assemblyName:o}=t,s=o===a?void 0:P(this,o),c=(await e.paths()).filter(p=>o===a?p.isIndexed&&p.name.sample===r:F(u(p.name),s)).map(p=>p.name.contig);return[...new Set(c)]}keepPredicate(t,e){let a=t===void 0||t.length===0?void 0:t.map(r=>P(this,r));return a===void 0&&e===void 0?void 0:r=>M(r,a)&&(e===void 0||F(u(r),e))}async getSubgraph(t,e={}){let{signal:a}=e,{db:r,anchor:o,referenceSample:s,unreadableIndex:c}=await this.graph({signal:a}),{assemblyName:p,refName:l,start:d,end:g}=le(t);if(p!==o)throw new _(p,o);let y=await this.referenceQuery(l,{signal:a});if(!y)throw new Error(`${s} has no indexed path ${l} in this graph`);let w=this.keepPredicate(e.haplotypes);if(w!==void 0&&!r.hasHaplotypeIndex)throw new B(c);let f=await X(r,y,d,g,{context:this.getConf("context"),snarls:e.snarls??this.getConf("subgraphSnarls"),limit:this.getConf("nodeLimit"),signal:e.signal,keep:w}).catch(x=>{throw T(x,"the graph")});return typeof f=="string"?f:ne(f,{start:d,end:g},e.walkRows)}async getReads(t,e={}){let a=await this.gaf(e);return a?a.readsOver(new Set(t),e):{records:[],total:0}}async laneHaplotypes(t,e){let a=P(this,t);return(await this.getHaplotypes(e)).filter(r=>F(r.prefix,a))}async anchorFeatures(t,e){let{db:a}=await this.graph(e),{assemblyName:r,refName:o,start:s,end:c}=t,p=P(this,e.targetAssemblyName),l=C(this),d=this.keepPredicate(e.haplotypes,p),g=await this.referenceQuery(o,e),y=this.getConf("nodeLimit");return(g?await I(`Reading graph ${o}:${s.toLocaleString()}-${c.toLocaleString()}`,e.statusCallback,()=>a.getAlignments({path:g,start:s,end:c,context:this.getConf("context"),haplotypes:"all",limit:y,signal:e.signal,keep:d}).catch(f=>{throw T(z(f,y,c-s)??f,"lanes")})):[]).flatMap(f=>{let x=f.resolved?xe({alignment:f,assemblyName:r,refName:o,lane:H(l,u(f.name))}):void 0;return x===void 0?[]:[x]})}async pairFeatures(t,e,a){let{db:r}=await this.graph(a),{refName:o,start:s,end:c}=t,l=(await Promise.all(e.map(async m=>({pair:m,featureSide:await this.laneHaplotypes(m.queryAssemblyName,a),mateSide:await this.laneHaplotypes(m.targetAssemblyName,a)})))).filter(({featureSide:m,mateSide:h})=>m.length>0&&h.length>0),d=new Set(l.flatMap(({featureSide:m,mateSide:h})=>[...m,...h].map(u))),g=await this.referenceQuery(o,a),y=this.getConf("nodeLimit"),w=this.getConf("context"),f=(m,h)=>r.getSubgraphs({path:m,start:s,end:c,context:h,snarls:this.getConf("subgraphSnarls"),haplotypes:"all",limit:y,signal:a.signal,keep:S=>d.has(u(S))}),x=async m=>{let h=await f(m,w).catch(b=>{throw T(z(b,y,c-s)??b,"lanes")}),S=Ne(h,d),R=Math.ceil(S/2)+2e3;return S>0&&R>w?f(m,R).catch(b=>{if(b instanceof j)return h;throw b}):h};return(g&&l.length>0?await I(ie(e),a.statusCallback,()=>x(g)):[]).flatMap(m=>l.flatMap(({pair:h,featureSide:S,mateSide:R})=>S.flatMap(b=>R.flatMap(me=>m.pairAlignments({target:b,query:me,bases:!1}).map(fe=>Se({pair:fe,lane:h.queryAssemblyName,mateLane:h.targetAssemblyName}))))))}getFeatures(t,e={}){let a=le(t);return te(async r=>{let{db:o,anchor:s,unreadableIndex:c}=await this.graph(e);if(!o.hasHaplotypeIndex)throw new B(c);if(a.assemblyName===s){let p=oe(e),l=p.length>0?await this.pairFeatures(a,p,e):await this.anchorFeatures(a,e);for(let d of l)r.next(d)}r.complete()},e.signal)}};export{B as NoHaplotypeIndexError,de as PairTargetError,Q as default,Ne as widestWalkGap};
2
- //# sourceMappingURL=GbzBaseSyntenyAdapter-XXYOOWWV.js.map
1
+ import{a as ae,b as re,c as de,d as oe,e as ie,f as H,g as se}from"./chunk-U4U5ZOCH.js";import{a as te}from"./chunk-KOB7YIMR.js";import{a as j,b as W,c as Z,d as u,e as M,f as $,g as U,h as k,i as z,k as X}from"./chunk-OBQFV4NL.js";import"./chunk-O7Y7LYN6.js";import{b as E,c as O}from"./chunk-N4WBX2OS.js";import"./chunk-BWP3XYKD.js";import"./chunk-T4HOC6O3.js";import{a as ne}from"./chunk-PFAHNHMM.js";import"./chunk-VDHDEEMF.js";import{a as V,c as L,m as ee}from"./chunk-EDSIYH4H.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import{g as F,h as P,i as C}from"./chunk-GUXZESDR.js";import"./chunk-T4R3ZVEM.js";import{d as G,g as Y,h as J,i as K}from"./chunk-IKJZPPOA.js";import"./chunk-7WIBGKBU.js";import{a as N}from"./chunk-OGQ6OQDN.js";import"./chunk-NDRLCGPC.js";import{e as D,o as I}from"./chunk-TENPGIPX.js";function A(n){let i=/\.gbz\.db$/i;return i.test(n)?n.replace(i,".haplotype-index.db"):void 0}function he(n){return J(n)&&A(Y(n))?K(n,i=>A(i)):void 0}function ue(n){return n instanceof Error&&(/\bHTTP 40[34]\b/.test(n.message)||n.code==="ENOENT")}async function ce(n,i){let t=he(n);if(!t)return{};try{return await N(t,i).stat(),{location:t}}catch(e){return ue(e)?{}:{unreadable:String(e)}}}var ge=5e3,ye=50*2**20,q=class extends Error{constructor(t){super(`this GAF is ${(t/2**20).toFixed(0)} MB without an index; bgzip it and index it with tabix -p gaf`);this.name="UnindexedGafTooLargeError"}};function be(n,i){if(n.length<=i)return n;let t=n.length/i;return Array.from({length:i},(e,a)=>n[Math.floor(a*t)])}var pe=(n,i)=>n.path.some(t=>i.has(t.name)),v=class{constructor(i,t){this.file=i;this.tabix=t;this.whole=L({setup:async({signal:i})=>{let{size:t}=await this.file.stat();if(t>ye)throw new q(t);let e=await this.file.readFile({signal:i}),a=new TextDecoder().decode(e[0]===31&&e[1]===139?await V(e):e);return O(a)}})}async readIndexed(i,t,e){let a=1/0,r=-1/0;for(let s of t){let c=Number(s);Number.isInteger(c)&&(a=Math.min(a,c),r=Math.max(r,c))}let o=[];return a<=r&&await i.getLines("{node}",a,r+1,{signal:e,lineCallback:s=>{let c=E(s);c&&pe(c,t)&&o.push(c)}}),o}async readsOver(i,{signal:t}={}){let e=this.tabix?await this.readIndexed(this.tabix,i,t):(await this.whole({signal:t})).filter(a=>pe(a,i));return{records:be(e,ge),total:e.length}}};var B=class extends Error{constructor(t){super(t===void 0?"no haplotype index is set, so the walks cannot be named; build one with gbz-haplotype-index (cargo install gbz-haplotype-index) and set it as haplotypeIndexLocation":`the haplotype index beside the graph database could not be checked (${t}), so the walks cannot be named; if it is there, reload to try again, or set haplotypeIndexLocation`);this.name="NoHaplotypeIndexError"}},_=class extends Error{constructor(t,e){super(`the graph is cut on its reference, ${e}; a window on ${t} has no reference coordinates to cut at. Open the graph from a ${e} view, and find this haplotype's lane there`);this.name="HaplotypeWindowError"}};function we(n,i){return`${u(n)}#${n.contig}@${i.start.node}.${i.start.offset}`}function xe({alignment:n,assemblyName:i,refName:t,lane:e}){let{refStart:a,refEnd:r,strand:o,cigar:s}=n;if(!(r<=a)){let{name:c,hapStart:p,hapEnd:l}=n,d=we(c,n),g={uniqueId:d,assemblyName:i,refName:t,start:a,end:r,type:"match",strand:o==="-"?-1:1,CIGAR:s,syntenyId:d,mate:{refName:c.contig,start:p,end:l,assemblyName:e}};return new ae(g)}}function Se({pair:n,lane:i,mateLane:t}){return se({target:{name:`${u(n.target)}#${n.target.contig}`,assemblyName:i,refName:n.target.contig,start:n.targetStart,end:n.targetEnd},query:{name:`${u(n.query)}#${n.query.contig}`,assemblyName:t,refName:n.query.contig,start:n.queryStart,end:n.queryEnd},strand:n.strand,cigar:n.cigar,matches:n.matches,columns:n.columns})}var Pe=12e4;function Ne(n,i){let t=new Map;for(let a of n)for(let{name:r,start:o,end:s}of a.walkSpans()){let c=u(r);if(i.has(c)){let p=`${c}#${r.contig}`,l=t.get(p);l?l.push([o,s]):t.set(p,[[o,s]])}}let e=0;for(let a of t.values()){a.sort((r,o)=>r[0]-o[0]);for(let r=1;r<a.length;r++){let o=a[r][0]-a[r-1][1];o>0&&o<=Pe&&(e=Math.max(e,o))}}return e}function T(n,i){return n instanceof Z&&(n.message=`Zoom in to about ${D(n.fitsBp)} to see ${i}`),n}var le=n=>({...n,start:Math.floor(n.start),end:Math.ceil(n.end)}),Q=class extends re{constructor(){super(...arguments);this.graph=L({label:"Opening pangenome database",setup:async()=>{let t=this.getConf("gbzDbLocation"),e=this.getConf("haplotypeIndexLocation"),a=G(e)?{location:e}:await ce(t,this.pluginManager),r=a.location,o=await W.open({source:N(t,this.pluginManager),haplotypeIndex:r?N(r,this.pluginManager):void 0}),s=this.getConf("assemblyNames")[0];if(s===void 0)throw new Error("GbzBaseSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as");let c=await $(o),p=U({configured:this.getConf("referenceSample"),anchorPrefix:P(this,s),referenceSamples:c});return{db:o,anchor:s,referenceSample:p,referenceSamples:c,unreadableIndex:a.unreadable}}});this.gaf=L({label:"Opening reads",setup:async()=>{let t=this.getConf("readsLocation"),e=this.getConf(["readsIndex","location"]);return G(t)?new v(N(t,this.pluginManager),G(e)?ee(this,["readsLocation"],["readsIndex"]):void 0):void 0}})}async referenceQuery(t,e){let{db:a,referenceSample:r}=await this.graph(e);return k(a,r,t)}async getHaplotypes(t={}){let{db:e,referenceSamples:a}=await this.graph(t),r=new Map;for(let o of await e.paths()){let s=u(o.name),c=r.get(s);c?c.contigs.includes(o.name.contig)||c.contigs.push(o.name.contig):r.set(s,{prefix:s,sample:o.name.sample,haplotype:o.name.haplotype,contigs:[o.name.contig],isReference:a.includes(o.name.sample)})}return[...r.values()]}async getHeader(t={}){let{anchor:e,referenceSample:a}=await this.graph(t),r=C(this),o=[];for(let s of await this.getHaplotypes(t))s.sample!==a&&o.push({name:H(r,s.prefix),label:s.prefix,group:s.sample});return{hasCoarseTier:!1,anchorAssemblyName:e,lanes:o}}async getRefNames(t={}){let{db:e,anchor:a,referenceSample:r}=await this.graph(t),{assemblyName:o}=t,s=o===a?void 0:P(this,o),c=(await e.paths()).filter(p=>o===a?p.isIndexed&&p.name.sample===r:F(u(p.name),s)).map(p=>p.name.contig);return[...new Set(c)]}keepPredicate(t,e){let a=t===void 0||t.length===0?void 0:t.map(r=>P(this,r));return a===void 0&&e===void 0?void 0:r=>M(r,a)&&(e===void 0||F(u(r),e))}async getSubgraph(t,e={}){let{signal:a}=e,{db:r,anchor:o,referenceSample:s,unreadableIndex:c}=await this.graph({signal:a}),{assemblyName:p,refName:l,start:d,end:g}=le(t);if(p!==o)throw new _(p,o);let y=await this.referenceQuery(l,{signal:a});if(!y)throw new Error(`${s} has no indexed path ${l} in this graph`);let w=this.keepPredicate(e.haplotypes);if(w!==void 0&&!r.hasHaplotypeIndex)throw new B(c);let f=await X(r,y,d,g,{context:this.getConf("context"),snarls:e.snarls??this.getConf("subgraphSnarls"),limit:this.getConf("nodeLimit"),signal:e.signal,keep:w}).catch(x=>{throw T(x,"the graph")});return typeof f=="string"?f:ne(f,{start:d,end:g},e.walkRows)}async getReads(t,e={}){let a=await this.gaf(e);return a?a.readsOver(new Set(t),e):{records:[],total:0}}async laneHaplotypes(t,e){let a=P(this,t);return(await this.getHaplotypes(e)).filter(r=>F(r.prefix,a))}async anchorFeatures(t,e){let{db:a}=await this.graph(e),{assemblyName:r,refName:o,start:s,end:c}=t,p=P(this,e.targetAssemblyName),l=C(this),d=this.keepPredicate(e.haplotypes,p),g=await this.referenceQuery(o,e),y=this.getConf("nodeLimit");return(g?await I(`Reading graph ${o}:${s.toLocaleString()}-${c.toLocaleString()}`,e.statusCallback,()=>a.getAlignments({path:g,start:s,end:c,context:this.getConf("context"),haplotypes:"all",limit:y,signal:e.signal,keep:d}).catch(f=>{throw T(z(f,y,c-s)??f,"lanes")})):[]).flatMap(f=>{let x=f.resolved?xe({alignment:f,assemblyName:r,refName:o,lane:H(l,u(f.name))}):void 0;return x===void 0?[]:[x]})}async pairFeatures(t,e,a){let{db:r}=await this.graph(a),{refName:o,start:s,end:c}=t,l=(await Promise.all(e.map(async m=>({pair:m,featureSide:await this.laneHaplotypes(m.queryAssemblyName,a),mateSide:await this.laneHaplotypes(m.targetAssemblyName,a)})))).filter(({featureSide:m,mateSide:h})=>m.length>0&&h.length>0),d=new Set(l.flatMap(({featureSide:m,mateSide:h})=>[...m,...h].map(u))),g=await this.referenceQuery(o,a),y=this.getConf("nodeLimit"),w=this.getConf("context"),f=(m,h)=>r.getSubgraphs({path:m,start:s,end:c,context:h,snarls:this.getConf("subgraphSnarls"),haplotypes:"all",limit:y,signal:a.signal,keep:S=>d.has(u(S))}),x=async m=>{let h=await f(m,w).catch(b=>{throw T(z(b,y,c-s)??b,"lanes")}),S=Ne(h,d),R=Math.ceil(S/2)+2e3;return S>0&&R>w?f(m,R).catch(b=>{if(b instanceof j)return h;throw b}):h};return(g&&l.length>0?await I(ie(e),a.statusCallback,()=>x(g)):[]).flatMap(m=>l.flatMap(({pair:h,featureSide:S,mateSide:R})=>S.flatMap(b=>R.flatMap(me=>m.pairAlignments({target:b,query:me,bases:!1}).map(fe=>Se({pair:fe,lane:h.queryAssemblyName,mateLane:h.targetAssemblyName}))))))}getFeatures(t,e={}){let a=le(t);return te(async r=>{let{db:o,anchor:s,unreadableIndex:c}=await this.graph(e);if(!o.hasHaplotypeIndex)throw new B(c);if(a.assemblyName===s){let p=oe(e),l=p.length>0?await this.pairFeatures(a,p,e):await this.anchorFeatures(a,e);for(let d of l)r.next(d)}r.complete()},e.signal)}};export{B as NoHaplotypeIndexError,de as PairTargetError,Q as default,Ne as widestWalkGap};
2
+ //# sourceMappingURL=GbzBaseSyntenyAdapter-2MA3I6BM.js.map
@@ -1,4 +1,4 @@
1
- import{a as C}from"./chunk-AQQ4HHN3.js";import"./chunk-FME624X3.js";import"./chunk-K7ZCYIXI.js";import"./chunk-UD4NSJBX.js";import{n as d}from"./chunk-HLKZCTQ3.js";import"./chunk-EEUKM4TK.js";import"./chunk-III4GT4G.js";import"./chunk-CWNJR5XB.js";import"./chunk-PA4HKAUJ.js";import"./chunk-6WA6WF6A.js";import"./chunk-O7Y7LYN6.js";import"./chunk-N4WBX2OS.js";import"./chunk-BWP3XYKD.js";import"./chunk-PFAHNHMM.js";import"./chunk-VDHDEEMF.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import"./chunk-GUXZESDR.js";import"./chunk-IKJZPPOA.js";import"./chunk-NDRLCGPC.js";import"./chunk-TENPGIPX.js";import{h as L}from"./chunk-YU7T5WOQ.js";import{A as l,F as G,H as p,e as s,j as v,o as n,x as y}from"./chunk-UGCNPRKC.js";import{a as h,b as e,c as r,d as i}from"./chunk-JMBDTNUR.js";var N=d()({paper:{padding:16,margin:8,maxWidth:560,marginInline:"auto",display:"flex",flexDirection:"column",gap:12},row:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8}}),S=i(function({model:a}){let{classes:t}=N();return!a.error&&!a.loadCanceled?r(l,{className:t.paper,"data-testid":"graph-genome-loading",children:[r("div",{className:t.row,children:[e(v,{variant:"h6",message:a.statusMessage||void 0}),a.canCancelLoad?e(n,{size:"small","data-testid":"graph-genome-cancel",onClick:()=>{a.cancelLoad()},children:"Cancel"}):null]}),e(y,{variant:"indeterminate"})]}):a.error?e(l,{className:t.paper,children:e(s,{error:a.error,onReset:()=>{a.retryLoad()}})}):e(l,{className:t.paper,"data-testid":"graph-genome-load-canceled",children:r("div",{className:t.row,children:[e(p,{variant:"h6",children:"Loading canceled"}),e(n,{variant:"contained",size:"small","data-testid":"graph-genome-retry",onClick:()=>{a.retryLoad()},children:"Retry"})]})})}),f=S;var T=`H VN:Z:1.0
1
+ import{a as C}from"./chunk-44HZPYGC.js";import"./chunk-FME624X3.js";import"./chunk-UFQTIWSN.js";import"./chunk-N5GYTUIL.js";import{n as d}from"./chunk-HLKZCTQ3.js";import"./chunk-WGVATZLM.js";import"./chunk-III4GT4G.js";import"./chunk-CWNJR5XB.js";import"./chunk-PA4HKAUJ.js";import"./chunk-6WA6WF6A.js";import"./chunk-O7Y7LYN6.js";import"./chunk-N4WBX2OS.js";import"./chunk-BWP3XYKD.js";import"./chunk-PFAHNHMM.js";import"./chunk-VDHDEEMF.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import"./chunk-GUXZESDR.js";import"./chunk-IKJZPPOA.js";import"./chunk-NDRLCGPC.js";import"./chunk-TENPGIPX.js";import{h as L}from"./chunk-YU7T5WOQ.js";import{A as l,F as G,H as p,e as s,j as v,o as n,x as y}from"./chunk-UGCNPRKC.js";import{a as h,b as e,c as r,d as i}from"./chunk-JMBDTNUR.js";var N=d()({paper:{padding:16,margin:8,maxWidth:560,marginInline:"auto",display:"flex",flexDirection:"column",gap:12},row:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8}}),S=i(function({model:a}){let{classes:t}=N();return!a.error&&!a.loadCanceled?r(l,{className:t.paper,"data-testid":"graph-genome-loading",children:[r("div",{className:t.row,children:[e(v,{variant:"h6",message:a.statusMessage||void 0}),a.canCancelLoad?e(n,{size:"small","data-testid":"graph-genome-cancel",onClick:()=>{a.cancelLoad()},children:"Cancel"}):null]}),e(y,{variant:"indeterminate"})]}):a.error?e(l,{className:t.paper,children:e(s,{error:a.error,onReset:()=>{a.retryLoad()}})}):e(l,{className:t.paper,"data-testid":"graph-genome-load-canceled",children:r("div",{className:t.row,children:[e(p,{variant:"h6",children:"Loading canceled"}),e(n,{variant:"contained",size:"small","data-testid":"graph-genome-retry",onClick:()=>{a.retryLoad()},children:"Retry"})]})})}),f=S;var T=`H VN:Z:1.0
2
2
  S 1 ACGT
3
3
  S 2 GGCC
4
4
  S 3 TTAA
@@ -7,4 +7,4 @@ L 1 + 2 + 0M
7
7
  L 1 + 3 + 0M
8
8
  L 2 + 4 + 0M
9
9
  L 3 + 4 + 0M`,E=d()({column:{display:"flex",flexDirection:"column",gap:8},rowEnd:{display:"flex",gap:8,alignItems:"flex-end"},rowCenter:{display:"flex",gap:8,alignItems:"center"},flex1:{flex:1},paper:{padding:16,margin:8,maxWidth:560,marginInline:"auto"},header:{marginBottom:12},footer:{marginTop:12,display:"flex",justifyContent:"flex-end"}}),F=i(function({model:a}){let{classes:t}=E(),[m,w]=L("");function u(){let o=m.trim();o&&a.openGfaLocation({uri:o,locationType:"UriLocation"})}function M(o){let c=o.target.files?.[0];o.target.value="",c&&a.loadGFAFile(c,c.name)}return r(l,{className:t.paper,children:[e("div",{className:t.header,children:e(p,{variant:"h6",children:"Load a GFA graph"})}),r("div",{className:t.column,children:[r("div",{className:t.rowCenter,children:[r(n,{variant:"outlined",component:"label",size:"small",children:["Choose file",e("input",{type:"file",accept:".gfa,.gfa1,.gfa2,.gz",hidden:!0,onChange:o=>{M(o)}})]}),e(p,{variant:"caption",color:"text.secondary",children:"Whole-file GFA; best for small/medium graphs."})]}),r("div",{className:t.rowEnd,children:[e(G,{size:"small",label:"URL",placeholder:"https://example.com/graph.gfa",value:m,onChange:o=>{w(o.target.value)},onKeyDown:o=>{o.key==="Enter"&&u()},className:t.flex1}),e(n,{variant:"contained",onClick:()=>{u()},disabled:!m.trim(),children:"Open"})]})]}),e("div",{className:t.footer,children:e(n,{size:"small",onClick:()=>{a.loadGFA(T,"Example graph")},children:"Load 4-node example"})}),a.error?e(s,{error:a.error}):null]})}),x=F;var B=i(function({model:a}){return a.hasGraph?e(C,{model:a}):a.canRetryLoad?e(f,{model:a}):r(h,{children:[a.isLoading?e(f,{model:a}):null,e("div",{hidden:a.isLoading,children:e(x,{model:a})})]})}),q=B;export{q as default};
10
- //# sourceMappingURL=GraphGenomeView-GKL2VBJI.js.map
10
+ //# sourceMappingURL=GraphGenomeView-4O5F5I37.js.map
@@ -0,0 +1,2 @@
1
+ import{a as h}from"./chunk-44HZPYGC.js";import"./chunk-FME624X3.js";import"./chunk-UFQTIWSN.js";import"./chunk-N5GYTUIL.js";import"./chunk-HLKZCTQ3.js";import"./chunk-WGVATZLM.js";import"./chunk-III4GT4G.js";import"./chunk-CWNJR5XB.js";import"./chunk-PA4HKAUJ.js";import"./chunk-6WA6WF6A.js";import"./chunk-O7Y7LYN6.js";import"./chunk-N4WBX2OS.js";import"./chunk-BWP3XYKD.js";import"./chunk-PFAHNHMM.js";import"./chunk-VDHDEEMF.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import"./chunk-GUXZESDR.js";import"./chunk-IKJZPPOA.js";import"./chunk-NDRLCGPC.js";import"./chunk-TENPGIPX.js";import{h as T}from"./chunk-YU7T5WOQ.js";import"./chunk-UGCNPRKC.js";import{b as e,c as d,d as i}from"./chunk-JMBDTNUR.js";var n=JBrowseExports["@jbrowse/display-kit/DisplayBackgroundProgress"];var f=n&&n.__esModule?n.default:n;var l=JBrowseExports["@jbrowse/display-kit/DisplayErrorBar"];var v=l&&l.__esModule?l.default:l;var p=JBrowseExports["@jbrowse/display-kit/DisplayLoadingOverlay"];var O=p&&p.__esModule?p.default:p;var c=JBrowseExports["@jbrowse/display-kit/TooLargeMessage"];var L=c&&c.__esModule?c.default:c;var s=JBrowseExports["@jbrowse/display-ui"],u=r=>s!=null&&r in Object(s)?s[r]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+r+"' from '@jbrowse/display-ui' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:r});var w=u("BottomRightCornerContext");var g=u("TrackOverlayPortal");var C=u("useChromeOverlayOverride");var U=s&&s.__esModule?s.default:s;var k={TooLarge:L,ErrorBar:v,Loading:O,BackgroundProgress:f},m="Zoom in to see features, or force load this track for the rest of the session (may be slow)",M="Force load this track for the rest of the session (may be slow)";function H(r){let o=r.error??r.renderError,t=o instanceof Error&&o.regionTooLarge===!0;return{error:{error:o,onRetry:t?void 0:()=>{r.reload()}},tooLarge:{message:[r.regionTooLargeReason,r.zoomCanReleaseGate?m:M].filter(Boolean).join(". "),onForceLoad:()=>{r.forceLoad()}},loading:{message:r.statusMessage,progress:r.statusProgress,canceled:r.fetchCanceled,onCancel:()=>{r.cancelFetchByUser()},onRetry:()=>{r.reload()}},background:{message:r.statusMessage,progress:r.statusProgress}}}var _=i(function({model:o,phase:t,drawn:x,testid:E,style:B,children:G,...S}){let{TooLarge:b,ErrorBar:P,Loading:A,BackgroundProgress:D}=C()??k,[R,I]=T(null),a=H(o),y={...S,"data-testid":E,"data-display-id":o.configuration.displayId,"data-display-drawn":x,"data-display-phase":t};return t==="tooLarge"?e("div",{style:{display:"contents"},...y,children:e(g,{children:e("div",{style:{pointerEvents:"auto"},children:e(b,{model:o,...a.tooLarge})})})}):d("div",{style:{position:"relative",height:o.height,...B},...y,children:[e(w,{value:R,children:G}),d(g,{children:[t==="error"?e(P,{model:o,visible:!0,...a.error}):null,e(A,{model:o,...a.loading,visible:t==="loading"||t==="canceled",immediate:!x}),e("div",{ref:I,style:{position:"absolute",bottom:2,right:2,display:"flex",flexDirection:"column",alignItems:"flex-end",gap:4,pointerEvents:"none"},children:t==="ready"&&o.statusMessage?e(D,{model:o,visible:!0,...a.background}):null})]})]})});var j=i(function({model:o}){return e(_,{model:o,phase:o.displayPhase,drawn:o.painted&&o.geometryPainted,testid:"linear-graph-display","data-layout":o.chosenLayoutMode,"data-cut-tier":o.cutTier,"data-recuts":o.recuts,"data-node-count":o.hasGraph?o.nodeCount:void 0,"data-loading":o.isLoading?"":void 0,style:{width:o.paneWidth,height:o.height,overflow:"hidden"},children:e(h,{model:o,ownChrome:!1})})}),so=j;export{so as default};
2
+ //# sourceMappingURL=LinearGraphDisplay-Z33PVCJL.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["host:@jbrowse/display-kit/DisplayBackgroundProgress", "host:@jbrowse/display-kit/DisplayErrorBar", "host:@jbrowse/display-kit/DisplayLoadingOverlay", "host:@jbrowse/display-kit/TooLargeMessage", "host:@jbrowse/display-ui", "../../src/LinearGraphDisplay/components/GraphStatusChrome.tsx", "../../src/LinearGraphDisplay/components/LinearGraphDisplay.tsx"],
4
- "sourcesContent": ["const host = JBrowseExports[\"@jbrowse/display-kit/DisplayBackgroundProgress\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-kit/DisplayBackgroundProgress\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/display-kit/DisplayErrorBar\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-kit/DisplayErrorBar\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/display-kit/DisplayLoadingOverlay\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-kit/DisplayLoadingOverlay\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/display-kit/TooLargeMessage\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-kit/TooLargeMessage\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/display-ui\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-ui\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const AXIS_GUTTER_WIDTH_PX = /* @__PURE__ */ read(\"AXIS_GUTTER_WIDTH_PX\")\nexport const AXIS_RIGHT_INSET_PX = /* @__PURE__ */ read(\"AXIS_RIGHT_INSET_PX\")\nexport const AxisCaption = /* @__PURE__ */ read(\"AxisCaption\")\nexport const AxisCaptionOverlay = /* @__PURE__ */ read(\"AxisCaptionOverlay\")\nexport const AxisGutter = /* @__PURE__ */ read(\"AxisGutter\")\nexport const BOTTOM_RIGHT_CONTROLS_ORDER = /* @__PURE__ */ read(\"BOTTOM_RIGHT_CONTROLS_ORDER\")\nexport const BottomRightCornerContext = /* @__PURE__ */ read(\"BottomRightCornerContext\")\nexport const COMPACT_AXIS_HEIGHT = /* @__PURE__ */ read(\"COMPACT_AXIS_HEIGHT\")\nexport const CrossHatchLines = /* @__PURE__ */ read(\"CrossHatchLines\")\nexport const CrossHatches = /* @__PURE__ */ read(\"CrossHatches\")\nexport const DEFAULT_RULE_COLOR = /* @__PURE__ */ read(\"DEFAULT_RULE_COLOR\")\nexport const DisplayChromeOverlayProvider = /* @__PURE__ */ read(\"DisplayChromeOverlayProvider\")\nexport const DisplayUIProvider = /* @__PURE__ */ read(\"DisplayUIProvider\")\nexport const FLOATING_LEGEND_RIGHT_PX = /* @__PURE__ */ read(\"FLOATING_LEGEND_RIGHT_PX\")\nexport const FLOATING_LEGEND_TOP_PX = /* @__PURE__ */ read(\"FLOATING_LEGEND_TOP_PX\")\nexport const FloatingLegend = /* @__PURE__ */ read(\"FloatingLegend\")\nexport const FloatingSvgOverlay = /* @__PURE__ */ read(\"FloatingSvgOverlay\")\nexport const FloatingText = /* @__PURE__ */ read(\"FloatingText\")\nexport const PointerLayer = /* @__PURE__ */ read(\"PointerLayer\")\nexport const SCORE_CAPTION_HEIGHT = /* @__PURE__ */ read(\"SCORE_CAPTION_HEIGHT\")\nexport const ScoreDomainCaption = /* @__PURE__ */ read(\"ScoreDomainCaption\")\nexport const ScoreRuleLines = /* @__PURE__ */ read(\"ScoreRuleLines\")\nexport const ScoreRules = /* @__PURE__ */ read(\"ScoreRules\")\nexport const SvgHaloText = /* @__PURE__ */ read(\"SvgHaloText\")\nexport const TEXT_BASELINE_RATIO = /* @__PURE__ */ read(\"TEXT_BASELINE_RATIO\")\nexport const Tooltip = /* @__PURE__ */ read(\"Tooltip\")\nexport const TrackControlProvider = /* @__PURE__ */ read(\"TrackControlProvider\")\nexport const TrackOverlayContext = /* @__PURE__ */ read(\"TrackOverlayContext\")\nexport const TrackOverlayPortal = /* @__PURE__ */ read(\"TrackOverlayPortal\")\nexport const TrackOverlaySlot = /* @__PURE__ */ read(\"TrackOverlaySlot\")\nexport const YSCALEBAR_LABEL_OFFSET = /* @__PURE__ */ read(\"YSCALEBAR_LABEL_OFFSET\")\nexport const YScaleBar = /* @__PURE__ */ read(\"YScaleBar\")\nexport const YScaleBarOverlay = /* @__PURE__ */ read(\"YScaleBarOverlay\")\nexport const axisDrawn = /* @__PURE__ */ read(\"axisDrawn\")\nexport const axisGutterLeft = /* @__PURE__ */ read(\"axisGutterLeft\")\nexport const axisGutterWidth = /* @__PURE__ */ read(\"axisGutterWidth\")\nexport const axisPlotBox = /* @__PURE__ */ read(\"axisPlotBox\")\nexport const clampStrokeInsideAxis = /* @__PURE__ */ read(\"clampStrokeInsideAxis\")\nexport const cullOverlappingLabels = /* @__PURE__ */ read(\"cullOverlappingLabels\")\nexport const formatScore = /* @__PURE__ */ read(\"formatScore\")\nexport const isLiveModel = /* @__PURE__ */ read(\"isLiveModel\")\nexport const leftAxisGutterWidth = /* @__PURE__ */ read(\"leftAxisGutterWidth\")\nexport const plainChromeOverlays = /* @__PURE__ */ read(\"plainChromeOverlays\")\nexport const plainTrackControl = /* @__PURE__ */ read(\"plainTrackControl\")\nexport const resolveOverlays = /* @__PURE__ */ read(\"resolveOverlays\")\nexport const scoreToAxisY = /* @__PURE__ */ read(\"scoreToAxisY\")\nexport const textHalo = /* @__PURE__ */ read(\"textHalo\")\nexport const tooLargeBannerText = /* @__PURE__ */ read(\"tooLargeBannerText\")\nexport const useChromeOverlayOverride = /* @__PURE__ */ read(\"useChromeOverlayOverride\")\nexport const useTooltip = /* @__PURE__ */ read(\"useTooltip\")\nexport const useTrackControlMenu = /* @__PURE__ */ read(\"useTrackControlMenu\")\nexport const useTrackControlOverride = /* @__PURE__ */ read(\"useTrackControlOverride\")\nexport default host && host.__esModule ? host.default : host", "import { useState } from 'react'\nimport type { CSSProperties, ReactNode } from 'react'\n\nimport DisplayBackgroundProgress from '@jbrowse/display-kit/DisplayBackgroundProgress'\nimport DisplayErrorBar from '@jbrowse/display-kit/DisplayErrorBar'\nimport DisplayLoadingOverlay from '@jbrowse/display-kit/DisplayLoadingOverlay'\nimport TooLargeMessage from '@jbrowse/display-kit/TooLargeMessage'\nimport {\n BottomRightCornerContext,\n TrackOverlayPortal,\n useChromeOverlayOverride,\n} from '@jbrowse/display-ui'\n\nimport type { LinearGraphDisplayModel } from '../model'\nimport type { DisplayStatusPhase } from '@jbrowse/render-core/displayPhase'\n\nconst muiOverlays = {\n TooLarge: TooLargeMessage,\n ErrorBar: DisplayErrorBar,\n Loading: DisplayLoadingOverlay,\n BackgroundProgress: DisplayBackgroundProgress,\n}\n\n/**\n * The status chrome of a display that owns its canvas: the zoom-in notice in\n * place of the display, and the error bar, loading overlay and progress chip\n * over it in the track's overlay layer. Core's `DisplayStatusChrome` drew this\n * until jbrowse-web main removed it on 2026-10-08 (d8db736896), and its named\n * import came back undefined there, failing the track with React error #130.\n * Built here from the overlays every host from 5.0.0-beta.11 serves.\n */\nexport default function GraphStatusChrome({\n model,\n phase,\n drawn,\n testid,\n style,\n children,\n ...dataProps\n}: {\n model: LinearGraphDisplayModel\n phase: DisplayStatusPhase\n drawn: boolean\n testid: string\n style?: CSSProperties\n children: ReactNode\n} & Record<`data-${string}`, unknown>) {\n const { TooLarge, ErrorBar, Loading, BackgroundProgress } =\n useChromeOverlayOverride() ?? muiOverlays\n const [corner, setCorner] = useState<HTMLDivElement | null>(null)\n const attributes = {\n ...dataProps,\n 'data-testid': testid,\n 'data-display-id': model.configuration.displayId,\n 'data-display-drawn': drawn,\n 'data-display-phase': phase,\n }\n if (phase === 'tooLarge') {\n return (\n <div style={{ display: 'contents' }} {...attributes}>\n <TrackOverlayPortal>\n <div style={{ pointerEvents: 'auto' }}>\n <TooLarge model={model} />\n </div>\n </TrackOverlayPortal>\n </div>\n )\n }\n return (\n <div\n style={{ position: 'relative', height: model.height, ...style }}\n {...attributes}\n >\n <BottomRightCornerContext value={corner}>\n {children}\n </BottomRightCornerContext>\n <TrackOverlayPortal>\n <ErrorBar model={model} visible={phase === 'error'} />\n <Loading\n model={model}\n visible={phase === 'loading' || phase === 'canceled'}\n immediate={!drawn}\n />\n <div\n ref={setCorner}\n style={{\n position: 'absolute',\n bottom: 2,\n right: 2,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n gap: 4,\n pointerEvents: 'none',\n }}\n >\n <BackgroundProgress model={model} visible={phase === 'ready'} />\n </div>\n </TrackOverlayPortal>\n </div>\n )\n}\n", "import { observer } from 'mobx-react'\n\nimport GraphStatusChrome from './GraphStatusChrome'\nimport GraphCanvas from '../../GraphGenomeView/components/GraphCanvas'\n\nimport type { LinearGraphDisplayModel } from '../model'\n\nconst LinearGraphDisplay = observer(function LinearGraphDisplay({\n model,\n}: {\n model: LinearGraphDisplayModel\n}) {\n return (\n <GraphStatusChrome\n model={model}\n phase={model.displayPhase}\n drawn={model.painted && model.geometryPainted}\n testid=\"linear-graph-display\"\n data-layout={model.chosenLayoutMode}\n data-cut-tier={model.cutTier}\n data-recuts={model.recuts}\n data-node-count={model.hasGraph ? model.nodeCount : undefined}\n data-loading={model.isLoading ? '' : undefined}\n style={{\n width: model.paneWidth,\n height: model.height,\n overflow: 'hidden',\n }}\n >\n <GraphCanvas model={model} ownChrome={false} />\n </GraphStatusChrome>\n )\n})\n\nexport default LinearGraphDisplay\n"],
5
- "mappings": "ktBAAA,IAAMA,EAAO,eAAe,gDAAgD,EAY5E,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,ECZxD,IAAMC,EAAO,eAAe,sCAAsC,EAYlE,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,ECZxD,IAAMC,EAAO,eAAe,4CAA4C,EAYxE,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,ECZxD,IAAMC,EAAO,eAAe,sCAAsC,EAYlE,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,ECZxD,IAAMC,EAAO,eAAe,qBAAqB,EAC3CC,EAAOC,GACXF,GAAQ,MAAQE,KAAQ,OAAOF,CAAI,EAC/BA,EAAKE,CAAI,EACT,OAAO,OACL,UAAY,CACV,MAAM,IAAI,MACR,kCAAoCA,EAAO,qIAC7C,CACF,EACA,CAAE,mBAAoBA,CAAK,CAC7B,EAOC,IAAMC,EAA2CC,EAAK,0BAA0B,EAsBhF,IAAMC,EAAqCC,EAAK,oBAAoB,EAoBpE,IAAMC,EAA2CC,EAAK,0BAA0B,EAIvF,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,EChDxD,IAAMC,EAAc,CAClB,SAAUC,EACV,SAAUC,EACV,QAASC,EACT,mBAAoBC,CACtB,EAUe,SAARC,EAAmC,CACxC,MAAAC,EACA,MAAAC,EACA,MAAAC,EACA,OAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAOuC,CACrC,GAAM,CAAE,SAAAC,EAAU,SAAAC,EAAU,QAAAC,EAAS,mBAAAC,CAAmB,EACtDC,EAAyB,GAAKjB,EAC1B,CAACkB,EAAQC,CAAS,EAAIC,EAAgC,IAAI,EAC1DC,EAAa,CACjB,GAAGT,EACH,cAAeH,EACf,kBAAmBH,EAAM,cAAc,UACvC,qBAAsBE,EACtB,qBAAsBD,CACxB,EACA,OAAIA,IAAU,WAEVe,EAAC,OAAI,MAAO,CAAE,QAAS,UAAW,EAAI,GAAGD,EACvC,SAAAC,EAACC,EAAA,CACC,SAAAD,EAAC,OAAI,MAAO,CAAE,cAAe,MAAO,EAClC,SAAAA,EAACT,EAAA,CAAS,MAAOP,EAAO,EAC1B,EACF,EACF,EAIFkB,EAAC,OACC,MAAO,CAAE,SAAU,WAAY,OAAQlB,EAAM,OAAQ,GAAGI,CAAM,EAC7D,GAAGW,EAEJ,UAAAC,EAACG,EAAA,CAAyB,MAAOP,EAC9B,SAAAP,EACH,EACAa,EAACD,EAAA,CACC,UAAAD,EAACR,EAAA,CAAS,MAAOR,EAAO,QAASC,IAAU,QAAS,EACpDe,EAACP,EAAA,CACC,MAAOT,EACP,QAASC,IAAU,WAAaA,IAAU,WAC1C,UAAW,CAACC,EACd,EACAc,EAAC,OACC,IAAKH,EACL,MAAO,CACL,SAAU,WACV,OAAQ,EACR,MAAO,EACP,QAAS,OACT,cAAe,SACf,WAAY,WACZ,IAAK,EACL,cAAe,MACjB,EAEA,SAAAG,EAACN,EAAA,CAAmB,MAAOV,EAAO,QAASC,IAAU,QAAS,EAChE,GACF,GACF,CAEJ,CC9FA,IAAMmB,EAAqBC,EAAS,SAA4B,CAC9D,MAAAC,CACF,EAEG,CACD,OACEC,EAACC,EAAA,CACC,MAAOF,EACP,MAAOA,EAAM,aACb,MAAOA,EAAM,SAAWA,EAAM,gBAC9B,OAAO,uBACP,cAAaA,EAAM,iBACnB,gBAAeA,EAAM,QACrB,cAAaA,EAAM,OACnB,kBAAiBA,EAAM,SAAWA,EAAM,UAAY,OACpD,eAAcA,EAAM,UAAY,GAAK,OACrC,MAAO,CACL,MAAOA,EAAM,UACb,OAAQA,EAAM,OACd,SAAU,QACZ,EAEA,SAAAC,EAACE,EAAA,CAAY,MAAOH,EAAO,UAAW,GAAO,EAC/C,CAEJ,CAAC,EAEMI,EAAQN",
6
- "names": ["host", "DisplayBackgroundProgress_default", "host", "host", "DisplayErrorBar_default", "host", "host", "DisplayLoadingOverlay_default", "host", "host", "TooLargeMessage_default", "host", "host", "read", "name", "BottomRightCornerContext", "read", "TrackOverlayPortal", "read", "useChromeOverlayOverride", "read", "display_ui_default", "host", "muiOverlays", "TooLargeMessage_default", "DisplayErrorBar_default", "DisplayLoadingOverlay_default", "DisplayBackgroundProgress_default", "GraphStatusChrome", "model", "phase", "drawn", "testid", "style", "children", "dataProps", "TooLarge", "ErrorBar", "Loading", "BackgroundProgress", "useChromeOverlayOverride", "corner", "setCorner", "useState", "attributes", "jsx", "TrackOverlayPortal", "jsxs", "BottomRightCornerContext", "LinearGraphDisplay", "observer", "model", "jsx", "GraphStatusChrome", "GraphCanvas_default", "LinearGraphDisplay_default"]
4
+ "sourcesContent": ["const host = JBrowseExports[\"@jbrowse/display-kit/DisplayBackgroundProgress\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-kit/DisplayBackgroundProgress\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/display-kit/DisplayErrorBar\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-kit/DisplayErrorBar\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/display-kit/DisplayLoadingOverlay\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-kit/DisplayLoadingOverlay\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/display-kit/TooLargeMessage\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-kit/TooLargeMessage\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/display-ui\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-ui\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const AXIS_GUTTER_WIDTH_PX = /* @__PURE__ */ read(\"AXIS_GUTTER_WIDTH_PX\")\nexport const AXIS_RIGHT_INSET_PX = /* @__PURE__ */ read(\"AXIS_RIGHT_INSET_PX\")\nexport const AxisCaption = /* @__PURE__ */ read(\"AxisCaption\")\nexport const AxisCaptionOverlay = /* @__PURE__ */ read(\"AxisCaptionOverlay\")\nexport const AxisGutter = /* @__PURE__ */ read(\"AxisGutter\")\nexport const BOTTOM_RIGHT_CONTROLS_ORDER = /* @__PURE__ */ read(\"BOTTOM_RIGHT_CONTROLS_ORDER\")\nexport const BottomRightCornerContext = /* @__PURE__ */ read(\"BottomRightCornerContext\")\nexport const COMPACT_AXIS_HEIGHT = /* @__PURE__ */ read(\"COMPACT_AXIS_HEIGHT\")\nexport const CrossHatchLines = /* @__PURE__ */ read(\"CrossHatchLines\")\nexport const CrossHatches = /* @__PURE__ */ read(\"CrossHatches\")\nexport const DEFAULT_RULE_COLOR = /* @__PURE__ */ read(\"DEFAULT_RULE_COLOR\")\nexport const DisplayChromeOverlayProvider = /* @__PURE__ */ read(\"DisplayChromeOverlayProvider\")\nexport const DisplayUIProvider = /* @__PURE__ */ read(\"DisplayUIProvider\")\nexport const FLOATING_LEGEND_RIGHT_PX = /* @__PURE__ */ read(\"FLOATING_LEGEND_RIGHT_PX\")\nexport const FLOATING_LEGEND_TOP_PX = /* @__PURE__ */ read(\"FLOATING_LEGEND_TOP_PX\")\nexport const FloatingLegend = /* @__PURE__ */ read(\"FloatingLegend\")\nexport const FloatingSvgOverlay = /* @__PURE__ */ read(\"FloatingSvgOverlay\")\nexport const FloatingText = /* @__PURE__ */ read(\"FloatingText\")\nexport const PointerLayer = /* @__PURE__ */ read(\"PointerLayer\")\nexport const SCORE_CAPTION_HEIGHT = /* @__PURE__ */ read(\"SCORE_CAPTION_HEIGHT\")\nexport const ScoreDomainCaption = /* @__PURE__ */ read(\"ScoreDomainCaption\")\nexport const ScoreRuleLines = /* @__PURE__ */ read(\"ScoreRuleLines\")\nexport const ScoreRules = /* @__PURE__ */ read(\"ScoreRules\")\nexport const SvgHaloText = /* @__PURE__ */ read(\"SvgHaloText\")\nexport const TEXT_BASELINE_RATIO = /* @__PURE__ */ read(\"TEXT_BASELINE_RATIO\")\nexport const Tooltip = /* @__PURE__ */ read(\"Tooltip\")\nexport const TrackControlProvider = /* @__PURE__ */ read(\"TrackControlProvider\")\nexport const TrackOverlayContext = /* @__PURE__ */ read(\"TrackOverlayContext\")\nexport const TrackOverlayPortal = /* @__PURE__ */ read(\"TrackOverlayPortal\")\nexport const TrackOverlaySlot = /* @__PURE__ */ read(\"TrackOverlaySlot\")\nexport const YSCALEBAR_LABEL_OFFSET = /* @__PURE__ */ read(\"YSCALEBAR_LABEL_OFFSET\")\nexport const YScaleBar = /* @__PURE__ */ read(\"YScaleBar\")\nexport const YScaleBarOverlay = /* @__PURE__ */ read(\"YScaleBarOverlay\")\nexport const axisDrawn = /* @__PURE__ */ read(\"axisDrawn\")\nexport const axisGutterLeft = /* @__PURE__ */ read(\"axisGutterLeft\")\nexport const axisGutterWidth = /* @__PURE__ */ read(\"axisGutterWidth\")\nexport const axisPlotBox = /* @__PURE__ */ read(\"axisPlotBox\")\nexport const clampStrokeInsideAxis = /* @__PURE__ */ read(\"clampStrokeInsideAxis\")\nexport const cullOverlappingLabels = /* @__PURE__ */ read(\"cullOverlappingLabels\")\nexport const formatScore = /* @__PURE__ */ read(\"formatScore\")\nexport const isLiveModel = /* @__PURE__ */ read(\"isLiveModel\")\nexport const leftAxisGutterWidth = /* @__PURE__ */ read(\"leftAxisGutterWidth\")\nexport const plainChromeOverlays = /* @__PURE__ */ read(\"plainChromeOverlays\")\nexport const plainTrackControl = /* @__PURE__ */ read(\"plainTrackControl\")\nexport const resolveOverlays = /* @__PURE__ */ read(\"resolveOverlays\")\nexport const scoreToAxisY = /* @__PURE__ */ read(\"scoreToAxisY\")\nexport const textHalo = /* @__PURE__ */ read(\"textHalo\")\nexport const tooLargeBannerText = /* @__PURE__ */ read(\"tooLargeBannerText\")\nexport const useChromeOverlayOverride = /* @__PURE__ */ read(\"useChromeOverlayOverride\")\nexport const useTooltip = /* @__PURE__ */ read(\"useTooltip\")\nexport const useTrackControlMenu = /* @__PURE__ */ read(\"useTrackControlMenu\")\nexport const useTrackControlOverride = /* @__PURE__ */ read(\"useTrackControlOverride\")\nexport default host && host.__esModule ? host.default : host", "import { useState } from 'react'\nimport type { CSSProperties, ReactNode } from 'react'\n\nimport DisplayBackgroundProgress from '@jbrowse/display-kit/DisplayBackgroundProgress'\nimport DisplayErrorBar from '@jbrowse/display-kit/DisplayErrorBar'\nimport DisplayLoadingOverlay from '@jbrowse/display-kit/DisplayLoadingOverlay'\nimport TooLargeMessage from '@jbrowse/display-kit/TooLargeMessage'\nimport {\n BottomRightCornerContext,\n TrackOverlayPortal,\n useChromeOverlayOverride,\n} from '@jbrowse/display-ui'\nimport { observer } from 'mobx-react'\n\nimport type { LinearGraphDisplayModel } from '../model'\nimport type { DisplayStatusPhase } from '@jbrowse/render-core/displayPhase'\n\nconst muiOverlays = {\n TooLarge: TooLargeMessage,\n ErrorBar: DisplayErrorBar,\n Loading: DisplayLoadingOverlay,\n BackgroundProgress: DisplayBackgroundProgress,\n}\n\nconst ZOOM_IN_ADVICE =\n 'Zoom in to see features, or force load this track for the rest of the session (may be slow)'\nconst FORCE_LOAD_ADVICE =\n 'Force load this track for the rest of the session (may be slow)'\n\n// Hosts before the plain-props overlay change (jbrowse-components 3a5393f5a6)\n// read `model` and `visible`; later hosts read values and callbacks. Each\n// overlay gets both, so one build runs on either.\nfunction overlayProps(model: LinearGraphDisplayModel) {\n const error = model.error ?? model.renderError\n const regionTooLarge =\n error instanceof Error &&\n (error as { regionTooLarge?: unknown }).regionTooLarge === true\n return {\n error: {\n error,\n onRetry: regionTooLarge\n ? undefined\n : () => {\n model.reload()\n },\n },\n tooLarge: {\n message: [\n model.regionTooLargeReason,\n model.zoomCanReleaseGate ? ZOOM_IN_ADVICE : FORCE_LOAD_ADVICE,\n ]\n .filter(Boolean)\n .join('. '),\n onForceLoad: () => {\n model.forceLoad()\n },\n },\n loading: {\n message: model.statusMessage,\n progress: model.statusProgress,\n canceled: model.fetchCanceled,\n onCancel: () => {\n model.cancelFetchByUser()\n },\n onRetry: () => {\n model.reload()\n },\n },\n background: {\n message: model.statusMessage,\n progress: model.statusProgress,\n },\n }\n}\n\n/**\n * The status chrome of a display that owns its canvas: the zoom-in notice in\n * place of the display, and the error bar, loading overlay and progress chip\n * over it in the track's overlay layer. Core's `DisplayStatusChrome` drew this\n * until jbrowse-web main removed it on 2026-10-08 (d8db736896), and its named\n * import came back undefined there, failing the track with React error #130.\n * Built here from the overlays every host from 5.0.0-beta.11 serves.\n */\nexport default observer(function GraphStatusChrome({\n model,\n phase,\n drawn,\n testid,\n style,\n children,\n ...dataProps\n}: {\n model: LinearGraphDisplayModel\n phase: DisplayStatusPhase\n drawn: boolean\n testid: string\n style?: CSSProperties\n children: ReactNode\n} & Record<`data-${string}`, unknown>) {\n const { TooLarge, ErrorBar, Loading, BackgroundProgress } =\n useChromeOverlayOverride() ?? muiOverlays\n const [corner, setCorner] = useState<HTMLDivElement | null>(null)\n const props = overlayProps(model)\n const attributes = {\n ...dataProps,\n 'data-testid': testid,\n 'data-display-id': model.configuration.displayId,\n 'data-display-drawn': drawn,\n 'data-display-phase': phase,\n }\n if (phase === 'tooLarge') {\n return (\n <div style={{ display: 'contents' }} {...attributes}>\n <TrackOverlayPortal>\n <div style={{ pointerEvents: 'auto' }}>\n <TooLarge model={model} {...props.tooLarge} />\n </div>\n </TrackOverlayPortal>\n </div>\n )\n }\n return (\n <div\n style={{ position: 'relative', height: model.height, ...style }}\n {...attributes}\n >\n <BottomRightCornerContext value={corner}>\n {children}\n </BottomRightCornerContext>\n <TrackOverlayPortal>\n {phase === 'error' ? (\n <ErrorBar model={model} visible {...props.error} />\n ) : null}\n <Loading\n model={model}\n {...props.loading}\n visible={phase === 'loading' || phase === 'canceled'}\n immediate={!drawn}\n />\n <div\n ref={setCorner}\n style={{\n position: 'absolute',\n bottom: 2,\n right: 2,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n gap: 4,\n pointerEvents: 'none',\n }}\n >\n {phase === 'ready' && model.statusMessage ? (\n <BackgroundProgress model={model} visible {...props.background} />\n ) : null}\n </div>\n </TrackOverlayPortal>\n </div>\n )\n})\n", "import { observer } from 'mobx-react'\n\nimport GraphStatusChrome from './GraphStatusChrome'\nimport GraphCanvas from '../../GraphGenomeView/components/GraphCanvas'\n\nimport type { LinearGraphDisplayModel } from '../model'\n\nconst LinearGraphDisplay = observer(function LinearGraphDisplay({\n model,\n}: {\n model: LinearGraphDisplayModel\n}) {\n return (\n <GraphStatusChrome\n model={model}\n phase={model.displayPhase}\n drawn={model.painted && model.geometryPainted}\n testid=\"linear-graph-display\"\n data-layout={model.chosenLayoutMode}\n data-cut-tier={model.cutTier}\n data-recuts={model.recuts}\n data-node-count={model.hasGraph ? model.nodeCount : undefined}\n data-loading={model.isLoading ? '' : undefined}\n style={{\n width: model.paneWidth,\n height: model.height,\n overflow: 'hidden',\n }}\n >\n <GraphCanvas model={model} ownChrome={false} />\n </GraphStatusChrome>\n )\n})\n\nexport default LinearGraphDisplay\n"],
5
+ "mappings": "ktBAAA,IAAMA,EAAO,eAAe,gDAAgD,EAY5E,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,ECZxD,IAAMC,EAAO,eAAe,sCAAsC,EAYlE,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,ECZxD,IAAMC,EAAO,eAAe,4CAA4C,EAYxE,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,ECZxD,IAAMC,EAAO,eAAe,sCAAsC,EAYlE,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,ECZxD,IAAMC,EAAO,eAAe,qBAAqB,EAC3CC,EAAOC,GACXF,GAAQ,MAAQE,KAAQ,OAAOF,CAAI,EAC/BA,EAAKE,CAAI,EACT,OAAO,OACL,UAAY,CACV,MAAM,IAAI,MACR,kCAAoCA,EAAO,qIAC7C,CACF,EACA,CAAE,mBAAoBA,CAAK,CAC7B,EAOC,IAAMC,EAA2CC,EAAK,0BAA0B,EAsBhF,IAAMC,EAAqCC,EAAK,oBAAoB,EAoBpE,IAAMC,EAA2CC,EAAK,0BAA0B,EAIvF,IAAOC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,EC/CxD,IAAMC,EAAc,CAClB,SAAUC,EACV,SAAUC,EACV,QAASC,EACT,mBAAoBC,CACtB,EAEMC,EACJ,8FACIC,EACJ,kEAKF,SAASC,EAAaC,EAAgC,CACpD,IAAMC,EAAQD,EAAM,OAASA,EAAM,YAC7BE,EACJD,aAAiB,OAChBA,EAAuC,iBAAmB,GAC7D,MAAO,CACL,MAAO,CACL,MAAAA,EACA,QAASC,EACL,OACA,IAAM,CACJF,EAAM,OAAO,CACf,CACN,EACA,SAAU,CACR,QAAS,CACPA,EAAM,qBACNA,EAAM,mBAAqBH,EAAiBC,CAC9C,EACG,OAAO,OAAO,EACd,KAAK,IAAI,EACZ,YAAa,IAAM,CACjBE,EAAM,UAAU,CAClB,CACF,EACA,QAAS,CACP,QAASA,EAAM,cACf,SAAUA,EAAM,eAChB,SAAUA,EAAM,cAChB,SAAU,IAAM,CACdA,EAAM,kBAAkB,CAC1B,EACA,QAAS,IAAM,CACbA,EAAM,OAAO,CACf,CACF,EACA,WAAY,CACV,QAASA,EAAM,cACf,SAAUA,EAAM,cAClB,CACF,CACF,CAUA,IAAOG,EAAQC,EAAS,SAA2B,CACjD,MAAAJ,EACA,MAAAK,EACA,MAAAC,EACA,OAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAOuC,CACrC,GAAM,CAAE,SAAAC,EAAU,SAAAC,EAAU,QAAAC,EAAS,mBAAAC,CAAmB,EACtDC,EAAyB,GAAKvB,EAC1B,CAACwB,EAAQC,CAAS,EAAIC,EAAgC,IAAI,EAC1DC,EAAQpB,EAAaC,CAAK,EAC1BoB,EAAa,CACjB,GAAGV,EACH,cAAeH,EACf,kBAAmBP,EAAM,cAAc,UACvC,qBAAsBM,EACtB,qBAAsBD,CACxB,EACA,OAAIA,IAAU,WAEVgB,EAAC,OAAI,MAAO,CAAE,QAAS,UAAW,EAAI,GAAGD,EACvC,SAAAC,EAACC,EAAA,CACC,SAAAD,EAAC,OAAI,MAAO,CAAE,cAAe,MAAO,EAClC,SAAAA,EAACV,EAAA,CAAS,MAAOX,EAAQ,GAAGmB,EAAM,SAAU,EAC9C,EACF,EACF,EAIFI,EAAC,OACC,MAAO,CAAE,SAAU,WAAY,OAAQvB,EAAM,OAAQ,GAAGQ,CAAM,EAC7D,GAAGY,EAEJ,UAAAC,EAACG,EAAA,CAAyB,MAAOR,EAC9B,SAAAP,EACH,EACAc,EAACD,EAAA,CACE,UAAAjB,IAAU,QACTgB,EAACT,EAAA,CAAS,MAAOZ,EAAO,QAAO,GAAE,GAAGmB,EAAM,MAAO,EAC/C,KACJE,EAACR,EAAA,CACC,MAAOb,EACN,GAAGmB,EAAM,QACV,QAASd,IAAU,WAAaA,IAAU,WAC1C,UAAW,CAACC,EACd,EACAe,EAAC,OACC,IAAKJ,EACL,MAAO,CACL,SAAU,WACV,OAAQ,EACR,MAAO,EACP,QAAS,OACT,cAAe,SACf,WAAY,WACZ,IAAK,EACL,cAAe,MACjB,EAEC,SAAAZ,IAAU,SAAWL,EAAM,cAC1BqB,EAACP,EAAA,CAAmB,MAAOd,EAAO,QAAO,GAAE,GAAGmB,EAAM,WAAY,EAC9D,KACN,GACF,GACF,CAEJ,CAAC,ECxJD,IAAMM,EAAqBC,EAAS,SAA4B,CAC9D,MAAAC,CACF,EAEG,CACD,OACEC,EAACC,EAAA,CACC,MAAOF,EACP,MAAOA,EAAM,aACb,MAAOA,EAAM,SAAWA,EAAM,gBAC9B,OAAO,uBACP,cAAaA,EAAM,iBACnB,gBAAeA,EAAM,QACrB,cAAaA,EAAM,OACnB,kBAAiBA,EAAM,SAAWA,EAAM,UAAY,OACpD,eAAcA,EAAM,UAAY,GAAK,OACrC,MAAO,CACL,MAAOA,EAAM,UACb,OAAQA,EAAM,OACd,SAAU,QACZ,EAEA,SAAAC,EAACE,EAAA,CAAY,MAAOH,EAAO,UAAW,GAAO,EAC/C,CAEJ,CAAC,EAEMI,GAAQN",
6
+ "names": ["host", "DisplayBackgroundProgress_default", "host", "host", "DisplayErrorBar_default", "host", "host", "DisplayLoadingOverlay_default", "host", "host", "TooLargeMessage_default", "host", "host", "read", "name", "BottomRightCornerContext", "read", "TrackOverlayPortal", "read", "useChromeOverlayOverride", "read", "display_ui_default", "host", "muiOverlays", "TooLargeMessage_default", "DisplayErrorBar_default", "DisplayLoadingOverlay_default", "DisplayBackgroundProgress_default", "ZOOM_IN_ADVICE", "FORCE_LOAD_ADVICE", "overlayProps", "model", "error", "regionTooLarge", "GraphStatusChrome_default", "observer", "phase", "drawn", "testid", "style", "children", "dataProps", "TooLarge", "ErrorBar", "Loading", "BackgroundProgress", "useChromeOverlayOverride", "corner", "setCorner", "useState", "props", "attributes", "jsx", "TrackOverlayPortal", "jsxs", "BottomRightCornerContext", "LinearGraphDisplay", "observer", "model", "jsx", "GraphStatusChrome_default", "GraphCanvas_default", "LinearGraphDisplay_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{a as f,d as c,f as d}from"./chunk-6WA6WF6A.js";import{a as g}from"./chunk-KOB7YIMR.js";import{b,h as m,m as p,o as u}from"./chunk-HQVHNUXC.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import"./chunk-GUXZESDR.js";import"./chunk-OGQ6OQDN.js";import"./chunk-NDRLCGPC.js";import{a as i,o as l}from"./chunk-TENPGIPX.js";var a=class extends b{constructor(){super(...arguments);this.bubbles=p(this,["bubblesLocation"],["index"]);this.refNames=new u(this.bubbles,this)}static{this.capabilities=["getFeatures","getRefNames"]}async getRefNames(t={}){return this.refNames.assemblyRefNames(t)}async getRegionByteSize(t,s={}){return this.refNames.regionBytes(t,s)}async hasDataForRefName(){return!0}getFeatures(t,s={}){let{signal:n,statusCallback:h}=s;return g(async r=>{let o=await this.refNames.resolveMapped(t,s);o!==void 0&&await l("Downloading bubbles",h,()=>m(this.bubbles,o,t.start,t.end,{signal:n,lineCallback:(N,y)=>{let e=f(N);r.next(new i({uniqueId:`bubble-${y}`,refName:t.refName,start:e.start,end:e.end,name:c(e),description:d(e),type:"bubble",score:e.segmentCount,segmentCount:e.segmentCount,pathCount:e.pathCount,inversion:e.inversion,shortestAlleleLength:e.shortestAlleleLength,longestAlleleLength:e.longestAlleleLength,segments:e.segments,shortestAllele:e.shortestAllele,longestAllele:e.longestAllele}))}})),r.complete()},n)}};export{a as default};
2
- //# sourceMappingURL=MinigraphBubbleAdapter-2JRRNRI3.js.map
1
+ import{a as f,d as c,f as d}from"./chunk-6WA6WF6A.js";import{a as g}from"./chunk-KOB7YIMR.js";import{b,h as m,m as p,o as u}from"./chunk-EDSIYH4H.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import"./chunk-GUXZESDR.js";import"./chunk-OGQ6OQDN.js";import"./chunk-NDRLCGPC.js";import{a as i,o as l}from"./chunk-TENPGIPX.js";var a=class extends b{constructor(){super(...arguments);this.bubbles=p(this,["bubblesLocation"],["index"]);this.refNames=new u(this.bubbles,this)}static{this.capabilities=["getFeatures","getRefNames"]}async getRefNames(t={}){return this.refNames.assemblyRefNames(t)}async getRegionByteSize(t,s={}){return this.refNames.regionBytes(t,s)}async hasDataForRefName(){return!0}getFeatures(t,s={}){let{signal:n,statusCallback:h}=s;return g(async r=>{let o=await this.refNames.resolveMapped(t,s);o!==void 0&&await l("Downloading bubbles",h,()=>m(this.bubbles,o,t.start,t.end,{signal:n,lineCallback:(N,y)=>{let e=f(N);r.next(new i({uniqueId:`bubble-${y}`,refName:t.refName,start:e.start,end:e.end,name:c(e),description:d(e),type:"bubble",score:e.segmentCount,segmentCount:e.segmentCount,pathCount:e.pathCount,inversion:e.inversion,shortestAlleleLength:e.shortestAlleleLength,longestAlleleLength:e.longestAlleleLength,segments:e.segments,shortestAllele:e.shortestAllele,longestAllele:e.longestAllele}))}})),r.complete()},n)}};export{a as default};
2
+ //# sourceMappingURL=MinigraphBubbleAdapter-HDLUZ6YF.js.map
@@ -1,3 +1,3 @@
1
- import{a as I}from"./chunk-KEHEGRRO.js";import{a as w}from"./chunk-KOB7YIMR.js";import"./chunk-PFAHNHMM.js";import"./chunk-VDHDEEMF.js";import{b as L,h as d,m as p,n as y,o as F}from"./chunk-HQVHNUXC.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import"./chunk-GUXZESDR.js";import{d as N}from"./chunk-IKJZPPOA.js";import"./chunk-OGQ6OQDN.js";import"./chunk-NDRLCGPC.js";import{a as k,o as h}from"./chunk-TENPGIPX.js";function u(s){let n=s.split(" "),t=n.length>=8,a=t?5:0;return{anchored:t,segment:{refName:n[a],start:+n[a+1],end:+n[a+2],id:n[3],rank:+n[4],tags:n[t?8:5]??""}}}function v(s){let n=s.tags.split(" ").find(a=>a.startsWith("SM:Z:"));if(n===void 0)return;let t=n.slice(5).split(",").map(a=>a.trim()).filter(Boolean);return t.length>0?t:void 0}function M(s){return{id:s.slice(0,-1),strand:s.slice(-1)}}function $(s){let n=s.split(" "),t=M(n[3]),a=M(n[4]);return{source:t.id,sourceStrand:t.strand,target:a.id,targetStrand:a.strand,sourceSegment:{id:t.id,refName:n[5],start:+n[6],end:+n[7],rank:+n[8],tags:n[13]??""},targetSegment:{id:a.id,refName:n[9],start:+n[10],end:+n[11],rank:+n[12],tags:n[14]??""}}}function B(s){return`${s.source}${s.sourceStrand}${s.target}${s.targetStrand}`}function S(s,n,t){n.set(B(t),t);let a=[];for(let e of[t.sourceSegment,t.targetSegment])s.has(e.id)||(s.set(e.id,e),a.push(e));return a}function O(s,n,t){let a=i=>i.rank!==0||i.refName!==t.refName?0:i.end<=t.start?-1:i.start>=t.end?1:0,e=new Map(s),r=new Map;for(let i of n)(s.has(i.source)||s.has(i.target)||a(i.sourceSegment)*a(i.targetSegment)===-1)&&S(e,r,i);for(let i of n)e.has(i.source)&&e.has(i.target)&&r.set(B(i),i);return{segments:e,links:r}}function A(s,n,t){let a=e=>e.refName!==t.refName||e.end<=t.start||e.start>=t.end;return[...C(s.filter(e=>e.rank>0),e=>n.has(e.id),t.end-t.start),...C(s.filter(e=>e.rank===0&&a(e)),()=>!0,0)]}function C(s,n,t){let a=[...s].sort((r,i)=>l(r.refName,i.refName)||r.start-i.start),e=[];for(let r of a){let i=e.at(-1);i?.refName===r.refName&&r.start-i.end<=t?(i.needed||=r.start>i.end||n(r),i.end=Math.max(i.end,r.end)):e.push({refName:r.refName,start:r.start,end:r.end,needed:n(r)})}return e.filter(r=>r.needed).map(({refName:r,start:i,end:o})=>({refName:r,start:i,end:o}))}function T(s,n,t){let a=e=>n.has(e.id)||t.some(r=>r.refName===e.refName&&e.start>=r.start&&e.end<=r.end);return s.filter(e=>a(e.sourceSegment)&&a(e.targetSegment))}var W=/^[A-Za-z][A-Za-z0-9]:[AifZJHB]:/;function j(s){let{id:n,refName:t,start:a,end:e,rank:r,tags:i}=s,o=i.split(" ").filter(f=>W.test(f)),g=o.length===0?"":` ${o.join(" ")}`;return`S ${n} * LN:i:${e-a} SN:Z:${t} SO:i:${a} SR:i:${r}${g}`}function P(s){let{source:n,sourceStrand:t,target:a,targetStrand:e}=s;return`L ${n} ${t} ${a} ${e} 0M`}function l(s,n){return s<n?-1:s>n?1:0}function R(s,n){let t=[...s.values()].sort((e,r)=>l(e.refName,r.refName)||e.start-r.start||l(e.id,r.id)),a=[...n.keys()].sort((e,r)=>l(e,r));return["H VN:Z:1.0",...t.map(e=>j(e)),...a.map(e=>P(n.get(e)))].join(`
1
+ import{a as I}from"./chunk-ZNT7TQLN.js";import{a as w}from"./chunk-KOB7YIMR.js";import"./chunk-PFAHNHMM.js";import"./chunk-VDHDEEMF.js";import{b as L,h as d,m as p,n as y,o as F}from"./chunk-EDSIYH4H.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import"./chunk-GUXZESDR.js";import{d as N}from"./chunk-IKJZPPOA.js";import"./chunk-OGQ6OQDN.js";import"./chunk-NDRLCGPC.js";import{a as k,o as h}from"./chunk-TENPGIPX.js";function u(s){let n=s.split(" "),t=n.length>=8,a=t?5:0;return{anchored:t,segment:{refName:n[a],start:+n[a+1],end:+n[a+2],id:n[3],rank:+n[4],tags:n[t?8:5]??""}}}function v(s){let n=s.tags.split(" ").find(a=>a.startsWith("SM:Z:"));if(n===void 0)return;let t=n.slice(5).split(",").map(a=>a.trim()).filter(Boolean);return t.length>0?t:void 0}function M(s){return{id:s.slice(0,-1),strand:s.slice(-1)}}function $(s){let n=s.split(" "),t=M(n[3]),a=M(n[4]);return{source:t.id,sourceStrand:t.strand,target:a.id,targetStrand:a.strand,sourceSegment:{id:t.id,refName:n[5],start:+n[6],end:+n[7],rank:+n[8],tags:n[13]??""},targetSegment:{id:a.id,refName:n[9],start:+n[10],end:+n[11],rank:+n[12],tags:n[14]??""}}}function B(s){return`${s.source}${s.sourceStrand}${s.target}${s.targetStrand}`}function S(s,n,t){n.set(B(t),t);let a=[];for(let e of[t.sourceSegment,t.targetSegment])s.has(e.id)||(s.set(e.id,e),a.push(e));return a}function O(s,n,t){let a=i=>i.rank!==0||i.refName!==t.refName?0:i.end<=t.start?-1:i.start>=t.end?1:0,e=new Map(s),r=new Map;for(let i of n)(s.has(i.source)||s.has(i.target)||a(i.sourceSegment)*a(i.targetSegment)===-1)&&S(e,r,i);for(let i of n)e.has(i.source)&&e.has(i.target)&&r.set(B(i),i);return{segments:e,links:r}}function A(s,n,t){let a=e=>e.refName!==t.refName||e.end<=t.start||e.start>=t.end;return[...C(s.filter(e=>e.rank>0),e=>n.has(e.id),t.end-t.start),...C(s.filter(e=>e.rank===0&&a(e)),()=>!0,0)]}function C(s,n,t){let a=[...s].sort((r,i)=>l(r.refName,i.refName)||r.start-i.start),e=[];for(let r of a){let i=e.at(-1);i?.refName===r.refName&&r.start-i.end<=t?(i.needed||=r.start>i.end||n(r),i.end=Math.max(i.end,r.end)):e.push({refName:r.refName,start:r.start,end:r.end,needed:n(r)})}return e.filter(r=>r.needed).map(({refName:r,start:i,end:o})=>({refName:r,start:i,end:o}))}function T(s,n,t){let a=e=>n.has(e.id)||t.some(r=>r.refName===e.refName&&e.start>=r.start&&e.end<=r.end);return s.filter(e=>a(e.sourceSegment)&&a(e.targetSegment))}var W=/^[A-Za-z][A-Za-z0-9]:[AifZJHB]:/;function j(s){let{id:n,refName:t,start:a,end:e,rank:r,tags:i}=s,o=i.split(" ").filter(f=>W.test(f)),g=o.length===0?"":` ${o.join(" ")}`;return`S ${n} * LN:i:${e-a} SN:Z:${t} SO:i:${a} SR:i:${r}${g}`}function P(s){let{source:n,sourceStrand:t,target:a,targetStrand:e}=s;return`L ${n} ${t} ${a} ${e} 0M`}function l(s,n){return s<n?-1:s>n?1:0}function R(s,n){let t=[...s.values()].sort((e,r)=>l(e.refName,r.refName)||e.start-r.start||l(e.id,r.id)),a=[...n.keys()].sort((e,r)=>l(e,r));return["H VN:Z:1.0",...t.map(e=>j(e)),...a.map(e=>P(n.get(e)))].join(`
2
2
  `)}function Z(s){return s.filter(n=>n.rank>0)}async function x(s,n,t){let a=[];return await d(s,n.refName,n.start,n.end,{signal:t,lineCallback:e=>{a.push($(e))}}),a}async function G(s,n,{hops:t=0,signal:a}={}){let e=new Map,r=new Map,i={anchored:!1};if(await d(s.segments,n.refName,n.start,n.end,{signal:a,lineCallback:f=>{let m=u(f);i.anchored||=m.anchored,e.set(m.segment.id,m.segment)}}),i.anchored){let f=O(e,await x(s.links,n,a),n);return R(f.segments,f.links)}let o=async f=>(await x(s.links,f,a)).flatMap(m=>S(e,r,m)),g=Z(await o(n));for(let f=0;f<t;f++){let m=await Promise.all(g.map(o));g=Z(m.flat())}if(t>0){let f=A([...e.values()],new Set(g.map(c=>c.id)),n),m=await Promise.all(f.map(c=>x(s.links,c,a)));for(let c of T(m.flat(),e,f))S(e,r,c)}return R(e,r)}var b=class extends L{constructor(){super(...arguments);this.fine=this.openIndex([])}static{this.capabilities=["getFeatures","getRefNames"]}openIndex(t){let a=p(this,[...t,"segmentsLocation"],[...t,"segmentsIndex"]),e=p(this,[...t,"linksLocation"],[...t,"linksIndex"]),r=this.getConf("walksLocation"),i=t.length===0&&N(r)?new I(p(this,["walksLocation"],["walksIndex"]),this):void 0;return{segments:a,links:e,walks:i,refNames:new F(i?.file??a,this)}}async getHaplotypeNames(t={}){return this.fine.walks?.haplotypeNames(t)}index(t="fine"){return t==="fine"?this.fine:(this.coarse??=this.openIndex(["coarse"]),this.coarse)}async getRefNames(t={}){return this.fine.refNames.assemblyRefNames(t)}async getRegionByteSize(t,a={}){let{walks:e,refNames:r}=this.fine;return r.regionBytes(t,a,e&&(i=>e.reader.queryStart(i,a)))}async hasDataForRefName(){return!0}getFeatures(t,a={}){return w(async e=>{let r=await this.fine.refNames.resolveMapped(t,a);if(r!==void 0){let{walks:i}=this.fine,o=g=>{e.next(g)};await(i?this.walkFeatures(i,r,t,a,o):this.segmentFeatures(r,t,a,o))}e.complete()},a.signal)}async walkFeatures(t,a,e,r,i){let o=await h("Downloading walks",r.statusCallback,()=>t.referenceNodes(a,e,r));for(let g of o){let f=String(g.id);i(new k({uniqueId:f,refName:e.refName,start:g.start,end:g.end,name:f,type:"segment",rank:0,stableName:g.refName}))}}async segmentFeatures(t,a,e,r){await h("Downloading segments",e.statusCallback,()=>d(this.fine.segments,t,a.start,a.end,{signal:e.signal,lineCallback:i=>{let{segment:o,anchored:g}=u(i);if(g&&o.refName!==t)return;let f=v(o);r(new k({uniqueId:o.id,refName:a.refName,start:o.start,end:o.end,name:o.id,type:"segment",rank:o.rank,stableName:o.refName,...f&&{samples:f,sampleCount:f.length}}))}}))}async getSubgraph(t,a={}){let{hops:e,signal:r,tier:i}=a,o=this.index(i),g=await o.refNames.resolve(t,{signal:r});if(g===void 0)throw new Error(y(t));return o.walks?o.walks.subgraph(g,t,a):G(o,{refName:g,start:t.start,end:t.end},{hops:e,signal:r})}};export{b as default};
3
- //# sourceMappingURL=RgfaTabixAdapter-ZSRYNXX7.js.map
3
+ //# sourceMappingURL=RgfaTabixAdapter-XZRTWQMZ.js.map
@@ -1,2 +1,2 @@
1
1
  import{H as i,h as o,m as a}from"./chunk-UGCNPRKC.js";import{c as r,d as e}from"./chunk-JMBDTNUR.js";var u=e(function({model:n,title:s,children:l,handleClose:m}){return r(o,{open:!0,title:s,onClose:()=>{m()},children:[l,n.trackWarnings.flatMap(({name:f,warnings:g},p)=>g.map((t,c)=>r(a,{severity:"warning",style:{marginBottom:8},children:[r(i,{variant:"subtitle2",children:[f,": ",t.message]}),t.effect]},`${p}_${c}`)))]})}),x=u;export{x as default};
2
- //# sourceMappingURL=TrackWarningsDialog-TRYBOIHX.js.map
2
+ //# sourceMappingURL=TrackWarningsDialog-CPAYIP6K.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+synteny-core@5.0.0-beta.11_@emotion+react@11.14.0_@types+react@19.3.0_react@19_62128aa7a8a5629affa9cb1a58afadc3/node_modules/@jbrowse/synteny-core/esm/TrackWarningsDialog.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+synteny-core@5.0.0-beta.11_@emotion+react@11.14.0_@types+react@19.3.0_react@19_6b83ce7782285603d64e48e3d7c0913c/node_modules/@jbrowse/synteny-core/esm/TrackWarningsDialog.js"],
4
4
  "sourcesContent": ["import { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { InfoDialog } from '@jbrowse/core/ui';\nimport { Alert, Typography } from '@mui/material';\nimport { observer } from 'mobx-react';\n/**\n * The render-warnings report both comparative views open, over the rows\n * `collectTrackWarnings` builds for them. Reads them off the view rather than\n * taking a copy, so a refetch that raises or clears a warning while the dialog\n * is open shows in it.\n *\n * Grouped by track, with the track name leading each row: a stacked view's\n * levels raise the same swapped-assemblies warning verbatim, and so does every\n * overlaid track that hits it, so an ungrouped list repeated one sentence N\n * times without ever naming the file to go fix.\n *\n * Keyed by position \u2014 the message is not an identity, and neither is the track\n * name once one track raises two warnings.\n */\nconst TrackWarningsDialog = observer(function TrackWarningsDialog({ model, title, children, handleClose, }) {\n return (_jsxs(InfoDialog, { open: true, title: title, onClose: () => {\n handleClose();\n }, children: [children, model.trackWarnings.flatMap(({ name, warnings }, i) => warnings.map((w, j) => (_jsxs(Alert\n // eslint-disable-next-line @eslint-react/no-array-index-key -- see above\n , { severity: \"warning\", style: { marginBottom: 8 }, children: [_jsxs(Typography, { variant: \"subtitle2\", children: [name, \": \", w.message] }), w.effect] }, `${i}_${j}`))))] }));\n});\nexport default TrackWarningsDialog;\n"],
5
5
  "mappings": "qGAkBA,IAAMA,EAAsBC,EAAS,SAA6B,CAAE,MAAAC,EAAO,MAAAC,EAAO,SAAAC,EAAU,YAAAC,CAAa,EAAG,CACxG,OAAQC,EAAMC,EAAY,CAAE,KAAM,GAAM,MAAOJ,EAAO,QAAS,IAAM,CAC7DE,EAAY,CAChB,EAAG,SAAU,CAACD,EAAUF,EAAM,cAAc,QAAQ,CAAC,CAAE,KAAAM,EAAM,SAAAC,CAAS,EAAGC,IAAMD,EAAS,IAAI,CAACE,EAAGC,IAAON,EAAMO,EAEvG,CAAE,SAAU,UAAW,MAAO,CAAE,aAAc,CAAE,EAAG,SAAU,CAACP,EAAMQ,EAAY,CAAE,QAAS,YAAa,SAAU,CAACN,EAAM,KAAMG,EAAE,OAAO,CAAE,CAAC,EAAGA,EAAE,MAAM,CAAE,EAAG,GAAGD,CAAC,IAAIE,CAAC,EAAE,CAAE,CAAC,CAAC,CAAE,CAAC,CAC3L,CAAC,EACMG,EAAQf",
6
6
  "names": ["TrackWarningsDialog", "observer", "model", "title", "children", "handleClose", "jsxs", "InfoDialog", "name", "warnings", "i", "w", "j", "Alert", "Typography", "TrackWarningsDialog_default"]
@@ -1,2 +1,2 @@
1
- import{a as G}from"./chunk-KEHEGRRO.js";import{a as z}from"./chunk-PJ43KEV6.js";import{b as j,d as H,e as D,f as E,g as X}from"./chunk-NWQ6NWI3.js";import{a as $}from"./chunk-KOB7YIMR.js";import{p as W,q as R,r as I}from"./chunk-T4HOC6O3.js";import"./chunk-PFAHNHMM.js";import"./chunk-VDHDEEMF.js";import{e as q,m as T,o as _}from"./chunk-HQVHNUXC.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import{a as F,c as v,d as S,g as P,h as k,i as x}from"./chunk-GUXZESDR.js";import"./chunk-E7J6SB5P.js";import"./chunk-7WIBGKBU.js";import"./chunk-OGQ6OQDN.js";import"./chunk-NDRLCGPC.js";import{o as C}from"./chunk-TENPGIPX.js";var ee=50;function te(i){let o=[];for(let e=0;e<i.length;e++){let[t,s]=i[e],[n,a]=i[e+1]??[];s===a&&s<=ee&&(t==="I"&&n==="D"||t==="D"&&n==="I")?(o.push(["X",s]),e++):o.push([t,s])}return o}function M(i){return Array.from(i.ids,(o,e)=>2*o+i.rev[e])}function K(i,o){let e=i.get(o);return e===void 0?0:e.end-e.start}function U(i){let o=new Map,e=n=>{let a=K(i,n),r=o.get(a);return r===void 0&&(r="N".repeat(a),o.set(a,r)),r},t=new Map,s=n=>{let a=t.get(n);return a===void 0&&(a=M(n),t.set(n,a)),a};return(n,a)=>R({query:s(n),target:s(a),sequenceOf:e,bases:!1})}var ae=100;function O(i,o,e){let t=i.at(-1);e>0&&(t?.[0]===o?t[1]+=e:i.push([o,e]))}function J(i){let o=t=>K(i,t>>1),e=t=>{let s=new Float64Array(t.length+1);return t.forEach((n,a)=>{s[a+1]=s[a]+o(n)}),s};return(t,s)=>{let n=M(s),a=M(t),[r,f]=W(a,n,o),[g,y]=W(a.map(u=>u^1).reverse(),n,o),l=y>f,p=l?g:r,N=Math.max(f,y);if(N<ae)return[];let h=e(n),c=e(a),b=u=>l?a.length-1-p[u][0]:p[u][0],m=[];p.forEach(([,u],w)=>{if(w>0){let[Q,V]=[b(w-1),b(w)].sort((Y,Z)=>Y-Z);O(m,"I",c[V]-c[Q+1]),O(m,"D",h[u]-h[p[w-1][1]+1])}O(m,"=",o(n[u]))});let[d,A]=[b(0),b(p.length-1)].sort((u,w)=>u-w);return[{queryStart:c[d],queryEnd:c[A+1],targetStart:h[p[0][1]],targetEnd:h[p.at(-1)[1]+1],strand:l?"-":"+",edits:m,sharedBases:N}]}}function B({chain:i,target:o,query:e,assemblyName:t,refName:s,mateAssemblyName:n}){let a=te(i.edits);return X({target:{name:o.name,assemblyName:t,refName:s,start:o.hapStart+i.targetStart,end:o.hapStart+i.targetEnd},query:{name:e.name,assemblyName:n,refName:S(e.name),start:e.hapStart+i.queryStart,end:e.hapStart+i.queryEnd},strand:i.strand,cigar:I(a),matches:a.reduce((r,[f,g])=>r+(f==="="?g:0),0),columns:a.reduce((r,[,f])=>r+f,0)})}var ne=i=>v(i.name)??i.name,L=class extends j{constructor(){super(...arguments);this.walks=new G(T(this,["walksLocation"],["walksIndex"]),this);this.refNames=new _(this.walks.file,this)}get anchor(){let e=this.getConf("assemblyNames")[0];if(e===void 0)throw new Error("WalkTabixSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as");return e}async getHaplotypeNames(e={}){return this.walks.haplotypeNames(e)}async getHeader(e={}){let{haplotypes:t}=await this.walks.reader.header(e),{anchor:s}=this,n=k(this,s),a=x(this);return{hasCoarseTier:!1,anchorAssemblyName:s,lanes:t.filter(r=>r!==n&&F(r)!==n).map(r=>({name:E(a,r),label:r,group:F(r)}))}}async getRefNames(e={}){let{assemblyName:t}=e;return t===void 0||t===this.anchor?this.refNames.assemblyRefNames({...e,assemblyName:this.anchor}):[]}async getSubgraph(e,t={}){let s=await this.refNames.resolve(e,{signal:t.signal});if(s===void 0)throw new Error(`${e.assemblyName} ${e.refName} is not in this graph's index; the graph is cut on ${this.anchor}, mapped to its PanSN prefix in assemblyNameToPanSN`);return this.walks.subgraph(s,e,t)}async laneWalks(e,t,s,n,a){return C(a,n.statusCallback,()=>this.walks.reader.cut(e,t,{...this.walks.budgets(),signal:n.signal,keep:q(s,e),links:!1}).catch(r=>{throw z(r)&&r instanceof Error&&(r.message=r.message.replace("to see the graph","to see lanes")),r}))}async anchorFeatures(e,t,s){let n=s.haplotypes?.length?s.haplotypes.map(m=>k(this,m)):void 0,a=k(this,s.targetAssemblyName),r=a===void 0?n:n===void 0||n.some(m=>P(a,m)||P(m,a))?[a]:[];if(r?.length===0)return[];let{start:f,end:g}=t,{graph:y,fragments:l}=await this.laneWalks(e,t,r,s,`Reading walks ${t.refName}:${f.toLocaleString()}-${g.toLocaleString()}`),p=J(y.nodes),N=x(this),h=l.filter(m=>m.name===e),c=m=>r===void 0?0:r.findIndex(d=>P(m.name,d));return l.filter(m=>m.name!==e&&c(m)>=0).sort((m,d)=>c(m)-c(d)).flatMap(m=>h.flatMap(d=>p(m,d).map(A=>B({chain:A,target:d,query:m,assemblyName:t.assemblyName,refName:t.refName,mateAssemblyName:E(N,ne(m))}))))}async pairFeatures(e,t,s,n){let a=s.map(l=>({pair:l,featurePrefix:k(this,l.queryAssemblyName),matePrefix:k(this,l.targetAssemblyName)})),{graph:r,fragments:f}=await this.laneWalks(e,t,a.flatMap(l=>[l.featurePrefix,l.matePrefix]),n,D(s)),g=U(r.nodes),y=l=>f.filter(p=>P(p.name,l));return a.flatMap(({pair:l,featurePrefix:p,matePrefix:N})=>y(p).flatMap(h=>y(N).flatMap(c=>g(c,h).map(b=>B({chain:b,target:h,query:c,assemblyName:l.queryAssemblyName,refName:S(h.name),mateAssemblyName:l.targetAssemblyName})))))}getFeatures(e,t={}){return $(async s=>{let n=e.assemblyName===this.anchor?await this.refNames.resolve(e,t):void 0;if(n!==void 0){let a=H(t),r=a.length>0?await this.pairFeatures(n,e,a,t):await this.anchorFeatures(n,e,t);for(let f of r)s.next(f)}s.complete()},t.signal)}};export{L as default};
2
- //# sourceMappingURL=WalkTabixSyntenyAdapter-DMLJF27U.js.map
1
+ import{a as G}from"./chunk-ZNT7TQLN.js";import{a as z}from"./chunk-PJ43KEV6.js";import{b as j,d as H,e as D,f as E,g as X}from"./chunk-U4U5ZOCH.js";import{a as $}from"./chunk-KOB7YIMR.js";import{p as W,q as R,r as I}from"./chunk-T4HOC6O3.js";import"./chunk-PFAHNHMM.js";import"./chunk-VDHDEEMF.js";import{e as q,m as T,o as _}from"./chunk-EDSIYH4H.js";import"./chunk-YBLNN5FU.js";import"./chunk-MVVXRZXV.js";import{a as F,c as v,d as S,g as P,h as k,i as x}from"./chunk-GUXZESDR.js";import"./chunk-T4R3ZVEM.js";import"./chunk-7WIBGKBU.js";import"./chunk-OGQ6OQDN.js";import"./chunk-NDRLCGPC.js";import{o as C}from"./chunk-TENPGIPX.js";var ee=50;function te(i){let o=[];for(let e=0;e<i.length;e++){let[t,s]=i[e],[n,a]=i[e+1]??[];s===a&&s<=ee&&(t==="I"&&n==="D"||t==="D"&&n==="I")?(o.push(["X",s]),e++):o.push([t,s])}return o}function M(i){return Array.from(i.ids,(o,e)=>2*o+i.rev[e])}function K(i,o){let e=i.get(o);return e===void 0?0:e.end-e.start}function U(i){let o=new Map,e=n=>{let a=K(i,n),r=o.get(a);return r===void 0&&(r="N".repeat(a),o.set(a,r)),r},t=new Map,s=n=>{let a=t.get(n);return a===void 0&&(a=M(n),t.set(n,a)),a};return(n,a)=>R({query:s(n),target:s(a),sequenceOf:e,bases:!1})}var ae=100;function O(i,o,e){let t=i.at(-1);e>0&&(t?.[0]===o?t[1]+=e:i.push([o,e]))}function J(i){let o=t=>K(i,t>>1),e=t=>{let s=new Float64Array(t.length+1);return t.forEach((n,a)=>{s[a+1]=s[a]+o(n)}),s};return(t,s)=>{let n=M(s),a=M(t),[r,f]=W(a,n,o),[g,y]=W(a.map(u=>u^1).reverse(),n,o),l=y>f,p=l?g:r,N=Math.max(f,y);if(N<ae)return[];let h=e(n),c=e(a),b=u=>l?a.length-1-p[u][0]:p[u][0],m=[];p.forEach(([,u],w)=>{if(w>0){let[Q,V]=[b(w-1),b(w)].sort((Y,Z)=>Y-Z);O(m,"I",c[V]-c[Q+1]),O(m,"D",h[u]-h[p[w-1][1]+1])}O(m,"=",o(n[u]))});let[d,A]=[b(0),b(p.length-1)].sort((u,w)=>u-w);return[{queryStart:c[d],queryEnd:c[A+1],targetStart:h[p[0][1]],targetEnd:h[p.at(-1)[1]+1],strand:l?"-":"+",edits:m,sharedBases:N}]}}function B({chain:i,target:o,query:e,assemblyName:t,refName:s,mateAssemblyName:n}){let a=te(i.edits);return X({target:{name:o.name,assemblyName:t,refName:s,start:o.hapStart+i.targetStart,end:o.hapStart+i.targetEnd},query:{name:e.name,assemblyName:n,refName:S(e.name),start:e.hapStart+i.queryStart,end:e.hapStart+i.queryEnd},strand:i.strand,cigar:I(a),matches:a.reduce((r,[f,g])=>r+(f==="="?g:0),0),columns:a.reduce((r,[,f])=>r+f,0)})}var ne=i=>v(i.name)??i.name,L=class extends j{constructor(){super(...arguments);this.walks=new G(T(this,["walksLocation"],["walksIndex"]),this);this.refNames=new _(this.walks.file,this)}get anchor(){let e=this.getConf("assemblyNames")[0];if(e===void 0)throw new Error("WalkTabixSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as");return e}async getHaplotypeNames(e={}){return this.walks.haplotypeNames(e)}async getHeader(e={}){let{haplotypes:t}=await this.walks.reader.header(e),{anchor:s}=this,n=k(this,s),a=x(this);return{hasCoarseTier:!1,anchorAssemblyName:s,lanes:t.filter(r=>r!==n&&F(r)!==n).map(r=>({name:E(a,r),label:r,group:F(r)}))}}async getRefNames(e={}){let{assemblyName:t}=e;return t===void 0||t===this.anchor?this.refNames.assemblyRefNames({...e,assemblyName:this.anchor}):[]}async getSubgraph(e,t={}){let s=await this.refNames.resolve(e,{signal:t.signal});if(s===void 0)throw new Error(`${e.assemblyName} ${e.refName} is not in this graph's index; the graph is cut on ${this.anchor}, mapped to its PanSN prefix in assemblyNameToPanSN`);return this.walks.subgraph(s,e,t)}async laneWalks(e,t,s,n,a){return C(a,n.statusCallback,()=>this.walks.reader.cut(e,t,{...this.walks.budgets(),signal:n.signal,keep:q(s,e),links:!1}).catch(r=>{throw z(r)&&r instanceof Error&&(r.message=r.message.replace("to see the graph","to see lanes")),r}))}async anchorFeatures(e,t,s){let n=s.haplotypes?.length?s.haplotypes.map(m=>k(this,m)):void 0,a=k(this,s.targetAssemblyName),r=a===void 0?n:n===void 0||n.some(m=>P(a,m)||P(m,a))?[a]:[];if(r?.length===0)return[];let{start:f,end:g}=t,{graph:y,fragments:l}=await this.laneWalks(e,t,r,s,`Reading walks ${t.refName}:${f.toLocaleString()}-${g.toLocaleString()}`),p=J(y.nodes),N=x(this),h=l.filter(m=>m.name===e),c=m=>r===void 0?0:r.findIndex(d=>P(m.name,d));return l.filter(m=>m.name!==e&&c(m)>=0).sort((m,d)=>c(m)-c(d)).flatMap(m=>h.flatMap(d=>p(m,d).map(A=>B({chain:A,target:d,query:m,assemblyName:t.assemblyName,refName:t.refName,mateAssemblyName:E(N,ne(m))}))))}async pairFeatures(e,t,s,n){let a=s.map(l=>({pair:l,featurePrefix:k(this,l.queryAssemblyName),matePrefix:k(this,l.targetAssemblyName)})),{graph:r,fragments:f}=await this.laneWalks(e,t,a.flatMap(l=>[l.featurePrefix,l.matePrefix]),n,D(s)),g=U(r.nodes),y=l=>f.filter(p=>P(p.name,l));return a.flatMap(({pair:l,featurePrefix:p,matePrefix:N})=>y(p).flatMap(h=>y(N).flatMap(c=>g(c,h).map(b=>B({chain:b,target:h,query:c,assemblyName:l.queryAssemblyName,refName:S(h.name),mateAssemblyName:l.targetAssemblyName})))))}getFeatures(e,t={}){return $(async s=>{let n=e.assemblyName===this.anchor?await this.refNames.resolve(e,t):void 0;if(n!==void 0){let a=H(t),r=a.length>0?await this.pairFeatures(n,e,a,t):await this.anchorFeatures(n,e,t);for(let f of r)s.next(f)}s.complete()},t.signal)}};export{L as default};
2
+ //# sourceMappingURL=WalkTabixSyntenyAdapter-AIC3W7FL.js.map
@@ -1,2 +1,2 @@
1
- import{a as X,b as ut}from"./chunk-FME624X3.js";import{a as et,b as tt,c as te,d as nt,e as ot,f as ne,h as rt,i as at,j as it,k as st,m as oe,n as lt,o as dt,p as ft,r as ht,t as mt,u as gt}from"./chunk-K7ZCYIXI.js";import{O as Ue,P as Je,S as ue,U as Qe,V as ct,W as pt,a as x,d as Te,i as Ne,j as We,k as Oe,l as De,m as J,n as Xe,o as Be,x as Fe,y as Ze}from"./chunk-UD4NSJBX.js";import{n as D}from"./chunk-HLKZCTQ3.js";import{E as ze,Fb as N,Jb as ce,L as _e,Lb as pe,M as Ve,N as Ye,Nb as ee,a as V,b as be,da as le,dc as qe,ha as Q,la as je,na as Ke,x as Ae,xa as $e}from"./chunk-EEUKM4TK.js";import{k as He}from"./chunk-III4GT4G.js";import{e as I}from"./chunk-NDRLCGPC.js";import{j as $}from"./chunk-TENPGIPX.js";import{d as G,e as Ie,f as Ge,g as k,h as R}from"./chunk-YU7T5WOQ.js";import{D as Ee,G as U,H as Y,b as we,c as xe,e as se,k as Se,o as Pe,p as Me,s as ke,v as q,w as Re,y as Ce,z as Le}from"./chunk-UGCNPRKC.js";import{a as L,b as n,c as f,d as h}from"./chunk-JMBDTNUR.js";var W=JBrowseExports["@jbrowse/render-core/useRenderingBackend"],ln=t=>W!=null&&t in Object(W)?W[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/render-core/useRenderingBackend' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var vt=ln("useRenderingBackend"),lo=W&&W.__esModule?W.default:W;var de=tt(1);function fe({model:t}){let[e,o]=R(null);return G(()=>{if(!e)return;let i=new N(e),a=V(()=>{$e(qe()),i.resize(t.paneWidth,t.canvasHeight),t.paintHover(i,t.drawnBatch)});return()=>{a(),i.dispose()}},[e,t]),n("canvas",{ref:o,"data-testid":"graph-hover-layer",style:de})}var yt={background:"rgba(255,255,255,0.82)",padding:"3px 6px",fontSize:11,lineHeight:"15px",whiteSpace:"nowrap"},re={display:"flex",alignItems:"center",gap:5},bt={color:"#666"};function ae({row:t,at:e,hint:o,after:i}){return t.swatch?f("div",{title:[t.title,o].filter(Boolean).join(" \xB7 ")||void 0,children:[f("div",{style:re,children:[n(oe,{swatch:t.swatch}),f("span",{children:[t.strong?n("strong",{children:t.strong}):null,t.label]}),i]}),e?n("div",{"data-testid":"graph-walk-at",children:e}):t.under?n("div",{children:t.under}):null]}):n("div",{style:bt,children:t.label})}var cn={pointerEvents:"auto",cursor:"pointer",border:"none",background:"none",padding:"0 2px",font:"inherit",textDecoration:"underline"},wt=h(function({model:e}){return n(L,{children:st(e).map(({testid:o,rows:i})=>n("div",{style:yt,"data-testid":o,children:i.map(a=>n(ae,{row:a,at:a.walk?e.hoveredOn(a.walk):void 0,after:a.closesBubble?n("button",{type:"button",style:cn,"data-testid":"graph-close-bubble",onClick:()=>{e.closeBubbles()},children:"close"}):null},a.key))},o))})});var pn={position:"absolute",left:0,top:0,zIndex:4,display:"grid",gap:Ve,lineHeight:"normal"},un={height:Ye,padding:"2px 6px",boxSizing:"border-box",fontFamily:"inherit",fontSize:11,color:"inherit",cursor:"pointer",border:"none",background:"none",textAlign:"left",display:"block"},dn={position:"relative"},fn={gridColumn:"1 / -1",height:Je,padding:"2px 6px",boxSizing:"border-box",display:"flex",gap:14,fontSize:11,lineHeight:"15px"},hn=h(function({model:e,lift:o,width:i,height:a,cell:p,handlers:c,canvasStyle:l}){let[s,d]=R(null),[y,w]=R(null),E=o.walks[0];G(()=>{if(!s||!y)return;let T=new N(s),A=new N(y),O=be(()=>e.buildDrawing(o,!1)),B,F=[V(()=>{let M=e.facetGrid;M&&T.resize(M.width,M.height);let H=O.get();H&&(H!==B&&(T.uploadGeometry(H.batch),B=H),e.applySelection(T),e.paint(T))}),V(()=>{let M=e.facetGrid;M&&A.resize(M.width,M.height);let H=O.get();H&&e.paintHover(A,H.batch)})];return()=>{for(let M of F)M();T.dispose(),A.dispose()}},[s,y,e,o]);let z=e.walkLabel(E.name);return f("div",{style:p,children:[n("button",{type:"button",style:un,"data-testid":"graph-facet-title",onClick:()=>{e.liftWalks([E.name]),e.setFacet("")},children:n(ae,{row:at(e,E),hint:`click to lift ${z} alone`,at:e.hoveredOn(E)})}),f("div",{style:dn,children:[n("canvas",{ref:d,"data-testid":"graph-facet-canvas",style:{...l,width:i,height:a,display:"block"},...c}),n("canvas",{ref:w,style:de})]})]})}),mn=h(function({model:e,handlers:o,canvasStyle:i}){let a=e.facetPanels,p=e.facetGrid,c=e.facetPlacement;if(!a||!p||!c)return null;let{columns:l,width:s,height:d}=p;return f("div",{"data-testid":"graph-facet-panels",style:{...pn,width:e.paneWidth,minHeight:e.canvasHeight,gridTemplateColumns:`repeat(${l}, ${s}px)`,background:Q},children:[a.map((y,w)=>n(hn,{model:e,lift:y,width:s,height:d,cell:{gridRow:Math.floor(c.cells[w]/l)+1,gridColumn:c.cells[w]%l+1},handlers:o,canvasStyle:i},y.walks[0].name)),n("div",{style:{...fn,gridRow:Math.floor(Math.max(...c.cells)/l)+2},"data-testid":"graph-facet-key",children:it(e).map(y=>n(ae,{row:y},y.key))})]})}),xt=mn;var St=x(n("path",{d:"M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2m2 10H3v4c0 1.1.9 2 2 2h4v-2H5zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2"}),"CropFree");var Pt=x([n("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"},"0"),n("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"},"1")],"ZoomIn");var Mt=x(n("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z"}),"ZoomOut");var gn=h(function({model:e}){let o=e.colorSchemeLock;return n(X,{label:"Color",size:"small",sx:{minWidth:100},disabled:o!==void 0,title:o?.why,shown:o?.value,value:e.chosenColorScheme,options:Fe.map(({value:i})=>({value:i,label:e.colorSchemeLabel(i)})),testId:"graph-color-select",onChange:i=>{e.setColorScheme(i)}})}),kt=gn;var Rt=D()({stats:{marginLeft:"auto"},perf:{color:"#888",fontVariantNumeric:"tabular-nums"}});function he(t){return t===void 0?"\u2013":`${Math.round(t)}ms`}var vn=h(function({model:e}){let{classes:o}=Rt(),{lastFetchMs:i,lastLayoutMs:a,lastGeometryMs:p}=e,c=i!==void 0||a!==void 0||p!==void 0;return e.showPerf&&c?f(Y,{variant:"caption",className:o.perf,"data-testid":"graph-perf-stats",children:["fetch ",he(i)," \xB7 layout ",he(a)," \xB7 geom"," ",he(p)]}):null}),yn=h(function({model:e}){let{classes:o}=Rt();return f("div",{className:o.stats,"data-testid":"graph-stats","data-node-count":e.nodeCount,"data-edge-count":e.edgeCount,"data-path-count":e.pathCount,"data-fetch-ms":e.lastFetchMs??"","data-layout-ms":e.lastLayoutMs??"","data-geometry-ms":e.lastGeometryMs??"","data-geometry-strokes":e.lastGeometryStrokeCount??"",children:[f(Y,{variant:"body2",component:"span",children:[e.nodeCount," nodes, ",e.edgeCount," edges",e.pathCount>0?`, ${e.pathCount} paths`:""]})," ",n(vn,{model:e})]})}),Ct=yn;var bn=h(function({model:e}){let{graph:o}=e;return n(X,{label:"Layout",size:"small",sx:{minWidth:140},testId:"graph-layout-select",value:e.chosenLayoutMode,options:Te.map(({value:i,label:a,description:p,available:c})=>({value:i,label:a,description:p,disabled:o?!c(o):!1})),onChange:i=>{e.switchLayout(i)}})}),Lt=bn;var wn=h(function({model:e}){return e.chosenLayoutMode!=="walkrows"||e.repeatChoices.length===0?null:n(X,{label:"Repeat",size:"small",sx:{minWidth:130,maxWidth:260},testId:"graph-repeat-select",value:e.selectedRepeat?.key??"",options:e.repeatOptions,onChange:o=>{e.setRepeatKey(o)}})}),Et=wn;var It=x(n("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");var Gt=x(n("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreVert");var xn=h(function({model:e}){let o=e.highlightMenuItems({picks:!1});return n(we,{size:"small",tooltip:"Graph options",menuItems:[...o.length>0?[{label:"Haplotypes",icon:ct,subMenu:o}]:[],...e.layoutOptionMenuItems({repeat:!1}),{label:"Show...",icon:Ze,subMenu:[...e.showMenuItems(),...e.modeDrawsNodes&&e.walkChoices.length>1?[{type:"checkbox",label:"Show walk rows under the graph",checked:e.walkStrip,onClick:()=>{e.setWalkStrip(!e.walkStrip)}}]:[],{type:"checkbox",label:"Show timings",checked:e.showPerf,onClick:()=>{e.setShowPerf(!e.showPerf)}}]},{type:"divider"},{label:"Graph settings...",icon:pt,helpText:"Subgraph node limit; node width and path colors; the force-directed layout engine",onClick:()=>{$(e).queueDialog(i=>[ut,{model:e,onClose:i}])}},{type:"divider"},{label:"Close graph",icon:It,onClick:()=>{e.clearGraph()}}],children:n(Gt,{})})}),Tt=xn;var Sn=D()({formControl:{minWidth:130,maxWidth:260}}),Pn=h(function({model:e}){let{classes:o}=Sn(),i=Ie(),{walkChoices:a}=e;if(a.length===0||!e.liftsWalks)return null;let p=new Set(a.map(s=>s.name)),c=new Map(a.map(s=>[s.name,s.label])),l=e.walkLayers.map(s=>s.walk).filter(s=>p.has(s));return a.length>Ke?n(Pe,{size:"small",variant:"outlined",color:"inherit","data-testid":"graph-walk-choose",onClick:()=>{$(e).queueDialog(s=>[je,{model:e,onClose:s}])},children:l.length>0?`${l.length} of ${a.length} haplotypes`:"Highlight haplotypes..."}):f(ke,{size:"small",className:o.formControl,children:[n(Re,{id:i,children:"Highlight"}),n(Ee,{labelId:i,multiple:!0,value:l,label:"Highlight","data-testid":"graph-walk-select",renderValue:s=>s.map(d=>c.get(d)).join(", "),onChange:s=>{let{value:d}=s.target;e.liftAmongChoices(typeof d=="string"?d.split(","):d)},children:a.map(({name:s,label:d})=>f(Le,{value:s,dense:!0,children:[n(Me,{size:"small",checked:l.includes(s)}),n(Ce,{primary:d})]},s))})]})}),Ht=Pn;var Mn=D()({toolbar:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,padding:"2px 4px",borderBottom:"1px solid #ddd"}}),kn=h(function({model:e}){return n(Y,{variant:"body2",children:e.zoomPercent})}),Rn=h(function({model:e}){let{classes:o}=Mn(),i=a=>{e.zoom(a,e.viewBox.width/2,e.viewBox.height/2)};return f("div",{className:o.toolbar,children:[n(Lt,{model:e}),n(kt,{model:e}),n(Ht,{model:e}),n(Et,{model:e}),n(U,{title:"Zoom in",children:n(q,{size:"small",onClick:()=>{i(1.5)},children:n(Pt,{})})}),n(U,{title:"Zoom out",children:n(q,{size:"small",onClick:()=>{i(1/1.5)},children:n(Mt,{})})}),n(U,{title:"Zoom to fit",children:n(q,{size:"small",onClick:()=>{e.refitView()},children:n(St,{})})}),n(kn,{model:e}),n(Ct,{model:e}),n(Tt,{model:e})]})}),At=Rn;var Cn={position:"absolute",bottom:Ue,lineHeight:"normal",background:"rgba(0,0,0,0.75)",color:"white",padding:"4px 8px",borderRadius:4,fontSize:12,pointerEvents:"none",zIndex:6};function me({label:t,readout:e}){return f(L,{children:[n("strong",{children:t})," \u2014 ",e]})}function Ln(t,e){if(e)return{testId:"graph-chip-tooltip",body:me(e)};let o=t.hoveredNode?t.hoverNodeById?.get(t.hoveredNode):void 0;if(o){let c=t.hoverDrawing?.members.get(o.id),l=Be(o);return{body:f(L,{children:[n("strong",{children:o.name}),c?` and ${c.length-1} more`:""," \u2014"," ",o.length.toLocaleString()," bp, depth ",o.depth.toFixed(1),l?f(L,{children:[n("br",{}),l.sample," ",J(l)," (rank ",o.stable?.rank,")"]}):null]})}}let i=t.hoveredEdge===null?void 0:t.graph?.edges[t.hoveredEdge];if(i){let c=Xe(i,t.deletions.find(l=>l.edgeIndex===t.hoveredEdge),l=>t.nodeById?.get(l)?.name??l);return{body:c.deletion?f(L,{children:[n("strong",{children:"Deletion"})," ",c.deletion.bp,n("br",{}),c.deletion.where]}):f(L,{children:["Edge: ",c.ends]})}}let a=t.hoveredWalkRowText;if(a)return{testId:"graph-walk-row-tooltip",body:me(a)};let p=t.hoveredTubeText;return p?{testId:"graph-tube-tooltip",body:me(p)}:void 0}var En=h(function({model:e,chip:o}){let i=Ln(e,o);return i?n("div",{style:{...Cn,right:e.tooltipRightPx},"data-testid":i.testId,children:i.body}):null}),zt=En;var _t=x(n("path",{d:"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z"}),"FilterList");var Nt=x(n("path",{d:"M10.83 8H21V6H8.83zm5 5H18v-2h-4.17zM14 16.83V18h-4v-2h3.17l-3-3H6v-2h2.17l-3-3H3V6h.17L1.39 4.22 2.8 2.81l18.38 18.38-1.41 1.41z"}),"FilterListOff");var Wt=x(n("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info");var In={x:0,y:0};function Gn(t,e){let{own:o,reference:i,highlight:a}=t.nodeLaunchTargets(e);return[{label:"Node details",icon:Wt,onClick:()=>{t.showNodeDetails(e)}},...Qe({own:o,reference:i,highlight:a,onShowLinear:p=>{t.showInLinearView(p)},onHighlight:t.canHighlightInLinearView?p=>{t.highlightInLinearView(p)}:void 0})]}function Tn(t,e,o){let i=o??t.walkRowBars,a=t.walkRowLaunchTarget(e,i),p=a?.assembly,c=e>0?i?.rows[e-1]:void 0,l=c?.sample,s=!o&&t.walkRowBars,d=t.walkRowSamples;return[a&&p?{label:`Linear genome view \u2014 ${p} ${J(a.location)}`,icon:ue,onClick:()=>{t.showInLinearView({location:a.location,assembly:p})}}:{label:"Linear genome view",icon:ue,disabled:!0,disabledHelpText:a?`No assembly in this session is ${a.location.haplotype??a.label}`:"This walk states no contig coordinates",onClick:()=>{}},...c&&t.liftsWalks&&t.modeDrawsNodes?[{type:"checkbox",label:`Highlight ${c.label}`,checked:t.walkLayers.some(y=>y.walk===c.name),onClick:()=>{t.toggleWalk(c.name)}}]:[],...s&&l&&!(d?.length===1&&d[0]===l)?[{label:`Show only ${l}`,icon:_t,onClick:()=>{t.setWalkRowSamples([l])}}]:[],...s&&d?[{label:"Show every sample",icon:Nt,onClick:()=>{t.setWalkRowSamples(void 0)}}]:[]]}function Z({model:t,at:e,onClose:o}){return n(xe,{anchor:e,offset:In,onClose:o,menuItems:()=>e===void 0?[]:"nodeId"in e?Gn(t,e.nodeId):Tn(t,e.row,e.bars)})}var Hn={display:"flex",flexWrap:"wrap",gap:"2px 14px",padding:"2px 8px 6px",fontSize:11,color:"#333"},An={position:"absolute",pointerEvents:"none",background:"rgba(255,255,255,0.92)",border:"1px solid #ccc",borderRadius:3,padding:"1px 6px",fontSize:11,whiteSpace:"nowrap",zIndex:4},zn=h(function({bars:e,frame:o,ramp:i,rowGenes:a}){let p=ot(),c=Ge(()=>_e(e,o,{ramp:i,rowGenes:a,idPrefix:p}),[e,o,i,a,p]);return n(ne,{el:c})}),_n=h(function({model:e}){let o=e.walkStripRows,i=e.walkStripFrame,a=e.stripHover,p=o?[o.reference,...o.rows]:[],c=a?p.findIndex(y=>y.name===a.row):-1,l=p[c];if(!o||!i||i.labelled||!a||!l)return null;let s=(o.origin+a.offset)*i.scaleX+i.translateX,d=s>i.width/2?{right:i.width-s+12}:{left:s+12};return f("div",{"data-testid":"graph-walk-strip-tip",style:{...An,...d,top:c*i.rowPx+i.translateY-18},children:[l.label," \xB7"," ",Ae(l,c===0?void 0:o.reference)]})}),Nn=h(function({model:e,bars:o,frame:i}){return n(ne,{el:We(o,i,e.walkStripMarks)})}),Wn=h(function({model:e}){let o=e.walkStripRows,i=e.walkStripFrame,[a,p]=R();if(!o||!i)return null;let c=s=>{let d=s.currentTarget.getBoundingClientRect();return Ne(o,i,s.clientX-d.left,s.clientY-d.top)},l=ze(o,{ramp:e.referenceRampDomain,rampCss:He,genes:De(i,e.walkRowGenes,e.walkRowGeneGaps)});return f("div",{"data-testid":"graph-walk-strip",style:{position:"relative",borderTop:"1px solid #ddd"},onMouseEnter:()=>{e.setPointerInPane(!0)},onMouseLeave:()=>{I(e)&&(e.setPointerInPane(!1),e.setStripHover(null))},children:[f("svg",{width:i.width,height:i.height,style:{display:"block"},onMouseMove:s=>{let d=c(s);s.currentTarget.style.cursor=d&&d.index>0?"pointer":"",e.setStripHover(d?{row:d.row.name,offset:d.offset}:null)},onClick:s=>{let d=c(s);d&&d.index>0&&e.toggleWalk(d.row.name)},onContextMenu:s=>{let d=c(s);d&&(s.preventDefault(),p({clientX:s.clientX,clientY:s.clientY,row:d.index}))},children:[n(zn,{bars:o,frame:i,ramp:e.referenceRampDomain,rowGenes:e.walkRowGenes}),n(Nn,{model:e,bars:o,frame:i}),n(ne,{el:Oe(o,i,new Set(e.walkLayers.map(s=>s.walk)))})]}),n(_n,{model:e}),f("div",{style:Hn,"data-testid":"graph-walk-strip-key",children:[l.map(s=>f("div",{style:re,children:[n(oe,{swatch:rt(s.swatch)}),n("span",{children:s.label})]},s.label)),n("span",{style:{color:"#777"},children:"Ticks mark where each walk passes the node under the pointer; click a haplotype's bar to lift its walk"})]}),n(Z,{model:e,at:a&&{...a,bars:o},onClose:()=>{p(void 0)}})]})}),Ot=Wn;var On=h(function({model:e}){let o=e.walkStripLocator;return o?f(te,{model:e,zIndex:4,overflow:"visible",testId:"graph-walk-strip-locator",children:[n("circle",{cx:o.x,cy:o.y,r:11,fill:"none",stroke:"white",strokeWidth:4}),n("circle",{cx:o.x,cy:o.y,r:11,fill:"none",stroke:"#111",strokeWidth:1.75})]}):null}),Dt=On;var Dn=1.1,Xn=100,Bn=40,Fn=800,Vn=10,Xt=2;function ge(t){let e=t.deltaY*(t.deltaMode===1?Bn:t.deltaMode===2?Fn:1),o=(t.ctrlKey?Vn:1)*e/Xn;return Dn**-Math.max(-Xt,Math.min(Xt,o))}var Yn=40,Zn=100,jn=24,Bt=Math.log(16);function Kn(t,e){let o=t*Math.exp(-e/jn);return Math.abs(o)<.001?t:t-o}function $n(t,e){let o=Math.abs(t.deltaX)>Math.abs(t.deltaY);return t.ctrlKey||t.metaKey||!o&&(!e||e.scrollZoom)?"zoom":o?"pan":"page"}function Yt(t,e,o){G(()=>{if(!t)return;let i=-1/0,a={backlog:0,x:0,y:0,frame:0,last:0},p=l=>{let s=Kn(a.backlog,Math.min(100,l-a.last));a.backlog-=s,a.last=l,a.frame=a.backlog?requestAnimationFrame(p):0,I(o)&&o.zoom(Math.exp(s),a.x,a.y)},c=l=>{if(o.hostPlacesX||o.followsHostView)return;let y=((l.target instanceof Element?l.target.closest("canvas"):null)??(o.facetPanels?null:e))?.getBoundingClientRect();if(y&&l.clientY-y.top<o.referenceStripZonePx)return;let w=$n(l,o.host);if(w!=="page"){if(o.host&&l.stopPropagation(),l.preventDefault(),w==="pan"){if(l.timeStamp-i>Zn){let E=l.deltaMode===1?Yn:1;o.setTransform(o.scale,o.translateX-l.deltaX*E,o.translateY)}return}i=l.timeStamp,y&&(a.x=l.clientX-y.left,a.y=l.clientY-y.top,a.backlog=Math.max(-Bt,Math.min(Bt,a.backlog+Math.log(ge(l)))),a.frame||(a.last=performance.now()-1e3/60,a.frame=requestAnimationFrame(p)))}};return t.addEventListener("wheel",c,{passive:!1}),()=>{cancelAnimationFrame(a.frame),t.removeEventListener("wheel",c)}},[t,e,o])}var Ft=3,ve="data-gesture-owner",j=t=>({x:t.clientX,y:t.clientY});function Vt(t){let[e,o]=[...t.values()];return{spread:Math.hypot(e.x-o.x,e.y-o.y),mid:{x:(e.x+o.x)/2,y:(e.y+o.y)/2}}}function Zt(t){let e=k({x:0,y:0}),o=k({x:0,y:0}),i=k(!1),a=k(void 0),p=r=>a.current!==void 0&&r.pointerId!==a.current,c=k(new Map),l=k(null),s=k(null),d=k(!1),y=k(!1),w=k({frame:0,pan:null,hover:null,pinch:!1});G(()=>()=>{cancelAnimationFrame(w.current.frame)},[]);let[E,z]=R(),[T,A]=R(!1),[O,B]=R(void 0);function F(r){let u=r.currentTarget.getBoundingClientRect();return{x:r.clientX-u.left,y:r.clientY-u.top}}function M(r,u){if(t.layoutResult?.tubeMap)return t.tubeMapNodeAt(r,u);let m=t.referenceStripNodeAt(r,u);if(m)return m;let{nodePositions:g}=t;if(!g)return null;let{x:v,y:b}=le(r,u,t,t.axisScale);return ce(g,v,b,t.axisScale,t.positionsVersion,t.nodeInk)}function H(r,u){let{nodePositions:m,graph:g}=t;if(!m||!g)return null;let{x:v,y:b}=le(r,u,t,t.axisScale);return pe(m,g,v,b,t.axisScale,t.effectiveDrawPaths&&!t.facetPanels,t.positionsVersion,t.deletionEdgeIndexes,t.hiddenEdgeIndexes,t.deletionRoutes,t.layoutResult?.stranded)}function $t(r){r.button===0&&r.preventDefault()}function qt(r){if(r.button!==0)return;let u=c.current;if(p(r)){t.isPanning&&!y.current&&r.pointerType==="touch"&&u.size===1&&(r.currentTarget.setPointerCapture(r.pointerId),u.set(r.pointerId,j(r)),s.current=Vt(u),i.current=!0);return}i.current=!1,o.current={x:r.clientX,y:r.clientY},r.currentTarget.removeAttribute(ve);let m=t.followsHostView;if(t.hostPlacesX||m&&r.shiftKey)return;r.currentTarget.setPointerCapture(r.pointerId),a.current=r.pointerId,l.current=r.currentTarget,u.clear(),u.set(r.pointerId,j(r));let{x:g,y:v}=F(r),b=v<t.referenceStripZonePx,S=t.layoutResult?.tubeMap||b?null:M(g,v);m&&S&&r.currentTarget.setAttribute(ve,""),y.current=m,d.current=b&&!m,S?t.setDraggingNode(S):t.setPanning(!0),e.current={x:r.clientX,y:r.clientY}}function ye(){let r=s.current,u=l.current;if(!r||!u)return;let m=Vt(c.current),g=u.getBoundingClientRect();r.spread>0&&m.spread>0&&t.zoom(m.spread/r.spread,r.mid.x-g.left,r.mid.y-g.top),t.setTransform(t.scale,t.translateX+m.mid.x-r.mid.x,t.translateY+m.mid.y-r.mid.y),s.current=m}function Ut(){let r=w.current,{pan:u,hover:m,pinch:g}=r;if(r.frame=0,r.pan=null,r.hover=null,r.pinch=!1,g&&ye(),u&&d.current?t.host?.horizontalScroll(-u.dx):u&&y.current?t.setTransform(t.scale,t.translateX,t.translateY+u.dy):u&&t.setTransform(t.scale,t.translateX+u.dx,t.translateY+u.dy),!m)return;let{x:v,y:b}=m,S=t.facetPanels?void 0:dt(t.overlayLabels,v,b);B(P=>P?.label===S?.label&&P?.readout===S?.readout?P:S);let C=t.walkRowBars;if(C){let P=t.walkRowAt(v,b);t.setHoveredWalkRow(P===void 0?null:[C.reference,...C.rows][P].name)}if(t.nodePositions&&t.graph){let P=M(v,b);t.setHoveredPanel(t.tubeMapPanelAt(b)),t.setHoveredNode(P,{x:v,y:b}),A(P!==null&&!t.hostPlacesX&&!t.layoutResult?.tubeMap&&b>=t.referenceStripZonePx),t.setHoveredTube(P===null&&t.layoutResult?.tubeMap?t.tubeAt(v,b):null),t.setHoveredEdge(P||t.layoutResult?.tubeMap||!t.hoverLightsEverything?null:H(v,b))}}function K(){w.current.frame||(w.current.frame=requestAnimationFrame(Ut))}function Jt(){let r=w.current;cancelAnimationFrame(r.frame),r.frame=0,r.pan=null,r.hover=null,r.pinch=!1}function Qt(r){let u=c.current;if(s.current&&u.has(r.pointerId)){u.set(r.pointerId,j(r)),w.current.pinch=!0,K();return}if(p(r))return;let m=r.clientX-e.current.x,g=r.clientY-e.current.y;e.current={x:r.clientX,y:r.clientY},Math.hypot(r.clientX-o.current.x,r.clientY-o.current.y)>Ft&&(i.current=!0);let v=w.current;if(t.draggingNode)t.moveNode(t.draggingNode,m/t.scaleX,g/t.scaleY);else if(t.isPanning)v.pan={dx:(v.pan?.dx??0)+m,dy:(v.pan?.dy??0)+g},K();else{let b=r.currentTarget.getBoundingClientRect();v.hover={x:r.clientX-b.left,y:r.clientY-b.top},K()}}function ie(r){let u=c.current;if(s.current&&u.has(r.pointerId)){w.current.pinch&&(w.current.pinch=!1,ye()),u.delete(r.pointerId),s.current=null;let[[m,g]]=[...u];a.current=m,e.current=g;return}p(r)||(a.current=void 0,u.clear(),I(t)&&t.stopDragging())}function en(r){p(r)||(a.current=void 0,c.current.clear(),s.current=null,Jt(),B(void 0),A(!1),I(t)&&(t.stopDragging(),t.clearHover()))}function tn(r){let{x:u,y:m}=F(r),g=M(u,m),{clientX:v,clientY:b}=r;if(g){r.preventDefault(),z({clientX:v,clientY:b,nodeId:g});return}let S=t.walkRowAt(u,m);S!==void 0&&(r.preventDefault(),z({clientX:v,clientY:b,row:S}))}function nn(r){if(!i.current){let{x:u,y:m}=F(r),g=M(u,m);t.setSelectedNode(g),g&&t.showNodeDetails(g)}}let _=k(null);G(()=>()=>{_.current?.end()},[]);function on(r){if(r.button!==0||t.hostPlacesX||t.followsHostView||!(r.target instanceof Element)||!r.target.closest(`[${et}]`))return;_.current?.end();let u=r.pointerId,m=j(r),g=m,v={moved:!1,end:()=>{window.removeEventListener("pointermove",b,!0),window.removeEventListener("pointerup",S,!0),window.removeEventListener("pointercancel",S,!0),v.moved&&I(t)&&t.stopDragging()}};function b(C){if(C.pointerId!==u)return;if(!v.moved){if(Math.hypot(C.clientX-m.x,C.clientY-m.y)<=Ft)return;v.moved=!0,t.setPanning(!0)}let P=w.current;P.pan={dx:(P.pan?.dx??0)+C.clientX-g.x,dy:(P.pan?.dy??0)+C.clientY-g.y},g=j(C),K()}function S(C){C.pointerId===u&&(v.end(),setTimeout(()=>{_.current===v&&(_.current=null)},0))}_.current=v,window.addEventListener("pointermove",b,!0),window.addEventListener("pointerup",S,!0),window.addEventListener("pointercancel",S,!0)}function rn(r){_.current?.moved&&(_.current=null,r.stopPropagation())}let an={cursor:t.isPanning||t.draggingNode?"grabbing":T?"move":"grab",touchAction:t.hostPlacesX?"auto":"none",overscrollBehavior:"contain"},sn=t.host!==void 0&&!t.hostPlacesX&&!t.followsHostView?{[ve]:"",onMouseDown:r=>{r.stopPropagation()}}:{};return{canvasStyle:an,surfaceProps:sn,handlers:{onMouseDown:$t,onPointerDown:qt,onPointerMove:Qt,onPointerUp:ie,onPointerCancel:ie,onLostPointerCapture:ie,onPointerLeave:en,onClick:nn,onContextMenu:tn},contextMenu:E,hoveredChip:O,labelHandlers:{onPointerDown:on,onClickCapture:rn},closeContextMenu:()=>{z(void 0)}}}function jt(t){return Promise.resolve(new N(t))}var qn={position:"relative"},Un={position:"relative",lineHeight:0,isolation:"isolate"},Jn={position:"absolute",left:0,right:0,bottom:0,zIndex:0},Qn={position:"absolute",inset:0,zIndex:10,lineHeight:"normal",pointerEvents:"none"},eo={position:"absolute",left:6,transform:"translateY(-50%)",background:"rgba(255,255,255,0.82)",padding:"0 4px",borderRadius:3,fontSize:11,lineHeight:"16px",whiteSpace:"nowrap",pointerEvents:"none",zIndex:4},to=h(function({model:e}){return n(L,{children:e.visibleRowLabels.map(({label:o,y:i,top:a})=>n("div",{"data-testid":"graph-row-label",style:{...eo,top:a},children:o},i))})}),no={position:"absolute",top:ee,right:ee,display:"flex",flexDirection:"column",borderRadius:3,overflow:"hidden",zIndex:4},Kt={position:"absolute",transform:"translate(-50%, -50%)",background:"rgba(255,255,255,0.78)",padding:"0 3px",borderRadius:3,fontSize:10,lineHeight:"13px",whiteSpace:"nowrap",pointerEvents:"none",zIndex:3},oo={...Kt,color:"#18181c",fontWeight:600},ro=h(function({model:e}){let o=k(null),i=e.legendAtRest;return G(()=>{let a=o.current;if(!a||!i)return;let p=()=>{I(e)&&e.legendAtRest&&e.setLegendSize({width:a.offsetWidth,height:a.offsetHeight})};p();let c=new ResizeObserver(p);return c.observe(a),()=>{c.disconnect()}},[e,i]),n("div",{ref:o,style:{...no,top:ee+e.referenceStripZonePx},children:n(wt,{model:e})})}),ao=h(function({model:e}){let o=e.overlayLabels.sizes,i=o.flatMap(({key:a,leader:p})=>p?[{key:a,...p}]:[]);return f(L,{children:[i.length>0?n(te,{model:e,zIndex:2,overflow:"visible",children:i.map(({key:a,arcX:p,arcY:c,labelX:l,labelY:s})=>n("line",{"data-testid":"graph-label-leader",x1:p,y1:c,x2:l,y2:s,stroke:"#18181c",strokeWidth:1},a))}):null,o.map(({key:a,text:p,x:c,y:l,kind:s})=>n("div",{"data-testid":"graph-size-label",style:{...s==="deletion"?oo:Kt,left:c,top:l},children:p},a))]})}),io=h(function({model:e,ownChrome:o=!0}){let{canvasRef:i,canvas:a,error:p,retry:c}=vt(jt,e),{handlers:l,canvasStyle:s,surfaceProps:d,labelHandlers:y,contextMenu:w,closeContextMenu:E,hoveredChip:z}=Zt(e),[T,A]=R(null);Yt(T,a,e);let O=e.facetPanels!==void 0;return f("div",{style:qn,...d,children:[o?n(At,{model:e}):null,f("div",{ref:A,style:Un,...y,onMouseEnter:()=>{e.setPointerInPane(!0)},onMouseLeave:()=>{I(e)&&e.setPointerInPane(!1)},children:[e.referenceStripShown?n("div",{style:{...Jn,top:e.referenceStripZonePx,background:Q}}):null,n("canvas",{ref:i,"data-testid":"graph-genome-canvas",style:{...s,width:e.paneWidth,height:e.canvasHeight,display:"block",position:"relative",zIndex:1},...l}),O?n(xt,{model:e,handlers:l,canvasStyle:s}):f(L,{children:[n(mt,{model:e}),n(fe,{model:e}),n(ht,{model:e}),n(to,{model:e}),n(ao,{model:e}),n(nt,{model:e}),n(lt,{model:e}),n(ft,{model:e}),n(gt,{model:e}),n(Dt,{model:e}),n(ro,{model:e})]}),o?n("div",{style:Qn,children:n(Se,{isVisible:e.isLoading,immediate:!e.layoutResult,statusMessage:e.statusMessage,onCancel:e.canCancelLoad?()=>{e.cancelLoad()}:void 0})}):null,n(zt,{model:e,chip:z})]}),e.walkStripShown?n(Ot,{model:e}):null,n(Z,{model:e,at:w,onClose:E}),p?n(se,{error:p,onReset:c}):null,o&&e.error?n(se,{error:e.error,onReset:e.canRetryLoad?()=>{e.retryLoad()}:void 0}):null]})}),zi=io;export{zi as a};
2
- //# sourceMappingURL=chunk-AQQ4HHN3.js.map
1
+ import{a as X,b as ut}from"./chunk-FME624X3.js";import{a as et,b as tt,c as te,d as nt,e as ot,f as ne,h as rt,i as at,j as it,k as st,m as oe,n as lt,o as dt,p as ft,r as ht,t as mt,u as gt}from"./chunk-UFQTIWSN.js";import{O as Ue,P as Je,S as ue,U as Qe,V as ct,W as pt,a as x,d as Te,i as Ne,j as We,k as Oe,l as De,m as J,n as Xe,o as Be,x as Fe,y as Ze}from"./chunk-N5GYTUIL.js";import{n as D}from"./chunk-HLKZCTQ3.js";import{E as ze,Fb as N,Jb as ce,L as _e,Lb as pe,M as Ve,N as Ye,Nb as ee,a as V,b as be,da as le,dc as qe,ha as Q,la as je,na as Ke,x as Ae,xa as $e}from"./chunk-WGVATZLM.js";import{k as He}from"./chunk-III4GT4G.js";import{e as I}from"./chunk-NDRLCGPC.js";import{j as $}from"./chunk-TENPGIPX.js";import{d as G,e as Ie,f as Ge,g as k,h as R}from"./chunk-YU7T5WOQ.js";import{D as Ee,G as U,H as Y,b as we,c as xe,e as se,k as Se,o as Pe,p as Me,s as ke,v as q,w as Re,y as Ce,z as Le}from"./chunk-UGCNPRKC.js";import{a as L,b as n,c as f,d as h}from"./chunk-JMBDTNUR.js";var W=JBrowseExports["@jbrowse/render-core/useRenderingBackend"],ln=t=>W!=null&&t in Object(W)?W[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/render-core/useRenderingBackend' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var vt=ln("useRenderingBackend"),lo=W&&W.__esModule?W.default:W;var de=tt(1);function fe({model:t}){let[e,o]=R(null);return G(()=>{if(!e)return;let i=new N(e),a=V(()=>{$e(qe()),i.resize(t.paneWidth,t.canvasHeight),t.paintHover(i,t.drawnBatch)});return()=>{a(),i.dispose()}},[e,t]),n("canvas",{ref:o,"data-testid":"graph-hover-layer",style:de})}var yt={background:"rgba(255,255,255,0.82)",padding:"3px 6px",fontSize:11,lineHeight:"15px",whiteSpace:"nowrap"},re={display:"flex",alignItems:"center",gap:5},bt={color:"#666"};function ae({row:t,at:e,hint:o,after:i}){return t.swatch?f("div",{title:[t.title,o].filter(Boolean).join(" \xB7 ")||void 0,children:[f("div",{style:re,children:[n(oe,{swatch:t.swatch}),f("span",{children:[t.strong?n("strong",{children:t.strong}):null,t.label]}),i]}),e?n("div",{"data-testid":"graph-walk-at",children:e}):t.under?n("div",{children:t.under}):null]}):n("div",{style:bt,children:t.label})}var cn={pointerEvents:"auto",cursor:"pointer",border:"none",background:"none",padding:"0 2px",font:"inherit",textDecoration:"underline"},wt=h(function({model:e}){return n(L,{children:st(e).map(({testid:o,rows:i})=>n("div",{style:yt,"data-testid":o,children:i.map(a=>n(ae,{row:a,at:a.walk?e.hoveredOn(a.walk):void 0,after:a.closesBubble?n("button",{type:"button",style:cn,"data-testid":"graph-close-bubble",onClick:()=>{e.closeBubbles()},children:"close"}):null},a.key))},o))})});var pn={position:"absolute",left:0,top:0,zIndex:4,display:"grid",gap:Ve,lineHeight:"normal"},un={height:Ye,padding:"2px 6px",boxSizing:"border-box",fontFamily:"inherit",fontSize:11,color:"inherit",cursor:"pointer",border:"none",background:"none",textAlign:"left",display:"block"},dn={position:"relative"},fn={gridColumn:"1 / -1",height:Je,padding:"2px 6px",boxSizing:"border-box",display:"flex",gap:14,fontSize:11,lineHeight:"15px"},hn=h(function({model:e,lift:o,width:i,height:a,cell:p,handlers:c,canvasStyle:l}){let[s,d]=R(null),[y,w]=R(null),E=o.walks[0];G(()=>{if(!s||!y)return;let T=new N(s),A=new N(y),O=be(()=>e.buildDrawing(o,!1)),B,F=[V(()=>{let M=e.facetGrid;M&&T.resize(M.width,M.height);let H=O.get();H&&(H!==B&&(T.uploadGeometry(H.batch),B=H),e.applySelection(T),e.paint(T))}),V(()=>{let M=e.facetGrid;M&&A.resize(M.width,M.height);let H=O.get();H&&e.paintHover(A,H.batch)})];return()=>{for(let M of F)M();T.dispose(),A.dispose()}},[s,y,e,o]);let z=e.walkLabel(E.name);return f("div",{style:p,children:[n("button",{type:"button",style:un,"data-testid":"graph-facet-title",onClick:()=>{e.liftWalks([E.name]),e.setFacet("")},children:n(ae,{row:at(e,E),hint:`click to lift ${z} alone`,at:e.hoveredOn(E)})}),f("div",{style:dn,children:[n("canvas",{ref:d,"data-testid":"graph-facet-canvas",style:{...l,width:i,height:a,display:"block"},...c}),n("canvas",{ref:w,style:de})]})]})}),mn=h(function({model:e,handlers:o,canvasStyle:i}){let a=e.facetPanels,p=e.facetGrid,c=e.facetPlacement;if(!a||!p||!c)return null;let{columns:l,width:s,height:d}=p;return f("div",{"data-testid":"graph-facet-panels",style:{...pn,width:e.paneWidth,minHeight:e.canvasHeight,gridTemplateColumns:`repeat(${l}, ${s}px)`,background:Q},children:[a.map((y,w)=>n(hn,{model:e,lift:y,width:s,height:d,cell:{gridRow:Math.floor(c.cells[w]/l)+1,gridColumn:c.cells[w]%l+1},handlers:o,canvasStyle:i},y.walks[0].name)),n("div",{style:{...fn,gridRow:Math.floor(Math.max(...c.cells)/l)+2},"data-testid":"graph-facet-key",children:it(e).map(y=>n(ae,{row:y},y.key))})]})}),xt=mn;var St=x(n("path",{d:"M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2m2 10H3v4c0 1.1.9 2 2 2h4v-2H5zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2"}),"CropFree");var Pt=x([n("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"},"0"),n("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"},"1")],"ZoomIn");var Mt=x(n("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z"}),"ZoomOut");var gn=h(function({model:e}){let o=e.colorSchemeLock;return n(X,{label:"Color",size:"small",sx:{minWidth:100},disabled:o!==void 0,title:o?.why,shown:o?.value,value:e.chosenColorScheme,options:Fe.map(({value:i})=>({value:i,label:e.colorSchemeLabel(i)})),testId:"graph-color-select",onChange:i=>{e.setColorScheme(i)}})}),kt=gn;var Rt=D()({stats:{marginLeft:"auto"},perf:{color:"#888",fontVariantNumeric:"tabular-nums"}});function he(t){return t===void 0?"\u2013":`${Math.round(t)}ms`}var vn=h(function({model:e}){let{classes:o}=Rt(),{lastFetchMs:i,lastLayoutMs:a,lastGeometryMs:p}=e,c=i!==void 0||a!==void 0||p!==void 0;return e.showPerf&&c?f(Y,{variant:"caption",className:o.perf,"data-testid":"graph-perf-stats",children:["fetch ",he(i)," \xB7 layout ",he(a)," \xB7 geom"," ",he(p)]}):null}),yn=h(function({model:e}){let{classes:o}=Rt();return f("div",{className:o.stats,"data-testid":"graph-stats","data-node-count":e.nodeCount,"data-edge-count":e.edgeCount,"data-path-count":e.pathCount,"data-fetch-ms":e.lastFetchMs??"","data-layout-ms":e.lastLayoutMs??"","data-geometry-ms":e.lastGeometryMs??"","data-geometry-strokes":e.lastGeometryStrokeCount??"",children:[f(Y,{variant:"body2",component:"span",children:[e.nodeCount," nodes, ",e.edgeCount," edges",e.pathCount>0?`, ${e.pathCount} paths`:""]})," ",n(vn,{model:e})]})}),Ct=yn;var bn=h(function({model:e}){let{graph:o}=e;return n(X,{label:"Layout",size:"small",sx:{minWidth:140},testId:"graph-layout-select",value:e.chosenLayoutMode,options:Te.map(({value:i,label:a,description:p,available:c})=>({value:i,label:a,description:p,disabled:o?!c(o):!1})),onChange:i=>{e.switchLayout(i)}})}),Lt=bn;var wn=h(function({model:e}){return e.chosenLayoutMode!=="walkrows"||e.repeatChoices.length===0?null:n(X,{label:"Repeat",size:"small",sx:{minWidth:130,maxWidth:260},testId:"graph-repeat-select",value:e.selectedRepeat?.key??"",options:e.repeatOptions,onChange:o=>{e.setRepeatKey(o)}})}),Et=wn;var It=x(n("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");var Gt=x(n("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreVert");var xn=h(function({model:e}){let o=e.highlightMenuItems({picks:!1});return n(we,{size:"small",tooltip:"Graph options",menuItems:[...o.length>0?[{label:"Haplotypes",icon:ct,subMenu:o}]:[],...e.layoutOptionMenuItems({repeat:!1}),{label:"Show...",icon:Ze,subMenu:[...e.showMenuItems(),...e.modeDrawsNodes&&e.walkChoices.length>1?[{type:"checkbox",label:"Show walk rows under the graph",checked:e.walkStrip,onClick:()=>{e.setWalkStrip(!e.walkStrip)}}]:[],{type:"checkbox",label:"Show timings",checked:e.showPerf,onClick:()=>{e.setShowPerf(!e.showPerf)}}]},{type:"divider"},{label:"Graph settings...",icon:pt,helpText:"Subgraph node limit; node width and path colors; the force-directed layout engine",onClick:()=>{$(e).queueDialog(i=>[ut,{model:e,onClose:i}])}},{type:"divider"},{label:"Close graph",icon:It,onClick:()=>{e.clearGraph()}}],children:n(Gt,{})})}),Tt=xn;var Sn=D()({formControl:{minWidth:130,maxWidth:260}}),Pn=h(function({model:e}){let{classes:o}=Sn(),i=Ie(),{walkChoices:a}=e;if(a.length===0||!e.liftsWalks)return null;let p=new Set(a.map(s=>s.name)),c=new Map(a.map(s=>[s.name,s.label])),l=e.walkLayers.map(s=>s.walk).filter(s=>p.has(s));return a.length>Ke?n(Pe,{size:"small",variant:"outlined",color:"inherit","data-testid":"graph-walk-choose",onClick:()=>{$(e).queueDialog(s=>[je,{model:e,onClose:s}])},children:l.length>0?`${l.length} of ${a.length} haplotypes`:"Highlight haplotypes..."}):f(ke,{size:"small",className:o.formControl,children:[n(Re,{id:i,children:"Highlight"}),n(Ee,{labelId:i,multiple:!0,value:l,label:"Highlight","data-testid":"graph-walk-select",renderValue:s=>s.map(d=>c.get(d)).join(", "),onChange:s=>{let{value:d}=s.target;e.liftAmongChoices(typeof d=="string"?d.split(","):d)},children:a.map(({name:s,label:d})=>f(Le,{value:s,dense:!0,children:[n(Me,{size:"small",checked:l.includes(s)}),n(Ce,{primary:d})]},s))})]})}),Ht=Pn;var Mn=D()({toolbar:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,padding:"2px 4px",borderBottom:"1px solid #ddd"}}),kn=h(function({model:e}){return n(Y,{variant:"body2",children:e.zoomPercent})}),Rn=h(function({model:e}){let{classes:o}=Mn(),i=a=>{e.zoom(a,e.viewBox.width/2,e.viewBox.height/2)};return f("div",{className:o.toolbar,children:[n(Lt,{model:e}),n(kt,{model:e}),n(Ht,{model:e}),n(Et,{model:e}),n(U,{title:"Zoom in",children:n(q,{size:"small",onClick:()=>{i(1.5)},children:n(Pt,{})})}),n(U,{title:"Zoom out",children:n(q,{size:"small",onClick:()=>{i(1/1.5)},children:n(Mt,{})})}),n(U,{title:"Zoom to fit",children:n(q,{size:"small",onClick:()=>{e.refitView()},children:n(St,{})})}),n(kn,{model:e}),n(Ct,{model:e}),n(Tt,{model:e})]})}),At=Rn;var Cn={position:"absolute",bottom:Ue,lineHeight:"normal",background:"rgba(0,0,0,0.75)",color:"white",padding:"4px 8px",borderRadius:4,fontSize:12,pointerEvents:"none",zIndex:6};function me({label:t,readout:e}){return f(L,{children:[n("strong",{children:t})," \u2014 ",e]})}function Ln(t,e){if(e)return{testId:"graph-chip-tooltip",body:me(e)};let o=t.hoveredNode?t.hoverNodeById?.get(t.hoveredNode):void 0;if(o){let c=t.hoverDrawing?.members.get(o.id),l=Be(o);return{body:f(L,{children:[n("strong",{children:o.name}),c?` and ${c.length-1} more`:""," \u2014"," ",o.length.toLocaleString()," bp, depth ",o.depth.toFixed(1),l?f(L,{children:[n("br",{}),l.sample," ",J(l)," (rank ",o.stable?.rank,")"]}):null]})}}let i=t.hoveredEdge===null?void 0:t.graph?.edges[t.hoveredEdge];if(i){let c=Xe(i,t.deletions.find(l=>l.edgeIndex===t.hoveredEdge),l=>t.nodeById?.get(l)?.name??l);return{body:c.deletion?f(L,{children:[n("strong",{children:"Deletion"})," ",c.deletion.bp,n("br",{}),c.deletion.where]}):f(L,{children:["Edge: ",c.ends]})}}let a=t.hoveredWalkRowText;if(a)return{testId:"graph-walk-row-tooltip",body:me(a)};let p=t.hoveredTubeText;return p?{testId:"graph-tube-tooltip",body:me(p)}:void 0}var En=h(function({model:e,chip:o}){let i=Ln(e,o);return i?n("div",{style:{...Cn,right:e.tooltipRightPx},"data-testid":i.testId,children:i.body}):null}),zt=En;var _t=x(n("path",{d:"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z"}),"FilterList");var Nt=x(n("path",{d:"M10.83 8H21V6H8.83zm5 5H18v-2h-4.17zM14 16.83V18h-4v-2h3.17l-3-3H6v-2h2.17l-3-3H3V6h.17L1.39 4.22 2.8 2.81l18.38 18.38-1.41 1.41z"}),"FilterListOff");var Wt=x(n("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info");var In={x:0,y:0};function Gn(t,e){let{own:o,reference:i,highlight:a}=t.nodeLaunchTargets(e);return[{label:"Node details",icon:Wt,onClick:()=>{t.showNodeDetails(e)}},...Qe({own:o,reference:i,highlight:a,onShowLinear:p=>{t.showInLinearView(p)},onHighlight:t.canHighlightInLinearView?p=>{t.highlightInLinearView(p)}:void 0})]}function Tn(t,e,o){let i=o??t.walkRowBars,a=t.walkRowLaunchTarget(e,i),p=a?.assembly,c=e>0?i?.rows[e-1]:void 0,l=c?.sample,s=!o&&t.walkRowBars,d=t.walkRowSamples;return[a&&p?{label:`Linear genome view \u2014 ${p} ${J(a.location)}`,icon:ue,onClick:()=>{t.showInLinearView({location:a.location,assembly:p})}}:{label:"Linear genome view",icon:ue,disabled:!0,disabledHelpText:a?`No assembly in this session is ${a.location.haplotype??a.label}`:"This walk states no contig coordinates",onClick:()=>{}},...c&&t.liftsWalks&&t.modeDrawsNodes?[{type:"checkbox",label:`Highlight ${c.label}`,checked:t.walkLayers.some(y=>y.walk===c.name),onClick:()=>{t.toggleWalk(c.name)}}]:[],...s&&l&&!(d?.length===1&&d[0]===l)?[{label:`Show only ${l}`,icon:_t,onClick:()=>{t.setWalkRowSamples([l])}}]:[],...s&&d?[{label:"Show every sample",icon:Nt,onClick:()=>{t.setWalkRowSamples(void 0)}}]:[]]}function Z({model:t,at:e,onClose:o}){return n(xe,{anchor:e,offset:In,onClose:o,menuItems:()=>e===void 0?[]:"nodeId"in e?Gn(t,e.nodeId):Tn(t,e.row,e.bars)})}var Hn={display:"flex",flexWrap:"wrap",gap:"2px 14px",padding:"2px 8px 6px",fontSize:11,color:"#333"},An={position:"absolute",pointerEvents:"none",background:"rgba(255,255,255,0.92)",border:"1px solid #ccc",borderRadius:3,padding:"1px 6px",fontSize:11,whiteSpace:"nowrap",zIndex:4},zn=h(function({bars:e,frame:o,ramp:i,rowGenes:a}){let p=ot(),c=Ge(()=>_e(e,o,{ramp:i,rowGenes:a,idPrefix:p}),[e,o,i,a,p]);return n(ne,{el:c})}),_n=h(function({model:e}){let o=e.walkStripRows,i=e.walkStripFrame,a=e.stripHover,p=o?[o.reference,...o.rows]:[],c=a?p.findIndex(y=>y.name===a.row):-1,l=p[c];if(!o||!i||i.labelled||!a||!l)return null;let s=(o.origin+a.offset)*i.scaleX+i.translateX,d=s>i.width/2?{right:i.width-s+12}:{left:s+12};return f("div",{"data-testid":"graph-walk-strip-tip",style:{...An,...d,top:c*i.rowPx+i.translateY-18},children:[l.label," \xB7"," ",Ae(l,c===0?void 0:o.reference)]})}),Nn=h(function({model:e,bars:o,frame:i}){return n(ne,{el:We(o,i,e.walkStripMarks)})}),Wn=h(function({model:e}){let o=e.walkStripRows,i=e.walkStripFrame,[a,p]=R();if(!o||!i)return null;let c=s=>{let d=s.currentTarget.getBoundingClientRect();return Ne(o,i,s.clientX-d.left,s.clientY-d.top)},l=ze(o,{ramp:e.referenceRampDomain,rampCss:He,genes:De(i,e.walkRowGenes,e.walkRowGeneGaps)});return f("div",{"data-testid":"graph-walk-strip",style:{position:"relative",borderTop:"1px solid #ddd"},onMouseEnter:()=>{e.setPointerInPane(!0)},onMouseLeave:()=>{I(e)&&(e.setPointerInPane(!1),e.setStripHover(null))},children:[f("svg",{width:i.width,height:i.height,style:{display:"block"},onMouseMove:s=>{let d=c(s);s.currentTarget.style.cursor=d&&d.index>0?"pointer":"",e.setStripHover(d?{row:d.row.name,offset:d.offset}:null)},onClick:s=>{let d=c(s);d&&d.index>0&&e.toggleWalk(d.row.name)},onContextMenu:s=>{let d=c(s);d&&(s.preventDefault(),p({clientX:s.clientX,clientY:s.clientY,row:d.index}))},children:[n(zn,{bars:o,frame:i,ramp:e.referenceRampDomain,rowGenes:e.walkRowGenes}),n(Nn,{model:e,bars:o,frame:i}),n(ne,{el:Oe(o,i,new Set(e.walkLayers.map(s=>s.walk)))})]}),n(_n,{model:e}),f("div",{style:Hn,"data-testid":"graph-walk-strip-key",children:[l.map(s=>f("div",{style:re,children:[n(oe,{swatch:rt(s.swatch)}),n("span",{children:s.label})]},s.label)),n("span",{style:{color:"#777"},children:"Ticks mark where each walk passes the node under the pointer; click a haplotype's bar to lift its walk"})]}),n(Z,{model:e,at:a&&{...a,bars:o},onClose:()=>{p(void 0)}})]})}),Ot=Wn;var On=h(function({model:e}){let o=e.walkStripLocator;return o?f(te,{model:e,zIndex:4,overflow:"visible",testId:"graph-walk-strip-locator",children:[n("circle",{cx:o.x,cy:o.y,r:11,fill:"none",stroke:"white",strokeWidth:4}),n("circle",{cx:o.x,cy:o.y,r:11,fill:"none",stroke:"#111",strokeWidth:1.75})]}):null}),Dt=On;var Dn=1.1,Xn=100,Bn=40,Fn=800,Vn=10,Xt=2;function ge(t){let e=t.deltaY*(t.deltaMode===1?Bn:t.deltaMode===2?Fn:1),o=(t.ctrlKey?Vn:1)*e/Xn;return Dn**-Math.max(-Xt,Math.min(Xt,o))}var Yn=40,Zn=100,jn=24,Bt=Math.log(16);function Kn(t,e){let o=t*Math.exp(-e/jn);return Math.abs(o)<.001?t:t-o}function $n(t,e){let o=Math.abs(t.deltaX)>Math.abs(t.deltaY);return t.ctrlKey||t.metaKey||!o&&(!e||e.scrollZoom)?"zoom":o?"pan":"page"}function Yt(t,e,o){G(()=>{if(!t)return;let i=-1/0,a={backlog:0,x:0,y:0,frame:0,last:0},p=l=>{let s=Kn(a.backlog,Math.min(100,l-a.last));a.backlog-=s,a.last=l,a.frame=a.backlog?requestAnimationFrame(p):0,I(o)&&o.zoom(Math.exp(s),a.x,a.y)},c=l=>{if(o.hostPlacesX||o.followsHostView)return;let y=((l.target instanceof Element?l.target.closest("canvas"):null)??(o.facetPanels?null:e))?.getBoundingClientRect();if(y&&l.clientY-y.top<o.referenceStripZonePx)return;let w=$n(l,o.host);if(w!=="page"){if(o.host&&l.stopPropagation(),l.preventDefault(),w==="pan"){if(l.timeStamp-i>Zn){let E=l.deltaMode===1?Yn:1;o.setTransform(o.scale,o.translateX-l.deltaX*E,o.translateY)}return}i=l.timeStamp,y&&(a.x=l.clientX-y.left,a.y=l.clientY-y.top,a.backlog=Math.max(-Bt,Math.min(Bt,a.backlog+Math.log(ge(l)))),a.frame||(a.last=performance.now()-1e3/60,a.frame=requestAnimationFrame(p)))}};return t.addEventListener("wheel",c,{passive:!1}),()=>{cancelAnimationFrame(a.frame),t.removeEventListener("wheel",c)}},[t,e,o])}var Ft=3,ve="data-gesture-owner",j=t=>({x:t.clientX,y:t.clientY});function Vt(t){let[e,o]=[...t.values()];return{spread:Math.hypot(e.x-o.x,e.y-o.y),mid:{x:(e.x+o.x)/2,y:(e.y+o.y)/2}}}function Zt(t){let e=k({x:0,y:0}),o=k({x:0,y:0}),i=k(!1),a=k(void 0),p=r=>a.current!==void 0&&r.pointerId!==a.current,c=k(new Map),l=k(null),s=k(null),d=k(!1),y=k(!1),w=k({frame:0,pan:null,hover:null,pinch:!1});G(()=>()=>{cancelAnimationFrame(w.current.frame)},[]);let[E,z]=R(),[T,A]=R(!1),[O,B]=R(void 0);function F(r){let u=r.currentTarget.getBoundingClientRect();return{x:r.clientX-u.left,y:r.clientY-u.top}}function M(r,u){if(t.layoutResult?.tubeMap)return t.tubeMapNodeAt(r,u);let m=t.referenceStripNodeAt(r,u);if(m)return m;let{nodePositions:g}=t;if(!g)return null;let{x:v,y:b}=le(r,u,t,t.axisScale);return ce(g,v,b,t.axisScale,t.positionsVersion,t.nodeInk)}function H(r,u){let{nodePositions:m,graph:g}=t;if(!m||!g)return null;let{x:v,y:b}=le(r,u,t,t.axisScale);return pe(m,g,v,b,t.axisScale,t.effectiveDrawPaths&&!t.facetPanels,t.positionsVersion,t.deletionEdgeIndexes,t.hiddenEdgeIndexes,t.deletionRoutes,t.layoutResult?.stranded)}function $t(r){r.button===0&&r.preventDefault()}function qt(r){if(r.button!==0)return;let u=c.current;if(p(r)){t.isPanning&&!y.current&&r.pointerType==="touch"&&u.size===1&&(r.currentTarget.setPointerCapture(r.pointerId),u.set(r.pointerId,j(r)),s.current=Vt(u),i.current=!0);return}i.current=!1,o.current={x:r.clientX,y:r.clientY},r.currentTarget.removeAttribute(ve);let m=t.followsHostView;if(t.hostPlacesX||m&&r.shiftKey)return;r.currentTarget.setPointerCapture(r.pointerId),a.current=r.pointerId,l.current=r.currentTarget,u.clear(),u.set(r.pointerId,j(r));let{x:g,y:v}=F(r),b=v<t.referenceStripZonePx,S=t.layoutResult?.tubeMap||b?null:M(g,v);m&&S&&r.currentTarget.setAttribute(ve,""),y.current=m,d.current=b&&!m,S?t.setDraggingNode(S):t.setPanning(!0),e.current={x:r.clientX,y:r.clientY}}function ye(){let r=s.current,u=l.current;if(!r||!u)return;let m=Vt(c.current),g=u.getBoundingClientRect();r.spread>0&&m.spread>0&&t.zoom(m.spread/r.spread,r.mid.x-g.left,r.mid.y-g.top),t.setTransform(t.scale,t.translateX+m.mid.x-r.mid.x,t.translateY+m.mid.y-r.mid.y),s.current=m}function Ut(){let r=w.current,{pan:u,hover:m,pinch:g}=r;if(r.frame=0,r.pan=null,r.hover=null,r.pinch=!1,g&&ye(),u&&d.current?t.host?.horizontalScroll(-u.dx):u&&y.current?t.setTransform(t.scale,t.translateX,t.translateY+u.dy):u&&t.setTransform(t.scale,t.translateX+u.dx,t.translateY+u.dy),!m)return;let{x:v,y:b}=m,S=t.facetPanels?void 0:dt(t.overlayLabels,v,b);B(P=>P?.label===S?.label&&P?.readout===S?.readout?P:S);let C=t.walkRowBars;if(C){let P=t.walkRowAt(v,b);t.setHoveredWalkRow(P===void 0?null:[C.reference,...C.rows][P].name)}if(t.nodePositions&&t.graph){let P=M(v,b);t.setHoveredPanel(t.tubeMapPanelAt(b)),t.setHoveredNode(P,{x:v,y:b}),A(P!==null&&!t.hostPlacesX&&!t.layoutResult?.tubeMap&&b>=t.referenceStripZonePx),t.setHoveredTube(P===null&&t.layoutResult?.tubeMap?t.tubeAt(v,b):null),t.setHoveredEdge(P||t.layoutResult?.tubeMap||!t.hoverLightsEverything?null:H(v,b))}}function K(){w.current.frame||(w.current.frame=requestAnimationFrame(Ut))}function Jt(){let r=w.current;cancelAnimationFrame(r.frame),r.frame=0,r.pan=null,r.hover=null,r.pinch=!1}function Qt(r){let u=c.current;if(s.current&&u.has(r.pointerId)){u.set(r.pointerId,j(r)),w.current.pinch=!0,K();return}if(p(r))return;let m=r.clientX-e.current.x,g=r.clientY-e.current.y;e.current={x:r.clientX,y:r.clientY},Math.hypot(r.clientX-o.current.x,r.clientY-o.current.y)>Ft&&(i.current=!0);let v=w.current;if(t.draggingNode)t.moveNode(t.draggingNode,m/t.scaleX,g/t.scaleY);else if(t.isPanning)v.pan={dx:(v.pan?.dx??0)+m,dy:(v.pan?.dy??0)+g},K();else{let b=r.currentTarget.getBoundingClientRect();v.hover={x:r.clientX-b.left,y:r.clientY-b.top},K()}}function ie(r){let u=c.current;if(s.current&&u.has(r.pointerId)){w.current.pinch&&(w.current.pinch=!1,ye()),u.delete(r.pointerId),s.current=null;let[[m,g]]=[...u];a.current=m,e.current=g;return}p(r)||(a.current=void 0,u.clear(),I(t)&&t.stopDragging())}function en(r){p(r)||(a.current=void 0,c.current.clear(),s.current=null,Jt(),B(void 0),A(!1),I(t)&&(t.stopDragging(),t.clearHover()))}function tn(r){let{x:u,y:m}=F(r),g=M(u,m),{clientX:v,clientY:b}=r;if(g){r.preventDefault(),z({clientX:v,clientY:b,nodeId:g});return}let S=t.walkRowAt(u,m);S!==void 0&&(r.preventDefault(),z({clientX:v,clientY:b,row:S}))}function nn(r){if(!i.current){let{x:u,y:m}=F(r),g=M(u,m);t.setSelectedNode(g),g&&t.showNodeDetails(g)}}let _=k(null);G(()=>()=>{_.current?.end()},[]);function on(r){if(r.button!==0||t.hostPlacesX||t.followsHostView||!(r.target instanceof Element)||!r.target.closest(`[${et}]`))return;_.current?.end();let u=r.pointerId,m=j(r),g=m,v={moved:!1,end:()=>{window.removeEventListener("pointermove",b,!0),window.removeEventListener("pointerup",S,!0),window.removeEventListener("pointercancel",S,!0),v.moved&&I(t)&&t.stopDragging()}};function b(C){if(C.pointerId!==u)return;if(!v.moved){if(Math.hypot(C.clientX-m.x,C.clientY-m.y)<=Ft)return;v.moved=!0,t.setPanning(!0)}let P=w.current;P.pan={dx:(P.pan?.dx??0)+C.clientX-g.x,dy:(P.pan?.dy??0)+C.clientY-g.y},g=j(C),K()}function S(C){C.pointerId===u&&(v.end(),setTimeout(()=>{_.current===v&&(_.current=null)},0))}_.current=v,window.addEventListener("pointermove",b,!0),window.addEventListener("pointerup",S,!0),window.addEventListener("pointercancel",S,!0)}function rn(r){_.current?.moved&&(_.current=null,r.stopPropagation())}let an={cursor:t.isPanning||t.draggingNode?"grabbing":T?"move":"grab",touchAction:t.hostPlacesX?"auto":"none",overscrollBehavior:"contain"},sn=t.host!==void 0&&!t.hostPlacesX&&!t.followsHostView?{[ve]:"",onMouseDown:r=>{r.stopPropagation()}}:{};return{canvasStyle:an,surfaceProps:sn,handlers:{onMouseDown:$t,onPointerDown:qt,onPointerMove:Qt,onPointerUp:ie,onPointerCancel:ie,onLostPointerCapture:ie,onPointerLeave:en,onClick:nn,onContextMenu:tn},contextMenu:E,hoveredChip:O,labelHandlers:{onPointerDown:on,onClickCapture:rn},closeContextMenu:()=>{z(void 0)}}}function jt(t){return Promise.resolve(new N(t))}var qn={position:"relative"},Un={position:"relative",lineHeight:0,isolation:"isolate"},Jn={position:"absolute",left:0,right:0,bottom:0,zIndex:0},Qn={position:"absolute",inset:0,zIndex:10,lineHeight:"normal",pointerEvents:"none"},eo={position:"absolute",left:6,transform:"translateY(-50%)",background:"rgba(255,255,255,0.82)",padding:"0 4px",borderRadius:3,fontSize:11,lineHeight:"16px",whiteSpace:"nowrap",pointerEvents:"none",zIndex:4},to=h(function({model:e}){return n(L,{children:e.visibleRowLabels.map(({label:o,y:i,top:a})=>n("div",{"data-testid":"graph-row-label",style:{...eo,top:a},children:o},i))})}),no={position:"absolute",top:ee,right:ee,display:"flex",flexDirection:"column",borderRadius:3,overflow:"hidden",zIndex:4},Kt={position:"absolute",transform:"translate(-50%, -50%)",background:"rgba(255,255,255,0.78)",padding:"0 3px",borderRadius:3,fontSize:10,lineHeight:"13px",whiteSpace:"nowrap",pointerEvents:"none",zIndex:3},oo={...Kt,color:"#18181c",fontWeight:600},ro=h(function({model:e}){let o=k(null),i=e.legendAtRest;return G(()=>{let a=o.current;if(!a||!i)return;let p=()=>{I(e)&&e.legendAtRest&&e.setLegendSize({width:a.offsetWidth,height:a.offsetHeight})};p();let c=new ResizeObserver(p);return c.observe(a),()=>{c.disconnect()}},[e,i]),n("div",{ref:o,style:{...no,top:ee+e.referenceStripZonePx},children:n(wt,{model:e})})}),ao=h(function({model:e}){let o=e.overlayLabels.sizes,i=o.flatMap(({key:a,leader:p})=>p?[{key:a,...p}]:[]);return f(L,{children:[i.length>0?n(te,{model:e,zIndex:2,overflow:"visible",children:i.map(({key:a,arcX:p,arcY:c,labelX:l,labelY:s})=>n("line",{"data-testid":"graph-label-leader",x1:p,y1:c,x2:l,y2:s,stroke:"#18181c",strokeWidth:1},a))}):null,o.map(({key:a,text:p,x:c,y:l,kind:s})=>n("div",{"data-testid":"graph-size-label",style:{...s==="deletion"?oo:Kt,left:c,top:l},children:p},a))]})}),io=h(function({model:e,ownChrome:o=!0}){let{canvasRef:i,canvas:a,error:p,retry:c}=vt(jt,e),{handlers:l,canvasStyle:s,surfaceProps:d,labelHandlers:y,contextMenu:w,closeContextMenu:E,hoveredChip:z}=Zt(e),[T,A]=R(null);Yt(T,a,e);let O=e.facetPanels!==void 0;return f("div",{style:qn,...d,children:[o?n(At,{model:e}):null,f("div",{ref:A,style:Un,...y,onMouseEnter:()=>{e.setPointerInPane(!0)},onMouseLeave:()=>{I(e)&&e.setPointerInPane(!1)},children:[e.referenceStripShown?n("div",{style:{...Jn,top:e.referenceStripZonePx,background:Q}}):null,n("canvas",{ref:i,"data-testid":"graph-genome-canvas",style:{...s,width:e.paneWidth,height:e.canvasHeight,display:"block",position:"relative",zIndex:1},...l}),O?n(xt,{model:e,handlers:l,canvasStyle:s}):f(L,{children:[n(mt,{model:e}),n(fe,{model:e}),n(ht,{model:e}),n(to,{model:e}),n(ao,{model:e}),n(nt,{model:e}),n(lt,{model:e}),n(ft,{model:e}),n(gt,{model:e}),n(Dt,{model:e}),n(ro,{model:e})]}),o?n("div",{style:Qn,children:n(Se,{isVisible:e.isLoading,immediate:!e.layoutResult,statusMessage:e.statusMessage,onCancel:e.canCancelLoad?()=>{e.cancelLoad()}:void 0})}):null,n(zt,{model:e,chip:z})]}),e.walkStripShown?n(Ot,{model:e}):null,n(Z,{model:e,at:w,onClose:E}),p?n(se,{error:p,onReset:c}):null,o&&e.error?n(se,{error:e.error,onReset:e.canRetryLoad?()=>{e.retryLoad()}:void 0}):null]})}),zi=io;export{zi as a};
2
+ //# sourceMappingURL=chunk-44HZPYGC.js.map