react-msaview 9.3.0 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bundle/index.js CHANGED
@@ -620,7 +620,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
620
620
  `).trimStart();if(UGe.test(r))throw new Error("Received an HTML page, not an alignment. Check that the URL points at the file itself");if(o==="stockholm")return new Vp(r,t);if(o==="a3m")return new ef(r);if(o==="fasta")return new Gp(r);if(o==="emf")return new zp(r);if(o==="clustal")return new Hp(r);if(HE(r))return new Vp(r,t);if(tR(r)){let i=G3(r);return ef.sniff(i)?new ef(i):new Gp(i)}if(r.startsWith("SEQ"))return new zp(r);if(HGe.test(r))return new Hp(r);let n=r.split(`
621
621
  `,1)[0].slice(0,80);throw new Error(n?`Unrecognized alignment format: expected FASTA, A3M, Stockholm, Clustal or EMF, but the first line reads "${n}"`:"The alignment file is empty")}function r4(e){return e.replaceAll(/[.-]/g,"")}var UGe,HGe,Bme=A(()=>{"use strict";V3();$3();W3();q3();t4();oR();Y3();Z3();V3();$3();W3();q3();t4();UGe=/^<(!doctype\s+html|html[\s>])/i,HGe=/^(CLUSTAL|MUSCLE|PROBCONS|MSAPROBS|Kalign)/i});function n4(e){return Object.fromEntries(e.map(t=>[t.xref[0]?.id,t]).filter(t=>t[0]!==void 0))}function i4(e){return Object.entries(e).flatMap(([t,{matches:o}])=>o.flatMap(({signature:r,locations:n})=>{let{entry:i}=r,s=i?.accession??r.accession;if(!s)return[];let a=i?.name??r.name??s;return n.map(({start:l,end:c,strand:u})=>({id:t,accession:s,name:a,description:i?.description??r.description??a,start:l,end:c,strand:u}))}))}function s4(e){return i4(n4(e.results))}var aR=A(()=>{"use strict"});function _me(e){try{return decodeURIComponent(e)}catch{return e}}function zGe(e){return e.replace(/^"(.*)"$/,"$1")}function GGe(e){if(!e)return{};let t={};for(let o of e.split(";")){let r=o.indexOf("="),n=o.slice(0,r).trim(),i=o.slice(r+1);r!==-1&&n&&i&&(t[n]=i.split(",").map(s=>zGe(_me(s).trim())).join(" "))}return t}function lR(e){if(!e)return[];let t=[];for(let o of e.split(`
622
622
  `)){let r=o.trim();if(r.startsWith("##FASTA"))break;r&&!r.startsWith("#")&&r.split(" ").length>=8&&t.push(r)}return t.map(o=>{let r=o.split(" "),[n,i,s,a,l,c,u,p]=r,f=r[8];return{...GGe(f),seq_id:_me(n??""),source:i??"",type:s??"",start:Number(a)||0,end:Number(l)||0,score:Number(c)||0,strand:u??".",phase:p??"."}})}var Rme=A(()=>{"use strict"});function jGe({type:e,strand:t}){let o=t==="+"?1:t==="-"?-1:void 0;return VGe.has(e)?o:void 0}function YGe(e){let t=Object.entries(e).filter(([o,r])=>!$Ge.has(o)&&typeof r=="string");return t.length>0?Object.fromEntries(t):void 0}function qGe(e){let t=e.color??e.colour??e.Color??e.Colour;if(!t)return;let o=WGe.exec(t.trim());return o?`rgb(${o[1]},${o[2]},${o[3]})`:t.trim()}function cR(e){return e.filter(t=>!JGe.has(t.type)).map(t=>{let o=t.Name||t.ID||`${t.source}_${t.start}_${t.end}`,r=t.signature_desc||t.Name||o;return{id:t.seq_id,accession:o,name:r,description:t.description||t.Note||t.signature_desc||r,featureType:t.type,start:t.start,end:t.end,strand:jGe(t),color:qGe(t),attributes:YGe(t)}})}var VGe,$Ge,WGe,JGe,Mme=A(()=>{"use strict";VGe=new Set(["gene","CDS","pseudogene","mRNA","transcript","primary_transcript","ncRNA","tRNA","rRNA","snRNA","snoRNA","miRNA","lnc_RNA"]);$Ge=new Set(["seq_id","source","type","start","end","score","strand","phase"]);WGe=/^(\d{1,3})[\s,]+(\d{1,3})[\s,]+(\d{1,3})$/;JGe=new Set(["polypeptide","nucleic_acid"])});function zE(e,t=[]){return["##gff-version 3",...t.map(o=>`# ${o}`),...e.map(o=>{let{accession:r,name:n,description:i,featureType:s}=o,{id:a,start:l,end:c,strand:u}=o;return[a.replaceAll(/[%\t\n\r]/g,encodeURIComponent),"InterProScan",s??"protein_match",l,c,".",u===void 0?".":u>0?"+":"-",".",[`Name=${encodeURIComponent(r)}`,`signature_desc=${encodeURIComponent(n)}`,`description=${encodeURIComponent(i)}`].join(";")].join(" ")})].join(`
623
- `)}var uR=A(()=>{"use strict"});var Qme=A(()=>{"use strict";aR();uR()});var Pme=A(()=>{"use strict";Rme();Mme();uR();Qme()});function a4(e){let t=e.trimStart();if(!t.startsWith("{"))return e;let o=JSON.parse(t);return zE(s4(o))}var Dme=A(()=>{"use strict";aR();uR()});var GE=A(()=>{"use strict";z3();Bme();aR();Pme();Dme()});var Ome={};zn(Ome,{default:()=>oVe});async function eVe(e){let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status} fetching ${e} ${await t.text()}`);return t.text()}var no,ZGe,tVe,oVe,kme=A(()=>{"use strict";no=w(D(),1);is();We();Ie();GE();ZGe="https://gmod.org/JBrowseMSA/tutorials/protein_family";tVe=H(function({handleClose:e,model:t}){let[o,r]=(0,no.useState)(),[n,i]=(0,no.useState)("file"),[s,a]=(0,no.useState)(""),[l,c]=(0,no.useState)(),[u,p]=(0,no.useState)(!1);return no.default.createElement(lr,{maxWidth:"xl",title:"Open annotation file",onClose:()=>{e()},open:!0},no.default.createElement(Jo,null,l?no.default.createElement(Ic,{error:l}):null,no.default.createElement(Ee,null,"Open a GFF3 file of annotations, such as the one `react-msaview-cli interpro` writes, or the JSON an InterProScan run returns."," ",no.default.createElement(Si,{href:ZGe,target:"_blank",rel:"noopener noreferrer"},"How to make one")),no.default.createElement("div",{style:{display:"flex",margin:30}},no.default.createElement(hc,{component:"fieldset"},no.default.createElement(sy,{value:n,onChange:f=>{i(f.target.value)}},no.default.createElement(Zn,{value:"url",control:no.default.createElement(yc,null),label:"URL"}),no.default.createElement(Zn,{value:"file",control:no.default.createElement(yc,null),label:"File"}))),n==="url"?no.default.createElement("div",null,no.default.createElement(Ee,null,"Open an annotation file from a URL"),no.default.createElement(an,{label:"URL",value:s,onChange:f=>{a(f.target.value)}})):no.default.createElement("div",{style:{paddingTop:20}},no.default.createElement(Ee,null,"Open an annotation file from your local drive"),no.default.createElement(tt,{variant:"outlined",component:"label"},"Choose File",no.default.createElement("input",{type:"file",hidden:!0,onChange:({target:f})=>{let d=f.files?.[0];d&&r(d)}})),o?no.default.createElement(Ee,null,o.name):null))),no.default.createElement(es,null,no.default.createElement(tt,{variant:"contained",color:"primary",disabled:u||(n==="file"?!o:!s.trim()),onClick:()=>{(async()=>{p(!0),c(void 0);try{let f=await(n==="file"&&o?o.text():eVe(s));t.setGFFFilehandle(void 0),t.setGFF(a4(f)),t.setShowDomains(!0),t.setCellFill("domain"),e()}catch(f){console.error(f),c(f)}finally{p(!1)}})()}},"Open annotations"),no.default.createElement(tt,{variant:"contained",color:"secondary",onClick:()=>{e()}},"Cancel")))}),oVe=tVe});var fR,c4=A(()=>{"use strict";fR="9.3.0"});var u4={};zn(u4,{default:()=>Fme});function Fme({onClose:e}){return $r.default.createElement(lr,{open:!0,title:"About",onClose:()=>{e()}},$r.default.createElement(Jo,null,$r.default.createElement(Ee,null,"MSAView ",fR," (",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"https://github.com/gmod/react-msaview"},"Github"),")"),$r.default.createElement("ul",null,$r.default.createElement("li",null,$r.default.createElement(Ee,null,"We use some color schemes from the"," ",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"https://github.com/biotite-dev/biotite"},"biotite")," ","project, and their license is reproduced"," ",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"https://github.com/biotite-dev/biotite/blob/master/LICENSE.rst"},"here"))),$r.default.createElement("li",null,$r.default.createElement(Ee,null,"See this page for some information on jalview colorings"," ",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"https://www.jalview.org/help/html/colourSchemes/"},"here"))),$r.default.createElement("li",null,$r.default.createElement(Ee,null,"See this page for some info on the clustal, cinema, maeditor, and lesk color schemes"," ",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"http://www.bioinformatics.nl/~berndb/aacolour.html"},"here"))),$r.default.createElement("li",null,$r.default.createElement(Ee,null,"See this paper about the flower color scheme"," ",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7245768/"},"here"))))))}var $r,f4=A(()=>{"use strict";$r=w(D(),1);is();We();c4()});function Em(e){let t=e.length>1;return e.flatMap(o=>[...t?[{key:o.id,label:o.title}]:[],...o.entries.map(r=>({key:`${o.id}:${r.id}`,label:r.label,color:r.color,hint:r.id}))])}var pR=A(()=>{"use strict"});function lVe(e){let t=e.reduce((r,n)=>Math.max(r,n.label.length),0),o=dR+of+t*d4;return Math.min(aVe,Math.max(120,o))}function A4(e){return of*2+e.length*p4}function AR(e,t){let{scrollX:o,scrollY:r,totalWidth:n,totalHeight:i,effectiveTreeAreaWidth:s,rowPanelsWidth:a,rowPanelsHeaderHeight:l,totalTrackAreaHeight:c,minimapHeight:u,msaAreaHeight:p,msaCanvasWidth:f,showHorizontalScrollbar:d,treeOverviewHeight:m,treeScaleBar:y}=e,b=t.includeTracks?c:0,h=t.exportType==="viewport"&&!!t.includeMinimap&&d,g=Em(e.legends),C=g.length>0?lVe(g):0,x=Math.max(h?u:0,l,m+(y?Zu:0)),v=s+a;return t.exportType==="entire"?{width:n+v,msaAreaWidth:n,height:i+b+x,contentHeight:i,trackHeight:b,topHeight:x,offsetX:0,offsetY:0,includeMinimap:h,legendWidth:C}:{width:f+v,msaAreaWidth:f,height:p+x+b,contentHeight:p,trackHeight:b,topHeight:x,offsetX:-o,offsetY:-r,includeMinimap:h,legendWidth:C}}function mR(e,t){let{width:o,height:r,legendWidth:n,topHeight:i}=t;return{width:o+n,height:n>0?Math.max(r,i+A4(Em(e.legends))):r}}var of,p4,VE,Ume,d4,aVe,dR,m4=A(()=>{"use strict";pR();Or();of=8,p4=16,VE=12,Ume=12,d4=7,aVe=360,dR=of+VE+6});function vm({checked:e,label:t,disabled:o,onChange:r}){return gR.default.createElement("div",null,gR.default.createElement(Zn,{control:gR.default.createElement(Ra,{disabled:o,checked:e,onChange:()=>{r()}}),label:t}))}var gR,g4=A(()=>{"use strict";gR=w(D(),1);We()});var Hme={};zn(Hme,{default:()=>fVe});function cVe(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var Oo,uVe,fVe,zme=A(()=>{"use strict";Oo=w(D(),1);is();We();Ie();m4();g4();uVe=H(function({model:e,onClose:t}){let[o,r]=(0,Oo.useState)(!0),[n,i]=(0,Oo.useState)(!0),[s,a]=(0,Oo.useState)("viewport"),[l,c]=(0,Oo.useState)(),[u,p]=(0,Oo.useState)(!1),f=Jt(),{turnedOnTracks:d,numColumns:m,leaves:y,showMsaLetters:b}=e,h=d.length>0,g=mR(e,AR(e,{theme:f,exportType:"entire",includeTracks:n})),C=b&&s==="entire"?m*y.length:0,x=C>1e5;return Oo.default.createElement(lr,{onClose:()=>{t()},open:!0,title:"Export SVG"},Oo.default.createElement(Jo,null,l?Oo.default.createElement(Ic,{error:l}):null,Oo.default.createElement(Ee,null,"Settings:"),Oo.default.createElement(vm,{label:"Include minimap?",disabled:s==="entire",checked:o,onChange:()=>{r(!o)}}),h?Oo.default.createElement(vm,{label:"Include tracks?",checked:n,onChange:()=>{i(!n)}}):null,Oo.default.createElement("div",null,Oo.default.createElement(hc,null,Oo.default.createElement(ty,null,"Export type"),Oo.default.createElement(sy,{value:s,onChange:v=>{let{value:I}=v.target;(I==="entire"||I==="viewport")&&a(I)}},Oo.default.createElement(Zn,{value:"entire",control:Oo.default.createElement(yc,null),label:"Entire MSA"}),Oo.default.createElement(Zn,{value:"viewport",control:Oo.default.createElement(yc,null),label:"Current viewport only"})))),x?Oo.default.createElement(cS,{severity:"warning",style:{marginTop:8}},"The entire MSA is ",Math.round(g.width),"x",Math.round(g.height)," pixels and draws"," ",Math.round(C/1e3),"k residue letters, each its own SVG element. Export may be slow or fail \u2014 zooming out far enough to hide the letters exports the same alignment as an image instead."):null),Oo.default.createElement(es,null,Oo.default.createElement(tt,{variant:"contained",color:"primary",disabled:u,startIcon:u?Oo.default.createElement(wa,{size:16,color:"inherit"}):null,onClick:()=>{p(!0),cVe(()=>{e.exportSVG({theme:f,includeMinimap:o,includeTracks:h&&n,exportType:s}).then(()=>{t()}).catch(v=>{console.error(v),c(v)}).finally(()=>{p(!1)})})}},u?"Exporting\u2026":"Export"),Oo.default.createElement(tt,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel")))}),fVe=uVe});var Vme={};zn(Vme,{default:()=>Gme});function Gme({model:e,onClose:t}){return hR.default.createElement(lr,{open:!0,onClose:t,title:"Go to row or column",maxWidth:"xs",fullWidth:!0},hR.default.createElement(Jo,null,hR.default.createElement(sme,{model:e,onFound:t})))}var hR,jme=A(()=>{"use strict";hR=w(D(),1);is();We();F3()});var $me,h4,Yme,Wme,qme,y4=A(()=>{"use strict";$me=["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"],h4=[{label:"Arrow keys",action:"Scroll one cell",keys:$me},{label:"Shift + arrow keys",action:"Scroll one page",keys:$me,shiftKey:!0},{label:"+ and -",action:"Zoom in and out",keys:["+","=","-"]},{label:"0",action:"Reset to the default cell size",keys:["0"]},{label:"Home and End",action:"Jump to the first and last column",keys:["Home","End"]},{label:"Escape",action:"Clear the selection",keys:["Escape"]}],Yme={label:"Shift + drag",action:"Select a block of cells"},Wme=[{label:"Drag",action:"Pan the alignment"},{label:"Wheel",action:"Scroll, or zoom with Zoom on scroll checked"},{label:"Ctrl + wheel",action:"Zoom at the cursor"},Yme,{label:"Drag along a track",action:"Select a range of columns across every row"},{label:"Click a tree node",action:"Collapse, rotate, reroot or show only that clade"},{label:"Click the tree overview",action:"Show only the clade under the pointer"},{label:"Drag a divider",action:"Resize the tree area or a track"}],qme=["Alignment",...[...h4,Yme].map(e=>`${e.label}: ${e.action}`)].join(". ")});var Xme={};zn(Xme,{default:()=>Kme});function Jme({title:e,rows:t}){return Yr.default.createElement(Yr.default.Fragment,null,Yr.default.createElement(Ee,{variant:"subtitle2",sx:{mt:1}},e),Yr.default.createElement(uy,{size:"small","aria-label":e},Yr.default.createElement(fy,null,t.map(({label:o,action:r})=>Yr.default.createElement(VA,{key:o},Yr.default.createElement(sn,{sx:{whiteSpace:"nowrap",fontWeight:500}},o),Yr.default.createElement(sn,null,r))))))}function Kme({model:e,onClose:t}){return Yr.default.createElement(lr,{open:!0,title:"Mouse & keyboard",onClose:t},Yr.default.createElement(Jo,null,Yr.default.createElement(Jme,{title:"Mouse",rows:Wme}),Yr.default.createElement(Jme,{title:"Keyboard (click the alignment first)",rows:h4})),Yr.default.createElement(es,null,Yr.default.createElement(Ee,{variant:"caption",sx:{mr:"auto",pl:1}},"MSAView ",fR),Yr.default.createElement(tt,{onClick:()=>{e.queueDialog(o=>[pVe,{onClose:o}]),t()}},"About & credits"),Yr.default.createElement(tt,{variant:"contained",onClick:t},"Close")))}var Yr,pVe,Zme=A(()=>{"use strict";Yr=w(D(),1);is();We();c4();y4();pVe=(0,Yr.lazy)(()=>Promise.resolve().then(()=>(f4(),u4)))});function jE(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!rf.default.isValidElement(e)}function b4(e){return jE(e)&&Object.keys(e).length===0}function nf({record:e,labels:t={},monospaceKeys:o}){let{classes:r,cx:n}=dVe();return rf.default.createElement("dl",{className:r.list},Object.entries(e).filter(([,i])=>i!=null&&!b4(i)).map(([i,s])=>{let a=t[i],l=jE(s);return rf.default.createElement("div",{key:i,className:r.row},rf.default.createElement("dt",{className:r.key},a??i,a&&a!==i?rf.default.createElement("span",{className:r.code},i):null),rf.default.createElement("dd",{className:n(r.value,l&&r.nested,o?.has(i)&&r.mono)},l?rf.default.createElement(nf,{record:s,labels:t,monospaceKeys:o}):Array.isArray(s)?s.join(`
623
+ `)}var uR=A(()=>{"use strict"});var Qme=A(()=>{"use strict";aR();uR()});var Pme=A(()=>{"use strict";Rme();Mme();uR();Qme()});function a4(e){let t=e.trimStart();if(!t.startsWith("{"))return e;let o=JSON.parse(t);return zE(s4(o))}var Dme=A(()=>{"use strict";aR();uR()});var GE=A(()=>{"use strict";z3();Bme();aR();Pme();Dme()});var Ome={};zn(Ome,{default:()=>oVe});async function eVe(e){let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status} fetching ${e} ${await t.text()}`);return t.text()}var no,ZGe,tVe,oVe,kme=A(()=>{"use strict";no=w(D(),1);is();We();Ie();GE();ZGe="https://gmod.org/JBrowseMSA/tutorials/protein_family";tVe=H(function({handleClose:e,model:t}){let[o,r]=(0,no.useState)(),[n,i]=(0,no.useState)("file"),[s,a]=(0,no.useState)(""),[l,c]=(0,no.useState)(),[u,p]=(0,no.useState)(!1);return no.default.createElement(lr,{maxWidth:"xl",title:"Open annotation file",onClose:()=>{e()},open:!0},no.default.createElement(Jo,null,l?no.default.createElement(Ic,{error:l}):null,no.default.createElement(Ee,null,"Open a GFF3 file of annotations, such as the one `react-msaview-cli interpro` writes, or the JSON an InterProScan run returns."," ",no.default.createElement(Si,{href:ZGe,target:"_blank",rel:"noopener noreferrer"},"How to make one")),no.default.createElement("div",{style:{display:"flex",margin:30}},no.default.createElement(hc,{component:"fieldset"},no.default.createElement(sy,{value:n,onChange:f=>{i(f.target.value)}},no.default.createElement(Zn,{value:"url",control:no.default.createElement(yc,null),label:"URL"}),no.default.createElement(Zn,{value:"file",control:no.default.createElement(yc,null),label:"File"}))),n==="url"?no.default.createElement("div",null,no.default.createElement(Ee,null,"Open an annotation file from a URL"),no.default.createElement(an,{label:"URL",value:s,onChange:f=>{a(f.target.value)}})):no.default.createElement("div",{style:{paddingTop:20}},no.default.createElement(Ee,null,"Open an annotation file from your local drive"),no.default.createElement(tt,{variant:"outlined",component:"label"},"Choose File",no.default.createElement("input",{type:"file",hidden:!0,onChange:({target:f})=>{let d=f.files?.[0];d&&r(d)}})),o?no.default.createElement(Ee,null,o.name):null))),no.default.createElement(es,null,no.default.createElement(tt,{variant:"contained",color:"primary",disabled:u||(n==="file"?!o:!s.trim()),onClick:()=>{(async()=>{p(!0),c(void 0);try{let f=await(n==="file"&&o?o.text():eVe(s));t.setGFFFilehandle(void 0),t.setGFF(a4(f)),t.setShowDomains(!0),t.setCellFill("domain"),e()}catch(f){console.error(f),c(f)}finally{p(!1)}})()}},"Open annotations"),no.default.createElement(tt,{variant:"contained",color:"secondary",onClick:()=>{e()}},"Cancel")))}),oVe=tVe});var fR,c4=A(()=>{"use strict";fR="9.4.0"});var u4={};zn(u4,{default:()=>Fme});function Fme({onClose:e}){return $r.default.createElement(lr,{open:!0,title:"About",onClose:()=>{e()}},$r.default.createElement(Jo,null,$r.default.createElement(Ee,null,"MSAView ",fR," (",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"https://github.com/gmod/react-msaview"},"Github"),")"),$r.default.createElement("ul",null,$r.default.createElement("li",null,$r.default.createElement(Ee,null,"We use some color schemes from the"," ",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"https://github.com/biotite-dev/biotite"},"biotite")," ","project, and their license is reproduced"," ",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"https://github.com/biotite-dev/biotite/blob/master/LICENSE.rst"},"here"))),$r.default.createElement("li",null,$r.default.createElement(Ee,null,"See this page for some information on jalview colorings"," ",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"https://www.jalview.org/help/html/colourSchemes/"},"here"))),$r.default.createElement("li",null,$r.default.createElement(Ee,null,"See this page for some info on the clustal, cinema, maeditor, and lesk color schemes"," ",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"http://www.bioinformatics.nl/~berndb/aacolour.html"},"here"))),$r.default.createElement("li",null,$r.default.createElement(Ee,null,"See this paper about the flower color scheme"," ",$r.default.createElement(Si,{target:"_blank",rel:"noopener",href:"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7245768/"},"here"))))))}var $r,f4=A(()=>{"use strict";$r=w(D(),1);is();We();c4()});function Em(e){let t=e.length>1;return e.flatMap(o=>[...t?[{key:o.id,label:o.title}]:[],...o.entries.map(r=>({key:`${o.id}:${r.id}`,label:r.label,color:r.color,hint:r.id}))])}var pR=A(()=>{"use strict"});function lVe(e){let t=e.reduce((r,n)=>Math.max(r,n.label.length),0),o=dR+of+t*d4;return Math.min(aVe,Math.max(120,o))}function A4(e){return of*2+e.length*p4}function AR(e,t){let{scrollX:o,scrollY:r,totalWidth:n,totalHeight:i,effectiveTreeAreaWidth:s,rowPanelsWidth:a,rowPanelsHeaderHeight:l,totalTrackAreaHeight:c,minimapHeight:u,msaAreaHeight:p,msaCanvasWidth:f,showHorizontalScrollbar:d,treeOverviewHeight:m,treeScaleBar:y}=e,b=t.includeTracks?c:0,h=t.exportType==="viewport"&&!!t.includeMinimap&&d,g=Em(e.legends),C=g.length>0?lVe(g):0,x=Math.max(h?u:0,l,m+(y?Zu:0)),v=s+a;return t.exportType==="entire"?{width:n+v,msaAreaWidth:n,height:i+b+x,contentHeight:i,trackHeight:b,topHeight:x,offsetX:0,offsetY:0,includeMinimap:h,legendWidth:C}:{width:f+v,msaAreaWidth:f,height:p+x+b,contentHeight:p,trackHeight:b,topHeight:x,offsetX:-o,offsetY:-r,includeMinimap:h,legendWidth:C}}function mR(e,t){let{width:o,height:r,legendWidth:n,topHeight:i}=t;return{width:o+n,height:n>0?Math.max(r,i+A4(Em(e.legends))):r}}var of,p4,VE,Ume,d4,aVe,dR,m4=A(()=>{"use strict";pR();Or();of=8,p4=16,VE=12,Ume=12,d4=7,aVe=360,dR=of+VE+6});function vm({checked:e,label:t,disabled:o,onChange:r}){return gR.default.createElement("div",null,gR.default.createElement(Zn,{control:gR.default.createElement(Ra,{disabled:o,checked:e,onChange:()=>{r()}}),label:t}))}var gR,g4=A(()=>{"use strict";gR=w(D(),1);We()});var Hme={};zn(Hme,{default:()=>fVe});function cVe(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var Oo,uVe,fVe,zme=A(()=>{"use strict";Oo=w(D(),1);is();We();Ie();m4();g4();uVe=H(function({model:e,onClose:t}){let[o,r]=(0,Oo.useState)(!0),[n,i]=(0,Oo.useState)(!0),[s,a]=(0,Oo.useState)("viewport"),[l,c]=(0,Oo.useState)(),[u,p]=(0,Oo.useState)(!1),f=Jt(),{turnedOnTracks:d,numColumns:m,leaves:y,showMsaLetters:b}=e,h=d.length>0,g=mR(e,AR(e,{theme:f,exportType:"entire",includeTracks:n})),C=b&&s==="entire"?m*y.length:0,x=C>1e5;return Oo.default.createElement(lr,{onClose:()=>{t()},open:!0,title:"Export SVG"},Oo.default.createElement(Jo,null,l?Oo.default.createElement(Ic,{error:l}):null,Oo.default.createElement(Ee,null,"Settings:"),Oo.default.createElement(vm,{label:"Include minimap?",disabled:s==="entire",checked:o,onChange:()=>{r(!o)}}),h?Oo.default.createElement(vm,{label:"Include tracks?",checked:n,onChange:()=>{i(!n)}}):null,Oo.default.createElement("div",null,Oo.default.createElement(hc,null,Oo.default.createElement(ty,null,"Export type"),Oo.default.createElement(sy,{value:s,onChange:v=>{let{value:I}=v.target;(I==="entire"||I==="viewport")&&a(I)}},Oo.default.createElement(Zn,{value:"entire",control:Oo.default.createElement(yc,null),label:"Entire MSA"}),Oo.default.createElement(Zn,{value:"viewport",control:Oo.default.createElement(yc,null),label:"Current viewport only"})))),x?Oo.default.createElement(cS,{severity:"warning",style:{marginTop:8}},"The entire MSA is ",Math.round(g.width),"x",Math.round(g.height)," pixels and draws"," ",Math.round(C/1e3),"k residue letters, each its own SVG element. Export may be slow or fail \u2014 zooming out far enough to hide the letters exports the same alignment as an image instead."):null),Oo.default.createElement(es,null,Oo.default.createElement(tt,{variant:"contained",color:"primary",disabled:u,startIcon:u?Oo.default.createElement(wa,{size:16,color:"inherit"}):null,onClick:()=>{p(!0),cVe(()=>{e.exportSVG({theme:f,includeMinimap:o,includeTracks:h&&n,exportType:s}).then(()=>{t()}).catch(v=>{console.error(v),c(v)}).finally(()=>{p(!1)})})}},u?"Exporting\u2026":"Export"),Oo.default.createElement(tt,{variant:"contained",color:"secondary",onClick:()=>{t()}},"Cancel")))}),fVe=uVe});var Vme={};zn(Vme,{default:()=>Gme});function Gme({model:e,onClose:t}){return hR.default.createElement(lr,{open:!0,onClose:t,title:"Go to row or column",maxWidth:"xs",fullWidth:!0},hR.default.createElement(Jo,null,hR.default.createElement(sme,{model:e,onFound:t})))}var hR,jme=A(()=>{"use strict";hR=w(D(),1);is();We();F3()});var $me,h4,Yme,Wme,qme,y4=A(()=>{"use strict";$me=["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"],h4=[{label:"Arrow keys",action:"Scroll one cell",keys:$me},{label:"Shift + arrow keys",action:"Scroll one page",keys:$me,shiftKey:!0},{label:"+ and -",action:"Zoom in and out",keys:["+","=","-"]},{label:"0",action:"Reset to the default cell size",keys:["0"]},{label:"Home and End",action:"Jump to the first and last column",keys:["Home","End"]},{label:"Escape",action:"Clear the selection",keys:["Escape"]}],Yme={label:"Shift + drag",action:"Select a block of cells"},Wme=[{label:"Drag",action:"Pan the alignment"},{label:"Wheel",action:"Scroll, or zoom with Zoom on scroll checked"},{label:"Ctrl + wheel",action:"Zoom at the cursor"},Yme,{label:"Drag along a track",action:"Select a range of columns across every row"},{label:"Click a tree node",action:"Collapse, rotate, reroot or show only that clade"},{label:"Click the tree overview",action:"Show only the clade under the pointer"},{label:"Drag a divider",action:"Resize the tree area or a track"}],qme=["Alignment",...[...h4,Yme].map(e=>`${e.label}: ${e.action}`)].join(". ")});var Xme={};zn(Xme,{default:()=>Kme});function Jme({title:e,rows:t}){return Yr.default.createElement(Yr.default.Fragment,null,Yr.default.createElement(Ee,{variant:"subtitle2",sx:{mt:1}},e),Yr.default.createElement(uy,{size:"small","aria-label":e},Yr.default.createElement(fy,null,t.map(({label:o,action:r})=>Yr.default.createElement(VA,{key:o},Yr.default.createElement(sn,{sx:{whiteSpace:"nowrap",fontWeight:500}},o),Yr.default.createElement(sn,null,r))))))}function Kme({model:e,onClose:t}){return Yr.default.createElement(lr,{open:!0,title:"Mouse & keyboard",onClose:t},Yr.default.createElement(Jo,null,Yr.default.createElement(Jme,{title:"Mouse",rows:Wme}),Yr.default.createElement(Jme,{title:"Keyboard (click the alignment first)",rows:h4})),Yr.default.createElement(es,null,Yr.default.createElement(Ee,{variant:"caption",sx:{mr:"auto",pl:1}},"MSAView ",fR),Yr.default.createElement(tt,{onClick:()=>{e.queueDialog(o=>[pVe,{onClose:o}]),t()}},"About & credits"),Yr.default.createElement(tt,{variant:"contained",onClick:t},"Close")))}var Yr,pVe,Zme=A(()=>{"use strict";Yr=w(D(),1);is();We();c4();y4();pVe=(0,Yr.lazy)(()=>Promise.resolve().then(()=>(f4(),u4)))});function jE(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!rf.default.isValidElement(e)}function b4(e){return jE(e)&&Object.keys(e).length===0}function nf({record:e,labels:t={},monospaceKeys:o}){let{classes:r,cx:n}=dVe();return rf.default.createElement("dl",{className:r.list},Object.entries(e).filter(([,i])=>i!=null&&!b4(i)).map(([i,s])=>{let a=t[i],l=jE(s);return rf.default.createElement("div",{key:i,className:r.row},rf.default.createElement("dt",{className:r.key},a??i,a&&a!==i?rf.default.createElement("span",{className:r.code},i):null),rf.default.createElement("dd",{className:n(r.value,l&&r.nested,o?.has(i)&&r.mono)},l?rf.default.createElement(nf,{record:s,labels:t,monospaceKeys:o}):Array.isArray(s)?s.join(`
624
624
  `):rf.default.isValidElement(s)?s:String(s)))}))}var rf,dVe,C4=A(()=>{"use strict";rf=w(D(),1);ln();dVe=$t()(e=>({list:{display:"grid",gridTemplateColumns:"minmax(8em, max-content) minmax(0, 1fr)",columnGap:e.spacing(3),margin:0},row:{display:"contents"},key:{fontWeight:600,padding:e.spacing(.75,0),borderTop:`1px solid ${e.palette.divider}`},code:{marginLeft:e.spacing(1),fontWeight:400,fontSize:"0.75em",fontFamily:"monospace",color:e.palette.text.secondary},value:{margin:0,padding:e.spacing(.75,0),borderTop:`1px solid ${e.palette.divider}`,whiteSpace:"pre-wrap",overflowWrap:"anywhere"},mono:{fontFamily:"monospace",fontSize:"0.85em",maxHeight:"8em",overflow:"auto"},nested:{"& > dl":{paddingLeft:e.spacing(2),borderLeft:`2px solid ${e.palette.divider}`}}}))});function $E(e,t){let o=URL.createObjectURL(e),r=document.createElement("a");r.href=o,r.download=t,r.click(),setTimeout(()=>{URL.revokeObjectURL(o)},4e4)}var x4=A(()=>{"use strict"});function ege([e,t],o){return`>${e}
625
625
  ${o?t:r4(t)}`}function hVe(e){return!/[^.-]/.test(e)}function yVe(e,t){let o=[],r=0;for(let n of e){if(o.length>=mVe||r>=gVe)break;let i=ege(n,t);o.push(i),r+=i.length+1}return{text:o.join(`
626
626
  `),hidden:e.length-o.length}}function YE({str:e}){let{classes:t}=AVe(),[o,r]=(0,Pl.useState)(!1),[n,i]=(0,Pl.useState)(!1),s=n?e:e.filter(([,u])=>o?!!u:!hVe(u)),{text:a,hidden:l}=yVe(s,o),c=()=>s.map(u=>ege(u,o)).join(`
@@ -647,7 +647,7 @@ UniProt/Swiss-Prot|Q7JFM4|IL2_AOTVO MLKPPLPLRSLLFLQLPLLGVGLNPKFLTPSGNEDIG
647
647
  UniProt/Swiss-Prot|Q29416|IL2_CANFA --------------LFLQLSLLG-------------------------------------
648
648
  `,lye="(((UniProt/Swiss-Prot|P26898|IL2RA_SHEEP:0.24036,(UniProt/Swiss-Prot|P41690|IL2RA_FELCA:0.17737,(UniProt/Swiss-Prot|P01589|IL2RA_HUMAN:0.03906,UniProt/Swiss-Prot|Q5MNY4|IL2RA_MACMU:0.03787):0.13033):0.04964):0.02189,UniProt/Swiss-Prot|P01590|IL2RA_MOUSE:0.23072):0.06814,(((UniProt/Swiss-Prot|Q95118|IL2RG_BOVIN:0.09600,UniProt/Swiss-Prot|P40321|IL2RG_CANFA:0.09845):0.25333,UniProt/Swiss-Prot|Q29416|IL2_CANFA:-0.35055):0.10231,(UniProt/Swiss-Prot|P26896|IL2RB_RAT:0.33631,UniProt/Swiss-Prot|Q7JFM4|IL2_AOTVO:-0.33631):0.10166):0.01607,(UniProt/Swiss-Prot|Q8BZM1|GLMN_MOUSE:0.32378,UniProt/Swiss-Prot|P36835|IL2_CAPHI:-0.32378):0.09999)";function tM(e,t,o,r){e.setError(void 0),t&&e.setMSAFilehandle(t),o&&e.setTreeFilehandle(o),r&&(e.setGFFFilehandle(r),e.setShowDomains(!0))}var cye="https://jbrowse.org/genomes/multiple_sequence_alignments",m8e="https://jbrowse.org/genomes/newick_trees",Pm="https://gmod.org/JBrowseMSA/demo/data",g8e=[{label:"NLRP1 in 12 mammals, with Pfam domains",msa:`${Pm}/nlrp1.aln`,tree:`${Pm}/nlrp1.nh`,gff:`${Pm}/nlrp1-domains.gff`},{label:"474 human protein kinase domains, with a FastTree tree",msa:`${Pm}/kinase-pocket/kinase-pocket.afa`,tree:`${Pm}/kinase-pocket/kinase-pocket.nwk`},{label:"RSV-A G gene in 1,840 genomes, with the Nextstrain tree",msa:`${Pm}/scale/rsv-full.aln`,tree:`${Pm}/scale/rsv-full.nh`},{label:"230k COVID-19 samples (tree only)",tree:`${m8e}/sarscov2phylo.pub.ft.nh`},{label:"Pfam SARS-CoV-2 families, multi-Stockholm with domains",msa:`${cye}/pfam-cov2.stock`,gff:`${cye}/pfam-cov2-domains.gff`},{label:"Small protein alignment and tree",inline:{msa:aye,tree:lye}}];function sH(e){return e?{uri:e,locationType:"UriLocation"}:void 0}var h8e=H(function({model:e}){return nv.default.createElement("ul",null,g8e.map(({label:t,msa:o,tree:r,gff:n,inline:i})=>nv.default.createElement("li",{key:t},nv.default.createElement(Si,{href:"#",onClick:s=>{s.preventDefault(),e.setError(void 0);try{i?e.setData(i):tM(e,sH(o),sH(r),sH(n))}catch(a){console.error(a),e.setError(a)}}},nv.default.createElement(Ee,{component:"span"},t)))))}),uye=h8e;var aH="@media (max-width: 640px)",y8e=H(function({model:e}){let[t,o]=(0,ko.useState)(),[r,n]=(0,ko.useState)(),[i,s]=(0,ko.useState)(),{error:a}=e;return ko.default.createElement(HS,{sx:{pt:2,pb:3}},ko.default.createElement(zo,{sx:{width:"50%",mb:2,[aH]:{width:"100%"}}},a?ko.default.createElement(Ic,{error:a}):null,ko.default.createElement(Ee,null,"Open an MSA file (FASTA, Stockholm, Clustal, A3M or EMF format) and/or a tree file (Newick format)."),ko.default.createElement(Ee,{color:"text.secondary"},"An MSA alone or a tree alone is enough, and a Stockholm file with an embedded tree needs no separate tree file.")),ko.default.createElement(zo,{sx:{display:"flex",justifyContent:"center",alignItems:"center",gap:"40px",[aH]:{flexDirection:"column",alignItems:"stretch",gap:"16px"}}},ko.default.createElement(zo,{sx:{width:400,display:"flex",flexDirection:"column",gap:1.5,[aH]:{width:"auto"}}},ko.default.createElement("div",null,ko.default.createElement(Ee,null,"MSA file or URL"),ko.default.createElement(aE,{inline:!0,location:t,setLocation:o})),ko.default.createElement("div",null,ko.default.createElement(Ee,null,"Tree file or URL"),ko.default.createElement(aE,{inline:!0,location:r,setLocation:n})),ko.default.createElement("div",null,ko.default.createElement(Ee,null,"Annotation GFF file or URL (optional)"),ko.default.createElement(aE,{inline:!0,location:i,setLocation:s}))),ko.default.createElement("div",null,ko.default.createElement(tt,{onClick:()=>{try{tM(e,t,r,i)}catch(l){console.error(l),e.setError(l)}},variant:"contained",color:"primary",disabled:!t&&!r},"Open")),ko.default.createElement("div",null,ko.default.createElement(Ee,null,"Examples"),ko.default.createElement(uye,{model:e}))))}),fye=y8e;var pye=H(function({model:e,error:t}){return ii.default.createElement("div",null,ii.default.createElement(Ic,{error:t}),e.importForm?ii.default.createElement(tt,{variant:"contained",color:"primary",onClick:()=>{e.reset()}},"Return to import form"):null)}),b8e=H(function({model:e,...t}){let{isLoading:o,dataInitialized:r,data:n,error:i,resetCount:s,msaFilehandle:a,treeFilehandle:l,importForm:c}=e,u=!!(n.msa||n.tree),p=!i&&!!(a||l||o);return ii.default.createElement("div",null,ii.default.createElement(Ry,{key:s,FallbackComponent:f=>ii.default.createElement(pye,{model:e,error:f.error})},r?o?ii.default.createElement(kE,{model:e,variant:"page"}):ii.default.createElement(sye,{model:e,...t}):u?ii.default.createElement(pye,{model:e,error:i}):ii.default.createElement(ii.default.Fragment,null,p?ii.default.createElement(kE,{model:e,variant:"page"}):null,c?ii.default.createElement("div",{style:{display:p?"none":void 0}},ii.default.createElement(fye,{model:e})):i?ii.default.createElement(Ic,{error:i}):null)))}),oM=b8e;var kV=w(D(),1),Gve=w(HQ(),1);var Uo=w(D(),1);LU();pi();gh();al();om();oie();pi();al();GE();function dEe(e,t,o){let r=Math.max(0,o-t+1);return e.map(([n,i])=>`>${n}
649
649
  ${i.slice(t-1,o).padEnd(r,"-")}
650
- `).join("")}var _d="rgb(128,179,230)",AEe="#d88",v9e="rgb(192, 72, 192)",T9e="rgb(204, 77, 204)",mEe="#8f8",gEe="rgb(26,204,26)",I9e="rgb(240, 128, 128)",w9e="rgb(240, 144, 72)",S9e="rgb(204, 204, 0)",hEe="rgb(26, 179, 179)";function yEe(e,t){let o=e.total(t),r=k=>e.count(t,k),n=r("W"),i=r("L"),s=r("V"),a=r("I"),l=r("M"),c=r("A"),u=r("F"),p=r("C"),f=r("H"),d=r("P"),m=r("R"),y=r("K"),b=r("Q"),h=r("E"),g=r("D"),C=r("T"),x=r("S"),v=r("G"),I=r("Y"),T=r("N"),S=n+i+s+a+l+c+u+p+f+d+I,B=y+m,R=b+h,M=h+g,Q=C+x,E=k=>k/o,O={};return E(S)>.6&&(O.W=_d,O.L=_d,O.V=_d,O.A=_d,O.I=_d,O.M=_d,O.F=_d,O.C=_d),(E(B)>.6||E(y)>.8||E(m)>.8||E(b)>.8)&&(O.K=AEe,O.R=AEe),(E(B)>.6||E(R)>.5||E(h)>.8||E(b)>.8||E(g)>.8)&&(O.E=v9e),(E(B)>.6||E(M)>.5||E(y)>.8||E(m)>.8||E(b)>.8)&&(O.D=T9e),(E(T)>.5||E(I)>.85)&&(O.N=mEe),(E(B)>.6||E(R)>.6||E(b)>.85||E(h)>.85||E(y)>.85||E(m)>.85)&&(O.Q=mEe),(E(S)>.6||E(Q)>.5||E(x)>.85||E(C)>.85)&&(O.S=gEe,O.T=gEe),E(p)>.85&&(O.C=I9e),v>0&&(O.G=w9e),d>0&&(O.P=S9e),(E(S)>.6||E(n)>.85||E(I)>.85||E(c)>.85||E(p)>.85||E(d)>.85||E(b)>.85||E(u)>.85||E(f)>.85||E(a)>.85||E(i)>.85||E(l)>.85||E(s)>.85)&&(O.H=hEe,O.Y=hEe),O}j7();tb();Rc();var bEe={A:sc[500],C:ic[500],G:Au[500],T:hl[500],U:hl[500]},B9e={none:{},nucleotide:bEe,clustal:{G:"orange",P:"orange",S:"orange",T:"orange",H:"red",K:"red",R:"red",F:"blue",W:"blue",Y:"blue",I:"green",L:"green",M:"green",V:"green"},lesk:{G:"orange",A:"orange",S:"orange",T:"orange",C:"green",V:"green",I:"green",L:"green",P:"green",F:"green",Y:"green",M:"green",W:"green",N:"magenta",Q:"magenta",H:"magenta",D:"red",E:"red",K:"blue",R:"blue"},maeditor:{A:"lightgreen",G:"lightgreen",C:"green",D:"darkgreen",E:"darkgreen",N:"darkgreen",Q:"darkgreen",I:"blue",L:"blue",M:"blue",V:"blue",F:"#c8a2c8",W:"#c8a2c8",Y:"#c8a2c8",H:"darkblue",K:"orange",R:"orange",P:"pink",S:"red",T:"red"},percent_identity_dynamic:{},blosum62_dynamic:{},flower:{A:"#b18a51",C:"#ff5701",D:"#01a578",E:"#2da0a1",F:"#fa559d",G:"#b1c23c",H:"#0194f9",I:"#f27663",K:"#7fc3d7",L:"#df6e75",M:"#fe9daf",N:"#0bcec6",P:"#4fa32a",Q:"#7295ae",R:"#83bff1",S:"#b4bd9b",T:"#d2b576",V:"#fd997b",W:"#ff2ded",Y:"#c96ecf"},rainbow_dna:{A:"#3737f5",C:"#37f537",G:"#f5f537",T:"#f53737",U:"#f53737"},clustalx_protein:{A:"#197fe5",C:"#e57f7f",D:"#cc4ccc",E:"#cc4ccc",F:"#197fe5",G:"#e5994c",H:"#19b2b2",I:"#197fe5",K:"#e53319",L:"#197fe5",M:"#197fe5",N:"#19cc19",P:"#cccc00",Q:"#19cc19",R:"#e53319",S:"#19cc19",T:"#19cc19",V:"#197fe5",W:"#197fe5",Y:"#19b2b2"},clustalx_protein_dynamic:{},clustalx_dna:{A:"#e53319",C:"#197fe5",G:"#e5994c",T:"#19cc19",U:"#19cc19"},jbrowse_dna:bEe,jalview_buried:{A:"#00a35c",R:"#00fc03",N:"#00eb14",D:"#00eb14",C:"#0000ff",Q:"#00f10e",E:"#00f10e",G:"#009d62",H:"#00d52a",I:"#0054ab",L:"#007b84",K:"#00ff00",M:"#009768",F:"#008778",P:"#00e01f",S:"#00d52a",T:"#00db24",W:"#00a857",Y:"#00e619",V:"#005fa0",B:"#00eb14",X:"#00b649",Z:"#00f10e"},jalview_hydrophobicity:{A:"#ad0052",R:"#0000ff",N:"#0c00f3",D:"#0c00f3",C:"#c2003d",Q:"#0c00f3",E:"#0c00f3",G:"#6a0095",H:"#1500ea",I:"#ff0000",L:"#ea0015",K:"#0000ff",M:"#b0004f",F:"#cb0034",P:"#4600b9",S:"#5e00a1",T:"#61009e",W:"#5b00a4",Y:"#4f00b0",V:"#f60009",B:"#0c00f3",X:"#680097",Z:"#0c00f3"},jalview_prophelix:{A:"#e718e7",R:"#6f906f",N:"#1be41b",D:"#778877",C:"#23dc23",Q:"#926d92",E:"#ff00ff",G:"#00ff00",H:"#758a75",I:"#8a758a",L:"#ae51ae",K:"#a05fa0",M:"#ef10ef",F:"#986798",P:"#00ff00",S:"#36c936",T:"#47b847",W:"#8a758a",Y:"#21de21",V:"#857a85",B:"#49b649",X:"#758a75",Z:"#c936c9"},jalview_propstrand:{A:"#5858a7",R:"#6b6b94",N:"#64649b",D:"#2121de",C:"#9d9d62",Q:"#8c8c73",E:"#0000ff",G:"#4949b6",H:"#60609f",I:"#ecec13",L:"#b2b24d",K:"#4747b8",M:"#82827d",F:"#c2c23d",P:"#2323dc",S:"#4949b6",T:"#9d9d62",W:"#c0c03f",Y:"#d3d32c",V:"#ffff00",B:"#4343bc",X:"#797986",Z:"#4747b8"},jalview_propturn:{A:"#2cd3d3",R:"#708f8f",N:"#ff0000",D:"#e81717",C:"#a85757",Q:"#3fc0c0",E:"#778888",G:"#ff0000",H:"#708f8f",I:"#00ffff",L:"#1ce3e3",K:"#7e8181",M:"#1ee1e1",F:"#1ee1e1",P:"#f60909",S:"#e11e1e",T:"#738c8c",W:"#738c8c",Y:"#9d6262",V:"#07f8f8",B:"#f30c0c",X:"#7c8383",Z:"#5ba4a4"},jalview_taylor:{A:"#ccff00",R:"#0000ff",N:"#cc00ff",D:"#ff0000",C:"#ffff00",Q:"#ff00cc",E:"#ff0066",G:"#ff9900",H:"#0066ff",I:"#66ff00",L:"#33ff00",K:"#6600ff",M:"#00ff00",F:"#00ff66",P:"#ffcc00",S:"#ff3300",T:"#ff6600",W:"#00ccff",Y:"#00ffcc",V:"#99ff00"},jalview_zappo:{A:"#ffafaf",R:"#6464ff",N:"#00ff00",D:"#ff0000",C:"#ffff00",Q:"#00ff00",E:"#ff0000",G:"#ff00ff",H:"#6464ff",I:"#ffafaf",L:"#ffafaf",K:"#6464ff",M:"#ffafaf",F:"#ffc800",P:"#ff00ff",S:"#00ff00",T:"#00ff00",W:"#ffc800",Y:"#ffc800",V:"#ffafaf"},cinema:{H:"blue",K:"blue",R:"blue",D:"red",E:"red",S:"green",T:"green",N:"green",Q:"green",A:"white",V:"white",L:"white",I:"white",M:"white",F:"magenta",W:"magenta",Y:"magenta",P:"brown",G:"brown",C:"yellow",B:"gray",Z:"gray",X:"gray","-":"gray",".":"gray"}},nV=N_(B9e,([e,t])=>[e,N_(t,([o,r])=>[o,cr(r).toHex()])]),CEe=new WeakMap;function xEe(e){let t=CEe.get(e);return t||(t=N_(e,([o,r])=>[o.toUpperCase(),r]),CEe.set(e,t)),t}BE();function EEe({col:e,colStats:t,conservation:o,propertyConservation:r}){if(e>=t.numColumns)return;let n=t.total(e);if(!n)return;let i=t.gapCount(e),s=t.residueEntries(e).sort((l,c)=>c[1]-l[1]),a=s[0];return{col:e,total:n,gaps:i,gapFraction:i/n,conservation:o[e]??0,propertyConservation:r[e],consensusLetter:a?.[0]??"",consensusCount:a?.[1]??0,consensusFraction:a?a[1]/n:0,distribution:s}}function uC(e){let t=[],o=new Array(e.length),r=e.map((n,i)=>i).sort((n,i)=>e[n].startCol-e[i].startCol);for(let n of r){let{startCol:i,endCol:s}=e[n],a=t.findIndex(c=>c<=i),l=a===-1?t.length:a;t[l]=s,o[n]=l}return e.map((n,i)=>({...n,lane:o[i],laneCount:t.length}))}ME();ZE();function vEe(e,t){if(e<=0||t<20)return;let o=t/2/e,r=10**Math.floor(Math.log10(o)),n=o/r,i=(n>=5?5:n>=2?2:1)*r,s=i*e;return s>t?void 0:{step:i,px:s,label:`${Number(i.toPrecision(2))}`}}Or();tb();var _9e=[["#F8766D"],["#F8766D","#00BFC4"],["#F8766D","#00BA38","#619CFF"],["#F8766D","#7CAE00","#00BFC4","#C77CFF"],["#F8766D","#A3A500","#00BF7D","#00B0F6","#E76BF3"],["#F8766D","#B79F00","#00BA38","#00BFC4","#619CFF","#F564E3"],["#F8766D","#C49A00","#53B400","#00C094","#00B6EB","#A58AFF","#FB61D7"],["#F8766D","#CD9600","#7CAE00","#00BE67","#00BFC4","#00A9FF","#C77CFF","#FF61CC"]],IEe=_9e,iV={set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],okabeito:["#e69f00","#56b4e9","#009e73","#f0e442","#0072b2","#d55e00","#cc79a7","#000000"],tableau:["#4e79a7","#f28e2b","#e15759","#76b7b2","#59a14f","#edc948","#b07aa1","#ff9da7","#9c755f","#bab0ac"]},TEe={okabeIto:"okabeito",tableau10:"tableau"};function sV(e){return e===void 0?void 0:Object.hasOwn(iV,e)?iV[e]:Object.hasOwn(TEe,e)?iV[TEe[e]]:void 0}function zQ(e,t){let o=e.length,r=t??IEe[o-1];return r&&o<=r.length?Object.fromEntries(e.map((n,i)=>[n,r[i]])):Object.fromEntries(e.map((n,i)=>[n,cr({h:i*360/o,s:60,l:60}).toHex()]))}function aV(e,t,o="image"){let r=e;return`${(r?.uri??r?.localPath??r?.name)?.split(/[?#]/)[0]?.split(/[/\\]/).pop()?.replace(/\.[^.]*$/,"")||o}.${t}`}Or();Rc();var R9e="#d9d9d9",M9e=.1;function lV(e,t){return e.width??(e.kind==="features"?XAe:t.rowHeight)}function SEe(e){if(typeof e!="object"||e===null)return;let t={};for(let[o,r]of Object.entries(e))typeof r=="string"?t[o]=r:(typeof r=="number"||typeof r=="boolean")&&(t[o]=String(r));return t}function GQ(e,t,o){let r=new Map;for(let[n,i]of Object.entries(e)){let s=i?.[t],a=s===void 0?void 0:o(s);a&&r.set(n,a)}return r}function cV(e,t,o){let r=new Map,n=i=>{let s=r.get(i);if(s!==void 0)return s;let a=k_(i);return r.set(i,a),a};return new Map(e.map(i=>{let s=t?af(i,t.field):void 0,a=i.color??(s===void 0?void 0:t.colorOf(s))??(t?R9e:o[i.accession]);return[i,{fill:a,stroke:n(a)}]}))}function uV(e,t){let o=new Map;for(let r of e){let n=af(r,t);n!==void 0&&o.set(r,n)}return o}function Q9e(e){let t=e.map(([i,s])=>{let a=uC(s.filter(c=>c.annotation.strand===-1)),l=uC(s.filter(c=>c.annotation.strand!==-1));return{name:i,forward:l,reverse:a}}),o=Math.max(0,...t.map(i=>i.forward[0]?.laneCount??0)),r=Math.max(0,...t.map(i=>i.reverse[0]?.laneCount??0)),n=o+r;return new Map(t.map(({name:i,forward:s,reverse:a})=>[i,[...s.map(l=>({...l,lane:o-1-l.lane,laneCount:n})),...a.map(l=>({...l,lane:o+l.lane,laneCount:n}))]]))}function wEe(e,t){return e.position==="strandpile"?Q9e(t):new Map(t.map(([o,r])=>[o,uC(r)]))}function BEe({panel:e,width:t,colWidth:o,domainBands:r,annotationsByRow:n,shifts:i}){if(e.x==="column")return wEe(e,[...r].map(([p,f])=>[p,f.map(d=>({...d,xStart:d.startCol*o,xEnd:d.endCol*o}))]));let s=Object.entries(n).map(([p,f])=>{let d=i?.get(p)??0;return[p,f.map(m=>({annotation:m,start:m.start-1+d,end:m.end+d}))]}),a=1/0,l=-1/0;for(let[,p]of s)for(let{start:f,end:d}of p)a=Math.min(a,f),l=Math.max(l,d);let c=Math.max(1,t-1),u=l>a?c/(l-a):0;return wEe(e,s.map(([p,f])=>[p,f.map(({annotation:d,start:m,end:y})=>({annotation:d,xStart:(m-a)*u,xEnd:(y-a)*u,startCol:m,endCol:y-(y-m)*M9e}))]))}var P9e=new Set(["row","start","end"]),_Ee=new WeakMap;function REe(e){return e.map(t=>{let o=_Ee.get(t);if(o)return o;let r=D9e(t);return _Ee.set(t,r),r})}function D9e(e){let{row:t,start:o,end:r,name:n,description:i,type:s,strand:a,color:l}=e,c=n??`${t}:${o}-${r}`,u=Object.fromEntries(Object.entries(e).filter(([p,f])=>!P9e.has(p)&&f!==void 0).map(([p,f])=>[p,String(f)]));return{id:t,accession:c,name:n??c,description:i??n??c,featureType:s,start:o,end:r,strand:a==="+"?1:a==="-"?-1:void 0,color:l,attributes:u}}vpe();pi();al();om();function O9e(e){return typeof e=="string"?e:e?.message}async function MEe(e,t,{fetcher:o=PU,controller:r=new AbortController}={}){try{return await o(e,{signal:r.signal,statusCallback:n=>{let i=O9e(n);t(i?{msg:i,onCancel:()=>{r.abort()}}:void 0)}})}finally{t(void 0)}}function QEe(e){return e instanceof DOMException&&e.name==="AbortError"}function k9e(e){let t;return{cancel(){let o=t!==void 0&&!t.ended;return t?.controller.abort(),t=void 0,o},begin(){t?.controller.abort();let o={controller:new AbortController,ended:!1};return t=o,{controller:o.controller,isCurrent:()=>!o.ended&&o===t&&cl(e),end(){o.ended=!0}}}}}function sT(e,{what:t,getFilehandle:o,onLoad:r,setLoading:n,clearFilehandle:i,optional:s=!1}){let a=k9e(e),l=()=>{a.cancel()&&cl(e)&&e.setStatus(void 0)};au(e,l),au(e,Jl(async()=>{let c=o();if(l(),!c){n?.(!1);return}let{controller:u,isCurrent:p,end:f}=a.begin();try{n?.(!0),s||e.setError(void 0);let d=await MEe(q5(c),m=>{p()&&e.setStatus(m)},{controller:u});p()&&_r(()=>{r(d),c.locationType==="BlobLocation"&&i?.()})}catch(d){p()&&(QEe(d)?i?.():(console.error(d),s?e.addWarning(`The ${t} did not load: ${d}`):e.setError(d)))}finally{p()&&n?.(!1),f()}}))}fb();pi();Or();function PEe(e=X_){return $.model({tree:$.maybe($.string),msa:$.maybe($.string),treeMetadata:$.maybe($.string),gff:$.maybe($.string)}).actions(t=>({setTree(o){t.tree=o},setMSA(o){t.msa=o},setTreeMetadata(o){t.treeMetadata=o},setGFF(o){t.gff=o}})).postProcessSnapshot(t=>Object.fromEntries(Object.entries(t).map(([o,r])=>[o,r&&r.length>e?void 0:r])))}pi();function DEe(){return $.model("DialogQueueSessionMixin",{}).volatile(()=>({queueOfDialogs:[]})).views(e=>({get DialogComponent(){return e.queueOfDialogs[0]?.[0]},get DialogProps(){return e.queueOfDialogs[0]?.[1]}})).actions(e=>({removeActiveDialog(){e.queueOfDialogs=e.queueOfDialogs.slice(1)},queueDialog(t){let[o,r]=t(()=>{this.removeActiveDialog()});e.queueOfDialogs=[...e.queueOfDialogs,[o,r]]}}))}pi();Or();pi();function pt(e,t){return typeof $.stripDefault=="function"?$.stripDefault(e,t):$.optional(e,t)}var N9e=["stockholm","a3m","fasta","emf","clustal"];function OEe(){return $.model({bgColor:pt($.boolean,DAe),colorSchemeName:pt($.string,q_),customColorScheme:$.frozen(),showColumnStats:pt($.boolean,OAe),msaFormat:$.maybe($.enumeration("MSAFormat",N9e))}).actions(e=>({setColorSchemeName(t){e.colorSchemeName=t,e.customColorScheme=void 0},setCustomColorScheme(t){e.customColorScheme=t},setBgColor(t){e.bgColor=t},setShowColumnStats(t){e.showColumnStats=t},setMSAFormat(t){e.msaFormat=t}}))}pi();Or();function kEe(){return $.model({drawLabels:pt($.boolean,kAe),labelsAlignRight:pt($.boolean,NAe),treeAreaWidth:$.maybe($.number),treeWidth:$.maybe($.number),showBranchLen:pt($.boolean,HAe),treeOrder:pt($.enumeration("TreeOrder",[...K_]),zAe),drawTree:pt($.boolean,GAe),drawNodeBubbles:pt($.boolean,VAe),drawNodeLabels:pt($.boolean,jAe),showTreeOverview:pt($.boolean,$Ae),showTreeScaleBar:pt($.boolean,YAe),overviewHeight:pt($.number,WAe)}).actions(e=>({setTreeAreaWidth(t){e.treeAreaWidth=t===void 0?void 0:Math.round(t),e.treeWidth=void 0},setTreeWidth(t){e.treeWidth=t===void 0?void 0:Math.round(t)},setLabelsAlignRight(t){e.labelsAlignRight=t},setDrawTree(t){e.drawTree=t},setShowBranchLen(t){e.showBranchLen=t},setTreeOrder(t){e.treeOrder=t},setDrawNodeBubbles(t){e.drawNodeBubbles=t},setDrawNodeLabels(t){e.drawNodeLabels=t},setShowTreeOverview(t){e.showTreeOverview=t},setShowTreeScaleBar(t){e.showTreeScaleBar=t},setDrawLabels(t){e.drawLabels=t}}))}var NEe="ARNDCQEGHILKMFPSTWYVBZX*",L9e=[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,-4],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1,-4],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2,-4],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4],[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1]],Xa=NEe.length,aT=Int8Array.from(L9e.flat()),fC=new Int8Array(128).fill(-1);for(let e=0;e<Xa;e++){let t=NEe[e];fC[t.charCodeAt(0)]=e,fC[t.toLowerCase().charCodeAt(0)]=e}var VQ=-2;function LEe(e,t){if(t>=e.length)return VQ;let o=e.charCodeAt(t);return o-45>>>0<=1?VQ:o<128?fC[o]:-1}function fV(e,t){return e<0||t<0?-4:aT[e*Xa+t]}function F9e(e,t){let o=Math.max(e.length,t.length),r=0,n=0,i=0;for(let l=0;l<o;l++){let c=LEe(e,l),u=LEe(t,l),p=c===VQ,f=u===VQ;p&&f||(r++,!(p||f)&&(n+=fV(c,u),i+=Math.max(fV(c,c),fV(u,u))))}if(r===0||i<=0)return 1;let s=n/i,a=Math.max(.01,Math.min(1,s));return-Math.log(a)}function U9e(e){let t=e.length,o=[];for(let r=0;r<t;r++){o[r]=[];for(let n=0;n<t;n++)r===n?o[r][n]=0:n<r?o[r][n]=o[n][r]:o[r][n]=F9e(e[r][1],e[n][1])}return o}function H9e(e,t){let o=e.length;if(o<2)return{name:t[0]};if(o===2){let a=e[0][1];return{left:{name:t[0]},right:{name:t[1]},leftLength:a/2,rightLength:a/2}}let r=[];for(let a=0;a<o;a++)r[a]=[...e[a]];let n=t.map(a=>({name:a})),i=o;for(;i>2;){let a=[];for(let g=0;g<n.length;g++)n[g]!==void 0&&a.push(g);let l=new Map;for(let g of a){let C=0;for(let x of a)g!==x&&(C+=r[g][x]);l.set(g,C)}let c=1/0,u=-1,p=-1;for(let g=0;g<a.length;g++)for(let C=g+1;C<a.length;C++){let x=a[g],v=a[C],I=(i-2)*r[x][v]-l.get(x)-l.get(v);I<c&&(c=I,u=x,p=v)}let f=r[u][p],d=l.get(u),m=l.get(p),y=f/2+(d-m)/(2*(i-2)),b=f-y;y=Math.max(0,y),b=Math.max(0,b);let h={left:n[u],right:n[p],leftLength:y,rightLength:b};for(let g of a)if(g!==u&&g!==p){let C=(r[u][g]+r[p][g]-f)/2;r[u][g]=Math.max(0,C),r[g][u]=Math.max(0,C)}n[p]=void 0,n[u]=h,i--}let s=[];for(let a=0;a<n.length;a++)n[a]!==void 0&&s.push(a);if(s.length===2){let a=s[0],l=s[1],c=r[a][l];return{left:n[a],right:n[l],leftLength:c/2,rightLength:c/2}}return n[s[0]]}function FEe(e,t){return t===void 0?e:`${e}:${t.toFixed(6)}`}function z9e(e){let t=[],o=[e];for(;o.length>0;){let n=o.pop();t.push(n),n.left&&o.push(n.left),n.right&&o.push(n.right)}let r=new Map;for(let n=t.length-1;n>=0;n--){let i=t[n];if(i.name!==void 0&&!i.left&&!i.right)r.set(i,`'${i.name.replaceAll("'","''")}'`);else{let s=i.left?FEe(r.get(i.left),i.leftLength):"",a=i.right?FEe(r.get(i.right),i.rightLength):"";r.set(i,`(${s},${a})`)}}return r.get(e)}function UEe(e){if(e.length<2)throw new Error("Need at least 2 sequences to build a tree");let t=e.map(n=>n[0]),o=U9e(e),r=H9e(o,t);return z9e(r)+";"}BE();var HEe={A:"hydrophobic",V:"hydrophobic",L:"hydrophobic",I:"hydrophobic",M:"hydrophobic",C:"hydrophobic",F:"aromatic",W:"aromatic",Y:"aromatic",H:"aromatic",K:"positive",R:"positive",D:"negative",E:"negative",S:"polar",T:"polar",N:"polar",Q:"polar",G:"special",P:"special"},pV=[...new Set(Object.values(HEe))],G9e=Math.log2(pV.length),zEe=new Int8Array(__).fill(-1);for(let[e,t]of Object.entries(HEe))zEe[Rde(e)]=pV.indexOf(t);function GEe(e){let t=new Float64Array(pV.length);return Array.from({length:e.numColumns},(o,r)=>{let n=e.total(r),i=0;if(n){t.fill(0);let s=0;if(e.forEachResidue(r,(a,l)=>{let c=zEe[a];c>=0&&(t[c]+=l,s+=l)}),s>0){let a=0;for(let c of t)if(c>0){let u=c/s;a-=u*Math.log2(u)}let l=(n-s)/n;i=Math.max(0,1-a/G9e)*(1-l)}}return i})}function pC(e,t){let o=[],r=[e];for(;r.length>0;){let n=r.pop();o.push(n);for(let i of n.children??[])t?.set(i,n),r.push(i)}return o}function VEe(e){return e.some(t=>t.length!==void 0)}function V9e(e,t){return e.children?.length===2?e.children.find(o=>o!==t):void 0}function jQ(e,t,o){let r=new Map,n=pC(e,r);if(!r.has(t))return e;let i=VEe(n),s=r.get(t)===e?V9e(e,t):void 0,a=(t.length??0)+(s?.length??0),l=Math.min(Math.max(o??a/2,0),a),c=f=>i?f:void 0,u=[t];for(let f=r.get(t);f;f=r.get(f))u.push(f);let p;for(let f=u.length-1;f>=1;f--){let d=u[f],m=u[f-1],y=d.children.filter(b=>b!==m);if(p&&y.push(p),y.length===0)p=void 0;else if(f===u.length-1&&y.length===1){let b=y[0];p={...b,length:c((b.length??0)+(m.length??0)-(f===1?l:0))}}else p={...d,name:f===1?void 0:m.name,children:y,length:c((m.length??0)-(f===1?l:0))}}return{children:[{...t,length:c(l)},...p?[p]:[]]}}function jEe(e){let t=new Map,o=pC(e,t),r=o.filter(y=>!y.children?.length);if(r.length<2)return e;let n=VEe(o),i=y=>n?y.length??0:1;function s(y){let b=new Map([[y,0]]),h=new Map,g=[y];for(;g.length>0;){let C=g.pop(),x=b.get(C),v=t.get(C);v&&!b.has(v)&&(b.set(v,x+i(C)),h.set(v,C),g.push(v));for(let I of C.children??[])b.has(I)||(b.set(I,x+i(I)),h.set(I,C),g.push(I))}return{dist:b,via:h}}function a(y){return r.reduce((b,h)=>y.get(h)>y.get(b)?h:b)}let l=a(s(r[0]).dist),{dist:c,via:u}=s(l),p=a(c);if(p===l)return e;let f=c.get(p)/2,d=p,m=u.get(d);for(;c.get(m)>f;)d=m,m=u.get(d);return t.get(d)===m?jQ(e,d,c.get(d)-f):jQ(e,m,f-c.get(m))}function dV(e,t){let o=0,r=e;for(;o<r;){let n=o+r>>>1;t(n)?r=n:o=n+1}return o}function $Ee(e,t){return t+dV(e.length,o=>e[o]-o>t)}function YEe(e,t){let o=WEe(e,t);return e[o]===t?void 0:t-o}function WEe(e,t){return dV(e.length,o=>e[o]>=t)}function dC(e,t){return t-WEe(e,t)}function qEe(e,t){if(!e)return;let o=dV(e.length,r=>e[r]>=t);return e[o]===t?o:void 0}tb();var JEe=/^-?\d+(\.\d+)?$/,KEe=/\d+|\D+/g;function j9e(e,t){let o=e.match(KEe)??[],r=t.match(KEe)??[],n=Math.min(o.length,r.length);for(let i=0;i<n;i++){let s=o[i],a=r[i];if(s!==a){if(/^\d/.test(s)&&/^\d/.test(a)){let l=Number(s),c=Number(a);return l!==c?l<c?-1:1:s.length<a.length?-1:1}return s<a?-1:1}}return o.length-r.length}function XEe(e,t){if(e===t)return 0;if(e===""||t==="")return e===""?1:-1;let o=JEe.test(e),r=JEe.test(t);if(o!==r)return o?-1:1;if(o){let n=Number(e)-Number(t);if(n!==0)return n<0?-1:1}return j9e(e,t)}function $9e(e){if(typeof e!="string")return e;if(sV(e))return;let t=e.split(/,(?![^(]*\))/).map(o=>o.trim());return t.every(o=>cr(o).isValid())?t:void 0}function Y9e(e,t){let o=$9e(e);return o?new Map(t.slice(0,o.length).map((r,n)=>[r,o[n]])):new Map(Object.entries(zQ(t,sV(typeof e=="string"?e:void 0))))}function ZEe(e,t){let o=new Set(t),r=new Set(e?.domain),n=[...r,...[...o].filter(s=>!r.has(s)).sort(XEe)],i=Y9e(e?.range,n);return{kind:"categorical",colorOf:s=>i.get(s),legend:n.filter(s=>o.has(s)&&i.has(s)).map(s=>({id:s,label:s,color:i.get(s)}))}}function mV({spec:e,field:t,table:o}){let{scale:r="categorical",domain:n,range:i,title:s=t}=e;return JSON.stringify([o,r,n,i,s])}function eve(e){let t=new Map;for(let o of e){let r=mV(o);t.set(r,[...t.get(r)??[],o])}return new Map([...t].map(([o,r])=>{let{spec:n,field:i}=r[0],s=ZEe(n,r.flatMap(c=>c.values)),a=r[0].shown?new Set(r.flatMap(c=>c.shown??[])):void 0,l={...s,key:o,title:n.title??i,legend:a?s.legend.filter(c=>a.has(c.id)):s.legend};return[o,l]}))}function AV(e){let{scale:t,legend:o,...r}=e;if(typeof t!="object"&&o===void 0)return e;let n=typeof t!="object"?t===void 0?{}:{scale:t}:t.map?{domain:Object.keys(t.map),range:Object.values(t.map)}:t.palette===void 0?{}:{range:t.palette};return{...o===void 0?{}:{title:o},...n,...r}}function gV(e){return AV(e)}function hV(e){if(e.kind==="strip")return AV(e);let t=e.encoding?.color;return t?{...e,encoding:{...e.encoding,color:AV(t)}}:e}function yV(e){let{max:t,colors:o,...r}=e;return t===void 0&&o===void 0?e:{...o?{encoding:{color:{domain:Object.keys(o),range:Object.values(o)}}}:{},...t===void 0?{}:{scales:{y:{domainMax:t}}},...r}}function bV(e,t){return Object.fromEntries(ZEe(e,t).legend.map(o=>[o.id,o.color]))}function $Q(e){return"map"in e?e.map:bV(e,e.domain??[])}function tve(e){let t=new Int32Array(e.length),o=0;for(let r=0;r<e.length;r++)e.charCodeAt(r)-45>>>0<=1||(t[o++]=r);return t.slice(0,o)}M_();BE();var rve=20,W9e=240,q9e=50,ove=96,J9e=40,nve=new Float32Array(Xa*Xa);for(let e=0;e<Xa;e++){let t=1/0,o=-1/0;for(let r=0;r<rve;r++){let n=aT[e*Xa+r];t=Math.min(t,n),o=Math.max(o,n)}for(let r=0;r<Xa;r++){let n=(aT[e*Xa+r]-t)/(o-t);nve[e*Xa+r]=Math.min(Math.max(n,0),1)}}var YQ=Int8Array.from({length:__},(e,t)=>{let o=gm(t);return o.length===1?fC[o.charCodeAt(0)]:-1});function K9e(e){let t=Math.round(ove-(ove-J9e)*e);return`hsl(${W9e}, ${q9e}%, ${t}%)`}function ive(e,t,o){let{counted:r,shaded:n,score:i}=o,s=[],a=0;e.forEachResidue(t,(c,u)=>{r(c)&&(s.push([c,u]),a+=u)});let l={};if(a<2)return l;for(let[c]of s)if(n(c)){let u=-i(c,c);for(let[p,f]of s)u+=f*i(c,p);l[gm(c)]=K9e(u/(a-1))}return l}var X9e={counted:e=>YQ[e]>=0,shaded:e=>YQ[e]<rve,score:(e,t)=>nve[YQ[e]*Xa+YQ[t]]},Z9e={counted:()=>!0,shaded:()=>!0,score:(e,t)=>e===t?1:0};function sve(e,t){return ive(e,t,X9e)}function ave(e,t){return ive(e,t,Z9e)}zR();var lve=100;function cve(e){let t=[],o=0,r=[[e,0]];for(let n=r.pop();n;n=r.pop()){let[i,s]=n,{children:a}=i;if(a.length>0)for(let l of a)r.push([l,s+1]);else t.push(i.name),o=Math.max(o,s)}return{names:t,depth:o}}function uve(e,t){let o=[];for(let s of e)o[s.length]=(o[s.length]??0)+1;let r=o.length;for(let s=0;r>0&&s<lve;)r--,s+=o[r]??0;let n=0,i=0;for(let s of e)(s.length>r||s.length===r&&i++<lve)&&(n=Math.max(n,Mm(s,t)));return n}GE();Or();function fve(e){let t=new Map(e.map(r=>{let n=r.dist===void 0?void 0:Number(r.dist);return[r.id,{id:`${r.id}`,name:r.label||`${r.id}`,...n!==void 0&&Number.isFinite(n)?{length:n}:{},children:[]}]})),o;for(let r of e){let n=t.get(r.id),i=r.parent!==void 0?t.get(r.parent):void 0;i?i.children.push(n):o??=n}if(o===void 0)throw new Error("could not build tree from flat node list: no root found (input was empty or contains a parent cycle)");return o}fb();var eYe={$NODE_COLLAPSED:"collapsed",$NODE_COLOR:"color",$LABEL_BG_COLOR:"color","seq-id":"seqId","seq-title":"seqTitle","align-index":"alignIndex","accession-nbr":"accessionNbr","blast-name":"blastName","common-name":"commonName","leaf-count":"leafCount"};function xV(e,t){let o=1,r=t+1;for(;r<e.length&&o>0;)e[r]==="{"?o++:e[r]==="}"&&o--,r++;return o===0?r:-1}function CV(e){let t=[],o=0;for(;o<e.length;){let r=e.indexOf("{",o);if(r===-1)break;let n=xV(e,r);if(n===-1)break;t.push(e.slice(r+1,n-1).trim()),o=n}return t}function tYe(e,t){let o=e.indexOf("{",t);if(o===-1)return;let r=xV(e,o);return r===-1?void 0:e.slice(o+1,r-1).trim()}function pve(e){let t=e.replace(/\s+/g," ").replace(/\s*{\s*/g,"{").replace(/\s*}\s*/g,"}").replace(/\s*,\s*/g,",").replace(/\s*::\s*=\s*/g,"::=").replace(/^.*?::=/,""),o=oYe(t),{fdict:r,nodes:n}=o;if(r===void 0||n===void 0)throw new Error(`invalid BioTreeContainer ASN.1: missing '${r===void 0?"fdict":"nodes"}' section`);let i=Object.fromEntries(CV(r).flatMap(s=>{let a=rYe(s);return a?[[a.id,eYe[a.name]||a.name]]:[]}));return CV(n).flatMap(s=>{let a=nYe(s);if(!a)return[];let{features:l=[],...c}=a;return[{...c,...Object.fromEntries(l.map(u=>[i[u.featureid],u.value]))}]})}function oYe(e){let t={},o=e.trim();o.startsWith("{")&&o.endsWith("}")&&(o=o.slice(1,-1).trim());let r=0;for(;r<o.length;){for(;r<o.length&&/\s/.test(o[r]);)r++;if(r>=o.length)break;let n=r;for(;r<o.length&&/\w/.test(o[r]);)r++;if(r>=o.length||o[r]!==" "&&o[r]!=="{"){r=o.indexOf(",",r),r=r===-1?o.length:r+1;continue}let i=o.slice(n,r).trim();for(;r<o.length&&/\s/.test(o[r]);)r++;if(r>=o.length||o[r]!=="{"){r=o.indexOf(",",r),r=r===-1?o.length:r+1;continue}let s=xV(o,r);if(s===-1)break;t[i]=o.slice(r+1,s-1).trim(),r=o.indexOf(",",s),r=r===-1?o.length:r+1}return t}function rYe(e){let t=/id\s+(\d+)/.exec(e),o=/name\s+"((?:[^"\\]|\\.)*)"/s.exec(e);return!t||!o?null:{id:parseInt(t[1],10),name:o[1].replace(/\\"/g,'"').replace(/\\\\/g,"\\")}}function nYe(e){let t=/id\s+(\d+)/.exec(e);if(!t)return null;let o=/parent\s+(\d+)/.exec(e),r=e.indexOf("features"),n=r!==-1?tYe(e,r):void 0;return{id:parseInt(t[1],10),...o?{parent:parseInt(o[1],10)}:{},features:n?CV(n).flatMap(i=>{let s=iYe(i);return s?[s]:[]}):[]}}function iYe(e){let t=/featureid\s+(\d+)/.exec(e),o=/value\s+"((?:[^"\\]|\\.)*)"/s.exec(e);return!t||!o?null:{featureid:parseInt(t[1],10),value:o[1].replace(/\\"/g,'"').replace(/\\\\/g,"\\")}}Rc();function dve(e){return e.startsWith("BioTreeContainer")?fve(pve(e)):xm(e.startsWith("SEQ")?rR(e).tree:e)}var sYe=new Set(["collapse","focus","rotate"]);function aYe(e){let t=new Map,o=0,r=(i,s)=>{for(let a=s.length-1;a>=0;a--)i.push(s[a])},n=[e];for(;n.length>0;){let i=n.pop();if(i.children?.length)r(n,i.children);else{let s=[i];for(;s.length>0;){let a=s.pop(),l=a.children??a._children;l?.length?r(s,l):t.set(a.data.name,{order:t.size,row:o})}o++}}return t}function lYe(e,t,o,r){if(e.range){let[l,c]=e.range.map(f=>o.get(f)?r.get(f):void 0);if(l===void 0||c===void 0)return;let[u,p]=l.order<=c.order?[l,c]:[c,l];return p.order-u.order+1===e.tips?{rows:[u.row,p.row]}:void 0}let n=e.mrca?UR(t,e.mrca,o):void 0;if(!n)return;let i=Qc(n);if(i.length!==e.tips)return;let s=1/0,a=-1/0;for(let l of i){let c=r.get(l.data.name)?.row;c!==void 0&&(s=Math.min(s,c),a=Math.max(a,c))}return s<=a?{rows:[s,a],nodeId:n.data.id}:void 0}function EV(e,t,o){let r=FR(t),n=aYe(o);return e.flatMap(i=>{let s=lYe(i,t,r,n),a=sYe.has(i.mark);return s&&!(a&&s.nodeId===void 0)?[{...s,mark:i.mark,color:O_(i.color??JAe,KAe),markColor:i.color,label:i.label}]:[]})}var cYe={input:void 0,branchLength:(e,t)=>(e.data.length??1)-(t.data.length??1),ladderize:(e,t)=>e.value-t.value,ladderizeReverse:(e,t)=>t.value-e.value};function WQ(e,{collapsed:t,rotated:o,order:r,showOnly:n}){let i=Jp(e,a=>a.children);iR(i,a=>a.children.length>0?0:1);let s=cYe[r];if(s&&sR(i,s),o.length>0){let a=new Set(o);ab(i,l=>{a.has(l.data.id)&&l.children?.reverse()})}if(n){let a=tf(i,l=>l.data.id===n);a&&(i=a)}for(let a of t){let l=tf(i,c=>c.data.id===a);l&&(l.children?Nhe(l):l.parent?.children&&(l.parent.children=l.parent.children.filter(c=>c.data.id!==a)))}return i}function vV(e,t){let o=FR(e),r=UR(e,t,o);if(r!==e)return r;let n=new Set(t),i=Qc(e).map(a=>a.data.name).filter(a=>!n.has(a)),s=UR(e,i,o);return s===e?void 0:s}function Ave(e,t){let o=new Map;for(let i of pC(e).reverse())o.set(i,{name:i.name===i.id?void 0:i.name,length:i.length,children:i.children.map(s=>o.get(s))});let r=o.get(e);if(t==="midpoint")return Up(jEe(r));let n=vV(Jp(e,i=>i.children),t.outgroup);return n?Up(jQ(r,o.get(n.data))):e}function TV(e){return[Math.round(e.xMin-.5),Math.round(e.xMax-.5)]}Rc();x4();fb();var uYe=/[\s(),:;[\]']/;function fYe(e){return uYe.test(e)?`'${e.replaceAll("'","''")}'`:e}function mve(e){let t=new Map;for(let o of Cm(e).reverse()){let{id:r,name:n,length:i}=o.data,s="";if(o.children){s=`(${o.children.map(a=>t.get(a)).join(",")})`;for(let a of o.children)t.delete(a)}o.children&&n===r||(s+=fYe(n)),i!==void 0&&(s+=`:${i}`),t.set(o,s)}return`${t.get(e)};`}var gve={">":"<",")":"(","]":"[","}":"{"},pYe=new Set(Object.values(gve));function hve(e){let t=new Map,o=[],r=(i,s)=>{let a=t.get(i);a?a.push(s):t.set(i,[s])},n=(i,s,a)=>{let l=t.get(i)?.pop();l!==void 0&&o.push({start:l,end:s,pseudoknot:a})};for(let i=0;i<e.length;i++){let s=e[i],a=gve[s];pYe.has(s)?r(s,i):a?n(a,i,!1):s>="A"&&s<="Z"?r(s,i):s>="a"&&s<="z"&&n(s.toUpperCase(),i,!0)}return o.sort((i,s)=>i.start-s.start)}var LYe={bar:40,logo:80,arc:50,ruler:20},Bve=new Set(["bar","logo","arc"]),Fve=new Set(["sequence-logo","position-ruler"]),FYe=e=>`own:${e}`,UYe="#4e79a7",HYe="#e15759",_ve=new WeakMap;function zYe(e){let t=_ve.get(e);return t===void 0&&(t=JSON.stringify(e).length,_ve.set(e,t)),t}function Uve(e){return(e??[]).map(zYe)}function GYe(e,t){let o=Uve(e),r=e?.filter((n,i)=>o[i]<=t);return r?.length?{columnTracks:r}:{}}var VYe=new Set(["id","type","height","drawMsaLetters","scrollZoom","scrollZoomAxis","bgColor","colorSchemeName","customColorScheme","showColumnStats","drawLabels","labelsAlignRight","treeAreaWidth","treeWidth","showBranchLen","treeOrder","drawTree","drawNodeBubbles","drawNodeLabels","showTreeOverview","showTreeScaleBar","overviewHeight","turnedOffTracks","trackHeights","hideGaps","allowedGappyness","subFeatureRows","showDomainLegend","domainFill","embeddedMode"]);function Rve(e,t){return e.get(t)??Fve.has(t)}var Mve=[],Qve=[],BV=new Set(["featureFill","featureLabel"]);function Pve(e,t){if(t.has(e))return e;let o=e.replaceAll(":","_");return t.has(o)?o:e}var Dve=new WeakMap;function Ove(e){return e.rowEnd-e.rowStart===e.structEnd-e.structStart}var jYe=Math.log(1.3);function kve(e,t,o,r,n,i){if(e===o&&i){let a=r+Math.log(t);return Math.abs(a)<jYe?{value:e,held:a}:{value:dr(o*Math.exp(a),n,bm),held:0}}let s=dr(e*t,n,bm);return(e-o)*(s-o)<0?{value:o,held:0}:{value:s,held:0}}function Nve(e,t){return e-t>.5}function $Ye(e,t){return!!e?.some(([o,r])=>t>=o&&t<=r)}function Lve(e){let t=[];for(let o of e){let r=t.at(-1);r&&o<=r[1]+1?r[1]=Math.max(r[1],o):t.push([o,o])}return t}function YYe(e){let[t]=e;return t!==void 0&&e.every(o=>o===t)?t:void 0}function WYe({maxInlineSnapshotBytes:e=X_}={}){return $.compose(DEe(),kEe(),OEe(),$.model("MsaView",{id:PF,showDomains:pt($.boolean,!0),domainFill:pt($.boolean,!0),showDomainLegend:pt($.boolean,!0),hideGaps:pt($.boolean,!0),allowedGappyness:pt($.number,100),subFeatureRows:pt($.boolean,!1),type:$.literal("MsaView"),drawMsaLetters:pt($.boolean,SAe),embeddedMode:pt($.boolean,!1),scrollZoom:pt($.boolean,BAe),scrollZoomAxis:pt($.enumeration("ScrollZoomAxis",[..._Ae]),RAe),height:pt($.number,550),rowHeight:pt($.number,16),scrollY:pt($.number,0),scrollX:pt($.number,0),colWidth:pt($.number,12),treeFilehandle:$.maybe(Ox),msaFilehandle:$.maybe(Ox),treeMetadataFilehandle:$.maybe(Ox),gffFilehandle:$.maybe(Ox),currentAlignment:pt($.number,0),collapsed:pt($.array($.string),[]),rotated:pt($.array($.string),[]),treeRoot:$.frozen(),showOnly:$.maybe($.string),turnedOffTracks:pt($.map($.boolean),{}),trackHeights:pt($.map($.number),{}),columnTracks:pt($.array($.snapshotProcessor($.frozen(),{preProcessor:yV})),[]),residueMappings:pt($.array($.frozen()),[]),data:$.optional(PEe(e),{}),turnedOffFeatures:pt($.map($.boolean),{}),relativeTo:$.maybe($.string),highlightColumns:$.frozen(),highlights:pt($.array($.frozen()),[]),features:pt($.array($.frozen()),[]),selection:$.frozen(),region:$.frozen(),clades:pt($.array($.frozen()),[]),encodings:pt($.array($.snapshotProcessor($.frozen(),{preProcessor:gV})),[]),rowPanels:pt($.array($.snapshotProcessor($.frozen(),{preProcessor:hV})),[])})).volatile(()=>({headerHeight:0,settingsOpen:!1,zoomHeld:{col:0,row:0},hideHeader:!1,importForm:!0,status:void 0,highResScaleFactor:typeof window>"u"?1:window.devicePixelRatio,zoomSnapshot:void 0,loadingMSA:!1,loadingTree:!1,volatileWidth:void 0,resizeHandleWidth:5,blockSize:500,mouseRow:void 0,mouseCol:void 0,mouseClickRow:void 0,mouseClickCol:void 0,hoveredTreeNode:void 0,highlightedColumns:void 0,transientHighlights:{},minimapHeight:56,marginLeft:20,error:void 0,loadWarnings:[],dismissedWarnings:[],resetCount:0,hostCarriesData:!1,annotations:[]})).actions(t=>({drawRelativeTo(o){t.relativeTo=o},setHideGaps(o){t.hideGaps=o},setAllowedGappyness(o){t.allowedGappyness=o},setLoadingMSA(o){t.loadingMSA=o},setLoadingTree(o){t.loadingTree=o},setWidth(o){t.volatileWidth=o},setSettingsOpen(o){t.settingsOpen=o},setHighResScaleFactor(o){t.highResScaleFactor=o},setHeight(o){t.height=o},setError(o){t.error=o},addWarning(o){t.loadWarnings.includes(o)||(t.loadWarnings=[...t.loadWarnings,o])},setHostCarriesData(o){t.hostCarriesData=o},setMousePos(o,r){t.mouseCol=o,t.mouseRow=r},setHighlightedColumns(o){t.highlightedColumns=o},setRegion(o){t.region=o},setHighlights(o){t.highlights.replace(o)},setFeatures(o){t.features.replace(o)},setSelection(o){let r=o&&{start:Math.min(o.start,o.end),end:Math.max(o.start,o.end),...o.rows?{rows:o.rows}:{}};gg(r,t.selection)||(t.selection=r)},clearSelection(){this.setSelection(void 0)},setClades(o){t.clades.replace(o)},applyHighlight(o,r){t.transientHighlights={...t.transientHighlights,[o]:r}},clearHighlight(o){if(o in t.transientHighlights){let{[o]:r,...n}=t.transientHighlights;t.transientHighlights=n}},setShowDomains(o){t.showDomains=o},setDomainFill(o){t.domainFill=o},setCellFill(o){t.setBgColor(o!=="none"),o!=="none"&&(t.domainFill=o==="domain")},setShowDomainLegend(o){t.showDomainLegend=o},setSubFeatureRows(o){t.subFeatureRows=o},setMouseClickPos(o,r){t.mouseClickCol=o,t.mouseClickRow=r},setRowHeight(o){t.rowHeight=o,t.zoomHeld={...t.zoomHeld,row:0}},setColWidth(o){t.colWidth=o,t.zoomHeld={...t.zoomHeld,col:0}},setCurrentAlignment(o){o!==t.currentAlignment&&_r(()=>{t.currentAlignment=o,t.collapsed.clear(),t.rotated.clear(),this.setShowOnly(void 0),this.drawRelativeTo(void 0),t.scrollX=0,t.scrollY=0})},toggleCollapsed(o){t.collapsed.includes(o)?t.collapsed.remove(o):t.collapsed.push(o)},toggleRotated(o){t.rotated.includes(o)?t.rotated.remove(o):t.rotated.push(o)},clearRotated(){t.rotated.clear()},setTreeRoot(o){gg(t.treeRoot,o)||_r(()=>{t.treeRoot=o,t.collapsed.clear(),t.rotated.clear(),this.setShowOnly(void 0)})},setShowOnly(o){t.showOnly=o},setData(o){t.data=o},setMSAFilehandle(o){t.msaFilehandle=o},setTreeFilehandle(o){t.treeFilehandle=o},setTreeMetadataFilehandle(o){t.treeMetadataFilehandle=o},setGFFFilehandle(o){t.gffFilehandle=o},setMSA(o){t.data.setMSA(o)},setTree(o){t.data.setTree(o)},setTreeMetadata(o){t.data.setTreeMetadata(o)},setGFF(o){t.data.setGFF(o)}})).views(t=>({get hideGapsEffective(){return t.hideGaps&&(t.collapsed.length>0||t.showOnly!==void 0||t.allowedGappyness<100)},get hostRestoresData(){return t.hostCarriesData},get viewInitialized(){return t.volatileWidth!==void 0},get width(){if(t.volatileWidth===void 0)throw new Error("not initialized");return t.volatileWidth-(t.settingsOpen?W_:0)}})).views(t=>({get colorScheme(){let{customColorScheme:o,colorSchemeName:r}=t;return o?xEe(o):nV[r]??nV[q_]},get dynamicColorSchemeName(){let{customColorScheme:o,colorSchemeName:r}=t;return!o&&r.includes("dynamic")?r:void 0},get header(){return this.MSA?.getHeader()??{}},get alignmentNames(){return this.MSA?.alignmentNames??[]},get noTree(){return!!this.tree.noTree},get noDomains(){return this.allAnnotations.length===0},get unshareableData(){if(t.hostRestoresData)return[];let{data:o}=t,r=Uve(t.columnTracks).filter(n=>n>e).reduce((n,i)=>n+i,0);return[["alignment",o.msa,t.msaFilehandle],["tree",o.tree,t.treeFilehandle],["annotations",o.gff,t.gffFilehandle],["row metadata",o.treeMetadata,t.treeMetadataFilehandle]].flatMap(([n,i,s])=>!s&&i&&i.length>e?[{what:n,bytes:i.length}]:[]).concat(r?[{what:"data tracks",bytes:r}]:[]).sort((n,i)=>i.bytes-n.bytes)},menuItems(){return[]},get rowData(){let o=t.data.treeMetadata;if(!o)return{};try{let r=JSON.parse(o);return typeof r=="object"&&r!==null?Object.fromEntries(Object.entries(r).map(([n,i])=>[n,SEe(i)])):{}}catch(r){return console.error("failed to parse rowData",r),{}}},rowDataOf(o){return this.rowData[o]},get rowFields(){let o=new Set;for(let r of Object.values(this.rowData))for(let n of Object.keys(r??{}))o.add(n);return[...o].sort((r,n)=>r.localeCompare(n))},get MSA(){let o=t.data.msa;return o?o4(o,t.currentAlignment,t.msaFormat):null},get allAnnotations(){let o=this.MSA?.annotations??[];return t.features.length>0||o.length>0?[...t.annotations,...REe(t.features),...o]:t.annotations},get actuallyShowDomains(){return t.showDomains&&this.allAnnotations.length>0},get numColumns(){return(this.MSA?.getWidth()??0)-this.blanks.length},get inputTree(){let o=t.data.tree;return o?Up(dve(o)):this.MSA?.getTree()??{noTree:!0,children:[],id:"empty",name:"empty"}},get tree(){let o=this.inputTree;return t.treeRoot&&!o.noTree?Ave(o,t.treeRoot):o},get rowNames(){return this.leaves.map(o=>o.data.name)},get rowNamesSet(){return new Map(this.leaves.map((o,r)=>[o.data.name,r]))},get resolvedClades(){return t.clades.length===0?Qve:EV(t.clades,Jp(this.tree,o=>o.children),this.root)},get cladeGutterWidth(){return Hhe(t.clades)},get treeDrawn(){return t.drawTree&&!this.noTree},get treeTips(){return cve(this.tree)},get maxTipLabelWidth(){return uve(this.treeTips.names.map(o=>this.rowDataOf(o)?.genome||o),j_)},get labelColumnWidth(){return t.drawLabels?this.maxTipLabelWidth+(this.treeDrawn?10:6):0},get fittedTreeAreaWidth(){let o=t.marginLeft+this.cladeGutterWidth,r=this.treeDrawn?t.treeWidth??dr(this.treeTips.depth*FAe,J_,LAe):0,n=o+r+this.labelColumnWidth,i=t.viewInitialized?this.numColumns>0?t.width*UAe:t.width-this.rowPanelsWidth-t.resizeHandleWidth:1/0,s=Math.max(i,o+Math.min(r,J_));return Math.ceil(Math.min(n,s))},get effectiveTreeAreaWidth(){return t.treeAreaWidth??this.fittedTreeAreaWidth},get effectiveTreeWidth(){let o=this.showTreeText?this.labelColumnWidth:0;return t.treeWidth??Math.max(J_,Math.floor(this.effectiveTreeAreaWidth-t.marginLeft-this.cladeGutterWidth-o))},get showTreeText(){return t.drawLabels&&t.rowHeight>=O3},get mouseOverRowName(){let{mouseRow:o}=t;return o===void 0?void 0:this.leaves[o]?.data.name},get hoveredInsertion(){let{mouseCol:o,mouseRow:r}=t;if(o!==void 0&&r!==void 0){let n=this.leaves[r]?.data.name;if(n){let i=this.insertionPositions.get(n)?.find(s=>s.pos===o);if(i)return{rowName:n,col:o,letters:i.letters}}}},get root(){return WQ(this.tree,{collapsed:t.collapsed,rotated:t.rotated,order:t.treeOrder,showOnly:t.showOnly})},get treeNewick(){return mve(WQ(this.tree,{collapsed:[],rotated:t.rotated,order:t.treeOrder}))},get treeOverviewHeight(){return t.showTreeOverview?t.overviewHeight:0},get treeOverviewLayout(){if(!t.showTreeOverview)return;let o=K4(WQ(this.tree,{collapsed:t.collapsed,rotated:t.rotated,order:t.treeOrder}),{rowHeight:1,treeWidth:1});return{root:o.root,numTips:o.leaves.length,maxDepthToLeaf:o.root.depthToLeaf,showBranchLen:t.showBranchLen&&o.rootToTipLength>0}},get treeOverviewClades(){let o=this.treeOverviewLayout;return!o||t.clades.length===0?Qve:EV(t.clades,Jp(this.tree,r=>r.children),o.root)},get treeOverviewFocusRows(){let o=this.treeOverviewLayout;if(!o||!t.showOnly)return;let r=tf(o.root,n=>n.data.id===t.showOnly);return r?TV(r):void 0},treeOverviewHit(o){let r=this.treeOverviewLayout;if(!r)return;let{root:n,numTips:i}=r,s=i/t.overviewHeight,a=dr(Math.floor(o*s),0,i-1),l=dr(Math.ceil((o+1)*s)-1,a,i-1),c=HR(n,a+.5,l+.5);for(;!c.children&&c.parent;)c=c.parent;return c===n?void 0:{id:c.data.id,rows:TV(c)}},get rowPanelsWidth(){return w0(t.rowPanels.map(o=>lV(o,t)))},get rowPanelsHeaderHeight(){return t.rowPanels.length>0?Z_:0},get msaAreaWidth(){return t.width-this.effectiveTreeAreaWidth-this.rowPanelsWidth-t.resizeHandleWidth},get treeAreaWidthMinusMargin(){return this.effectiveTreeAreaWidth-t.marginLeft-this.cladeGutterWidth},get blanks(){let{hideGapsEffective:o,allowedGappyness:r}=t;if(!o)return[];let n=this.leaves.map(u=>this.MSA?.getRow(u.data.name)).filter(Oa);if(n.length===0)return[];let i=this.MSA?.getWidth()??0,s=n.length,a=Math.ceil(r/100*s),l=new Uint32Array(i);for(let u=0;u<s;u++){let p=n[u],f=p.length;for(let d=0;d<i;d++)(d>=f||p.charCodeAt(d)-45>>>0<=1)&&l[d]++}let c=[];for(let u=0;u<i;u++)l[u]>=a&&c.push(u);return c},get insertionPositions(){let{blanks:o,rows:r}=this;if(o.length===0)return new Map;let n=new Map;for(let[i,s]of r){let a=Xde(o,s);a.length>0&&n.set(i,a)}return n},get rows(){let o=this.MSA;return this.leaves.map(r=>[r.data.name,o?.getRow(r.data.name)]).filter(r=>!!r[1])},get numRows(){return this.leaves.length},seqPosIndex(o){let r=this.MSA;if(!r)return;let n=Dve.get(r);n||(n=new Map,Dve.set(r,n));let i=n.get(o);if(!i){let s=r.getRow(o);if(!s)return;i=tve(s),n.set(o,i)}return i},rowSequence(o){return this.MSA?.getRow(o)||void 0},get rowMap(){let o=this.MSA;return new Map(o?.getNames().map(r=>[r,o.getRow(r)]).filter(([,r])=>!!r))},get columns(){let o=this.columns2d;return new Map(this.rows.map((r,n)=>[r[0],o[n]]))},get columns2d(){let{hideGapsEffective:o}=t;return this.rows.map(([,r])=>(o?L_(this.blanks,r):r).toUpperCase())},get fontSize(){return k3(t.rowHeight)},get colStats(){return Mde(this.columns2d,this.numColumns)},get sequenceType(){let o=this.colStats.lettersPresent,r=["N","R","Y","K","M","S","W"],n=new Set(["A","C","G","T",...r]),i=new Set(["A","C","G","U",...r]),s=o.size>0&&[...o].every(l=>n.has(l)),a=o.size>0&&[...o].every(l=>i.has(l));return s?"dna":a?"rna":"amino"},get colConsensus(){let{colStats:o}=this;return Array.from({length:o.numColumns},(r,n)=>{let i=o.total(n),s=0,a="";o.forEachResidue(n,(c,u)=>{u>s&&(s=u,a=gm(c))});let l=i?s/i:0;return{letter:a,color:l>.4?`hsl(240, 30%, ${100*Math.max(1-l/3,.3)}%)`:void 0}})},get colClustalX(){let{colStats:o}=this;return Array.from({length:o.numColumns},(r,n)=>yEe(o,n))},get colSimilarity(){let{colStats:o,sequenceType:r}=this,n=r==="amino"?sve:ave;return Array.from({length:o.numColumns},(i,s)=>n(o,s))},get conservation(){let{colStats:o,alphabetMaxBits:r}=this;return Array.from({length:o.numColumns},(n,i)=>{let s=o.total(i),a=o.gapCount(i);return s>a?Math.max(0,1-o.entropy(i)/r)*(1-a/s):0})},get alphabetMaxBits(){return Qde(this.sequenceType)},get propertyConservation(){return this.sequenceType==="amino"?GEe(this.colStats):[]},get treeLayout(){let o=()=>this.effectiveTreeWidth;return K4(this.root,{get rowHeight(){return t.rowHeight},get treeWidth(){return o()}})},get hierarchy(){return this.treeLayout.root},get totalHeight(){return this.leaves.length*t.rowHeight},get leaves(){return this.treeLayout.leaves},get rootToTipLength(){return this.treeLayout.rootToTipLength},get pxPerBranchLength(){let o=this.rootToTipLength;return this.showBranchLenEffective&&o?this.effectiveTreeWidth/o:0},get maxDepthToLeaf(){return this.treeLayout.root.depthToLeaf},get allBranchesLength0(){return this.rootToTipLength===0},get showBranchLenEffective(){return this.allBranchesLength0?!1:t.showBranchLen}})).views(t=>({get totalWidth(){return t.numColumns*t.colWidth}})).views(t=>({get showMsaLetters(){return t.drawMsaLetters&&t.rowHeight>=O3&&t.colWidth>=MAe&&t.colWidth>t.rowHeight/2}})).views(t=>{let o=new WeakMap;return{get columnTrackContent(){let{MSA:r,blanks:n,hideGapsEffective:i}=t,s=r?.getWidth()??0,a=(u,p,f)=>{if(!u.row)return p;let d=Array.from({length:s},()=>f),m=t.seqPosIndex(u.row);return p.forEach((y,b)=>{let h=m?.[b];h!==void 0&&(d[h]=y)}),d},l=u=>i?Kde(n,u):u,c=(u,p)=>{let f=u.row?t.seqPosIndex(u.row)?.[p-1]:p-1;if(!(f===void 0||f<0||f>=s))return i?dC(n,f):f};return new Map(t.columnTracks.map(u=>{if(u.kind==="arc"){let f=(u.arcs??[]).map(d=>{let m=c(u,Math.min(d.start,d.end)),y=c(u,Math.max(d.start,d.end));return m!==void 0&&y!==void 0&&m<y?{start:m,end:y,color:d.color}:void 0}).filter(Oa);return[u.id,{arcs:f}]}if(u.kind==="bar"){let f=u.scales?.y?.domainMax??1,d=l(a(u,u.values??[],0)).map(m=>Math.min(1,Math.max(0,m/f)));return[u.id,{values:d}]}let p=l(a(u,(u.data??"").split("")," "));return[u.id,{data:p.join("")}]}))},trackHeight(r,n=r,i){return t.trackHeights.get(n)??i??LYe[r]??t.rowHeight},columnTrackModel(r){let n=o.get(r);return n||(n=kf(()=>{let i=Bve.has(r.kind)?FYe(r.id):void 0,s=this.columnTrackContent.get(r.id);return{model:{id:r.id,name:r.name,kind:r.kind,heightKey:i,height:this.trackHeight(r.kind,i,r.height),barColor:r.color,arcColor:r.color,customColorScheme:r.encoding?.color?bV(r.encoding.color,[...r.encoding.color.domain??[],...new Set(r.data)]):void 0,data:s?.data,arcs:s?.arcs}}}),o.set(r,n)),n.get()},get columnTrackModels(){return t.columnTracks.map(r=>this.columnTrackModel(r))}}}).views(t=>({get secondaryStructureConsensus(){return t.MSA?.secondaryStructureConsensus},get secondaryStructureArcs(){let{blanks:o,hideGapsEffective:r}=t,n=this.secondaryStructureConsensus;if(n)return hve(r?L_(o,n):n).map(({start:i,end:s,pseudoknot:a})=>({start:i,end:s,color:a?HYe:UYe}))},get adapterTrackModels(){let{MSA:o,hideGapsEffective:r,blanks:n}=t,i=(o?.tracks??[]).filter(a=>!!a.data);if(i.length===0)return[];let{rowHeight:s}=t;return i.map(a=>({model:{...a,kind:"text",data:r?L_(n,a.data):a.data,height:s}}))},get basePairTrackModels(){let o=this.secondaryStructureArcs;return o?.length?[{model:{id:"base-pairs",name:"Base pairs",kind:"arc",heightKey:"arc",height:t.trackHeight("arc"),arcs:o}}]:[]},get computedTrackModels(){return[{id:"conservation",name:"Conservation",kind:"bar",barColor:"gray"},...t.sequenceType==="amino"?[{id:"property-conservation",name:"Property conservation",kind:"bar",barColor:"#6a51a3"}]:[],{id:"sequence-logo",name:"Sequence logo",kind:"logo"},{id:"position-ruler",name:"Position",kind:"ruler"}].map(o=>({model:{...o,heightKey:Bve.has(o.kind)?o.kind:void 0,height:t.trackHeight(o.kind)}}))},get referenceTrackModels(){let{relativeTo:o}=t,r=o===void 0?void 0:t.columns.get(o);return o===void 0||r===void 0?[]:[{model:{id:"reference-row",name:o,kind:"reference",data:r,height:t.rowHeight}}]},get tracks(){return[...this.adapterTrackModels,...this.basePairTrackModels,...t.columnTrackModels,...t.numColumns>0?this.computedTrackModels:[],...this.referenceTrackModels]},get turnedOnTracks(){return this.tracks.filter(o=>!Rve(t.turnedOffTracks,o.model.id))},get showHorizontalScrollbar(){return Nve(t.totalWidth,t.msaAreaWidth)},visibleColToRowLetter(o,r){return t.rowSequence(o)?.[this.visibleColToGlobalCol(r)]},visibleColToSeqPos(o,r){return qEe(t.seqPosIndex(o),this.visibleColToGlobalCol(r))},visibleColToSeqPosOneBased(o,r){let n=this.visibleColToSeqPos(o,r);return n!==void 0?n+1:void 0},globalColToVisibleCol(o){let{blanks:r,hideGapsEffective:n}=t;return n?YEe(r,o):o},visibleColToGlobalCol(o){let{blanks:r,hideGapsEffective:n}=t;return n?$Ee(r,o):o},seqPosToGlobalCol(o,r){let n=t.rowSequence(o);return n===void 0?void 0:t.seqPosIndex(o)?.[r]??(r===0?0:n.length)},seqEndToGlobalCol(o,r){let n=t.seqPosIndex(o);return n&&n.length>0?n[Math.min(r,n.length-1)]:void 0},seqPosToVisibleCol(o,r){let n=this.seqPosToGlobalCol(o,r);return n===void 0?void 0:this.globalColToVisibleCol(n)},visibleSpan({row:o,start:r,end:n}){let{blanks:i}=t,s=Math.max(1,Math.floor(r)),a=Math.ceil(n),l=s-1,c=Math.min(a,t.MSA?.getWidth()??a)-1;if(o!==void 0){let f=this.seqPosToGlobalCol(o,s-1),d=this.seqEndToGlobalCol(o,a-1);if(f===void 0||d===void 0)return;l=f,c=d}let u=this.globalColToVisibleCol(l)??dC(i,l),p=this.globalColToVisibleCol(c)??dC(i,c)-1;return u<=p?{startCol:u,endCol:p}:void 0},get residueMappingProblems(){let o=[];for(let r of t.residueMappings){let n={row:r.row,structureId:r.structure.id},i=t.seqPosIndex(r.row)?.length;if(i===void 0){o.push({...n,scope:"mapping",reason:"no such row in the alignment"});continue}if(r.rowLength!==void 0&&r.rowLength!==i){o.push({...n,scope:"mapping",reason:`computed against a ${r.rowLength}-residue row; this one has ${i}`});continue}let s=r.segments.find(a=>a.rowEnd>i||a.rowStart<1);if(s){o.push({...n,scope:"mapping",reason:`segment ${s.rowStart}-${s.rowEnd} does not fit a ${i}-residue row`});continue}for(let a of r.segments)Ove(a)||o.push({...n,scope:"segment",reason:`segment ${a.rowStart}-${a.rowEnd} maps to ${a.structStart}-${a.structEnd}, which is a different length`})}return o},get usableResidueMappings(){let o=new Set(this.residueMappingProblems.filter(r=>r.scope==="mapping").map(r=>`${r.row}\0${r.structureId}`));return t.residueMappings.filter(r=>!o.has(`${r.row}\0${r.structure.id}`)).map(r=>({...r,segments:r.segments.filter(Ove)}))},get mappedStructures(){return this.usableResidueMappings.map(o=>({row:o.row,structure:o.structure}))},structureResidue(o,r,n){let i=[];for(let s of this.usableResidueMappings){if(s.row!==o||n!==void 0&&s.structure.id!==n)continue;let a=s.segments.find(l=>r>=l.rowStart&&r<=l.rowEnd);if(a){let l=a.structStart+(r-a.rowStart);i.push({structure:s.structure,position:l,observed:!$Ye(s.unobserved,l)})}}return i.length===1?i[0]:void 0},rowResidue(o,r,n){let i=[];for(let s of this.usableResidueMappings){if(s.structure.id!==o||n!==void 0&&s.structure.asymId!==void 0&&s.structure.asymId!==n)continue;let a=s.segments.find(l=>r>=l.structStart&&r<=l.structEnd);a&&i.push({rowName:s.row,seqPos:a.rowStart+(r-a.structStart)})}return i.length===1?i[0]:void 0}})).views(t=>({get treeScaleBar(){if(t.showTreeScaleBar)return vEe(t.pxPerBranchLength,t.effectiveTreeAreaWidth-t.marginLeft*2)},get topBandHeight(){return Math.max(t.showHorizontalScrollbar?t.minimapHeight:0,t.rowPanelsHeaderHeight,t.treeOverviewHeight+(this.treeScaleBar?Zu:0))},get msaAreaHeight(){return t.height-this.topBandHeight-t.headerHeight-this.totalTrackAreaHeight},get totalTrackAreaHeight(){return w0(t.turnedOnTracks.map(o=>o.model.height))},get annotationTypes(){let o=new Map;for(let r of t.allAnnotations)o.has(r.accession)||o.set(r.accession,r);return o},get defaultOffAccessions(){return new Set(t.allAnnotations.filter(o=>o.defaultOff).map(o=>o.accession))},featureOff(o){return t.turnedOffFeatures.get(o)??this.defaultOffAccessions.has(o)},get filteredAnnotations(){return t.allAnnotations.filter(o=>!this.featureOff(o.accession))},get cellFill(){return t.bgColor?t.actuallyShowDomains&&t.domainFill&&this.filteredAnnotations.length>0?"domain":"residue":"none"},get annotationsByRow(){let{rowNamesSet:o}=t;return Gae(this.filteredAnnotations,r=>Pve(r.id,o))}})).views(t=>({get showVerticalScrollbar(){return Nve(t.totalHeight,t.msaAreaHeight)}})).views(t=>({get dataInitialized(){return!!(t.data.msa||t.data.tree)&&!t.error},get blocksX(){return qE({viewportSize:t.msaAreaWidth,viewportPos:-t.scrollX,blockSize:t.blockSize,mapSize:t.totalWidth})},get blocksY(){return qE({viewportSize:t.msaAreaHeight,viewportPos:-t.scrollY,blockSize:t.blockSize,mapSize:t.totalHeight})}})).views(t=>({get verticalScrollbarWidth(){return t.showVerticalScrollbar?20:0},get msaCanvasWidth(){return t.msaAreaWidth-this.verticalScrollbarWidth},get maxScrollX(){return Math.min(-t.totalWidth+this.msaCanvasWidth,0)},get blocks2d(){return t.blocksY.flatMap(o=>t.blocksX.map(r=>[r,o]))},get wheelZooming(){return t.zoomSnapshot!==void 0},get isLoading(){return t.loadingMSA||t.loadingTree},get dataWarnings(){let{annotations:o,rowNamesSet:r}=t;return t.dataInitialized&&o.length>0&&!o.some(n=>r.has(Pve(n.id,r)))?[`0 of ${o.length} annotations name a row in this alignment`]:[]},get warnings(){return[...t.loadWarnings,...this.dataWarnings.filter(o=>!t.dismissedWarnings.includes(o))]},get maxScrollY(){return Math.min(-t.totalHeight+t.msaAreaHeight,0)},get wheelZoomAxis(){return t.scrollZoom?t.scrollZoomAxis:"both"}})).actions(t=>({setDrawMsaLetters(o){t.drawMsaLetters=o},clearWarnings(){t.loadWarnings=[],t.dismissedWarnings=t.dataWarnings},setScrollZoom(o){t.scrollZoom=o},setScrollZoomAxis(o){t.scrollZoomAxis=o},setHoveredTreeNode(o){if(o===t.hoveredTreeNode?.nodeId)return;if(!o){t.hoveredTreeNode=void 0;return}let r=tf(t.hierarchy,n=>n.data.id===o);t.hoveredTreeNode=r?{nodeId:o,descendantNames:Qc(r).map(n=>n.data.name)}:void 0},calculateNeighborJoiningTreeFromMSA(){let o=[...t.rowMap];if(o.length<2)throw new Error("Need at least 2 sequences to build a tree");if(o.length>ib)throw new Error(`Neighbor joining here is capped at ${ib} sequences and this alignment has ${o.length}. Build the tree with FastTree or IQ-TREE and open it alongside the alignment: https://gmod.org/JBrowseMSA/tutorials/protein_family`);this.replaceTree(UEe(o))},rerootAt(o){let r=tf(Jp(t.tree,i=>i.children),i=>i.data.id===o);if(!r?.parent)return;let n=vV(Jp(t.inputTree,i=>i.children),Qc(r).map(i=>i.data.name));if(n){let i=Qc(n);t.setTreeRoot({outgroup:[...new Set([i[0].data.name,i.at(-1).data.name])]})}},replaceTree(o){_r(()=>{t.setTreeFilehandle(void 0),t.collapsed.clear(),t.rotated.clear(),t.setShowOnly(void 0),t.setTree(o)})},resetZoom(){t.setColWidth(12),t.setRowHeight(16)},zoomAtCenter(o,r="both"){this.zoomToPos(o,t.msaCanvasWidth/2,t.msaAreaHeight/2,r)},zoomIn(){this.zoomAtCenter(1.5)},zoomOut(){this.zoomAtCenter(.75)},zoomToPos(o,r,n,i="both"){_r(()=>{let s=(-t.scrollX+r)/t.colWidth,a=(-t.scrollY+n)/t.rowHeight,l=i!=="both"||t.colWidth===12&&t.rowHeight===16;if(i!=="vertical"){let{value:d,held:m}=kve(t.colWidth,o,12,t.zoomHeld.col,$_,l);t.colWidth=d,t.zoomHeld={...t.zoomHeld,col:m}}if(i!=="horizontal"){let{value:d,held:m}=kve(t.rowHeight,o,16,t.zoomHeld.row,Y_,l);t.rowHeight=d,t.zoomHeld={...t.zoomHeld,row:m}}t.scrollX=dr(r-s*t.colWidth,t.maxScrollX,0);let c=n-a*t.rowHeight,u=Math.max(0,-t.maxScrollY),p=t.totalHeight-u,f=p>0?dr(1-u/p,0,1):1;t.scrollY=dr(c*(1-f),t.maxScrollY,0)})},wheelZoomToPos(o,r,n){t.zoomSnapshot??=P4(t,!1),this.zoomToPos(o,r,n,t.wheelZoomAxis),ohe(t,t.zoomSnapshot)||(t.zoomSnapshot=P4(t,!0))},endWheelZoom(){t.zoomSnapshot=void 0},doScrollY(o){this.setScrollY(t.scrollY+o)},setScrollY(o){t.scrollY=dr(o,t.maxScrollY,0)},setAnnotations(o){t.annotations=o},applyGFFText(o){this.setAnnotations(cR(lR(o)))},doScrollX(o){this.setScrollX(t.scrollX+o)},setScrollX(o){t.scrollX=dr(o,t.maxScrollX,0)},setColumnTracks(o){t.columnTracks.replace(o.map(yV))},setRowData(o){t.data.setTreeMetadata(JSON.stringify(o))},setEncodings(o){t.encodings.replace(o.map(gV))},setRowPanels(o){t.rowPanels.replace(o.map(hV))},setResidueMappings(o){t.residueMappings.replace(o)},toggleTrack(o){t.turnedOffTracks.set(o,!Rve(t.turnedOffTracks,o))},setTracksShown(o,r){for(let n of o)Fve.has(n)===!r?t.turnedOffTracks.delete(n):t.turnedOffTracks.set(n,!r)},setStatus(o){t.status=o}})).views(t=>({cellAt(o,r){let n=t.visibleColToGlobalCol(o),i=r===void 0?void 0:t.leaves[r]?.data.name;return i===void 0?{column:n+1}:{column:n+1,row:i,residue:t.visibleColToSeqPosOneBased(i,o),letter:t.rowSequence(i)?.[n]}},get hoveredCell(){let{mouseCol:o,mouseRow:r}=t;return o===void 0?void 0:this.cellAt(o,r)},get clickedCell(){let{mouseClickCol:o,mouseClickRow:r}=t;return o===void 0?void 0:this.cellAt(o,r)},get viewport(){let{scrollX:o,colWidth:r,numColumns:n,viewInitialized:i}=t;if(n===0||!i)return;let{xStart:s,xEnd:a}=Fa({offsetX:-o,blockWidth:t.msaCanvasWidth,colWidth:r}),l=Math.max(0,Math.min(a,n)-1);return{startColumn:t.visibleColToGlobalCol(Math.min(s,l))+1,endColumn:t.visibleColToGlobalCol(l)+1}},get segmentDomainTypes(){return[...t.annotationTypes.values()].filter(o=>P3.has(o.featureType??"")).toSorted((o,r)=>o.start-r.start)},get categoricalDomainTypes(){return[...t.annotationTypes.values()].filter(o=>!P3.has(o.featureType??""))},get fillPalette(){let o=Object.fromEntries(this.segmentDomainTypes.map((n,i)=>[n.accession,D3[i%D3.length]])),r=zQ(this.categoricalDomainTypes.map(n=>n.accession));return{...o,...r}},get featureFillEncoding(){return this.resolvedEncodings.find(o=>o.channel==="featureFill")},get featureColors(){return cV(t.filteredAnnotations,this.featureFillEncoding,this.fillPalette)},get featureLabels(){let o=this.resolvedEncodings.find(r=>r.channel==="featureLabel");return o?uV(t.filteredAnnotations,o.field):void 0},get segmentLabels(){return new Map(this.segmentDomainTypes.map((o,r)=>{let n=/(\d+)\s*$/.exec(o.name);return[o.accession,n?n[1]:`${r+1}`]}))},get visibleDomainTypes(){return this.categoricalDomainTypes.filter(o=>!t.featureOff(o.accession)).toSorted((o,r)=>o.start-r.start)},get legends(){let{featureFillEncoding:o,fillPalette:r,visibleDomainTypes:n}=this,i=new Map,s=new Set,a=(l,c,u,p=!1)=>{let f=l??"domains";if(u.length===0||i.has(f))return;let d=p||l===void 0?"domains":`rowData-${c}`,m=d;for(let y=2;s.has(m);y++)m=`${d}-${y}`;s.add(m),i.set(f,{id:m,title:c??"Domains",entries:u})};t.actuallyShowDomains&&t.numColumns>0&&a(o?.key,o?.title,o?o.legend:n.map(l=>({id:l.accession,label:l.name,color:l.color??r[l.accession]})),!0);for(let{channel:l,key:c,title:u,legend:p}of this.resolvedEncodings)BV.has(l)||a(c,u,p);for(let{legendKey:l,legendTitle:c,legend:u}of this.rowPanelScales)a(l,c,u);return[...i.values()]},get domainUnderline(){return t.actuallyShowDomains&&t.cellFill!=="domain"&&!t.subFeatureRows&&t.showMsaLetters},get domainBands(){let{blanks:o}=t,r=new Map;for(let[n,i]of Object.entries(t.annotationsByRow)){let s=i.toSorted((a,l)=>v3(l)-v3(a)).map(a=>{let l=t.seqPosToGlobalCol(n,a.start-1),c=t.seqEndToGlobalCol(n,a.end-1);if(l===void 0||c===void 0)return;let u=dC(o,l),p=dC(o,c+1);return p>u?{annotation:a,startCol:u,endCol:p}:void 0}).filter(Oa).map((a,l)=>({...a,stackIndex:l}));s.length>0&&r.set(n,uC(s))}return r},get domainBandsByStart(){return new Map([...this.domainBands].map(([o,r])=>[o,r.toSorted((n,i)=>n.startCol-i.startCol)]))},get mouseOverDomains(){let{mouseCol:o}=t,r=t.mouseOverRowName;if(r===void 0||o===void 0)return Mve;let n=(this.domainBands.get(r)??[]).filter(i=>o>=i.startCol&&o<i.endCol).map(i=>i.annotation);return n.length>0?n:Mve},get referenceRowIndex(){let{relativeTo:o}=t;return o===void 0?void 0:t.rowNamesSet.get(o)},get hoveredRowIndices(){let{hoveredTreeNode:o,rowNamesSet:r}=t;return o?o.descendantNames.map(n=>r.get(n)).filter(Oa):[]},get highlightedColumnRuns(){return Lve([...t.highlightedColumns??[]].sort((o,r)=>o-r)).map(([o,r])=>({start:o,end:r}))},fillHighlightLabel(o,r,n){if(!o.includes("{"))return o;let i=r&&n!==void 0?t.seqPosIndex(r)?.[n-1]:void 0,s=r&&i!==void 0?t.MSA?.getRow(r)[i]??"":"";return o.replaceAll("{residue}",s).replaceAll("{position}",n===void 0?"":String(n))},get resolvedHighlights(){let{rowNamesSet:o,transientHighlights:r}=t;return[...t.highlights,...Object.values(r).flat()].flatMap(({row:i,rows:s,start:a,end:l,label:c,color:u})=>{let p={label:c&&this.fillHighlightLabel(c,i,a),color:u};if(s){let d=s.map(m=>o.get(m)).filter(Oa);return d.length?[{...p,rowIndices:d}]:[]}if(a===void 0||l===void 0)return[];let f=t.visibleSpan({row:i,start:a,end:l});return f?[{...p,...f,rowIndices:[]}]:[]})},get resolvedSelection(){let{selection:o,rowNamesSet:r,numRows:n}=t,i=o&&t.visibleSpan({start:o.start,end:o.end});if(!o||!i)return;let s=o.rows?Lve(o.rows.map(a=>r.get(a)).filter(Oa).sort((a,l)=>a-l)):n>0?[[0,n-1]]:[];return s.length>0?{...i,rowRuns:s}:void 0},get selectionSize(){let o=this.resolvedSelection,r=this.selectionFileSpan;return o&&r?{columns:r.end-r.start+1,rows:w0(o.rowRuns.map(([n,i])=>i-n+1))}:void 0},get selectionFileSpan(){let{selection:o}=t,r=t.MSA?.getWidth()??0,n=Math.max(1,Math.floor(o?.start??0)),i=Math.min(r,Math.ceil(o?.end??0));return o&&n<=i?{start:n,end:i}:void 0},get selectionFasta(){let{rowNames:o}=t,r=this.resolvedSelection,n=this.selectionFileSpan;if(!r||!n)return"";let i=r.rowRuns.flatMap(([s,a])=>o.slice(s,a+1)).flatMap(s=>{let a=t.rowSequence(s);return a===void 0?[]:[[s,a]]});return dEe(i,n.start,n.end)},columnStatsAt(o){let{colStats:r,conservation:n,propertyConservation:i}=t;return EEe({col:o,colStats:r,conservation:n,propertyConservation:i})},getRowData(o){return{data:t.MSA?.getRowData(o),rowData:t.rowDataOf(o)}},get resolvedEncodings(){return t.encodings.map(o=>({...o,...this.scaleOf(o,BV.has(o.channel)?"features":"rows")}))},get resolvedScales(){let o=Object.values(t.rowData),r=(i,s)=>i.map(a=>af(a,s)).filter(Oa),n=(i,s)=>({spec:i,field:i.field,table:s,...s==="rows"?{values:o.map(a=>a?.[i.field]).filter(Oa)}:{values:r(t.allAnnotations,i.field),shown:r(t.filteredAnnotations,i.field)}});return eve([...t.encodings.map(i=>n(i,BV.has(i.channel)?"features":"rows")),...t.rowPanels.flatMap(i=>i.kind==="strip"?[n(i,"rows")]:i.encoding?.color?[n(i.encoding.color,"features")]:[])])},scaleOf(o,r){return this.resolvedScales.get(mV({spec:o,field:o.field,table:r}))},get rowPanelScales(){let{rowData:o}=t,{fillPalette:r,featureFillEncoding:n,featureLabels:i}=this,s=t.filteredAnnotations;return t.rowPanels.map(a=>{if(a.kind==="features"){let f=a.encoding?.color,d=f?{field:f.field,...this.scaleOf(f,"features")}:n,m=a.encoding?.label;return{kind:a.kind,x:a.x,header:a.header??"",field:d?.field,legendKey:d?.key,legendTitle:d?.title,colors:f?cV(s,d,r):this.featureColors,labels:m?uV(s,m):i,legend:d?.legend??this.visibleDomainTypes.map(y=>({id:y.accession,label:y.name,color:y.color??r[y.accession]}))}}let{colorOf:l,legend:c,key:u,title:p}=this.scaleOf(a,"rows");return{kind:a.kind,field:a.field,header:a.header??a.field,legendKey:u,legendTitle:p,colors:GQ(o,a.field,l),legend:c}})},get resolvedRowPanels(){let o=this.rowPanelScales,r=0;return t.rowPanels.map((n,i)=>{let s=lV(n,t),a={id:`rowpanel-${i}`,width:s,offsetX:r};if(r+=s,n.kind==="features"){let l=n.transform?.find(c=>c.type==="align");return{...a,...o[i],spans:BEe({panel:n,width:s,colWidth:t.colWidth,domainBands:this.domainBands,annotationsByRow:t.annotationsByRow,shifts:l?this.featureAlignShifts.get(l.on):void 0})}}return{...a,...o[i]}})},get featureAlignShifts(){let o=new Set(t.rowPanels.flatMap(r=>r.kind==="features"&&r.x==="position"?(r.transform??[]).filter(n=>n.type==="align").map(n=>n.on):[]));return new Map([...o].map(r=>[r,new Map(Object.entries(t.annotationsByRow).map(([n,i])=>{let s=i.find(a=>NR(a)===r);return s?[n,1-s.start]:void 0}).filter(Oa))]))},get tipLabelColors(){let o=this.resolvedEncodings.find(r=>r.channel==="tipLabel");return o?GQ(t.rowData,o.field,o.colorOf):void 0},get rowTints(){let o=this.resolvedEncodings.find(n=>n.channel==="rowTint");if(!o)return;let r=GQ(t.rowData,o.field,o.colorOf);return t.rowNames.map(n=>{let i=r.get(n);return i&&O_(i,qAe)})},get branchColors(){let o=this.resolvedEncodings.find(s=>s.channel==="branch");if(!o)return;let r=pC(t.tree),n=new Map,i=new Map;for(let s=r.length-1;s>=0;s--){let a=r[s],l=a.children.length>0?YYe(a.children.map(u=>n.get(u))):t.rowDataOf(a.name)?.[o.field];n.set(a,l);let c=l===void 0?void 0:o.colorOf(l);c&&i.set(a.id,c)}return i}})).actions(t=>({setHeaderHeight(o){t.headerHeight=o},setHideHeader(o){t.hideHeader=o},setEmbeddedMode(o){t.embeddedMode=o},setImportForm(o){t.importForm=o},treeOverviewClick(o){let r=t.treeOverviewHit(o),n=t.treeOverviewFocusRows,i=!!n&&!!r&&r.rows[0]>=n[0]&&r.rows[1]<=n[1];t.setShowOnly(i||!r?void 0:r.id)},setTrackHeight(o,r){t.trackHeights.set(o,r)},reset(){t.resetCount++,t.loadWarnings=[],t.dismissedWarnings=[],t.setStatus(void 0),P8(t,Object.fromEntries(Object.entries(RC(t)).filter(([o])=>VYe.has(o)))),t.setError(void 0),t.setAnnotations([]),t.setHighlightedColumns(void 0),t.transientHighlights={},t.setMousePos(void 0,void 0),t.setMouseClickPos(void 0,void 0),t.setHoveredTreeNode(void 0)},async exportSVG(o){let{renderToSvg:r}=await Promise.resolve().then(()=>(Sve(),wve)),n=await r(t,o),i=new Blob([n],{type:"image/svg+xml"});$E(i,aV(t.msaFilehandle,"svg"))},exportNewick(){let o=new Blob([t.treeNewick],{type:"text/plain"});$E(o,aV(t.treeFilehandle??t.msaFilehandle,"nwk","tree"))},setFilter(o,r){r===t.defaultOffAccessions.has(o)?t.turnedOffFeatures.set(o,!r):t.turnedOffFeatures.delete(o)},fit(){_r(()=>{for(let o=0;o<2;o++)this.fitHorizontally(12),this.fitVertically(16)})},fitVertically(o=bm){t.numRows>0&&t.setRowHeight(dr(t.msaAreaHeight/t.numRows,Y_,o)),t.scrollY=0},zoomToRegion(o){let r=t.visibleSpan(o);!r||!t.viewInitialized||_r(()=>{t.setColWidth(dr(t.msaCanvasWidth/(r.endCol-r.startCol+1),$_,bm)),t.scrollX=dr(-r.startCol*t.colWidth,t.maxScrollX,0)})},revealRegion(o){_r(()=>{this.zoomToRegion(o);let r=o.row===void 0?void 0:t.rowNamesSet.get(o.row);r!==void 0&&t.viewInitialized&&t.setScrollY(-(r+.5)*t.rowHeight+t.msaAreaHeight/2)})},zoomToSelection(){let{selection:o,resolvedSelection:r}=t;!o||!r||_r(()=>{if(this.zoomToRegion({start:o.start,end:o.end}),o.rows&&t.viewInitialized){let{rowRuns:n}=r,i=n[0][0],s=n.at(-1)[1];t.setRowHeight(dr(t.msaAreaHeight/(s-i+1),Y_,bm)),t.scrollY=dr(-i*t.rowHeight,t.maxScrollY,0)}})},selectBlock(o,r){let{numColumns:n,numRows:i,rowNames:s}=t;if(n===0||i===0)return;let a=(d,m,y)=>[dr(d,0,y),dr(m,0,y)].sort((b,h)=>b-h),[l,c]=a(o.col,r.col,n-1),[u,p]=o.row===void 0||r.row===void 0?[0,i-1]:a(o.row,r.row,i-1),f=u===0&&p===i-1;t.setSelection({start:t.visibleColToGlobalCol(l)+1,end:t.visibleColToGlobalCol(c)+1,...f?{}:{rows:s.slice(u,p+1)}})},fitHorizontally(o=bm){t.numColumns>0&&t.setColWidth(dr(t.msaCanvasWidth/t.numColumns,$_,o)),t.scrollX=0},afterCreate(){t.highlightColumns?.length&&t.setHighlightedColumns(t.highlightColumns);let o=()=>!!t.treeFilehandle&&!t.data.tree;if(au(t,hg(()=>t.dataInitialized&&!o()?{clades:RC(t.clades),treeRoot:t.treeRoot}:void 0,n=>{if(n?.clades.length)for(let{mark:i,nodeId:s}of t.resolvedClades)s!==void 0&&(i==="collapse"&&!t.collapsed.includes(s)?t.toggleCollapsed(s):i==="focus"?t.setShowOnly(s):i==="rotate"&&!t.rotated.includes(s)&&t.toggleRotated(s))},{fireImmediately:!0,equals:gg})),au(t,Jl(()=>{let{region:n}=t;n&&t.viewInitialized&&t.numColumns>0&&!o()&&(this.revealRegion(n),t.setRegion(void 0))})),typeof window<"u"&&typeof window.matchMedia=="function"){let n=()=>window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),i=n(),s=()=>{t.setHighResScaleFactor(window.devicePixelRatio),i.removeEventListener("change",s),i=n(),i.addEventListener("change",s)};i.addEventListener("change",s),au(t,()=>{i.removeEventListener("change",s)})}sT(t,{what:"tree",getFilehandle:()=>t.treeFilehandle,onLoad:n=>{t.setTree(n)},setLoading:n=>{t.setLoadingTree(n)},clearFilehandle:()=>{t.setTreeFilehandle(void 0)}}),sT(t,{what:"row metadata",optional:!0,getFilehandle:()=>t.treeMetadataFilehandle,onLoad:n=>{t.setTreeMetadata(n)}});let r=!1;au(t,Jl(()=>{let n=t.data.gff;if(n)try{t.applyGFFText(n),r=!0}catch(i){console.error(i),t.addWarning(`The annotations did not parse: ${i}`)}else r&&(r=!1,t.setAnnotations([]))})),sT(t,{what:"annotations",optional:!0,getFilehandle:()=>t.gffFilehandle,onLoad:n=>{t.setGFF(n)},clearFilehandle:()=>{t.setGFFFilehandle(void 0)}}),sT(t,{what:"alignment",getFilehandle:()=>t.msaFilehandle,onLoad:n=>{t.setMSA(n)},setLoading:n=>{t.setLoadingMSA(n)},clearFilehandle:()=>{t.setMSAFilehandle(void 0)}}),au(t,Jl(()=>{t.dynamicColorSchemeName&&F_(t.colStats),t.showColumnStats&&F_(t.colStats,t.conservation,t.propertyConservation),F_(t.columns)}))}})).postProcessSnapshot(({data:t,columnTracks:o,...r})=>({...r,...GYe(o,e),data:{...r.treeFilehandle?{}:{tree:t.tree},...r.msaFilehandle?{}:{msa:t.msa},...r.treeMetadataFilehandle?{}:{treeMetadata:t.treeMetadata},...r.gffFilehandle?{}:{gff:t.gff}}}))}var qQ=WYe;rN();function qYe(e){return typeof e=="string"?{colorSchemeName:e}:e?{customColorScheme:$Q(e)}:{}}function JYe(e=[]){let t=[...new Set(e)].sort((r,n)=>r-n),o=[];for(let r of t){let n=o.at(-1);n?.end===r-1?n.end=r:o.push({start:r,end:r})}return o}function QV({highlights:e=[],highlightColumns:t}){return[...e,...JYe(t)]}function MV(e){return e?{uri:e,locationType:"UriLocation"}:void 0}function PV({msaFilehandle:e,treeFilehandle:t,gffFilehandle:o,msaUrl:r,treeUrl:n,gffUrl:i}){return{msaFilehandle:e??MV(r),treeFilehandle:t??MV(n),gffFilehandle:o??MV(i)}}function Hve(e){return Gw(e==="dark"?{palette:{mode:"dark"}}:typeof e=="object"?e:void 0)}function zve(e){let{msa:t,tree:o,gff:r,rowData:n,colorScheme:i,height:s,colWidth:a,rowHeight:l,allowedGappyness:c,highlightColumns:u,highlights:p,features:f,selection:d,clades:m,relativeTo:y,columnTracks:b,residueMappings:h,encodings:g,rowPanels:C,drawTree:x,treeAreaWidth:v,showBranchLen:I,treeOrder:T,treeRoot:S,region:B,residueEncoding:R}=e,{msaFilehandle:M,treeFilehandle:Q,gffFilehandle:E}=PV(e);return{type:"MsaView",...t||o||r||n?{data:{msa:t??"",tree:o??"",gff:r,...n?{treeMetadata:JSON.stringify(n)}:{}}}:{},...M?{msaFilehandle:M}:{},...Q?{treeFilehandle:Q}:{},...E?{gffFilehandle:E}:{},...qYe(i),...s?{height:s}:{},...a?{colWidth:a}:{},...l?{rowHeight:l}:{},...c!==void 0?{allowedGappyness:c}:{},...p||u?{highlights:QV({highlights:p,highlightColumns:u})}:{},...f?{features:f}:{},...d?{selection:d}:{},...m?{clades:m}:{},...y?{relativeTo:y}:{},...b?{columnTracks:b}:{},...h?{residueMappings:h}:{},...g?{encodings:g}:{},...C?{rowPanels:C}:{},...x!==void 0?{drawTree:x}:{},...v?{treeAreaWidth:v}:{},...I!==void 0?{showBranchLen:I}:{},...T?{treeOrder:T}:{},...S?{treeRoot:S}:{},...B?{region:B}:{},...R!==void 0?{bgColor:R==="fill"}:{}}}function KYe(e,t){return e.msa===t.msa&&e.tree===t.tree&&JSON.stringify([e.msaFilehandle,e.treeFilehandle])===JSON.stringify([t.msaFilehandle,t.treeFilehandle])}var XYe=(0,Uo.forwardRef)(function(t,o){let r={...t,...PV(t)},{msa:n,tree:i,msaFilehandle:s,treeFilehandle:a}=r,l={msa:n,tree:i,msaFilehandle:s,treeFilehandle:a},[c,u]=(0,Uo.useState)({source:l,generation:0});return KYe(c.source,l)||u({source:l,generation:c.generation+1}),Uo.default.createElement(eWe,{key:c.generation,modelRef:o,...r})}),OV=XYe;function JQ(e,t,o){let r=(0,Uo.useRef)(o);(0,Uo.useEffect)(()=>{r.current=o});let n=!!o;(0,Uo.useEffect)(()=>n?hg(()=>e[t],i=>{r.current?.(i)},{equals:gg}):void 0,[e,t,n])}function rr(e,t,{inSnapshot:o=!1}={}){return{read:e,apply:t,inSnapshot:o}}function Sf(e){return(t,o)=>{o!==void 0&&e(t,o)}}var DV=[rr(e=>e.height,Sf((e,t)=>{e.setHeight(t)})),rr(e=>e.colWidth,Sf((e,t)=>{e.setColWidth(t)})),rr(e=>e.rowHeight,Sf((e,t)=>{e.setRowHeight(t)})),rr(e=>e.allowedGappyness,Sf((e,t)=>{e.setAllowedGappyness(t)})),rr(e=>e.drawTree,Sf((e,t)=>{e.setDrawTree(t)})),rr(e=>e.treeAreaWidth,Sf((e,t)=>{e.setTreeAreaWidth(t)})),rr(e=>e.showBranchLen,Sf((e,t)=>{e.setShowBranchLen(t)})),rr(e=>e.treeOrder,Sf((e,t)=>{e.setTreeOrder(t)})),rr(e=>e.residueEncoding,Sf((e,t)=>{e.setBgColor(t==="fill")})),rr(e=>!!e.hideHeader,(e,t)=>{e.setHideHeader(t)}),rr(e=>e.relativeTo,(e,t)=>{e.drawRelativeTo(t)}),rr(e=>e.gffFilehandle,(e,t,{gff:o})=>{t?e.setGFFFilehandle(t):e.setGFF(o)},{inSnapshot:!0}),rr(e=>e.gff,(e,t)=>{e.setGFF(t)},{inSnapshot:!0}),rr(e=>e.colorScheme,(e,t)=>{typeof t=="string"?e.setColorSchemeName(t):t&&e.setCustomColorScheme($Q(t))}),rr(QV,(e,t)=>{e.setHighlights(t)}),rr(e=>e.features??[],(e,t)=>{e.setFeatures(t)}),rr(e=>e.selection,(e,t)=>{e.setSelection(t)}),rr(e=>e.treeRoot,(e,t)=>{e.setTreeRoot(t)}),rr(e=>e.clades??[],(e,t)=>{e.setClades(t)}),rr(e=>e.columnTracks??[],(e,t)=>{e.setColumnTracks(t)}),rr(e=>e.residueMappings??[],(e,t)=>{e.setResidueMappings(t)}),rr(e=>e.rowData,(e,t)=>{t&&Object.keys(t).length&&e.setRowData(t)}),rr(e=>e.encodings??[],(e,t)=>{e.setEncodings(t)}),rr(e=>e.rowPanels??[],(e,t)=>{e.setRowPanels(t)})];function ZYe(e,t){let o=(0,Uo.useRef)(void 0);(0,Uo.useEffect)(()=>{let r=DV.map(({read:i})=>JSON.stringify(i(t)??null));o.current??=DV.map(({inSnapshot:i},s)=>i?r[s]:"");let n=o.current;DV.forEach(({apply:i},s)=>{let a=r[s];n[s]!==a&&(n[s]=a,i(e,JSON.parse(a)??void 0,t))})})}function eWe({modelRef:e,...t}){let{region:o,theme:r,onCellHover:n,onCellClick:i,onViewportChange:s,onSelectionChange:a,onModel:l}=t,[c]=(0,Uo.useState)(()=>{let y=qQ().create(zve(t));return y.setImportForm(!1),y}),u=(0,Uo.useRef)(void 0),[p,{width:f}]=Jx();(0,Uo.useEffect)(()=>{f&&c.setWidth(f)},[c,f]),ZYe(c,t);let d=JSON.stringify(o??null);(0,Uo.useEffect)(()=>{let y=JSON.parse(d);return y?ru(()=>c.viewInitialized&&c.numColumns>0,()=>{c.revealRegion(y)}):void 0},[c,d]),JQ(c,"hoveredCell",n),JQ(c,"clickedCell",i),JQ(c,"viewport",s),JQ(c,"selection",a),(0,Uo.useImperativeHandle)(e,()=>c,[c]);let m=(0,Uo.useRef)(l);return(0,Uo.useEffect)(()=>{m.current=l}),(0,Uo.useEffect)(()=>{m.current?.(c)},[c]),(0,Uo.useEffect)(()=>(u.current!==void 0&&(clearTimeout(u.current),u.current=void 0),()=>{u.current=setTimeout(()=>{u.current=void 0,cl(c)&&qT(c)})}),[c]),Uo.default.createElement(mh,{theme:Hve(r)},Uo.default.createElement("div",{ref:p},Uo.default.createElement(oM,{model:c})))}function KQ(e,t){let o=(0,Gve.createRoot)(e),r=t;return o.render(kV.default.createElement(OV,{...r})),{update(n){r={...r,...n},o.render(kV.default.createElement(OV,{...r}))},destroy(){o.unmount()}}}al();Or();var tWe=["msa","tree","gff","features","colorScheme","highlights","columnTracks","residueMappings"],oWe=["msa-url","tree-url","gff-url","color-scheme","height","hide-header","theme","reference-row","tree-area-width","loading"],rWe="200px",nWe=["display-start","display-end","highlight"];function Rd(e){let t=e?Number(e):Number.NaN;return Number.isFinite(t)?t:void 0}function iWe(e,t){return(e??"").split(",").flatMap(o=>{let[r,n]=o.split(":").map(Rd);return r===void 0?[]:[{row:t,start:r,end:n??r}]})}function NV(e,t,o){let r=e.globalColToVisibleCol(o-1);return r===void 0?void 0:e.visibleColToSeqPosOneBased(t,r)}function sWe(e,t,o){let r,n;for(let i=o.startColumn;i<=o.endColumn&&!r;i++)r=NV(e,t,i);for(let i=o.endColumn;i>=o.startColumn&&!n;i--)n=NV(e,t,i);return r&&n?{start:r,end:n}:void 0}function Vve(e="jbrowse-msa"){let t=customElements.get(e);if(t)return t;class o extends HTMLElement{static observedAttributes=[...oWe,...nWe];#r;#t;#e;#n;#a;#l=!1;#f;#o={};static{for(let n of tWe)Object.defineProperty(o.prototype,n,{configurable:!0,get(){return this.#o[n]},set(i){this.#p({[n]:i})}})}get selection(){return this.#e?this.#e.selection:this.#o.selection}set selection(n){this.#p({selection:n})}get#i(){return this.getAttribute("reference-row")??void 0}#p(n){this.#o={...this.#o,...n},this.#r?.update(this.#c())}#c(){let n=this.getAttribute("theme");return{...this.#o,msaUrl:this.getAttribute("msa-url")??void 0,treeUrl:this.getAttribute("tree-url")??void 0,gffUrl:this.getAttribute("gff-url")??void 0,colorScheme:this.#o.colorScheme??this.getAttribute("color-scheme")??void 0,height:Rd(this.getAttribute("height")),treeAreaWidth:Rd(this.getAttribute("tree-area-width")),hideHeader:this.hasAttribute("hide-header"),theme:n==="dark"?"dark":"light",onCellHover:i=>{this.#s("cell-hover",i),this.#h(i)},onCellClick:i=>{this.#s("cell-click",i)},onViewportChange:i=>{this.#s("viewport-change",i),this.#y(i)},onSelectionChange:i=>{this.#s("selection-change",i)},onModel:i=>{this.#e=i,this.#A(),this.#m()}}}#s(n,i){this.dispatchEvent(new CustomEvent(n,{detail:i}))}#d(n){this.#n&&this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,cancelable:!0}))}#h(n){let i=this.#e,s=this.#i,a=n&&i&&s?NV(i,s,n.column):n?.column;this.#d({type:"highlight",value:a===void 0?null:`${a}:${a}`})}#y(n){let i=this.#e,s=this.#i;if(!n||!i)return;let a=s?sWe(i,s,n):{start:n.startColumn,end:n.endColumn},l=Rd(this.getAttribute("display-start")),c=Rd(this.getAttribute("display-end")),u=a&&l!==void 0&&c!==void 0&&Math.abs(a.start-l)<=1&&Math.abs(a.end-c)<=1;a&&!u&&(this.#f=a,this.#d({"display-start":a.start,"display-end":a.end}))}#A(){let n=this.#e,i=Rd(this.getAttribute("display-start")),s=Rd(this.getAttribute("display-end")),a=this.#f;if(!(a&&a.start===i&&a.end===s)&&(this.#a?.(),n&&i!==void 0&&s!==void 0)){let l=this.#i;this.#a=ru(()=>n.viewInitialized&&n.numColumns>0,()=>{n.zoomToRegion({row:l,start:i,end:s})})}}#m(){let n=iWe(this.getAttribute("highlight"),this.#i);n.length?this.#e?.applyHighlight("nightingale",n):this.#e?.clearHighlight("nightingale")}connectedCallback(){if(this.style.display||(this.style.display="block"),this.#g){let i=Rd(this.getAttribute("height"))??550;this.style.minHeight=`${i+5}px`,this.#t=new IntersectionObserver(s=>{s.some(a=>a.isIntersecting)&&this.#u()},{rootMargin:rWe}),this.#t.observe(this)}else this.#u();let n=this.closest("nightingale-manager");n&&customElements.whenDefined("nightingale-manager").then(()=>{this.isConnected&&(this.#n=n,n.register(this))})}get#g(){return this.getAttribute("loading")==="lazy"&&typeof IntersectionObserver<"u"}#u(){this.#t?.disconnect(),this.#t=void 0,this.#r??=KQ(this,this.#c())}disconnectedCallback(){this.#t?.disconnect(),this.#t=void 0,this.#n?.unregister(this),this.#n=void 0,this.#a?.(),this.#r?.destroy(),this.#r=void 0,this.#e=void 0}attributeChangedCallback(n){n==="display-start"||n==="display-end"?this.#l||(this.#l=!0,queueMicrotask(()=>{this.#l=!1,this.#A()})):n==="highlight"?this.#m():n==="loading"?this.#t&&!this.#g&&this.#u():this.#r?.update(this.#c())}}return customElements.define(e,o),o}eu(Jc,w(HQ(),1));return tTe(Jc);})();
650
+ `).join("")}var _d="rgb(128,179,230)",AEe="#d88",v9e="rgb(192, 72, 192)",T9e="rgb(204, 77, 204)",mEe="#8f8",gEe="rgb(26,204,26)",I9e="rgb(240, 128, 128)",w9e="rgb(240, 144, 72)",S9e="rgb(204, 204, 0)",hEe="rgb(26, 179, 179)";function yEe(e,t){let o=e.total(t),r=k=>e.count(t,k),n=r("W"),i=r("L"),s=r("V"),a=r("I"),l=r("M"),c=r("A"),u=r("F"),p=r("C"),f=r("H"),d=r("P"),m=r("R"),y=r("K"),b=r("Q"),h=r("E"),g=r("D"),C=r("T"),x=r("S"),v=r("G"),I=r("Y"),T=r("N"),S=n+i+s+a+l+c+u+p+f+d+I,B=y+m,R=b+h,M=h+g,Q=C+x,E=k=>k/o,O={};return E(S)>.6&&(O.W=_d,O.L=_d,O.V=_d,O.A=_d,O.I=_d,O.M=_d,O.F=_d,O.C=_d),(E(B)>.6||E(y)>.8||E(m)>.8||E(b)>.8)&&(O.K=AEe,O.R=AEe),(E(B)>.6||E(R)>.5||E(h)>.8||E(b)>.8||E(g)>.8)&&(O.E=v9e),(E(B)>.6||E(M)>.5||E(y)>.8||E(m)>.8||E(b)>.8)&&(O.D=T9e),(E(T)>.5||E(I)>.85)&&(O.N=mEe),(E(B)>.6||E(R)>.6||E(b)>.85||E(h)>.85||E(y)>.85||E(m)>.85)&&(O.Q=mEe),(E(S)>.6||E(Q)>.5||E(x)>.85||E(C)>.85)&&(O.S=gEe,O.T=gEe),E(p)>.85&&(O.C=I9e),v>0&&(O.G=w9e),d>0&&(O.P=S9e),(E(S)>.6||E(n)>.85||E(I)>.85||E(c)>.85||E(p)>.85||E(d)>.85||E(b)>.85||E(u)>.85||E(f)>.85||E(a)>.85||E(i)>.85||E(l)>.85||E(s)>.85)&&(O.H=hEe,O.Y=hEe),O}j7();tb();Rc();var bEe={A:sc[500],C:ic[500],G:Au[500],T:hl[500],U:hl[500]},B9e={none:{},nucleotide:bEe,clustal:{G:"orange",P:"orange",S:"orange",T:"orange",H:"red",K:"red",R:"red",F:"blue",W:"blue",Y:"blue",I:"green",L:"green",M:"green",V:"green"},lesk:{G:"orange",A:"orange",S:"orange",T:"orange",C:"green",V:"green",I:"green",L:"green",P:"green",F:"green",Y:"green",M:"green",W:"green",N:"magenta",Q:"magenta",H:"magenta",D:"red",E:"red",K:"blue",R:"blue"},maeditor:{A:"lightgreen",G:"lightgreen",C:"green",D:"darkgreen",E:"darkgreen",N:"darkgreen",Q:"darkgreen",I:"blue",L:"blue",M:"blue",V:"blue",F:"#c8a2c8",W:"#c8a2c8",Y:"#c8a2c8",H:"darkblue",K:"orange",R:"orange",P:"pink",S:"red",T:"red"},percent_identity_dynamic:{},blosum62_dynamic:{},flower:{A:"#b18a51",C:"#ff5701",D:"#01a578",E:"#2da0a1",F:"#fa559d",G:"#b1c23c",H:"#0194f9",I:"#f27663",K:"#7fc3d7",L:"#df6e75",M:"#fe9daf",N:"#0bcec6",P:"#4fa32a",Q:"#7295ae",R:"#83bff1",S:"#b4bd9b",T:"#d2b576",V:"#fd997b",W:"#ff2ded",Y:"#c96ecf"},rainbow_dna:{A:"#3737f5",C:"#37f537",G:"#f5f537",T:"#f53737",U:"#f53737"},clustalx_protein:{A:"#197fe5",C:"#e57f7f",D:"#cc4ccc",E:"#cc4ccc",F:"#197fe5",G:"#e5994c",H:"#19b2b2",I:"#197fe5",K:"#e53319",L:"#197fe5",M:"#197fe5",N:"#19cc19",P:"#cccc00",Q:"#19cc19",R:"#e53319",S:"#19cc19",T:"#19cc19",V:"#197fe5",W:"#197fe5",Y:"#19b2b2"},clustalx_protein_dynamic:{},clustalx_dna:{A:"#e53319",C:"#197fe5",G:"#e5994c",T:"#19cc19",U:"#19cc19"},jbrowse_dna:bEe,jalview_buried:{A:"#00a35c",R:"#00fc03",N:"#00eb14",D:"#00eb14",C:"#0000ff",Q:"#00f10e",E:"#00f10e",G:"#009d62",H:"#00d52a",I:"#0054ab",L:"#007b84",K:"#00ff00",M:"#009768",F:"#008778",P:"#00e01f",S:"#00d52a",T:"#00db24",W:"#00a857",Y:"#00e619",V:"#005fa0",B:"#00eb14",X:"#00b649",Z:"#00f10e"},jalview_hydrophobicity:{A:"#ad0052",R:"#0000ff",N:"#0c00f3",D:"#0c00f3",C:"#c2003d",Q:"#0c00f3",E:"#0c00f3",G:"#6a0095",H:"#1500ea",I:"#ff0000",L:"#ea0015",K:"#0000ff",M:"#b0004f",F:"#cb0034",P:"#4600b9",S:"#5e00a1",T:"#61009e",W:"#5b00a4",Y:"#4f00b0",V:"#f60009",B:"#0c00f3",X:"#680097",Z:"#0c00f3"},jalview_prophelix:{A:"#e718e7",R:"#6f906f",N:"#1be41b",D:"#778877",C:"#23dc23",Q:"#926d92",E:"#ff00ff",G:"#00ff00",H:"#758a75",I:"#8a758a",L:"#ae51ae",K:"#a05fa0",M:"#ef10ef",F:"#986798",P:"#00ff00",S:"#36c936",T:"#47b847",W:"#8a758a",Y:"#21de21",V:"#857a85",B:"#49b649",X:"#758a75",Z:"#c936c9"},jalview_propstrand:{A:"#5858a7",R:"#6b6b94",N:"#64649b",D:"#2121de",C:"#9d9d62",Q:"#8c8c73",E:"#0000ff",G:"#4949b6",H:"#60609f",I:"#ecec13",L:"#b2b24d",K:"#4747b8",M:"#82827d",F:"#c2c23d",P:"#2323dc",S:"#4949b6",T:"#9d9d62",W:"#c0c03f",Y:"#d3d32c",V:"#ffff00",B:"#4343bc",X:"#797986",Z:"#4747b8"},jalview_propturn:{A:"#2cd3d3",R:"#708f8f",N:"#ff0000",D:"#e81717",C:"#a85757",Q:"#3fc0c0",E:"#778888",G:"#ff0000",H:"#708f8f",I:"#00ffff",L:"#1ce3e3",K:"#7e8181",M:"#1ee1e1",F:"#1ee1e1",P:"#f60909",S:"#e11e1e",T:"#738c8c",W:"#738c8c",Y:"#9d6262",V:"#07f8f8",B:"#f30c0c",X:"#7c8383",Z:"#5ba4a4"},jalview_taylor:{A:"#ccff00",R:"#0000ff",N:"#cc00ff",D:"#ff0000",C:"#ffff00",Q:"#ff00cc",E:"#ff0066",G:"#ff9900",H:"#0066ff",I:"#66ff00",L:"#33ff00",K:"#6600ff",M:"#00ff00",F:"#00ff66",P:"#ffcc00",S:"#ff3300",T:"#ff6600",W:"#00ccff",Y:"#00ffcc",V:"#99ff00"},jalview_zappo:{A:"#ffafaf",R:"#6464ff",N:"#00ff00",D:"#ff0000",C:"#ffff00",Q:"#00ff00",E:"#ff0000",G:"#ff00ff",H:"#6464ff",I:"#ffafaf",L:"#ffafaf",K:"#6464ff",M:"#ffafaf",F:"#ffc800",P:"#ff00ff",S:"#00ff00",T:"#00ff00",W:"#ffc800",Y:"#ffc800",V:"#ffafaf"},cinema:{H:"blue",K:"blue",R:"blue",D:"red",E:"red",S:"green",T:"green",N:"green",Q:"green",A:"white",V:"white",L:"white",I:"white",M:"white",F:"magenta",W:"magenta",Y:"magenta",P:"brown",G:"brown",C:"yellow",B:"gray",Z:"gray",X:"gray","-":"gray",".":"gray"}},nV=N_(B9e,([e,t])=>[e,N_(t,([o,r])=>[o,cr(r).toHex()])]),CEe=new WeakMap;function xEe(e){let t=CEe.get(e);return t||(t=N_(e,([o,r])=>[o.toUpperCase(),r]),CEe.set(e,t)),t}BE();function EEe({col:e,colStats:t,conservation:o,propertyConservation:r}){if(e>=t.numColumns)return;let n=t.total(e);if(!n)return;let i=t.gapCount(e),s=t.residueEntries(e).sort((l,c)=>c[1]-l[1]),a=s[0];return{col:e,total:n,gaps:i,gapFraction:i/n,conservation:o[e]??0,propertyConservation:r[e],consensusLetter:a?.[0]??"",consensusCount:a?.[1]??0,consensusFraction:a?a[1]/n:0,distribution:s}}function uC(e){let t=[],o=new Array(e.length),r=e.map((n,i)=>i).sort((n,i)=>e[n].startCol-e[i].startCol);for(let n of r){let{startCol:i,endCol:s}=e[n],a=t.findIndex(c=>c<=i),l=a===-1?t.length:a;t[l]=s,o[n]=l}return e.map((n,i)=>({...n,lane:o[i],laneCount:t.length}))}ME();ZE();function vEe(e,t){if(e<=0||t<20)return;let o=t/2/e,r=10**Math.floor(Math.log10(o)),n=o/r,i=(n>=5?5:n>=2?2:1)*r,s=i*e;return s>t?void 0:{step:i,px:s,label:`${Number(i.toPrecision(2))}`}}Or();tb();var _9e=[["#F8766D"],["#F8766D","#00BFC4"],["#F8766D","#00BA38","#619CFF"],["#F8766D","#7CAE00","#00BFC4","#C77CFF"],["#F8766D","#A3A500","#00BF7D","#00B0F6","#E76BF3"],["#F8766D","#B79F00","#00BA38","#00BFC4","#619CFF","#F564E3"],["#F8766D","#C49A00","#53B400","#00C094","#00B6EB","#A58AFF","#FB61D7"],["#F8766D","#CD9600","#7CAE00","#00BE67","#00BFC4","#00A9FF","#C77CFF","#FF61CC"]],IEe=_9e,iV={set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],okabeito:["#e69f00","#56b4e9","#009e73","#f0e442","#0072b2","#d55e00","#cc79a7","#000000"],tableau:["#4e79a7","#f28e2b","#e15759","#76b7b2","#59a14f","#edc948","#b07aa1","#ff9da7","#9c755f","#bab0ac"]},TEe={okabeIto:"okabeito",tableau10:"tableau"};function sV(e){return e===void 0?void 0:Object.hasOwn(iV,e)?iV[e]:Object.hasOwn(TEe,e)?iV[TEe[e]]:void 0}function zQ(e,t){let o=e.length,r=t??IEe[o-1];return r&&o<=r.length?Object.fromEntries(e.map((n,i)=>[n,r[i]])):Object.fromEntries(e.map((n,i)=>[n,cr({h:i*360/o,s:60,l:60}).toHex()]))}function aV(e,t,o="image"){let r=e;return`${(r?.uri??r?.localPath??r?.name)?.split(/[?#]/)[0]?.split(/[/\\]/).pop()?.replace(/\.[^.]*$/,"")||o}.${t}`}Or();Rc();var R9e="#d9d9d9",M9e=.1;function lV(e,t){return e.width??(e.kind==="features"?XAe:t.rowHeight)}function SEe(e){if(typeof e!="object"||e===null)return;let t={};for(let[o,r]of Object.entries(e))typeof r=="string"?t[o]=r:(typeof r=="number"||typeof r=="boolean")&&(t[o]=String(r));return t}function GQ(e,t,o){let r=new Map;for(let[n,i]of Object.entries(e)){let s=i?.[t],a=s===void 0?void 0:o(s);a&&r.set(n,a)}return r}function cV(e,t,o){let r=new Map,n=i=>{let s=r.get(i);if(s!==void 0)return s;let a=k_(i);return r.set(i,a),a};return new Map(e.map(i=>{let s=t?af(i,t.field):void 0,a=i.color??(s===void 0?void 0:t.colorOf(s))??(t?R9e:o[i.accession]);return[i,{fill:a,stroke:n(a)}]}))}function uV(e,t){let o=new Map;for(let r of e){let n=af(r,t);n!==void 0&&o.set(r,n)}return o}function Q9e(e){let t=e.map(([i,s])=>{let a=uC(s.filter(c=>c.annotation.strand===-1)),l=uC(s.filter(c=>c.annotation.strand!==-1));return{name:i,forward:l,reverse:a}}),o=Math.max(0,...t.map(i=>i.forward[0]?.laneCount??0)),r=Math.max(0,...t.map(i=>i.reverse[0]?.laneCount??0)),n=o+r;return new Map(t.map(({name:i,forward:s,reverse:a})=>[i,[...s.map(l=>({...l,lane:o-1-l.lane,laneCount:n})),...a.map(l=>({...l,lane:o+l.lane,laneCount:n}))]]))}function wEe(e,t){return e.position==="strandpile"?Q9e(t):new Map(t.map(([o,r])=>[o,uC(r)]))}function BEe({panel:e,width:t,colWidth:o,domainBands:r,annotationsByRow:n,shifts:i}){if(e.x==="column")return wEe(e,[...r].map(([p,f])=>[p,f.map(d=>({...d,xStart:d.startCol*o,xEnd:d.endCol*o}))]));let s=Object.entries(n).map(([p,f])=>{let d=i?.get(p)??0;return[p,f.map(m=>({annotation:m,start:m.start-1+d,end:m.end+d}))]}),a=1/0,l=-1/0;for(let[,p]of s)for(let{start:f,end:d}of p)a=Math.min(a,f),l=Math.max(l,d);let c=Math.max(1,t-1),u=l>a?c/(l-a):0;return wEe(e,s.map(([p,f])=>[p,f.map(({annotation:d,start:m,end:y})=>({annotation:d,xStart:(m-a)*u,xEnd:(y-a)*u,startCol:m,endCol:y-(y-m)*M9e}))]))}var P9e=new Set(["row","start","end"]),_Ee=new WeakMap;function REe(e){return e.map(t=>{let o=_Ee.get(t);if(o)return o;let r=D9e(t);return _Ee.set(t,r),r})}function D9e(e){let{row:t,start:o,end:r,name:n,description:i,type:s,strand:a,color:l}=e,c=n??`${t}:${o}-${r}`,u=Object.fromEntries(Object.entries(e).filter(([p,f])=>!P9e.has(p)&&f!==void 0).map(([p,f])=>[p,String(f)]));return{id:t,accession:c,name:n??c,description:i??n??c,featureType:s,start:o,end:r,strand:a==="+"?1:a==="-"?-1:void 0,color:l,attributes:u}}vpe();pi();al();om();function O9e(e){return typeof e=="string"?e:e?.message}async function MEe(e,t,{fetcher:o=PU,controller:r=new AbortController}={}){try{return await o(e,{signal:r.signal,statusCallback:n=>{let i=O9e(n);t(i?{msg:i,onCancel:()=>{r.abort()}}:void 0)}})}finally{t(void 0)}}function QEe(e){return e instanceof DOMException&&e.name==="AbortError"}function k9e(e){let t;return{cancel(){let o=t!==void 0&&!t.ended;return t?.controller.abort(),t=void 0,o},begin(){t?.controller.abort();let o={controller:new AbortController,ended:!1};return t=o,{controller:o.controller,isCurrent:()=>!o.ended&&o===t&&cl(e),end(){o.ended=!0}}}}}function sT(e,{what:t,getFilehandle:o,onLoad:r,setLoading:n,clearFilehandle:i,optional:s=!1}){let a=k9e(e),l=()=>{a.cancel()&&cl(e)&&e.setStatus(void 0)};au(e,l),au(e,Jl(async()=>{let c=o();if(l(),!c){n?.(!1);return}let{controller:u,isCurrent:p,end:f}=a.begin();try{n?.(!0),s||e.setError(void 0);let d=await MEe(q5(c),m=>{p()&&e.setStatus(m)},{controller:u});p()&&_r(()=>{r(d),c.locationType==="BlobLocation"&&i?.()})}catch(d){p()&&(QEe(d)?i?.():(console.error(d),s?e.addWarning(`The ${t} did not load: ${d}`):e.setError(d)))}finally{p()&&n?.(!1),f()}}))}fb();pi();Or();function PEe(e=X_){return $.model({tree:$.maybe($.string),msa:$.maybe($.string),treeMetadata:$.maybe($.string),gff:$.maybe($.string)}).actions(t=>({setTree(o){t.tree=o},setMSA(o){t.msa=o},setTreeMetadata(o){t.treeMetadata=o},setGFF(o){t.gff=o}})).postProcessSnapshot(t=>Object.fromEntries(Object.entries(t).map(([o,r])=>[o,r&&r.length>e?void 0:r])))}pi();function DEe(){return $.model("DialogQueueSessionMixin",{}).volatile(()=>({queueOfDialogs:[]})).views(e=>({get DialogComponent(){return e.queueOfDialogs[0]?.[0]},get DialogProps(){return e.queueOfDialogs[0]?.[1]}})).actions(e=>({removeActiveDialog(){e.queueOfDialogs=e.queueOfDialogs.slice(1)},queueDialog(t){let[o,r]=t(()=>{this.removeActiveDialog()});e.queueOfDialogs=[...e.queueOfDialogs,[o,r]]}}))}pi();Or();pi();function pt(e,t){return typeof $.stripDefault=="function"?$.stripDefault(e,t):$.optional(e,t)}var N9e=["stockholm","a3m","fasta","emf","clustal"];function OEe(){return $.model({bgColor:pt($.boolean,DAe),colorSchemeName:pt($.string,q_),customColorScheme:$.frozen(),showColumnStats:pt($.boolean,OAe),msaFormat:$.maybe($.enumeration("MSAFormat",N9e))}).actions(e=>({setColorSchemeName(t){e.colorSchemeName=t,e.customColorScheme=void 0},setCustomColorScheme(t){e.customColorScheme=t},setBgColor(t){e.bgColor=t},setShowColumnStats(t){e.showColumnStats=t},setMSAFormat(t){e.msaFormat=t}}))}pi();Or();function kEe(){return $.model({drawLabels:pt($.boolean,kAe),labelsAlignRight:pt($.boolean,NAe),treeAreaWidth:$.maybe($.number),treeWidth:$.maybe($.number),showBranchLen:pt($.boolean,HAe),treeOrder:pt($.enumeration("TreeOrder",[...K_]),zAe),drawTree:pt($.boolean,GAe),drawNodeBubbles:pt($.boolean,VAe),drawNodeLabels:pt($.boolean,jAe),showTreeOverview:pt($.boolean,$Ae),showTreeScaleBar:pt($.boolean,YAe),overviewHeight:pt($.number,WAe)}).actions(e=>({setTreeAreaWidth(t){e.treeAreaWidth=t===void 0?void 0:Math.round(t),e.treeWidth=void 0},setTreeWidth(t){e.treeWidth=t===void 0?void 0:Math.round(t)},setLabelsAlignRight(t){e.labelsAlignRight=t},setDrawTree(t){e.drawTree=t},setShowBranchLen(t){e.showBranchLen=t},setTreeOrder(t){e.treeOrder=t},setDrawNodeBubbles(t){e.drawNodeBubbles=t},setDrawNodeLabels(t){e.drawNodeLabels=t},setShowTreeOverview(t){e.showTreeOverview=t},setShowTreeScaleBar(t){e.showTreeScaleBar=t},setDrawLabels(t){e.drawLabels=t}}))}var NEe="ARNDCQEGHILKMFPSTWYVBZX*",L9e=[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,-4],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1,-4],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2,-4],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4],[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1]],Xa=NEe.length,aT=Int8Array.from(L9e.flat()),fC=new Int8Array(128).fill(-1);for(let e=0;e<Xa;e++){let t=NEe[e];fC[t.charCodeAt(0)]=e,fC[t.toLowerCase().charCodeAt(0)]=e}var VQ=-2;function LEe(e,t){if(t>=e.length)return VQ;let o=e.charCodeAt(t);return o-45>>>0<=1?VQ:o<128?fC[o]:-1}function fV(e,t){return e<0||t<0?-4:aT[e*Xa+t]}function F9e(e,t){let o=Math.max(e.length,t.length),r=0,n=0,i=0;for(let l=0;l<o;l++){let c=LEe(e,l),u=LEe(t,l),p=c===VQ,f=u===VQ;p&&f||(r++,!(p||f)&&(n+=fV(c,u),i+=Math.max(fV(c,c),fV(u,u))))}if(r===0||i<=0)return 1;let s=n/i,a=Math.max(.01,Math.min(1,s));return-Math.log(a)}function U9e(e){let t=e.length,o=[];for(let r=0;r<t;r++){o[r]=[];for(let n=0;n<t;n++)r===n?o[r][n]=0:n<r?o[r][n]=o[n][r]:o[r][n]=F9e(e[r][1],e[n][1])}return o}function H9e(e,t){let o=e.length;if(o<2)return{name:t[0]};if(o===2){let a=e[0][1];return{left:{name:t[0]},right:{name:t[1]},leftLength:a/2,rightLength:a/2}}let r=[];for(let a=0;a<o;a++)r[a]=[...e[a]];let n=t.map(a=>({name:a})),i=o;for(;i>2;){let a=[];for(let g=0;g<n.length;g++)n[g]!==void 0&&a.push(g);let l=new Map;for(let g of a){let C=0;for(let x of a)g!==x&&(C+=r[g][x]);l.set(g,C)}let c=1/0,u=-1,p=-1;for(let g=0;g<a.length;g++)for(let C=g+1;C<a.length;C++){let x=a[g],v=a[C],I=(i-2)*r[x][v]-l.get(x)-l.get(v);I<c&&(c=I,u=x,p=v)}let f=r[u][p],d=l.get(u),m=l.get(p),y=f/2+(d-m)/(2*(i-2)),b=f-y;y=Math.max(0,y),b=Math.max(0,b);let h={left:n[u],right:n[p],leftLength:y,rightLength:b};for(let g of a)if(g!==u&&g!==p){let C=(r[u][g]+r[p][g]-f)/2;r[u][g]=Math.max(0,C),r[g][u]=Math.max(0,C)}n[p]=void 0,n[u]=h,i--}let s=[];for(let a=0;a<n.length;a++)n[a]!==void 0&&s.push(a);if(s.length===2){let a=s[0],l=s[1],c=r[a][l];return{left:n[a],right:n[l],leftLength:c/2,rightLength:c/2}}return n[s[0]]}function FEe(e,t){return t===void 0?e:`${e}:${t.toFixed(6)}`}function z9e(e){let t=[],o=[e];for(;o.length>0;){let n=o.pop();t.push(n),n.left&&o.push(n.left),n.right&&o.push(n.right)}let r=new Map;for(let n=t.length-1;n>=0;n--){let i=t[n];if(i.name!==void 0&&!i.left&&!i.right)r.set(i,`'${i.name.replaceAll("'","''")}'`);else{let s=i.left?FEe(r.get(i.left),i.leftLength):"",a=i.right?FEe(r.get(i.right),i.rightLength):"";r.set(i,`(${s},${a})`)}}return r.get(e)}function UEe(e){if(e.length<2)throw new Error("Need at least 2 sequences to build a tree");let t=e.map(n=>n[0]),o=U9e(e),r=H9e(o,t);return z9e(r)+";"}BE();var HEe={A:"hydrophobic",V:"hydrophobic",L:"hydrophobic",I:"hydrophobic",M:"hydrophobic",C:"hydrophobic",F:"aromatic",W:"aromatic",Y:"aromatic",H:"aromatic",K:"positive",R:"positive",D:"negative",E:"negative",S:"polar",T:"polar",N:"polar",Q:"polar",G:"special",P:"special"},pV=[...new Set(Object.values(HEe))],G9e=Math.log2(pV.length),zEe=new Int8Array(__).fill(-1);for(let[e,t]of Object.entries(HEe))zEe[Rde(e)]=pV.indexOf(t);function GEe(e){let t=new Float64Array(pV.length);return Array.from({length:e.numColumns},(o,r)=>{let n=e.total(r),i=0;if(n){t.fill(0);let s=0;if(e.forEachResidue(r,(a,l)=>{let c=zEe[a];c>=0&&(t[c]+=l,s+=l)}),s>0){let a=0;for(let c of t)if(c>0){let u=c/s;a-=u*Math.log2(u)}let l=(n-s)/n;i=Math.max(0,1-a/G9e)*(1-l)}}return i})}function pC(e,t){let o=[],r=[e];for(;r.length>0;){let n=r.pop();o.push(n);for(let i of n.children??[])t?.set(i,n),r.push(i)}return o}function VEe(e){return e.some(t=>t.length!==void 0)}function V9e(e,t){return e.children?.length===2?e.children.find(o=>o!==t):void 0}function jQ(e,t,o){let r=new Map,n=pC(e,r);if(!r.has(t))return e;let i=VEe(n),s=r.get(t)===e?V9e(e,t):void 0,a=(t.length??0)+(s?.length??0),l=Math.min(Math.max(o??a/2,0),a),c=f=>i?f:void 0,u=[t];for(let f=r.get(t);f;f=r.get(f))u.push(f);let p;for(let f=u.length-1;f>=1;f--){let d=u[f],m=u[f-1],y=d.children.filter(b=>b!==m);if(p&&y.push(p),y.length===0)p=void 0;else if(f===u.length-1&&y.length===1){let b=y[0];p={...b,length:c((b.length??0)+(m.length??0)-(f===1?l:0))}}else p={...d,name:f===1?void 0:m.name,children:y,length:c((m.length??0)-(f===1?l:0))}}return{children:[{...t,length:c(l)},...p?[p]:[]]}}function jEe(e){let t=new Map,o=pC(e,t),r=o.filter(y=>!y.children?.length);if(r.length<2)return e;let n=VEe(o),i=y=>n?y.length??0:1;function s(y){let b=new Map([[y,0]]),h=new Map,g=[y];for(;g.length>0;){let C=g.pop(),x=b.get(C),v=t.get(C);v&&!b.has(v)&&(b.set(v,x+i(C)),h.set(v,C),g.push(v));for(let I of C.children??[])b.has(I)||(b.set(I,x+i(I)),h.set(I,C),g.push(I))}return{dist:b,via:h}}function a(y){return r.reduce((b,h)=>y.get(h)>y.get(b)?h:b)}let l=a(s(r[0]).dist),{dist:c,via:u}=s(l),p=a(c);if(p===l)return e;let f=c.get(p)/2,d=p,m=u.get(d);for(;c.get(m)>f;)d=m,m=u.get(d);return t.get(d)===m?jQ(e,d,c.get(d)-f):jQ(e,m,f-c.get(m))}function dV(e,t){let o=0,r=e;for(;o<r;){let n=o+r>>>1;t(n)?r=n:o=n+1}return o}function $Ee(e,t){return t+dV(e.length,o=>e[o]-o>t)}function YEe(e,t){let o=WEe(e,t);return e[o]===t?void 0:t-o}function WEe(e,t){return dV(e.length,o=>e[o]>=t)}function dC(e,t){return t-WEe(e,t)}function qEe(e,t){if(!e)return;let o=dV(e.length,r=>e[r]>=t);return e[o]===t?o:void 0}tb();var JEe=/^-?\d+(\.\d+)?$/,KEe=/\d+|\D+/g;function j9e(e,t){let o=e.match(KEe)??[],r=t.match(KEe)??[],n=Math.min(o.length,r.length);for(let i=0;i<n;i++){let s=o[i],a=r[i];if(s!==a){if(/^\d/.test(s)&&/^\d/.test(a)){let l=Number(s),c=Number(a);return l!==c?l<c?-1:1:s.length<a.length?-1:1}return s<a?-1:1}}return o.length-r.length}function XEe(e,t){if(e===t)return 0;if(e===""||t==="")return e===""?1:-1;let o=JEe.test(e),r=JEe.test(t);if(o!==r)return o?-1:1;if(o){let n=Number(e)-Number(t);if(n!==0)return n<0?-1:1}return j9e(e,t)}function $9e(e){if(typeof e!="string")return e;if(sV(e))return;let t=e.split(/,(?![^(]*\))/).map(o=>o.trim());return t.every(o=>cr(o).isValid())?t:void 0}function Y9e(e,t){let o=$9e(e);return o?new Map(t.slice(0,o.length).map((r,n)=>[r,o[n]])):new Map(Object.entries(zQ(t,sV(typeof e=="string"?e:void 0))))}function ZEe(e,t){let o=new Set(t),r=new Set(e?.domain),n=[...r,...[...o].filter(s=>!r.has(s)).sort(XEe)],i=Y9e(e?.range,n);return{kind:"categorical",colorOf:s=>i.get(s),legend:n.filter(s=>o.has(s)&&i.has(s)).map(s=>({id:s,label:s,color:i.get(s)}))}}function mV({spec:e,field:t,table:o}){let{scale:r="categorical",domain:n,range:i,title:s=t}=e;return JSON.stringify([o,r,n,i,s])}function eve(e){let t=new Map;for(let o of e){let r=mV(o);t.set(r,[...t.get(r)??[],o])}return new Map([...t].map(([o,r])=>{let{spec:n,field:i}=r[0],s=ZEe(n,r.flatMap(c=>c.values)),a=r[0].shown?new Set(r.flatMap(c=>c.shown??[])):void 0,l={...s,key:o,title:n.title??i,legend:a?s.legend.filter(c=>a.has(c.id)):s.legend};return[o,l]}))}function AV(e){let{scale:t,legend:o,...r}=e;if(typeof t!="object"&&o===void 0)return e;let n=typeof t!="object"?t===void 0?{}:{scale:t}:t.map?{domain:Object.keys(t.map),range:Object.values(t.map)}:t.palette===void 0?{}:{range:t.palette};return{...o===void 0?{}:{title:o},...n,...r}}function gV(e){return AV(e)}function hV(e){if(e.kind==="strip")return AV(e);let t=e.encoding?.color;return t?{...e,encoding:{...e.encoding,color:AV(t)}}:e}function yV(e){let{max:t,colors:o,...r}=e;return t===void 0&&o===void 0?e:{...o?{encoding:{color:{domain:Object.keys(o),range:Object.values(o)}}}:{},...t===void 0?{}:{scales:{y:{domainMax:t}}},...r}}function bV(e,t){return Object.fromEntries(ZEe(e,t).legend.map(o=>[o.id,o.color]))}function $Q(e){return"map"in e?e.map:bV(e,e.domain??[])}function tve(e){let t=new Int32Array(e.length),o=0;for(let r=0;r<e.length;r++)e.charCodeAt(r)-45>>>0<=1||(t[o++]=r);return t.slice(0,o)}M_();BE();var rve=20,W9e=240,q9e=50,ove=96,J9e=40,nve=new Float32Array(Xa*Xa);for(let e=0;e<Xa;e++){let t=1/0,o=-1/0;for(let r=0;r<rve;r++){let n=aT[e*Xa+r];t=Math.min(t,n),o=Math.max(o,n)}for(let r=0;r<Xa;r++){let n=(aT[e*Xa+r]-t)/(o-t);nve[e*Xa+r]=Math.min(Math.max(n,0),1)}}var YQ=Int8Array.from({length:__},(e,t)=>{let o=gm(t);return o.length===1?fC[o.charCodeAt(0)]:-1});function K9e(e){let t=Math.round(ove-(ove-J9e)*e);return`hsl(${W9e}, ${q9e}%, ${t}%)`}function ive(e,t,o){let{counted:r,shaded:n,score:i}=o,s=[],a=0;e.forEachResidue(t,(c,u)=>{r(c)&&(s.push([c,u]),a+=u)});let l={};if(a<2)return l;for(let[c]of s)if(n(c)){let u=-i(c,c);for(let[p,f]of s)u+=f*i(c,p);l[gm(c)]=K9e(u/(a-1))}return l}var X9e={counted:e=>YQ[e]>=0,shaded:e=>YQ[e]<rve,score:(e,t)=>nve[YQ[e]*Xa+YQ[t]]},Z9e={counted:()=>!0,shaded:()=>!0,score:(e,t)=>e===t?1:0};function sve(e,t){return ive(e,t,X9e)}function ave(e,t){return ive(e,t,Z9e)}zR();var lve=100;function cve(e){let t=[],o=0,r=[[e,0]];for(let n=r.pop();n;n=r.pop()){let[i,s]=n,{children:a}=i;if(a.length>0)for(let l of a)r.push([l,s+1]);else t.push(i.name),o=Math.max(o,s)}return{names:t,depth:o}}function uve(e,t){let o=[];for(let s of e)o[s.length]=(o[s.length]??0)+1;let r=o.length;for(let s=0;r>0&&s<lve;)r--,s+=o[r]??0;let n=0,i=0;for(let s of e)(s.length>r||s.length===r&&i++<lve)&&(n=Math.max(n,Mm(s,t)));return n}GE();Or();function fve(e){let t=new Map(e.map(r=>{let n=r.dist===void 0?void 0:Number(r.dist);return[r.id,{id:`${r.id}`,name:r.label||`${r.id}`,...n!==void 0&&Number.isFinite(n)?{length:n}:{},children:[]}]})),o;for(let r of e){let n=t.get(r.id),i=r.parent!==void 0?t.get(r.parent):void 0;i?i.children.push(n):o??=n}if(o===void 0)throw new Error("could not build tree from flat node list: no root found (input was empty or contains a parent cycle)");return o}fb();var eYe={$NODE_COLLAPSED:"collapsed",$NODE_COLOR:"color",$LABEL_BG_COLOR:"color","seq-id":"seqId","seq-title":"seqTitle","align-index":"alignIndex","accession-nbr":"accessionNbr","blast-name":"blastName","common-name":"commonName","leaf-count":"leafCount"};function xV(e,t){let o=1,r=t+1;for(;r<e.length&&o>0;)e[r]==="{"?o++:e[r]==="}"&&o--,r++;return o===0?r:-1}function CV(e){let t=[],o=0;for(;o<e.length;){let r=e.indexOf("{",o);if(r===-1)break;let n=xV(e,r);if(n===-1)break;t.push(e.slice(r+1,n-1).trim()),o=n}return t}function tYe(e,t){let o=e.indexOf("{",t);if(o===-1)return;let r=xV(e,o);return r===-1?void 0:e.slice(o+1,r-1).trim()}function pve(e){let t=e.replace(/\s+/g," ").replace(/\s*{\s*/g,"{").replace(/\s*}\s*/g,"}").replace(/\s*,\s*/g,",").replace(/\s*::\s*=\s*/g,"::=").replace(/^.*?::=/,""),o=oYe(t),{fdict:r,nodes:n}=o;if(r===void 0||n===void 0)throw new Error(`invalid BioTreeContainer ASN.1: missing '${r===void 0?"fdict":"nodes"}' section`);let i=Object.fromEntries(CV(r).flatMap(s=>{let a=rYe(s);return a?[[a.id,eYe[a.name]||a.name]]:[]}));return CV(n).flatMap(s=>{let a=nYe(s);if(!a)return[];let{features:l=[],...c}=a;return[{...c,...Object.fromEntries(l.map(u=>[i[u.featureid],u.value]))}]})}function oYe(e){let t={},o=e.trim();o.startsWith("{")&&o.endsWith("}")&&(o=o.slice(1,-1).trim());let r=0;for(;r<o.length;){for(;r<o.length&&/\s/.test(o[r]);)r++;if(r>=o.length)break;let n=r;for(;r<o.length&&/\w/.test(o[r]);)r++;if(r>=o.length||o[r]!==" "&&o[r]!=="{"){r=o.indexOf(",",r),r=r===-1?o.length:r+1;continue}let i=o.slice(n,r).trim();for(;r<o.length&&/\s/.test(o[r]);)r++;if(r>=o.length||o[r]!=="{"){r=o.indexOf(",",r),r=r===-1?o.length:r+1;continue}let s=xV(o,r);if(s===-1)break;t[i]=o.slice(r+1,s-1).trim(),r=o.indexOf(",",s),r=r===-1?o.length:r+1}return t}function rYe(e){let t=/id\s+(\d+)/.exec(e),o=/name\s+"((?:[^"\\]|\\.)*)"/s.exec(e);return!t||!o?null:{id:parseInt(t[1],10),name:o[1].replace(/\\"/g,'"').replace(/\\\\/g,"\\")}}function nYe(e){let t=/id\s+(\d+)/.exec(e);if(!t)return null;let o=/parent\s+(\d+)/.exec(e),r=e.indexOf("features"),n=r!==-1?tYe(e,r):void 0;return{id:parseInt(t[1],10),...o?{parent:parseInt(o[1],10)}:{},features:n?CV(n).flatMap(i=>{let s=iYe(i);return s?[s]:[]}):[]}}function iYe(e){let t=/featureid\s+(\d+)/.exec(e),o=/value\s+"((?:[^"\\]|\\.)*)"/s.exec(e);return!t||!o?null:{featureid:parseInt(t[1],10),value:o[1].replace(/\\"/g,'"').replace(/\\\\/g,"\\")}}Rc();function dve(e){return e.startsWith("BioTreeContainer")?fve(pve(e)):xm(e.startsWith("SEQ")?rR(e).tree:e)}var sYe=new Set(["collapse","focus","rotate"]);function aYe(e){let t=new Map,o=0,r=(i,s)=>{for(let a=s.length-1;a>=0;a--)i.push(s[a])},n=[e];for(;n.length>0;){let i=n.pop();if(i.children?.length)r(n,i.children);else{let s=[i];for(;s.length>0;){let a=s.pop(),l=a.children??a._children;l?.length?r(s,l):t.set(a.data.name,{order:t.size,row:o})}o++}}return t}function lYe(e,t,o,r){if(e.range){let[l,c]=e.range.map(f=>o.get(f)?r.get(f):void 0);if(l===void 0||c===void 0)return;let[u,p]=l.order<=c.order?[l,c]:[c,l];return p.order-u.order+1===e.tips?{rows:[u.row,p.row]}:void 0}let n=e.mrca?UR(t,e.mrca,o):void 0;if(!n)return;let i=Qc(n);if(i.length!==e.tips)return;let s=1/0,a=-1/0;for(let l of i){let c=r.get(l.data.name)?.row;c!==void 0&&(s=Math.min(s,c),a=Math.max(a,c))}return s<=a?{rows:[s,a],nodeId:n.data.id}:void 0}function EV(e,t,o){let r=FR(t),n=aYe(o);return e.flatMap(i=>{let s=lYe(i,t,r,n),a=sYe.has(i.mark);return s&&!(a&&s.nodeId===void 0)?[{...s,mark:i.mark,color:O_(i.color??JAe,KAe),markColor:i.color,label:i.label}]:[]})}var cYe={input:void 0,branchLength:(e,t)=>(e.data.length??1)-(t.data.length??1),ladderize:(e,t)=>e.value-t.value,ladderizeReverse:(e,t)=>t.value-e.value};function WQ(e,{collapsed:t,rotated:o,order:r,showOnly:n}){let i=Jp(e,a=>a.children);iR(i,a=>a.children.length>0?0:1);let s=cYe[r];if(s&&sR(i,s),o.length>0){let a=new Set(o);ab(i,l=>{a.has(l.data.id)&&l.children?.reverse()})}if(n){let a=tf(i,l=>l.data.id===n);a&&(i=a)}for(let a of t){let l=tf(i,c=>c.data.id===a);l&&(l.children?Nhe(l):l.parent?.children&&(l.parent.children=l.parent.children.filter(c=>c.data.id!==a)))}return i}function vV(e,t){let o=FR(e),r=UR(e,t,o);if(r!==e)return r;let n=new Set(t),i=Qc(e).map(a=>a.data.name).filter(a=>!n.has(a)),s=UR(e,i,o);return s===e?void 0:s}function Ave(e,t){let o=new Map;for(let i of pC(e).reverse())o.set(i,{name:i.name===i.id?void 0:i.name,length:i.length,children:i.children.map(s=>o.get(s))});let r=o.get(e);if(t==="midpoint")return Up(jEe(r));let n=vV(Jp(e,i=>i.children),t.outgroup);return n?Up(jQ(r,o.get(n.data))):e}function TV(e){return[Math.round(e.xMin-.5),Math.round(e.xMax-.5)]}Rc();x4();fb();var uYe=/[\s(),:;[\]']/;function fYe(e){return uYe.test(e)?`'${e.replaceAll("'","''")}'`:e}function mve(e){let t=new Map;for(let o of Cm(e).reverse()){let{id:r,name:n,length:i}=o.data,s="";if(o.children){s=`(${o.children.map(a=>t.get(a)).join(",")})`;for(let a of o.children)t.delete(a)}o.children&&n===r||(s+=fYe(n)),i!==void 0&&(s+=`:${i}`),t.set(o,s)}return`${t.get(e)};`}var gve={">":"<",")":"(","]":"[","}":"{"},pYe=new Set(Object.values(gve));function hve(e){let t=new Map,o=[],r=(i,s)=>{let a=t.get(i);a?a.push(s):t.set(i,[s])},n=(i,s,a)=>{let l=t.get(i)?.pop();l!==void 0&&o.push({start:l,end:s,pseudoknot:a})};for(let i=0;i<e.length;i++){let s=e[i],a=gve[s];pYe.has(s)?r(s,i):a?n(a,i,!1):s>="A"&&s<="Z"?r(s,i):s>="a"&&s<="z"&&n(s.toUpperCase(),i,!0)}return o.sort((i,s)=>i.start-s.start)}var LYe={bar:40,logo:80,arc:50,ruler:20},Bve=new Set(["bar","logo","arc"]),Fve=new Set(["sequence-logo","position-ruler"]),FYe=e=>`own:${e}`,UYe="#4e79a7",HYe="#e15759",_ve=new WeakMap;function zYe(e){let t=_ve.get(e);return t===void 0&&(t=JSON.stringify(e).length,_ve.set(e,t)),t}function Uve(e){return(e??[]).map(zYe)}function GYe(e,t){let o=Uve(e),r=e?.filter((n,i)=>o[i]<=t);return r?.length?{columnTracks:r}:{}}var VYe=new Set(["id","type","height","drawMsaLetters","scrollZoom","scrollZoomAxis","bgColor","colorSchemeName","customColorScheme","showColumnStats","drawLabels","labelsAlignRight","treeAreaWidth","treeWidth","showBranchLen","treeOrder","drawTree","drawNodeBubbles","drawNodeLabels","showTreeOverview","showTreeScaleBar","overviewHeight","turnedOffTracks","trackHeights","hideGaps","allowedGappyness","subFeatureRows","showDomainLegend","domainFill","embeddedMode"]);function Rve(e,t){return e.get(t)??Fve.has(t)}var Mve=[],Qve=[],BV=new Set(["featureFill","featureLabel"]);function Pve(e,t){if(t.has(e))return e;let o=e.replaceAll(":","_");return t.has(o)?o:e}var Dve=new WeakMap;function Ove(e){return e.rowEnd-e.rowStart===e.structEnd-e.structStart}var jYe=Math.log(1.3);function kve(e,t,o,r,n,i){if(e===o&&i){let a=r+Math.log(t);return Math.abs(a)<jYe?{value:e,held:a}:{value:dr(o*Math.exp(a),n,bm),held:0}}let s=dr(e*t,n,bm);return(e-o)*(s-o)<0?{value:o,held:0}:{value:s,held:0}}function Nve(e,t){return e-t>.5}function $Ye(e,t){return!!e?.some(([o,r])=>t>=o&&t<=r)}function Lve(e){let t=[];for(let o of e){let r=t.at(-1);r&&o<=r[1]+1?r[1]=Math.max(r[1],o):t.push([o,o])}return t}function YYe(e){let[t]=e;return t!==void 0&&e.every(o=>o===t)?t:void 0}function WYe({maxInlineSnapshotBytes:e=X_}={}){return $.compose(DEe(),kEe(),OEe(),$.model("MsaView",{id:PF,showDomains:pt($.boolean,!0),domainFill:pt($.boolean,!0),showDomainLegend:pt($.boolean,!0),hideGaps:pt($.boolean,!0),allowedGappyness:pt($.number,100),subFeatureRows:pt($.boolean,!1),type:$.literal("MsaView"),drawMsaLetters:pt($.boolean,SAe),embeddedMode:pt($.boolean,!1),scrollZoom:pt($.boolean,BAe),scrollZoomAxis:pt($.enumeration("ScrollZoomAxis",[..._Ae]),RAe),height:pt($.number,550),rowHeight:pt($.number,16),scrollY:pt($.number,0),scrollX:pt($.number,0),colWidth:pt($.number,12),treeFilehandle:$.maybe(Ox),msaFilehandle:$.maybe(Ox),treeMetadataFilehandle:$.maybe(Ox),gffFilehandle:$.maybe(Ox),currentAlignment:pt($.number,0),collapsed:pt($.array($.string),[]),rotated:pt($.array($.string),[]),treeRoot:$.frozen(),showOnly:$.maybe($.string),turnedOffTracks:pt($.map($.boolean),{}),trackHeights:pt($.map($.number),{}),columnTracks:pt($.array($.snapshotProcessor($.frozen(),{preProcessor:yV})),[]),residueMappings:pt($.array($.frozen()),[]),data:$.optional(PEe(e),{}),turnedOffFeatures:pt($.map($.boolean),{}),relativeTo:$.maybe($.string),highlightColumns:$.frozen(),highlights:pt($.array($.frozen()),[]),features:pt($.array($.frozen()),[]),selection:$.frozen(),region:$.frozen(),clades:pt($.array($.frozen()),[]),encodings:pt($.array($.snapshotProcessor($.frozen(),{preProcessor:gV})),[]),rowPanels:pt($.array($.snapshotProcessor($.frozen(),{preProcessor:hV})),[])})).volatile(()=>({headerHeight:0,settingsOpen:!1,zoomHeld:{col:0,row:0},hideHeader:!1,importForm:!0,status:void 0,highResScaleFactor:typeof window>"u"?1:window.devicePixelRatio,zoomSnapshot:void 0,loadingMSA:!1,loadingTree:!1,volatileWidth:void 0,resizeHandleWidth:5,blockSize:500,mouseRow:void 0,mouseCol:void 0,mouseClickRow:void 0,mouseClickCol:void 0,hoveredTreeNode:void 0,highlightedColumns:void 0,transientHighlights:{},minimapHeight:56,marginLeft:20,error:void 0,loadWarnings:[],dismissedWarnings:[],resetCount:0,hostCarriesData:!1,annotations:[]})).actions(t=>({drawRelativeTo(o){t.relativeTo=o},setHideGaps(o){t.hideGaps=o},setAllowedGappyness(o){t.allowedGappyness=o},setLoadingMSA(o){t.loadingMSA=o},setLoadingTree(o){t.loadingTree=o},setWidth(o){t.volatileWidth=o},setSettingsOpen(o){t.settingsOpen=o},setHighResScaleFactor(o){t.highResScaleFactor=o},setHeight(o){t.height=o},setError(o){t.error=o},addWarning(o){t.loadWarnings.includes(o)||(t.loadWarnings=[...t.loadWarnings,o])},setHostCarriesData(o){t.hostCarriesData=o},setMousePos(o,r){t.mouseCol=o,t.mouseRow=r},setHighlightedColumns(o){t.highlightedColumns=o},setRegion(o){t.region=o},setHighlights(o){t.highlights.replace(o)},setFeatures(o){t.features.replace(o)},setSelection(o){let r=o&&{start:Math.min(o.start,o.end),end:Math.max(o.start,o.end),...o.rows?{rows:o.rows}:{}};gg(r,t.selection)||(t.selection=r)},clearSelection(){this.setSelection(void 0)},setClades(o){t.clades.replace(o)},applyHighlight(o,r){t.transientHighlights={...t.transientHighlights,[o]:r}},clearHighlight(o){if(o in t.transientHighlights){let{[o]:r,...n}=t.transientHighlights;t.transientHighlights=n}},setShowDomains(o){t.showDomains=o},setDomainFill(o){t.domainFill=o},setCellFill(o){t.setBgColor(o!=="none"),o!=="none"&&(t.domainFill=o==="domain")},setShowDomainLegend(o){t.showDomainLegend=o},setSubFeatureRows(o){t.subFeatureRows=o},setMouseClickPos(o,r){t.mouseClickCol=o,t.mouseClickRow=r},setRowHeight(o){t.rowHeight=o,t.zoomHeld={...t.zoomHeld,row:0}},setColWidth(o){t.colWidth=o,t.zoomHeld={...t.zoomHeld,col:0}},setCurrentAlignment(o){o!==t.currentAlignment&&_r(()=>{t.currentAlignment=o,t.collapsed.clear(),t.rotated.clear(),this.setShowOnly(void 0),this.drawRelativeTo(void 0),t.scrollX=0,t.scrollY=0})},toggleCollapsed(o){t.collapsed.includes(o)?t.collapsed.remove(o):t.collapsed.push(o)},toggleRotated(o){t.rotated.includes(o)?t.rotated.remove(o):t.rotated.push(o)},clearRotated(){t.rotated.clear()},setTreeRoot(o){gg(t.treeRoot,o)||_r(()=>{t.treeRoot=o,t.collapsed.clear(),t.rotated.clear(),this.setShowOnly(void 0)})},setShowOnly(o){t.showOnly=o},setData(o){t.data=o},setMSAFilehandle(o){t.msaFilehandle=o},setTreeFilehandle(o){t.treeFilehandle=o},setTreeMetadataFilehandle(o){t.treeMetadataFilehandle=o},setGFFFilehandle(o){t.gffFilehandle=o},setMSA(o){t.data.setMSA(o)},setTree(o){t.data.setTree(o)},setTreeMetadata(o){t.data.setTreeMetadata(o)},setGFF(o){t.data.setGFF(o)}})).views(t=>({get hideGapsEffective(){return t.hideGaps&&(t.collapsed.length>0||t.showOnly!==void 0||t.allowedGappyness<100)},get hostRestoresData(){return t.hostCarriesData},get viewInitialized(){return t.volatileWidth!==void 0},get width(){if(t.volatileWidth===void 0)throw new Error("not initialized");return t.volatileWidth-(t.settingsOpen?W_:0)}})).views(t=>({get colorScheme(){let{customColorScheme:o,colorSchemeName:r}=t;return o?xEe(o):nV[r]??nV[q_]},get dynamicColorSchemeName(){let{customColorScheme:o,colorSchemeName:r}=t;return!o&&r.includes("dynamic")?r:void 0},get header(){return this.MSA?.getHeader()??{}},get alignmentNames(){return this.MSA?.alignmentNames??[]},get noTree(){return!!this.tree.noTree},get noDomains(){return this.allAnnotations.length===0},get unshareableData(){if(t.hostRestoresData)return[];let{data:o}=t,r=Uve(t.columnTracks).filter(n=>n>e).reduce((n,i)=>n+i,0);return[["alignment",o.msa,t.msaFilehandle],["tree",o.tree,t.treeFilehandle],["annotations",o.gff,t.gffFilehandle],["row metadata",o.treeMetadata,t.treeMetadataFilehandle]].flatMap(([n,i,s])=>!s&&i&&i.length>e?[{what:n,bytes:i.length}]:[]).concat(r?[{what:"data tracks",bytes:r}]:[]).sort((n,i)=>i.bytes-n.bytes)},menuItems(){return[]},get rowData(){let o=t.data.treeMetadata;if(!o)return{};try{let r=JSON.parse(o);return typeof r=="object"&&r!==null?Object.fromEntries(Object.entries(r).map(([n,i])=>[n,SEe(i)])):{}}catch(r){return console.error("failed to parse rowData",r),{}}},rowDataOf(o){return this.rowData[o]},get rowFields(){let o=new Set;for(let r of Object.values(this.rowData))for(let n of Object.keys(r??{}))o.add(n);return[...o].sort((r,n)=>r.localeCompare(n))},get MSA(){let o=t.data.msa;return o?o4(o,t.currentAlignment,t.msaFormat):null},get allAnnotations(){let o=this.MSA?.annotations??[];return t.features.length>0||o.length>0?[...t.annotations,...REe(t.features),...o]:t.annotations},get actuallyShowDomains(){return t.showDomains&&this.allAnnotations.length>0},get numColumns(){return(this.MSA?.getWidth()??0)-this.blanks.length},get inputTree(){let o=t.data.tree;return o?Up(dve(o)):this.MSA?.getTree()??{noTree:!0,children:[],id:"empty",name:"empty"}},get tree(){let o=this.inputTree;return t.treeRoot&&!o.noTree?Ave(o,t.treeRoot):o},get rowNames(){return this.leaves.map(o=>o.data.name)},get rowNamesSet(){return new Map(this.leaves.map((o,r)=>[o.data.name,r]))},get resolvedClades(){return t.clades.length===0?Qve:EV(t.clades,Jp(this.tree,o=>o.children),this.root)},get cladeGutterWidth(){return Hhe(t.clades)},get treeDrawn(){return t.drawTree&&!this.noTree},get treeTips(){return cve(this.tree)},get maxTipLabelWidth(){return uve(this.treeTips.names.map(o=>this.rowDataOf(o)?.genome||o),j_)},get labelColumnWidth(){return t.drawLabels?this.maxTipLabelWidth+(this.treeDrawn?10:6):0},get fittedTreeAreaWidth(){let o=t.marginLeft+this.cladeGutterWidth,r=this.treeDrawn?t.treeWidth??dr(this.treeTips.depth*FAe,J_,LAe):0,n=o+r+this.labelColumnWidth,i=t.viewInitialized?this.numColumns>0?t.width*UAe:t.width-this.rowPanelsWidth-t.resizeHandleWidth:1/0,s=Math.max(i,o+Math.min(r,J_));return Math.ceil(Math.min(n,s))},get effectiveTreeAreaWidth(){return t.treeAreaWidth??this.fittedTreeAreaWidth},get effectiveTreeWidth(){let o=this.showTreeText?this.labelColumnWidth:0;return t.treeWidth??Math.max(J_,Math.floor(this.effectiveTreeAreaWidth-t.marginLeft-this.cladeGutterWidth-o))},get showTreeText(){return t.drawLabels&&t.rowHeight>=O3},get mouseOverRowName(){let{mouseRow:o}=t;return o===void 0?void 0:this.leaves[o]?.data.name},get hoveredInsertion(){let{mouseCol:o,mouseRow:r}=t;if(o!==void 0&&r!==void 0){let n=this.leaves[r]?.data.name;if(n){let i=this.insertionPositions.get(n)?.find(s=>s.pos===o);if(i)return{rowName:n,col:o,letters:i.letters}}}},get root(){return WQ(this.tree,{collapsed:t.collapsed,rotated:t.rotated,order:t.treeOrder,showOnly:t.showOnly})},get treeNewick(){return mve(WQ(this.tree,{collapsed:[],rotated:t.rotated,order:t.treeOrder}))},get treeOverviewHeight(){return t.showTreeOverview?t.overviewHeight:0},get treeOverviewLayout(){if(!t.showTreeOverview)return;let o=K4(WQ(this.tree,{collapsed:t.collapsed,rotated:t.rotated,order:t.treeOrder}),{rowHeight:1,treeWidth:1});return{root:o.root,numTips:o.leaves.length,maxDepthToLeaf:o.root.depthToLeaf,showBranchLen:t.showBranchLen&&o.rootToTipLength>0}},get treeOverviewClades(){let o=this.treeOverviewLayout;return!o||t.clades.length===0?Qve:EV(t.clades,Jp(this.tree,r=>r.children),o.root)},get treeOverviewFocusRows(){let o=this.treeOverviewLayout;if(!o||!t.showOnly)return;let r=tf(o.root,n=>n.data.id===t.showOnly);return r?TV(r):void 0},treeOverviewHit(o){let r=this.treeOverviewLayout;if(!r)return;let{root:n,numTips:i}=r,s=i/t.overviewHeight,a=dr(Math.floor(o*s),0,i-1),l=dr(Math.ceil((o+1)*s)-1,a,i-1),c=HR(n,a+.5,l+.5);for(;!c.children&&c.parent;)c=c.parent;return c===n?void 0:{id:c.data.id,rows:TV(c)}},get rowPanelsWidth(){return w0(t.rowPanels.map(o=>lV(o,t)))},get rowPanelsHeaderHeight(){return t.rowPanels.length>0?Z_:0},get msaAreaWidth(){return t.width-this.effectiveTreeAreaWidth-this.rowPanelsWidth-t.resizeHandleWidth},get treeAreaWidthMinusMargin(){return this.effectiveTreeAreaWidth-t.marginLeft-this.cladeGutterWidth},get blanks(){let{hideGapsEffective:o,allowedGappyness:r}=t;if(!o)return[];let n=this.leaves.map(u=>this.MSA?.getRow(u.data.name)).filter(Oa);if(n.length===0)return[];let i=this.MSA?.getWidth()??0,s=n.length,a=Math.ceil(r/100*s),l=new Uint32Array(i);for(let u=0;u<s;u++){let p=n[u],f=p.length;for(let d=0;d<i;d++)(d>=f||p.charCodeAt(d)-45>>>0<=1)&&l[d]++}let c=[];for(let u=0;u<i;u++)l[u]>=a&&c.push(u);return c},get insertionPositions(){let{blanks:o,rows:r}=this;if(o.length===0)return new Map;let n=new Map;for(let[i,s]of r){let a=Xde(o,s);a.length>0&&n.set(i,a)}return n},get rows(){let o=this.MSA;return this.leaves.map(r=>[r.data.name,o?.getRow(r.data.name)]).filter(r=>!!r[1])},get numRows(){return this.leaves.length},seqPosIndex(o){let r=this.MSA;if(!r)return;let n=Dve.get(r);n||(n=new Map,Dve.set(r,n));let i=n.get(o);if(!i){let s=r.getRow(o);if(!s)return;i=tve(s),n.set(o,i)}return i},rowSequence(o){return this.MSA?.getRow(o)||void 0},get rowMap(){let o=this.MSA;return new Map(o?.getNames().map(r=>[r,o.getRow(r)]).filter(([,r])=>!!r))},get columns(){let o=this.columns2d;return new Map(this.rows.map((r,n)=>[r[0],o[n]]))},get columns2d(){let{hideGapsEffective:o}=t;return this.rows.map(([,r])=>(o?L_(this.blanks,r):r).toUpperCase())},get fontSize(){return k3(t.rowHeight)},get colStats(){return Mde(this.columns2d,this.numColumns)},get sequenceType(){let o=this.colStats.lettersPresent,r=["N","R","Y","K","M","S","W"],n=new Set(["A","C","G","T",...r]),i=new Set(["A","C","G","U",...r]),s=o.size>0&&[...o].every(l=>n.has(l)),a=o.size>0&&[...o].every(l=>i.has(l));return s?"dna":a?"rna":"amino"},get colConsensus(){let{colStats:o}=this;return Array.from({length:o.numColumns},(r,n)=>{let i=o.total(n),s=0,a="";o.forEachResidue(n,(c,u)=>{u>s&&(s=u,a=gm(c))});let l=i?s/i:0;return{letter:a,color:l>.4?`hsl(240, 30%, ${100*Math.max(1-l/3,.3)}%)`:void 0}})},get colClustalX(){let{colStats:o}=this;return Array.from({length:o.numColumns},(r,n)=>yEe(o,n))},get colSimilarity(){let{colStats:o,sequenceType:r}=this,n=r==="amino"?sve:ave;return Array.from({length:o.numColumns},(i,s)=>n(o,s))},get conservation(){let{colStats:o,alphabetMaxBits:r}=this;return Array.from({length:o.numColumns},(n,i)=>{let s=o.total(i),a=o.gapCount(i);return s>a?Math.max(0,1-o.entropy(i)/r)*(1-a/s):0})},get alphabetMaxBits(){return Qde(this.sequenceType)},get propertyConservation(){return this.sequenceType==="amino"?GEe(this.colStats):[]},get treeLayout(){let o=()=>this.effectiveTreeWidth;return K4(this.root,{get rowHeight(){return t.rowHeight},get treeWidth(){return o()}})},get hierarchy(){return this.treeLayout.root},get totalHeight(){return this.leaves.length*t.rowHeight},get leaves(){return this.treeLayout.leaves},get rootToTipLength(){return this.treeLayout.rootToTipLength},get pxPerBranchLength(){let o=this.rootToTipLength;return this.showBranchLenEffective&&o?this.effectiveTreeWidth/o:0},get maxDepthToLeaf(){return this.treeLayout.root.depthToLeaf},get allBranchesLength0(){return this.rootToTipLength===0},get showBranchLenEffective(){return this.allBranchesLength0?!1:t.showBranchLen}})).views(t=>({get totalWidth(){return t.numColumns*t.colWidth}})).views(t=>({get showMsaLetters(){return t.drawMsaLetters&&t.rowHeight>=O3&&t.colWidth>=MAe&&t.colWidth>t.rowHeight/2}})).views(t=>{let o=new WeakMap;return{get columnTrackContent(){let{MSA:r,blanks:n,hideGapsEffective:i}=t,s=r?.getWidth()??0,a=(u,p,f)=>{if(!u.row)return p;let d=Array.from({length:s},()=>f),m=t.seqPosIndex(u.row);return p.forEach((y,b)=>{let h=m?.[b];h!==void 0&&(d[h]=y)}),d},l=u=>i?Kde(n,u):u,c=(u,p)=>{let f=u.row?t.seqPosIndex(u.row)?.[p-1]:p-1;if(!(f===void 0||f<0||f>=s))return i?dC(n,f):f};return new Map(t.columnTracks.map(u=>{if(u.kind==="arc"){let f=(u.arcs??[]).map(d=>{let m=c(u,Math.min(d.start,d.end)),y=c(u,Math.max(d.start,d.end));return m!==void 0&&y!==void 0&&m<y?{start:m,end:y,color:d.color}:void 0}).filter(Oa);return[u.id,{arcs:f}]}if(u.kind==="bar"){let f=u.scales?.y?.domainMax??1,d=l(a(u,u.values??[],0)).map(m=>Math.min(1,Math.max(0,m/f)));return[u.id,{values:d}]}let p=l(a(u,(u.data??"").split("")," "));return[u.id,{data:p.join("")}]}))},trackHeight(r,n=r,i){return t.trackHeights.get(n)??i??LYe[r]??t.rowHeight},columnTrackModel(r){let n=o.get(r);return n||(n=kf(()=>{let i=Bve.has(r.kind)?FYe(r.id):void 0,s=this.columnTrackContent.get(r.id);return{model:{id:r.id,name:r.name,kind:r.kind,heightKey:i,height:this.trackHeight(r.kind,i,r.height),barColor:r.color,arcColor:r.color,customColorScheme:r.encoding?.color?bV(r.encoding.color,[...r.encoding.color.domain??[],...new Set(r.data)]):void 0,data:s?.data,arcs:s?.arcs}}}),o.set(r,n)),n.get()},get columnTrackModels(){return t.columnTracks.map(r=>this.columnTrackModel(r))}}}).views(t=>({get secondaryStructureConsensus(){return t.MSA?.secondaryStructureConsensus},get secondaryStructureArcs(){let{blanks:o,hideGapsEffective:r}=t,n=this.secondaryStructureConsensus;if(n)return hve(r?L_(o,n):n).map(({start:i,end:s,pseudoknot:a})=>({start:i,end:s,color:a?HYe:UYe}))},get adapterTrackModels(){let{MSA:o,hideGapsEffective:r,blanks:n}=t,i=(o?.tracks??[]).filter(a=>!!a.data);if(i.length===0)return[];let{rowHeight:s}=t;return i.map(a=>({model:{...a,kind:"text",data:r?L_(n,a.data):a.data,height:s}}))},get basePairTrackModels(){let o=this.secondaryStructureArcs;return o?.length?[{model:{id:"base-pairs",name:"Base pairs",kind:"arc",heightKey:"arc",height:t.trackHeight("arc"),arcs:o}}]:[]},get computedTrackModels(){return[{id:"conservation",name:"Conservation",kind:"bar",barColor:"gray"},...t.sequenceType==="amino"?[{id:"property-conservation",name:"Property conservation",kind:"bar",barColor:"#6a51a3"}]:[],{id:"sequence-logo",name:"Sequence logo",kind:"logo"},{id:"position-ruler",name:"Position",kind:"ruler"}].map(o=>({model:{...o,heightKey:Bve.has(o.kind)?o.kind:void 0,height:t.trackHeight(o.kind)}}))},get referenceTrackModels(){let{relativeTo:o}=t,r=o===void 0?void 0:t.columns.get(o);return o===void 0||r===void 0?[]:[{model:{id:"reference-row",name:o,kind:"reference",data:r,height:t.rowHeight}}]},get tracks(){return[...this.adapterTrackModels,...this.basePairTrackModels,...t.columnTrackModels,...t.numColumns>0?this.computedTrackModels:[],...this.referenceTrackModels]},get turnedOnTracks(){return this.tracks.filter(o=>!Rve(t.turnedOffTracks,o.model.id))},get showHorizontalScrollbar(){return Nve(t.totalWidth,t.msaAreaWidth)},visibleColToRowLetter(o,r){return t.rowSequence(o)?.[this.visibleColToGlobalCol(r)]},visibleColToSeqPos(o,r){return qEe(t.seqPosIndex(o),this.visibleColToGlobalCol(r))},visibleColToSeqPosOneBased(o,r){let n=this.visibleColToSeqPos(o,r);return n!==void 0?n+1:void 0},globalColToVisibleCol(o){let{blanks:r,hideGapsEffective:n}=t;return n?YEe(r,o):o},visibleColToGlobalCol(o){let{blanks:r,hideGapsEffective:n}=t;return n?$Ee(r,o):o},seqPosToGlobalCol(o,r){let n=t.rowSequence(o);return n===void 0?void 0:t.seqPosIndex(o)?.[r]??(r===0?0:n.length)},seqEndToGlobalCol(o,r){let n=t.seqPosIndex(o);return n&&n.length>0?n[Math.min(r,n.length-1)]:void 0},seqPosToVisibleCol(o,r){let n=this.seqPosToGlobalCol(o,r);return n===void 0?void 0:this.globalColToVisibleCol(n)},visibleSpan({row:o,start:r,end:n}){let{blanks:i}=t,s=Math.max(1,Math.floor(r)),a=Math.ceil(n),l=s-1,c=Math.min(a,t.MSA?.getWidth()??a)-1;if(o!==void 0){let f=this.seqPosToGlobalCol(o,s-1),d=this.seqEndToGlobalCol(o,a-1);if(f===void 0||d===void 0)return;l=f,c=d}let u=this.globalColToVisibleCol(l)??dC(i,l),p=this.globalColToVisibleCol(c)??dC(i,c)-1;return u<=p?{startCol:u,endCol:p}:void 0},get residueMappingProblems(){let o=[];for(let r of t.residueMappings){let n={row:r.row,structureId:r.structure.id},i=t.seqPosIndex(r.row)?.length;if(i===void 0){o.push({...n,scope:"mapping",reason:"no such row in the alignment"});continue}if(r.rowLength!==void 0&&r.rowLength!==i){o.push({...n,scope:"mapping",reason:`computed against a ${r.rowLength}-residue row; this one has ${i}`});continue}let s=r.segments.find(a=>a.rowEnd>i||a.rowStart<1);if(s){o.push({...n,scope:"mapping",reason:`segment ${s.rowStart}-${s.rowEnd} does not fit a ${i}-residue row`});continue}for(let a of r.segments)Ove(a)||o.push({...n,scope:"segment",reason:`segment ${a.rowStart}-${a.rowEnd} maps to ${a.structStart}-${a.structEnd}, which is a different length`})}return o},get usableResidueMappings(){let o=new Set(this.residueMappingProblems.filter(r=>r.scope==="mapping").map(r=>`${r.row}\0${r.structureId}`));return t.residueMappings.filter(r=>!o.has(`${r.row}\0${r.structure.id}`)).map(r=>({...r,segments:r.segments.filter(Ove)}))},get mappedStructures(){return this.usableResidueMappings.map(o=>({row:o.row,structure:o.structure}))},structureResidue(o,r,n){let i=[];for(let s of this.usableResidueMappings){if(s.row!==o||n!==void 0&&s.structure.id!==n)continue;let a=s.segments.find(l=>r>=l.rowStart&&r<=l.rowEnd);if(a){let l=a.structStart+(r-a.rowStart);i.push({structure:s.structure,position:l,observed:!$Ye(s.unobserved,l)})}}return i.length===1?i[0]:void 0},rowResidue(o,r,n){let i=[];for(let s of this.usableResidueMappings){if(s.structure.id!==o||n!==void 0&&s.structure.asymId!==void 0&&s.structure.asymId!==n)continue;let a=s.segments.find(l=>r>=l.structStart&&r<=l.structEnd);a&&i.push({rowName:s.row,seqPos:a.rowStart+(r-a.structStart)})}return i.length===1?i[0]:void 0}})).views(t=>({get treeScaleBar(){if(t.showTreeScaleBar)return vEe(t.pxPerBranchLength,t.effectiveTreeAreaWidth-t.marginLeft*2)},get topBandHeight(){return Math.max(t.showHorizontalScrollbar?t.minimapHeight:0,t.rowPanelsHeaderHeight,t.treeOverviewHeight+(this.treeScaleBar?Zu:0))},get msaAreaHeight(){return t.height-this.topBandHeight-t.headerHeight-this.totalTrackAreaHeight},get totalTrackAreaHeight(){return w0(t.turnedOnTracks.map(o=>o.model.height))},get annotationTypes(){let o=new Map;for(let r of t.allAnnotations)o.has(r.accession)||o.set(r.accession,r);return o},get defaultOffAccessions(){return new Set(t.allAnnotations.filter(o=>o.defaultOff).map(o=>o.accession))},featureOff(o){return t.turnedOffFeatures.get(o)??this.defaultOffAccessions.has(o)},get filteredAnnotations(){return t.allAnnotations.filter(o=>!this.featureOff(o.accession))},get cellFill(){return t.bgColor?t.actuallyShowDomains&&t.domainFill&&this.filteredAnnotations.length>0?"domain":"residue":"none"},get annotationsByRow(){let{rowNamesSet:o}=t;return Gae(this.filteredAnnotations,r=>Pve(r.id,o))}})).views(t=>({get showVerticalScrollbar(){return Nve(t.totalHeight,t.msaAreaHeight)}})).views(t=>({get dataInitialized(){return!!(t.data.msa||t.data.tree)&&!t.error},get blocksX(){return qE({viewportSize:t.msaAreaWidth,viewportPos:-t.scrollX,blockSize:t.blockSize,mapSize:t.totalWidth})},get blocksY(){return qE({viewportSize:t.msaAreaHeight,viewportPos:-t.scrollY,blockSize:t.blockSize,mapSize:t.totalHeight})}})).views(t=>({get verticalScrollbarWidth(){return t.showVerticalScrollbar?20:0},get msaCanvasWidth(){return t.msaAreaWidth-this.verticalScrollbarWidth},get maxScrollX(){return Math.min(-t.totalWidth+this.msaCanvasWidth,0)},get blocks2d(){return t.blocksY.flatMap(o=>t.blocksX.map(r=>[r,o]))},get wheelZooming(){return t.zoomSnapshot!==void 0},get isLoading(){return t.loadingMSA||t.loadingTree},get dataWarnings(){let{annotations:o,rowNamesSet:r}=t;return t.dataInitialized&&o.length>0&&!o.some(n=>r.has(Pve(n.id,r)))?[`0 of ${o.length} annotations name a row in this alignment`]:[]},get warnings(){return[...t.loadWarnings,...this.dataWarnings.filter(o=>!t.dismissedWarnings.includes(o))]},get maxScrollY(){return Math.min(-t.totalHeight+t.msaAreaHeight,0)},get wheelZoomAxis(){return t.scrollZoom?t.scrollZoomAxis:"both"}})).actions(t=>({setDrawMsaLetters(o){t.drawMsaLetters=o},clearWarnings(){t.loadWarnings=[],t.dismissedWarnings=t.dataWarnings},setScrollZoom(o){t.scrollZoom=o},setScrollZoomAxis(o){t.scrollZoomAxis=o},setHoveredTreeNode(o){if(o===t.hoveredTreeNode?.nodeId)return;if(!o){t.hoveredTreeNode=void 0;return}let r=tf(t.hierarchy,n=>n.data.id===o);t.hoveredTreeNode=r?{nodeId:o,descendantNames:Qc(r).map(n=>n.data.name)}:void 0},calculateNeighborJoiningTreeFromMSA(){let o=[...t.rowMap];if(o.length<2)throw new Error("Need at least 2 sequences to build a tree");if(o.length>ib)throw new Error(`Neighbor joining here is capped at ${ib} sequences and this alignment has ${o.length}. Build the tree with FastTree or IQ-TREE and open it alongside the alignment: https://gmod.org/JBrowseMSA/tutorials/protein_family`);this.replaceTree(UEe(o))},rerootAt(o){let r=tf(Jp(t.tree,i=>i.children),i=>i.data.id===o);if(!r?.parent)return;let n=vV(Jp(t.inputTree,i=>i.children),Qc(r).map(i=>i.data.name));if(n){let i=Qc(n);t.setTreeRoot({outgroup:[...new Set([i[0].data.name,i.at(-1).data.name])]})}},replaceTree(o){_r(()=>{t.setTreeFilehandle(void 0),t.collapsed.clear(),t.rotated.clear(),t.setShowOnly(void 0),t.setTree(o)})},resetZoom(){t.setColWidth(12),t.setRowHeight(16)},zoomAtCenter(o,r="both"){this.zoomToPos(o,t.msaCanvasWidth/2,t.msaAreaHeight/2,r)},zoomIn(){this.zoomAtCenter(1.5)},zoomOut(){this.zoomAtCenter(.75)},zoomToPos(o,r,n,i="both"){_r(()=>{let s=(-t.scrollX+r)/t.colWidth,a=(-t.scrollY+n)/t.rowHeight,l=i!=="both"||t.colWidth===12&&t.rowHeight===16;if(i!=="vertical"){let{value:d,held:m}=kve(t.colWidth,o,12,t.zoomHeld.col,$_,l);t.colWidth=d,t.zoomHeld={...t.zoomHeld,col:m}}if(i!=="horizontal"){let{value:d,held:m}=kve(t.rowHeight,o,16,t.zoomHeld.row,Y_,l);t.rowHeight=d,t.zoomHeld={...t.zoomHeld,row:m}}t.scrollX=dr(r-s*t.colWidth,t.maxScrollX,0);let c=n-a*t.rowHeight,u=Math.max(0,-t.maxScrollY),p=t.totalHeight-u,f=p>0?dr(1-u/p,0,1):1;t.scrollY=dr(c*(1-f),t.maxScrollY,0)})},wheelZoomToPos(o,r,n){t.zoomSnapshot??=P4(t,!1),this.zoomToPos(o,r,n,t.wheelZoomAxis),ohe(t,t.zoomSnapshot)||(t.zoomSnapshot=P4(t,!0))},endWheelZoom(){t.zoomSnapshot=void 0},doScrollY(o){this.setScrollY(t.scrollY+o)},setScrollY(o){t.scrollY=dr(o,t.maxScrollY,0)},setAnnotations(o){t.annotations=o},applyGFFText(o){this.setAnnotations(cR(lR(o)))},doScrollX(o){this.setScrollX(t.scrollX+o)},setScrollX(o){t.scrollX=dr(o,t.maxScrollX,0)},setColumnTracks(o){t.columnTracks.replace(o.map(yV))},setRowData(o){t.data.setTreeMetadata(JSON.stringify(o))},setEncodings(o){t.encodings.replace(o.map(gV))},setRowPanels(o){t.rowPanels.replace(o.map(hV))},setResidueMappings(o){t.residueMappings.replace(o)},toggleTrack(o){t.turnedOffTracks.set(o,!Rve(t.turnedOffTracks,o))},setTracksShown(o,r){for(let n of o)Fve.has(n)===!r?t.turnedOffTracks.delete(n):t.turnedOffTracks.set(n,!r)},setStatus(o){t.status=o}})).views(t=>({cellAt(o,r){let n=t.visibleColToGlobalCol(o),i=r===void 0?void 0:t.leaves[r]?.data.name;return i===void 0?{column:n+1}:{column:n+1,row:i,residue:t.visibleColToSeqPosOneBased(i,o),letter:t.rowSequence(i)?.[n]}},get hoveredCell(){let{mouseCol:o,mouseRow:r}=t;return o===void 0?void 0:this.cellAt(o,r)},get clickedCell(){let{mouseClickCol:o,mouseClickRow:r}=t;return o===void 0?void 0:this.cellAt(o,r)},get viewport(){let{scrollX:o,colWidth:r,numColumns:n,viewInitialized:i}=t;if(n===0||!i)return;let{xStart:s,xEnd:a}=Fa({offsetX:-o,blockWidth:t.msaCanvasWidth,colWidth:r}),l=Math.max(0,Math.min(a,n)-1);return{startColumn:t.visibleColToGlobalCol(Math.min(s,l))+1,endColumn:t.visibleColToGlobalCol(l)+1}},get segmentDomainTypes(){return[...t.annotationTypes.values()].filter(o=>P3.has(o.featureType??"")).toSorted((o,r)=>o.start-r.start)},get categoricalDomainTypes(){let o=[...t.annotationTypes.values()].filter(n=>!P3.has(n.featureType??"")),r=[...new Set(o.map(n=>n.featureType))];return o.toSorted((n,i)=>r.indexOf(n.featureType)-r.indexOf(i.featureType))},get fillPalette(){let o=Object.fromEntries(this.segmentDomainTypes.map((n,i)=>[n.accession,D3[i%D3.length]])),r=zQ(this.categoricalDomainTypes.map(n=>n.accession));return{...o,...r}},get featureFillEncoding(){return this.resolvedEncodings.find(o=>o.channel==="featureFill")},get featureColors(){return cV(t.filteredAnnotations,this.featureFillEncoding,this.fillPalette)},get featureLabels(){let o=this.resolvedEncodings.find(r=>r.channel==="featureLabel");return o?uV(t.filteredAnnotations,o.field):void 0},get segmentLabels(){return new Map(this.segmentDomainTypes.map((o,r)=>{let n=/(\d+)\s*$/.exec(o.name);return[o.accession,n?n[1]:`${r+1}`]}))},get visibleDomainTypes(){return this.categoricalDomainTypes.filter(o=>!t.featureOff(o.accession)).toSorted((o,r)=>o.start-r.start)},get legends(){let{featureFillEncoding:o,fillPalette:r,visibleDomainTypes:n}=this,i=new Map,s=new Set,a=(l,c,u,p=!1)=>{let f=l??"domains";if(u.length===0||i.has(f))return;let d=p||l===void 0?"domains":`rowData-${c}`,m=d;for(let y=2;s.has(m);y++)m=`${d}-${y}`;s.add(m),i.set(f,{id:m,title:c??"Domains",entries:u})};t.actuallyShowDomains&&t.numColumns>0&&a(o?.key,o?.title,o?o.legend:n.map(l=>({id:l.accession,label:l.name,color:l.color??r[l.accession]})),!0);for(let{channel:l,key:c,title:u,legend:p}of this.resolvedEncodings)BV.has(l)||a(c,u,p);for(let{legendKey:l,legendTitle:c,legend:u}of this.rowPanelScales)a(l,c,u);return[...i.values()]},get domainUnderline(){return t.actuallyShowDomains&&t.cellFill!=="domain"&&!t.subFeatureRows&&t.showMsaLetters},get domainBands(){let{blanks:o}=t,r=new Map;for(let[n,i]of Object.entries(t.annotationsByRow)){let s=i.toSorted((a,l)=>v3(l)-v3(a)).map(a=>{let l=t.seqPosToGlobalCol(n,a.start-1),c=t.seqEndToGlobalCol(n,a.end-1);if(l===void 0||c===void 0)return;let u=dC(o,l),p=dC(o,c+1);return p>u?{annotation:a,startCol:u,endCol:p}:void 0}).filter(Oa).map((a,l)=>({...a,stackIndex:l}));s.length>0&&r.set(n,uC(s))}return r},get domainBandsByStart(){return new Map([...this.domainBands].map(([o,r])=>[o,r.toSorted((n,i)=>n.startCol-i.startCol)]))},get mouseOverDomains(){let{mouseCol:o}=t,r=t.mouseOverRowName;if(r===void 0||o===void 0)return Mve;let n=(this.domainBands.get(r)??[]).filter(i=>o>=i.startCol&&o<i.endCol).map(i=>i.annotation);return n.length>0?n:Mve},get referenceRowIndex(){let{relativeTo:o}=t;return o===void 0?void 0:t.rowNamesSet.get(o)},get hoveredRowIndices(){let{hoveredTreeNode:o,rowNamesSet:r}=t;return o?o.descendantNames.map(n=>r.get(n)).filter(Oa):[]},get highlightedColumnRuns(){return Lve([...t.highlightedColumns??[]].sort((o,r)=>o-r)).map(([o,r])=>({start:o,end:r}))},fillHighlightLabel(o,r,n){if(!o.includes("{"))return o;let i=r&&n!==void 0?t.seqPosIndex(r)?.[n-1]:void 0,s=r&&i!==void 0?t.MSA?.getRow(r)[i]??"":"";return o.replaceAll("{residue}",s).replaceAll("{position}",n===void 0?"":String(n))},get resolvedHighlights(){let{rowNamesSet:o,transientHighlights:r}=t;return[...t.highlights,...Object.values(r).flat()].flatMap(({row:i,rows:s,start:a,end:l,label:c,color:u})=>{let p={label:c&&this.fillHighlightLabel(c,i,a),color:u};if(s){let d=s.map(m=>o.get(m)).filter(Oa);return d.length?[{...p,rowIndices:d}]:[]}if(a===void 0||l===void 0)return[];let f=t.visibleSpan({row:i,start:a,end:l});return f?[{...p,...f,rowIndices:[]}]:[]})},get resolvedSelection(){let{selection:o,rowNamesSet:r,numRows:n}=t,i=o&&t.visibleSpan({start:o.start,end:o.end});if(!o||!i)return;let s=o.rows?Lve(o.rows.map(a=>r.get(a)).filter(Oa).sort((a,l)=>a-l)):n>0?[[0,n-1]]:[];return s.length>0?{...i,rowRuns:s}:void 0},get selectionSize(){let o=this.resolvedSelection,r=this.selectionFileSpan;return o&&r?{columns:r.end-r.start+1,rows:w0(o.rowRuns.map(([n,i])=>i-n+1))}:void 0},get selectionFileSpan(){let{selection:o}=t,r=t.MSA?.getWidth()??0,n=Math.max(1,Math.floor(o?.start??0)),i=Math.min(r,Math.ceil(o?.end??0));return o&&n<=i?{start:n,end:i}:void 0},get selectionFasta(){let{rowNames:o}=t,r=this.resolvedSelection,n=this.selectionFileSpan;if(!r||!n)return"";let i=r.rowRuns.flatMap(([s,a])=>o.slice(s,a+1)).flatMap(s=>{let a=t.rowSequence(s);return a===void 0?[]:[[s,a]]});return dEe(i,n.start,n.end)},columnStatsAt(o){let{colStats:r,conservation:n,propertyConservation:i}=t;return EEe({col:o,colStats:r,conservation:n,propertyConservation:i})},getRowData(o){return{data:t.MSA?.getRowData(o),rowData:t.rowDataOf(o)}},get resolvedEncodings(){return t.encodings.map(o=>({...o,...this.scaleOf(o,BV.has(o.channel)?"features":"rows")}))},get resolvedScales(){let o=Object.values(t.rowData),r=(i,s)=>i.map(a=>af(a,s)).filter(Oa),n=(i,s)=>({spec:i,field:i.field,table:s,...s==="rows"?{values:o.map(a=>a?.[i.field]).filter(Oa)}:{values:r(t.allAnnotations,i.field),shown:r(t.filteredAnnotations,i.field)}});return eve([...t.encodings.map(i=>n(i,BV.has(i.channel)?"features":"rows")),...t.rowPanels.flatMap(i=>i.kind==="strip"?[n(i,"rows")]:i.encoding?.color?[n(i.encoding.color,"features")]:[])])},scaleOf(o,r){return this.resolvedScales.get(mV({spec:o,field:o.field,table:r}))},get rowPanelScales(){let{rowData:o}=t,{fillPalette:r,featureFillEncoding:n,featureLabels:i}=this,s=t.filteredAnnotations;return t.rowPanels.map(a=>{if(a.kind==="features"){let f=a.encoding?.color,d=f?{field:f.field,...this.scaleOf(f,"features")}:n,m=a.encoding?.label;return{kind:a.kind,x:a.x,header:a.header??"",field:d?.field,legendKey:d?.key,legendTitle:d?.title,colors:f?cV(s,d,r):this.featureColors,labels:m?uV(s,m):i,legend:d?.legend??this.visibleDomainTypes.map(y=>({id:y.accession,label:y.name,color:y.color??r[y.accession]}))}}let{colorOf:l,legend:c,key:u,title:p}=this.scaleOf(a,"rows");return{kind:a.kind,field:a.field,header:a.header??a.field,legendKey:u,legendTitle:p,colors:GQ(o,a.field,l),legend:c}})},get resolvedRowPanels(){let o=this.rowPanelScales,r=0;return t.rowPanels.map((n,i)=>{let s=lV(n,t),a={id:`rowpanel-${i}`,width:s,offsetX:r};if(r+=s,n.kind==="features"){let l=n.transform?.find(c=>c.type==="align");return{...a,...o[i],spans:BEe({panel:n,width:s,colWidth:t.colWidth,domainBands:this.domainBands,annotationsByRow:t.annotationsByRow,shifts:l?this.featureAlignShifts.get(l.on):void 0})}}return{...a,...o[i]}})},get featureAlignShifts(){let o=new Set(t.rowPanels.flatMap(r=>r.kind==="features"&&r.x==="position"?(r.transform??[]).filter(n=>n.type==="align").map(n=>n.on):[]));return new Map([...o].map(r=>[r,new Map(Object.entries(t.annotationsByRow).map(([n,i])=>{let s=i.find(a=>NR(a)===r);return s?[n,1-s.start]:void 0}).filter(Oa))]))},get tipLabelColors(){let o=this.resolvedEncodings.find(r=>r.channel==="tipLabel");return o?GQ(t.rowData,o.field,o.colorOf):void 0},get rowTints(){let o=this.resolvedEncodings.find(n=>n.channel==="rowTint");if(!o)return;let r=GQ(t.rowData,o.field,o.colorOf);return t.rowNames.map(n=>{let i=r.get(n);return i&&O_(i,qAe)})},get branchColors(){let o=this.resolvedEncodings.find(s=>s.channel==="branch");if(!o)return;let r=pC(t.tree),n=new Map,i=new Map;for(let s=r.length-1;s>=0;s--){let a=r[s],l=a.children.length>0?YYe(a.children.map(u=>n.get(u))):t.rowDataOf(a.name)?.[o.field];n.set(a,l);let c=l===void 0?void 0:o.colorOf(l);c&&i.set(a.id,c)}return i}})).actions(t=>({setHeaderHeight(o){t.headerHeight=o},setHideHeader(o){t.hideHeader=o},setEmbeddedMode(o){t.embeddedMode=o},setImportForm(o){t.importForm=o},treeOverviewClick(o){let r=t.treeOverviewHit(o),n=t.treeOverviewFocusRows,i=!!n&&!!r&&r.rows[0]>=n[0]&&r.rows[1]<=n[1];t.setShowOnly(i||!r?void 0:r.id)},setTrackHeight(o,r){t.trackHeights.set(o,r)},reset(){t.resetCount++,t.loadWarnings=[],t.dismissedWarnings=[],t.setStatus(void 0),P8(t,Object.fromEntries(Object.entries(RC(t)).filter(([o])=>VYe.has(o)))),t.setError(void 0),t.setAnnotations([]),t.setHighlightedColumns(void 0),t.transientHighlights={},t.setMousePos(void 0,void 0),t.setMouseClickPos(void 0,void 0),t.setHoveredTreeNode(void 0)},async exportSVG(o){let{renderToSvg:r}=await Promise.resolve().then(()=>(Sve(),wve)),n=await r(t,o),i=new Blob([n],{type:"image/svg+xml"});$E(i,aV(t.msaFilehandle,"svg"))},exportNewick(){let o=new Blob([t.treeNewick],{type:"text/plain"});$E(o,aV(t.treeFilehandle??t.msaFilehandle,"nwk","tree"))},setFilter(o,r){r===t.defaultOffAccessions.has(o)?t.turnedOffFeatures.set(o,!r):t.turnedOffFeatures.delete(o)},fit(){_r(()=>{for(let o=0;o<2;o++)this.fitHorizontally(12),this.fitVertically(16)})},fitVertically(o=bm){t.numRows>0&&t.setRowHeight(dr(t.msaAreaHeight/t.numRows,Y_,o)),t.scrollY=0},zoomToRegion(o){let r=t.visibleSpan(o);!r||!t.viewInitialized||_r(()=>{t.setColWidth(dr(t.msaCanvasWidth/(r.endCol-r.startCol+1),$_,bm)),t.scrollX=dr(-r.startCol*t.colWidth,t.maxScrollX,0)})},revealRegion(o){_r(()=>{this.zoomToRegion(o);let r=o.row===void 0?void 0:t.rowNamesSet.get(o.row);r!==void 0&&t.viewInitialized&&t.setScrollY(-(r+.5)*t.rowHeight+t.msaAreaHeight/2)})},zoomToSelection(){let{selection:o,resolvedSelection:r}=t;!o||!r||_r(()=>{if(this.zoomToRegion({start:o.start,end:o.end}),o.rows&&t.viewInitialized){let{rowRuns:n}=r,i=n[0][0],s=n.at(-1)[1];t.setRowHeight(dr(t.msaAreaHeight/(s-i+1),Y_,bm)),t.scrollY=dr(-i*t.rowHeight,t.maxScrollY,0)}})},selectBlock(o,r){let{numColumns:n,numRows:i,rowNames:s}=t;if(n===0||i===0)return;let a=(d,m,y)=>[dr(d,0,y),dr(m,0,y)].sort((b,h)=>b-h),[l,c]=a(o.col,r.col,n-1),[u,p]=o.row===void 0||r.row===void 0?[0,i-1]:a(o.row,r.row,i-1),f=u===0&&p===i-1;t.setSelection({start:t.visibleColToGlobalCol(l)+1,end:t.visibleColToGlobalCol(c)+1,...f?{}:{rows:s.slice(u,p+1)}})},fitHorizontally(o=bm){t.numColumns>0&&t.setColWidth(dr(t.msaCanvasWidth/t.numColumns,$_,o)),t.scrollX=0},afterCreate(){t.highlightColumns?.length&&t.setHighlightedColumns(t.highlightColumns);let o=()=>!!t.treeFilehandle&&!t.data.tree;if(au(t,hg(()=>t.dataInitialized&&!o()?{clades:RC(t.clades),treeRoot:t.treeRoot}:void 0,n=>{if(n?.clades.length)for(let{mark:i,nodeId:s}of t.resolvedClades)s!==void 0&&(i==="collapse"&&!t.collapsed.includes(s)?t.toggleCollapsed(s):i==="focus"?t.setShowOnly(s):i==="rotate"&&!t.rotated.includes(s)&&t.toggleRotated(s))},{fireImmediately:!0,equals:gg})),au(t,Jl(()=>{let{region:n}=t;n&&t.viewInitialized&&t.numColumns>0&&!o()&&(this.revealRegion(n),t.setRegion(void 0))})),typeof window<"u"&&typeof window.matchMedia=="function"){let n=()=>window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),i=n(),s=()=>{t.setHighResScaleFactor(window.devicePixelRatio),i.removeEventListener("change",s),i=n(),i.addEventListener("change",s)};i.addEventListener("change",s),au(t,()=>{i.removeEventListener("change",s)})}sT(t,{what:"tree",getFilehandle:()=>t.treeFilehandle,onLoad:n=>{t.setTree(n)},setLoading:n=>{t.setLoadingTree(n)},clearFilehandle:()=>{t.setTreeFilehandle(void 0)}}),sT(t,{what:"row metadata",optional:!0,getFilehandle:()=>t.treeMetadataFilehandle,onLoad:n=>{t.setTreeMetadata(n)}});let r=!1;au(t,Jl(()=>{let n=t.data.gff;if(n)try{t.applyGFFText(n),r=!0}catch(i){console.error(i),t.addWarning(`The annotations did not parse: ${i}`)}else r&&(r=!1,t.setAnnotations([]))})),sT(t,{what:"annotations",optional:!0,getFilehandle:()=>t.gffFilehandle,onLoad:n=>{t.setGFF(n)},clearFilehandle:()=>{t.setGFFFilehandle(void 0)}}),sT(t,{what:"alignment",getFilehandle:()=>t.msaFilehandle,onLoad:n=>{t.setMSA(n)},setLoading:n=>{t.setLoadingMSA(n)},clearFilehandle:()=>{t.setMSAFilehandle(void 0)}}),au(t,Jl(()=>{t.dynamicColorSchemeName&&F_(t.colStats),t.showColumnStats&&F_(t.colStats,t.conservation,t.propertyConservation),F_(t.columns)}))}})).postProcessSnapshot(({data:t,columnTracks:o,...r})=>({...r,...GYe(o,e),data:{...r.treeFilehandle?{}:{tree:t.tree},...r.msaFilehandle?{}:{msa:t.msa},...r.treeMetadataFilehandle?{}:{treeMetadata:t.treeMetadata},...r.gffFilehandle?{}:{gff:t.gff}}}))}var qQ=WYe;rN();function qYe(e){return typeof e=="string"?{colorSchemeName:e}:e?{customColorScheme:$Q(e)}:{}}function JYe(e=[]){let t=[...new Set(e)].sort((r,n)=>r-n),o=[];for(let r of t){let n=o.at(-1);n?.end===r-1?n.end=r:o.push({start:r,end:r})}return o}function QV({highlights:e=[],highlightColumns:t}){return[...e,...JYe(t)]}function MV(e){return e?{uri:e,locationType:"UriLocation"}:void 0}function PV({msaFilehandle:e,treeFilehandle:t,gffFilehandle:o,msaUrl:r,treeUrl:n,gffUrl:i}){return{msaFilehandle:e??MV(r),treeFilehandle:t??MV(n),gffFilehandle:o??MV(i)}}function Hve(e){return Gw(e==="dark"?{palette:{mode:"dark"}}:typeof e=="object"?e:void 0)}function zve(e){let{msa:t,tree:o,gff:r,rowData:n,colorScheme:i,height:s,colWidth:a,rowHeight:l,allowedGappyness:c,highlightColumns:u,highlights:p,features:f,selection:d,clades:m,relativeTo:y,columnTracks:b,residueMappings:h,encodings:g,rowPanels:C,drawTree:x,treeAreaWidth:v,showBranchLen:I,treeOrder:T,treeRoot:S,region:B,residueEncoding:R}=e,{msaFilehandle:M,treeFilehandle:Q,gffFilehandle:E}=PV(e);return{type:"MsaView",...t||o||r||n?{data:{msa:t??"",tree:o??"",gff:r,...n?{treeMetadata:JSON.stringify(n)}:{}}}:{},...M?{msaFilehandle:M}:{},...Q?{treeFilehandle:Q}:{},...E?{gffFilehandle:E}:{},...qYe(i),...s?{height:s}:{},...a?{colWidth:a}:{},...l?{rowHeight:l}:{},...c!==void 0?{allowedGappyness:c}:{},...p||u?{highlights:QV({highlights:p,highlightColumns:u})}:{},...f?{features:f}:{},...d?{selection:d}:{},...m?{clades:m}:{},...y?{relativeTo:y}:{},...b?{columnTracks:b}:{},...h?{residueMappings:h}:{},...g?{encodings:g}:{},...C?{rowPanels:C}:{},...x!==void 0?{drawTree:x}:{},...v?{treeAreaWidth:v}:{},...I!==void 0?{showBranchLen:I}:{},...T?{treeOrder:T}:{},...S?{treeRoot:S}:{},...B?{region:B}:{},...R!==void 0?{bgColor:R==="fill"}:{}}}function KYe(e,t){return e.msa===t.msa&&e.tree===t.tree&&JSON.stringify([e.msaFilehandle,e.treeFilehandle])===JSON.stringify([t.msaFilehandle,t.treeFilehandle])}var XYe=(0,Uo.forwardRef)(function(t,o){let r={...t,...PV(t)},{msa:n,tree:i,msaFilehandle:s,treeFilehandle:a}=r,l={msa:n,tree:i,msaFilehandle:s,treeFilehandle:a},[c,u]=(0,Uo.useState)({source:l,generation:0});return KYe(c.source,l)||u({source:l,generation:c.generation+1}),Uo.default.createElement(eWe,{key:c.generation,modelRef:o,...r})}),OV=XYe;function JQ(e,t,o){let r=(0,Uo.useRef)(o);(0,Uo.useEffect)(()=>{r.current=o});let n=!!o;(0,Uo.useEffect)(()=>n?hg(()=>e[t],i=>{r.current?.(i)},{equals:gg}):void 0,[e,t,n])}function rr(e,t,{inSnapshot:o=!1}={}){return{read:e,apply:t,inSnapshot:o}}function Sf(e){return(t,o)=>{o!==void 0&&e(t,o)}}var DV=[rr(e=>e.height,Sf((e,t)=>{e.setHeight(t)})),rr(e=>e.colWidth,Sf((e,t)=>{e.setColWidth(t)})),rr(e=>e.rowHeight,Sf((e,t)=>{e.setRowHeight(t)})),rr(e=>e.allowedGappyness,Sf((e,t)=>{e.setAllowedGappyness(t)})),rr(e=>e.drawTree,Sf((e,t)=>{e.setDrawTree(t)})),rr(e=>e.treeAreaWidth,Sf((e,t)=>{e.setTreeAreaWidth(t)})),rr(e=>e.showBranchLen,Sf((e,t)=>{e.setShowBranchLen(t)})),rr(e=>e.treeOrder,Sf((e,t)=>{e.setTreeOrder(t)})),rr(e=>e.residueEncoding,Sf((e,t)=>{e.setBgColor(t==="fill")})),rr(e=>!!e.hideHeader,(e,t)=>{e.setHideHeader(t)}),rr(e=>e.relativeTo,(e,t)=>{e.drawRelativeTo(t)}),rr(e=>e.gffFilehandle,(e,t,{gff:o})=>{t?e.setGFFFilehandle(t):e.setGFF(o)},{inSnapshot:!0}),rr(e=>e.gff,(e,t)=>{e.setGFF(t)},{inSnapshot:!0}),rr(e=>e.colorScheme,(e,t)=>{typeof t=="string"?e.setColorSchemeName(t):t&&e.setCustomColorScheme($Q(t))}),rr(QV,(e,t)=>{e.setHighlights(t)}),rr(e=>e.features??[],(e,t)=>{e.setFeatures(t)}),rr(e=>e.selection,(e,t)=>{e.setSelection(t)}),rr(e=>e.treeRoot,(e,t)=>{e.setTreeRoot(t)}),rr(e=>e.clades??[],(e,t)=>{e.setClades(t)}),rr(e=>e.columnTracks??[],(e,t)=>{e.setColumnTracks(t)}),rr(e=>e.residueMappings??[],(e,t)=>{e.setResidueMappings(t)}),rr(e=>e.rowData,(e,t)=>{t&&Object.keys(t).length&&e.setRowData(t)}),rr(e=>e.encodings??[],(e,t)=>{e.setEncodings(t)}),rr(e=>e.rowPanels??[],(e,t)=>{e.setRowPanels(t)})];function ZYe(e,t){let o=(0,Uo.useRef)(void 0);(0,Uo.useEffect)(()=>{let r=DV.map(({read:i})=>JSON.stringify(i(t)??null));o.current??=DV.map(({inSnapshot:i},s)=>i?r[s]:"");let n=o.current;DV.forEach(({apply:i},s)=>{let a=r[s];n[s]!==a&&(n[s]=a,i(e,JSON.parse(a)??void 0,t))})})}function eWe({modelRef:e,...t}){let{region:o,theme:r,onCellHover:n,onCellClick:i,onViewportChange:s,onSelectionChange:a,onModel:l}=t,[c]=(0,Uo.useState)(()=>{let y=qQ().create(zve(t));return y.setImportForm(!1),y}),u=(0,Uo.useRef)(void 0),[p,{width:f}]=Jx();(0,Uo.useEffect)(()=>{f&&c.setWidth(f)},[c,f]),ZYe(c,t);let d=JSON.stringify(o??null);(0,Uo.useEffect)(()=>{let y=JSON.parse(d);return y?ru(()=>c.viewInitialized&&c.numColumns>0,()=>{c.revealRegion(y)}):void 0},[c,d]),JQ(c,"hoveredCell",n),JQ(c,"clickedCell",i),JQ(c,"viewport",s),JQ(c,"selection",a),(0,Uo.useImperativeHandle)(e,()=>c,[c]);let m=(0,Uo.useRef)(l);return(0,Uo.useEffect)(()=>{m.current=l}),(0,Uo.useEffect)(()=>{m.current?.(c)},[c]),(0,Uo.useEffect)(()=>(u.current!==void 0&&(clearTimeout(u.current),u.current=void 0),()=>{u.current=setTimeout(()=>{u.current=void 0,cl(c)&&qT(c)})}),[c]),Uo.default.createElement(mh,{theme:Hve(r)},Uo.default.createElement("div",{ref:p},Uo.default.createElement(oM,{model:c})))}function KQ(e,t){let o=(0,Gve.createRoot)(e),r=t;return o.render(kV.default.createElement(OV,{...r})),{update(n){r={...r,...n},o.render(kV.default.createElement(OV,{...r}))},destroy(){o.unmount()}}}al();Or();var tWe=["msa","tree","gff","features","colorScheme","highlights","columnTracks","residueMappings"],oWe=["msa-url","tree-url","gff-url","color-scheme","height","hide-header","theme","reference-row","tree-area-width","loading"],rWe="200px",nWe=["display-start","display-end","highlight"];function Rd(e){let t=e?Number(e):Number.NaN;return Number.isFinite(t)?t:void 0}function iWe(e,t){return(e??"").split(",").flatMap(o=>{let[r,n]=o.split(":").map(Rd);return r===void 0?[]:[{row:t,start:r,end:n??r}]})}function NV(e,t,o){let r=e.globalColToVisibleCol(o-1);return r===void 0?void 0:e.visibleColToSeqPosOneBased(t,r)}function sWe(e,t,o){let r,n;for(let i=o.startColumn;i<=o.endColumn&&!r;i++)r=NV(e,t,i);for(let i=o.endColumn;i>=o.startColumn&&!n;i--)n=NV(e,t,i);return r&&n?{start:r,end:n}:void 0}function Vve(e="jbrowse-msa"){let t=customElements.get(e);if(t)return t;class o extends HTMLElement{static observedAttributes=[...oWe,...nWe];#r;#t;#e;#n;#a;#l=!1;#f;#o={};static{for(let n of tWe)Object.defineProperty(o.prototype,n,{configurable:!0,get(){return this.#o[n]},set(i){this.#p({[n]:i})}})}get selection(){return this.#e?this.#e.selection:this.#o.selection}set selection(n){this.#p({selection:n})}get#i(){return this.getAttribute("reference-row")??void 0}#p(n){this.#o={...this.#o,...n},this.#r?.update(this.#c())}#c(){let n=this.getAttribute("theme");return{...this.#o,msaUrl:this.getAttribute("msa-url")??void 0,treeUrl:this.getAttribute("tree-url")??void 0,gffUrl:this.getAttribute("gff-url")??void 0,colorScheme:this.#o.colorScheme??this.getAttribute("color-scheme")??void 0,height:Rd(this.getAttribute("height")),treeAreaWidth:Rd(this.getAttribute("tree-area-width")),hideHeader:this.hasAttribute("hide-header"),theme:n==="dark"?"dark":"light",onCellHover:i=>{this.#s("cell-hover",i),this.#h(i)},onCellClick:i=>{this.#s("cell-click",i)},onViewportChange:i=>{this.#s("viewport-change",i),this.#y(i)},onSelectionChange:i=>{this.#s("selection-change",i)},onModel:i=>{this.#e=i,this.#A(),this.#m()}}}#s(n,i){this.dispatchEvent(new CustomEvent(n,{detail:i}))}#d(n){this.#n&&this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,cancelable:!0}))}#h(n){let i=this.#e,s=this.#i,a=n&&i&&s?NV(i,s,n.column):n?.column;this.#d({type:"highlight",value:a===void 0?null:`${a}:${a}`})}#y(n){let i=this.#e,s=this.#i;if(!n||!i)return;let a=s?sWe(i,s,n):{start:n.startColumn,end:n.endColumn},l=Rd(this.getAttribute("display-start")),c=Rd(this.getAttribute("display-end")),u=a&&l!==void 0&&c!==void 0&&Math.abs(a.start-l)<=1&&Math.abs(a.end-c)<=1;a&&!u&&(this.#f=a,this.#d({"display-start":a.start,"display-end":a.end}))}#A(){let n=this.#e,i=Rd(this.getAttribute("display-start")),s=Rd(this.getAttribute("display-end")),a=this.#f;if(!(a&&a.start===i&&a.end===s)&&(this.#a?.(),n&&i!==void 0&&s!==void 0)){let l=this.#i;this.#a=ru(()=>n.viewInitialized&&n.numColumns>0,()=>{n.zoomToRegion({row:l,start:i,end:s})})}}#m(){let n=iWe(this.getAttribute("highlight"),this.#i);n.length?this.#e?.applyHighlight("nightingale",n):this.#e?.clearHighlight("nightingale")}connectedCallback(){if(this.style.display||(this.style.display="block"),this.#g){let i=Rd(this.getAttribute("height"))??550;this.style.minHeight=`${i+5}px`,this.#t=new IntersectionObserver(s=>{s.some(a=>a.isIntersecting)&&this.#u()},{rootMargin:rWe}),this.#t.observe(this)}else this.#u();let n=this.closest("nightingale-manager");n&&customElements.whenDefined("nightingale-manager").then(()=>{this.isConnected&&(this.#n=n,n.register(this))})}get#g(){return this.getAttribute("loading")==="lazy"&&typeof IntersectionObserver<"u"}#u(){this.#t?.disconnect(),this.#t=void 0,this.#r??=KQ(this,this.#c())}disconnectedCallback(){this.#t?.disconnect(),this.#t=void 0,this.#n?.unregister(this),this.#n=void 0,this.#a?.(),this.#r?.destroy(),this.#r=void 0,this.#e=void 0}attributeChangedCallback(n){n==="display-start"||n==="display-end"?this.#l||(this.#l=!0,queueMicrotask(()=>{this.#l=!1,this.#A()})):n==="highlight"?this.#m():n==="loading"?this.#t&&!this.#g&&this.#u():this.#r?.update(this.#c())}}return customElements.define(e,o),o}eu(Jc,w(HQ(),1));return tTe(Jc);})();
651
651
  /*! Bundled license information:
652
652
 
653
653
  react/cjs/react.production.js: