jbrowse-plugin-protein3d 0.4.12 → 0.4.13

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.
@@ -1,30 +1,30 @@
1
- "use strict";var JBrowsePluginProtein3d=(()=>{var Vm=Object.create;var Ro=Object.defineProperty;var Bm=Object.getOwnPropertyDescriptor;var Hm=Object.getOwnPropertyNames;var Um=Object.getPrototypeOf,Gm=Object.prototype.hasOwnProperty;var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var V=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),wt=(e,t)=>{for(var o in t)Ro(e,o,{get:t[o],enumerable:!0})},$i=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Hm(t))!Gm.call(e,r)&&r!==o&&Ro(e,r,{get:()=>t[r],enumerable:!(n=Bm(t,r))||n.enumerable});return e};var p=(e,t,o)=>(o=e!=null?Vm(Um(e)):{},$i(t||!e||!e.__esModule?Ro(o,"default",{value:e,enumerable:!0}):o,e)),Om=e=>$i(Ro({},"__esModule",{value:!0}),e);var Zi=V((xg,Yi)=>{Yi.exports=JBrowseExports["@jbrowse/core/Plugin"]});var x=V((Sg,Xi)=>{Xi.exports=JBrowseExports.react});var _=V((vg,Qi)=>{Qi.exports=JBrowseExports["mobx-react"]});var ee=V((Tg,es)=>{es.exports=JBrowseExports["@jbrowse/core/util"]});var Xe=V((Pg,ts)=>{ts.exports=JBrowseExports["tss-react/mui"]});function ce(){return Ko||(Ko=import(jm+"molstar-chunk.js").catch(function(e){throw Ko=void 0,e})),Ko}var as,jm,Ko,Vt=S(()=>{"use strict";as=typeof document<"u"?document.currentScript?.src:void 0,jm=as?as.replace(/\/[^/]*$/,"/"):""});function St(e){return!!e&&typeof e=="object"&&"hoverPosition"in e&&!!e.hoverPosition&&typeof e.hoverPosition=="object"&&"coord"in e.hoverPosition&&"refName"in e.hoverPosition}async function ls({structure:e,selectedResidue:t}){let{Script:o}=await ce();return o.getStructureSelection(n=>n.struct.generator.atomGroups({"residue-test":n.core.rel.eq([n.struct.atomProperty.macromolecular.label_seq_id(),t]),"group-by":n.struct.atomProperty.macromolecular.residueKey()}),e)}function ar(e){return Object.fromEntries(Object.entries(e).map(([t,o])=>[o,+t]))}var Bt=S(()=>{"use strict";Vt()});function ds(e){let t=e.strand,o=e.refName;if(t!==-1&&t!==1)throw new Error(`Invalid strand value: ${t}. Expected 1 or -1.`);if(!o)throw new Error("refName is required");let n=new Map;for(let a of e.subfeatures??[])if(a.type==="CDS"&&a.start<a.end){let u=`${a.start}-${a.end}`;n.has(u)||n.set(u,a)}let r=[...n.values()].sort((a,u)=>t*(a.start-u.start)),i={},s={},l={};if(r.length!==0){let u=(3-(r[0]?.phase??0))%3,m=-1;for(let d of r){let c=d.end-d.start;for(let w=0;w<c;w++){let y=t===1?d.start+w:d.end-1-w,f=Math.floor(u++/3);i[y]=f,f!==m?(s[f]=y,l[f]=[y],m=f):l[f].push(y)}}}return{g2p:i,p2g:s,p2gCodon:l,refName:o,strand:t}}function $o(e,t,o){let n=e[t];if(n!==void 0)return o===1?[n,n+3]:[n-2,n+1]}var Yo=S(()=>{});var Qt=V((Ng,gs)=>{gs.exports=JBrowseExports.mobx});function fs(e){let t=e.alns[1].seq,o=e.alns[0].seq;if(t.length!==o.length)throw new Error("mismatched length");let n=0,r=0,i={},s={};for(let l=0;l<t.length;l++){let a=t[l];o[l]==="-"?n++:a==="-"?r++:(i[n]=r,s[r]=n,r++,n++)}return{structureSeqToTranscriptSeqPosition:i,transcriptSeqToStructureSeqPosition:s}}function hs(e){let t={};for(let o=0,n=0;o<e.length;o++)e[o]!=="-"&&(t[n]=o,n++);return t}function bs(e){return hs(e.alns[1].seq)}function ys(e){return hs(e.alns[0].seq)}function eo(e){return ds(e.toJSON())}var vo=S(()=>{"use strict";Yo()});var ws,Qe,lr,Ht,Zo=S(()=>{"use strict";ws=p(ee());Yo();Qe=p(Qt());vo();lr=class{views=Qe.observable.map();constructor(){(0,Qe.makeObservable)(this,{register:Qe.action,unregister:Qe.action,cleanupStaleViews:Qe.action,entries:Qe.computed})}register(t){this.views.set(t.viewId,t)}unregister(t){this.views.delete(t)}cleanupStaleViews(t){let o=new Set(t.views.map(n=>n.id));for(let n of this.views.keys())o.has(n)||this.views.delete(n)}get(t){return this.views.get(t)}getByUniprotId(t,o){o&&this.cleanupStaleViews(o);for(let n of this.views.values())if(n.uniprotId===t)return n}get entries(){return[...this.views.values()]}getGenomeHighlightForProteinPosition(t,o,n){let r=this.getByUniprotId(t,n);if(!r)return;let i=new ws.SimpleFeature(r.feature),s=eo(i);if(!s)return;let{p2g:l,strand:a,refName:u}=s,m=$o(l,o,a);if(!m)return;let[d,c]=m;return{refName:u,start:d,end:c}}},Ht=new lr});function te(e){return e.replaceAll("*","")}function Ut(e){let o=(e.get("subfeatures")??[]).filter(n=>n.get("type")==="mRNA"||n.get("type")==="transcript");return o.length>0?o:[e]}function To(e){return e?.replace(/\.[^./]+$/,"")}function Ls(e){return e===void 0?"":e.id()}function Se(e){return e===void 0?"":e.get("name")??e.get("id")??""}function to(e){return e===void 0?"":e.get("gene_name")??e.get("name")??e.get("id")??""}function vt(e){return qs.test(e)||Ds.test(e)||Ns.test(e)||Vs.test(e)||Bs.test(e)||Hs.test(e)||cr.test(e)}function en(e){if(qs.test(e)||Ds.test(e)||Ns.test(e))return"ensembl";if(Vs.test(e)||Bs.test(e))return"refseq";if(Hs.test(e))return"ccds";if(cr.test(e))return"hgnc"}function $m(e){return e?Array.isArray(e)?e.flatMap(t=>typeof t=="string"?t.split(","):[]):typeof e=="string"?e.split(",").map(t=>t.trim()):[]:[]}function Ym(e){let t=[];for(let o of e){let n=o.split(":"),r=n[n.length-1];r&&vt(r)&&t.push(r),vt(o)&&t.push(o),o.startsWith("HGNC:HGNC:")?t.push(o.replace("HGNC:HGNC:","HGNC:")):o.startsWith("HGNC:")&&/^HGNC:\d+$/.test(o)&&t.push(o)}return[...new Set(t)]}function Zm(e){if(!e)return[];let t=[],o=[e.get("ID"),e.get("id"),e.get("name"),e.get("Name"),e.get("transcript_id"),e.get("protein_id"),e.get("protAcc"),e.get("mrnaAcc")];for(let s of o)if(typeof s=="string"){let l=s.replace(/\.[^./]+$/,"");vt(l)&&t.push(l)}let n=e.get("hgnc")??e.get("HGNC");if(typeof n=="string"||typeof n=="number"){let s=String(n);/^\d+$/.test(s)?t.push(`HGNC:${s}`):cr.test(s)&&t.push(s)}let r=e.get("Dbxref")??e.get("dbxref")??e.get("db_xref"),i=Ym($m(r));for(let s of i)t.push(s);return[...new Set(t)]}function Us(e){if(!e)return{recognizedIds:[]};let t=e;if(e.get("type")==="gene"){let l=Ut(e);l.length>0&&(t=l[0])}let o=Zm(t),n=t.get("uniprot")??t.get("uniprotId")??t.get("uniprotid")??t.get("UniProt"),r=typeof n=="string"&&n.length>0?n:void 0,i=e.get("gene_id")??e.get("ID"),s=e.get("gene_name")??e.get("gene")??e.get("name")??e.get("Name");return{recognizedIds:[...new Set(o)],uniprotId:r,geneId:typeof i=="string"?i:void 0,geneName:typeof s=="string"?s:void 0}}function Gs({options:e,isoformSequences:t,structureSequence:o}){let n=e.find(i=>o&&te(t[i.id()]?.seq??"")===o),r=e.filter(i=>!!t[i.id()]).toSorted((i,s)=>t[s.id()].seq.length-t[i.id()].seq.length)[0];return n??r}var qs,Ds,Ns,Vs,Bs,Hs,cr,me=S(()=>{"use strict";qs=/^ENS[A-Z]*G\d+/i,Ds=/^ENS[A-Z]*T\d+/i,Ns=/^ENS[A-Z]*P\d+/i,Vs=/^[NX][MR]_\d+/i,Bs=/^[NX]P_\d+/i,Hs=/^CCDS\d+/i,cr=/^HGNC:\d+/i});var tn=V((hf,Ks)=>{Ks.exports=JBrowseExports["@jbrowse/core/pluggableElementTypes/AdapterType"]});var no=V((bf,$s)=>{$s.exports=JBrowseExports["@jbrowse/core/configuration"]});var on=V((wf,Xs)=>{Xs.exports=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"]});var nn=V((xf,Qs)=>{Qs.exports=JBrowseExports["@jbrowse/core/util/io"]});var rn=V((Sf,ea)=>{ea.exports=JBrowseExports["@jbrowse/core/util/rxjs"]});var ra={};wt(ra,{default:()=>sn});var ta,an,oa,na,sn,ia=S(()=>{"use strict";ta=p(on()),an=p(ee()),oa=p(nn()),na=p(rn()),sn=class extends ta.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let t=JSON.parse(await(0,oa.openLocation)(this.getConf("location")).readFile("utf8"));return t.residueNumber.map((o,n)=>({uniqueId:`feat-${n}`,start:o,end:o+1,score:t.confidenceScore[n]}))}async loadData(t={}){return this.feats??=this.loadDataP().catch(o=>{throw this.feats=void 0,o}),this.feats}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,na.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,an.doesIntersect2)(a.start,a.end,r,i)&&n.next(new an.SimpleFeature({...a,refName:s}));n.complete()})}freeResources(){}}});var da={};wt(da,{default:()=>ln,parseAlphaMissense:()=>ca});function ca(e){return e.split(`
2
- `).slice(1).map(t=>t.trim()).filter(t=>!!t).flatMap((t,o)=>{let[n="",r,i]=t.split(","),s=n[0],l=n.at(-1),a=+n.slice(1,-1);return s!==void 0&&l!==void 0&&!Number.isNaN(a)&&r!==void 0&&i!==void 0?[{uniqueId:`feat-${o}`,ref:s,variant:l,start:a,end:a+1,score:+r,am_class:i}]:[]})}var pa,Tt,ua,ma,ln,ga=S(()=>{"use strict";pa=p(on()),Tt=p(ee()),ua=p(nn()),ma=p(rn());ln=class extends pa.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let t=await(0,ua.openLocation)(this.getConf("location")).readFile("utf8");return ca(t)}async loadData(t={}){return this.feats??=this.loadDataP().catch(o=>{throw this.feats=void 0,o}),this.feats}async getGlobalStats(t){let n=(await this.loadData()).map(r=>r.score);return{scoreMin:(0,Tt.min)(n),scoreMax:(0,Tt.max)(n)}}async getMultiRegionFeatureDensityStats(t){return{featureDensity:0}}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,ma.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,Tt.doesIntersect2)(a.start,a.end,r,i)&&n.next(new Tt.SimpleFeature({...a,refName:s,source:a.variant}));n.complete()})}async getSources(){let t=new Set,o=await this.loadData();for(let n of o)t.add(n.variant);return[...t].map(n=>({name:n,__name:n}))}freeResources(){}}});var ba=V((Cf,ha)=>{ha.exports=JBrowseExports["@mui/material/utils"]});var ve,Pt=S(()=>{"use client";ve=p(ba(),1)});var At=V((If,ya)=>{ya.exports=JBrowseExports["react/jsx-runtime"]});var Ge=V((Lf,Sa)=>{Sa.exports=JBrowseExports["@jbrowse/core/ui"]});var E=V((qf,va)=>{va.exports=JBrowseExports["@mui/material"]});function Tr(e){let t=e.next();for(;!t.done&&t.value.trim()==="";)t=e.next();return t.value}var Pr=S(()=>{});function Na(e){let t=e.trim();return t?t.split(/\s+/).every(n=>/^\d+$/.test(n)):!1}function sc(e){let t=e.trim();return/^\w+\s+/.test(t)&&!Na(e)}function ac(e){return e.length>=3&&/^\d+$/.test(e[1])}function lc(e,t){let n=e.trim().split(/\s+/),r=n[t],i=e.indexOf(r,e.indexOf(n[0])+n[0].length);return[i,i+r.length]}function Da(e){let t=Tr(e),o=[],n="";if(!t)return;for(;t;)Na(t)||(sc(t)?o.push(t):n=t),t=e.next().value;if(o.length===0)return;let r=o.map(w=>w.trim().split(/\s+/)),i=r[0];if(!i)return;let s=ac(i)?2:1,[l,a]=lc(o[0],s),u=r.map(w=>w[0]),m=r.map(w=>w[s]),d=n.slice(l,a),c=m[0];if(c){let w=c.length-d.length;w>0&&(d+=" ".repeat(w))}return{ids:u,seqs:m,consensus:d}}function Va(e){let t,o=Da(e);if(o!==void 0)for(;t=Da(e);){for(let n=0;n<t.seqs.length;n++)o.seqs[n]+=t.seqs[n];o.consensus+=t.consensus}return o}var Ba=S(()=>{Pr()});function mn(e){let t=e.split(`
1
+ "use strict";var JBrowsePluginProtein3d=(()=>{var Wm=Object.create;var $o=Object.defineProperty;var _m=Object.getOwnPropertyDescriptor;var Rm=Object.getOwnPropertyNames;var Jm=Object.getPrototypeOf,Km=Object.prototype.hasOwnProperty;var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var V=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),vt=(e,t)=>{for(var o in t)$o(e,o,{get:t[o],enumerable:!0})},ts=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Rm(t))!Km.call(e,r)&&r!==o&&$o(e,r,{get:()=>t[r],enumerable:!(n=_m(t,r))||n.enumerable});return e};var p=(e,t,o)=>(o=e!=null?Wm(Jm(e)):{},ts(t||!e||!e.__esModule?$o(o,"default",{value:e,enumerable:!0}):o,e)),Ym=e=>ts($o({},"__esModule",{value:!0}),e);var ns=V((Ig,os)=>{os.exports=JBrowseExports["@jbrowse/core/Plugin"]});var x=V((Fg,rs)=>{rs.exports=JBrowseExports.react});var _=V((Lg,is)=>{is.exports=JBrowseExports["mobx-react"]});var te=V((Eg,ss)=>{ss.exports=JBrowseExports["@jbrowse/core/util"]});var tt=V((qg,as)=>{as.exports=JBrowseExports["tss-react/mui"]});function ge(){return Xo||(Xo=import(Zm+"molstar-chunk.js").catch(function(e){throw Xo=void 0,e})),Xo}var ds,Zm,Xo,Ht=S(()=>{"use strict";ds=typeof document<"u"?document.currentScript?.src:void 0,Zm=ds?ds.replace(/\/[^/]*$/,"/"):""});function Pt(e){return!!e&&typeof e=="object"&&"hoverPosition"in e&&!!e.hoverPosition&&typeof e.hoverPosition=="object"&&"coord"in e.hoverPosition&&"refName"in e.hoverPosition}async function gs({structure:e,selectedResidue:t}){let{Script:o}=await ge();return o.getStructureSelection(n=>n.struct.generator.atomGroups({"residue-test":n.core.rel.eq([n.struct.atomProperty.macromolecular.label_seq_id(),t]),"group-by":n.struct.atomProperty.macromolecular.residueKey()}),e)}function cr(e){return Object.fromEntries(Object.entries(e).map(([t,o])=>[o,+t]))}var Ut=S(()=>{"use strict";Ht()});function ws(e){let t=e.strand,o=e.refName;if(t!==-1&&t!==1)throw new Error(`Invalid strand value: ${t}. Expected 1 or -1.`);if(!o)throw new Error("refName is required");let n=new Map;for(let a of e.subfeatures??[])if(a.type==="CDS"&&a.start<a.end){let u=`${a.start}-${a.end}`;n.has(u)||n.set(u,a)}let r=[...n.values()].sort((a,u)=>t*(a.start-u.start)),i={},s={},l={};if(r.length!==0){let u=(3-(r[0]?.phase??0))%3,m=-1;for(let d of r){let c=d.end-d.start;for(let y=0;y<c;y++){let w=t===1?d.start+y:d.end-1-y,h=Math.floor(u++/3);i[w]=h,h!==m?(s[h]=w,l[h]=[w],m=h):l[h].push(w)}}}return{g2p:i,p2g:s,p2gCodon:l,refName:o,strand:t}}function Qo(e,t,o){let n=e[t];if(n!==void 0)return o===1?[n,n+3]:[n-2,n+1]}var en=S(()=>{});var to=V((Wg,xs)=>{xs.exports=JBrowseExports.mobx});function Ss(e){let t=e.alns[1].seq,o=e.alns[0].seq;if(t.length!==o.length)throw new Error("mismatched length");let n=0,r=0,i={},s={};for(let l=0;l<t.length;l++){let a=t[l];o[l]==="-"?n++:a==="-"?r++:(i[n]=r,s[r]=n,r++,n++)}return{structureSeqToTranscriptSeqPosition:i,transcriptSeqToStructureSeqPosition:s}}function vs(e){let t={};for(let o=0,n=0;o<e.length;o++)e[o]!=="-"&&(t[n]=o,n++);return t}function Ts(e){return vs(e.alns[1].seq)}function Ps(e){return vs(e.alns[0].seq)}function oo(e){return ws(e.toJSON())}var ko=S(()=>{"use strict";en()});var As,ot,dr,Gt,tn=S(()=>{"use strict";As=p(te());en();ot=p(to());ko();dr=class{views=ot.observable.map();constructor(){(0,ot.makeObservable)(this,{register:ot.action,unregister:ot.action,cleanupStaleViews:ot.action,entries:ot.computed})}register(t){this.views.set(t.viewId,t)}unregister(t){this.views.delete(t)}cleanupStaleViews(t){let o=new Set(t.views.map(n=>n.id));for(let n of this.views.keys())o.has(n)||this.views.delete(n)}get(t){return this.views.get(t)}getByUniprotId(t,o){o&&this.cleanupStaleViews(o);for(let n of this.views.values())if(n.uniprotId===t)return n}get entries(){return[...this.views.values()]}getGenomeHighlightForProteinPosition(t,o,n){let r=this.getByUniprotId(t,n);if(!r)return;let i=new As.SimpleFeature(r.feature),s=oo(i);if(!s)return;let{p2g:l,strand:a,refName:u}=s,m=Qo(l,o,a);if(!m)return;let[d,c]=m;return{refName:u,start:d,end:c}}},Gt=new dr});function oe(e){return e.replaceAll("*","")}function Ot(e){let o=(e.get("subfeatures")??[]).filter(n=>n.get("type")==="mRNA"||n.get("type")==="transcript");return o.length>0?o:[e]}function Co(e){return e?.replace(/\.[^./]+$/,"")}function Hs(e){return e===void 0?"":e.id()}function Ae(e){return e===void 0?"":e.get("name")??e.get("id")??""}function no(e){return e===void 0?"":e.get("gene_name")??e.get("name")??e.get("id")??""}function At(e){return Us.test(e)||Gs.test(e)||Os.test(e)||zs.test(e)||js.test(e)||Ws.test(e)||br.test(e)}function rn(e){if(Us.test(e)||Gs.test(e)||Os.test(e))return"ensembl";if(zs.test(e)||js.test(e))return"refseq";if(Ws.test(e))return"ccds";if(br.test(e))return"hgnc"}function nc(e){return e?Array.isArray(e)?e.flatMap(t=>typeof t=="string"?t.split(","):[]):typeof e=="string"?e.split(",").map(t=>t.trim()):[]:[]}function rc(e){let t=[];for(let o of e){let n=o.split(":"),r=n[n.length-1];r&&At(r)&&t.push(r),At(o)&&t.push(o),o.startsWith("HGNC:HGNC:")?t.push(o.replace("HGNC:HGNC:","HGNC:")):o.startsWith("HGNC:")&&/^HGNC:\d+$/.test(o)&&t.push(o)}return[...new Set(t)]}function ic(e){if(!e)return[];let t=[],o=[e.get("ID"),e.get("id"),e.get("name"),e.get("Name"),e.get("transcript_id"),e.get("protein_id"),e.get("protAcc"),e.get("mrnaAcc")];for(let s of o)if(typeof s=="string"){let l=s.replace(/\.[^./]+$/,"");At(l)&&t.push(l)}let n=e.get("hgnc")??e.get("HGNC");if(typeof n=="string"||typeof n=="number"){let s=String(n);/^\d+$/.test(s)?t.push(`HGNC:${s}`):br.test(s)&&t.push(s)}let r=e.get("Dbxref")??e.get("dbxref")??e.get("db_xref"),i=rc(nc(r));for(let s of i)t.push(s);return[...new Set(t)]}function _s(e){if(!e)return{recognizedIds:[]};let t=e;if(e.get("type")==="gene"){let l=Ot(e);l.length>0&&(t=l[0])}let o=ic(t),n=t.get("uniprot")??t.get("uniprotId")??t.get("uniprotid")??t.get("UniProt"),r=typeof n=="string"&&n.length>0?n:void 0,i=e.get("gene_id")??e.get("ID"),s=e.get("gene_name")??e.get("gene")??e.get("name")??e.get("Name");return{recognizedIds:[...new Set(o)],uniprotId:r,geneId:typeof i=="string"?i:void 0,geneName:typeof s=="string"?s:void 0}}function Rs({options:e,isoformSequences:t,structureSequence:o}){let n=e.find(i=>o&&oe(t[i.id()]?.seq??"")===o),r=e.filter(i=>!!t[i.id()]).toSorted((i,s)=>t[s.id()].seq.length-t[i.id()].seq.length)[0];return n??r}var Us,Gs,Os,zs,js,Ws,br,ce=S(()=>{"use strict";Us=/^ENS[A-Z]*G\d+/i,Gs=/^ENS[A-Z]*T\d+/i,Os=/^ENS[A-Z]*P\d+/i,zs=/^[NX][MR]_\d+/i,js=/^[NX]P_\d+/i,Ws=/^CCDS\d+/i,br=/^HGNC:\d+/i});var sn=V((Af,ea)=>{ea.exports=JBrowseExports["@jbrowse/core/pluggableElementTypes/AdapterType"]});var io=V((kf,ta)=>{ta.exports=JBrowseExports["@jbrowse/core/configuration"]});var an=V((Mf,ra)=>{ra.exports=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"]});var ln=V((If,ia)=>{ia.exports=JBrowseExports["@jbrowse/core/util/io"]});var pn=V((Ff,sa)=>{sa.exports=JBrowseExports["@jbrowse/core/util/rxjs"]});var ua={};vt(ua,{default:()=>un});var aa,mn,la,pa,un,ma=S(()=>{"use strict";aa=p(an()),mn=p(te()),la=p(ln()),pa=p(pn()),un=class extends aa.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let t=JSON.parse(await(0,la.openLocation)(this.getConf("location")).readFile("utf8"));return t.residueNumber.map((o,n)=>({uniqueId:`feat-${n}`,start:o,end:o+1,score:t.confidenceScore[n]}))}async loadData(t={}){return this.feats??=this.loadDataP().catch(o=>{throw this.feats=void 0,o}),this.feats}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,pa.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,mn.doesIntersect2)(a.start,a.end,r,i)&&n.next(new mn.SimpleFeature({...a,refName:s}));n.complete()})}freeResources(){}}});var wa={};vt(wa,{default:()=>cn,parseAlphaMissense:()=>ya});function ya(e){return e.split(`
2
+ `).slice(1).map(t=>t.trim()).filter(t=>!!t).flatMap((t,o)=>{let[n="",r,i]=t.split(","),s=n[0],l=n.at(-1),a=+n.slice(1,-1);return s!==void 0&&l!==void 0&&!Number.isNaN(a)&&r!==void 0&&i!==void 0?[{uniqueId:`feat-${o}`,ref:s,variant:l,start:a,end:a+1,score:+r,am_class:i}]:[]})}var fa,kt,ha,ba,cn,xa=S(()=>{"use strict";fa=p(an()),kt=p(te()),ha=p(ln()),ba=p(pn());cn=class extends fa.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let t=await(0,ha.openLocation)(this.getConf("location")).readFile("utf8");return ya(t)}async loadData(t={}){return this.feats??=this.loadDataP().catch(o=>{throw this.feats=void 0,o}),this.feats}async getGlobalStats(t){let n=(await this.loadData()).map(r=>r.score);return{scoreMin:(0,kt.min)(n),scoreMax:(0,kt.max)(n)}}async getMultiRegionFeatureDensityStats(t){return{featureDensity:0}}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,ba.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,kt.doesIntersect2)(a.start,a.end,r,i)&&n.next(new kt.SimpleFeature({...a,refName:s,source:a.variant}));n.complete()})}async getSources(){let t=new Set,o=await this.loadData();for(let n of o)t.add(n.variant);return[...t].map(n=>({name:n,__name:n}))}freeResources(){}}});var Ta=V((Vf,va)=>{va.exports=JBrowseExports["@mui/material/utils"]});var ke,Ct=S(()=>{"use client";ke=p(Ta(),1)});var Mt=V((Hf,Pa)=>{Pa.exports=JBrowseExports["react/jsx-runtime"]});var Oe=V((Of,Ca)=>{Ca.exports=JBrowseExports["@jbrowse/core/ui"]});var I=V((zf,Ma)=>{Ma.exports=JBrowseExports["@mui/material"]});function lo(){let e=localStorage.getItem(Ga);return e===null?!0:e==="true"}function Oa(e){localStorage.setItem(Ga,e?"true":"false")}function gc(e){return"setUseWorkspaces"in e&&typeof e.setUseWorkspaces=="function"&&"setPendingMove"in e&&typeof e.setPendingMove=="function"}function gn(e,t){gc(e)&&(e.setPendingMove({type:"splitRight",viewId:t}),e.setUseWorkspaces(!0))}var Ga,fn=S(()=>{"use strict";Ga="proteinView-launchSideBySide"});function Ir(e){let t=e.next();for(;!t.done&&t.value.trim()==="";)t=e.next();return t.value}var Fr=S(()=>{});function ja(e){let t=e.trim();return t?t.split(/\s+/).every(n=>/^\d+$/.test(n)):!1}function fc(e){let t=e.trim();return/^\w+\s+/.test(t)&&!ja(e)}function hc(e){return e.length>=3&&/^\d+$/.test(e[1])}function bc(e,t){let n=e.trim().split(/\s+/),r=n[t],i=e.indexOf(r,e.indexOf(n[0])+n[0].length);return[i,i+r.length]}function za(e){let t=Ir(e),o=[],n="";if(!t)return;for(;t;)ja(t)||(fc(t)?o.push(t):n=t),t=e.next().value;if(o.length===0)return;let r=o.map(y=>y.trim().split(/\s+/)),i=r[0];if(!i)return;let s=hc(i)?2:1,[l,a]=bc(o[0],s),u=r.map(y=>y[0]),m=r.map(y=>y[s]),d=n.slice(l,a),c=m[0];if(c){let y=c.length-d.length;y>0&&(d+=" ".repeat(y))}return{ids:u,seqs:m,consensus:d}}function Wa(e){let t,o=za(e);if(o!==void 0)for(;t=za(e);){for(let n=0;n<t.seqs.length;n++)o.seqs[n]+=t.seqs[n];o.consensus+=t.consensus}return o}var _a=S(()=>{Fr()});function hn(e){let t=e.split(`
3
3
  `).filter(s=>!s.startsWith("#")).join(`
4
- `),o=Va(t.split(`
5
- `)[Symbol.iterator]());if(o===void 0)throw new Error("No blocks parsed");let n=o.seqs.map((s,l)=>({id:o.ids[l],seq:s})),{consensus:r}=o,i=n[0];if(!i)throw new Error("No alignments found");if(r.length!==i.seq.length)throw new Error(`Consensus length !== sequence length. Con ${r.length} seq ${i.seq.length}`);if(n.length!==2)throw new Error(`Expected exactly 2 sequences in pairwise alignment, got ${n.length}`);return{consensus:r,alns:n}}var Ar=S(()=>{Ba();Pr()});function za(e,t){e.addTemporaryAssembly?.({name:t,sequence:{type:"ReferenceSequenceTrack",trackId:`${t}-ReferenceSequenceTrack`,sequenceType:"pep",adapter:{type:"UnindexedFastaAdapter",rewriteRefNames:"jexl:split(refName,'|')[1]",fastaLocation:{uri:`https://rest.uniprot.org/uniprotkb/${t}.fasta`}}}})}var ja=S(()=>{"use strict"});async function uc(e){let t=`https://rest.uniprot.org/uniprotkb/${e}.gff`,o=await fetch(t);if(!o.ok)throw new Error(`HTTP ${o.status} fetching ${t}`);let n=await o.text();return[...new Set(n.split(`
6
- `).filter(r=>!r.startsWith("#")).map(r=>r.trim()).filter(r=>!!r).map(r=>r.split(" ")[2]))]}function mc({session:e,uniprotId:t,featureTypes:o}){o.forEach(n=>{let r=`${t}-${n}`;e.addTrackConf({type:"FeatureTrack",trackId:r,name:n,adapter:{type:"Gff3Adapter",gffLocation:{uri:`https://rest.uniprot.org/uniprotkb/${t}.gff`}},assemblyNames:[t],displays:[{displayId:`${r}-LinearBasicDisplay`,type:"LinearBasicDisplay",jexlFilters:[`get(feature,'type')=='${n}'`]}]})})}function cc({session:e,uniprotId:t}){e.addTrackConf({type:"FeatureTrack",trackId:`${t}-Antigen`,name:"Antigen",adapter:{type:"Gff3Adapter",gffLocation:{uri:`https://www.ebi.ac.uk/proteins/api/antigen/${t}?format=gff`}},assemblyNames:[t]})}function dc({session:e,uniprotId:t}){e.addTrackConf({type:"FeatureTrack",trackId:`${t}-Variation`,name:"Variation",adapter:{type:"UniProtVariationAdapter",location:{uri:`https://www.ebi.ac.uk/proteins/api/variation/${t}.json`}},assemblyNames:[t]})}function gc({session:e,uniprotId:t,confidenceUrl:o}){o&&e.addTrackConf({type:"QuantitativeTrack",trackId:`${t}-AlphaFold-confidence`,name:"AlphaFold confidence",adapter:{type:"AlphaFoldConfidenceAdapter",location:{uri:o}},assemblyNames:[t]})}function fc({session:e,uniprotId:t}){e.addTrackConf({type:"MultiQuantitativeTrack",trackId:`${t}-AlphaMissense-scores`,name:"AlphaMissense scores",assemblyNames:[t],adapter:{type:"AlphaMissensePathogenicityAdapter",location:{uri:`https://alphafold.ebi.ac.uk/files/AF-${t}-F1-aa-substitutions.csv`}},displays:[{type:"MultiLinearWiggleDisplay",displayId:`${t}-AlphaMissense-scores-MultiLinearWiggleDisplay`,defaultRendering:"multirowdensity",renderers:{MultiDensityRenderer:{type:"MultiDensityRenderer",bicolorPivotValue:.5,posColor:"red",negColor:"blue"}}}]})}async function Wa({session:e,uniprotId:t,confidenceUrl:o}){let n=await uc(t);mc({session:e,uniprotId:t,featureTypes:n}),cc({session:e,uniprotId:t}),dc({session:e,uniprotId:t}),gc({session:e,uniprotId:t,confidenceUrl:o}),fc({session:e,uniprotId:t})}var _a=S(()=>{"use strict"});async function Ra({session:e,feature:t,selectedTranscript:o,uniprotId:n,confidenceUrl:r,connectedViewId:i}){za(e,n),await Wa({session:e,uniprotId:n,confidenceUrl:r});let s=e.addView("LinearGenomeView",{type:"LinearGenomeView",displayName:dn("Protein view",t,o,n)});i&&o&&Ht.register({viewId:s.id,connectedViewId:i,feature:o.toJSON(),uniprotId:n}),await s.navToLocString(n,n)}var Ja=S(()=>{"use strict";ja();_a();Zo();We()});function io(e,t=Ir){return`https://alphafold.ebi.ac.uk/files/AF-${e}-F1-model_${t}.cif`}function $a(e,t=Ir){return`https://alphafold.ebi.ac.uk/files/AF-${e}-F1-confidence_${t}.json`}function hc(e,t=Ir){return`https://alphafold.ebi.ac.uk/files/msa/AF-${e}-F1-msa_${t}.a3m`}function Mo(e){return`https://files.rcsb.org/download/${e}.cif`}function Fr(e){return e.split(" ")[0]}function gn(e){return/AF-([A-Z0-9]+)-F\d+/.exec(Fr(e))?.[1]}function Ya(e,t){let o=Fr(e);if(o.startsWith("AF-"))return`https://alphafold.ebi.ac.uk/files/${o}.cif`;if(t==="pdb100"){let n=o.split("_")[0];if(n.length===4)return Mo(n)}}function Za(e){let t=Fr(e);if(t.startsWith("AF-"))return`https://alphafold.ebi.ac.uk/files/${t.replace("-model_","-confidence_")}.json`}function dn(e,t,o,n){return[...new Set([e,n,to(t),Se(o)])].filter(r=>!!r).join(" - ")}function Ot({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,url:i,data:s,userProvidedTranscriptSequence:l,alignmentAlgorithm:a,displayName:u,connectedMsaViewId:m}){let d={type:"ProteinView",alignmentAlgorithm:a,connectedMsaViewId:m,structures:[{url:i,data:s,userProvidedTranscriptSequence:l??"",feature:n?.toJSON(),connectedViewId:t.id}],displayName:u??dn("Protein view",o,n,r)};return e.addView("ProteinView",d)}async function fn({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,confidenceUrl:i}){!r||!(0,Ka.isSessionWithAddTracks)(e)||await Ra({session:e,selectedTranscript:n,feature:o,uniprotId:r,confidenceUrl:i,connectedViewId:t.id})}function Io({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,displayName:i}){if(r)return e.addView("MsaView",{type:"MsaView",displayName:i??dn("MSA view",o,n,r),connectedViewId:t.id,connectedFeature:n?.toJSON(),init:{msaUrl:hc(r),colorSchemeName:"percent_identity"}})}function hn(){return window.JBrowsePluginMsaView!==void 0}function Xa(e){let{uniprotId:t}=e;if(!t)return;let o=Io(e);return Ot({...e,connectedMsaViewId:o?.id})}var Ka,Ir,We=S(()=>{"use strict";Ka=p(ee());me();Ja();Ir="v6"});var ol=V(tl=>{"use strict";var lo=x();function yc(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var wc=typeof Object.is=="function"?Object.is:yc,xc=lo.useState,Sc=lo.useEffect,vc=lo.useLayoutEffect,Tc=lo.useDebugValue;function Pc(e,t){var o=t(),n=xc({inst:{value:o,getSnapshot:t}}),r=n[0].inst,i=n[1];return vc(function(){r.value=o,r.getSnapshot=t,Vr(r)&&i({inst:r})},[e,o,t]),Sc(function(){return Vr(r)&&i({inst:r}),e(function(){Vr(r)&&i({inst:r})})},[e]),Tc(o),o}function Vr(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!wc(e,o)}catch{return!0}}function Ac(e,t){return t()}var kc=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Ac:Pc;tl.useSyncExternalStore=lo.useSyncExternalStore!==void 0?lo.useSyncExternalStore:kc});var rl=V((zh,nl)=>{"use strict";nl.exports=ol()});var Mt={};wt(Mt,{ERROR_REVALIDATE_EVENT:()=>Cc,FOCUS_EVENT:()=>il,MUTATE_EVENT:()=>al,RECONNECT_EVENT:()=>sl});var il,sl,al,Cc,ll=S(()=>{il=0,sl=1,al=2,Cc=3});function bn(e,t){var o,n;if(e===t)return!0;if(e&&t&&(o=e.constructor)===t.constructor){if(o===Date)return e.getTime()===t.getTime();if(o===RegExp)return e.toString()===t.toString();if(o===Array){if((n=e.length)===t.length)for(;n--&&bn(e[n],t[n]););return n===-1}if(!o||typeof e=="object"){n=0;for(o in e)if(pl.call(e,o)&&++n&&!pl.call(t,o)||!(o in t)||!bn(e[o],t[o]))return!1;return Object.keys(t).length===n}}return e!==e&&t!==t}var pl,ul=S(()=>{pl=Object.prototype.hasOwnProperty});async function kn(...e){let[t,o,n,r]=e,i=Je({populateCache:!0,throwOnError:!0},typeof r=="boolean"?{revalidate:r}:r||{}),s=i.populateCache,l=i.rollbackOnError,a=i.optimisticData,u=c=>typeof l=="function"?l(c):l!==!1,m=i.throwOnError;if(Le(o)){let c=o,w=[],y=t.keys();for(let f of y)!/^\$(inf|sub)\$/.test(f)&&c(t.get(f)._k)&&w.push(f);return Promise.all(w.map(d))}return d(o);async function d(c){let[w]=Lo(c);if(!w)return;let[y,f]=Pn(t,w),[b,h,g,v]=_e.get(t),D=()=>{let ne=b[w];return(Le(i.revalidate)?i.revalidate(y().data,c):i.revalidate!==!1)&&(delete g[w],delete v[w],ne&&ne[0])?ne[0](2).then(()=>y().data):y().data};if(e.length<3)return D();let T=n,z,G=!1,xe=Eo();h[w]=[xe,0];let L=!A(a),ke=y(),ie=ke.data,ue=ke._c,$=A(ue)?ie:ue;if(L&&(a=Le(a)?a($,ie):a,f({data:a,_c:$})),Le(T))try{T=T($)}catch(ne){z=ne,G=!0}if(T&&Tn(T))if(T=await T.catch(ne=>{z=ne,G=!0}),xe!==h[w][0]){if(G)throw z;return T}else G&&L&&u(z)&&(s=!0,f({data:$,_c:ae}));if(s&&!G)if(Le(s)){let ne=s(T,$);f({data:ne,error:ae,_c:ae})}else f({data:T,error:ae,_c:ae});if(h[w][1]=Eo(),Promise.resolve(D()).then(()=>{f({_c:ae})}),G){if(m)throw z;return}return T}}var de,_e,Re,ae,po,A,Le,Je,Tn,Br,yn,Wr,uo,xn,cl,dl,Pn,Gr,Mc,Or,zr,Ic,Fc,Ec,gl,fl,An,It,_r,mo,Hr,jr,wn,Lc,Ur,qc,Sn,Lo,Dc,Eo,ml,Rr,Nc,hl,Cn,bl,Mn,Jr,vn,Kr,$r=S(()=>{"use client";de=p(x(),1);ul();_e=new WeakMap,Re=()=>{},ae=Re(),po=Object,A=e=>e===ae,Le=e=>typeof e=="function",Je=(e,t)=>({...e,...t}),Tn=e=>Le(e.then),Br={},yn={},Wr="undefined",uo=typeof window!=Wr,xn=typeof document!=Wr,cl=uo&&"Deno"in window,dl=()=>uo&&typeof window.requestAnimationFrame!=Wr,Pn=(e,t)=>{let o=_e.get(e);return[()=>!A(t)&&e.get(t)||Br,n=>{if(!A(t)){let r=e.get(t);t in yn||(yn[t]=r),o[5](t,Je(r,n),r||Br)}},o[6],()=>!A(t)&&t in yn?yn[t]:!A(t)&&e.get(t)||Br]},Gr=!0,Mc=()=>Gr,[Or,zr]=uo&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Re,Re],Ic=()=>{let e=xn&&document.visibilityState;return A(e)||e!=="hidden"},Fc=e=>(xn&&document.addEventListener("visibilitychange",e),Or("focus",e),()=>{xn&&document.removeEventListener("visibilitychange",e),zr("focus",e)}),Ec=e=>{let t=()=>{Gr=!0,e()},o=()=>{Gr=!1};return Or("online",t),Or("offline",o),()=>{zr("online",t),zr("offline",o)}},gl={isOnline:Mc,isVisible:Ic},fl={initFocus:Fc,initReconnect:Ec},An=!de.default.useId,It=!uo||cl,_r=e=>dl()?window.requestAnimationFrame(e):setTimeout(e,1),mo=It?de.useEffect:de.useLayoutEffect,Hr=typeof navigator<"u"&&navigator.connection,jr=!It&&Hr&&(["slow-2g","2g"].includes(Hr.effectiveType)||Hr.saveData),wn=new WeakMap,Lc=e=>po.prototype.toString.call(e),Ur=(e,t)=>e===`[object ${t}]`,qc=0,Sn=e=>{let t=typeof e,o=Lc(e),n=Ur(o,"Date"),r=Ur(o,"RegExp"),i=Ur(o,"Object"),s,l;if(po(e)===e&&!n&&!r){if(s=wn.get(e),s)return s;if(s=++qc+"~",wn.set(e,s),Array.isArray(e)){for(s="@",l=0;l<e.length;l++)s+=Sn(e[l])+",";wn.set(e,s)}if(i){s="#";let a=po.keys(e).sort();for(;!A(l=a.pop());)A(e[l])||(s+=l+":"+Sn(e[l])+",");wn.set(e,s)}}else s=n?e.toJSON():t=="symbol"?e.toString():t=="string"?JSON.stringify(e):""+e;return s},Lo=e=>{if(Le(e))try{e=e()}catch{e=""}let t=e;return e=typeof e=="string"?e:(Array.isArray(e)?e.length:e)?Sn(e):"",[e,t]},Dc=0,Eo=()=>++Dc;ml=(e,t)=>{for(let o in e)e[o][0]&&e[o][0](t)},Rr=(e,t)=>{if(!_e.has(e)){let o=Je(fl,t),n=Object.create(null),r=kn.bind(ae,e),i=Re,s=Object.create(null),l=(m,d)=>{let c=s[m]||[];return s[m]=c,c.push(d),()=>c.splice(c.indexOf(d),1)},a=(m,d,c)=>{e.set(m,d);let w=s[m];if(w)for(let y of w)y(d,c)},u=()=>{if(!_e.has(e)&&(_e.set(e,[n,Object.create(null),Object.create(null),Object.create(null),r,a,l]),!It)){let m=o.initFocus(setTimeout.bind(ae,ml.bind(ae,n,0))),d=o.initReconnect(setTimeout.bind(ae,ml.bind(ae,n,1)));i=()=>{m&&m(),d&&d(),_e.delete(e)}}};return u(),[e,r,u,i]}return[e,_e.get(e)[4]]},Nc=(e,t,o,n,r)=>{let i=o.errorRetryCount,s=r.retryCount,l=~~((Math.random()+.5)*(1<<(s<8?s:8)))*o.errorRetryInterval;!A(i)&&s>i||setTimeout(n,l,r)},hl=bn,[Cn,bl]=Rr(new Map),Mn=Je({onLoadingSlow:Re,onSuccess:Re,onError:Re,onErrorRetry:Nc,onDiscarded:Re,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:jr?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:jr?5e3:3e3,compare:hl,isPaused:()=>!1,cache:Cn,mutate:bl,fallback:{}},gl),Jr=(e,t)=>{let o=Je(e,t);if(t){let{use:n,fallback:r}=e,{use:i,fallback:s}=t;n&&i&&(o.use=n.concat(i)),r&&s&&(o.fallback=Je(r,s))}return o},vn=(0,de.createContext)({}),Kr=e=>{let{value:t}=e,o=(0,de.useContext)(vn),n=Le(t),r=(0,de.useMemo)(()=>n?t(o):t,[n,o,t]),i=(0,de.useMemo)(()=>n?r:Jr(o,r),[n,o,r]),s=r&&r.provider,l=(0,de.useRef)(ae);s&&!l.current&&(l.current=Rr(s(i.cache||Cn),r));let a=l.current;return a&&(i.cache=a[0],i.mutate=a[1]),mo(()=>{if(a)return a[2]&&a[2](),a[3]},[]),(0,de.createElement)(vn.Provider,Je(e,{value:i}))}});var yl,wl=S(()=>{yl="$inf$"});var xl=S(()=>{});var co,Sl,Vc,Bc,Hc,Uc,Gc,Oc,vl,Tl,Pl=S(()=>{$r();$r();ll();wl();co=p(x(),1);xl();Sl=uo&&window.__SWR_DEVTOOLS_USE__,Vc=Sl?window.__SWR_DEVTOOLS_USE__:[],Bc=()=>{Sl&&(window.__SWR_DEVTOOLS_REACT__=co.default)},Hc=e=>Le(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(e[1]===null?e[2]:e[1])||{}],Uc=()=>{let e=(0,co.useContext)(vn);return(0,co.useMemo)(()=>Je(Mn,e),[e])},Gc=e=>(t,o,n)=>e(t,o&&((...i)=>{let[s]=Lo(t),[,,,l]=_e.get(Cn);if(s.startsWith(yl))return o(...i);let a=l[s];return A(a)?o(...i):(delete l[s],a)}),n),Oc=Vc.concat(Gc),vl=e=>function(...o){let n=Uc(),[r,i,s]=Hc(o),l=Jr(n,s),a=e,{use:u}=l,m=(u||[]).concat(Oc);for(let d=m.length;d--;)a=m[d](a);return a(r,i||l.fetcher||null,l)},Tl=(e,t,o)=>{let n=t[e]||(t[e]=[]);return n.push(o),()=>{let r=n.indexOf(o);r>=0&&(n[r]=n[n.length-1],n.pop())}};Bc()});var le,Xr,zc,Qh,Yr,Zr,Al,jc,Wc,eb,tt,go=S(()=>{le=p(x(),1),Xr=p(rl(),1);Pl();zc=()=>{},Qh=zc(),Yr=le.default.use||(e=>{switch(e.status){case"pending":throw e;case"fulfilled":return e.value;case"rejected":throw e.reason;default:throw e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e}}),Zr={dedupe:!0},Al=Promise.resolve(ae),jc=()=>Re,Wc=(e,t,o)=>{let{cache:n,compare:r,suspense:i,fallbackData:s,revalidateOnMount:l,revalidateIfStale:a,refreshInterval:u,refreshWhenHidden:m,refreshWhenOffline:d,keepPreviousData:c,strictServerPrefetchWarning:w}=o,[y,f,b,h]=_e.get(n),[g,v]=Lo(e),D=(0,le.useRef)(!1),T=(0,le.useRef)(!1),z=(0,le.useRef)(g),G=(0,le.useRef)(t),xe=(0,le.useRef)(o),L=()=>xe.current,ke=()=>L().isVisible()&&L().isOnline(),[ie,ue,$,ne]=Pn(n,g),Ie=(0,le.useRef)({}).current,Ve=A(s)?A(o.fallback)?ae:o.fallback[g]:s,it=(N,Z)=>{for(let X in Ie){let Q=X;if(Q==="data"){if(!r(N[Q],Z[Q])&&(!A(N[Q])||!r(Zt,Z[Q])))return!1}else if(Z[Q]!==N[Q])return!1}return!0},ze=!D.current,Ce=(0,le.useMemo)(()=>{let N=ie(),Z=ne(),X=se=>{let je=Je(se);return delete je._k,(()=>{if(!g||!t||L().isPaused())return!1;if(ze&&!A(l))return l;let So=A(Ve)?je.data:Ve;return i?A(So)||a:A(So)||a})()?{isValidating:!0,isLoading:!0,...je}:je},Q=X(N),Ze=N===Z?Q:X(Z),He=Q;return[()=>{let se=X(ie());return it(se,He)?(He.data=se.data,He.isLoading=se.isLoading,He.isValidating=se.isValidating,He.error=se.error,He):(He=se,se)},()=>Ze]},[n,g]),Be=(0,Xr.useSyncExternalStore)((0,le.useCallback)(N=>$(g,(Z,X)=>{it(X,Z)||N()}),[n,g]),Ce[0],Ce[1]),tr=y[g]&&y[g].length>0,ht=Be.data,st=A(ht)?Ve&&Tn(Ve)?Yr(Ve):Ve:ht,$t=Be.error,Yt=(0,le.useRef)(st),Zt=c?A(ht)?A(Yt.current)?st:Yt.current:ht:st,at=g&&A(st),Nt=(0,le.useRef)(null);!It&&(0,Xr.useSyncExternalStore)(jc,()=>(Nt.current=!1,Nt),()=>(Nt.current=!0,Nt));let or=Nt.current;w&&or&&!i&&at&&console.warn(`Missing pre-initiated data for serialized key "${g}" during server-side rendering. Data fetching should be initiated on the server and provided to SWR via fallback data. You can set "strictServerPrefetchWarning: false" to disable this warning.`);let bt=!g||!t||L().isPaused()||tr&&!A($t)?!1:ze&&!A(l)?l:i?A(st)?!1:a:A(st)||a,Xt=ze&&bt,nr=A(Be.isValidating)?Xt:Be.isValidating,_o=A(Be.isLoading)?Xt:Be.isLoading,yt=(0,le.useCallback)(async N=>{let Z=G.current;if(!g||!Z||T.current||L().isPaused())return!1;let X,Q,Ze=!0,He=N||{},se=!b[g]||!He.dedupe,je=()=>An?!T.current&&g===z.current&&D.current:g===z.current,xo={isValidating:!1,isLoading:!1},So=()=>{ue(xo)},Ji=()=>{let Ue=b[g];Ue&&Ue[1]===Q&&delete b[g]},Ki={isValidating:!0};A(ie().data)&&(Ki.isLoading=!0);try{if(se&&(ue(Ki),o.loadingTimeout&&A(ie().data)&&setTimeout(()=>{Ze&&je()&&L().onLoadingSlow(g,o)},o.loadingTimeout),b[g]=[Z(v),Eo()]),[X,Q]=b[g],X=await X,se&&setTimeout(Ji,o.dedupingInterval),!b[g]||b[g][1]!==Q)return se&&je()&&L().onDiscarded(g),!1;xo.error=ae;let Ue=f[g];if(!A(Ue)&&(Q<=Ue[0]||Q<=Ue[1]||Ue[1]===0))return So(),se&&je()&&L().onDiscarded(g),!1;let lt=ie().data;xo.data=r(lt,X)?lt:X,se&&je()&&L().onSuccess(X,g,o)}catch(Ue){Ji();let lt=L(),{shouldRetryOnError:ir}=lt;lt.isPaused()||(xo.error=Ue,se&&je()&&(lt.onError(Ue,g,lt),(ir===!0||Le(ir)&&ir(Ue))&&(!L().revalidateOnFocus||!L().revalidateOnReconnect||ke())&&lt.onErrorRetry(Ue,g,lt,Nm=>{let sr=y[g];sr&&sr[0]&&sr[0](Mt.ERROR_REVALIDATE_EVENT,Nm)},{retryCount:(He.retryCount||0)+1,dedupe:!0})))}return Ze=!1,So(),!0},[g,n]),rr=(0,le.useCallback)((...N)=>kn(n,z.current,...N),[]);if(mo(()=>{G.current=t,xe.current=o,A(ht)||(Yt.current=ht)}),mo(()=>{if(!g)return;let N=yt.bind(ae,Zr),Z=0;L().revalidateOnFocus&&(Z=Date.now()+L().focusThrottleInterval);let Q=Tl(g,y,(Ze,He={})=>{if(Ze==Mt.FOCUS_EVENT){let se=Date.now();L().revalidateOnFocus&&se>Z&&ke()&&(Z=se+L().focusThrottleInterval,N())}else if(Ze==Mt.RECONNECT_EVENT)L().revalidateOnReconnect&&ke()&&N();else{if(Ze==Mt.MUTATE_EVENT)return yt();if(Ze==Mt.ERROR_REVALIDATE_EVENT)return yt(He)}});return T.current=!1,z.current=g,D.current=!0,ue({_k:v}),bt&&(b[g]||(A(st)||It?N():_r(N))),()=>{T.current=!0,Q()}},[g]),mo(()=>{let N;function Z(){let Q=Le(u)?u(ie().data):u;Q&&N!==-1&&(N=setTimeout(X,Q))}function X(){!ie().error&&(m||L().isVisible())&&(d||L().isOnline())?yt(Zr).then(Z):Z()}return Z(),()=>{N&&(clearTimeout(N),N=-1)}},[u,m,d,g]),(0,le.useDebugValue)(Zt),i){if(!An&&It&&at)throw new Error("Fallback data is required when using Suspense in SSR.");at&&(G.current=t,xe.current=o,T.current=!1);let N=h[g],Z=!A(N)&&at?rr(N):Al;if(Yr(Z),!A($t)&&at)throw $t;let X=at?yt(Zr):Al;!A(Zt)&&at&&(X.status="fulfilled",X.value=!0),Yr(X)}return{mutate:rr,get data(){return Ie.data=!0,Zt},get error(){return Ie.error=!0,$t},get isValidating(){return Ie.isValidating=!0,nr},get isLoading(){return Ie.isLoading=!0,_o}}},eb=po.defineProperty(Kr,"defaultValue",{value:Mn}),tt=vl(Wc)});var Zl,Un,di=S(()=>{"use client";Pt();Zl=p(At(),1),Un=(0,ve.createSvgIcon)((0,Zl.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 17h-2v-2h2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25"}),"Help")});var tp={};wt(tp,{default:()=>ep});function Xl({children:e}){return Ae.default.createElement(nt.Typography,{style:{margin:4}},e)}function ep({handleClose:e}){return Ae.default.createElement(Ql.Dialog,{open:!0,maxWidth:"lg",onClose:e,title:"Help"},Ae.default.createElement(nt.DialogContent,null,Ae.default.createElement(Xl,null,"The procedure for the protein lookup is as follows:",Ae.default.createElement("ul",null,Ae.default.createElement("li",null,"(Automatic lookup) Searches UniProt for the transcript ID or gene name to retrieve the UniProt ID, which is then used to lookup the structure in AlphaFoldDB"),Ae.default.createElement("li",null,"(Manual) Allows you to choose your own structure file from your local machine (e.g. a PDB file predicted by e.g. ColabFold) or supply a specific URL"),Ae.default.createElement("li",null,"The residues from the structure are downloaded, and then you can choose the transcript isoform from the selected gene that best represents the structure. Asterisks are displayed if there is an exact sequence match"),Ae.default.createElement("li",null,"The residues from the structure are finally aligned to the to the selected transcript's protein sequence representation, and this creates a mapping from the reference genome coordinates to positions in the 3-D structure"),Ae.default.createElement("li",null,"Finally the molstar panel is opened, and this contains many specialized features features, plus additional mouseover and selection features supplied by the plugin to connect mouse click actions and mouse hover with coordinates on the linear genome view"))),Ae.default.createElement(Xl,null,"If you run into challenges with this workflow e.g. your transcripts are not being found in UniProt then you can use the Manual import form, or contact colin.diesh@gmail.com for troubleshooting")),Ae.default.createElement(nt.Divider,null),Ae.default.createElement(nt.DialogActions,null,Ae.default.createElement(nt.Button,{onClick:e,color:"primary"},"Close")))}var Ae,Ql,nt,op=S(()=>{"use strict";Ae=p(x()),Ql=p(Ge()),nt=p(E())});var wi=V((w0,dp)=>{dp.exports=JBrowseExports["@jbrowse/core/pluggableElementTypes"]});var fp=V((x0,gp)=>{gp.exports=JBrowseExports["@jbrowse/core/util/types/mst"]});var Ho=V((S0,hp)=>{hp.exports=JBrowseExports["mobx-state-tree"]});async function wp({plugin:e,colorScheme:t}){let{structures:o}=e.managers.structure.hierarchy.current;for(let n of o)await e.managers.structure.component.updateRepresentationsTheme(n.components,{color:t})}var wo,yp,Si=S(()=>{"use strict";wo=[{value:"default",label:"Default (element/chain)"},{value:"plddt-confidence",label:"pLDDT confidence (AlphaFold)"},{value:"chain-id",label:"Chain"},{value:"secondary-structure",label:"Secondary structure"},{value:"hydrophobicity",label:"Hydrophobicity (Kyte-Doolittle)"},{value:"residue-name",label:"Residue type"},{value:"uncertainty",label:"B-factor / uncertainty"},{value:"molecule-type",label:"Molecule type"}],yp=wo.map(e=>e.value)});function Ti(e){e.managers.interactivity.lociHighlights.clearHighlights(),e.managers.interactivity.lociSelects.deselectAll()}function Pi(e,t,o){o==="highlight"?(e.managers.interactivity.lociHighlights.clearHighlights(),e.managers.interactivity.lociHighlights.highlight({loci:t})):(e.managers.interactivity.lociSelects.deselectAll(),e.managers.interactivity.lociSelects.select({loci:t}))}async function Tp({structure:e,residues:t,plugin:o,mode:n}){if(n==="clear"||t.length===0){Ti(o);return}let{StructureSelection:r,Script:i}=await ce(),s=i.getStructureSelection(a=>a.struct.generator.atomGroups({"residue-test":a.core.logic.or(t.map(u=>a.core.rel.eq([a.struct.atomProperty.macromolecular.label_seq_id(),u]))),"group-by":a.struct.atomProperty.macromolecular.residueKey()}),e),l=r.toLociWithSourceUnits(s);Pi(o,l,n)}async function Ai({structure:e,startResidue:t,endResidue:o,plugin:n,mode:r}){if(r==="clear"){Ti(n);return}let{StructureSelection:i,Script:s}=await ce(),l=s.getStructureSelection(u=>u.struct.generator.atomGroups({"residue-test":u.core.logic.and([u.core.rel.gre([u.struct.atomProperty.macromolecular.label_seq_id(),t]),u.core.rel.lte([u.struct.atomProperty.macromolecular.label_seq_id(),o])]),"group-by":u.struct.atomProperty.macromolecular.residueKey()}),e),a=i.toLociWithSourceUnits(l);Pi(n,a,r)}async function Pp({structure:e,selectedResidue:t,plugin:o,mode:n}){if(n==="clear"){Ti(o);return}let{StructureSelection:r}=await ce(),i=await ls({structure:e,selectedResidue:t+1}),s=r.toLociWithSourceUnits(i);Pi(o,s,n)}var ki=S(()=>{"use strict";Vt();Bt()});var Ap,kp,Cp,Mp,mt=S(()=>{"use strict";Ap="rgba(255, 105, 180, 0.5)",kp="2px solid #333",Cp="1px solid black",Mp="#999"});async function Mi({structure:e,startResidue:t,endResidue:o,plugin:n}){await Ai({structure:e,startResidue:t,endResidue:o,plugin:n,mode:"highlight"})}async function Ep({structure:e,startResidue:t,endResidue:o,plugin:n}){await Ai({structure:e,startResidue:t,endResidue:o,plugin:n,mode:"select"})}var Ii=S(()=>{"use strict";ki()});function _n({model:e,structureSeqPos:t}){let{genomeToTranscriptSeqMapping:o,pairwiseAlignment:n,structureSeqToTranscriptSeqPosition:r}=e;if(!o||!n)return;let{p2g:i,strand:s}=o,l=r?.[t];if(l!==void 0)return $o(i,l,s)}function Fi({model:e,structureSeqPos:t,structureSeqEndPos:o}){let n,r;for(let i=t;i<o;i++){let s=_n({structureSeqPos:i,model:e});if(s){let[l,a]=s;(n===void 0||l<n)&&(n=l),(r===void 0||a>r)&&(r=a)}}if(n!==void 0&&r!==void 0)return[n,r]}async function Fd({model:e,structureSeqPos:t,structureSeqEndPos:o,zoomToBaseLevel:n}){let r=(0,Bp.getSession)(e),{connectedView:i,genomeToTranscriptSeqMapping:s}=e;if(!s||!i)return;let{strand:l,refName:a}=s,u=i.assemblyNames[0];if(!u)return;let m=o!==void 0?Fi({structureSeqPos:t,structureSeqEndPos:o,model:e}):_n({structureSeqPos:t,model:e});if(!m)return;let[d,c]=m;if(n)await i.navToLocString(`${a}:${d}-${c}${l===-1?"[rev]":""}`,void 0,.2);else{let{assemblyManager:w}=r,f=w.get(u)?.getCanonicalRefName(a)??a;i.centerAt(d,f)}}async function Go({model:e,structureSeqPos:t,structureSeqEndPos:o}){e.setClickedStructureRange({start:t,end:o??t+1}),await Fd({model:e,structureSeqPos:t,structureSeqEndPos:o,zoomToBaseLevel:e.zoomToBaseLevel})}var Bp,Ei=S(()=>{"use strict";Bp=p(ee());Yo()});function Up(e){return Array.from(e,t=>Ed[t])}function Gp(e){return e<0?"#cccccc":e<=50?"#ff7d45":e<=70?"#ffdb13":e<=90?"#65cbf3":"#0053d6"}function Op(e){let t=Math.max(0,Math.min(1,(e-Hp)/(Ld-Hp))),o=Math.round(51+179*t),n=Math.round(102+38*t),r=Math.round(204+-164*t);return`rgb(${o}, ${n}, ${r})`}function Li(e,t){return t?e.flatMap((o,n)=>{let r=t[n];return o!==void 0&&r!==void 0?[{col:r,value:o}]:[]}):[]}var Ed,Hp,Ld,qi=S(()=>{"use strict";Ed={I:4.5,V:4.2,L:3.8,F:2.8,C:2.5,M:1.9,A:1.8,G:-.4,T:-.7,S:-.8,W:-.9,Y:-1.3,P:-1.6,H:-3.2,E:-3.5,Q:-3.5,D:-3.5,N:-3.5,K:-3.9,R:-4.5},Hp=-4.5,Ld=4.5});var Ne,we,Jp,zd,Kp,$p=S(()=>{"use strict";Ne=p(x()),we=p(E());Ar();Jp=p(_()),zd=(0,Jp.observer)(function({model:t}){let[o,n]=(0,Ne.useState)(""),[r,i]=(0,Ne.useState)(),{showManualAlignmentDialog:s,primaryStructure:l}=t,a=()=>{n(""),i(void 0),t.setShowManualAlignmentDialog(!1)},u=()=>{if(o.trim())try{let m=mn(o.trim());if(!l){i("No structure loaded to apply alignment to");return}l.setAlignment(m),a()}catch(m){i(`Failed to parse alignment: ${m}`)}};return s?Ne.default.createElement(we.Dialog,{open:!0,onClose:a,maxWidth:"md",fullWidth:!0},Ne.default.createElement(we.DialogTitle,null,"Import Manual Alignment"),Ne.default.createElement(we.DialogContent,null,Ne.default.createElement(we.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Paste a pre-computed alignment in Clustal format. The first sequence should be the transcript and the second should be the structure."),Ne.default.createElement(we.TextField,{multiline:!0,rows:12,fullWidth:!0,placeholder:`Example:
4
+ `),o=Wa(t.split(`
5
+ `)[Symbol.iterator]());if(o===void 0)throw new Error("No blocks parsed");let n=o.seqs.map((s,l)=>({id:o.ids[l],seq:s})),{consensus:r}=o,i=n[0];if(!i)throw new Error("No alignments found");if(r.length!==i.seq.length)throw new Error(`Consensus length !== sequence length. Con ${r.length} seq ${i.seq.length}`);if(n.length!==2)throw new Error(`Expected exactly 2 sequences in pairwise alignment, got ${n.length}`);return{consensus:r,alns:n}}var Lr=S(()=>{_a();Fr()});function $a(e,t){e.addTemporaryAssembly?.({name:t,sequence:{type:"ReferenceSequenceTrack",trackId:`${t}-ReferenceSequenceTrack`,sequenceType:"pep",adapter:{type:"UnindexedFastaAdapter",rewriteRefNames:"jexl:split(refName,'|')[1]",fastaLocation:{uri:`https://rest.uniprot.org/uniprotkb/${t}.fasta`}}}})}var Za=S(()=>{"use strict"});async function wc(e){let t=`https://rest.uniprot.org/uniprotkb/${e}.gff`,o=await fetch(t);if(!o.ok)throw new Error(`HTTP ${o.status} fetching ${t}`);let n=await o.text();return[...new Set(n.split(`
6
+ `).filter(r=>!r.startsWith("#")).map(r=>r.trim()).filter(r=>!!r).map(r=>r.split(" ")[2]))]}function xc({session:e,uniprotId:t,featureTypes:o}){o.forEach(n=>{let r=`${t}-${n}`;e.addTrackConf({type:"FeatureTrack",trackId:r,name:n,adapter:{type:"Gff3Adapter",gffLocation:{uri:`https://rest.uniprot.org/uniprotkb/${t}.gff`}},assemblyNames:[t],displays:[{displayId:`${r}-LinearBasicDisplay`,type:"LinearBasicDisplay",jexlFilters:[`get(feature,'type')=='${n}'`]}]})})}function Sc({session:e,uniprotId:t}){e.addTrackConf({type:"FeatureTrack",trackId:`${t}-Antigen`,name:"Antigen",adapter:{type:"Gff3Adapter",gffLocation:{uri:`https://www.ebi.ac.uk/proteins/api/antigen/${t}?format=gff`}},assemblyNames:[t]})}function vc({session:e,uniprotId:t}){e.addTrackConf({type:"FeatureTrack",trackId:`${t}-Variation`,name:"Variation",adapter:{type:"UniProtVariationAdapter",location:{uri:`https://www.ebi.ac.uk/proteins/api/variation/${t}.json`}},assemblyNames:[t]})}function Tc({session:e,uniprotId:t,confidenceUrl:o}){o&&e.addTrackConf({type:"QuantitativeTrack",trackId:`${t}-AlphaFold-confidence`,name:"AlphaFold confidence",adapter:{type:"AlphaFoldConfidenceAdapter",location:{uri:o}},assemblyNames:[t]})}function Pc({session:e,uniprotId:t}){e.addTrackConf({type:"MultiQuantitativeTrack",trackId:`${t}-AlphaMissense-scores`,name:"AlphaMissense scores",assemblyNames:[t],adapter:{type:"AlphaMissensePathogenicityAdapter",location:{uri:`https://alphafold.ebi.ac.uk/files/AF-${t}-F1-aa-substitutions.csv`}},displays:[{type:"MultiLinearWiggleDisplay",displayId:`${t}-AlphaMissense-scores-MultiLinearWiggleDisplay`,defaultRendering:"multirowdensity",renderers:{MultiDensityRenderer:{type:"MultiDensityRenderer",bicolorPivotValue:.5,posColor:"red",negColor:"blue"}}}]})}async function Xa({session:e,uniprotId:t,confidenceUrl:o}){let n=await wc(t);xc({session:e,uniprotId:t,featureTypes:n}),Sc({session:e,uniprotId:t}),vc({session:e,uniprotId:t}),Tc({session:e,uniprotId:t,confidenceUrl:o}),Pc({session:e,uniprotId:t})}var Qa=S(()=>{"use strict"});async function el({session:e,feature:t,selectedTranscript:o,uniprotId:n,confidenceUrl:r,connectedViewId:i}){$a(e,n),await Xa({session:e,uniprotId:n,confidenceUrl:r});let s=e.addView("LinearGenomeView",{type:"LinearGenomeView",displayName:yn("Protein view",t,o,n)});i&&o&&Gt.register({viewId:s.id,connectedViewId:i,feature:o.toJSON(),uniprotId:n}),await s.navToLocString(n,n)}var tl=S(()=>{"use strict";Za();Qa();tn();Je()});function po(e,t=Nr){return`https://alphafold.ebi.ac.uk/files/AF-${e}-F1-model_${t}.cif`}function nl(e,t=Nr){return`https://alphafold.ebi.ac.uk/files/AF-${e}-F1-confidence_${t}.json`}function Ac(e,t=Nr){return`https://alphafold.ebi.ac.uk/files/msa/AF-${e}-F1-msa_${t}.a3m`}function Eo(e){return`https://files.rcsb.org/download/${e}.cif`}function Vr(e){return e.split(" ")[0]}function wn(e){return/AF-([A-Z0-9]+)-F\d+/.exec(Vr(e))?.[1]}function rl(e,t){let o=Vr(e);if(o.startsWith("AF-"))return`https://alphafold.ebi.ac.uk/files/${o}.cif`;if(t==="pdb100"){let n=o.split("_")[0];if(n.length===4)return Eo(n)}}function il(e){let t=Vr(e);if(t.startsWith("AF-"))return`https://alphafold.ebi.ac.uk/files/${t.replace("-model_","-confidence_")}.json`}function yn(e,t,o,n){return[...new Set([e,n,no(t),Ae(o)])].filter(r=>!!r).join(" - ")}function jt({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,url:i,data:s,userProvidedTranscriptSequence:l,alignmentAlgorithm:a,displayName:u,connectedMsaViewId:m,sideBySide:d}){let c={type:"ProteinView",alignmentAlgorithm:a,connectedMsaViewId:m,structures:[{url:i,data:s,userProvidedTranscriptSequence:l??"",feature:n?.toJSON(),connectedViewId:t.id}],displayName:u??yn("Protein view",o,n,r)},y=e.addView("ProteinView",c);return(d??lo())&&gn(e,y.id),y}async function xn({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,confidenceUrl:i}){!r||!(0,ol.isSessionWithAddTracks)(e)||await el({session:e,selectedTranscript:n,feature:o,uniprotId:r,confidenceUrl:i,connectedViewId:t.id})}function qo({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,displayName:i}){if(r)return e.addView("MsaView",{type:"MsaView",displayName:i??yn("MSA view",o,n,r),connectedViewId:t.id,connectedFeature:n?.toJSON(),init:{msaUrl:Ac(r),colorSchemeName:"percent_identity"}})}function Sn(){return window.JBrowsePluginMsaView!==void 0}function sl(e){let{uniprotId:t}=e;if(!t)return;let o=qo(e);return jt({...e,connectedMsaViewId:o?.id})}var ol,Nr,Je=S(()=>{"use strict";ol=p(te());fn();ce();tl();Nr="v6"});var ul=V(pl=>{"use strict";var co=x();function Cc(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Mc=typeof Object.is=="function"?Object.is:Cc,Ic=co.useState,Fc=co.useEffect,Lc=co.useLayoutEffect,Ec=co.useDebugValue;function qc(e,t){var o=t(),n=Ic({inst:{value:o,getSnapshot:t}}),r=n[0].inst,i=n[1];return Lc(function(){r.value=o,r.getSnapshot=t,zr(r)&&i({inst:r})},[e,o,t]),Fc(function(){return zr(r)&&i({inst:r}),e(function(){zr(r)&&i({inst:r})})},[e]),Ec(o),o}function zr(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!Mc(e,o)}catch{return!0}}function Dc(e,t){return t()}var Nc=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Dc:qc;pl.useSyncExternalStore=co.useSyncExternalStore!==void 0?co.useSyncExternalStore:Nc});var cl=V((nb,ml)=>{"use strict";ml.exports=ul()});var Ft={};vt(Ft,{ERROR_REVALIDATE_EVENT:()=>Vc,FOCUS_EVENT:()=>dl,MUTATE_EVENT:()=>fl,RECONNECT_EVENT:()=>gl});var dl,gl,fl,Vc,hl=S(()=>{dl=0,gl=1,fl=2,Vc=3});function vn(e,t){var o,n;if(e===t)return!0;if(e&&t&&(o=e.constructor)===t.constructor){if(o===Date)return e.getTime()===t.getTime();if(o===RegExp)return e.toString()===t.toString();if(o===Array){if((n=e.length)===t.length)for(;n--&&vn(e[n],t[n]););return n===-1}if(!o||typeof e=="object"){n=0;for(o in e)if(bl.call(e,o)&&++n&&!bl.call(t,o)||!(o in t)||!vn(e[o],t[o]))return!1;return Object.keys(t).length===n}}return e!==e&&t!==t}var bl,yl=S(()=>{bl=Object.prototype.hasOwnProperty});async function Ln(...e){let[t,o,n,r]=e,i=$e({populateCache:!0,throwOnError:!0},typeof r=="boolean"?{revalidate:r}:r||{}),s=i.populateCache,l=i.rollbackOnError,a=i.optimisticData,u=c=>typeof l=="function"?l(c):l!==!1,m=i.throwOnError;if(qe(o)){let c=o,y=[],w=t.keys();for(let h of w)!/^\$(inf|sub)\$/.test(h)&&c(t.get(h)._k)&&y.push(h);return Promise.all(y.map(d))}return d(o);async function d(c){let[y]=Vo(c);if(!y)return;let[w,h]=In(t,y),[b,f,g,v]=Ke.get(t),D=()=>{let $=b[y];return(qe(i.revalidate)?i.revalidate(w().data,c):i.revalidate!==!1)&&(delete g[y],delete v[y],$&&$[0])?$[0](2).then(()=>w().data):w().data};if(e.length<3)return D();let T=n,O,z=!1,ve=No();f[y]=[ve,0];let M=!A(a),Te=w(),se=Te.data,me=Te._c,Y=A(me)?se:me;if(M&&(a=qe(a)?a(Y,se):a,h({data:a,_c:Y})),qe(T))try{T=T(Y)}catch($){O=$,z=!0}if(T&&Mn(T))if(T=await T.catch($=>{O=$,z=!0}),ve!==f[y][0]){if(z)throw O;return T}else z&&M&&u(O)&&(s=!0,h({data:Y,_c:le}));if(s&&!z)if(qe(s)){let $=s(T,Y);h({data:$,error:le,_c:le})}else h({data:T,error:le,_c:le});if(f[y][1]=No(),Promise.resolve(D()).then(()=>{h({_c:le})}),z){if(m)throw O;return}return T}}var fe,Ke,Ye,le,go,A,qe,$e,Mn,jr,Tn,$r,fo,An,xl,Sl,In,Rr,Bc,Jr,Kr,Hc,Uc,Gc,vl,Tl,Fn,Lt,Zr,ho,Wr,Yr,Pn,Oc,_r,zc,kn,Vo,jc,No,wl,Xr,Wc,Pl,En,Al,qn,Qr,Cn,ei,ti=S(()=>{"use client";fe=p(x(),1);yl();Ke=new WeakMap,Ye=()=>{},le=Ye(),go=Object,A=e=>e===le,qe=e=>typeof e=="function",$e=(e,t)=>({...e,...t}),Mn=e=>qe(e.then),jr={},Tn={},$r="undefined",fo=typeof window!=$r,An=typeof document!=$r,xl=fo&&"Deno"in window,Sl=()=>fo&&typeof window.requestAnimationFrame!=$r,In=(e,t)=>{let o=Ke.get(e);return[()=>!A(t)&&e.get(t)||jr,n=>{if(!A(t)){let r=e.get(t);t in Tn||(Tn[t]=r),o[5](t,$e(r,n),r||jr)}},o[6],()=>!A(t)&&t in Tn?Tn[t]:!A(t)&&e.get(t)||jr]},Rr=!0,Bc=()=>Rr,[Jr,Kr]=fo&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Ye,Ye],Hc=()=>{let e=An&&document.visibilityState;return A(e)||e!=="hidden"},Uc=e=>(An&&document.addEventListener("visibilitychange",e),Jr("focus",e),()=>{An&&document.removeEventListener("visibilitychange",e),Kr("focus",e)}),Gc=e=>{let t=()=>{Rr=!0,e()},o=()=>{Rr=!1};return Jr("online",t),Jr("offline",o),()=>{Kr("online",t),Kr("offline",o)}},vl={isOnline:Bc,isVisible:Hc},Tl={initFocus:Uc,initReconnect:Gc},Fn=!fe.default.useId,Lt=!fo||xl,Zr=e=>Sl()?window.requestAnimationFrame(e):setTimeout(e,1),ho=Lt?fe.useEffect:fe.useLayoutEffect,Wr=typeof navigator<"u"&&navigator.connection,Yr=!Lt&&Wr&&(["slow-2g","2g"].includes(Wr.effectiveType)||Wr.saveData),Pn=new WeakMap,Oc=e=>go.prototype.toString.call(e),_r=(e,t)=>e===`[object ${t}]`,zc=0,kn=e=>{let t=typeof e,o=Oc(e),n=_r(o,"Date"),r=_r(o,"RegExp"),i=_r(o,"Object"),s,l;if(go(e)===e&&!n&&!r){if(s=Pn.get(e),s)return s;if(s=++zc+"~",Pn.set(e,s),Array.isArray(e)){for(s="@",l=0;l<e.length;l++)s+=kn(e[l])+",";Pn.set(e,s)}if(i){s="#";let a=go.keys(e).sort();for(;!A(l=a.pop());)A(e[l])||(s+=l+":"+kn(e[l])+",");Pn.set(e,s)}}else s=n?e.toJSON():t=="symbol"?e.toString():t=="string"?JSON.stringify(e):""+e;return s},Vo=e=>{if(qe(e))try{e=e()}catch{e=""}let t=e;return e=typeof e=="string"?e:(Array.isArray(e)?e.length:e)?kn(e):"",[e,t]},jc=0,No=()=>++jc;wl=(e,t)=>{for(let o in e)e[o][0]&&e[o][0](t)},Xr=(e,t)=>{if(!Ke.has(e)){let o=$e(Tl,t),n=Object.create(null),r=Ln.bind(le,e),i=Ye,s=Object.create(null),l=(m,d)=>{let c=s[m]||[];return s[m]=c,c.push(d),()=>c.splice(c.indexOf(d),1)},a=(m,d,c)=>{e.set(m,d);let y=s[m];if(y)for(let w of y)w(d,c)},u=()=>{if(!Ke.has(e)&&(Ke.set(e,[n,Object.create(null),Object.create(null),Object.create(null),r,a,l]),!Lt)){let m=o.initFocus(setTimeout.bind(le,wl.bind(le,n,0))),d=o.initReconnect(setTimeout.bind(le,wl.bind(le,n,1)));i=()=>{m&&m(),d&&d(),Ke.delete(e)}}};return u(),[e,r,u,i]}return[e,Ke.get(e)[4]]},Wc=(e,t,o,n,r)=>{let i=o.errorRetryCount,s=r.retryCount,l=~~((Math.random()+.5)*(1<<(s<8?s:8)))*o.errorRetryInterval;!A(i)&&s>i||setTimeout(n,l,r)},Pl=vn,[En,Al]=Xr(new Map),qn=$e({onLoadingSlow:Ye,onSuccess:Ye,onError:Ye,onErrorRetry:Wc,onDiscarded:Ye,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:Yr?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:Yr?5e3:3e3,compare:Pl,isPaused:()=>!1,cache:En,mutate:Al,fallback:{}},vl),Qr=(e,t)=>{let o=$e(e,t);if(t){let{use:n,fallback:r}=e,{use:i,fallback:s}=t;n&&i&&(o.use=n.concat(i)),r&&s&&(o.fallback=$e(r,s))}return o},Cn=(0,fe.createContext)({}),ei=e=>{let{value:t}=e,o=(0,fe.useContext)(Cn),n=qe(t),r=(0,fe.useMemo)(()=>n?t(o):t,[n,o,t]),i=(0,fe.useMemo)(()=>n?r:Qr(o,r),[n,o,r]),s=r&&r.provider,l=(0,fe.useRef)(le);s&&!l.current&&(l.current=Xr(s(i.cache||En),r));let a=l.current;return a&&(i.cache=a[0],i.mutate=a[1]),ho(()=>{if(a)return a[2]&&a[2](),a[3]},[]),(0,fe.createElement)(Cn.Provider,$e(e,{value:i}))}});var kl,Cl=S(()=>{kl="$inf$"});var Ml=S(()=>{});var bo,Il,_c,Rc,Jc,Kc,Yc,$c,Fl,Ll,El=S(()=>{ti();ti();hl();Cl();bo=p(x(),1);Ml();Il=fo&&window.__SWR_DEVTOOLS_USE__,_c=Il?window.__SWR_DEVTOOLS_USE__:[],Rc=()=>{Il&&(window.__SWR_DEVTOOLS_REACT__=bo.default)},Jc=e=>qe(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(e[1]===null?e[2]:e[1])||{}],Kc=()=>{let e=(0,bo.useContext)(Cn);return(0,bo.useMemo)(()=>$e(qn,e),[e])},Yc=e=>(t,o,n)=>e(t,o&&((...i)=>{let[s]=Vo(t),[,,,l]=Ke.get(En);if(s.startsWith(kl))return o(...i);let a=l[s];return A(a)?o(...i):(delete l[s],a)}),n),$c=_c.concat(Yc),Fl=e=>function(...o){let n=Kc(),[r,i,s]=Jc(o),l=Qr(n,s),a=e,{use:u}=l,m=(u||[]).concat($c);for(let d=m.length;d--;)a=m[d](a);return a(r,i||l.fetcher||null,l)},Ll=(e,t,o)=>{let n=t[e]||(t[e]=[]);return n.push(o),()=>{let r=n.indexOf(o);r>=0&&(n[r]=n[n.length-1],n.pop())}};Rc()});var pe,ri,Zc,gb,oi,ni,ql,Xc,Qc,fb,rt,yo=S(()=>{pe=p(x(),1),ri=p(cl(),1);El();Zc=()=>{},gb=Zc(),oi=pe.default.use||(e=>{switch(e.status){case"pending":throw e;case"fulfilled":return e.value;case"rejected":throw e.reason;default:throw e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e}}),ni={dedupe:!0},ql=Promise.resolve(le),Xc=()=>Ye,Qc=(e,t,o)=>{let{cache:n,compare:r,suspense:i,fallbackData:s,revalidateOnMount:l,revalidateIfStale:a,refreshInterval:u,refreshWhenHidden:m,refreshWhenOffline:d,keepPreviousData:c,strictServerPrefetchWarning:y}=o,[w,h,b,f]=Ke.get(n),[g,v]=Vo(e),D=(0,pe.useRef)(!1),T=(0,pe.useRef)(!1),O=(0,pe.useRef)(g),z=(0,pe.useRef)(t),ve=(0,pe.useRef)(o),M=()=>ve.current,Te=()=>M().isVisible()&&M().isOnline(),[se,me,Y,$]=In(n,g),Pe=(0,pe.useRef)({}).current,Be=A(s)?A(o.fallback)?le:o.fallback[g]:s,lt=(N,X)=>{for(let Q in Pe){let ee=Q;if(ee==="data"){if(!r(N[ee],X[ee])&&(!A(N[ee])||!r(Qt,X[ee])))return!1}else if(X[ee]!==N[ee])return!1}return!0},_e=!D.current,Ie=(0,pe.useMemo)(()=>{let N=se(),X=$(),Q=ae=>{let Re=$e(ae);return delete Re._k,(()=>{if(!g||!t||M().isPaused())return!1;if(_e&&!A(l))return l;let Ao=A(Be)?Re.data:Be;return i?A(Ao)||a:A(Ao)||a})()?{isValidating:!0,isLoading:!0,...Re}:Re},ee=Q(N),et=N===X?ee:Q(X),Ue=ee;return[()=>{let ae=Q(se());return lt(ae,Ue)?(Ue.data=ae.data,Ue.isLoading=ae.isLoading,Ue.isValidating=ae.isValidating,Ue.error=ae.error,Ue):(Ue=ae,ae)},()=>et]},[n,g]),He=(0,ri.useSyncExternalStore)((0,pe.useCallback)(N=>Y(g,(X,Q)=>{lt(Q,X)||N()}),[n,g]),Ie[0],Ie[1]),sr=w[g]&&w[g].length>0,wt=He.data,pt=A(wt)?Be&&Mn(Be)?oi(Be):Be:wt,Zt=He.error,Xt=(0,pe.useRef)(pt),Qt=c?A(wt)?A(Xt.current)?pt:Xt.current:wt:pt,ut=g&&A(pt),Bt=(0,pe.useRef)(null);!Lt&&(0,ri.useSyncExternalStore)(Xc,()=>(Bt.current=!1,Bt),()=>(Bt.current=!0,Bt));let ar=Bt.current;y&&ar&&!i&&ut&&console.warn(`Missing pre-initiated data for serialized key "${g}" during server-side rendering. Data fetching should be initiated on the server and provided to SWR via fallback data. You can set "strictServerPrefetchWarning: false" to disable this warning.`);let xt=!g||!t||M().isPaused()||sr&&!A(Zt)?!1:_e&&!A(l)?l:i?A(pt)?!1:a:A(pt)||a,eo=_e&&xt,lr=A(He.isValidating)?eo:He.isValidating,Yo=A(He.isLoading)?eo:He.isLoading,St=(0,pe.useCallback)(async N=>{let X=z.current;if(!g||!X||T.current||M().isPaused())return!1;let Q,ee,et=!0,Ue=N||{},ae=!b[g]||!Ue.dedupe,Re=()=>Fn?!T.current&&g===O.current&&D.current:g===O.current,Po={isValidating:!1,isLoading:!1},Ao=()=>{me(Po)},Qi=()=>{let Ge=b[g];Ge&&Ge[1]===ee&&delete b[g]},es={isValidating:!0};A(se().data)&&(es.isLoading=!0);try{if(ae&&(me(es),o.loadingTimeout&&A(se().data)&&setTimeout(()=>{et&&Re()&&M().onLoadingSlow(g,o)},o.loadingTimeout),b[g]=[X(v),No()]),[Q,ee]=b[g],Q=await Q,ae&&setTimeout(Qi,o.dedupingInterval),!b[g]||b[g][1]!==ee)return ae&&Re()&&M().onDiscarded(g),!1;Po.error=le;let Ge=h[g];if(!A(Ge)&&(ee<=Ge[0]||ee<=Ge[1]||Ge[1]===0))return Ao(),ae&&Re()&&M().onDiscarded(g),!1;let mt=se().data;Po.data=r(mt,Q)?mt:Q,ae&&Re()&&M().onSuccess(Q,g,o)}catch(Ge){Qi();let mt=M(),{shouldRetryOnError:ur}=mt;mt.isPaused()||(Po.error=Ge,ae&&Re()&&(mt.onError(Ge,g,mt),(ur===!0||qe(ur)&&ur(Ge))&&(!M().revalidateOnFocus||!M().revalidateOnReconnect||Te())&&mt.onErrorRetry(Ge,g,mt,jm=>{let mr=w[g];mr&&mr[0]&&mr[0](Ft.ERROR_REVALIDATE_EVENT,jm)},{retryCount:(Ue.retryCount||0)+1,dedupe:!0})))}return et=!1,Ao(),!0},[g,n]),pr=(0,pe.useCallback)((...N)=>Ln(n,O.current,...N),[]);if(ho(()=>{z.current=t,ve.current=o,A(wt)||(Xt.current=wt)}),ho(()=>{if(!g)return;let N=St.bind(le,ni),X=0;M().revalidateOnFocus&&(X=Date.now()+M().focusThrottleInterval);let ee=Ll(g,w,(et,Ue={})=>{if(et==Ft.FOCUS_EVENT){let ae=Date.now();M().revalidateOnFocus&&ae>X&&Te()&&(X=ae+M().focusThrottleInterval,N())}else if(et==Ft.RECONNECT_EVENT)M().revalidateOnReconnect&&Te()&&N();else{if(et==Ft.MUTATE_EVENT)return St();if(et==Ft.ERROR_REVALIDATE_EVENT)return St(Ue)}});return T.current=!1,O.current=g,D.current=!0,me({_k:v}),xt&&(b[g]||(A(pt)||Lt?N():Zr(N))),()=>{T.current=!0,ee()}},[g]),ho(()=>{let N;function X(){let ee=qe(u)?u(se().data):u;ee&&N!==-1&&(N=setTimeout(Q,ee))}function Q(){!se().error&&(m||M().isVisible())&&(d||M().isOnline())?St(ni).then(X):X()}return X(),()=>{N&&(clearTimeout(N),N=-1)}},[u,m,d,g]),(0,pe.useDebugValue)(Qt),i){if(!Fn&&Lt&&ut)throw new Error("Fallback data is required when using Suspense in SSR.");ut&&(z.current=t,ve.current=o,T.current=!1);let N=f[g],X=!A(N)&&ut?pr(N):ql;if(oi(X),!A(Zt)&&ut)throw Zt;let Q=ut?St(ni):ql;!A(Qt)&&ut&&(Q.status="fulfilled",Q.value=!0),oi(Q)}return{mutate:pr,get data(){return Pe.data=!0,Qt},get error(){return Pe.error=!0,Zt},get isValidating(){return Pe.isValidating=!0,lr},get isLoading(){return Pe.isLoading=!0,Yo}}},fb=go.defineProperty(ei,"defaultValue",{value:qn}),rt=Fl(Qc)});var ip,Wn,wi=S(()=>{"use client";Ct();ip=p(Mt(),1),Wn=(0,ke.createSvgIcon)((0,ip.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 17h-2v-2h2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25"}),"Help")});var pp={};vt(pp,{default:()=>lp});function sp({children:e}){return Me.default.createElement(st.Typography,{style:{margin:4}},e)}function lp({handleClose:e}){return Me.default.createElement(ap.Dialog,{open:!0,maxWidth:"lg",onClose:e,title:"Help"},Me.default.createElement(st.DialogContent,null,Me.default.createElement(sp,null,"The procedure for the protein lookup is as follows:",Me.default.createElement("ul",null,Me.default.createElement("li",null,"(Automatic lookup) Searches UniProt for the transcript ID or gene name to retrieve the UniProt ID, which is then used to lookup the structure in AlphaFoldDB"),Me.default.createElement("li",null,"(Manual) Allows you to choose your own structure file from your local machine (e.g. a PDB file predicted by e.g. ColabFold) or supply a specific URL"),Me.default.createElement("li",null,"The residues from the structure are downloaded, and then you can choose the transcript isoform from the selected gene that best represents the structure. Asterisks are displayed if there is an exact sequence match"),Me.default.createElement("li",null,"The residues from the structure are finally aligned to the to the selected transcript's protein sequence representation, and this creates a mapping from the reference genome coordinates to positions in the 3-D structure"),Me.default.createElement("li",null,"Finally the molstar panel is opened, and this contains many specialized features features, plus additional mouseover and selection features supplied by the plugin to connect mouse click actions and mouse hover with coordinates on the linear genome view"))),Me.default.createElement(sp,null,"If you run into challenges with this workflow e.g. your transcripts are not being found in UniProt then you can use the Manual import form, or contact colin.diesh@gmail.com for troubleshooting")),Me.default.createElement(st.Divider,null),Me.default.createElement(st.DialogActions,null,Me.default.createElement(st.Button,{onClick:e,color:"primary"},"Close")))}var Me,ap,st,up=S(()=>{"use strict";Me=p(x()),ap=p(Oe()),st=p(I())});var Ai=V((N0,Sp)=>{Sp.exports=JBrowseExports["@jbrowse/core/pluggableElementTypes"]});var Tp=V((V0,vp)=>{vp.exports=JBrowseExports["@jbrowse/core/util/types/mst"]});var zo=V((B0,Pp)=>{Pp.exports=JBrowseExports["mobx-state-tree"]});async function Cp({plugin:e,colorScheme:t}){let{structures:o}=e.managers.structure.hierarchy.current;for(let n of o)await e.managers.structure.component.updateRepresentationsTheme(n.components,{color:t})}var To,kp,Ci=S(()=>{"use strict";To=[{value:"default",label:"Default (element/chain)"},{value:"plddt-confidence",label:"pLDDT confidence (AlphaFold)"},{value:"chain-id",label:"Chain"},{value:"secondary-structure",label:"Secondary structure"},{value:"hydrophobicity",label:"Hydrophobicity (Kyte-Doolittle)"},{value:"residue-name",label:"Residue type"},{value:"uncertainty",label:"B-factor / uncertainty"},{value:"molecule-type",label:"Molecule type"}],kp=To.map(e=>e.value)});function Ii(e){e.managers.interactivity.lociHighlights.clearHighlights(),e.managers.interactivity.lociSelects.deselectAll()}function Fi(e,t,o){o==="highlight"?(e.managers.interactivity.lociHighlights.clearHighlights(),e.managers.interactivity.lociHighlights.highlight({loci:t})):(e.managers.interactivity.lociSelects.deselectAll(),e.managers.interactivity.lociSelects.select({loci:t}))}async function Lp({structure:e,residues:t,plugin:o,mode:n}){if(n==="clear"||t.length===0){Ii(o);return}let{StructureSelection:r,Script:i}=await ge(),s=i.getStructureSelection(a=>a.struct.generator.atomGroups({"residue-test":a.core.logic.or(t.map(u=>a.core.rel.eq([a.struct.atomProperty.macromolecular.label_seq_id(),u]))),"group-by":a.struct.atomProperty.macromolecular.residueKey()}),e),l=r.toLociWithSourceUnits(s);Fi(o,l,n)}async function Li({structure:e,startResidue:t,endResidue:o,plugin:n,mode:r}){if(r==="clear"){Ii(n);return}let{StructureSelection:i,Script:s}=await ge(),l=s.getStructureSelection(u=>u.struct.generator.atomGroups({"residue-test":u.core.logic.and([u.core.rel.gre([u.struct.atomProperty.macromolecular.label_seq_id(),t]),u.core.rel.lte([u.struct.atomProperty.macromolecular.label_seq_id(),o])]),"group-by":u.struct.atomProperty.macromolecular.residueKey()}),e),a=i.toLociWithSourceUnits(l);Fi(n,a,r)}async function Ep({structure:e,selectedResidue:t,plugin:o,mode:n}){if(n==="clear"){Ii(o);return}let{StructureSelection:r}=await ge(),i=await gs({structure:e,selectedResidue:t+1}),s=r.toLociWithSourceUnits(i);Fi(o,s,n)}var Ei=S(()=>{"use strict";Ht();Ut()});var qp,Dp,Np,Vp,gt=S(()=>{"use strict";qp="rgba(255, 105, 180, 0.5)",Dp="2px solid #333",Np="1px solid black",Vp="#999"});async function Di({structure:e,startResidue:t,endResidue:o,plugin:n}){await Li({structure:e,startResidue:t,endResidue:o,plugin:n,mode:"highlight"})}async function Up({structure:e,startResidue:t,endResidue:o,plugin:n}){await Li({structure:e,startResidue:t,endResidue:o,plugin:n,mode:"select"})}var Ni=S(()=>{"use strict";Ei()});function $n({model:e,structureSeqPos:t}){let{genomeToTranscriptSeqMapping:o,pairwiseAlignment:n,structureSeqToTranscriptSeqPosition:r}=e;if(!o||!n)return;let{p2g:i,strand:s}=o,l=r?.[t];if(l!==void 0)return Qo(i,l,s)}function Vi({model:e,structureSeqPos:t,structureSeqEndPos:o}){let n,r;for(let i=t;i<o;i++){let s=$n({structureSeqPos:i,model:e});if(s){let[l,a]=s;(n===void 0||l<n)&&(n=l),(r===void 0||a>r)&&(r=a)}}if(n!==void 0&&r!==void 0)return[n,r]}async function Ud({model:e,structureSeqPos:t,structureSeqEndPos:o,zoomToBaseLevel:n}){let r=(0,_p.getSession)(e),{connectedView:i,genomeToTranscriptSeqMapping:s}=e;if(!s||!i)return;let{strand:l,refName:a}=s,u=i.assemblyNames[0];if(!u)return;let m=o!==void 0?Vi({structureSeqPos:t,structureSeqEndPos:o,model:e}):$n({structureSeqPos:t,model:e});if(!m)return;let[d,c]=m;if(n)await i.navToLocString(`${a}:${d}-${c}${l===-1?"[rev]":""}`,void 0,.2);else{let{assemblyManager:y}=r,h=y.get(u)?.getCanonicalRefName(a)??a;i.centerAt(d,h)}}async function Wo({model:e,structureSeqPos:t,structureSeqEndPos:o}){e.setClickedStructureRange({start:t,end:o??t+1}),await Ud({model:e,structureSeqPos:t,structureSeqEndPos:o,zoomToBaseLevel:e.zoomToBaseLevel})}var _p,Bi=S(()=>{"use strict";_p=p(te());en()});function Jp(e){return Array.from(e,t=>Gd[t])}function Kp(e){return e<0?"#cccccc":e<=50?"#ff7d45":e<=70?"#ffdb13":e<=90?"#65cbf3":"#0053d6"}function Yp(e){let t=Math.max(0,Math.min(1,(e-Rp)/(Od-Rp))),o=Math.round(51+179*t),n=Math.round(102+38*t),r=Math.round(204+-164*t);return`rgb(${o}, ${n}, ${r})`}function Hi(e,t){return t?e.flatMap((o,n)=>{let r=t[n];return o!==void 0&&r!==void 0?[{col:r,value:o}]:[]}):[]}var Gd,Rp,Od,Ui=S(()=>{"use strict";Gd={I:4.5,V:4.2,L:3.8,F:2.8,C:2.5,M:1.9,A:1.8,G:-.4,T:-.7,S:-.8,W:-.9,Y:-1.3,P:-1.6,H:-3.2,E:-3.5,Q:-3.5,D:-3.5,N:-3.5,K:-3.9,R:-4.5},Rp=-4.5,Od=4.5});var Ve,Se,tu,Zd,ou,nu=S(()=>{"use strict";Ve=p(x()),Se=p(I());Lr();tu=p(_()),Zd=(0,tu.observer)(function({model:t}){let[o,n]=(0,Ve.useState)(""),[r,i]=(0,Ve.useState)(),{showManualAlignmentDialog:s,primaryStructure:l}=t,a=()=>{n(""),i(void 0),t.setShowManualAlignmentDialog(!1)},u=()=>{if(o.trim())try{let m=hn(o.trim());if(!l){i("No structure loaded to apply alignment to");return}l.setAlignment(m),a()}catch(m){i(`Failed to parse alignment: ${m}`)}};return s?Ve.default.createElement(Se.Dialog,{open:!0,onClose:a,maxWidth:"md",fullWidth:!0},Ve.default.createElement(Se.DialogTitle,null,"Import Manual Alignment"),Ve.default.createElement(Se.DialogContent,null,Ve.default.createElement(Se.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Paste a pre-computed alignment in Clustal format. The first sequence should be the transcript and the second should be the structure."),Ve.default.createElement(Se.TextField,{multiline:!0,rows:12,fullWidth:!0,placeholder:`Example:
7
7
  transcript MKAAYLSMFGKEDHKPFGDDEVELFRAVPGLKLKIAG
8
8
  |||||||||||||||||||||||||||||||||||||
9
- structure MKAAYLSMFGKEDHKPFGDDEVELFRAVPGLKLKIAG`,value:o,onChange:m=>{n(m.target.value),i(void 0)},slotProps:{htmlInput:{style:{fontFamily:"monospace",fontSize:12}}}}),r?Ne.default.createElement(we.Typography,{color:"error",variant:"body2",sx:{mt:1}},r):null),Ne.default.createElement(we.DialogActions,null,Ne.default.createElement(we.Button,{onClick:a},"Cancel"),Ne.default.createElement(we.Button,{onClick:u,variant:"contained",color:"primary",disabled:!o.trim()},"Apply Alignment"))):null}),Kp=zd});var Yp,Zp,Xp=S(()=>{"use client";Pt();Yp=p(At(),1),Zp=(0,ve.createSvgIcon)((0,Yp.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune")});var eu=V((kw,Qp)=>{Qp.exports=JBrowseExports["@mui/material/Checkbox"]});var ou=V((Cw,tu)=>{tu.exports=JBrowseExports["@mui/material/IconButton"]});var ru=V((Mw,nu)=>{nu.exports=JBrowseExports["@mui/material/ListItemIcon"]});var su=V((Iw,iu)=>{iu.exports=JBrowseExports["@mui/material/ListItemText"]});var lu=V((Fw,au)=>{au.exports=JBrowseExports["@mui/material/Menu"]});var uu=V((Ew,pu)=>{pu.exports=JBrowseExports["@mui/material/MenuItem"]});var cu=V((Lw,mu)=>{mu.exports=JBrowseExports["@mui/material/TextField"]});var gu=V((qw,du)=>{du.exports=JBrowseExports["@mui/material/Tooltip"]});var I,fu,F,hu,jd,bu,yu=S(()=>{"use strict";I=p(x()),fu=p(Ge()),F=p(E()),hu=p(_());We();jd=(0,hu.observer)(function({model:t}){let[o,n]=(0,I.useState)(),[r,i]=(0,I.useState)(""),[s,l]=(0,I.useState)(""),[a,u]=(0,I.useState)("pdb"),[m,d]=(0,I.useState)(""),[c,w]=(0,I.useState)(),{showAddStructureDialog:y}=t,f=()=>{n(void 0),i(""),l(""),d(""),w(void 0),t.setShowAddStructureDialog(!1)},b=async()=>{try{let g,v;a==="pdb"&&r?g=Mo(r):a==="uniprot"&&s?g=io(s.toUpperCase()):a==="url"&&m?g=m:a==="file"&&o&&(v=await o.text()),(g!==void 0||v!==void 0)&&(await t.addStructureAndSuperpose({url:g,data:v}),f())}catch(g){console.error(g),w(g)}};if(!y)return null;let h=a==="url"&&m!==""||a==="file"&&o!==void 0||a==="pdb"&&r!==""||a==="uniprot"&&s!=="";return I.default.createElement(F.Dialog,{open:!0,onClose:f,maxWidth:"sm",fullWidth:!0},I.default.createElement(F.DialogTitle,null,"Add Structure"),I.default.createElement(F.DialogContent,null,c?I.default.createElement(fu.ErrorMessage,{error:c}):null,I.default.createElement(F.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Add another structure to superpose on the existing structure(s)."),I.default.createElement(F.FormControl,{component:"fieldset",sx:{mb:2}},I.default.createElement(F.RadioGroup,{value:a,onChange:g=>{u(g.target.value)}},I.default.createElement(F.FormControlLabel,{value:"pdb",control:I.default.createElement(F.Radio,null),label:"PDB ID"}),I.default.createElement(F.FormControlLabel,{value:"uniprot",control:I.default.createElement(F.Radio,null),label:"UniProt ID (AlphaFold)"}),I.default.createElement(F.FormControlLabel,{value:"url",control:I.default.createElement(F.Radio,null),label:"URL"}),I.default.createElement(F.FormControlLabel,{value:"file",control:I.default.createElement(F.Radio,null),label:"File"}))),a==="pdb"?I.default.createElement(F.TextField,{fullWidth:!0,value:r,onChange:g=>{i(g.target.value.toUpperCase())},label:"PDB ID (e.g. 1CRN)",placeholder:"Enter PDB ID",sx:{mb:2}}):null,a==="uniprot"?I.default.createElement(F.TextField,{fullWidth:!0,value:s,onChange:g=>{l(g.target.value.toUpperCase())},label:"UniProt ID (e.g. P04637)",placeholder:"Enter UniProt ID",helperText:"Will fetch the AlphaFold v6 predicted structure",sx:{mb:2}}):null,a==="url"?I.default.createElement(F.TextField,{fullWidth:!0,label:"Structure URL",value:m,onChange:g=>{d(g.target.value)},placeholder:"https://files.rcsb.org/download/1CRN.cif",sx:{mb:2}}):null,a==="file"?I.default.createElement("div",{style:{marginBottom:16}},I.default.createElement(F.Button,{variant:"outlined",component:"label"},o?o.name:"Choose File",I.default.createElement("input",{type:"file",hidden:!0,accept:".pdb,.cif,.mmcif,.ent",onChange:({target:g})=>{let v=g.files?.[0];v&&n(v)}})),o?I.default.createElement(F.Typography,{variant:"body2",sx:{mt:1}},"Selected: ",o.name):null):null,I.default.createElement(F.Typography,{variant:"body2",color:"text.secondary",sx:{mt:1}},"Tip: Structures will be automatically superposed using TM-align. For manual control, use the Mol* controls (\u{1F527} wrench icon).")),I.default.createElement(F.DialogActions,null,I.default.createElement(F.Button,{onClick:f},"Cancel"),I.default.createElement(F.Button,{onClick:()=>{b()},variant:"contained",color:"primary",disabled:!h},"Add Structure")))}),bu=jd});var wu,xu,Wd,Su,vu=S(()=>{"use strict";wu=p(x()),xu=p(_()),Wd=(0,xu.observer)(function({model:t}){let{structures:o}=t,n=o.map(r=>r.hoverString).filter(Boolean).join(" ");return wu.default.createElement("div",{style:{flex:1,minWidth:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontSize:12},title:n},n?`Hover: ${n}`:"\xA0")}),Su=Wd});var Au={};wt(Au,{default:()=>Pu});function Ni({children:e}){return ct.default.createElement(Dt.Typography,{style:{margin:4,marginBottom:12}},e)}function Pu({handleClose:e}){return ct.default.createElement(Tu.Dialog,{open:!0,maxWidth:"lg",onClose:e,title:"Protein alignment"},ct.default.createElement(Dt.DialogContent,null,ct.default.createElement(Ni,null,"This panel shows the computed pairwise alignment of the reference genome sequence to the structure sequence. The structure file (PDB file, mmCIF file, etc) has a stored representation of the e.g. amino acid sequence but the sequence in the structure file can differ from the sequence from the gene on the genome browser"),ct.default.createElement(Ni,null,"In order to resolve this, we align the two sequences together (using EMBOSS needle) to get pairwise alignment of the genome's representation of the protein and the structure file's representation of the protein."),ct.default.createElement(Ni,null,"If you need a 100% fidelity protein, you can do a folding with e.g. AlphaFold to make sure the structure you are using matches exactly the sequence of the transcript")),ct.default.createElement(Dt.DialogActions,null,ct.default.createElement(Dt.Button,{onClick:()=>{e()},variant:"contained",color:"primary"},"Close")))}var ct,Tu,Dt,ku=S(()=>{"use strict";ct=p(x()),Tu=p(Ge()),Dt=p(E())});function Vi({model:e}){return jo.default.createElement(Mu.IconButton,{style:{float:"right"},onClick:()=>{(0,Cu.getSession)(e).queueDialog(t=>[_d,{handleClose:t}])}},jo.default.createElement(Un,null))}var jo,Cu,Mu,_d,Iu=S(()=>{"use strict";jo=p(x()),Cu=p(ee());di();Mu=p(E()),_d=(0,jo.lazy)(()=>Promise.resolve().then(()=>(ku(),Au)))});function Fu(e){return Rd[e]??"#999999"}async function Jd(e){let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status} fetching ${e}`);let o=await t.text(),n=[];for(let r of o.split(`
10
- `)){if(r.startsWith("#")||!r.trim())continue;let i=r.split(" ");if(i.length<9)continue;let s=i[2],l=Number.parseInt(i[3]??"0",10),a=Number.parseInt(i[4]??"0",10),u=i[8]??"",m="",d;for(let c of u.split(";")){let[w,y]=c.split("=");w==="Note"?m=decodeURIComponent(y??""):w==="ID"&&(d=y)}if(s){let c=`${s}-${l}-${a}-${n.length}`;n.push({type:s,start:l,end:a,description:m,id:d,uniqueId:c})}}return n}function Bi(e){let{data:t,error:o,isLoading:n}=tt(e?`https://rest.uniprot.org/uniprotkb/${e}.gff`:null,Jd);return{features:t,error:o,isLoading:n}}var Rd,Hi=S(()=>{"use strict";go();Rd={Domain:"#1f77b4","DNA binding":"#ff7f0e",Region:"#2ca02c","Zinc finger":"#d62728","Coiled coil":"#9467bd",Motif:"#8c564b","Compositional bias":"#e377c2",Repeat:"#7f7f7f",Transmembrane:"#bcbd22",Intramembrane:"#17becf","Topological domain":"#aec7e8",Signal:"#ffbb78","Signal peptide":"#ffbb78",Propeptide:"#98df8a","Transit peptide":"#ff9896",Chain:"#c5b0d5","Disulfide bond":"#c49c94","Active site":"#f7b6d2","Binding site":"#c7c7c7",Site:"#dbdb8d","Modified residue":"#9edae5",Glycosylation:"#393b79",Lipidation:"#637939","Cross-link":"#8c6d31","Alternative sequence":"#e7969c","Natural variant":"#de9ed6",Mutagenesis:"#ad494a","Sequence conflict":"#b5cf6b",Helix:"#e7ba52","Beta strand":"#6b6ecf",Turn:"#d6616b","Initiator methionine":"#ce6dbd",Peptide:"#6baed6","Calcium binding":"#fd8d3c","Nucleotide binding":"#74c476"}});function Kd(e,t){let o=t?.[e.start-1],n=t?.[e.end-1];return o!==void 0&&n!==void 0?{start:o,end:n}:void 0}function $d(e,t){let o=t?.[e.start-1]??e.start-1,n=t?.[e.end-1]??e.end-1;return{left:o*6,width:Math.max((n-o+1)*6,3)}}function Yd({feature:e}){return Ye.default.createElement("div",null,Ye.default.createElement("div",null,Ye.default.createElement("strong",null,e.type)),Ye.default.createElement("div",null,"Position: ",e.start,"-",e.end),e.description?Ye.default.createElement("div",null,e.description):null)}var Ye,Eu,Lu,Zd,qu,Du=S(()=>{"use strict";Ye=p(x()),Eu=p(E()),Lu=p(_());mt();Ii();Hi();Ei();Zd=(0,Lu.observer)(function({feature:t,model:o}){let[n,r]=(0,Ye.useState)(!1),{molstarPluginContext:i,selectedFeatureId:s,structurePositionToAlignmentMap:l}=o,a=s===t.uniqueId,u=()=>{r(!0);let f=Kd(t,l);f&&o.setAlignmentHoverRange(f)},m=()=>{r(!1),o.setAlignmentHoverRange(void 0)},d=()=>{let f=o.molstarStructure,b=!a;f&&i&&(b?Ep({structure:f,startResidue:t.start,endResidue:t.end,plugin:i}).catch(h=>{console.error(h),o.setError(h)}):i.managers.interactivity.lociSelects.deselectAll()),b?(o.setSelectedFeatureId(t.uniqueId),Go({model:o,structureSeqPos:t.start-1,structureSeqEndPos:t.end}).catch(h=>{console.error(h),o.setError(h)})):(o.setSelectedFeatureId(void 0),o.setClickedStructureRange(void 0))},{left:c,width:w}=$d(t,l),y=Fu(t.type);return Ye.default.createElement(Eu.Tooltip,{title:Ye.default.createElement(Yd,{feature:t}),followCursor:!0},Ye.default.createElement("div",{onClick:()=>{d()},onMouseEnter:()=>{u()},onMouseLeave:()=>{m()},style:{position:"absolute",left:c,top:0,width:w,height:o.trackHeight,backgroundColor:y,opacity:n||a?.9:.6,cursor:"pointer",borderRadius:2,border:a?kp:n?Cp:"none",boxSizing:"border-box"}}))}),qu=Zd});var Wo,Nu,Vu,Xd,Bu,Hu=S(()=>{"use strict";Wo=p(x()),Nu=p(E()),Vu=p(_());mt();Xd=(0,Vu.observer)(function({type:t,labelWidth:o,model:n}){return Wo.default.createElement(Nu.Tooltip,{title:t,placement:"left"},Wo.default.createElement("div",{style:{height:n.trackHeight+n.trackGap,width:o-4,fontSize:9,fontFamily:"monospace",textAlign:"right",paddingRight:4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",display:"flex",alignItems:"center",justifyContent:"flex-end",gap:2}},Wo.default.createElement("span",{onClick:r=>{r.stopPropagation(),n.hideFeatureType(t)},style:{cursor:"pointer",color:Mp,fontWeight:"bold",fontSize:8,lineHeight:1},title:`Hide ${t} track`},"x"),Wo.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis"}},t)))}),Bu=Xd});var Uu,Gu,Qd,Ou,zu=S(()=>{"use strict";Uu=p(x()),Gu=p(_());mt();Qd=(0,Gu.observer)(function({model:t}){let{alignmentHoverPos:o}=t;return o===void 0?null:Uu.default.createElement("div",{style:{position:"absolute",left:o*6,top:0,bottom:0,width:6,backgroundColor:Ap,pointerEvents:"none",zIndex:10}})}),Ou=Qd});function ju(e,t){return e.filter(o=>!t.has(o))}var dt,Kn,eg,Wu,_u,Ru=S(()=>{"use strict";dt=p(x()),Kn=p(_());mt();Du();Hu();zu();eg=(0,Kn.observer)(function({features:t,model:o,sequenceLength:n}){return dt.default.createElement("div",{style:{position:"relative",height:o.trackHeight,width:n*6,marginBottom:o.trackGap}},t.map(r=>dt.default.createElement(qu,{key:r.uniqueId,feature:r,model:o})),dt.default.createElement(Ou,{model:o}))}),Wu=(0,Kn.observer)(function({data:t,labelWidth:o,model:n}){let{hiddenFeatureTypes:r}=n,i=ju(t.featureTypes,r);return dt.default.createElement(dt.default.Fragment,null,i.map(s=>dt.default.createElement(Bu,{key:s,type:s,labelWidth:o,model:n})))}),_u=(0,Kn.observer)(function({data:t,model:o}){let{hiddenFeatureTypes:n}=o,r=ju(t.featureTypes,n);return dt.default.createElement("div",{onMouseMove:i=>{let s=i.currentTarget.getBoundingClientRect(),l=i.clientX-s.left,a=Math.floor(l/6);a>=0&&a<t.sequenceLength&&o.hoverAlignmentPosition(a)},onMouseLeave:()=>{o.setHoveredPosition(void 0)}},r.map(i=>dt.default.createElement(eg,{key:i,features:t.groupedFeatures[i],model:o,sequenceLength:t.sequenceLength})))})});var $n,Ju,Ku,tg,Ui,$u=S(()=>{"use strict";$n=p(x()),Ju=p(E()),Ku=p(_());mt();tg=(0,Ku.observer)(function({cells:t,colorFor:o,formatValue:n,sequenceLength:r,model:i}){return $n.default.createElement("div",{style:{position:"relative",height:i.trackHeight,width:r*6,marginBottom:i.trackGap},onMouseMove:s=>{let l=s.currentTarget.getBoundingClientRect(),a=Math.floor((s.clientX-l.left)/6);a>=0&&a<r&&i.hoverAlignmentPosition(a)},onMouseLeave:()=>{i.setHoveredPosition(void 0)}},t.map(s=>$n.default.createElement(Ju.Tooltip,{key:s.col,title:n(s.value),followCursor:!0},$n.default.createElement("div",{style:{position:"absolute",left:s.col*6,top:0,width:6,height:i.trackHeight,backgroundColor:o(s.value)}}))))}),Ui=tg});var Oe,Rt,og,ng,rg,Yu,Zu,ig,Yn,Xu=S(()=>{"use strict";Oe=p(x()),Rt=p(_());mt();og=(0,Rt.observer)(function({str:t}){return t.split("").map((o,n)=>Oe.default.createElement("span",{key:n,style:{position:"absolute",left:n*6,width:6}},o===" "?"\xA0":o))}),ng=(0,Rt.observer)(function({model:t,height:o}){let{showHighlight:n,alignmentMatchSet:r}=t;return!n||!r?null:[...r].map(i=>Oe.default.createElement("span",{key:i,style:{position:"absolute",left:i*6,top:0,width:6,height:o,background:"#33ff19a0",pointerEvents:"none"}}))}),rg=(0,Rt.observer)(function({model:t,strLength:o,height:n}){let{alignmentHoverPos:r}=t;return r!==void 0&&r>=0&&r<o?Oe.default.createElement("span",{style:{position:"absolute",left:r*6,top:0,width:6,height:n,background:"#f698",pointerEvents:"none"}}):null}),Yu=(0,Rt.observer)(function({range:t,strLength:o,background:n,border:r,height:i}){if(!t)return null;let{start:s,end:l}=t,a=Math.max(0,s),u=Math.min(o-1,l);if(a>u)return null;let m=(u-a+1)*6;return Oe.default.createElement("span",{style:{position:"absolute",left:a*6,top:0,width:m,height:i,background:n,border:r,boxSizing:"border-box",pointerEvents:"none"}})}),Zu=(0,Rt.observer)(function({model:t,strLength:o,height:n}){return Oe.default.createElement("div",{style:{position:"absolute",top:0,left:0,width:o*6,height:n,pointerEvents:"none"}},Oe.default.createElement(ng,{model:t,height:n}),Oe.default.createElement(Yu,{range:t.clickAlignmentRange,strLength:o,background:"rgba(0, 120, 255, 0.3)",border:"1px solid rgba(0, 120, 255, 0.6)",height:n}),Oe.default.createElement(Yu,{range:t.alignmentHoverRange,strLength:o,background:"rgba(255, 165, 0, 0.4)",height:n}),Oe.default.createElement(rg,{model:t,strLength:o,height:n}))}),ig=(0,Rt.observer)(function({model:t,str:o}){return Oe.default.createElement("span",{style:{position:"relative",display:"inline-block",width:o.length*6,height:"1em"},onMouseMove:n=>{let r=n.currentTarget.getBoundingClientRect(),i=n.clientX-r.left,s=Math.floor(i/6);s>=0&&s<o.length&&t.hoverAlignmentPosition(s)},onClick:n=>{let r=n.currentTarget.getBoundingClientRect(),i=n.clientX-r.left,s=Math.floor(i/6);s>=0&&s<o.length&&t.clickAlignmentPosition(s)}},Oe.default.createElement(og,{str:o}))}),Yn=ig});function sg(e){let t={};for(let o of e)t[o.type]??=[],t[o.type].push(o);return t}function Gi(e,t){let{features:o,isLoading:n,error:r}=Bi(t),{pairwiseAlignment:i}=e;if(!t||n||r||!o||!i)return{data:void 0,isLoading:n,error:r};let s=i.alns[0].seq.length,l=sg(o);return{data:{featureTypes:Object.keys(l),groupedFeatures:l,sequenceLength:s},isLoading:!1,error:void 0}}var Qu=S(()=>{"use strict";Hi()});function tm({label:e,title:t,height:o}){return k.default.createElement(Jt.Tooltip,{title:t,placement:"left"},k.default.createElement("div",{style:{height:o,fontSize:9,fontFamily:"monospace",textAlign:"right",paddingRight:4,display:"flex",alignItems:"center",justifyContent:"flex-end",overflow:"hidden",whiteSpace:"nowrap"}},e))}var k,Jt,om,nm,ag,rm,im=S(()=>{"use strict";k=p(x()),Jt=p(E()),om=p(Qt()),nm=p(_());mt();Iu();Ru();$u();Xu();Qu();qi();ag=(0,nm.observer)(function({model:t}){let{pairwiseAlignment:o,showHighlight:n,showProteinTracks:r,uniprotId:i,confidenceCells:s,hydrophobicityCells:l}=t,a=(0,k.useRef)(null),{data:u,isLoading:m,error:d}=Gi(t,i);if((0,k.useEffect)(()=>(0,om.autorun)(()=>{let f=a.current;t.autoScrollAlignment&&!t.isMouseInAlignment&&t.alignmentHoverPos!==void 0&&f&&f.scrollTo({left:t.alignmentHoverPos*6-f.clientWidth/2,behavior:"smooth"})}),[t]),!o)return k.default.createElement("div",null,"No pairwiseAlignment");let c=o.alns[0].seq,w=o.alns[1].seq,y=o.consensus;return k.default.createElement("div",null,k.default.createElement(Vi,{model:t}),k.default.createElement(Jt.Typography,null,"Alignment of the protein structure file's sequence with the selected transcript's sequence."," ",n?"Green is the aligned portion":null),k.default.createElement("div",{style:{display:"flex",fontSize:9,fontFamily:"monospace",cursor:"pointer",margin:8,paddingBottom:8},onMouseEnter:()=>{t.setIsMouseInAlignment(!0)},onMouseLeave:()=>{t.setIsMouseInAlignment(!1),t.setHoveredPosition(void 0)}},k.default.createElement("div",{style:{flexShrink:0,width:50,textAlign:"right",paddingRight:4}},k.default.createElement("div",{style:{height:14}},k.default.createElement(Jt.Tooltip,{title:"This is the sequence of the protein from the reference genome transcript"},k.default.createElement("span",null,"GENOME"))),k.default.createElement("div",{style:{height:14}},"\xA0"),k.default.createElement("div",{style:{height:14}},k.default.createElement(Jt.Tooltip,{title:"This is the sequence of the protein from the structure file"},k.default.createElement("span",null,"STRUCT"))),r?m?k.default.createElement("div",{style:{height:14,fontSize:8,color:"#666"}},"Loading..."):d?k.default.createElement(Jt.Tooltip,{title:d instanceof Error?d.message:"Error loading features"},k.default.createElement("div",{style:{height:14,fontSize:8,color:"red"}},"Error")):u?k.default.createElement(Wu,{data:u,labelWidth:50,model:t}):null:null,r&&s.length>0?k.default.createElement(tm,{label:"pLDDT",title:"AlphaFold per-residue confidence (pLDDT)",height:t.trackHeight+t.trackGap}):null,r&&l.length>0?k.default.createElement(tm,{label:"hydro",title:"Kyte-Doolittle hydrophobicity (orange hydrophobic, blue hydrophilic)",height:t.trackHeight+t.trackGap}):null),k.default.createElement("div",{ref:a,style:{overflow:"auto",whiteSpace:"nowrap",flex:1,paddingBottom:10,backgroundColor:"white"}},k.default.createElement("div",{style:{position:"relative"}},k.default.createElement(Zu,{model:t,strLength:c.length,height:42}),k.default.createElement("div",{style:{height:14}},k.default.createElement(Yn,{model:t,str:c})),k.default.createElement("div",{style:{height:14}},k.default.createElement(Yn,{model:t,str:y})),k.default.createElement("div",{style:{height:14}},k.default.createElement(Yn,{model:t,str:w}))),r&&u?k.default.createElement(_u,{data:u,model:t}):null,r&&s.length>0?k.default.createElement(Ui,{cells:s,colorFor:Gp,formatValue:f=>`pLDDT ${f.toFixed(0)}`,sequenceLength:c.length,model:t}):null,r&&l.length>0?k.default.createElement(Ui,{cells:l,colorFor:Op,formatValue:f=>`Kyte-Doolittle ${f.toFixed(1)}`,sequenceLength:c.length,model:t}):null)))}),rm=ag});function pg({checked:e,label:t,onToggle:o}){return O.default.createElement(Oi.default,{onClick:()=>{o()},dense:!0},O.default.createElement(pm.default,null,O.default.createElement(am.default,{checked:e,size:"small",edge:"start",disableRipple:!0})),O.default.createElement(um.default,null,t))}function ug(e){return[{label:"Show alignment",checked:e.showAlignment,onToggle:()=>{e.setShowAlignment(!e.showAlignment)}},{label:"Show features",checked:e.showProteinTracks,onToggle:()=>{e.setShowProteinTracks(!e.showProteinTracks)}},{label:"Auto-scroll features",checked:e.autoScrollAlignment,onToggle:()=>{e.setAutoScrollAlignment(!e.autoScrollAlignment)}},{label:"Compact tracks",checked:e.compactTracks,onToggle:()=>{e.setCompactTracks(!e.compactTracks)}}]}var O,sm,am,lm,pm,um,mm,Oi,cm,dm,Zn,lg,mg,cg,gm,fm=S(()=>{"use strict";O=p(x()),sm=p(Ge());Xp();am=p(eu()),lm=p(ou()),pm=p(ru()),um=p(su()),mm=p(lu()),Oi=p(uu()),cm=p(cu()),dm=p(gu()),Zn=p(_());yu();vu();im();Si();lg=(0,Zn.observer)(function({model:t}){return O.default.createElement(cm.default,{select:!0,size:"small",label:"Color",value:t.colorScheme,onChange:o=>{let n=wo.find(r=>r.value===o.target.value);n&&t.setColorScheme(n.value)},slotProps:{select:{native:!1}},sx:{minWidth:180}},wo.map(o=>O.default.createElement(Oi.default,{key:o.value,value:o.value},o.label)))});mg=(0,Zn.observer)(function({model:t}){let[o,n]=(0,O.useState)(null);return O.default.createElement(O.default.Fragment,null,O.default.createElement(dm.default,{title:"Display settings"},O.default.createElement(lm.default,{size:"small",onClick:r=>{n(r.currentTarget)}},O.default.createElement(Zp,{fontSize:"small"}))),O.default.createElement(mm.default,{anchorEl:o,open:!!o,onClose:()=>{n(null)}},ug(t).map(r=>O.default.createElement(pg,{key:r.label,checked:r.checked,label:r.label,onToggle:r.onToggle}))))}),cg=(0,Zn.observer)(function({model:t}){let{structures:o,showAlignment:n}=t;return O.default.createElement("div",null,O.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},O.default.createElement(Su,{model:t}),O.default.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center",flexShrink:0}},O.default.createElement(lg,{model:t}),O.default.createElement(mg,{model:t}))),n?o.filter(r=>r.pairwiseAlignment||r.alignmentPending).map((r,i)=>O.default.createElement("div",{key:i},r.pairwiseAlignment?O.default.createElement(rm,{model:r}):O.default.createElement(sm.LoadingEllipses,{message:"Loading pairwise alignment"}))):null,O.default.createElement(bu,{model:t}))}),gm=cg});var hm,bm=S(()=>{"use strict";hm=`
9
+ structure MKAAYLSMFGKEDHKPFGDDEVELFRAVPGLKLKIAG`,value:o,onChange:m=>{n(m.target.value),i(void 0)},slotProps:{htmlInput:{style:{fontFamily:"monospace",fontSize:12}}}}),r?Ve.default.createElement(Se.Typography,{color:"error",variant:"body2",sx:{mt:1}},r):null),Ve.default.createElement(Se.DialogActions,null,Ve.default.createElement(Se.Button,{onClick:a},"Cancel"),Ve.default.createElement(Se.Button,{onClick:u,variant:"contained",color:"primary",disabled:!o.trim()},"Apply Alignment"))):null}),ou=Zd});var ru,iu,su=S(()=>{"use client";Ct();ru=p(Mt(),1),iu=(0,ke.createSvgIcon)((0,ru.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune")});var lu=V((zw,au)=>{au.exports=JBrowseExports["@mui/material/Checkbox"]});var uu=V((jw,pu)=>{pu.exports=JBrowseExports["@mui/material/IconButton"]});var cu=V((Ww,mu)=>{mu.exports=JBrowseExports["@mui/material/ListItemIcon"]});var gu=V((_w,du)=>{du.exports=JBrowseExports["@mui/material/ListItemText"]});var hu=V((Rw,fu)=>{fu.exports=JBrowseExports["@mui/material/Menu"]});var yu=V((Jw,bu)=>{bu.exports=JBrowseExports["@mui/material/MenuItem"]});var xu=V((Kw,wu)=>{wu.exports=JBrowseExports["@mui/material/TextField"]});var vu=V((Yw,Su)=>{Su.exports=JBrowseExports["@mui/material/Tooltip"]});var L,Tu,E,Pu,Xd,Au,ku=S(()=>{"use strict";L=p(x()),Tu=p(Oe()),E=p(I()),Pu=p(_());Je();Xd=(0,Pu.observer)(function({model:t}){let[o,n]=(0,L.useState)(),[r,i]=(0,L.useState)(""),[s,l]=(0,L.useState)(""),[a,u]=(0,L.useState)("pdb"),[m,d]=(0,L.useState)(""),[c,y]=(0,L.useState)(),{showAddStructureDialog:w}=t,h=()=>{n(void 0),i(""),l(""),d(""),y(void 0),t.setShowAddStructureDialog(!1)},b=async()=>{try{let g,v;a==="pdb"&&r?g=Eo(r):a==="uniprot"&&s?g=po(s.toUpperCase()):a==="url"&&m?g=m:a==="file"&&o&&(v=await o.text()),(g!==void 0||v!==void 0)&&(await t.addStructureAndSuperpose({url:g,data:v}),h())}catch(g){console.error(g),y(g)}};if(!w)return null;let f=a==="url"&&m!==""||a==="file"&&o!==void 0||a==="pdb"&&r!==""||a==="uniprot"&&s!=="";return L.default.createElement(E.Dialog,{open:!0,onClose:h,maxWidth:"sm",fullWidth:!0},L.default.createElement(E.DialogTitle,null,"Add Structure"),L.default.createElement(E.DialogContent,null,c?L.default.createElement(Tu.ErrorMessage,{error:c}):null,L.default.createElement(E.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Add another structure to superpose on the existing structure(s)."),L.default.createElement(E.FormControl,{component:"fieldset",sx:{mb:2}},L.default.createElement(E.RadioGroup,{value:a,onChange:g=>{u(g.target.value)}},L.default.createElement(E.FormControlLabel,{value:"pdb",control:L.default.createElement(E.Radio,null),label:"PDB ID"}),L.default.createElement(E.FormControlLabel,{value:"uniprot",control:L.default.createElement(E.Radio,null),label:"UniProt ID (AlphaFold)"}),L.default.createElement(E.FormControlLabel,{value:"url",control:L.default.createElement(E.Radio,null),label:"URL"}),L.default.createElement(E.FormControlLabel,{value:"file",control:L.default.createElement(E.Radio,null),label:"File"}))),a==="pdb"?L.default.createElement(E.TextField,{fullWidth:!0,value:r,onChange:g=>{i(g.target.value.toUpperCase())},label:"PDB ID (e.g. 1CRN)",placeholder:"Enter PDB ID",sx:{mb:2}}):null,a==="uniprot"?L.default.createElement(E.TextField,{fullWidth:!0,value:s,onChange:g=>{l(g.target.value.toUpperCase())},label:"UniProt ID (e.g. P04637)",placeholder:"Enter UniProt ID",helperText:"Will fetch the AlphaFold v6 predicted structure",sx:{mb:2}}):null,a==="url"?L.default.createElement(E.TextField,{fullWidth:!0,label:"Structure URL",value:m,onChange:g=>{d(g.target.value)},placeholder:"https://files.rcsb.org/download/1CRN.cif",sx:{mb:2}}):null,a==="file"?L.default.createElement("div",{style:{marginBottom:16}},L.default.createElement(E.Button,{variant:"outlined",component:"label"},o?o.name:"Choose File",L.default.createElement("input",{type:"file",hidden:!0,accept:".pdb,.cif,.mmcif,.ent",onChange:({target:g})=>{let v=g.files?.[0];v&&n(v)}})),o?L.default.createElement(E.Typography,{variant:"body2",sx:{mt:1}},"Selected: ",o.name):null):null,L.default.createElement(E.Typography,{variant:"body2",color:"text.secondary",sx:{mt:1}},"Tip: Structures will be automatically superposed using TM-align. For manual control, use the Mol* controls (\u{1F527} wrench icon).")),L.default.createElement(E.DialogActions,null,L.default.createElement(E.Button,{onClick:h},"Cancel"),L.default.createElement(E.Button,{onClick:()=>{b()},variant:"contained",color:"primary",disabled:!f},"Add Structure")))}),Au=Xd});var Cu,Mu,Qd,Iu,Fu=S(()=>{"use strict";Cu=p(x()),Mu=p(_()),Qd=(0,Mu.observer)(function({model:t}){let{structures:o}=t,n=o.map(r=>r.hoverString).filter(Boolean).join(" ");return Cu.default.createElement("div",{style:{flex:1,minWidth:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontSize:12},title:n},n?`Hover: ${n}`:"\xA0")}),Iu=Qd});var qu={};vt(qu,{default:()=>Eu});function Oi({children:e}){return ft.default.createElement(Vt.Typography,{style:{margin:4,marginBottom:12}},e)}function Eu({handleClose:e}){return ft.default.createElement(Lu.Dialog,{open:!0,maxWidth:"lg",onClose:e,title:"Protein alignment"},ft.default.createElement(Vt.DialogContent,null,ft.default.createElement(Oi,null,"This panel shows the computed pairwise alignment of the reference genome sequence to the structure sequence. The structure file (PDB file, mmCIF file, etc) has a stored representation of the e.g. amino acid sequence but the sequence in the structure file can differ from the sequence from the gene on the genome browser"),ft.default.createElement(Oi,null,"In order to resolve this, we align the two sequences together (using EMBOSS needle) to get pairwise alignment of the genome's representation of the protein and the structure file's representation of the protein."),ft.default.createElement(Oi,null,"If you need a 100% fidelity protein, you can do a folding with e.g. AlphaFold to make sure the structure you are using matches exactly the sequence of the transcript")),ft.default.createElement(Vt.DialogActions,null,ft.default.createElement(Vt.Button,{onClick:()=>{e()},variant:"contained",color:"primary"},"Close")))}var ft,Lu,Vt,Du=S(()=>{"use strict";ft=p(x()),Lu=p(Oe()),Vt=p(I())});function zi({model:e}){return Jo.default.createElement(Vu.IconButton,{style:{float:"right"},onClick:()=>{(0,Nu.getSession)(e).queueDialog(t=>[eg,{handleClose:t}])}},Jo.default.createElement(Wn,null))}var Jo,Nu,Vu,eg,Bu=S(()=>{"use strict";Jo=p(x()),Nu=p(te());wi();Vu=p(I()),eg=(0,Jo.lazy)(()=>Promise.resolve().then(()=>(Du(),qu)))});function Hu(e){return tg[e]??"#999999"}async function og(e){let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status} fetching ${e}`);let o=await t.text(),n=[];for(let r of o.split(`
10
+ `)){if(r.startsWith("#")||!r.trim())continue;let i=r.split(" ");if(i.length<9)continue;let s=i[2],l=Number.parseInt(i[3]??"0",10),a=Number.parseInt(i[4]??"0",10),u=i[8]??"",m="",d;for(let c of u.split(";")){let[y,w]=c.split("=");y==="Note"?m=decodeURIComponent(w??""):y==="ID"&&(d=w)}if(s){let c=`${s}-${l}-${a}-${n.length}`;n.push({type:s,start:l,end:a,description:m,id:d,uniqueId:c})}}return n}function ji(e){let{data:t,error:o,isLoading:n}=rt(e?`https://rest.uniprot.org/uniprotkb/${e}.gff`:null,og);return{features:t,error:o,isLoading:n}}var tg,Wi=S(()=>{"use strict";yo();tg={Domain:"#1f77b4","DNA binding":"#ff7f0e",Region:"#2ca02c","Zinc finger":"#d62728","Coiled coil":"#9467bd",Motif:"#8c564b","Compositional bias":"#e377c2",Repeat:"#7f7f7f",Transmembrane:"#bcbd22",Intramembrane:"#17becf","Topological domain":"#aec7e8",Signal:"#ffbb78","Signal peptide":"#ffbb78",Propeptide:"#98df8a","Transit peptide":"#ff9896",Chain:"#c5b0d5","Disulfide bond":"#c49c94","Active site":"#f7b6d2","Binding site":"#c7c7c7",Site:"#dbdb8d","Modified residue":"#9edae5",Glycosylation:"#393b79",Lipidation:"#637939","Cross-link":"#8c6d31","Alternative sequence":"#e7969c","Natural variant":"#de9ed6",Mutagenesis:"#ad494a","Sequence conflict":"#b5cf6b",Helix:"#e7ba52","Beta strand":"#6b6ecf",Turn:"#d6616b","Initiator methionine":"#ce6dbd",Peptide:"#6baed6","Calcium binding":"#fd8d3c","Nucleotide binding":"#74c476"}});function ng(e,t){let o=t?.[e.start-1],n=t?.[e.end-1];return o!==void 0&&n!==void 0?{start:o,end:n}:void 0}function rg(e,t){let o=t?.[e.start-1]??e.start-1,n=t?.[e.end-1]??e.end-1;return{left:o*6,width:Math.max((n-o+1)*6,3)}}function ig({feature:e}){return Qe.default.createElement("div",null,Qe.default.createElement("div",null,Qe.default.createElement("strong",null,e.type)),Qe.default.createElement("div",null,"Position: ",e.start,"-",e.end),e.description?Qe.default.createElement("div",null,e.description):null)}var Qe,Uu,Gu,sg,Ou,zu=S(()=>{"use strict";Qe=p(x()),Uu=p(I()),Gu=p(_());gt();Ni();Wi();Bi();sg=(0,Gu.observer)(function({feature:t,model:o}){let[n,r]=(0,Qe.useState)(!1),{molstarPluginContext:i,selectedFeatureId:s,structurePositionToAlignmentMap:l}=o,a=s===t.uniqueId,u=()=>{r(!0);let h=ng(t,l);h&&o.setAlignmentHoverRange(h)},m=()=>{r(!1),o.setAlignmentHoverRange(void 0)},d=()=>{let h=o.molstarStructure,b=!a;h&&i&&(b?Up({structure:h,startResidue:t.start,endResidue:t.end,plugin:i}).catch(f=>{console.error(f),o.setError(f)}):i.managers.interactivity.lociSelects.deselectAll()),b?(o.setSelectedFeatureId(t.uniqueId),Wo({model:o,structureSeqPos:t.start-1,structureSeqEndPos:t.end}).catch(f=>{console.error(f),o.setError(f)})):(o.setSelectedFeatureId(void 0),o.setClickedStructureRange(void 0))},{left:c,width:y}=rg(t,l),w=Hu(t.type);return Qe.default.createElement(Uu.Tooltip,{title:Qe.default.createElement(ig,{feature:t}),followCursor:!0},Qe.default.createElement("div",{onClick:()=>{d()},onMouseEnter:()=>{u()},onMouseLeave:()=>{m()},style:{position:"absolute",left:c,top:0,width:y,height:o.trackHeight,backgroundColor:w,opacity:n||a?.9:.6,cursor:"pointer",borderRadius:2,border:a?Dp:n?Np:"none",boxSizing:"border-box"}}))}),Ou=sg});var Ko,ju,Wu,ag,_u,Ru=S(()=>{"use strict";Ko=p(x()),ju=p(I()),Wu=p(_());gt();ag=(0,Wu.observer)(function({type:t,labelWidth:o,model:n}){return Ko.default.createElement(ju.Tooltip,{title:t,placement:"left"},Ko.default.createElement("div",{style:{height:n.trackHeight+n.trackGap,width:o-4,fontSize:9,fontFamily:"monospace",textAlign:"right",paddingRight:4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",display:"flex",alignItems:"center",justifyContent:"flex-end",gap:2}},Ko.default.createElement("span",{onClick:r=>{r.stopPropagation(),n.hideFeatureType(t)},style:{cursor:"pointer",color:Vp,fontWeight:"bold",fontSize:8,lineHeight:1},title:`Hide ${t} track`},"x"),Ko.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis"}},t)))}),_u=ag});var Ju,Ku,lg,Yu,$u=S(()=>{"use strict";Ju=p(x()),Ku=p(_());gt();lg=(0,Ku.observer)(function({model:t}){let{alignmentHoverPos:o}=t;return o===void 0?null:Ju.default.createElement("div",{style:{position:"absolute",left:o*6,top:0,bottom:0,width:6,backgroundColor:qp,pointerEvents:"none",zIndex:10}})}),Yu=lg});function Zu(e,t){return e.filter(o=>!t.has(o))}var ht,Qn,pg,Xu,Qu,em=S(()=>{"use strict";ht=p(x()),Qn=p(_());gt();zu();Ru();$u();pg=(0,Qn.observer)(function({features:t,model:o,sequenceLength:n}){return ht.default.createElement("div",{style:{position:"relative",height:o.trackHeight,width:n*6,marginBottom:o.trackGap}},t.map(r=>ht.default.createElement(Ou,{key:r.uniqueId,feature:r,model:o})),ht.default.createElement(Yu,{model:o}))}),Xu=(0,Qn.observer)(function({data:t,labelWidth:o,model:n}){let{hiddenFeatureTypes:r}=n,i=Zu(t.featureTypes,r);return ht.default.createElement(ht.default.Fragment,null,i.map(s=>ht.default.createElement(_u,{key:s,type:s,labelWidth:o,model:n})))}),Qu=(0,Qn.observer)(function({data:t,model:o}){let{hiddenFeatureTypes:n}=o,r=Zu(t.featureTypes,n);return ht.default.createElement("div",{onMouseMove:i=>{let s=i.currentTarget.getBoundingClientRect(),l=i.clientX-s.left,a=Math.floor(l/6);a>=0&&a<t.sequenceLength&&o.hoverAlignmentPosition(a)},onMouseLeave:()=>{o.setHoveredPosition(void 0)}},r.map(i=>ht.default.createElement(pg,{key:i,features:t.groupedFeatures[i],model:o,sequenceLength:t.sequenceLength})))})});var er,tm,om,ug,_i,nm=S(()=>{"use strict";er=p(x()),tm=p(I()),om=p(_());gt();ug=(0,om.observer)(function({cells:t,colorFor:o,formatValue:n,sequenceLength:r,model:i}){return er.default.createElement("div",{style:{position:"relative",height:i.trackHeight,width:r*6,marginBottom:i.trackGap},onMouseMove:s=>{let l=s.currentTarget.getBoundingClientRect(),a=Math.floor((s.clientX-l.left)/6);a>=0&&a<r&&i.hoverAlignmentPosition(a)},onMouseLeave:()=>{i.setHoveredPosition(void 0)}},t.map(s=>er.default.createElement(tm.Tooltip,{key:s.col,title:n(s.value),followCursor:!0},er.default.createElement("div",{style:{position:"absolute",left:s.col*6,top:0,width:6,height:i.trackHeight,backgroundColor:o(s.value)}}))))}),_i=ug});var We,Kt,mg,cg,dg,rm,im,gg,tr,sm=S(()=>{"use strict";We=p(x()),Kt=p(_());gt();mg=(0,Kt.observer)(function({str:t}){return t.split("").map((o,n)=>We.default.createElement("span",{key:n,style:{position:"absolute",left:n*6,width:6}},o===" "?"\xA0":o))}),cg=(0,Kt.observer)(function({model:t,height:o}){let{showHighlight:n,alignmentMatchSet:r}=t;return!n||!r?null:[...r].map(i=>We.default.createElement("span",{key:i,style:{position:"absolute",left:i*6,top:0,width:6,height:o,background:"#33ff19a0",pointerEvents:"none"}}))}),dg=(0,Kt.observer)(function({model:t,strLength:o,height:n}){let{alignmentHoverPos:r}=t;return r!==void 0&&r>=0&&r<o?We.default.createElement("span",{style:{position:"absolute",left:r*6,top:0,width:6,height:n,background:"#f698",pointerEvents:"none"}}):null}),rm=(0,Kt.observer)(function({range:t,strLength:o,background:n,border:r,height:i}){if(!t)return null;let{start:s,end:l}=t,a=Math.max(0,s),u=Math.min(o-1,l);if(a>u)return null;let m=(u-a+1)*6;return We.default.createElement("span",{style:{position:"absolute",left:a*6,top:0,width:m,height:i,background:n,border:r,boxSizing:"border-box",pointerEvents:"none"}})}),im=(0,Kt.observer)(function({model:t,strLength:o,height:n}){return We.default.createElement("div",{style:{position:"absolute",top:0,left:0,width:o*6,height:n,pointerEvents:"none"}},We.default.createElement(cg,{model:t,height:n}),We.default.createElement(rm,{range:t.clickAlignmentRange,strLength:o,background:"rgba(0, 120, 255, 0.3)",border:"1px solid rgba(0, 120, 255, 0.6)",height:n}),We.default.createElement(rm,{range:t.alignmentHoverRange,strLength:o,background:"rgba(255, 165, 0, 0.4)",height:n}),We.default.createElement(dg,{model:t,strLength:o,height:n}))}),gg=(0,Kt.observer)(function({model:t,str:o}){return We.default.createElement("span",{style:{position:"relative",display:"inline-block",width:o.length*6,height:"1em"},onMouseMove:n=>{let r=n.currentTarget.getBoundingClientRect(),i=n.clientX-r.left,s=Math.floor(i/6);s>=0&&s<o.length&&t.hoverAlignmentPosition(s)},onClick:n=>{let r=n.currentTarget.getBoundingClientRect(),i=n.clientX-r.left,s=Math.floor(i/6);s>=0&&s<o.length&&t.clickAlignmentPosition(s)}},We.default.createElement(mg,{str:o}))}),tr=gg});function fg(e){let t={};for(let o of e)t[o.type]??=[],t[o.type].push(o);return t}function Ri(e,t){let{features:o,isLoading:n,error:r}=ji(t),{pairwiseAlignment:i}=e;if(!t||n||r||!o||!i)return{data:void 0,isLoading:n,error:r};let s=i.alns[0].seq.length,l=fg(o);return{data:{featureTypes:Object.keys(l),groupedFeatures:l,sequenceLength:s},isLoading:!1,error:void 0}}var am=S(()=>{"use strict";Wi()});function pm({label:e,title:t,height:o}){return k.default.createElement(Yt.Tooltip,{title:t,placement:"left"},k.default.createElement("div",{style:{height:o,fontSize:9,fontFamily:"monospace",textAlign:"right",paddingRight:4,display:"flex",alignItems:"center",justifyContent:"flex-end",overflow:"hidden",whiteSpace:"nowrap"}},e))}var k,Yt,um,mm,hg,cm,dm=S(()=>{"use strict";k=p(x()),Yt=p(I()),um=p(to()),mm=p(_());gt();Bu();em();nm();sm();am();Ui();hg=(0,mm.observer)(function({model:t}){let{pairwiseAlignment:o,showHighlight:n,showProteinTracks:r,uniprotId:i,confidenceCells:s,hydrophobicityCells:l}=t,a=(0,k.useRef)(null),{data:u,isLoading:m,error:d}=Ri(t,i);if((0,k.useEffect)(()=>(0,um.autorun)(()=>{let h=a.current;t.autoScrollAlignment&&!t.isMouseInAlignment&&t.alignmentHoverPos!==void 0&&h&&h.scrollTo({left:t.alignmentHoverPos*6-h.clientWidth/2,behavior:"smooth"})}),[t]),!o)return k.default.createElement("div",null,"No pairwiseAlignment");let c=o.alns[0].seq,y=o.alns[1].seq,w=o.consensus;return k.default.createElement("div",null,k.default.createElement(zi,{model:t}),k.default.createElement(Yt.Typography,null,"Alignment of the protein structure file's sequence with the selected transcript's sequence."," ",n?"Green is the aligned portion":null),k.default.createElement("div",{style:{display:"flex",fontSize:9,fontFamily:"monospace",cursor:"pointer",margin:8,paddingBottom:8},onMouseEnter:()=>{t.setIsMouseInAlignment(!0)},onMouseLeave:()=>{t.setIsMouseInAlignment(!1),t.setHoveredPosition(void 0)}},k.default.createElement("div",{style:{flexShrink:0,width:50,textAlign:"right",paddingRight:4}},k.default.createElement("div",{style:{height:14}},k.default.createElement(Yt.Tooltip,{title:"This is the sequence of the protein from the reference genome transcript"},k.default.createElement("span",null,"GENOME"))),k.default.createElement("div",{style:{height:14}},"\xA0"),k.default.createElement("div",{style:{height:14}},k.default.createElement(Yt.Tooltip,{title:"This is the sequence of the protein from the structure file"},k.default.createElement("span",null,"STRUCT"))),r?m?k.default.createElement("div",{style:{height:14,fontSize:8,color:"#666"}},"Loading..."):d?k.default.createElement(Yt.Tooltip,{title:d instanceof Error?d.message:"Error loading features"},k.default.createElement("div",{style:{height:14,fontSize:8,color:"red"}},"Error")):u?k.default.createElement(Xu,{data:u,labelWidth:50,model:t}):null:null,r&&s.length>0?k.default.createElement(pm,{label:"pLDDT",title:"AlphaFold per-residue confidence (pLDDT)",height:t.trackHeight+t.trackGap}):null,r&&l.length>0?k.default.createElement(pm,{label:"hydro",title:"Kyte-Doolittle hydrophobicity (orange hydrophobic, blue hydrophilic)",height:t.trackHeight+t.trackGap}):null),k.default.createElement("div",{ref:a,style:{overflow:"auto",whiteSpace:"nowrap",flex:1,paddingBottom:10,backgroundColor:"white"}},k.default.createElement("div",{style:{position:"relative"}},k.default.createElement(im,{model:t,strLength:c.length,height:42}),k.default.createElement("div",{style:{height:14}},k.default.createElement(tr,{model:t,str:c})),k.default.createElement("div",{style:{height:14}},k.default.createElement(tr,{model:t,str:w})),k.default.createElement("div",{style:{height:14}},k.default.createElement(tr,{model:t,str:y}))),r&&u?k.default.createElement(Qu,{data:u,model:t}):null,r&&s.length>0?k.default.createElement(_i,{cells:s,colorFor:Kp,formatValue:h=>`pLDDT ${h.toFixed(0)}`,sequenceLength:c.length,model:t}):null,r&&l.length>0?k.default.createElement(_i,{cells:l,colorFor:Yp,formatValue:h=>`Kyte-Doolittle ${h.toFixed(1)}`,sequenceLength:c.length,model:t}):null)))}),cm=hg});function yg({checked:e,label:t,onToggle:o}){return G.default.createElement(Ji.default,{onClick:()=>{o()},dense:!0},G.default.createElement(bm.default,null,G.default.createElement(fm.default,{checked:e,size:"small",edge:"start",disableRipple:!0})),G.default.createElement(ym.default,null,t))}function wg(e){return[{label:"Show alignment",checked:e.showAlignment,onToggle:()=>{e.setShowAlignment(!e.showAlignment)}},{label:"Show features",checked:e.showProteinTracks,onToggle:()=>{e.setShowProteinTracks(!e.showProteinTracks)}},{label:"Auto-scroll features",checked:e.autoScrollAlignment,onToggle:()=>{e.setAutoScrollAlignment(!e.autoScrollAlignment)}},{label:"Compact tracks",checked:e.compactTracks,onToggle:()=>{e.setCompactTracks(!e.compactTracks)}}]}var G,gm,fm,hm,bm,ym,wm,Ji,xm,Sm,or,bg,xg,Sg,vm,Tm=S(()=>{"use strict";G=p(x()),gm=p(Oe());su();fm=p(lu()),hm=p(uu()),bm=p(cu()),ym=p(gu()),wm=p(hu()),Ji=p(yu()),xm=p(xu()),Sm=p(vu()),or=p(_());ku();Fu();dm();Ci();bg=(0,or.observer)(function({model:t}){return G.default.createElement(xm.default,{select:!0,size:"small",label:"Color",value:t.colorScheme,onChange:o=>{let n=To.find(r=>r.value===o.target.value);n&&t.setColorScheme(n.value)},slotProps:{select:{native:!1}},sx:{minWidth:180}},To.map(o=>G.default.createElement(Ji.default,{key:o.value,value:o.value},o.label)))});xg=(0,or.observer)(function({model:t}){let[o,n]=(0,G.useState)(null);return G.default.createElement(G.default.Fragment,null,G.default.createElement(Sm.default,{title:"Display settings"},G.default.createElement(hm.default,{size:"small",onClick:r=>{n(r.currentTarget)}},G.default.createElement(iu,{fontSize:"small"}))),G.default.createElement(wm.default,{anchorEl:o,open:!!o,onClose:()=>{n(null)}},wg(t).map(r=>G.default.createElement(yg,{key:r.label,checked:r.checked,label:r.label,onToggle:r.onToggle}))))}),Sg=(0,or.observer)(function({model:t}){let{structures:o,showAlignment:n}=t;return G.default.createElement("div",null,G.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},G.default.createElement(Iu,{model:t}),G.default.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center",flexShrink:0}},G.default.createElement(bg,{model:t}),G.default.createElement(xg,{model:t}))),n?o.filter(r=>r.pairwiseAlignment||r.alignmentPending).map((r,i)=>G.default.createElement("div",{key:i},r.pairwiseAlignment?G.default.createElement(cm,{model:r}):G.default.createElement(gm.LoadingEllipses,{message:"Loading pairwise alignment"}))):null,G.default.createElement(Au,{model:t}))}),vm=Sg});var Pm,Am=S(()=>{"use strict";Pm=`
11
11
  .msp-plugin{font-family:Helvetica Neue,Segoe UI,Helvetica,Source Sans Pro,Arial,sans-serif;font-size:14px;line-height:1.42857143;position:absolute;inset:0}.msp-plugin *{box-sizing:border-box}.msp-plugin [hidden],.msp-plugin template{display:none}.msp-plugin a{background-color:transparent}.msp-plugin a:active,.msp-plugin a:hover{outline:0}.msp-plugin abbr[title]{border-bottom:1px dotted}.msp-plugin b,.msp-plugin strong{font-weight:700}.msp-plugin small{font-size:80%}.msp-plugin img{border:0}.msp-plugin svg:not(:root){overflow:hidden}.msp-plugin button,.msp-plugin input,.msp-plugin optgroup,.msp-plugin select,.msp-plugin textarea{color:inherit;font:inherit;margin:0}.msp-plugin button{overflow:visible}.msp-plugin button,.msp-plugin select{text-transform:none}.msp-plugin button,.msp-plugin html input[type=button],.msp-plugin input[type=reset],.msp-plugin input[type=submit]{-webkit-appearance:button;cursor:pointer}.msp-plugin button[disabled],.msp-plugin html input[disabled]{cursor:default}.msp-plugin button::-moz-focus-inner,.msp-plugin input::-moz-focus-inner{border:0;padding:0}.msp-plugin input{line-height:normal}.msp-plugin input[type=checkbox],.msp-plugin input[type=radio]{box-sizing:border-box;padding:0}.msp-plugin input[type=number]::-webkit-inner-spin-button,.msp-plugin input[type=number]::-webkit-outer-spin-button{height:auto}.msp-plugin textarea{overflow:auto}.msp-plugin .msp-layout-expanded,.msp-plugin .msp-layout-standard{inset:0}.msp-plugin .msp-layout-standard{border:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-region{overflow:hidden}.msp-plugin .msp-layout-static,.msp-plugin .msp-layout-scrollable{position:absolute}.msp-plugin .msp-scrollable{overflow-y:auto}.msp-plugin .msp-scrollable-container{position:absolute;inset:0;overflow-y:auto}.msp-plugin .msp-layout-static{overflow:hidden}.msp-plugin .msp-layout-top .msp-layout-static,.msp-plugin .msp-layout-main .msp-layout-static,.msp-plugin .msp-layout-bottom .msp-layout-static,.msp-plugin .msp-layout-right .msp-layout-static{inset:0}.msp-plugin .msp-layout-right .msp-layout-scrollable{inset:43px 0 0}.msp-plugin .msp-layout-left .msp-layout-static{inset:0}.msp-plugin .msp-layout-standard-outside{position:absolute}.msp-plugin .msp-layout-standard-outside .msp-layout-main{position:absolute;inset:0}.msp-plugin .msp-layout-standard-outside .msp-layout-top{position:absolute;right:0;height:97px;top:-97px;width:50%;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-outside .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;top:-97px;width:50%;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-outside .msp-layout-right{position:absolute;width:50%;right:0;bottom:-295px;height:295px;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-outside .msp-layout-left{position:absolute;width:50%;left:0;bottom:-295px;height:295px;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-standard-outside .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-outside .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-standard-landscape{position:absolute}.msp-plugin .msp-layout-standard-landscape .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}.msp-plugin .msp-layout-standard-landscape .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-landscape .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-landscape .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-landscape .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-main,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-top,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-bottom{right:0}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-main,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-top,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-bottom{left:0}.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-main,.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-top,.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-bottom{left:32px}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-bottom .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-top .msp-layout-main{top:0}.msp-plugin .msp-layout-standard-portrait{position:absolute}.msp-plugin .msp-layout-standard-portrait .msp-layout-main{position:absolute;inset:97px 0 361px}.msp-plugin .msp-layout-standard-portrait .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-portrait .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-portrait .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-portrait .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-portrait .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-portrait .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}.msp-plugin .msp-layout-standard-reactive{position:absolute}@media(orientation:landscape),(min-width:1000px){.msp-plugin .msp-layout-standard-reactive .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}.msp-plugin .msp-layout-standard-reactive .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-main,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-top,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-bottom{right:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-main,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-top,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-bottom{left:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-main,.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-top,.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-bottom{left:32px}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-main{top:0}}@media(orientation:portrait)and (max-width:1000px){.msp-plugin .msp-layout-standard-reactive .msp-layout-main{position:absolute;inset:97px 0 361px}.msp-plugin .msp-layout-standard-reactive .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}}.msp-plugin .msp-layout-expanded{position:fixed}@media(orientation:landscape){.msp-plugin .msp-layout-expanded .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}.msp-plugin .msp-layout-expanded .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-main,.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-top,.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-bottom{right:0}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-main,.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-top,.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-bottom{left:0}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-main,.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-top,.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-bottom{left:32px}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-main{bottom:0}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-main{top:0}}@media(orientation:portrait){.msp-plugin .msp-layout-expanded .msp-layout-main{position:absolute;inset:97px 0 361px}.msp-plugin .msp-layout-expanded .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}}.msp-plugin ::-webkit-scrollbar{width:10px;height:10px}.msp-plugin ::-webkit-scrollbar-track{border-radius:0;background-color:#e9e6e0}.msp-plugin ::-webkit-scrollbar-thumb{border-radius:10px;background-color:#beb7a4;border:solid 1px transparent;background-clip:content-box}.msp-plugin .msp-form-control,.msp-plugin .msp-control-row select,.msp-plugin .msp-control-row button,.msp-plugin .msp-control-row input[type=text],.msp-plugin .msp-btn{display:block;width:100%;background:#f3f2ee;border:none;padding:0 10px;line-height:30px;height:32px;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-shadow:none;box-shadow:none;background-image:none}.msp-plugin .msp-form-control::-moz-placeholder,.msp-plugin .msp-control-row select::-moz-placeholder,.msp-plugin .msp-control-row button::-moz-placeholder,.msp-plugin .msp-control-row input[type=text]::-moz-placeholder,.msp-plugin .msp-btn::-moz-placeholder{color:#9c835f;opacity:1}.msp-plugin .msp-form-control:-ms-input-placeholder,.msp-plugin .msp-control-row select:-ms-input-placeholder,.msp-plugin .msp-control-row button:-ms-input-placeholder,.msp-plugin .msp-control-row input[type=text]:-ms-input-placeholder,.msp-plugin .msp-btn:-ms-input-placeholder{color:#9c835f}.msp-plugin .msp-form-control::-webkit-input-placeholder,.msp-plugin .msp-control-row select::-webkit-input-placeholder,.msp-plugin .msp-control-row button::-webkit-input-placeholder,.msp-plugin .msp-control-row input[type=text]::-webkit-input-placeholder,.msp-plugin .msp-btn::-webkit-input-placeholder{color:#9c835f}.msp-plugin .msp-form-control:hover,.msp-plugin .msp-control-row select:hover,.msp-plugin .msp-control-row button:hover,.msp-plugin .msp-control-row input[type=text]:hover,.msp-plugin .msp-btn:hover{color:#ae5d04;background-color:#e9e6e0;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-form-control:active,.msp-plugin .msp-control-row select:active,.msp-plugin .msp-control-row button:active,.msp-plugin .msp-control-row input[type=text]:active,.msp-plugin .msp-btn:active,.msp-plugin .msp-form-control:focus,.msp-plugin .msp-control-row select:focus,.msp-plugin .msp-control-row button:focus,.msp-plugin .msp-control-row input[type=text]:focus,.msp-plugin .msp-btn:focus{color:#332b1f;background-color:#f3f2ee;border:none;outline-offset:0;outline:none}.msp-plugin .msp-form-control[disabled],.msp-plugin .msp-control-row select[disabled],.msp-plugin .msp-control-row button[disabled],.msp-plugin .msp-control-row input[disabled][type=text],.msp-plugin [disabled].msp-btn,.msp-plugin .msp-form-control[readonly],.msp-plugin .msp-control-row select[readonly],.msp-plugin .msp-control-row button[readonly],.msp-plugin .msp-control-row input[readonly][type=text],.msp-plugin [readonly].msp-btn,fieldset[disabled] .msp-plugin .msp-form-control,fieldset[disabled] .msp-plugin .msp-control-row select,fieldset[disabled] .msp-plugin .msp-control-row button,fieldset[disabled] .msp-plugin .msp-control-row input[type=text],fieldset[disabled] .msp-plugin .msp-btn{background:#eeece7;opacity:.35}.msp-plugin .msp-btn,.msp-plugin .msp-control-row button{display:inline-block;margin-bottom:0;text-align:center;touch-action:manipulation;cursor:pointer;background-image:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:0 10px;line-height:32px;border:none;-moz-box-sizing:border-box;box-sizing:border-box}.msp-plugin .msp-btn[disabled],.msp-plugin .msp-control-row button[disabled]{background:#eeece7;opacity:.35}.msp-plugin .msp-btn-block,.msp-plugin .msp-control-row button{display:block;width:100%}.msp-plugin .msp-btn,.msp-plugin .msp-control-row button,.msp-plugin .msp-btn:active,.msp-plugin .msp-btn-link:focus,.msp-plugin .msp-btn:hover{outline:none}.msp-plugin .msp-material-icon svg{display:inline-flex;vertical-align:middle;font-size:1.2em;margin-bottom:3px;fill:currentColor;width:1em;height:1em;flex-shrink:0;user-select:none}.msp-plugin .msp-btn-block>.msp-material-icon,.msp-plugin .msp-control-row button>.msp-material-icon{margin-left:0;margin-right:.4em}.msp-plugin .msp-btn-childless>.msp-material-icon{margin-left:0;margin-right:0}.msp-plugin .msp-btn-icon{border:none;height:32px;width:32px;line-height:32px;padding:0;text-align:center}.msp-plugin .msp-btn-icon:hover{color:#ae5d04;background-color:#e9e6e0;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-btn-icon[disabled],.msp-plugin .msp-btn-icon[disabled]:hover,.msp-plugin .msp-btn-icon[disabled]:active{color:#9c835f}.msp-plugin .msp-btn-icon-small{border:none;height:32px;width:20px;line-height:32px;padding:0;text-align:center}.msp-plugin .msp-btn-icon-small:hover{color:#ae5d04;background-color:#e9e6e0;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-btn-icon-small[disabled],.msp-plugin .msp-btn-icon-small[disabled]:hover,.msp-plugin .msp-btn-icon-small[disabled]:active{color:#9c835f}.msp-plugin .msp-btn-link{font-weight:400;border-radius:0}.msp-plugin .msp-btn-link,.msp-plugin .msp-btn-link:active,.msp-plugin .msp-btn-link.active,.msp-plugin .msp-btn-link[disabled],fieldset[disabled] .msp-plugin .msp-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.msp-plugin .msp-btn-link,.msp-plugin .msp-btn-link:hover,.msp-plugin .msp-btn-link:focus,.msp-plugin .msp-btn-link:active{border-color:transparent}.msp-plugin .msp-btn-link:hover,.msp-plugin .msp-btn-link:focus{text-decoration:none;background-color:transparent}.msp-plugin .msp-btn-link[disabled]:hover,.msp-plugin .msp-btn-link[disabled]:focus,fieldset[disabled] .msp-plugin .msp-btn-link:hover,fieldset[disabled] .msp-plugin .msp-btn-link:focus{text-decoration:none}.msp-plugin .msp-btn-link .msp-icon{font-size:100%}.msp-plugin .msp-btn-link,.msp-plugin .msp-btn-link:active,.msp-plugin .msp-btn-link:focus{color:#332b1f;text-decoration:none}.msp-plugin .msp-btn-link:hover{color:#ae5d04;text-decoration:none}.msp-plugin .msp-btn-link-toggle-on{color:#332b1f}.msp-plugin .msp-btn-link-toggle-off,.msp-plugin .msp-btn-link-toggle-off:active,.msp-plugin .msp-btn-link-toggle-off:focus{color:#9c835f!important}.msp-plugin .msp-btn-link-toggle-on:hover{color:#ae5d04!important}.msp-plugin .msp-btn-link-toggle-off:hover{color:#dc9c56!important}.msp-plugin .msp-btn-action,.msp-plugin .msp-btn-action:active,.msp-plugin .msp-btn-action:focus{color:#332b1f;background:#f3f2ee}.msp-plugin .msp-btn-action:hover{color:#ae5d04;background:#f9f8f6}.msp-plugin .msp-btn-action[disabled],.msp-plugin .msp-btn-action[disabled]:hover,.msp-plugin .msp-btn-action[disabled]:active,.msp-plugin .msp-btn-action[disabled]:focus{color:#362e21}.msp-plugin .msp-btn-commit-on,.msp-plugin .msp-btn-commit-on:active,.msp-plugin .msp-btn-commit-on:focus{color:#974102;background:#f2f1ed}.msp-plugin .msp-btn-commit-on:hover{color:#ae5d04;background:#f8f7f4}.msp-plugin .msp-btn-commit-on[disabled],.msp-plugin .msp-btn-commit-on[disabled]:hover,.msp-plugin .msp-btn-commit-on[disabled]:active,.msp-plugin .msp-btn-commit-on[disabled]:focus{color:#9c4302}.msp-plugin .msp-btn-commit-off,.msp-plugin .msp-btn-commit-off:active,.msp-plugin .msp-btn-commit-off:focus{color:#332b1f;background:#f6f5f3}.msp-plugin .msp-btn-commit-off:hover{color:#ae5d04;background:#fcfbfa}.msp-plugin .msp-btn-commit-off[disabled],.msp-plugin .msp-btn-commit-off[disabled]:hover,.msp-plugin .msp-btn-commit-off[disabled]:active,.msp-plugin .msp-btn-commit-off[disabled]:focus{color:#362e21}.msp-plugin .msp-btn-remove:hover{color:#f2f4f7}.msp-plugin .msp-btn-commit-on:hover{color:#fc6c03}.msp-plugin .msp-select-toggle:after{content:"";position:absolute;right:.75rem;top:50%;transform:translateY(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid #ae5d04;opacity:0;pointer-events:none}.msp-plugin .msp-select-toggle:hover:after{opacity:1}.msp-plugin .msp-btn-action{height:32px;line-height:32px}.msp-plugin input[type=file]{display:block}.msp-plugin input[type=range]{display:block;width:100%}.msp-plugin select[multiple],.msp-plugin select[size],.msp-plugin textarea.msp-form-control,.msp-plugin textarea.msp-btn{height:auto}.msp-plugin .msp-control-top-offset{margin-top:1px}.msp-plugin .msp-btn-commit{text-align:right;padding:0 10px 0 0;line-height:32px;border:none;overflow:hidden;font-weight:700}.msp-plugin .msp-btn-commit .msp-icon{display:block-inline;line-height:32px;width:32px;text-align:center}.msp-plugin select.msp-form-control,.msp-plugin .msp-control-row select,.msp-plugin select.msp-btn{background:none;background-color:#f3f2ee;background-size:8px 12px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right 10px center;padding-right:24px}.msp-plugin select.msp-form-control:-moz-focusring,.msp-plugin .msp-control-row select:-moz-focusring,.msp-plugin select.msp-btn:-moz-focusring{color:transparent;text-shadow:0 0 0 #332b1f}.msp-plugin .msp-default-bg{background:#eeece7}.msp-plugin .msp-transparent-bg{background:transparent}.msp-plugin .msp-no-hover-outline:hover{color:#ae5d04;background-color:inherit;border:none;outline-offset:0!important;outline:none!important}.msp-plugin .msp-icon-inline{margin-right:8px}.msp-plugin .msp-control-row{position:relative;height:32px;background:#eeece7;margin-top:1px}.msp-plugin .msp-control-row>span.msp-control-row-label,.msp-plugin .msp-control-row>button.msp-control-button-label{line-height:32px;display:block;width:120px;text-align:right;padding:0 10px;color:#63533c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-control-row>button.msp-control-button-label{background:#eeece7;cursor:pointer}.msp-plugin .msp-control-row .msp-control-current{background:#eeece7}.msp-plugin .msp-control-row>div.msp-control-row-ctrl{position:absolute;inset:0 0 0 120px}.msp-plugin .msp-control-row>div.msp-control-row-text{position:absolute;inset:0 0 0 120px;display:flex;align-items:center;padding:0 10px}.msp-plugin .msp-control-row>div{background:#f3f2ee}.msp-plugin .msp-control-row>.msp-flex-row,.msp-plugin .msp-control-row>.msp-state-image-row{background:#eeece7}.msp-plugin .msp-control-label-short>span{width:80px!important}.msp-plugin .msp-control-label-short>div:nth-child(2){left:80px!important}.msp-plugin .msp-control-col-2{float:left;width:50%}.msp-plugin .msp-control-twoline{height:64px!important}.msp-plugin .msp-control-group{position:relative}.msp-plugin .msp-toggle-button .msp-icon{display:inline-block;margin-right:6px}.msp-plugin .msp-toggle-button>div>button:hover{border-color:#e9e6e0!important;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-slider>div:first-child{position:absolute;inset:0 62px 0 18px;display:flex}.msp-plugin .msp-slider>div:last-child{position:absolute;height:32px;line-height:32px;text-align:center;right:0;width:50px;top:0;bottom:0}.msp-plugin .msp-slider-no-input>div:first-child{right:18px}.msp-plugin .msp-slider-no-input>div:last-child{visibility:hidden;width:0}.msp-plugin .msp-slider input[type=text]{padding-right:6px;padding-left:4px;font-size:80%;text-align:right}.msp-plugin .msp-slider2>div:first-child{position:absolute;height:32px;line-height:32px;text-align:center;left:0;width:25px;top:0;bottom:0;font-size:80%}.msp-plugin .msp-slider2>div:nth-child(2){position:absolute;inset:0 37px 0 35px;display:flex}.msp-plugin .msp-slider2>div:last-child{position:absolute;height:32px;line-height:32px;text-align:center;right:0;width:25px;top:0;bottom:0;font-size:80%}.msp-plugin .msp-slider2 input[type=text]{padding-right:4px;padding-left:4px;font-size:80%;text-align:center}.msp-plugin .msp-toggle-color-picker button{border:10px solid rgb(243.2865853659,241.9085365854,238.4634146341)!important;margin:0;text-align:center;padding-right:10px;padding-left:10px}.msp-plugin .msp-toggle-color-picker button:hover{border-color:#e9e6e0!important;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-toggle-color-picker .msp-color-picker{position:absolute;z-index:100000;background:#eeece7;border-top:1px solid #eeece7;padding-bottom:5px;width:100%}.msp-plugin .msp-toggle-color-picker-above .msp-color-picker{top:-85px;height:85px}.msp-plugin .msp-toggle-color-picker-below .msp-color-picker{top:32px;height:80px}.msp-plugin .msp-control-offset{padding-left:10px}.msp-plugin .msp-accent-offset{padding-left:1px;margin-left:8px;border-left:2px solid rgb(232.5914634146,139.3719512195,56.9085365854)}.msp-plugin .msp-control-group-wrapper{margin-bottom:0;margin-top:1px}.msp-plugin .msp-control-group-header{background:#eeece7}.msp-plugin .msp-control-group-header>button,.msp-plugin .msp-control-group-header div{padding-left:4px;text-align:left;height:24px!important;line-height:24px!important;font-size:85%!important;background:#eeece7!important;color:#63533c}.msp-plugin .msp-control-group-header .msp-icon{height:24px!important;line-height:24px!important}.msp-plugin .msp-control-group-header>span{padding-left:5px;line-height:21.3333333333px;font-size:70%;background:#eeece7;color:#63533c}.msp-plugin .msp-control-current{background:#eeece7}.msp-plugin .msp-control-group-footer{background:#e3e0d8;height:5px;font-size:1px;margin-top:1px}.msp-plugin .msp-control-group-expander{display:block;position:absolute;line-height:32px;padding:0;left:0;top:0;width:120px;text-align:left;background:transparent}.msp-plugin .msp-control-group-expander .msp-icon{line-height:29px;width:31px;text-align:center;font-size:100%}.msp-plugin .msp-plugin-layout_controls{position:absolute;left:10px;top:10px}.msp-plugin .msp-plugin-layout_controls>button:first-child{margin-right:6px}.msp-plugin .msp-empty-control{display:none}.msp-plugin .msp-control .msp-btn-block,.msp-plugin .msp-control .msp-control-row button,.msp-plugin .msp-control-row .msp-control button{margin-bottom:0;margin-top:0}.msp-plugin .msp-row-text{height:32px;position:relative;background:#eeece7;margin-top:1px}.msp-plugin .msp-row-text>div{line-height:32px;text-align:center;color:#63533c}.msp-plugin .msp-help span{display:none}.msp-plugin .msp-help:hover span{display:inline-block;background:linear-gradient(#eeece7,#eeece7cc)}.msp-plugin .msp-help-text{position:relative;background:#eeece7;margin-top:1px}.msp-plugin .msp-help-text>div{padding:5px 10px;text-align:left;color:#63533c}.msp-plugin .msp-help-text>p{padding:5px 10px;text-align:left;color:#63533c}.msp-plugin .msp-help-description{font-style:italic}.msp-plugin .msp-help-legend{padding-top:10px}.msp-plugin .msp-scale-legend>div{width:100%;height:30px}.msp-plugin .msp-scale-legend>div>span{padding:5px;color:#fff;font-weight:700;background-color:#0003}.msp-plugin .msp-table-legend>div{margin-right:5px;display:inline-flex}.msp-plugin .msp-table-legend>div .msp-table-legend-color{width:30px;height:20px}.msp-plugin .msp-table-legend>div .msp-table-legend-text{margin:0 5px}.msp-plugin .msp-image-preview{position:relative;background:#eeece7;margin-top:1px;padding:10px}.msp-plugin .msp-image-preview canvas{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.msp-plugin .msp-image-preview>span{margin-top:6px;display:block;text-align:center;font-size:80%;line-height:15px}.msp-plugin .msp-copy-image-wrapper{position:relative}.msp-plugin .msp-copy-image-wrapper div{font-weight:700;padding:3px;margin:1px 0;width:100%;background:#f3f2ee;text-align:center}.msp-plugin .msp-copy-image-wrapper img{margin-top:1px}.msp-plugin .msp-control-text-area-wrapper,.msp-plugin .msp-text-area-wrapper{position:relative}.msp-plugin .msp-control-text-area-wrapper textarea,.msp-plugin .msp-text-area-wrapper textarea{border:none;width:100%;height:100%;background:#f3f2ee;padding:5px 10px;resize:none;font-size:12px;line-height:16px}.msp-plugin .msp-control-text-area-wrapper{height:64px!important}.msp-plugin .msp-text-area-wrapper{height:96px!important}.msp-plugin .msp-help-row{position:relative;height:32px;background:#eeece7;margin-top:1px;display:table;width:100%}.msp-plugin .msp-help-row>span{width:120px;text-align:right;padding:3px 10px;color:#63533c;display:table-cell;font-weight:700;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-help-row>div{background:#f3f2ee;position:relative;padding:3px 10px;display:table-cell}.msp-plugin .msp-canvas{width:100%;height:100%;background-color:#f3f2ee}.msp-plugin .msp-canvas text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.msp-plugin .msp-canvas circle{stroke:#000;stroke-width:10;stroke-opacity:.3}.msp-plugin .msp-canvas circle:hover{fill:#ae5d04;stroke:#000;stroke-width:10px}.msp-plugin .msp-canvas .info{fill:#fff;stroke:#000;stroke-width:3}.msp-plugin .msp-canvas .show{visibility:visible}.msp-plugin .msp-canvas .hide{visibility:hidden}.msp-plugin .msp-canvas .delete-button rect{fill:#ed4337;stroke:#000}.msp-plugin .msp-canvas .delete-button text{stroke:#fff;fill:#fff}.msp-plugin .msp-canvas .delete-button:hover{stroke:#000;stroke-width:3;fill:#ff6961}.msp-plugin .msp-canvas .infoCircle:hover{fill:#4c66b2}.msp-plugin .msp-canvas:focus{outline:none}.msp-plugin .msp-log-wrap{position:absolute;inset:0;overflow:hidden}.msp-plugin .msp-log{position:absolute;inset:0 -20px 0 0;overflow-y:scroll;overflow-x:hidden;font-size:90%;background:#e0ddd4}.msp-plugin .msp-log{font-size:90%}.msp-plugin .msp-log ul{padding:0;margin:0}.msp-plugin .msp-log{color:#433829}.msp-plugin .msp-log li{clear:both;margin:0;background:#eeece7;position:relative}.msp-plugin .msp-log li:not(:last-child){border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-log .msp-log-entry{margin-left:110px;background:#ebe8e3;padding:3px 25px 3px 10px}.msp-plugin .msp-log .msp-log-timestamp{padding:3px 10px;float:left;text-align:right;width:110px;color:#726046;font-size:100%}.msp-plugin .msp-log .msp-log-timestamp small{font-size:100%}.msp-plugin .msp-log .label{margin-top:-3px;font-size:7pt}.msp-plugin .msp-log-entry-badge{position:absolute;left:0;top:0;bottom:0;width:6px}.msp-plugin .msp-log-entry-message{background:#0cca5d}.msp-plugin .msp-log-entry-info{background:#5e3673}.msp-plugin .msp-log-entry-error{background:#fd354b}.msp-plugin .msp-log-entry-warning{background:#fcc937}.msp-plugin .msp-slider-base{position:relative;height:14px;padding:5px 0;width:100%;border-radius:6px;align-self:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.msp-plugin .msp-slider-base *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.msp-plugin .msp-slider-base-rail{position:absolute;width:100%;background-color:#e0ddd4;height:4px;border-radius:2px}.msp-plugin .msp-slider-base-track{position:absolute;left:0;height:4px;border-radius:6px;background-color:tint(#332b1f,60%)}.msp-plugin .msp-slider-base-handle{position:absolute;margin-left:-11px;margin-top:-9px;width:22px;height:22px;cursor:pointer;border-radius:50%;background-color:#332b1f;border:4px solid rgb(224.2548780488,220.637804878,211.5951219512)}.msp-plugin .msp-slider-base-handle:hover{background-color:#ae5d04}.msp-plugin .msp-slider-base-mark{position:absolute;top:18px;left:0;width:100%;font-size:12px}.msp-plugin .msp-slider-base-mark-text{position:absolute;display:inline-block;vertical-align:middle;text-align:center;cursor:pointer;color:#999}.msp-plugin .msp-slider-base-mark-text-active{color:#666}.msp-plugin .msp-slider-base-step{position:absolute;width:100%;height:4px;background:transparent}.msp-plugin .msp-slider-base-dot{position:absolute;bottom:-2px;margin-left:-4px;width:8px;height:8px;border:2px solid #e9e9e9;background-color:#fff;cursor:pointer;border-radius:50%;vertical-align:middle}.msp-plugin .msp-slider-base-dot:first-child{margin-left:-4px}.msp-plugin .msp-slider-base-dot:last-child{margin-left:-4px}.msp-plugin .msp-slider-base-dot-active{border-color:tint(#332b1f,50%)}.msp-plugin .msp-slider-base-disabled{background:#eeece7;opacity:.35}.msp-plugin .msp-slider-base-disabled .msp-slider-base-handle,.msp-plugin .msp-slider-base-disabled .msp-slider-base-dot{cursor:not-allowed}.msp-plugin .msp-slider-base-disabled .msp-slider-base-mark-text,.msp-plugin .msp-slider-base-disabled .msp-slider-base-dot{cursor:not-allowed!important}.msp-plugin .msp-markdown table{border:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-collapse:collapse}.msp-plugin .msp-markdown th{text-align:left}.msp-plugin .msp-markdown th,.msp-plugin .msp-markdown td{border:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);padding:4px 8px}.msp-plugin .msp-markdown img{max-width:100%;height:auto}.msp-plugin .msp-description{padding:10px;font-size:85%;background:#eeece7;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;font-weight:light;cursor:default}.msp-plugin .msp-description:not(:first-child){border-top:1px solid rgb(224.2548780488,220.637804878,211.5951219512)}.msp-plugin .msp-color-picker input{color:#000!important}.msp-plugin .msp-no-webgl{position:absolute;width:100%;height:100%;left:0;top:0;display:table;text-align:center;background:#eeece7}.msp-plugin .msp-no-webgl>div b{font-size:120%}.msp-plugin .msp-no-webgl>div{display:table-cell;vertical-align:middle;text-align:center;width:100%;height:100%}.msp-plugin .msp-loader-msp-btn-file{position:relative;overflow:hidden}.msp-plugin .msp-loader-msp-btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;filter:alpha(opacity=0);opacity:0;outline:none;background:#fff;cursor:inherit;display:block}.msp-plugin .msp-controls-section{margin-bottom:10px}.msp-plugin .msp-combined-color-button{border:4px solid rgb(243.2865853659,241.9085365854,238.4634146341)!important;margin:0;text-align:center;padding-right:10px;padding-left:10px}.msp-plugin .msp-combined-color-button:hover{border-color:#e9e6e0!important;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-combined-color-swatch{width:100%;display:grid;grid-gap:1px;grid-template-columns:repeat(6,auto)}.msp-plugin .msp-combined-color-swatch .msp-btn:hover,.msp-plugin .msp-combined-color-swatch .msp-control-row button:hover,.msp-plugin .msp-control-row .msp-combined-color-swatch button:hover{outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-action-select{position:relative}.msp-plugin .msp-action-select select{padding-left:42px}.msp-plugin .msp-action-select option:first-child{color:#63533c}.msp-plugin .msp-action-select>.msp-icon{display:block;top:0;left:10px;position:absolute;line-height:32px}.msp-plugin .msp-simple-help-section{height:28px;line-height:28px;margin-top:5px;margin-bottom:5px;padding:0 10px;font-weight:500;background:#eeece7;color:#332b1f}.msp-plugin .msp-left-panel-controls-buttons{position:absolute;width:32px;top:0;bottom:0;padding-top:10px;background:#eeece7}.msp-plugin .msp-left-panel-controls-buttons-bottom{position:absolute;bottom:0}.msp-plugin .msp-left-panel-controls-button-data-dirty{position:absolute;width:6px;height:6px;background:#e98b39;border-radius:3px;right:6px;bottom:6px}.msp-plugin .msp-left-panel-controls .msp-scrollable-container{left:33px}.msp-plugin .msp-mapped-parameter-group{position:relative}.msp-plugin .msp-mapped-parameter-group>.msp-control-row:first-child>div:nth-child(2){right:33px}.msp-plugin .msp-mapped-parameter-group>button:first-child{right:33px}.msp-plugin .msp-mapped-parameter-group>.msp-btn-icon{position:absolute;right:0;width:32px;top:0;padding:0}.msp-plugin .msp-shape-filled{fill:#332b1f;stroke:#332b1f}.msp-plugin .msp-shape-empty{fill:none;stroke:#332b1f}.msp-plugin .msp-no-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msp-plugin .msp-25-lower-contrast-text{color:#826e4f}.msp-plugin .msp-expandable-group-color-stripe{position:absolute;left:0;top:30px;width:120px;height:2px}.msp-plugin .msp-section-header{height:32px;line-height:32px;margin-top:10px;margin-bottom:10px;text-align:right;padding:0 10px;font-weight:700;background:#eeece7;overflow:hidden;cursor:default}.msp-plugin .msp-section-header>.msp-icon{display:block;float:left}.msp-plugin .msp-section-header>small{font-weight:400}.msp-plugin .msp-current-header{height:32px;line-height:32px;margin-bottom:10px;text-align:center;font-weight:700;background:#eeece7}.msp-plugin .msp-flex-row,.msp-plugin .msp-state-image-row{margin-top:1px;background:#eeece7;display:flex;flex-direction:row;width:inherit;height:32px}.msp-plugin .msp-flex-row>.msp-flex-item,.msp-plugin .msp-state-image-row>.msp-flex-item{margin:0 1px 0 0;flex:1 1 auto;overflow:hidden}.msp-plugin .msp-flex-row>.msp-flex-item:last-child,.msp-plugin .msp-state-image-row>.msp-flex-item:last-child{margin-right:0}.msp-plugin .msp-flex-row>select,.msp-plugin .msp-state-image-row>select,.msp-plugin .msp-flex-row>button,.msp-plugin .msp-state-image-row>button{margin:0 1px 0 0;flex:1 1 auto;height:32px;overflow:hidden}.msp-plugin .msp-flex-row .msp-btn-icon,.msp-plugin .msp-state-image-row .msp-btn-icon,.msp-plugin .msp-flex-row .msp-btn-icon-small,.msp-plugin .msp-state-image-row .msp-btn-icon-small{flex:0 0 32px;max-width:32px}.msp-plugin .msp-flex-row>select,.msp-plugin .msp-state-image-row>select{background:none}.msp-plugin .msp-flex-row>select>option[value=_],.msp-plugin .msp-state-image-row>select>option[value=_]{display:none}.msp-plugin .msp-flex-row>select:last-child,.msp-plugin .msp-state-image-row>select:last-child,.msp-plugin .msp-flex-row>button:last-child,.msp-plugin .msp-state-image-row>button:last-child{margin-right:0}.msp-plugin .msp-flex-row>button.msp-control-button-label,.msp-plugin .msp-state-image-row>button.msp-control-button-label{background:#eeece7}.msp-plugin .msp-state-list{list-style:none}.msp-plugin .msp-state-list>li{position:relative;overflow:hidden}.msp-plugin .msp-state-list>li>button:first-child{text-align:left;border-left:10px solid rgb(212.6243902439,207.6390243902,195.1756097561)!important}.msp-plugin .msp-state-list>li>div{position:absolute;right:0;top:0}.msp-plugin .msp-state-image-row{height:96px;margin-top:0}.msp-plugin .msp-state-image-row>button{height:96px;padding:0}.msp-plugin .msp-state-image-row>button>img{min-height:96px;width:inherit;transform:translateY(-50%);top:50%;position:relative}.msp-plugin .msp-tree-row{position:relative;margin-top:0;margin-bottom:1px;background:transparent}.msp-plugin .msp-tree-row-current .msp-btn-tree-label>span{font-weight:700}.msp-plugin .msp-tree-row-current .msp-btn-tree-label{border-radius:0!important}.msp-plugin .msp-tree-row .msp-btn-tree-label{text-align:left;border-radius:0 0 0 8px;border-left-width:4px;border-left-style:solid}.msp-plugin .msp-tree-row .msp-btn-tree-label>small{color:#726046}.msp-plugin .msp-tree-updates-wrapper .msp-control-group-header:last-child{margin-bottom:1px}.msp-plugin .msp-viewport-top-left-controls{position:absolute;left:10px;top:10px}.msp-plugin .msp-viewport-top-left-controls .msp-traj-controls{line-height:32px;float:left;margin-right:10px;background-color:#f3f2ee}.msp-plugin .msp-viewport-top-left-controls .msp-traj-controls>span{color:#332b1f;margin-left:10px;margin-right:10px;font-size:85%;display:inline-block}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls{line-height:32px;float:left;margin-right:10px}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls>button{background-color:#f3f2ee}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls>select{display:inline-block;width:200px;margin-right:10px}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-animation-slider{position:relative;display:inline-block;width:120px;line-height:32px}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-animation-button{margin-left:10px}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls{line-height:32px;float:left;margin-right:10px;position:relative}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls>div:first-child{position:relative;display:inline-block}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls>div:first-child>button{position:relative}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls .msp-animation-viewport-controls-select{width:290px;position:absolute;left:0;margin-top:10px;background:#e0ddd4;z-index:10001}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls .msp-animation-viewport-controls-select .msp-control-row:first-child{margin-top:0}.msp-plugin .msp-selection-viewport-controls{position:relative;margin:10px auto 0;width:430px}.msp-plugin .msp-selection-viewport-controls-actions{position:absolute;width:100%;top:32px;background:#e0ddd4}.msp-plugin .msp-selection-viewport-controls>.msp-flex-row .msp-btn,.msp-plugin .msp-selection-viewport-controls>.msp-state-image-row .msp-btn,.msp-plugin .msp-selection-viewport-controls>.msp-flex-row .msp-control-row button,.msp-plugin .msp-control-row .msp-selection-viewport-controls>.msp-flex-row button,.msp-plugin .msp-selection-viewport-controls>.msp-state-image-row .msp-control-row button,.msp-plugin .msp-control-row .msp-selection-viewport-controls>.msp-state-image-row button{padding:0 5px}.msp-plugin .msp-selection-viewport-controls select.msp-form-control,.msp-plugin .msp-selection-viewport-controls select.msp-btn,.msp-plugin .msp-selection-viewport-controls .msp-control-row select,.msp-plugin .msp-control-row .msp-selection-viewport-controls select{padding:0 5px;text-align:center;background:#f3f2ee;flex:0 0 80px;text-overflow:ellipsis}.msp-plugin .msp-param-object-list-item{margin-top:1px;position:relative}.msp-plugin .msp-param-object-list-item>button{text-align:left}.msp-plugin .msp-param-object-list-item>button>span{font-weight:700}.msp-plugin .msp-param-object-list-item>div{position:absolute;right:0;top:0}.msp-plugin .msp-state-actions .msp-transform-wrapper:last-child{margin-bottom:10px}.msp-plugin .msp-button-row{display:flex;flex-direction:row;height:32px;width:inherit}.msp-plugin .msp-button-row>button{margin:0 1px 0 0;flex:1 1 auto;height:32px;text-align-last:center;background:none;padding:0 10px;overflow:hidden}.msp-plugin .msp-action-menu-options-no-header,.msp-plugin .msp-action-menu-options .msp-control-group-children{max-height:300px;overflow:hidden;overflow-y:auto}.msp-plugin .msp-action-menu-options .msp-control-row,.msp-plugin .msp-action-menu-options button,.msp-plugin .msp-action-menu-options .msp-icon,.msp-plugin .msp-action-menu-options .msp-flex-row,.msp-plugin .msp-action-menu-options .msp-state-image-row{height:24px;line-height:24px}.msp-plugin .msp-action-menu-options button{text-align:left}.msp-plugin .msp-action-menu-options .msp-action-menu-button{margin-top:1px;display:flex}.msp-plugin .msp-action-menu-options .msp-action-menu-button .msp-icon{margin-right:6px}.msp-plugin .msp-representation-entry{position:relative}.msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-btn,.msp-plugin .msp-control-row .msp-representation-entry>.msp-control-group-header>button{font-weight:700}.msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-icon,.msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-btn-link{line-height:24px;height:24px}.msp-plugin .msp-control-group-presets-wrapper{position:absolute;right:0;top:0}.msp-plugin .msp-control-group-presets-wrapper .msp-control-group-header{background:transparent}.msp-plugin .msp-control-group-presets-wrapper button{background:transparent!important}.msp-plugin .msp-parameter-matrix input{flex:1 1 auto;min-width:0}.msp-plugin .msp-btn-apply-simple{text-align:left}.msp-plugin .msp-btn-apply-simple .msp-icon{margin-right:10px}.msp-plugin .msp-type-class-Root{border-left-color:#eeece7}.msp-plugin .msp-type-class-Group{border-left-color:#e98b39}.msp-plugin .msp-type-class-Data{border-left-color:#bfc8c9}.msp-plugin .msp-type-class-Object{border-left-color:#54d98c}.msp-plugin .msp-type-class-Representation3D{border-left-color:#4aa3df}.msp-plugin .msp-type-class-Behavior{border-left-color:#b07cc6}.msp-plugin .msp-accent-color-cyan{color:#bfc8c9}.msp-plugin .msp-accent-bg-cyan{background:#bfc8c9}.msp-plugin .msp-transform-header-brand-cyan{border-bottom:1px solid rgb(190.5846153846,200.3076923077,200.9153846154)}.msp-plugin .msp-transform-header-brand-cyan:active,.msp-plugin .msp-transform-header-brand-cyan:focus{border-bottom:1px solid rgb(190.5846153846,200.3076923077,200.9153846154)}.msp-plugin .msp-accent-color-red{color:#ef8b80}.msp-plugin .msp-accent-bg-red{background:#ef8b80}.msp-plugin .msp-transform-header-brand-red{border-bottom:1px solid rgb(239.3835616438,138.5273972603,128.1164383562)}.msp-plugin .msp-transform-header-brand-red:active,.msp-plugin .msp-transform-header-brand-red:focus{border-bottom:1px solid rgb(239.3835616438,138.5273972603,128.1164383562)}.msp-plugin .msp-accent-color-gray{color:#46637f}.msp-plugin .msp-accent-bg-gray{background:#46637f}.msp-plugin .msp-transform-header-brand-gray{border-bottom:1px solid rgb(70.1643835616,98.5,126.8356164384)}.msp-plugin .msp-transform-header-brand-gray:active,.msp-plugin .msp-transform-header-brand-gray:focus{border-bottom:1px solid rgb(70.1643835616,98.5,126.8356164384)}.msp-plugin .msp-accent-color-green{color:#54d98c}.msp-plugin .msp-accent-bg-green{background:#54d98c}.msp-plugin .msp-transform-header-brand-green{border-bottom:1px solid rgb(84.456,216.544,140.468)}.msp-plugin .msp-transform-header-brand-green:active,.msp-plugin .msp-transform-header-brand-green:focus{border-bottom:1px solid rgb(84.456,216.544,140.468)}.msp-plugin .msp-accent-color-purple{color:#b07cc6}.msp-plugin .msp-accent-bg-purple{background:#b07cc6}.msp-plugin .msp-transform-header-brand-purple{border-bottom:1px solid rgb(176.3389121339,124.4225941423,197.5774058577)}.msp-plugin .msp-transform-header-brand-purple:active,.msp-plugin .msp-transform-header-brand-purple:focus{border-bottom:1px solid rgb(176.3389121339,124.4225941423,197.5774058577)}.msp-plugin .msp-accent-color-blue{color:#4aa3df}.msp-plugin .msp-accent-bg-blue{background:#4aa3df}.msp-plugin .msp-transform-header-brand-blue{border-bottom:1px solid rgb(73.6589958159,162.989539749,222.8410041841)}.msp-plugin .msp-transform-header-brand-blue:active,.msp-plugin .msp-transform-header-brand-blue:focus{border-bottom:1px solid rgb(73.6589958159,162.989539749,222.8410041841)}.msp-plugin .msp-accent-color-orange{color:#e98b39}.msp-plugin .msp-accent-bg-orange{background:#e98b39}.msp-plugin .msp-transform-header-brand-orange{border-bottom:1px solid rgb(232.5914634146,139.3719512195,56.9085365854)}.msp-plugin .msp-transform-header-brand-orange:active,.msp-plugin .msp-transform-header-brand-orange:focus{border-bottom:1px solid rgb(232.5914634146,139.3719512195,56.9085365854)}.msp-plugin .msp-volume-channel-inline-controls>:first-child{position:absolute;left:0;top:0;height:32px;right:32px}.msp-plugin .msp-volume-channel-inline-controls .msp-slider>div:first-child{right:42px}.msp-plugin .msp-volume-channel-inline-controls .msp-slider>div:last-child{width:30px}.msp-plugin .msp-volume-channel-inline-controls>button{position:absolute;right:0;width:32px;top:0;padding:0}.msp-plugin .msp-volume-channel-inline-controls>button .msp-material-icon{margin-right:0}.msp-plugin .msp-list-unstyled{padding-left:0;list-style:none}.msp-plugin .msp-drag-drop-overlay{border:12px dashed #332b1f;background:#0000005c;display:flex;align-items:center;justify-content:center;position:absolute;inset:0;font-size:48px;font-weight:700}.msp-plugin .msp-task-state{line-height:32px}.msp-plugin .msp-task-state>span{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-overlay-tasks{position:absolute;display:flex;inset:0;height:100%;width:100%;z-index:1000;justify-content:center;align-items:center;background:#00000040}.msp-plugin .msp-overlay-tasks .msp-task-state>div{height:32px;margin-top:1px;position:relative;width:100%;background:#eeece7}.msp-plugin .msp-overlay-tasks .msp-task-state>div>div{height:32px;line-height:32px;display:inline-block;padding:0 10px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;white-space:nowrap;background:#eeece7;position:absolute}.msp-plugin .msp-overlay-tasks .msp-task-state>div>button{display:inline-block;margin-top:-3px}.msp-plugin .msp-background-tasks{position:absolute;left:0;bottom:0;z-index:1000}.msp-plugin .msp-background-tasks .msp-task-state>div{height:32px;margin-top:1px;position:relative;width:100%;background:#eeece7}.msp-plugin .msp-background-tasks .msp-task-state>div>div{height:32px;line-height:32px;display:inline-block;padding:0 10px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;white-space:nowrap;background:#eeece7;position:absolute}.msp-plugin .msp-background-tasks .msp-task-state>div>button{display:inline-block;margin-top:-3px}.msp-plugin .msp-viewport{position:absolute;inset:0;background:#eeece7}.msp-plugin .msp-viewport .msp-btn-link{background:#0003}.msp-plugin .msp-viewport-expanded{position:fixed;z-index:1000}.msp-plugin .msp-viewport-controls{position:absolute;right:10px;top:10px;width:32px}.msp-plugin .msp-viewport-controls-buttons{text-align:right;position:relative}.msp-plugin .msp-viewport-controls-buttons>div{position:relative;margin-bottom:4px}.msp-plugin .msp-viewport-controls-buttons button{padding:0;text-align:center;width:32px;position:relative}.msp-plugin .msp-viewport-controls-buttons .msp-btn-link-toggle-off{color:#9c835f}.msp-plugin .msp-viewport-controls-buttons .msp-btn-link:hover{color:#ae5d04}.msp-plugin .msp-semi-transparent-background{background:#eeece7;opacity:.5;position:absolute;top:0;left:0;width:100%;height:100%}.msp-plugin .msp-hover-box-wrapper{position:relative}.msp-plugin .msp-hover-box-wrapper .msp-hover-box-body{visibility:hidden;position:absolute;right:36px;top:0;width:100px;background-color:#eeece7}.msp-plugin .msp-hover-box-wrapper .msp-hover-box-spacer{visibility:hidden;position:absolute;right:32px;top:0;width:4px;height:32px}.msp-plugin .msp-hover-box-wrapper:hover .msp-hover-box-body,.msp-plugin .msp-hover-box-wrapper:hover .msp-hover-box-spacer{visibility:visible}.msp-plugin .msp-viewport-controls-panel{width:290px;top:0;right:36px;position:absolute;background:#e0ddd4}.msp-plugin .msp-viewport-controls-panel .msp-control-group-wrapper:first-child{padding-top:0}.msp-plugin .msp-viewport-controls-panel .msp-viewport-controls-panel-controls{overflow-y:auto;max-height:400px}.msp-plugin .msp-highlight-toast-wrapper{position:absolute;right:10px;bottom:10px;max-width:95%;z-index:10000;pointer-events:none}.msp-plugin .msp-highlight-toast-wrapper .msp-toast-container{pointer-events:initial}.msp-plugin .msp-highlight-info{color:#ae5d04;padding:3px 10px;background:#eeece7;opacity:90%;max-width:400px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-highlight-markdown-row{padding-left:10px}.msp-plugin .msp-highlight-simple-row{text-align:right}.msp-plugin .msp-highlight-info-hr{margin-inline:0px;margin-block:3px;border:none;height:1px;background-color:#ae5d04}.msp-plugin .msp-highlight-info-additional{font-size:85%;display:inline-block;color:#fa911e}.msp-plugin .msp-snapshot-description-wrapper{background:#eeece780;position:absolute;left:0;top:42px;padding:6.6px 10px;max-height:224px;overflow:hidden;overflow-y:auto;width:max-content;max-width:400px}.msp-plugin .msp-snapshot-description-wrapper a{text-decoration:underline;cursor:pointer;color:#332b1f}.msp-plugin .msp-snapshot-description-wrapper ul,.msp-plugin .msp-snapshot-description-wrapper ol{padding-left:14px}.msp-plugin .msp-sequence{position:absolute;inset:0;background:#eeece7}.msp-plugin .msp-sequence-select{position:relative;height:24px;width:100%;margin-bottom:1px;background:#e0ddd4;text-align:left}.msp-plugin .msp-sequence-select>span{display:inline-block;line-height:24px;padding:0 10px;font-size:85%;font-weight:700;cursor:default}.msp-plugin .msp-sequence-select>select{display:inline-block;max-width:120px;width:auto;text-overflow:ellipsis;font-size:85%;height:24px;line-height:24px;background-size:6px 8px;background-color:#e0ddd4}.msp-plugin .msp-sequence-wrapper{word-break:break-word;padding:10px 10px 3px;user-select:none}.msp-plugin .msp-sequence-wrapper-non-empty{font-size:85%;line-height:180%;font-family:Courier New,monospace;background:#f3f2ee;width:100%;overflow-y:auto;overflow-x:hidden;position:absolute;inset:25px 0 0}.msp-plugin .msp-sequence-chain-label{margin-left:10px;margin-top:10px;user-select:none;color:#ae5d04;font-size:90%;line-height:90%;padding-left:.2em}.msp-plugin .msp-sequence-wrapper span{cursor:pointer}.msp-plugin .msp-sequence-wrapper .msp-sequence-residue-long{margin:0 .2em}.msp-plugin .msp-sequence-wrapper .msp-sequence-residue-long-begin{margin:0 .2em 0 0}.msp-plugin .msp-sequence-wrapper .msp-sequence-residue-focused{font-weight:700;text-decoration:underline}.msp-plugin .msp-sequence-wrapper .msp-sequence-label{color:#ae5d04;font-size:90%;line-height:90%;padding-bottom:1em;padding-left:.2em}.msp-plugin .msp-sequence-wrapper .msp-sequence-number{color:#ae5d04;word-break:keep-all;cursor:default;position:relative;top:-1.1em;left:3.1em;padding:0;margin-left:-3em;font-size:80%;pointer-events:none}.msp-plugin .msp-sequence-wrapper .msp-sequence-number-long{left:3.3em}.msp-plugin .msp-sequence-wrapper .msp-sequence-number-long-negative{left:2.7em}.msp-plugin .msp-sequence-wrapper .msp-sequence-number-negative{left:2.5em}.msp-plugin .msp-sequence-wrapper .msp-sequence-present{color:#332b1f}.msp-plugin .msp-sequence-wrapper .msp-sequence-missing{color:#b4a184;cursor:default}.msp-plugin .msp-transformer .msp-entity-badge{position:absolute;top:0;right:0;height:32px;line-height:32px;width:32px}.msp-plugin .msp-layout-right,.msp-plugin .msp-layout-left{background:#e0ddd4}.msp-plugin .msp-transformer-wrapper{position:relative}.msp-plugin .msp-transformer-wrapper .msp-entity-badge{left:0;top:0}.msp-plugin .msp-transformer-wrapper:first-child .msp-panel-description-content{top:33px}.msp-plugin .msp-transformer-wrapper:not(:first-child) .msp-panel-description-content{bottom:33px}.msp-plugin .msp-transform-wrapper{margin-bottom:10px}.msp-plugin .msp-transform-wrapper-collapsed,.msp-plugin .msp-transform-update-wrapper,.msp-plugin .msp-transform-update-wrapper-collapsed{margin-bottom:1px}.msp-plugin .msp-transform-update-wrapper>.msp-transform-header>button,.msp-plugin .msp-transform-update-wrapper-collapsed>.msp-transform-header>button{text-align:left;padding-left:32px;line-height:24px;background:#e9e6e0}.msp-plugin .msp-transform-wrapper>.msp-transform-header>button{text-align:left;background:#eeece7;font-weight:700;padding-right:5px}.msp-plugin .msp-transform-header{position:relative}.msp-plugin .msp-transform-header>button>small{font-weight:400;float:right}.msp-plugin .msp-transform-header>button>span:first-child{margin-right:10px}.msp-plugin .msp-transform-header>button:hover{color:#63533c}.msp-plugin .msp-transform-header-brand{margin-bottom:-1px}.msp-plugin .msp-transform-header-brand svg{fill:#332b1f;stroke:#332b1f}.msp-plugin .msp-transform-default-params{background:#eeece7;position:absolute;left:0;top:0;width:32px;padding:0}.msp-plugin .msp-transform-default-params:hover{background:#fff}.msp-plugin .msp-transform-apply-wrap{position:relative;margin-top:1px;width:100%;height:32px}.msp-plugin .msp-transform-refresh{width:87px;margin-left:33px;background:#eeece7;text-align:right}.msp-plugin .msp-transform-apply{display:block;position:absolute;left:120px;right:0;top:0}.msp-plugin .msp-transform-apply-wider{margin-left:33px}.msp-plugin .msp-data-beh{margin:10px 0!important}.msp-plugin .msp-toast-container{position:relative;z-index:1001}.msp-plugin .msp-toast-container .msp-toast-entry{color:#332b1f;background:#e0ddd4;position:relative;float:right;min-height:32px;margin-top:10px;border:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);display:table}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-title{height:100%;line-height:32px;padding:0 10px;background:#eeece7;font-weight:700;display:table-cell;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;font-weight:light;cursor:pointer}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message{padding:3px 42px 3px 10px;display:table-cell}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a{text-decoration:none;color:#974102;font-weight:700}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:hover{text-decoration:underline;color:#fc6c03}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:active,.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:focus{color:#974102;outline-offset:0;outline:none}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-hide{position:absolute;width:42px;right:0;top:0;bottom:0}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-hide .msp-btn-icon{background:transparent;position:absolute;inset:1px 0 0;width:100%;text-align:right;padding-right:5px}.msp-plugin .msp-logo{display:block;position:absolute;bottom:10px;right:10px;height:32px;width:100px;background-repeat:no-repeat;background-position:bottom right;background-size:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAgCAYAAABn7+QVAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKL2lDQ1BJQ0MgUHJvZmlsZQAASMedlndUVNcWh8+9d3qhzTACUobeu8AA0nuTXkVhmBlgKAMOMzSxIaICEUVEmiJIUMSA0VAkVkSxEBRUsAckCCgxGEVULG9G1ouurLz38vL746xv7bP3ufvsvc9aFwCSpy+XlwZLAZDKE/CDPJzpEZFRdOwAgAEeYIApAExWRrpfsHsIEMnLzYWeIXICXwQB8HpYvAJw09AzgE4H/5+kWel8geiYABGbszkZLBEXiDglS5Auts+KmBqXLGYYJWa+KEERy4k5YZENPvsssqOY2ak8tojFOaezU9li7hXxtkwhR8SIr4gLM7mcLBHfErFGijCVK+I34thUDjMDABRJbBdwWIkiNhExiR8S5CLi5QDgSAlfcdxXLOBkC8SXcklLz+FzExIFdB2WLt3U2ppB9+RkpXAEAsMAJiuZyWfTXdJS05m8HAAW7/xZMuLa0kVFtjS1trQ0NDMy/apQ/3Xzb0rc20V6Gfi5ZxCt/4vtr/zSGgBgzIlqs/OLLa4KgM4tAMjd+2LTOACApKhvHde/ug9NPC+JAkG6jbFxVlaWEZfDMhIX9A/9T4e/oa++ZyQ+7o/y0F058UxhioAurhsrLSVNyKdnpDNZHLrhn4f4Hwf+dR4GQZx4Dp/DE0WEiaaMy0sQtZvH5gq4aTw6l/efmvgPw/6kxbkWidL4EVBjjIDUdSpAfu0HKAoRINH7xV3/o2+++DAgfnnhKpOLc//vN/1nwaXiJYOb8DnOJSiEzhLyMxf3xM8SoAEBSAIqkAfKQB3oAENgBqyALXAEbsAb+IMQEAlWAxZIBKmAD7JAHtgECkEx2An2gGpQBxpBM2gFx0EnOAXOg0vgGrgBboP7YBRMgGdgFrwGCxAEYSEyRIHkIRVIE9KHzCAGZA+5Qb5QEBQJxUIJEA8SQnnQZqgYKoOqoXqoGfoeOgmdh65Ag9BdaAyahn6H3sEITIKpsBKsBRvDDNgJ9oFD4FVwArwGzoUL4B1wJdwAH4U74PPwNfg2PAo/g+cQgBARGqKKGCIMxAXxR6KQeISPrEeKkAqkAWlFupE+5CYyiswgb1EYFAVFRxmibFGeqFAUC7UGtR5VgqpGHUZ1oHpRN1FjqFnURzQZrYjWR9ugvdAR6AR0FroQXYFuQrejL6JvoyfQrzEYDA2jjbHCeGIiMUmYtZgSzD5MG+YcZhAzjpnDYrHyWH2sHdYfy8QKsIXYKuxR7FnsEHYC+wZHxKngzHDuuCgcD5ePq8AdwZ3BDeEmcQt4Kbwm3gbvj2fjc/Cl+EZ8N/46fgK/QJAmaBPsCCGEJMImQiWhlXCR8IDwkkgkqhGtiYFELnEjsZJ4jHiZOEZ8S5Ih6ZFcSNEkIWkH6RDpHOku6SWZTNYiO5KjyALyDnIz+QL5EfmNBEXCSMJLgi2xQaJGokNiSOK5JF5SU9JJcrVkrmSF5AnJ65IzUngpLSkXKabUeqkaqZNSI1Jz0hRpU2l/6VTpEukj0lekp2SwMloybjJsmQKZgzIXZMYpCEWd4kJhUTZTGikXKRNUDFWb6kVNohZTv6MOUGdlZWSXyYbJZsvWyJ6WHaUhNC2aFy2FVko7ThumvVuitMRpCWfJ9iWtS4aWzMstlXOU48gVybXJ3ZZ7J0+Xd5NPlt8l3yn/UAGloKcQqJClsF/hosLMUupS26WspUVLjy+9pwgr6ikGKa5VPKjYrzinpKzkoZSuVKV0QWlGmabsqJykXK58RnlahaJir8JVKVc5q/KULkt3oqfQK+m99FlVRVVPVaFqveqA6oKatlqoWr5am9pDdYI6Qz1evVy9R31WQ0XDTyNPo0XjniZek6GZqLlXs09zXktbK1xrq1an1pS2nLaXdq52i/YDHbKOg84anQadW7oYXYZusu4+3Rt6sJ6FXqJejd51fVjfUp+rv09/0ABtYG3AM2gwGDEkGToZZhq2GI4Z0Yx8jfKNOo2eG2sYRxnvMu4z/mhiYZJi0mhy31TG1Ns037Tb9HczPTOWWY3ZLXOyubv5BvMu8xfL9Jdxlu1fdseCYuFnsdWix+KDpZUl37LVctpKwyrWqtZqhEFlBDBKGJet0dbO1husT1m/tbG0Edgct/nN1tA22faI7dRy7eWc5Y3Lx+3U7Jh29Xaj9nT7WPsD9qMOqg5MhwaHx47qjmzHJsdJJ12nJKejTs+dTZz5zu3O8y42Lutczrkirh6uRa4DbjJuoW7Vbo/c1dwT3FvcZz0sPNZ6nPNEe/p47vIc8VLyYnk1e816W3mv8+71IfkE+1T7PPbV8+X7dvvBft5+u/0erNBcwVvR6Q/8vfx3+z8M0A5YE/BjICYwILAm8EmQaVBeUF8wJTgm+Ejw6xDnkNKQ+6E6ocLQnjDJsOiw5rD5cNfwsvDRCOOIdRHXIhUiuZFdUdiosKimqLmVbiv3rJyItogujB5epb0qe9WV1QqrU1afjpGMYcaciEXHhsceiX3P9Gc2MOfivOJq42ZZLqy9rGdsR3Y5e5pjxynjTMbbxZfFTyXYJexOmE50SKxInOG6cKu5L5I8k+qS5pP9kw8lf0oJT2lLxaXGpp7kyfCSeb1pymnZaYPp+umF6aNrbNbsWTPL9+E3ZUAZqzK6BFTRz1S/UEe4RTiWaZ9Zk/kmKyzrRLZ0Ni+7P0cvZ3vOZK577rdrUWtZa3vyVPM25Y2tc1pXvx5aH7e+Z4P6hoINExs9Nh7eRNiUvOmnfJP8svxXm8M3dxcoFWwsGN/isaWlUKKQXziy1XZr3TbUNu62ge3m26u2fyxiF10tNimuKH5fwiq5+o3pN5XffNoRv2Og1LJ0/07MTt7O4V0Ouw6XSZfllo3v9tvdUU4vLyp/tSdmz5WKZRV1ewl7hXtHK30ru6o0qnZWva9OrL5d41zTVqtYu712fh9739B+x/2tdUp1xXXvDnAP3Kn3qO9o0GqoOIg5mHnwSWNYY9+3jG+bmxSaips+HOIdGj0cdLi32aq5+YjikdIWuEXYMn00+uiN71y/62o1bK1vo7UVHwPHhMeefh/7/fBxn+M9JxgnWn/Q/KG2ndJe1AF15HTMdiZ2jnZFdg2e9D7Z023b3f6j0Y+HTqmeqjkte7r0DOFMwZlPZ3PPzp1LPzdzPuH8eE9Mz/0LERdu9Qb2Dlz0uXj5kvulC31OfWcv210+dcXmysmrjKud1yyvdfRb9Lf/ZPFT+4DlQMd1q+tdN6xvdA8uHzwz5DB0/qbrzUu3vG5du73i9uBw6PCdkeiR0TvsO1N3U+6+uJd5b+H+xgfoB0UPpR5WPFJ81PCz7s9to5ajp8dcx/ofBz++P84af/ZLxi/vJwqekJ9UTKpMNk+ZTZ2adp++8XTl04ln6c8WZgp/lf619rnO8x9+c/ytfzZiduIF/8Wn30teyr889GrZq565gLlHr1NfL8wXvZF/c/gt423fu/B3kwtZ77HvKz/ofuj+6PPxwafUT5/+BQOY8/xvJtwPAAAACXBIWXMAAC4iAAAuIgGq4t2SAAANMElEQVRoQ92aB1xURx7H/69sY5eOFBELCipESsSC0RCMJRZMrICHGiMmGjWaqDk7YEsuGok5TS6xi56KGtsFG6jBiAYLKhqVc8GGBZG+fd97N+/twNJWFksS7/v5DG/nN/OG/fze/838Z4CA/wMCE9d9W8oQ3mUMBSojBTqWAuBQAweHIC56lanXHw8xJixM6qhQNcX1KuQykluyKzMPVxvF5XUh3hIpgFSiQz8AJBItSKU6sCsX55P9byLxxRKwYl3W5O6dg5o62IMRmcpyBBz87wNYcyH3R4iL+gh3+8MhHaTqYJKUKO2dPYTigIqza1MlLZLnzh3arQ/uZzVn14YOIGRyJWXrqgR5U6VI1kRJS92VBEEry+wrAnC3F04XL3cY4OMF7/p6weC2zSDQzQG3/IlM7dspdPmU0VxtLqYf5haM6HYOBYLVUwcXByQy92JxXioexUzFhT5cySn3TrjrC4WP3EsPHuPfZGJVZg4HCdt/wF0aT8LWUHT/jTpl4fZU3KNBSHytQ0D33uDR0qfjoqg3hmOpQU65d4u2cW4X6NCyJ1ZeIeKSFRC3p1q4kzYdmzr6Zk98p6rsj+rhi0KoFe5gIm53M/ypDhbNJQgC3kbTFUGSi+LiwmgsWyQ5zk9McESCZ8gEVHvF1kneWJI5CJT2SHWDbUQ0vNbEvqr4OClwCyZ+RzSQ+psomqOwUgOL5vL4BIdCi/aBvtJb3AdYsoirs0usnWfH1vbNOmPlFWHmWlve2DFB3t0nhvh0qm2wRRZuG+ksFyUlDe4qcbYRJ0H8v6NxSxVPNZcnPPJDIAlY8PWnXWVYqsPhZb3lDAfzW3T50xbmZ+MfyFhbRcr7yNj1EZ1gdb+O8DFvMKk7it4+ywYjY11k0s1po8KpmA4tITUmnHaWS5HBKJKr0aC5zXw6QJvgNzyhXDIZS3UgCN3UJq3fdLd188PKs3H8+Bjpvn2x/jv2TwnbsOezt3/YPavTss3TXXHzi4U3Vic/+H5gq+7rkLEkmgb5yWwVb3CnNiFAcD+aOtaGaMobmzrqLaoyIwlC11RkNB/JvPGCiGjQXJ43h8QCSRGzEqeG1Xmah77u48QCPdM7NBYrjSPveJg069i7H2UcjUpndWSZrZ3bFRfHlic8nL1TnezcM2Vyh0dLtsbnzdu8JHHW5qVt8G3Pj9qOT4RYluOE/UYllQZPCvFxMik1cbGRSKsbWwlKUPhxhDGxZJ25Ls28oX2X3k60HmZiqQqDTj+rqX8fB7lTC6xYT2569zA9Jb5m7xz8r3aB03uE9fpOFP7WYujZ/TPo22MSDOs1FT4ePBfG9ZvQsod/12kUJf190prli4YnJ6Mt2HOSMKICGLL/5su3Tn6wPxMYZE4lvMH/RAZP6NjaJGBsJSJIi3mrTg6d9bAYem05YSxS6WJgQdR2LFtnLk9oxFigRaKpq2aEuWMJDizu6UlQosltuo3FivU8zgyOkEhkRzz941u2CogDxyYhgMzDrWb4rMXN0Q36vN4TZr43XuTt0WyeoiR/MwqV509JqgzOSx+77zcw8nGM4UMx2r+5qYJpqpByHVztcc3E+QdFXJWx8dE78MgCDaZYldi5eIB/jwj577/+NB9VJ/GajmHj2nYZKpPZNW5aVJ9v2ULDwlaXdsvFYlvzpo1l9PD4yXUoKStAY3MgFjuAexNvcFA4C+32NgqY3HcofHFg18ioH1adRSHyjdBgCQJaQ/y2SFyzAIMKuSkp+1YAepIOGwZ1Bgo9UGu4gCK2z9ZfoEit3yMI1X8XxZwh+B2al2/7jOnfbsKqGaNeB7RYgmsAmvJi2LHkbwaC0baXyElKKpVe7f/JVlpsY4978Abp0PxsvqcSVVZfMGoud3Z44+HZ8vOeG2m3GWOkntNwK8CTgky4eiWJK9fqflUZJRe0jFirZmgvDSPu29or2PmdzhEgpkVC3/ziIpiRvL1ETUua74+NLed3aEnRg4IC3F2Edp6DNx/AmqxcXLMeFK0w3M8L1yxToTfCtCNZUKTRY8VMZv4TyC/VxFiM3OM7N0BudiaMW/g9VgBkto7QIWyYKDstaSEYGdo3dEQNY/n5/EbKJHBq2QPcOozBWk24K00UGgM3QuI2GisA5cVXIOdyYqHeKBo0cEDSaSwLLNu8TJ5968o6LQORI3oMETRPRycI9GrhkHH7Di/UjQpEvzYeQnlZKMQ0rB1Y/25+xO4M2Fl61/KcazTo4W5ONuRcOIUVEx3CI0Fqax8lljsO9w2tuTMuyksHVcHvwKHX2xIcU9aFsgmQEbR5MX50aztQYJzWu19NY3lmjp6pekIrxmbfvv6woLQQqwCBzZujn0SYqfbX5KkLGprVL51IXgMcW5VdgFgqh4DwkaR/WAxBi837Co5j4Hbmj3wucglL9cJy4ENKzRkVf5+q9Bqnpol9WKpDYuR0DfoKabcL8rGCotfBEQ0GLy41ewk81VyWIfYV3lNmXj2NNizVaNvtPfBBc2B1Hl07BKqi2xkkyf0HSxYg0D7eFn9G5rJ69EAYfXj4zgos1QtaYoq16G2qRCYWA0dw5oFqcb9cAyfvPG50ufq4FI/wdPg5t777+VKoNh1ZPzVbIAiWIwl69qm9G9Lad+kJFF5QKFosXCthjXrI/W0jsCw5G62+Tz0D5p8mU3sxrp7FWwClZKYcHWMawvKqvuf6PZh86HwBusW6VY0g/FzlEru0mHAsPB05mnN3X7sHKzNz+K91Df2o+VQIorDBVGz2lpPHvhobdvRy+v7ewT2HYrUmdy/tBU3po5Ren55MP7e+a6MP2F8aHLHXqr9ExO8Y46oQr08bFS6cflkD/1gT+wYLH1aeydGCSD8Q5ox5Ymo1YdUmgqTI2ZkpWziDToMVM0adCpRntrAERc/B0qvFImSsrWAsWdvYx/j1rkRtYNBGo+bbk9gnGKZ19Q0GgzgVlm4yJeQYq8ydsfb4eW158a6LaTuxYkaZuQN0mrLtb39y/KkL2V+Shdved7URrz9Wj7Fn7xfBuAOZuGbiTqkKRu09Y8HgtkFg5A3+qcpgq8zloUT0vItpyUZthXlq0amKQfnbTgNw5AIsvTos3o2SYGL10vAA0r8eY/mdV4nWgBUz26/eqWMwz7JeQeDrbIcM1idgyXpzp6xOyzHoVBuyUrdiBeD6ySQw6DVr+n9+XImlBmE5ggHOiGs8wleg0G7e8urEQwBNEuavywjpYY2BGse8oQ9QHjgM7bK0/ApfiWDslhOGEq1+NZZqwnH526/cOVbdYP7K13OelKcBY/O5ICKsNpeHFJMJ1zL2aVQlBaAqfgDKswdUKIFYhJutAqVqDznDI1xDdbRVFkkc6YzDQ9piqX448HNSmE+jitVq/mkU4OqzERd9sEJnGNJ/W7pgcGalsTp9FDLRdF5QGwJ0wNpEoAhOi0GGao0M8Fe+DkzpIEgYpMY9G2fuxMRj+axBvyrryEbITtsIjNGwcuDnvzzEzVahJ+gsVnURfTK/Vg6uYUDSNH8gVG/0Ltqy6E2FVNajjYf5WFNZ8AhQcvb88zxvsIEZzBvcV4hYYyQsiP4Jt9YPbyAycgcytM2qn4G/moz9qMpYnkaZK0CIv8y9cKQk72JqkYqAZVi1GmlAxXVGX3DdWHYGKwDurSLBxrb1yLRDo/ftTxkflpQyxW5lyhTJ97vm+azYNneWiCJ+HtxtICnCeTZ/wH0m9yaQHHNAEJ6X+ZGHeINLtLpIiIusP2JrwxspJyLyyzVL+WttY3kabe74xCNFBMd+xXDcl2MTfinBcqPggP5Kfe+bqimTomTwWkg8tPaNjLC3bX5CxtKljjqxViGzyfFrFfTFB/3GK3w9zTvd49eyobCsNGPvlCl1ziKeGWQwxI2sYWx2QamwsFWWcQfO4hbM9EgNLIiaK1zrofGRy8PQ34o1mmf+Hyz5/nub9Kprh4qVS4WzBR6SFEOLVv3hze7zYOiAFTDqveUQ03829O0yDJrYm8+Lr9+/AztOn1SxHPNy/xoqklxEi9qAo7kPq0rGvcIBaOIah3s0yDOZO/rro6rIxDP1Pi1rIBKABb3tiIqCw0fzL38GmvKbuMUyOoMODmf9Ct8d3l3CsfpByR9Pu4KbXg5zhjxBUZlSp8yPPoF7NIhwWG5jb5/h16kbltBrShLw+K4SCvOVCYt2no7HslWg7e9iW5fWcxVNvIGmGVMRGYEoO4zmykLhsBx3heTk4VSgW+lENSObQ8n9POSOHUEi90L97dHOlQKtXg9FFSVwu+A+XLmbx5Tp2F1qhvr7d7Ezb+MhBPjD8tdbNA+SSGSgYwmUGpFwo7AczuYX/an/iEdM6B3qKqbZAbguIKJQEZEosYSLi3efzsKyVZxd3/V1Cc0FisQMGsMAUqkBXfXoqgXChjlgF/LAfCiLOXfuQ5G2tDRcY5CGaRhxO41R4qJlRJSaEZVrjOLbapY6Z9BASkJswn18Sw2CVqx/t5ghncoZElQsBTqm8u+X3A0UaRm48gcD8D/XZskfp8IFSwAAAABJRU5ErkJggg==)}.msp-plugin .msp-plugin-content{color:#332b1f}.msp-plugin .msp-plugin-init-error{white-space:pre;margin:10px}.msp-plugin .msp-svg-text{fill:#332b1f}.msp-plugin{background:#eeece7}
12
12
  /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
13
13
  /*# sourceMappingURL=molstar.css.map */
14
- `});function zi({showControls:e,model:t}){let o=(0,ft.useRef)(null),n=(0,ft.useRef)(null),[r,i]=(0,ft.useState)(),[s,l]=(0,ft.useState)(!0);return(0,ft.useEffect)(()=>{let a={cancelled:!1};return(async()=>{try{if(!o.current)return;let{GeometryExport:u,MAQualityAssessment:m,PluginConfig:d,PluginSpec:c,DefaultPluginUISpec:w,createPluginUI:y,renderReact18:f}=await ce(),b=document.createElement("div");o.current.append(b),a.host=b;let h=w(),g=await y({target:b,render:f,spec:{...w(),behaviors:[...h.behaviors,c.Behavior(u),c.Behavior(m)],layout:{initial:{controlsDisplay:"reactive",showControls:e}},config:[[d.Viewport.ShowExpand,!1]]}});await g.initialized,a.cancelled?(g.dispose(),b.remove()):(a.plugin=g,n.current=g,t?.setMolstarPluginContext(g))}catch(u){console.error(u),i(u)}finally{l(!1)}})(),()=>{a.cancelled=!0,n.current=null,t&&(0,ym.isAlive)(t)&&t.setMolstarPluginContext(void 0),a.plugin?.dispose(),a.host?.remove()}},[]),(0,ft.useEffect)(()=>{let a={cancelled:!1};return(async()=>{let u=n.current;if(u){let{PluginCommands:m}=await ce();a.cancelled||await m.Layout.Update(u,{state:{showControls:e}})}})(),()=>{a.cancelled=!0}},[e]),{parentRef:o,error:r,loading:s}}var ft,ym,wm=S(()=>{"use strict";ft=p(x()),ym=p(Ho());Vt()});var Sm={};wt(Sm,{default:()=>fg});var rt,Kt,ji,xm,dg,gg,fg,vm=S(()=>{"use strict";rt=p(x()),Kt=p(Ge()),ji=p(_());$p();fm();bm();wm();xm=document.createElement("style");xm.append(hm);document.head.append(xm);dg=(0,ji.observer)(function({model:t}){let{showControls:o}=t,{parentRef:n,error:r,loading:i}=zi({showControls:o,model:t});return r?rt.default.createElement(Kt.ErrorMessage,{error:r}):rt.default.createElement(gg,{model:t,parentRef:n,loading:i})}),gg=(0,ji.observer)(function({model:t,parentRef:o,loading:n}){let{width:r,height:i,error:s,structures:l}=t,a=!n&&l.every(u=>!u.alignmentPending);return rt.default.createElement("div",{style:{background:"#ccc"},"data-testid":a?"protein-view-ready":"protein-view-loading"},s?rt.default.createElement(Kt.ErrorMessage,{error:s}):null,n?rt.default.createElement(Kt.LoadingEllipses,{message:"Loading protein viewer"}):rt.default.createElement(gm,{model:t}),rt.default.createElement("div",{ref:o,style:{position:"relative",width:r,height:i}}),rt.default.createElement(Kt.ResizeHandle,{style:{height:4,background:"grey"},onDrag:u=>t.setHeight(t.height+u)}),rt.default.createElement(Kp,{model:t}))}),fg=dg});var Fm={};wt(Fm,{default:()=>Xn});var Cm,Qn,Mm,Im,Xn,Em=S(()=>{"use strict";Cm=p(on()),Qn=p(ee()),Mm=p(nn()),Im=p(rn()),Xn=class extends Cm.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let{features:t}=JSON.parse(await(0,Mm.openLocation)(this.getConf("location")).readFile("utf8")),o=this.getConf("scoreField");return t.map(({begin:n,end:r,...i},s)=>({...i,uniqueId:`feat-${s}`,start:+n,end:+r+1,score:o==="population_frequency"?i.populationFrequencies?.[0]?.frequency:o==="variant_impact_score"?i.predictions?.[0]?.score:void 0,description:i.descriptions?.map(l=>l.value).join(","),name:[i.mutatedType?`${i.wildType}->${i.mutatedType}`:`${i.wildType}->del`]}))}async loadData(t={}){return this.feats??=this.loadDataP().catch(o=>{throw this.feats=void 0,o}),this.feats}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,Im.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,Qn.doesIntersect2)(a.start,a.end,r,i)&&n.next(new Qn.SimpleFeature({...a,refName:s}));n.complete()})}freeResources(){}}});var yg={};wt(yg,{default:()=>er});var Dm=p(Zi());var Js=p(x());var pt=p(x()),_s=p(_());var ps=p(x()),us=p(ee()),ms=p(_());var rs=p(x()),is=p(ee()),ss=p(_());var os=p(Xe()),ns=(0,os.makeStyles)()({highlight:{height:"100%",background:"rgba(255,255,0,0.2)",border:"1px solid rgba(50,50,0,0.2)",position:"absolute",zIndex:99,textAlign:"center",pointerEvents:"none",overflow:"hidden"},thinborder:{border:"1px solid black"}});function Jo(e){return e.views.find(o=>o.type==="ProteinView")}var zm=(0,ss.observer)(function({assemblyName:t,start:o,end:n,refName:r,model:i}){let{cx:s,classes:l}=ns(),{assemblyManager:a}=(0,is.getSession)(i),{offsetPx:u}=i,d=a.get(t)?.getCanonicalRefName(r)??r,c=i.bpToPx({refName:d,coord:o}),w=i.bpToPx({refName:d,coord:n});if(c&&w){let y=Math.max(Math.abs(w.offsetPx-c.offsetPx),3),f=Math.min(c.offsetPx,w.offsetPx)-u;return rs.default.createElement("div",{className:s(l.highlight,y<=3?l.thinborder:void 0),style:{left:f,width:y}})}else return null}),xt=zm;Bt();var Wm=(0,ms.observer)(function({model:t}){let o=(0,us.getSession)(t),{views:n,hovered:r}=o;if(St(r)&&n.some(i=>i.type==="ProteinView")){let{assemblyNames:i}=t,{coord:s,refName:l}=r.hoverPosition;return ps.default.createElement(xt,{model:t,start:s-1,end:s,refName:l,assemblyName:i[0]})}return null}),cs=Wm;var xs=p(x()),Xo=p(ee()),Ss=p(_());Zo();Bt();vo();var _m=(0,Ss.observer)(function({model:t}){let o=(0,Xo.getSession)(t),{hovered:n}=o,{assemblyNames:r,id:i}=t;if(!r[0])return null;let l=Ht.get(i);if(!l||!St(n))return null;let{coord:a}=n.hoverPosition,u=new Xo.SimpleFeature(l.feature),m=eo(u),{g2p:d}=m,c=d[a-1];return c===void 0?null:xs.default.createElement(xt,{model:t,start:c,end:c+1,refName:l.uniprotId,assemblyName:l.uniprotId})}),vs=_m;var Ts=p(x()),Ps=p(ee()),As=p(_());Zo();Bt();var Rm=(0,As.observer)(function({model:t}){let o=(0,Ps.getSession)(t),{hovered:n}=o,{assemblyNames:r,id:i}=t;if(!St(n))return null;let{coord:s,refName:l}=n.hoverPosition;if(Ht.getByUniprotId(l,o)?.connectedViewId!==i)return null;let u=r[0];if(!u)return null;let m=Ht.getGenomeHighlightForProteinPosition(l,s-1,o);return m?Ts.default.createElement(xt,{model:t,start:m.start,end:m.end,refName:m.refName,assemblyName:u}):null}),ks=Rm;var ur=p(x()),mr=p(_());var Qo=p(x()),Cs=p(ee()),Ms=p(_());var Jm=(0,Ms.observer)(function({model:t,field:o}){let n=(0,Cs.getSession)(t),{assemblyManager:r}=n,{assemblyNames:i}=t,s=Jo(n),l=i[0];return(l?r.get(l):void 0)&&l?Qo.default.createElement(Qo.default.Fragment,null,s?.structures.flatMap((u,m)=>u[o].map((d,c)=>Qo.default.createElement(xt,{key:`${d.refName}-${d.start}-${d.end}-${m}-${c}`,start:d.start,end:d.end,refName:d.refName,assemblyName:l,model:t})))):null}),pr=Jm;var Is=(0,mr.observer)(function({model:t}){return ur.default.createElement(pr,{model:t,field:"clickGenomeHighlights"})}),Fs=(0,mr.observer)(function({model:t}){return ur.default.createElement(pr,{model:t,field:"hoverGenomeHighlights"})});var Os=p(x()),zs=p(ee()),oo=p(Qt()),js=p(_());function Km(e){return e.replace(/[-.]/g,"")}function Es(e,t){return e&&t?[...e].find(([,o])=>Km(o)===t)?.[0]:void 0}me();var Xm=(0,js.observer)(function({model:t}){let o=(0,zs.getSession)(t),{views:n}=o,r=Jo(o),i=r?.connectedMsaViewId,s=i?n.find(l=>l.id===i):void 0;return(0,Os.useEffect)(()=>{if(!r||!s)return;let l=[],a;if(l.push((0,oo.autorun)(()=>{let u=r.primaryStructure?.structureSequences?.[0];a=Es(s.rowMap,u===void 0?void 0:te(u))})),s.setMousePos){let{setMousePos:u}=s;l.push((0,oo.autorun)(()=>{let m=r.primaryStructure;if(m){let d=m.structureSeqHoverPos,c=d!==void 0&&a!==void 0&&s.seqPosToVisibleCol?s.seqPosToVisibleCol(a,d):d;u(c)}}))}return l.push((0,oo.autorun)(()=>{let u=s.mouseCol,m=r.primaryStructure;if(m&&!(0,oo.untracked)(()=>!!m.alignmentHoverRange)){let c=u!==void 0&&a!==void 0&&s.visibleColToSeqPos?s.visibleColToSeqPos(a,u):u;m.setHoveredPosition(c===void 0?void 0:{structureSeqPos:c})}})),()=>{l.forEach(u=>{u()})}},[r,s]),null}),Ws=Xm;var Qm=(0,_s.observer)(function({model:t}){return pt.default.createElement(pt.default.Fragment,null,pt.default.createElement(Is,{model:t}),pt.default.createElement(Fs,{model:t}),pt.default.createElement(ks,{model:t}),pt.default.createElement(vs,{model:t}),pt.default.createElement(cs,{model:t}),pt.default.createElement(Ws,{model:t}))}),Rs=Qm;function dr(e){e.addToExtensionPoint("LinearGenomeView-TracksContainerComponent",(t,{model:o})=>[...t,Js.default.createElement(Rs,{key:"highlight_protein_viewer_protein3d",model:o})])}var sa=p(tn());var Ys=p(no());var ec=(0,Ys.ConfigurationSchema)("AlphaFoldConfidenceAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}}},{explicitlyTyped:!0}),Zs=ec;function gr(e){e.addAdapterType(()=>new sa.default({name:"AlphaFoldConfidenceAdapter",displayName:"AlphaFoldConfidence adapter",configSchema:Zs,getAdapterClass:()=>Promise.resolve().then(()=>(ia(),ra)).then(t=>t.default)}))}var fa=p(tn());var aa=p(no());var tc=(0,aa.ConfigurationSchema)("AlphaMissensePathogenicityAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}}},{explicitlyTyped:!0}),la=tc;function fr(e){e.addAdapterType(()=>new fa.default({name:"AlphaMissensePathogenicityAdapter",displayName:"AlphaMissensePathogenicity adapter",configSchema:la,getAdapterClass:()=>Promise.resolve().then(()=>(ga(),da)).then(t=>t.default)}))}var zn=p(ee());Pt();var wa=p(At(),1),xa=(0,ve.createSvgIcon)((0,wa.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add");var ge=p(x()),pp=p(Ge()),On=p(ee()),yo=p(E());var J=p(x()),Bn=p(Ge()),Lt=p(E()),Bl=p(_()),Hl=p(Xe());var Fe=p(x()),Ao=p(E());var ro=p(x()),Ca=p(E());var Gt=p(x()),Pa=p(ee()),Aa=p(E()),ka=p(Xe());var hr=p(x()),pn=p(E()),Ta=p(Xe()),oc=(0,Ta.makeStyles)()({block:{display:"block"}});function br({checked:e,disabled:t,label:o,onChange:n}){let{classes:r}=oc();return hr.default.createElement(pn.FormControlLabel,{disabled:t,className:r.block,control:hr.default.createElement(pn.Checkbox,{checked:e,onChange:n}),label:o})}me();var nc=(0,ka.makeStyles)()({textAreaFont:{fontFamily:"Courier New",whiteSpace:"pre"}});function yr({structureName:e,structureSequence:t,isoformSequences:o}){let{classes:n}=nc(),[r,i]=(0,Gt.useState)(!1),s=Object.fromEntries(Object.entries(o).map(([m,d])=>[m,{...d,seq:te(d.seq)}])),l=Object.entries(s).find(([m,d])=>t===d.seq),a=`${e} (structure residues)`,u=(0,Pa.max)([a.length,...Object.entries(s).map(([m,d])=>Se(d.feature).length)]);return Gt.default.createElement(Gt.default.Fragment,null,Gt.default.createElement(br,{onChange:m=>{i(m.target.checked)},label:"Show in FASTA format?",checked:r}),Gt.default.createElement(Aa.TextField,{variant:"outlined",multiline:!0,minRows:5,maxRows:10,fullWidth:!0,value:r?[`>${a}
15
- ${t}`,...Object.values(s).map(({feature:m,seq:d})=>`>${Se(m)}
14
+ `});function Ki({showControls:e,model:t}){let o=(0,yt.useRef)(null),n=(0,yt.useRef)(null),[r,i]=(0,yt.useState)(),[s,l]=(0,yt.useState)(!0);return(0,yt.useEffect)(()=>{let a={cancelled:!1};return(async()=>{try{if(!o.current)return;let{GeometryExport:u,MAQualityAssessment:m,PluginConfig:d,PluginSpec:c,DefaultPluginUISpec:y,createPluginUI:w,renderReact18:h}=await ge(),b=document.createElement("div");o.current.append(b),a.host=b;let f=y(),g=await w({target:b,render:h,spec:{...y(),behaviors:[...f.behaviors,c.Behavior(u),c.Behavior(m)],layout:{initial:{controlsDisplay:"reactive",showControls:e}},config:[[d.Viewport.ShowExpand,!1]]}});await g.initialized,a.cancelled?(g.dispose(),b.remove()):(a.plugin=g,n.current=g,t?.setMolstarPluginContext(g))}catch(u){console.error(u),i(u)}finally{l(!1)}})(),()=>{a.cancelled=!0,n.current=null,t&&(0,km.isAlive)(t)&&t.setMolstarPluginContext(void 0),a.plugin?.dispose(),a.host?.remove()}},[]),(0,yt.useEffect)(()=>{let a={cancelled:!1};return(async()=>{let u=n.current;if(u){let{PluginCommands:m}=await ge();a.cancelled||await m.Layout.Update(u,{state:{showControls:e}})}})(),()=>{a.cancelled=!0}},[e]),{parentRef:o,error:r,loading:s}}var yt,km,Cm=S(()=>{"use strict";yt=p(x()),km=p(zo());Ht()});var Im={};vt(Im,{default:()=>Pg});var at,$t,Yi,Mm,vg,Tg,Pg,Fm=S(()=>{"use strict";at=p(x()),$t=p(Oe()),Yi=p(_());nu();Tm();Am();Cm();Mm=document.createElement("style");Mm.append(Pm);document.head.append(Mm);vg=(0,Yi.observer)(function({model:t}){let{showControls:o}=t,{parentRef:n,error:r,loading:i}=Ki({showControls:o,model:t});return r?at.default.createElement($t.ErrorMessage,{error:r}):at.default.createElement(Tg,{model:t,parentRef:n,loading:i})}),Tg=(0,Yi.observer)(function({model:t,parentRef:o,loading:n}){let{width:r,height:i,error:s,structures:l}=t,a=!n&&l.every(u=>!u.alignmentPending);return at.default.createElement("div",{style:{background:"#ccc"},"data-testid":a?"protein-view-ready":"protein-view-loading"},s?at.default.createElement($t.ErrorMessage,{error:s}):null,n?at.default.createElement($t.LoadingEllipses,{message:"Loading protein viewer"}):at.default.createElement(vm,{model:t}),at.default.createElement("div",{ref:o,style:{position:"relative",width:r,height:i}}),at.default.createElement($t.ResizeHandle,{style:{height:4,background:"grey"},onDrag:u=>t.setHeight(t.height+u)}),at.default.createElement(ou,{model:t}))}),Pg=vg});var Hm={};vt(Hm,{default:()=>nr});var Nm,rr,Vm,Bm,nr,Um=S(()=>{"use strict";Nm=p(an()),rr=p(te()),Vm=p(ln()),Bm=p(pn()),nr=class extends Nm.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let{features:t}=JSON.parse(await(0,Vm.openLocation)(this.getConf("location")).readFile("utf8")),o=this.getConf("scoreField");return t.map(({begin:n,end:r,...i},s)=>({...i,uniqueId:`feat-${s}`,start:+n,end:+r+1,score:o==="population_frequency"?i.populationFrequencies?.[0]?.frequency:o==="variant_impact_score"?i.predictions?.[0]?.score:void 0,description:i.descriptions?.map(l=>l.value).join(","),name:[i.mutatedType?`${i.wildType}->${i.mutatedType}`:`${i.wildType}->del`]}))}async loadData(t={}){return this.feats??=this.loadDataP().catch(o=>{throw this.feats=void 0,o}),this.feats}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,Bm.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,rr.doesIntersect2)(a.start,a.end,r,i)&&n.next(new rr.SimpleFeature({...a,refName:s}));n.complete()})}freeResources(){}}});var Cg={};vt(Cg,{default:()=>ir});var zm=p(ns());var Qs=p(x());var ct=p(x()),Zs=p(_());var fs=p(x()),hs=p(te()),bs=p(_());var us=p(x()),ms=p(te()),cs=p(_());var ls=p(tt()),ps=(0,ls.makeStyles)()({highlight:{height:"100%",background:"rgba(255,255,0,0.2)",border:"1px solid rgba(50,50,0,0.2)",position:"absolute",zIndex:99,textAlign:"center",pointerEvents:"none",overflow:"hidden"},thinborder:{border:"1px solid black"}});function Zo(e){return e.views.find(o=>o.type==="ProteinView")}var $m=(0,cs.observer)(function({assemblyName:t,start:o,end:n,refName:r,model:i}){let{cx:s,classes:l}=ps(),{assemblyManager:a}=(0,ms.getSession)(i),{offsetPx:u}=i,d=a.get(t)?.getCanonicalRefName(r)??r,c=i.bpToPx({refName:d,coord:o}),y=i.bpToPx({refName:d,coord:n});if(c&&y){let w=Math.max(Math.abs(y.offsetPx-c.offsetPx),3),h=Math.min(c.offsetPx,y.offsetPx)-u;return us.default.createElement("div",{className:s(l.highlight,w<=3?l.thinborder:void 0),style:{left:h,width:w}})}else return null}),Tt=$m;Ut();var Xm=(0,bs.observer)(function({model:t}){let o=(0,hs.getSession)(t),{views:n,hovered:r}=o;if(Pt(r)&&n.some(i=>i.type==="ProteinView")){let{assemblyNames:i}=t,{coord:s,refName:l}=r.hoverPosition;return fs.default.createElement(Tt,{model:t,start:s-1,end:s,refName:l,assemblyName:i[0]})}return null}),ys=Xm;var ks=p(x()),on=p(te()),Cs=p(_());tn();Ut();ko();var Qm=(0,Cs.observer)(function({model:t}){let o=(0,on.getSession)(t),{hovered:n}=o,{assemblyNames:r,id:i}=t;if(!r[0])return null;let l=Gt.get(i);if(!l||!Pt(n))return null;let{coord:a}=n.hoverPosition,u=new on.SimpleFeature(l.feature),m=oo(u),{g2p:d}=m,c=d[a-1];return c===void 0?null:ks.default.createElement(Tt,{model:t,start:c,end:c+1,refName:l.uniprotId,assemblyName:l.uniprotId})}),Ms=Qm;var Is=p(x()),Fs=p(te()),Ls=p(_());tn();Ut();var ec=(0,Ls.observer)(function({model:t}){let o=(0,Fs.getSession)(t),{hovered:n}=o,{assemblyNames:r,id:i}=t;if(!Pt(n))return null;let{coord:s,refName:l}=n.hoverPosition;if(Gt.getByUniprotId(l,o)?.connectedViewId!==i)return null;let u=r[0];if(!u)return null;let m=Gt.getGenomeHighlightForProteinPosition(l,s-1,o);return m?Is.default.createElement(Tt,{model:t,start:m.start,end:m.end,refName:m.refName,assemblyName:u}):null}),Es=ec;var fr=p(x()),hr=p(_());var nn=p(x()),qs=p(te()),Ds=p(_());var tc=(0,Ds.observer)(function({model:t,field:o}){let n=(0,qs.getSession)(t),{assemblyManager:r}=n,{assemblyNames:i}=t,s=Zo(n),l=i[0];return(l?r.get(l):void 0)&&l?nn.default.createElement(nn.default.Fragment,null,s?.structures.flatMap((u,m)=>u[o].map((d,c)=>nn.default.createElement(Tt,{key:`${d.refName}-${d.start}-${d.end}-${m}-${c}`,start:d.start,end:d.end,refName:d.refName,assemblyName:l,model:t})))):null}),gr=tc;var Ns=(0,hr.observer)(function({model:t}){return fr.default.createElement(gr,{model:t,field:"clickGenomeHighlights"})}),Vs=(0,hr.observer)(function({model:t}){return fr.default.createElement(gr,{model:t,field:"hoverGenomeHighlights"})});var Js=p(x()),Ks=p(te()),ro=p(to()),Ys=p(_());function oc(e){return e.replace(/[-.]/g,"")}function Bs(e,t){return e&&t?[...e].find(([,o])=>oc(o)===t)?.[0]:void 0}ce();var sc=(0,Ys.observer)(function({model:t}){let o=(0,Ks.getSession)(t),{views:n}=o,r=Zo(o),i=r?.connectedMsaViewId,s=i?n.find(l=>l.id===i):void 0;return(0,Js.useEffect)(()=>{if(!r||!s)return;let l=[],a;if(l.push((0,ro.autorun)(()=>{let u=r.primaryStructure?.structureSequences?.[0];a=Bs(s.rowMap,u===void 0?void 0:oe(u))})),s.setMousePos){let{setMousePos:u}=s;l.push((0,ro.autorun)(()=>{let m=r.primaryStructure;if(m){let d=m.structureSeqHoverPos,c=d!==void 0&&a!==void 0&&s.seqPosToVisibleCol?s.seqPosToVisibleCol(a,d):d;u(c)}}))}return l.push((0,ro.autorun)(()=>{let u=s.mouseCol,m=r.primaryStructure;if(m&&!(0,ro.untracked)(()=>!!m.alignmentHoverRange)){let c=u!==void 0&&a!==void 0&&s.visibleColToSeqPos?s.visibleColToSeqPos(a,u):u;m.setHoveredPosition(c===void 0?void 0:{structureSeqPos:c})}})),()=>{l.forEach(u=>{u()})}},[r,s]),null}),$s=sc;var ac=(0,Zs.observer)(function({model:t}){return ct.default.createElement(ct.default.Fragment,null,ct.default.createElement(Ns,{model:t}),ct.default.createElement(Vs,{model:t}),ct.default.createElement(Es,{model:t}),ct.default.createElement(Ms,{model:t}),ct.default.createElement(ys,{model:t}),ct.default.createElement($s,{model:t}))}),Xs=ac;function yr(e){e.addToExtensionPoint("LinearGenomeView-TracksContainerComponent",(t,{model:o})=>[...t,Qs.default.createElement(Xs,{key:"highlight_protein_viewer_protein3d",model:o})])}var ca=p(sn());var oa=p(io());var lc=(0,oa.ConfigurationSchema)("AlphaFoldConfidenceAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}}},{explicitlyTyped:!0}),na=lc;function wr(e){e.addAdapterType(()=>new ca.default({name:"AlphaFoldConfidenceAdapter",displayName:"AlphaFoldConfidence adapter",configSchema:na,getAdapterClass:()=>Promise.resolve().then(()=>(ma(),ua)).then(t=>t.default)}))}var Sa=p(sn());var da=p(io());var pc=(0,da.ConfigurationSchema)("AlphaMissensePathogenicityAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}}},{explicitlyTyped:!0}),ga=pc;function xr(e){e.addAdapterType(()=>new Sa.default({name:"AlphaMissensePathogenicityAdapter",displayName:"AlphaMissensePathogenicity adapter",configSchema:ga,getAdapterClass:()=>Promise.resolve().then(()=>(xa(),wa)).then(t=>t.default)}))}var Jn=p(te());Ct();var Aa=p(Mt(),1),ka=(0,ke.createSvgIcon)((0,Aa.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add");var he=p(x()),bp=p(Oe()),Rn=p(te()),vo=p(I());var J=p(x()),zn=p(Oe()),Dt=p(I()),_l=p(_()),Rl=p(tt());var Le=p(x()),Io=p(I());var so=p(x()),qa=p(I());var zt=p(x()),Fa=p(te()),La=p(I()),Ea=p(tt());var Sr=p(x()),dn=p(I()),Ia=p(tt()),uc=(0,Ia.makeStyles)()({block:{display:"block"}});function vr({checked:e,disabled:t,label:o,onChange:n}){let{classes:r}=uc();return Sr.default.createElement(dn.FormControlLabel,{disabled:t,className:r.block,control:Sr.default.createElement(dn.Checkbox,{checked:e,onChange:n}),label:o})}ce();var mc=(0,Ea.makeStyles)()({textAreaFont:{fontFamily:"Courier New",whiteSpace:"pre"}});function Tr({structureName:e,structureSequence:t,isoformSequences:o}){let{classes:n}=mc(),[r,i]=(0,zt.useState)(!1),s=Object.fromEntries(Object.entries(o).map(([m,d])=>[m,{...d,seq:oe(d.seq)}])),l=Object.entries(s).find(([m,d])=>t===d.seq),a=`${e} (structure residues)`,u=(0,Fa.max)([a.length,...Object.entries(s).map(([m,d])=>Ae(d.feature).length)]);return zt.default.createElement(zt.default.Fragment,null,zt.default.createElement(vr,{onChange:m=>{i(m.target.checked)},label:"Show in FASTA format?",checked:r}),zt.default.createElement(La.TextField,{variant:"outlined",multiline:!0,minRows:5,maxRows:10,fullWidth:!0,value:r?[`>${a}
15
+ ${t}`,...Object.values(s).map(({feature:m,seq:d})=>`>${Ae(m)}
16
16
  ${d}`)].join(`
17
- `):[`${a.padEnd(u)}${l?"*":" "} ${t}`,l?`${Se(l[1].feature).padEnd(u)}* ${l[1].seq}`:void 0,...Object.entries(s).filter(([m])=>m!==l?.[0]).map(([m,d])=>`${Se(d.feature).padEnd(u)} ${d.seq}`)].filter(m=>!!m).join(`
18
- `),slotProps:{input:{readOnly:!0,classes:{input:n.textAreaFont}}}}))}function Po({structureSequence:e,structureName:t,isoformSequences:o}){let[n,r]=(0,ro.useState)(!1);return ro.default.createElement("div",{style:{margin:10}},ro.default.createElement(Ca.Button,{variant:"contained",color:"primary",onClick:()=>{r(!n)}},n?"Hide all isoform protein sequences":"Show all isoform protein sequences"),n?ro.default.createElement(yr,{structureSequence:e,structureName:t,isoformSequences:o}):null)}var wr=p(x());Pt();var Ma=p(At(),1),Ia=(0,ve.createSvgIcon)((0,Ma.jsx)("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3z"}),"OpenInNew");var Fa=p(E());function Te(e){let{children:t,...o}=e;return wr.default.createElement(Fa.Link,{...o,target:"_blank",rel:"noreferrer"},t," ",wr.default.createElement(Ia,{fontSize:"small"}))}me();function rc({uniprotId:e}){return Fe.default.createElement(Ao.Typography,null,"No structure found for this UniProtID in AlphaFoldDB"," ",Fe.default.createElement(Te,{href:`https://alphafold.ebi.ac.uk/search/text/${e}`},"(search for results)"))}function xr({uniprotId:e,selectedTranscript:t,structureSequence:o,isoformSequences:n,url:r}){return e?Fe.default.createElement(Fe.default.Fragment,null,Fe.default.createElement("div",null,Fe.default.createElement(Ao.Typography,null,"UniProt link:"," ",Fe.default.createElement(Te,{href:`https://www.uniprot.org/uniprotkb/${e}/entry`},e)),Fe.default.createElement(Ao.Typography,null,"AlphaFoldDB link: ",Fe.default.createElement(Te,{href:r},r))),o?Fe.default.createElement(Po,{structureSequence:o,structureName:e,isoformSequences:n}):Fe.default.createElement(rc,{uniprotId:e})):Fe.default.createElement(Ao.Typography,null,"Searching"," ",t?Se(t):"transcript"," ","for UniProt ID")}var kt=p(x()),et=p(E());me();function ic(e){let t=en(e);return t==="refseq"?e.startsWith("NM_")||e.startsWith("XM_")?`${e} (RefSeq mRNA)`:e.startsWith("NR_")||e.startsWith("XR_")?`${e} (RefSeq ncRNA)`:e.startsWith("NP_")||e.startsWith("XP_")?`${e} (RefSeq protein)`:`${e} (RefSeq)`:t==="ensembl"?e.includes("G")?`${e} (Ensembl gene)`:e.includes("T")?`${e} (Ensembl transcript)`:e.includes("P")?`${e} (Ensembl protein)`:`${e} (Ensembl)`:t==="hgnc"?`${e} (HGNC)`:t==="ccds"?`${e} (CCDS)`:e}function Sr({recognizedIds:e,geneName:t,selectedId:o,onSelectedIdChange:n}){let[r,i]=(0,kt.useState)(!1),s=[{value:"auto",label:"Auto (try all)"},...e.map(l=>({value:l,label:ic(l)}))];return t&&s.push({value:`gene:${t}`,label:`${t} (gene name)`}),e.length===0&&!t?null:r?kt.default.createElement(et.FormControl,{size:"small"},kt.default.createElement(et.InputLabel,null,"Query UniProt by"),kt.default.createElement(et.Select,{value:o,label:"Query UniProt by",onChange:l=>{n(l.target.value)}},s.map(l=>kt.default.createElement(et.MenuItem,{key:l.value,value:l.value},l.label)))):kt.default.createElement(et.Button,{size:"small",variant:"text",onClick:()=>{i(!0)}},"Choose identifier to query...")}var Pe=p(x()),Qa=p(Ge());Pt();var Ea=p(At(),1),La=(0,ve.createSvgIcon)((0,Ea.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");var Ct=p(E());var ut=p(x()),Ee=p(E());function vr({open:e,onClose:t,options:o}){return ut.default.createElement(Ee.Dialog,{open:e,onClose:t},ut.default.createElement(Ee.DialogTitle,null,"Launch options"),ut.default.createElement(Ee.DialogContent,null,ut.default.createElement(Ee.MenuList,null,o.map(n=>ut.default.createElement(Ee.MenuItem,{key:n.key,onClick:n.onClick},ut.default.createElement("div",null,ut.default.createElement(Ee.Typography,{variant:"body1"},n.title),ut.default.createElement(Ee.Typography,{variant:"body2",color:"text.secondary"},n.description)))))))}var Mr=p(x()),Ga=p(E());var C=p(x());Pt();var qa=p(At(),1),un=(0,ve.createSvgIcon)((0,qa.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings");var P=p(E());Ar();var kr={NEEDLEMAN_WUNSCH:"needleman_wunsch",SMITH_WATERMAN:"smith_waterman"},ko="smith_waterman",pc=["needleman_wunsch","smith_waterman"];function Ha(e){return pc.find(t=>t===e)??ko}var Ua={needleman_wunsch:"Needleman-Wunsch",smith_waterman:"Smith-Waterman"};function Cr({value:e,onChange:t,onManualAlignment:o}){let[n,r]=(0,C.useState)(!1),[i,s]=(0,C.useState)(0),[l,a]=(0,C.useState)(e),[u,m]=(0,C.useState)(""),[d,c]=(0,C.useState)(),w=()=>{a(e),m(""),c(void 0),s(0),r(!0)},y=()=>{if(i===0)t(l);else if(i===1&&u.trim()&&o)try{let b=mn(u.trim());o(b)}catch(b){c(`Failed to parse alignment: ${b}`);return}r(!1)},f=()=>{a(e),m(""),c(void 0),r(!1)};return C.default.createElement(C.default.Fragment,null,C.default.createElement(P.IconButton,{onClick:w,size:"small",title:"Alignment settings"},C.default.createElement(un,null)),C.default.createElement(P.Dialog,{open:n,onClose:f,maxWidth:"sm",fullWidth:!0},C.default.createElement(P.DialogTitle,null,"Alignment Settings"),C.default.createElement(P.DialogContent,null,C.default.createElement(P.Tabs,{value:i,onChange:(b,h)=>{s(h)},sx:{mb:2}},C.default.createElement(P.Tab,{label:"Automatic"}),C.default.createElement(P.Tab,{label:"Manual",disabled:!o})),i===0?C.default.createElement(C.default.Fragment,null,C.default.createElement(P.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Choose the algorithm for aligning transcript sequences to protein structures."),C.default.createElement(P.FormControl,{component:"fieldset"},C.default.createElement(P.FormLabel,{component:"legend"},"Algorithm"),C.default.createElement(P.RadioGroup,{value:l,onChange:b=>{a(b.target.value)}},C.default.createElement(P.FormControlLabel,{value:kr.SMITH_WATERMAN,control:C.default.createElement(P.Radio,null),label:"Smith-Waterman (local alignment)"}),C.default.createElement(P.Typography,{variant:"caption",color:"text.secondary",sx:{ml:4,mt:-1,mb:1}},"Finds best matching region. Recommended for most use cases."),C.default.createElement(P.FormControlLabel,{value:kr.NEEDLEMAN_WUNSCH,control:C.default.createElement(P.Radio,null),label:"Needleman-Wunsch (global alignment)"}),C.default.createElement(P.Typography,{variant:"caption",color:"text.secondary",sx:{ml:4,mt:-1,mb:1}},"End-to-end alignment. Use when sequences should align completely.")))):C.default.createElement(C.default.Fragment,null,C.default.createElement(P.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Paste a pre-computed alignment in Clustal format. The first sequence should be the transcript and the second should be the structure."),C.default.createElement(P.TextField,{multiline:!0,rows:10,fullWidth:!0,placeholder:`Example:
17
+ `):[`${a.padEnd(u)}${l?"*":" "} ${t}`,l?`${Ae(l[1].feature).padEnd(u)}* ${l[1].seq}`:void 0,...Object.entries(s).filter(([m])=>m!==l?.[0]).map(([m,d])=>`${Ae(d.feature).padEnd(u)} ${d.seq}`)].filter(m=>!!m).join(`
18
+ `),slotProps:{input:{readOnly:!0,classes:{input:n.textAreaFont}}}}))}function Mo({structureSequence:e,structureName:t,isoformSequences:o}){let[n,r]=(0,so.useState)(!1);return so.default.createElement("div",{style:{margin:10}},so.default.createElement(qa.Button,{variant:"contained",color:"primary",onClick:()=>{r(!n)}},n?"Hide all isoform protein sequences":"Show all isoform protein sequences"),n?so.default.createElement(Tr,{structureSequence:e,structureName:t,isoformSequences:o}):null)}var Pr=p(x());Ct();var Da=p(Mt(),1),Na=(0,ke.createSvgIcon)((0,Da.jsx)("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3z"}),"OpenInNew");var Va=p(I());function Ce(e){let{children:t,...o}=e;return Pr.default.createElement(Va.Link,{...o,target:"_blank",rel:"noreferrer"},t," ",Pr.default.createElement(Na,{fontSize:"small"}))}ce();function cc({uniprotId:e}){return Le.default.createElement(Io.Typography,null,"No structure found for this UniProtID in AlphaFoldDB"," ",Le.default.createElement(Ce,{href:`https://alphafold.ebi.ac.uk/search/text/${e}`},"(search for results)"))}function Ar({uniprotId:e,selectedTranscript:t,structureSequence:o,isoformSequences:n,url:r}){return e?Le.default.createElement(Le.default.Fragment,null,Le.default.createElement("div",null,Le.default.createElement(Io.Typography,null,"UniProt link:"," ",Le.default.createElement(Ce,{href:`https://www.uniprot.org/uniprotkb/${e}/entry`},e)),Le.default.createElement(Io.Typography,null,"AlphaFoldDB link: ",Le.default.createElement(Ce,{href:r},r))),o?Le.default.createElement(Mo,{structureSequence:o,structureName:e,isoformSequences:n}):Le.default.createElement(cc,{uniprotId:e})):Le.default.createElement(Io.Typography,null,"Searching"," ",t?Ae(t):"transcript"," ","for UniProt ID")}var It=p(x()),nt=p(I());ce();function dc(e){let t=rn(e);return t==="refseq"?e.startsWith("NM_")||e.startsWith("XM_")?`${e} (RefSeq mRNA)`:e.startsWith("NR_")||e.startsWith("XR_")?`${e} (RefSeq ncRNA)`:e.startsWith("NP_")||e.startsWith("XP_")?`${e} (RefSeq protein)`:`${e} (RefSeq)`:t==="ensembl"?e.includes("G")?`${e} (Ensembl gene)`:e.includes("T")?`${e} (Ensembl transcript)`:e.includes("P")?`${e} (Ensembl protein)`:`${e} (Ensembl)`:t==="hgnc"?`${e} (HGNC)`:t==="ccds"?`${e} (CCDS)`:e}function kr({recognizedIds:e,geneName:t,selectedId:o,onSelectedIdChange:n}){let[r,i]=(0,It.useState)(!1),s=[{value:"auto",label:"Auto (try all)"},...e.map(l=>({value:l,label:dc(l)}))];return t&&s.push({value:`gene:${t}`,label:`${t} (gene name)`}),e.length===0&&!t?null:r?It.default.createElement(nt.FormControl,{size:"small"},It.default.createElement(nt.InputLabel,null,"Query UniProt by"),It.default.createElement(nt.Select,{value:o,label:"Query UniProt by",onChange:l=>{n(l.target.value)}},s.map(l=>It.default.createElement(nt.MenuItem,{key:l.value,value:l.value},l.label)))):It.default.createElement(nt.Button,{size:"small",variant:"text",onClick:()=>{i(!0)}},"Choose identifier to query...")}var re=p(x()),al=p(Oe());Ct();var Ba=p(Mt(),1),Ha=(0,ke.createSvgIcon)((0,Ba.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");Ct();var Ua=p(Mt(),1),ao=(0,ke.createSvgIcon)((0,Ua.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings");var je=p(I());var dt=p(x()),Ee=p(I());function Cr({open:e,onClose:t,options:o}){return dt.default.createElement(Ee.Dialog,{open:e,onClose:t},dt.default.createElement(Ee.DialogTitle,null,"Launch options"),dt.default.createElement(Ee.DialogContent,null,dt.default.createElement(Ee.MenuList,null,o.map(n=>dt.default.createElement(Ee.MenuItem,{key:n.key,onClick:n.onClick},dt.default.createElement("div",null,dt.default.createElement(Ee.Typography,{variant:"body1"},n.title),dt.default.createElement(Ee.Typography,{variant:"body2",color:"text.secondary"},n.description)))))))}var ze=p(x()),de=p(I());fn();function Mr({open:e,onClose:t}){let[o,n]=(0,ze.useState)(()=>lo());return ze.default.createElement(de.Dialog,{open:e,onClose:()=>{t()}},ze.default.createElement(de.DialogTitle,null,"Launch settings"),ze.default.createElement(de.DialogContent,null,ze.default.createElement(de.FormGroup,null,ze.default.createElement(de.FormControlLabel,{control:ze.default.createElement(de.Checkbox,{checked:o}),label:"Open protein view side-by-side with the genome view",onChange:(r,i)=>{n(i),Oa(i)}})),ze.default.createElement(de.Typography,{variant:"body2",color:"text.secondary"},"When enabled, launching a protein view places it to the right of the connected genome view in a split layout instead of stacking it below.")),ze.default.createElement(de.DialogActions,null,ze.default.createElement(de.Button,{variant:"contained",onClick:()=>{t()}},"Close")))}var Dr=p(x()),Ka=p(I());var C=p(x());var P=p(I());Lr();var Er={NEEDLEMAN_WUNSCH:"needleman_wunsch",SMITH_WATERMAN:"smith_waterman"},Fo="smith_waterman",yc=["needleman_wunsch","smith_waterman"];function Ra(e){return yc.find(t=>t===e)??Fo}var Ja={needleman_wunsch:"Needleman-Wunsch",smith_waterman:"Smith-Waterman"};function qr({value:e,onChange:t,onManualAlignment:o}){let[n,r]=(0,C.useState)(!1),[i,s]=(0,C.useState)(0),[l,a]=(0,C.useState)(e),[u,m]=(0,C.useState)(""),[d,c]=(0,C.useState)(),y=()=>{a(e),m(""),c(void 0),s(0),r(!0)},w=()=>{if(i===0)t(l);else if(i===1&&u.trim()&&o)try{let b=hn(u.trim());o(b)}catch(b){c(`Failed to parse alignment: ${b}`);return}r(!1)},h=()=>{a(e),m(""),c(void 0),r(!1)};return C.default.createElement(C.default.Fragment,null,C.default.createElement(P.IconButton,{onClick:y,size:"small",title:"Alignment settings"},C.default.createElement(ao,null)),C.default.createElement(P.Dialog,{open:n,onClose:h,maxWidth:"sm",fullWidth:!0},C.default.createElement(P.DialogTitle,null,"Alignment Settings"),C.default.createElement(P.DialogContent,null,C.default.createElement(P.Tabs,{value:i,onChange:(b,f)=>{s(f)},sx:{mb:2}},C.default.createElement(P.Tab,{label:"Automatic"}),C.default.createElement(P.Tab,{label:"Manual",disabled:!o})),i===0?C.default.createElement(C.default.Fragment,null,C.default.createElement(P.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Choose the algorithm for aligning transcript sequences to protein structures."),C.default.createElement(P.FormControl,{component:"fieldset"},C.default.createElement(P.FormLabel,{component:"legend"},"Algorithm"),C.default.createElement(P.RadioGroup,{value:l,onChange:b=>{a(b.target.value)}},C.default.createElement(P.FormControlLabel,{value:Er.SMITH_WATERMAN,control:C.default.createElement(P.Radio,null),label:"Smith-Waterman (local alignment)"}),C.default.createElement(P.Typography,{variant:"caption",color:"text.secondary",sx:{ml:4,mt:-1,mb:1}},"Finds best matching region. Recommended for most use cases."),C.default.createElement(P.FormControlLabel,{value:Er.NEEDLEMAN_WUNSCH,control:C.default.createElement(P.Radio,null),label:"Needleman-Wunsch (global alignment)"}),C.default.createElement(P.Typography,{variant:"caption",color:"text.secondary",sx:{ml:4,mt:-1,mb:1}},"End-to-end alignment. Use when sequences should align completely.")))):C.default.createElement(C.default.Fragment,null,C.default.createElement(P.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Paste a pre-computed alignment in Clustal format. The first sequence should be the transcript and the second should be the structure."),C.default.createElement(P.TextField,{multiline:!0,rows:10,fullWidth:!0,placeholder:`Example:
19
19
  a MKAAYLSMFGKEDHKPFGD
20
20
  |||||||||||||||||||
21
- b MKAAYLSMFGKEDHKPFGD`,value:u,onChange:b=>{m(b.target.value),c(void 0)},sx:{fontFamily:"monospace",fontSize:12}}),d?C.default.createElement(P.Typography,{color:"error",variant:"body2",sx:{mt:1}},d):null)),C.default.createElement(P.DialogActions,null,C.default.createElement(P.Button,{onClick:f},"Cancel"),C.default.createElement(P.Button,{onClick:y,variant:"contained",color:"primary",disabled:i===1&&!u.trim()},i===0?"Save":"Apply Alignment"))))}function Co({alignmentAlgorithm:e,onAlignmentAlgorithmChange:t}){return Mr.default.createElement(Ga.Typography,{variant:"body2",sx:{mr:2,display:"flex",alignItems:"center"}},"Transcript and structure sequences differ, will run"," ",Ua[e]??e," ","alignment",Mr.default.createElement(Cr,{value:e,onChange:t}))}async function cn(e,t,o){try{await e(),t?.()}catch(n){console.error(n),o?.(n)}}function Oa({uniprotId:e,userSelectedProteinSequence:t,selectedTranscript:o,isLoading:n,error:r}){return n||r?[]:[!e&&"No UniProt ID found",!t&&"Could not compute protein sequence (feature may be missing CDS subfeatures)",!o&&"No transcript selected"].filter(i=>typeof i=="string")}We();function Er({handleClose:e,uniprotId:t,userSelectedProteinSequence:o,selectedTranscript:n,url:r,confidenceUrl:i,feature:s,view:l,session:a,alignmentAlgorithm:u,onAlignmentAlgorithmChange:m,sequencesMatch:d,isLoading:c,error:w}){let[y,f]=(0,Pe.useState)(!1),[b,h]=(0,Pe.useState)(),g=!c&&!!t&&!!o&&!!n,v=Oa({uniprotId:t,userSelectedProteinSequence:o,selectedTranscript:n,isLoading:c,error:w}),D=()=>{f(!1)},T={session:a,view:l,feature:s,selectedTranscript:n,uniprotId:t},z={...T,url:r,userProvidedTranscriptSequence:o?.seq,alignmentAlgorithm:u},G=$=>()=>{D(),cn($,e,h)},xe=G(()=>{Ot(z)}),L=G(async()=>{await fn({...T,confidenceUrl:i})}),ke=G(()=>{Io(T)}),ie=G(()=>{Xa(z)}),ue=[{key:"3d",title:"Launch 3D protein structure view",description:"View protein structure with genome-to-structure coordinate mapping",onClick:xe},{key:"1d",title:"Launch 1D protein annotation view",description:"View protein features and annotations as a linear track",onClick:L},...hn()?[{key:"msa",title:"Launch MSA view",description:"View AlphaFold a3m multiple sequence alignment",onClick:ke},{key:"3d-msa",title:"Launch 3D structure + MSA view",description:"Launch both views with AlphaFold a3m MSA",onClick:ie}]:[]];return Pe.default.createElement(Pe.default.Fragment,null,b?Pe.default.createElement(Qa.ErrorMessage,{error:b}):null,d===!1?Pe.default.createElement(Co,{alignmentAlgorithm:u,onAlignmentAlgorithmChange:m}):null,Pe.default.createElement(Ct.Button,{variant:"contained",color:"secondary",size:"small",onClick:()=>{e()}},"Cancel"),!g&&v.length>0?Pe.default.createElement(Ct.Typography,{variant:"body2",color:"error",sx:{mr:2}},v.join(". ")):null,Pe.default.createElement(Ct.ButtonGroup,{variant:"contained",color:"primary",size:"small"},Pe.default.createElement(Ct.Button,{disabled:!g,onClick:xe},"Launch"),Pe.default.createElement(Ct.Button,{disabled:!g,onClick:()=>{f(!0)},"aria-label":"More launch options"},Pe.default.createElement(La,null))),Pe.default.createElement(vr,{open:y,onClose:D,options:ue}))}var so=p(x()),Lr=p(E());function qr({isLoading:e,uniprotId:t,url:o,hasProteinSequence:n,sequenceSearchType:r}){return e?null:!t&&n?so.default.createElement(Lr.Typography,{color:"warning.main"},"No AlphaFold structure found for this sequence (searched by"," ",r==="md5"?"MD5 checksum":"full sequence",")"):t?so.default.createElement(Lr.Typography,{color:"success.main"},"Found AlphaFold structure: ",t,o?so.default.createElement(so.default.Fragment,null," ","-"," ",so.default.createElement("a",{href:o,target:"_blank",rel:"noreferrer"},o)):null):null}var Fo=p(x()),ao=p(E());me();function zt({val:e,setVal:t,isoforms:o,isoformSequences:n,structureSequence:r,feature:i,disabled:s}){let l=to(i),a=[],u=[],m=[];for(let c of o){let w=n[c.id()];w?r&&te(w.seq)===r?a.push(c):u.push(c):m.push(c)}let d=(c,w)=>n[w.id()].seq.length-n[c.id()].seq.length;return Fo.default.createElement(ao.TextField,{value:e??"",onChange:c=>{t(c.target.value)},label:"Choose transcript isoform",select:!0,disabled:s},a.toSorted(d).map(c=>Fo.default.createElement(ao.MenuItem,{value:c.id(),key:c.id()},l," - ",Se(c)," (",n[c.id()].seq.length,"aa) (matches structure residues)")),u.toSorted(d).map(c=>Fo.default.createElement(ao.MenuItem,{value:c.id(),key:c.id()},l," - ",Se(c)," (",n[c.id()].seq.length,"aa)")),m.map(c=>Fo.default.createElement(ao.MenuItem,{value:c.id(),key:c.id(),disabled:!0},l," - ",Se(c)," (no data)")))}var U=p(x()),j=p(E());function Dr({lookupMode:e,onLookupModeChange:t,manualUniprotId:o,onManualUniprotIdChange:n,featureUniprotId:r,hasProteinSequence:i,sequenceSearchType:s,onSequenceSearchTypeChange:l,endContent:a}){return U.default.createElement(U.default.Fragment,null,U.default.createElement("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap"}},U.default.createElement(j.FormControl,{component:"fieldset"},U.default.createElement(j.RadioGroup,{row:!0,value:e,onChange:u=>{t(u.target.value)}},r&&U.default.createElement(j.FormControlLabel,{value:"feature",control:U.default.createElement(j.Radio,null),label:`From feature (${r})`}),U.default.createElement(j.FormControlLabel,{value:"auto",control:U.default.createElement(j.Radio,null),label:"Auto-detect using UniProt ID mapping API"}),U.default.createElement(j.FormControlLabel,{value:"manual",control:U.default.createElement(j.Radio,null),label:"Enter manually"}),i&&U.default.createElement(j.FormControlLabel,{value:"sequence",control:U.default.createElement(j.Radio,null),label:"Search sequence against AlphaFoldDB API"}))),a),e==="manual"&&U.default.createElement("div",null,U.default.createElement(j.TextField,{label:"UniProt ID",variant:"outlined",placeholder:"e.g. P68871",size:"small",value:o,onChange:u=>{n(u.target.value)}})),e==="sequence"&&s&&l&&U.default.createElement("div",null,U.default.createElement(j.FormControl,{component:"fieldset"},U.default.createElement(j.RadioGroup,{row:!0,value:s,onChange:u=>{l(u.target.value)}},U.default.createElement(j.FormControlLabel,{value:"md5",control:U.default.createElement(j.Radio,null),label:"Exact match"}),U.default.createElement(j.FormControlLabel,{value:"sequence",control:U.default.createElement(j.Radio,null),label:"Fuzzy match"}))),U.default.createElement(j.Typography,{variant:"body2",color:"text.secondary"},"May not find the canonical UniProt entry.")),e==="manual"&&!o&&U.default.createElement(j.Typography,{variant:"body2",color:"text.secondary"},"Search"," ",U.default.createElement(Te,{href:"https://www.uniprot.org/"},"UniProt")," or ",U.default.createElement(Te,{href:"https://alphafold.ebi.ac.uk/"},"AlphaFoldDB")))}var R=p(x()),q=p(E()),el=p(Xe());var bc=(0,el.makeStyles)()({tableContainer:{maxHeight:200},headerCell:{fontWeight:"bold",backgroundColor:"#f5f5f5"},selectedRow:{backgroundColor:"#e3f2fd"},clickableRow:{cursor:"pointer","&:hover":{backgroundColor:"#f5f5f5"}},reviewedChip:{backgroundColor:"#4caf50",color:"white",fontSize:"0.7rem",height:20},unreviewedChip:{backgroundColor:"#ff9800",color:"white",fontSize:"0.7rem",height:20}});function Nr({entries:e,selectedAccession:t,onSelect:o}){let{classes:n,cx:r}=bc();return e.length===0?null:R.default.createElement("div",null,R.default.createElement(q.Typography,{variant:"body2",sx:{mb:1}},"Found ",e.length," UniProt entries. Select one:"),R.default.createElement(q.TableContainer,{component:q.Paper,className:n.tableContainer},R.default.createElement(q.Table,{size:"small",stickyHeader:!0},R.default.createElement(q.TableHead,null,R.default.createElement(q.TableRow,null,R.default.createElement(q.TableCell,{className:n.headerCell,padding:"checkbox"}),R.default.createElement(q.TableCell,{className:n.headerCell},"Accession"),R.default.createElement(q.TableCell,{className:n.headerCell},"Gene"),R.default.createElement(q.TableCell,{className:n.headerCell},"Organism"),R.default.createElement(q.TableCell,{className:n.headerCell},"Protein"),R.default.createElement(q.TableCell,{className:n.headerCell},"Status"))),R.default.createElement(q.TableBody,null,e.map(i=>R.default.createElement(q.TableRow,{key:i.accession,onClick:()=>{o(i.accession)},className:r(n.clickableRow,t===i.accession&&n.selectedRow)},R.default.createElement(q.TableCell,{padding:"checkbox"},R.default.createElement(q.Radio,{checked:t===i.accession,size:"small"})),R.default.createElement(q.TableCell,null,R.default.createElement(Te,{href:`https://www.uniprot.org/uniprotkb/${i.accession}`},i.accession)),R.default.createElement(q.TableCell,null,i.geneName??"-"),R.default.createElement(q.TableCell,null,i.organismName??"-"),R.default.createElement(q.TableCell,null,i.proteinName?i.proteinName.length>40?`${i.proteinName.slice(0,40)}...`:i.proteinName:"-"),R.default.createElement(q.TableCell,null,R.default.createElement(q.Chip,{label:i.isReviewed?"Reviewed":"Unreviewed",size:"small",className:i.isReviewed?n.reviewedChip:n.unreviewedChip}))))))))}var bo=p(x());go();var Ft={revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1};async function In({plugin:e,trajectory:t,options:o}){let n=await e.builders.structure.createModel(t);return await e.builders.structure.hierarchy.applyPreset(t,"all-models",{useDefaultIfSingleModel:!0,representationPresetParams:o?.representationParams}),{model:n}}async function Fn({data:e,format:t="pdb",options:o,plugin:n}){let r=await n.builders.data.rawData({data:e,label:o?.dataLabel}),i=await n.builders.structure.parseTrajectory(r,t);return In({plugin:n,trajectory:i,options:o})}async function En({url:e,format:t="mmcif",isBinary:o,options:n,plugin:r}){let i=await r.builders.data.download({url:e,isBinary:o},{state:{isGhost:!0}}),s=await r.builders.structure.parseTrajectory(i,t);return In({plugin:r,trajectory:s,options:n})}function Ln(e){return e.obj?.data.sequence.sequences.map(t=>Array.from(t.sequence.label.toArray()).join(""))}Vt();async function kl(e){let{createPluginUI:t,renderReact18:o}=await ce(),n=document.createElement("div"),r=await t({target:n,render:o});try{return await e(r)}finally{r.unmount(),n.remove()}}function _c(e){let t=e.lastIndexOf("."),o=t>=0?e.slice(t+1).toLowerCase():"";return o==="cif"||o==="mmcif"||o==="bcif"?"mmcif":"pdb"}async function Rc({file:e,url:t}){return kl(async o=>{let{model:n}=e?await Fn({data:await e.text(),plugin:o,format:_c(e.name)}):await En({url:t,plugin:o});return Ln(n)})}function qo({file:e,url:t}){let o=e?["structure-file",e.name,e.size,e.lastModified]:t?["structure-url",t]:null,{data:n,error:r,isLoading:i,isValidating:s}=tt(o,async()=>{let l=await Rc({file:e,url:t});if(!l)throw new Error("no sequences detected in file");return l},{...Ft,keepPreviousData:!0});return{error:r,isLoading:i,isValidating:s,sequences:n}}We();function Qr({uniprotId:e}){let t=e?io(e):void 0,o=e?$a(e):void 0,{sequences:n,isLoading:r,isValidating:i,error:s}=qo({url:t});return{isLoading:r,isValidating:i,error:s,url:t,confidenceUrl:o,structureSequence:n?.[0]}}var Fl=p(x());go();async function Jc(e,t){let o=await fetch(e,t);if(!o.ok)throw new Error(`HTTP ${o.status} fetching ${e} ${await o.text()}`);return o}async function fo(e,t){return(await Jc(e,t)).json()}function Cl(e){return e.reason instanceof Error?e.reason:new Error("Aborted",{cause:e.reason})}function Ml(e,t){return new Promise((o,n)=>{if(t?.aborted)n(Cl(t));else{let r=setTimeout(o,e);t?.addEventListener("abort",()=>{clearTimeout(r),n(Cl(t))},{once:!0})}})}function Et(e,t){let o=(e&65535)+(t&65535);return(e>>16)+(t>>16)+(o>>16)<<16|o&65535}function Kc(e,t){return e<<t|e>>>32-t}function qn(e,t,o,n,r,i){return Et(Kc(Et(Et(t,e),Et(n,i)),r),o)}function fe(e,t,o,n,r,i,s){return qn(t&o|~t&n,e,t,r,i,s)}function he(e,t,o,n,r,i,s){return qn(t&n|o&~n,e,t,r,i,s)}function be(e,t,o,n,r,i,s){return qn(t^o^n,e,t,r,i,s)}function ye(e,t,o,n,r,i,s){return qn(o^(t|~n),e,t,r,i,s)}function $c(e,t){e[t>>5]|=128<<t%32,e[(t+64>>>9<<4)+14]=t;let o=1732584193,n=-271733879,r=-1732584194,i=271733878;for(let s=0;s<e.length;s+=16){let l=o,a=n,u=r,m=i;o=fe(o,n,r,i,e[s]??0,7,-680876936),i=fe(i,o,n,r,e[s+1]??0,12,-389564586),r=fe(r,i,o,n,e[s+2]??0,17,606105819),n=fe(n,r,i,o,e[s+3]??0,22,-1044525330),o=fe(o,n,r,i,e[s+4]??0,7,-176418897),i=fe(i,o,n,r,e[s+5]??0,12,1200080426),r=fe(r,i,o,n,e[s+6]??0,17,-1473231341),n=fe(n,r,i,o,e[s+7]??0,22,-45705983),o=fe(o,n,r,i,e[s+8]??0,7,1770035416),i=fe(i,o,n,r,e[s+9]??0,12,-1958414417),r=fe(r,i,o,n,e[s+10]??0,17,-42063),n=fe(n,r,i,o,e[s+11]??0,22,-1990404162),o=fe(o,n,r,i,e[s+12]??0,7,1804603682),i=fe(i,o,n,r,e[s+13]??0,12,-40341101),r=fe(r,i,o,n,e[s+14]??0,17,-1502002290),n=fe(n,r,i,o,e[s+15]??0,22,1236535329),o=he(o,n,r,i,e[s+1]??0,5,-165796510),i=he(i,o,n,r,e[s+6]??0,9,-1069501632),r=he(r,i,o,n,e[s+11]??0,14,643717713),n=he(n,r,i,o,e[s]??0,20,-373897302),o=he(o,n,r,i,e[s+5]??0,5,-701558691),i=he(i,o,n,r,e[s+10]??0,9,38016083),r=he(r,i,o,n,e[s+15]??0,14,-660478335),n=he(n,r,i,o,e[s+4]??0,20,-405537848),o=he(o,n,r,i,e[s+9]??0,5,568446438),i=he(i,o,n,r,e[s+14]??0,9,-1019803690),r=he(r,i,o,n,e[s+3]??0,14,-187363961),n=he(n,r,i,o,e[s+8]??0,20,1163531501),o=he(o,n,r,i,e[s+13]??0,5,-1444681467),i=he(i,o,n,r,e[s+2]??0,9,-51403784),r=he(r,i,o,n,e[s+7]??0,14,1735328473),n=he(n,r,i,o,e[s+12]??0,20,-1926607734),o=be(o,n,r,i,e[s+5]??0,4,-378558),i=be(i,o,n,r,e[s+8]??0,11,-2022574463),r=be(r,i,o,n,e[s+11]??0,16,1839030562),n=be(n,r,i,o,e[s+14]??0,23,-35309556),o=be(o,n,r,i,e[s+1]??0,4,-1530992060),i=be(i,o,n,r,e[s+4]??0,11,1272893353),r=be(r,i,o,n,e[s+7]??0,16,-155497632),n=be(n,r,i,o,e[s+10]??0,23,-1094730640),o=be(o,n,r,i,e[s+13]??0,4,681279174),i=be(i,o,n,r,e[s]??0,11,-358537222),r=be(r,i,o,n,e[s+3]??0,16,-722521979),n=be(n,r,i,o,e[s+6]??0,23,76029189),o=be(o,n,r,i,e[s+9]??0,4,-640364487),i=be(i,o,n,r,e[s+12]??0,11,-421815835),r=be(r,i,o,n,e[s+15]??0,16,530742520),n=be(n,r,i,o,e[s+2]??0,23,-995338651),o=ye(o,n,r,i,e[s]??0,6,-198630844),i=ye(i,o,n,r,e[s+7]??0,10,1126891415),r=ye(r,i,o,n,e[s+14]??0,15,-1416354905),n=ye(n,r,i,o,e[s+5]??0,21,-57434055),o=ye(o,n,r,i,e[s+12]??0,6,1700485571),i=ye(i,o,n,r,e[s+3]??0,10,-1894986606),r=ye(r,i,o,n,e[s+10]??0,15,-1051523),n=ye(n,r,i,o,e[s+1]??0,21,-2054922799),o=ye(o,n,r,i,e[s+8]??0,6,1873313359),i=ye(i,o,n,r,e[s+15]??0,10,-30611744),r=ye(r,i,o,n,e[s+6]??0,15,-1560198380),n=ye(n,r,i,o,e[s+13]??0,21,1309151649),o=ye(o,n,r,i,e[s+4]??0,6,-145523070),i=ye(i,o,n,r,e[s+11]??0,10,-1120210379),r=ye(r,i,o,n,e[s+2]??0,15,718787259),n=ye(n,r,i,o,e[s+9]??0,21,-343485551),o=Et(o,l),n=Et(n,a),r=Et(r,u),i=Et(i,m)}return[o,n,r,i]}function Yc(e){let t="0123456789abcdef",o="";for(let n=0;n<e.length*4;n++)o+=t.charAt(e[n>>2]>>n%4*8+4&15)+t.charAt(e[n>>2]>>n%4*8&15);return o}function Zc(e){let t=[];for(let n=0;n<e.length*8;n+=8)t[n>>5]=(t[n>>5]??0)|(e.charCodeAt(n/8)&255)<<n%32;return t}function Il(e){return Yc($c(Zc(e),e.length*8))}me();function ei({sequence:e,searchType:t,enabled:o=!0}){let n=(0,Fl.useMemo)(()=>{if(!e)return;let a=te(e.toUpperCase());return t==="md5"?Il(a):a},[e,t]),{data:r,error:i,isLoading:s,isValidating:l}=tt(o&&n?`https://alphafold.ebi.ac.uk/api/sequence/summary?id=${encodeURIComponent(n)}&type=${t}`:null,fo,{...Ft,keepPreviousData:!0});return{isLoading:s,isValidating:l,result:r,uniprotId:r?.uniprotAccession,cifUrl:r?.cifUrl,plddtDocUrl:r?.plddtDocUrl,structureSequence:r?.sequence,error:i}}var Dn=p(x());function ti(e,t=300){let[o,n]=(0,Dn.useState)(e);return(0,Dn.useEffect)(()=>{let r=setTimeout(()=>{n(e)},t);return()=>{clearTimeout(r)}},[e,t]),o}var ql=p(ee());go();var Ll=p(no()),ho=p(ee());function Xc(e,t){return e.map(o=>t.slice(o.start,o.end)).join("")}function Qc({cds:e,sequence:t,codonTable:o}){let n=Xc(e,t),r="";for(let i=0;i<n.length;i+=3)r+=o[n.slice(i,i+3)]??"&";return r}function ed(e,t){return e.map(o=>({...o,start:t-o.end,end:t-o.start})).toSorted((o,n)=>o.start-n.start)}function El(e){return`${e.start}-${e.end}`}function td(e){return e.filter((t,o,n)=>!o||El(t)!==El(n[o-1]))}function od({feature:e,seq:t}){let o=e.get("start"),n=e.get("strand"),r=e.get("subfeatures")??[],i=td(r.toSorted((s,l)=>s.get("start")-l.get("start")).map(s=>({start:s.get("start")-o,end:s.get("end")-o,type:s.get("type")})).filter(s=>s.type==="CDS"));return Qc({cds:n===-1?ed(i,t.length):i,sequence:n===-1?(0,ho.revcom)(t):t,codonTable:(0,ho.generateCodonTable)(ho.defaultCodonTable)})}async function Nn({feature:e,session:t,assemblyName:o}){let n=e.get("start"),r=e.get("end"),i=e.get("refName"),{assemblyManager:s,rpcManager:l}=t,a=o?await s.waitForAssembly(o):void 0;if(!a)throw new Error("assembly not found");let u="getSequence",m=await l.call(u,"CoreGetFeatures",{adapterConfig:(0,Ll.getConf)(a,["sequence","adapter"]),sessionId:u,regions:[{start:n,end:r,refName:a.getCanonicalRefName(i),assemblyName:o}]}),[d]=m,c=d?.get("seq");return c?od({seq:c,feature:e}):void 0}me();function oi({feature:e,view:t}){let{data:o,error:n,isLoading:r}=tt(["isoform-sequences",e.id(),t?.assemblyNames?.[0]],async()=>{let i=Ut(e),s=[],a=(await Promise.all(i.map(async u=>{try{let m=await Nn({session:(0,ql.getSession)(t),assemblyName:t?.assemblyNames?.[0],feature:u});return m?[u.id(),{feature:u,seq:m}]:void 0}catch(m){console.error("[useIsoformProteinSequences] error for",u.id(),m),s.push(m);return}}))).filter(u=>u!==void 0);if(a.length===0&&s.length===i.length&&s.length>0)throw s[0];return Object.fromEntries(a)},{...Ft,keepPreviousData:!0});return{isLoading:r,isoformSequences:o,error:n}}var Do=p(x());me();function ni({options:e,isoformSequences:t,structureSequence:o,resetKey:n}){let[r,i]=(0,Do.useState)(),[s,l]=(0,Do.useState)(n);n!==s&&(l(n),i(void 0));let a=(0,Do.useMemo)(()=>t!==void 0?Gs({options:e,isoformSequences:t,structureSequence:o})?.id():void 0,[e,o,t]);return{userSelection:r??a,setUserSelection:i}}me();function jt({feature:e,view:t,structureSequence:o,resetKey:n}){let r=Ut(e),{isoformSequences:i,isLoading:s,error:l}=oi({feature:e,view:t}),{userSelection:a,setUserSelection:u}=ni({options:r,isoformSequences:i,structureSequence:o,resetKey:n}),m=r.find(c=>Ls(c)===a),d=a?i?.[a]:void 0;return{transcripts:r,isoformSequences:i,isLoading:s,error:l,selectedTranscriptId:a,setSelectedTranscriptId:u,selectedTranscript:m,selectedIsoform:d}}go();me();var nd="accession,id,gene_names,organism_name,protein_name,reviewed";function rd(e){return{accession:e.primaryAccession,id:e.uniProtkbId,geneName:e.genes?.[0]?.geneName?.value,organismName:e.organism?.commonName??e.organism?.scientificName,proteinName:e.proteinDescription?.recommendedName?.fullName?.value,isReviewed:e.entryType==="UniProtKB reviewed (Swiss-Prot)"}}function id(e){switch(en(e)){case"ensembl":return`xref:ensembl-${e}`;case"refseq":return`xref:refseq-${e}`;case"ccds":return`xref:ccds-${e}`;case"hgnc":return`xref:hgnc-${e.replace("HGNC:","")}`;default:return}}async function Nl(e,t=10){let o=`https://rest.uniprot.org/uniprotkb/search?query=${encodeURIComponent(e)}&fields=${nd}&size=${t}`;return(await fo(o)).results.map(rd)}async function sd(e){let t=id(e);if(!t)return{entries:[],error:void 0};try{return{entries:await Nl(t),error:void 0}}catch(o){return console.error(`xref search failed for ${e}:`,o),{entries:[],error:o}}}function Dl(e){let t=new Set,o=[];for(let n of e)t.has(n.accession)||(t.add(n.accession),o.push(n));return o}async function Vl({recognizedIds:e=[],geneId:t,geneName:o,organismId:n=9606}){let r=new Set(e),i=t?To(t):void 0;i&&vt(i)&&r.add(i);let s=await Promise.all([...r].map(sd)),l=Dl(s.flatMap(m=>m.entries)),a=s.filter(m=>m.error!==void 0),u;if(!l.some(m=>m.isReviewed)&&o)try{let m=`gene:${o}+AND+organism_id:${n}+AND+reviewed:true`,d=await Nl(m,5);l=Dl([...l,...d])}catch(m){console.error(`gene name search failed for ${o}:`,m),u=m}if(l.length===0){let m=r.size+(o?1:0),d=a.length+(u?1:0);if(m>0&&m===d)throw u??a[0]?.error}return l.toSorted((m,d)=>Number(d.isReviewed)-Number(m.isReviewed))}me();function ri({recognizedIds:e=[],geneId:t,geneName:o,selectedQueryId:n="auto",enabled:r=!0}){let i=[],s;n==="auto"?(i=e,s=o):n.startsWith("gene:")?s=n.replace("gene:",""):vt(n)&&(i=[n]);let l=i.some(d=>vt(d))||!!s,{data:a,error:u,isLoading:m}=tt(r&&l?["uniprotSearch",n,i.join(","),s]:null,async()=>Vl({recognizedIds:i,geneId:t,geneName:s}),{...Ft,keepPreviousData:!0});return{entries:a??[],isLoading:m,error:u,hasValidId:l}}function Vn({selectedQueryId:e,recognizedIds:t,geneName:o,joinWord:n="and"}){return e==="auto"?[t.length>0?`database ID${t.length>1?"s":""} "${t.join('", "')}"`:void 0,o?`gene name "${o}"`:void 0].filter(Boolean).join(` ${n} `):e.startsWith("gene:")?`gene name "${e.replace("gene:","")}"`:`database ID "${e}"`}me();function ii({feature:e,view:t}){let[o,n]=(0,bo.useState)("auto"),[r,i]=(0,bo.useState)(""),s=Us(e),[l,a]=(0,bo.useState)("auto"),[u,m]=(0,bo.useState)("md5"),[d,c]=(0,bo.useState)(),w=s.uniprotId,y=o==="auto"&&w?"feature":o,f=y==="sequence",b=y==="auto",{entries:h,isLoading:g,error:v}=ri({recognizedIds:s.recognizedIds,geneId:s.geneId,geneName:s.geneName,selectedQueryId:l,enabled:b}),D=ti(r,400),T=h[0]?.accession,z=y==="feature"?w:b?d??T:y==="manual"?D:void 0,{isLoading:G,isValidating:xe,error:L,url:ke,confidenceUrl:ie,structureSequence:ue}=Qr({uniprotId:f?void 0:z}),{transcripts:$,isoformSequences:ne,isLoading:Ie,error:Ve,selectedTranscriptId:it,setSelectedTranscriptId:ze,selectedTranscript:Ce,selectedIsoform:Be}=jt({feature:e,view:t,structureSequence:ue,resetKey:z}),{uniprotId:tr,cifUrl:ht,plddtDocUrl:st,structureSequence:$t,isLoading:Yt,isValidating:Zt,error:at}=ei({sequence:Be?.seq,searchType:u,enabled:f}),Nt=f?ht:ke,or=f?st:ie,bt=f?$t:ue,Xt=f?tr:z,nr=f?Zt:xe,_o=[g&&"Looking up UniProt ID",Ie&&"Loading protein sequences from transcript isoforms",!f&&G&&"Fetching AlphaFold structure URL",f&&Yt&&"Searching AlphaFoldDB by sequence"].filter(N=>!!N),yt=_o.length>0,Ri=yt?void 0:Ve??v??L??at;return{lookupMode:y,setLookupMode:n,manualUniprotId:r,setManualUniprotId:i,selectedQueryId:l,setSelectedQueryId:a,sequenceSearchType:u,setSequenceSearchType:m,selectedUniprotId:d,setSelectedUniprotId:c,userSelection:it,setUserSelection:ze,transcriptOptions:$,selectedTranscript:Ce,isoformSequences:ne,userSelectedProteinSequence:Be,uniprotEntries:h,recognizedIds:s.recognizedIds,geneName:s.geneName,featureUniprotId:w,uniprotId:Xt,url:Nt,confidenceUrl:or,structureSequence:bt,error:Ri,loadingStatuses:_o,isSequenceSearchLoading:Yt,showIdentifierSelector:b&&(s.recognizedIds.length>0||!!s.geneName),showStructureSelectors:!!ne&&!!Ce&&(f||!!(bt&&Xt)),sequencesMatch:!nr&&Be?.seq&&bt?te(Be.seq)===bt:void 0,searchDescription:Vn({selectedQueryId:l,recognizedIds:s.recognizedIds,geneName:s.geneName}),searchDescriptionOr:Vn({selectedQueryId:l,recognizedIds:s.recognizedIds,geneName:s.geneName,joinWord:"or"}),selectedTableAccession:d??T,showUniprotResults:!!ne&&b&&(h.length>0||g),showNoResults:!!ne&&b&&!g&&h.length===0,showSequenceSearchStatus:f,showAlphaFoldDBSearchStatus:!!bt&&!!Xt&&!f,isLoading:yt}}var ad=(0,Hl.makeStyles)()({dialogContent:{width:"80em","& > *":{marginBottom:20},"& > *:last-child":{marginBottom:0}},selectorsRow:{display:"flex",flexDirection:"row",gap:20,alignItems:"flex-start"}}),ld=(0,Bl.observer)(function({feature:t,session:o,view:n,handleClose:r,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}){let{classes:l}=ad(),a=ii({feature:t,view:n});return J.default.createElement(J.default.Fragment,null,J.default.createElement(Lt.DialogContent,{className:l.dialogContent},a.error?J.default.createElement(Bn.ErrorMessage,{error:a.error}):null,J.default.createElement(Dr,{lookupMode:a.lookupMode,onLookupModeChange:a.setLookupMode,manualUniprotId:a.manualUniprotId,onManualUniprotIdChange:a.setManualUniprotId,featureUniprotId:a.featureUniprotId,hasProteinSequence:!!a.userSelectedProteinSequence?.seq,sequenceSearchType:a.sequenceSearchType,onSequenceSearchTypeChange:a.setSequenceSearchType,endContent:a.showIdentifierSelector?J.default.createElement(Sr,{recognizedIds:a.recognizedIds,geneName:a.geneName,selectedId:a.selectedQueryId,onSelectedIdChange:a.setSelectedQueryId}):null}),a.loadingStatuses.map(u=>J.default.createElement(Bn.LoadingEllipses,{key:u,variant:"subtitle2",message:u})),a.showUniprotResults&&J.default.createElement(J.default.Fragment,null,J.default.createElement(Lt.Typography,{variant:"body2",color:"textSecondary"},"Searched UniProt by ",a.searchDescription),J.default.createElement(Nr,{entries:a.uniprotEntries,selectedAccession:a.selectedTableAccession,onSelect:a.setSelectedUniprotId}),J.default.createElement(Lt.Typography,{variant:"body2",color:"textSecondary"},"If you don't see the entry you're looking for, try a different identifier above or search"," ",J.default.createElement(Te,{href:"https://www.uniprot.org/"},"UniProt")," ",'directly and use "Enter manually".')),a.showNoResults&&J.default.createElement(Lt.Typography,{variant:"body2",color:"textSecondary"},"No UniProt entries found for ",a.searchDescriptionOr,". Try a different identifier above, or search"," ",J.default.createElement(Te,{href:"https://www.uniprot.org/"},"UniProt")," ",'directly and use "Enter manually" above, or use "Search sequence against AlphaFoldDB API" if available.'),a.showStructureSelectors&&J.default.createElement(J.default.Fragment,null,J.default.createElement("div",{className:l.selectorsRow},J.default.createElement(zt,{val:a.userSelection,setVal:a.setUserSelection,structureSequence:a.structureSequence,feature:t,isoforms:a.transcriptOptions,isoformSequences:a.isoformSequences})),a.showSequenceSearchStatus&&J.default.createElement(qr,{isLoading:a.isSequenceSearchLoading,uniprotId:a.uniprotId,url:a.url,hasProteinSequence:!!a.userSelectedProteinSequence,sequenceSearchType:a.sequenceSearchType}),a.showAlphaFoldDBSearchStatus&&J.default.createElement(xr,{uniprotId:a.uniprotId,selectedTranscript:a.selectedTranscript,structureSequence:a.structureSequence,isoformSequences:a.isoformSequences,url:a.url}))),J.default.createElement(Lt.DialogActions,null,J.default.createElement(Er,{handleClose:r,uniprotId:a.uniprotId,userSelectedProteinSequence:a.userSelectedProteinSequence,selectedTranscript:a.selectedTranscript,url:a.url,confidenceUrl:a.confidenceUrl,feature:t,view:n,session:o,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s,sequencesMatch:a.sequencesMatch,isLoading:a.isLoading,error:a.error})))}),Ul=ld;var K=p(x()),No=p(Ge()),Me=p(E()),Kl=p(_()),$l=p(Xe());var ot=p(x()),Ke=p(E()),jl=p(Xe());var si=[{id:"pdb100",label:"PDB (100% redundancy)"},{id:"afdb-swissprot",label:"AlphaFold DB (Swiss-Prot)"},{id:"afdb50",label:"AlphaFold DB (50% redundancy)"},{id:"afdb-proteome",label:"AlphaFold DB (Proteomes)"},{id:"cath50",label:"CATH (50% redundancy)"},{id:"mgnify_esm30",label:"MGnify ESM30"},{id:"bfmd",label:"BFMD"},{id:"gmgcl_id",label:"GMGCL"}],Hn=["pdb100","afdb-swissprot"];async function Gl({aaSequence:e,signal:t}){let o=e.split(`
22
- `).filter(s=>!s.startsWith(">")).join("").replace(/\s/g,"").replace(/\*/g,"").toUpperCase().replace(/[^ACDEFGHIKLMNPQRSTVWY]/g,""),n=await fetch(`https://3di.foldseek.com/predict/${encodeURIComponent(o)}`,{signal:t});if(!n.ok)throw new Error(`3Di prediction failed: ${n.status} ${await n.text()}`);let i=(await n.text()).replace(/^["'/\s]+/,"").replace(/["'/\s]+$/,"").trim();return{aaSequence:o,di3Sequence:i}}async function Ol({aaSequence:e,di3Sequence:t,databases:o,signal:n}){let r=`>query
21
+ b MKAAYLSMFGKEDHKPFGD`,value:u,onChange:b=>{m(b.target.value),c(void 0)},sx:{fontFamily:"monospace",fontSize:12}}),d?C.default.createElement(P.Typography,{color:"error",variant:"body2",sx:{mt:1}},d):null)),C.default.createElement(P.DialogActions,null,C.default.createElement(P.Button,{onClick:h},"Cancel"),C.default.createElement(P.Button,{onClick:w,variant:"contained",color:"primary",disabled:i===1&&!u.trim()},i===0?"Save":"Apply Alignment"))))}function Lo({alignmentAlgorithm:e,onAlignmentAlgorithmChange:t}){return Dr.default.createElement(Ka.Typography,{variant:"body2",sx:{mr:2,display:"flex",alignItems:"center"}},"Transcript and structure sequences differ, will run"," ",Ja[e]??e," ","alignment",Dr.default.createElement(qr,{value:e,onChange:t}))}async function bn(e,t,o){try{await e(),t?.()}catch(n){console.error(n),o?.(n)}}function Ya({uniprotId:e,userSelectedProteinSequence:t,selectedTranscript:o,isLoading:n,error:r}){return n||r?[]:[!e&&"No UniProt ID found",!t&&"Could not compute protein sequence (feature may be missing CDS subfeatures)",!o&&"No transcript selected"].filter(i=>typeof i=="string")}Je();function Br({handleClose:e,uniprotId:t,userSelectedProteinSequence:o,selectedTranscript:n,url:r,confidenceUrl:i,feature:s,view:l,session:a,alignmentAlgorithm:u,onAlignmentAlgorithmChange:m,sequencesMatch:d,isLoading:c,error:y}){let[w,h]=(0,re.useState)(!1),[b,f]=(0,re.useState)(!1),[g,v]=(0,re.useState)(),D=!c&&!!t&&!!o&&!!n,T=Ya({uniprotId:t,userSelectedProteinSequence:o,selectedTranscript:n,isLoading:c,error:y}),O=()=>{h(!1)},z={session:a,view:l,feature:s,selectedTranscript:n,uniprotId:t},ve={...z,url:r,userProvidedTranscriptSequence:o?.seq,alignmentAlgorithm:u},M=Pe=>()=>{O(),bn(Pe,e,v)},Te=M(()=>{jt(ve)}),se=M(async()=>{await xn({...z,confidenceUrl:i})}),me=M(()=>{qo(z)}),Y=M(()=>{sl(ve)}),$=[{key:"3d",title:"Launch 3D protein structure view",description:"View protein structure with genome-to-structure coordinate mapping",onClick:Te},{key:"1d",title:"Launch 1D protein annotation view",description:"View protein features and annotations as a linear track",onClick:se},...Sn()?[{key:"msa",title:"Launch MSA view",description:"View AlphaFold a3m multiple sequence alignment",onClick:me},{key:"3d-msa",title:"Launch 3D structure + MSA view",description:"Launch both views with AlphaFold a3m MSA",onClick:Y}]:[]];return re.default.createElement(re.default.Fragment,null,g?re.default.createElement(al.ErrorMessage,{error:g}):null,d===!1?re.default.createElement(Lo,{alignmentAlgorithm:u,onAlignmentAlgorithmChange:m}):null,re.default.createElement(je.Tooltip,{title:"Launch settings"},re.default.createElement(je.IconButton,{size:"small","aria-label":"Launch settings",onClick:()=>{f(!0)}},re.default.createElement(ao,{fontSize:"small"}))),re.default.createElement(je.Button,{variant:"contained",color:"secondary",size:"small",onClick:()=>{e()}},"Cancel"),!D&&T.length>0?re.default.createElement(je.Typography,{variant:"body2",color:"error",sx:{mr:2}},T.join(". ")):null,re.default.createElement(je.ButtonGroup,{variant:"contained",color:"primary",size:"small"},re.default.createElement(je.Button,{disabled:!D,onClick:Te},"Launch"),re.default.createElement(je.Button,{disabled:!D,onClick:()=>{h(!0)},"aria-label":"More launch options"},re.default.createElement(Ha,null))),re.default.createElement(Cr,{open:w,onClose:O,options:$}),re.default.createElement(Mr,{open:b,onClose:()=>{f(!1)}}))}var uo=p(x()),Hr=p(I());function Ur({isLoading:e,uniprotId:t,url:o,hasProteinSequence:n,sequenceSearchType:r}){return e?null:!t&&n?uo.default.createElement(Hr.Typography,{color:"warning.main"},"No AlphaFold structure found for this sequence (searched by"," ",r==="md5"?"MD5 checksum":"full sequence",")"):t?uo.default.createElement(Hr.Typography,{color:"success.main"},"Found AlphaFold structure: ",t,o?uo.default.createElement(uo.default.Fragment,null," ","-"," ",uo.default.createElement("a",{href:o,target:"_blank",rel:"noreferrer"},o)):null):null}var Do=p(x()),mo=p(I());ce();function Wt({val:e,setVal:t,isoforms:o,isoformSequences:n,structureSequence:r,feature:i,disabled:s}){let l=no(i),a=[],u=[],m=[];for(let c of o){let y=n[c.id()];y?r&&oe(y.seq)===r?a.push(c):u.push(c):m.push(c)}let d=(c,y)=>n[y.id()].seq.length-n[c.id()].seq.length;return Do.default.createElement(mo.TextField,{value:e??"",onChange:c=>{t(c.target.value)},label:"Choose transcript isoform",select:!0,disabled:s},a.toSorted(d).map(c=>Do.default.createElement(mo.MenuItem,{value:c.id(),key:c.id()},l," - ",Ae(c)," (",n[c.id()].seq.length,"aa) (matches structure residues)")),u.toSorted(d).map(c=>Do.default.createElement(mo.MenuItem,{value:c.id(),key:c.id()},l," - ",Ae(c)," (",n[c.id()].seq.length,"aa)")),m.map(c=>Do.default.createElement(mo.MenuItem,{value:c.id(),key:c.id(),disabled:!0},l," - ",Ae(c)," (no data)")))}var U=p(x()),j=p(I());function Gr({lookupMode:e,onLookupModeChange:t,manualUniprotId:o,onManualUniprotIdChange:n,featureUniprotId:r,hasProteinSequence:i,sequenceSearchType:s,onSequenceSearchTypeChange:l,endContent:a}){return U.default.createElement(U.default.Fragment,null,U.default.createElement("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap"}},U.default.createElement(j.FormControl,{component:"fieldset"},U.default.createElement(j.RadioGroup,{row:!0,value:e,onChange:u=>{t(u.target.value)}},r&&U.default.createElement(j.FormControlLabel,{value:"feature",control:U.default.createElement(j.Radio,null),label:`From feature (${r})`}),U.default.createElement(j.FormControlLabel,{value:"auto",control:U.default.createElement(j.Radio,null),label:"Auto-detect using UniProt ID mapping API"}),U.default.createElement(j.FormControlLabel,{value:"manual",control:U.default.createElement(j.Radio,null),label:"Enter manually"}),i&&U.default.createElement(j.FormControlLabel,{value:"sequence",control:U.default.createElement(j.Radio,null),label:"Search sequence against AlphaFoldDB API"}))),a),e==="manual"&&U.default.createElement("div",null,U.default.createElement(j.TextField,{label:"UniProt ID",variant:"outlined",placeholder:"e.g. P68871",size:"small",value:o,onChange:u=>{n(u.target.value)}})),e==="sequence"&&s&&l&&U.default.createElement("div",null,U.default.createElement(j.FormControl,{component:"fieldset"},U.default.createElement(j.RadioGroup,{row:!0,value:s,onChange:u=>{l(u.target.value)}},U.default.createElement(j.FormControlLabel,{value:"md5",control:U.default.createElement(j.Radio,null),label:"Exact match"}),U.default.createElement(j.FormControlLabel,{value:"sequence",control:U.default.createElement(j.Radio,null),label:"Fuzzy match"}))),U.default.createElement(j.Typography,{variant:"body2",color:"text.secondary"},"May not find the canonical UniProt entry.")),e==="manual"&&!o&&U.default.createElement(j.Typography,{variant:"body2",color:"text.secondary"},"Search"," ",U.default.createElement(Ce,{href:"https://www.uniprot.org/"},"UniProt")," or ",U.default.createElement(Ce,{href:"https://alphafold.ebi.ac.uk/"},"AlphaFoldDB")))}var R=p(x()),q=p(I()),ll=p(tt());var kc=(0,ll.makeStyles)()({tableContainer:{maxHeight:200},headerCell:{fontWeight:"bold",backgroundColor:"#f5f5f5"},selectedRow:{backgroundColor:"#e3f2fd"},clickableRow:{cursor:"pointer","&:hover":{backgroundColor:"#f5f5f5"}},reviewedChip:{backgroundColor:"#4caf50",color:"white",fontSize:"0.7rem",height:20},unreviewedChip:{backgroundColor:"#ff9800",color:"white",fontSize:"0.7rem",height:20}});function Or({entries:e,selectedAccession:t,onSelect:o}){let{classes:n,cx:r}=kc();return e.length===0?null:R.default.createElement("div",null,R.default.createElement(q.Typography,{variant:"body2",sx:{mb:1}},"Found ",e.length," UniProt entries. Select one:"),R.default.createElement(q.TableContainer,{component:q.Paper,className:n.tableContainer},R.default.createElement(q.Table,{size:"small",stickyHeader:!0},R.default.createElement(q.TableHead,null,R.default.createElement(q.TableRow,null,R.default.createElement(q.TableCell,{className:n.headerCell,padding:"checkbox"}),R.default.createElement(q.TableCell,{className:n.headerCell},"Accession"),R.default.createElement(q.TableCell,{className:n.headerCell},"Gene"),R.default.createElement(q.TableCell,{className:n.headerCell},"Organism"),R.default.createElement(q.TableCell,{className:n.headerCell},"Protein"),R.default.createElement(q.TableCell,{className:n.headerCell},"Status"))),R.default.createElement(q.TableBody,null,e.map(i=>R.default.createElement(q.TableRow,{key:i.accession,onClick:()=>{o(i.accession)},className:r(n.clickableRow,t===i.accession&&n.selectedRow)},R.default.createElement(q.TableCell,{padding:"checkbox"},R.default.createElement(q.Radio,{checked:t===i.accession,size:"small"})),R.default.createElement(q.TableCell,null,R.default.createElement(Ce,{href:`https://www.uniprot.org/uniprotkb/${i.accession}`},i.accession)),R.default.createElement(q.TableCell,null,i.geneName??"-"),R.default.createElement(q.TableCell,null,i.organismName??"-"),R.default.createElement(q.TableCell,null,i.proteinName?i.proteinName.length>40?`${i.proteinName.slice(0,40)}...`:i.proteinName:"-"),R.default.createElement(q.TableCell,null,R.default.createElement(q.Chip,{label:i.isReviewed?"Reviewed":"Unreviewed",size:"small",className:i.isReviewed?n.reviewedChip:n.unreviewedChip}))))))))}var So=p(x());yo();var Et={revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1};async function Dn({plugin:e,trajectory:t,options:o}){let n=await e.builders.structure.createModel(t);return await e.builders.structure.hierarchy.applyPreset(t,"all-models",{useDefaultIfSingleModel:!0,representationPresetParams:o?.representationParams}),{model:n}}async function Nn({data:e,format:t="pdb",options:o,plugin:n}){let r=await n.builders.data.rawData({data:e,label:o?.dataLabel}),i=await n.builders.structure.parseTrajectory(r,t);return Dn({plugin:n,trajectory:i,options:o})}async function Vn({url:e,format:t="mmcif",isBinary:o,options:n,plugin:r}){let i=await r.builders.data.download({url:e,isBinary:o},{state:{isGhost:!0}}),s=await r.builders.structure.parseTrajectory(i,t);return Dn({plugin:r,trajectory:s,options:n})}function Bn(e){return e.obj?.data.sequence.sequences.map(t=>Array.from(t.sequence.label.toArray()).join(""))}Ht();async function Dl(e){let{createPluginUI:t,renderReact18:o}=await ge(),n=document.createElement("div"),r=await t({target:n,render:o});try{return await e(r)}finally{r.unmount(),n.remove()}}function ed(e){let t=e.lastIndexOf("."),o=t>=0?e.slice(t+1).toLowerCase():"";return o==="cif"||o==="mmcif"||o==="bcif"?"mmcif":"pdb"}async function td({file:e,url:t}){return Dl(async o=>{let{model:n}=e?await Nn({data:await e.text(),plugin:o,format:ed(e.name)}):await Vn({url:t,plugin:o});return Bn(n)})}function Bo({file:e,url:t}){let o=e?["structure-file",e.name,e.size,e.lastModified]:t?["structure-url",t]:null,{data:n,error:r,isLoading:i,isValidating:s}=rt(o,async()=>{let l=await td({file:e,url:t});if(!l)throw new Error("no sequences detected in file");return l},{...Et,keepPreviousData:!0});return{error:r,isLoading:i,isValidating:s,sequences:n}}Je();function ii({uniprotId:e}){let t=e?po(e):void 0,o=e?nl(e):void 0,{sequences:n,isLoading:r,isValidating:i,error:s}=Bo({url:t});return{isLoading:r,isValidating:i,error:s,url:t,confidenceUrl:o,structureSequence:n?.[0]}}var Hl=p(x());yo();async function od(e,t){let o=await fetch(e,t);if(!o.ok)throw new Error(`HTTP ${o.status} fetching ${e} ${await o.text()}`);return o}async function wo(e,t){return(await od(e,t)).json()}function Nl(e){return e.reason instanceof Error?e.reason:new Error("Aborted",{cause:e.reason})}function Vl(e,t){return new Promise((o,n)=>{if(t?.aborted)n(Nl(t));else{let r=setTimeout(o,e);t?.addEventListener("abort",()=>{clearTimeout(r),n(Nl(t))},{once:!0})}})}function qt(e,t){let o=(e&65535)+(t&65535);return(e>>16)+(t>>16)+(o>>16)<<16|o&65535}function nd(e,t){return e<<t|e>>>32-t}function Hn(e,t,o,n,r,i){return qt(nd(qt(qt(t,e),qt(n,i)),r),o)}function be(e,t,o,n,r,i,s){return Hn(t&o|~t&n,e,t,r,i,s)}function ye(e,t,o,n,r,i,s){return Hn(t&n|o&~n,e,t,r,i,s)}function we(e,t,o,n,r,i,s){return Hn(t^o^n,e,t,r,i,s)}function xe(e,t,o,n,r,i,s){return Hn(o^(t|~n),e,t,r,i,s)}function rd(e,t){e[t>>5]|=128<<t%32,e[(t+64>>>9<<4)+14]=t;let o=1732584193,n=-271733879,r=-1732584194,i=271733878;for(let s=0;s<e.length;s+=16){let l=o,a=n,u=r,m=i;o=be(o,n,r,i,e[s]??0,7,-680876936),i=be(i,o,n,r,e[s+1]??0,12,-389564586),r=be(r,i,o,n,e[s+2]??0,17,606105819),n=be(n,r,i,o,e[s+3]??0,22,-1044525330),o=be(o,n,r,i,e[s+4]??0,7,-176418897),i=be(i,o,n,r,e[s+5]??0,12,1200080426),r=be(r,i,o,n,e[s+6]??0,17,-1473231341),n=be(n,r,i,o,e[s+7]??0,22,-45705983),o=be(o,n,r,i,e[s+8]??0,7,1770035416),i=be(i,o,n,r,e[s+9]??0,12,-1958414417),r=be(r,i,o,n,e[s+10]??0,17,-42063),n=be(n,r,i,o,e[s+11]??0,22,-1990404162),o=be(o,n,r,i,e[s+12]??0,7,1804603682),i=be(i,o,n,r,e[s+13]??0,12,-40341101),r=be(r,i,o,n,e[s+14]??0,17,-1502002290),n=be(n,r,i,o,e[s+15]??0,22,1236535329),o=ye(o,n,r,i,e[s+1]??0,5,-165796510),i=ye(i,o,n,r,e[s+6]??0,9,-1069501632),r=ye(r,i,o,n,e[s+11]??0,14,643717713),n=ye(n,r,i,o,e[s]??0,20,-373897302),o=ye(o,n,r,i,e[s+5]??0,5,-701558691),i=ye(i,o,n,r,e[s+10]??0,9,38016083),r=ye(r,i,o,n,e[s+15]??0,14,-660478335),n=ye(n,r,i,o,e[s+4]??0,20,-405537848),o=ye(o,n,r,i,e[s+9]??0,5,568446438),i=ye(i,o,n,r,e[s+14]??0,9,-1019803690),r=ye(r,i,o,n,e[s+3]??0,14,-187363961),n=ye(n,r,i,o,e[s+8]??0,20,1163531501),o=ye(o,n,r,i,e[s+13]??0,5,-1444681467),i=ye(i,o,n,r,e[s+2]??0,9,-51403784),r=ye(r,i,o,n,e[s+7]??0,14,1735328473),n=ye(n,r,i,o,e[s+12]??0,20,-1926607734),o=we(o,n,r,i,e[s+5]??0,4,-378558),i=we(i,o,n,r,e[s+8]??0,11,-2022574463),r=we(r,i,o,n,e[s+11]??0,16,1839030562),n=we(n,r,i,o,e[s+14]??0,23,-35309556),o=we(o,n,r,i,e[s+1]??0,4,-1530992060),i=we(i,o,n,r,e[s+4]??0,11,1272893353),r=we(r,i,o,n,e[s+7]??0,16,-155497632),n=we(n,r,i,o,e[s+10]??0,23,-1094730640),o=we(o,n,r,i,e[s+13]??0,4,681279174),i=we(i,o,n,r,e[s]??0,11,-358537222),r=we(r,i,o,n,e[s+3]??0,16,-722521979),n=we(n,r,i,o,e[s+6]??0,23,76029189),o=we(o,n,r,i,e[s+9]??0,4,-640364487),i=we(i,o,n,r,e[s+12]??0,11,-421815835),r=we(r,i,o,n,e[s+15]??0,16,530742520),n=we(n,r,i,o,e[s+2]??0,23,-995338651),o=xe(o,n,r,i,e[s]??0,6,-198630844),i=xe(i,o,n,r,e[s+7]??0,10,1126891415),r=xe(r,i,o,n,e[s+14]??0,15,-1416354905),n=xe(n,r,i,o,e[s+5]??0,21,-57434055),o=xe(o,n,r,i,e[s+12]??0,6,1700485571),i=xe(i,o,n,r,e[s+3]??0,10,-1894986606),r=xe(r,i,o,n,e[s+10]??0,15,-1051523),n=xe(n,r,i,o,e[s+1]??0,21,-2054922799),o=xe(o,n,r,i,e[s+8]??0,6,1873313359),i=xe(i,o,n,r,e[s+15]??0,10,-30611744),r=xe(r,i,o,n,e[s+6]??0,15,-1560198380),n=xe(n,r,i,o,e[s+13]??0,21,1309151649),o=xe(o,n,r,i,e[s+4]??0,6,-145523070),i=xe(i,o,n,r,e[s+11]??0,10,-1120210379),r=xe(r,i,o,n,e[s+2]??0,15,718787259),n=xe(n,r,i,o,e[s+9]??0,21,-343485551),o=qt(o,l),n=qt(n,a),r=qt(r,u),i=qt(i,m)}return[o,n,r,i]}function id(e){let t="0123456789abcdef",o="";for(let n=0;n<e.length*4;n++)o+=t.charAt(e[n>>2]>>n%4*8+4&15)+t.charAt(e[n>>2]>>n%4*8&15);return o}function sd(e){let t=[];for(let n=0;n<e.length*8;n+=8)t[n>>5]=(t[n>>5]??0)|(e.charCodeAt(n/8)&255)<<n%32;return t}function Bl(e){return id(rd(sd(e),e.length*8))}ce();function si({sequence:e,searchType:t,enabled:o=!0}){let n=(0,Hl.useMemo)(()=>{if(!e)return;let a=oe(e.toUpperCase());return t==="md5"?Bl(a):a},[e,t]),{data:r,error:i,isLoading:s,isValidating:l}=rt(o&&n?`https://alphafold.ebi.ac.uk/api/sequence/summary?id=${encodeURIComponent(n)}&type=${t}`:null,wo,{...Et,keepPreviousData:!0});return{isLoading:s,isValidating:l,result:r,uniprotId:r?.uniprotAccession,cifUrl:r?.cifUrl,plddtDocUrl:r?.plddtDocUrl,structureSequence:r?.sequence,error:i}}var Un=p(x());function ai(e,t=300){let[o,n]=(0,Un.useState)(e);return(0,Un.useEffect)(()=>{let r=setTimeout(()=>{n(e)},t);return()=>{clearTimeout(r)}},[e,t]),o}var Ol=p(te());yo();var Gl=p(io()),xo=p(te());function ad(e,t){return e.map(o=>t.slice(o.start,o.end)).join("")}function ld({cds:e,sequence:t,codonTable:o}){let n=ad(e,t),r="";for(let i=0;i<n.length;i+=3)r+=o[n.slice(i,i+3)]??"&";return r}function pd(e,t){return e.map(o=>({...o,start:t-o.end,end:t-o.start})).toSorted((o,n)=>o.start-n.start)}function Ul(e){return`${e.start}-${e.end}`}function ud(e){return e.filter((t,o,n)=>!o||Ul(t)!==Ul(n[o-1]))}function md({feature:e,seq:t}){let o=e.get("start"),n=e.get("strand"),r=e.get("subfeatures")??[],i=ud(r.toSorted((s,l)=>s.get("start")-l.get("start")).map(s=>({start:s.get("start")-o,end:s.get("end")-o,type:s.get("type")})).filter(s=>s.type==="CDS"));return ld({cds:n===-1?pd(i,t.length):i,sequence:n===-1?(0,xo.revcom)(t):t,codonTable:(0,xo.generateCodonTable)(xo.defaultCodonTable)})}async function Gn({feature:e,session:t,assemblyName:o}){let n=e.get("start"),r=e.get("end"),i=e.get("refName"),{assemblyManager:s,rpcManager:l}=t,a=o?await s.waitForAssembly(o):void 0;if(!a)throw new Error("assembly not found");let u="getSequence",m=await l.call(u,"CoreGetFeatures",{adapterConfig:(0,Gl.getConf)(a,["sequence","adapter"]),sessionId:u,regions:[{start:n,end:r,refName:a.getCanonicalRefName(i),assemblyName:o}]}),[d]=m,c=d?.get("seq");return c?md({seq:c,feature:e}):void 0}ce();function li({feature:e,view:t}){let{data:o,error:n,isLoading:r}=rt(["isoform-sequences",e.id(),t?.assemblyNames?.[0]],async()=>{let i=Ot(e),s=[],a=(await Promise.all(i.map(async u=>{try{let m=await Gn({session:(0,Ol.getSession)(t),assemblyName:t?.assemblyNames?.[0],feature:u});return m?[u.id(),{feature:u,seq:m}]:void 0}catch(m){console.error("[useIsoformProteinSequences] error for",u.id(),m),s.push(m);return}}))).filter(u=>u!==void 0);if(a.length===0&&s.length===i.length&&s.length>0)throw s[0];return Object.fromEntries(a)},{...Et,keepPreviousData:!0});return{isLoading:r,isoformSequences:o,error:n}}var Ho=p(x());ce();function pi({options:e,isoformSequences:t,structureSequence:o,resetKey:n}){let[r,i]=(0,Ho.useState)(),[s,l]=(0,Ho.useState)(n);n!==s&&(l(n),i(void 0));let a=(0,Ho.useMemo)(()=>t!==void 0?Rs({options:e,isoformSequences:t,structureSequence:o})?.id():void 0,[e,o,t]);return{userSelection:r??a,setUserSelection:i}}ce();function _t({feature:e,view:t,structureSequence:o,resetKey:n}){let r=Ot(e),{isoformSequences:i,isLoading:s,error:l}=li({feature:e,view:t}),{userSelection:a,setUserSelection:u}=pi({options:r,isoformSequences:i,structureSequence:o,resetKey:n}),m=r.find(c=>Hs(c)===a),d=a?i?.[a]:void 0;return{transcripts:r,isoformSequences:i,isLoading:s,error:l,selectedTranscriptId:a,setSelectedTranscriptId:u,selectedTranscript:m,selectedIsoform:d}}yo();ce();var cd="accession,id,gene_names,organism_name,protein_name,reviewed";function dd(e){return{accession:e.primaryAccession,id:e.uniProtkbId,geneName:e.genes?.[0]?.geneName?.value,organismName:e.organism?.commonName??e.organism?.scientificName,proteinName:e.proteinDescription?.recommendedName?.fullName?.value,isReviewed:e.entryType==="UniProtKB reviewed (Swiss-Prot)"}}function gd(e){switch(rn(e)){case"ensembl":return`xref:ensembl-${e}`;case"refseq":return`xref:refseq-${e}`;case"ccds":return`xref:ccds-${e}`;case"hgnc":return`xref:hgnc-${e.replace("HGNC:","")}`;default:return}}async function jl(e,t=10){let o=`https://rest.uniprot.org/uniprotkb/search?query=${encodeURIComponent(e)}&fields=${cd}&size=${t}`;return(await wo(o)).results.map(dd)}async function fd(e){let t=gd(e);if(!t)return{entries:[],error:void 0};try{return{entries:await jl(t),error:void 0}}catch(o){return console.error(`xref search failed for ${e}:`,o),{entries:[],error:o}}}function zl(e){let t=new Set,o=[];for(let n of e)t.has(n.accession)||(t.add(n.accession),o.push(n));return o}async function Wl({recognizedIds:e=[],geneId:t,geneName:o,organismId:n=9606}){let r=new Set(e),i=t?Co(t):void 0;i&&At(i)&&r.add(i);let s=await Promise.all([...r].map(fd)),l=zl(s.flatMap(m=>m.entries)),a=s.filter(m=>m.error!==void 0),u;if(!l.some(m=>m.isReviewed)&&o)try{let m=`gene:${o}+AND+organism_id:${n}+AND+reviewed:true`,d=await jl(m,5);l=zl([...l,...d])}catch(m){console.error(`gene name search failed for ${o}:`,m),u=m}if(l.length===0){let m=r.size+(o?1:0),d=a.length+(u?1:0);if(m>0&&m===d)throw u??a[0]?.error}return l.toSorted((m,d)=>Number(d.isReviewed)-Number(m.isReviewed))}ce();function ui({recognizedIds:e=[],geneId:t,geneName:o,selectedQueryId:n="auto",enabled:r=!0}){let i=[],s;n==="auto"?(i=e,s=o):n.startsWith("gene:")?s=n.replace("gene:",""):At(n)&&(i=[n]);let l=i.some(d=>At(d))||!!s,{data:a,error:u,isLoading:m}=rt(r&&l?["uniprotSearch",n,i.join(","),s]:null,async()=>Wl({recognizedIds:i,geneId:t,geneName:s}),{...Et,keepPreviousData:!0});return{entries:a??[],isLoading:m,error:u,hasValidId:l}}function On({selectedQueryId:e,recognizedIds:t,geneName:o,joinWord:n="and"}){return e==="auto"?[t.length>0?`database ID${t.length>1?"s":""} "${t.join('", "')}"`:void 0,o?`gene name "${o}"`:void 0].filter(Boolean).join(` ${n} `):e.startsWith("gene:")?`gene name "${e.replace("gene:","")}"`:`database ID "${e}"`}ce();function mi({feature:e,view:t}){let[o,n]=(0,So.useState)("auto"),[r,i]=(0,So.useState)(""),s=_s(e),[l,a]=(0,So.useState)("auto"),[u,m]=(0,So.useState)("md5"),[d,c]=(0,So.useState)(),y=s.uniprotId,w=o==="auto"&&y?"feature":o,h=w==="sequence",b=w==="auto",{entries:f,isLoading:g,error:v}=ui({recognizedIds:s.recognizedIds,geneId:s.geneId,geneName:s.geneName,selectedQueryId:l,enabled:b}),D=ai(r,400),T=f[0]?.accession,O=w==="feature"?y:b?d??T:w==="manual"?D:void 0,{isLoading:z,isValidating:ve,error:M,url:Te,confidenceUrl:se,structureSequence:me}=ii({uniprotId:h?void 0:O}),{transcripts:Y,isoformSequences:$,isLoading:Pe,error:Be,selectedTranscriptId:lt,setSelectedTranscriptId:_e,selectedTranscript:Ie,selectedIsoform:He}=_t({feature:e,view:t,structureSequence:me,resetKey:O}),{uniprotId:sr,cifUrl:wt,plddtDocUrl:pt,structureSequence:Zt,isLoading:Xt,isValidating:Qt,error:ut}=si({sequence:He?.seq,searchType:u,enabled:h}),Bt=h?wt:Te,ar=h?pt:se,xt=h?Zt:me,eo=h?sr:O,lr=h?Qt:ve,Yo=[g&&"Looking up UniProt ID",Pe&&"Loading protein sequences from transcript isoforms",!h&&z&&"Fetching AlphaFold structure URL",h&&Xt&&"Searching AlphaFoldDB by sequence"].filter(N=>!!N),St=Yo.length>0,Xi=St?void 0:Be??v??M??ut;return{lookupMode:w,setLookupMode:n,manualUniprotId:r,setManualUniprotId:i,selectedQueryId:l,setSelectedQueryId:a,sequenceSearchType:u,setSequenceSearchType:m,selectedUniprotId:d,setSelectedUniprotId:c,userSelection:lt,setUserSelection:_e,transcriptOptions:Y,selectedTranscript:Ie,isoformSequences:$,userSelectedProteinSequence:He,uniprotEntries:f,recognizedIds:s.recognizedIds,geneName:s.geneName,featureUniprotId:y,uniprotId:eo,url:Bt,confidenceUrl:ar,structureSequence:xt,error:Xi,loadingStatuses:Yo,isSequenceSearchLoading:Xt,showIdentifierSelector:b&&(s.recognizedIds.length>0||!!s.geneName),showStructureSelectors:!!$&&!!Ie&&(h||!!(xt&&eo)),sequencesMatch:!lr&&He?.seq&&xt?oe(He.seq)===xt:void 0,searchDescription:On({selectedQueryId:l,recognizedIds:s.recognizedIds,geneName:s.geneName}),searchDescriptionOr:On({selectedQueryId:l,recognizedIds:s.recognizedIds,geneName:s.geneName,joinWord:"or"}),selectedTableAccession:d??T,showUniprotResults:!!$&&b&&(f.length>0||g),showNoResults:!!$&&b&&!g&&f.length===0,showSequenceSearchStatus:h,showAlphaFoldDBSearchStatus:!!xt&&!!eo&&!h,isLoading:St}}var hd=(0,Rl.makeStyles)()({dialogContent:{width:"80em","& > *":{marginBottom:20},"& > *:last-child":{marginBottom:0}},selectorsRow:{display:"flex",flexDirection:"row",gap:20,alignItems:"flex-start"}}),bd=(0,_l.observer)(function({feature:t,session:o,view:n,handleClose:r,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}){let{classes:l}=hd(),a=mi({feature:t,view:n});return J.default.createElement(J.default.Fragment,null,J.default.createElement(Dt.DialogContent,{className:l.dialogContent},a.error?J.default.createElement(zn.ErrorMessage,{error:a.error}):null,J.default.createElement(Gr,{lookupMode:a.lookupMode,onLookupModeChange:a.setLookupMode,manualUniprotId:a.manualUniprotId,onManualUniprotIdChange:a.setManualUniprotId,featureUniprotId:a.featureUniprotId,hasProteinSequence:!!a.userSelectedProteinSequence?.seq,sequenceSearchType:a.sequenceSearchType,onSequenceSearchTypeChange:a.setSequenceSearchType,endContent:a.showIdentifierSelector?J.default.createElement(kr,{recognizedIds:a.recognizedIds,geneName:a.geneName,selectedId:a.selectedQueryId,onSelectedIdChange:a.setSelectedQueryId}):null}),a.loadingStatuses.map(u=>J.default.createElement(zn.LoadingEllipses,{key:u,variant:"subtitle2",message:u})),a.showUniprotResults&&J.default.createElement(J.default.Fragment,null,J.default.createElement(Dt.Typography,{variant:"body2",color:"textSecondary"},"Searched UniProt by ",a.searchDescription),J.default.createElement(Or,{entries:a.uniprotEntries,selectedAccession:a.selectedTableAccession,onSelect:a.setSelectedUniprotId}),J.default.createElement(Dt.Typography,{variant:"body2",color:"textSecondary"},"If you don't see the entry you're looking for, try a different identifier above or search"," ",J.default.createElement(Ce,{href:"https://www.uniprot.org/"},"UniProt")," ",'directly and use "Enter manually".')),a.showNoResults&&J.default.createElement(Dt.Typography,{variant:"body2",color:"textSecondary"},"No UniProt entries found for ",a.searchDescriptionOr,". Try a different identifier above, or search"," ",J.default.createElement(Ce,{href:"https://www.uniprot.org/"},"UniProt")," ",'directly and use "Enter manually" above, or use "Search sequence against AlphaFoldDB API" if available.'),a.showStructureSelectors&&J.default.createElement(J.default.Fragment,null,J.default.createElement("div",{className:l.selectorsRow},J.default.createElement(Wt,{val:a.userSelection,setVal:a.setUserSelection,structureSequence:a.structureSequence,feature:t,isoforms:a.transcriptOptions,isoformSequences:a.isoformSequences})),a.showSequenceSearchStatus&&J.default.createElement(Ur,{isLoading:a.isSequenceSearchLoading,uniprotId:a.uniprotId,url:a.url,hasProteinSequence:!!a.userSelectedProteinSequence,sequenceSearchType:a.sequenceSearchType}),a.showAlphaFoldDBSearchStatus&&J.default.createElement(Ar,{uniprotId:a.uniprotId,selectedTranscript:a.selectedTranscript,structureSequence:a.structureSequence,isoformSequences:a.isoformSequences,url:a.url}))),J.default.createElement(Dt.DialogActions,null,J.default.createElement(Br,{handleClose:r,uniprotId:a.uniprotId,userSelectedProteinSequence:a.userSelectedProteinSequence,selectedTranscript:a.selectedTranscript,url:a.url,confidenceUrl:a.confidenceUrl,feature:t,view:n,session:o,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s,sequencesMatch:a.sequencesMatch,isLoading:a.isLoading,error:a.error})))}),Jl=bd;var K=p(x()),Uo=p(Oe()),Fe=p(I()),op=p(_()),np=p(tt());var it=p(x()),Ze=p(I()),Zl=p(tt());var ci=[{id:"pdb100",label:"PDB (100% redundancy)"},{id:"afdb-swissprot",label:"AlphaFold DB (Swiss-Prot)"},{id:"afdb50",label:"AlphaFold DB (50% redundancy)"},{id:"afdb-proteome",label:"AlphaFold DB (Proteomes)"},{id:"cath50",label:"CATH (50% redundancy)"},{id:"mgnify_esm30",label:"MGnify ESM30"},{id:"bfmd",label:"BFMD"},{id:"gmgcl_id",label:"GMGCL"}],jn=["pdb100","afdb-swissprot"];async function Kl({aaSequence:e,signal:t}){let o=e.split(`
22
+ `).filter(s=>!s.startsWith(">")).join("").replace(/\s/g,"").replace(/\*/g,"").toUpperCase().replace(/[^ACDEFGHIKLMNPQRSTVWY]/g,""),n=await fetch(`https://3di.foldseek.com/predict/${encodeURIComponent(o)}`,{signal:t});if(!n.ok)throw new Error(`3Di prediction failed: ${n.status} ${await n.text()}`);let i=(await n.text()).replace(/^["'/\s]+/,"").replace(/["'/\s]+$/,"").trim();return{aaSequence:o,di3Sequence:i}}async function Yl({aaSequence:e,di3Sequence:t,databases:o,signal:n}){let r=`>query
23
23
  ${e}
24
24
  >3DI
25
25
  ${t}
26
- `,i=new URLSearchParams;i.append("q",r),i.append("mode","3diaa"),i.append("email","");for(let a of o)i.append("database[]",a);let s=await fetch("https://search.foldseek.com/api/ticket",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i,signal:n}),l=await s.text();if(!s.ok)throw new Error(`Foldseek submission failed: ${s.status} ${l}`);return JSON.parse(l)}async function pd({ticketId:e,signal:t}){let o=new URLSearchParams;o.append("tickets[]",e);let n=await fetch("https://search.foldseek.com/api/tickets",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o,signal:t});if(!n.ok)throw new Error(`Failed to poll ticket status: ${n.status}`);let i=(await n.json())[0];if(!i)throw new Error("No ticket status returned");return i}async function ud({ticketId:e,signal:t}){return fo(`https://search.foldseek.com/api/result/${e}/0`,{signal:t})}async function zl({ticketId:e,onStatusChange:t,signal:o}){let r=0;for(;r<180;){if(o?.aborted)throw o.reason;let i=await pd({ticketId:e,signal:o});if(i.status==="ERROR")throw console.error("[Foldseek] Search error:",i),new Error(`Foldseek search failed: ${i.error??"Unknown error"}`);if(i.status==="COMPLETE"){t?.("Fetching results...");let s=await ud({ticketId:e,signal:o});return{query:s.queries[0]??{header:"",sequence:""},results:s.results.map(a=>({db:a.db,alignments:a.alignments}))}}t?.(`Search ${i.status.toLowerCase()}... (${r+1}s)`),await Ml(1e3,o),r++}throw new Error("Foldseek search timed out")}var md=(0,jl.makeStyles)()({root:{display:"flex",flexDirection:"column",gap:8},header:{display:"flex",alignItems:"center",gap:8},buttons:{display:"flex",gap:4},checkboxGroup:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:0}});function ai({selected:e,onChange:t,disabled:o}){let{classes:n}=md();return ot.default.createElement("div",{className:n.root},ot.default.createElement("div",{className:n.header},ot.default.createElement(Ke.Typography,{variant:"subtitle2"},"Databases to search:"),ot.default.createElement("div",{className:n.buttons},ot.default.createElement(Ke.Button,{size:"small",onClick:()=>{t(si.map(r=>r.id))},disabled:o},"Select all"),ot.default.createElement(Ke.Button,{size:"small",onClick:()=>{t([])},disabled:o},"Clear"))),ot.default.createElement(Ke.FormGroup,{className:n.checkboxGroup},si.map(r=>ot.default.createElement(Ke.FormControlLabel,{key:r.id,control:ot.default.createElement(Ke.Checkbox,{size:"small",checked:e.includes(r.id),onChange:()=>{e.includes(r.id)?t(e.filter(i=>i!==r.id)):t([...e,r.id])},disabled:o}),label:r.label}))))}var B=p(x()),M=p(E()),Jl=p(Xe());var qe=p(x()),Rl=p(Ge()),qt=p(E());var cd={A:"ALA",C:"CYS",D:"ASP",E:"GLU",F:"PHE",G:"GLY",H:"HIS",I:"ILE",K:"LYS",L:"LEU",M:"MET",N:"ASN",P:"PRO",Q:"GLN",R:"ARG",S:"SER",T:"THR",V:"VAL",W:"TRP",Y:"TYR",X:"UNK"};function Wl(e,t){return e.padStart(t," ")}function dd(e,t){return e.padEnd(t," ")}function li(e){return e.toFixed(3).padStart(8," ")}function _l(e,t,o="A",n){let r=e.split(",").map(Number),i=[];n&&i.push(`TITLE ${n}`),i.push("REMARK 1 Generated from Foldseek C\u03B1 coordinates");let s=1,l=1;for(let a=0;a<r.length-2;a+=3){let u=r[a],m=r[a+1],d=r[a+2],c=t[l-1]??"X",w=cd[c]??"UNK";if(u===void 0||m===void 0||d===void 0)break;let y="ATOM "+Wl(String(s),5)+" CA "+dd(w,3)+" "+o+Wl(String(l),4)+" "+li(u)+li(m)+li(d)+" 1.00 0.00 C";i.push(y),s++,l++}return i.push("END"),i.join(`
27
- `)}function pi(e,t){return!e||!t?!1:e.split(",").length>=3&&t.length>0}We();function ui({hit:e,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}){let[l,a]=(0,qe.useState)(null),[u,m]=(0,qe.useState)(),d=!!l,c=gn(e.target),w=T=>{a(T.currentTarget)},y=()=>{a(null)},f={session:t,view:o,feature:n,selectedTranscript:r,uniprotId:c},b=T=>()=>{y(),cn(T,s,m)},h=b(()=>{let T=!e.structureUrl&&pi(e.tCa,e.tSeq)?_l(e.tCa,e.tSeq,"A",e.target):void 0;Ot({...f,url:e.structureUrl,data:T,userProvidedTranscriptSequence:i})}),g=b(async()=>{await fn({...f,confidenceUrl:Za(e.target)})}),v=b(()=>{Io(f)});return e.structureUrl??pi(e.tCa,e.tSeq)?qe.default.createElement(qe.default.Fragment,null,u?qe.default.createElement(Rl.ErrorMessage,{error:u}):null,qe.default.createElement(qt.Button,{size:"small",variant:"outlined",onClick:w},"Load"),qe.default.createElement(qt.Menu,{anchorEl:l,open:d,onClose:y},qe.default.createElement(qt.MenuItem,{onClick:h},"Launch 3D protein view"),c?qe.default.createElement(qt.MenuItem,{onClick:g},"Launch 1D protein annotation view"):null,c&&hn()?qe.default.createElement(qt.MenuItem,{onClick:v},"Launch MSA view (AlphaFoldDB a3m)"):null)):qe.default.createElement("span",null,"-")}We();var gd=(0,Jl.makeStyles)()({root:{display:"flex",flexDirection:"column",gap:16},tableContainer:{maxHeight:400},headerCell:{fontWeight:"bold",backgroundColor:"#f5f5f5"},noResults:{padding:16,textAlign:"center"}});function fd(e){let t=e.results.flatMap(o=>(o.alignments??[]).flat().map(n=>({...n,db:o.db,structureUrl:Ya(n.target,o.db)})));return t.sort((o,n)=>(o.eval??1/0)-(n.eval??1/0)),t.slice(0,100)}function mi({results:e,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}){let{classes:l}=gd(),a=fd(e);return a.length===0?B.default.createElement(M.Paper,{className:l.noResults},B.default.createElement(M.Typography,null,"No similar structures found")):B.default.createElement("div",{className:l.root},B.default.createElement(M.Typography,{variant:"subtitle2"},"Found ",a.length," similar structures"),B.default.createElement(M.TableContainer,{component:M.Paper,className:l.tableContainer},B.default.createElement(M.Table,{size:"small",stickyHeader:!0},B.default.createElement(M.TableHead,null,B.default.createElement(M.TableRow,null,B.default.createElement(M.TableCell,{className:l.headerCell},"Database"),B.default.createElement(M.TableCell,{className:l.headerCell},"Target"),B.default.createElement(M.TableCell,{className:l.headerCell},"Organism"),B.default.createElement(M.TableCell,{className:l.headerCell},"Prob"),B.default.createElement(M.TableCell,{className:l.headerCell},"Seq. Id."),B.default.createElement(M.TableCell,{className:l.headerCell},"Coverage"),B.default.createElement(M.TableCell,{className:l.headerCell},"E-value"),B.default.createElement(M.TableCell,{className:l.headerCell},"Actions"))),B.default.createElement(M.TableBody,null,a.map((u,m)=>B.default.createElement(M.TableRow,{key:`${u.db}-${u.target}-${m}`},B.default.createElement(M.TableCell,null,u.db),B.default.createElement(M.TableCell,null,u.target),B.default.createElement(M.TableCell,null,u.taxName??"-"),B.default.createElement(M.TableCell,null,u.prob!=null?`${(u.prob*100).toFixed(1)}%`:"-"),B.default.createElement(M.TableCell,null,u.seqId!=null?`${u.seqId.toFixed(1)}%`:"-"),B.default.createElement(M.TableCell,null,u.alnLength!=null&&u.qLen!=null?`${(u.alnLength/u.qLen*100).toFixed(1)}%`:"-"),B.default.createElement(M.TableCell,null,u.eval!=null?u.eval.toExponential(2):"-"),B.default.createElement(M.TableCell,null,B.default.createElement(ui,{hit:u,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}))))))))}var $e=p(x());function ci(){let[e,t]=(0,$e.useState)(),[o,n]=(0,$e.useState)(),[r,i]=(0,$e.useState)(!1),[s,l]=(0,$e.useState)(!1),[a,u]=(0,$e.useState)(),[m,d]=(0,$e.useState)(""),c=(0,$e.useRef)(null);(0,$e.useEffect)(()=>()=>{c.current?.abort()},[]);let w=()=>{c.current?.abort();let h=new AbortController;return c.current=h,h.signal},y=async h=>{let g=w();l(!0),u(void 0),d("Predicting 3Di structure...");try{let v=await Gl({aaSequence:h,signal:g});return n(v),v}catch(v){g.aborted||(console.error(v),u(v));return}finally{g.aborted||(l(!1),d(""))}},f=async(h,g,v=Hn)=>{let D=w();i(!0),u(void 0),d("Submitting search...");try{let T=await Ol({aaSequence:h,di3Sequence:g,databases:v,signal:D}),z=await zl({ticketId:T.id,onStatusChange:d,signal:D});return t(z),z}catch(T){D.aborted||(console.error(T),u(T));return}finally{D.aborted||(i(!1),d(""))}},b=()=>{c.current?.abort(),t(void 0),n(void 0),u(void 0),d("")};return{results:e,cleanedAaSequence:o?.aaSequence,di3Sequence:o?.di3Sequence,isLoading:r,isPredicting:s,error:a,statusMessage:m,predictStructure:y,search:f,reset:b}}me();var hd=(0,$l.makeStyles)()({dialogContent:{width:"80em",display:"flex",flexDirection:"column",gap:20},sequenceInput:{fontFamily:"monospace"},di3Section:{display:"flex",flexDirection:"column",gap:8}}),bd=(0,Kl.observer)(function({feature:t,session:o,view:n,handleClose:r}){let{classes:i}=hd(),[s,l]=(0,K.useState)(),[a,u]=(0,K.useState)(Hn),{results:m,cleanedAaSequence:d,di3Sequence:c,isLoading:w,isPredicting:y,error:f,statusMessage:b,predictStructure:h,search:g,reset:v}=ci(),{transcripts:D,isoformSequences:T,isLoading:z,error:G,selectedTranscriptId:xe,setSelectedTranscriptId:L,selectedTranscript:ke,selectedIsoform:ie}=jt({feature:t,view:n}),ue=ie?te(ie.seq):"",$=s??ue,ne=Ce=>{L(Ce),l(void 0)},Ie=$.trim().length>0&&!y&&!w,Ve=!!d&&!!c&&a.length>0&&!w,it=f??G,ze=w||y;return K.default.createElement(K.default.Fragment,null,K.default.createElement(Me.DialogContent,{className:i.dialogContent},it&&!z?K.default.createElement(No.ErrorMessage,{error:it}):null,z?K.default.createElement(No.LoadingEllipses,{variant:"subtitle2",message:"Loading transcript sequences"}):null,T?K.default.createElement(K.default.Fragment,null,K.default.createElement(zt,{val:xe,setVal:ne,isoforms:D,isoformSequences:T,feature:t,disabled:ze}),K.default.createElement(Me.TextField,{label:"Protein sequence (amino acids)",multiline:!0,rows:4,value:$,onChange:Ce=>{l(Ce.target.value)},placeholder:"MKTVRQERLKSIVRILERSKEPVSGAQLAEEL...",disabled:ze,InputProps:{className:i.sequenceInput}})):null,c?K.default.createElement("div",{className:i.di3Section},K.default.createElement(Me.Typography,{variant:"subtitle2"},"3Di structural alphabet (used for searching):"),K.default.createElement(Me.TextField,{multiline:!0,rows:4,value:c,InputProps:{className:i.sequenceInput,readOnly:!0}})):null,K.default.createElement(ai,{selected:a,onChange:u,disabled:ze}),b?K.default.createElement(No.LoadingEllipses,{variant:"subtitle2",message:b}):null,m?K.default.createElement(mi,{results:m,session:o,view:n,feature:t,selectedTranscript:ke,userProvidedTranscriptSequence:$,onClose:r}):null),K.default.createElement(Me.DialogActions,null,K.default.createElement(Me.Button,{variant:"contained",color:"secondary",onClick:()=>{r()}},"Cancel"),m?K.default.createElement(Me.Button,{variant:"outlined",onClick:()=>{v()}},"New search"):null,c?K.default.createElement(Me.Button,{variant:"contained",color:"primary",disabled:!Ve,onClick:()=>{g(d,c,a)}},w?"Searching...":"Search Foldseek"):K.default.createElement(Me.Button,{variant:"contained",color:"primary",disabled:!Ie,onClick:()=>{h($.trim())}},y?"Predicting...":"Predict 3Di structure")))}),Yl=bd;var De=p(x());di();var np=p(E()),yd=(0,De.lazy)(()=>Promise.resolve().then(()=>(op(),tp)));function Vo(){let[e,t]=(0,De.useState)(!1);return De.default.createElement(De.default.Fragment,null,De.default.createElement(np.IconButton,{onClick:()=>{t(!0)}},De.default.createElement(Un,null)),e?De.default.createElement(De.Suspense,{fallback:null},De.default.createElement(yd,{handleClose:()=>{t(!1)}})):null)}var gi=p(x());function Bo({children:e,value:t,index:o,...n}){return gi.default.createElement("div",{role:"tabpanel",hidden:t!==o,...n},t===o&&gi.default.createElement("div",null,e))}var W=p(x()),Gn=p(Ge()),Wt=p(E()),rp=p(_()),ip=p(Xe());var re=p(x()),oe=p(E());We();function fi({choice:e,setChoice:t,structureURL:o,setStructureURL:n,setFile:r,pdbId:i,setPdbId:s}){return re.default.createElement("div",{style:{display:"flex",margin:30}},re.default.createElement(oe.Typography,null,"Open your structure file ",re.default.createElement(Vo,null)),re.default.createElement(oe.FormControl,{component:"fieldset"},re.default.createElement(oe.RadioGroup,{value:e,onChange:l=>{t(l.target.value)}},re.default.createElement(oe.FormControlLabel,{value:"url",control:re.default.createElement(oe.Radio,null),label:"URL"}),re.default.createElement(oe.FormControlLabel,{value:"file",control:re.default.createElement(oe.Radio,null),label:"File"}),re.default.createElement(oe.FormControlLabel,{value:"pdb",control:re.default.createElement(oe.Radio,null),label:"PDB ID"}))),e==="url"?re.default.createElement("div",null,re.default.createElement(oe.Typography,null,"Open a PDB/mmCIF/etc. file from remote URL"),re.default.createElement(oe.TextField,{label:"URL",value:o,onChange:l=>{n(l.target.value)}})):null,e==="file"?re.default.createElement("div",{style:{paddingTop:20}},re.default.createElement(oe.Typography,null,"Open a PDB/mmCIF/etc. file from your local drive"),re.default.createElement(oe.Button,{variant:"outlined",component:"label"},"Choose File",re.default.createElement("input",{type:"file",hidden:!0,onChange:({target:l})=>{let a=l.files?.[0];a&&r(a)}}))):null,e==="pdb"?re.default.createElement(oe.TextField,{value:i,onChange:l=>{let a=l.target.value;s(a),n(Mo(a))},label:"PDB ID"}):null)}We();me();var wd=(0,ip.makeStyles)()(e=>({dialogContent:{marginTop:e.spacing(6),width:"80em"},textAreaFont:{fontFamily:"Courier New"}}));function xd(){return W.default.createElement("div",{style:{marginBottom:20}},"Manually supply a protein structure (PDB, mmCIF, etc) for a given transcript. You can open the file from the result of running, for example,"," ",W.default.createElement(Te,{href:"https://github.com/sokrypton/ColabFold"},"ColabFold"),". This plugin will align the protein sequence calculated from the genome to the protein sequence embedded in the structure file which allows for slight differences in these two representations.")}var Sd=(0,rp.observer)(function({feature:t,session:o,view:n,handleClose:r,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}){let{classes:l}=wd(),[a,u]=(0,W.useState)(),[m,d]=(0,W.useState)(""),[c,w]=(0,W.useState)("file"),[y,f]=(0,W.useState)(),[b,h]=(0,W.useState)(""),g=c==="file"?a:void 0,v=c==="file"?"":b,{sequences:D,error:T}=qo({file:g,url:v}),z=g?.name??v.slice(v.lastIndexOf("/")+1),G=D?.[0],{transcripts:xe,isoformSequences:L,selectedTranscriptId:ke,setSelectedTranscriptId:ie,selectedTranscript:ue,selectedIsoform:$,error:ne}=jt({feature:t,view:n,structureSequence:G}),Ie=ne??y??T,Ve=!!(v||g)&&!!$&&!!ue,it=!!$?.seq&&!!G&&te($.seq)!==G,ze=async()=>{if(!(!$||!ue))try{let Ce=g?await g.text():void 0;Ot({session:o,view:n,feature:t,selectedTranscript:ue,url:v||void 0,data:Ce,userProvidedTranscriptSequence:$.seq,alignmentAlgorithm:i,displayName:`Protein view ${to(t)} - ${Se(ue)}`}),r()}catch(Ce){console.error(Ce),f(Ce)}};return W.default.createElement(W.default.Fragment,null,W.default.createElement(Wt.DialogContent,{className:l.dialogContent},Ie?W.default.createElement(Gn.ErrorMessage,{error:Ie}):null,W.default.createElement(xd,null),W.default.createElement(fi,{choice:c,setChoice:w,structureURL:b,setStructureURL:h,setFile:u,pdbId:m,setPdbId:d}),W.default.createElement("div",{style:{margin:20}},L?G?W.default.createElement(W.default.Fragment,null,W.default.createElement(zt,{val:ke,setVal:ie,structureSequence:G,isoforms:xe,feature:t,isoformSequences:L}),W.default.createElement(Po,{structureSequence:G,structureName:z,isoformSequences:L})):null:W.default.createElement(Gn.LoadingEllipses,{title:"Loading protein sequences",variant:"h6"}))),W.default.createElement(Wt.DialogActions,null,it?W.default.createElement(Co,{alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}):null,W.default.createElement(Wt.Button,{variant:"contained",color:"secondary",onClick:()=>{r()}},"Cancel"),W.default.createElement(Wt.Button,{variant:"contained",color:"primary",disabled:!Ve,onClick:()=>{ze()}},"Launch 3-D protein structure view")))}),sp=Sd;var ap=p(x());function lp(e,t){let[o,n]=(0,ap.useState)(()=>{let i=localStorage.getItem(e);if(i)try{return JSON.parse(i)}catch{return t}return t});function r(i){n(i),localStorage.setItem(e,JSON.stringify(i))}return[o,r]}function hi({handleClose:e,feature:t,model:o}){let[n,r]=(0,ge.useState)(0),[i,s]=lp("jbrowse-protein3d-alignment-algorithm",ko),l=(0,On.getSession)(o),a=(0,On.getContainingView)(o);return ge.default.createElement(pp.Dialog,{maxWidth:"xl",title:"Launch protein view",titleNode:ge.default.createElement(ge.default.Fragment,null,"Launch protein view ",ge.default.createElement(Vo,null)),open:!0,onClose:e},ge.default.createElement(yo.Tabs,{value:n,onChange:(u,m)=>{r(m)}},ge.default.createElement(yo.Tab,{value:0,label:"AlphaFoldDB search"}),ge.default.createElement(yo.Tab,{value:1,label:"Foldseek search"}),ge.default.createElement(yo.Tab,{value:2,label:"Open file manually"})),ge.default.createElement(Bo,{value:n,index:0},ge.default.createElement(Ul,{session:l,view:a,feature:t,handleClose:e,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s})),ge.default.createElement(Bo,{value:n,index:1},ge.default.createElement(Yl,{session:l,view:a,feature:t,handleClose:e})),ge.default.createElement(Bo,{value:n,index:2},ge.default.createElement(sp,{session:l,view:a,feature:t,handleClose:e,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s})))}function vd(e){return e.name==="LinearBasicDisplay"}function Td(e){return e.views(t=>{let o=t.contextMenuItems;return{contextMenuItems(){let n=t.contextMenuFeature,r=n!==void 0&&["gene","mRNA","transcript"].includes(n.get("type"));return[...o(),...r?[{label:"Launch protein view",icon:xa,onClick:()=>{let i=(0,zn.getContainingTrack)(t);(0,zn.getSession)(i).queueDialog(l=>[hi,{model:i,handleClose:l,feature:n}])}}]:[]]}}})}function bi(e){e.addToExtensionPoint("Core-extendPluggableElement",t=>(vd(t)&&(t.stateModel=Td(t.stateModel)),t))}var up=p(no()),mp=p(ee());We();me();function Pd(e){if(typeof e=="string")return e;let{trackId:t}=e;return typeof t=="string"?t:void 0}function Ad(e,t){let o=To(t);return[e.get("name"),e.get("id"),e.id()].some(n=>typeof n=="string"&&(n===t||To(n)===o))}async function cp({session:e,uniprotId:t,transcriptId:o,connectedView:n}){if(!o)throw new Error("transcriptId is required to launch from a uniprotId");let r=n?.assembly,i=n?.loc,s=n?.tracks??[];if(!r||!i)throw new Error("connectedView with assembly + loc is required to launch from a uniprotId");let l=await e.assemblyManager.waitForAssembly(r);if(!l)throw new Error(`assembly "${r}" not found`);let a=(0,mp.parseLocString)(i,h=>l.isValidRefName(h));if(a.start===void 0||a.end===void 0)throw new Error(`could not parse a start-end region from loc "${i}"`);let u={assemblyName:r,refName:l.getCanonicalRefName(a.refName)??a.refName,start:a.start,end:a.end},m=s.map(Pd).filter(h=>h!==void 0),d=e.getTracksById(),c="getFeatures",w=[];for(let h of m){let g=d[h];if(!g)continue;let v=await e.rpcManager.call(c,"CoreGetFeatures",{adapterConfig:(0,up.readConfObject)(g,"adapter"),sessionId:c,regions:[u]});for(let D of v)w.push(...Ut(D))}let y=w.find(h=>Ad(h,o));if(!y)throw new Error(`transcript "${o}" not found at ${i} in tracks [${m.join(", ")}]`);if(!(y.get("subfeatures")??[]).some(h=>h.get("type")==="CDS"))throw new Error(`transcript "${o}" has no CDS subfeatures`);let b=await Nn({session:e,assemblyName:r,feature:y});if(!b)throw new Error(`could not translate a protein sequence for "${o}"`);return{url:io(t),feature:y.toJSON(),userProvidedTranscriptSequence:b}}function yi(e){e.addToExtensionPoint("LaunchView-ProteinView",async({session:t,url:o,uniprotId:n,transcriptId:r,userProvidedTranscriptSequence:i,feature:s,connectedViewId:l,connectedView:a,alignmentAlgorithm:u,displayName:m,height:d,showControls:c,showHighlight:w,zoomToBaseLevel:y})=>{let f;if(!o&&n)try{f=await cp({session:t,uniprotId:n,transcriptId:r,connectedView:a})}catch(g){console.error(g),t.notify(`Could not launch protein view: ${g}`,"error");return}let b=o??f?.url;if(!b)throw new Error("No url or uniprotId provided when launching protein view");let h=l??(a?t.addView("LinearGenomeView",{type:"LinearGenomeView",init:a}).id:void 0);t.addView("ProteinView",{type:"ProteinView",alignmentAlgorithm:u,displayName:m,height:d,showControls:c,showHighlight:w,zoomToBaseLevel:y,structures:[{url:b,userProvidedTranscriptSequence:f?.userProvidedTranscriptSequence??i??"",feature:f?.feature??s,connectedViewId:h}]})})}var Tm=p(x()),Pm=p(wi());var Wp=p(wi()),_p=p(fp()),pe=p(Ho());Pt();var bp=p(At(),1),xi=(0,ve.createSvgIcon)((0,bp.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 zo=p(Qt());Si();function xp(e,t){let o=e.obj?.data;if(!o)return;let{B_iso_or_equiv:n}=o.atomicConformation,{offsets:r,count:i}=o.atomicHierarchy.residueAtomSegments,s=t===void 0?i:Math.min(i,t),l=[];for(let a=0;a<s;a++)l.push(n.value(r[a]));return l}function Sp(e){return!!e&&e.length>1&&e.every(t=>t>=0&&t<=100)&&new Set(e).size>1}async function jn({structure:e,plugin:t}){let{model:o}=e.data?await Fn({data:e.data,plugin:t}):e.url?await En({url:e.url,plugin:t}):{model:void 0},n=o?Ln(o):void 0,r=o?xp(o,n?.[0]?.length):void 0;return{sequences:n,confidence:r}}var vi=p(Ho());function vp(e){let t=new Set;function o(n,r){t.add(n),jn({structure:n,plugin:r}).then(i=>{let s=(0,vi.isAlive)(n)?e.molstarPluginContext:void 0;s===r&&(n.setStructureData(i),n.setLoadedToMolstar(!0)),t.delete(n),s&&s!==r&&!n.loadedToMolstar&&o(n,s)}).catch(i=>{t.delete(n),(0,vi.isAlive)(e)&&(e.setError(i),console.error(i))})}return function(){let{structures:r,molstarPluginContext:i}=e;if(i)for(let s of r)!s.loadedToMolstar&&!t.has(s)&&o(s,i)}}var Oo=p(ee()),Y=p(Ho()),_t=p(Qt());ki();mt();vo();Bt();var Ip=e=>e;var Ci=e=>e;function Fp(e){let{structureSeqToTranscriptSeqPosition:t,transcriptSeqToStructureSeqPosition:o}=fs(e),n=bs(e),r=ys(e),i=ar(n),s=ar(r);return{structureToTranscript:l=>t[l],transcriptToStructure:l=>o[l],structureToAlignment:l=>n[l],alignmentToStructure:l=>i[l],transcriptToAlignment:l=>r[l],alignmentToTranscript:l=>s[l],maps:{structureSeqToTranscriptSeqPosition:t,transcriptSeqToStructureSeqPosition:o,structurePositionToAlignmentMap:n,transcriptPositionToAlignmentMap:r,alignmentToStructurePosition:i,alignmentToTranscriptPosition:s}}}Ii();var Wn=["A","R","N","D","C","Q","E","G","H","I","L","K","M","F","P","S","T","W","Y","V","B","Z","X","*"],kd=[[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]],Lp={};for(let e=0;e<Wn.length;e++){let t={};for(let o=0;o<Wn.length;o++)t[Wn[o]]=kd[e][o];Lp[Wn[e]]=t}function Uo(e,t){return Lp[e.toUpperCase()]?.[t.toUpperCase()]??-4}var qp=-10,Dp=-.5;function Cd(e,t,o=qp,n=Dp){let r=e.length,i=t.length,s=[],l=[],a=[];for(let b=0;b<=r;b++){s[b]=[],l[b]=[],a[b]=[];for(let h=0;h<=i;h++)s[b][h]=-1/0,l[b][h]=-1/0,a[b][h]=-1/0}s[0][0]=0;for(let b=1;b<=r;b++)l[b][0]=o+(b-1)*n;for(let b=1;b<=i;b++)a[0][b]=o+(b-1)*n;for(let b=1;b<=r;b++)for(let h=1;h<=i;h++){let g=Uo(e[b-1],t[h-1]);s[b][h]=Math.max(s[b-1][h-1],l[b-1][h-1],a[b-1][h-1])+g,l[b][h]=Math.max(s[b-1][h]+o,l[b-1][h]+n),a[b][h]=Math.max(s[b][h-1]+o,a[b][h-1]+n)}let u="",m="",d=r,c=i,w=[s[r][i],l[r][i],a[r][i]],y=Math.max(...w),f=y===s[r][i]?"M":y===l[r][i]?"Ix":"Iy";for(;d>0||c>0;)if(f==="M"&&d>0&&c>0){u=e[d-1]+u,m=t[c-1]+m;let b=Uo(e[d-1],t[c-1]),h=s[d-1][c-1],g=l[d-1][c-1];s[d][c]===h+b?f="M":s[d][c]===g+b?f="Ix":f="Iy",d--,c--}else if(f==="Ix"&&d>0)u=e[d-1]+u,m="-"+m,f=l[d][c]===s[d-1][c]+o?"M":"Ix",d--;else if(c>0)u="-"+u,m=t[c-1]+m,f=a[d][c]===s[d][c-1]+o?"M":"Iy",c--;else break;return{alignedSeq1:u,alignedSeq2:m,score:y}}function Md(e,t,o=qp,n=Dp){let r=e.length,i=t.length,s=[],l=[],a=[],u=0,m=0,d=0;for(let h=0;h<=r;h++){s[h]=[],l[h]=[],a[h]=[];for(let g=0;g<=i;g++)s[h][g]=0,l[h][g]=-1/0,a[h][g]=-1/0}for(let h=1;h<=r;h++)for(let g=1;g<=i;g++){let v=Uo(e[h-1],t[g-1]);s[h][g]=Math.max(0,s[h-1][g-1]+v,l[h-1][g-1]+v,a[h-1][g-1]+v),l[h][g]=Math.max(s[h-1][g]+o,l[h-1][g]+n),a[h][g]=Math.max(s[h][g-1]+o,a[h][g-1]+n);let D=Math.max(s[h][g],l[h][g],a[h][g]);D>u&&(u=D,m=h,d=g)}let c="",w="",y=m,f=d,b=s[y][f]>=l[y][f]&&s[y][f]>=a[y][f]?"M":l[y][f]>=a[y][f]?"Ix":"Iy";for(let h=e.length;h>m;h--)c=e[h-1]+c,w="-"+w;for(let h=t.length;h>d;h--)c="-"+c,w=t[h-1]+w;for(;y>0&&f>0;)if(b==="M"){if(s[y][f]===0)break;c=e[y-1]+c,w=t[f-1]+w;let h=Uo(e[y-1],t[f-1]),g=s[y-1][f-1],v=l[y-1][f-1];s[y][f]===g+h?b="M":s[y][f]===v+h?b="Ix":b="Iy",y--,f--}else b==="Ix"?(c=e[y-1]+c,w="-"+w,l[y][f]===s[y-1][f]+o&&(b="M"),y--):(c="-"+c,w=t[f-1]+w,a[y][f]===s[y][f-1]+o&&(b="M"),f--);for(;y>0;)c=e[y-1]+c,w="-"+w,y--;for(;f>0;)c="-"+c,w=t[f-1]+w,f--;return{alignedSeq1:c,alignedSeq2:w,score:u}}function Id(e,t){let o=[];for(let n=0;n<e.length;n++){let r=e[n],i=t[n];r!=="-"&&i!=="-"&&r.toUpperCase()===i.toUpperCase()?o.push("|"):r!=="-"&&i!=="-"&&Uo(r,i)>0?o.push(":"):o.push(" ")}return o.join("")}function Np(e,t,o){let{alignedSeq1:n,alignedSeq2:r}=o==="smith_waterman"?Md(e,t):Cd(e,t);return{consensus:Id(n,r),alns:[{id:"a",seq:n},{id:"b",seq:r}]}}var Vp=Object.fromEntries([{name:"alanine",abbreviation:"Ala",singleLetterCode:"A"},{name:"arginine",abbreviation:"Arg",singleLetterCode:"R"},{name:"asparagine",abbreviation:"Asn",singleLetterCode:"N"},{name:"aspartic acid",abbreviation:"Asp",singleLetterCode:"D"},{name:"cysteine",abbreviation:"Cys",singleLetterCode:"C"},{name:"glutamic acid",abbreviation:"Glu",singleLetterCode:"E"},{name:"glutamine",abbreviation:"Gln",singleLetterCode:"Q"},{name:"glycine",abbreviation:"Gly",singleLetterCode:"G"},{name:"histidine",abbreviation:"His",singleLetterCode:"H"},{name:"isoleucine",abbreviation:"Ile",singleLetterCode:"I"},{name:"leucine",abbreviation:"Leu",singleLetterCode:"L"},{name:"lysine",abbreviation:"Lys",singleLetterCode:"K"},{name:"methionine",abbreviation:"Met",singleLetterCode:"M"},{name:"phenylalanine",abbreviation:"Phe",singleLetterCode:"F"},{name:"proline",abbreviation:"Pro",singleLetterCode:"P"},{name:"serine",abbreviation:"Ser",singleLetterCode:"S"},{name:"threonine",abbreviation:"Thr",singleLetterCode:"T"},{name:"tryptophan",abbreviation:"Trp",singleLetterCode:"W"},{name:"tyrosine",abbreviation:"Tyr",singleLetterCode:"Y"},{name:"valine",abbreviation:"Val",singleLetterCode:"V"}].map(e=>[e.abbreviation.toUpperCase(),e]));Ei();qi();Vt();function qd(e,t){return{structureSeqPos:e.StructureProperties.residue.auth_seq_id(t)-1,code:e.StructureProperties.atom.label_comp_id(t),chain:e.StructureProperties.chain.auth_asym_id(t)}}async function Rn({plugin:e,kind:t,onUpdate:o}){let n=await ce(),r=e.behaviors.interaction[t].subscribe(i=>{if(n.StructureElement.Loci.is(i.current.loci)){let s=n.StructureElement.Loci.getFirstLocation(i.current.loci);o(s?qd(n,s):void 0)}else o(void 0)});return()=>{r.unsubscribe()}}Bt();We();me();vo();var Hd=Y.types.model({url:Y.types.maybe(Y.types.string),data:Y.types.maybe(Y.types.string),connectedViewId:Y.types.maybe(Y.types.string),pairwiseAlignment:Y.types.frozen(),feature:Y.types.frozen(),userProvidedTranscriptSequence:Y.types.string}).volatile(()=>({clickedStructureRange:void 0,hoverPosition:void 0,structureSequences:void 0,structureConfidence:void 0,isMouseInAlignment:!1,loadedToMolstar:!1,alignmentHoverRange:void 0,selectedFeatureId:void 0,hiddenFeatureTypes:new Set})).actions(e=>({setStructureData(t){e.structureSequences=t.sequences,e.structureConfidence=t.confidence},hideFeatureType(t){e.hiddenFeatureTypes=new Set([...e.hiddenFeatureTypes,t])},showFeatureType(t){let o=new Set(e.hiddenFeatureTypes);o.delete(t),e.hiddenFeatureTypes=o},showAllFeatureTypes(){e.hiddenFeatureTypes=new Set},setLoadedToMolstar(t){e.loadedToMolstar=t}})).views(e=>({get connectedView(){let{views:t}=(0,Oo.getSession)(e);return t.find(o=>o.id===e.connectedViewId)}})).actions(e=>({setClickedStructureRange(t){e.clickedStructureRange=t},setAlignmentHoverRange(t){e.alignmentHoverRange=t},setSelectedFeatureId(t){e.selectedFeatureId=t},setHoveredPosition(t){e.hoverPosition=t?{...t,source:"structure"}:void 0},setGenomeHoveredPosition(t){e.hoverPosition=t===void 0?void 0:{structureSeqPos:t,source:"genome"}},setAlignment(t){e.pairwiseAlignment=t},setIsMouseInAlignment(t){e.isMouseInAlignment=t}})).views(e=>({get uniprotId(){let{url:t}=e;if(t)return gn(t)},get coordinateMapper(){return e.pairwiseAlignment?Fp(e.pairwiseAlignment):void 0},get structureSeqToTranscriptSeqPosition(){return this.coordinateMapper?.maps.structureSeqToTranscriptSeqPosition},get transcriptSeqToStructureSeqPosition(){return this.coordinateMapper?.maps.transcriptSeqToStructureSeqPosition},get structurePositionToAlignmentMap(){return this.coordinateMapper?.maps.structurePositionToAlignmentMap},get transcriptPositionToAlignmentMap(){return this.coordinateMapper?.maps.transcriptPositionToAlignmentMap},get confidenceCells(){let t=e.structureConfidence;return Sp(t)?Li(t,this.structurePositionToAlignmentMap):[]},get hydrophobicityCells(){let t=e.structureSequences?.[0];return t?Li(Up(te(t)),this.structurePositionToAlignmentMap):[]},get pairwiseAlignmentToTranscriptPosition(){return this.coordinateMapper?.maps.alignmentToTranscriptPosition},get pairwiseAlignmentToStructurePosition(){return this.coordinateMapper?.maps.alignmentToStructurePosition},get hoverString(){let t=e.hoverPosition;if(t===void 0)return"";let o=this.hoverStructureLetter,n=this.hoverGenomeLetter,r=[];return t.structureSeqPos!==void 0&&r.push(`${t.structureSeqPos+1}`),o&&r.push(`Structure: ${o}`),n&&o&&n!==o&&r.push(`Genome: ${n}`),t.chain&&r.push(`Chain: ${t.chain}`),r.join(", ")},get genomeToTranscriptSeqMapping(){return e.feature?eo(new Oo.SimpleFeature(e.feature)):void 0},get structureSeqHoverPos(){return e.hoverPosition?.structureSeqPos},get alignmentHoverPos(){let t=this.structureSeqHoverPos;return t===void 0?void 0:this.coordinateMapper?.structureToAlignment(Ip(t))},get hoverStructureRange(){let{alignmentHoverRange:t}=e,o=this.pairwiseAlignmentToStructurePosition;if(!t||!o)return;let n=o[t.start],r=o[t.end];return n===void 0||r===void 0?void 0:{start:n,end:r+1}},get clickAlignmentRange(){let t=e.clickedStructureRange,o=this.structurePositionToAlignmentMap;if(!t||!o)return;let n=o[t.start],r=o[t.end-1];return n===void 0||r===void 0?void 0:{start:n,end:r}},structureRangeToGenomeHighlight(t){let o=e.connectedView?.assemblyNames[0],n=this.genomeToTranscriptSeqMapping;if(!t||!o||!n)return[];let r={genomeToTranscriptSeqMapping:n,pairwiseAlignment:e.pairwiseAlignment,structureSeqToTranscriptSeqPosition:this.structureSeqToTranscriptSeqPosition},i=t.end>t.start+1?Fi({model:r,structureSeqPos:t.start,structureSeqEndPos:t.end}):_n({model:r,structureSeqPos:t.start});if(!i)return[];let[s,l]=i;return[{assemblyName:o,refName:n.refName,start:s,end:l}]},get hoverGenomeHighlights(){if(e.hoverPosition?.source==="genome")return[];let t=this.hoverStructureRange;if(t)return this.structureRangeToGenomeHighlight(t);let o=this.structureSeqHoverPos;return o===void 0?[]:this.structureRangeToGenomeHighlight({start:o,end:o+1})},get clickGenomeHighlights(){return this.structureRangeToGenomeHighlight(e.clickedStructureRange)},get hoverStructureLetter(){let t=e.hoverPosition?.code;if(t)return Vp[t]?.singleLetterCode;let o=this.structureSeqHoverPos;if(o!==void 0&&e.structureSequences?.[0])return e.structureSequences[0][o]},get hoverGenomeLetter(){let t=this.structureSeqHoverPos;if(t===void 0)return;let o=this.structureSeqToTranscriptSeqPosition?.[t];if(o!==void 0)return e.userProvidedTranscriptSequence[o]},get alignmentMatchSet(){let t=e.pairwiseAlignment?.consensus;if(!t)return;let o=new Set;for(let n=0;n<t.length;n++)(t[n]==="|"||t[n]===":")&&o.add(n);return o},get alignmentPending(){return!e.pairwiseAlignment&&!!e.userProvidedTranscriptSequence&&!!e.structureSequences?.[0]},get exactMatch(){let t=te(e.userProvidedTranscriptSequence),o=e.structureSequences?.[0]?te(e.structureSequences[0]):void 0;return t===o},get parentView(){return(0,Y.getParent)(e,2)},get zoomToBaseLevel(){return this.parentView.zoomToBaseLevel},get autoScrollAlignment(){return this.parentView.autoScrollAlignment},get showHighlight(){return this.parentView.showHighlight},get showProteinTracks(){return this.parentView.showProteinTracks},get trackHeight(){return this.parentView.compactTracks?8:12},get trackGap(){return this.parentView.compactTracks?1:2},get alignmentAlgorithm(){return Ha(this.parentView.alignmentAlgorithm)},get molstarPluginContext(){return this.parentView.molstarPluginContext},get structureIndex(){return this.parentView.structures.indexOf(e)},get molstarStructure(){let t=this.structureIndex;return e.loadedToMolstar&&t>=0?this.molstarPluginContext?.managers.structure.hierarchy.current.structures[t]?.cell.obj?.data:void 0}})).actions(e=>({setError(t){e.parentView.setError(t)},hoverAlignmentPosition(t){if(!e.alignmentHoverRange){let o=e.coordinateMapper?.alignmentToStructure(Ci(t));e.setHoveredPosition(o!==void 0?{structureSeqPos:o}:void 0)}},clickAlignmentPosition(t){let o=e.coordinateMapper?.alignmentToStructure(Ci(t));e.setSelectedFeatureId(void 0),o!==void 0?Go({model:e,structureSeqPos:o}).catch(n=>{console.error(n),e.parentView.setError(n)}):e.setClickedStructureRange(void 0)}})).actions(e=>({afterAttach(){(0,Y.addDisposer)(e,(0,_t.autorun)(async()=>{try{let{userProvidedTranscriptSequence:t,structureSequences:o,exactMatch:n,alignmentAlgorithm:r}=e,i=t,s=o?.[0];if(e.pairwiseAlignment||!i||!s)return;let l=te(i),a=te(s);if(n)e.setAlignment({consensus:"|".repeat(l.length),alns:[{id:"seq1",seq:l},{id:"seq2",seq:a}]});else{let u=Np(l,a,r);e.setAlignment(u),e.parentView.setShowAlignment(!0)}}catch(t){console.error(t),e.parentView.setError(t)}})),(0,Y.addDisposer)(e,(0,_t.autorun)(()=>{let{hovered:t}=(0,Oo.getSession)(e),{transcriptSeqToStructureSeqPosition:o,genomeToTranscriptSeqMapping:n,connectedView:r}=e;if(r?.initialized&&n&&St(t)){let{hoverPosition:i}=t,s=n.g2p[i.coord-1],l=s===void 0?void 0:o?.[s];e.setGenomeHoveredPosition(l)}else e.hoverPosition?.source==="genome"&&e.setGenomeHoveredPosition(void 0)})),(0,Y.addDisposer)(e,(0,_t.autorun)(async()=>{let{molstarPluginContext:t}=e;if(t){let o=await Rn({plugin:t,kind:"click",onUpdate:n=>{n&&(e.setHoveredPosition(n),e.setSelectedFeatureId(void 0),Go({model:e,structureSeqPos:n.structureSeqPos}).catch(r=>{console.error(r),e.parentView.setError(r)}))}});(0,Y.addDisposer)(e,o)}})),(0,Y.addDisposer)(e,(0,_t.autorun)(async()=>{let{molstarPluginContext:t}=e;if(t){let o=await Rn({plugin:t,kind:"hover",onUpdate:n=>{e.setHoveredPosition(n)}});(0,Y.addDisposer)(e,o)}})),(0,Y.addDisposer)(e,(0,_t.autorun)(async()=>{let{showHighlight:t,structureSeqToTranscriptSeqPosition:o,molstarPluginContext:n,molstarStructure:r}=e;if(r&&n&&o)if(t){let i=Object.keys(o).map(s=>+s+1);await Tp({structure:r,residues:i,plugin:n,mode:"select"})}else n.managers.interactivity.lociSelects.deselectAll()})),(0,Y.addDisposer)(e,(0,_t.autorun)(async()=>{let{molstarStructure:t,molstarPluginContext:o,hoverStructureRange:n,structureSeqHoverPos:r}=e;t&&o&&(n?await Mi({structure:t,plugin:o,startResidue:n.start+1,endResidue:n.end}):r!==void 0?await Pp({structure:t,plugin:o,selectedResidue:r,mode:"highlight"}):o.managers.interactivity.lociHighlights.clearHighlights())}))}})),Jn=Hd;Vt();var Ud="SuperpositionTransform";async function Di(e){let{QueryContext:t,StructureElement:o,StructureSelection:n,StructureSelectionQueries:r,PluginCommands:i,PluginStateObject:s,tmAlign:l}=await ce(),a=e.managers.structure.hierarchy.current.structures;if(a.length<2)return;let{query:u}=r.trace,d=a.map(y=>{let f=y.cell.obj?.data;if(!f)return;let b=e.helpers.substructureParent.get(f);if(!b)return;let h=e.state.data.selectQ(v=>v.byValue(b).rootOfType(s.Molecule.Structure))[0]?.obj?.data;if(!h)return;let g=n.toLociWithSourceUnits(u(new t(f)));return o.Loci.remap(g,h)}).filter(y=>y!==void 0);if(d.length<2)return;let w=e.managers.structure.hierarchy.findStructure(d[0]?.structure)?.transform?.cell.obj?.data.coordinateSystem;for(let y=1;y<d.length;y++){let f=l(d[0],d[y]),{bTransform:b,tmScoreA:h,tmScoreB:g,rmsd:v,alignedLength:D}=f;await Gd(e,a[y].cell,b,w),e.log.info(`TM-align: TM-score=${h.toFixed(4)}/${g.toFixed(4)}, RMSD=${v.toFixed(2)} \xC5, aligned ${D} residues.`)}await new Promise(y=>requestAnimationFrame(y)),await i.Camera.Reset(e)}async function Gd(e,t,o,n){let{Mat4:r,StateObjectRef:i,StateTransforms:s}=await ce(),l=i.resolveAndCheck(e.state.data,t);if(!l)return;let a=e.state.data.selectQ(c=>c.byRef(l.transform.ref).subtree().withTransformer(s.Model.TransformStructureConformation))[0],m={transform:{name:"matrix",params:{data:n&&!r.isIdentity(n.matrix)?r.mul(r(),n.matrix,o):o,transpose:!1}}},d=a?e.state.data.build().to(a).update(m):e.state.data.build().to(t).insert(s.Model.TransformStructureConformation,m,{tags:Ud});await e.runTask(e.state.data.updateTree(d))}var zp="proteinView-settings",jp=["showAlignment","showProteinTracks","showHighlight","zoomToBaseLevel","autoScrollAlignment","compactTracks"];function Od(){return pe.types.compose("ProteinView",Wp.BaseViewModel,pe.types.model({id:_p.ElementId,type:pe.types.literal("ProteinView"),structures:pe.types.array(Jn),showControls:!1,height:pe.types.optional(pe.types.number,650),showHighlight:!1,zoomToBaseLevel:!0,autoScrollAlignment:!1,colorScheme:pe.types.optional(pe.types.enumeration("ColorScheme",yp),"default"),showAlignment:!0,showProteinTracks:!0,compactTracks:!0,alignmentAlgorithm:pe.types.optional(pe.types.string,ko),connectedMsaViewId:pe.types.maybe(pe.types.string),init:pe.types.frozen()})).volatile(()=>({error:void 0,molstarPluginContext:void 0,showManualAlignmentDialog:!1,showAddStructureDialog:!1})).actions(e=>({setHeight(t){return e.height=t,t},setShowAlignment(t){e.showAlignment=t},setShowControls(t){e.showControls=t},setError(t){e.error=t},setShowHighlight(t){e.showHighlight=t},setShowProteinTracks(t){e.showProteinTracks=t},setCompactTracks(t){e.compactTracks=t},setZoomToBaseLevel(t){e.zoomToBaseLevel=t},setAutoScrollAlignment(t){e.autoScrollAlignment=t},setAlignmentAlgorithm(t){e.alignmentAlgorithm=t},setColorScheme(t){e.colorScheme=t},setMolstarPluginContext(t){if(t!==e.molstarPluginContext)for(let o of e.structures)o.setLoadedToMolstar(!1);e.molstarPluginContext=t},setShowManualAlignmentDialog(t){e.showManualAlignmentDialog=t},setShowAddStructureDialog(t){e.showAddStructureDialog=t},setInit(t){e.init=t},setConnectedMsaViewId(t){e.connectedMsaViewId=t},addStructure(t){e.structures.push(Jn.create({url:t.url,data:t.data,userProvidedTranscriptSequence:""}))}})).actions(e=>({async addStructureAndSuperpose(t){let{molstarPluginContext:o}=e;if(!o)return;let n=Jn.create({url:t.url,data:t.data,userProvidedTranscriptSequence:""});n.setLoadedToMolstar(!0),e.structures.push(n);try{n.setStructureData(await jn({structure:t,plugin:o})),e.structures.length>1&&await Di(o)}catch(r){e.setError(r),console.error(r)}}})).actions(e=>({afterAttach(){try{let t=localStorage.getItem(zp);if(t){let o=JSON.parse(t);for(let n of jp)o[n]!==void 0&&(e[n]=o[n])}}catch(t){console.error("Failed to restore protein view settings",t)}(0,pe.addDisposer)(e,(0,zo.autorun)(()=>{try{let t={};for(let o of jp)t[o]=e[o];localStorage.setItem(zp,JSON.stringify(t))}catch(t){console.error("Failed to save protein view settings",t)}})),(0,pe.addDisposer)(e,(0,zo.autorun)(()=>{let{init:t}=e;if(t){let{structures:o,showControls:n,showAlignment:r}=t;if(o)for(let i of o)e.addStructure(i);n!==void 0&&e.setShowControls(n),r!==void 0&&e.setShowAlignment(r),e.setInit(void 0)}})),(0,pe.addDisposer)(e,(0,zo.autorun)(()=>{let{molstarPluginContext:t,colorScheme:o}=e,n=e.structures.filter(r=>r.structureSequences!==void 0).length;t&&n>0&&wp({plugin:t,colorScheme:o}).catch(r=>{console.error(r),e.setError(r)})})),(0,pe.addDisposer)(e,(0,zo.autorun)(vp(e)))}})).views(e=>({get primaryStructure(){return e.structures[0]},menuItems(){return[{label:"Pairwise alignment",icon:xi,type:"checkbox",checked:e.showAlignment,onClick:()=>{e.setShowAlignment(!e.showAlignment)}},{label:"Protein feature tracks",icon:xi,type:"checkbox",checked:e.showProteinTracks,onClick:()=>{e.setShowProteinTracks(!e.showProteinTracks)}},{label:"Color scheme...",subMenu:wo.map(t=>({label:t.label,type:"radio",checked:e.colorScheme===t.value,onClick:()=>{e.setColorScheme(t.value)}}))},{label:"Add structure...",onClick:()=>{e.setShowAddStructureDialog(!0)}},{label:"Advanced...",icon:un,subMenu:[{label:"Pairwise alignment as green highlight",type:"checkbox",checked:e.showHighlight,onClick:()=>{e.setShowHighlight(!e.showHighlight)}},{label:"Show all protein feature tracks",onClick:()=>{for(let t of e.structures)t.showAllFeatureTypes()}},{label:"Import manual alignment...",onClick:()=>{e.setShowManualAlignmentDialog(!0)}},{label:"Re-align structures (TM-align)",onClick:()=>{e.molstarPluginContext&&Di(e.molstarPluginContext).catch(t=>{console.error(t),e.setError(t)})}},{label:"Zoom to base level on click",type:"checkbox",checked:e.zoomToBaseLevel,onClick:()=>{e.setZoomToBaseLevel(!e.zoomToBaseLevel)}},{label:"Auto-scroll protein feature view on hover",type:"checkbox",checked:e.autoScrollAlignment,onClick:()=>{e.setAutoScrollAlignment(!e.autoScrollAlignment)}}]}]}}))}var Rp=Od;var hg=(0,Tm.lazy)(()=>Promise.resolve().then(()=>(vm(),Sm)));function Wi(e){e.addViewType(()=>new Pm.ViewType({name:"ProteinView",displayName:"Protein view",stateModel:Rp(),ReactComponent:hg}))}var Lm=p(tn());var Am=p(no());var bg=(0,Am.ConfigurationSchema)("UniProtVariationAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}},scoreField:{type:"string",defaultValue:""}},{explicitlyTyped:!0}),km=bg;function _i(e){e.addAdapterType(()=>new Lm.default({name:"UniProtVariationAdapter",displayName:"UniProtVariation adapter",configSchema:km,getAdapterClass:()=>Promise.resolve().then(()=>(Em(),Fm)).then(t=>t.default)}))}var qm="0.4.12";var er=class extends Dm.default{name="ProteinViewer";version=qm;install(t){Wi(t),bi(t),yi(t),dr(t),gr(t),fr(t),_i(t)}configure(t){}};return Om(yg);})();
26
+ `,i=new URLSearchParams;i.append("q",r),i.append("mode","3diaa"),i.append("email","");for(let a of o)i.append("database[]",a);let s=await fetch("https://search.foldseek.com/api/ticket",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i,signal:n}),l=await s.text();if(!s.ok)throw new Error(`Foldseek submission failed: ${s.status} ${l}`);return JSON.parse(l)}async function yd({ticketId:e,signal:t}){let o=new URLSearchParams;o.append("tickets[]",e);let n=await fetch("https://search.foldseek.com/api/tickets",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o,signal:t});if(!n.ok)throw new Error(`Failed to poll ticket status: ${n.status}`);let i=(await n.json())[0];if(!i)throw new Error("No ticket status returned");return i}async function wd({ticketId:e,signal:t}){return wo(`https://search.foldseek.com/api/result/${e}/0`,{signal:t})}async function $l({ticketId:e,onStatusChange:t,signal:o}){let r=0;for(;r<180;){if(o?.aborted)throw o.reason;let i=await yd({ticketId:e,signal:o});if(i.status==="ERROR")throw console.error("[Foldseek] Search error:",i),new Error(`Foldseek search failed: ${i.error??"Unknown error"}`);if(i.status==="COMPLETE"){t?.("Fetching results...");let s=await wd({ticketId:e,signal:o});return{query:s.queries[0]??{header:"",sequence:""},results:s.results.map(a=>({db:a.db,alignments:a.alignments}))}}t?.(`Search ${i.status.toLowerCase()}... (${r+1}s)`),await Vl(1e3,o),r++}throw new Error("Foldseek search timed out")}var xd=(0,Zl.makeStyles)()({root:{display:"flex",flexDirection:"column",gap:8},header:{display:"flex",alignItems:"center",gap:8},buttons:{display:"flex",gap:4},checkboxGroup:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:0}});function di({selected:e,onChange:t,disabled:o}){let{classes:n}=xd();return it.default.createElement("div",{className:n.root},it.default.createElement("div",{className:n.header},it.default.createElement(Ze.Typography,{variant:"subtitle2"},"Databases to search:"),it.default.createElement("div",{className:n.buttons},it.default.createElement(Ze.Button,{size:"small",onClick:()=>{t(ci.map(r=>r.id))},disabled:o},"Select all"),it.default.createElement(Ze.Button,{size:"small",onClick:()=>{t([])},disabled:o},"Clear"))),it.default.createElement(Ze.FormGroup,{className:n.checkboxGroup},ci.map(r=>it.default.createElement(Ze.FormControlLabel,{key:r.id,control:it.default.createElement(Ze.Checkbox,{size:"small",checked:e.includes(r.id),onChange:()=>{e.includes(r.id)?t(e.filter(i=>i!==r.id)):t([...e,r.id])},disabled:o}),label:r.label}))))}var B=p(x()),F=p(I()),tp=p(tt());var De=p(x()),ep=p(Oe()),Nt=p(I());var Sd={A:"ALA",C:"CYS",D:"ASP",E:"GLU",F:"PHE",G:"GLY",H:"HIS",I:"ILE",K:"LYS",L:"LEU",M:"MET",N:"ASN",P:"PRO",Q:"GLN",R:"ARG",S:"SER",T:"THR",V:"VAL",W:"TRP",Y:"TYR",X:"UNK"};function Xl(e,t){return e.padStart(t," ")}function vd(e,t){return e.padEnd(t," ")}function gi(e){return e.toFixed(3).padStart(8," ")}function Ql(e,t,o="A",n){let r=e.split(",").map(Number),i=[];n&&i.push(`TITLE ${n}`),i.push("REMARK 1 Generated from Foldseek C\u03B1 coordinates");let s=1,l=1;for(let a=0;a<r.length-2;a+=3){let u=r[a],m=r[a+1],d=r[a+2],c=t[l-1]??"X",y=Sd[c]??"UNK";if(u===void 0||m===void 0||d===void 0)break;let w="ATOM "+Xl(String(s),5)+" CA "+vd(y,3)+" "+o+Xl(String(l),4)+" "+gi(u)+gi(m)+gi(d)+" 1.00 0.00 C";i.push(w),s++,l++}return i.push("END"),i.join(`
27
+ `)}function fi(e,t){return!e||!t?!1:e.split(",").length>=3&&t.length>0}Je();function hi({hit:e,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}){let[l,a]=(0,De.useState)(null),[u,m]=(0,De.useState)(),d=!!l,c=wn(e.target),y=T=>{a(T.currentTarget)},w=()=>{a(null)},h={session:t,view:o,feature:n,selectedTranscript:r,uniprotId:c},b=T=>()=>{w(),bn(T,s,m)},f=b(()=>{let T=!e.structureUrl&&fi(e.tCa,e.tSeq)?Ql(e.tCa,e.tSeq,"A",e.target):void 0;jt({...h,url:e.structureUrl,data:T,userProvidedTranscriptSequence:i})}),g=b(async()=>{await xn({...h,confidenceUrl:il(e.target)})}),v=b(()=>{qo(h)});return e.structureUrl??fi(e.tCa,e.tSeq)?De.default.createElement(De.default.Fragment,null,u?De.default.createElement(ep.ErrorMessage,{error:u}):null,De.default.createElement(Nt.Button,{size:"small",variant:"outlined",onClick:y},"Load"),De.default.createElement(Nt.Menu,{anchorEl:l,open:d,onClose:w},De.default.createElement(Nt.MenuItem,{onClick:f},"Launch 3D protein view"),c?De.default.createElement(Nt.MenuItem,{onClick:g},"Launch 1D protein annotation view"):null,c&&Sn()?De.default.createElement(Nt.MenuItem,{onClick:v},"Launch MSA view (AlphaFoldDB a3m)"):null)):De.default.createElement("span",null,"-")}Je();var Td=(0,tp.makeStyles)()({root:{display:"flex",flexDirection:"column",gap:16},tableContainer:{maxHeight:400},headerCell:{fontWeight:"bold",backgroundColor:"#f5f5f5"},noResults:{padding:16,textAlign:"center"}});function Pd(e){let t=e.results.flatMap(o=>(o.alignments??[]).flat().map(n=>({...n,db:o.db,structureUrl:rl(n.target,o.db)})));return t.sort((o,n)=>(o.eval??1/0)-(n.eval??1/0)),t.slice(0,100)}function bi({results:e,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}){let{classes:l}=Td(),a=Pd(e);return a.length===0?B.default.createElement(F.Paper,{className:l.noResults},B.default.createElement(F.Typography,null,"No similar structures found")):B.default.createElement("div",{className:l.root},B.default.createElement(F.Typography,{variant:"subtitle2"},"Found ",a.length," similar structures"),B.default.createElement(F.TableContainer,{component:F.Paper,className:l.tableContainer},B.default.createElement(F.Table,{size:"small",stickyHeader:!0},B.default.createElement(F.TableHead,null,B.default.createElement(F.TableRow,null,B.default.createElement(F.TableCell,{className:l.headerCell},"Database"),B.default.createElement(F.TableCell,{className:l.headerCell},"Target"),B.default.createElement(F.TableCell,{className:l.headerCell},"Organism"),B.default.createElement(F.TableCell,{className:l.headerCell},"Prob"),B.default.createElement(F.TableCell,{className:l.headerCell},"Seq. Id."),B.default.createElement(F.TableCell,{className:l.headerCell},"Coverage"),B.default.createElement(F.TableCell,{className:l.headerCell},"E-value"),B.default.createElement(F.TableCell,{className:l.headerCell},"Actions"))),B.default.createElement(F.TableBody,null,a.map((u,m)=>B.default.createElement(F.TableRow,{key:`${u.db}-${u.target}-${m}`},B.default.createElement(F.TableCell,null,u.db),B.default.createElement(F.TableCell,null,u.target),B.default.createElement(F.TableCell,null,u.taxName??"-"),B.default.createElement(F.TableCell,null,u.prob!=null?`${(u.prob*100).toFixed(1)}%`:"-"),B.default.createElement(F.TableCell,null,u.seqId!=null?`${u.seqId.toFixed(1)}%`:"-"),B.default.createElement(F.TableCell,null,u.alnLength!=null&&u.qLen!=null?`${(u.alnLength/u.qLen*100).toFixed(1)}%`:"-"),B.default.createElement(F.TableCell,null,u.eval!=null?u.eval.toExponential(2):"-"),B.default.createElement(F.TableCell,null,B.default.createElement(hi,{hit:u,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}))))))))}var Xe=p(x());function yi(){let[e,t]=(0,Xe.useState)(),[o,n]=(0,Xe.useState)(),[r,i]=(0,Xe.useState)(!1),[s,l]=(0,Xe.useState)(!1),[a,u]=(0,Xe.useState)(),[m,d]=(0,Xe.useState)(""),c=(0,Xe.useRef)(null);(0,Xe.useEffect)(()=>()=>{c.current?.abort()},[]);let y=()=>{c.current?.abort();let f=new AbortController;return c.current=f,f.signal},w=async f=>{let g=y();l(!0),u(void 0),d("Predicting 3Di structure...");try{let v=await Kl({aaSequence:f,signal:g});return n(v),v}catch(v){g.aborted||(console.error(v),u(v));return}finally{g.aborted||(l(!1),d(""))}},h=async(f,g,v=jn)=>{let D=y();i(!0),u(void 0),d("Submitting search...");try{let T=await Yl({aaSequence:f,di3Sequence:g,databases:v,signal:D}),O=await $l({ticketId:T.id,onStatusChange:d,signal:D});return t(O),O}catch(T){D.aborted||(console.error(T),u(T));return}finally{D.aborted||(i(!1),d(""))}},b=()=>{c.current?.abort(),t(void 0),n(void 0),u(void 0),d("")};return{results:e,cleanedAaSequence:o?.aaSequence,di3Sequence:o?.di3Sequence,isLoading:r,isPredicting:s,error:a,statusMessage:m,predictStructure:w,search:h,reset:b}}ce();var Ad=(0,np.makeStyles)()({dialogContent:{width:"80em",display:"flex",flexDirection:"column",gap:20},sequenceInput:{fontFamily:"monospace"},di3Section:{display:"flex",flexDirection:"column",gap:8}}),kd=(0,op.observer)(function({feature:t,session:o,view:n,handleClose:r}){let{classes:i}=Ad(),[s,l]=(0,K.useState)(),[a,u]=(0,K.useState)(jn),{results:m,cleanedAaSequence:d,di3Sequence:c,isLoading:y,isPredicting:w,error:h,statusMessage:b,predictStructure:f,search:g,reset:v}=yi(),{transcripts:D,isoformSequences:T,isLoading:O,error:z,selectedTranscriptId:ve,setSelectedTranscriptId:M,selectedTranscript:Te,selectedIsoform:se}=_t({feature:t,view:n}),me=se?oe(se.seq):"",Y=s??me,$=Ie=>{M(Ie),l(void 0)},Pe=Y.trim().length>0&&!w&&!y,Be=!!d&&!!c&&a.length>0&&!y,lt=h??z,_e=y||w;return K.default.createElement(K.default.Fragment,null,K.default.createElement(Fe.DialogContent,{className:i.dialogContent},lt&&!O?K.default.createElement(Uo.ErrorMessage,{error:lt}):null,O?K.default.createElement(Uo.LoadingEllipses,{variant:"subtitle2",message:"Loading transcript sequences"}):null,T?K.default.createElement(K.default.Fragment,null,K.default.createElement(Wt,{val:ve,setVal:$,isoforms:D,isoformSequences:T,feature:t,disabled:_e}),K.default.createElement(Fe.TextField,{label:"Protein sequence (amino acids)",multiline:!0,rows:4,value:Y,onChange:Ie=>{l(Ie.target.value)},placeholder:"MKTVRQERLKSIVRILERSKEPVSGAQLAEEL...",disabled:_e,InputProps:{className:i.sequenceInput}})):null,c?K.default.createElement("div",{className:i.di3Section},K.default.createElement(Fe.Typography,{variant:"subtitle2"},"3Di structural alphabet (used for searching):"),K.default.createElement(Fe.TextField,{multiline:!0,rows:4,value:c,InputProps:{className:i.sequenceInput,readOnly:!0}})):null,K.default.createElement(di,{selected:a,onChange:u,disabled:_e}),b?K.default.createElement(Uo.LoadingEllipses,{variant:"subtitle2",message:b}):null,m?K.default.createElement(bi,{results:m,session:o,view:n,feature:t,selectedTranscript:Te,userProvidedTranscriptSequence:Y,onClose:r}):null),K.default.createElement(Fe.DialogActions,null,K.default.createElement(Fe.Button,{variant:"contained",color:"secondary",onClick:()=>{r()}},"Cancel"),m?K.default.createElement(Fe.Button,{variant:"outlined",onClick:()=>{v()}},"New search"):null,c?K.default.createElement(Fe.Button,{variant:"contained",color:"primary",disabled:!Be,onClick:()=>{g(d,c,a)}},y?"Searching...":"Search Foldseek"):K.default.createElement(Fe.Button,{variant:"contained",color:"primary",disabled:!Pe,onClick:()=>{f(Y.trim())}},w?"Predicting...":"Predict 3Di structure")))}),rp=kd;var Ne=p(x());wi();var mp=p(I()),Cd=(0,Ne.lazy)(()=>Promise.resolve().then(()=>(up(),pp)));function Go(){let[e,t]=(0,Ne.useState)(!1);return Ne.default.createElement(Ne.default.Fragment,null,Ne.default.createElement(mp.IconButton,{onClick:()=>{t(!0)}},Ne.default.createElement(Wn,null)),e?Ne.default.createElement(Ne.Suspense,{fallback:null},Ne.default.createElement(Cd,{handleClose:()=>{t(!1)}})):null)}var xi=p(x());function Oo({children:e,value:t,index:o,...n}){return xi.default.createElement("div",{role:"tabpanel",hidden:t!==o,...n},t===o&&xi.default.createElement("div",null,e))}var W=p(x()),_n=p(Oe()),Rt=p(I()),cp=p(_()),dp=p(tt());var ie=p(x()),ne=p(I());Je();function Si({choice:e,setChoice:t,structureURL:o,setStructureURL:n,setFile:r,pdbId:i,setPdbId:s}){return ie.default.createElement("div",{style:{display:"flex",margin:30}},ie.default.createElement(ne.Typography,null,"Open your structure file ",ie.default.createElement(Go,null)),ie.default.createElement(ne.FormControl,{component:"fieldset"},ie.default.createElement(ne.RadioGroup,{value:e,onChange:l=>{t(l.target.value)}},ie.default.createElement(ne.FormControlLabel,{value:"url",control:ie.default.createElement(ne.Radio,null),label:"URL"}),ie.default.createElement(ne.FormControlLabel,{value:"file",control:ie.default.createElement(ne.Radio,null),label:"File"}),ie.default.createElement(ne.FormControlLabel,{value:"pdb",control:ie.default.createElement(ne.Radio,null),label:"PDB ID"}))),e==="url"?ie.default.createElement("div",null,ie.default.createElement(ne.Typography,null,"Open a PDB/mmCIF/etc. file from remote URL"),ie.default.createElement(ne.TextField,{label:"URL",value:o,onChange:l=>{n(l.target.value)}})):null,e==="file"?ie.default.createElement("div",{style:{paddingTop:20}},ie.default.createElement(ne.Typography,null,"Open a PDB/mmCIF/etc. file from your local drive"),ie.default.createElement(ne.Button,{variant:"outlined",component:"label"},"Choose File",ie.default.createElement("input",{type:"file",hidden:!0,onChange:({target:l})=>{let a=l.files?.[0];a&&r(a)}}))):null,e==="pdb"?ie.default.createElement(ne.TextField,{value:i,onChange:l=>{let a=l.target.value;s(a),n(Eo(a))},label:"PDB ID"}):null)}Je();ce();var Md=(0,dp.makeStyles)()(e=>({dialogContent:{marginTop:e.spacing(6),width:"80em"},textAreaFont:{fontFamily:"Courier New"}}));function Id(){return W.default.createElement("div",{style:{marginBottom:20}},"Manually supply a protein structure (PDB, mmCIF, etc) for a given transcript. You can open the file from the result of running, for example,"," ",W.default.createElement(Ce,{href:"https://github.com/sokrypton/ColabFold"},"ColabFold"),". This plugin will align the protein sequence calculated from the genome to the protein sequence embedded in the structure file which allows for slight differences in these two representations.")}var Fd=(0,cp.observer)(function({feature:t,session:o,view:n,handleClose:r,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}){let{classes:l}=Md(),[a,u]=(0,W.useState)(),[m,d]=(0,W.useState)(""),[c,y]=(0,W.useState)("file"),[w,h]=(0,W.useState)(),[b,f]=(0,W.useState)(""),g=c==="file"?a:void 0,v=c==="file"?"":b,{sequences:D,error:T}=Bo({file:g,url:v}),O=g?.name??v.slice(v.lastIndexOf("/")+1),z=D?.[0],{transcripts:ve,isoformSequences:M,selectedTranscriptId:Te,setSelectedTranscriptId:se,selectedTranscript:me,selectedIsoform:Y,error:$}=_t({feature:t,view:n,structureSequence:z}),Pe=$??w??T,Be=!!(v||g)&&!!Y&&!!me,lt=!!Y?.seq&&!!z&&oe(Y.seq)!==z,_e=async()=>{if(!(!Y||!me))try{let Ie=g?await g.text():void 0;jt({session:o,view:n,feature:t,selectedTranscript:me,url:v||void 0,data:Ie,userProvidedTranscriptSequence:Y.seq,alignmentAlgorithm:i,displayName:`Protein view ${no(t)} - ${Ae(me)}`}),r()}catch(Ie){console.error(Ie),h(Ie)}};return W.default.createElement(W.default.Fragment,null,W.default.createElement(Rt.DialogContent,{className:l.dialogContent},Pe?W.default.createElement(_n.ErrorMessage,{error:Pe}):null,W.default.createElement(Id,null),W.default.createElement(Si,{choice:c,setChoice:y,structureURL:b,setStructureURL:f,setFile:u,pdbId:m,setPdbId:d}),W.default.createElement("div",{style:{margin:20}},M?z?W.default.createElement(W.default.Fragment,null,W.default.createElement(Wt,{val:Te,setVal:se,structureSequence:z,isoforms:ve,feature:t,isoformSequences:M}),W.default.createElement(Mo,{structureSequence:z,structureName:O,isoformSequences:M})):null:W.default.createElement(_n.LoadingEllipses,{title:"Loading protein sequences",variant:"h6"}))),W.default.createElement(Rt.DialogActions,null,lt?W.default.createElement(Lo,{alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}):null,W.default.createElement(Rt.Button,{variant:"contained",color:"secondary",onClick:()=>{r()}},"Cancel"),W.default.createElement(Rt.Button,{variant:"contained",color:"primary",disabled:!Be,onClick:()=>{_e()}},"Launch 3-D protein structure view")))}),gp=Fd;var fp=p(x());function hp(e,t){let[o,n]=(0,fp.useState)(()=>{let i=localStorage.getItem(e);if(i)try{return JSON.parse(i)}catch{return t}return t});function r(i){n(i),localStorage.setItem(e,JSON.stringify(i))}return[o,r]}function vi({handleClose:e,feature:t,model:o}){let[n,r]=(0,he.useState)(0),[i,s]=hp("jbrowse-protein3d-alignment-algorithm",Fo),l=(0,Rn.getSession)(o),a=(0,Rn.getContainingView)(o);return he.default.createElement(bp.Dialog,{maxWidth:"xl",title:"Launch protein view",titleNode:he.default.createElement(he.default.Fragment,null,"Launch protein view ",he.default.createElement(Go,null)),open:!0,onClose:e},he.default.createElement(vo.Tabs,{value:n,onChange:(u,m)=>{r(m)}},he.default.createElement(vo.Tab,{value:0,label:"AlphaFoldDB search"}),he.default.createElement(vo.Tab,{value:1,label:"Foldseek search"}),he.default.createElement(vo.Tab,{value:2,label:"Open file manually"})),he.default.createElement(Oo,{value:n,index:0},he.default.createElement(Jl,{session:l,view:a,feature:t,handleClose:e,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s})),he.default.createElement(Oo,{value:n,index:1},he.default.createElement(rp,{session:l,view:a,feature:t,handleClose:e})),he.default.createElement(Oo,{value:n,index:2},he.default.createElement(gp,{session:l,view:a,feature:t,handleClose:e,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s})))}function Ld(e){return e.name==="LinearBasicDisplay"}function Ed(e){return e.views(t=>{let o=t.contextMenuItems;return{contextMenuItems(){let n=t.contextMenuFeature,r=n!==void 0&&["gene","mRNA","transcript"].includes(n.get("type"));return[...o(),...r?[{label:"Launch protein view",icon:ka,onClick:()=>{let i=(0,Jn.getContainingTrack)(t);(0,Jn.getSession)(i).queueDialog(l=>[vi,{model:i,handleClose:l,feature:n}])}}]:[]]}}})}function Ti(e){e.addToExtensionPoint("Core-extendPluggableElement",t=>(Ld(t)&&(t.stateModel=Ed(t.stateModel)),t))}var yp=p(io()),wp=p(te());Je();ce();function qd(e){if(typeof e=="string")return e;let{trackId:t}=e;return typeof t=="string"?t:void 0}function Dd(e,t){let o=Co(t);return[e.get("name"),e.get("id"),e.id()].some(n=>typeof n=="string"&&(n===t||Co(n)===o))}async function xp({session:e,uniprotId:t,transcriptId:o,connectedView:n}){if(!o)throw new Error("transcriptId is required to launch from a uniprotId");let r=n?.assembly,i=n?.loc,s=n?.tracks??[];if(!r||!i)throw new Error("connectedView with assembly + loc is required to launch from a uniprotId");let l=await e.assemblyManager.waitForAssembly(r);if(!l)throw new Error(`assembly "${r}" not found`);let a=(0,wp.parseLocString)(i,f=>l.isValidRefName(f));if(a.start===void 0||a.end===void 0)throw new Error(`could not parse a start-end region from loc "${i}"`);let u={assemblyName:r,refName:l.getCanonicalRefName(a.refName)??a.refName,start:a.start,end:a.end},m=s.map(qd).filter(f=>f!==void 0),d=e.getTracksById(),c="getFeatures",y=[];for(let f of m){let g=d[f];if(!g)continue;let v=await e.rpcManager.call(c,"CoreGetFeatures",{adapterConfig:(0,yp.readConfObject)(g,"adapter"),sessionId:c,regions:[u]});for(let D of v)y.push(...Ot(D))}let w=y.find(f=>Dd(f,o));if(!w)throw new Error(`transcript "${o}" not found at ${i} in tracks [${m.join(", ")}]`);if(!(w.get("subfeatures")??[]).some(f=>f.get("type")==="CDS"))throw new Error(`transcript "${o}" has no CDS subfeatures`);let b=await Gn({session:e,assemblyName:r,feature:w});if(!b)throw new Error(`could not translate a protein sequence for "${o}"`);return{url:po(t),feature:w.toJSON(),userProvidedTranscriptSequence:b}}fn();function Pi(e){e.addToExtensionPoint("LaunchView-ProteinView",async({session:t,url:o,uniprotId:n,transcriptId:r,userProvidedTranscriptSequence:i,feature:s,connectedViewId:l,connectedView:a,alignmentAlgorithm:u,displayName:m,height:d,showControls:c,showHighlight:y,zoomToBaseLevel:w,sideBySide:h})=>{let b;if(!o&&n)try{b=await xp({session:t,uniprotId:n,transcriptId:r,connectedView:a})}catch(T){console.error(T),t.notify(`Could not launch protein view: ${T}`,"error");return}let f=o??b?.url;if(!f)throw new Error("No url or uniprotId provided when launching protein view");let g=!l&&!!a,v=l??(a?t.addView("LinearGenomeView",{type:"LinearGenomeView",init:a}).id:void 0),D=t.addView("ProteinView",{type:"ProteinView",alignmentAlgorithm:u,displayName:m,height:d,showControls:c,showHighlight:y,zoomToBaseLevel:w,structures:[{url:f,userProvidedTranscriptSequence:b?.userProvidedTranscriptSequence??i??"",feature:b?.feature??s,connectedViewId:v}]});g&&(h??lo())&&gn(t,D.id)})}var Lm=p(x()),Em=p(Ai());var Xp=p(Ai()),Qp=p(Tp()),ue=p(zo());Ct();var Ap=p(Mt(),1),ki=(0,ke.createSvgIcon)((0,Ap.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 Ro=p(to());Ci();function Mp(e,t){let o=e.obj?.data;if(!o)return;let{B_iso_or_equiv:n}=o.atomicConformation,{offsets:r,count:i}=o.atomicHierarchy.residueAtomSegments,s=t===void 0?i:Math.min(i,t),l=[];for(let a=0;a<s;a++)l.push(n.value(r[a]));return l}function Ip(e){return!!e&&e.length>1&&e.every(t=>t>=0&&t<=100)&&new Set(e).size>1}async function Kn({structure:e,plugin:t}){let{model:o}=e.data?await Nn({data:e.data,plugin:t}):e.url?await Vn({url:e.url,plugin:t}):{model:void 0},n=o?Bn(o):void 0,r=o?Mp(o,n?.[0]?.length):void 0;return{sequences:n,confidence:r}}var Mi=p(zo());function Fp(e){let t=new Set;function o(n,r){t.add(n),Kn({structure:n,plugin:r}).then(i=>{let s=(0,Mi.isAlive)(n)?e.molstarPluginContext:void 0;s===r&&(n.setStructureData(i),n.setLoadedToMolstar(!0)),t.delete(n),s&&s!==r&&!n.loadedToMolstar&&o(n,s)}).catch(i=>{t.delete(n),(0,Mi.isAlive)(e)&&(e.setError(i),console.error(i))})}return function(){let{structures:r,molstarPluginContext:i}=e;if(i)for(let s of r)!s.loadedToMolstar&&!t.has(s)&&o(s,i)}}var _o=p(te()),Z=p(zo()),Jt=p(to());Ei();gt();ko();Ut();var Bp=e=>e;var qi=e=>e;function Hp(e){let{structureSeqToTranscriptSeqPosition:t,transcriptSeqToStructureSeqPosition:o}=Ss(e),n=Ts(e),r=Ps(e),i=cr(n),s=cr(r);return{structureToTranscript:l=>t[l],transcriptToStructure:l=>o[l],structureToAlignment:l=>n[l],alignmentToStructure:l=>i[l],transcriptToAlignment:l=>r[l],alignmentToTranscript:l=>s[l],maps:{structureSeqToTranscriptSeqPosition:t,transcriptSeqToStructureSeqPosition:o,structurePositionToAlignmentMap:n,transcriptPositionToAlignmentMap:r,alignmentToStructurePosition:i,alignmentToTranscriptPosition:s}}}Ni();var Yn=["A","R","N","D","C","Q","E","G","H","I","L","K","M","F","P","S","T","W","Y","V","B","Z","X","*"],Nd=[[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]],Gp={};for(let e=0;e<Yn.length;e++){let t={};for(let o=0;o<Yn.length;o++)t[Yn[o]]=Nd[e][o];Gp[Yn[e]]=t}function jo(e,t){return Gp[e.toUpperCase()]?.[t.toUpperCase()]??-4}var Op=-10,zp=-.5;function Vd(e,t,o=Op,n=zp){let r=e.length,i=t.length,s=[],l=[],a=[];for(let b=0;b<=r;b++){s[b]=[],l[b]=[],a[b]=[];for(let f=0;f<=i;f++)s[b][f]=-1/0,l[b][f]=-1/0,a[b][f]=-1/0}s[0][0]=0;for(let b=1;b<=r;b++)l[b][0]=o+(b-1)*n;for(let b=1;b<=i;b++)a[0][b]=o+(b-1)*n;for(let b=1;b<=r;b++)for(let f=1;f<=i;f++){let g=jo(e[b-1],t[f-1]);s[b][f]=Math.max(s[b-1][f-1],l[b-1][f-1],a[b-1][f-1])+g,l[b][f]=Math.max(s[b-1][f]+o,l[b-1][f]+n),a[b][f]=Math.max(s[b][f-1]+o,a[b][f-1]+n)}let u="",m="",d=r,c=i,y=[s[r][i],l[r][i],a[r][i]],w=Math.max(...y),h=w===s[r][i]?"M":w===l[r][i]?"Ix":"Iy";for(;d>0||c>0;)if(h==="M"&&d>0&&c>0){u=e[d-1]+u,m=t[c-1]+m;let b=jo(e[d-1],t[c-1]),f=s[d-1][c-1],g=l[d-1][c-1];s[d][c]===f+b?h="M":s[d][c]===g+b?h="Ix":h="Iy",d--,c--}else if(h==="Ix"&&d>0)u=e[d-1]+u,m="-"+m,h=l[d][c]===s[d-1][c]+o?"M":"Ix",d--;else if(c>0)u="-"+u,m=t[c-1]+m,h=a[d][c]===s[d][c-1]+o?"M":"Iy",c--;else break;return{alignedSeq1:u,alignedSeq2:m,score:w}}function Bd(e,t,o=Op,n=zp){let r=e.length,i=t.length,s=[],l=[],a=[],u=0,m=0,d=0;for(let f=0;f<=r;f++){s[f]=[],l[f]=[],a[f]=[];for(let g=0;g<=i;g++)s[f][g]=0,l[f][g]=-1/0,a[f][g]=-1/0}for(let f=1;f<=r;f++)for(let g=1;g<=i;g++){let v=jo(e[f-1],t[g-1]);s[f][g]=Math.max(0,s[f-1][g-1]+v,l[f-1][g-1]+v,a[f-1][g-1]+v),l[f][g]=Math.max(s[f-1][g]+o,l[f-1][g]+n),a[f][g]=Math.max(s[f][g-1]+o,a[f][g-1]+n);let D=Math.max(s[f][g],l[f][g],a[f][g]);D>u&&(u=D,m=f,d=g)}let c="",y="",w=m,h=d,b=s[w][h]>=l[w][h]&&s[w][h]>=a[w][h]?"M":l[w][h]>=a[w][h]?"Ix":"Iy";for(let f=e.length;f>m;f--)c=e[f-1]+c,y="-"+y;for(let f=t.length;f>d;f--)c="-"+c,y=t[f-1]+y;for(;w>0&&h>0;)if(b==="M"){if(s[w][h]===0)break;c=e[w-1]+c,y=t[h-1]+y;let f=jo(e[w-1],t[h-1]),g=s[w-1][h-1],v=l[w-1][h-1];s[w][h]===g+f?b="M":s[w][h]===v+f?b="Ix":b="Iy",w--,h--}else b==="Ix"?(c=e[w-1]+c,y="-"+y,l[w][h]===s[w-1][h]+o&&(b="M"),w--):(c="-"+c,y=t[h-1]+y,a[w][h]===s[w][h-1]+o&&(b="M"),h--);for(;w>0;)c=e[w-1]+c,y="-"+y,w--;for(;h>0;)c="-"+c,y=t[h-1]+y,h--;return{alignedSeq1:c,alignedSeq2:y,score:u}}function Hd(e,t){let o=[];for(let n=0;n<e.length;n++){let r=e[n],i=t[n];r!=="-"&&i!=="-"&&r.toUpperCase()===i.toUpperCase()?o.push("|"):r!=="-"&&i!=="-"&&jo(r,i)>0?o.push(":"):o.push(" ")}return o.join("")}function jp(e,t,o){let{alignedSeq1:n,alignedSeq2:r}=o==="smith_waterman"?Bd(e,t):Vd(e,t);return{consensus:Hd(n,r),alns:[{id:"a",seq:n},{id:"b",seq:r}]}}var Wp=Object.fromEntries([{name:"alanine",abbreviation:"Ala",singleLetterCode:"A"},{name:"arginine",abbreviation:"Arg",singleLetterCode:"R"},{name:"asparagine",abbreviation:"Asn",singleLetterCode:"N"},{name:"aspartic acid",abbreviation:"Asp",singleLetterCode:"D"},{name:"cysteine",abbreviation:"Cys",singleLetterCode:"C"},{name:"glutamic acid",abbreviation:"Glu",singleLetterCode:"E"},{name:"glutamine",abbreviation:"Gln",singleLetterCode:"Q"},{name:"glycine",abbreviation:"Gly",singleLetterCode:"G"},{name:"histidine",abbreviation:"His",singleLetterCode:"H"},{name:"isoleucine",abbreviation:"Ile",singleLetterCode:"I"},{name:"leucine",abbreviation:"Leu",singleLetterCode:"L"},{name:"lysine",abbreviation:"Lys",singleLetterCode:"K"},{name:"methionine",abbreviation:"Met",singleLetterCode:"M"},{name:"phenylalanine",abbreviation:"Phe",singleLetterCode:"F"},{name:"proline",abbreviation:"Pro",singleLetterCode:"P"},{name:"serine",abbreviation:"Ser",singleLetterCode:"S"},{name:"threonine",abbreviation:"Thr",singleLetterCode:"T"},{name:"tryptophan",abbreviation:"Trp",singleLetterCode:"W"},{name:"tyrosine",abbreviation:"Tyr",singleLetterCode:"Y"},{name:"valine",abbreviation:"Val",singleLetterCode:"V"}].map(e=>[e.abbreviation.toUpperCase(),e]));Bi();Ui();Ht();function zd(e,t){return{structureSeqPos:e.StructureProperties.residue.auth_seq_id(t)-1,code:e.StructureProperties.atom.label_comp_id(t),chain:e.StructureProperties.chain.auth_asym_id(t)}}async function Zn({plugin:e,kind:t,onUpdate:o}){let n=await ge(),r=e.behaviors.interaction[t].subscribe(i=>{if(n.StructureElement.Loci.is(i.current.loci)){let s=n.StructureElement.Loci.getFirstLocation(i.current.loci);o(s?zd(n,s):void 0)}else o(void 0)});return()=>{r.unsubscribe()}}Ut();Je();ce();ko();var Jd=Z.types.model({url:Z.types.maybe(Z.types.string),data:Z.types.maybe(Z.types.string),connectedViewId:Z.types.maybe(Z.types.string),pairwiseAlignment:Z.types.frozen(),feature:Z.types.frozen(),userProvidedTranscriptSequence:Z.types.string}).volatile(()=>({clickedStructureRange:void 0,hoverPosition:void 0,structureSequences:void 0,structureConfidence:void 0,isMouseInAlignment:!1,loadedToMolstar:!1,alignmentHoverRange:void 0,selectedFeatureId:void 0,hiddenFeatureTypes:new Set})).actions(e=>({setStructureData(t){e.structureSequences=t.sequences,e.structureConfidence=t.confidence},hideFeatureType(t){e.hiddenFeatureTypes=new Set([...e.hiddenFeatureTypes,t])},showFeatureType(t){let o=new Set(e.hiddenFeatureTypes);o.delete(t),e.hiddenFeatureTypes=o},showAllFeatureTypes(){e.hiddenFeatureTypes=new Set},setLoadedToMolstar(t){e.loadedToMolstar=t}})).views(e=>({get connectedView(){let{views:t}=(0,_o.getSession)(e);return t.find(o=>o.id===e.connectedViewId)}})).actions(e=>({setClickedStructureRange(t){e.clickedStructureRange=t},setAlignmentHoverRange(t){e.alignmentHoverRange=t},setSelectedFeatureId(t){e.selectedFeatureId=t},setHoveredPosition(t){e.hoverPosition=t?{...t,source:"structure"}:void 0},setGenomeHoveredPosition(t){e.hoverPosition=t===void 0?void 0:{structureSeqPos:t,source:"genome"}},setAlignment(t){e.pairwiseAlignment=t},setIsMouseInAlignment(t){e.isMouseInAlignment=t}})).views(e=>({get uniprotId(){let{url:t}=e;if(t)return wn(t)},get coordinateMapper(){return e.pairwiseAlignment?Hp(e.pairwiseAlignment):void 0},get structureSeqToTranscriptSeqPosition(){return this.coordinateMapper?.maps.structureSeqToTranscriptSeqPosition},get transcriptSeqToStructureSeqPosition(){return this.coordinateMapper?.maps.transcriptSeqToStructureSeqPosition},get structurePositionToAlignmentMap(){return this.coordinateMapper?.maps.structurePositionToAlignmentMap},get transcriptPositionToAlignmentMap(){return this.coordinateMapper?.maps.transcriptPositionToAlignmentMap},get confidenceCells(){let t=e.structureConfidence;return Ip(t)?Hi(t,this.structurePositionToAlignmentMap):[]},get hydrophobicityCells(){let t=e.structureSequences?.[0];return t?Hi(Jp(oe(t)),this.structurePositionToAlignmentMap):[]},get pairwiseAlignmentToTranscriptPosition(){return this.coordinateMapper?.maps.alignmentToTranscriptPosition},get pairwiseAlignmentToStructurePosition(){return this.coordinateMapper?.maps.alignmentToStructurePosition},get hoverString(){let t=e.hoverPosition;if(t===void 0)return"";let o=this.hoverStructureLetter,n=this.hoverGenomeLetter,r=[];return t.structureSeqPos!==void 0&&r.push(`${t.structureSeqPos+1}`),o&&r.push(`Structure: ${o}`),n&&o&&n!==o&&r.push(`Genome: ${n}`),t.chain&&r.push(`Chain: ${t.chain}`),r.join(", ")},get genomeToTranscriptSeqMapping(){return e.feature?oo(new _o.SimpleFeature(e.feature)):void 0},get structureSeqHoverPos(){return e.hoverPosition?.structureSeqPos},get alignmentHoverPos(){let t=this.structureSeqHoverPos;return t===void 0?void 0:this.coordinateMapper?.structureToAlignment(Bp(t))},get hoverStructureRange(){let{alignmentHoverRange:t}=e,o=this.pairwiseAlignmentToStructurePosition;if(!t||!o)return;let n=o[t.start],r=o[t.end];return n===void 0||r===void 0?void 0:{start:n,end:r+1}},get clickAlignmentRange(){let t=e.clickedStructureRange,o=this.structurePositionToAlignmentMap;if(!t||!o)return;let n=o[t.start],r=o[t.end-1];return n===void 0||r===void 0?void 0:{start:n,end:r}},structureRangeToGenomeHighlight(t){let o=e.connectedView?.assemblyNames[0],n=this.genomeToTranscriptSeqMapping;if(!t||!o||!n)return[];let r={genomeToTranscriptSeqMapping:n,pairwiseAlignment:e.pairwiseAlignment,structureSeqToTranscriptSeqPosition:this.structureSeqToTranscriptSeqPosition},i=t.end>t.start+1?Vi({model:r,structureSeqPos:t.start,structureSeqEndPos:t.end}):$n({model:r,structureSeqPos:t.start});if(!i)return[];let[s,l]=i;return[{assemblyName:o,refName:n.refName,start:s,end:l}]},get hoverGenomeHighlights(){if(e.hoverPosition?.source==="genome")return[];let t=this.hoverStructureRange;if(t)return this.structureRangeToGenomeHighlight(t);let o=this.structureSeqHoverPos;return o===void 0?[]:this.structureRangeToGenomeHighlight({start:o,end:o+1})},get clickGenomeHighlights(){return this.structureRangeToGenomeHighlight(e.clickedStructureRange)},get hoverStructureLetter(){let t=e.hoverPosition?.code;if(t)return Wp[t]?.singleLetterCode;let o=this.structureSeqHoverPos;if(o!==void 0&&e.structureSequences?.[0])return e.structureSequences[0][o]},get hoverGenomeLetter(){let t=this.structureSeqHoverPos;if(t===void 0)return;let o=this.structureSeqToTranscriptSeqPosition?.[t];if(o!==void 0)return e.userProvidedTranscriptSequence[o]},get alignmentMatchSet(){let t=e.pairwiseAlignment?.consensus;if(!t)return;let o=new Set;for(let n=0;n<t.length;n++)(t[n]==="|"||t[n]===":")&&o.add(n);return o},get alignmentPending(){return!e.pairwiseAlignment&&!!e.userProvidedTranscriptSequence&&!!e.structureSequences?.[0]},get exactMatch(){let t=oe(e.userProvidedTranscriptSequence),o=e.structureSequences?.[0]?oe(e.structureSequences[0]):void 0;return t===o},get parentView(){return(0,Z.getParent)(e,2)},get zoomToBaseLevel(){return this.parentView.zoomToBaseLevel},get autoScrollAlignment(){return this.parentView.autoScrollAlignment},get showHighlight(){return this.parentView.showHighlight},get showProteinTracks(){return this.parentView.showProteinTracks},get trackHeight(){return this.parentView.compactTracks?8:12},get trackGap(){return this.parentView.compactTracks?1:2},get alignmentAlgorithm(){return Ra(this.parentView.alignmentAlgorithm)},get molstarPluginContext(){return this.parentView.molstarPluginContext},get structureIndex(){return this.parentView.structures.indexOf(e)},get molstarStructure(){let t=this.structureIndex;return e.loadedToMolstar&&t>=0?this.molstarPluginContext?.managers.structure.hierarchy.current.structures[t]?.cell.obj?.data:void 0}})).actions(e=>({setError(t){e.parentView.setError(t)},hoverAlignmentPosition(t){if(!e.alignmentHoverRange){let o=e.coordinateMapper?.alignmentToStructure(qi(t));e.setHoveredPosition(o!==void 0?{structureSeqPos:o}:void 0)}},clickAlignmentPosition(t){let o=e.coordinateMapper?.alignmentToStructure(qi(t));e.setSelectedFeatureId(void 0),o!==void 0?Wo({model:e,structureSeqPos:o}).catch(n=>{console.error(n),e.parentView.setError(n)}):e.setClickedStructureRange(void 0)}})).actions(e=>({afterAttach(){(0,Z.addDisposer)(e,(0,Jt.autorun)(async()=>{try{let{userProvidedTranscriptSequence:t,structureSequences:o,exactMatch:n,alignmentAlgorithm:r}=e,i=t,s=o?.[0];if(e.pairwiseAlignment||!i||!s)return;let l=oe(i),a=oe(s);if(n)e.setAlignment({consensus:"|".repeat(l.length),alns:[{id:"seq1",seq:l},{id:"seq2",seq:a}]});else{let u=jp(l,a,r);e.setAlignment(u),e.parentView.setShowAlignment(!0)}}catch(t){console.error(t),e.parentView.setError(t)}})),(0,Z.addDisposer)(e,(0,Jt.autorun)(()=>{let{hovered:t}=(0,_o.getSession)(e),{transcriptSeqToStructureSeqPosition:o,genomeToTranscriptSeqMapping:n,connectedView:r}=e;if(r?.initialized&&n&&Pt(t)){let{hoverPosition:i}=t,s=n.g2p[i.coord-1],l=s===void 0?void 0:o?.[s];e.setGenomeHoveredPosition(l)}else e.hoverPosition?.source==="genome"&&e.setGenomeHoveredPosition(void 0)})),(0,Z.addDisposer)(e,(0,Jt.autorun)(async()=>{let{molstarPluginContext:t}=e;if(t){let o=await Zn({plugin:t,kind:"click",onUpdate:n=>{n&&(e.setHoveredPosition(n),e.setSelectedFeatureId(void 0),Wo({model:e,structureSeqPos:n.structureSeqPos}).catch(r=>{console.error(r),e.parentView.setError(r)}))}});(0,Z.addDisposer)(e,o)}})),(0,Z.addDisposer)(e,(0,Jt.autorun)(async()=>{let{molstarPluginContext:t}=e;if(t){let o=await Zn({plugin:t,kind:"hover",onUpdate:n=>{e.setHoveredPosition(n)}});(0,Z.addDisposer)(e,o)}})),(0,Z.addDisposer)(e,(0,Jt.autorun)(async()=>{let{showHighlight:t,structureSeqToTranscriptSeqPosition:o,molstarPluginContext:n,molstarStructure:r}=e;if(r&&n&&o)if(t){let i=Object.keys(o).map(s=>+s+1);await Lp({structure:r,residues:i,plugin:n,mode:"select"})}else n.managers.interactivity.lociSelects.deselectAll()})),(0,Z.addDisposer)(e,(0,Jt.autorun)(async()=>{let{molstarStructure:t,molstarPluginContext:o,hoverStructureRange:n,structureSeqHoverPos:r}=e;t&&o&&(n?await Di({structure:t,plugin:o,startResidue:n.start+1,endResidue:n.end}):r!==void 0?await Ep({structure:t,plugin:o,selectedResidue:r,mode:"highlight"}):o.managers.interactivity.lociHighlights.clearHighlights())}))}})),Xn=Jd;Ht();var Kd="SuperpositionTransform";async function Gi(e){let{QueryContext:t,StructureElement:o,StructureSelection:n,StructureSelectionQueries:r,PluginCommands:i,PluginStateObject:s,tmAlign:l}=await ge(),a=e.managers.structure.hierarchy.current.structures;if(a.length<2)return;let{query:u}=r.trace,d=a.map(w=>{let h=w.cell.obj?.data;if(!h)return;let b=e.helpers.substructureParent.get(h);if(!b)return;let f=e.state.data.selectQ(v=>v.byValue(b).rootOfType(s.Molecule.Structure))[0]?.obj?.data;if(!f)return;let g=n.toLociWithSourceUnits(u(new t(h)));return o.Loci.remap(g,f)}).filter(w=>w!==void 0);if(d.length<2)return;let y=e.managers.structure.hierarchy.findStructure(d[0]?.structure)?.transform?.cell.obj?.data.coordinateSystem;for(let w=1;w<d.length;w++){let h=l(d[0],d[w]),{bTransform:b,tmScoreA:f,tmScoreB:g,rmsd:v,alignedLength:D}=h;await Yd(e,a[w].cell,b,y),e.log.info(`TM-align: TM-score=${f.toFixed(4)}/${g.toFixed(4)}, RMSD=${v.toFixed(2)} \xC5, aligned ${D} residues.`)}await new Promise(w=>requestAnimationFrame(w)),await i.Camera.Reset(e)}async function Yd(e,t,o,n){let{Mat4:r,StateObjectRef:i,StateTransforms:s}=await ge(),l=i.resolveAndCheck(e.state.data,t);if(!l)return;let a=e.state.data.selectQ(c=>c.byRef(l.transform.ref).subtree().withTransformer(s.Model.TransformStructureConformation))[0],m={transform:{name:"matrix",params:{data:n&&!r.isIdentity(n.matrix)?r.mul(r(),n.matrix,o):o,transpose:!1}}},d=a?e.state.data.build().to(a).update(m):e.state.data.build().to(t).insert(s.Model.TransformStructureConformation,m,{tags:Kd});await e.runTask(e.state.data.updateTree(d))}var $p="proteinView-settings",Zp=["showAlignment","showProteinTracks","showHighlight","zoomToBaseLevel","autoScrollAlignment","compactTracks"];function $d(){return ue.types.compose("ProteinView",Xp.BaseViewModel,ue.types.model({id:Qp.ElementId,type:ue.types.literal("ProteinView"),structures:ue.types.array(Xn),showControls:!1,height:ue.types.optional(ue.types.number,650),showHighlight:!1,zoomToBaseLevel:!0,autoScrollAlignment:!1,colorScheme:ue.types.optional(ue.types.enumeration("ColorScheme",kp),"default"),showAlignment:!0,showProteinTracks:!0,compactTracks:!0,alignmentAlgorithm:ue.types.optional(ue.types.string,Fo),connectedMsaViewId:ue.types.maybe(ue.types.string),init:ue.types.frozen()})).volatile(()=>({error:void 0,molstarPluginContext:void 0,showManualAlignmentDialog:!1,showAddStructureDialog:!1})).actions(e=>({setHeight(t){return e.height=t,t},setShowAlignment(t){e.showAlignment=t},setShowControls(t){e.showControls=t},setError(t){e.error=t},setShowHighlight(t){e.showHighlight=t},setShowProteinTracks(t){e.showProteinTracks=t},setCompactTracks(t){e.compactTracks=t},setZoomToBaseLevel(t){e.zoomToBaseLevel=t},setAutoScrollAlignment(t){e.autoScrollAlignment=t},setAlignmentAlgorithm(t){e.alignmentAlgorithm=t},setColorScheme(t){e.colorScheme=t},setMolstarPluginContext(t){if(t!==e.molstarPluginContext)for(let o of e.structures)o.setLoadedToMolstar(!1);e.molstarPluginContext=t},setShowManualAlignmentDialog(t){e.showManualAlignmentDialog=t},setShowAddStructureDialog(t){e.showAddStructureDialog=t},setInit(t){e.init=t},setConnectedMsaViewId(t){e.connectedMsaViewId=t},addStructure(t){e.structures.push(Xn.create({url:t.url,data:t.data,userProvidedTranscriptSequence:""}))}})).actions(e=>({async addStructureAndSuperpose(t){let{molstarPluginContext:o}=e;if(!o)return;let n=Xn.create({url:t.url,data:t.data,userProvidedTranscriptSequence:""});n.setLoadedToMolstar(!0),e.structures.push(n);try{n.setStructureData(await Kn({structure:t,plugin:o})),e.structures.length>1&&await Gi(o)}catch(r){e.setError(r),console.error(r)}}})).actions(e=>({afterAttach(){try{let t=localStorage.getItem($p);if(t){let o=JSON.parse(t);for(let n of Zp)o[n]!==void 0&&(e[n]=o[n])}}catch(t){console.error("Failed to restore protein view settings",t)}(0,ue.addDisposer)(e,(0,Ro.autorun)(()=>{try{let t={};for(let o of Zp)t[o]=e[o];localStorage.setItem($p,JSON.stringify(t))}catch(t){console.error("Failed to save protein view settings",t)}})),(0,ue.addDisposer)(e,(0,Ro.autorun)(()=>{let{init:t}=e;if(t){let{structures:o,showControls:n,showAlignment:r}=t;if(o)for(let i of o)e.addStructure(i);n!==void 0&&e.setShowControls(n),r!==void 0&&e.setShowAlignment(r),e.setInit(void 0)}})),(0,ue.addDisposer)(e,(0,Ro.autorun)(()=>{let{molstarPluginContext:t,colorScheme:o}=e,n=e.structures.filter(r=>r.structureSequences!==void 0).length;t&&n>0&&Cp({plugin:t,colorScheme:o}).catch(r=>{console.error(r),e.setError(r)})})),(0,ue.addDisposer)(e,(0,Ro.autorun)(Fp(e)))}})).views(e=>({get primaryStructure(){return e.structures[0]},menuItems(){return[{label:"Pairwise alignment",icon:ki,type:"checkbox",checked:e.showAlignment,onClick:()=>{e.setShowAlignment(!e.showAlignment)}},{label:"Protein feature tracks",icon:ki,type:"checkbox",checked:e.showProteinTracks,onClick:()=>{e.setShowProteinTracks(!e.showProteinTracks)}},{label:"Color scheme...",subMenu:To.map(t=>({label:t.label,type:"radio",checked:e.colorScheme===t.value,onClick:()=>{e.setColorScheme(t.value)}}))},{label:"Add structure...",onClick:()=>{e.setShowAddStructureDialog(!0)}},{label:"Advanced...",icon:ao,subMenu:[{label:"Pairwise alignment as green highlight",type:"checkbox",checked:e.showHighlight,onClick:()=>{e.setShowHighlight(!e.showHighlight)}},{label:"Show all protein feature tracks",onClick:()=>{for(let t of e.structures)t.showAllFeatureTypes()}},{label:"Import manual alignment...",onClick:()=>{e.setShowManualAlignmentDialog(!0)}},{label:"Re-align structures (TM-align)",onClick:()=>{e.molstarPluginContext&&Gi(e.molstarPluginContext).catch(t=>{console.error(t),e.setError(t)})}},{label:"Zoom to base level on click",type:"checkbox",checked:e.zoomToBaseLevel,onClick:()=>{e.setZoomToBaseLevel(!e.zoomToBaseLevel)}},{label:"Auto-scroll protein feature view on hover",type:"checkbox",checked:e.autoScrollAlignment,onClick:()=>{e.setAutoScrollAlignment(!e.autoScrollAlignment)}}]}]}}))}var eu=$d;var Ag=(0,Lm.lazy)(()=>Promise.resolve().then(()=>(Fm(),Im)));function $i(e){e.addViewType(()=>new Em.ViewType({name:"ProteinView",displayName:"Protein view",stateModel:eu(),ReactComponent:Ag}))}var Gm=p(sn());var qm=p(io());var kg=(0,qm.ConfigurationSchema)("UniProtVariationAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}},scoreField:{type:"string",defaultValue:""}},{explicitlyTyped:!0}),Dm=kg;function Zi(e){e.addAdapterType(()=>new Gm.default({name:"UniProtVariationAdapter",displayName:"UniProtVariation adapter",configSchema:Dm,getAdapterClass:()=>Promise.resolve().then(()=>(Um(),Hm)).then(t=>t.default)}))}var Om="0.4.13";var ir=class extends zm.default{name="ProteinViewer";version=Om;install(t){$i(t),Ti(t),Pi(t),yr(t),wr(t),xr(t),Zi(t)}configure(t){}};return Ym(Cg);})();
28
28
  /*! Bundled license information:
29
29
 
30
30
  use-sync-external-store/cjs/use-sync-external-store-shim.production.js: