jbrowse-plugin-msaview 5.2.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/MsaViewPanel/model.d.ts +25 -29
  2. package/dist/chunks/AboutDialog-447TIFAW.js +2 -0
  3. package/dist/chunks/{AboutDialog-IRBPUPJK.js.map → AboutDialog-447TIFAW.js.map} +4 -4
  4. package/dist/chunks/AnnotationFileDialog-S3N5EHHE.js +2 -0
  5. package/dist/chunks/AnnotationFileDialog-S3N5EHHE.js.map +7 -0
  6. package/dist/chunks/ExportSVGDialog-7ZHKKQ7W.js +2 -0
  7. package/dist/chunks/ExportSVGDialog-7ZHKKQ7W.js.map +7 -0
  8. package/dist/chunks/{FeatureDialog-ZBX3XQZ5.js → FeatureDialog-EEOGSLOG.js} +1 -1
  9. package/dist/chunks/{FeatureDialog-ZBX3XQZ5.js.map → FeatureDialog-EEOGSLOG.js.map} +1 -1
  10. package/dist/chunks/HelpDialog-TCWNBZOV.js +2 -0
  11. package/dist/chunks/HelpDialog-TCWNBZOV.js.map +7 -0
  12. package/dist/chunks/{LaunchMsaViewDialog-GJAUPGFC.js → LaunchMsaViewDialog-R6CNRASN.js} +2 -2
  13. package/dist/chunks/{LaunchMsaViewDialog-GJAUPGFC.js.map → LaunchMsaViewDialog-R6CNRASN.js.map} +1 -1
  14. package/dist/chunks/MetadataDialog-MNSI6NEW.js +2 -0
  15. package/dist/chunks/{MetadataDialog-KZWQFRF7.js.map → MetadataDialog-MNSI6NEW.js.map} +2 -2
  16. package/dist/chunks/MsaViewPanel-R2WAER5O.js +2 -0
  17. package/dist/chunks/{MsaViewPanel-RUZAKFCB.js.map → MsaViewPanel-R2WAER5O.js.map} +1 -1
  18. package/dist/chunks/{TrackInfoDialog-IFIG77WO.js → TrackInfoDialog-W2F77IPG.js} +2 -2
  19. package/dist/chunks/{TrackInfoDialog-IFIG77WO.js.map → TrackInfoDialog-W2F77IPG.js.map} +1 -1
  20. package/dist/chunks/TreeNodeInfoDialog-T5XMPG3R.js +2 -0
  21. package/dist/chunks/{TreeNodeInfoDialog-VRCVIF26.js.map → TreeNodeInfoDialog-T5XMPG3R.js.map} +2 -2
  22. package/dist/chunks/chunk-6EOYBBT4.js +2 -0
  23. package/dist/chunks/chunk-6EOYBBT4.js.map +7 -0
  24. package/dist/chunks/chunk-A63PUWQZ.js +6 -0
  25. package/dist/chunks/chunk-A63PUWQZ.js.map +7 -0
  26. package/dist/chunks/{chunk-NI3VGKQP.js → chunk-BAM67QHH.js} +2 -2
  27. package/dist/chunks/chunk-CSCUNTGJ.js +18 -0
  28. package/dist/chunks/chunk-CSCUNTGJ.js.map +7 -0
  29. package/dist/chunks/chunk-DEFUNIWW.js +8 -0
  30. package/dist/chunks/chunk-DEFUNIWW.js.map +7 -0
  31. package/dist/chunks/{chunk-YOTSFJMU.js → chunk-ERCMNTEQ.js} +1 -1
  32. package/dist/chunks/{chunk-YOTSFJMU.js.map → chunk-ERCMNTEQ.js.map} +1 -1
  33. package/dist/chunks/{chunk-GDFVLZYX.js → chunk-FEUZKN5V.js} +2 -2
  34. package/dist/chunks/{chunk-GDFVLZYX.js.map → chunk-FEUZKN5V.js.map} +1 -1
  35. package/dist/chunks/{chunk-GIHMPOCO.js → chunk-JF6CW6MO.js} +1 -1
  36. package/dist/chunks/{chunk-GIHMPOCO.js.map → chunk-JF6CW6MO.js.map} +1 -1
  37. package/dist/chunks/chunk-K55ZVN73.js +5 -0
  38. package/dist/chunks/chunk-K55ZVN73.js.map +7 -0
  39. package/dist/chunks/chunk-L6CBIH6H.js +2 -0
  40. package/dist/chunks/chunk-L6CBIH6H.js.map +7 -0
  41. package/dist/chunks/{chunk-F3EC6OCO.js → chunk-NWHZOZMG.js} +1 -1
  42. package/dist/chunks/{chunk-F3EC6OCO.js.map → chunk-NWHZOZMG.js.map} +1 -1
  43. package/dist/chunks/chunk-OVAXNTPN.js +2 -0
  44. package/dist/chunks/chunk-OVAXNTPN.js.map +7 -0
  45. package/dist/chunks/chunk-TSHN6J7U.js +2 -0
  46. package/dist/chunks/chunk-TSHN6J7U.js.map +7 -0
  47. package/dist/chunks/{chunk-H6IQBAW7.js → chunk-WAPIOD25.js} +5 -5
  48. package/dist/chunks/{chunk-H6IQBAW7.js.map → chunk-WAPIOD25.js.map} +1 -1
  49. package/dist/chunks/chunk-XVNCZQMR.js +2 -0
  50. package/dist/chunks/{chunk-ZCT7RD24.js.map → chunk-XVNCZQMR.js.map} +1 -1
  51. package/dist/chunks/{dist-CMWKVHC7.js → dist-GXYZN4ZR.js} +2 -2
  52. package/dist/chunks/{dist-CMWKVHC7.js.map → dist-GXYZN4ZR.js.map} +3 -3
  53. package/dist/chunks/dist-N4ZJK63Q.js +2 -0
  54. package/dist/chunks/{model-VE7IYWNU.js → model-TCPB6WNJ.js} +2 -2
  55. package/dist/chunks/{model-VE7IYWNU.js.map → model-TCPB6WNJ.js.map} +1 -1
  56. package/dist/chunks/renderToSvg-53FEV6IJ.js +2 -0
  57. package/dist/jbrowse-plugin-msaview.esm.js +2 -2
  58. package/dist/jbrowse-plugin-msaview.esm.js.map +1 -1
  59. package/dist/version.d.ts +1 -1
  60. package/dist/version.js +1 -1
  61. package/package.json +2 -2
  62. package/src/version.ts +1 -1
  63. package/dist/chunks/AboutDialog-IRBPUPJK.js +0 -2
  64. package/dist/chunks/AnnotationFileDialog-FCYYZ4JN.js +0 -2
  65. package/dist/chunks/AnnotationFileDialog-FCYYZ4JN.js.map +0 -7
  66. package/dist/chunks/ExportSVGDialog-TYYPI6VB.js +0 -2
  67. package/dist/chunks/ExportSVGDialog-TYYPI6VB.js.map +0 -7
  68. package/dist/chunks/MetadataDialog-KZWQFRF7.js +0 -2
  69. package/dist/chunks/MsaViewPanel-RUZAKFCB.js +0 -2
  70. package/dist/chunks/TreeNodeInfoDialog-VRCVIF26.js +0 -2
  71. package/dist/chunks/chunk-F726IWCW.js +0 -2
  72. package/dist/chunks/chunk-F726IWCW.js.map +0 -7
  73. package/dist/chunks/chunk-NMYD2GWF.js +0 -18
  74. package/dist/chunks/chunk-NMYD2GWF.js.map +0 -7
  75. package/dist/chunks/chunk-QQ5LZUIO.js +0 -11
  76. package/dist/chunks/chunk-QQ5LZUIO.js.map +0 -7
  77. package/dist/chunks/chunk-QUWPHTZQ.js +0 -2
  78. package/dist/chunks/chunk-QUWPHTZQ.js.map +0 -7
  79. package/dist/chunks/chunk-ZCT7RD24.js +0 -2
  80. package/dist/chunks/dist-R73J3CC3.js +0 -2
  81. package/dist/chunks/renderToSvg-VDXAB7TT.js +0 -2
  82. /package/dist/chunks/{chunk-NI3VGKQP.js.map → chunk-BAM67QHH.js.map} +0 -0
  83. /package/dist/chunks/{dist-R73J3CC3.js.map → dist-N4ZJK63Q.js.map} +0 -0
  84. /package/dist/chunks/{renderToSvg-VDXAB7TT.js.map → renderToSvg-53FEV6IJ.js.map} +0 -0
@@ -0,0 +1,18 @@
1
+ import{c as Bo}from"./chunk-TSHN6J7U.js";import{a as vn}from"./chunk-NWHZOZMG.js";import{a as St,b as Do,c as Oo,e as Wo,f as zo}from"./chunk-DEFUNIWW.js";import{a as re}from"./chunk-FCWXYIFC.js";import{a as gr,b as xr,c as Gc}from"./chunk-YUKJI2AH.js";import{c as wr}from"./chunk-K55ZVN73.js";import{a as pr,b as _c,c as E,d as G}from"./chunk-IBBQUV2I.js";import{A as go,B as wo,C as bo,D as vo,E as So,F as Mo,G as xo,H as Co,I as yo,J as To,K as fn,L as Eo,M as Ao,N as Lo,O as Ae,P as pn,Q as ko,R as gn,S as vt,T as Ro,U as Fo,V as Ho,W as wn,X as Po,Y as Vc,Z as bn,a as je,b as Cr,c as fe,d as yr,e as Tr,f as Er,g as Ar,h as ft,i as hn,j as ro,k as pt,l as oo,m as gt,n as io,o as mn,p as ao,q as so,r as lo,s as wt,t as bt,u as co,v as uo,w as ho,x as mo,y as fo,z as po}from"./chunk-L6CBIH6H.js";import{A as $r,B as Yr,C as jr,D as Ur,E as Xr,F as qr,G as Ee,H as Zr,I as Kr,J as Qr,K as mt,L as Jr,M as Ue,N as eo,O as to,P as no,a as Lr,b as cn,c as un,d as kr,e as Rr,f as Fr,g as Hr,h as dn,i as Pr,k as Ir,l as Dr,m as lt,n as ct,o as Te,p as Or,q as ut,r as Wr,s as zr,t as Br,u as dt,v as Nr,w as _r,x as Gr,y as Vr,z as ht}from"./chunk-OVAXNTPN.js";import{b as br,c as vr,d as Ie,f as Sr,g as Mr,h as De}from"./chunk-73KAPCJ2.js";import{a as Xe,b as Io}from"./chunk-JF6CW6MO.js";import{a as k}from"./chunk-CVLB4VFP.js";import{a as ln}from"./chunk-DNFD5II2.js";import{a as H}from"./chunk-BX4Z274Q.js";import{a as y}from"./chunk-J6KYLXRD.js";import{a as ye,b as h}from"./chunk-FY3BTKY4.js";var Uo=ye((Qh,jo)=>{jo.exports=JBrowseExports["@jbrowse/core/ui/ErrorBoundary"]});var qe=ye((tm,Ko)=>{Ko.exports=JBrowseExports["@jbrowse/core/ui/BaseTooltip"]});var En=ye((Rm,bi)=>{bi.exports=JBrowseExports["@jbrowse/core/util/useMeasure"]});var ze=ye((Hm,xi)=>{xi.exports=JBrowseExports["@jbrowse/core/ui/CascadingMenuButton"]});var gl=ye((B0,pl)=>{pl.exports=JBrowseExports["@mui/material/styles"]});var bl=ye((N0,wl)=>{wl.exports=JBrowseExports["@jbrowse/core/util/types/mst"]});var ir=ye((uw,Pc)=>{Pc.exports=JBrowseExports["@jbrowse/core/ui/theme"]});var Sn=class n{a;b;c;d;e;f;constructor(e){let[t=1,r=0,o=0,i=1,s=0,a=0]=e??[];this.a=t,this.b=r,this.c=o,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]))}},Mn=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 $c(n=globalThis,e={},t){let r=globalThis;r.DOMMatrix=Sn,r.DOMPoint=Mn;let o=n.HTMLCanvasElement;o.prototype.getContext=function(){let i="10px sans-serif";return Object.assign({get font(){return i},set font(s){i=s},measureText:s=>t?(t.font=i,{width:t.measureText(s).width}):{width:s.length*(Number.parseFloat(i)||10)*fn}},e)}}var $o="{residue}{position}",Yc=/^(\d+)(?:-(\d+))?(?:\s+(.+))?$/;function Yo(n,e){let t=Yc.exec(n.trim());if(!t)throw new Error(`${e} "${n}" is not "start", "start-end" or either followed by a label`);let r=Number(t[1]),o=t[2]===void 0?r:Number(t[2]);return{start:Math.min(r,o),end:Math.max(r,o),label:t[3]}}function Mt(n,e){let{row:t,...r}=n,o=t===void 0?e:t??void 0;return o===void 0?r:{...r,row:o}}function jc(n,e){if(typeof n=="object")return n.rows?n:Mt(n,n.start===void 0?void 0:e);let{start:t,end:r,label:o}=Yo(String(n),"highlight");return{...e===void 0?{}:{row:e},start:t,end:r,...o?{label:o}:t===r&&e!==void 0?{label:$o}:{}}}function Uc(n,e){if(typeof n=="string"){let{start:t,end:r}=Yo(n,"region");return Mt({start:t,end:r},e)}return Mt(n,e)}function No(n){return n.toLowerCase().replaceAll(/[^a-z0-9]+/g,"-").replaceAll(/^-|-$/g,"")}function Xc(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 qc(n,e,t){let{start:r,...o}=n,i=r&&r>1?r-1:0,s=n.id??(No(n.name)||"track");for(let a=2;!n.id&&t.has(s);a++)s=`${No(n.name)||"track"}-${a}`;return t.add(s),{...Mt(o,e),id:s,kind:Xc(n),...i&&n.values?{values:[...Array(i).fill(0),...n.values]}:{},...i&&n.data!==void 0?{data:" ".repeat(i)+n.data}:{}}}function _o(n){return n.includes(`
2
+ `)}function Go(n){return n.trimStart().startsWith("(")}function Vo(n){return{uri:n,locationType:"UriLocation"}}function Zc(n){let{query:e,msa:t,tree:r,highlights:o,region:i,columnTracks:s,...a}=n,l={...a.data,...t!==void 0&&_o(t)?{msa:t}:{},...r!==void 0&&Go(r)?{tree:r}:{}},c=new Set((s??[]).map(u=>u.id).filter(u=>u!==void 0));return{...a,...t!==void 0&&!_o(t)?{msaFilehandle:Vo(t)}:{},...r!==void 0&&!Go(r)?{treeFilehandle:Vo(r)}:{},...Object.keys(l).length>0?{data:l}:{},...e!==void 0&&a.relativeTo===void 0?{relativeTo:e}:{},...o?{highlights:o.map(u=>jc(u,e))}:{},...i===void 0?{}:{region:Uc(i,e)},...s?{columnTracks:s.map(u=>qc(u,e,c))}:{}}}var Y=h(y(),1),Yn=h(ln(),1),ml=h(Uo(),1),fl=h(H(),1),jn=h(k(),1);var F=h(y(),1),Re=h(k(),1);var pe=h(y(),1),xt=h(k(),1);var Kc=50,Xo=(0,xt.observer)(function({model:n}){let e=(0,pe.useCallback)((t,r)=>{n.setTreeAreaWidth(Math.min(Math.max(0,r+t),n.width-n.resizeHandleWidth))},[n]);return pe.default.createElement(fe,{axis:"x",variant:"resizer",getStart:()=>n.effectiveTreeAreaWidth,onDrag:e,style:{width:n.resizeHandleWidth}})}),qo=(0,xt.observer)(function({model:n}){let e=(0,pe.useCallback)((t,r)=>{n.setHeight(Math.max(Kc,r+t))},[n]);return pe.default.createElement(fe,{axis:"y",variant:"resizer",getStart:()=>n.height,onDrag:e,style:{width:"100%",height:n.resizeHandleWidth}})}),Zo=(0,xt.observer)(function({model:n,track:e}){let{id:t,heightKey:r,height:o}=e.model,i=n.turnedOnTracks.filter(l=>l.model.heightKey===r),s=i.length,a=(0,pe.useCallback)((l,c)=>{r&&n.setTrackHeight(r,Math.max(10,c+l/s))},[n,r,s]);return r&&i.at(-1)?.model.id===t?pe.default.createElement(fe,{axis:"y",variant:"resizer",getStart:()=>o,onDrag:a,style:{position:"absolute",bottom:0,left:0,width:"100%",height:n.resizeHandleWidth,zIndex:1}}):null});var B=h(y(),1),di=h(qe(),1),hi=h(Xe(),1);var Qo=h(G(),1),Ct=(0,E.createSvgIcon)((0,Qo.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");var Le=h(H(),1),Tn=h(k(),1);var V=h(y(),1);var Qc=.011997600479904018;function Jo(n,e){return e===1?n*16:e===2?n*100:n}function ei(n){let e=Math.abs(n);return e<6?25:e>150?500:e>30?150:75}function ti(n,e){let t=Qc*e,r=Math.max(-t,Math.min(t,n));return r>0?1/(1+r):1-r}function ge({ref:n,onScrollX:e,onScrollY:t,onZoom:r,scrollZoom:o}){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),m=(0,V.useRef)(null),f=(0,V.useRef)(0),g=(0,V.useRef)(0),[p,w]=(0,V.useState)(!1);(0,V.useEffect)(()=>{let M=n.current;if(!M)return;function T(v){let L=v.ctrlKey||v.metaKey,_=o&&!v.shiftKey&&Math.abs(v.deltaY)>=Math.abs(v.deltaX);if(r&&(L||_)){let ne=M.getBoundingClientRect(),se=Jo(v.deltaY,v.deltaMode),K=L?ei(se):500;c.current+=se/K,u.current=v.clientX-ne.left,d.current=v.clientY-ne.top,s.current||(s.current=!0,requestAnimationFrame(C=>{let O=m.current===null?16.67:C-m.current;m.current=C,r(ti(c.current,Math.min(100,O)),u.current,d.current),c.current=0,s.current=!1})),v.preventDefault(),v.stopPropagation();return}let Z=!!e&&v.deltaX!==0,te=!!t&&v.deltaY!==0;(Z||te)&&(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 M.addEventListener("wheel",T,{passive:!1}),()=>{M.removeEventListener("wheel",T)}},[n,e,t,r,o]),(0,V.useEffect)(()=>{if(!p)return;function M(v){v.preventDefault();let L=v.clientX-f.current,_=v.clientY-g.current;(L&&e||_&&t)&&(i.current||(i.current=!0,requestAnimationFrame(()=>{e?.(L),t?.(_),i.current=!1,f.current=v.clientX,g.current=v.clientY})))}function T(){f.current=0,g.current=0,w(!1)}return window.addEventListener("mousemove",M,!0),window.addEventListener("mouseup",T,!0),()=>{window.removeEventListener("mousemove",M,!0),window.removeEventListener("mouseup",T,!0)}},[p,e,t]);function x(M){M.button===0&&(f.current=M.clientX,g.current=M.clientY,w(!0))}function S(M){M.preventDefault(),w(!1)}return{onMouseDown:x,onMouseUp:S}}function yt(n,{key:e,shiftKey:t}){let{colWidth:r,rowHeight:o,msaCanvasWidth:i,msaAreaHeight:s}=n,a=t?i:r,l=t?s:o;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 Oe=h(y(),1),ri=h(H(),1),xn=h(k(),1);var Tt=h(y(),1),ni=h(je(),1);function $({draw:n,width:e,height:t,deps:r}){let o=(0,Tt.useRef)(null);return(0,Tt.useEffect)(()=>{let i=o.current?.getContext("2d");return i?(0,ni.autorun)(()=>{n(i)}):void 0},[...r,e,t]),o}var eu=(0,xn.observer)(function({model:n,track:e,offsetX:t}){let{blockSize:r,highResScaleFactor:o}=n,{height:i}=e.model,s=(0,ri.useTheme)(),a=r*o,l=i*o,c=$({draw:u=>{u.resetTransform(),u.clearRect(0,0,a,l),yo({model:n,ctx:u,track:e,offsetX:t,theme:s})},width:a,height:l,deps:[n,e,t,s]});return Oe.default.createElement("canvas",{ref:c,width:a,height:l,style:{position:"absolute",left:t,width:r,height:i}})}),tu=(0,xn.observer)(function({model:n,track:e}){let{blocksX:t,msaCanvasWidth:r,scrollX:o}=n,{kind:i,height:s,data:a,arcs:l}=e.model;return i==="text"&&!a||i==="arc"&&!l?.length?null:Oe.default.createElement("div",{style:{position:"relative",height:s,width:r,overflow:"hidden"}},Oe.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translateX(${o}px)`,willChange:"transform"}},t.map(c=>Oe.default.createElement(eu,{key:c,model:n,track:e,offsetX:c}))),Oe.default.createElement(Zo,{model:n,track:e}))}),oi=tu;var W=h(y(),1),ai=h(k(),1);var Cn=n=>`${Math.round(n*100)}%`,ii=8;function Ze({model:n,col:e}){let{relativeTo:t}=n,r=t?n.visibleColToSeqPosOneBased(t,e):void 0;return W.default.createElement("b",null,"Column ",e+1,r===void 0?null:` (${t}:${r})`)}function nu({model:n,track:e,col:t}){let{id:r,name:o}=e.model,i=Co(n,r)[t];return i===void 0?null:W.default.createElement("div",null,W.default.createElement(Ze,{model:n,col:t}),W.default.createElement("br",null),o,": ",i.toFixed(2))}function ru({model:n,col:e}){let t=n.columnStatsAt(e);if(!t)return null;let{total:r,consensusLetter:o,consensusFraction:i,gapFraction:s}=t,l=xo(n.colStats,e,n.alphabetMaxBits).reduce((c,u)=>c+u.bits,0);return W.default.createElement("div",null,W.default.createElement(Ze,{model:n,col:e})," (",r," seqs)",W.default.createElement("br",null),"Information: ",l.toFixed(2)," bits",W.default.createElement("br",null),"Consensus: ",o||"-"," (",Cn(i),")",W.default.createElement("br",null),"Gaps: ",Cn(s),W.default.createElement("br",null),t.distribution.slice(0,6).map(([c,u])=>W.default.createElement("span",{key:c,style:{marginRight:8}},c," ",Cn(u/r))))}function ou({model:n,track:e,col:t}){let{name:r,data:o}=e.model,i=o?.[t];return i===void 0?null:W.default.createElement("div",null,W.default.createElement(Ze,{model:n,col:t}),W.default.createElement("br",null),r,": ",i===" "?"blank":i)}function iu({model:n,track:e,col:t}){let{name:r,arcs:o}=e.model,i=(o??[]).filter(s=>s.start===t||s.end===t).map(s=>(s.start===t?s.end:s.start)+1);return i.length===0?null:W.default.createElement("div",null,W.default.createElement(Ze,{model:n,col:t}),W.default.createElement("br",null),r,": pairs with ",i.slice(0,ii).join(", "),i.length>ii?"...":null)}var au=(0,ai.observer)(function({model:n,track:e,col:t}){switch(e.model.kind){case"bar":return W.default.createElement(nu,{model:n,track:e,col:t});case"logo":return W.default.createElement(ru,{model:n,col:t});case"text":return W.default.createElement(ou,{model:n,track:e,col:t});case"arc":return W.default.createElement(iu,{model:n,track:e,col:t});case"ruler":return W.default.createElement("div",null,W.default.createElement(Ze,{model:n,col:t}))}}),si=au;var li=h(re(),1),yn=3;function Et(n,e,t){let r=t(e),{clientX:o,clientY:i}=e,s=!1;function a(c){s||=Math.hypot(c.clientX-o,c.clientY-i)>yn,s&&(0,li.isAlive)(n)&&n.selectBlock(r,t(c))}function l(){window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",l)}window.addEventListener("mousemove",a),window.addEventListener("mouseup",l)}var ci=h(y(),1);function we(){let[n,e]=(0,ci.useState)();function t(o,i){e(i===void 0?void 0:{value:i,clientPoint:{x:o.clientX,y:o.clientY+15}})}function r(){e(void 0)}return{anchor:n,hoverAt:t,clearAnchor:r}}function ui({model:n,tooltip:e}){let{anchor:t,hoverAt:r,clearAnchor:o}=we();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),m=d>=0&&d<n.numColumns;n.setMousePos(m?d:void 0,void 0),e&&r(c,m?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();Et(n,c,({clientX:m})=>({col:i(m,d)}))}}function l(){o(),n.setMousePos(void 0,void 0)}return{anchor:e?t:void 0,onMouseMove:s,onMouseDown:a,onMouseLeave:l}}var su=(0,B.lazy)(()=>import("./TrackInfoDialog-W2F77IPG.js")),mi=(0,hi.makeStyles)()(n=>({button:{padding:0},row:{display:"flex","&:not(:last-child)":{boxShadow:`inset 0 -1px 0 ${n.palette.divider}`}}})),lu=(0,Tn.observer)(function({model:e,track:t}){let[r,o]=(0,B.useState)(),i=()=>{o(void 0)},{drawLabels:s,fontSize:a,effectiveTreeAreaWidth:l}=e,{model:{name:c,height:u}}=t,{classes:d}=mi(),m=Math.min(u,a);return B.default.createElement("div",{style:{width:l,height:u,flexShrink:0,display:"flex",alignItems:"flex-start",justifyContent:"flex-end",gap:2,fontSize:m}},B.default.createElement("span",{title:c,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},s?c:""),B.default.createElement(Le.IconButton,{className:d.button,"aria-label":`${c} track menu`,style:{width:m,height:m,flexShrink:0},onClick:f=>{o(f.currentTarget)}},B.default.createElement(Ct,null)),r?B.default.createElement(Le.Menu,{anchorEl:r,transitionDuration:0,open:!0,onClose:()=>{i()}},B.default.createElement(Le.MenuItem,{dense:!0,onClick:()=>{e.toggleTrack(t.model.id),i()}},"Hide track"),B.default.createElement(Le.MenuItem,{dense:!0,onClick:()=>{e.queueDialog(f=>[su,{onClose:f,model:t.model}]),i()}},"Get info")):null)}),cu=(0,Tn.observer)(function({model:n,track:e}){let{resizeHandleWidth:t,rowPanelsWidth:r,showColumnStats:o}=n,{model:{height:i}}=e,s=(0,B.useRef)(null),a=(0,B.useCallback)(f=>{n.doScrollX(f)},[n]);ge({ref:s,onScrollX:a});let{classes:l}=mi(),{anchor:c,onMouseMove:u,onMouseDown:d,onMouseLeave:m}=ui({model:n,tooltip:o});return B.default.createElement("div",{className:l.row,style:{height:i}},B.default.createElement(lu,{model:n,track:e}),B.default.createElement("div",{style:{width:r+t,flexShrink:0}}),B.default.createElement("div",{ref:s,"data-testid":`track_${e.model.id}`,tabIndex:-1,style:{outline:"none"},onKeyDown:f=>{yt(n,f)&&f.preventDefault()},onMouseMove:f=>{s.current&&u(f,s.current)},onMouseDown:f=>{s.current&&d(f,s.current)},onMouseLeave:()=>{m()}},B.default.createElement(oi,{model:n,track:e}),c?B.default.createElement(di.default,{clientPoint:c.clientPoint},B.default.createElement(si,{model:n,track:e,col:c.value})):null))}),fi=cu;var Ke=h(y(),1),gi=h(k(),1);var pi=20,uu=(0,gi.observer)(({model:n})=>{let{msaAreaHeight:e,scrollY:t,totalHeight:r}=n,o=e/r,i=-t*o,s=(-t+e)*o,a=(0,Ke.useCallback)((l,c)=>{n.setScrollY(c-l/o)},[n,o]);return Ke.default.createElement("div",{onMouseDown:l=>{if(l.button===0&&l.target===l.currentTarget){let c=l.clientY-l.currentTarget.getBoundingClientRect().top;n.setScrollY(-c/o+e/2)}},style:{position:"relative",width:pi,height:e,borderLeft:"1px solid #555",borderTop:"1px solid #555",boxSizing:"border-box"}},Ke.default.createElement(fe,{axis:"y",variant:"thumb",getStart:()=>n.scrollY,onDrag:a,style:{top:Math.max(0,i),left:0,boxSizing:"border-box",width:pi,height:Math.max(s-i,20)}}))}),wi=uu;var D=h(y(),1),Ja=h(En(),1);var Bt=h(H(),1),es=h(k(),1);var be=h(y(),1),vi=h(ln(),1),Si=h(Xe(),1),We=h(H(),1),Mi=h(k(),1),du=(0,Si.makeStyles)()({page:{display:"flex",alignItems:"center",gap:12,padding:20},header:{display:"flex",alignItems:"center",gap:4,margin:"auto",marginLeft:10}}),hu=(0,Mi.observer)(function({model:n,variant:e}){let{status:t}=n,{classes:r}=du();if(e==="header"&&!t)return null;let o=t?.msg??"Loading...",i=t?.onCancel;return be.default.createElement("div",{className:r[e]},e==="page"?be.default.createElement(be.default.Fragment,null,be.default.createElement(We.CircularProgress,{size:24}),be.default.createElement(We.Typography,{variant:"h6"},o)):be.default.createElement(vi.LoadingEllipses,{message:o,component:"span"}),i?be.default.createElement(We.Button,{variant:e==="page"?"outlined":"text",size:"small",onClick:()=>{i()}},"Cancel"):null)}),Qe=hu;var Rn=h(y(),1),Li=h(ze(),1);var Ci=h(G(),1),yi=(0,E.createSvgIcon)((0,Ci.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 ki=h(k(),1);var mu={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"},At=mu;var fu={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"},An=fu;var pu={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"},Ln=pu;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"},kn=gu;var Ti={A:Ln[500],C:An[500],G:kn[500],T:At[500],U:At[500]},wu={none:{},nucleotide:Ti,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:Ti,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"}},Je=pt(wu,([n,e])=>[n,pt(e,([t,r])=>[t,ft(r).toHex()])]),Ei=new WeakMap;function Ai(n){let e=Ei.get(n);return e||(e=pt(n,([t,r])=>[t.toUpperCase(),r]),Ei.set(n,e)),e}function bu(n){let{colorSchemeName:e,customColorScheme:t}=n;return[...t?[{label:"Custom",type:"radio",checked:!0,onClick:()=>{}}]:[],...Object.keys(Je).map(o=>({label:o,type:"radio",checked:!t&&e===o,onClick:()=>{n.setColorSchemeName(o)}}))]}var vu=(0,ki.observer)(function({model:n}){return Rn.default.createElement(Li.default,{"data-testid":"color_scheme_menu",tooltip:"Color scheme",closeAfterItemClick:!0,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},menuItems:bu(n)},Rn.default.createElement(yi,null))}),Ri=vu;var Be=h(y(),1),ji=h(ze(),1);var Fi=h(G(),1),et=(0,E.createSvgIcon)((0,Fi.jsx)("path",{d:"M22 11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3z"}),"AccountTree");var Hi=h(G(),1),Pi=(0,E.createSvgIcon)((0,Hi.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 Ii=h(G(),1),Lt=(0,E.createSvgIcon)((0,Ii.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 Di=h(G(),1),Oi=(0,E.createSvgIcon)((0,Di.jsx)("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"}),"Menu");var Fn=h(G(),1),Wi=(0,E.createSvgIcon)([(0,Fn.jsx)("circle",{cx:"12",cy:"12",r:"3.2"},"0"),(0,Fn.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 Ui=h(k(),1);var Pn=h(y(),1);var zi=h(G(),1),Bi=(0,E.createSvgIcon)((0,zi.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 Hn=h(G(),1),Ni=(0,E.createSvgIcon)([(0,Hn.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,Hn.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 _i=h(G(),1),Gi=(0,E.createSvgIcon)((0,_i.jsx)("path",{d:"M3 18h6v-2H3zM3 6v2h18V6zm0 7h12v-2H3z"}),"Sort");var Vi=h(G(),1),$i=(0,E.createSvgIcon)((0,Vi.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 Su=(0,Pn.lazy)(()=>import("./FeatureDialog-EEOGSLOG.js")),Mu=(0,Pn.lazy)(()=>import("./AnnotationFileDialog-S3N5EHHE.js")),xu="https://gmod.org/JBrowseMSA/tutorials/protein_family";function Yi({model:n}){let{showDomains:e,actuallyShowDomains:t,subFeatureRows:r,noDomains:o}=n,i=o?" (none loaded)":"";return[{label:"Open annotation file...",icon:Lt,onClick:()=>{n.queueDialog(s=>[Mu,{handleClose:s,model:n}])}},{label:"How to get a domain file...",icon:Ni,onClick:()=>{window.open(xu,"_blank","noopener,noreferrer")}},{label:`Show annotations${i}`,disabled:o,icon:$i,checked:t,type:"checkbox",onClick:()=>{n.setShowDomains(!e)}},{label:`Use sub-row layout${i}`,disabled:o,checked:t?r:!1,icon:Gi,type:"checkbox",onClick:()=>{n.setSubFeatureRows(!r)}},{label:`Filter annotations${i}`,icon:Bi,disabled:o,onClick:()=>{n.queueDialog(s=>[Su,{onClose:s,model:n}])}}]}var Cu=(0,Be.lazy)(()=>import("./MetadataDialog-MNSI6NEW.js")),yu=(0,Be.lazy)(()=>import("./ExportSVGDialog-7ZHKKQ7W.js"));function Tu(n){let e=n.rowMap.size,t=e>Ee;return{label:t?`Calculate neighbor joining tree (over ${Ee} rows, use FastTree)`:"Calculate neighbor joining tree (BLOSUM62)",icon:et,disabled:t||e<2,onClick:()=>{try{n.calculateNeighborJoiningTreeFromMSA()}catch(r){console.error("Failed to calculate NJ tree:",r),n.addWarning(r instanceof Error?r.message:String(r))}}}}var Eu=(0,Ui.observer)(({model:n})=>Be.default.createElement(ji.default,{"data-testid":"file_menu",tooltip:"File",menuItems:[...n.importForm?[{label:"Return to import form",icon:Lt,onClick:()=>{n.reset()}}]:[],{label:"Metadata",icon:Pi,onClick:()=>{n.queueDialog(e=>[Cu,{model:n,onClose:e}])}},{label:"Annotations",type:"subMenu",subMenu:Yi({model:n})},Tu(n),{label:"Export tree (Newick)",icon:et,disabled:!!n.tree.noTree,onClick:()=>{n.exportNewick()}},{label:"Export SVG",icon:Wi,onClick:()=>{n.queueDialog(e=>[yu,{onClose:e,model:n}])}}],anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"}},Be.default.createElement(Oi,null))),Xi=Eu;var Ne=h(y(),1),kt=h(H(),1),qi=h(k(),1),Au=(0,qi.observer)(function({model:e}){let{hideGaps:t,allowedGappyness:r}=e,[o,i]=(0,Ne.useState)(),s=o??r;return t?Ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Ne.default.createElement(kt.Typography,{style:{whiteSpace:"nowrap"}},"Hide columns w/ \u2265",s,"% gaps"),Ne.default.createElement(kt.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}),Zi=Au;var tt=h(y(),1),Rt=h(H(),1),ta=h(k(),1);function Qi(n){let e=new Set(n.collapsed);return n.leaves.filter(({data:{id:t,name:r}})=>!(e.has(t)&&r===t)).map(t=>t.data.name)}function Ji(n,e,t=50){let r=e.toLowerCase();return n.filter(o=>o.toLowerCase().includes(r)).slice(0,t)}function Lu(n,e){let t=e.trim(),r=n.rowNamesSet.get(t);if(r!==void 0)return{row:r};let o=/^(.+):(\d+)$/.exec(t);if(o){let[,i="",s]=o,a=n.rowNamesSet.get(i),l=a===void 0?void 0:Ki(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?Ki(n,s,i):i>=1&&i<=a?i-1:void 0;return l===void 0?void 0:{col:l}}}function Ki(n,e,t){let r=n.seqPosIndex(e)?.[t-1];return r===void 0?void 0:n.globalColToVisibleCol(r)}function ea(n,e){let t=Lu(n,e);if(t){let{row:r,col:o}=t,{rowHeight:i,colWidth:s,msaAreaHeight:a,msaAreaWidth:l}=n;r!==void 0&&n.setScrollY(-(r+.5)*i+a/2),o!==void 0&&n.setScrollX(-(o+.5)*s+l/2),n.setMousePos(o,r)}return t!==void 0}var In="Go to row or column";function ku(n){let{slotProps:e,inputProps:t}=n;return e?{slotProps:{...e,htmlInput:{...e.htmlInput,"aria-label":In}}}:{inputProps:{...t,"aria-label":In}}}var Ru=(0,ta.observer)(function({model:n}){let[e,t]=(0,tt.useState)(!1),r=Qi(n);return r.length>1||n.numColumns>0?tt.default.createElement(Rt.Autocomplete,{freeSolo:!0,size:"small",options:r,filterOptions:(o,{inputValue:i})=>Ji(o,i),value:null,blurOnSelect:!0,onInputChange:()=>{t(!1)},onChange:(o,i)=>{i&&t(!ea(n,i))},style:{width:180,margin:"auto 8px"},renderInput:o=>tt.default.createElement(Rt.TextField,{...o,error:e,placeholder:In,title:"A row name, a column number, or name:residue",...ku(o)})}):null}),na=Ru;var Ft=h(y(),1),ra=h(Xe(),1),oa=h(H(),1),ia=h(k(),1),Fu=(0,ra.makeStyles)()({container:{display:"flex",overflow:"hidden",margin:"auto",marginLeft:10},nameFirst:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},nameRest:{whiteSpace:"nowrap",flexShrink:0}}),Hu=(0,ia.observer)(function({model:n}){let{mouseOverRowName:e,mouseCol:t}=n,{classes:r}=Fu();if(!e||t===void 0)return null;let o=Math.floor(e.length/2),i=n.visibleColToSeqPosOneBased(e,t),s=n.visibleColToRowLetter(e,t);return Ft.default.createElement(oa.Typography,{component:"div",className:r.container,title:e},Ft.default.createElement("span",{className:r.nameFirst},e.slice(0,o)),Ft.default.createElement("span",{className:r.nameRest},e.slice(o),":",i," (",s,")"))}),aa=Hu;var Ht=h(y(),1);var sa=h(G(),1),la=(0,E.createSvgIcon)((0,sa.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning");var Pt=h(H(),1),ca=h(k(),1),Pu=(0,ca.observer)(function({model:n}){let{warnings:e}=n;return e.length===0?null:Ht.default.createElement(Pt.Tooltip,{title:`${e.join(" ")} (click to dismiss)`},Ht.default.createElement(Pt.Button,{"aria-label":"Dismiss warnings",color:"warning",size:"small",startIcon:Ht.default.createElement(la,{fontSize:"small"}),style:{margin:"auto",marginLeft:10,whiteSpace:"nowrap"},onClick:()=>{n.clearWarnings()}},e.length>1?`${e.length} warnings`:"Warning"))}),ua=Pu;var Dn=h(y(),1),ya=h(ze(),1);var da=h(G(),1),ha=(0,E.createSvgIcon)((0,da.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune");var Ta=h(k(),1);var de=h(y(),1),ma=h(_c(),1),Iu="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",Du="M11.2 8.6h1.6v3.2h-1.6z",fa="M.4 12 5 15V9z",pa="M23.6 12 19 9v6z",ga="M12 .4 15 4H9z",wa="M12 23.6 9 20h6z";function It({arrows:n,...e}){return de.default.createElement(ma.default,{...e},de.default.createElement("path",{d:Iu}),de.default.createElement("path",{d:Du}),n.map(t=>de.default.createElement("path",{key:t,d:t})))}function ba(n){return de.default.createElement(It,{...n,arrows:[]})}function va(n){return de.default.createElement(It,{...n,arrows:[fa,pa,ga,wa]})}function Sa(n){return de.default.createElement(It,{...n,arrows:[fa,pa]})}function Ma(n){return de.default.createElement(It,{...n,arrows:[ga,wa]})}function nt(n,e,t){return{label:n,type:"radio",checked:e,onClick:t}}var Ou={branchLength:"By branch length",input:"As written",ladderize:"Ladderize, small clades first",ladderizeReverse:"Ladderize, large clades first"};function Wu(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 zu(n){let e=new Set(n.turnedOnTracks.map(t=>t.model.id));return n.tracks.map(({model:{id:t,name:r}})=>q(r,e.has(t),()=>{n.toggleTrack(t)}))}var Bu=[{label:"Scrolls the alignment",icon:ba,helpText:"Ctrl+wheel zooms both axes at the cursor."},{label:"Zooms both axes",axis:"both",icon:va,helpText:"Hold shift to pan while the wheel zooms."},{label:"Zooms columns only",axis:"horizontal",icon:Sa,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:Ma,helpText:"Holds the column width, so the alignment stays as wide while the rows grow or shrink."}];function Nu(n){let e=n.scrollZoom?n.scrollZoomAxis:void 0;return Bu.map(({label:t,axis:r,icon:o,helpText:i})=>({...nt(t,r===e,()=>{n.setScrollZoom(r!==void 0),r!==void 0&&n.setScrollZoomAxis(r)}),icon:o,helpText:i}))}function xa(n){let{drawMsaLetters:e,hideGaps:t,bgColor:r,showColumnStats:o}=n;return[{label:"Tracks",type:"subMenu",subMenu:zu(n)},{label:"Mouse wheel",type:"subMenu",subMenu:Nu(n)},{type:"divider"},q("Show track values on hover",o,i=>{n.setShowColumnStats(i)}),q("Draw letters",e,i=>{n.setDrawMsaLetters(i)}),q("Color letters, not cells",!r,i=>{n.setBgColor(!i)}),q("Hide gappy columns",t,i=>{n.setHideGaps(i)})]}function Ca(n){let{drawTree:e,showBranchLen:t,labelsAlignRight:r,drawNodeBubbles:o,drawNodeLabels:i,drawLabels:s,treeAreaWidth:a,showTreeOverview:l,treeOrder:c,treeRoot:u,rotated:d}=n;return[{label:"Order",type:"subMenu",subMenu:[...ht.map(m=>nt(Ou[m],c===m,()=>{n.setTreeOrder(m)})),{type:"divider"},{label:"Undo rotations",disabled:d.length===0,onClick:()=>{n.clearRotated()}}]},{label:"Root",type:"subMenu",subMenu:[nt("As written",u===void 0,()=>{n.setTreeRoot(void 0)}),nt("Midpoint",u==="midpoint",()=>{n.setTreeRoot("midpoint")}),...typeof u=="object"?[{...nt(Wu(u.outgroup),!0,()=>{}),disabled:!0}]:[]]},{type:"divider"},q("Show branch length",t,m=>{n.setShowBranchLen(m)}),q("Show tree",e,m=>{n.setDrawTree(m)}),q("Draw bubbles on tree branches",o,m=>{n.setDrawNodeBubbles(m)}),q("Draw internal node labels",i,m=>{n.setDrawNodeLabels(m)}),q("Show tree overview",l,m=>{n.setShowTreeOverview(m)}),q("Tree labels align right",r,m=>{n.setLabelsAlignRight(m)}),q("Draw labels",s,m=>{n.setDrawLabels(m)}),q("Fit tree area to labels and tree",a===void 0,m=>{n.setTreeAreaWidth(m?void 0:n.effectiveTreeAreaWidth)})]}var _u=(0,Ta.observer)(function({model:n}){return Dn.default.createElement(ya.default,{"data-testid":"msa_settings_menu",tooltip:"Alignment settings",closeAfterItemClick:!1,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},menuItems:xa(n)},Dn.default.createElement(ha,null))}),Ea=_u;var On=h(y(),1),Dt=h(H(),1),Aa=h(k(),1),Gu=(0,Aa.observer)(function({model:n}){let{currentAlignment:e,alignmentNames:t}=n,r=new Map;return t.length>0?On.default.createElement(Dt.TextField,{select:!0,variant:"outlined",value:e,size:"small",onChange:o=>{n.setCurrentAlignment(+o.target.value)}},t.map((o,i)=>{let s=r.get(o)??0;return r.set(o,s+1),On.default.createElement(Dt.MenuItem,{key:s===0?o:`${o}\0${s}`,value:i},o)})):null}),La=Gu;var U=h(y(),1);var ka=h(G(),1),Ra=(0,E.createSvgIcon)((0,ka.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 Fa=h(G(),1),Ha=(0,E.createSvgIcon)((0,Fa.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=h(G(),1),Ot=(0,E.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 Q=h(H(),1),Ia=h(k(),1);function Pa(n,e){return`${n.toLocaleString("en-US")} ${e}${n===1?"":"s"}`}var Vu=(0,Ia.observer)(function({model:n}){let[e,t]=(0,U.useState)(),{selectionSize:r,selectionFileSpan:o}=n;if(!r||!o)return null;let i=`${Pa(r.columns,"column")} \xD7 ${Pa(r.rows,"row")}`,s=[{text:"Copy as FASTA",Icon:Ha,act:()=>{Io(n.selectionFasta)}},{text:"Zoom to selection",Icon:Ot,act:()=>{n.zoomToSelection()}},{text:"Clear selection",Icon:Ra,act:()=>{n.clearSelection()}}];return U.default.createElement(U.default.Fragment,null,U.default.createElement(Q.Tooltip,{title:`Columns ${o.start}-${o.end} selected. Shift-drag the alignment to select, Escape to clear`},U.default.createElement(Q.Button,{size:"small","aria-label":`Selection: ${i}`,endIcon:U.default.createElement(Ct,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(Q.Menu,{anchorEl:e,open:!0,transitionDuration:0,onClose:()=>{t(void 0)}},s.map(({text:a,Icon:l,act:c})=>U.default.createElement(Q.MenuItem,{key:a,dense:!0,onClick:()=>{c(),t(void 0)}},U.default.createElement(Q.ListItemIcon,null,U.default.createElement(l,{fontSize:"small"})),U.default.createElement(Q.ListItemText,null,a)))):null)}),Da=Vu;var zn=h(y(),1),Oa=h(ze(),1);var Wa=h(k(),1);var $u=(0,Wa.observer)(function({model:n}){return n.noTree?null:zn.default.createElement(Oa.default,{"data-testid":"tree_settings_menu",tooltip:"Tree settings",closeAfterItemClick:!1,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},menuItems:Ca(n)},zn.default.createElement(et,null))}),za=$u;var Wt=h(y(),1),_a=h(Xe(),1);var Ba=h(G(),1),Na=(0,E.createSvgIcon)((0,Ba.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 zt=h(H(),1),Ga=h(k(),1),Yu=(0,_a.makeStyles)()(n=>({warning:{display:"flex",alignItems:"center",gap:4,margin:"auto",marginLeft:10,whiteSpace:"nowrap",color:n.palette.warning.main,cursor:"help"}}));function ju(n){return n<1e6?`${Math.round(n/1e3)} kB`:`${(n/1e6).toFixed(1)} MB`}var Uu=(0,Ga.observer)(function({model:n}){let{unshareableData:e}=n,{classes:t}=Yu();if(e.length===0)return null;let r=e.map(({what:o,bytes:i})=>`${o} (${ju(i)})`).join(" and the ");return Wt.default.createElement(zt.Tooltip,{title:`The ${r} 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(zt.Typography,{component:"div",className:t.warning},Wt.default.createElement(Na,{fontSize:"small"}),"Not in the link"))}),Va=Uu;var oe=h(y(),1),Za=h(ze(),1);var $a=h(G(),1),Ya=(0,E.createSvgIcon)((0,$a.jsx)("path",{d:"M17 4h3c1.1 0 2 .9 2 2v2h-2V6h-3zM4 8V6h3V4H4c-1.1 0-2 .9-2 2v2zm16 8v2h-3v2h3c1.1 0 2-.9 2-2v-2zM7 18H4v-2H2v2c0 1.1.9 2 2 2h3zM18 8H6v8h12z"}),"FitScreen");var ja=h(G(),1),Ua=(0,E.createSvgIcon)((0,ja.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 Xa=h(G(),1),qa=(0,E.createSvgIcon)((0,Xa.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 _e=h(H(),1),Ka=h(k(),1),Xu=(0,Ka.observer)(function({model:e}){return oe.default.createElement(oe.default.Fragment,null,oe.default.createElement(_e.Tooltip,{title:"Zoom in"},oe.default.createElement(_e.IconButton,{"aria-label":"Zoom in",onClick:()=>{e.zoomIn()}},oe.default.createElement(Ot,null))),oe.default.createElement(_e.Tooltip,{title:"Zoom out"},oe.default.createElement(_e.IconButton,{"aria-label":"Zoom out",onClick:()=>{e.zoomOut()}},oe.default.createElement(qa,null))),oe.default.createElement(Za.default,{"data-testid":"fit_menu",tooltip:"Fit or reset zoom",menuItems:[{label:"Fit to window",onClick:()=>{e.fit()}},{label:"Fit horizontally",onClick:()=>{e.fitHorizontally()}},{label:"Fit vertically",onClick:()=>{e.fitVertically()}},{type:"divider"},{label:"Reset zoom",icon:Ua,onClick:()=>{e.resetZoom()}}]},oe.default.createElement(Ya,null)))}),Qa=Xu;var qu=(0,D.lazy)(()=>import("./HelpDialog-TCWNBZOV.js")),Zu=(0,es.observer)(function({model:n}){let[e,{height:t}]=(0,Ja.default)();return(0,D.useEffect)(()=>{n.setHeaderHeight(t??0)},[n,t]),(0,D.useEffect)(()=>()=>{n.setHeaderHeight(0)},[n]),D.default.createElement("div",{ref:e,style:{display:"flex",flexWrap:"wrap"}},D.default.createElement(Xi,{model:n}),D.default.createElement(Ri,{model:n}),D.default.createElement(za,{model:n}),D.default.createElement(Ea,{model:n}),D.default.createElement(Qa,{model:n}),D.default.createElement(Zi,{model:n}),D.default.createElement(na,{model:n}),D.default.createElement("div",{style:{paddingLeft:20,margin:"auto"}},D.default.createElement(La,{model:n})),D.default.createElement("div",{style:{flex:"1 1 0",minWidth:0,display:"flex"}},D.default.createElement(Da,{model:n}),D.default.createElement(aa,{model:n})),D.default.createElement(ua,{model:n}),D.default.createElement(Va,{model:n}),D.default.createElement(Qe,{model:n,variant:"header"}),D.default.createElement(Bt.Tooltip,{title:"Mouse & keyboard help"},D.default.createElement(Bt.IconButton,{"aria-label":"Mouse & keyboard help",onClick:()=>{n.queueDialog(r=>[qu,{model:n,onClose:r}])}},D.default.createElement(xr,null))))}),ts=Zu;var ve=h(y(),1),ns=h(H(),1),rs=h(k(),1);var Ku=(0,rs.observer)(function({model:n}){let{minimapHeight:e,msaCanvasWidth:t,highResScaleFactor:r}=n,o=(0,ns.useTheme)(),{unit:i,s,w:a,polygonHeight:l,polygonPoints:c}=Ar(n),u=Math.round(t*r),d=Math.round(12*r),m=$({draw:g=>{g.resetTransform(),g.clearRect(0,0,u,d);let p=Er({model:n,theme:o,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,o]}),f=(0,ve.useCallback)((g,p)=>{n.setScrollX(p-g/i)},[n,i]);return ve.default.createElement("div",{style:{position:"relative",height:e,width:t,flexShrink:0}},ve.default.createElement("canvas",{ref:m,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 ${o.palette.text.secondary}`}}),ve.default.createElement(fe,{axis:"x",variant:"thumb",getStart:()=>n.scrollX,onDrag:f,style:{top:0,left:Math.max(0,s),height:12,width:a}}),ve.default.createElement("svg",{height:l,width:t},ve.default.createElement("polygon",{fill:Cr,points:c})))}),os=Ku;var rt=h(y(),1),Cs=h(k(),1);var Se=h(y(),1);var is=h(G(),1),as=(0,E.createSvgIcon)((0,is.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");var Ge=h(H(),1),ss=h(k(),1);var Qu=(0,ss.observer)(function({model:n}){let{legends:e,showDomainLegend:t}=n,r=Lr(e),o=t?as:gr;return r.length>0?Se.default.createElement(Ge.Paper,{elevation:3,style:{position:"absolute",top:4,right:4,zIndex:no,maxWidth:220,maxHeight:"60%",display:"flex",flexDirection:"column",opacity:.95,pointerEvents:"none"}},Se.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)}},Se.default.createElement(o,{style:{fontSize:14}})),t?Se.default.createElement("div",{style:{overflow:"auto",padding:"2px 6px 4px"}},r.map((i,s)=>Se.default.createElement("div",{key:i.key,style:{display:"flex",alignItems:"center",gap:4,marginRight:s===0?18:0}},i.color?Se.default.createElement("div",{style:{width:9,height:9,flexShrink:0,background:i.color}}):null,Se.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}),ls=Qu;var ie=h(y(),1),ps=h(k(),1);var _t=h(y(),1),Gt=h(H(),1);function Bn(){return _t.default.createElement("div",{style:{position:"absolute",left:"50%",top:"50%"}},_t.default.createElement(Gt.CircularProgress,null),_t.default.createElement(Gt.Typography,null,"Loading..."))}var J=h(y(),1),ds=h(qe(),1),hs=h(H(),1),ms=h(k(),1);var cs=h(y(),1);function us({model:n,offsetX:e,offsetY:t}){let{anchor:r,hoverAt:o,clearAnchor:i}=we(),s=(0,cs.useRef)(void 0);function a(g){let{left:p,top:w}=g.getBoundingClientRect(),{scrollX:x,scrollY:S}=n;return({clientX:M,clientY:T})=>({col:Math.floor((M-p+e-(n.scrollX-x))/n.colWidth),row:Math.floor((T-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;o(g,S||void 0)}function d(g,p){s.current={x:g.clientX,y:g.clientY},g.shiftKey&&g.button===0&&Et(n,g,a(p))}function m(g,p){let w=s.current;if(s.current=void 0,w&&Math.hypot(g.clientX-w.x,g.clientY-w.y)>yn)return;let x=l(g,p),{col:S,row:M}=x,{mouseClickCol:T,mouseClickRow:v}=n,L=S===T&&M===v,_=c(x)&&!L;n.setMouseClickPos(_?S:void 0,_?M:void 0)}function f(){n.setMousePos(),i()}return{anchor:r,onMouseMove:u,onMouseDown:d,onClick:m,onMouseLeave:f}}var Ju=(0,ms.observer)(function({model:n,offsetX:e,offsetY:t}){let{blockSize:r,highResScaleFactor:o}=n,i=(0,hs.useTheme)(),{anchor:s,onMouseMove:a,onMouseDown:l,onClick:c,onMouseLeave:u}=us({model:n,offsetX:e,offsetY:t}),d=r*o,m=$({draw:p=>{p.resetTransform(),p.clearRect(0,0,d,d),ao({ctx:p,theme:i,offsetX:e,offsetY:t,model:n});let w=yr(n);w&&Tr({ctx:p,model:n,theme:i,offsetX:e,offsetY:t}),fo({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 J.default.createElement(J.default.Fragment,null,J.default.createElement("canvas",{ref:m,onMouseMove:p=>{m.current&&a(p,m.current)},onMouseDown:p=>{m.current&&l(p,m.current)},onClick:p=>{m.current&&c(p,m.current)},onMouseLeave:()=>{u()},width:d,height:d,style:{position:"absolute",top:t,left:e,width:r,height:r}}),s?J.default.createElement(ds.default,{clientPoint:s.clientPoint},f?J.default.createElement(J.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=>J.default.createElement("div",{key:`${p.accession}-${p.start}-${p.end}`},J.default.createElement("b",null,p.name)," (",p.accession,") ",p.start,"-",p.end,p.description?J.default.createElement(J.default.Fragment,null,J.default.createElement("br",null),p.description):null))):null)}),fs=Ju;var ed=(0,ps.observer)(function({model:n}){let{MSA:e,msaFilehandle:t,height:r,msaCanvasWidth:o,blocks2d:i,scrollZoom:s,scrollX:a,scrollY:l}=n,c=(0,ie.useRef)(null),u=(0,ie.useCallback)(p=>{n.doScrollX(p)},[n]),d=(0,ie.useCallback)(p=>{n.doScrollY(p)},[n]),m=(0,ie.useCallback)((p,w,x)=>{n.zoomToPos(p,w,x,n.wheelZoomAxis)},[n]),{onMouseDown:f,onMouseUp:g}=ge({ref:c,onScrollX:u,onScrollY:d,onZoom:m,scrollZoom:s});return ie.default.createElement("div",{ref:c,"data-testid":"msa_canvas",tabIndex:0,"aria-label":Bo,onKeyDown:p=>{yt(n,p)&&p.preventDefault()},onMouseDown:p=>{p.shiftKey?(p.preventDefault(),c.current?.focus({preventScroll:!0})):f(p)},onMouseUp:g,style:{position:"relative",height:r,width:o,overflow:"hidden"}},!e&&!t?null:e?ie.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translate(${a}px, ${l}px)`,willChange:"transform"}},i.map(([p,w])=>ie.default.createElement(fs,{key:`${p}_${w}`,model:n,offsetX:p,offsetY:w}))):ie.default.createElement(Bn,null))}),gs=ed;var bs=h(y(),1),vs=h(re(),1),Ss=h(H(),1),Ms=h(k(),1);function ws({ctx:n,model:e,theme:t}){let{mouseCol:r,colWidth:o,msaCanvasWidth:i,height:s,rowHeight:a,scrollX:l,scrollY:c,mouseRow:u,mouseClickRow:d,mouseClickCol:m,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*o+l,0,o,s)};ho({ctx:n,model:e,theme:t,offsetX:-l,offsetY:-c,width:i,height:s}),uo({ctx:n,model:e,offsetX:-l,offsetY:-c,height:s}),n.fillStyle=lo;for(let x of g)p(x);n.fillStyle=wt,r!==void 0&&w(r),u!==void 0&&p(u),n.fillStyle=bt,m!==void 0&&w(m),d!==void 0&&p(d)}var td=(0,Ms.observer)(function({model:n}){let{height:e,msaCanvasWidth:t,highResScaleFactor:r}=n,o=(0,Ss.useTheme)(),i=t*r,s=e*r,a=$({draw:l=>{(0,vs.isAlive)(n)&&ws({ctx:l,model:n,theme:o})},width:i,height:s,deps:[n,o]});return bs.default.createElement("canvas",{ref:a,id:"mouseover",width:i,height:s,style:{position:"absolute",top:0,left:0,width:t,height:e,zIndex:to,pointerEvents:"none"}})}),xs=td;var nd=(0,Cs.observer)(function({model:n}){return rt.default.createElement("div",{style:{position:"relative"}},rt.default.createElement(gs,{model:n}),rt.default.createElement(xs,{model:n}),rt.default.createElement(ls,{model:n}))}),ys=nd;var Nn=h(y(),1),Ts=h(k(),1);var rd=(0,Ts.observer)(function({model:n}){let{resolvedRowPanels:e,rowPanelsHeaderHeight:t,fontSize:r}=n;return e.length>0?Nn.default.createElement("div",{style:{display:"flex",flexShrink:0,height:t,alignItems:"flex-end"}},e.map(o=>{let i=po(o.width);return Nn.default.createElement("div",{key:o.id,title:o.header,style:{width:o.width,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",...i?{fontSize:r,textAlign:"center"}:{height:t,fontSize:Math.min(r,o.width),writingMode:"vertical-rl",transform:"rotate(180deg)"}}},o.header)})):null}),Es=rd;var le=h(y(),1),_n=h(k(),1);var ke=h(y(),1),As=h(qe(),1),Ls=h(H(),1),ks=h(k(),1);function Me(n,e){let r=n[e]??n.attributes?.[e];return typeof r=="string"?r:void 0}function Vt(n){return Me(n,"Name")??Me(n,"name")}function od({model:n,panel:e,name:t,x:r}){if(e.kind==="strip")return[`${e.header}: ${n.rowDataOf(t)?.[e.field]??"(none)"}`];let o=e.spans.get(t)?.findLast(l=>r>=l.xStart&&r<=l.xEnd);if(!o)return[];let{annotation:i}=o,s=i.strand===void 0?"":i.strand<0?" (-)":" (+)",a=e.field?Me(i,e.field):void 0;return[Vt(i)??i.accession,`${i.start}-${i.end}${s}`,...a===void 0?[]:[`${e.field}: ${a}`]]}var id=(0,ks.observer)(function({model:n,panel:e,offsetY:t}){let{anchor:r,hoverAt:o,clearAnchor:i}=we(),s=(0,Ls.useTheme)(),{blockSize:a,highResScaleFactor:l,rowHeight:c}=n,u=e.width,d=a,m=u*l,f=d*l,g=$({draw:p=>{p.resetTransform(),p.clearRect(0,0,m,f),go({ctx:p,model:n,theme:s,panel:e,x:0,offsetY:t})},width:m,height:f,deps:[n,s,e,t]});return ke.default.createElement(ke.default.Fragment,null,ke.default.createElement("canvas",{ref:g,width:m,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),M=n.leaves[S]?.data.name,T=M===void 0?[]:od({model:n,panel:e,name:M,x:p.clientX-w});o(p,M===void 0||T.length===0?void 0:{name:M,lines:T}),n.setMousePos(void 0,M===void 0?void 0:S)},onMouseLeave:()=>{i(),n.setMousePos(void 0,void 0)}}),r?ke.default.createElement(As.default,{clientPoint:r.clientPoint},ke.default.createElement("div",null,r.value.name),r.value.lines.map(p=>ke.default.createElement("div",{key:p},p))):null)}),Rs=id;var ad=(0,_n.observer)(function({model:n,panel:e}){let t=(0,le.useRef)(null),{height:r,blocksY:o,scrollY:i}=n,s=(0,le.useCallback)(c=>{n.doScrollY(c)},[n]),{onMouseDown:a,onMouseUp:l}=ge({ref:t,onScrollY:s});return le.default.createElement("div",{ref:t,"data-testid":`rowpanel_${e.id}`,onMouseDown:a,onMouseUp:l,style:{height:r,width:e.width,flexShrink:0,overflow:"hidden",position:"relative"}},le.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translateY(${i}px)`,willChange:"transform"}},o.map(c=>le.default.createElement(Rs,{key:c,model:n,panel:e,offsetY:c}))))}),sd=(0,_n.observer)(function({model:n}){let{resolvedRowPanels:e}=n;return e.length>0?le.default.createElement("div",{style:{display:"flex",flexShrink:0}},e.map(t=>le.default.createElement(ad,{key:t.id,model:n,panel:t}))):null}),Fs=sd;var $t=h(y(),1),Hs=h(H(),1),Ps=h(k(),1);var ld=(0,Ps.observer)(function({model:n}){let{effectiveTreeAreaWidth:e,overviewHeight:t,highResScaleFactor:r}=n,o=(0,Hs.useTheme)(),[i,s]=(0,$t.useState)(),a=Math.round(e*r),l=Math.round(t*r),c=$({draw:u=>{u.resetTransform(),u.clearRect(0,0,a,l);let d=Po({model:n,theme:o,width:e,height:t,scale:r});u.scale(r,r);let m={model:n,ctx:u,width:e,height:t};d?u.drawImage(d,0,0,d.width,d.height,0,0,m.width,m.height):Ho({...m,theme:o}),i&&wn({...m,rows:i.rows,color:o.palette.text.secondary});let f=n.treeOverviewFocusRows;f&&wn({...m,rows:f,color:o.palette.text.primary})},width:a,height:l,deps:[n,o,i]});return $t.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(m=>m?.id===d?.id?m:d)},onMouseLeave:()=>{s(void 0)},onClick:u=>{n.treeOverviewClick(u.nativeEvent.offsetY)}})}),Is=ld;var Vn=h(y(),1),Qs=h(k(),1);var ce=h(y(),1),qs=h(re(),1),Zs=h(k(),1);var Yt=h(y(),1),Ds=h(H(),1),Os=h(k(),1);var cd=(0,Os.observer)(function({model:n}){let e=(0,Ds.useTheme)(),{fontSize:t}=n;return Yt.default.createElement(Yt.default.Fragment,null,Lo(n).map(r=>Yt.default.createElement("div",{key:r.key,title:r.label,style:{position:"absolute",left:r.left,top:r.top,width:r.width,height:r.height,display:"flex",alignItems:"center",color:r.color??e.palette.text.primary,fontSize:t,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",pointerEvents:"none",...r.horizontal?{}:{writingMode:"vertical-rl",transform:"rotate(180deg)"}}},r.label)))}),Ws=cd;var he=h(y(),1),Vs=h(qe(),1),$s=h(Xe(),1),Ys=h(H(),1),js=h(k(),1);var ee=h(y(),1),ae=h(H(),1),zs=h(k(),1),ud=(0,ee.lazy)(()=>import("./TreeNodeInfoDialog-T5XMPG3R.js")),dd=(0,zs.observer)(function({node:n,model:e,onClose:t}){let{collapsed:r,showOnly:o,relativeTo:i}=e,{name:s,id:a,leaf:l}=n,c=r.includes(a),u=a===e.tree.id,d=l?"subtree":"this node";return ee.default.createElement(ae.Menu,{anchorReference:"anchorPosition",anchorPosition:{left:n.x,top:n.y},transitionDuration:0,open:!0,onClose:t},ee.default.createElement(ae.MenuItem,{dense:!0,disabled:!0},s),l?ee.default.createElement(ae.MenuItem,{dense:!0,onClick:()=>{e.queueDialog(m=>[ud,{info:e.getRowData(s),model:e,nodeName:s,onClose:m}]),t()}},"More info..."):null,ee.default.createElement(ae.MenuItem,{dense:!0,onClick:()=>{e.toggleCollapsed(a),t()}},c?`Expand ${d}`:`Collapse ${d}`),l?null:ee.default.createElement(ae.MenuItem,{dense:!0,onClick:()=>{e.setShowOnly(o===a?void 0:a),t()}},o===a?"Disable show only this node":"Show only this node"),l||c?null:ee.default.createElement(ae.MenuItem,{dense:!0,onClick:()=>{e.toggleRotated(a),t()}},"Rotate this node"),u?null:ee.default.createElement(ae.MenuItem,{dense:!0,onClick:()=>{e.rerootAt(a),t()}},"Reroot here"),l?ee.default.createElement(ae.MenuItem,{dense:!0,onClick:()=>{e.drawRelativeTo(s),t()}},"Indicate differences from this row"):null,l&&i?ee.default.createElement(ae.MenuItem,{dense:!0,onClick:()=>{e.drawRelativeTo(void 0),t()}},"Clear reference row"):null)}),Bs=dd;var _s=h(y(),1);var ot=class{constructor(e=1/0,t=Float64Array,r=Uint32Array){let o=e!==1/0;this.ids=o?new r(e):[],this.values=o?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 r=this.length++;for(;r>0;){let o=r-1>>1,i=this.values[o];if(t>=i)break;this.ids[r]=this.ids[o],this.values[r]=i,r=o}this.ids[r]=e,this.values[r]=t}pop(){if(this.length===0)return;let e=this.ids,t=this.values,r=e[0],o=--this.length;if(o>0){let i=e[o],s=t[o],a=0,l=o>>1;for(;a<l;){let c=(a<<1)+1,u=c+1,d=c+(+(u<o)&+(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 r}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 Ns=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Gn=3,it=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[r,o]=new Uint8Array(e,t+0,2);if(r!==251)throw new Error("Data does not appear to be in a Flatbush format.");let i=o>>4;if(i!==Gn)throw new Error(`Got v${i} data when expected v${Gn}.`);let s=Ns[o&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,r=Float64Array,o=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=r,this.IndexArrayType=l<16384?Uint16Array:Uint32Array;let c=Ns.indexOf(r),u=l*4*r.BYTES_PER_ELEMENT;if(c<0)throw new Error(`Unexpected typed array class: ${r}.`);let d=r,m=this.IndexArrayType;if(i)this.data=i,this._boxes=new d(i,s+8,l*4),this._indices=new m(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 o(8+u+l*this.IndexArrayType.BYTES_PER_ELEMENT);this._boxes=new d(f,8,l*4),this._indices=new m(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,(Gn<<4)+c]),new Uint16Array(f,2,1)[0]=t,new Uint32Array(f,4,1)[0]=e}this._queue=new ot}add(e,t,r=e,o=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]=r,a[i+3]=o,this._pos=i+4,e<this.minX&&(this.minX=e),t<this.minY&&(this.minY=t),r>this.maxX&&(this.maxX=r),o>this.maxY&&(this.maxY=o),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:r,minY:o,nodeSize:i,_indices:s,_levelBounds:a}=this,l=this.maxX-r||1,c=this.maxY-o||1,u=new Int32Array(t),d=65535,m=d/l,f=d/c;for(let p=0,w=0;p<t;p++){let x=e[w++],S=e[w++],M=e[w++],T=e[w++],v=m*((x+M)/2-r)|0,L=f*((S+T)/2-o)|0;u[p]=pd(v,L)}md(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,M=e[w++],T=e[w++],v=e[w++],L=e[w++];for(let _=1;_<i&&w<x;_++)M=Math.min(M,e[w++]),T=Math.min(T,e[w++]),v=Math.max(v,e[w++]),L=Math.max(L,e[w++]);s[g>>2]=S,e[g++]=M,e[g++]=T,e[g++]=v,e[g++]=L}}this._pos=g}search(e,t,r,o,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,m=a.length-1,f=[],g=[],p=!1;for(;d!==void 0;){let w=Math.min(d+c*4,a[m]),x=d>=u;if(p)this._collectContained(d,w,m,u,g,i);else for(let S=d;S<w;S+=4){let M=s[S];if(r<M)continue;let T=s[S+1];if(o<T)continue;let v=s[S+2];if(e>v)continue;let L=s[S+3];if(t>L)continue;let _=l[S>>2]|0;if(x){let Z=+(e<=M&&t<=T&&r>=v&&o>=L);f.push(_|Z,m-1)}else(i===void 0||i(_,M,T,v,L))&&g.push(_)}m=f.pop(),d=f.pop(),d!==void 0&&(p=(d&1)===1,d&=-2)}return g}_collectContained(e,t,r,o,i,s){let a=this._boxes,l=this._indices,c=e;for(let d=r;d>0;d--)c=l[c>>2];let u=Math.min(c+(t-e)*this.nodeSize**r,o);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,r=1/0,o=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,m=u*4,f=[],g=o*o,p=r===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===r)break;continue}c.pop();let S=x>>1,M=S<d,T=Math.min(S+m,hd(S,a));for(let v=S;v<T;v+=4){let L=s[v],_=s[v+1],Z=s[v+2],te=s[v+3],ne=Math.max(Math.max(L-e,e-Z),0),se=Math.max(Math.max(_-t,t-te),0),K=ne*ne+se*se;if(K>w)continue;let C=l[v>>2]|0;M?(i===void 0||i(C))&&(c.push(C<<1|1,K),p&&K<w&&(w=K)):c.push(C<<1,K)}}return c.clear(),f}};function hd(n,e){let t=0,r=e.length-1;for(;t<r;){let o=t+r>>1;e[o]>n?r=o:t=o+1}return e[t]}function md(n,e,t,r,o,i){let s=[r,o];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],m=c>u!=c>d?c:u<c!=u<d?u:d,f=l-1,g=a+1;for(;;){do f++;while(n[f]<m);do g--;while(n[g]>m);if(f>=g)break;fd(n,e,t,f,g)}s.push(l,g,g+1,a)}}function fd(n,e,t,r,o){let i=n[r];n[r]=n[o],n[o]=i;let s=4*r,a=4*o,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 m=t[r];t[r]=t[o],t[o]=m}function pd(n,e){let t=n^e,r=65535^t,o=65535^(n|e),i=n&(e^65535),s=t|r>>1,a=t>>1^t,l=o^(o>>1^r&i>>1),c=i^(t&o>>1^i>>1);return t=s&s>>2^a&a>>2,r=s&a>>2^a&(s^a)>>2,o=l^(s&l>>2^a&c>>2),i=c^(a&l>>2^(s^a)&c>>2),s=t&t>>4^r&r>>4,a=t&r>>4^r&(t^r)>>4,l=o^(t&o>>4^r&i>>4),c=i^(r&o>>4^(t^r)&i>>4),o=l^(s&l>>8^a&c>>8),i=c^(a&l>>8^(s^a)&c>>8),o^=o>>1,i^=i>>1,t=n^e,r=i|65535^(t|o),t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,((r<<1|t)>>>0)-2147483648}var jt=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 it(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 Gs({model:n,offsetY:e}){let[t]=(0,_s.useState)(()=>new jt),{anchor:r,hoverAt:o,clearAnchor:i}=we();function s(c){let u=c.nativeEvent.offsetX,d=c.nativeEvent.offsetY+e,m=t.search({minX:u,maxX:u+1,minY:d,maxY:d+1});return m.find(f=>!f.branch)??m[0]}function a(c){let u=s(c);o(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:r,hitTest:s,onMouseMove:a,onMouseLeave:l}}var gd=(0,$s.makeStyles)()(n=>({hover:{position:"absolute",pointerEvents:"none",zIndex:100,background:n.palette.action.hover}})),wd=(0,js.observer)(function({model:n,offsetY:e}){let{classes:t}=gd(),r=(0,Ys.useTheme)(),[o,i]=(0,he.useState)(),{clickMap:s,anchor:a,hitTest:l,onMouseMove:c,onMouseLeave:u}=Gs({model:n,offsetY:e}),d=a?.value,{effectiveTreeAreaWidth:m,blockSize:f,highResScaleFactor:g}=n,p=m,w=f,x=p*g,S=w*g,M=$({draw:v=>{v.resetTransform(),v.clearRect(0,0,x,S),Fo({ctx:v,model:n,offsetY:e,clickMap:s,theme:r})},width:x,height:S,deps:[n,s,e,r]}),T={width:p,height:w,top:e,left:0,position:"absolute"};return he.default.createElement(he.default.Fragment,null,o?he.default.createElement(Bs,{node:o,model:n,onClose:()=>{i(void 0)}}):null,he.default.createElement("canvas",{ref:M,width:x,height:S,style:{...T,cursor:d?"pointer":"default"},onMouseMove:v=>{c(v)},onMouseLeave:()=>{u()},onClick:v=>{let L=l(v);L&&i({x:v.clientX,y:v.clientY,id:L.id,name:L.name,leaf:!L.branch})}}),d&&!d.branch?he.default.createElement("div",{className:t.hover,style:{left:d.minX,top:d.minY,width:d.maxX-d.minX,height:d.maxY-d.minY}}):null,a?he.default.createElement(Vs.default,{clientPoint:a.clientPoint},a.value.label??a.value.name):null)}),Us=wd;function Xs({ctx:n,model:e}){let{rowHeight:t,effectiveTreeAreaWidth:r,height:o,scrollY:i,mouseRow:s,referenceRowIndex:a,hoveredRowIndices:l,highResScaleFactor:c}=e;n.resetTransform(),n.clearRect(0,0,r*c,o*c),n.scale(c,c);let u=d=>{n.fillRect(0,d*t+i,r,t)};n.fillStyle=so;for(let d of l)u(d);s!==void 0&&s!==a&&!l.includes(s)&&u(s)}var bd=(0,Zs.observer)(function({model:n}){let e=(0,ce.useRef)(null),{height:t,blocksY:r,effectiveTreeAreaWidth:o,scrollY:i,highResScaleFactor:s}=n,a=(0,ce.useCallback)(f=>{n.doScrollY(f)},[n]),{onMouseDown:l,onMouseUp:c}=ge({ref:e,onScrollY:a}),u=o*s,d=t*s,m=$({draw:f=>{(0,qs.isAlive)(n)&&Xs({ctx:f,model:n})},width:u,height:d,deps:[n]});return ce.default.createElement("div",{ref:e,onMouseDown:l,onMouseUp:c,style:{height:t,position:"relative",width:o}},ce.default.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translateY(${i}px)`,willChange:"transform"}},r.map(f=>ce.default.createElement(Us,{key:f,model:n,offsetY:f})),ce.default.createElement(Ws,{model:n})),ce.default.createElement("canvas",{ref:m,width:u,height:d,style:{position:"absolute",top:0,left:0,width:o,height:t,zIndex:1e3,pointerEvents:"none"}}))}),Ks=bd;var vd=(0,Qs.observer)(function({model:n}){let{effectiveTreeAreaWidth:e}=n;return Vn.default.createElement("div",{style:{overflow:"hidden",flexShrink:0,width:e}},Vn.default.createElement(Ks,{model:n}))}),Js=vd;var Ut=h(y(),1),el=h(H(),1),tl=h(k(),1);var Sd=(0,tl.observer)(({model:n})=>{let{effectiveTreeAreaWidth:e,marginLeft:t,treeScaleBar:r}=n,o=(0,el.useTheme)();return Ut.default.createElement("div",{style:{flexShrink:0,width:e}},r?Ut.default.createElement("svg",{width:e,height:Ue,style:{display:"block"}},Ut.default.createElement(To,{bar:r,marginLeft:t,y:Ue,color:o.palette.text.primary})):null)}),nl=Sd;var Md=(0,Re.observer)(function({model:n}){let{showHorizontalScrollbar:e,showTreeOverview:t,resizeHandleWidth:r}=n;return F.default.createElement("div",{style:{display:"flex"}},F.default.createElement("div",{style:{flexShrink:0}},t?F.default.createElement(Is,{model:n}):null,F.default.createElement(nl,{model:n})),F.default.createElement(Es,{model:n}),F.default.createElement("div",{style:{width:r,flexShrink:0}}),e?F.default.createElement(os,{model:n}):null)}),xd=(0,Re.observer)(function({model:n}){let{mouseCol:e,mouseClickCol:t,colWidth:r,scrollX:o,effectiveTreeAreaWidth:i,rowPanelsWidth:s,resizeHandleWidth:a,totalTrackAreaHeight:l,msaCanvasWidth:c,resolvedSelection:u}=n,d=[{start:u?.startCol,end:u?.endCol,color:co},{start:e,end:e,color:wt},{start:t,end:t,color:bt}];return F.default.createElement("div",{style:{position:"absolute",left:i+s+a,top:0,width:c,height:l,overflow:"hidden",pointerEvents:"none"}},d.map(({start:m,end:f,color:g})=>m===void 0||f===void 0?null:F.default.createElement("div",{key:g,style:{position:"absolute",left:m*r+o,top:0,width:(f-m+1)*r,height:l,backgroundColor:g,zIndex:100}})))}),Cd=(0,Re.observer)(function({model:n}){let{turnedOnTracks:e}=n;return e.length===0?null:F.default.createElement("div",{style:{position:"relative"}},F.default.createElement(xd,{model:n}),e.map(t=>F.default.createElement(fi,{key:t.model.id,model:n,track:t})))}),yd=(0,Re.observer)(function({model:n}){let{showVerticalScrollbar:e}=n;return F.default.createElement("div",{style:{display:"flex"}},F.default.createElement(Js,{model:n}),F.default.createElement(Fs,{model:n}),F.default.createElement(Xo,{model:n}),F.default.createElement(ys,{model:n}),e?F.default.createElement(wi,{model:n}):null)}),Td=(0,Re.observer)(function({model:n}){return F.default.createElement("div",{style:{position:"relative"}},F.default.createElement(Md,{model:n}),F.default.createElement(Cd,{model:n}),F.default.createElement(yd,{model:n}))}),Ed=(0,Re.observer)(function({model:n}){let{height:e,hideHeader:t,viewInitialized:r,DialogComponent:o,DialogProps:i}=n;return F.default.createElement("div",null,r?F.default.createElement(F.default.Fragment,null,F.default.createElement("div",{style:{height:e,overflow:"clip"}},t?null:F.default.createElement(ts,{model:n}),F.default.createElement(Td,{model:n})),F.default.createElement(qo,{model:n}),o?F.default.createElement(F.Suspense,{fallback:null},F.default.createElement(o,{...i})):null):null)}),rl=Ed;var P=h(y(),1),Ve=h(ln(),1),X=h(H(),1),ul=h(k(),1);var at=h(y(),1),qt=h(H(),1),sl=h(k(),1);var ol=`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
+ `,il="(((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 Xt(n,e,t,r){n.setError(void 0),e&&n.setMSAFilehandle(e),t&&n.setTreeFilehandle(t),r&&(n.setGFFFilehandle(r),n.setShowDomains(!0))}var al="https://jbrowse.org/genomes/multiple_sequence_alignments",Ad="https://jbrowse.org/genomes/newick_trees",Fe="https://gmod.org/JBrowseMSA/demo/data",Ld=[{label:"NLRP1 in 12 mammals, with Pfam domains",msa:`${Fe}/nlrp1.aln`,tree:`${Fe}/nlrp1.nh`,gff:`${Fe}/nlrp1-domains.gff`},{label:"474 human protein kinase domains, with a FastTree tree",msa:`${Fe}/kinase-pocket/kinase-pocket.afa`,tree:`${Fe}/kinase-pocket/kinase-pocket.nwk`},{label:"RSV-A G gene in 1,840 genomes, with the Nextstrain tree",msa:`${Fe}/scale/rsv-full.aln`,tree:`${Fe}/scale/rsv-full.nh`},{label:"230k COVID-19 samples (tree only)",tree:`${Ad}/sarscov2phylo.pub.ft.nh`},{label:"Pfam SARS-CoV-2 families, multi-Stockholm with domains",msa:`${al}/pfam-cov2.stock`,gff:`${al}/pfam-cov2-domains.gff`},{label:"Small protein alignment and tree",inline:{msa:ol,tree:il}}];function $n(n){return n?{uri:n,locationType:"UriLocation"}:void 0}var kd=(0,sl.observer)(function({model:n}){return at.default.createElement("ul",null,Ld.map(({label:e,msa:t,tree:r,gff:o,inline:i})=>at.default.createElement("li",{key:e},at.default.createElement(qt.Link,{href:"#",onClick:s=>{s.preventDefault(),n.setError(void 0);try{i?n.setData(i):Xt(n,$n(t),$n(r),$n(o))}catch(a){console.error(a),n.setError(a)}}},at.default.createElement(qt.Typography,{component:"span"},e)))))}),ll=kd;var cl="@media (max-width: 640px)",Rd=(0,ul.observer)(function({model:n}){let[e,t]=(0,P.useState)(),[r,o]=(0,P.useState)(),[i,s]=(0,P.useState)(),{error:a}=n;return P.default.createElement(X.Container,null,P.default.createElement(X.Box,{sx:{width:"50%",[cl]:{width:"100%"}}},a?P.default.createElement(Ve.ErrorMessage,{error:a}):null,P.default.createElement(X.Typography,null,"Open an MSA file (FASTA, Stockholm, Clustal, A3M or EMF format) and/or a tree file (Newick format)."),P.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.")),P.default.createElement(X.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",gap:"40px",[cl]:{flexDirection:"column",alignItems:"stretch",gap:"16px"}}},P.default.createElement("div",null,P.default.createElement("div",null,P.default.createElement(X.Typography,null,"MSA file or URL"),P.default.createElement(Ve.FileSelector,{location:e,setLocation:t})),P.default.createElement("div",null,P.default.createElement(X.Typography,null,"Tree file or URL"),P.default.createElement(Ve.FileSelector,{location:r,setLocation:o})),P.default.createElement("div",null,P.default.createElement(X.Typography,null,"Annotation GFF file or URL (optional)"),P.default.createElement(Ve.FileSelector,{location:i,setLocation:s}))),P.default.createElement("div",null,P.default.createElement(X.Button,{onClick:()=>{try{Xt(n,e,r,i)}catch(l){console.error(l),n.setError(l)}},variant:"contained",color:"primary",disabled:!e&&!r},"Open")),P.default.createElement("div",null,P.default.createElement(X.Typography,null,"Examples"),P.default.createElement(ll,{model:n}))))}),dl=Rd;var hl=(0,jn.observer)(function({model:n,error:e}){return Y.default.createElement("div",null,Y.default.createElement(Yn.ErrorMessage,{error:e}),n.importForm?Y.default.createElement(fl.Button,{variant:"contained",color:"primary",onClick:()=>{n.reset()}},"Return to import form"):null)}),Fd=(0,jn.observer)(function({model:n}){let{isLoading:e,dataInitialized:t,data:r,error:o,resetCount:i,msaFilehandle:s,treeFilehandle:a,importForm:l}=n,c=!!(r.msa||r.tree),u=!o&&!!(s||a||e);return Y.default.createElement("div",null,Y.default.createElement(ml.ErrorBoundary,{key:i,FallbackComponent:d=>Y.default.createElement(hl,{model:n,error:d.error})},t?e?Y.default.createElement(Qe,{model:n,variant:"page"}):Y.default.createElement(rl,{model:n}):c?Y.default.createElement(hl,{model:n,error:o}):Y.default.createElement(Y.default.Fragment,null,u?Y.default.createElement(Qe,{model:n,variant:"page"}):null,l?Y.default.createElement("div",{style:{display:u?"none":void 0}},Y.default.createElement(dl,{model:n})):o?Y.default.createElement(Yn.ErrorMessage,{error:o}):null)))}),Un=Fd;var I=h(y(),1),Dc=h(En(),1),nn=h(re(),1),Oc=h(gl(),1),Ye=h(je(),1);var R=h(pr(),1),kc=h(Gc(),1),He=h(bl(),1),b=h(re(),1),N=h(je(),1);function vl(n,e,t){let r=Math.max(0,t-e+1);return n.map(([o,i])=>`>${o}
16
+ ${i.slice(e-1,t).padEnd(r,"-")}
17
+ `).join("")}function Xn({mapSize:n,blockSize:e,viewportPos:t,viewportSize:r}){let o=Math.max(0,Math.min(t,n-r)),i=Math.min(o+r,n),s=Math.floor(o/e),a=Math.ceil(i/e)-1,l=[];for(let c=s;c<=a;c++)l.push(c*e);return l}var xe="rgb(128,179,230)",Sl="#d88",Hd="rgb(192, 72, 192)",Pd="rgb(204, 77, 204)",Ml="#8f8",xl="rgb(26,204,26)",Id="rgb(240, 128, 128)",Dd="rgb(240, 144, 72)",Od="rgb(204, 204, 0)",Cl="rgb(26, 179, 179)";function yl(n,e){let t=n.total(e),r=sn=>n.count(e,sn),o=r("W"),i=r("L"),s=r("V"),a=r("I"),l=r("M"),c=r("A"),u=r("F"),d=r("C"),m=r("H"),f=r("P"),g=r("R"),p=r("K"),w=r("Q"),x=r("E"),S=r("D"),M=r("T"),T=r("S"),v=r("G"),L=r("Y"),_=r("N"),Z=o+i+s+a+l+c+u+d+m+f+L,te=p+g,ne=w+x,se=x+S,K=M+T,C=sn=>sn/t,O={};return C(Z)>.6&&(O.W=xe,O.L=xe,O.V=xe,O.A=xe,O.I=xe,O.M=xe,O.F=xe,O.C=xe),(C(te)>.6||C(p)>.8||C(g)>.8||C(w)>.8)&&(O.K=Sl,O.R=Sl),(C(te)>.6||C(ne)>.5||C(x)>.8||C(w)>.8||C(S)>.8)&&(O.E=Hd),(C(te)>.6||C(se)>.5||C(p)>.8||C(g)>.8||C(w)>.8)&&(O.D=Pd),(C(_)>.5||C(L)>.85)&&(O.N=Ml),(C(te)>.6||C(ne)>.6||C(w)>.85||C(x)>.85||C(p)>.85||C(g)>.85)&&(O.Q=Ml),(C(Z)>.6||C(K)>.5||C(T)>.85||C(M)>.85)&&(O.S=xl,O.T=xl),C(d)>.85&&(O.C=Id),v>0&&(O.G=Dd),f>0&&(O.P=Od),(C(Z)>.6||C(o)>.85||C(L)>.85||C(c)>.85||C(d)>.85||C(f)>.85||C(w)>.85||C(u)>.85||C(m)>.85||C(a)>.85||C(i)>.85||C(l)>.85||C(s)>.85)&&(O.H=Cl,O.Y=Cl),O}function Tl({col:n,colStats:e,conservation:t,propertyConservation:r}){if(n>=e.numColumns)return;let o=e.total(n);if(!o)return;let i=e.gapCount(n),s=e.residueEntries(n).sort((l,c)=>c[1]-l[1]),a=s[0];return{col:n,total:o,gaps:i,gapFraction:i/o,conservation:t[n]??0,propertyConservation:r[n],consensusLetter:a?.[0]??"",consensusCount:a?.[1]??0,consensusFraction:a?a[1]/o:0,distribution:s}}function st(n){let e=[],t=new Array(n.length),r=n.map((o,i)=>i).sort((o,i)=>n[o].startCol-n[i].startCol);for(let o of r){let{startCol:i,endCol:s}=n[o],a=e.findIndex(c=>c<=i),l=a===-1?e.length:a;e[l]=s,t[o]=l}return n.map((o,i)=>({...o,lane:t[i],laneCount:e.length}))}function El(n,e){if(n<=0||e<20)return;let t=e/2/n,r=10**Math.floor(Math.log10(t)),o=t/r,i=(o>=5?5:o>=2?2:1)*r,s=i*n;return s>e?void 0:{step:i,px:s,label:`${Number(i.toPrecision(2))}`}}var Wd=[["#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"]],Al=Wd,zd={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 Ll(n){return n===void 0?void 0:zd[n]}function Zt(n,e){let t=n.length,r=e??Al[t-1];return r&&t<=r.length?Object.fromEntries(n.map((o,i)=>[o,r[i]])):Object.fromEntries(n.map((o,i)=>[o,ft({h:i*360/t,s:60,l:60}).toHex()]))}function qn(n,e,t="image"){let r=n;return`${(r?.uri??r?.localPath??r?.name)?.split(/[?#]/)[0]?.split(/[/\\]/).pop()?.replace(/\.[^.]*$/,"")||t}.${e}`}var Bd=new Set(["row","start","end"]),kl=new WeakMap;function Rl(n){return n.map(e=>{let t=kl.get(e);if(t)return t;let r=Nd(e);return kl.set(e,r),r})}function Nd(n){let{row:e,start:t,end:r,name:o,description:i,type:s,strand:a,color:l}=n,c=o??`${e}:${t}-${r}`,u=Object.fromEntries(Object.entries(n).filter(([d,m])=>!Bd.has(d)&&m!==void 0).map(([d,m])=>[d,String(m)]));return{id:e,accession:c,name:o??c,description:i??o??c,featureType:s,start:t,end:r,strand:a==="+"?1:a==="-"?-1:void 0,color:l,attributes:u}}var Fl=h(pr(),1);function _d(n){return typeof n=="string"?n:n?.message}async function Hl(n,e,{fetcher:t=Fl.fetchAndMaybeUnzipText,controller:r=new AbortController}={}){try{return await t(n,{signal:r.signal,statusCallback:o=>{let i=_d(o);e(i?{msg:i,onCancel:()=>{r.abort()}}:void 0)}})}finally{e(void 0)}}function Pl(n){return n instanceof DOMException&&n.name==="AbortError"}function Il(n){let e=new Map(n.map(r=>{let o=r.dist===void 0?void 0:Number(r.dist);return[r.id,{id:`${r.id}`,name:r.label||`${r.id}`,...o!==void 0&&Number.isFinite(o)?{length:o}:{},children:[]}]})),t;for(let r of n){let o=e.get(r.id),i=r.parent!==void 0?e.get(r.parent):void 0;i?i.children.push(o):t??=o}if(t===void 0)throw new Error("could not build tree from flat node list: no root found (input was empty or contains a parent cycle)");return t}var ue=h(re(),1);function Dl(n=mt){return ue.types.model({tree:ue.types.maybe(ue.types.string),msa:ue.types.maybe(ue.types.string),treeMetadata:ue.types.maybe(ue.types.string),gff:ue.types.maybe(ue.types.string)}).actions(e=>({setTree(t){e.tree=t},setMSA(t){e.msa=t},setTreeMetadata(t){e.treeMetadata=t},setGFF(t){e.gff=t}})).postProcessSnapshot(e=>Object.fromEntries(Object.entries(e).map(([t,r])=>[t,r&&r.length>n?void 0:r])))}var Ol=h(re(),1);function Wl(){return Ol.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,r]=e(()=>{this.removeActiveDialog()});n.queueOfDialogs=[...n.queueOfDialogs,[t,r]]}}))}var Ce=h(re(),1);var Kt=h(re(),1);function A(n,e){return typeof Kt.types.stripDefault=="function"?Kt.types.stripDefault(n,e):Kt.types.optional(n,e)}var Gd=["stockholm","a3m","fasta","emf","clustal"];function zl(){return Ce.types.model({bgColor:A(Ce.types.boolean,Or),colorSchemeName:A(Ce.types.string,ut),customColorScheme:Ce.types.frozen(),showColumnStats:A(Ce.types.boolean,Wr),msaFormat:Ce.types.maybe(Ce.types.enumeration("MSAFormat",Gd))}).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 j=h(re(),1);function Bl(){return j.types.model({drawLabels:A(j.types.boolean,zr),labelsAlignRight:A(j.types.boolean,Br),treeAreaWidth:j.types.maybe(j.types.number),treeWidth:j.types.maybe(j.types.number),showBranchLen:A(j.types.boolean,Vr),treeOrder:A(j.types.enumeration("TreeOrder",[...ht]),$r),drawTree:A(j.types.boolean,Yr),drawNodeBubbles:A(j.types.boolean,jr),drawNodeLabels:A(j.types.boolean,Ur),showTreeOverview:A(j.types.boolean,Xr),overviewHeight:A(j.types.number,qr)}).actions(n=>({setTreeAreaWidth(e){n.treeAreaWidth=e===void 0?void 0:Math.round(e),n.treeWidth=void 0},setTreeWidth(e){n.treeWidth=e===void 0?void 0:Math.round(e)},setLabelsAlignRight(e){n.labelsAlignRight=e},setDrawTree(e){n.drawTree=e},setShowBranchLen(e){n.showBranchLen=e},setTreeOrder(e){n.treeOrder=e},setDrawNodeBubbles(e){n.drawNodeBubbles=e},setDrawNodeLabels(e){n.drawNodeLabels=e},setShowTreeOverview(e){n.showTreeOverview=e},setDrawLabels(e){n.drawLabels=e}}))}var Gl="ARNDCQEGHILKMFPSTWYVBZX*",Vd=[[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]],Vl=Gl.length,$d=Int8Array.from(Vd.flat()),Kn=new Int8Array(128).fill(-1);for(let n=0;n<Vl;n++){let e=Gl[n];Kn[e.charCodeAt(0)]=n,Kn[e.toLowerCase().charCodeAt(0)]=n}var Qt=-2;function Nl(n,e){if(e>=n.length)return Qt;let t=n.charCodeAt(e);return t-45>>>0<=1?Qt:t<128?Kn[t]:-1}function Zn(n,e){return n<0||e<0?-4:$d[n*Vl+e]}function Yd(n,e){let t=Math.max(n.length,e.length),r=0,o=0,i=0;for(let l=0;l<t;l++){let c=Nl(n,l),u=Nl(e,l),d=c===Qt,m=u===Qt;d&&m||(r++,!(d||m)&&(o+=Zn(c,u),i+=Math.max(Zn(c,c),Zn(u,u))))}if(r===0||i<=0)return 1;let s=o/i,a=Math.max(.01,Math.min(1,s));return-Math.log(a)}function jd(n){let e=n.length,t=[];for(let r=0;r<e;r++){t[r]=[];for(let o=0;o<e;o++)r===o?t[r][o]=0:o<r?t[r][o]=t[o][r]:t[r][o]=Yd(n[r][1],n[o][1])}return t}function Ud(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 r=[];for(let a=0;a<t;a++)r[a]=[...n[a]];let o=e.map(a=>({name:a})),i=t;for(;i>2;){let a=[];for(let S=0;S<o.length;S++)o[S]!==void 0&&a.push(S);let l=new Map;for(let S of a){let M=0;for(let T of a)S!==T&&(M+=r[S][T]);l.set(S,M)}let c=1/0,u=-1,d=-1;for(let S=0;S<a.length;S++)for(let M=S+1;M<a.length;M++){let T=a[S],v=a[M],L=(i-2)*r[T][v]-l.get(T)-l.get(v);L<c&&(c=L,u=T,d=v)}let m=r[u][d],f=l.get(u),g=l.get(d),p=m/2+(f-g)/(2*(i-2)),w=m-p;p=Math.max(0,p),w=Math.max(0,w);let x={left:o[u],right:o[d],leftLength:p,rightLength:w};for(let S of a)if(S!==u&&S!==d){let M=(r[u][S]+r[d][S]-m)/2;r[u][S]=Math.max(0,M),r[S][u]=Math.max(0,M)}o[d]=void 0,o[u]=x,i--}let s=[];for(let a=0;a<o.length;a++)o[a]!==void 0&&s.push(a);if(s.length===2){let a=s[0],l=s[1],c=r[a][l];return{left:o[a],right:o[l],leftLength:c/2,rightLength:c/2}}return o[s[0]]}function _l(n,e){return e===void 0?n:`${n}:${e.toFixed(6)}`}function Xd(n){let e=[],t=[n];for(;t.length>0;){let o=t.pop();e.push(o),o.left&&t.push(o.left),o.right&&t.push(o.right)}let r=new Map;for(let o=e.length-1;o>=0;o--){let i=e[o];if(i.name!==void 0&&!i.left&&!i.right)r.set(i,`'${i.name.replaceAll("'","''")}'`);else{let s=i.left?_l(r.get(i.left),i.leftLength):"",a=i.right?_l(r.get(i.right),i.rightLength):"";r.set(i,`(${s},${a})`)}}return r.get(n)}function $l(n){if(n.length<2)throw new Error("Need at least 2 sequences to build a tree");let e=n.map(o=>o[0]),t=jd(n),r=Ud(t,e);return Xd(r)+";"}var qd={$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 Jn(n,e){let t=1,r=e+1;for(;r<n.length&&t>0;)n[r]==="{"?t++:n[r]==="}"&&t--,r++;return t===0?r:-1}function Qn(n){let e=[],t=0;for(;t<n.length;){let r=n.indexOf("{",t);if(r===-1)break;let o=Jn(n,r);if(o===-1)break;e.push(n.slice(r+1,o-1).trim()),t=o}return e}function Zd(n,e){let t=n.indexOf("{",e);if(t===-1)return;let r=Jn(n,t);return r===-1?void 0:n.slice(t+1,r-1).trim()}function Yl(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=Kd(e),{fdict:r,nodes:o}=t;if(r===void 0||o===void 0)throw new Error(`invalid BioTreeContainer ASN.1: missing '${r===void 0?"fdict":"nodes"}' section`);let i=Object.fromEntries(Qn(r).flatMap(s=>{let a=Qd(s);return a?[[a.id,qd[a.name]||a.name]]:[]}));return Qn(o).flatMap(s=>{let a=Jd(s);if(!a)return[];let{features:l=[],...c}=a;return[{...c,...Object.fromEntries(l.map(u=>[i[u.featureid],u.value]))}]})}function Kd(n){let e={},t=n.trim();t.startsWith("{")&&t.endsWith("}")&&(t=t.slice(1,-1).trim());let r=0;for(;r<t.length;){for(;r<t.length&&/\s/.test(t[r]);)r++;if(r>=t.length)break;let o=r;for(;r<t.length&&/\w/.test(t[r]);)r++;if(r>=t.length||t[r]!==" "&&t[r]!=="{"){r=t.indexOf(",",r),r=r===-1?t.length:r+1;continue}let i=t.slice(o,r).trim();for(;r<t.length&&/\s/.test(t[r]);)r++;if(r>=t.length||t[r]!=="{"){r=t.indexOf(",",r),r=r===-1?t.length:r+1;continue}let s=Jn(t,r);if(s===-1)break;e[i]=t.slice(r+1,s-1).trim(),r=t.indexOf(",",s),r=r===-1?t.length:r+1}return e}function Qd(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 Jd(n){let e=/id\s+(\d+)/.exec(n);if(!e)return null;let t=/parent\s+(\d+)/.exec(n),r=n.indexOf("features"),o=r!==-1?Zd(n,r):void 0;return{id:parseInt(e[1],10),...t?{parent:parseInt(t[1],10)}:{},features:o?Qn(o).flatMap(i=>{let s=eh(i);return s?[s]:[]}):[]}}function eh(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 jl={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"},er=[...new Set(Object.values(jl))],th=Math.log2(er.length),Ul=new Int8Array(vo).fill(-1);for(let[n,e]of Object.entries(jl))Ul[bo(n)]=er.indexOf(e);function Xl(n){let e=new Float64Array(er.length);return Array.from({length:n.numColumns},(t,r)=>{let o=n.total(r),i=0;if(o){e.fill(0);let s=0;if(n.forEachResidue(r,(a,l)=>{let c=Ul[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=(o-s)/o;i=Math.max(0,1-a/th)*(1-l)}}return i})}function ql(n){let e=[],t=new Map,r=[n];for(;r.length>0;){let o=r.pop();e.push(o);for(let i of o.children??[])t.set(i,o),r.push(i)}return{order:e,parents:t}}function Zl(n){return n.some(e=>e.length!==void 0)}function nh(n,e){return n.children?.length===2?n.children.find(t=>t!==e):void 0}function Jt(n,e,t){let{order:r,parents:o}=ql(n);if(!o.has(e))return n;let i=Zl(r),s=o.get(e)===n?nh(n,e):void 0,a=(e.length??0)+(s?.length??0),l=Math.min(Math.max(t??a/2,0),a),c=m=>i?m:void 0,u=[e];for(let m=o.get(e);m;m=o.get(m))u.push(m);let d;for(let m=u.length-1;m>=1;m--){let f=u[m],g=u[m-1],p=f.children.filter(w=>w!==g);if(d&&p.push(d),p.length===0)d=void 0;else if(m===u.length-1&&p.length===1){let w=p[0];d={...w,length:c((w.length??0)+(g.length??0)-(m===1?l:0))}}else d={...f,name:m===1?void 0:g.name,children:p,length:c((g.length??0)-(m===1?l:0))}}return{children:[{...e,length:c(l)},...d?[d]:[]]}}function Kl(n){let{order:e,parents:t}=ql(n),r=e.filter(p=>!p.children?.length);if(r.length<2)return n;let o=Zl(e),i=p=>o?p.length??0:1;function s(p){let w=new Map([[p,0]]),x=new Map,S=[p];for(;S.length>0;){let M=S.pop(),T=w.get(M),v=t.get(M);v&&!w.has(v)&&(w.set(v,T+i(M)),x.set(v,M),S.push(v));for(let L of M.children??[])w.has(L)||(w.set(L,T+i(L)),x.set(L,M),S.push(L))}return{dist:w,via:x}}function a(p){return r.reduce((w,x)=>p.get(x)>p.get(w)?x:w)}let l=a(s(r[0]).dist),{dist:c,via:u}=s(l),d=a(c);if(d===l)return n;let m=c.get(d)/2,f=d,g=u.get(f);for(;c.get(g)>m;)f=g,g=u.get(f);return t.get(f)===g?Jt(n,f,c.get(f)-m):Jt(n,g,m-c.get(g))}function tr(n,e){let t=0,r=n;for(;t<r;){let o=t+r>>>1;e(o)?r=o:t=o+1}return t}function Ql(n,e){return e+tr(n.length,t=>n[t]-t>e)}function Jl(n,e){let t=ec(n,e);return n[t]===e?void 0:e-t}function ec(n,e){return tr(n.length,t=>n[t]>=e)}function $e(n,e){return e-ec(n,e)}function tc(n,e){if(!n)return;let t=tr(n.length,r=>n[r]>=e);return n[t]===e?t:void 0}function en(n,e){let t=[...new Set(e)].sort((l,c)=>l.localeCompare(c)),{map:r,palette:o}=n??{},i=r??Zt(t,Ll(o)),s=new Set(t),a=r?Object.keys(r).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 nc(n){let e=new Int32Array(n.length),t=0;for(let r=0;r<n.length;r++)n.charCodeAt(r)-45>>>0<=1||(e[t++]=r);return e.slice(0,t)}var rc=100;function oc(n){let e=[],t=0,r=[[n,0]];for(let o=r.pop();o;o=r.pop()){let[i,s]=o,{children:a}=i;if(a.length>0)for(let l of a)r.push([l,s+1]);else e.push(i.name),t=Math.max(t,s)}return{names:e,depth:t}}function ic(n,e){let t=[];for(let s of n)t[s.length]=(t[s.length]??0)+1;let r=t.length;for(let s=0;r>0&&s<rc;)r--,s+=t[r]??0;let o=0,i=0;for(let s of n)(s.length>r||s.length===r&&i++<rc)&&(o=Math.max(o,Eo(s,e)));return o}var rh=/[\s(),:;[\]']/;function oh(n){return rh.test(n)?`'${n.replaceAll("'","''")}'`:n}function ac(n){let e=new Map;for(let t of br(n).reverse()){let{id:r,name:o,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&&o===r||(s+=oh(o)),i!==void 0&&(s+=`:${i}`),e.set(t,s)}return`${e.get(n)};`}var sc={">":"<",")":"(","]":"[","}":"{"},ih=new Set(Object.values(sc));function lc(n){let e=new Map,t=[],r=(i,s)=>{let a=e.get(i);a?a.push(s):e.set(i,[s])},o=(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=sc[s];ih.has(s)?r(s,i):a?o(a,i,!1):s>="A"&&s<="Z"?r(s,i):s>="a"&&s<="z"&&o(s.toUpperCase(),i,!0)}return t.sort((i,s)=>i.start-s.start)}function ph(n){return n.startsWith("BioTreeContainer")?Il(Yl(n)):Do(n.startsWith("SEQ")?wr(n).tree:n)}var gh={bar:40,logo:80,arc:50,ruler:20},dc=new Set(["bar","logo","arc"]),wh=new Set(["sequence-logo","position-ruler"]),bh=n=>`own:${n}`,vh="#4e79a7",Sh="#e15759",Mh="#d9d9d9",xh=.1;function hc(n,e){return n.width??(n.kind==="features"?eo:e.rowHeight)}function Ch(n){if(typeof n!="object"||n===null)return;let e={};for(let[t,r]of Object.entries(n))typeof r=="string"?e[t]=r:(typeof r=="number"||typeof r=="boolean")&&(e[t]=String(r));return e}function nr(n,e,t){let r=new Map;for(let[o,i]of Object.entries(n)){let s=i?.[e],a=s===void 0?void 0:t(s);a&&r.set(o,a)}return r}function mc(n,e,t){let r=new Map,o=i=>{let s=r.get(i);if(s!==void 0)return s;let a=ro(i);return r.set(i,a),a};return new Map(n.map(i=>{let s=e?Me(i,e.field):void 0,a=i.color??(s===void 0?void 0:e.colorOf(s))??(e?Mh:t[i.accession]);return[i,{fill:a,stroke:o(a)}]}))}function fc(n,e){let t=new Map;for(let r of n){let o=Me(r,e);o!==void 0&&t.set(r,o)}return t}function yh(n){let e=n.map(([i,s])=>{let a=st(s.filter(c=>c.annotation.strand===-1)),l=st(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)),r=Math.max(0,...e.map(i=>i.reverse[0]?.laneCount??0)),o=t+r;return new Map(e.map(({name:i,forward:s,reverse:a})=>[i,[...s.map(l=>({...l,lane:t-1-l.lane,laneCount:o})),...a.map(l=>({...l,lane:t+l.lane,laneCount:o}))]]))}function pc(n,e){return n.position==="strandpile"?yh(e):new Map(e.map(([t,r])=>[t,st(r)]))}function Th({panel:n,width:e,colWidth:t,domainBands:r,annotationsByRow:o,shifts:i}){if(n.x==="column")return pc(n,[...r].map(([d,m])=>[d,m.map(f=>({...f,xStart:f.startCol*t,xEnd:f.endCol*t}))]));let s=Object.entries(o).map(([d,m])=>{let f=i?.get(d)??0;return[d,m.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:m,end:f}of d)a=Math.min(a,m),l=Math.max(l,f);let c=Math.max(1,e-1),u=l>a?c/(l-a):0;return pc(n,s.map(([d,m])=>[d,m.map(({annotation:f,start:g,end:p})=>({annotation:f,xStart:(g-a)*u,xEnd:(p-a)*u,startCol:g,endCol:p-(p-g)*xh}))]))}function gc(n,e,t,r){let o=a=>a.map(l=>Me(l,n)).filter(R.notEmpty),i=en(e,o(t)),s=new Set(o(r));return{field:n,...i,legend:i.legend.filter(a=>s.has(a.id))}}var wc=new WeakMap;function Eh(n){let e=wc.get(n);return e===void 0&&(e=JSON.stringify(n).length,wc.set(n,e)),e}function Rc(n){return(n??[]).map(Eh)}function Ah(n,e){let t=Rc(n),r=n?.filter((o,i)=>t[i]<=e);return r?.length?{columnTracks:r}:{}}var Lh=new Set(["id","type","height","drawMsaLetters","scrollZoom","scrollZoomAxis","bgColor","colorSchemeName","customColorScheme","showColumnStats","drawLabels","labelsAlignRight","treeAreaWidth","treeWidth","showBranchLen","treeOrder","drawTree","drawNodeBubbles","drawNodeLabels","showTreeOverview","overviewHeight","turnedOffTracks","trackHeights","hideGaps","allowedGappyness","subFeatureRows","showDomainLegend"]);function bc(n,e,t){return n.get(e)??(t||wh.has(e))}var kh=new Set(["collapse","focus","rotate"]),vc=[],Sc=[];function Rh(n){let e=new Map,t=0,r=(i,s)=>{for(let a=s.length-1;a>=0;a--)i.push(s[a])},o=[n];for(;o.length>0;){let i=o.pop();if(i.children?.length)r(o,i.children);else{let s=[i];for(;s.length>0;){let a=s.pop(),l=a.children??a._children;l?.length?r(s,l):e.set(a.data.name,{order:e.size,row:t})}t++}}return e}function Fh(n,e,t,r){if(n.range){let[l,c]=n.range.map(m=>t.get(m)?r.get(m):void 0);if(l===void 0||c===void 0)return;let[u,d]=l.order<=c.order?[l,c]:[c,l];return d.order-u.order+1===n.tips?{rows:[u.row,d.row]}:void 0}let o=n.mrca?vt(e,n.mrca,t):void 0;if(!o)return;let i=Ie(o);if(i.length!==n.tips)return;let s=1/0,a=-1/0;for(let l of i){let c=r.get(l.data.name)?.row;c!==void 0&&(s=Math.min(s,c),a=Math.max(a,c))}return s<=a?{rows:[s,a],nodeId:o.data.id}:void 0}function Mc(n,e,t){let r=gn(e),o=Rh(t);return n.flatMap(i=>{let s=Fh(i,e,r,o),a=kh.has(i.mark);return s&&!(a&&s.nodeId===void 0)?[{...s,mark:i.mark,color:hn(i.color??Kr,Qr),markColor:i.color,label:i.label}]:[]})}var Hh={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 rr(n,{collapsed:e,rotated:t,order:r,showOnly:o}){let i=Ae(n,a=>a.children);Sr(i,a=>a.children.length>0?0:1);let s=Hh[r];if(s&&Mr(i,s),t.length>0){let a=new Set(t);vr(i,l=>{a.has(l.data.id)&&l.children?.reverse()})}if(o){let a=De(i,l=>l.data.id===o);a&&(i=a)}for(let a of e){let l=De(i,c=>c.data.id===a);l&&(l.children?ko(l):l.parent?.children&&(l.parent.children=l.parent.children.filter(c=>c.data.id!==a)))}return i}function Fc(n,e){let t=gn(n),r=vt(n,e,t);if(r!==n)return r;let o=new Set(e),i=Ie(n).map(a=>a.data.name).filter(a=>!o.has(a)),s=vt(n,i,t);return s===n?void 0:s}function Ph(n,e){let t=new Map;for(let i of Hc(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 r=t.get(n);if(e==="midpoint")return St(Kl(r));let o=Fc(Ae(n,i=>i.children),e.outgroup);return o?St(Jt(r,t.get(o.data))):n}function xc(n){return[Math.round(n.xMin-.5),Math.round(n.xMax-.5)]}var Cc=new Set(["featureFill","featureLabel"]);function yc(n,e){if(e.has(n))return n;let t=n.replaceAll(":","_");return e.has(t)?t:n}var Tc=new WeakMap;function Ec(n){return n.rowEnd-n.rowStart===n.structEnd-n.structStart}function Ac(n,e){return n-e>.5}function Ih(n,e){return!!n?.some(([t,r])=>e>=t&&e<=r)}function Lc(n){let e=[];for(let t of n){let r=e.at(-1);r&&t<=r[1]+1?r[1]=Math.max(r[1],t):e.push([t,t])}return e}function Dh(n){let[e]=n;return e!==void 0&&n.every(t=>t===e)?e:void 0}function Hc(n){let e=[],t=[n];for(;t.length>0;){let r=t.pop();e.push(r);for(let o of r.children)t.push(o)}return e}function Oh({maxInlineSnapshotBytes:n=mt}={}){return b.types.compose(Wl(),Bl(),zl(),b.types.model("MsaView",{id:He.ElementId,showDomains:A(b.types.boolean,!0),showDomainLegend:A(b.types.boolean,!0),hideGaps:A(b.types.boolean,!0),allowedGappyness:A(b.types.number,100),subFeatureRows:A(b.types.boolean,!1),type:b.types.literal("MsaView"),drawMsaLetters:A(b.types.boolean,kr),scrollZoom:A(b.types.boolean,Rr),scrollZoomAxis:A(b.types.enumeration("ScrollZoomAxis",[...Fr]),Hr),height:A(b.types.number,550),rowHeight:A(b.types.number,16),scrollY:A(b.types.number,0),scrollX:A(b.types.number,0),colWidth:A(b.types.number,12),treeFilehandle:b.types.maybe(He.FileLocation),msaFilehandle:b.types.maybe(He.FileLocation),treeMetadataFilehandle:b.types.maybe(He.FileLocation),gffFilehandle:b.types.maybe(He.FileLocation),currentAlignment:A(b.types.number,0),collapsed:A(b.types.array(b.types.string),[]),rotated:A(b.types.array(b.types.string),[]),treeRoot:b.types.frozen(),showOnly:b.types.maybe(b.types.string),turnedOffTracks:A(b.types.map(b.types.boolean),{}),trackHeights:A(b.types.map(b.types.number),{}),columnTracks:A(b.types.array(b.types.frozen()),[]),residueMappings:A(b.types.array(b.types.frozen()),[]),data:b.types.optional(Dl(n),{}),turnedOffFeatures:A(b.types.map(b.types.boolean),{}),relativeTo:b.types.maybe(b.types.string),highlightColumns:b.types.frozen(),highlights:A(b.types.array(b.types.frozen()),[]),features:A(b.types.array(b.types.frozen()),[]),selection:b.types.frozen(),region:b.types.frozen(),clades:A(b.types.array(b.types.frozen()),[]),encodings:A(b.types.array(b.types.frozen()),[]),rowPanels:A(b.types.array(b.types.frozen()),[])})).volatile(()=>({headerHeight:0,hideHeader:!1,importForm:!0,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,r){e.mouseCol=t,e.mouseRow=r},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 r=t&&{start:Math.min(t.start,t.end),end:Math.max(t.start,t.end),...t.rows?{rows:t.rows}:{}};(0,N.compareStructural)(r,e.selection)||(e.selection=r)},clearSelection(){this.setSelection(void 0)},setClades(t){e.clades.replace(t)},applyHighlight(t,r){e.transientHighlights={...e.transientHighlights,[t]:r}},clearHighlight(t){if(t in e.transientHighlights){let{[t]:r,...o}=e.transientHighlights;e.transientHighlights=o}},setShowDomains(t){e.showDomains=t},setShowDomainLegend(t){e.showDomainLegend=t},setSubFeatureRows(t){e.subFeatureRows=t},setMouseClickPos(t,r){e.mouseClickCol=t,e.mouseClickRow=r},setRowHeight(t){e.rowHeight=t},setColWidth(t){e.colWidth=t},setCurrentAlignment(t){t!==e.currentAlignment&&(0,N.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,N.compareStructural)(e.treeRoot,t)||(0,N.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.showOnly!==void 0||e.allowedGappyness<100)},get allAnnotations(){return e.features.length>0?[...e.annotations,...Rl(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:r}=e;return t?Ai(t):Je[r]??Je[ut]},get dynamicColorSchemeName(){let{customColorScheme:t,colorSchemeName:r}=e;return!t&&r.includes("dynamic")?r:void 0},get header(){return this.MSA?.getHeader()??{}},get alignmentNames(){return this.MSA?.alignmentNames??[]},get noTree(){return!!this.tree.noTree},get noDomains(){return e.allAnnotations.length===0},get unshareableData(){if(e.hostRestoresData)return[];let{data:t}=e,r=Rc(e.columnTracks).filter(o=>o>n).reduce((o,i)=>o+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(([o,i,s])=>!s&&i&&i.length>n?[{what:o,bytes:i.length}]:[]).concat(r?[{what:"data tracks",bytes:r}]:[]).sort((o,i)=>i.bytes-o.bytes)},menuItems(){return[]},get rowData(){let t=e.data.treeMetadata;if(!t)return{};try{let r=JSON.parse(t);return typeof r=="object"&&r!==null?Object.fromEntries(Object.entries(r).map(([o,i])=>[o,Ch(i)])):{}}catch(r){return console.error("failed to parse rowData",r),{}}},rowDataOf(t){return this.rowData[t]},get rowFields(){let t=new Set;for(let r of Object.values(this.rowData))for(let o of Object.keys(r??{}))t.add(o);return[...t].sort((r,o)=>r.localeCompare(o))},get MSA(){let t=e.data.msa;return t?Oo(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?St(ph(t)):this.MSA?.getTree()??{noTree:!0,children:[],id:"empty",name:"empty"}},get tree(){let t=this.inputTree;return e.treeRoot&&!t.noTree?Ph(t,e.treeRoot):t},get rowNames(){return this.leaves.map(t=>t.data.name)},get rowNamesSet(){return new Map(this.leaves.map((t,r)=>[t.data.name,r]))},get resolvedClades(){return e.clades.length===0?Sc:Mc(e.clades,Ae(this.tree,t=>t.children),this.root)},get cladeGutterWidth(){return Ao(e.clades)},get treeDrawn(){return e.drawTree&&!this.noTree},get treeTips(){return oc(this.tree)},get maxTipLabelWidth(){return ic(this.treeTips.names.map(t=>this.rowDataOf(t)?.genome||t),Dr)},get labelColumnWidth(){return e.drawLabels?this.maxTipLabelWidth+(this.treeDrawn?10:6):0},get fittedTreeAreaWidth(){let t=e.marginLeft+this.cladeGutterWidth,r=this.treeDrawn?e.treeWidth??(0,R.clamp)(this.treeTips.depth*_r,dt,Nr):0,o=t+r+this.labelColumnWidth,i=e.viewInitialized?this.numColumns>0?e.width*Gr:e.width-this.rowPanelsWidth-e.resizeHandleWidth:1/0,s=Math.max(i,t+Math.min(r,dt));return Math.ceil(Math.min(o,s))},get effectiveTreeAreaWidth(){return e.treeAreaWidth??this.fittedTreeAreaWidth},get effectiveTreeWidth(){let t=this.showTreeText?this.labelColumnWidth:0;return e.treeWidth??Math.max(dt,Math.floor(this.effectiveTreeAreaWidth-e.marginLeft-this.cladeGutterWidth-t))},get showTreeText(){return e.drawLabels&&e.rowHeight>=dn},get mouseOverRowName(){let{mouseRow:t}=e;return t===void 0?void 0:this.leaves[t]?.data.name},get hoveredInsertion(){let{mouseCol:t,mouseRow:r}=e;if(t!==void 0&&r!==void 0){let o=this.leaves[r]?.data.name;if(o){let i=this.insertionPositions.get(o)?.find(s=>s.pos===t);if(i)return{rowName:o,col:t,letters:i.letters}}}},get root(){return rr(this.tree,{collapsed:e.collapsed,rotated:e.rotated,order:e.treeOrder,showOnly:e.showOnly})},get treeNewick(){return ac(rr(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=pn(rr(this.tree,{collapsed:e.collapsed,rotated:e.rotated,order:e.treeOrder}),{rowHeight:1,treeWidth:1});return{root:t.root,numTips:t.leaves.length,maxDepthToLeaf:t.root.depthToLeaf,showBranchLen:e.showBranchLen&&t.rootToTipLength>0}},get treeOverviewClades(){let t=this.treeOverviewLayout;return!t||e.clades.length===0?Sc:Mc(e.clades,Ae(this.tree,r=>r.children),t.root)},get treeOverviewFocusRows(){let t=this.treeOverviewLayout;if(!t||!e.showOnly)return;let r=De(t.root,o=>o.data.id===e.showOnly);return r?xc(r):void 0},treeOverviewHit(t){let r=this.treeOverviewLayout;if(!r)return;let{root:o,numTips:i}=r,s=i/e.overviewHeight,a=(0,R.clamp)(Math.floor(t*s),0,i-1),l=(0,R.clamp)(Math.ceil((t+1)*s)-1,a,i-1),c=Ro(o,a+.5,l+.5);for(;!c.children&&c.parent;)c=c.parent;return c===o?void 0:{id:c.data.id,rows:xc(c)}},get rowPanelsWidth(){return(0,R.sum)(e.rowPanels.map(t=>hc(t,e)))},get rowPanelsHeaderHeight(){return e.rowPanels.length>0?Jr:0},get msaAreaWidth(){return e.width-this.effectiveTreeAreaWidth-this.rowPanelsWidth-e.resizeHandleWidth},get treeAreaWidthMinusMargin(){return this.effectiveTreeAreaWidth-e.marginLeft-this.cladeGutterWidth},get blanks(){let{hideGapsEffective:t,allowedGappyness:r}=e;if(!t)return[];let o=this.leaves.map(u=>this.MSA?.getRow(u.data.name)).filter(R.notEmpty);if(o.length===0)return[];let i=this.MSA?.getWidth()??0,s=o.length,a=Math.ceil(r/100*s),l=new Uint32Array(i);for(let u=0;u<s;u++){let d=o[u],m=d.length;for(let f=0;f<i;f++)(f>=m||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:r}=this;if(t.length===0)return new Map;let o=new Map;for(let[i,s]of r){let a=io(t,s);a.length>0&&o.set(i,a)}return o},get rows(){let t=this.MSA;return this.leaves.map(r=>[r.data.name,t?.getRow(r.data.name)]).filter(r=>!!r[1])},get numRows(){return this.leaves.length},seqPosIndex(t){let r=this.MSA;if(!r)return;let o=Tc.get(r);o||(o=new Map,Tc.set(r,o));let i=o.get(t);if(!i){let s=r.getRow(t);if(!s)return;i=nc(s),o.set(t,i)}return i},rowSequence(t){return this.MSA?.getRow(t)||void 0},get rowMap(){let t=this.MSA;return new Map(t?.getNames().map(r=>[r,t.getRow(r)]).filter(([,r])=>!!r))},get columns(){let t=this.columns2d;return new Map(this.rows.map((r,o)=>[r[0],t[o]]))},get columns2d(){let{hideGapsEffective:t}=e;return this.rows.map(([,r])=>(t?gt(this.blanks,r):r).toUpperCase())},get fontSize(){return Ir(e.rowHeight)},get colStats(){return So(this.columns2d,this.numColumns)},get sequenceType(){let t=this.colStats.lettersPresent,r=["N","R","Y","K","M","S","W"],o=new Set(["A","C","G","T",...r]),i=new Set(["A","C","G","U",...r]),s=t.size>0&&[...t].every(l=>o.has(l)),a=t.size>0&&[...t].every(l=>i.has(l));return s?"dna":a?"rna":"amino"},get colConsensus(){let{colStats:t}=this;return Array.from({length:t.numColumns},(r,o)=>{let i=t.total(o),s=0,a="";t.forEachResidue(o,(c,u)=>{u>s&&(s=u,a=wo(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},(r,o)=>yl(t,o))},get conservation(){let{colStats:t,alphabetMaxBits:r}=this;return Array.from({length:t.numColumns},(o,i)=>{let s=t.total(i),a=t.gapCount(i);return s>a?Math.max(0,1-t.entropy(i)/r)*(1-a/s):0})},get alphabetMaxBits(){return Mo(this.sequenceType)},get propertyConservation(){return this.sequenceType==="amino"?Xl(this.colStats):[]},get treeLayout(){let t=()=>this.effectiveTreeWidth;return pn(this.root,{get rowHeight(){return e.rowHeight},get treeWidth(){return t()}})},get hierarchy(){return this.treeLayout.root},get totalHeight(){return this.leaves.length*e.rowHeight},get leaves(){return this.treeLayout.leaves},get rootToTipLength(){return this.treeLayout.rootToTipLength},get pxPerBranchLength(){let t=this.rootToTipLength;return this.showBranchLenEffective&&t?this.effectiveTreeWidth/t:0},get maxDepthToLeaf(){return this.treeLayout.root.depthToLeaf},get allBranchesLength0(){return this.rootToTipLength===0},get showBranchLenEffective(){return this.allBranchesLength0?!1:e.showBranchLen}})).views(e=>({get totalWidth(){return e.numColumns*e.colWidth}})).views(e=>({get showMsaLetters(){return e.drawMsaLetters&&e.rowHeight>=dn&&e.colWidth>=Pr&&e.colWidth>e.rowHeight/2}})).views(e=>{let t=new WeakMap;return{get columnTrackContent(){let{MSA:r,blanks:o,hideGapsEffective:i}=e,s=r?.getWidth()??0,a=(u,d,m)=>{if(!u.row)return d;let f=Array.from({length:s},()=>m),g=e.seqPosIndex(u.row);return d.forEach((p,w)=>{let x=g?.[w];x!==void 0&&(f[x]=p)}),f},l=u=>i?oo(o,u):u,c=(u,d)=>{let m=u.row?e.seqPosIndex(u.row)?.[d-1]:d-1;if(!(m===void 0||m<0||m>=s))return i?$e(o,m):m};return new Map(e.columnTracks.map(u=>{if(u.kind==="arc"){let m=(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(R.notEmpty);return[u.id,{arcs:m}]}if(u.kind==="bar"){let m=u.max??1,f=l(a(u,u.values??[],0)).map(g=>Math.min(1,Math.max(0,g/m)));return[u.id,{values:f}]}let d=l(a(u,(u.data??"").split("")," "));return[u.id,{data:d.join("")}]}))},trackHeight(r,o=r,i){return e.trackHeights.get(o)??i??gh[r]??e.rowHeight},columnTrackModel(r){let o=t.get(r);return o||(o=(0,N.computed)(()=>{let i=dc.has(r.kind)?bh(r.id):void 0,s=this.columnTrackContent.get(r.id);return{model:{id:r.id,name:r.name,kind:r.kind,heightKey:i,height:this.trackHeight(r.kind,i,r.height),barColor:r.color,arcColor:r.color,customColorScheme:r.colors,data:s?.data,arcs:s?.arcs}}}),t.set(r,o)),o.get()},get columnTrackModels(){return e.columnTracks.map(r=>this.columnTrackModel(r))}}}).views(e=>({get secondaryStructureConsensus(){return e.MSA?.secondaryStructureConsensus},get secondaryStructureArcs(){let{blanks:t,hideGapsEffective:r}=e,o=this.secondaryStructureConsensus;if(o)return lc(r?gt(t,o):o).map(({start:i,end:s,pseudoknot:a})=>({start:i,end:s,color:a?Sh:vh}))},get adapterTrackModels(){let{MSA:t,hideGapsEffective:r,blanks:o}=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:r?gt(o,a.data):a.data,height:s}}))},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}}]:[]},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:dc.has(t.kind)?t.kind:void 0,height:e.trackHeight(t.kind)}}))},get tracks(){return[...this.adapterTrackModels,...this.basePairTrackModels,...e.columnTrackModels,...e.numColumns>0?this.computedTrackModels:[]]},get turnedOnTracks(){return this.tracks.filter(t=>!bc(e.turnedOffTracks,t.model.id,t.model.defaultOff))},get showHorizontalScrollbar(){return Ac(e.totalWidth,e.msaAreaWidth)},visibleColToRowLetter(t,r){return e.rowSequence(t)?.[this.visibleColToGlobalCol(r)]},visibleColToSeqPos(t,r){return tc(e.seqPosIndex(t),this.visibleColToGlobalCol(r))},visibleColToSeqPosOneBased(t,r){let o=this.visibleColToSeqPos(t,r);return o!==void 0?o+1:void 0},globalColToVisibleCol(t){let{blanks:r,hideGapsEffective:o}=e;return o?Jl(r,t):t},visibleColToGlobalCol(t){let{blanks:r,hideGapsEffective:o}=e;return o?Ql(r,t):t},seqPosToGlobalCol(t,r){let o=e.rowSequence(t);return o===void 0?void 0:e.seqPosIndex(t)?.[r]??(r===0?0:o.length)},seqEndToGlobalCol(t,r){let o=e.seqPosIndex(t);return o&&o.length>0?o[Math.min(r,o.length-1)]:void 0},seqPosToVisibleCol(t,r){let o=this.seqPosToGlobalCol(t,r);return o===void 0?void 0:this.globalColToVisibleCol(o)},visibleSpan({row:t,start:r,end:o}){let{blanks:i}=e,s=Math.max(1,Math.floor(r)),a=Math.ceil(o),l=s-1,c=Math.min(a,e.MSA?.getWidth()??a)-1;if(t!==void 0){let m=this.seqPosToGlobalCol(t,s-1),f=this.seqEndToGlobalCol(t,a-1);if(m===void 0||f===void 0)return;l=m,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 r of e.residueMappings){let o={row:r.row,structureId:r.structure.id},i=e.seqPosIndex(r.row)?.length;if(i===void 0){t.push({...o,scope:"mapping",reason:"no such row in the alignment"});continue}if(r.rowLength!==void 0&&r.rowLength!==i){t.push({...o,scope:"mapping",reason:`computed against a ${r.rowLength}-residue row; this one has ${i}`});continue}let s=r.segments.find(a=>a.rowEnd>i||a.rowStart<1);if(s){t.push({...o,scope:"mapping",reason:`segment ${s.rowStart}-${s.rowEnd} does not fit a ${i}-residue row`});continue}for(let a of r.segments)Ec(a)||t.push({...o,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(r=>r.scope==="mapping").map(r=>`${r.row}\0${r.structureId}`));return e.residueMappings.filter(r=>!t.has(`${r.row}\0${r.structure.id}`)).map(r=>({...r,segments:r.segments.filter(Ec)}))},get mappedStructures(){return this.usableResidueMappings.map(t=>({row:t.row,structure:t.structure}))},structureResidue(t,r,o){let i=[];for(let s of this.usableResidueMappings){if(s.row!==t||o!==void 0&&s.structure.id!==o)continue;let a=s.segments.find(l=>r>=l.rowStart&&r<=l.rowEnd);if(a){let l=a.structStart+(r-a.rowStart);i.push({structure:s.structure,position:l,observed:!Ih(s.unobserved,l)})}}return i.length===1?i[0]:void 0},rowResidue(t,r,o){let i=[];for(let s of this.usableResidueMappings){if(s.structure.id!==t||o!==void 0&&s.structure.asymId!==o)continue;let a=s.segments.find(l=>r>=l.structStart&&r<=l.structEnd);a&&i.push({rowName:s.row,seqPos:a.rowStart+(r-a.structStart)})}return i.length===1?i[0]:void 0}})).views(e=>({get treeScaleBar(){return El(e.pxPerBranchLength,e.effectiveTreeAreaWidth-e.marginLeft*2)},get topBandHeight(){return Math.max(e.showHorizontalScrollbar?e.minimapHeight:0,e.rowPanelsHeaderHeight,e.treeOverviewHeight+(this.treeScaleBar?Ue:0))},get msaAreaHeight(){return e.height-this.topBandHeight-e.headerHeight-this.totalTrackAreaHeight},get totalTrackAreaHeight(){return(0,R.sum)(e.turnedOnTracks.map(t=>t.model.height))},get annotationTypes(){let t=new Map;for(let r of e.allAnnotations)t.has(r.accession)||t.set(r.accession,r);return t},get filteredAnnotations(){return e.allAnnotations.filter(t=>!e.turnedOffFeatures.get(t.accession))},get annotationsByRow(){let{rowNamesSet:t}=e;return(0,R.groupBy)(this.filteredAnnotations,r=>yc(r.id,t))}})).views(e=>({get showVerticalScrollbar(){return Ac(e.totalHeight,e.msaAreaHeight)}})).views(e=>({get dataInitialized(){return!!(e.data.msa||e.data.tree)&&!e.error},get blocksX(){return Xn({viewportSize:e.msaAreaWidth,viewportPos:-e.scrollX,blockSize:e.blockSize,mapSize:e.totalWidth})},get blocksY(){return Xn({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(r=>[r,t]))},get isLoading(){return e.loadingMSA||e.loadingTree},get dataWarnings(){let{annotations:t,rowNamesSet:r}=e;return e.dataInitialized&&t.length>0&&!t.some(o=>r.has(yc(o.id,r)))?[`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 r=De(e.hierarchy,o=>o.data.id===t);e.hoveredTreeNode=r?{nodeId:t,descendantNames:Ie(r).map(o=>o.data.name)}:void 0},calculateNeighborJoiningTreeFromMSA(){let t=[...e.rowMap];if(t.length<2)throw new Error("Need at least 2 sequences to build a tree");if(t.length>Ee)throw new Error(`Neighbor joining here is capped at ${Ee} sequences and this alignment has ${t.length}. Build the tree with FastTree or IQ-TREE and open it alongside the alignment: https://gmod.org/JBrowseMSA/tutorials/protein_family`);this.replaceTree($l(t))},rerootAt(t){let r=De(Ae(e.tree,i=>i.children),i=>i.data.id===t);if(!r?.parent)return;let o=Fc(Ae(e.inputTree,i=>i.children),Ie(r).map(i=>i.data.name));if(o){let i=Ie(o);e.setTreeRoot({outgroup:[...new Set([i[0].data.name,i.at(-1).data.name])]})}},replaceTree(t){(0,N.transaction)(()=>{e.setTreeFilehandle(void 0),e.collapsed.clear(),e.rotated.clear(),e.setShowOnly(void 0),e.setTree(t)})},resetZoom(){e.setColWidth(12),e.setRowHeight(16)},zoomAtCenter(t,r="both"){this.zoomToPos(t,e.msaCanvasWidth/2,e.msaAreaHeight/2,r)},zoomIn(){this.zoomAtCenter(1.5)},zoomOut(){this.zoomAtCenter(.75)},zoomToPos(t,r,o,i="both"){(0,N.transaction)(()=>{let s=(-e.scrollX+r)/e.colWidth,a=(-e.scrollY+o)/e.rowHeight;i!=="vertical"&&(e.colWidth=(0,R.clamp)(e.colWidth*t,lt,Te)),i!=="horizontal"&&(e.rowHeight=(0,R.clamp)(e.rowHeight*t,ct,Te)),e.scrollX=(0,R.clamp)(r-s*e.colWidth,e.maxScrollX,0);let l=o-a*e.rowHeight,c=Math.max(0,-e.maxScrollY),u=e.totalHeight-c,d=u>0?(0,R.clamp)(1-c/u,0,1):1;e.scrollY=(0,R.clamp)(l*(1-d),e.maxScrollY,0)})},doScrollY(t){this.setScrollY(e.scrollY+t)},setScrollY(t){e.scrollY=(0,R.clamp)(t,e.maxScrollY,0)},setAnnotations(t){e.annotations=t},applyGFFText(t){this.setAnnotations(zo(Wo(t)))},doScrollX(t){this.setScrollX(e.scrollX+t)},setScrollX(t){e.scrollX=(0,R.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 r=e.MSA?.tracks.find(o=>o.id===t)?.defaultOff;e.turnedOffTracks.set(t,!bc(e.turnedOffTracks,t,r))},setStatus(t){e.status=t}})).views(e=>({cellAt(t,r){let o=e.visibleColToGlobalCol(t),i=r===void 0?void 0:e.leaves[r]?.data.name;return i===void 0?{column:o+1}:{column:o+1,row:i,residue:e.visibleColToSeqPosOneBased(i,t),letter:e.rowSequence(i)?.[o]}},get hoveredCell(){let{mouseCol:t,mouseRow:r}=e;return t===void 0?void 0:this.cellAt(t,r)},get clickedCell(){let{mouseClickCol:t,mouseClickRow:r}=e;return t===void 0?void 0:this.cellAt(t,r)},get viewport(){let{scrollX:t,colWidth:r,numColumns:o,viewInitialized:i}=e;if(o===0||!i)return;let{xStart:s,xEnd:a}=mo({offsetX:-t,blockWidth:e.msaCanvasWidth,colWidth:r}),l=Math.max(0,Math.min(a,o)-1);return{startColumn:e.visibleColToGlobalCol(Math.min(s,l))+1,endColumn:e.visibleColToGlobalCol(l)+1}},get segmentDomainTypes(){return[...e.annotationTypes.values()].filter(t=>cn.has(t.featureType??"")).toSorted((t,r)=>t.start-r.start)},get categoricalDomainTypes(){return[...e.annotationTypes.values()].filter(t=>!cn.has(t.featureType??""))},get fillPalette(){let t=Object.fromEntries(this.segmentDomainTypes.map((o,i)=>[o.accession,un[i%un.length]])),r=Zt(this.categoricalDomainTypes.map(o=>o.accession));return{...t,...r}},get featureFillEncoding(){return this.resolvedEncodings.find(t=>t.channel==="featureFill")},get featureColors(){return mc(e.filteredAnnotations,this.featureFillEncoding,this.fillPalette)},get featureLabels(){let t=this.resolvedEncodings.find(r=>r.channel==="featureLabel");return t?fc(e.filteredAnnotations,t.field):void 0},get segmentLabels(){return new Map(this.segmentDomainTypes.map((t,r)=>{let o=/(\d+)\s*$/.exec(t.name);return[t.accession,o?o[1]:`${r+1}`]}))},get visibleDomainTypes(){return this.categoricalDomainTypes.filter(t=>!e.turnedOffFeatures.get(t.accession)).toSorted((t,r)=>t.start-r.start)},get legends(){let{featureFillEncoding:t,fillPalette:r,visibleDomainTypes:o}=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 m=new Set(d.entries.map(f=>f.id));d.entries.push(...l.filter(f=>!m.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:o.map(a=>({id:a.accession,label:a.name,color:a.color??r[a.accession]})),"domains");for(let{channel:a,field:l,legend:c}of this.resolvedEncodings)Cc.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,r=new Map;for(let[o,i]of Object.entries(e.annotationsByRow)){let s=i.toSorted((a,l)=>mn(l)-mn(a)).map(a=>{let l=e.seqPosToGlobalCol(o,a.start-1),c=e.seqEndToGlobalCol(o,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(R.notEmpty).map((a,l)=>({...a,stackIndex:l}));s.length>0&&r.set(o,st(s))}return r},get domainBandsByStart(){return new Map([...this.domainBands].map(([t,r])=>[t,r.toSorted((o,i)=>o.startCol-i.startCol)]))},get mouseOverDomains(){let{mouseCol:t}=e,r=e.mouseOverRowName;if(r===void 0||t===void 0)return vc;let o=(this.domainBands.get(r)??[]).filter(i=>t>=i.startCol&&t<i.endCol).map(i=>i.annotation);return o.length>0?o:vc},get referenceRowIndex(){let{relativeTo:t}=e;return t===void 0?void 0:e.rowNamesSet.get(t)},get hoveredRowIndices(){let{hoveredTreeNode:t,rowNamesSet:r}=e;return t?t.descendantNames.map(o=>r.get(o)).filter(R.notEmpty):[]},get highlightedColumnRuns(){return Lc([...e.highlightedColumns??[]].sort((t,r)=>t-r)).map(([t,r])=>({start:t,end:r}))},fillHighlightLabel(t,r,o){if(!t.includes("{"))return t;let i=r&&o!==void 0?e.seqPosIndex(r)?.[o-1]:void 0,s=r&&i!==void 0?e.MSA?.getRow(r)[i]??"":"";return t.replaceAll("{residue}",s).replaceAll("{position}",o===void 0?"":String(o))},get resolvedHighlights(){let{rowNamesSet:t,transientHighlights:r}=e;return[...e.highlights,...Object.values(r).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(R.notEmpty);return f.length?[{...d,rowIndices:f}]:[]}if(a===void 0||l===void 0)return[];let m=e.visibleSpan({row:i,start:a,end:l});return m?[{...d,...m,rowIndices:[]}]:[]})},get resolvedSelection(){let{selection:t,rowNamesSet:r,numRows:o}=e,i=t&&e.visibleSpan({start:t.start,end:t.end});if(!t||!i)return;let s=t.rows?Lc(t.rows.map(a=>r.get(a)).filter(R.notEmpty).sort((a,l)=>a-l)):o>0?[[0,o-1]]:[];return s.length>0?{...i,rowRuns:s}:void 0},get selectionSize(){let t=this.resolvedSelection,r=this.selectionFileSpan;return t&&r?{columns:r.end-r.start+1,rows:(0,R.sum)(t.rowRuns.map(([o,i])=>i-o+1))}:void 0},get selectionFileSpan(){let{selection:t}=e,r=e.MSA?.getWidth()??0,o=Math.max(1,Math.floor(t?.start??0)),i=Math.min(r,Math.ceil(t?.end??0));return t&&o<=i?{start:o,end:i}:void 0},get selectionFasta(){let{rowNames:t}=e,r=this.resolvedSelection,o=this.selectionFileSpan;if(!r||!o)return"";let i=r.rowRuns.flatMap(([s,a])=>t.slice(s,a+1)).flatMap(s=>{let a=e.rowSequence(s);return a===void 0?[]:[[s,a]]});return vl(i,o.start,o.end)},columnStatsAt(t){let{colStats:r,conservation:o,propertyConservation:i}=e;return Tl({col:t,colStats:r,conservation:o,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(r=>({...r,...Cc.has(r.channel)?gc(r.field,r.scale,e.allAnnotations,e.filteredAnnotations):en(r.scale,t.map(o=>o?.[r.field]).filter(R.notEmpty))}))},get rowPanelScales(){let{rowData:t}=e,{fillPalette:r,featureFillEncoding:o,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):o,m=a.encoding?.label;return{kind:a.kind,x:a.x,header:a.header??"",field:d?.field,legendTitle:d?.field,colors:u?mc(s,d,r):this.featureColors,labels:m?fc(s,m):i,legend:d?.legend??this.visibleDomainTypes.map(f=>({id:f.accession,label:f.name,color:f.color??r[f.accession]}))}}let{colorOf:l,legend:c}=en(a.scale,Object.values(t).map(u=>u?.[a.field]).filter(R.notEmpty));return{kind:a.kind,field:a.field,header:a.header??a.field,legendTitle:a.legend??a.field,colors:nr(t,a.field,l),legend:c}})},get resolvedRowPanels(){let t=this.rowPanelScales,r=0;return e.rowPanels.map((o,i)=>{let s=hc(o,e),a={id:`rowpanel-${i}`,width:s,offsetX:r};if(r+=s,o.kind==="features"){let l=o.transform?.find(c=>c.type==="align");return{...a,...t[i],spans:Th({panel:o,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(r=>r.kind==="features"&&r.x==="position"?(r.transform??[]).filter(o=>o.type==="align").map(o=>o.on):[]));return new Map([...t].map(r=>[r,new Map(Object.entries(e.annotationsByRow).map(([o,i])=>{let s=i.find(a=>Vt(a)===r);return s?[o,1-s.start]:void 0}).filter(R.notEmpty))]))},get tipLabelColors(){let t=this.resolvedEncodings.find(r=>r.channel==="tipLabel");return t?nr(e.rowData,t.field,t.colorOf):void 0},get rowTints(){let t=this.resolvedEncodings.find(o=>o.channel==="rowTint");if(!t)return;let r=nr(e.rowData,t.field,t.colorOf);return e.rowNames.map(o=>{let i=r.get(o);return i&&hn(i,Zr)})},get branchColors(){let t=this.resolvedEncodings.find(s=>s.channel==="branch");if(!t)return;let r=Hc(e.tree),o=new Map,i=new Map;for(let s=r.length-1;s>=0;s--){let a=r[s],l=a.children.length>0?Dh(a.children.map(u=>o.get(u))):e.rowDataOf(a.name)?.[t.field];o.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},setImportForm(t){e.importForm=t},treeOverviewClick(t){let r=e.treeOverviewHit(t),o=e.treeOverviewFocusRows,i=!!o&&!!r&&r.rows[0]>=o[0]&&r.rows[1]<=o[1];e.setShowOnly(i||!r?void 0:r.id)},setTrackHeight(t,r){e.trackHeights.set(t,r)},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])=>Lh.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:r}=await import("./renderToSvg-53FEV6IJ.js"),o=await r(e,t),i=new Blob([o],{type:"image/svg+xml"});vn(i,qn(e.msaFilehandle,"svg"))},exportNewick(){let t=new Blob([e.treeNewick],{type:"text/plain"});vn(t,qn(e.treeFilehandle??e.msaFilehandle,"nwk","tree"))},setFilter(t,r){r?e.turnedOffFeatures.delete(t):e.turnedOffFeatures.set(t,!0)},fit(){(0,N.transaction)(()=>{for(let t=0;t<2;t++)this.fitHorizontally(),this.fitVertically()})},fitVertically(){e.numRows>0&&(e.rowHeight=(0,R.clamp)(e.msaAreaHeight/e.numRows,ct,Te)),e.scrollY=0},zoomToRegion(t){let r=e.visibleSpan(t);!r||!e.viewInitialized||(0,N.transaction)(()=>{e.colWidth=(0,R.clamp)(e.msaCanvasWidth/(r.endCol-r.startCol+1),lt,Te),e.scrollX=(0,R.clamp)(-r.startCol*e.colWidth,e.maxScrollX,0)})},revealRegion(t){(0,N.transaction)(()=>{this.zoomToRegion(t);let r=t.row===void 0?void 0:e.rowNamesSet.get(t.row);r!==void 0&&e.viewInitialized&&e.setScrollY(-(r+.5)*e.rowHeight+e.msaAreaHeight/2)})},zoomToSelection(){let{selection:t,resolvedSelection:r}=e;!t||!r||(0,N.transaction)(()=>{if(this.zoomToRegion({start:t.start,end:t.end}),t.rows&&e.viewInitialized){let{rowRuns:o}=r,i=o[0][0],s=o.at(-1)[1];e.rowHeight=(0,R.clamp)(e.msaAreaHeight/(s-i+1),ct,Te),e.scrollY=(0,R.clamp)(-i*e.rowHeight,e.maxScrollY,0)}})},selectBlock(t,r){let{numColumns:o,numRows:i,rowNames:s}=e;if(o===0||i===0)return;let a=(f,g,p)=>[(0,R.clamp)(f,0,p),(0,R.clamp)(g,0,p)].sort((w,x)=>w-x),[l,c]=a(t.col,r.col,o-1),[u,d]=t.row===void 0||r.row===void 0?[0,i-1]:a(t.row,r.row,i-1),m=u===0&&d===i-1;e.setSelection({start:e.visibleColToGlobalCol(l)+1,end:e.visibleColToGlobalCol(c)+1,...m?{}:{rows:s.slice(u,d+1)}})},fitHorizontally(){e.numColumns>0&&(e.colWidth=(0,R.clamp)(e.msaCanvasWidth/e.numColumns,lt,Te)),e.scrollX=0},afterCreate(){if(e.highlightColumns?.length&&e.setHighlightedColumns(e.highlightColumns),(0,b.addDisposer)(e,(0,N.reaction)(()=>e.dataInitialized&&!(e.treeFilehandle&&!e.data.tree)?{clades:(0,b.getSnapshot)(e.clades),treeRoot:e.treeRoot}:void 0,o=>{if(o?.clades.length)for(let{mark:i,nodeId:s}of e.resolvedClades)s!==void 0&&(i==="collapse"&&!e.collapsed.includes(s)?e.toggleCollapsed(s):i==="focus"?e.setShowOnly(s):i==="rotate"&&!e.rotated.includes(s)&&e.toggleRotated(s))},{fireImmediately:!0,equals:N.compareStructural})),(0,b.addDisposer)(e,(0,N.autorun)(()=>{let{region:o}=e;o&&e.viewInitialized&&e.numColumns>0&&!(e.treeFilehandle&&!e.data.tree)&&(this.revealRegion(o),e.setRegion(void 0))})),typeof window<"u"&&typeof window.matchMedia=="function"){let o=()=>window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),i=o(),s=()=>{e.setHighResScaleFactor(window.devicePixelRatio),i.removeEventListener("change",s),i=o(),i.addEventListener("change",s)};i.addEventListener("change",s),(0,b.addDisposer)(e,()=>{i.removeEventListener("change",s)})}let t=({what:o,getFilehandle:i,onLoad:s,setLoading:a,clearFilehandle:l,optional:c=!1})=>{let u=0,d;(0,b.addDisposer)(e,()=>{d?.()}),(0,b.addDisposer)(e,(0,N.autorun)(async()=>{let m=i(),f=++u;if(d?.(),d=void 0,!m){a?.(!1);return}let g=()=>f===u&&(0,b.isAlive)(e),p=new AbortController;d=()=>{p.abort(),(0,b.isAlive)(e)&&e.setStatus(void 0)};try{a?.(!0),c||e.setError(void 0);let w=await Hl((0,kc.openLocation)(m),x=>{g()&&e.setStatus(x)},{controller:p});g()&&(0,N.transaction)(()=>{s(w),m.locationType==="BlobLocation"&&l?.()})}catch(w){g()&&(Pl(w)?l?.():(console.error(w),c?e.addWarning(`The ${o} did not load: ${w}`):e.setError(w)))}finally{g()&&(d=void 0,a?.(!1))}}))};t({what:"tree",getFilehandle:()=>e.treeFilehandle,onLoad:o=>{e.setTree(o)},setLoading:o=>{e.setLoadingTree(o)},clearFilehandle:()=>{e.setTreeFilehandle(void 0)}}),t({what:"row metadata",optional:!0,getFilehandle:()=>e.treeMetadataFilehandle,onLoad:o=>{e.setTreeMetadata(o)}});let r=!1;(0,b.addDisposer)(e,(0,N.autorun)(()=>{let o=e.data.gff;if(o)try{e.applyGFFText(o),r=!0}catch(i){console.error(i),e.addWarning(`The annotations did not parse: ${i}`)}else r&&(r=!1,e.setAnnotations([]))})),t({what:"annotations",optional:!0,getFilehandle:()=>e.gffFilehandle,onLoad:o=>{e.setGFF(o)},clearFilehandle:()=>{e.setGFFFilehandle(void 0)}}),t({what:"alignment",getFilehandle:()=>e.msaFilehandle,onLoad:o=>{e.setMSA(o)},setLoading:o=>{e.setLoadingMSA(o)},clearFilehandle:()=>{e.setMSAFilehandle(void 0)}}),(0,b.addDisposer)(e,(0,N.autorun)(()=>{e.dynamicColorSchemeName&&e.colStats,e.showColumnStats&&(e.colStats,e.conservation,e.propertyConservation),e.columns}))}})).postProcessSnapshot(({data:e,columnTracks:t,...r})=>({...r,...Ah(t,n),data:{...r.treeFilehandle?{}:{tree:e.tree},...r.msaFilehandle?{}:{msa:e.msa},...r.treeMetadataFilehandle?{}:{treeMetadata:e.treeMetadata},...r.gffFilehandle?{}:{gff:e.gff}}}))}var or=Oh;var Ic=h(ir(),1);function Wh(n){return typeof n=="string"?{colorSchemeName:n}:n?{customColorScheme:n.map}:{}}function zh(n=[]){let e=[...new Set(n)].sort((r,o)=>r-o),t=[];for(let r of e){let o=t.at(-1);o?.end===r-1?o.end=r:t.push({start:r,end:r})}return t}function sr({highlights:n=[],highlightColumns:e}){return[...n,...zh(e)]}function ar(n){return n?{uri:n,locationType:"UriLocation"}:void 0}function lr({msaFilehandle:n,treeFilehandle:e,gffFilehandle:t,msaUrl:r,treeUrl:o,gffUrl:i}){return{msaFilehandle:n??ar(r),treeFilehandle:e??ar(o),gffFilehandle:t??ar(i)}}function cr(n){return(0,Ic.createJBrowseTheme)(n==="dark"?{palette:{mode:"dark"}}:typeof n=="object"?n:void 0)}function ur(n){let{msa:e,tree:t,gff:r,rowData:o,colorScheme:i,height:s,colWidth:a,rowHeight:l,allowedGappyness:c,highlightColumns:u,highlights:d,features:m,selection:f,clades:g,relativeTo:p,columnTracks:w,residueMappings:x,encodings:S,rowPanels:M,drawTree:T,treeAreaWidth:v,showBranchLen:L,treeOrder:_,treeRoot:Z,region:te,residueEncoding:ne}=n,{msaFilehandle:se,treeFilehandle:K,gffFilehandle:C}=lr(n);return{type:"MsaView",...e||t||r||o?{data:{msa:e??"",tree:t??"",gff:r,...o?{treeMetadata:JSON.stringify(o)}:{}}}:{},...se?{msaFilehandle:se}:{},...K?{treeFilehandle:K}:{},...C?{gffFilehandle:C}:{},...Wh(i),...s?{height:s}:{},...a?{colWidth:a}:{},...l?{rowHeight:l}:{},...c!==void 0?{allowedGappyness:c}:{},...d||u?{highlights:sr({highlights:d,highlightColumns:u})}:{},...m?{features:m}:{},...f?{selection:f}:{},...g?{clades:g}:{},...p?{relativeTo:p}:{},...w?{columnTracks:w}:{},...x?{residueMappings:x}:{},...S?{encodings:S}:{},...M?{rowPanels:M}:{},...T!==void 0?{drawTree:T}:{},...v?{treeAreaWidth:v}:{},...L!==void 0?{showBranchLen:L}:{},..._?{treeOrder:_}:{},...Z?{treeRoot:Z}:{},...te?{region:te}:{},...ne!==void 0?{bgColor:ne==="fill"}:{}}}function Bh(n,e){return n.msa===e.msa&&n.tree===e.tree&&JSON.stringify([n.msaFilehandle,n.treeFilehandle])===JSON.stringify([e.msaFilehandle,e.treeFilehandle])}var Nh=(0,I.forwardRef)(function(e,t){let r={...e,...lr(e)},{msa:o,tree:i,msaFilehandle:s,treeFilehandle:a}=r,l={msa:o,tree:i,msaFilehandle:s,treeFilehandle:a},[c,u]=(0,I.useState)({source:l,generation:0});return Bh(c.source,l)||u({source:l,generation:c.generation+1}),I.default.createElement(Gh,{key:c.generation,modelRef:t,...r})}),rn=Nh;function tn(n,e,t){let r=(0,I.useRef)(t);(0,I.useEffect)(()=>{r.current=t});let o=!!t;(0,I.useEffect)(()=>o?(0,Ye.reaction)(()=>n[e],i=>{r.current?.(i)},{equals:Ye.compareStructural}):void 0,[n,e,o])}function z(n,e,{inSnapshot:t=!1}={}){return{read:n,apply:e,inSnapshot:t}}function me(n){return(e,t)=>{t!==void 0&&n(e,t)}}var dr=[z(n=>n.height,me((n,e)=>{n.setHeight(e)})),z(n=>n.colWidth,me((n,e)=>{n.setColWidth(e)})),z(n=>n.rowHeight,me((n,e)=>{n.setRowHeight(e)})),z(n=>n.allowedGappyness,me((n,e)=>{n.setAllowedGappyness(e)})),z(n=>n.drawTree,me((n,e)=>{n.setDrawTree(e)})),z(n=>n.treeAreaWidth,me((n,e)=>{n.setTreeAreaWidth(e)})),z(n=>n.showBranchLen,me((n,e)=>{n.setShowBranchLen(e)})),z(n=>n.treeOrder,me((n,e)=>{n.setTreeOrder(e)})),z(n=>n.residueEncoding,me((n,e)=>{n.setBgColor(e==="fill")})),z(n=>!!n.hideHeader,(n,e)=>{n.setHideHeader(e)}),z(n=>n.relativeTo,(n,e)=>{n.drawRelativeTo(e)}),z(n=>n.gffFilehandle,(n,e,{gff:t})=>{e?n.setGFFFilehandle(e):n.setGFF(t)},{inSnapshot:!0}),z(n=>n.gff,(n,e)=>{n.setGFF(e)},{inSnapshot:!0}),z(n=>n.colorScheme,(n,e)=>{typeof e=="string"?n.setColorSchemeName(e):e&&n.setCustomColorScheme(e.map)}),z(sr,(n,e)=>{n.setHighlights(e)}),z(n=>n.features??[],(n,e)=>{n.setFeatures(e)}),z(n=>n.selection,(n,e)=>{n.setSelection(e)}),z(n=>n.treeRoot,(n,e)=>{n.setTreeRoot(e)}),z(n=>n.clades??[],(n,e)=>{n.setClades(e)}),z(n=>n.columnTracks??[],(n,e)=>{n.setColumnTracks(e)}),z(n=>n.residueMappings??[],(n,e)=>{n.setResidueMappings(e)}),z(n=>n.rowData,(n,e)=>{e&&Object.keys(e).length&&n.setRowData(e)}),z(n=>n.encodings??[],(n,e)=>{n.setEncodings(e)}),z(n=>n.rowPanels??[],(n,e)=>{n.setRowPanels(e)})];function _h(n,e){let t=(0,I.useRef)(void 0);(0,I.useEffect)(()=>{let r=dr.map(({read:i})=>JSON.stringify(i(e)??null));t.current??=dr.map(({inSnapshot:i},s)=>i?r[s]:"");let o=t.current;dr.forEach(({apply:i},s)=>{let a=r[s];o[s]!==a&&(o[s]=a,i(n,JSON.parse(a)??void 0,e))})})}function Gh({modelRef:n,...e}){let{region:t,theme:r,onCellHover:o,onCellClick:i,onViewportChange:s,onSelectionChange:a,onModel:l}=e,[c]=(0,I.useState)(()=>{let p=or().create(ur(e));return p.setImportForm(!1),p}),u=(0,I.useRef)(void 0),[d,{width:m}]=(0,Dc.default)();(0,I.useEffect)(()=>{m&&c.setWidth(m)},[c,m]),_h(c,e);let f=JSON.stringify(t??null);(0,I.useEffect)(()=>{let p=JSON.parse(f);return p?(0,Ye.when)(()=>c.viewInitialized&&c.numColumns>0,()=>{c.revealRegion(p)}):void 0},[c,f]),tn(c,"hoveredCell",o),tn(c,"clickedCell",i),tn(c,"viewport",s),tn(c,"selection",a),(0,I.useImperativeHandle)(n,()=>c,[c]);let g=(0,I.useRef)(l);return(0,I.useEffect)(()=>{g.current=l}),(0,I.useEffect)(()=>{g.current?.(c)},[c]),(0,I.useEffect)(()=>(u.current!==void 0&&(clearTimeout(u.current),u.current=void 0),()=>{u.current=setTimeout(()=>{u.current=void 0,(0,nn.isAlive)(c)&&(0,nn.destroy)(c)})}),[c]),I.default.createElement(Oc.ThemeProvider,{theme:cr(r)},I.default.createElement("div",{ref:d},I.default.createElement(Un,{model:c})))}var hr=h(y(),1),Wc=h(Vc(),1);function mr(n,e){let t=(0,Wc.createRoot)(n),r=e;return t.render(hr.default.createElement(rn,{...r})),{update(o){r={...r,...o},t.render(hr.default.createElement(rn,{...r}))},destroy(){t.unmount()}}}var zc=h(je(),1);var Vh=["msa-url","tree-url","gff-url","color-scheme","height","hide-header","theme","reference-row","tree-area-width"],$h=["display-start","display-end","highlight"];function Pe(n){let e=n?Number(n):Number.NaN;return Number.isFinite(e)?e:void 0}function Yh(n,e){return(n??"").split(",").flatMap(t=>{let[r,o]=t.split(":").map(Pe);return r===void 0?[]:[{row:e,start:r,end:o??r}]})}function fr(n,e,t){let r=n.globalColToVisibleCol(t-1);return r===void 0?void 0:n.visibleColToSeqPosOneBased(e,r)}function jh(n,e,t){let r,o;for(let i=t.startColumn;i<=t.endColumn&&!r;i++)r=fr(n,e,i);for(let i=t.endColumn;i>=t.startColumn&&!o;i--)o=fr(n,e,i);return r&&o?{start:r,end:o}:void 0}function Uh(n="jbrowse-msa"){let e=customElements.get(n);if(e)return e;class t extends HTMLElement{static observedAttributes=[...Vh,...$h];#r;#t;#o;#s;#l=!1;#u;#e={};get msa(){return this.#e.msa}set msa(o){this.#n({msa:o})}get tree(){return this.#e.tree}set tree(o){this.#n({tree:o})}get gff(){return this.#e.gff}set gff(o){this.#n({gff:o})}get features(){return this.#e.features}set features(o){this.#n({features:o})}get colorScheme(){return this.#e.colorScheme}set colorScheme(o){this.#n({colorScheme:o})}get highlights(){return this.#e.highlights}set highlights(o){this.#n({highlights:o})}get columnTracks(){return this.#e.columnTracks}set columnTracks(o){this.#n({columnTracks:o})}get residueMappings(){return this.#e.residueMappings}set residueMappings(o){this.#n({residueMappings:o})}get selection(){return this.#t?this.#t.selection:this.#e.selection}set selection(o){this.#n({selection:o})}get#i(){return this.getAttribute("reference-row")??void 0}#n(o){this.#e={...this.#e,...o},this.#r?.update(this.#c())}#c(){let o=this.getAttribute("theme");return{...this.#e,msaUrl:this.getAttribute("msa-url")??void 0,treeUrl:this.getAttribute("tree-url")??void 0,gffUrl:this.getAttribute("gff-url")??void 0,colorScheme:this.#e.colorScheme??this.getAttribute("color-scheme")??void 0,height:Pe(this.getAttribute("height")),treeAreaWidth:Pe(this.getAttribute("tree-area-width")),hideHeader:this.hasAttribute("hide-header"),theme:o==="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.#h(),this.#m()}}}#a(o,i){this.dispatchEvent(new CustomEvent(o,{detail:i}))}#d(o){this.#o&&this.dispatchEvent(new CustomEvent("change",{detail:o,bubbles:!0,cancelable:!0}))}#f(o){let i=this.#t,s=this.#i,a=o&&i&&s?fr(i,s,o.column):o?.column;this.#d({type:"highlight",value:a===void 0?null:`${a}:${a}`})}#p(o){let i=this.#t,s=this.#i;if(!o||!i)return;let a=s?jh(i,s,o):{start:o.startColumn,end:o.endColumn},l=Pe(this.getAttribute("display-start")),c=Pe(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}))}#h(){let o=this.#t,i=Pe(this.getAttribute("display-start")),s=Pe(this.getAttribute("display-end")),a=this.#u;if(!(a&&a.start===i&&a.end===s)&&(this.#s?.(),o&&i!==void 0&&s!==void 0)){let l=this.#i;this.#s=(0,zc.when)(()=>o.viewInitialized&&o.numColumns>0,()=>{o.zoomToRegion({row:l,start:i,end:s})})}}#m(){let o=Yh(this.getAttribute("highlight"),this.#i);o.length?this.#t?.applyHighlight("nightingale",o):this.#t?.clearHighlight("nightingale")}connectedCallback(){this.style.display||(this.style.display="block"),this.#r=mr(this,this.#c());let o=this.closest("nightingale-manager");o&&customElements.whenDefined("nightingale-manager").then(()=>{this.isConnected&&(this.#o=o,o.register(this))})}disconnectedCallback(){this.#o?.unregister(this),this.#o=void 0,this.#s?.(),this.#r?.destroy(),this.#r=void 0,this.#t=void 0}attributeChangedCallback(o){o==="display-start"||o==="display-end"?this.#l||(this.#l=!0,queueMicrotask(()=>{this.#l=!1,this.#h()})):o==="highlight"?this.#m():this.#r?.update(this.#c())}}return customElements.define(n,t),t}var on=h(y(),1),Bc=h(ir(),1),Nc=h(re(),1),an=h(je(),1);function Xh(n,{theme:e,includeTracks:t=!1,delay:r=300}={}){let[o,i]=(0,on.useState)({});return(0,on.useEffect)(()=>{let s=0,a=(0,an.reaction)(()=>n.viewInitialized&&n.dataInitialized?[(0,Nc.getSnapshot)(n),n.width,n.height,n.resolvedHighlights,n.highlightedColumnRuns]:void 0,l=>{if(!l)return;let c=++s;bn(n,{theme:e??(0,Bc.createJBrowseTheme)(),exportType:"viewport",includeTracks:t}).then(u=>{c===s&&i({svg:u})},u=>{c===s&&i({error:u})})},{delay:r,fireImmediately:!0,equals:an.compareShallow});return()=>{s=-1,a()}},[n,e,t,r]),o}export{$c as a,$o as b,Zc as c,Un as d,or as e,cr as f,ur as g,rn as h,mr as i,Uh as j,Xh as k};
18
+ //# sourceMappingURL=chunk-CSCUNTGJ.js.map