jbrowse-plugin-msaview 5.1.0 → 5.2.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/dist/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.d.ts +3 -4
- package/dist/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.js +22 -17
- package/dist/LaunchMsaView/components/BlastQuery/BlastAutomaticPanel.js +4 -4
- package/dist/LaunchMsaView/components/BlastQuery/BlastPanel.js +1 -1
- package/dist/LaunchMsaView/components/BlastQuery/CachedBlastResults.d.ts +4 -1
- package/dist/LaunchMsaView/components/BlastQuery/CachedBlastResults.js +5 -8
- package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.js +10 -9
- package/dist/LaunchMsaView/components/OrthologQuery/QuerySpeciesSelect.js +10 -1
- package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js +12 -9
- package/dist/LaunchMsaView/components/SubmitCancelActions.d.ts +1 -2
- package/dist/LaunchMsaView/components/SubmitCancelActions.js +2 -2
- package/dist/LaunchMsaView/components/TabPanel.d.ts +1 -1
- package/dist/LaunchMsaView/components/TabPanel.js +2 -2
- package/dist/LaunchMsaView/components/TranscriptSelector.js +3 -1
- package/dist/LaunchMsaView/components/launchConnectedView.js +8 -1
- package/dist/LaunchMsaView/components/useFeatureSequence.js +6 -4
- package/dist/LaunchMsaView/useQueryRowName.js +6 -2
- package/dist/LaunchMsaView/useQueryRowName.test.js +11 -0
- package/dist/MsaViewPanel/afterCreateAutoruns.d.ts +3 -13
- package/dist/MsaViewPanel/afterCreateAutoruns.js +57 -57
- package/dist/MsaViewPanel/components/MsaViewPanel.js +6 -6
- package/dist/MsaViewPanel/components/MsaViewPanel.test.js +13 -1
- package/dist/MsaViewPanel/doLaunchBlast.d.ts +2 -6
- package/dist/MsaViewPanel/doLaunchBlast.js +28 -15
- package/dist/MsaViewPanel/doLaunchOrthologs.d.ts +1 -0
- package/dist/MsaViewPanel/doLaunchOrthologs.js +3 -1
- package/dist/MsaViewPanel/fetchIndexedMsa.js +1 -1
- package/dist/MsaViewPanel/loadProteinDomains.d.ts +5 -14
- package/dist/MsaViewPanel/loadProteinDomains.js +6 -20
- package/dist/MsaViewPanel/loadProteinDomains.test.js +1 -2
- package/dist/MsaViewPanel/model.d.ts +45 -43
- package/dist/MsaViewPanel/model.js +0 -3
- package/dist/MsaViewPanel/runLaunch.d.ts +3 -2
- package/dist/MsaViewPanel/runLaunch.js +4 -1
- package/dist/MsaViewPanel/util.d.ts +1 -0
- package/dist/MsaViewPanel/util.js +1 -1
- package/dist/chunks/{AboutDialog-WT6GXMXU.js → AboutDialog-IRBPUPJK.js} +2 -2
- package/dist/chunks/{AboutDialog-WT6GXMXU.js.map → AboutDialog-IRBPUPJK.js.map} +2 -2
- package/dist/chunks/AnnotationFileDialog-FCYYZ4JN.js +2 -0
- package/dist/chunks/{AnnotationFileDialog-34R7LFHB.js.map → AnnotationFileDialog-FCYYZ4JN.js.map} +2 -2
- package/dist/chunks/{BgzipFastaMsaAdapter-ZMUARSUQ.js → BgzipFastaMsaAdapter-WWIGI57O.js} +2 -2
- package/dist/chunks/BgzipFastaMsaAdapter-WWIGI57O.js.map +7 -0
- package/dist/chunks/ExportSVGDialog-TYYPI6VB.js +2 -0
- package/dist/chunks/ExportSVGDialog-TYYPI6VB.js.map +7 -0
- package/dist/chunks/{FeatureDialog-XNHIA5PS.js → FeatureDialog-ZBX3XQZ5.js} +1 -1
- package/dist/chunks/{FeatureDialog-XNHIA5PS.js.map → FeatureDialog-ZBX3XQZ5.js.map} +1 -1
- package/dist/chunks/LaunchMsaViewDialog-GJAUPGFC.js +5 -0
- package/dist/chunks/LaunchMsaViewDialog-GJAUPGFC.js.map +7 -0
- package/dist/chunks/MetadataDialog-KZWQFRF7.js +2 -0
- package/dist/chunks/{MetadataDialog-2WT6EX4M.js.map → MetadataDialog-KZWQFRF7.js.map} +2 -2
- package/dist/chunks/MsaViewPanel-RUZAKFCB.js +2 -0
- package/dist/chunks/MsaViewPanel-RUZAKFCB.js.map +7 -0
- package/dist/chunks/{TrackInfoDialog-TYCMLUKG.js → TrackInfoDialog-IFIG77WO.js} +2 -2
- package/dist/chunks/{TrackInfoDialog-TYCMLUKG.js.map → TrackInfoDialog-IFIG77WO.js.map} +1 -1
- package/dist/chunks/TreeNodeInfoDialog-VRCVIF26.js +2 -0
- package/dist/chunks/{TreeNodeInfoDialog-BFF6JRCO.js.map → TreeNodeInfoDialog-VRCVIF26.js.map} +2 -2
- package/dist/chunks/{chunk-O7JNDIKD.js → chunk-F3EC6OCO.js} +1 -1
- package/dist/chunks/{chunk-O7JNDIKD.js.map → chunk-F3EC6OCO.js.map} +1 -1
- package/dist/chunks/chunk-F726IWCW.js +2 -0
- package/dist/chunks/chunk-F726IWCW.js.map +7 -0
- package/dist/chunks/{chunk-ZTQYZDWK.js → chunk-GDFVLZYX.js} +2 -2
- package/dist/chunks/{chunk-ZTQYZDWK.js.map → chunk-GDFVLZYX.js.map} +1 -1
- package/dist/chunks/{chunk-5ORPTTMR.js → chunk-GIHMPOCO.js} +1 -1
- package/dist/chunks/{chunk-5ORPTTMR.js.map → chunk-GIHMPOCO.js.map} +1 -1
- package/dist/chunks/{chunk-ENTWPX2K.js → chunk-H6IQBAW7.js} +5 -5
- package/dist/chunks/{chunk-ENTWPX2K.js.map → chunk-H6IQBAW7.js.map} +1 -1
- package/dist/chunks/{chunk-TITP6LCV.js → chunk-JFL3LJPO.js} +2 -2
- package/dist/chunks/{chunk-TITP6LCV.js.map → chunk-JFL3LJPO.js.map} +2 -2
- package/dist/chunks/chunk-NI3VGKQP.js +3 -0
- package/dist/chunks/chunk-NI3VGKQP.js.map +7 -0
- package/dist/chunks/chunk-NMYD2GWF.js +18 -0
- package/dist/chunks/chunk-NMYD2GWF.js.map +7 -0
- package/dist/chunks/chunk-QQ5LZUIO.js +11 -0
- package/dist/chunks/chunk-QQ5LZUIO.js.map +7 -0
- package/dist/chunks/chunk-QUWPHTZQ.js +2 -0
- package/dist/chunks/chunk-QUWPHTZQ.js.map +7 -0
- package/dist/chunks/{chunk-P77DPK6B.js → chunk-YOTSFJMU.js} +1 -1
- package/dist/chunks/{chunk-P77DPK6B.js.map → chunk-YOTSFJMU.js.map} +1 -1
- package/dist/chunks/chunk-ZCT7RD24.js +2 -0
- package/dist/chunks/chunk-ZCT7RD24.js.map +7 -0
- package/dist/chunks/{dist-UX5CKLQJ.js → dist-CMWKVHC7.js} +1 -1
- package/dist/chunks/{dist-UX5CKLQJ.js.map → dist-CMWKVHC7.js.map} +1 -1
- package/dist/chunks/dist-R73J3CC3.js +2 -0
- package/dist/chunks/model-VE7IYWNU.js +12 -0
- package/dist/chunks/model-VE7IYWNU.js.map +7 -0
- package/dist/chunks/{renderToSvg-B7RCHRO3.js → renderToSvg-VDXAB7TT.js} +2 -2
- package/dist/jbrowse-plugin-msaview.esm.js +2 -2
- package/dist/jbrowse-plugin-msaview.esm.js.map +1 -1
- package/dist/utils/ebiBlast.d.ts +8 -13
- package/dist/utils/ebiBlast.js +20 -45
- package/dist/utils/ebiJobDispatcher.d.ts +4 -4
- package/dist/utils/ebiJobDispatcher.js +4 -4
- package/dist/utils/eutils.js +1 -1
- package/dist/utils/fetch.d.ts +4 -0
- package/dist/utils/fetch.js +7 -1
- package/dist/utils/homologSearch.d.ts +6 -2
- package/dist/utils/msaRows.d.ts +1 -2
- package/dist/utils/msaRows.js +13 -1
- package/dist/utils/ncbiDomains.d.ts +1 -1
- package/dist/utils/ncbiDomains.js +19 -7
- package/dist/utils/ncbiDomains.test.js +36 -0
- package/dist/utils/ncbiOrthologs.d.ts +24 -5
- package/dist/utils/ncbiOrthologs.js +55 -19
- package/dist/utils/ncbiOrthologs.test.js +58 -8
- package/dist/utils/pantherOrthologs.js +4 -1
- package/dist/utils/phmmer.js +4 -8
- package/dist/utils/taxonomyNames.d.ts +6 -1
- package/dist/utils/taxonomyNames.js +7 -1
- package/dist/utils/taxonomyNames.test.js +12 -0
- package/dist/utils/unirefHomologs.d.ts +6 -0
- package/dist/utils/unirefHomologs.js +25 -10
- package/dist/utils/unirefHomologs.test.js +49 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +18 -18
- package/src/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.ts +23 -20
- package/src/LaunchMsaView/components/BlastQuery/BlastAutomaticPanel.tsx +4 -4
- package/src/LaunchMsaView/components/BlastQuery/BlastPanel.tsx +3 -1
- package/src/LaunchMsaView/components/BlastQuery/CachedBlastResults.tsx +7 -19
- package/src/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.tsx +10 -9
- package/src/LaunchMsaView/components/OrthologQuery/QuerySpeciesSelect.tsx +12 -1
- package/src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx +12 -8
- package/src/LaunchMsaView/components/SubmitCancelActions.tsx +1 -3
- package/src/LaunchMsaView/components/TabPanel.tsx +1 -2
- package/src/LaunchMsaView/components/TranscriptSelector.tsx +3 -1
- package/src/LaunchMsaView/components/launchConnectedView.ts +8 -1
- package/src/LaunchMsaView/components/useFeatureSequence.ts +8 -2
- package/src/LaunchMsaView/useQueryRowName.test.ts +15 -0
- package/src/LaunchMsaView/useQueryRowName.ts +7 -2
- package/src/MsaViewPanel/afterCreateAutoruns.ts +74 -58
- package/src/MsaViewPanel/components/MsaViewPanel.test.tsx +18 -1
- package/src/MsaViewPanel/components/MsaViewPanel.tsx +15 -16
- package/src/MsaViewPanel/doLaunchBlast.ts +37 -17
- package/src/MsaViewPanel/doLaunchOrthologs.ts +4 -1
- package/src/MsaViewPanel/fetchIndexedMsa.ts +1 -1
- package/src/MsaViewPanel/loadProteinDomains.test.ts +1 -2
- package/src/MsaViewPanel/loadProteinDomains.ts +13 -28
- package/src/MsaViewPanel/model.ts +0 -3
- package/src/MsaViewPanel/runLaunch.ts +8 -8
- package/src/MsaViewPanel/types.ts +1 -1
- package/src/MsaViewPanel/util.ts +1 -1
- package/src/utils/ebiBlast.ts +29 -56
- package/src/utils/ebiJobDispatcher.ts +4 -4
- package/src/utils/eutils.ts +1 -1
- package/src/utils/fetch.ts +12 -2
- package/src/utils/homologSearch.ts +6 -2
- package/src/utils/msaRows.ts +18 -4
- package/src/utils/ncbiDomains.test.ts +53 -0
- package/src/utils/ncbiDomains.ts +21 -8
- package/src/utils/ncbiOrthologs.test.ts +70 -7
- package/src/utils/ncbiOrthologs.ts +81 -24
- package/src/utils/pantherOrthologs.ts +7 -1
- package/src/utils/phmmer.ts +3 -7
- package/src/utils/taxonomyNames.test.ts +15 -0
- package/src/utils/taxonomyNames.ts +7 -0
- package/src/utils/unirefHomologs.test.ts +57 -2
- package/src/utils/unirefHomologs.ts +38 -13
- package/src/version.ts +1 -1
- package/dist/LaunchMsaView/components/util.d.ts +0 -7
- package/dist/LaunchMsaView/components/util.js +0 -16
- package/dist/MsaViewPanel/components/ErrorBoundary.d.ts +0 -19
- package/dist/MsaViewPanel/components/ErrorBoundary.js +0 -21
- package/dist/chunks/AnnotationFileDialog-34R7LFHB.js +0 -2
- package/dist/chunks/BgzipFastaMsaAdapter-ZMUARSUQ.js.map +0 -7
- package/dist/chunks/ExportSVGDialog-NMVUHFGY.js +0 -2
- package/dist/chunks/ExportSVGDialog-NMVUHFGY.js.map +0 -7
- package/dist/chunks/LaunchMsaViewDialog-WBXEEHJL.js +0 -5
- package/dist/chunks/LaunchMsaViewDialog-WBXEEHJL.js.map +0 -7
- package/dist/chunks/MetadataDialog-2WT6EX4M.js +0 -2
- package/dist/chunks/MsaViewPanel-YYP4CYYO.js +0 -2
- package/dist/chunks/MsaViewPanel-YYP4CYYO.js.map +0 -7
- package/dist/chunks/TreeNodeInfoDialog-BFF6JRCO.js +0 -2
- package/dist/chunks/chunk-FCNT6B47.js +0 -2
- package/dist/chunks/chunk-FCNT6B47.js.map +0 -7
- package/dist/chunks/chunk-MBI4TMKR.js +0 -2
- package/dist/chunks/chunk-MBI4TMKR.js.map +0 -7
- package/dist/chunks/chunk-MHBTV7BZ.js +0 -3
- package/dist/chunks/chunk-MHBTV7BZ.js.map +0 -7
- package/dist/chunks/chunk-PJZ3XTMG.js +0 -6
- package/dist/chunks/chunk-PJZ3XTMG.js.map +0 -7
- package/dist/chunks/chunk-QAC6JSDZ.js +0 -5
- package/dist/chunks/chunk-QAC6JSDZ.js.map +0 -7
- package/dist/chunks/chunk-QMLPITS4.js +0 -18
- package/dist/chunks/chunk-QMLPITS4.js.map +0 -7
- package/dist/chunks/chunk-RTKNCGDF.js +0 -8
- package/dist/chunks/chunk-RTKNCGDF.js.map +0 -7
- package/dist/chunks/dist-2T65ZS4E.js +0 -2
- package/dist/chunks/model-7VBTOIJX.js +0 -12
- package/dist/chunks/model-7VBTOIJX.js.map +0 -7
- package/dist/utils/types.d.ts +0 -18
- package/src/LaunchMsaView/components/util.ts +0 -22
- package/src/MsaViewPanel/components/ErrorBoundary.tsx +0 -41
- package/src/utils/types.ts +0 -17
- /package/dist/chunks/{dist-2T65ZS4E.js.map → dist-R73J3CC3.js.map} +0 -0
- /package/dist/chunks/{renderToSvg-B7RCHRO3.js.map → renderToSvg-VDXAB7TT.js.map} +0 -0
- /package/dist/utils/{types.js → ncbiDomains.test.d.ts} +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import{a as xn}from"./chunk-F3EC6OCO.js";import{a as re}from"./chunk-FCWXYIFC.js";import{a as Fo,b as _o,c as Mu}from"./chunk-YUKJI2AH.js";import{a as dt,b as Ho,c as No,e as zo,g as Bo,i as Wo,j as Go}from"./chunk-QQ5LZUIO.js";import{a as ko,b as Su,c as R,d as _}from"./chunk-IBBQUV2I.js";import{$ as vt,A as pt,Aa as Ur,B as ar,Ba as Xr,C as sr,Ca as qr,D as lr,Da as Zr,E as cr,Ea as Jr,F as gt,Fa as Oe,G as ur,Ga as Qr,H as dr,Ha as ei,I as mr,Ia as ti,J as hr,Ja as ni,K as fr,Ka as oi,L as pr,La as ri,M as Ee,Ma as vn,N as gr,Na as Ct,O as wr,Oa as ii,P as br,Pa as ai,Q as wt,Qa as si,R as vr,Ra as Sn,S as qe,Sa as li,T as Sr,Ta as xu,U as Mr,Ua as Mn,V as xr,W as bt,X as Cr,Y as yr,Z as wn,_ as Ar,a as Xe,aa as Tr,b as Vo,ba as St,c as pe,ca as Er,d as $o,da as bn,e as Yo,ea as Lr,f as jo,fa as Rr,g as Ko,ga as kr,h as Uo,ha as Mt,i as fn,ia as xt,j as pn,ja as Fr,k as Xo,ka as Hr,l as qo,la as Pr,m as Zo,ma as Dr,n as Jo,na as Ir,o as gn,oa as Or,p as Qo,pa as Nr,q as er,qa as zr,r as tr,ra as Br,s as mt,sa as Wr,t as ht,ta as Gr,u as Te,ua as _r,v as nr,va as Vr,w as ft,wa as $r,x as or,xa as Yr,y as rr,ya as jr,z as ir,za as Kr}from"./chunk-QUWPHTZQ.js";import{b as Po,c as Do,d as fe,f as Io,g as Oo,h as Ie}from"./chunk-73KAPCJ2.js";import{a as Ze,b as ci}from"./chunk-GIHMPOCO.js";import{a as F}from"./chunk-CVLB4VFP.js";import{a as hn}from"./chunk-DNFD5II2.js";import{a as I}from"./chunk-BX4Z274Q.js";import{a as A}from"./chunk-J6KYLXRD.js";import{a as Ae,b as m}from"./chunk-FY3BTKY4.js";var bi=Ae((yh,wi)=>{wi.exports=JBrowseExports["@jbrowse/core/ui/ErrorBoundary"]});var Je=Ae((Eh,xi)=>{xi.exports=JBrowseExports["@jbrowse/core/ui/BaseTooltip"]});var Ln=Ae((qh,Wi)=>{Wi.exports=JBrowseExports["@jbrowse/core/util/useMeasure"]});var Re=Ae((Jh,$i)=>{$i.exports=JBrowseExports["@jbrowse/core/ui/CascadingMenuButton"]});var qn=Ae((l1,$l)=>{$l.exports=JBrowseExports["@jbrowse/core/ui/theme"]});var jl=Ae((c1,Yl)=>{Yl.exports=JBrowseExports["@mui/material/styles"]});var Ul=Ae((u1,Kl)=>{Kl.exports=JBrowseExports["@jbrowse/core/util/types/mst"]});var Cn=class n{a;b;c;d;e;f;constructor(e){let[t=1,o=0,r=0,i=1,s=0,a=0]=e??[];this.a=t,this.b=o,this.c=r,this.d=i,this.e=s,this.f=a}multiply(e){return new n([this.a*e.a+this.c*e.b,this.b*e.a+this.d*e.b,this.a*e.c+this.c*e.d,this.b*e.c+this.d*e.d,this.a*e.e+this.c*e.f+this.e,this.b*e.e+this.d*e.f+this.f])}translate(e,t=0){return this.multiply(new n([1,0,0,1,e,t]))}scale(e,t=e){return this.multiply(new n([e,0,0,t,0,0]))}},yn=class n{x;y;constructor(e=0,t=0){this.x=e,this.y=t}matrixTransform(e){return new n(e.a*this.x+e.c*this.y+e.e,e.b*this.x+e.d*this.y+e.f)}};function Cu(n=globalThis,e={}){let t=globalThis;t.DOMMatrix=Cn,t.DOMPoint=yn;let o=n.HTMLCanvasElement;o.prototype.getContext=function(){let r="10px sans-serif";return Object.assign({get font(){return r},set font(i){r=i},measureText:i=>({width:i.length*(Number.parseFloat(r)||10)*ui})},e)}}var ui=.6;var pi="{residue}{position}",yu=/^(\d+)(?:-(\d+))?(?:\s+(.+))?$/;function gi(n,e){let t=yu.exec(n.trim());if(!t)throw new Error(`${e} "${n}" is not "start", "start-end" or either followed by a label`);let o=Number(t[1]),r=t[2]===void 0?o:Number(t[2]);return{start:Math.min(o,r),end:Math.max(o,r),label:t[3]}}function yt(n,e){let{row:t,...o}=n,r=t===void 0?e:t??void 0;return r===void 0?o:{...o,row:r}}function Au(n,e){if(typeof n=="object")return n.rows?n:yt(n,n.start===void 0?void 0:e);let{start:t,end:o,label:r}=gi(String(n),"highlight");return{...e===void 0?{}:{row:e},start:t,end:o,...r?{label:r}:t===o&&e!==void 0?{label:pi}:{}}}function Tu(n,e){if(typeof n=="string"){let{start:t,end:o}=gi(n,"region");return yt({start:t,end:o},e)}return yt(n,e)}function di(n){return n.toLowerCase().replaceAll(/[^a-z0-9]+/g,"-").replaceAll(/^-|-$/g,"")}function Eu(n){if(n.kind)return n.kind;if(n.values)return"bar";if(n.data!==void 0)return"text";if(n.arcs)return"arc";throw new Error(`column track "${n.name}" has no values, data or arcs to take its kind from`)}function Lu(n,e,t){let{start:o,...r}=n,i=o&&o>1?o-1:0,s=n.id??(di(n.name)||"track");for(let a=2;!n.id&&t.has(s);a++)s=`${di(n.name)||"track"}-${a}`;return t.add(s),{...yt(r,e),id:s,kind:Eu(n),...i&&n.values?{values:[...Array(i).fill(0),...n.values]}:{},...i&&n.data!==void 0?{data:" ".repeat(i)+n.data}:{}}}function mi(n){return n.includes(`
|
|
2
|
+
`)}function hi(n){return n.trimStart().startsWith("(")}function fi(n){return{uri:n,locationType:"UriLocation"}}function Ru(n){let{query:e,msa:t,tree:o,highlights:r,region:i,columnTracks:s,...a}=n,l={...a.data,...t!==void 0&&mi(t)?{msa:t}:{},...o!==void 0&&hi(o)?{tree:o}:{}},c=new Set((s??[]).map(u=>u.id).filter(u=>u!==void 0));return{...a,...t!==void 0&&!mi(t)?{msaFilehandle:fi(t)}:{},...o!==void 0&&!hi(o)?{treeFilehandle:fi(o)}:{},...Object.keys(l).length>0?{data:l}:{},...e!==void 0&&a.relativeTo===void 0?{relativeTo:e}:{},...r?{highlights:r.map(u=>Au(u,e))}:{},...i===void 0?{}:{region:Tu(i,e)},...s?{columnTracks:s.map(u=>Lu(u,e,c))}:{}}}var j=m(A(),1),Gl=m(hn(),1),_l=m(bi(),1),Vl=m(I(),1),Un=m(F(),1);var P=m(A(),1),Fe=m(F(),1);var ge=m(A(),1),At=m(F(),1);var vi=(0,At.observer)(function({model:n}){let e=(0,ge.useCallback)((t,o)=>{n.setTreeAreaWidth(o+t)},[n]);return ge.default.createElement(pe,{axis:"x",variant:"resizer",getStart:()=>n.effectiveTreeAreaWidth,onDrag:e,style:{width:n.resizeHandleWidth}})}),Si=(0,At.observer)(function({model:n}){let e=(0,ge.useCallback)((t,o)=>{n.setHeight(o+t)},[n]);return ge.default.createElement(pe,{axis:"y",variant:"resizer",getStart:()=>n.height,onDrag:e,style:{width:"100%",height:n.resizeHandleWidth}})}),Mi=(0,At.observer)(function({model:n,track:e}){let{id:t,heightKey:o,height:r}=e.model,i=n.turnedOnTracks.filter(l=>l.model.heightKey===o),s=i.length,a=(0,ge.useCallback)((l,c)=>{o&&n.setTrackHeight(o,Math.max(10,c+l/s))},[n,o,s]);return o&&i.at(-1)?.model.id===t?ge.default.createElement(pe,{axis:"y",variant:"resizer",getStart:()=>r,onDrag:a,style:{position:"absolute",bottom:0,left:0,width:"100%",height:n.resizeHandleWidth,zIndex:1}}):null});var W=m(A(),1),Pi=m(Je(),1),Di=m(Ze(),1);var Ci=m(_(),1),Tt=(0,R.createSvgIcon)((0,Ci.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");var Le=m(I(),1),En=m(F(),1);var V=m(A(),1);var ku=.011997600479904018;function yi(n,e){return e===1?n*16:e===2?n*100:n}function Ai(n){let e=Math.abs(n);return e<6?25:e>150?500:e>30?150:75}function Ti(n,e){let t=ku*e,o=Math.max(-t,Math.min(t,n));return o>0?1/(1+o):1-o}function we({ref:n,onScrollX:e,onScrollY:t,onZoom:o,scrollZoom:r}){let i=(0,V.useRef)(!1),s=(0,V.useRef)(!1),a=(0,V.useRef)(0),l=(0,V.useRef)(0),c=(0,V.useRef)(0),u=(0,V.useRef)(0),d=(0,V.useRef)(0),h=(0,V.useRef)(null),f=(0,V.useRef)(0),g=(0,V.useRef)(0),[p,w]=(0,V.useState)(!1);(0,V.useEffect)(()=>{let x=n.current;if(!x)return;function E(v){let L=v.ctrlKey||v.metaKey,z=r&&!v.shiftKey&&Math.abs(v.deltaY)>=Math.abs(v.deltaX);if(o&&(L||z)){let ee=x.getBoundingClientRect(),de=yi(v.deltaY,v.deltaMode),Z=L?Ai(de):500;c.current+=de/Z,u.current=v.clientX-ee.left,d.current=v.clientY-ee.top,s.current||(s.current=!0,requestAnimationFrame(y=>{let D=h.current===null?16.67:y-h.current;h.current=y,o(Ti(c.current,Math.min(100,D)),u.current,d.current),c.current=0,s.current=!1})),v.preventDefault(),v.stopPropagation();return}let Y=!!e&&v.deltaX!==0,U=!!t&&v.deltaY!==0;(Y||U)&&(e&&(a.current+=v.deltaX),t&&(l.current+=v.deltaY),i.current||(i.current=!0,requestAnimationFrame(()=>{e&&(e(-a.current),a.current=0),t&&(t(-l.current),l.current=0),i.current=!1})),v.preventDefault(),v.stopPropagation())}return x.addEventListener("wheel",E,{passive:!1}),()=>{x.removeEventListener("wheel",E)}},[n,e,t,o,r]),(0,V.useEffect)(()=>{if(!p)return;function x(v){v.preventDefault();let L=v.clientX-f.current,z=v.clientY-g.current;(L&&e||z&&t)&&(i.current||(i.current=!0,requestAnimationFrame(()=>{e?.(L),t?.(z),i.current=!1,f.current=v.clientX,g.current=v.clientY})))}function E(){f.current=0,g.current=0,w(!1)}return window.addEventListener("mousemove",x,!0),window.addEventListener("mouseup",E,!0),()=>{window.removeEventListener("mousemove",x,!0),window.removeEventListener("mouseup",E,!0)}},[p,e,t]);function C(x){x.button===0&&(f.current=x.clientX,g.current=x.clientY,w(!0))}function M(x){x.preventDefault(),w(!1)}return{onMouseDown:C,onMouseUp:M}}function Et(n,{key:e,shiftKey:t}){let{colWidth:o,rowHeight:r,msaCanvasWidth:i,msaAreaHeight:s}=n,a=t?i:o,l=t?s:r;switch(e){case"ArrowLeft":return n.doScrollX(a),!0;case"ArrowRight":return n.doScrollX(-a),!0;case"ArrowUp":return n.doScrollY(l),!0;case"ArrowDown":return n.doScrollY(-l),!0;case"+":case"=":return n.zoomIn(),!0;case"-":return n.zoomOut(),!0;case"Home":return n.setScrollX(0),!0;case"End":return n.setScrollX(n.maxScrollX),!0;case"Escape":return n.selection?(n.clearSelection(),!0):!1;default:return!1}}var B=m(A(),1),Li=m(F(),1);var An=n=>`${Math.round(n*100)}%`,Ei=8;function Qe({model:n,col:e}){let{relativeTo:t}=n,o=t?n.visibleColToSeqPosOneBased(t,e):void 0;return B.default.createElement("b",null,"Column ",e+1,o===void 0?null:` (${t}:${o})`)}function Hu({model:n,track:e,col:t}){let{id:o,name:r}=e.model,i=Vr(n,o)[t];return i===void 0?null:B.default.createElement("div",null,B.default.createElement(Qe,{model:n,col:t}),B.default.createElement("br",null),r,": ",i.toFixed(2))}function Pu({model:n,col:e}){let t=n.columnStatsAt(e);if(!t)return null;let{total:o,consensusLetter:r,consensusFraction:i,gapFraction:s}=t,l=_r(n.colStats,e,n.alphabetMaxBits).reduce((c,u)=>c+u.bits,0);return B.default.createElement("div",null,B.default.createElement(Qe,{model:n,col:e})," (",o," seqs)",B.default.createElement("br",null),"Information: ",l.toFixed(2)," bits",B.default.createElement("br",null),"Consensus: ",r||"-"," (",An(i),")",B.default.createElement("br",null),"Gaps: ",An(s),B.default.createElement("br",null),t.distribution.slice(0,6).map(([c,u])=>B.default.createElement("span",{key:c,style:{marginRight:8}},c," ",An(u/o))))}function Du({model:n,track:e,col:t}){let{name:o,data:r}=e.model,i=r?.[t];return i===void 0?null:B.default.createElement("div",null,B.default.createElement(Qe,{model:n,col:t}),B.default.createElement("br",null),o,": ",i===" "?"blank":i)}function Iu({model:n,track:e,col:t}){let{name:o,arcs:r}=e.model,i=(r??[]).filter(s=>s.start===t||s.end===t).map(s=>(s.start===t?s.end:s.start)+1);return i.length===0?null:B.default.createElement("div",null,B.default.createElement(Qe,{model:n,col:t}),B.default.createElement("br",null),o,": pairs with ",i.slice(0,Ei).join(", "),i.length>Ei?"...":null)}var Ou=(0,Li.observer)(function({model:n,track:e,col:t}){switch(e.model.kind){case"bar":return B.default.createElement(Hu,{model:n,track:e,col:t});case"logo":return B.default.createElement(Pu,{model:n,col:t});case"text":return B.default.createElement(Du,{model:n,track:e,col:t});case"arc":return B.default.createElement(Iu,{model:n,track:e,col:t});case"ruler":return B.default.createElement("div",null,B.default.createElement(Qe,{model:n,col:t}))}}),Ri=Ou;var ki=m(re(),1),Tn=3;function Lt(n,e,t){let o=t(e),{clientX:r,clientY:i}=e,s=!1;function a(c){s||=Math.hypot(c.clientX-r,c.clientY-i)>Tn,s&&(0,ki.isAlive)(n)&&n.selectBlock(o,t(c))}function l(){window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",l)}window.addEventListener("mousemove",a),window.addEventListener("mouseup",l)}var Fi=m(A(),1);function be(){let[n,e]=(0,Fi.useState)();function t(r,i){e(i===void 0?void 0:{value:i,clientPoint:{x:r.clientX,y:r.clientY+15}})}function o(){e(void 0)}return{anchor:n,hoverAt:t,clearAnchor:o}}function Hi({model:n,tooltip:e}){let{anchor:t,hoverAt:o,clearAnchor:r}=be();function i(c,u){return Math.floor((c-u-n.scrollX)/n.colWidth)}function s(c,u){let d=i(c.clientX,u.getBoundingClientRect().left),h=d>=0&&d<n.numColumns;n.setMousePos(h?d:void 0,void 0),e&&o(c,h?d:void 0)}function a(c,u){if(c.button===0&&c.target instanceof HTMLCanvasElement){c.preventDefault(),u.focus({preventScroll:!0});let{left:d}=u.getBoundingClientRect();Lt(n,c,({clientX:h})=>({col:i(h,d)}))}}function l(){r(),n.setMousePos(void 0,void 0)}return{anchor:e?t:void 0,onMouseMove:s,onMouseDown:a,onMouseLeave:l}}var Nu=(0,W.lazy)(()=>import("./TrackInfoDialog-IFIG77WO.js")),Ii=(0,Di.makeStyles)()(n=>({button:{padding:0},row:{display:"flex","&:not(:last-child)":{boxShadow:`inset 0 -1px 0 ${n.palette.divider}`}}})),zu=(0,En.observer)(function({model:e,track:t}){let[o,r]=(0,W.useState)(),i=()=>{r(void 0)},{drawLabels:s,fontSize:a,effectiveTreeAreaWidth:l}=e,{model:{name:c,height:u}}=t,{classes:d}=Ii(),h=Math.min(u,a);return W.default.createElement("div",{style:{width:l,height:u,flexShrink:0,display:"flex",alignItems:"flex-start",justifyContent:"flex-end",gap:2,fontSize:h}},W.default.createElement("span",{title:c,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},s?c:""),W.default.createElement(Le.IconButton,{className:d.button,"aria-label":`${c} track menu`,style:{width:h,height:h,flexShrink:0},onClick:f=>{r(f.currentTarget)}},W.default.createElement(Tt,null)),o?W.default.createElement(Le.Menu,{anchorEl:o,transitionDuration:0,open:!0,onClose:()=>{i()}},W.default.createElement(Le.MenuItem,{dense:!0,onClick:()=>{e.toggleTrack(t.model.id),i()}},"Hide track"),W.default.createElement(Le.MenuItem,{dense:!0,onClick:()=>{e.queueDialog(f=>[Nu,{onClose:f,model:t.model}]),i()}},"Get info")):null)}),Bu=(0,En.observer)(function({model:n,track:e}){let{resizeHandleWidth:t,rowPanelsWidth:o,showColumnStats:r}=n,{model:{height:i}}=e,s=(0,W.useRef)(null),a=(0,W.useCallback)(f=>{n.doScrollX(f)},[n]);we({ref:s,onScrollX:a});let{classes:l}=Ii(),{anchor:c,onMouseMove:u,onMouseDown:d,onMouseLeave:h}=Hi({model:n,tooltip:r});return W.default.createElement("div",{className:l.row,style:{height:i}},W.default.createElement(zu,{model:n,track:e}),W.default.createElement("div",{style:{width:o+t,flexShrink:0}}),W.default.createElement("div",{ref:s,"data-testid":`track_${e.model.id}`,tabIndex:-1,style:{outline:"none"},onKeyDown:f=>{Et(n,f)&&f.preventDefault()},onMouseMove:f=>{s.current&&u(f,s.current)},onMouseDown:f=>{s.current&&d(f,s.current)},onMouseLeave:()=>{h()}},W.default.createElement(e.ReactComponent,{model:n,track:e}),c?W.default.createElement(Pi.default,{clientPoint:c.clientPoint},W.default.createElement(Ri,{model:n,track:e,col:c.value})):null))}),Oi=Bu;var et=m(A(),1),zi=m(F(),1);var Ni=20,Wu=(0,zi.observer)(({model:n})=>{let{msaAreaHeight:e,scrollY:t,totalHeight:o}=n,r=e/o,i=-t*r,s=(-t+e)*r,a=(0,et.useCallback)((l,c)=>{n.setScrollY(c-l/r)},[n,r]);return et.default.createElement("div",{onMouseDown:l=>{if(l.button===0&&l.target===l.currentTarget){let c=l.clientY-l.currentTarget.getBoundingClientRect().top;n.setScrollY(-c/r+e/2)}},style:{position:"relative",width:Ni,height:e,borderLeft:"1px solid #555",borderTop:"1px solid #555",boxSizing:"border-box"}},et.default.createElement(pe,{axis:"y",variant:"thumb",getStart:()=>n.scrollY,onDrag:a,style:{top:Math.max(0,i),left:0,boxSizing:"border-box",width:Ni,height:Math.max(s-i,20)}}))}),Bi=Wu;var O=m(A(),1),Ts=m(Ln(),1);var Vt=m(I(),1),Es=m(F(),1);var ve=m(A(),1),Gi=m(hn(),1),_i=m(Ze(),1),Ne=m(I(),1),Vi=m(F(),1),Gu=(0,_i.makeStyles)()({page:{display:"flex",alignItems:"center",gap:12,padding:20},header:{display:"flex",alignItems:"center",gap:4,margin:"auto",marginLeft:10}}),_u=(0,Vi.observer)(function({model:n,variant:e}){let{status:t}=n,{classes:o}=Gu();if(e==="header"&&!t)return null;let r=t?.msg??"Loading...",i=t?.onCancel;return ve.default.createElement("div",{className:o[e]},e==="page"?ve.default.createElement(ve.default.Fragment,null,ve.default.createElement(Ne.CircularProgress,{size:24}),ve.default.createElement(Ne.Typography,{variant:"h6"},r)):ve.default.createElement(Gi.LoadingEllipses,{message:r,component:"span"}),i?ve.default.createElement(Ne.Button,{variant:e==="page"?"outlined":"text",size:"small",onClick:()=>{i()}},"Cancel"):null)}),tt=_u;var Hn=m(A(),1),qi=m(Re(),1);var Yi=m(_(),1),ji=(0,R.createSvgIcon)((0,Yi.jsx)("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10c1.38 0 2.5-1.12 2.5-2.5 0-.61-.23-1.2-.64-1.67-.08-.1-.13-.21-.13-.33 0-.28.22-.5.5-.5H16c3.31 0 6-2.69 6-6 0-4.96-4.49-9-10-9m5.5 11c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5m-3-4c-.83 0-1.5-.67-1.5-1.5S13.67 6 14.5 6s1.5.67 1.5 1.5S15.33 9 14.5 9M5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S7.33 13 6.5 13 5 12.33 5 11.5m6-4c0 .83-.67 1.5-1.5 1.5S8 8.33 8 7.5 8.67 6 9.5 6s1.5.67 1.5 1.5"}),"Palette");var Zi=m(F(),1);var Vu={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},Rt=Vu;var $u={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},Rn=$u;var Yu={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},kn=Yu;var ju={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},Fn=ju;Cr([yr]);var Ki={A:kn[500],C:Rn[500],G:Fn[500],T:Rt[500],U:Rt[500]},Ku={none:{},nucleotide:Ki,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:{},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:Ki,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"}},nt=vt(Ku,([n,e])=>[n,vt(e,([t,o])=>[t,bt(o).toHex()])]),Ui=new WeakMap;function Xi(n){let e=Ui.get(n);return e||(e=vt(n,([t,o])=>[t.toUpperCase(),o]),Ui.set(n,e)),e}function Uu(n){let{colorSchemeName:e,customColorScheme:t}=n;return[...t?[{label:"Custom",type:"radio",checked:!0,onClick:()=>{}}]:[],...Object.keys(nt).map(r=>({label:r,type:"radio",checked:!t&&e===r,onClick:()=>{n.setColorSchemeName(r)}}))]}var Xu=(0,Zi.observer)(function({model:n}){return Hn.default.createElement(qi.default,{"data-testid":"color_scheme_menu",tooltip:"Color scheme",closeAfterItemClick:!0,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},menuItems:Uu(n)},Hn.default.createElement(ji,null))}),Ji=Xu;var ze=m(A(),1),fa=m(Re(),1);var Qi=m(_(),1),kt=(0,R.createSvgIcon)((0,Qi.jsx)("path",{d:"M22 11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3z"}),"AccountTree");var ea=m(_(),1),ta=(0,R.createSvgIcon)((0,ea.jsx)("path",{d:"M19 3h-4.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1m2 14H7v-2h7zm3-4H7v-2h10zm0-4H7V7h10z"}),"Assignment");var na=m(_(),1),Ft=(0,R.createSvgIcon)((0,na.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V8h16z"}),"FolderOpen");var oa=m(_(),1),ra=(0,R.createSvgIcon)((0,oa.jsx)("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"}),"Menu");var Pn=m(_(),1),ia=(0,R.createSvgIcon)([(0,Pn.jsx)("circle",{cx:"12",cy:"12",r:"3.2"},"0"),(0,Pn.jsx)("path",{d:"M9 2 7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5"},"1")],"PhotoCamera");var pa=m(F(),1);var In=m(A(),1);var aa=m(_(),1),sa=(0,R.createSvgIcon)((0,aa.jsx)("path",{d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39c.51-.66.04-1.61-.79-1.61H5.04c-.83 0-1.3.95-.79 1.61"}),"FilterAlt");var Dn=m(_(),1),la=(0,R.createSvgIcon)([(0,Dn.jsx)("path",{d:"M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5S2.45 4.9 1 6v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1m0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5z"},"0"),(0,Dn.jsx)("path",{d:"M17.5 10.5c.88 0 1.73.09 2.5.26V9.24c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99M13 12.49v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26V11.9c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.3-4.5.83m4.5 1.84c-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26v-1.52c-.79-.16-1.64-.24-2.5-.24"},"1")],"MenuBook");var ca=m(_(),1),ua=(0,R.createSvgIcon)((0,ca.jsx)("path",{d:"M3 18h6v-2H3zM3 6v2h18V6zm0 7h12v-2H3z"}),"Sort");var da=m(_(),1),ma=(0,R.createSvgIcon)((0,da.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility");var qu=(0,In.lazy)(()=>import("./FeatureDialog-ZBX3XQZ5.js")),Zu=(0,In.lazy)(()=>import("./AnnotationFileDialog-FCYYZ4JN.js")),Ju="https://gmod.org/JBrowseMSA/tutorials/protein_family";function ha({model:n}){let{showDomains:e,actuallyShowDomains:t,subFeatureRows:o,noDomains:r}=n,i=r?" (none loaded)":"";return[{label:"Open annotation file...",icon:Ft,onClick:()=>{n.queueDialog(s=>[Zu,{handleClose:s,model:n}])}},{label:"How to get a domain file...",icon:la,onClick:()=>{window.open(Ju,"_blank","noopener,noreferrer")}},{label:`Show annotations${i}`,disabled:r,icon:ma,checked:t,type:"checkbox",onClick:()=>{n.setShowDomains(!e)}},{label:`Use sub-row layout${i}`,disabled:r,checked:t?o:!1,icon:ua,type:"checkbox",onClick:()=>{n.setSubFeatureRows(!o)}},{label:`Filter annotations${i}`,icon:sa,disabled:r,onClick:()=>{n.queueDialog(s=>[qu,{onClose:s,model:n}])}}]}var Qu=(0,ze.lazy)(()=>import("./MetadataDialog-KZWQFRF7.js")),ed=(0,ze.lazy)(()=>import("./ExportSVGDialog-TYYPI6VB.js")),td=(0,pa.observer)(({model:n})=>ze.default.createElement(fa.default,{"data-testid":"file_menu",tooltip:"File",menuItems:[{label:"Return to import form",icon:Ft,onClick:()=>{n.reset()}},{label:"Metadata",icon:ta,onClick:()=>{n.queueDialog(e=>[Qu,{model:n,onClose:e}])}},{label:"Annotations",type:"subMenu",subMenu:ha({model:n})},{label:"Export tree (Newick)",icon:kt,disabled:!!n.tree.noTree,onClick:()=>{n.exportNewick()}},{label:"Export SVG",icon:ia,onClick:()=>{n.queueDialog(e=>[ed,{onClose:e,model:n}])}}],anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"}},ze.default.createElement(ra,null))),ga=td;var Be=m(A(),1),Ht=m(I(),1),wa=m(F(),1),nd=(0,wa.observer)(function({model:e}){let{hideGaps:t,allowedGappyness:o}=e,[r,i]=(0,Be.useState)(),s=r??o;return t?Be.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Be.default.createElement(Ht.Typography,{style:{whiteSpace:"nowrap"}},"Hide columns w/ \u2265",s,"% gaps"),Be.default.createElement(Ht.Slider,{"data-testid":"gappyness_slider",style:{width:100,marginInline:10},min:1,max:100,value:s,onChange:(a,l)=>{i(l)},onChangeCommitted:(a,l)=>{e.setAllowedGappyness(l),i(void 0)}})):null}),ba=nd;var ot=m(A(),1),Pt=m(I(),1),Ca=m(F(),1);function Sa(n){let e=new Set(n.collapsed);return n.leaves.filter(({data:{id:t,name:o}})=>!(e.has(t)&&o===t)).map(t=>t.data.name)}function Ma(n,e,t=50){let o=e.toLowerCase();return n.filter(r=>r.toLowerCase().includes(o)).slice(0,t)}function od(n,e){let t=e.trim(),o=n.rowNamesSet.get(t);if(o!==void 0)return{row:o};let r=/^(.+):(\d+)$/.exec(t);if(r){let[,i="",s]=r,a=n.rowNamesSet.get(i),l=a===void 0?void 0:va(n,i,+s);return l===void 0?void 0:{row:a,col:l}}if(/^\d+$/.test(t)){let i=+t,{relativeTo:s,numColumns:a}=n,l=s?va(n,s,i):i>=1&&i<=a?i-1:void 0;return l===void 0?void 0:{col:l}}}function va(n,e,t){let o=n.seqPosIndex(e)?.[t-1];return o===void 0?void 0:n.globalColToVisibleCol(o)}function xa(n,e){let t=od(n,e);if(t){let{row:o,col:r}=t,{rowHeight:i,colWidth:s,msaAreaHeight:a,msaAreaWidth:l}=n;o!==void 0&&n.setScrollY(-(o+.5)*i+a/2),r!==void 0&&n.setScrollX(-(r+.5)*s+l/2),n.setMousePos(r,o)}return t!==void 0}var On="Go to row or column";function rd(n){let{slotProps:e,inputProps:t}=n;return e?{slotProps:{...e,htmlInput:{...e.htmlInput,"aria-label":On}}}:{inputProps:{...t,"aria-label":On}}}var id=(0,Ca.observer)(function({model:n}){let[e,t]=(0,ot.useState)(!1),o=Sa(n);return o.length>1||n.numColumns>0?ot.default.createElement(Pt.Autocomplete,{freeSolo:!0,size:"small",options:o,filterOptions:(r,{inputValue:i})=>Ma(r,i),value:null,blurOnSelect:!0,onInputChange:()=>{t(!1)},onChange:(r,i)=>{i&&t(!xa(n,i))},style:{width:180,margin:"auto 8px"},renderInput:r=>ot.default.createElement(Pt.TextField,{...r,error:e,placeholder:On,title:"A row name, a column number, or name:residue",...rd(r)})}):null}),ya=id;var Dt=m(A(),1),Aa=m(Ze(),1),Ta=m(I(),1),Ea=m(F(),1),ad=(0,Aa.makeStyles)()({container:{display:"flex",overflow:"hidden",margin:"auto",marginLeft:10},nameFirst:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},nameRest:{whiteSpace:"nowrap",flexShrink:0}}),sd=(0,Ea.observer)(function({model:n}){let{mouseOverRowName:e,mouseCol:t}=n,{classes:o}=ad();if(!e||t===void 0)return null;let r=Math.floor(e.length/2),i=n.visibleColToSeqPosOneBased(e,t),s=n.visibleColToRowLetter(e,t);return Dt.default.createElement(Ta.Typography,{component:"div",className:o.container,title:e},Dt.default.createElement("span",{className:o.nameFirst},e.slice(0,r)),Dt.default.createElement("span",{className:o.nameRest},e.slice(r),":",i," (",s,")"))}),La=sd;var It=m(A(),1);var Ra=m(_(),1),ka=(0,R.createSvgIcon)((0,Ra.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning");var Ot=m(I(),1),Fa=m(F(),1),ld=(0,Fa.observer)(function({model:n}){let{warnings:e}=n;return e.length===0?null:It.default.createElement(Ot.Tooltip,{title:`${e.join(" ")} (click to dismiss)`},It.default.createElement(Ot.Button,{"aria-label":"Dismiss warnings",color:"warning",size:"small",startIcon:It.default.createElement(ka,{fontSize:"small"}),style:{margin:"auto",marginLeft:10,whiteSpace:"nowrap"},onClick:()=>{n.clearWarnings()}},e.length>1?`${e.length} warnings`:"Warning"))}),Ha=ld;var Nn=m(A(),1),Na=m(Re(),1);var Pa=m(_(),1),Da=(0,R.createSvgIcon)((0,Pa.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune");var za=m(F(),1);function Nt(n,e,t){return{label:n,type:"radio",checked:e,onClick:t}}var cd={branchLength:"By branch length",input:"As written",ladderize:"Ladderize, small clades first",ladderizeReverse:"Ladderize, large clades first"};function ud(n){let[e,...t]=n;return t.length===0?`Outgroup ${e}`:`Outgroup ${e} \u2026 ${t.at(-1)}`}function Q(n,e,t){return{label:n,type:"checkbox",checked:e,onClick:()=>{t(!e)}}}function dd(n){let e=new Set(n.turnedOnTracks.map(t=>t.model.id));return n.tracks.map(({model:{id:t,name:o}})=>Q(o,e.has(t),()=>{n.toggleTrack(t)}))}function Ia(n){let{drawMsaLetters:e,hideGaps:t,bgColor:o,showColumnStats:r}=n;return[{label:"Tracks",type:"subMenu",subMenu:dd(n)},{type:"divider"},Q("Show track values on hover",r,i=>{n.setShowColumnStats(i)}),Q("Draw letters",e,i=>{n.setDrawMsaLetters(i)}),Q("Color letters, not cells",!o,i=>{n.setBgColor(!i)}),Q("Hide gappy columns",t,i=>{n.setHideGaps(i)})]}function Oa(n){let{drawTree:e,showBranchLen:t,labelsAlignRight:o,drawNodeBubbles:r,drawNodeLabels:i,drawLabels:s,treeAreaWidth:a,showTreeOverview:l,treeOrder:c,treeRoot:u,rotated:d}=n;return[{label:"Order",type:"subMenu",subMenu:[...gt.map(h=>Nt(cd[h],c===h,()=>{n.setTreeOrder(h)})),{type:"divider"},{label:"Undo rotations",disabled:d.length===0,onClick:()=>{n.clearRotated()}}]},{label:"Root",type:"subMenu",subMenu:[Nt("As written",u===void 0,()=>{n.setTreeRoot(void 0)}),Nt("Midpoint",u==="midpoint",()=>{n.setTreeRoot("midpoint")}),...typeof u=="object"?[{...Nt(ud(u.outgroup),!0,()=>{}),disabled:!0}]:[]]},{type:"divider"},Q("Show branch length",t,h=>{n.setShowBranchLen(h)}),Q("Show tree",e,h=>{n.setDrawTree(h)}),Q("Draw bubbles on tree branches",r,h=>{n.setDrawNodeBubbles(h)}),Q("Draw internal node labels",i,h=>{n.setDrawNodeLabels(h)}),Q("Show tree overview",l,h=>{n.setShowTreeOverview(h)}),Q("Tree labels align right",o,h=>{n.setLabelsAlignRight(h)}),Q("Draw labels",s,h=>{n.setDrawLabels(h)}),Q("Fit tree area to labels and tree",a===void 0,h=>{n.setTreeAreaWidth(h?void 0:n.effectiveTreeAreaWidth)})]}var md=(0,za.observer)(function({model:n}){return Nn.default.createElement(Na.default,{"data-testid":"msa_settings_menu",tooltip:"Alignment settings",closeAfterItemClick:!1,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},menuItems:Ia(n)},Nn.default.createElement(Da,null))}),Ba=md;var zn=m(A(),1),zt=m(I(),1),Wa=m(F(),1),hd=(0,Wa.observer)(function({model:n}){let{currentAlignment:e,alignmentNames:t}=n,o=new Map;return t.length>0?zn.default.createElement(zt.TextField,{select:!0,variant:"outlined",value:e,size:"small",onChange:r=>{n.setCurrentAlignment(+r.target.value)}},t.map((r,i)=>{let s=o.get(r)??0;return o.set(r,s+1),zn.default.createElement(zt.MenuItem,{key:s===0?r:`${r}\0${s}`,value:i},r)})):null}),Ga=hd;var X=m(A(),1);var _a=m(_(),1),Va=(0,R.createSvgIcon)((0,_a.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Clear");var $a=m(_(),1),Ya=(0,R.createSvgIcon)((0,$a.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"}),"ContentCopy");var Bn=m(_(),1),Bt=(0,R.createSvgIcon)([(0,Bn.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"},"0"),(0,Bn.jsx)("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"},"1")],"ZoomIn");var te=m(I(),1),Ka=m(F(),1);function ja(n,e){return`${n.toLocaleString("en-US")} ${e}${n===1?"":"s"}`}var fd=(0,Ka.observer)(function({model:n}){let[e,t]=(0,X.useState)(),{selectionSize:o,selectionFileSpan:r}=n;if(!o||!r)return null;let i=`${ja(o.columns,"column")} \xD7 ${ja(o.rows,"row")}`,s=[{text:"Copy as FASTA",Icon:Ya,act:()=>{ci(n.selectionFasta)}},{text:"Zoom to selection",Icon:Bt,act:()=>{n.zoomToSelection()}},{text:"Clear selection",Icon:Va,act:()=>{n.clearSelection()}}];return X.default.createElement(X.default.Fragment,null,X.default.createElement(te.Tooltip,{title:`Columns ${r.start}-${r.end} selected. Shift-drag the alignment to select, Escape to clear`},X.default.createElement(te.Button,{size:"small","aria-label":`Selection: ${i}`,endIcon:X.default.createElement(Tt,null),onClick:a=>{t(a.currentTarget)},style:{margin:"auto 0 auto 8px",flexShrink:0,maxWidth:"100%",minWidth:0,textTransform:"none",whiteSpace:"nowrap"}},X.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis"}},i))),e?X.default.createElement(te.Menu,{anchorEl:e,open:!0,transitionDuration:0,onClose:()=>{t(void 0)}},s.map(({text:a,Icon:l,act:c})=>X.default.createElement(te.MenuItem,{key:a,dense:!0,onClick:()=>{c(),t(void 0)}},X.default.createElement(te.ListItemIcon,null,X.default.createElement(l,{fontSize:"small"})),X.default.createElement(te.ListItemText,null,a)))):null)}),Ua=fd;var Wn=m(A(),1),Xa=m(Re(),1);var qa=m(F(),1);var pd=(0,qa.observer)(function({model:n}){let{rows:e}=n,t=e.length>Ee;return Wn.default.createElement(Xa.default,{"data-testid":"tree_settings_menu",tooltip:"Tree settings",closeAfterItemClick:!1,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},menuItems:[...Oa(n),...e.length>=2?[{label:"Advanced",type:"subMenu",subMenu:[{label:t?`Calculate neighbor joining tree (over ${Ee} rows, use FastTree)`:"Calculate neighbor joining tree (BLOSUM62)",disabled:t,onClick:()=>{try{n.calculateNeighborJoiningTreeFromMSA()}catch(o){console.error("Failed to calculate NJ tree:",o),n.setError(o)}}}]}]:[]]},Wn.default.createElement(kt,null))}),Za=pd;var Wt=m(A(),1),es=m(Ze(),1);var Ja=m(_(),1),Qa=(0,R.createSvgIcon)((0,Ja.jsx)("path",{d:"M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5m-1 4h-2.19l2 2H16zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3z"}),"LinkOff");var Gt=m(I(),1),ts=m(F(),1),gd=(0,es.makeStyles)()(n=>({warning:{display:"flex",alignItems:"center",gap:4,margin:"auto",marginLeft:10,whiteSpace:"nowrap",color:n.palette.warning.main,cursor:"help"}}));function wd(n){return n<1e6?`${Math.round(n/1e3)} kB`:`${(n/1e6).toFixed(1)} MB`}var bd=(0,ts.observer)(function({model:n}){let{unshareableData:e}=n,{classes:t}=gd();if(e.length===0)return null;let o=e.map(({what:r,bytes:i})=>`${r} (${wd(i)})`).join(" and the ");return Wt.default.createElement(Gt.Tooltip,{title:`The ${o} came from this computer and is too large to travel in a URL, so a link to this page opens without it. Serve the file over HTTP and open it by URL to share the view.`},Wt.default.createElement(Gt.Typography,{component:"div",className:t.warning},Wt.default.createElement(Qa,{fontSize:"small"}),"Not in the link"))}),ns=bd;var ie=m(A(),1),ps=m(Re(),1);var os=m(_(),1),rs=(0,R.createSvgIcon)((0,os.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z"}),"ZoomOut");var We=m(I(),1),gs=m(F(),1);var me=m(A(),1),is=m(Su(),1),vd="M12 5a4 4 0 0 0-4 4v6a4 4 0 0 0 8 0V9a4 4 0 0 0-4-4zm0 2a2 2 0 0 1 2 2v6a2 2 0 0 1-4 0V9a2 2 0 0 1 2-2z",Sd="M11.2 8.6h1.6v3.2h-1.6z",as="M.4 12 5 15V9z",ss="M23.6 12 19 9v6z",ls="M12 .4 15 4H9z",cs="M12 23.6 9 20h6z";function _t({arrows:n,...e}){return me.default.createElement(is.default,{...e},me.default.createElement("path",{d:vd}),me.default.createElement("path",{d:Sd}),n.map(t=>me.default.createElement("path",{key:t,d:t})))}function us(n){return me.default.createElement(_t,{...n,arrows:[]})}function ds(n){return me.default.createElement(_t,{...n,arrows:[as,ss,ls,cs]})}function ms(n){return me.default.createElement(_t,{...n,arrows:[as,ss]})}function hs(n){return me.default.createElement(_t,{...n,arrows:[ls,cs]})}var ws={label:"Scrolls the alignment",Icon:us,helpText:"Ctrl+wheel zooms both axes at the cursor."},fs=[ws,{label:"Zooms both axes",axis:"both",Icon:ds,helpText:"Hold shift to pan while the wheel zooms."},{label:"Zooms columns only",axis:"horizontal",Icon:ms,helpText:"Holds the row height, so the labels and letters stay at their size while the alignment compresses."},{label:"Zooms rows only",axis:"vertical",Icon:hs,helpText:"Holds the column width, so the alignment stays as wide while the rows grow or shrink."}],Md=(0,gs.observer)(function({model:e}){let{scrollZoom:t,scrollZoomAxis:o}=e,r=t?o:void 0,i=fs.find(s=>s.axis===r)??ws;return ie.default.createElement(ie.default.Fragment,null,ie.default.createElement(We.Tooltip,{title:"Zoom in"},ie.default.createElement(We.IconButton,{"aria-label":"Zoom in",onClick:()=>{e.zoomIn()}},ie.default.createElement(Bt,null))),ie.default.createElement(We.Tooltip,{title:"Zoom out"},ie.default.createElement(We.IconButton,{"aria-label":"Zoom out",onClick:()=>{e.zoomOut()}},ie.default.createElement(rs,null))),ie.default.createElement(ps.default,{"data-testid":"scroll_zoom_menu",tooltip:`Mouse wheel: ${i.label.toLowerCase()} (ctrl+wheel always zooms)`,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},menuItems:[{type:"subHeader",label:"Mouse wheel"},...fs.map(({label:s,axis:a,Icon:l,helpText:c})=>({label:s,icon:l,helpText:c,type:"radio",checked:i.label===s,onClick:()=>{e.setScrollZoom(a!==void 0),a!==void 0&&e.setScrollZoomAxis(a)}}))]},ie.default.createElement(i.Icon,null)))}),bs=Md;var Gn=m(A(),1),Cs=m(Re(),1);var vs=m(_(),1),Ss=(0,R.createSvgIcon)((0,vs.jsx)("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreVert");var Ms=m(_(),1),xs=(0,R.createSvgIcon)((0,Ms.jsx)("path",{d:"M12 5V2L8 6l4 4V7c3.31 0 6 2.69 6 6 0 2.97-2.17 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93 0-4.42-3.58-8-8-8m-6 8c0-1.65.67-3.15 1.76-4.24L6.34 7.34C4.9 8.79 4 10.79 4 13c0 4.08 3.05 7.44 7 7.93v-2.02c-2.83-.48-5-2.94-5-5.91"}),"RestartAlt");var ys=m(F(),1),xd=(0,ys.observer)(function({model:n}){return Gn.default.createElement(Cs.default,{tooltip:"Fit / zoom options",menuItems:[{label:"Fit both vertically/horizontally",onClick:()=>{n.fit()}},{label:"Fit vertically",onClick:()=>{n.fitVertically()}},{label:"Fit horizontally",onClick:()=>{n.fitHorizontally()}},{label:"Reset zoom to default",icon:xs,onClick:()=>{n.resetZoom()}}]},Gn.default.createElement(Ss,null))}),As=xd;var Cd=(0,O.lazy)(()=>import("./AboutDialog-IRBPUPJK.js")),yd=(0,Es.observer)(function({model:n}){let[e,{height:t}]=(0,Ts.default)();return(0,O.useEffect)(()=>{n.setHeaderHeight(t??0)},[n,t]),(0,O.useEffect)(()=>()=>{n.setHeaderHeight(0)},[n]),O.default.createElement("div",{ref:e,style:{display:"flex",flexWrap:"wrap"}},O.default.createElement(ga,{model:n}),O.default.createElement(Ji,{model:n}),O.default.createElement(Za,{model:n}),O.default.createElement(Ba,{model:n}),O.default.createElement(bs,{model:n}),O.default.createElement(As,{model:n}),O.default.createElement(ba,{model:n}),O.default.createElement(ya,{model:n}),O.default.createElement("div",{style:{paddingLeft:20,margin:"auto"}},O.default.createElement(Ga,{model:n})),O.default.createElement("div",{style:{flex:"1 1 0",minWidth:0,display:"flex"}},O.default.createElement(Ua,{model:n}),O.default.createElement(La,{model:n})),O.default.createElement(Ha,{model:n}),O.default.createElement(ns,{model:n}),O.default.createElement(tt,{model:n,variant:"header"}),O.default.createElement(Vt.Tooltip,{title:"About"},O.default.createElement(Vt.IconButton,{"aria-label":"About",onClick:()=>{n.queueDialog(o=>[Cd,{onClose:o}])}},O.default.createElement(_o,null))))}),Ls=yd;var Se=m(A(),1),ks=m(I(),1),Fs=m(F(),1);var $t=m(A(),1),Rs=m(Xe(),1);function $({draw:n,width:e,height:t,deps:o}){let r=(0,$t.useRef)(null);return(0,$t.useEffect)(()=>{let i=r.current?.getContext("2d");return i?(0,Rs.autorun)(()=>{n(i)}):void 0},[...o,e,t]),r}var Ad=(0,Fs.observer)(function({model:n}){let{minimapHeight:e,msaCanvasWidth:t,highResScaleFactor:o}=n,r=(0,ks.useTheme)(),{unit:i,s,w:a,polygonHeight:l,polygonPoints:c}=Ko(n),u=Math.round(t*o),d=Math.round(12*o),h=$({draw:g=>{g.resetTransform(),g.clearRect(0,0,u,d);let p=jo({model:n,theme:r,height:12});p&&(g.imageSmoothingEnabled=!0,g.drawImage(p,0,0,p.width,p.height,0,0,u,d))},width:u,height:d,deps:[n,r]}),f=(0,Se.useCallback)((g,p)=>{n.setScrollX(p-g/i)},[n,i]);return Se.default.createElement("div",{style:{position:"relative",height:e,width:t,flexShrink:0}},Se.default.createElement("canvas",{ref:h,width:u,height:d,onMouseDown:g=>{if(g.button===0&&i>0){let p=g.clientX-g.currentTarget.getBoundingClientRect().left;n.setScrollX(-p/i+t/2)}},style:{display:"block",width:t,height:12,boxSizing:"border-box",border:`1px solid ${r.palette.text.secondary}`}}),Se.default.createElement(pe,{axis:"x",variant:"thumb",getStart:()=>n.scrollX,onDrag:f,style:{top:0,left:Math.max(0,s),height:12,width:a}}),Se.default.createElement("svg",{height:l,width:t},Se.default.createElement("polygon",{fill:Vo,points:c})))}),Hs=Ad;var rt=m(A(),1),Zs=m(F(),1);var Me=m(A(),1);var Ps=m(_(),1),Ds=(0,R.createSvgIcon)((0,Ps.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");var Ge=m(I(),1),Is=m(F(),1);var Td=(0,Is.observer)(function({model:n}){let{legends:e,showDomainLegend:t}=n,o=Uo(e),r=t?Ds:Fo;return o.length>0?Me.default.createElement(Ge.Paper,{elevation:3,style:{position:"absolute",top:4,right:4,zIndex:xr,maxWidth:220,maxHeight:"60%",display:"flex",flexDirection:"column",opacity:.95,pointerEvents:"none"}},Me.default.createElement(Ge.IconButton,{size:"small",title:t?"Collapse key":"Expand key",style:{padding:1,pointerEvents:"auto",...t&&{position:"absolute",top:0,right:0}},onClick:()=>{n.setShowDomainLegend(!t)}},Me.default.createElement(r,{style:{fontSize:14}})),t?Me.default.createElement("div",{style:{overflow:"auto",padding:"2px 6px 4px"}},o.map((i,s)=>Me.default.createElement("div",{key:i.key,style:{display:"flex",alignItems:"center",gap:4,marginRight:s===0?18:0}},i.color?Me.default.createElement("div",{style:{width:9,height:9,flexShrink:0,background:i.color}}):null,Me.default.createElement(Ge.Typography,{variant:"caption",noWrap:!0,title:i.hint&&i.hint!==i.label?`${i.label} (${i.hint})`:i.label,style:{fontSize:10,lineHeight:1.4,fontWeight:i.color?void 0:"bold",pointerEvents:"auto"}},i.label)))):null):null}),Os=Td;var ae=m(A(),1),Vs=m(F(),1);var jt=m(A(),1),Kt=m(I(),1);function _n(){return jt.default.createElement("div",{style:{position:"absolute",left:"50%",top:"50%"}},jt.default.createElement(Kt.CircularProgress,null),jt.default.createElement(Kt.Typography,null,"Loading..."))}var ne=m(A(),1),Bs=m(Je(),1),Ws=m(I(),1),Gs=m(F(),1);var Ns=m(A(),1);function zs({model:n,offsetX:e,offsetY:t}){let{anchor:o,hoverAt:r,clearAnchor:i}=be(),s=(0,Ns.useRef)(void 0);function a(g){let{left:p,top:w}=g.getBoundingClientRect(),{scrollX:C,scrollY:M}=n;return({clientX:x,clientY:E})=>({col:Math.floor((x-p+e-(n.scrollX-C))/n.colWidth),row:Math.floor((E-w+t-(n.scrollY-M))/n.rowHeight)})}function l(g,p){return a(p)(g)}function c({col:g,row:p}){return g>=0&&g<n.numColumns&&p>=0&&p<n.numRows}function u(g,p){let w=l(g,p),C=c(w);n.setMousePos(C?w.col:void 0,C?w.row:void 0);let M=!!n.hoveredInsertion||n.mouseOverDomains.length>0;r(g,M||void 0)}function d(g,p){s.current={x:g.clientX,y:g.clientY},g.shiftKey&&g.button===0&&Lt(n,g,a(p))}function h(g,p){let w=s.current;if(s.current=void 0,w&&Math.hypot(g.clientX-w.x,g.clientY-w.y)>Tn)return;let C=l(g,p),{col:M,row:x}=C,{mouseClickCol:E,mouseClickRow:v}=n,L=M===E&&x===v,z=c(C)&&!L;n.setMouseClickPos(z?M:void 0,z?x:void 0)}function f(){n.setMousePos(),i()}return{anchor:o,onMouseMove:u,onMouseDown:d,onClick:h,onMouseLeave:f}}var Ed=(0,Gs.observer)(function({model:n,offsetX:e,offsetY:t}){let{blockSize:o,highResScaleFactor:r}=n,i=(0,Ws.useTheme)(),{anchor:s,onMouseMove:a,onMouseDown:l,onClick:c,onMouseLeave:u}=zs({model:n,offsetX:e,offsetY:t}),d=o*r,h=$({draw:p=>{p.resetTransform(),p.clearRect(0,0,d,d),Lr({ctx:p,theme:i,offsetX:e,offsetY:t,model:n});let w=!n.actuallyShowDomains&&n.bgColor&&$o();w&&Yo({ctx:p,model:n,theme:i,offsetX:e,offsetY:t}),Dr({ctx:p,theme:i,offsetX:e,offsetY:t,model:n,rasterTiles:w})},width:d,height:d,deps:[n,e,t,i]}),{hoveredInsertion:f,mouseOverDomains:g}=n;return ne.default.createElement(ne.default.Fragment,null,ne.default.createElement("canvas",{ref:h,onMouseMove:p=>{h.current&&a(p,h.current)},onMouseDown:p=>{h.current&&l(p,h.current)},onClick:p=>{h.current&&c(p,h.current)},onMouseLeave:()=>{u()},width:d,height:d,style:{position:"absolute",top:t,left:e,width:o,height:o}}),s?ne.default.createElement(Bs.default,{clientPoint:s.clientPoint},f?ne.default.createElement(ne.default.Fragment,null,"Insertion (",f.letters.length,n.sequenceType==="amino"?"aa":"bp","):"," ",f.letters.length>20?`${f.letters.slice(0,20)}...`:f.letters):g.map(p=>ne.default.createElement("div",{key:`${p.accession}-${p.start}-${p.end}`},ne.default.createElement("b",null,p.name)," (",p.accession,") ",p.start,"-",p.end,p.description?ne.default.createElement(ne.default.Fragment,null,ne.default.createElement("br",null),p.description):null))):null)}),_s=Ed;var Ld=(0,Vs.observer)(function({model:n}){let{MSA:e,msaFilehandle:t,height:o,msaCanvasWidth:r,blocks2d:i,scrollZoom:s,scrollX:a,scrollY:l}=n,c=(0,ae.useRef)(null),u=(0,ae.useCallback)(p=>{n.doScrollX(p)},[n]),d=(0,ae.useCallback)(p=>{n.doScrollY(p)},[n]),h=(0,ae.useCallback)((p,w,C)=>{n.zoomToPos(p,w,C,n.wheelZoomAxis)},[n]),{onMouseDown:f,onMouseUp:g}=we({ref:c,onScrollX:u,onScrollY:d,onZoom:h,scrollZoom:s});return ae.default.createElement("div",{ref:c,"data-testid":"msa_canvas",tabIndex:0,"aria-label":"Alignment. Arrow keys scroll, shift pages, + and - zoom, Home and End jump to the first and last column. Shift-drag selects cells, and Escape clears the selection.",onKeyDown:p=>{Et(n,p)&&p.preventDefault()},onMouseDown:p=>{p.shiftKey?(p.preventDefault(),c.current?.focus({preventScroll:!0})):f(p)},onMouseUp:g,style:{position:"relative",height:o,width:r,overflow:"hidden"}},!e&&!t?null:e?ae.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translate(${a}px, ${l}px)`,willChange:"transform"}},i.map(([p,w])=>ae.default.createElement(_s,{key:`${p}_${w}`,model:n,offsetX:p,offsetY:w}))):ae.default.createElement(_n,null))}),$s=Ld;var js=m(A(),1),Ks=m(re(),1),Us=m(I(),1),Xs=m(F(),1);function Ys({ctx:n,model:e,theme:t}){let{mouseCol:o,colWidth:r,msaCanvasWidth:i,height:s,rowHeight:a,scrollX:l,scrollY:c,mouseRow:u,mouseClickRow:d,mouseClickCol:h,highResScaleFactor:f,hoveredRowIndices:g}=e;n.resetTransform(),n.clearRect(0,0,i*f,s*f),n.scale(f,f);let p=C=>{n.fillRect(0,C*a+c,i,a)},w=C=>{n.fillRect(C*r+l,0,r,s)};Hr({ctx:n,model:e,theme:t,offsetX:-l,offsetY:-c,width:i,height:s}),n.fillStyle=kr;for(let C of g)p(C);n.fillStyle=Mt,o!==void 0&&w(o),u!==void 0&&p(u),n.fillStyle=xt,h!==void 0&&w(h),d!==void 0&&p(d)}var Rd=(0,Xs.observer)(function({model:n}){let{height:e,msaCanvasWidth:t,highResScaleFactor:o}=n,r=(0,Us.useTheme)(),i=t*o,s=e*o,a=$({draw:l=>{(0,Ks.isAlive)(n)&&Ys({ctx:l,model:n,theme:r})},width:i,height:s,deps:[n,r]});return js.default.createElement("canvas",{ref:a,id:"mouseover",width:i,height:s,style:{position:"absolute",top:0,left:0,width:t,height:e,zIndex:Mr,pointerEvents:"none"}})}),qs=Rd;var kd=(0,Zs.observer)(function({model:n}){return rt.default.createElement("div",{style:{position:"relative"}},rt.default.createElement($s,{model:n}),rt.default.createElement(qs,{model:n}),rt.default.createElement(Os,{model:n}))}),Js=kd;var Vn=m(A(),1),Qs=m(F(),1);var Fd=(0,Qs.observer)(function({model:n}){let{resolvedRowPanels:e,rowPanelsHeaderHeight:t,fontSize:o}=n;return e.length>0?Vn.default.createElement("div",{style:{display:"flex",flexShrink:0,height:t,alignItems:"flex-end"}},e.map(r=>{let i=Ir(r.width);return Vn.default.createElement("div",{key:r.id,title:r.header,style:{width:r.width,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",...i?{fontSize:o,textAlign:"center"}:{height:t,fontSize:Math.min(o,r.width),writingMode:"vertical-rl",transform:"rotate(180deg)"}}},r.header)})):null}),el=Fd;var le=m(A(),1),$n=m(F(),1);var ke=m(A(),1),tl=m(Je(),1),nl=m(I(),1),ol=m(F(),1);function xe(n,e){let o=n[e]??n.attributes?.[e];return typeof o=="string"?o:void 0}function Ut(n){return xe(n,"Name")??xe(n,"name")}function Hd({model:n,panel:e,name:t,x:o}){if(e.kind==="strip")return[`${e.header}: ${n.rowDataOf(t)?.[e.field]??"(none)"}`];let r=e.spans.get(t)?.findLast(l=>o>=l.xStart&&o<=l.xEnd);if(!r)return[];let{annotation:i}=r,s=i.strand===void 0?"":i.strand<0?" (-)":" (+)",a=e.field?xe(i,e.field):void 0;return[Ut(i)??i.accession,`${i.start}-${i.end}${s}`,...a===void 0?[]:[`${e.field}: ${a}`]]}var Pd=(0,ol.observer)(function({model:n,panel:e,offsetY:t}){let{anchor:o,hoverAt:r,clearAnchor:i}=be(),s=(0,nl.useTheme)(),{blockSize:a,highResScaleFactor:l,rowHeight:c}=n,u=e.width,d=a,h=u*l,f=d*l,g=$({draw:p=>{p.resetTransform(),p.clearRect(0,0,h,f),Or({ctx:p,model:n,theme:s,panel:e,x:0,offsetY:t})},width:h,height:f,deps:[n,s,e,t]});return ke.default.createElement(ke.default.Fragment,null,ke.default.createElement("canvas",{ref:g,width:h,height:f,style:{position:"absolute",top:t,left:0,width:u,height:d},onMouseMove:p=>{let{left:w,top:C}=p.currentTarget.getBoundingClientRect(),M=Math.floor((p.clientY-C+t)/c),x=n.leaves[M]?.data.name,E=x===void 0?[]:Hd({model:n,panel:e,name:x,x:p.clientX-w});r(p,x===void 0||E.length===0?void 0:{name:x,lines:E}),n.setMousePos(void 0,x===void 0?void 0:M)},onMouseLeave:()=>{i(),n.setMousePos(void 0,void 0)}}),o?ke.default.createElement(tl.default,{clientPoint:o.clientPoint},ke.default.createElement("div",null,o.value.name),o.value.lines.map(p=>ke.default.createElement("div",{key:p},p))):null)}),rl=Pd;var Dd=(0,$n.observer)(function({model:n,panel:e}){let t=(0,le.useRef)(null),{height:o,blocksY:r,scrollY:i}=n,s=(0,le.useCallback)(c=>{n.doScrollY(c)},[n]),{onMouseDown:a,onMouseUp:l}=we({ref:t,onScrollY:s});return le.default.createElement("div",{ref:t,"data-testid":`rowpanel_${e.id}`,onMouseDown:a,onMouseUp:l,style:{height:o,width:e.width,flexShrink:0,overflow:"hidden",position:"relative"}},le.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translateY(${i}px)`,willChange:"transform"}},r.map(c=>le.default.createElement(rl,{key:c,model:n,panel:e,offsetY:c}))))}),Id=(0,$n.observer)(function({model:n}){let{resolvedRowPanels:e}=n;return e.length>0?le.default.createElement("div",{style:{display:"flex",flexShrink:0}},e.map(t=>le.default.createElement(Dd,{key:t.id,model:n,panel:t}))):null}),il=Id;var Xt=m(A(),1),al=m(I(),1),sl=m(F(),1);var Od=(0,sl.observer)(function({model:n}){let{effectiveTreeAreaWidth:e,overviewHeight:t,highResScaleFactor:o}=n,r=(0,al.useTheme)(),[i,s]=(0,Xt.useState)(),a=Math.round(e*o),l=Math.round(t*o),c=$({draw:u=>{u.resetTransform(),u.clearRect(0,0,a,l);let d=li({model:n,theme:r,width:e,height:t,scale:o});u.scale(o,o);let h={model:n,ctx:u,width:e,height:t};d?u.drawImage(d,0,0,d.width,d.height,0,0,h.width,h.height):si({...h,theme:r}),i&&Sn({...h,rows:i.rows,color:r.palette.text.secondary});let f=n.treeOverviewFocusRows;f&&Sn({...h,rows:f,color:r.palette.text.primary})},width:a,height:l,deps:[n,r,i]});return Xt.default.createElement("canvas",{"data-testid":"tree_overview",ref:c,width:a,height:l,style:{display:"block",flexShrink:0,cursor:"pointer",width:e,height:t},onMouseMove:u=>{let d=n.treeOverviewHit(u.nativeEvent.offsetY);s(h=>h?.id===d?.id?h:d)},onMouseLeave:()=>{s(void 0)},onClick:u=>{n.treeOverviewClick(u.nativeEvent.offsetY)}})}),ll=Od;var jn=m(A(),1),Tl=m(F(),1);var ce=m(A(),1),Cl=m(re(),1),yl=m(F(),1);var qt=m(A(),1),cl=m(I(),1),ul=m(F(),1);var Nd=(0,ul.observer)(function({model:n}){let{resolvedClades:e,cladeGutterWidth:t,rowHeight:o,effectiveTreeAreaWidth:r,fontSize:i}=n,s=(0,cl.useTheme)();if(t===0)return null;let a=r-t;return qt.default.createElement(qt.default.Fragment,null,e.map((l,c)=>{let{label:u,markColor:d,rows:h}=l;if(!u||!Ur(l))return null;let f=a+Zr(l),g=qr(l,o,i);return qt.default.createElement("div",{key:`${h[0]}-${h[1]}-${c}`,title:u,style:{position:"absolute",left:f,top:h[0]*o,width:r-f-Kr,height:Xr(l,o),display:"flex",alignItems:"center",color:d??s.palette.text.primary,fontSize:i,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",pointerEvents:"none",...g?{}:{writingMode:"vertical-rl",transform:"rotate(180deg)"}}},u)}))}),dl=Nd;var he=m(A(),1),wl=m(Je(),1),bl=m(Ze(),1),vl=m(I(),1),Sl=m(F(),1);var oe=m(A(),1),se=m(I(),1),ml=m(F(),1),zd=(0,oe.lazy)(()=>import("./TreeNodeInfoDialog-VRCVIF26.js")),Bd=(0,ml.observer)(function({node:n,model:e,onClose:t}){let{collapsed:o,showOnly:r,relativeTo:i}=e,{name:s,id:a,leaf:l}=n,c=o.includes(a),u=a===e.tree.id,d=l?"subtree":"this node";return oe.default.createElement(se.Menu,{anchorReference:"anchorPosition",anchorPosition:{left:n.x,top:n.y},transitionDuration:0,open:!0,onClose:t},oe.default.createElement(se.MenuItem,{dense:!0,disabled:!0},s),l?oe.default.createElement(se.MenuItem,{dense:!0,onClick:()=>{e.queueDialog(h=>[zd,{info:e.getRowData(s),model:e,nodeName:s,onClose:h}]),t()}},"More info..."):null,oe.default.createElement(se.MenuItem,{dense:!0,onClick:()=>{e.toggleCollapsed(a),t()}},c?`Expand ${d}`:`Collapse ${d}`),l?null:oe.default.createElement(se.MenuItem,{dense:!0,onClick:()=>{e.setShowOnly(r===a?void 0:a),t()}},r===a?"Disable show only this node":"Show only this node"),l||c?null:oe.default.createElement(se.MenuItem,{dense:!0,onClick:()=>{e.toggleRotated(a),t()}},"Rotate this node"),u?null:oe.default.createElement(se.MenuItem,{dense:!0,onClick:()=>{e.rerootAt(a),t()}},"Reroot here"),l?oe.default.createElement(se.MenuItem,{dense:!0,onClick:()=>{e.drawRelativeTo(s),t()}},"Indicate differences from this row"):null,l&&i?oe.default.createElement(se.MenuItem,{dense:!0,onClick:()=>{e.drawRelativeTo(void 0),t()}},"Clear reference row"):null)}),hl=Bd;var pl=m(A(),1);var it=class{constructor(e=1/0,t=Float64Array,o=Uint32Array){let r=e!==1/0;this.ids=r?new o(e):[],this.values=r?new t(e):[],this.capacity=e,this.length=0}clear(){this.length=0}push(e,t){if(this.length===this.capacity)throw new RangeError("Queue is at capacity.");let o=this.length++;for(;o>0;){let r=o-1>>1,i=this.values[r];if(t>=i)break;this.ids[o]=this.ids[r],this.values[o]=i,o=r}this.ids[o]=e,this.values[o]=t}pop(){if(this.length===0)return;let e=this.ids,t=this.values,o=e[0],r=--this.length;if(r>0){let i=e[r],s=t[r],a=0,l=r>>1;for(;a<l;){let c=(a<<1)+1,u=c+1,d=c+(+(u<r)&+(t[u]<t[c]));if(t[d]>=s)break;e[a]=e[d],t[a]=t[d],a=d}e[a]=i,t[a]=s}return o}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){Array.isArray(this.ids)&&(this.ids.length=this.length),Array.isArray(this.values)&&(this.values.length=this.length)}};var fl=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Yn=3,at=class n{static from(e,t=0){if(t%8!==0)throw new Error("byteOffset must be 8-byte aligned.");if(!e||e.byteLength===void 0||"buffer"in e)throw new Error("Data must be an instance of ArrayBuffer or SharedArrayBuffer.");let[o,r]=new Uint8Array(e,t+0,2);if(o!==251)throw new Error("Data does not appear to be in a Flatbush format.");let i=r>>4;if(i!==Yn)throw new Error(`Got v${i} data when expected v${Yn}.`);let s=fl[r&15];if(!s)throw new Error("Unrecognized array type.");let[a]=new Uint16Array(e,t+2,1),[l]=new Uint32Array(e,t+4,1);return new n(l,a,s,void 0,e,t)}constructor(e,t=16,o=Float64Array,r=ArrayBuffer,i,s=0){if(e===void 0)throw new Error("Missing required argument: numItems.");if(isNaN(e)||e<=0)throw new Error(`Unexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+t,2),65535),this.byteOffset=s;let a=e,l=a;this._levelBounds=[a*4];do a=Math.ceil(a/this.nodeSize),l+=a,this._levelBounds.push(l*4);while(a!==1);this.ArrayType=o,this.IndexArrayType=l<16384?Uint16Array:Uint32Array;let c=fl.indexOf(o),u=l*4*o.BYTES_PER_ELEMENT;if(c<0)throw new Error(`Unexpected typed array class: ${o}.`);let d=o,h=this.IndexArrayType;if(i)this.data=i,this._boxes=new d(i,s+8,l*4),this._indices=new h(i,s+8+u,l),this._pos=l*4,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1];else{let f=this.data=new r(8+u+l*this.IndexArrayType.BYTES_PER_ELEMENT);this._boxes=new d(f,8,l*4),this._indices=new h(f,8+u,l),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(f,0,2).set([251,(Yn<<4)+c]),new Uint16Array(f,2,1)[0]=t,new Uint32Array(f,4,1)[0]=e}this._queue=new it}add(e,t,o=e,r=t){let i=this._pos,s=i>>2,a=this._boxes;return this._indices[s]=s,a[i]=e,a[i+1]=t,a[i+2]=o,a[i+3]=r,this._pos=i+4,e<this.minX&&(this.minX=e),t<this.minY&&(this.minY=t),o>this.maxX&&(this.maxX=o),r>this.maxY&&(this.maxY=r),s}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);let e=this._boxes;if(this.numItems<=this.nodeSize){e[this._pos++]=this.minX,e[this._pos++]=this.minY,e[this._pos++]=this.maxX,e[this._pos++]=this.maxY;return}let{numItems:t,minX:o,minY:r,nodeSize:i,_indices:s,_levelBounds:a}=this,l=this.maxX-o||1,c=this.maxY-r||1,u=new Int32Array(t),d=65535,h=d/l,f=d/c;for(let p=0,w=0;p<t;p++){let C=e[w++],M=e[w++],x=e[w++],E=e[w++],v=h*((C+x)/2-o)|0,L=f*((M+E)/2-r)|0;u[p]=Vd(v,L)}Gd(u,e,s,0,t-1,i);let g=t*4;for(let p=0,w=0;p<a.length-1;p++){let C=a[p];for(;w<C;){let M=w,x=e[w++],E=e[w++],v=e[w++],L=e[w++];for(let z=1;z<i&&w<C;z++)x=Math.min(x,e[w++]),E=Math.min(E,e[w++]),v=Math.max(v,e[w++]),L=Math.max(L,e[w++]);s[g>>2]=M,e[g++]=x,e[g++]=E,e[g++]=v,e[g++]=L}}this._pos=g}search(e,t,o,r,i){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let{_boxes:s,_levelBounds:a,_indices:l,nodeSize:c}=this,u=this.numItems*4,d=s.length-4,h=a.length-1,f=[],g=[],p=!1;for(;d!==void 0;){let w=Math.min(d+c*4,a[h]),C=d>=u;if(p)this._collectContained(d,w,h,u,g,i);else for(let M=d;M<w;M+=4){let x=s[M];if(o<x)continue;let E=s[M+1];if(r<E)continue;let v=s[M+2];if(e>v)continue;let L=s[M+3];if(t>L)continue;let z=l[M>>2]|0;if(C){let Y=+(e<=x&&t<=E&&o>=v&&r>=L);f.push(z|Y,h-1)}else(i===void 0||i(z,x,E,v,L))&&g.push(z)}h=f.pop(),d=f.pop(),d!==void 0&&(p=(d&1)===1,d&=-2)}return g}_collectContained(e,t,o,r,i,s){let a=this._boxes,l=this._indices,c=e;for(let d=o;d>0;d--)c=l[c>>2];let u=Math.min(c+(t-e)*this.nodeSize**o,r);if(s===void 0)for(;c<u;c+=4)i.push(l[c>>2]|0);else for(;c<u;c+=4){let d=l[c>>2]|0;s(d,a[c],a[c+1],a[c+2],a[c+3])&&i.push(d)}}neighbors(e,t,o=1/0,r=1/0,i){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let{_boxes:s,_levelBounds:a,_indices:l,_queue:c,nodeSize:u}=this,d=this.numItems*4,h=u*4,f=[],g=r*r,p=o===1,w=g;for(c.push(s.length-4<<1,0);c.length;){let C=c.ids[0];if(C&1){if(c.pop(),f.push(C>>1),f.length===o)break;continue}c.pop();let M=C>>1,x=M<d,E=Math.min(M+h,Wd(M,a));for(let v=M;v<E;v+=4){let L=s[v],z=s[v+1],Y=s[v+2],U=s[v+3],ee=Math.max(Math.max(L-e,e-Y),0),de=Math.max(Math.max(z-t,t-U),0),Z=ee*ee+de*de;if(Z>w)continue;let y=l[v>>2]|0;x?(i===void 0||i(y))&&(c.push(y<<1|1,Z),p&&Z<w&&(w=Z)):c.push(y<<1,Z)}}return c.clear(),f}};function Wd(n,e){let t=0,o=e.length-1;for(;t<o;){let r=t+o>>1;e[r]>n?o=r:t=r+1}return e[t]}function Gd(n,e,t,o,r,i){let s=[o,r];for(;s.length;){let a=s.pop()||0,l=s.pop()||0;if(a-l<=i&&Math.floor(l/i)>=Math.floor(a/i))continue;let c=n[l],u=n[l+a>>1],d=n[a],h=c>u!=c>d?c:u<c!=u<d?u:d,f=l-1,g=a+1;for(;;){do f++;while(n[f]<h);do g--;while(n[g]>h);if(f>=g)break;_d(n,e,t,f,g)}s.push(l,g,g+1,a)}}function _d(n,e,t,o,r){let i=n[o];n[o]=n[r],n[r]=i;let s=4*o,a=4*r,l=e[s],c=e[s+1],u=e[s+2],d=e[s+3];e[s]=e[a],e[s+1]=e[a+1],e[s+2]=e[a+2],e[s+3]=e[a+3],e[a]=l,e[a+1]=c,e[a+2]=u,e[a+3]=d;let h=t[o];t[o]=t[r],t[r]=h}function Vd(n,e){let t=n^e,o=65535^t,r=65535^(n|e),i=n&(e^65535),s=t|o>>1,a=t>>1^t,l=r^(r>>1^o&i>>1),c=i^(t&r>>1^i>>1);return t=s&s>>2^a&a>>2,o=s&a>>2^a&(s^a)>>2,r=l^(s&l>>2^a&c>>2),i=c^(a&l>>2^(s^a)&c>>2),s=t&t>>4^o&o>>4,a=t&o>>4^o&(t^o)>>4,l=r^(t&r>>4^o&i>>4),c=i^(o&r>>4^(t^o)&i>>4),r=l^(s&l>>8^a&c>>8),i=c^(a&l>>8^(s^a)&c>>8),r^=r>>1,i^=i>>1,t=n^e,o=i|65535^(t|r),t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,o=(o|o<<8)&16711935,o=(o|o<<4)&252645135,o=(o|o<<2)&858993459,o=(o|o<<1)&1431655765,((o<<1|t)>>>0)-2147483648}var Zt=class{flatbush=null;entries=[];clear(){this.flatbush=null,this.entries=[]}insert(e){this.entries.push(e)}finish(){if(this.entries.length===0)this.flatbush=null;else{this.flatbush=new at(this.entries.length);for(let e of this.entries)this.flatbush.add(e.minX,e.minY,e.maxX,e.maxY);this.flatbush.finish()}}search(e){return this.flatbush?.search(e.minX,e.minY,e.maxX,e.maxY).map(t=>this.entries[t])??[]}};function gl({model:n,offsetY:e}){let[t]=(0,pl.useState)(()=>new Zt),{anchor:o,hoverAt:r,clearAnchor:i}=be();function s(c){let u=c.nativeEvent.offsetX,d=c.nativeEvent.offsetY+e,h=t.search({minX:u,maxX:u+1,minY:d,maxY:d+1});return h.find(f=>!f.branch)??h[0]}function a(c){let u=s(c);r(c,u),n.setHoveredTreeNode(u?.id),n.setMousePos(void 0,u&&!u.branch?n.rowNamesSet.get(u.name):void 0)}function l(){i(),n.setHoveredTreeNode(void 0),n.setMousePos(void 0,void 0)}return{clickMap:t,anchor:o,hitTest:s,onMouseMove:a,onMouseLeave:l}}var $d=(0,bl.makeStyles)()(n=>({hover:{position:"absolute",pointerEvents:"none",zIndex:100,background:n.palette.action.hover}})),Yd=(0,Sl.observer)(function({model:n,offsetY:e}){let{classes:t}=$d(),o=(0,vl.useTheme)(),[r,i]=(0,he.useState)(),{clickMap:s,anchor:a,hitTest:l,onMouseMove:c,onMouseLeave:u}=gl({model:n,offsetY:e}),d=a?.value,{effectiveTreeAreaWidth:h,blockSize:f,highResScaleFactor:g}=n,p=h,w=f,C=p*g,M=w*g,x=$({draw:v=>{v.resetTransform(),v.clearRect(0,0,C,M),ai({ctx:v,model:n,offsetY:e,clickMap:s,theme:o})},width:C,height:M,deps:[n,s,e,o]}),E={width:p,height:w,top:e,left:0,position:"absolute"};return he.default.createElement(he.default.Fragment,null,r?he.default.createElement(hl,{node:r,model:n,onClose:()=>{i(void 0)}}):null,he.default.createElement("canvas",{ref:x,width:C,height:M,style:{...E,cursor:d?"pointer":"default"},onMouseMove:v=>{c(v)},onMouseLeave:()=>{u()},onClick:v=>{let L=l(v);L&&i({x:v.clientX,y:v.clientY,id:L.id,name:L.name,leaf:!L.branch})}}),d&&!d.branch?he.default.createElement("div",{className:t.hover,style:{left:d.minX,top:d.minY,width:d.maxX-d.minX,height:d.maxY-d.minY}}):null,a?he.default.createElement(wl.default,{clientPoint:a.clientPoint},a.value.label??a.value.name):null)}),Ml=Yd;function xl({ctx:n,model:e}){let{rowHeight:t,effectiveTreeAreaWidth:o,height:r,scrollY:i,mouseRow:s,referenceRowIndex:a,hoveredRowIndices:l,highResScaleFactor:c}=e;n.resetTransform(),n.clearRect(0,0,o*c,r*c),n.scale(c,c);let u=d=>{n.fillRect(0,d*t+i,o,t)};n.fillStyle=Rr;for(let d of l)u(d);s!==void 0&&s!==a&&!l.includes(s)&&u(s)}var jd=(0,yl.observer)(function({model:n}){let e=(0,ce.useRef)(null),{height:t,blocksY:o,effectiveTreeAreaWidth:r,scrollY:i,highResScaleFactor:s}=n,a=(0,ce.useCallback)(f=>{n.doScrollY(f)},[n]),{onMouseDown:l,onMouseUp:c}=we({ref:e,onScrollY:a}),u=r*s,d=t*s,h=$({draw:f=>{(0,Cl.isAlive)(n)&&xl({ctx:f,model:n})},width:u,height:d,deps:[n]});return ce.default.createElement("div",{ref:e,onMouseDown:l,onMouseUp:c,style:{height:t,position:"relative",width:r}},ce.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translateY(${i}px)`,willChange:"transform"}},o.map(f=>ce.default.createElement(Ml,{key:f,model:n,offsetY:f})),ce.default.createElement(dl,{model:n})),ce.default.createElement("canvas",{ref:h,width:u,height:d,style:{position:"absolute",top:0,left:0,width:r,height:t,zIndex:1e3,pointerEvents:"none"}}))}),Al=jd;var Kd=(0,Tl.observer)(function({model:n}){let{effectiveTreeAreaWidth:e}=n;return jn.default.createElement("div",{style:{overflow:"hidden",flexShrink:0,width:e}},jn.default.createElement(Al,{model:n}))}),El=Kd;var Jt=m(A(),1),Ll=m(I(),1),Rl=m(F(),1);var Ud=(0,Rl.observer)(({model:n})=>{let{effectiveTreeAreaWidth:e,marginLeft:t,treeScaleBar:o}=n,r=(0,Ll.useTheme)();return Jt.default.createElement("div",{style:{flexShrink:0,width:e}},o?Jt.default.createElement("svg",{width:e,height:qe,style:{display:"block"}},Jt.default.createElement(Yr,{bar:o,marginLeft:t,y:qe,color:r.palette.text.primary})):null)}),kl=Ud;var Xd=(0,Fe.observer)(function({model:n}){let{showHorizontalScrollbar:e,showTreeOverview:t,resizeHandleWidth:o}=n;return P.default.createElement("div",{style:{display:"flex"}},P.default.createElement("div",{style:{flexShrink:0}},t?P.default.createElement(ll,{model:n}):null,P.default.createElement(kl,{model:n})),P.default.createElement(el,{model:n}),P.default.createElement("div",{style:{width:o,flexShrink:0}}),e?P.default.createElement(Hs,{model:n}):null)}),qd=(0,Fe.observer)(function({model:n}){let{mouseCol:e,mouseClickCol:t,colWidth:o,scrollX:r,effectiveTreeAreaWidth:i,rowPanelsWidth:s,resizeHandleWidth:a,totalTrackAreaHeight:l,msaCanvasWidth:c,resolvedSelection:u}=n,d=[{start:u?.startCol,end:u?.endCol,color:Fr},{start:e,end:e,color:Mt},{start:t,end:t,color:xt}];return P.default.createElement("div",{style:{position:"absolute",left:i+s+a,top:0,width:c,height:l,overflow:"hidden",pointerEvents:"none"}},d.map(({start:h,end:f,color:g})=>h===void 0||f===void 0?null:P.default.createElement("div",{key:g,style:{position:"absolute",left:h*o+r,top:0,width:(f-h+1)*o,height:l,backgroundColor:g,zIndex:100}})))}),Zd=(0,Fe.observer)(function({model:n}){let{turnedOnTracks:e}=n;return e.length===0?null:P.default.createElement("div",{style:{position:"relative"}},P.default.createElement(qd,{model:n}),e.map(t=>P.default.createElement(Oi,{key:t.model.id,model:n,track:t})))}),Jd=(0,Fe.observer)(function({model:n}){let{showVerticalScrollbar:e}=n;return P.default.createElement("div",{style:{display:"flex"}},P.default.createElement(El,{model:n}),P.default.createElement(il,{model:n}),P.default.createElement(vi,{model:n}),P.default.createElement(Js,{model:n}),e?P.default.createElement(Bi,{model:n}):null)}),Qd=(0,Fe.observer)(function({model:n}){return P.default.createElement("div",{style:{position:"relative"}},P.default.createElement(Xd,{model:n}),P.default.createElement(Zd,{model:n}),P.default.createElement(Jd,{model:n}))}),em=(0,Fe.observer)(function({model:n}){let{height:e,hideHeader:t,viewInitialized:o,DialogComponent:r,DialogProps:i}=n;return P.default.createElement("div",null,o?P.default.createElement(P.default.Fragment,null,P.default.createElement("div",{style:{height:e,overflow:"clip"}},t?null:P.default.createElement(Ls,{model:n}),P.default.createElement(Qd,{model:n})),P.default.createElement(Si,{model:n}),r?P.default.createElement(P.Suspense,{fallback:null},P.default.createElement(r,{...i})):null):null)}),Fl=em;var N=m(A(),1),_e=m(hn(),1),q=m(I(),1),zl=m(F(),1);var st=m(A(),1),en=m(I(),1),Il=m(F(),1);var Hl=`CLUSTAL O(1.2.3) multiple sequence alignment
|
|
3
|
+
UniProt/Swiss-Prot|P26898|IL2RA_SHEEP MEPSLLMWRFFVFIVVPGCVTEACHDDPPSLRNA----------MFKVLRYE----VGTM
|
|
4
|
+
UniProt/Swiss-Prot|P01590|IL2RA_MOUSE MEPRLLMLGFLSLTIVPSCRAELCLYDPPEVPNA----------TFKALSYK----NGTI
|
|
5
|
+
UniProt/Swiss-Prot|P41690|IL2RA_FELCA MEPSLLLWGILTFVVVHGHVTELCDENPPDIQHA----------TFKALTYK----TGTM
|
|
6
|
+
UniProt/Swiss-Prot|P01589|IL2RA_HUMAN MDSYLLMWGLLTFIMVPGCQAELCDDDPPEIPHA----------TFKAMAYK----EGTM
|
|
7
|
+
UniProt/Swiss-Prot|Q5MNY4|IL2RA_MACMU MDPYLLMWGLLTFITVPGCQAELCDDDPPKITHA----------TFKAVAYK----EGTM
|
|
8
|
+
UniProt/Swiss-Prot|Q95118|IL2RG_BOVIN -----------------------------------LLMWGLLT-----------------
|
|
9
|
+
UniProt/Swiss-Prot|P40321|IL2RG_CANFA MLKPPLPLRSLLFLQLSLLGVGLNSTVPMPNGNEDIT------PDFFLTATPSETLSVSS
|
|
10
|
+
UniProt/Swiss-Prot|P26896|IL2RB_RAT MATVDLSWRLPLYILLLLLATT--------------------------------WVSAAV
|
|
11
|
+
UniProt/Swiss-Prot|Q8BZM1|GLMN_MOUSE PLPLRSLLFLQLPLLGVGLNP------------------PLPLRSLLFLQLPLLGVGLNP
|
|
12
|
+
UniProt/Swiss-Prot|P36835|IL2_CAPHI -----------LLGVGLNPKFLTP------------------------------------
|
|
13
|
+
UniProt/Swiss-Prot|Q7JFM4|IL2_AOTVO MLKPPLPLRSLLFLQLPLLGVGLNPKFLTPSGNEDIGGKPGTGGDFFLTSTPAGTLDVST
|
|
14
|
+
UniProt/Swiss-Prot|Q29416|IL2_CANFA --------------LFLQLSLLG-------------------------------------
|
|
15
|
+
`;var Pl="(((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 Qt(n,e,t,o){n.setError(void 0),e&&n.setMSAFilehandle(e),t&&n.setTreeFilehandle(t),o&&(n.setGFFFilehandle(o),n.setShowDomains(!0))}var Dl="https://jbrowse.org/genomes/multiple_sequence_alignments",tm="https://jbrowse.org/genomes/newick_trees",He="https://gmod.org/JBrowseMSA/demo/data",nm=[{label:"NLRP1 in 12 mammals, with Pfam domains",msa:`${He}/nlrp1.aln`,tree:`${He}/nlrp1.nh`,gff:`${He}/nlrp1-domains.gff`},{label:"474 human protein kinase domains, with a FastTree tree",msa:`${He}/kinase-pocket/kinase-pocket.afa`,tree:`${He}/kinase-pocket/kinase-pocket.nwk`},{label:"RSV-A G gene in 1,840 genomes, with the Nextstrain tree",msa:`${He}/scale/rsv-full.aln`,tree:`${He}/scale/rsv-full.nh`},{label:"230k COVID-19 samples (tree only)",tree:`${tm}/sarscov2phylo.pub.ft.nh`},{label:"Pfam SARS-CoV-2 families, multi-Stockholm with domains",msa:`${Dl}/pfam-cov2.stock`,gff:`${Dl}/pfam-cov2-domains.gff`},{label:"Small protein alignment and tree",inline:{msa:Hl,tree:Pl}}];function Kn(n){return n?{uri:n,locationType:"UriLocation"}:void 0}var om=(0,Il.observer)(function({model:n}){return st.default.createElement("ul",null,nm.map(({label:e,msa:t,tree:o,gff:r,inline:i})=>st.default.createElement("li",{key:e},st.default.createElement(en.Link,{href:"#",onClick:s=>{s.preventDefault(),n.setError(void 0);try{i?n.setData(i):Qt(n,Kn(t),Kn(o),Kn(r))}catch(a){console.error(a),n.setError(a)}}},st.default.createElement(en.Typography,{component:"span"},e)))))}),Ol=om;var Nl="@media (max-width: 640px)",rm=(0,zl.observer)(function({model:n}){let[e,t]=(0,N.useState)(),[o,r]=(0,N.useState)(),[i,s]=(0,N.useState)(),{error:a}=n;return N.default.createElement(q.Container,null,N.default.createElement(q.Box,{sx:{width:"50%",[Nl]:{width:"100%"}}},a?N.default.createElement(_e.ErrorMessage,{error:a}):null,N.default.createElement(q.Typography,null,"Open an MSA file (FASTA, Stockholm, Clustal, A3M or EMF format) and/or a tree file (Newick format)."),N.default.createElement(q.Typography,{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.")),N.default.createElement(q.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",gap:"40px",[Nl]:{flexDirection:"column",alignItems:"stretch",gap:"16px"}}},N.default.createElement("div",null,N.default.createElement("div",null,N.default.createElement(q.Typography,null,"MSA file or URL"),N.default.createElement(_e.FileSelector,{location:e,setLocation:t})),N.default.createElement("div",null,N.default.createElement(q.Typography,null,"Tree file or URL"),N.default.createElement(_e.FileSelector,{location:o,setLocation:r})),N.default.createElement("div",null,N.default.createElement(q.Typography,null,"Annotation GFF file or URL (optional)"),N.default.createElement(_e.FileSelector,{location:i,setLocation:s}))),N.default.createElement("div",null,N.default.createElement(q.Button,{onClick:()=>{try{Qt(n,e,o,i)}catch(l){console.error(l),n.setError(l)}},variant:"contained",color:"primary",disabled:!e&&!o},"Open")),N.default.createElement("div",null,N.default.createElement(q.Typography,null,"Examples"),N.default.createElement(Ol,{model:n}))))}),Bl=rm;var Wl=(0,Un.observer)(function({model:n,error:e}){return j.default.createElement("div",null,j.default.createElement(Gl.ErrorMessage,{error:e}),j.default.createElement(Vl.Button,{variant:"contained",color:"primary",onClick:()=>{n.reset()}},"Return to import form"))}),im=(0,Un.observer)(function({model:n}){let{isLoading:e,dataInitialized:t,data:o,error:r,resetCount:i,msaFilehandle:s,treeFilehandle:a}=n,l=!!(o.msa||o.tree),c=!r&&!!(s||a||e);return j.default.createElement("div",null,j.default.createElement(_l.ErrorBoundary,{key:i,FallbackComponent:u=>j.default.createElement(Wl,{model:n,error:u.error})},t?e?j.default.createElement(tt,{model:n,variant:"page"}):j.default.createElement(Fl,{model:n}):l?j.default.createElement(Wl,{model:n,error:r}):j.default.createElement(j.default.Fragment,null,c?j.default.createElement(tt,{model:n,variant:"page"}):null,j.default.createElement("div",{style:{display:c?"none":void 0}},j.default.createElement(Bl,{model:n})))))}),Xn=im;var T=m(A(),1),cu=m(qn(),1),uu=m(Ln(),1),ln=m(re(),1),du=m(jl(),1),Ye=m(Xe(),1);var H=m(ko(),1),iu=m(Mu(),1),Pe=m(Ul(),1),b=m(re(),1),G=m(Xe(),1);function Xl(n,e,t){let o=Math.max(0,t-e+1);return n.map(([r,i])=>`>${r}
|
|
16
|
+
${i.slice(e-1,t).padEnd(o,"-")}
|
|
17
|
+
`).join("")}function Zn({mapSize:n,blockSize:e,viewportPos:t,viewportSize:o}){let r=Math.max(0,Math.min(t,n-o)),i=Math.min(r+o,n),s=Math.floor(r/e),a=Math.ceil(i/e)-1,l=[];for(let c=s;c<=a;c++)l.push(c*e);return l}var Ce="rgb(128,179,230)",ql="#d88",am="rgb(192, 72, 192)",sm="rgb(204, 77, 204)",Zl="#8f8",Jl="rgb(26,204,26)",lm="rgb(240, 128, 128)",cm="rgb(240, 144, 72)",um="rgb(204, 204, 0)",Ql="rgb(26, 179, 179)";function ec(n,e){let t=n.total(e),o=je=>n.count(e,je),r=o("W"),i=o("L"),s=o("V"),a=o("I"),l=o("M"),c=o("A"),u=o("F"),d=o("C"),h=o("H"),f=o("P"),g=o("R"),p=o("K"),w=o("Q"),C=o("E"),M=o("D"),x=o("T"),E=o("S"),v=o("G"),L=o("Y"),z=o("N"),Y=r+i+s+a+l+c+u+d+h+f+L,U=p+g,ee=w+C,de=C+M,Z=x+E,y=je=>je/t,D={};return y(Y)>.6&&(D.W=Ce,D.L=Ce,D.V=Ce,D.A=Ce,D.I=Ce,D.M=Ce,D.F=Ce,D.C=Ce),(y(U)>.6||y(p)>.8||y(g)>.8||y(w)>.8)&&(D.K=ql,D.R=ql),(y(U)>.6||y(ee)>.5||y(C)>.8||y(w)>.8||y(M)>.8)&&(D.E=am),(y(U)>.6||y(de)>.5||y(p)>.8||y(g)>.8||y(w)>.8)&&(D.D=sm),(y(z)>.5||y(L)>.85)&&(D.N=Zl),(y(U)>.6||y(ee)>.6||y(w)>.85||y(C)>.85||y(p)>.85||y(g)>.85)&&(D.Q=Zl),(y(Y)>.6||y(Z)>.5||y(E)>.85||y(x)>.85)&&(D.S=Jl,D.T=Jl),y(d)>.85&&(D.C=lm),v>0&&(D.G=cm),f>0&&(D.P=um),(y(Y)>.6||y(r)>.85||y(L)>.85||y(c)>.85||y(d)>.85||y(f)>.85||y(w)>.85||y(u)>.85||y(h)>.85||y(a)>.85||y(i)>.85||y(l)>.85||y(s)>.85)&&(D.H=Ql,D.Y=Ql),D}function tc({col:n,colStats:e,conservation:t,propertyConservation:o}){if(n>=e.numColumns)return;let r=e.total(n);if(!r)return;let i=e.gapCount(n),s=e.residueEntries(n).sort((l,c)=>c[1]-l[1]),a=s[0];return{col:n,total:r,gaps:i,gapFraction:i/r,conservation:t[n]??0,propertyConservation:o[n],consensusLetter:a?.[0]??"",consensusCount:a?.[1]??0,consensusFraction:a?a[1]/r:0,distribution:s}}function lt(n){let e=[],t=new Array(n.length),o=n.map((r,i)=>i).sort((r,i)=>n[r].startCol-n[i].startCol);for(let r of o){let{startCol:i,endCol:s}=n[r],a=e.findIndex(c=>c<=i),l=a===-1?e.length:a;e[l]=s,t[r]=l}return n.map((r,i)=>({...r,lane:t[i],laneCount:e.length}))}var Ve=m(A(),1),nc=m(I(),1),Jn=m(F(),1);var dm=(0,Jn.observer)(function({model:n,track:e,offsetX:t}){let{blockSize:o,highResScaleFactor:r}=n,{height:i}=e.model,s=(0,nc.useTheme)(),a=o*r,l=i*r,c=$({draw:u=>{u.resetTransform(),u.clearRect(0,0,a,l),$r({model:n,ctx:u,track:e,offsetX:t,theme:s})},width:a,height:l,deps:[n,e,t,s]});return Ve.default.createElement("canvas",{ref:c,width:a,height:l,style:{position:"absolute",left:t,width:o,height:i}})}),mm=(0,Jn.observer)(function({model:n,track:e}){let{blocksX:t,msaCanvasWidth:o,scrollX:r}=n,{kind:i,height:s,data:a,arcs:l}=e.model;return i==="text"&&!a||i==="arc"&&!l?.length?null:Ve.default.createElement("div",{style:{position:"relative",height:s,width:o,overflow:"hidden"}},Ve.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translateX(${r}px)`,willChange:"transform"}},t.map(c=>Ve.default.createElement(dm,{key:c,model:n,track:e,offsetX:c}))),Ve.default.createElement(Mi,{model:n,track:e}))}),ct=mm;function oc(n,e){if(n<=0||e<20)return;let t=e/2/n,o=10**Math.floor(Math.log10(t)),r=t/o,i=(r>=5?5:r>=2?2:1)*o,s=i*n;return s>e?void 0:{step:i,px:s,label:`${Number(i.toPrecision(2))}`}}var hm=[["#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"]],rc=hm,fm={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"]};function ic(n){return n===void 0?void 0:fm[n]}function tn(n,e){let t=n.length,o=e??rc[t-1];return o&&t<=o.length?Object.fromEntries(n.map((r,i)=>[r,o[i]])):Object.fromEntries(n.map((r,i)=>[r,bt({h:i*360/t,s:60,l:60}).toHex()]))}function Qn(n,e,t="image"){let o=n;return`${(o?.uri??o?.localPath??o?.name)?.split(/[?#]/)[0]?.split(/[/\\]/).pop()?.replace(/\.[^.]*$/,"")||t}.${e}`}var pm=new Set(["row","start","end"]),ac=new WeakMap;function sc(n){return n.map(e=>{let t=ac.get(e);if(t)return t;let o=gm(e);return ac.set(e,o),o})}function gm(n){let{row:e,start:t,end:o,name:r,description:i,type:s,strand:a,color:l}=n,c=r??`${e}:${t}-${o}`,u=Object.fromEntries(Object.entries(n).filter(([d,h])=>!pm.has(d)&&h!==void 0).map(([d,h])=>[d,String(h)]));return{id:e,accession:c,name:r??c,description:i??r??c,featureType:s,start:t,end:o,strand:a==="+"?1:a==="-"?-1:void 0,color:l,attributes:u}}var lc=m(ko(),1);function wm(n){return typeof n=="string"?n:n?.message}async function cc(n,e,{fetcher:t=lc.fetchAndMaybeUnzipText,controller:o=new AbortController}={}){try{return await t(n,{signal:o.signal,statusCallback:r=>{let i=wm(r);e(i?{msg:i,onCancel:()=>{o.abort()}}:void 0)}})}finally{e(void 0)}}function uc(n){return n instanceof DOMException&&n.name==="AbortError"}function dc(n){let e=new Map(n.map(o=>{let r=o.dist===void 0?void 0:Number(o.dist);return[o.id,{id:`${o.id}`,name:o.label||`${o.id}`,...r!==void 0&&Number.isFinite(r)?{length:r}:{},children:[]}]})),t;for(let o of n){let r=e.get(o.id),i=o.parent!==void 0?e.get(o.parent):void 0;i?i.children.push(r):t??=r}if(t===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 t}var ue=m(re(),1);function mc(n=wt){return ue.types.model({tree:ue.types.maybe(ue.types.string),msa:ue.types.maybe(ue.types.string),treeMetadata:ue.types.maybe(ue.types.string),gff:ue.types.maybe(ue.types.string)}).actions(e=>({setTree(t){e.tree=t},setMSA(t){e.msa=t},setTreeMetadata(t){e.treeMetadata=t},setGFF(t){e.gff=t}})).postProcessSnapshot(e=>Object.fromEntries(Object.entries(e).map(([t,o])=>[t,o&&o.length>n?void 0:o])))}var hc=m(re(),1);function fc(){return hc.types.model("DialogQueueSessionMixin",{}).volatile(()=>({queueOfDialogs:[]})).views(n=>({get DialogComponent(){return n.queueOfDialogs[0]?.[0]},get DialogProps(){return n.queueOfDialogs[0]?.[1]}})).actions(n=>({removeActiveDialog(){n.queueOfDialogs=n.queueOfDialogs.slice(1)},queueDialog(e){let[t,o]=e(()=>{this.removeActiveDialog()});n.queueOfDialogs=[...n.queueOfDialogs,[t,o]]}}))}var ye=m(re(),1);var nn=m(re(),1);function k(n,e){return typeof nn.types.stripDefault=="function"?nn.types.stripDefault(n,e):nn.types.optional(n,e)}var bm=["stockholm","a3m","fasta","emf","clustal"];function pc(){return ye.types.model({bgColor:k(ye.types.boolean,nr),colorSchemeName:k(ye.types.string,ft),customColorScheme:ye.types.frozen(),showColumnStats:k(ye.types.boolean,or),msaFormat:ye.types.maybe(ye.types.enumeration("MSAFormat",bm))}).actions(n=>({setColorSchemeName(e){n.colorSchemeName=e,n.customColorScheme=void 0},setCustomColorScheme(e){n.customColorScheme=e},setBgColor(e){n.bgColor=e},setShowColumnStats(e){n.showColumnStats=e},setMSAFormat(e){n.msaFormat=e}}))}var K=m(re(),1);function gc(){return K.types.model({drawLabels:k(K.types.boolean,rr),labelsAlignRight:k(K.types.boolean,ir),treeAreaWidth:K.types.maybe(K.types.number),treeWidth:K.types.maybe(K.types.number),showBranchLen:k(K.types.boolean,cr),treeOrder:k(K.types.enumeration("TreeOrder",[...gt]),ur),drawTree:k(K.types.boolean,dr),drawNodeBubbles:k(K.types.boolean,mr),drawNodeLabels:k(K.types.boolean,hr),showTreeOverview:k(K.types.boolean,fr),overviewHeight:k(K.types.number,pr)}).actions(n=>({setTreeAreaWidth(e){n.treeAreaWidth=e===void 0?void 0:Math.round(e),n.treeWidth=void 0},setTreeWidth(e){n.treeWidth=e===void 0?void 0:Math.round(e)},setLabelsAlignRight(e){n.labelsAlignRight=e},setDrawTree(e){n.drawTree=e},setShowBranchLen(e){n.showBranchLen=e},setTreeOrder(e){n.treeOrder=e},setDrawNodeBubbles(e){n.drawNodeBubbles=e},setDrawNodeLabels(e){n.drawNodeLabels=e},setShowTreeOverview(e){n.showTreeOverview=e},setOverviewHeight(e){n.overviewHeight=Math.round(e)},setDrawLabels(e){n.drawLabels=e}}))}var vc="ARNDCQEGHILKMFPSTWYVBZX*",vm=[[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]],Sc=vc.length,Sm=Int8Array.from(vm.flat()),to=new Int8Array(128).fill(-1);for(let n=0;n<Sc;n++){let e=vc[n];to[e.charCodeAt(0)]=n,to[e.toLowerCase().charCodeAt(0)]=n}var on=-2;function wc(n,e){if(e>=n.length)return on;let t=n.charCodeAt(e);return t-45>>>0<=1?on:t<128?to[t]:-1}function eo(n,e){return n<0||e<0?-4:Sm[n*Sc+e]}function Mm(n,e){let t=Math.max(n.length,e.length),o=0,r=0,i=0;for(let l=0;l<t;l++){let c=wc(n,l),u=wc(e,l),d=c===on,h=u===on;d&&h||(o++,!(d||h)&&(r+=eo(c,u),i+=Math.max(eo(c,c),eo(u,u))))}if(o===0||i<=0)return 1;let s=r/i,a=Math.max(.01,Math.min(1,s));return-Math.log(a)}function xm(n){let e=n.length,t=[];for(let o=0;o<e;o++){t[o]=[];for(let r=0;r<e;r++)o===r?t[o][r]=0:r<o?t[o][r]=t[r][o]:t[o][r]=Mm(n[o][1],n[r][1])}return t}function Cm(n,e){let t=n.length;if(t<2)return{name:e[0]};if(t===2){let a=n[0][1];return{left:{name:e[0]},right:{name:e[1]},leftLength:a/2,rightLength:a/2}}let o=[];for(let a=0;a<t;a++)o[a]=[...n[a]];let r=e.map(a=>({name:a})),i=t;for(;i>2;){let a=[];for(let M=0;M<r.length;M++)r[M]!==void 0&&a.push(M);let l=new Map;for(let M of a){let x=0;for(let E of a)M!==E&&(x+=o[M][E]);l.set(M,x)}let c=1/0,u=-1,d=-1;for(let M=0;M<a.length;M++)for(let x=M+1;x<a.length;x++){let E=a[M],v=a[x],L=(i-2)*o[E][v]-l.get(E)-l.get(v);L<c&&(c=L,u=E,d=v)}let h=o[u][d],f=l.get(u),g=l.get(d),p=h/2+(f-g)/(2*(i-2)),w=h-p;p=Math.max(0,p),w=Math.max(0,w);let C={left:r[u],right:r[d],leftLength:p,rightLength:w};for(let M of a)if(M!==u&&M!==d){let x=(o[u][M]+o[d][M]-h)/2;o[u][M]=Math.max(0,x),o[M][u]=Math.max(0,x)}r[d]=void 0,r[u]=C,i--}let s=[];for(let a=0;a<r.length;a++)r[a]!==void 0&&s.push(a);if(s.length===2){let a=s[0],l=s[1],c=o[a][l];return{left:r[a],right:r[l],leftLength:c/2,rightLength:c/2}}return r[s[0]]}function bc(n,e){return e===void 0?n:`${n}:${e.toFixed(6)}`}function ym(n){let e=[],t=[n];for(;t.length>0;){let r=t.pop();e.push(r),r.left&&t.push(r.left),r.right&&t.push(r.right)}let o=new Map;for(let r=e.length-1;r>=0;r--){let i=e[r];if(i.name!==void 0&&!i.left&&!i.right)o.set(i,`'${i.name.replaceAll("'","''")}'`);else{let s=i.left?bc(o.get(i.left),i.leftLength):"",a=i.right?bc(o.get(i.right),i.rightLength):"";o.set(i,`(${s},${a})`)}}return o.get(n)}function Mc(n){if(n.length<2)throw new Error("Need at least 2 sequences to build a tree");let e=n.map(r=>r[0]),t=xm(n),o=Cm(t,e);return ym(o)+";"}var Am={$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 oo(n,e){let t=1,o=e+1;for(;o<n.length&&t>0;)n[o]==="{"?t++:n[o]==="}"&&t--,o++;return t===0?o:-1}function no(n){let e=[],t=0;for(;t<n.length;){let o=n.indexOf("{",t);if(o===-1)break;let r=oo(n,o);if(r===-1)break;e.push(n.slice(o+1,r-1).trim()),t=r}return e}function Tm(n,e){let t=n.indexOf("{",e);if(t===-1)return;let o=oo(n,t);return o===-1?void 0:n.slice(t+1,o-1).trim()}function xc(n){let e=n.replace(/\s+/g," ").replace(/\s*{\s*/g,"{").replace(/\s*}\s*/g,"}").replace(/\s*,\s*/g,",").replace(/\s*::\s*=\s*/g,"::=").replace(/^.*?::=/,""),t=Em(e),{fdict:o,nodes:r}=t;if(o===void 0||r===void 0)throw new Error(`invalid BioTreeContainer ASN.1: missing '${o===void 0?"fdict":"nodes"}' section`);let i=Object.fromEntries(no(o).flatMap(s=>{let a=Lm(s);return a?[[a.id,Am[a.name]||a.name]]:[]}));return no(r).flatMap(s=>{let a=Rm(s);if(!a)return[];let{features:l=[],...c}=a;return[{...c,...Object.fromEntries(l.map(u=>[i[u.featureid],u.value]))}]})}function Em(n){let e={},t=n.trim();t.startsWith("{")&&t.endsWith("}")&&(t=t.slice(1,-1).trim());let o=0;for(;o<t.length;){for(;o<t.length&&/\s/.test(t[o]);)o++;if(o>=t.length)break;let r=o;for(;o<t.length&&/\w/.test(t[o]);)o++;if(o>=t.length||t[o]!==" "&&t[o]!=="{"){o=t.indexOf(",",o),o=o===-1?t.length:o+1;continue}let i=t.slice(r,o).trim();for(;o<t.length&&/\s/.test(t[o]);)o++;if(o>=t.length||t[o]!=="{"){o=t.indexOf(",",o),o=o===-1?t.length:o+1;continue}let s=oo(t,o);if(s===-1)break;e[i]=t.slice(o+1,s-1).trim(),o=t.indexOf(",",s),o=o===-1?t.length:o+1}return e}function Lm(n){let e=/id\s+(\d+)/.exec(n),t=/name\s+"((?:[^"\\]|\\.)*)"/s.exec(n);return!e||!t?null:{id:parseInt(e[1],10),name:t[1].replace(/\\"/g,'"').replace(/\\\\/g,"\\")}}function Rm(n){let e=/id\s+(\d+)/.exec(n);if(!e)return null;let t=/parent\s+(\d+)/.exec(n),o=n.indexOf("features"),r=o!==-1?Tm(n,o):void 0;return{id:parseInt(e[1],10),...t?{parent:parseInt(t[1],10)}:{},features:r?no(r).flatMap(i=>{let s=km(i);return s?[s]:[]}):[]}}function km(n){let e=/featureid\s+(\d+)/.exec(n),t=/value\s+"((?:[^"\\]|\\.)*)"/s.exec(n);return!e||!t?null:{featureid:parseInt(e[1],10),value:t[1].replace(/\\"/g,'"').replace(/\\\\/g,"\\")}}var Cc={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"},ro=[...new Set(Object.values(Cc))],Fm=Math.log2(ro.length),yc=new Int8Array(Br).fill(-1);for(let[n,e]of Object.entries(Cc))yc[zr(n)]=ro.indexOf(e);function Ac(n){let e=new Float64Array(ro.length);return Array.from({length:n.numColumns},(t,o)=>{let r=n.total(o),i=0;if(r){e.fill(0);let s=0;if(n.forEachResidue(o,(a,l)=>{let c=yc[a];c>=0&&(e[c]+=l,s+=l)}),s>0){let a=0;for(let c of e)if(c>0){let u=c/s;a-=u*Math.log2(u)}let l=(r-s)/r;i=Math.max(0,1-a/Fm)*(1-l)}}return i})}function Tc(n){let e=[],t=new Map,o=[n];for(;o.length>0;){let r=o.pop();e.push(r);for(let i of r.children??[])t.set(i,r),o.push(i)}return{order:e,parents:t}}function Ec(n){return n.some(e=>e.length!==void 0)}function Hm(n,e){return n.children?.length===2?n.children.find(t=>t!==e):void 0}function rn(n,e,t){let{order:o,parents:r}=Tc(n);if(!r.has(e))return n;let i=Ec(o),s=r.get(e)===n?Hm(n,e):void 0,a=(e.length??0)+(s?.length??0),l=Math.min(Math.max(t??a/2,0),a),c=h=>i?h:void 0,u=[e];for(let h=r.get(e);h;h=r.get(h))u.push(h);let d;for(let h=u.length-1;h>=1;h--){let f=u[h],g=u[h-1],p=f.children.filter(w=>w!==g);if(d&&p.push(d),p.length===0)d=void 0;else if(h===u.length-1&&p.length===1){let w=p[0];d={...w,length:c((w.length??0)+(g.length??0)-(h===1?l:0))}}else d={...f,name:h===1?void 0:g.name,children:p,length:c((g.length??0)-(h===1?l:0))}}return{children:[{...e,length:c(l)},...d?[d]:[]]}}function Lc(n){let{order:e,parents:t}=Tc(n),o=e.filter(p=>!p.children?.length);if(o.length<2)return n;let r=Ec(e),i=p=>r?p.length??0:1;function s(p){let w=new Map([[p,0]]),C=new Map,M=[p];for(;M.length>0;){let x=M.pop(),E=w.get(x),v=t.get(x);v&&!w.has(v)&&(w.set(v,E+i(x)),C.set(v,x),M.push(v));for(let L of x.children??[])w.has(L)||(w.set(L,E+i(L)),C.set(L,x),M.push(L))}return{dist:w,via:C}}function a(p){return o.reduce((w,C)=>p.get(C)>p.get(w)?C:w)}let l=a(s(o[0]).dist),{dist:c,via:u}=s(l),d=a(c);if(d===l)return n;let h=c.get(d)/2,f=d,g=u.get(f);for(;c.get(g)>h;)f=g,g=u.get(f);return t.get(f)===g?rn(n,f,c.get(f)-h):rn(n,g,h-c.get(g))}function io(n,e){let t=0,o=n;for(;t<o;){let r=t+o>>>1;e(r)?o=r:t=r+1}return t}function Rc(n,e){return e+io(n.length,t=>n[t]-t>e)}function kc(n,e){let t=Fc(n,e);return n[t]===e?void 0:e-t}function Fc(n,e){return io(n.length,t=>n[t]>=e)}function $e(n,e){return e-Fc(n,e)}function Hc(n,e){if(!n)return;let t=io(n.length,o=>n[o]>=e);return n[t]===e?t:void 0}function an(n,e){let t=[...new Set(e)].sort((l,c)=>l.localeCompare(c)),{map:o,palette:r}=n??{},i=o??tn(t,ic(r)),s=new Set(t),a=o?Object.keys(o).filter(l=>s.has(l)):t;return{kind:"categorical",colorOf:l=>i[l],legend:a.map(l=>({id:l,label:l,color:i[l]}))}}function Pc(n){let e=new Int32Array(n.length),t=0;for(let o=0;o<n.length;o++)n.charCodeAt(o)-45>>>0<=1||(e[t++]=o);return e.slice(0,t)}var Dc=100;function Ic(n){let e=[],t=0,o=[[n,0]];for(let r=o.pop();r;r=o.pop()){let[i,s]=r,{children:a}=i;if(a.length>0)for(let l of a)o.push([l,s+1]);else e.push(i.name),t=Math.max(t,s)}return{names:e,depth:t}}function Oc(n,e){let t=[];for(let s of n)t[s.length]=(t[s.length]??0)+1;let o=t.length;for(let s=0;o>0&&s<Dc;)o--,s+=t[o]??0;let r=0,i=0;for(let s of n)(s.length>o||s.length===o&&i++<Dc)&&(r=Math.max(r,jr(s,e)));return r}var Pm=/[\s(),:;[\]']/;function Dm(n){return Pm.test(n)?`'${n.replaceAll("'","''")}'`:n}function Nc(n){let e=new Map;for(let t of Po(n).reverse()){let{id:o,name:r,length:i}=t.data,s="";if(t.children){s=`(${t.children.map(a=>e.get(a)).join(",")})`;for(let a of t.children)e.delete(a)}t.children&&r===o||(s+=Dm(r)),i!==void 0&&(s+=`:${i}`),e.set(t,s)}return`${e.get(n)};`}var zc={">":"<",")":"(","]":"[","}":"{"},Im=new Set(Object.values(zc));function Bc(n){let e=new Map,t=[],o=(i,s)=>{let a=e.get(i);a?a.push(s):e.set(i,[s])},r=(i,s,a)=>{let l=e.get(i)?.pop();l!==void 0&&t.push({start:l,end:s,pseudoknot:a})};for(let i=0;i<n.length;i++){let s=n[i],a=zc[s];Im.has(s)?o(s,i):a?r(a,i,!1):s>="A"&&s<="Z"?o(s,i):s>="a"&&s<="z"&&r(s.toUpperCase(),i,!0)}return t.sort((i,s)=>i.start-s.start)}function Ym(n){return n.startsWith("BioTreeContainer")?dc(xc(n)):No(n.startsWith("SEQ")?Ho(n).tree:n)}var jm={bar:40,logo:80,arc:50,ruler:20},_c=new Set(["bar","logo","arc"]),Km=new Set(["sequence-logo","position-ruler"]),Um=n=>`own:${n}`,Xm="#4e79a7",qm="#e15759",Zm="#d9d9d9",Jm=.1;function Vc(n,e){return n.width??(n.kind==="features"?Sr:e.rowHeight)}function Qm(n){if(typeof n!="object"||n===null)return;let e={};for(let[t,o]of Object.entries(n))typeof o=="string"?e[t]=o:(typeof o=="number"||typeof o=="boolean")&&(e[t]=String(o));return e}function ao(n,e,t){let o=new Map;for(let[r,i]of Object.entries(n)){let s=i?.[e],a=s===void 0?void 0:t(s);a&&o.set(r,a)}return o}function $c(n,e,t){let o=new Map,r=i=>{let s=o.get(i);if(s!==void 0)return s;let a=Ar(i);return o.set(i,a),a};return new Map(n.map(i=>{let s=e?xe(i,e.field):void 0,a=i.color??(s===void 0?void 0:e.colorOf(s))??(e?Zm:t[i.accession]);return[i,{fill:a,stroke:r(a)}]}))}function Yc(n,e){let t=new Map;for(let o of n){let r=xe(o,e);r!==void 0&&t.set(o,r)}return t}function eh(n){let e=n.map(([i,s])=>{let a=lt(s.filter(c=>c.annotation.strand===-1)),l=lt(s.filter(c=>c.annotation.strand!==-1));return{name:i,forward:l,reverse:a}}),t=Math.max(0,...e.map(i=>i.forward[0]?.laneCount??0)),o=Math.max(0,...e.map(i=>i.reverse[0]?.laneCount??0)),r=t+o;return new Map(e.map(({name:i,forward:s,reverse:a})=>[i,[...s.map(l=>({...l,lane:t-1-l.lane,laneCount:r})),...a.map(l=>({...l,lane:t+l.lane,laneCount:r}))]]))}function jc(n,e){return n.position==="strandpile"?eh(e):new Map(e.map(([t,o])=>[t,lt(o)]))}function th({panel:n,width:e,colWidth:t,domainBands:o,annotationsByRow:r,shifts:i}){if(n.x==="column")return jc(n,[...o].map(([d,h])=>[d,h.map(f=>({...f,xStart:f.startCol*t,xEnd:f.endCol*t}))]));let s=Object.entries(r).map(([d,h])=>{let f=i?.get(d)??0;return[d,h.map(g=>({annotation:g,start:g.start-1+f,end:g.end+f}))]}),a=1/0,l=-1/0;for(let[,d]of s)for(let{start:h,end:f}of d)a=Math.min(a,h),l=Math.max(l,f);let c=Math.max(1,e-1),u=l>a?c/(l-a):0;return jc(n,s.map(([d,h])=>[d,h.map(({annotation:f,start:g,end:p})=>({annotation:f,xStart:(g-a)*u,xEnd:(p-a)*u,startCol:g,endCol:p-(p-g)*Jm}))]))}function Kc(n,e,t,o){let r=a=>a.map(l=>xe(l,n)).filter(H.notEmpty),i=an(e,r(t)),s=new Set(r(o));return{field:n,...i,legend:i.legend.filter(a=>s.has(a.id))}}var Uc=new WeakMap;function nh(n){let e=Uc.get(n);return e===void 0&&(e=JSON.stringify(n).length,Uc.set(n,e)),e}function au(n){return(n??[]).map(nh)}function oh(n,e){let t=au(n),o=n?.filter((r,i)=>t[i]<=e);return o?.length?{columnTracks:o}:{}}var rh=new Set(["id","type","height","drawMsaLetters","scrollZoom","scrollZoomAxis","bgColor","colorSchemeName","customColorScheme","showColumnStats","drawLabels","labelsAlignRight","treeAreaWidth","treeWidth","showBranchLen","treeOrder","drawTree","drawNodeBubbles","drawNodeLabels","showTreeOverview","overviewHeight","turnedOffTracks","trackHeights","hideGaps","allowedGappyness","subFeatureRows","showDomainLegend"]);function Xc(n,e,t){return n.get(e)??(t||Km.has(e))}var ih=new Set(["collapse","focus","rotate"]),qc=[],Zc=[];function ah(n,e,t,o){if(n.range){let[l,c]=n.range.map(d=>t.get(d)?o.get(d):void 0);if(l===void 0||c===void 0)return;let u=l<=c?[l,c]:[c,l];return u[1]-u[0]+1===n.tips?{rows:u}:void 0}let r=n.mrca?Ct(e,n.mrca,t):void 0;if(!r)return;let i=fe(r);if(i.length!==n.tips)return;let s=1/0,a=-1/0;for(let l of i){let c=o.get(l.data.name);c!==void 0&&(s=Math.min(s,c),a=Math.max(a,c))}return s<=a?{rows:[s,a],nodeId:r.data.id}:void 0}function Jc(n,e,t){let o=vn(e);return n.flatMap(r=>{let i=ah(r,e,o,t),s=ih.has(r.mark);return i&&!(s&&i.nodeId===void 0)?[{...i,mark:r.mark,color:wn(r.color??wr,br),markColor:r.color,label:r.label}]:[]})}var sh={input:void 0,branchLength:(n,e)=>(n.data.length??1)-(e.data.length??1),ladderize:(n,e)=>n.value-e.value,ladderizeReverse:(n,e)=>e.value-n.value};function so(n,{collapsed:e,rotated:t,order:o,showOnly:r}){let i=Oe(n,a=>a.children);Io(i,a=>a.children.length>0?0:1);let s=sh[o];if(s&&Oo(i,s),t.length>0){let a=new Set(t);Do(i,l=>{a.has(l.data.id)&&l.children?.reverse()})}if(r){let a=Ie(i,l=>l.data.id===r);a&&(i=a)}for(let a of e){let l=Ie(i,c=>c.data.id===a);l&&(l.children?ti(l):l.parent?.children&&(l.parent.children=l.parent.children.filter(c=>c.data.id!==a)))}return i}function su(n,e){let t=vn(n),o=Ct(n,e,t);if(o!==n)return o;let r=new Set(e),i=fe(n).map(a=>a.data.name).filter(a=>!r.has(a)),s=Ct(n,i,t);return s===n?void 0:s}function lh(n,e){let t=new Map;for(let i of lu(n).reverse())t.set(i,{name:i.name===i.id?void 0:i.name,length:i.length,children:i.children.map(s=>t.get(s))});let o=t.get(n);if(e==="midpoint")return dt(Lc(o));let r=su(Oe(n,i=>i.children),e.outgroup);return r?dt(rn(o,t.get(r.data))):n}function Qc(n){return[Math.round(n.xMin-.5),Math.round(n.xMax-.5)]}var eu=new Set(["featureFill","featureLabel"]),tu=new WeakMap;function nu(n){return n.rowEnd-n.rowStart===n.structEnd-n.structStart}function ou(n,e){return n-e>.5}function ch(n,e){return!!n?.some(([t,o])=>e>=t&&e<=o)}function ru(n){let e=[];for(let t of n){let o=e.at(-1);o&&t<=o[1]+1?o[1]=Math.max(o[1],t):e.push([t,t])}return e}function uh(n){let[e]=n;return e!==void 0&&n.every(t=>t===e)?e:void 0}function lu(n){let e=[],t=[n];for(;t.length>0;){let o=t.pop();e.push(o);for(let r of o.children)t.push(r)}return e}function dh({maxInlineSnapshotBytes:n=wt}={}){return b.types.compose(fc(),gc(),pc(),b.types.model("MsaView",{id:Pe.ElementId,showDomains:k(b.types.boolean,!0),showDomainLegend:k(b.types.boolean,!0),hideGaps:k(b.types.boolean,!0),allowedGappyness:k(b.types.number,100),subFeatureRows:k(b.types.boolean,!1),type:b.types.literal("MsaView"),drawMsaLetters:k(b.types.boolean,Xo),scrollZoom:k(b.types.boolean,qo),scrollZoomAxis:k(b.types.enumeration("ScrollZoomAxis",[...Zo]),Jo),height:k(b.types.number,550),rowHeight:k(b.types.number,16),scrollY:k(b.types.number,0),scrollX:k(b.types.number,0),colWidth:k(b.types.number,12),treeFilehandle:b.types.maybe(Pe.FileLocation),msaFilehandle:b.types.maybe(Pe.FileLocation),treeMetadataFilehandle:b.types.maybe(Pe.FileLocation),gffFilehandle:b.types.maybe(Pe.FileLocation),currentAlignment:k(b.types.number,0),collapsed:k(b.types.array(b.types.string),[]),rotated:k(b.types.array(b.types.string),[]),treeRoot:b.types.frozen(),showOnly:b.types.maybe(b.types.string),turnedOffTracks:k(b.types.map(b.types.boolean),{}),trackHeights:k(b.types.map(b.types.number),{}),columnTracks:k(b.types.array(b.types.frozen()),[]),residueMappings:k(b.types.array(b.types.frozen()),[]),data:b.types.optional(mc(n),{}),turnedOffFeatures:k(b.types.map(b.types.boolean),{}),relativeTo:b.types.maybe(b.types.string),highlightColumns:b.types.frozen(),highlights:k(b.types.array(b.types.frozen()),[]),features:k(b.types.array(b.types.frozen()),[]),selection:b.types.frozen(),region:b.types.frozen(),clades:k(b.types.array(b.types.frozen()),[]),encodings:k(b.types.array(b.types.frozen()),[]),rowPanels:k(b.types.array(b.types.frozen()),[])})).volatile(()=>({headerHeight:0,hideHeader:!1,status:void 0,highResScaleFactor:typeof window>"u"?1:window.devicePixelRatio,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(e=>({drawRelativeTo(t){e.relativeTo=t},setHideGaps(t){e.hideGaps=t},setAllowedGappyness(t){e.allowedGappyness=t},setLoadingMSA(t){e.loadingMSA=t},setLoadingTree(t){e.loadingTree=t},setWidth(t){e.volatileWidth=t},setHighResScaleFactor(t){e.highResScaleFactor=t},setHeight(t){e.height=t},setError(t){e.error=t},addWarning(t){e.loadWarnings.includes(t)||(e.loadWarnings=[...e.loadWarnings,t])},setHostCarriesData(t){e.hostCarriesData=t},setMousePos(t,o){e.mouseCol=t,e.mouseRow=o},setHighlightedColumns(t){e.highlightedColumns=t},setRegion(t){e.region=t},setHighlights(t){e.highlights.replace(t)},setFeatures(t){e.features.replace(t)},setSelection(t){let o=t&&{start:Math.min(t.start,t.end),end:Math.max(t.start,t.end),...t.rows?{rows:t.rows}:{}};(0,G.compareStructural)(o,e.selection)||(e.selection=o)},clearSelection(){this.setSelection(void 0)},setClades(t){e.clades.replace(t)},applyHighlight(t,o){e.transientHighlights={...e.transientHighlights,[t]:o}},clearHighlight(t){if(t in e.transientHighlights){let{[t]:o,...r}=e.transientHighlights;e.transientHighlights=r}},setShowDomains(t){e.showDomains=t},setShowDomainLegend(t){e.showDomainLegend=t},setSubFeatureRows(t){e.subFeatureRows=t},setMouseClickPos(t,o){e.mouseClickCol=t,e.mouseClickRow=o},setRowHeight(t){e.rowHeight=t},setColWidth(t){e.colWidth=t},setCurrentAlignment(t){t!==e.currentAlignment&&(0,G.transaction)(()=>{e.currentAlignment=t,e.collapsed.clear(),e.rotated.clear(),this.setShowOnly(void 0),this.drawRelativeTo(void 0),e.scrollX=0,e.scrollY=0})},toggleCollapsed(t){e.collapsed.includes(t)?e.collapsed.remove(t):e.collapsed.push(t)},toggleRotated(t){e.rotated.includes(t)?e.rotated.remove(t):e.rotated.push(t)},clearRotated(){e.rotated.clear()},setTreeRoot(t){(0,G.compareStructural)(e.treeRoot,t)||(0,G.transaction)(()=>{e.treeRoot=t,e.collapsed.clear(),e.rotated.clear(),this.setShowOnly(void 0)})},setShowOnly(t){e.showOnly=t},setData(t){e.data=(0,b.cast)(t)},setMSAFilehandle(t){e.msaFilehandle=(0,b.cast)(t)},setTreeFilehandle(t){e.treeFilehandle=(0,b.cast)(t)},setTreeMetadataFilehandle(t){e.treeMetadataFilehandle=(0,b.cast)(t)},setGFFFilehandle(t){e.gffFilehandle=(0,b.cast)(t)},setMSA(t){e.data.setMSA(t)},setTree(t){e.data.setTree(t)},setTreeMetadata(t){e.data.setTreeMetadata(t)},setGFF(t){e.data.setGFF(t)}})).views(e=>({get hideGapsEffective(){return e.hideGaps&&(e.collapsed.length>0||e.allowedGappyness<100)},get realAllowedGappyness(){return this.hideGapsEffective?e.allowedGappyness:100},get allAnnotations(){return e.features.length>0?[...e.annotations,...sc(e.features)]:e.annotations},get actuallyShowDomains(){return e.showDomains&&this.allAnnotations.length>0},get hostRestoresData(){return e.hostCarriesData},get viewInitialized(){return e.volatileWidth!==void 0},get width(){if(e.volatileWidth===void 0)throw new Error("not initialized");return e.volatileWidth}})).views(e=>({get colorScheme(){let{customColorScheme:t,colorSchemeName:o}=e;return t?Xi(t):nt[o]??nt[ft]},get dynamicColorSchemeName(){let{customColorScheme:t,colorSchemeName:o}=e;return!t&&o.includes("dynamic")?o:void 0},get header(){return this.MSA?.getHeader()??{}},get alignmentNames(){return this.MSA?.alignmentNames??[]},get noTree(){return!!this.tree.noTree},get noDomains(){return e.allAnnotations.length===0},get unshareableData(){if(e.hostRestoresData)return[];let{data:t}=e,o=au(e.columnTracks).filter(r=>r>n).reduce((r,i)=>r+i,0);return[["alignment",t.msa,e.msaFilehandle],["tree",t.tree,e.treeFilehandle],["annotations",t.gff,e.gffFilehandle],["row metadata",t.treeMetadata,e.treeMetadataFilehandle]].flatMap(([r,i,s])=>!s&&i&&i.length>n?[{what:r,bytes:i.length}]:[]).concat(o?[{what:"data tracks",bytes:o}]:[]).sort((r,i)=>i.bytes-r.bytes)},menuItems(){return[]},get rowData(){let t=e.data.treeMetadata;if(!t)return{};try{let o=JSON.parse(t);return typeof o=="object"&&o!==null?Object.fromEntries(Object.entries(o).map(([r,i])=>[r,Qm(i)])):{}}catch(o){return console.error("failed to parse rowData",o),{}}},rowDataOf(t){return this.rowData[t]},get rowFields(){let t=new Set;for(let o of Object.values(this.rowData))for(let r of Object.keys(o??{}))t.add(r);return[...t].sort((o,r)=>o.localeCompare(r))},get MSA(){let t=e.data.msa;return t?zo(t,e.currentAlignment,e.msaFormat):null},get numColumns(){return(this.MSA?.getWidth()??0)-this.blanks.length},get inputTree(){let t=e.data.tree;return t?dt(Ym(t)):this.MSA?.getTree()??{noTree:!0,children:[],id:"empty",name:"empty"}},get tree(){let t=this.inputTree;return e.treeRoot&&!t.noTree?lh(t,e.treeRoot):t},get rowNames(){return this.leaves.map(t=>t.data.name)},get rowNamesSet(){return new Map(this.leaves.map((t,o)=>[t.data.name,o]))},get resolvedClades(){return e.clades.length===0?Zc:Jc(e.clades,Oe(this.tree,t=>t.children),this.rowNamesSet)},get cladeGutterWidth(){return Jr(e.clades)},get treeDrawn(){return e.drawTree&&!this.noTree},get treeTips(){return Ic(this.tree)},get maxTipLabelWidth(){return Oc(this.treeTips.names.map(t=>this.rowDataOf(t)?.genome||t),tr)},get labelColumnWidth(){return e.drawLabels?this.maxTipLabelWidth+(this.treeDrawn?10:6):0},get fittedTreeAreaWidth(){let t=e.marginLeft+this.cladeGutterWidth,o=this.treeDrawn?e.treeWidth??(0,H.clamp)(this.treeTips.depth*sr,pt,ar):0,r=t+o+this.labelColumnWidth,i=e.viewInitialized?this.numColumns>0?e.width*lr:e.width-this.rowPanelsWidth-e.resizeHandleWidth:1/0,s=Math.max(i,t+Math.min(o,pt));return Math.ceil(Math.min(r,s))},get effectiveTreeAreaWidth(){return e.treeAreaWidth??this.fittedTreeAreaWidth},get effectiveTreeWidth(){let t=this.showTreeText?this.labelColumnWidth:0;return e.treeWidth??Math.max(pt,Math.floor(this.effectiveTreeAreaWidth-e.marginLeft-this.cladeGutterWidth-t))},get showTreeText(){return e.drawLabels&&e.rowHeight>=gn},get mouseOverRowName(){let{mouseRow:t}=e;return t===void 0?void 0:this.leaves[t]?.data.name},get hoveredInsertion(){let{mouseCol:t,mouseRow:o}=e;if(t!==void 0&&o!==void 0){let r=this.leaves[o]?.data.name;if(r){let i=this.insertionPositions.get(r)?.find(s=>s.pos===t);if(i)return{rowName:r,col:t,letters:i.letters}}}},get root(){return so(this.tree,{collapsed:e.collapsed,rotated:e.rotated,order:e.treeOrder,showOnly:e.showOnly})},get treeNewick(){return Nc(so(this.tree,{collapsed:[],rotated:e.rotated,order:e.treeOrder}))},get treeOverviewHeight(){return e.showTreeOverview?e.overviewHeight:0},get treeOverviewLayout(){if(!e.showTreeOverview)return;let t=so(this.tree,{collapsed:e.collapsed,rotated:e.rotated,order:e.treeOrder}),o=fe(t).length;Qr(t,o,1);let r=Math.max(t.data.length||0,0),i=oi(t)-r;return ri(t,-r,i?1/i:0),{root:t,numTips:o,maxDepthToLeaf:ni(t),showBranchLen:e.showBranchLen&&i>0}},get treeOverviewClades(){let t=this.treeOverviewLayout;if(!t||e.clades.length===0)return Zc;let o=new Map(fe(t.root).map((r,i)=>[r.data.name,i]));return Jc(e.clades,t.root,o)},get treeOverviewFocusRows(){let t=this.treeOverviewLayout;if(!t||!e.showOnly)return;let o=Ie(t.root,r=>r.data.id===e.showOnly);return o?Qc(o):void 0},treeOverviewHit(t){let o=this.treeOverviewLayout;if(!o)return;let{root:r,numTips:i}=o,s=i/e.overviewHeight,a=(0,H.clamp)(Math.floor(t*s),0,i-1),l=(0,H.clamp)(Math.ceil((t+1)*s)-1,a,i-1),c=ii(r,a+.5,l+.5);for(;!c.children&&c.parent;)c=c.parent;return c===r?void 0:{id:c.data.id,rows:Qc(c)}},get rowPanelsWidth(){return(0,H.sum)(e.rowPanels.map(t=>Vc(t,e)))},get rowPanelsHeaderHeight(){return e.rowPanels.length>0?vr:0},get msaAreaWidth(){return e.width-this.effectiveTreeAreaWidth-this.rowPanelsWidth-e.resizeHandleWidth},get treeAreaWidthMinusMargin(){return this.effectiveTreeAreaWidth-e.marginLeft-this.cladeGutterWidth},get blanks(){let{hideGapsEffective:t,realAllowedGappyness:o}=e;if(!t)return[];let r=this.leaves.map(u=>this.MSA?.getRow(u.data.name)).filter(H.notEmpty);if(r.length===0)return[];let i=this.MSA?.getWidth()??0,s=r.length,a=Math.ceil(o/100*s),l=new Uint32Array(i);for(let u=0;u<s;u++){let d=r[u],h=d.length;for(let f=0;f<i;f++)(f>=h||d.charCodeAt(f)-45>>>0<=1)&&l[f]++}let c=[];for(let u=0;u<i;u++)l[u]>=a&&c.push(u);return c},get insertionPositions(){let{blanks:t,rows:o}=this;if(t.length===0)return new Map;let r=new Map;for(let[i,s]of o){let a=Er(t,s);a.length>0&&r.set(i,a)}return r},get rows(){let t=this.MSA;return this.leaves.map(o=>[o.data.name,t?.getRow(o.data.name)]).filter(o=>!!o[1])},get numRows(){return this.leaves.length},seqPosIndex(t){let o=this.MSA;if(!o)return;let r=tu.get(o);r||(r=new Map,tu.set(o,r));let i=r.get(t);if(!i){let s=o.getRow(t);if(!s)return;i=Pc(s),r.set(t,i)}return i},get rowMap(){let t=this.MSA;return new Map(t?.getNames().map(o=>[o,t.getRow(o)]).filter(([,o])=>!!o))},get columns(){let t=this.columns2d;return new Map(this.rows.map((o,r)=>[o[0],t[r]]))},get columns2d(){let{hideGapsEffective:t}=e;return this.rows.map(([,o])=>(t?St(this.blanks,o):o).toUpperCase())},get fontSize(){return er(e.rowHeight)},get colStats(){return Wr(this.columns2d,this.numColumns)},get sequenceType(){let t=this.colStats.lettersPresent,o=new Set(["A","C","G","T","N"]),r=new Set(["A","C","G","U","N"]),i=t.size>0&&[...t].every(a=>o.has(a)),s=t.size>0&&[...t].every(a=>r.has(a));return i?"dna":s?"rna":"amino"},get colConsensus(){let{colStats:t}=this;return Array.from({length:t.numColumns},(o,r)=>{let i=t.total(r),s=0,a="";t.forEachResidue(r,(c,u)=>{u>s&&(s=u,a=Nr(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:t}=this;return Array.from({length:t.numColumns},(o,r)=>ec(t,r))},get conservation(){let{colStats:t,alphabetMaxBits:o}=this;return Array.from({length:t.numColumns},(r,i)=>{let s=t.total(i),a=t.gapCount(i);return s>a?Math.max(0,1-t.entropy(i)/o)*(1-a/s):0})},get alphabetMaxBits(){return Gr(this.sequenceType)},get propertyConservation(){return this.sequenceType==="amino"?Ac(this.colStats):[]},get treeLayout(){let t=()=>this.effectiveTreeWidth;return ei(this.root,{get rowHeight(){return e.rowHeight},get treeWidth(){return t()}})},get hierarchy(){return this.treeLayout.root},get totalHeight(){return this.leaves.length*e.rowHeight},get leaves(){return this.treeLayout.leaves},get rootToTipLength(){return this.treeLayout.rootToTipLength},get maxBranchLength(){return this.rootToTipLength?this.effectiveTreeWidth:0},get pxPerBranchLength(){let t=this.rootToTipLength;return this.showBranchLenEffective&&t?this.effectiveTreeWidth/t:0},get maxDepthToLeaf(){return this.treeLayout.root.depthToLeaf},get allBranchesLength0(){return this.rootToTipLength===0},get showBranchLenEffective(){return this.allBranchesLength0?!1:e.showBranchLen}})).views(e=>({get totalWidth(){return e.numColumns*e.colWidth}})).views(e=>({get showMsaLetters(){return e.drawMsaLetters&&e.rowHeight>=gn&&e.colWidth>=Qo&&e.colWidth>e.rowHeight/2}})).views(e=>{let t=new WeakMap;return{get columnTrackContent(){let{MSA:o,blanks:r,hideGapsEffective:i}=e,s=o?.getWidth()??0,a=(u,d,h)=>{if(!u.row)return d;let f=Array.from({length:s},()=>h),g=e.seqPosIndex(u.row);return d.forEach((p,w)=>{let C=g?.[w];C!==void 0&&(f[C]=p)}),f},l=u=>i?Tr(r,u):u,c=(u,d)=>{let h=u.row?e.seqPosIndex(u.row)?.[d-1]:d-1;if(!(h===void 0||h<0||h>=s))return i?$e(r,h):h};return new Map(e.columnTracks.map(u=>{if(u.kind==="arc"){let h=(u.arcs??[]).map(f=>{let g=c(u,Math.min(f.start,f.end)),p=c(u,Math.max(f.start,f.end));return g!==void 0&&p!==void 0&&g<p?{start:g,end:p,color:f.color}:void 0}).filter(H.notEmpty);return[u.id,{arcs:h}]}if(u.kind==="bar"){let h=u.max??1,f=l(a(u,u.values??[],0)).map(g=>Math.min(1,Math.max(0,g/h)));return[u.id,{values:f}]}let d=l(a(u,(u.data??"").split("")," "));return[u.id,{data:d.join("")}]}))},trackHeight(o,r=o,i){return e.trackHeights.get(r)??i??jm[o]??e.rowHeight},columnTrackModel(o){let r=t.get(o);return r||(r=(0,G.computed)(()=>{let i=_c.has(o.kind)?Um(o.id):void 0,s=this.columnTrackContent.get(o.id);return{model:{id:o.id,name:o.name,kind:o.kind,heightKey:i,height:this.trackHeight(o.kind,i,o.height),barColor:o.color,arcColor:o.color,customColorScheme:o.colors,data:s?.data,arcs:s?.arcs},ReactComponent:ct}}),t.set(o,r)),r.get()},get columnTrackModels(){return e.columnTracks.map(o=>this.columnTrackModel(o))}}}).views(e=>({get secondaryStructureConsensus(){return e.MSA?.secondaryStructureConsensus},get secondaryStructureArcs(){let{blanks:t,hideGapsEffective:o}=e,r=this.secondaryStructureConsensus;if(r)return Bc(o?St(t,r):r).map(({start:i,end:s,pseudoknot:a})=>({start:i,end:s,color:a?qm:Xm}))},get adapterTrackModels(){let{MSA:t,hideGapsEffective:o,blanks:r}=e,i=(t?.tracks??[]).filter(a=>!!a.data);if(i.length===0)return[];let{rowHeight:s}=e;return i.map(a=>({model:{...a,kind:"text",data:o?St(r,a.data):a.data,height:s},ReactComponent:ct}))},get basePairTrackModels(){let t=this.secondaryStructureArcs;return t?.length?[{model:{id:"base-pairs",name:"Base pairs",kind:"arc",heightKey:"arc",height:e.trackHeight("arc"),arcs:t},ReactComponent:ct}]:[]},get computedTrackModels(){return[{id:"conservation",name:"Conservation",kind:"bar",barColor:"gray"},...e.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(t=>({model:{...t,heightKey:_c.has(t.kind)?t.kind:void 0,height:e.trackHeight(t.kind)},ReactComponent:ct}))},get tracks(){return[...this.adapterTrackModels,...this.basePairTrackModels,...e.columnTrackModels,...e.numColumns>0?this.computedTrackModels:[]]},get turnedOnTracks(){return this.tracks.filter(t=>!Xc(e.turnedOffTracks,t.model.id,t.model.defaultOff))},get showHorizontalScrollbar(){return ou(e.totalWidth,e.msaAreaWidth)},visibleColToRowLetter(t,o){return e.rowMap.get(t)?.[this.visibleColToGlobalCol(o)]},visibleColToSeqPos(t,o){return Hc(e.seqPosIndex(t),this.visibleColToGlobalCol(o))},visibleColToSeqPosOneBased(t,o){let r=this.visibleColToSeqPos(t,o);return r!==void 0?r+1:void 0},globalColToVisibleCol(t){let{blanks:o,hideGapsEffective:r}=e;return r?kc(o,t):t},visibleColToGlobalCol(t){let{blanks:o,hideGapsEffective:r}=e;return r?Rc(o,t):t},seqPosToGlobalCol(t,o){let r=e.rowMap.get(t);return r===void 0?void 0:e.seqPosIndex(t)?.[o]??(o===0?0:r.length)},seqEndToGlobalCol(t,o){let r=e.seqPosIndex(t);return r&&r.length>0?r[Math.min(o,r.length-1)]:void 0},seqPosToVisibleCol(t,o){let r=this.seqPosToGlobalCol(t,o);return r===void 0?void 0:this.globalColToVisibleCol(r)},visibleSpan({row:t,start:o,end:r}){let{blanks:i}=e,s=Math.max(1,Math.floor(o)),a=Math.ceil(r),l=s-1,c=Math.min(a,e.MSA?.getWidth()??a)-1;if(t!==void 0){let h=this.seqPosToGlobalCol(t,s-1),f=this.seqEndToGlobalCol(t,a-1);if(h===void 0||f===void 0)return;l=h,c=f}let u=this.globalColToVisibleCol(l)??$e(i,l),d=this.globalColToVisibleCol(c)??$e(i,c)-1;return u<=d?{startCol:u,endCol:d}:void 0},get residueMappingProblems(){let t=[];for(let o of e.residueMappings){let r={row:o.row,structureId:o.structure.id},i=e.seqPosIndex(o.row)?.length;if(i===void 0){t.push({...r,scope:"mapping",reason:"no such row in the alignment"});continue}if(o.rowLength!==void 0&&o.rowLength!==i){t.push({...r,scope:"mapping",reason:`computed against a ${o.rowLength}-residue row; this one has ${i}`});continue}let s=o.segments.find(a=>a.rowEnd>i||a.rowStart<1);if(s){t.push({...r,scope:"mapping",reason:`segment ${s.rowStart}-${s.rowEnd} does not fit a ${i}-residue row`});continue}for(let a of o.segments)nu(a)||t.push({...r,scope:"segment",reason:`segment ${a.rowStart}-${a.rowEnd} maps to ${a.structStart}-${a.structEnd}, which is a different length`})}return t},get usableResidueMappings(){let t=new Set(this.residueMappingProblems.filter(o=>o.scope==="mapping").map(o=>`${o.row}\0${o.structureId}`));return e.residueMappings.filter(o=>!t.has(`${o.row}\0${o.structure.id}`)).map(o=>({...o,segments:o.segments.filter(nu)}))},get mappedStructures(){return this.usableResidueMappings.map(t=>({row:t.row,structure:t.structure}))},structureResidue(t,o,r){let i=[];for(let s of this.usableResidueMappings){if(s.row!==t||r!==void 0&&s.structure.id!==r)continue;let a=s.segments.find(l=>o>=l.rowStart&&o<=l.rowEnd);if(a){let l=a.structStart+(o-a.rowStart);i.push({structure:s.structure,position:l,observed:!ch(s.unobserved,l)})}}return i.length===1?i[0]:void 0},rowResidue(t,o,r){let i=[];for(let s of this.usableResidueMappings){if(s.structure.id!==t||r!==void 0&&s.structure.asymId!==r)continue;let a=s.segments.find(l=>o>=l.structStart&&o<=l.structEnd);a&&i.push({rowName:s.row,seqPos:a.rowStart+(o-a.structStart)})}return i.length===1?i[0]:void 0}})).views(e=>({get treeScaleBar(){return oc(e.pxPerBranchLength,e.effectiveTreeAreaWidth-e.marginLeft*2)},get topBandHeight(){return Math.max(e.showHorizontalScrollbar?e.minimapHeight:0,e.rowPanelsHeaderHeight,e.treeOverviewHeight+(this.treeScaleBar?qe:0))},get msaAreaHeight(){return e.height-this.topBandHeight-e.headerHeight-this.totalTrackAreaHeight},get totalTrackAreaHeight(){return(0,H.sum)(e.turnedOnTracks.map(t=>t.model.height))},get annotationTypes(){let t=new Map;for(let o of e.allAnnotations)t.has(o.accession)||t.set(o.accession,o);return t},get filteredAnnotations(){return e.allAnnotations.filter(t=>!e.turnedOffFeatures.get(t.accession))},get annotationsByRow(){return(0,H.groupBy)(this.filteredAnnotations,t=>t.id)}})).views(e=>({get showVerticalScrollbar(){return ou(e.totalHeight,e.msaAreaHeight)}})).views(e=>({get dataInitialized(){return!!(e.data.msa||e.data.tree)&&!e.error},get blocksX(){return Zn({viewportSize:e.msaAreaWidth,viewportPos:-e.scrollX,blockSize:e.blockSize,mapSize:e.totalWidth})},get blocksY(){return Zn({viewportSize:e.msaAreaHeight,viewportPos:-e.scrollY,blockSize:e.blockSize,mapSize:e.totalHeight})}})).views(e=>({get verticalScrollbarWidth(){return e.showVerticalScrollbar?20:0},get msaCanvasWidth(){return e.msaAreaWidth-this.verticalScrollbarWidth},get maxScrollX(){return Math.min(-e.totalWidth+this.msaCanvasWidth,0)},get blocks2d(){return e.blocksY.flatMap(t=>e.blocksX.map(o=>[o,t]))},get isLoading(){return e.loadingMSA||e.loadingTree},get dataWarnings(){let{annotations:t,rowNamesSet:o}=e;return e.dataInitialized&&t.length>0&&!t.some(r=>o.has(r.id))?[`0 of ${t.length} annotations name a row in this alignment`]:[]},get warnings(){return[...e.loadWarnings,...this.dataWarnings.filter(t=>!e.dismissedWarnings.includes(t))]},get maxScrollY(){return Math.min(-e.totalHeight+e.msaAreaHeight,0)},get wheelZoomAxis(){return e.scrollZoom?e.scrollZoomAxis:"both"}})).actions(e=>({setDrawMsaLetters(t){e.drawMsaLetters=t},clearWarnings(){e.loadWarnings=[],e.dismissedWarnings=e.dataWarnings},setScrollZoom(t){e.scrollZoom=t},setScrollZoomAxis(t){e.scrollZoomAxis=t},setHoveredTreeNode(t){if(t===e.hoveredTreeNode?.nodeId)return;if(!t){e.hoveredTreeNode=void 0;return}let o=Ie(e.hierarchy,r=>r.data.id===t);e.hoveredTreeNode=o?{nodeId:t,descendantNames:fe(o).map(r=>r.data.name)}:void 0},calculateNeighborJoiningTreeFromMSA(){let t=[...e.rowMap];if(t.length<2)throw new Error("Need at least 2 sequences to build a tree");if(t.length>Ee)throw new Error(`Neighbor joining here is capped at ${Ee} sequences and this alignment has ${t.length}. Build the tree with FastTree or IQ-TREE and open it alongside the alignment: https://gmod.org/JBrowseMSA/tutorials/protein_family`);this.replaceTree(Mc(t))},rerootAt(t){let o=Ie(Oe(e.tree,i=>i.children),i=>i.data.id===t);if(!o?.parent)return;let r=su(Oe(e.inputTree,i=>i.children),fe(o).map(i=>i.data.name));if(r){let i=fe(r);e.setTreeRoot({outgroup:[...new Set([i[0].data.name,i.at(-1).data.name])]})}},replaceTree(t){(0,G.transaction)(()=>{e.collapsed.clear(),e.rotated.clear(),e.setShowOnly(void 0),e.setTree(t)})},resetZoom(){e.setColWidth(12),e.setRowHeight(16)},zoomAtCenter(t,o="both"){this.zoomToPos(t,e.msaCanvasWidth/2,e.msaAreaHeight/2,o)},zoomOutHorizontal(){this.zoomAtCenter(.75,"horizontal")},zoomInHorizontal(){this.zoomAtCenter(1.5,"horizontal")},zoomInVertical(){this.zoomAtCenter(1.5,"vertical")},zoomOutVertical(){this.zoomAtCenter(.75,"vertical")},zoomIn(){this.zoomAtCenter(1.5)},zoomOut(){this.zoomAtCenter(.75)},zoomToPos(t,o,r,i="both"){(0,G.transaction)(()=>{let s=(-e.scrollX+o)/e.colWidth,a=(-e.scrollY+r)/e.rowHeight;i!=="vertical"&&(e.colWidth=(0,H.clamp)(e.colWidth*t,mt,Te)),i!=="horizontal"&&(e.rowHeight=(0,H.clamp)(e.rowHeight*t,ht,Te)),e.scrollX=(0,H.clamp)(o-s*e.colWidth,e.maxScrollX,0);let l=r-a*e.rowHeight,c=Math.max(0,-e.maxScrollY),u=e.totalHeight-c,d=u>0?(0,H.clamp)(1-c/u,0,1):1;e.scrollY=(0,H.clamp)(l*(1-d),e.maxScrollY,0)})},doScrollY(t){this.setScrollY(e.scrollY+t)},setScrollY(t){e.scrollY=(0,H.clamp)(t,e.maxScrollY,0)},setAnnotations(t){e.annotations=t},setDomains(t){this.setAnnotations(t?Bo(t):[])},applyGFFText(t){this.setAnnotations(Go(Wo(t)))},doScrollX(t){this.setScrollX(e.scrollX+t)},setScrollX(t){e.scrollX=(0,H.clamp)(t,e.maxScrollX,0)},setColumnTracks(t){e.columnTracks.replace(t)},setRowData(t){e.data.setTreeMetadata(JSON.stringify(t))},setEncodings(t){e.encodings.replace(t)},setRowPanels(t){e.rowPanels.replace(t)},setResidueMappings(t){e.residueMappings.replace(t)},toggleTrack(t){let o=e.MSA?.tracks.find(r=>r.id===t)?.defaultOff;e.turnedOffTracks.set(t,!Xc(e.turnedOffTracks,t,o))},setStatus(t){e.status=t}})).views(e=>({cellAt(t,o){let r=e.visibleColToGlobalCol(t),i=o===void 0?void 0:e.leaves[o]?.data.name;return i===void 0?{column:r+1}:{column:r+1,row:i,residue:e.visibleColToSeqPosOneBased(i,t),letter:e.rowMap.get(i)?.[r]}},get hoveredCell(){let{mouseCol:t,mouseRow:o}=e;return t===void 0?void 0:this.cellAt(t,o)},get clickedCell(){let{mouseClickCol:t,mouseClickRow:o}=e;return t===void 0?void 0:this.cellAt(t,o)},get viewport(){let{scrollX:t,colWidth:o,numColumns:r,viewInitialized:i}=e;if(r===0||!i)return;let{xStart:s,xEnd:a}=Pr({offsetX:-t,blockWidth:e.msaCanvasWidth,colWidth:o}),l=Math.max(0,Math.min(a,r)-1);return{startColumn:e.visibleColToGlobalCol(Math.min(s,l))+1,endColumn:e.visibleColToGlobalCol(l)+1}},get segmentDomainTypes(){return[...e.annotationTypes.values()].filter(t=>fn.has(t.featureType??"")).toSorted((t,o)=>t.start-o.start)},get categoricalDomainTypes(){return[...e.annotationTypes.values()].filter(t=>!fn.has(t.featureType??""))},get fillPalette(){let t=Object.fromEntries(this.segmentDomainTypes.map((r,i)=>[r.accession,pn[i%pn.length]])),o=tn(this.categoricalDomainTypes.map(r=>r.accession));return{...t,...o}},get featureFillEncoding(){return this.resolvedEncodings.find(t=>t.channel==="featureFill")},get featureColors(){return $c(e.filteredAnnotations,this.featureFillEncoding,this.fillPalette)},get featureLabels(){let t=this.resolvedEncodings.find(o=>o.channel==="featureLabel");return t?Yc(e.filteredAnnotations,t.field):void 0},get segmentLabels(){return new Map(this.segmentDomainTypes.map((t,o)=>{let r=/(\d+)\s*$/.exec(t.name);return[t.accession,r?r[1]:`${o+1}`]}))},get visibleDomainTypes(){return this.categoricalDomainTypes.filter(t=>!e.turnedOffFeatures.get(t.accession)).toSorted((t,o)=>t.start-o.start)},get legends(){let{featureFillEncoding:t,fillPalette:o,visibleDomainTypes:r}=this,i=new Map,s=(a,l,c)=>{if(l.length===0)return;let u=a===void 0?"domains":`field:${a}`,d=i.get(u);if(d){let h=new Set(d.entries.map(f=>f.id));d.entries.push(...l.filter(f=>!h.has(f.id)))}else i.set(u,{id:c??(a===void 0?"domains":`rowData-${a}`),title:a??"Domains",entries:[...l]})};e.actuallyShowDomains&&e.numColumns>0&&s(t?.field,t?t.legend:r.map(a=>({id:a.accession,label:a.name,color:o[a.accession]})),"domains");for(let{channel:a,field:l,legend:c}of this.resolvedEncodings)eu.has(a)||s(l,c);for(let{legendTitle:a,legend:l}of this.rowPanelScales)s(a,l);return[...i.values()]},get domainUnderline(){return e.actuallyShowDomains&&!e.bgColor&&!e.subFeatureRows&&e.showMsaLetters},get domainBands(){let{blanks:t}=e,o=new Map;for(let[r,i]of Object.entries(e.annotationsByRow)){let s=i.toSorted((a,l)=>bn(l)-bn(a)).map(a=>{let l=e.seqPosToGlobalCol(r,a.start-1),c=e.seqEndToGlobalCol(r,a.end-1);if(l===void 0||c===void 0)return;let u=$e(t,l),d=$e(t,c+1);return d>u?{annotation:a,startCol:u,endCol:d}:void 0}).filter(H.notEmpty).map((a,l)=>({...a,stackIndex:l}));s.length>0&&o.set(r,lt(s))}return o},get domainBandsByStart(){return new Map([...this.domainBands].map(([t,o])=>[t,o.toSorted((r,i)=>r.startCol-i.startCol)]))},get mouseOverDomains(){let{mouseCol:t}=e,o=e.mouseOverRowName;if(o===void 0||t===void 0)return qc;let r=(this.domainBands.get(o)??[]).filter(i=>t>=i.startCol&&t<i.endCol).map(i=>i.annotation);return r.length>0?r:qc},get referenceRowIndex(){let{relativeTo:t}=e;return t===void 0?void 0:e.rowNamesSet.get(t)},get hoveredRowIndices(){let{hoveredTreeNode:t,rowNamesSet:o}=e;return t?t.descendantNames.map(r=>o.get(r)).filter(H.notEmpty):[]},get highlightedColumnRuns(){return ru([...e.highlightedColumns??[]].sort((t,o)=>t-o)).map(([t,o])=>({start:t,end:o}))},fillHighlightLabel(t,o,r){if(!t.includes("{"))return t;let i=o&&r!==void 0?e.seqPosIndex(o)?.[r-1]:void 0,s=o&&i!==void 0?e.MSA?.getRow(o)[i]??"":"";return t.replaceAll("{residue}",s).replaceAll("{position}",r===void 0?"":String(r))},get resolvedHighlights(){let{rowNamesSet:t,transientHighlights:o}=e;return[...e.highlights,...Object.values(o).flat()].flatMap(({row:i,rows:s,start:a,end:l,label:c,color:u})=>{let d={label:c&&this.fillHighlightLabel(c,i,a),color:u};if(s){let f=s.map(g=>t.get(g)).filter(H.notEmpty);return f.length?[{...d,rowIndices:f}]:[]}if(a===void 0||l===void 0)return[];let h=e.visibleSpan({row:i,start:a,end:l});return h?[{...d,...h,rowIndices:[]}]:[]})},get resolvedSelection(){let{selection:t,rowNamesSet:o,numRows:r}=e,i=t&&e.visibleSpan({start:t.start,end:t.end});if(!t||!i)return;let s=t.rows?ru(t.rows.map(a=>o.get(a)).filter(H.notEmpty).sort((a,l)=>a-l)):r>0?[[0,r-1]]:[];return s.length>0?{...i,rowRuns:s}:void 0},get selectionSize(){let t=this.resolvedSelection,o=this.selectionFileSpan;return t&&o?{columns:o.end-o.start+1,rows:(0,H.sum)(t.rowRuns.map(([r,i])=>i-r+1))}:void 0},get selectionFileSpan(){let{selection:t}=e,o=e.MSA?.getWidth()??0,r=Math.max(1,Math.floor(t?.start??0)),i=Math.min(o,Math.ceil(t?.end??0));return t&&r<=i?{start:r,end:i}:void 0},get selectionFasta(){let{rowNames:t,rowMap:o}=e,r=this.resolvedSelection,i=this.selectionFileSpan;if(!r||!i)return"";let s=r.rowRuns.flatMap(([a,l])=>t.slice(a,l+1)).flatMap(a=>{let l=o.get(a);return l===void 0?[]:[[a,l]]});return Xl(s,i.start,i.end)},columnStatsAt(t){let{colStats:o,conservation:r,propertyConservation:i}=e;return tc({col:t,colStats:o,conservation:r,propertyConservation:i})},getRowData(t){return{data:e.MSA?.getRowData(t),rowData:e.rowDataOf(t)}},get resolvedEncodings(){let t=Object.values(e.rowData);return e.encodings.map(o=>({...o,...eu.has(o.channel)?Kc(o.field,o.scale,e.allAnnotations,e.filteredAnnotations):an(o.scale,t.map(r=>r?.[o.field]).filter(H.notEmpty))}))},get rowPanelScales(){let{rowData:t}=e,{fillPalette:o,featureFillEncoding:r,featureLabels:i}=this,s=e.filteredAnnotations;return e.rowPanels.map(a=>{if(a.kind==="features"){let u=a.encoding?.color,d=u?Kc(u.field,u.scale,e.allAnnotations,s):r,h=a.encoding?.label;return{kind:a.kind,x:a.x,header:a.header??"",field:d?.field,legendTitle:d?.field,colors:u?$c(s,d,o):this.featureColors,labels:h?Yc(s,h):i,legend:d?.legend??this.visibleDomainTypes.map(f=>({id:f.accession,label:f.name,color:o[f.accession]}))}}let{colorOf:l,legend:c}=an(a.scale,Object.values(t).map(u=>u?.[a.field]).filter(H.notEmpty));return{kind:a.kind,field:a.field,header:a.header??a.field,legendTitle:a.legend??a.field,colors:ao(t,a.field,l),legend:c}})},get resolvedRowPanels(){let t=this.rowPanelScales,o=0;return e.rowPanels.map((r,i)=>{let s=Vc(r,e),a={id:`rowpanel-${i}`,width:s,offsetX:o};if(o+=s,r.kind==="features"){let l=r.transform?.find(c=>c.type==="align");return{...a,...t[i],spans:th({panel:r,width:s,colWidth:e.colWidth,domainBands:this.domainBands,annotationsByRow:e.annotationsByRow,shifts:l?this.featureAlignShifts.get(l.on):void 0})}}return{...a,...t[i]}})},get featureAlignShifts(){let t=new Set(e.rowPanels.flatMap(o=>o.kind==="features"&&o.x==="position"?(o.transform??[]).filter(r=>r.type==="align").map(r=>r.on):[]));return new Map([...t].map(o=>[o,new Map(Object.entries(e.annotationsByRow).map(([r,i])=>{let s=i.find(a=>Ut(a)===o);return s?[r,1-s.start]:void 0}).filter(H.notEmpty))]))},get tipLabelColors(){let t=this.resolvedEncodings.find(o=>o.channel==="tipLabel");return t?ao(e.rowData,t.field,t.colorOf):void 0},get rowTints(){let t=this.resolvedEncodings.find(r=>r.channel==="rowTint");if(!t)return;let o=ao(e.rowData,t.field,t.colorOf);return e.rowNames.map(r=>{let i=o.get(r);return i&&wn(i,gr)})},get branchColors(){let t=this.resolvedEncodings.find(s=>s.channel==="branch");if(!t)return;let o=lu(e.tree),r=new Map,i=new Map;for(let s=o.length-1;s>=0;s--){let a=o[s],l=a.children.length>0?uh(a.children.map(u=>r.get(u))):e.rowDataOf(a.name)?.[t.field];r.set(a,l);let c=l===void 0?void 0:t.colorOf(l);c&&i.set(a.id,c)}return i}})).actions(e=>({setHeaderHeight(t){e.headerHeight=t},setHideHeader(t){e.hideHeader=t},treeOverviewClick(t){let o=e.treeOverviewHit(t),r=e.treeOverviewFocusRows,i=!!r&&!!o&&o.rows[0]>=r[0]&&o.rows[1]<=r[1];e.setShowOnly(i||!o?void 0:o.id)},setTrackHeight(t,o){e.trackHeights.set(t,o)},reset(){e.resetCount++,e.loadWarnings=[],e.dismissedWarnings=[],e.setStatus(void 0),(0,b.applySnapshot)(e,Object.fromEntries(Object.entries((0,b.getSnapshot)(e)).filter(([t])=>rh.has(t)))),e.setError(void 0),e.setAnnotations([]),e.setHighlightedColumns(void 0),e.transientHighlights={},e.setMousePos(void 0,void 0),e.setMouseClickPos(void 0,void 0),e.setHoveredTreeNode(void 0)},async exportSVG(t){let{renderToSvg:o}=await import("./renderToSvg-VDXAB7TT.js"),r=await o(e,t),i=new Blob([r],{type:"image/svg+xml"});xn(i,Qn(e.msaFilehandle,"svg"))},exportNewick(){let t=new Blob([e.treeNewick],{type:"text/plain"});xn(t,Qn(e.treeFilehandle??e.msaFilehandle,"nwk","tree"))},setFilter(t,o){o?e.turnedOffFeatures.delete(t):e.turnedOffFeatures.set(t,!0)},fit(){(0,G.transaction)(()=>{for(let t=0;t<2;t++)this.fitHorizontally(),this.fitVertically()})},fitVertically(){e.numRows>0&&(e.rowHeight=(0,H.clamp)(e.msaAreaHeight/e.numRows,ht,Te)),e.scrollY=0},zoomToRegion(t){let o=e.visibleSpan(t);!o||!e.viewInitialized||(0,G.transaction)(()=>{e.colWidth=(0,H.clamp)(e.msaCanvasWidth/(o.endCol-o.startCol+1),mt,Te),e.scrollX=(0,H.clamp)(-o.startCol*e.colWidth,e.maxScrollX,0)})},zoomToSelection(){let{selection:t,resolvedSelection:o}=e;!t||!o||(0,G.transaction)(()=>{if(this.zoomToRegion({start:t.start,end:t.end}),t.rows&&e.viewInitialized){let{rowRuns:r}=o,i=r[0][0],s=r.at(-1)[1];e.rowHeight=(0,H.clamp)(e.msaAreaHeight/(s-i+1),ht,Te),e.scrollY=(0,H.clamp)(-i*e.rowHeight,e.maxScrollY,0)}})},selectBlock(t,o){let{numColumns:r,numRows:i,rowNames:s}=e;if(r===0||i===0)return;let a=(f,g,p)=>[(0,H.clamp)(f,0,p),(0,H.clamp)(g,0,p)].sort((w,C)=>w-C),[l,c]=a(t.col,o.col,r-1),[u,d]=t.row===void 0||o.row===void 0?[0,i-1]:a(t.row,o.row,i-1),h=u===0&&d===i-1;e.setSelection({start:e.visibleColToGlobalCol(l)+1,end:e.visibleColToGlobalCol(c)+1,...h?{}:{rows:s.slice(u,d+1)}})},fitHorizontally(){e.numColumns>0&&(e.colWidth=(0,H.clamp)(e.msaCanvasWidth/e.numColumns,mt,Te)),e.scrollX=0},afterCreate(){if(e.highlightColumns?.length&&e.setHighlightedColumns(e.highlightColumns),(0,b.addDisposer)(e,(0,G.reaction)(()=>e.dataInitialized&&!(e.treeFilehandle&&!e.data.tree)?{clades:(0,b.getSnapshot)(e.clades),treeRoot:e.treeRoot}:void 0,r=>{if(r?.clades.length)for(let{mark:i,nodeId:s}of e.resolvedClades)s!==void 0&&(i==="collapse"&&!e.collapsed.includes(s)?e.toggleCollapsed(s):i==="focus"?e.setShowOnly(s):i==="rotate"&&!e.rotated.includes(s)&&e.toggleRotated(s))},{fireImmediately:!0,equals:G.compareStructural})),(0,b.addDisposer)(e,(0,G.autorun)(()=>{let{region:r}=e;r&&e.viewInitialized&&e.numColumns>0&&!(e.treeFilehandle&&!e.data.tree)&&(this.zoomToRegion(r),e.setRegion(void 0))})),typeof window<"u"&&typeof window.matchMedia=="function"){let r=()=>window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),i=r(),s=()=>{e.setHighResScaleFactor(window.devicePixelRatio),i.removeEventListener("change",s),i=r(),i.addEventListener("change",s)};i.addEventListener("change",s),(0,b.addDisposer)(e,()=>{i.removeEventListener("change",s)})}let t=({what:r,getFilehandle:i,onLoad:s,setLoading:a,clearFilehandle:l,optional:c=!1})=>{let u=0,d;(0,b.addDisposer)(e,()=>{d?.()}),(0,b.addDisposer)(e,(0,G.autorun)(async()=>{let h=i(),f=++u;if(d?.(),d=void 0,!h){a?.(!1);return}let g=()=>f===u&&(0,b.isAlive)(e),p=new AbortController;d=()=>{p.abort(),(0,b.isAlive)(e)&&e.setStatus(void 0)};try{a?.(!0),e.setError(void 0);let w=await cc((0,iu.openLocation)(h),C=>{g()&&e.setStatus(C)},{controller:p});g()&&(0,G.transaction)(()=>{s(w),h.locationType==="BlobLocation"&&l?.()})}catch(w){g()&&(uc(w)?l?.():(console.error(w),c?e.addWarning(`The ${r} did not load: ${w}`):e.setError(w)))}finally{g()&&(d=void 0,a?.(!1))}}))};t({what:"tree",getFilehandle:()=>e.treeFilehandle,onLoad:r=>{e.setTree(r)},setLoading:r=>{e.setLoadingTree(r)},clearFilehandle:()=>{e.setTreeFilehandle(void 0)}}),t({what:"row metadata",optional:!0,getFilehandle:()=>e.treeMetadataFilehandle,onLoad:r=>{e.setTreeMetadata(r)}});let o=!1;(0,b.addDisposer)(e,(0,G.autorun)(()=>{let r=e.data.gff;if(r)try{e.applyGFFText(r),o=!0}catch(i){console.error(i),e.addWarning(`The annotations did not parse: ${i}`)}else o&&(o=!1,e.setAnnotations([]))})),t({what:"annotations",optional:!0,getFilehandle:()=>e.gffFilehandle,onLoad:r=>{e.setGFF(r)},clearFilehandle:()=>{e.setGFFFilehandle(void 0)}}),t({what:"alignment",getFilehandle:()=>e.msaFilehandle,onLoad:r=>{e.setMSA(r)},setLoading:r=>{e.setLoadingMSA(r)},clearFilehandle:()=>{e.setMSAFilehandle(void 0)}}),(0,b.addDisposer)(e,(0,G.autorun)(()=>{e.dynamicColorSchemeName&&e.colStats,e.showColumnStats&&(e.colStats,e.conservation,e.propertyConservation),e.columns}))}})).postProcessSnapshot(({data:e,columnTracks:t,...o})=>({...o,...oh(t,n),data:{...o.treeFilehandle?{}:{tree:e.tree},...o.msaFilehandle?{}:{msa:e.msa},...o.treeMetadataFilehandle?{}:{treeMetadata:e.treeMetadata},...o.gffFilehandle?{}:{gff:e.gff}}}))}var lo=dh;function mh(n){return(0,cu.createJBrowseTheme)(n==="dark"?{palette:{mode:"dark"}}:typeof n=="object"?n:void 0)}function hh(n){return typeof n=="string"?{colorSchemeName:n}:n?{customColorScheme:n.map}:{}}function fh(n,e){return n.msa===e.msa&&n.tree===e.tree&&JSON.stringify([n.msaFilehandle,n.treeFilehandle])===JSON.stringify([e.msaFilehandle,e.treeFilehandle])}function ut(n){let{msa:e,tree:t,msaFilehandle:o,treeFilehandle:r}=n,i={msa:e,tree:t,msaFilehandle:o,treeFilehandle:r},[s,a]=(0,T.useState)({source:i,generation:0});return fh(s.source,i)||a({source:i,generation:s.generation+1}),T.default.createElement(ph,{key:s.generation,...n})}function sn(n,e,t){let o=(0,T.useRef)(t);(0,T.useEffect)(()=>{o.current=t});let r=!!t;(0,T.useEffect)(()=>r?(0,Ye.reaction)(()=>n[e],i=>{o.current?.(i)},{equals:Ye.compareStructural}):void 0,[n,e,r])}function ph({msa:n,tree:e,gff:t,msaFilehandle:o,treeFilehandle:r,gffFilehandle:i,colorScheme:s,height:a,colWidth:l,rowHeight:c,allowedGappyness:u,highlightColumns:d,highlights:h,features:f,clades:g,relativeTo:p,columnTracks:w,residueMappings:C,rowData:M,encodings:x,rowPanels:E,drawTree:v,residueEncoding:L,treeAreaWidth:z,showBranchLen:Y,treeOrder:U,treeRoot:ee,region:de,selection:Z,hideHeader:y,theme:D,onCellHover:je,onCellClick:gu,onViewportChange:wu,onSelectionChange:bu,onModel:fo}){let[S]=(0,T.useState)(()=>lo().create({type:"MsaView",...n||e||t||M?{data:{msa:n??"",tree:e??"",gff:t,...M?{treeMetadata:JSON.stringify(M)}:{}}}:{},...o?{msaFilehandle:o}:{},...r?{treeFilehandle:r}:{},...i?{gffFilehandle:i}:{},...hh(s),...a?{height:a}:{},...l?{colWidth:l}:{},...c?{rowHeight:c}:{},...u!==void 0?{allowedGappyness:u}:{},...d?{highlightColumns:d}:{},...h?{highlights:h}:{},...f?{features:f}:{},...Z?{selection:Z}:{},...g?{clades:g}:{},...p?{relativeTo:p}:{},...w?{columnTracks:w}:{},...C?{residueMappings:C}:{},...x?{encodings:x}:{},...E?{rowPanels:E}:{},...v!==void 0?{drawTree:v}:{},...z?{treeAreaWidth:z}:{},...Y!==void 0?{showBranchLen:Y}:{},...U?{treeOrder:U}:{},...ee?{treeRoot:ee}:{},...L!==void 0?{bgColor:L==="fill"}:{}})),Ke=(0,T.useRef)(void 0),[vu,{width:dn}]=(0,uu.default)();(0,T.useEffect)(()=>{dn&&S.setWidth(dn)},[S,dn]),(0,T.useEffect)(()=>{a!==void 0&&S.setHeight(a)},[S,a]),(0,T.useEffect)(()=>{l!==void 0&&S.setColWidth(l)},[S,l]),(0,T.useEffect)(()=>{c!==void 0&&S.setRowHeight(c)},[S,c]),(0,T.useEffect)(()=>{u!==void 0&&S.setAllowedGappyness(u)},[S,u]),(0,T.useEffect)(()=>{v!==void 0&&S.setDrawTree(v)},[S,v]),(0,T.useEffect)(()=>{z!==void 0&&S.setTreeAreaWidth(z)},[S,z]),(0,T.useEffect)(()=>{Y!==void 0&&S.setShowBranchLen(Y)},[S,Y]),(0,T.useEffect)(()=>{U!==void 0&&S.setTreeOrder(U)},[S,U]),(0,T.useEffect)(()=>{L!==void 0&&S.setBgColor(L==="fill")},[S,L]),(0,T.useEffect)(()=>{S.setHideHeader(!!y)},[S,y]),(0,T.useEffect)(()=>{S.drawRelativeTo(p)},[S,p]);let mn=(0,T.useRef)(t),Ue=JSON.stringify(i??null),po=(0,T.useRef)(Ue);(0,T.useEffect)(()=>{if(po.current!==Ue){po.current=Ue;let J=JSON.parse(Ue);J?S.setGFFFilehandle(J):S.setGFF(mn.current)}},[S,Ue]),(0,T.useEffect)(()=>{mn.current!==t&&(mn.current=t,S.setGFF(t))},[S,t]);let go=JSON.stringify(s??null);(0,T.useEffect)(()=>{let J=JSON.parse(go);typeof J=="string"?S.setColorSchemeName(J):J&&S.setCustomColorScheme(J.map)},[S,go]);let wo=JSON.stringify(h??[]);(0,T.useEffect)(()=>{S.setHighlights(JSON.parse(wo))},[S,wo]);let bo=JSON.stringify(f??[]);(0,T.useEffect)(()=>{S.setFeatures(JSON.parse(bo))},[S,bo]);let vo=JSON.stringify(Z??null);(0,T.useEffect)(()=>{S.setSelection(JSON.parse(vo)??void 0)},[S,vo]);let So=JSON.stringify(ee??null);(0,T.useEffect)(()=>{S.setTreeRoot(JSON.parse(So)??void 0)},[S,So]);let Mo=JSON.stringify(g??[]);(0,T.useEffect)(()=>{S.setClades(JSON.parse(Mo))},[S,Mo]);let xo=JSON.stringify(w??[]);(0,T.useEffect)(()=>{S.setColumnTracks(JSON.parse(xo))},[S,xo]);let Co=JSON.stringify(C??[]);(0,T.useEffect)(()=>{S.setResidueMappings(JSON.parse(Co))},[S,Co]);let yo=JSON.stringify(M??{});(0,T.useEffect)(()=>{let J=JSON.parse(yo);Object.keys(J).length&&S.setRowData(J)},[S,yo]);let Ao=JSON.stringify(x??[]);(0,T.useEffect)(()=>{S.setEncodings(JSON.parse(Ao))},[S,Ao]);let To=JSON.stringify(E??[]);(0,T.useEffect)(()=>{S.setRowPanels(JSON.parse(To))},[S,To]);let Eo=JSON.stringify(d??null);(0,T.useEffect)(()=>{S.setHighlightedColumns(JSON.parse(Eo)??void 0)},[S,Eo]);let Lo=JSON.stringify(de??null);(0,T.useEffect)(()=>{let J=JSON.parse(Lo);return J?(0,Ye.when)(()=>S.viewInitialized&&S.numColumns>0,()=>{S.zoomToRegion(J)}):void 0},[S,Lo]),sn(S,"hoveredCell",je),sn(S,"clickedCell",gu),sn(S,"viewport",wu),sn(S,"selection",bu);let Ro=(0,T.useRef)(fo);return(0,T.useEffect)(()=>{Ro.current=fo}),(0,T.useEffect)(()=>{Ro.current?.(S)},[S]),(0,T.useEffect)(()=>(Ke.current!==void 0&&(clearTimeout(Ke.current),Ke.current=void 0),()=>{Ke.current=setTimeout(()=>{Ke.current=void 0,(0,ln.isAlive)(S)&&(0,ln.destroy)(S)})}),[S]),T.default.createElement(du.ThemeProvider,{theme:mh(D)},T.default.createElement("div",{ref:vu},T.default.createElement(Xn,{model:S})))}var co=m(A(),1),mu=m(xu(),1);function uo(n,e){let t=(0,mu.createRoot)(n),o=e;return t.render(co.default.createElement(ut,{...o})),{update(r){o={...o,...r},t.render(co.default.createElement(ut,{...o}))},destroy(){t.unmount()}}}var hu=m(Xe(),1);var gh=["msa-url","tree-url","gff-url","color-scheme","height","hide-header","theme","reference-row","tree-area-width"],wh=["display-start","display-end","highlight"];function mo(n){return n?{uri:n,locationType:"UriLocation"}:void 0}function De(n){let e=n?Number(n):Number.NaN;return Number.isFinite(e)?e:void 0}function bh(n,e){return(n??"").split(",").flatMap(t=>{let[o,r]=t.split(":").map(De);return o===void 0?[]:[{row:e,start:o,end:r??o}]})}function ho(n,e,t){let o=n.globalColToVisibleCol(t-1);return o===void 0?void 0:n.visibleColToSeqPosOneBased(e,o)}function vh(n,e,t){let o,r;for(let i=t.startColumn;i<=t.endColumn&&!o;i++)o=ho(n,e,i);for(let i=t.endColumn;i>=t.startColumn&&!r;i--)r=ho(n,e,i);return o&&r?{start:o,end:r}:void 0}function Sh(n="jbrowse-msa"){let e=customElements.get(n);if(e)return e;class t extends HTMLElement{static observedAttributes=[...gh,...wh];#o;#t;#r;#s;#l=!1;#u;#e={};get msa(){return this.#e.msa}set msa(r){this.#n({msa:r})}get tree(){return this.#e.tree}set tree(r){this.#n({tree:r})}get gff(){return this.#e.gff}set gff(r){this.#n({gff:r})}get features(){return this.#e.features}set features(r){this.#n({features:r})}get colorScheme(){return this.#e.colorScheme}set colorScheme(r){this.#n({colorScheme:r})}get highlights(){return this.#e.highlights}set highlights(r){this.#n({highlights:r})}get columnTracks(){return this.#e.columnTracks}set columnTracks(r){this.#n({columnTracks:r})}get residueMappings(){return this.#e.residueMappings}set residueMappings(r){this.#n({residueMappings:r})}get selection(){return this.#t?this.#t.selection:this.#e.selection}set selection(r){this.#n({selection:r})}get#i(){return this.getAttribute("reference-row")??void 0}#n(r){this.#e={...this.#e,...r},this.#o?.update(this.#c())}#c(){let r=this.getAttribute("theme");return{...this.#e,msaFilehandle:mo(this.getAttribute("msa-url")),treeFilehandle:mo(this.getAttribute("tree-url")),gffFilehandle:mo(this.getAttribute("gff-url")),colorScheme:this.#e.colorScheme??this.getAttribute("color-scheme")??void 0,height:De(this.getAttribute("height")),treeAreaWidth:De(this.getAttribute("tree-area-width")),hideHeader:this.hasAttribute("hide-header"),theme:r==="dark"?"dark":"light",onCellHover:i=>{this.#a("cell-hover",i),this.#f(i)},onCellClick:i=>{this.#a("cell-click",i)},onViewportChange:i=>{this.#a("viewport-change",i),this.#p(i)},onSelectionChange:i=>{this.#a("selection-change",i)},onModel:i=>{this.#t=i,this.#m(),this.#h()}}}#a(r,i){this.dispatchEvent(new CustomEvent(r,{detail:i}))}#d(r){this.#r&&this.dispatchEvent(new CustomEvent("change",{detail:r,bubbles:!0,cancelable:!0}))}#f(r){let i=this.#t,s=this.#i,a=r&&i&&s?ho(i,s,r.column):r?.column;this.#d({type:"highlight",value:a===void 0?null:`${a}:${a}`})}#p(r){let i=this.#t,s=this.#i;if(!r||!i)return;let a=s?vh(i,s,r):{start:r.startColumn,end:r.endColumn},l=De(this.getAttribute("display-start")),c=De(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.#u=a,this.#d({"display-start":a.start,"display-end":a.end}))}#m(){let r=this.#t,i=De(this.getAttribute("display-start")),s=De(this.getAttribute("display-end")),a=this.#u;if(!(a&&a.start===i&&a.end===s)&&(this.#s?.(),r&&i!==void 0&&s!==void 0)){let l=this.#i;this.#s=(0,hu.when)(()=>r.viewInitialized&&r.numColumns>0,()=>{r.zoomToRegion({row:l,start:i,end:s})})}}#h(){let r=bh(this.getAttribute("highlight"),this.#i);r.length?this.#t?.applyHighlight("nightingale",r):this.#t?.clearHighlight("nightingale")}connectedCallback(){this.style.display||(this.style.display="block"),this.#o=uo(this,this.#c());let r=this.closest("nightingale-manager");r&&customElements.whenDefined("nightingale-manager").then(()=>{this.isConnected&&(this.#r=r,r.register(this))})}disconnectedCallback(){this.#r?.unregister(this),this.#r=void 0,this.#s?.(),this.#o?.destroy(),this.#o=void 0,this.#t=void 0}attributeChangedCallback(r){r==="display-start"||r==="display-end"?this.#l||(this.#l=!0,queueMicrotask(()=>{this.#l=!1,this.#m()})):r==="highlight"?this.#h():this.#o?.update(this.#c())}}return customElements.define(n,t),t}var cn=m(A(),1),fu=m(qn(),1),pu=m(re(),1),un=m(Xe(),1);function Mh(n,{theme:e,includeTracks:t=!1,delay:o=300}={}){let[r,i]=(0,cn.useState)({});return(0,cn.useEffect)(()=>{let s=0,a=(0,un.reaction)(()=>n.viewInitialized&&n.dataInitialized?[(0,pu.getSnapshot)(n),n.width,n.height,n.resolvedHighlights,n.highlightedColumnRuns]:void 0,l=>{if(!l)return;let c=++s;Mn(n,{theme:e??(0,fu.createJBrowseTheme)(),exportType:"viewport",includeTracks:t}).then(u=>{c===s&&i({svg:u})},u=>{c===s&&i({error:u})})},{delay:o,fireImmediately:!0,equals:un.compareShallow});return()=>{s=-1,a()}},[n,e,t,o]),r}export{Cu as a,ui as b,pi as c,Ru as d,Xn as e,lo as f,ut as g,uo as h,Sh as i,Mh as j};
|
|
18
|
+
//# sourceMappingURL=chunk-NMYD2GWF.js.map
|