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.
- package/dist/LaunchProteinView/components/LaunchSettingsDialog.d.ts +5 -0
- package/dist/LaunchProteinView/components/LaunchSettingsDialog.js +23 -0
- package/dist/LaunchProteinView/components/ProteinViewActions.js +13 -2
- package/dist/LaunchProteinView/utils/launchViewUtils.d.ts +2 -1
- package/dist/LaunchProteinView/utils/launchViewUtils.js +7 -2
- package/dist/LaunchProteinView/utils/sideBySide.d.ts +11 -0
- package/dist/LaunchProteinView/utils/sideBySide.js +33 -0
- package/dist/LaunchProteinViewExtensionPoint/index.js +9 -2
- package/dist/config.json +1 -1
- package/dist/jbrowse-plugin-protein3d.umd.production.min.js +15 -15
- package/dist/jbrowse-plugin-protein3d.umd.production.min.js.map +4 -4
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/src/LaunchProteinView/components/LaunchSettingsDialog.tsx +63 -0
- package/src/LaunchProteinView/components/ProteinViewActions.tsx +21 -1
- package/src/LaunchProteinView/utils/launchViewUtils.ts +10 -1
- package/src/LaunchProteinView/utils/sideBySide.ts +55 -0
- package/src/LaunchProteinViewExtensionPoint/index.ts +17 -1
- package/src/version.ts +1 -1
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
"use strict";var JBrowsePluginProtein3d=(()=>{var
|
|
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
|
|
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=
|
|
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
|
|
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())&<.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?
|
|
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})=>`>${
|
|
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?`${
|
|
18
|
-
`),slotProps:{input:{readOnly:!0,classes:{input:n.textAreaFont}}}}))}function
|
|
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
|
|
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
|
|
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:
|