jbrowse-plugin-msaview 3.9.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/AddHighlightModel/GenomeMouseoverHighlight.js +1 -1
  2. package/dist/AddHighlightModel/index.js +1 -1
  3. package/dist/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.d.ts +2 -8
  4. package/dist/BgzipFastaMsaAdapter/configSchema.d.ts +10 -3
  5. package/dist/LaunchMsaView/cleanProteinSequence.test.js +36 -2
  6. package/dist/LaunchMsaView/components/BlastQuery/BlastAutomaticPanel.js +8 -10
  7. package/dist/LaunchMsaView/components/BlastQuery/BlastManualPanel.js +9 -11
  8. package/dist/LaunchMsaView/components/BlastQuery/CachedBlastResults.js +3 -1
  9. package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.js +14 -16
  10. package/dist/LaunchMsaView/components/OrthologQuery/OrthologPanel.js +16 -18
  11. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js +17 -19
  12. package/dist/LaunchMsaView/components/launchConnectedView.d.ts +2 -2
  13. package/dist/LaunchMsaView/components/launchConnectedView.js +4 -8
  14. package/dist/LaunchMsaView/components/useFeatureSequence.js +3 -6
  15. package/dist/LaunchMsaView/index.js +2 -1
  16. package/dist/LaunchMsaView/launchTarget.test.js +1 -1
  17. package/dist/LaunchMsaViewExtensionPoint/index.js +3 -3
  18. package/dist/LaunchMsaViewExtensionPoint/index.test.js +24 -21
  19. package/dist/MsaViewPanel/index.js +3 -3
  20. package/dist/MsaViewPanel/isMsaView.d.ts +4 -0
  21. package/dist/MsaViewPanel/isMsaView.js +3 -0
  22. package/dist/MsaViewPanel/model.d.ts +638 -212
  23. package/dist/MsaViewPanel/model.js +0 -3
  24. package/dist/MsaViewPanel/resolveConnectedTranscript.js +7 -13
  25. package/dist/MsaViewPanel/resolveConnectedTranscript.test.js +2 -2
  26. package/dist/MsaViewPanel/transcriptMap.js +27 -8
  27. package/dist/MsaViewPanel/transcriptMap.test.js +19 -0
  28. package/dist/chunks/AboutDialog-WT6GXMXU.js +2 -0
  29. package/dist/chunks/AboutDialog-WT6GXMXU.js.map +7 -0
  30. package/dist/chunks/AnnotationFileDialog-34R7LFHB.js +2 -0
  31. package/dist/chunks/AnnotationFileDialog-34R7LFHB.js.map +7 -0
  32. package/dist/chunks/BgzipFastaMsaAdapter-ZMUARSUQ.js +4 -0
  33. package/dist/chunks/BgzipFastaMsaAdapter-ZMUARSUQ.js.map +7 -0
  34. package/dist/chunks/ExportSVGDialog-NMVUHFGY.js +2 -0
  35. package/dist/chunks/ExportSVGDialog-NMVUHFGY.js.map +7 -0
  36. package/dist/chunks/FeatureDialog-XNHIA5PS.js +2 -0
  37. package/dist/chunks/FeatureDialog-XNHIA5PS.js.map +7 -0
  38. package/dist/chunks/HelpDialog-DF4Y536X.js +2 -0
  39. package/dist/chunks/HelpDialog-DF4Y536X.js.map +7 -0
  40. package/dist/chunks/LaunchMsaViewDialog-54LBEZHK.js +5 -0
  41. package/dist/chunks/LaunchMsaViewDialog-54LBEZHK.js.map +7 -0
  42. package/dist/chunks/MetadataDialog-2WT6EX4M.js +2 -0
  43. package/dist/chunks/MetadataDialog-2WT6EX4M.js.map +7 -0
  44. package/dist/chunks/MsaViewPanel-YYP4CYYO.js +2 -0
  45. package/dist/chunks/MsaViewPanel-YYP4CYYO.js.map +7 -0
  46. package/dist/chunks/TrackInfoDialog-TYCMLUKG.js +2 -0
  47. package/dist/chunks/TrackInfoDialog-TYCMLUKG.js.map +7 -0
  48. package/dist/chunks/TreeNodeInfoDialog-BFF6JRCO.js +2 -0
  49. package/dist/chunks/TreeNodeInfoDialog-BFF6JRCO.js.map +7 -0
  50. package/dist/chunks/chunk-2IWD4OO4.js +2 -0
  51. package/dist/chunks/chunk-2IWD4OO4.js.map +7 -0
  52. package/dist/chunks/chunk-5ORPTTMR.js +2 -0
  53. package/dist/chunks/chunk-5ORPTTMR.js.map +7 -0
  54. package/dist/chunks/chunk-6YFCSBEE.js +2 -0
  55. package/dist/chunks/chunk-6YFCSBEE.js.map +7 -0
  56. package/dist/chunks/chunk-73KAPCJ2.js +2 -0
  57. package/dist/chunks/chunk-73KAPCJ2.js.map +7 -0
  58. package/dist/chunks/chunk-BX4Z274Q.js +2 -0
  59. package/dist/chunks/chunk-BX4Z274Q.js.map +7 -0
  60. package/dist/chunks/chunk-CVLB4VFP.js +2 -0
  61. package/dist/chunks/chunk-CVLB4VFP.js.map +7 -0
  62. package/dist/chunks/chunk-DNFD5II2.js +2 -0
  63. package/dist/chunks/chunk-DNFD5II2.js.map +7 -0
  64. package/dist/chunks/chunk-ENTWPX2K.js +6 -0
  65. package/dist/chunks/chunk-ENTWPX2K.js.map +7 -0
  66. package/dist/chunks/chunk-EO7URJUB.js +2 -0
  67. package/dist/chunks/chunk-EO7URJUB.js.map +7 -0
  68. package/dist/chunks/chunk-FCNT6B47.js +2 -0
  69. package/dist/chunks/chunk-FCNT6B47.js.map +7 -0
  70. package/dist/chunks/chunk-FCWXYIFC.js +2 -0
  71. package/dist/chunks/chunk-FCWXYIFC.js.map +7 -0
  72. package/dist/chunks/chunk-FY3BTKY4.js +2 -0
  73. package/dist/chunks/chunk-FY3BTKY4.js.map +7 -0
  74. package/dist/chunks/chunk-IBBQUV2I.js +2 -0
  75. package/dist/chunks/chunk-IBBQUV2I.js.map +7 -0
  76. package/dist/chunks/chunk-J6KYLXRD.js +2 -0
  77. package/dist/chunks/chunk-J6KYLXRD.js.map +7 -0
  78. package/dist/chunks/chunk-MBI4TMKR.js +2 -0
  79. package/dist/chunks/chunk-MBI4TMKR.js.map +7 -0
  80. package/dist/chunks/chunk-NSASZ5FM.js +2 -0
  81. package/dist/chunks/chunk-NSASZ5FM.js.map +7 -0
  82. package/dist/chunks/chunk-O7JNDIKD.js +2 -0
  83. package/dist/chunks/chunk-O7JNDIKD.js.map +7 -0
  84. package/dist/chunks/chunk-P77DPK6B.js +2 -0
  85. package/dist/chunks/chunk-P77DPK6B.js.map +7 -0
  86. package/dist/chunks/chunk-PJZ3XTMG.js +6 -0
  87. package/dist/chunks/chunk-PJZ3XTMG.js.map +7 -0
  88. package/dist/chunks/chunk-QAC6JSDZ.js +5 -0
  89. package/dist/chunks/chunk-QAC6JSDZ.js.map +7 -0
  90. package/dist/chunks/chunk-QMLPITS4.js +18 -0
  91. package/dist/chunks/chunk-QMLPITS4.js.map +7 -0
  92. package/dist/chunks/chunk-RKVHQK52.js +3 -0
  93. package/dist/chunks/chunk-RKVHQK52.js.map +7 -0
  94. package/dist/chunks/chunk-RTKNCGDF.js +8 -0
  95. package/dist/chunks/chunk-RTKNCGDF.js.map +7 -0
  96. package/dist/chunks/chunk-TITP6LCV.js +2 -0
  97. package/dist/chunks/chunk-TITP6LCV.js.map +7 -0
  98. package/dist/chunks/chunk-YUKJI2AH.js +2 -0
  99. package/dist/chunks/chunk-YUKJI2AH.js.map +7 -0
  100. package/dist/chunks/chunk-ZTQYZDWK.js +2 -0
  101. package/dist/chunks/chunk-ZTQYZDWK.js.map +7 -0
  102. package/dist/chunks/dist-2T65ZS4E.js +2 -0
  103. package/dist/chunks/dist-2T65ZS4E.js.map +7 -0
  104. package/dist/chunks/dist-UX5CKLQJ.js +2 -0
  105. package/dist/chunks/dist-UX5CKLQJ.js.map +7 -0
  106. package/dist/chunks/model-KEZXRCK6.js +12 -0
  107. package/dist/chunks/model-KEZXRCK6.js.map +7 -0
  108. package/dist/chunks/renderToSvg-B7RCHRO3.js +2 -0
  109. package/dist/chunks/renderToSvg-B7RCHRO3.js.map +7 -0
  110. package/dist/config.json +1 -1
  111. package/dist/index.d.ts +11 -8
  112. package/dist/index.js +4 -1
  113. package/dist/jbrowse-plugin-msaview.esm.js +3 -0
  114. package/dist/jbrowse-plugin-msaview.esm.js.map +7 -0
  115. package/dist/utils/launchMsaView.d.ts +1 -1
  116. package/dist/utils/launchMsaView.js +5 -2
  117. package/dist/utils/workspaces.test.js +5 -5
  118. package/dist/version.d.ts +1 -1
  119. package/dist/version.js +1 -1
  120. package/package.json +19 -20
  121. package/src/AddHighlightModel/GenomeMouseoverHighlight.tsx +1 -1
  122. package/src/AddHighlightModel/index.tsx +1 -1
  123. package/src/LaunchMsaView/cleanProteinSequence.test.ts +37 -2
  124. package/src/LaunchMsaView/components/BlastQuery/BlastAutomaticPanel.tsx +3 -3
  125. package/src/LaunchMsaView/components/BlastQuery/BlastManualPanel.tsx +3 -3
  126. package/src/LaunchMsaView/components/BlastQuery/CachedBlastResults.tsx +3 -1
  127. package/src/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.tsx +3 -3
  128. package/src/LaunchMsaView/components/OrthologQuery/OrthologPanel.tsx +3 -3
  129. package/src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx +3 -3
  130. package/src/LaunchMsaView/components/launchConnectedView.ts +5 -8
  131. package/src/LaunchMsaView/components/useFeatureSequence.ts +3 -6
  132. package/src/LaunchMsaView/index.ts +6 -1
  133. package/src/LaunchMsaView/launchTarget.test.ts +1 -1
  134. package/src/LaunchMsaView/launchTarget.ts +2 -3
  135. package/src/LaunchMsaViewExtensionPoint/index.test.ts +26 -21
  136. package/src/LaunchMsaViewExtensionPoint/index.ts +3 -4
  137. package/src/MsaViewPanel/index.ts +3 -4
  138. package/src/MsaViewPanel/isMsaView.ts +7 -0
  139. package/src/MsaViewPanel/model.ts +0 -6
  140. package/src/MsaViewPanel/resolveConnectedTranscript.test.ts +2 -2
  141. package/src/MsaViewPanel/resolveConnectedTranscript.ts +7 -17
  142. package/src/MsaViewPanel/transcriptMap.test.ts +23 -0
  143. package/src/MsaViewPanel/transcriptMap.ts +36 -9
  144. package/src/index.ts +4 -1
  145. package/src/utils/launchMsaView.ts +5 -2
  146. package/src/utils/useFetch.ts +1 -1
  147. package/src/utils/workspaces.test.ts +5 -5
  148. package/src/version.ts +1 -1
  149. package/dist/LaunchMsaView/components/calculateProteinSequence.d.ts +0 -21
  150. package/dist/LaunchMsaView/components/calculateProteinSequence.js +0 -71
  151. package/dist/LaunchMsaView/components/types.d.ts +0 -6
  152. package/dist/LaunchMsaView/components/types.js +0 -1
  153. package/dist/jbrowse-plugin-msaview.umd.production.min.js +0 -143
  154. package/dist/jbrowse-plugin-msaview.umd.production.min.js.map +0 -7
  155. package/src/LaunchMsaView/components/calculateProteinSequence.ts +0 -113
  156. package/src/LaunchMsaView/components/types.ts +0 -8
@@ -0,0 +1,18 @@
1
+ import{a as Cn}from"./chunk-O7JNDIKD.js";import{a as Ct,b as ni,c as oi,e as ri,g as ii,h as ai}from"./chunk-RTKNCGDF.js";import{a as ie}from"./chunk-FCWXYIFC.js";import{a as Ho,b as zo,c as gu}from"./chunk-YUKJI2AH.js";import{c as Po}from"./chunk-QAC6JSDZ.js";import{a as Fo,b as pu,c as k,d as _}from"./chunk-IBBQUV2I.js";import{$ as vr,A as ft,Aa as Vr,B as tr,Ba as $r,C as pt,Ca as Oe,D as nr,Da as Yr,E as or,Ea as jr,F as rr,Fa as Kr,G as ir,Ga as Ur,H as ar,Ha as Xr,I as sr,Ia as qr,J as Te,Ja as Sn,K as lr,Ka as xt,L as cr,La as Zr,M as ur,Ma as Jr,N as gt,Na as Qr,O as dr,Oa as Mn,P as qe,Pa as ei,Q as mr,Qa as wu,R as hr,Ra as xn,S as fr,T as wt,U as pr,V as gr,W as bn,X as wr,Y as bt,Z as br,_ as vt,a as Xe,aa as vn,b as Bo,ba as Sr,c as pe,ca as Mr,d as Wo,da as xr,e as Go,ea as St,f as _o,fa as Mt,g as Vo,ga as Cr,h as $o,ha as yr,i as fn,ia as Ar,j as pn,ja as Er,k as Yo,ka as Tr,l as jo,la as Lr,m as Ko,ma as Rr,n as Uo,na as kr,o as gn,oa as Fr,p as Xo,pa as Hr,q as wn,qa as Pr,r as dt,ra as Dr,s as mt,sa as Ir,t as Ee,ta as Or,u as qo,ua as Nr,v as ht,va as zr,w as Zo,wa as Br,x as Jo,xa as Wr,y as Qo,ya as Gr,z as er,za as _r}from"./chunk-FCNT6B47.js";import{b as Do,c as Io,d as fe,f as Oo,g as No,h as Ie}from"./chunk-73KAPCJ2.js";import{a as Ze,b as ti}from"./chunk-5ORPTTMR.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 pi=Ae((vh,fi)=>{fi.exports=JBrowseExports["@jbrowse/core/ui/ErrorBoundary"]});var Je=Ae((xh,vi)=>{vi.exports=JBrowseExports["@jbrowse/core/ui/BaseTooltip"]});var Rn=Ae((Yh,Ni)=>{Ni.exports=JBrowseExports["@jbrowse/core/util/useMeasure"]});var Re=Ae((Kh,Gi)=>{Gi.exports=JBrowseExports["@jbrowse/core/ui/CascadingMenuButton"]});var Zn=Ae((o1,Gl)=>{Gl.exports=JBrowseExports["@jbrowse/core/ui/theme"]});var Vl=Ae((r1,_l)=>{_l.exports=JBrowseExports["@mui/material/styles"]});var Yl=Ae((i1,$l)=>{$l.exports=JBrowseExports["@jbrowse/core/util/types/mst"]});var yn=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]))}},An=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 bu(n=globalThis,e={}){let t=globalThis;t.DOMMatrix=yn,t.DOMPoint=An;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)*si})},e)}}var si=.6;var mi="{residue}{position}",vu=/^(\d+)(?:-(\d+))?(?:\s+(.+))?$/;function hi(n,e){let t=vu.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 Su(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}=hi(String(n),"highlight");return{...e===void 0?{}:{row:e},start:t,end:o,...r?{label:r}:t===o&&e!==void 0?{label:mi}:{}}}function Mu(n,e){if(typeof n=="string"){let{start:t,end:o}=hi(n,"region");return yt({start:t,end:o},e)}return yt(n,e)}function li(n){return n.toLowerCase().replaceAll(/[^a-z0-9]+/g,"-").replaceAll(/^-|-$/g,"")}function xu(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 Cu(n,e,t){let{start:o,...r}=n,i=o&&o>1?o-1:0,s=n.id??(li(n.name)||"track");for(let a=2;!n.id&&t.has(s);a++)s=`${li(n.name)||"track"}-${a}`;return t.add(s),{...yt(r,e),id:s,kind:xu(n),...i&&n.values?{values:[...Array(i).fill(0),...n.values]}:{},...i&&n.data!==void 0?{data:" ".repeat(i)+n.data}:{}}}function ci(n){return n.includes(`
2
+ `)}function ui(n){return n.trimStart().startsWith("(")}function di(n){return{uri:n,locationType:"UriLocation"}}function yu(n){let{query:e,msa:t,tree:o,highlights:r,region:i,columnTracks:s,...a}=n,l={...a.data,...t!==void 0&&ci(t)?{msa:t}:{},...o!==void 0&&ui(o)?{tree:o}:{}},c=new Set((s??[]).map(u=>u.id).filter(u=>u!==void 0));return{...a,...t!==void 0&&!ci(t)?{msaFilehandle:di(t)}:{},...o!==void 0&&!ui(o)?{treeFilehandle:di(o)}:{},...Object.keys(l).length>0?{data:l}:{},...e!==void 0&&a.relativeTo===void 0?{relativeTo:e}:{},...r?{highlights:r.map(u=>Su(u,e))}:{},...i===void 0?{}:{region:Mu(i,e)},...s?{columnTracks:s.map(u=>Cu(u,e,c))}:{}}}var Y=m(A(),1),zl=m(hn(),1),Bl=m(pi(),1),Wl=m(I(),1),Xn=m(F(),1);var P=m(A(),1),Fe=m(F(),1);var ge=m(A(),1),At=m(F(),1);var gi=(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.treeAreaWidth,onDrag:e,style:{width:n.resizeHandleWidth}})}),wi=(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}})}),bi=(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 G=m(A(),1),ki=m(Je(),1),Fi=m(Ze(),1);var Si=m(_(),1),Et=(0,k.createSvgIcon)((0,Si.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");var Le=m(I(),1),Ln=m(F(),1);var V=m(A(),1);var Au=.011997600479904018;function Mi(n,e){return e===1?n*16:e===2?n*100:n}function xi(n){let e=Math.abs(n);return e<6?25:e>150?500:e>30?150:75}function Ci(n,e){let t=Au*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 C=n.current;if(!C)return;function L(v){let R=v.ctrlKey||v.metaKey,z=r&&!v.shiftKey&&Math.abs(v.deltaY)>=Math.abs(v.deltaX);if(o&&(R||z)){let K=C.getBoundingClientRect(),oe=Mi(v.deltaY,v.deltaMode),re=R?xi(oe):500;c.current+=oe/re,u.current=v.clientX-K.left,d.current=v.clientY-K.top,s.current||(s.current=!0,requestAnimationFrame(y=>{let D=h.current===null?16.67:y-h.current;h.current=y,o(Ci(c.current,Math.min(100,D)),u.current,d.current),c.current=0,s.current=!1})),v.preventDefault(),v.stopPropagation();return}let J=!!e&&v.deltaX!==0,j=!!t&&v.deltaY!==0;(J||j)&&(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 C.addEventListener("wheel",L,{passive:!1}),()=>{C.removeEventListener("wheel",L)}},[n,e,t,o,r]),(0,V.useEffect)(()=>{if(!p)return;function C(v){v.preventDefault();let R=v.clientX-f.current,z=v.clientY-g.current;(R&&e||z&&t)&&(i.current||(i.current=!0,requestAnimationFrame(()=>{e?.(R),t?.(z),i.current=!1,f.current=v.clientX,g.current=v.clientY})))}function L(){f.current=0,g.current=0,w(!1)}return window.addEventListener("mousemove",C,!0),window.addEventListener("mouseup",L,!0),()=>{window.removeEventListener("mousemove",C,!0),window.removeEventListener("mouseup",L,!0)}},[p,e,t]);function x(C){C.button===0&&(f.current=C.clientX,g.current=C.clientY,w(!0))}function S(C){C.preventDefault(),w(!1)}return{onMouseDown:x,onMouseUp:S}}function Tt(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),Ai=m(F(),1);var En=n=>`${Math.round(n*100)}%`,yi=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 Tu({model:n,track:e,col:t}){let{id:o,name:r}=e.model,i=Ir(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 Lu({model:n,col:e}){let t=n.columnStatsAt(e);if(!t)return null;let{total:o,consensusLetter:r,consensusFraction:i,gapFraction:s}=t,l=Dr(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||"-"," (",En(i),")",B.default.createElement("br",null),"Gaps: ",En(s),B.default.createElement("br",null),t.distribution.slice(0,6).map(([c,u])=>B.default.createElement("span",{key:c,style:{marginRight:8}},c," ",En(u/o))))}function Ru({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 ku({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,yi).join(", "),i.length>yi?"...":null)}var Fu=(0,Ai.observer)(function({model:n,track:e,col:t}){switch(e.model.kind){case"bar":return B.default.createElement(Tu,{model:n,track:e,col:t});case"logo":return B.default.createElement(Lu,{model:n,col:t});case"text":return B.default.createElement(Ru,{model:n,track:e,col:t});case"arc":return B.default.createElement(ku,{model:n,track:e,col:t});case"ruler":return B.default.createElement("div",null,B.default.createElement(Qe,{model:n,col:t}))}}),Ei=Fu;var Ti=m(ie(),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,Ti.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 Li=m(A(),1);function be(){let[n,e]=(0,Li.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 Ri({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 Hu=(0,G.lazy)(()=>import("./TrackInfoDialog-TYCMLUKG.js")),Hi=(0,Fi.makeStyles)()(n=>({button:{padding:0},row:{display:"flex","&:not(:last-child)":{boxShadow:`inset 0 -1px 0 ${n.palette.divider}`}}})),Pu=(0,Ln.observer)(function({model:e,track:t}){let[o,r]=(0,G.useState)(),i=()=>{r(void 0)},{drawLabels:s,fontSize:a,treeAreaWidth:l}=e,{model:{name:c,height:u}}=t,{classes:d}=Hi(),h=Math.min(u,a);return G.default.createElement("div",{style:{width:l,height:u,flexShrink:0,display:"flex",alignItems:"flex-start",justifyContent:"flex-end",gap:2,fontSize:h}},G.default.createElement("span",{title:c,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},s?c:""),G.default.createElement(Le.IconButton,{className:d.button,"aria-label":`${c} track menu`,style:{width:h,height:h,flexShrink:0},onClick:f=>{r(f.currentTarget)}},G.default.createElement(Et,null)),o?G.default.createElement(Le.Menu,{anchorEl:o,transitionDuration:0,open:!0,onClose:()=>{i()}},G.default.createElement(Le.MenuItem,{dense:!0,onClick:()=>{e.toggleTrack(t.model.id),i()}},"Hide track"),G.default.createElement(Le.MenuItem,{dense:!0,onClick:()=>{e.queueDialog(f=>[Hu,{onClose:f,model:t.model}]),i()}},"Get info")):null)}),Du=(0,Ln.observer)(function({model:n,track:e}){let{resizeHandleWidth:t,rowPanelsWidth:o,showColumnStats:r}=n,{model:{height:i}}=e,s=(0,G.useRef)(null),a=(0,G.useCallback)(f=>{n.doScrollX(f)},[n]);we({ref:s,onScrollX:a});let{classes:l}=Hi(),{anchor:c,onMouseMove:u,onMouseDown:d,onMouseLeave:h}=Ri({model:n,tooltip:r});return G.default.createElement("div",{className:l.row,style:{height:i}},G.default.createElement(Pu,{model:n,track:e}),G.default.createElement("div",{style:{width:o+t,flexShrink:0}}),G.default.createElement("div",{ref:s,"data-testid":`track_${e.model.id}`,tabIndex:-1,style:{outline:"none"},onKeyDown:f=>{Tt(n,f)&&f.preventDefault()},onMouseMove:f=>{s.current&&u(f,s.current)},onMouseDown:f=>{s.current&&d(f,s.current)},onMouseLeave:()=>{h()}},G.default.createElement(e.ReactComponent,{model:n,track:e}),c?G.default.createElement(ki.default,{clientPoint:c.clientPoint},G.default.createElement(Ei,{model:n,track:e,col:c.value})):null))}),Pi=Du;var et=m(A(),1),Ii=m(F(),1);var Di=20,Iu=(0,Ii.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:Di,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:Di,height:Math.max(s-i,20)}}))}),Oi=Iu;var O=m(A(),1),Cs=m(Rn(),1);var Vt=m(I(),1),ys=m(F(),1);var ve=m(A(),1),zi=m(hn(),1),Bi=m(Ze(),1),Ne=m(I(),1),Wi=m(F(),1),Ou=(0,Bi.makeStyles)()({page:{display:"flex",alignItems:"center",gap:12,padding:20},header:{display:"flex",alignItems:"center",gap:4,margin:"auto",marginLeft:10}}),Nu=(0,Wi.observer)(function({model:n,variant:e}){let{status:t}=n,{classes:o}=Ou();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(zi.LoadingEllipses,{message:r,component:"span"}),i?ve.default.createElement(Ne.Button,{variant:e==="page"?"outlined":"text",size:"small",onClick:()=>{i()}},"Cancel"):null)}),tt=Nu;var Pn=m(A(),1),Ki=m(Re(),1);var _i=m(_(),1),Vi=(0,k.createSvgIcon)((0,_i.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 Ui=m(F(),1);var zu={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=zu;var Bu={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"},kn=Bu;var Wu={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"},Fn=Wu;var Gu={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"},Hn=Gu;pr([gr]);var $i={A:Fn[500],C:kn[500],G:Hn[500],T:Rt[500],U:Rt[500]},_u={none:{},nucleotide:$i,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:$i,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=bt(_u,([n,e])=>[n,bt(e,([t,o])=>[t,wt(o).toHex()])]),Yi=new WeakMap;function ji(n){let e=Yi.get(n);return e||(e=bt(n,([t,o])=>[t.toUpperCase(),o]),Yi.set(n,e)),e}function Vu(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 $u=(0,Ui.observer)(function({model:n}){return Pn.default.createElement(Ki.default,{"data-testid":"color_scheme_menu",tooltip:"Color scheme",closeAfterItemClick:!0,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},menuItems:Vu(n)},Pn.default.createElement(Vi,null))}),Xi=$u;var ze=m(A(),1),da=m(Re(),1);var qi=m(_(),1),kt=(0,k.createSvgIcon)((0,qi.jsx)("path",{d:"M22 11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3z"}),"AccountTree");var Zi=m(_(),1),Ji=(0,k.createSvgIcon)((0,Zi.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 Qi=m(_(),1),Ft=(0,k.createSvgIcon)((0,Qi.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 ea=m(_(),1),ta=(0,k.createSvgIcon)((0,ea.jsx)("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"}),"Menu");var Dn=m(_(),1),na=(0,k.createSvgIcon)([(0,Dn.jsx)("circle",{cx:"12",cy:"12",r:"3.2"},"0"),(0,Dn.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 ma=m(F(),1);var On=m(A(),1);var oa=m(_(),1),ra=(0,k.createSvgIcon)((0,oa.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 In=m(_(),1),ia=(0,k.createSvgIcon)([(0,In.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,In.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 aa=m(_(),1),sa=(0,k.createSvgIcon)((0,aa.jsx)("path",{d:"M3 18h6v-2H3zM3 6v2h18V6zm0 7h12v-2H3z"}),"Sort");var la=m(_(),1),ca=(0,k.createSvgIcon)((0,la.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 Yu=(0,On.lazy)(()=>import("./FeatureDialog-XNHIA5PS.js")),ju=(0,On.lazy)(()=>import("./AnnotationFileDialog-34R7LFHB.js")),Ku="https://gmod.org/JBrowseMSA/tutorials/protein_family";function ua({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=>[ju,{handleClose:s,model:n}])}},{label:"How to get a domain file...",icon:ia,onClick:()=>{window.open(Ku,"_blank","noopener,noreferrer")}},{label:`Show annotations${i}`,disabled:r,icon:ca,checked:t,type:"checkbox",onClick:()=>{n.setShowDomains(!e)}},{label:`Use sub-row layout${i}`,disabled:r,checked:t?o:!1,icon:sa,type:"checkbox",onClick:()=>{n.setSubFeatureRows(!o)}},{label:`Filter annotations${i}`,icon:ra,disabled:r,onClick:()=>{n.queueDialog(s=>[Yu,{onClose:s,model:n}])}}]}var Uu=(0,ze.lazy)(()=>import("./MetadataDialog-2WT6EX4M.js")),Xu=(0,ze.lazy)(()=>import("./ExportSVGDialog-NMVUHFGY.js")),qu=(0,ma.observer)(({model:n})=>ze.default.createElement(da.default,{"data-testid":"file_menu",tooltip:"File",menuItems:[{label:"Return to import form",icon:Ft,onClick:()=>{n.reset()}},{label:"Metadata",icon:Ji,onClick:()=>{n.queueDialog(e=>[Uu,{model:n,onClose:e}])}},{label:"Annotations",type:"subMenu",subMenu:ua({model:n})},{label:"Export tree (Newick)",icon:kt,disabled:!!n.tree.noTree,onClick:()=>{n.exportNewick()}},{label:"Export SVG",icon:na,onClick:()=>{n.queueDialog(e=>[Xu,{onClose:e,model:n}])}}],anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"}},ze.default.createElement(ta,null))),ha=qu;var Be=m(A(),1),Ht=m(I(),1),fa=m(F(),1),Zu=(0,fa.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}),pa=Zu;var ot=m(A(),1),Pt=m(I(),1),Sa=m(F(),1);function wa(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 ba(n,e,t=50){let o=e.toLowerCase();return n.filter(r=>r.toLowerCase().includes(o)).slice(0,t)}function Ju(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:ga(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?ga(n,s,i):i>=1&&i<=a?i-1:void 0;return l===void 0?void 0:{col:l}}}function ga(n,e,t){let o=n.seqPosIndex(e)?.[t-1];return o===void 0?void 0:n.globalColToVisibleCol(o)}function va(n,e){let t=Ju(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 Nn="Go to row or column";function Qu(n){let{slotProps:e,inputProps:t}=n;return e?{slotProps:{...e,htmlInput:{...e.htmlInput,"aria-label":Nn}}}:{inputProps:{...t,"aria-label":Nn}}}var ed=(0,Sa.observer)(function({model:n}){let[e,t]=(0,ot.useState)(!1),o=wa(n);return o.length>1||n.numColumns>0?ot.default.createElement(Pt.Autocomplete,{freeSolo:!0,size:"small",options:o,filterOptions:(r,{inputValue:i})=>ba(r,i),value:null,blurOnSelect:!0,onInputChange:()=>{t(!1)},onChange:(r,i)=>{i&&t(!va(n,i))},style:{width:180,margin:"auto 8px"},renderInput:r=>ot.default.createElement(Pt.TextField,{...r,error:e,placeholder:Nn,title:"A row name, a column number, or name:residue",...Qu(r)})}):null}),Ma=ed;var Dt=m(A(),1),xa=m(Ze(),1),Ca=m(I(),1),ya=m(F(),1),td=(0,xa.makeStyles)()({container:{display:"flex",overflow:"hidden",margin:"auto",marginLeft:10},nameFirst:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},nameRest:{whiteSpace:"nowrap",flexShrink:0}}),nd=(0,ya.observer)(function({model:n}){let{mouseOverRowName:e,mouseCol:t}=n,{classes:o}=td();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(Ca.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,")"))}),Aa=nd;var It=m(A(),1);var Ea=m(_(),1),Ta=(0,k.createSvgIcon)((0,Ea.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning");var Ot=m(I(),1),La=m(F(),1),od=(0,La.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(Ta,{fontSize:"small"}),style:{margin:"auto",marginLeft:10,whiteSpace:"nowrap"},onClick:()=>{n.clearWarnings()}},e.length>1?`${e.length} warnings`:"Warning"))}),Ra=od;var zn=m(A(),1),Da=m(Re(),1);var ka=m(_(),1),Fa=(0,k.createSvgIcon)((0,ka.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune");var Ia=m(F(),1);function Nt(n,e,t){return{label:n,type:"radio",checked:e,onClick:t}}var rd={branchLength:"By branch length",input:"As written",ladderize:"Ladderize, small clades first",ladderizeReverse:"Ladderize, large clades first"};function id(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 ad(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 Ha(n){let{drawMsaLetters:e,hideGaps:t,bgColor:o,showColumnStats:r}=n;return[{label:"Tracks",type:"subMenu",subMenu:ad(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 Pa(n){let{drawTree:e,showBranchLen:t,labelsAlignRight:o,drawNodeBubbles:r,drawNodeLabels:i,drawLabels:s,showTreeOverview:a,treeOrder:l,treeRoot:c,rotated:u}=n;return[{label:"Order",type:"subMenu",subMenu:[...pt.map(d=>Nt(rd[d],l===d,()=>{n.setTreeOrder(d)})),{type:"divider"},{label:"Undo rotations",disabled:u.length===0,onClick:()=>{n.clearRotated()}}]},{label:"Root",type:"subMenu",subMenu:[Nt("As written",c===void 0,()=>{n.setTreeRoot(void 0)}),Nt("Midpoint",c==="midpoint",()=>{n.setTreeRoot("midpoint")}),...typeof c=="object"?[{...Nt(id(c.outgroup),!0,()=>{}),disabled:!0}]:[]]},{type:"divider"},Q("Show branch length",t,d=>{n.setShowBranchLen(d)}),Q("Show tree",e,d=>{n.setDrawTree(d)}),Q("Draw bubbles on tree branches",r,d=>{n.setDrawNodeBubbles(d)}),Q("Draw internal node labels",i,d=>{n.setDrawNodeLabels(d)}),Q("Show tree overview",a,d=>{n.setShowTreeOverview(d)}),Q("Tree labels align right",o,d=>{n.setLabelsAlignRight(d)}),Q("Draw labels",s,d=>{n.setDrawLabels(d)})]}var sd=(0,Ia.observer)(function({model:n}){return zn.default.createElement(Da.default,{"data-testid":"msa_settings_menu",tooltip:"Alignment settings",closeAfterItemClick:!1,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},menuItems:Ha(n)},zn.default.createElement(Fa,null))}),Oa=sd;var Bn=m(A(),1),zt=m(I(),1),Na=m(F(),1),ld=(0,Na.observer)(function({model:n}){let{currentAlignment:e,alignmentNames:t}=n,o=new Map;return t.length>0?Bn.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),Bn.default.createElement(zt.MenuItem,{key:s===0?r:`${r}\0${s}`,value:i},r)})):null}),za=ld;var U=m(A(),1);var Ba=m(_(),1),Wa=(0,k.createSvgIcon)((0,Ba.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 Ga=m(_(),1),_a=(0,k.createSvgIcon)((0,Ga.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 Wn=m(_(),1),Bt=(0,k.createSvgIcon)([(0,Wn.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,Wn.jsx)("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"},"1")],"ZoomIn");var ee=m(I(),1),$a=m(F(),1);function Va(n,e){return`${n.toLocaleString("en-US")} ${e}${n===1?"":"s"}`}var cd=(0,$a.observer)(function({model:n}){let[e,t]=(0,U.useState)(),{selectionSize:o,selectionFileSpan:r}=n;if(!o||!r)return null;let i=`${Va(o.columns,"column")} \xD7 ${Va(o.rows,"row")}`,s=[{text:"Copy as FASTA",Icon:_a,act:()=>{ti(n.selectionFasta)}},{text:"Zoom to selection",Icon:Bt,act:()=>{n.zoomToSelection()}},{text:"Clear selection",Icon:Wa,act:()=>{n.clearSelection()}}];return U.default.createElement(U.default.Fragment,null,U.default.createElement(ee.Tooltip,{title:`Columns ${r.start}-${r.end} selected. Shift-drag the alignment to select, Escape to clear`},U.default.createElement(ee.Button,{size:"small","aria-label":`Selection: ${i}`,endIcon:U.default.createElement(Et,null),onClick:a=>{t(a.currentTarget)},style:{margin:"auto 0 auto 8px",flexShrink:0,maxWidth:"100%",minWidth:0,textTransform:"none",whiteSpace:"nowrap"}},U.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis"}},i))),e?U.default.createElement(ee.Menu,{anchorEl:e,open:!0,transitionDuration:0,onClose:()=>{t(void 0)}},s.map(({text:a,Icon:l,act:c})=>U.default.createElement(ee.MenuItem,{key:a,dense:!0,onClick:()=>{c(),t(void 0)}},U.default.createElement(ee.ListItemIcon,null,U.default.createElement(l,{fontSize:"small"})),U.default.createElement(ee.ListItemText,null,a)))):null)}),Ya=cd;var Gn=m(A(),1),ja=m(Re(),1);var Ka=m(F(),1);var ud=(0,Ka.observer)(function({model:n}){let{rows:e}=n,t=e.length>Te;return Gn.default.createElement(ja.default,{"data-testid":"tree_settings_menu",tooltip:"Tree settings",closeAfterItemClick:!1,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},menuItems:[...Pa(n),...e.length>=2?[{label:"Advanced",type:"subMenu",subMenu:[{label:t?`Calculate neighbor joining tree (over ${Te} 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)}}}]}]:[]]},Gn.default.createElement(kt,null))}),Ua=ud;var Wt=m(A(),1),Za=m(Ze(),1);var Xa=m(_(),1),qa=(0,k.createSvgIcon)((0,Xa.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),Ja=m(F(),1),dd=(0,Za.makeStyles)()(n=>({warning:{display:"flex",alignItems:"center",gap:4,margin:"auto",marginLeft:10,whiteSpace:"nowrap",color:n.palette.warning.main,cursor:"help"}}));function md(n){return n<1e6?`${Math.round(n/1e3)} kB`:`${(n/1e6).toFixed(1)} MB`}var hd=(0,Ja.observer)(function({model:n}){let{unshareableData:e}=n,{classes:t}=dd();if(e.length===0)return null;let o=e.map(({what:r,bytes:i})=>`${r} (${md(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"))}),Qa=hd;var ae=m(A(),1),ms=m(Re(),1);var es=m(_(),1),ts=(0,k.createSvgIcon)((0,es.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),hs=m(F(),1);var me=m(A(),1),ns=m(pu(),1),fd="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",pd="M11.2 8.6h1.6v3.2h-1.6z",os="M.4 12 5 15V9z",rs="M23.6 12 19 9v6z",is="M12 .4 15 4H9z",as="M12 23.6 9 20h6z";function _t({arrows:n,...e}){return me.default.createElement(ns.default,{...e},me.default.createElement("path",{d:fd}),me.default.createElement("path",{d:pd}),n.map(t=>me.default.createElement("path",{key:t,d:t})))}function ss(n){return me.default.createElement(_t,{...n,arrows:[]})}function ls(n){return me.default.createElement(_t,{...n,arrows:[os,rs,is,as]})}function cs(n){return me.default.createElement(_t,{...n,arrows:[os,rs]})}function us(n){return me.default.createElement(_t,{...n,arrows:[is,as]})}var fs={label:"Scrolls the alignment",Icon:ss,helpText:"Ctrl+wheel zooms both axes at the cursor."},ds=[fs,{label:"Zooms both axes",axis:"both",Icon:ls,helpText:"Hold shift to pan while the wheel zooms."},{label:"Zooms columns only",axis:"horizontal",Icon:cs,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:us,helpText:"Holds the column width, so the alignment stays as wide while the rows grow or shrink."}],gd=(0,hs.observer)(function({model:e}){let{scrollZoom:t,scrollZoomAxis:o}=e,r=t?o:void 0,i=ds.find(s=>s.axis===r)??fs;return ae.default.createElement(ae.default.Fragment,null,ae.default.createElement(We.Tooltip,{title:"Zoom in"},ae.default.createElement(We.IconButton,{"aria-label":"Zoom in",onClick:()=>{e.zoomIn()}},ae.default.createElement(Bt,null))),ae.default.createElement(We.Tooltip,{title:"Zoom out"},ae.default.createElement(We.IconButton,{"aria-label":"Zoom out",onClick:()=>{e.zoomOut()}},ae.default.createElement(ts,null))),ae.default.createElement(ms.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"},...ds.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)}}))]},ae.default.createElement(i.Icon,null)))}),ps=gd;var _n=m(A(),1),Ss=m(Re(),1);var gs=m(_(),1),ws=(0,k.createSvgIcon)((0,gs.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 bs=m(_(),1),vs=(0,k.createSvgIcon)((0,bs.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 Ms=m(F(),1),wd=(0,Ms.observer)(function({model:n}){return _n.default.createElement(Ss.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:vs,onClick:()=>{n.resetZoom()}}]},_n.default.createElement(ws,null))}),xs=wd;var bd=(0,O.lazy)(()=>import("./AboutDialog-WT6GXMXU.js")),vd=(0,ys.observer)(function({model:n}){let[e,{height:t}]=(0,Cs.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(ha,{model:n}),O.default.createElement(Xi,{model:n}),O.default.createElement(Ua,{model:n}),O.default.createElement(Oa,{model:n}),O.default.createElement(ps,{model:n}),O.default.createElement(xs,{model:n}),O.default.createElement(pa,{model:n}),O.default.createElement(Ma,{model:n}),O.default.createElement("div",{style:{paddingLeft:20,margin:"auto"}},O.default.createElement(za,{model:n})),O.default.createElement("div",{style:{flex:"1 1 0",minWidth:0,display:"flex"}},O.default.createElement(Ya,{model:n}),O.default.createElement(Aa,{model:n})),O.default.createElement(Ra,{model:n}),O.default.createElement(Qa,{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=>[bd,{onClose:o}])}},O.default.createElement(zo,null))))}),As=vd;var Se=m(A(),1),Ts=m(I(),1),Ls=m(F(),1);var $t=m(A(),1),Es=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,Es.autorun)(()=>{n(i)}):void 0},[...o,e,t]),r}var Sd=(0,Ls.observer)(function({model:n}){let{minimapHeight:e,msaCanvasWidth:t,highResScaleFactor:o}=n,r=(0,Ts.useTheme)(),{unit:i,s,w:a,polygonHeight:l,polygonPoints:c}=Vo(n),u=Math.round(t*o),d=Math.round(12*o),h=$({draw:g=>{g.resetTransform(),g.clearRect(0,0,u,d);let p=_o({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:Bo,points:c})))}),Rs=Sd;var rt=m(A(),1),Us=m(F(),1);var Me=m(A(),1);var ks=m(_(),1),Fs=(0,k.createSvgIcon)((0,ks.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");var Ge=m(I(),1),Hs=m(F(),1);var Md=(0,Hs.observer)(function({model:n}){let{legends:e,showDomainLegend:t}=n,o=$o(e),r=t?Fs:Ho;return o.length>0?Me.default.createElement(Ge.Paper,{elevation:3,style:{position:"absolute",top:4,right:4,zIndex:fr,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}),Ps=Md;var se=m(A(),1),Ws=m(F(),1);var jt=m(A(),1),Kt=m(I(),1);function Vn(){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 te=m(A(),1),Os=m(Je(),1),Ns=m(I(),1),zs=m(F(),1);var Ds=m(A(),1);function Is({model:n,offsetX:e,offsetY:t}){let{anchor:o,hoverAt:r,clearAnchor:i}=be(),s=(0,Ds.useRef)(void 0);function a(g){let{left:p,top:w}=g.getBoundingClientRect(),{scrollX:x,scrollY:S}=n;return({clientX:C,clientY:L})=>({col:Math.floor((C-p+e-(n.scrollX-x))/n.colWidth),row:Math.floor((L-w+t-(n.scrollY-S))/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),x=c(w);n.setMousePos(x?w.col:void 0,x?w.row:void 0);let S=!!n.hoveredInsertion||n.mouseOverDomains.length>0;r(g,S||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 x=l(g,p),{col:S,row:C}=x,{mouseClickCol:L,mouseClickRow:v}=n,R=S===L&&C===v,z=c(x)&&!R;n.setMouseClickPos(z?S:void 0,z?C:void 0)}function f(){n.setMousePos(),i()}return{anchor:o,onMouseMove:u,onMouseDown:d,onClick:h,onMouseLeave:f}}var xd=(0,zs.observer)(function({model:n,offsetX:e,offsetY:t}){let{blockSize:o,highResScaleFactor:r}=n,i=(0,Ns.useTheme)(),{anchor:s,onMouseMove:a,onMouseDown:l,onClick:c,onMouseLeave:u}=Is({model:n,offsetX:e,offsetY:t}),d=o*r,h=$({draw:p=>{p.resetTransform(),p.clearRect(0,0,d,d),Sr({ctx:p,theme:i,offsetX:e,offsetY:t,model:n});let w=!n.actuallyShowDomains&&n.bgColor&&Wo();w&&Go({ctx:p,model:n,theme:i,offsetX:e,offsetY:t}),Er({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 te.default.createElement(te.default.Fragment,null,te.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?te.default.createElement(Os.default,{clientPoint:s.clientPoint},f?te.default.createElement(te.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=>te.default.createElement("div",{key:`${p.accession}-${p.start}-${p.end}`},te.default.createElement("b",null,p.name)," (",p.accession,") ",p.start,"-",p.end,p.description?te.default.createElement(te.default.Fragment,null,te.default.createElement("br",null),p.description):null))):null)}),Bs=xd;var Cd=(0,Ws.observer)(function({model:n}){let{MSA:e,msaFilehandle:t,height:o,msaCanvasWidth:r,blocks2d:i,scrollZoom:s,scrollX:a,scrollY:l}=n,c=(0,se.useRef)(null),u=(0,se.useCallback)(p=>{n.doScrollX(p)},[n]),d=(0,se.useCallback)(p=>{n.doScrollY(p)},[n]),h=(0,se.useCallback)((p,w,x)=>{n.zoomToPos(p,w,x,n.wheelZoomAxis)},[n]),{onMouseDown:f,onMouseUp:g}=we({ref:c,onScrollX:u,onScrollY:d,onZoom:h,scrollZoom:s});return se.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=>{Tt(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?se.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translate(${a}px, ${l}px)`,willChange:"transform"}},i.map(([p,w])=>se.default.createElement(Bs,{key:`${p}_${w}`,model:n,offsetX:p,offsetY:w}))):se.default.createElement(Vn,null))}),Gs=Cd;var Vs=m(A(),1),$s=m(ie(),1),Ys=m(I(),1),js=m(F(),1);function _s({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=x=>{n.fillRect(0,x*a+c,i,a)},w=x=>{n.fillRect(x*r+l,0,r,s)};yr({ctx:n,model:e,theme:t,offsetX:-l,offsetY:-c,width:i,height:s}),n.fillStyle=xr;for(let x of g)p(x);n.fillStyle=St,o!==void 0&&w(o),u!==void 0&&p(u),n.fillStyle=Mt,h!==void 0&&w(h),d!==void 0&&p(d)}var yd=(0,js.observer)(function({model:n}){let{height:e,msaCanvasWidth:t,highResScaleFactor:o}=n,r=(0,Ys.useTheme)(),i=t*o,s=e*o,a=$({draw:l=>{(0,$s.isAlive)(n)&&_s({ctx:l,model:n,theme:r})},width:i,height:s,deps:[n,r]});return Vs.default.createElement("canvas",{ref:a,id:"mouseover",width:i,height:s,style:{position:"absolute",top:0,left:0,width:t,height:e,zIndex:hr,pointerEvents:"none"}})}),Ks=yd;var Ad=(0,Us.observer)(function({model:n}){return rt.default.createElement("div",{style:{position:"relative"}},rt.default.createElement(Gs,{model:n}),rt.default.createElement(Ks,{model:n}),rt.default.createElement(Ps,{model:n}))}),Xs=Ad;var $n=m(A(),1),qs=m(F(),1);var Ed=(0,qs.observer)(function({model:n}){let{resolvedRowPanels:e,rowPanelsHeaderHeight:t,fontSize:o}=n;return e.length>0?$n.default.createElement("div",{style:{display:"flex",flexShrink:0,height:t,alignItems:"flex-end"}},e.map(r=>{let i=Tr(r.width);return $n.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}),Zs=Ed;var ce=m(A(),1),Yn=m(F(),1);var ke=m(A(),1),Js=m(Je(),1),Qs=m(I(),1),el=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 Td({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 Ld=(0,el.observer)(function({model:n,panel:e,offsetY:t}){let{anchor:o,hoverAt:r,clearAnchor:i}=be(),s=(0,Qs.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),Lr({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:x}=p.currentTarget.getBoundingClientRect(),S=Math.floor((p.clientY-x+t)/c),C=n.leaves[S]?.data.name,L=C===void 0?[]:Td({model:n,panel:e,name:C,x:p.clientX-w});r(p,C===void 0||L.length===0?void 0:{name:C,lines:L}),n.setMousePos(void 0,C===void 0?void 0:S)},onMouseLeave:()=>{i(),n.setMousePos(void 0,void 0)}}),o?ke.default.createElement(Js.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)}),tl=Ld;var Rd=(0,Yn.observer)(function({model:n,panel:e}){let t=(0,ce.useRef)(null),{height:o,blocksY:r,scrollY:i}=n,s=(0,ce.useCallback)(c=>{n.doScrollY(c)},[n]),{onMouseDown:a,onMouseUp:l}=we({ref:t,onScrollY:s});return ce.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"}},ce.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translateY(${i}px)`,willChange:"transform"}},r.map(c=>ce.default.createElement(tl,{key:c,model:n,panel:e,offsetY:c}))))}),kd=(0,Yn.observer)(function({model:n}){let{resolvedRowPanels:e}=n;return e.length>0?ce.default.createElement("div",{style:{display:"flex",flexShrink:0}},e.map(t=>ce.default.createElement(Rd,{key:t.id,model:n,panel:t}))):null}),nl=kd;var Xt=m(A(),1),ol=m(I(),1),rl=m(F(),1);var Fd=(0,rl.observer)(function({model:n}){let{treeAreaWidth:e,overviewHeight:t,highResScaleFactor:o}=n,r=(0,ol.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=ei({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):Qr({...h,theme:r}),i&&Mn({...h,rows:i.rows,color:r.palette.text.secondary});let f=n.treeOverviewFocusRows;f&&Mn({...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)}})}),il=Fd;var Kn=m(A(),1),Cl=m(F(),1);var ue=m(A(),1),Sl=m(ie(),1),Ml=m(F(),1);var qt=m(A(),1),al=m(I(),1),sl=m(F(),1);var Hd=(0,sl.observer)(function({model:n}){let{resolvedClades:e,cladeGutterWidth:t,rowHeight:o,treeAreaWidth:r,fontSize:i}=n,s=(0,al.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||!Wr(l))return null;let f=a+Vr(l),g=_r(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-Br,height:Gr(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)}))}),ll=Hd;var he=m(A(),1),fl=m(Je(),1),pl=m(Ze(),1),gl=m(I(),1),wl=m(F(),1);var ne=m(A(),1),le=m(I(),1),cl=m(F(),1),Pd=(0,ne.lazy)(()=>import("./TreeNodeInfoDialog-BFF6JRCO.js")),Dd=(0,cl.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 ne.default.createElement(le.Menu,{anchorReference:"anchorPosition",anchorPosition:{left:n.x,top:n.y},transitionDuration:0,open:!0,onClose:t},ne.default.createElement(le.MenuItem,{dense:!0,disabled:!0},s),l?ne.default.createElement(le.MenuItem,{dense:!0,onClick:()=>{e.queueDialog(h=>[Pd,{info:e.getRowData(s),model:e,nodeName:s,onClose:h}]),t()}},"More info..."):null,ne.default.createElement(le.MenuItem,{dense:!0,onClick:()=>{e.toggleCollapsed(a),t()}},c?`Expand ${d}`:`Collapse ${d}`),l?null:ne.default.createElement(le.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:ne.default.createElement(le.MenuItem,{dense:!0,onClick:()=>{e.toggleRotated(a),t()}},"Rotate this node"),u?null:ne.default.createElement(le.MenuItem,{dense:!0,onClick:()=>{e.rerootAt(a),t()}},"Reroot here"),l?ne.default.createElement(le.MenuItem,{dense:!0,onClick:()=>{e.drawRelativeTo(s),t()}},"Indicate differences from this row"):null,l&&i?ne.default.createElement(le.MenuItem,{dense:!0,onClick:()=>{e.drawRelativeTo(void 0),t()}},"Clear reference row"):null)}),ul=Dd;var ml=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 dl=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],jn=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!==jn)throw new Error(`Got v${i} data when expected v${jn}.`);let s=dl[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=dl.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,(jn<<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 x=e[w++],S=e[w++],C=e[w++],L=e[w++],v=h*((x+C)/2-o)|0,R=f*((S+L)/2-r)|0;u[p]=zd(v,R)}Od(u,e,s,0,t-1,i);let g=t*4;for(let p=0,w=0;p<a.length-1;p++){let x=a[p];for(;w<x;){let S=w,C=e[w++],L=e[w++],v=e[w++],R=e[w++];for(let z=1;z<i&&w<x;z++)C=Math.min(C,e[w++]),L=Math.min(L,e[w++]),v=Math.max(v,e[w++]),R=Math.max(R,e[w++]);s[g>>2]=S,e[g++]=C,e[g++]=L,e[g++]=v,e[g++]=R}}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]),x=d>=u;if(p)this._collectContained(d,w,h,u,g,i);else for(let S=d;S<w;S+=4){let C=s[S];if(o<C)continue;let L=s[S+1];if(r<L)continue;let v=s[S+2];if(e>v)continue;let R=s[S+3];if(t>R)continue;let z=l[S>>2]|0;if(x){let J=+(e<=C&&t<=L&&o>=v&&r>=R);f.push(z|J,h-1)}else(i===void 0||i(z,C,L,v,R))&&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 x=c.ids[0];if(x&1){if(c.pop(),f.push(x>>1),f.length===o)break;continue}c.pop();let S=x>>1,C=S<d,L=Math.min(S+h,Id(S,a));for(let v=S;v<L;v+=4){let R=s[v],z=s[v+1],J=s[v+2],j=s[v+3],K=Math.max(Math.max(R-e,e-J),0),oe=Math.max(Math.max(z-t,t-j),0),re=K*K+oe*oe;if(re>w)continue;let y=l[v>>2]|0;C?(i===void 0||i(y))&&(c.push(y<<1|1,re),p&&re<w&&(w=re)):c.push(y<<1,re)}}return c.clear(),f}};function Id(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 Od(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;Nd(n,e,t,f,g)}s.push(l,g,g+1,a)}}function Nd(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 zd(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 hl({model:n,offsetY:e}){let[t]=(0,ml.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 Bd=(0,pl.makeStyles)()(n=>({hover:{position:"absolute",pointerEvents:"none",zIndex:100,background:n.palette.action.hover}})),Wd=(0,wl.observer)(function({model:n,offsetY:e}){let{classes:t}=Bd(),o=(0,gl.useTheme)(),[r,i]=(0,he.useState)(),{clickMap:s,anchor:a,hitTest:l,onMouseMove:c,onMouseLeave:u}=hl({model:n,offsetY:e}),d=a?.value,{treeAreaWidth:h,blockSize:f,highResScaleFactor:g}=n,p=h,w=f,x=p*g,S=w*g,C=$({draw:v=>{v.resetTransform(),v.clearRect(0,0,x,S),Jr({ctx:v,model:n,offsetY:e,clickMap:s,theme:o})},width:x,height:S,deps:[n,s,e,o]}),L={width:p,height:w,top:e,left:0,position:"absolute"};return he.default.createElement(he.default.Fragment,null,r?he.default.createElement(ul,{node:r,model:n,onClose:()=>{i(void 0)}}):null,he.default.createElement("canvas",{ref:C,width:x,height:S,style:{...L,cursor:d?"pointer":"default"},onMouseMove:v=>{c(v)},onMouseLeave:()=>{u()},onClick:v=>{let R=l(v);R&&i({x:v.clientX,y:v.clientY,id:R.id,name:R.name,leaf:!R.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(fl.default,{clientPoint:a.clientPoint},a.value.name):null)}),bl=Wd;function vl({ctx:n,model:e}){let{rowHeight:t,treeAreaWidth: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=Mr;for(let d of l)u(d);s!==void 0&&s!==a&&!l.includes(s)&&u(s)}var Gd=(0,Ml.observer)(function({model:n}){let e=(0,ue.useRef)(null),{height:t,blocksY:o,treeAreaWidth:r,scrollY:i,highResScaleFactor:s}=n,a=(0,ue.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,Sl.isAlive)(n)&&vl({ctx:f,model:n})},width:u,height:d,deps:[n]});return ue.default.createElement("div",{ref:e,onMouseDown:l,onMouseUp:c,style:{height:t,position:"relative",width:r}},ue.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translateY(${i}px)`,willChange:"transform"}},o.map(f=>ue.default.createElement(bl,{key:f,model:n,offsetY:f})),ue.default.createElement(ll,{model:n})),ue.default.createElement("canvas",{ref:h,width:u,height:d,style:{position:"absolute",top:0,left:0,width:r,height:t,zIndex:1e3,pointerEvents:"none"}}))}),xl=Gd;var _d=(0,Cl.observer)(function({model:n}){let{treeAreaWidth:e}=n;return Kn.default.createElement("div",{style:{overflow:"hidden",flexShrink:0,width:e}},Kn.default.createElement(xl,{model:n}))}),yl=_d;var Jt=m(A(),1),Al=m(I(),1),El=m(F(),1);var Vd=(0,El.observer)(({model:n})=>{let{treeAreaWidth:e,marginLeft:t,treeScaleBar:o}=n,r=(0,Al.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(Nr,{bar:o,marginLeft:t,y:qe,color:r.palette.text.primary})):null)}),Tl=Vd;var $d=(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(il,{model:n}):null,P.default.createElement(Tl,{model:n})),P.default.createElement(Zs,{model:n}),P.default.createElement("div",{style:{width:o,flexShrink:0}}),e?P.default.createElement(Rs,{model:n}):null)}),Yd=(0,Fe.observer)(function({model:n}){let{mouseCol:e,mouseClickCol:t,colWidth:o,scrollX:r,treeAreaWidth:i,rowPanelsWidth:s,resizeHandleWidth:a,totalTrackAreaHeight:l,msaCanvasWidth:c,resolvedSelection:u}=n,d=[{start:u?.startCol,end:u?.endCol,color:Cr},{start:e,end:e,color:St},{start:t,end:t,color:Mt}];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}})))}),jd=(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(Yd,{model:n}),e.map(t=>P.default.createElement(Pi,{key:t.model.id,model:n,track:t})))}),Kd=(0,Fe.observer)(function({model:n}){let{showVerticalScrollbar:e}=n;return P.default.createElement("div",{style:{display:"flex"}},P.default.createElement(yl,{model:n}),P.default.createElement(nl,{model:n}),P.default.createElement(gi,{model:n}),P.default.createElement(Xs,{model:n}),e?P.default.createElement(Oi,{model:n}):null)}),Ud=(0,Fe.observer)(function({model:n}){return P.default.createElement("div",{style:{position:"relative"}},P.default.createElement($d,{model:n}),P.default.createElement(jd,{model:n}),P.default.createElement(Kd,{model:n}))}),Xd=(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(As,{model:n}),P.default.createElement(Ud,{model:n})),P.default.createElement(wi,{model:n}),r?P.default.createElement(P.Suspense,{fallback:null},P.default.createElement(r,{...i})):null):null)}),Ll=Xd;var N=m(A(),1),_e=m(hn(),1),X=m(I(),1),Il=m(F(),1);var st=m(A(),1),en=m(I(),1),Hl=m(F(),1);var Rl=`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 kl="(((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 Fl="https://jbrowse.org/genomes/multiple_sequence_alignments",qd="https://jbrowse.org/genomes/newick_trees",He="https://gmod.org/JBrowseMSA/demo/data",Zd=[{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:`${qd}/sarscov2phylo.pub.ft.nh`},{label:"Pfam SARS-CoV-2 families, multi-Stockholm with domains",msa:`${Fl}/pfam-cov2.stock`,gff:`${Fl}/pfam-cov2-domains.gff`},{label:"Small protein alignment and tree",inline:{msa:Rl,tree:kl}}];function Un(n){return n?{uri:n,locationType:"UriLocation"}:void 0}var Jd=(0,Hl.observer)(function({model:n}){return st.default.createElement("ul",null,Zd.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,Un(t),Un(o),Un(r))}catch(a){console.error(a),n.setError(a)}}},st.default.createElement(en.Typography,{component:"span"},e)))))}),Pl=Jd;var Dl="@media (max-width: 640px)",Qd=(0,Il.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(X.Container,null,N.default.createElement(X.Box,{sx:{width:"50%",[Dl]:{width:"100%"}}},a?N.default.createElement(_e.ErrorMessage,{error:a}):null,N.default.createElement(X.Typography,null,"Open an MSA file (FASTA, Stockholm, Clustal, A3M or EMF format) and/or a tree file (Newick format)."),N.default.createElement(X.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(X.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",gap:"40px",[Dl]:{flexDirection:"column",alignItems:"stretch",gap:"16px"}}},N.default.createElement("div",null,N.default.createElement("div",null,N.default.createElement(X.Typography,null,"MSA file or URL"),N.default.createElement(_e.FileSelector,{location:e,setLocation:t})),N.default.createElement("div",null,N.default.createElement(X.Typography,null,"Tree file or URL"),N.default.createElement(_e.FileSelector,{location:o,setLocation:r})),N.default.createElement("div",null,N.default.createElement(X.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(X.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(X.Typography,null,"Examples"),N.default.createElement(Pl,{model:n}))))}),Ol=Qd;var Nl=(0,Xn.observer)(function({model:n,error:e}){return Y.default.createElement("div",null,Y.default.createElement(zl.ErrorMessage,{error:e}),Y.default.createElement(Wl.Button,{variant:"contained",color:"primary",onClick:()=>{n.reset()}},"Return to import form"))}),em=(0,Xn.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 Y.default.createElement("div",null,Y.default.createElement(Bl.ErrorBoundary,{key:i,FallbackComponent:u=>Y.default.createElement(Nl,{model:n,error:u.error})},t?e?Y.default.createElement(tt,{model:n,variant:"page"}):Y.default.createElement(Ll,{model:n}):l?Y.default.createElement(Nl,{model:n,error:r}):Y.default.createElement(Y.default.Fragment,null,c?Y.default.createElement(tt,{model:n,variant:"page"}):null,Y.default.createElement("div",{style:{display:c?"none":void 0}},Y.default.createElement(Ol,{model:n})))))}),qn=em;var E=m(A(),1),ou=m(Zn(),1),ru=m(Rn(),1),ln=m(ie(),1),iu=m(Vl(),1),Ye=m(Xe(),1);var H=m(Fo(),1),Qc=m(gu(),1),Pe=m(Yl(),1),b=m(ie(),1),W=m(Xe(),1);function jl(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 Jn({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)",Kl="#d88",tm="rgb(192, 72, 192)",nm="rgb(204, 77, 204)",Ul="#8f8",Xl="rgb(26,204,26)",om="rgb(240, 128, 128)",rm="rgb(240, 144, 72)",im="rgb(204, 204, 0)",ql="rgb(26, 179, 179)";function Zl(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"),x=o("E"),S=o("D"),C=o("T"),L=o("S"),v=o("G"),R=o("Y"),z=o("N"),J=r+i+s+a+l+c+u+d+h+f+R,j=p+g,K=w+x,oe=x+S,re=C+L,y=je=>je/t,D={};return y(J)>.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(j)>.6||y(p)>.8||y(g)>.8||y(w)>.8)&&(D.K=Kl,D.R=Kl),(y(j)>.6||y(K)>.5||y(x)>.8||y(w)>.8||y(S)>.8)&&(D.E=tm),(y(j)>.6||y(oe)>.5||y(p)>.8||y(g)>.8||y(w)>.8)&&(D.D=nm),(y(z)>.5||y(R)>.85)&&(D.N=Ul),(y(j)>.6||y(K)>.6||y(w)>.85||y(x)>.85||y(p)>.85||y(g)>.85)&&(D.Q=Ul),(y(J)>.6||y(re)>.5||y(L)>.85||y(C)>.85)&&(D.S=Xl,D.T=Xl),y(d)>.85&&(D.C=om),v>0&&(D.G=rm),f>0&&(D.P=im),(y(J)>.6||y(r)>.85||y(R)>.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 Jl({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),Ql=m(I(),1),Qn=m(F(),1);var am=(0,Qn.observer)(function({model:n,track:e,offsetX:t}){let{blockSize:o,highResScaleFactor:r}=n,{height:i}=e.model,s=(0,Ql.useTheme)(),a=o*r,l=i*r,c=$({draw:u=>{u.resetTransform(),u.clearRect(0,0,a,l),Or({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}})}),sm=(0,Qn.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(am,{key:c,model:n,track:e,offsetX:c}))),Ve.default.createElement(bi,{model:n,track:e}))}),ct=sm;function ec(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 lm=[["#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"]],tc=lm,cm={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 nc(n){return n===void 0?void 0:cm[n]}function tn(n,e){let t=n.length,o=e??tc[t-1];return o&&t<=o.length?Object.fromEntries(n.map((r,i)=>[r,o[i]])):Object.fromEntries(n.map((r,i)=>[r,wt({h:i*360/t,s:60,l:60}).toHex()]))}function eo(n,e,t="image"){let o=n;return`${(o?.uri??o?.localPath??o?.name)?.split(/[?#]/)[0]?.split(/[/\\]/).pop()?.replace(/\.[^.]*$/,"")||t}.${e}`}var um=new Set(["row","start","end"]),oc=new WeakMap;function rc(n){return n.map(e=>{let t=oc.get(e);if(t)return t;let o=dm(e);return oc.set(e,o),o})}function dm(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])=>!um.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 ic=m(Fo(),1);function mm(n){return typeof n=="string"?n:n?.message}async function ac(n,e,{fetcher:t=ic.fetchAndMaybeUnzipText,controller:o=new AbortController}={}){try{return await t(n,{signal:o.signal,statusCallback:r=>{let i=mm(r);e(i?{msg:i,onCancel:()=>{o.abort()}}:void 0)}})}finally{e(void 0)}}function sc(n){return n instanceof DOMException&&n.name==="AbortError"}function lc(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 de=m(ie(),1);function cc(n=gt){return de.types.model({tree:de.types.maybe(de.types.string),msa:de.types.maybe(de.types.string),treeMetadata:de.types.maybe(de.types.string),gff:de.types.maybe(de.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 uc=m(ie(),1);function dc(){return uc.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(ie(),1);var nn=m(ie(),1);function T(n,e){return typeof nn.types.stripDefault=="function"?nn.types.stripDefault(n,e):nn.types.optional(n,e)}var hm=["stockholm","a3m","fasta","emf","clustal"];function mc(){return ye.types.model({bgColor:T(ye.types.boolean,qo),colorSchemeName:T(ye.types.string,ht),customColorScheme:ye.types.frozen(),showColumnStats:T(ye.types.boolean,Zo),msaFormat:ye.types.maybe(ye.types.enumeration("MSAFormat",hm))}).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 q=m(ie(),1);function hc(){return q.types.model({drawLabels:T(q.types.boolean,Jo),labelsAlignRight:T(q.types.boolean,Qo),treeAreaWidth:T(q.types.number,er),treeWidth:T(q.types.number,ft),showBranchLen:T(q.types.boolean,tr),treeOrder:T(q.types.enumeration("TreeOrder",[...pt]),nr),drawTree:T(q.types.boolean,or),drawNodeBubbles:T(q.types.boolean,rr),drawNodeLabels:T(q.types.boolean,ir),showTreeOverview:T(q.types.boolean,ar),overviewHeight:T(q.types.number,sr),autoTreeAreaWidth:T(q.types.boolean,!1)}).actions(n=>({setTreeAreaWidth(e){n.treeAreaWidth=Math.round(e)},setTreeWidth(e){n.treeWidth=Math.round(e)},setLabelsAlignRight(e){n.labelsAlignRight=e},setDrawTree(e){n.drawTree=e},setAutoTreeAreaWidth(e){n.autoTreeAreaWidth=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 gc="ARNDCQEGHILKMFPSTWYVBZX*",fm=[[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]],wc=gc.length,pm=Int8Array.from(fm.flat()),no=new Int8Array(128).fill(-1);for(let n=0;n<wc;n++){let e=gc[n];no[e.charCodeAt(0)]=n,no[e.toLowerCase().charCodeAt(0)]=n}var on=-2;function fc(n,e){if(e>=n.length)return on;let t=n.charCodeAt(e);return t-45>>>0<=1?on:t<128?no[t]:-1}function to(n,e){return n<0||e<0?-4:pm[n*wc+e]}function gm(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=fc(n,l),u=fc(e,l),d=c===on,h=u===on;d&&h||(o++,!(d||h)&&(r+=to(c,u),i+=Math.max(to(c,c),to(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 wm(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]=gm(n[o][1],n[r][1])}return t}function bm(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 S=0;S<r.length;S++)r[S]!==void 0&&a.push(S);let l=new Map;for(let S of a){let C=0;for(let L of a)S!==L&&(C+=o[S][L]);l.set(S,C)}let c=1/0,u=-1,d=-1;for(let S=0;S<a.length;S++)for(let C=S+1;C<a.length;C++){let L=a[S],v=a[C],R=(i-2)*o[L][v]-l.get(L)-l.get(v);R<c&&(c=R,u=L,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 x={left:r[u],right:r[d],leftLength:p,rightLength:w};for(let S of a)if(S!==u&&S!==d){let C=(o[u][S]+o[d][S]-h)/2;o[u][S]=Math.max(0,C),o[S][u]=Math.max(0,C)}r[d]=void 0,r[u]=x,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 pc(n,e){return e===void 0?n:`${n}:${e.toFixed(6)}`}function vm(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?pc(o.get(i.left),i.leftLength):"",a=i.right?pc(o.get(i.right),i.rightLength):"";o.set(i,`(${s},${a})`)}}return o.get(n)}function bc(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=wm(n),o=bm(t,e);return vm(o)+";"}var Sm={$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 ro(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 oo(n){let e=[],t=0;for(;t<n.length;){let o=n.indexOf("{",t);if(o===-1)break;let r=ro(n,o);if(r===-1)break;e.push(n.slice(o+1,r-1).trim()),t=r}return e}function Mm(n,e){let t=n.indexOf("{",e);if(t===-1)return;let o=ro(n,t);return o===-1?void 0:n.slice(t+1,o-1).trim()}function vc(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=xm(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(oo(o).flatMap(s=>{let a=Cm(s);return a?[[a.id,Sm[a.name]||a.name]]:[]}));return oo(r).flatMap(s=>{let a=ym(s);if(!a)return[];let{features:l=[],...c}=a;return[{...c,...Object.fromEntries(l.map(u=>[i[u.featureid],u.value]))}]})}function xm(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=ro(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 Cm(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 ym(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?Mm(n,o):void 0;return{id:parseInt(e[1],10),...t?{parent:parseInt(t[1],10)}:{},features:r?oo(r).flatMap(i=>{let s=Am(i);return s?[s]:[]}):[]}}function Am(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 Sc={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"},io=[...new Set(Object.values(Sc))],Em=Math.log2(io.length),Mc=new Int8Array(Fr).fill(-1);for(let[n,e]of Object.entries(Sc))Mc[kr(n)]=io.indexOf(e);function xc(n){let e=new Float64Array(io.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=Mc[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/Em)*(1-l)}}return i})}function Cc(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 yc(n){return n.some(e=>e.length!==void 0)}function Tm(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}=Cc(n);if(!r.has(e))return n;let i=yc(o),s=r.get(e)===n?Tm(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 Ac(n){let{order:e,parents:t}=Cc(n),o=e.filter(p=>!p.children?.length);if(o.length<2)return n;let r=yc(e),i=p=>r?p.length??0:1;function s(p){let w=new Map([[p,0]]),x=new Map,S=[p];for(;S.length>0;){let C=S.pop(),L=w.get(C),v=t.get(C);v&&!w.has(v)&&(w.set(v,L+i(C)),x.set(v,C),S.push(v));for(let R of C.children??[])w.has(R)||(w.set(R,L+i(R)),x.set(R,C),S.push(R))}return{dist:w,via:x}}function a(p){return o.reduce((w,x)=>p.get(x)>p.get(w)?x: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 ao(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 Ec(n,e){return e+ao(n.length,t=>n[t]-t>e)}function Tc(n,e){let t=Lc(n,e);return n[t]===e?void 0:e-t}function Lc(n,e){return ao(n.length,t=>n[t]>=e)}function $e(n,e){return e-Lc(n,e)}function Rc(n,e){if(!n)return;let t=ao(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,nc(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 kc(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 Lm=/[\s(),:;[\]']/;function Rm(n){return Lm.test(n)?`'${n.replaceAll("'","''")}'`:n}function Fc(n){let e=new Map;for(let t of Do(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+=Rm(r)),i!==void 0&&(s+=`:${i}`),e.set(t,s)}return`${e.get(n)};`}var Hc={">":"<",")":"(","]":"[","}":"{"},km=new Set(Object.values(Hc));function Pc(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=Hc[s];km.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 Wm(n){return n.startsWith("BioTreeContainer")?lc(vc(n)):ni(n.startsWith("SEQ")?Po(n).tree:n)}var Gm={bar:40,logo:80,arc:50,ruler:20},Oc=new Set(["bar","logo","arc"]),_m=new Set(["sequence-logo","position-ruler"]),Vm=n=>`own:${n}`,$m="#4e79a7",Ym="#e15759",jm="#d9d9d9",Km=.1;function Nc(n,e){return n.width??(n.kind==="features"?mr:e.rowHeight)}function Um(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 so(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 zc(n,e,t){let o=new Map,r=i=>{let s=o.get(i);if(s!==void 0)return s;let a=wr(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?jm:t[i.accession]);return[i,{fill:a,stroke:r(a)}]}))}function Bc(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 Xm(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 Wc(n,e){return n.position==="strandpile"?Xm(e):new Map(e.map(([t,o])=>[t,lt(o)]))}function qm({panel:n,width:e,colWidth:t,domainBands:o,annotationsByRow:r,shifts:i}){if(n.x==="column")return Wc(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 Wc(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)*Km}))]))}function Gc(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 _c=new WeakMap;function Zm(n){let e=_c.get(n);return e===void 0&&(e=JSON.stringify(n).length,_c.set(n,e)),e}function eu(n){return(n??[]).map(Zm)}function Jm(n,e){let t=eu(n),o=n?.filter((r,i)=>t[i]<=e);return o?.length?{columnTracks:o}:{}}var Qm=new Set(["id","type","height","drawMsaLetters","scrollZoom","scrollZoomAxis","bgColor","colorSchemeName","customColorScheme","showColumnStats","drawLabels","labelsAlignRight","treeAreaWidth","treeWidth","showBranchLen","treeOrder","drawTree","drawNodeBubbles","drawNodeLabels","showTreeOverview","overviewHeight","autoTreeAreaWidth","turnedOffTracks","trackHeights","hideGaps","allowedGappyness","subFeatureRows","showDomainLegend"]);function Vc(n,e,t){return n.get(e)??(t||_m.has(e))}var eh=new Set(["collapse","focus","rotate"]),$c=[],Yc=[];function th(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?xt(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=Sn(e);return n.flatMap(r=>{let i=th(r,e,o,t),s=eh.has(r.mark);return i&&!(s&&i.nodeId===void 0)?[{...i,mark:r.mark,color:bn(r.color??cr,ur),markColor:r.color,label:r.label}]:[]})}var nh={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 lo(n,{collapsed:e,rotated:t,order:o,showOnly:r}){let i=Oe(n,a=>a.children);Oo(i,a=>a.children.length>0?0:1);let s=nh[o];if(s&&No(i,s),t.length>0){let a=new Set(t);Io(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?Kr(l):l.parent?.children&&(l.parent.children=l.parent.children.filter(c=>c.data.id!==a)))}return i}function tu(n,e){let t=Sn(n),o=xt(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=xt(n,i,t);return s===n?void 0:s}function oh(n,e){let t=new Map;for(let i of nu(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 Ct(Ac(o));let r=tu(Oe(n,i=>i.children),e.outgroup);return r?Ct(rn(o,t.get(r.data))):n}function Kc(n){return[Math.round(n.xMin-.5),Math.round(n.xMax-.5)]}var Uc=new Set(["featureFill","featureLabel"]),Xc=new WeakMap;function qc(n){return n.rowEnd-n.rowStart===n.structEnd-n.structStart}function Zc(n,e){return n-e>.5}function rh(n,e){return!!n?.some(([t,o])=>e>=t&&e<=o)}function Jc(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 ih(n){let[e]=n;return e!==void 0&&n.every(t=>t===e)?e:void 0}function nu(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 ah({maxInlineSnapshotBytes:n=gt}={}){return b.types.compose(dc(),hc(),mc(),b.types.model("MsaView",{id:Pe.ElementId,showDomains:T(b.types.boolean,!0),showDomainLegend:T(b.types.boolean,!0),hideGaps:T(b.types.boolean,!0),allowedGappyness:T(b.types.number,100),subFeatureRows:T(b.types.boolean,!1),type:b.types.literal("MsaView"),drawMsaLetters:T(b.types.boolean,Yo),scrollZoom:T(b.types.boolean,jo),scrollZoomAxis:T(b.types.enumeration("ScrollZoomAxis",[...Ko]),Uo),height:T(b.types.number,550),rowHeight:T(b.types.number,16),scrollY:T(b.types.number,0),scrollX:T(b.types.number,0),colWidth:T(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:T(b.types.number,0),collapsed:T(b.types.array(b.types.string),[]),rotated:T(b.types.array(b.types.string),[]),treeRoot:b.types.frozen(),showOnly:b.types.maybe(b.types.string),turnedOffTracks:T(b.types.map(b.types.boolean),{}),trackHeights:T(b.types.map(b.types.number),{}),columnTracks:T(b.types.array(b.types.frozen()),[]),residueMappings:T(b.types.array(b.types.frozen()),[]),data:b.types.optional(cc(n),{}),turnedOffFeatures:T(b.types.map(b.types.boolean),{}),relativeTo:b.types.maybe(b.types.string),highlightColumns:b.types.frozen(),highlights:T(b.types.array(b.types.frozen()),[]),features:T(b.types.array(b.types.frozen()),[]),selection:b.types.frozen(),region:b.types.frozen(),clades:T(b.types.array(b.types.frozen()),[]),encodings:T(b.types.array(b.types.frozen()),[]),rowPanels:T(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,W.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,W.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,W.compareStructural)(e.treeRoot,t)||(0,W.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,...rc(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?ji(t):nt[o]??nt[ht]},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=eu(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,Um(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?oi(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?Ct(Wm(t)):this.MSA?.getTree()??{noTree:!0,children:[],id:"empty",name:"empty"}},get tree(){let t=this.inputTree;return e.treeRoot&&!t.noTree?oh(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?Yc:jc(e.clades,Oe(this.tree,t=>t.children),this.rowNamesSet)},get cladeGutterWidth(){return $r({clades:this.resolvedClades,rowHeight:e.rowHeight,fontSize:this.fontSize})},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 lo(this.tree,{collapsed:e.collapsed,rotated:e.rotated,order:e.treeOrder,showOnly:e.showOnly})},get treeNewick(){return Fc(lo(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=lo(this.tree,{collapsed:e.collapsed,rotated:e.rotated,order:e.treeOrder}),o=fe(t).length;Yr(t,o,1);let r=Math.max(t.data.length||0,0),i=Xr(t)-r;return qr(t,-r,i?1/i:0),{root:t,numTips:o,maxDepthToLeaf:Ur(t),showBranchLen:e.showBranchLen&&i>0}},get treeOverviewClades(){let t=this.treeOverviewLayout;if(!t||e.clades.length===0)return Yc;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?Kc(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=Zr(r,a+.5,l+.5);for(;!c.children&&c.parent;)c=c.parent;return c===r?void 0:{id:c.data.id,rows:Kc(c)}},get rowPanelsWidth(){return(0,H.sum)(e.rowPanels.map(t=>Nc(t,e)))},get rowPanelsHeaderHeight(){return e.rowPanels.length>0?dr:0},get msaAreaWidth(){return e.width-e.treeAreaWidth-this.rowPanelsWidth-e.resizeHandleWidth},get treeAreaWidthMinusMargin(){return e.treeAreaWidth-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=vr(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=Xc.get(o);r||(r=new Map,Xc.set(o,r));let i=r.get(t);if(!i){let s=o.getRow(t);if(!s)return;i=kc(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?vt(this.blanks,o):o).toUpperCase())},get fontSize(){return Math.min(Math.max(6,e.rowHeight-3),18)},get colStats(){return Hr(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=Rr(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)=>Zl(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 Pr(this.sequenceType)},get propertyConservation(){return this.sequenceType==="amino"?xc(this.colStats):[]},get treeLayout(){return jr(this.root,{get rowHeight(){return e.rowHeight},get treeWidth(){return e.treeWidth}})},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?e.treeWidth:0},get pxPerBranchLength(){let t=this.rootToTipLength;return this.showBranchLenEffective&&t?e.treeWidth/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>=Xo&&e.colWidth>e.rowHeight/2},get showTreeText(){return e.drawLabels&&e.rowHeight>=gn}})).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 x=g?.[w];x!==void 0&&(f[x]=p)}),f},l=u=>i?br(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??Gm[o]??e.rowHeight},columnTrackModel(o){let r=t.get(o);return r||(r=(0,W.computed)(()=>{let i=Oc.has(o.kind)?Vm(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 labelWidthMap(){let{showTreeText:t,leaves:o}=e;return t?new Map(o.map(r=>{let{name:i}=r.data,s=e.rowDataOf(i)?.genome||i;return[i,zr(s,wn)]})):new Map},get labelWidthScale(){return e.fontSize/wn},get labelsWidth(){let t=0;for(let o of this.labelWidthMap.values())o>t&&(t=o);return t*this.labelWidthScale},get secondaryStructureConsensus(){return e.MSA?.secondaryStructureConsensus},get secondaryStructureArcs(){let{blanks:t,hideGapsEffective:o}=e,r=this.secondaryStructureConsensus;if(r)return Pc(o?vt(t,r):r).map(({start:i,end:s,pseudoknot:a})=>({start:i,end:s,color:a?Ym:$m}))},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?vt(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:Oc.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=>!Vc(e.turnedOffTracks,t.model.id,t.model.defaultOff))},get showHorizontalScrollbar(){return Zc(e.totalWidth,e.msaAreaWidth)},visibleColToRowLetter(t,o){return e.rowMap.get(t)?.[this.visibleColToGlobalCol(o)]},visibleColToSeqPos(t,o){return Rc(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?Tc(o,t):t},visibleColToGlobalCol(t){let{blanks:o,hideGapsEffective:r}=e;return r?Ec(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)qc(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(qc)}))},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:!rh(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 ec(e.pxPerBranchLength,e.treeAreaWidth-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 Zc(e.totalHeight,e.msaAreaHeight)}})).views(e=>({get dataInitialized(){return!!(e.data.msa||e.data.tree)&&!e.error},get blocksX(){return Jn({viewportSize:e.msaAreaWidth,viewportPos:-e.scrollX,blockSize:e.blockSize,mapSize:e.totalWidth})},get blocksY(){return Jn({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>Te)throw new Error(`Neighbor joining here is capped at ${Te} 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(bc(t))},rerootAt(t){let o=Ie(Oe(e.tree,i=>i.children),i=>i.data.id===t);if(!o?.parent)return;let r=tu(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,W.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,W.transaction)(()=>{let s=(-e.scrollX+o)/e.colWidth,a=(-e.scrollY+r)/e.rowHeight;i!=="vertical"&&(e.colWidth=(0,H.clamp)(e.colWidth*t,dt,Ee)),i!=="horizontal"&&(e.rowHeight=(0,H.clamp)(e.rowHeight*t,mt,Ee)),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?ri(t):[])},applyGFFText(t){this.setAnnotations(ai(ii(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,!Vc(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}=Ar({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 zc(e.filteredAnnotations,this.featureFillEncoding,this.fillPalette)},get featureLabels(){let t=this.resolvedEncodings.find(o=>o.channel==="featureLabel");return t?Bc(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)Uc.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)=>vn(l)-vn(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 $c;let r=(this.domainBands.get(o)??[]).filter(i=>t>=i.startCol&&t<i.endCol).map(i=>i.annotation);return r.length>0?r:$c},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 Jc([...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?Jc(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 jl(s,i.start,i.end)},columnStatsAt(t){let{colStats:o,conservation:r,propertyConservation:i}=e;return Jl({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,...Uc.has(o.channel)?Gc(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?Gc(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?zc(s,d,o):this.featureColors,labels:h?Bc(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:so(t,a.field,l),legend:c}})},get resolvedRowPanels(){let t=this.rowPanelScales,o=0;return e.rowPanels.map((r,i)=>{let s=Nc(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:qm({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?so(e.rowData,t.field,t.colorOf):void 0},get rowTints(){let t=this.resolvedEncodings.find(r=>r.channel==="rowTint");if(!t)return;let o=so(e.rowData,t.field,t.colorOf);return e.rowNames.map(r=>{let i=o.get(r);return i&&bn(i,lr)})},get branchColors(){let t=this.resolvedEncodings.find(s=>s.channel==="branch");if(!t)return;let o=nu(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?ih(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])=>Qm.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-B7RCHRO3.js"),r=await o(e,t),i=new Blob([r],{type:"image/svg+xml"});Cn(i,eo(e.msaFilehandle,"svg"))},exportNewick(){let t=new Blob([e.treeNewick],{type:"text/plain"});Cn(t,eo(e.treeFilehandle??e.msaFilehandle,"nwk","tree"))},setFilter(t,o){o?e.turnedOffFeatures.delete(t):e.turnedOffFeatures.set(t,!0)},fit(){(0,W.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,mt,Ee)),e.scrollY=0},zoomToRegion(t){let o=e.visibleSpan(t);!o||!e.viewInitialized||(0,W.transaction)(()=>{e.colWidth=(0,H.clamp)(e.msaCanvasWidth/(o.endCol-o.startCol+1),dt,Ee),e.scrollX=(0,H.clamp)(-o.startCol*e.colWidth,e.maxScrollX,0)})},zoomToSelection(){let{selection:t,resolvedSelection:o}=e;!t||!o||(0,W.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),mt,Ee),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,x)=>w-x),[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,dt,Ee)),e.scrollX=0},afterCreate(){if(e.highlightColumns?.length&&e.setHighlightedColumns(e.highlightColumns),(0,b.addDisposer)(e,(0,W.reaction)(()=>e.dataInitialized&&!(e.treeFilehandle&&!e.data.tree)?{clades:(0,b.getSnapshot)(e.clades),treeRoot:e.treeRoot}:void 0,i=>{if(i?.clades.length)for(let{mark:s,nodeId:a}of e.resolvedClades)a!==void 0&&(s==="collapse"&&!e.collapsed.includes(a)?e.toggleCollapsed(a):s==="focus"?e.setShowOnly(a):s==="rotate"&&!e.rotated.includes(a)&&e.toggleRotated(a))},{fireImmediately:!0,equals:W.compareStructural})),(0,b.addDisposer)(e,(0,W.autorun)(()=>{let{region:i}=e;i&&e.viewInitialized&&e.numColumns>0&&!(e.treeFilehandle&&!e.data.tree)&&(this.zoomToRegion(i),e.setRegion(void 0))})),typeof window<"u"&&typeof window.matchMedia=="function"){let i=()=>window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),s=i(),a=()=>{e.setHighResScaleFactor(window.devicePixelRatio),s.removeEventListener("change",a),s=i(),s.addEventListener("change",a)};s.addEventListener("change",a),(0,b.addDisposer)(e,()=>{s.removeEventListener("change",a)})}let t=({what:i,getFilehandle:s,onLoad:a,setLoading:l,clearFilehandle:c,optional:u=!1})=>{let d=0,h;(0,b.addDisposer)(e,()=>{h?.()}),(0,b.addDisposer)(e,(0,W.autorun)(async()=>{let f=s(),g=++d;if(h?.(),h=void 0,!f){l?.(!1);return}let p=()=>g===d&&(0,b.isAlive)(e),w=new AbortController;h=()=>{w.abort(),(0,b.isAlive)(e)&&e.setStatus(void 0)};try{l?.(!0),e.setError(void 0);let x=await ac((0,Qc.openLocation)(f),S=>{p()&&e.setStatus(S)},{controller:w});p()&&(0,W.transaction)(()=>{a(x),f.locationType==="BlobLocation"&&c?.()})}catch(x){p()&&(sc(x)?c?.():(console.error(x),u?e.addWarning(`The ${i} did not load: ${x}`):e.setError(x)))}finally{p()&&(h=void 0,l?.(!1))}}))};t({what:"tree",getFilehandle:()=>e.treeFilehandle,onLoad:i=>{e.setTree(i)},setLoading:i=>{e.setLoadingTree(i)},clearFilehandle:()=>{e.setTreeFilehandle(void 0)}}),t({what:"row metadata",optional:!0,getFilehandle:()=>e.treeMetadataFilehandle,onLoad:i=>{e.setTreeMetadata(i)}});let o=!1;(0,b.addDisposer)(e,(0,W.autorun)(()=>{let i=e.data.gff;if(i)try{e.applyGFFText(i),o=!0}catch(s){console.error(s),e.addWarning(`The annotations did not parse: ${s}`)}else o&&(o=!1,e.setAnnotations([]))})),t({what:"annotations",optional:!0,getFilehandle:()=>e.gffFilehandle,onLoad:i=>{e.setGFF(i)},clearFilehandle:()=>{e.setGFFFilehandle(void 0)}}),t({what:"alignment",getFilehandle:()=>e.msaFilehandle,onLoad:i=>{e.setMSA(i)},setLoading:i=>{e.setLoadingMSA(i)},clearFilehandle:()=>{e.setMSAFilehandle(void 0)}}),(0,b.addDisposer)(e,(0,W.autorun)(()=>{e.dynamicColorSchemeName&&e.colStats,e.showColumnStats&&(e.colStats,e.conservation,e.propertyConservation),e.columns})),(0,b.addDisposer)(e,(0,W.autorun)(()=>{e.autoTreeAreaWidth&&(e.noTree||!e.drawTree)&&e.labelsWidth&&e.setTreeAreaWidth(e.labelsWidth+e.marginLeft+12+e.cladeGutterWidth)}));let r=e.treeWidth===ft?void 0:e.treeAreaWidth;(0,b.addDisposer)(e,(0,W.autorun)(()=>{let i=e.treeAreaWidth,s=e.labelsWidth;r!==i&&(r=void 0,e.setTreeWidth(Math.max(50,i-s-10-e.marginLeft-e.cladeGutterWidth)))}))}})).postProcessSnapshot(({data:e,columnTracks:t,...o})=>({...o,...Jm(t,n),data:{...o.treeFilehandle?{}:{tree:e.tree},...o.msaFilehandle?{}:{msa:e.msa},...o.treeMetadataFilehandle?{}:{treeMetadata:e.treeMetadata},...o.gffFilehandle?{}:{gff:e.gff}}}))}var co=ah;function sh(n){return(0,ou.createJBrowseTheme)(n==="dark"?{palette:{mode:"dark"}}:typeof n=="object"?n:void 0)}function lh(n){return typeof n=="string"?{colorSchemeName:n}:n?{customColorScheme:n.map}:{}}function ch(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,E.useState)({source:i,generation:0});return ch(s.source,i)||a({source:i,generation:s.generation+1}),E.default.createElement(uh,{key:s.generation,...n})}function sn(n,e,t){let o=(0,E.useRef)(t);(0,E.useEffect)(()=>{o.current=t});let r=!!t;(0,E.useEffect)(()=>r?(0,Ye.reaction)(()=>n[e],i=>{o.current?.(i)},{equals:Ye.compareStructural}):void 0,[n,e,r])}function uh({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:x,rowData:S,encodings:C,rowPanels:L,drawTree:v,residueEncoding:R,treeAreaWidth:z,autoTreeAreaWidth:J,showBranchLen:j,treeOrder:K,treeRoot:oe,region:re,selection:y,hideHeader:D,theme:je,onCellHover:uu,onCellClick:du,onViewportChange:mu,onSelectionChange:hu,onModel:po}){let[M]=(0,E.useState)(()=>co().create({type:"MsaView",...n||e||t||S?{data:{msa:n??"",tree:e??"",gff:t,...S?{treeMetadata:JSON.stringify(S)}:{}}}:{},...o?{msaFilehandle:o}:{},...r?{treeFilehandle:r}:{},...i?{gffFilehandle:i}:{},...lh(s),...a?{height:a}:{},...l?{colWidth:l}:{},...c?{rowHeight:c}:{},...u!==void 0?{allowedGappyness:u}:{},...d?{highlightColumns:d}:{},...h?{highlights:h}:{},...f?{features:f}:{},...y?{selection:y}:{},...g?{clades:g}:{},...p?{relativeTo:p}:{},...w?{columnTracks:w}:{},...x?{residueMappings:x}:{},...C?{encodings:C}:{},...L?{rowPanels:L}:{},...v!==void 0?{drawTree:v}:{},...z?{treeAreaWidth:z}:{},...J?{autoTreeAreaWidth:J}:{},...j!==void 0?{showBranchLen:j}:{},...K?{treeOrder:K}:{},...oe?{treeRoot:oe}:{},...R!==void 0?{bgColor:R==="fill"}:{}})),Ke=(0,E.useRef)(void 0),[fu,{width:dn}]=(0,ru.default)();(0,E.useEffect)(()=>{dn&&M.setWidth(dn)},[M,dn]),(0,E.useEffect)(()=>{a!==void 0&&M.setHeight(a)},[M,a]),(0,E.useEffect)(()=>{l!==void 0&&M.setColWidth(l)},[M,l]),(0,E.useEffect)(()=>{c!==void 0&&M.setRowHeight(c)},[M,c]),(0,E.useEffect)(()=>{u!==void 0&&M.setAllowedGappyness(u)},[M,u]),(0,E.useEffect)(()=>{v!==void 0&&M.setDrawTree(v)},[M,v]),(0,E.useEffect)(()=>{z!==void 0&&M.setTreeAreaWidth(z)},[M,z]),(0,E.useEffect)(()=>{j!==void 0&&M.setShowBranchLen(j)},[M,j]),(0,E.useEffect)(()=>{K!==void 0&&M.setTreeOrder(K)},[M,K]),(0,E.useEffect)(()=>{R!==void 0&&M.setBgColor(R==="fill")},[M,R]),(0,E.useEffect)(()=>{M.setHideHeader(!!D)},[M,D]),(0,E.useEffect)(()=>{M.drawRelativeTo(p)},[M,p]);let mn=(0,E.useRef)(t),Ue=JSON.stringify(i??null),go=(0,E.useRef)(Ue);(0,E.useEffect)(()=>{if(go.current!==Ue){go.current=Ue;let Z=JSON.parse(Ue);Z?M.setGFFFilehandle(Z):M.setGFF(mn.current)}},[M,Ue]),(0,E.useEffect)(()=>{mn.current!==t&&(mn.current=t,M.setGFF(t))},[M,t]);let wo=JSON.stringify(s??null);(0,E.useEffect)(()=>{let Z=JSON.parse(wo);typeof Z=="string"?M.setColorSchemeName(Z):Z&&M.setCustomColorScheme(Z.map)},[M,wo]);let bo=JSON.stringify(h??[]);(0,E.useEffect)(()=>{M.setHighlights(JSON.parse(bo))},[M,bo]);let vo=JSON.stringify(f??[]);(0,E.useEffect)(()=>{M.setFeatures(JSON.parse(vo))},[M,vo]);let So=JSON.stringify(y??null);(0,E.useEffect)(()=>{M.setSelection(JSON.parse(So)??void 0)},[M,So]);let Mo=JSON.stringify(oe??null);(0,E.useEffect)(()=>{M.setTreeRoot(JSON.parse(Mo)??void 0)},[M,Mo]);let xo=JSON.stringify(g??[]);(0,E.useEffect)(()=>{M.setClades(JSON.parse(xo))},[M,xo]);let Co=JSON.stringify(w??[]);(0,E.useEffect)(()=>{M.setColumnTracks(JSON.parse(Co))},[M,Co]);let yo=JSON.stringify(x??[]);(0,E.useEffect)(()=>{M.setResidueMappings(JSON.parse(yo))},[M,yo]);let Ao=JSON.stringify(S??{});(0,E.useEffect)(()=>{let Z=JSON.parse(Ao);Object.keys(Z).length&&M.setRowData(Z)},[M,Ao]);let Eo=JSON.stringify(C??[]);(0,E.useEffect)(()=>{M.setEncodings(JSON.parse(Eo))},[M,Eo]);let To=JSON.stringify(L??[]);(0,E.useEffect)(()=>{M.setRowPanels(JSON.parse(To))},[M,To]);let Lo=JSON.stringify(d??null);(0,E.useEffect)(()=>{M.setHighlightedColumns(JSON.parse(Lo)??void 0)},[M,Lo]);let Ro=JSON.stringify(re??null);(0,E.useEffect)(()=>{let Z=JSON.parse(Ro);return Z?(0,Ye.when)(()=>M.viewInitialized&&M.numColumns>0,()=>{M.zoomToRegion(Z)}):void 0},[M,Ro]),sn(M,"hoveredCell",uu),sn(M,"clickedCell",du),sn(M,"viewport",mu),sn(M,"selection",hu);let ko=(0,E.useRef)(po);return(0,E.useEffect)(()=>{ko.current=po}),(0,E.useEffect)(()=>{ko.current?.(M)},[M]),(0,E.useEffect)(()=>(Ke.current!==void 0&&(clearTimeout(Ke.current),Ke.current=void 0),()=>{Ke.current=setTimeout(()=>{Ke.current=void 0,(0,ln.isAlive)(M)&&(0,ln.destroy)(M)})}),[M]),E.default.createElement(iu.ThemeProvider,{theme:sh(je)},E.default.createElement("div",{ref:fu},E.default.createElement(qn,{model:M})))}var uo=m(A(),1),au=m(wu(),1);function mo(n,e){let t=(0,au.createRoot)(n),o=e;return t.render(uo.default.createElement(ut,{...o})),{update(r){o={...o,...r},t.render(uo.default.createElement(ut,{...o}))},destroy(){t.unmount()}}}var su=m(Xe(),1);var dh=["msa-url","tree-url","gff-url","color-scheme","height","hide-header","theme","reference-row","tree-area-width"],mh=["display-start","display-end","highlight"];function ho(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 hh(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 fo(n,e,t){let o=n.globalColToVisibleCol(t-1);return o===void 0?void 0:n.visibleColToSeqPosOneBased(e,o)}function fh(n,e,t){let o,r;for(let i=t.startColumn;i<=t.endColumn&&!o;i++)o=fo(n,e,i);for(let i=t.endColumn;i>=t.startColumn&&!r;i--)r=fo(n,e,i);return o&&r?{start:o,end:r}:void 0}function ph(n="jbrowse-msa"){let e=customElements.get(n);if(e)return e;class t extends HTMLElement{static observedAttributes=[...dh,...mh];#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:ho(this.getAttribute("msa-url")),treeFilehandle:ho(this.getAttribute("tree-url")),gffFilehandle:ho(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?fo(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?fh(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,su.when)(()=>r.viewInitialized&&r.numColumns>0,()=>{r.zoomToRegion({row:l,start:i,end:s})})}}#h(){let r=hh(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=mo(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),lu=m(Zn(),1),cu=m(ie(),1),un=m(Xe(),1);function gh(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,cu.getSnapshot)(n),n.width,n.height,n.resolvedHighlights,n.highlightedColumnRuns]:void 0,l=>{if(!l)return;let c=++s;xn(n,{theme:e??(0,lu.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{bu as a,si as b,mi as c,yu as d,qn as e,co as f,ut as g,mo as h,ph as i,gh as j};
18
+ //# sourceMappingURL=chunk-QMLPITS4.js.map