jbrowse-plugin-protein3d 0.4.11 → 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.
Files changed (52) hide show
  1. package/dist/LaunchProteinView/components/LaunchSettingsDialog.d.ts +5 -0
  2. package/dist/LaunchProteinView/components/LaunchSettingsDialog.js +23 -0
  3. package/dist/LaunchProteinView/components/ProteinViewActions.js +13 -2
  4. package/dist/LaunchProteinView/hooks/useAlphaFoldDBSearch.js +12 -3
  5. package/dist/LaunchProteinView/hooks/useAlphaFoldData.d.ts +1 -0
  6. package/dist/LaunchProteinView/hooks/useAlphaFoldData.js +2 -1
  7. package/dist/LaunchProteinView/hooks/useAlphaFoldSequenceSearch.d.ts +1 -0
  8. package/dist/LaunchProteinView/hooks/useAlphaFoldSequenceSearch.js +2 -1
  9. package/dist/LaunchProteinView/hooks/useFoldseekSearch.js +47 -12
  10. package/dist/LaunchProteinView/hooks/useStructureFileSequence.d.ts +1 -0
  11. package/dist/LaunchProteinView/hooks/useStructureFileSequence.js +5 -2
  12. package/dist/LaunchProteinView/services/foldseekApi.d.ts +23 -5
  13. package/dist/LaunchProteinView/services/foldseekApi.js +21 -13
  14. package/dist/LaunchProteinView/utils/launchViewUtils.d.ts +2 -1
  15. package/dist/LaunchProteinView/utils/launchViewUtils.js +7 -2
  16. package/dist/LaunchProteinView/utils/sideBySide.d.ts +11 -0
  17. package/dist/LaunchProteinView/utils/sideBySide.js +33 -0
  18. package/dist/LaunchProteinViewExtensionPoint/index.js +9 -2
  19. package/dist/ProteinView/applyColorTheme.d.ts +1 -1
  20. package/dist/ProteinView/loadStructureData.d.ts +18 -0
  21. package/dist/ProteinView/loadStructureData.js +22 -0
  22. package/dist/ProteinView/model.d.ts +2 -2
  23. package/dist/ProteinView/model.js +6 -36
  24. package/dist/ProteinView/structureLoader.d.ts +30 -0
  25. package/dist/ProteinView/structureLoader.js +58 -0
  26. package/dist/config.json +1 -1
  27. package/dist/fetchUtils.d.ts +1 -1
  28. package/dist/fetchUtils.js +18 -2
  29. package/dist/jbrowse-plugin-protein3d.umd.production.min.js +15 -15
  30. package/dist/jbrowse-plugin-protein3d.umd.production.min.js.map +4 -4
  31. package/dist/molstar-chunk.js.map +1 -1
  32. package/dist/version.d.ts +1 -1
  33. package/dist/version.js +1 -1
  34. package/package.json +4 -2
  35. package/src/LaunchProteinView/components/LaunchSettingsDialog.tsx +63 -0
  36. package/src/LaunchProteinView/components/ProteinViewActions.tsx +21 -1
  37. package/src/LaunchProteinView/hooks/useAlphaFoldDBSearch.ts +13 -1
  38. package/src/LaunchProteinView/hooks/useAlphaFoldData.ts +3 -1
  39. package/src/LaunchProteinView/hooks/useAlphaFoldSequenceSearch.ts +12 -10
  40. package/src/LaunchProteinView/hooks/useFoldseekSearch.ts +49 -12
  41. package/src/LaunchProteinView/hooks/useStructureFileSequence.ts +5 -2
  42. package/src/LaunchProteinView/services/foldseekApi.ts +57 -23
  43. package/src/LaunchProteinView/utils/launchViewUtils.ts +10 -1
  44. package/src/LaunchProteinView/utils/sideBySide.ts +55 -0
  45. package/src/LaunchProteinViewExtensionPoint/index.ts +17 -1
  46. package/src/ProteinView/loadStructureData.ts +36 -0
  47. package/src/ProteinView/model.ts +6 -47
  48. package/src/ProteinView/structureLoader.test.ts +102 -0
  49. package/src/ProteinView/structureLoader.ts +74 -0
  50. package/src/fetchUtils.test.ts +27 -0
  51. package/src/fetchUtils.ts +22 -2
  52. package/src/version.ts +1 -1
@@ -1,30 +1,30 @@
1
- "use strict";var JBrowsePluginProtein3d=(()=>{var Em=Object.create;var _o=Object.defineProperty;var qm=Object.getOwnPropertyDescriptor;var Dm=Object.getOwnPropertyNames;var Nm=Object.getPrototypeOf,Vm=Object.prototype.hasOwnProperty;var v=(e,t)=>()=>(e&&(t=e(e=0)),t);var D=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),bt=(e,t)=>{for(var o in t)_o(e,o,{get:t[o],enumerable:!0})},Ri=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Dm(t))!Vm.call(e,r)&&r!==o&&_o(e,r,{get:()=>t[r],enumerable:!(n=qm(t,r))||n.enumerable});return e};var p=(e,t,o)=>(o=e!=null?Em(Nm(e)):{},Ri(t||!e||!e.__esModule?_o(o,"default",{value:e,enumerable:!0}):o,e)),Bm=e=>Ri(_o({},"__esModule",{value:!0}),e);var Ki=D((bg,Ji)=>{Ji.exports=JBrowseExports["@jbrowse/core/Plugin"]});var x=D((yg,$i)=>{$i.exports=JBrowseExports.react});var W=D((wg,Yi)=>{Yi.exports=JBrowseExports["mobx-react"]});var ee=D((xg,Zi)=>{Zi.exports=JBrowseExports["@jbrowse/core/util"]});var Ze=D((vg,Xi)=>{Xi.exports=JBrowseExports["tss-react/mui"]});function ce(){return Jo||(Jo=import(Um+"molstar-chunk.js").catch(function(e){throw Jo=void 0,e})),Jo}var rs,Um,Jo,Nt=v(()=>{"use strict";rs=typeof document<"u"?document.currentScript?.src:void 0,Um=rs?rs.replace(/\/[^/]*$/,"/"):""});function wt(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 is({structure:e,selectedResidue:t}){let{Script:o}=await ce();return o.getStructureSelection(n=>n.struct.generator.atomGroups({"residue-test":n.core.rel.eq([n.struct.atomProperty.macromolecular.label_seq_id(),t]),"group-by":n.struct.atomProperty.macromolecular.residueKey()}),e)}function rr(e){return Object.fromEntries(Object.entries(e).map(([t,o])=>[o,+t]))}var Vt=v(()=>{"use strict";Nt()});function us(e){let t=e.strand,o=e.refName;if(t!==-1&&t!==1)throw new Error(`Invalid strand value: ${t}. Expected 1 or -1.`);if(!o)throw new Error("refName is required");let n=new Map;for(let a of e.subfeatures??[])if(a.type==="CDS"&&a.start<a.end){let u=`${a.start}-${a.end}`;n.has(u)||n.set(u,a)}let r=[...n.values()].sort((a,u)=>t*(a.start-u.start)),i={},s={},l={};if(r.length!==0){let u=(3-(r[0]?.phase??0))%3,m=-1;for(let d of r){let c=d.end-d.start;for(let w=0;w<c;w++){let y=t===1?d.start+w:d.end-1-w,f=Math.floor(u++/3);i[y]=f,f!==m?(s[f]=y,l[f]=[y],m=f):l[f].push(y)}}}return{g2p:i,p2g:s,p2gCodon:l,refName:o,strand:t}}function Ko(e,t,o){let n=e[t];if(n!==void 0)return o===1?[n,n+3]:[n-2,n+1]}var $o=v(()=>{});var Yt=D((Eg,ms)=>{ms.exports=JBrowseExports.mobx});function cs(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 ds(e){let t={};for(let o=0,n=0;o<e.length;o++)e[o]!=="-"&&(t[n]=o,n++);return t}function gs(e){return ds(e.alns[1].seq)}function fs(e){return ds(e.alns[0].seq)}function Zt(e){return us(e.toJSON())}var To=v(()=>{"use strict";$o()});var hs,Xe,ir,Bt,Yo=v(()=>{"use strict";hs=p(ee());$o();Xe=p(Yt());To();ir=class{views=Xe.observable.map();constructor(){(0,Xe.makeObservable)(this,{register:Xe.action,unregister:Xe.action,cleanupStaleViews:Xe.action,entries:Xe.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 hs.SimpleFeature(r.feature),s=Zt(i);if(!s)return;let{p2g:l,strand:a,refName:u}=s,m=Ko(l,o,a);if(!m)return;let[d,c]=m;return{refName:u,start:d,end:c}}},Bt=new ir});function te(e){return e.replaceAll("*","")}function Ht(e){let o=(e.get("subfeatures")??[]).filter(n=>n.get("type")==="mRNA"||n.get("type")==="transcript");return o.length>0?o:[e]}function Po(e){return e?.replace(/\.[^./]+$/,"")}function Is(e){return e===void 0?"":e.id()}function Se(e){return e===void 0?"":e.get("name")??e.get("id")??""}function Xt(e){return e===void 0?"":e.get("gene_name")??e.get("name")??e.get("id")??""}function xt(e){return Fs.test(e)||Ls.test(e)||Es.test(e)||qs.test(e)||Ds.test(e)||Ns.test(e)||pr.test(e)}function Qo(e){if(Fs.test(e)||Ls.test(e)||Es.test(e))return"ensembl";if(qs.test(e)||Ds.test(e))return"refseq";if(Ns.test(e))return"ccds";if(pr.test(e))return"hgnc"}function _m(e){return e?Array.isArray(e)?e.flatMap(t=>typeof t=="string"?t.split(","):[]):typeof e=="string"?e.split(",").map(t=>t.trim()):[]:[]}function Rm(e){let t=[];for(let o of e){let n=o.split(":"),r=n[n.length-1];r&&xt(r)&&t.push(r),xt(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 Jm(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(/\.[^./]+$/,"");xt(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}`):pr.test(s)&&t.push(s)}let r=e.get("Dbxref")??e.get("dbxref")??e.get("db_xref"),i=Rm(_m(r));for(let s of i)t.push(s);return[...new Set(t)]}function Vs(e){if(!e)return{recognizedIds:[]};let t=e;if(e.get("type")==="gene"){let l=Ht(e);l.length>0&&(t=l[0])}let o=Jm(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 Bs({options:e,isoformSequences:t,structureSequence:o}){let n=e.find(i=>o&&te(t[i.id()]?.seq??"")===o),r=e.filter(i=>!!t[i.id()]).toSorted((i,s)=>t[s.id()].seq.length-t[i.id()].seq.length)[0];return n??r}var Fs,Ls,Es,qs,Ds,Ns,pr,pe=v(()=>{"use strict";Fs=/^ENS[A-Z]*G\d+/i,Ls=/^ENS[A-Z]*T\d+/i,Es=/^ENS[A-Z]*P\d+/i,qs=/^[NX][MR]_\d+/i,Ds=/^[NX]P_\d+/i,Ns=/^CCDS\d+/i,pr=/^HGNC:\d+/i});var en=D((df,_s)=>{_s.exports=JBrowseExports["@jbrowse/core/pluggableElementTypes/AdapterType"]});var eo=D((gf,Rs)=>{Rs.exports=JBrowseExports["@jbrowse/core/configuration"]});var tn=D((hf,$s)=>{$s.exports=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"]});var on=D((bf,Ys)=>{Ys.exports=JBrowseExports["@jbrowse/core/util/io"]});var nn=D((yf,Zs)=>{Zs.exports=JBrowseExports["@jbrowse/core/util/rxjs"]});var ta={};bt(ta,{default:()=>rn});var Xs,sn,Qs,ea,rn,oa=v(()=>{"use strict";Xs=p(tn()),sn=p(ee()),Qs=p(on()),ea=p(nn()),rn=class extends Xs.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let t=JSON.parse(await(0,Qs.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,ea.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,sn.doesIntersect2)(a.start,a.end,r,i)&&n.next(new sn.SimpleFeature({...a,refName:s}));n.complete()})}freeResources(){}}});var ua={};bt(ua,{default:()=>an,parseAlphaMissense:()=>pa});function pa(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 sa,vt,aa,la,an,ma=v(()=>{"use strict";sa=p(tn()),vt=p(ee()),aa=p(on()),la=p(nn());an=class extends sa.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let t=await(0,aa.openLocation)(this.getConf("location")).readFile("utf8");return pa(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,vt.min)(n),scoreMax:(0,vt.max)(n)}}async getMultiRegionFeatureDensityStats(t){return{featureDensity:0}}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,la.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,vt.doesIntersect2)(a.start,a.end,r,i)&&n.next(new vt.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 ga=D((Pf,da)=>{da.exports=JBrowseExports["@mui/material/utils"]});var Te,St=v(()=>{"use client";Te=p(ga(),1)});var Tt=D((kf,fa)=>{fa.exports=JBrowseExports["react/jsx-runtime"]});var Ge=D((If,ya)=>{ya.exports=JBrowseExports["@jbrowse/core/ui"]});var L=D((Ff,wa)=>{wa.exports=JBrowseExports["@mui/material"]});function xr(e){let t=e.next();for(;!t.done&&t.value.trim()==="";)t=e.next();return t.value}var vr=v(()=>{});function Ea(e){let t=e.trim();return t?t.split(/\s+/).every(n=>/^\d+$/.test(n)):!1}function oc(e){let t=e.trim();return/^\w+\s+/.test(t)&&!Ea(e)}function nc(e){return e.length>=3&&/^\d+$/.test(e[1])}function rc(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 La(e){let t=xr(e),o=[],n="";if(!t)return;for(;t;)Ea(t)||(oc(t)?o.push(t):n=t),t=e.next().value;if(o.length===0)return;let r=o.map(w=>w.trim().split(/\s+/)),i=r[0];if(!i)return;let s=nc(i)?2:1,[l,a]=rc(o[0],s),u=r.map(w=>w[0]),m=r.map(w=>w[s]),d=n.slice(l,a),c=m[0];if(c){let w=c.length-d.length;w>0&&(d+=" ".repeat(w))}return{ids:u,seqs:m,consensus:d}}function qa(e){let t,o=La(e);if(o!==void 0)for(;t=La(e);){for(let n=0;n<t.seqs.length;n++)o.seqs[n]+=t.seqs[n];o.consensus+=t.consensus}return o}var Da=v(()=>{vr()});function un(e){let t=e.split(`
1
+ "use strict";var JBrowsePluginProtein3d=(()=>{var Wm=Object.create;var $o=Object.defineProperty;var _m=Object.getOwnPropertyDescriptor;var Rm=Object.getOwnPropertyNames;var Jm=Object.getPrototypeOf,Km=Object.prototype.hasOwnProperty;var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var V=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),vt=(e,t)=>{for(var o in t)$o(e,o,{get:t[o],enumerable:!0})},ts=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Rm(t))!Km.call(e,r)&&r!==o&&$o(e,r,{get:()=>t[r],enumerable:!(n=_m(t,r))||n.enumerable});return e};var p=(e,t,o)=>(o=e!=null?Wm(Jm(e)):{},ts(t||!e||!e.__esModule?$o(o,"default",{value:e,enumerable:!0}):o,e)),Ym=e=>ts($o({},"__esModule",{value:!0}),e);var ns=V((Ig,os)=>{os.exports=JBrowseExports["@jbrowse/core/Plugin"]});var x=V((Fg,rs)=>{rs.exports=JBrowseExports.react});var _=V((Lg,is)=>{is.exports=JBrowseExports["mobx-react"]});var te=V((Eg,ss)=>{ss.exports=JBrowseExports["@jbrowse/core/util"]});var tt=V((qg,as)=>{as.exports=JBrowseExports["tss-react/mui"]});function ge(){return Xo||(Xo=import(Zm+"molstar-chunk.js").catch(function(e){throw Xo=void 0,e})),Xo}var ds,Zm,Xo,Ht=S(()=>{"use strict";ds=typeof document<"u"?document.currentScript?.src:void 0,Zm=ds?ds.replace(/\/[^/]*$/,"/"):""});function Pt(e){return!!e&&typeof e=="object"&&"hoverPosition"in e&&!!e.hoverPosition&&typeof e.hoverPosition=="object"&&"coord"in e.hoverPosition&&"refName"in e.hoverPosition}async function gs({structure:e,selectedResidue:t}){let{Script:o}=await ge();return o.getStructureSelection(n=>n.struct.generator.atomGroups({"residue-test":n.core.rel.eq([n.struct.atomProperty.macromolecular.label_seq_id(),t]),"group-by":n.struct.atomProperty.macromolecular.residueKey()}),e)}function cr(e){return Object.fromEntries(Object.entries(e).map(([t,o])=>[o,+t]))}var Ut=S(()=>{"use strict";Ht()});function ws(e){let t=e.strand,o=e.refName;if(t!==-1&&t!==1)throw new Error(`Invalid strand value: ${t}. Expected 1 or -1.`);if(!o)throw new Error("refName is required");let n=new Map;for(let a of e.subfeatures??[])if(a.type==="CDS"&&a.start<a.end){let u=`${a.start}-${a.end}`;n.has(u)||n.set(u,a)}let r=[...n.values()].sort((a,u)=>t*(a.start-u.start)),i={},s={},l={};if(r.length!==0){let u=(3-(r[0]?.phase??0))%3,m=-1;for(let d of r){let c=d.end-d.start;for(let y=0;y<c;y++){let w=t===1?d.start+y:d.end-1-y,h=Math.floor(u++/3);i[w]=h,h!==m?(s[h]=w,l[h]=[w],m=h):l[h].push(w)}}}return{g2p:i,p2g:s,p2gCodon:l,refName:o,strand:t}}function Qo(e,t,o){let n=e[t];if(n!==void 0)return o===1?[n,n+3]:[n-2,n+1]}var en=S(()=>{});var to=V((Wg,xs)=>{xs.exports=JBrowseExports.mobx});function Ss(e){let t=e.alns[1].seq,o=e.alns[0].seq;if(t.length!==o.length)throw new Error("mismatched length");let n=0,r=0,i={},s={};for(let l=0;l<t.length;l++){let a=t[l];o[l]==="-"?n++:a==="-"?r++:(i[n]=r,s[r]=n,r++,n++)}return{structureSeqToTranscriptSeqPosition:i,transcriptSeqToStructureSeqPosition:s}}function vs(e){let t={};for(let o=0,n=0;o<e.length;o++)e[o]!=="-"&&(t[n]=o,n++);return t}function Ts(e){return vs(e.alns[1].seq)}function Ps(e){return vs(e.alns[0].seq)}function oo(e){return ws(e.toJSON())}var ko=S(()=>{"use strict";en()});var As,ot,dr,Gt,tn=S(()=>{"use strict";As=p(te());en();ot=p(to());ko();dr=class{views=ot.observable.map();constructor(){(0,ot.makeObservable)(this,{register:ot.action,unregister:ot.action,cleanupStaleViews:ot.action,entries:ot.computed})}register(t){this.views.set(t.viewId,t)}unregister(t){this.views.delete(t)}cleanupStaleViews(t){let o=new Set(t.views.map(n=>n.id));for(let n of this.views.keys())o.has(n)||this.views.delete(n)}get(t){return this.views.get(t)}getByUniprotId(t,o){o&&this.cleanupStaleViews(o);for(let n of this.views.values())if(n.uniprotId===t)return n}get entries(){return[...this.views.values()]}getGenomeHighlightForProteinPosition(t,o,n){let r=this.getByUniprotId(t,n);if(!r)return;let i=new As.SimpleFeature(r.feature),s=oo(i);if(!s)return;let{p2g:l,strand:a,refName:u}=s,m=Qo(l,o,a);if(!m)return;let[d,c]=m;return{refName:u,start:d,end:c}}},Gt=new dr});function oe(e){return e.replaceAll("*","")}function Ot(e){let o=(e.get("subfeatures")??[]).filter(n=>n.get("type")==="mRNA"||n.get("type")==="transcript");return o.length>0?o:[e]}function Co(e){return e?.replace(/\.[^./]+$/,"")}function Hs(e){return e===void 0?"":e.id()}function Ae(e){return e===void 0?"":e.get("name")??e.get("id")??""}function no(e){return e===void 0?"":e.get("gene_name")??e.get("name")??e.get("id")??""}function At(e){return Us.test(e)||Gs.test(e)||Os.test(e)||zs.test(e)||js.test(e)||Ws.test(e)||br.test(e)}function rn(e){if(Us.test(e)||Gs.test(e)||Os.test(e))return"ensembl";if(zs.test(e)||js.test(e))return"refseq";if(Ws.test(e))return"ccds";if(br.test(e))return"hgnc"}function nc(e){return e?Array.isArray(e)?e.flatMap(t=>typeof t=="string"?t.split(","):[]):typeof e=="string"?e.split(",").map(t=>t.trim()):[]:[]}function rc(e){let t=[];for(let o of e){let n=o.split(":"),r=n[n.length-1];r&&At(r)&&t.push(r),At(o)&&t.push(o),o.startsWith("HGNC:HGNC:")?t.push(o.replace("HGNC:HGNC:","HGNC:")):o.startsWith("HGNC:")&&/^HGNC:\d+$/.test(o)&&t.push(o)}return[...new Set(t)]}function ic(e){if(!e)return[];let t=[],o=[e.get("ID"),e.get("id"),e.get("name"),e.get("Name"),e.get("transcript_id"),e.get("protein_id"),e.get("protAcc"),e.get("mrnaAcc")];for(let s of o)if(typeof s=="string"){let l=s.replace(/\.[^./]+$/,"");At(l)&&t.push(l)}let n=e.get("hgnc")??e.get("HGNC");if(typeof n=="string"||typeof n=="number"){let s=String(n);/^\d+$/.test(s)?t.push(`HGNC:${s}`):br.test(s)&&t.push(s)}let r=e.get("Dbxref")??e.get("dbxref")??e.get("db_xref"),i=rc(nc(r));for(let s of i)t.push(s);return[...new Set(t)]}function _s(e){if(!e)return{recognizedIds:[]};let t=e;if(e.get("type")==="gene"){let l=Ot(e);l.length>0&&(t=l[0])}let o=ic(t),n=t.get("uniprot")??t.get("uniprotId")??t.get("uniprotid")??t.get("UniProt"),r=typeof n=="string"&&n.length>0?n:void 0,i=e.get("gene_id")??e.get("ID"),s=e.get("gene_name")??e.get("gene")??e.get("name")??e.get("Name");return{recognizedIds:[...new Set(o)],uniprotId:r,geneId:typeof i=="string"?i:void 0,geneName:typeof s=="string"?s:void 0}}function Rs({options:e,isoformSequences:t,structureSequence:o}){let n=e.find(i=>o&&oe(t[i.id()]?.seq??"")===o),r=e.filter(i=>!!t[i.id()]).toSorted((i,s)=>t[s.id()].seq.length-t[i.id()].seq.length)[0];return n??r}var Us,Gs,Os,zs,js,Ws,br,ce=S(()=>{"use strict";Us=/^ENS[A-Z]*G\d+/i,Gs=/^ENS[A-Z]*T\d+/i,Os=/^ENS[A-Z]*P\d+/i,zs=/^[NX][MR]_\d+/i,js=/^[NX]P_\d+/i,Ws=/^CCDS\d+/i,br=/^HGNC:\d+/i});var sn=V((Af,ea)=>{ea.exports=JBrowseExports["@jbrowse/core/pluggableElementTypes/AdapterType"]});var io=V((kf,ta)=>{ta.exports=JBrowseExports["@jbrowse/core/configuration"]});var an=V((Mf,ra)=>{ra.exports=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"]});var ln=V((If,ia)=>{ia.exports=JBrowseExports["@jbrowse/core/util/io"]});var pn=V((Ff,sa)=>{sa.exports=JBrowseExports["@jbrowse/core/util/rxjs"]});var ua={};vt(ua,{default:()=>un});var aa,mn,la,pa,un,ma=S(()=>{"use strict";aa=p(an()),mn=p(te()),la=p(ln()),pa=p(pn()),un=class extends aa.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let t=JSON.parse(await(0,la.openLocation)(this.getConf("location")).readFile("utf8"));return t.residueNumber.map((o,n)=>({uniqueId:`feat-${n}`,start:o,end:o+1,score:t.confidenceScore[n]}))}async loadData(t={}){return this.feats??=this.loadDataP().catch(o=>{throw this.feats=void 0,o}),this.feats}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,pa.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,mn.doesIntersect2)(a.start,a.end,r,i)&&n.next(new mn.SimpleFeature({...a,refName:s}));n.complete()})}freeResources(){}}});var wa={};vt(wa,{default:()=>cn,parseAlphaMissense:()=>ya});function ya(e){return e.split(`
2
+ `).slice(1).map(t=>t.trim()).filter(t=>!!t).flatMap((t,o)=>{let[n="",r,i]=t.split(","),s=n[0],l=n.at(-1),a=+n.slice(1,-1);return s!==void 0&&l!==void 0&&!Number.isNaN(a)&&r!==void 0&&i!==void 0?[{uniqueId:`feat-${o}`,ref:s,variant:l,start:a,end:a+1,score:+r,am_class:i}]:[]})}var fa,kt,ha,ba,cn,xa=S(()=>{"use strict";fa=p(an()),kt=p(te()),ha=p(ln()),ba=p(pn());cn=class extends fa.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let t=await(0,ha.openLocation)(this.getConf("location")).readFile("utf8");return ya(t)}async loadData(t={}){return this.feats??=this.loadDataP().catch(o=>{throw this.feats=void 0,o}),this.feats}async getGlobalStats(t){let n=(await this.loadData()).map(r=>r.score);return{scoreMin:(0,kt.min)(n),scoreMax:(0,kt.max)(n)}}async getMultiRegionFeatureDensityStats(t){return{featureDensity:0}}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,ba.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,kt.doesIntersect2)(a.start,a.end,r,i)&&n.next(new kt.SimpleFeature({...a,refName:s,source:a.variant}));n.complete()})}async getSources(){let t=new Set,o=await this.loadData();for(let n of o)t.add(n.variant);return[...t].map(n=>({name:n,__name:n}))}freeResources(){}}});var Ta=V((Vf,va)=>{va.exports=JBrowseExports["@mui/material/utils"]});var ke,Ct=S(()=>{"use client";ke=p(Ta(),1)});var Mt=V((Hf,Pa)=>{Pa.exports=JBrowseExports["react/jsx-runtime"]});var Oe=V((Of,Ca)=>{Ca.exports=JBrowseExports["@jbrowse/core/ui"]});var I=V((zf,Ma)=>{Ma.exports=JBrowseExports["@mui/material"]});function lo(){let e=localStorage.getItem(Ga);return e===null?!0:e==="true"}function Oa(e){localStorage.setItem(Ga,e?"true":"false")}function gc(e){return"setUseWorkspaces"in e&&typeof e.setUseWorkspaces=="function"&&"setPendingMove"in e&&typeof e.setPendingMove=="function"}function gn(e,t){gc(e)&&(e.setPendingMove({type:"splitRight",viewId:t}),e.setUseWorkspaces(!0))}var Ga,fn=S(()=>{"use strict";Ga="proteinView-launchSideBySide"});function Ir(e){let t=e.next();for(;!t.done&&t.value.trim()==="";)t=e.next();return t.value}var Fr=S(()=>{});function ja(e){let t=e.trim();return t?t.split(/\s+/).every(n=>/^\d+$/.test(n)):!1}function fc(e){let t=e.trim();return/^\w+\s+/.test(t)&&!ja(e)}function hc(e){return e.length>=3&&/^\d+$/.test(e[1])}function bc(e,t){let n=e.trim().split(/\s+/),r=n[t],i=e.indexOf(r,e.indexOf(n[0])+n[0].length);return[i,i+r.length]}function za(e){let t=Ir(e),o=[],n="";if(!t)return;for(;t;)ja(t)||(fc(t)?o.push(t):n=t),t=e.next().value;if(o.length===0)return;let r=o.map(y=>y.trim().split(/\s+/)),i=r[0];if(!i)return;let s=hc(i)?2:1,[l,a]=bc(o[0],s),u=r.map(y=>y[0]),m=r.map(y=>y[s]),d=n.slice(l,a),c=m[0];if(c){let y=c.length-d.length;y>0&&(d+=" ".repeat(y))}return{ids:u,seqs:m,consensus:d}}function Wa(e){let t,o=za(e);if(o!==void 0)for(;t=za(e);){for(let n=0;n<t.seqs.length;n++)o.seqs[n]+=t.seqs[n];o.consensus+=t.consensus}return o}var _a=S(()=>{Fr()});function hn(e){let t=e.split(`
3
3
  `).filter(s=>!s.startsWith("#")).join(`
4
- `),o=qa(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 Sr=v(()=>{Da();vr()});function Ua(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 Ga=v(()=>{"use strict"});async function sc(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 ac({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 lc({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 pc({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 uc({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 mc({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 Oa({session:e,uniprotId:t,confidenceUrl:o}){let n=await sc(t);ac({session:e,uniprotId:t,featureTypes:n}),lc({session:e,uniprotId:t}),pc({session:e,uniprotId:t}),uc({session:e,uniprotId:t,confidenceUrl:o}),mc({session:e,uniprotId:t})}var za=v(()=>{"use strict"});async function ja({session:e,feature:t,selectedTranscript:o,uniprotId:n,confidenceUrl:r,connectedViewId:i}){Ua(e,n),await Oa({session:e,uniprotId:n,confidenceUrl:r});let s=e.addView("LinearGenomeView",{type:"LinearGenomeView",displayName:cn("Protein view",t,o,n)});i&&o&&Bt.register({viewId:s.id,connectedViewId:i,feature:o.toJSON(),uniprotId:n}),await s.navToLocString(n,n)}var Wa=v(()=>{"use strict";Ga();za();Yo();We()});function oo(e,t=kr){return`https://alphafold.ebi.ac.uk/files/AF-${e}-F1-model_${t}.cif`}function Ra(e,t=kr){return`https://alphafold.ebi.ac.uk/files/AF-${e}-F1-confidence_${t}.json`}function cc(e,t=kr){return`https://alphafold.ebi.ac.uk/files/msa/AF-${e}-F1-msa_${t}.a3m`}function Io(e){return`https://files.rcsb.org/download/${e}.cif`}function Cr(e){return e.split(" ")[0]}function dn(e){return/AF-([A-Z0-9]+)-F\d+/.exec(Cr(e))?.[1]}function Ja(e,t){let o=Cr(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 Io(n)}}function Ka(e){let t=Cr(e);if(t.startsWith("AF-"))return`https://alphafold.ebi.ac.uk/files/${t.replace("-model_","-confidence_")}.json`}function cn(e,t,o,n){return[...new Set([e,n,Xt(t),Se(o)])].filter(r=>!!r).join(" - ")}function Gt({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??cn("Protein view",o,n,r)};return e.addView("ProteinView",d)}async function gn({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,confidenceUrl:i}){!r||!(0,_a.isSessionWithAddTracks)(e)||await ja({session:e,selectedTranscript:n,feature:o,uniprotId:r,confidenceUrl:i,connectedViewId:t.id})}function Fo({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,displayName:i}){if(r)return e.addView("MsaView",{type:"MsaView",displayName:i??cn("MSA view",o,n,r),connectedViewId:t.id,connectedFeature:n?.toJSON(),init:{msaUrl:cc(r),colorSchemeName:"percent_identity"}})}function fn(){return window.JBrowsePluginMsaView!==void 0}function $a(e){let{uniprotId:t}=e;if(!t)return;let o=Fo(e);return Gt({...e,connectedMsaViewId:o?.id})}var _a,kr,We=v(()=>{"use strict";_a=p(ee());pe();Wa();kr="v6"});var Qa=D(Xa=>{"use strict";var io=x();function gc(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var fc=typeof Object.is=="function"?Object.is:gc,hc=io.useState,bc=io.useEffect,yc=io.useLayoutEffect,wc=io.useDebugValue;function xc(e,t){var o=t(),n=hc({inst:{value:o,getSnapshot:t}}),r=n[0].inst,i=n[1];return yc(function(){r.value=o,r.getSnapshot=t,qr(r)&&i({inst:r})},[e,o,t]),bc(function(){return qr(r)&&i({inst:r}),e(function(){qr(r)&&i({inst:r})})},[e]),wc(o),o}function qr(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!fc(e,o)}catch{return!0}}function vc(e,t){return t()}var Sc=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?vc:xc;Xa.useSyncExternalStore=io.useSyncExternalStore!==void 0?io.useSyncExternalStore:Sc});var tl=D((Uh,el)=>{"use strict";el.exports=Qa()});var kt={};bt(kt,{ERROR_REVALIDATE_EVENT:()=>Tc,FOCUS_EVENT:()=>ol,MUTATE_EVENT:()=>rl,RECONNECT_EVENT:()=>nl});var ol,nl,rl,Tc,il=v(()=>{ol=0,nl=1,rl=2,Tc=3});function hn(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--&&hn(e[n],t[n]););return n===-1}if(!o||typeof e=="object"){n=0;for(o in e)if(sl.call(e,o)&&++n&&!sl.call(t,o)||!(o in t)||!hn(e[o],t[o]))return!1;return Object.keys(t).length===n}}return e!==e&&t!==t}var sl,al=v(()=>{sl=Object.prototype.hasOwnProperty});async function An(...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(Ee(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]=qo(c);if(!w)return;let[y,f]=Tn(t,w),[h,b,g,S]=_e.get(t),K=()=>{let me=h[w];return(Ee(i.revalidate)?i.revalidate(y().data,c):i.revalidate!==!1)&&(delete g[w],delete S[w],me&&me[0])?me[0](2).then(()=>y().data):y().data};if(e.length<3)return K();let C=n,$,H=!1,ve=Eo();b[w]=[ve,0];let E=!P(a),Ce=y(),ne=Ce.data,ue=Ce._c,O=P(ue)?ne:ue;if(E&&(a=Ee(a)?a(O,ne):a,f({data:a,_c:O})),Ee(C))try{C=C(O)}catch(me){$=me,H=!0}if(C&&Sn(C))if(C=await C.catch(me=>{$=me,H=!0}),ve!==b[w][0]){if(H)throw $;return C}else H&&E&&u($)&&(s=!0,f({data:O,_c:se}));if(s&&!H)if(Ee(s)){let me=s(C,O);f({data:me,error:se,_c:se})}else f({data:C,error:se,_c:se});if(b[w][1]=Eo(),Promise.resolve(K()).then(()=>{f({_c:se})}),H){if(m)throw $;return}return C}}var de,_e,Re,se,so,P,Ee,Je,Sn,Dr,bn,Or,ao,wn,pl,ul,Tn,Br,Pc,Hr,Ur,Ac,kc,Cc,ml,cl,Pn,Ct,zr,lo,Nr,Gr,yn,Mc,Vr,Ic,xn,qo,Fc,Eo,ll,jr,Lc,dl,kn,gl,Cn,Wr,vn,_r,Rr=v(()=>{"use client";de=p(x(),1);al();_e=new WeakMap,Re=()=>{},se=Re(),so=Object,P=e=>e===se,Ee=e=>typeof e=="function",Je=(e,t)=>({...e,...t}),Sn=e=>Ee(e.then),Dr={},bn={},Or="undefined",ao=typeof window!=Or,wn=typeof document!=Or,pl=ao&&"Deno"in window,ul=()=>ao&&typeof window.requestAnimationFrame!=Or,Tn=(e,t)=>{let o=_e.get(e);return[()=>!P(t)&&e.get(t)||Dr,n=>{if(!P(t)){let r=e.get(t);t in bn||(bn[t]=r),o[5](t,Je(r,n),r||Dr)}},o[6],()=>!P(t)&&t in bn?bn[t]:!P(t)&&e.get(t)||Dr]},Br=!0,Pc=()=>Br,[Hr,Ur]=ao&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Re,Re],Ac=()=>{let e=wn&&document.visibilityState;return P(e)||e!=="hidden"},kc=e=>(wn&&document.addEventListener("visibilitychange",e),Hr("focus",e),()=>{wn&&document.removeEventListener("visibilitychange",e),Ur("focus",e)}),Cc=e=>{let t=()=>{Br=!0,e()},o=()=>{Br=!1};return Hr("online",t),Hr("offline",o),()=>{Ur("online",t),Ur("offline",o)}},ml={isOnline:Pc,isVisible:Ac},cl={initFocus:kc,initReconnect:Cc},Pn=!de.default.useId,Ct=!ao||pl,zr=e=>ul()?window.requestAnimationFrame(e):setTimeout(e,1),lo=Ct?de.useEffect:de.useLayoutEffect,Nr=typeof navigator<"u"&&navigator.connection,Gr=!Ct&&Nr&&(["slow-2g","2g"].includes(Nr.effectiveType)||Nr.saveData),yn=new WeakMap,Mc=e=>so.prototype.toString.call(e),Vr=(e,t)=>e===`[object ${t}]`,Ic=0,xn=e=>{let t=typeof e,o=Mc(e),n=Vr(o,"Date"),r=Vr(o,"RegExp"),i=Vr(o,"Object"),s,l;if(so(e)===e&&!n&&!r){if(s=yn.get(e),s)return s;if(s=++Ic+"~",yn.set(e,s),Array.isArray(e)){for(s="@",l=0;l<e.length;l++)s+=xn(e[l])+",";yn.set(e,s)}if(i){s="#";let a=so.keys(e).sort();for(;!P(l=a.pop());)P(e[l])||(s+=l+":"+xn(e[l])+",");yn.set(e,s)}}else s=n?e.toJSON():t=="symbol"?e.toString():t=="string"?JSON.stringify(e):""+e;return s},qo=e=>{if(Ee(e))try{e=e()}catch{e=""}let t=e;return e=typeof e=="string"?e:(Array.isArray(e)?e.length:e)?xn(e):"",[e,t]},Fc=0,Eo=()=>++Fc;ll=(e,t)=>{for(let o in e)e[o][0]&&e[o][0](t)},jr=(e,t)=>{if(!_e.has(e)){let o=Je(cl,t),n=Object.create(null),r=An.bind(se,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]),!Ct)){let m=o.initFocus(setTimeout.bind(se,ll.bind(se,n,0))),d=o.initReconnect(setTimeout.bind(se,ll.bind(se,n,1)));i=()=>{m&&m(),d&&d(),_e.delete(e)}}};return u(),[e,r,u,i]}return[e,_e.get(e)[4]]},Lc=(e,t,o,n,r)=>{let i=o.errorRetryCount,s=r.retryCount,l=~~((Math.random()+.5)*(1<<(s<8?s:8)))*o.errorRetryInterval;!P(i)&&s>i||setTimeout(n,l,r)},dl=hn,[kn,gl]=jr(new Map),Cn=Je({onLoadingSlow:Re,onSuccess:Re,onError:Re,onErrorRetry:Lc,onDiscarded:Re,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:Gr?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:Gr?5e3:3e3,compare:dl,isPaused:()=>!1,cache:kn,mutate:gl,fallback:{}},ml),Wr=(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)({}),_r=e=>{let{value:t}=e,o=(0,de.useContext)(vn),n=Ee(t),r=(0,de.useMemo)(()=>n?t(o):t,[n,o,t]),i=(0,de.useMemo)(()=>n?r:Wr(o,r),[n,o,r]),s=r&&r.provider,l=(0,de.useRef)(se);s&&!l.current&&(l.current=jr(s(i.cache||kn),r));let a=l.current;return a&&(i.cache=a[0],i.mutate=a[1]),lo(()=>{if(a)return a[2]&&a[2](),a[3]},[]),(0,de.createElement)(vn.Provider,Je(e,{value:i}))}});var fl,hl=v(()=>{fl="$inf$"});var bl=v(()=>{});var po,yl,Ec,qc,Dc,Nc,Vc,Bc,wl,xl,vl=v(()=>{Rr();Rr();il();hl();po=p(x(),1);bl();yl=ao&&window.__SWR_DEVTOOLS_USE__,Ec=yl?window.__SWR_DEVTOOLS_USE__:[],qc=()=>{yl&&(window.__SWR_DEVTOOLS_REACT__=po.default)},Dc=e=>Ee(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(e[1]===null?e[2]:e[1])||{}],Nc=()=>{let e=(0,po.useContext)(vn);return(0,po.useMemo)(()=>Je(Cn,e),[e])},Vc=e=>(t,o,n)=>e(t,o&&((...i)=>{let[s]=qo(t),[,,,l]=_e.get(kn);if(s.startsWith(fl))return o(...i);let a=l[s];return P(a)?o(...i):(delete l[s],a)}),n),Bc=Ec.concat(Vc),wl=e=>function(...o){let n=Nc(),[r,i,s]=Dc(o),l=Wr(n,s),a=e,{use:u}=l,m=(u||[]).concat(Bc);for(let d=m.length;d--;)a=m[d](a);return a(r,i||l.fetcher||null,l)},xl=(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())}};qc()});var ae,$r,Hc,Yh,Jr,Kr,Sl,Uc,Gc,Zh,et,uo=v(()=>{ae=p(x(),1),$r=p(tl(),1);vl();Hc=()=>{},Yh=Hc(),Jr=ae.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}}),Kr={dedupe:!0},Sl=Promise.resolve(se),Uc=()=>Re,Gc=(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,h,b]=_e.get(n),[g,S]=qo(e),K=(0,ae.useRef)(!1),C=(0,ae.useRef)(!1),$=(0,ae.useRef)(g),H=(0,ae.useRef)(t),ve=(0,ae.useRef)(o),E=()=>ve.current,Ce=()=>E().isVisible()&&E().isOnline(),[ne,ue,O,me]=Tn(n,g),Ie=(0,ae.useRef)({}).current,Ve=P(s)?P(o.fallback)?se:o.fallback[g]:s,rt=(U,Z)=>{for(let X in Ie){let Q=X;if(Q==="data"){if(!r(U[Q],Z[Q])&&(!P(U[Q])||!r($t,Z[Q])))return!1}else if(Z[Q]!==U[Q])return!1}return!0},Be=!K.current,fe=(0,ae.useMemo)(()=>{let U=ne(),Z=me(),X=ie=>{let je=Je(ie);return delete je._k,(()=>{if(!g||!t||E().isPaused())return!1;if(Be&&!P(l))return l;let So=P(Ve)?je.data:Ve;return i?P(So)||a:P(So)||a})()?{isValidating:!0,isLoading:!0,...je}:je},Q=X(U),Ye=U===Z?Q:X(Z),He=Q;return[()=>{let ie=X(ne());return rt(ie,He)?(He.data=ie.data,He.isLoading=ie.isLoading,He.isValidating=ie.isValidating,He.error=ie.error,He):(He=ie,ie)},()=>Ye]},[n,g]),it=(0,$r.useSyncExternalStore)((0,ae.useCallback)(U=>O(g,(Z,X)=>{rt(X,Z)||U()}),[n,g]),fe[0],fe[1]),er=y[g]&&y[g].length>0,ht=it.data,st=P(ht)?Ve&&Sn(Ve)?Jr(Ve):Ve:ht,qt=it.error,bo=(0,ae.useRef)(st),$t=c?P(ht)?P(bo.current)?st:bo.current:ht:st,at=g&&P(st),ze=(0,ae.useRef)(null);!Ct&&(0,$r.useSyncExternalStore)(Uc,()=>(ze.current=!1,ze),()=>(ze.current=!0,ze));let yo=ze.current;w&&yo&&!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 wo=!g||!t||E().isPaused()||er&&!P(qt)?!1:Be&&!P(l)?l:i?P(st)?!1:a:P(st)||a,xo=Be&&wo,zi=P(it.isValidating)?xo:it.isValidating,tr=P(it.isLoading)?xo:it.isLoading,Dt=(0,ae.useCallback)(async U=>{let Z=H.current;if(!g||!Z||C.current||E().isPaused())return!1;let X,Q,Ye=!0,He=U||{},ie=!h[g]||!He.dedupe,je=()=>Pn?!C.current&&g===$.current&&K.current:g===$.current,vo={isValidating:!1,isLoading:!1},So=()=>{ue(vo)},Wi=()=>{let Ue=h[g];Ue&&Ue[1]===Q&&delete h[g]},_i={isValidating:!0};P(ne().data)&&(_i.isLoading=!0);try{if(ie&&(ue(_i),o.loadingTimeout&&P(ne().data)&&setTimeout(()=>{Ye&&je()&&E().onLoadingSlow(g,o)},o.loadingTimeout),h[g]=[Z(S),Eo()]),[X,Q]=h[g],X=await X,ie&&setTimeout(Wi,o.dedupingInterval),!h[g]||h[g][1]!==Q)return ie&&je()&&E().onDiscarded(g),!1;vo.error=se;let Ue=f[g];if(!P(Ue)&&(Q<=Ue[0]||Q<=Ue[1]||Ue[1]===0))return So(),ie&&je()&&E().onDiscarded(g),!1;let lt=ne().data;vo.data=r(lt,X)?lt:X,ie&&je()&&E().onSuccess(X,g,o)}catch(Ue){Wi();let lt=E(),{shouldRetryOnError:or}=lt;lt.isPaused()||(vo.error=Ue,ie&&je()&&(lt.onError(Ue,g,lt),(or===!0||Ee(or)&&or(Ue))&&(!E().revalidateOnFocus||!E().revalidateOnReconnect||Ce())&&lt.onErrorRetry(Ue,g,lt,Lm=>{let nr=y[g];nr&&nr[0]&&nr[0](kt.ERROR_REVALIDATE_EVENT,Lm)},{retryCount:(He.retryCount||0)+1,dedupe:!0})))}return Ye=!1,So(),!0},[g,n]),ji=(0,ae.useCallback)((...U)=>An(n,$.current,...U),[]);if(lo(()=>{H.current=t,ve.current=o,P(ht)||(bo.current=ht)}),lo(()=>{if(!g)return;let U=Dt.bind(se,Kr),Z=0;E().revalidateOnFocus&&(Z=Date.now()+E().focusThrottleInterval);let Q=xl(g,y,(Ye,He={})=>{if(Ye==kt.FOCUS_EVENT){let ie=Date.now();E().revalidateOnFocus&&ie>Z&&Ce()&&(Z=ie+E().focusThrottleInterval,U())}else if(Ye==kt.RECONNECT_EVENT)E().revalidateOnReconnect&&Ce()&&U();else{if(Ye==kt.MUTATE_EVENT)return Dt();if(Ye==kt.ERROR_REVALIDATE_EVENT)return Dt(He)}});return C.current=!1,$.current=g,K.current=!0,ue({_k:S}),wo&&(h[g]||(P(st)||Ct?U():zr(U))),()=>{C.current=!0,Q()}},[g]),lo(()=>{let U;function Z(){let Q=Ee(u)?u(ne().data):u;Q&&U!==-1&&(U=setTimeout(X,Q))}function X(){!ne().error&&(m||E().isVisible())&&(d||E().isOnline())?Dt(Kr).then(Z):Z()}return Z(),()=>{U&&(clearTimeout(U),U=-1)}},[u,m,d,g]),(0,ae.useDebugValue)($t),i){if(!Pn&&Ct&&at)throw new Error("Fallback data is required when using Suspense in SSR.");at&&(H.current=t,ve.current=o,C.current=!1);let U=b[g],Z=!P(U)&&at?ji(U):Sl;if(Jr(Z),!P(qt)&&at)throw qt;let X=at?Dt(Kr):Sl;!P($t)&&at&&(X.status="fulfilled",X.value=!0),Jr(X)}return{mutate:ji,get data(){return Ie.data=!0,$t},get error(){return Ie.error=!0,qt},get isValidating(){return Ie.isValidating=!0,zi},get isLoading(){return Ie.isLoading=!0,tr}}},Zh=so.defineProperty(_r,"defaultValue",{value:Cn}),et=wl(Gc)});var Jl,Hn,ui=v(()=>{"use client";St();Jl=p(Tt(),1),Hn=(0,Te.createSvgIcon)((0,Jl.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 Zl={};bt(Zl,{default:()=>Yl});function Kl({children:e}){return ke.default.createElement(ot.Typography,{style:{margin:4}},e)}function Yl({handleClose:e}){return ke.default.createElement($l.Dialog,{open:!0,maxWidth:"lg",onClose:e,title:"Help"},ke.default.createElement(ot.DialogContent,null,ke.default.createElement(Kl,null,"The procedure for the protein lookup is as follows:",ke.default.createElement("ul",null,ke.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"),ke.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"),ke.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"),ke.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"),ke.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"))),ke.default.createElement(Kl,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")),ke.default.createElement(ot.Divider,null),ke.default.createElement(ot.DialogActions,null,ke.default.createElement(ot.Button,{onClick:e,color:"primary"},"Close")))}var ke,$l,ot,Xl=v(()=>{"use strict";ke=p(x()),$l=p(Ge()),ot=p(L())});var hi=D((h0,pp)=>{pp.exports=JBrowseExports["@jbrowse/core/pluggableElementTypes"]});var mp=D((b0,up)=>{up.exports=JBrowseExports["@jbrowse/core/util/types/mst"]});var zn=D((y0,cp)=>{cp.exports=JBrowseExports["mobx-state-tree"]});async function fp({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 ho,gp,yi=v(()=>{"use strict";ho=[{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"}],gp=ho.map(e=>e.value)});function wi(e){e.managers.interactivity.lociHighlights.clearHighlights(),e.managers.interactivity.lociSelects.deselectAll()}function xi(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 yp({structure:e,residues:t,plugin:o,mode:n}){if(n==="clear"||t.length===0){wi(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);xi(o,l,n)}async function vi({structure:e,startResidue:t,endResidue:o,plugin:n,mode:r}){if(r==="clear"){wi(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);xi(n,a,r)}async function wp({structure:e,selectedResidue:t,plugin:o,mode:n}){if(n==="clear"){wi(o);return}let{StructureSelection:r}=await ce(),i=await is({structure:e,selectedResidue:t+1}),s=r.toLociWithSourceUnits(i);xi(o,s,n)}var Si=v(()=>{"use strict";Nt();Vt()});var xp,vp,Sp,Tp,mt=v(()=>{"use strict";xp="rgba(255, 105, 180, 0.5)",vp="2px solid #333",Sp="1px solid black",Tp="#999"});async function Pi({structure:e,startResidue:t,endResidue:o,plugin:n}){await vi({structure:e,startResidue:t,endResidue:o,plugin:n,mode:"highlight"})}async function kp({structure:e,startResidue:t,endResidue:o,plugin:n}){await vi({structure:e,startResidue:t,endResidue:o,plugin:n,mode:"select"})}var Ai=v(()=>{"use strict";Si()});function Wn({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 Ko(i,l,s)}function ki({model:e,structureSeqPos:t,structureSeqEndPos:o}){let n,r;for(let i=t;i<o;i++){let s=Wn({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 kd({model:e,structureSeqPos:t,structureSeqEndPos:o,zoomToBaseLevel:n}){let r=(0,Ep.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?ki({structureSeqPos:t,structureSeqEndPos:o,model:e}):Wn({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 kd({model:e,structureSeqPos:t,structureSeqEndPos:o,zoomToBaseLevel:e.zoomToBaseLevel})}var Ep,Ci=v(()=>{"use strict";Ep=p(ee());$o()});function Dp(e){return Array.from(e,t=>Cd[t])}function Np(e){return e<0?"#cccccc":e<=50?"#ff7d45":e<=70?"#ffdb13":e<=90?"#65cbf3":"#0053d6"}function Vp(e){let t=Math.max(0,Math.min(1,(e-qp)/(Md-qp))),o=Math.round(51+179*t),n=Math.round(102+38*t),r=Math.round(204+-164*t);return`rgb(${o}, ${n}, ${r})`}function Mi(e,t){return t?e.flatMap((o,n)=>{let r=t[n];return o!==void 0&&r!==void 0?[{col:r,value:o}]:[]}):[]}var Cd,qp,Md,Ii=v(()=>{"use strict";Cd={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},qp=-4.5,Md=4.5});var Ne,xe,jp,Hd,Wp,_p=v(()=>{"use strict";Ne=p(x()),xe=p(L());Sr();jp=p(W()),Hd=(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=un(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(xe.Dialog,{open:!0,onClose:a,maxWidth:"md",fullWidth:!0},Ne.default.createElement(xe.DialogTitle,null,"Import Manual Alignment"),Ne.default.createElement(xe.DialogContent,null,Ne.default.createElement(xe.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(xe.TextField,{multiline:!0,rows:12,fullWidth:!0,placeholder:`Example:
4
+ `),o=Wa(t.split(`
5
+ `)[Symbol.iterator]());if(o===void 0)throw new Error("No blocks parsed");let n=o.seqs.map((s,l)=>({id:o.ids[l],seq:s})),{consensus:r}=o,i=n[0];if(!i)throw new Error("No alignments found");if(r.length!==i.seq.length)throw new Error(`Consensus length !== sequence length. Con ${r.length} seq ${i.seq.length}`);if(n.length!==2)throw new Error(`Expected exactly 2 sequences in pairwise alignment, got ${n.length}`);return{consensus:r,alns:n}}var Lr=S(()=>{_a();Fr()});function $a(e,t){e.addTemporaryAssembly?.({name:t,sequence:{type:"ReferenceSequenceTrack",trackId:`${t}-ReferenceSequenceTrack`,sequenceType:"pep",adapter:{type:"UnindexedFastaAdapter",rewriteRefNames:"jexl:split(refName,'|')[1]",fastaLocation:{uri:`https://rest.uniprot.org/uniprotkb/${t}.fasta`}}}})}var Za=S(()=>{"use strict"});async function wc(e){let t=`https://rest.uniprot.org/uniprotkb/${e}.gff`,o=await fetch(t);if(!o.ok)throw new Error(`HTTP ${o.status} fetching ${t}`);let n=await o.text();return[...new Set(n.split(`
6
+ `).filter(r=>!r.startsWith("#")).map(r=>r.trim()).filter(r=>!!r).map(r=>r.split(" ")[2]))]}function xc({session:e,uniprotId:t,featureTypes:o}){o.forEach(n=>{let r=`${t}-${n}`;e.addTrackConf({type:"FeatureTrack",trackId:r,name:n,adapter:{type:"Gff3Adapter",gffLocation:{uri:`https://rest.uniprot.org/uniprotkb/${t}.gff`}},assemblyNames:[t],displays:[{displayId:`${r}-LinearBasicDisplay`,type:"LinearBasicDisplay",jexlFilters:[`get(feature,'type')=='${n}'`]}]})})}function Sc({session:e,uniprotId:t}){e.addTrackConf({type:"FeatureTrack",trackId:`${t}-Antigen`,name:"Antigen",adapter:{type:"Gff3Adapter",gffLocation:{uri:`https://www.ebi.ac.uk/proteins/api/antigen/${t}?format=gff`}},assemblyNames:[t]})}function vc({session:e,uniprotId:t}){e.addTrackConf({type:"FeatureTrack",trackId:`${t}-Variation`,name:"Variation",adapter:{type:"UniProtVariationAdapter",location:{uri:`https://www.ebi.ac.uk/proteins/api/variation/${t}.json`}},assemblyNames:[t]})}function Tc({session:e,uniprotId:t,confidenceUrl:o}){o&&e.addTrackConf({type:"QuantitativeTrack",trackId:`${t}-AlphaFold-confidence`,name:"AlphaFold confidence",adapter:{type:"AlphaFoldConfidenceAdapter",location:{uri:o}},assemblyNames:[t]})}function Pc({session:e,uniprotId:t}){e.addTrackConf({type:"MultiQuantitativeTrack",trackId:`${t}-AlphaMissense-scores`,name:"AlphaMissense scores",assemblyNames:[t],adapter:{type:"AlphaMissensePathogenicityAdapter",location:{uri:`https://alphafold.ebi.ac.uk/files/AF-${t}-F1-aa-substitutions.csv`}},displays:[{type:"MultiLinearWiggleDisplay",displayId:`${t}-AlphaMissense-scores-MultiLinearWiggleDisplay`,defaultRendering:"multirowdensity",renderers:{MultiDensityRenderer:{type:"MultiDensityRenderer",bicolorPivotValue:.5,posColor:"red",negColor:"blue"}}}]})}async function Xa({session:e,uniprotId:t,confidenceUrl:o}){let n=await wc(t);xc({session:e,uniprotId:t,featureTypes:n}),Sc({session:e,uniprotId:t}),vc({session:e,uniprotId:t}),Tc({session:e,uniprotId:t,confidenceUrl:o}),Pc({session:e,uniprotId:t})}var Qa=S(()=>{"use strict"});async function el({session:e,feature:t,selectedTranscript:o,uniprotId:n,confidenceUrl:r,connectedViewId:i}){$a(e,n),await Xa({session:e,uniprotId:n,confidenceUrl:r});let s=e.addView("LinearGenomeView",{type:"LinearGenomeView",displayName:yn("Protein view",t,o,n)});i&&o&&Gt.register({viewId:s.id,connectedViewId:i,feature:o.toJSON(),uniprotId:n}),await s.navToLocString(n,n)}var tl=S(()=>{"use strict";Za();Qa();tn();Je()});function po(e,t=Nr){return`https://alphafold.ebi.ac.uk/files/AF-${e}-F1-model_${t}.cif`}function nl(e,t=Nr){return`https://alphafold.ebi.ac.uk/files/AF-${e}-F1-confidence_${t}.json`}function Ac(e,t=Nr){return`https://alphafold.ebi.ac.uk/files/msa/AF-${e}-F1-msa_${t}.a3m`}function Eo(e){return`https://files.rcsb.org/download/${e}.cif`}function Vr(e){return e.split(" ")[0]}function wn(e){return/AF-([A-Z0-9]+)-F\d+/.exec(Vr(e))?.[1]}function rl(e,t){let o=Vr(e);if(o.startsWith("AF-"))return`https://alphafold.ebi.ac.uk/files/${o}.cif`;if(t==="pdb100"){let n=o.split("_")[0];if(n.length===4)return Eo(n)}}function il(e){let t=Vr(e);if(t.startsWith("AF-"))return`https://alphafold.ebi.ac.uk/files/${t.replace("-model_","-confidence_")}.json`}function yn(e,t,o,n){return[...new Set([e,n,no(t),Ae(o)])].filter(r=>!!r).join(" - ")}function jt({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,url:i,data:s,userProvidedTranscriptSequence:l,alignmentAlgorithm:a,displayName:u,connectedMsaViewId:m,sideBySide:d}){let c={type:"ProteinView",alignmentAlgorithm:a,connectedMsaViewId:m,structures:[{url:i,data:s,userProvidedTranscriptSequence:l??"",feature:n?.toJSON(),connectedViewId:t.id}],displayName:u??yn("Protein view",o,n,r)},y=e.addView("ProteinView",c);return(d??lo())&&gn(e,y.id),y}async function xn({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,confidenceUrl:i}){!r||!(0,ol.isSessionWithAddTracks)(e)||await el({session:e,selectedTranscript:n,feature:o,uniprotId:r,confidenceUrl:i,connectedViewId:t.id})}function qo({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,displayName:i}){if(r)return e.addView("MsaView",{type:"MsaView",displayName:i??yn("MSA view",o,n,r),connectedViewId:t.id,connectedFeature:n?.toJSON(),init:{msaUrl:Ac(r),colorSchemeName:"percent_identity"}})}function Sn(){return window.JBrowsePluginMsaView!==void 0}function sl(e){let{uniprotId:t}=e;if(!t)return;let o=qo(e);return jt({...e,connectedMsaViewId:o?.id})}var ol,Nr,Je=S(()=>{"use strict";ol=p(te());fn();ce();tl();Nr="v6"});var ul=V(pl=>{"use strict";var co=x();function Cc(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Mc=typeof Object.is=="function"?Object.is:Cc,Ic=co.useState,Fc=co.useEffect,Lc=co.useLayoutEffect,Ec=co.useDebugValue;function qc(e,t){var o=t(),n=Ic({inst:{value:o,getSnapshot:t}}),r=n[0].inst,i=n[1];return Lc(function(){r.value=o,r.getSnapshot=t,zr(r)&&i({inst:r})},[e,o,t]),Fc(function(){return zr(r)&&i({inst:r}),e(function(){zr(r)&&i({inst:r})})},[e]),Ec(o),o}function zr(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!Mc(e,o)}catch{return!0}}function Dc(e,t){return t()}var Nc=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Dc:qc;pl.useSyncExternalStore=co.useSyncExternalStore!==void 0?co.useSyncExternalStore:Nc});var cl=V((nb,ml)=>{"use strict";ml.exports=ul()});var Ft={};vt(Ft,{ERROR_REVALIDATE_EVENT:()=>Vc,FOCUS_EVENT:()=>dl,MUTATE_EVENT:()=>fl,RECONNECT_EVENT:()=>gl});var dl,gl,fl,Vc,hl=S(()=>{dl=0,gl=1,fl=2,Vc=3});function vn(e,t){var o,n;if(e===t)return!0;if(e&&t&&(o=e.constructor)===t.constructor){if(o===Date)return e.getTime()===t.getTime();if(o===RegExp)return e.toString()===t.toString();if(o===Array){if((n=e.length)===t.length)for(;n--&&vn(e[n],t[n]););return n===-1}if(!o||typeof e=="object"){n=0;for(o in e)if(bl.call(e,o)&&++n&&!bl.call(t,o)||!(o in t)||!vn(e[o],t[o]))return!1;return Object.keys(t).length===n}}return e!==e&&t!==t}var bl,yl=S(()=>{bl=Object.prototype.hasOwnProperty});async function Ln(...e){let[t,o,n,r]=e,i=$e({populateCache:!0,throwOnError:!0},typeof r=="boolean"?{revalidate:r}:r||{}),s=i.populateCache,l=i.rollbackOnError,a=i.optimisticData,u=c=>typeof l=="function"?l(c):l!==!1,m=i.throwOnError;if(qe(o)){let c=o,y=[],w=t.keys();for(let h of w)!/^\$(inf|sub)\$/.test(h)&&c(t.get(h)._k)&&y.push(h);return Promise.all(y.map(d))}return d(o);async function d(c){let[y]=Vo(c);if(!y)return;let[w,h]=In(t,y),[b,f,g,v]=Ke.get(t),D=()=>{let $=b[y];return(qe(i.revalidate)?i.revalidate(w().data,c):i.revalidate!==!1)&&(delete g[y],delete v[y],$&&$[0])?$[0](2).then(()=>w().data):w().data};if(e.length<3)return D();let T=n,O,z=!1,ve=No();f[y]=[ve,0];let M=!A(a),Te=w(),se=Te.data,me=Te._c,Y=A(me)?se:me;if(M&&(a=qe(a)?a(Y,se):a,h({data:a,_c:Y})),qe(T))try{T=T(Y)}catch($){O=$,z=!0}if(T&&Mn(T))if(T=await T.catch($=>{O=$,z=!0}),ve!==f[y][0]){if(z)throw O;return T}else z&&M&&u(O)&&(s=!0,h({data:Y,_c:le}));if(s&&!z)if(qe(s)){let $=s(T,Y);h({data:$,error:le,_c:le})}else h({data:T,error:le,_c:le});if(f[y][1]=No(),Promise.resolve(D()).then(()=>{h({_c:le})}),z){if(m)throw O;return}return T}}var fe,Ke,Ye,le,go,A,qe,$e,Mn,jr,Tn,$r,fo,An,xl,Sl,In,Rr,Bc,Jr,Kr,Hc,Uc,Gc,vl,Tl,Fn,Lt,Zr,ho,Wr,Yr,Pn,Oc,_r,zc,kn,Vo,jc,No,wl,Xr,Wc,Pl,En,Al,qn,Qr,Cn,ei,ti=S(()=>{"use client";fe=p(x(),1);yl();Ke=new WeakMap,Ye=()=>{},le=Ye(),go=Object,A=e=>e===le,qe=e=>typeof e=="function",$e=(e,t)=>({...e,...t}),Mn=e=>qe(e.then),jr={},Tn={},$r="undefined",fo=typeof window!=$r,An=typeof document!=$r,xl=fo&&"Deno"in window,Sl=()=>fo&&typeof window.requestAnimationFrame!=$r,In=(e,t)=>{let o=Ke.get(e);return[()=>!A(t)&&e.get(t)||jr,n=>{if(!A(t)){let r=e.get(t);t in Tn||(Tn[t]=r),o[5](t,$e(r,n),r||jr)}},o[6],()=>!A(t)&&t in Tn?Tn[t]:!A(t)&&e.get(t)||jr]},Rr=!0,Bc=()=>Rr,[Jr,Kr]=fo&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Ye,Ye],Hc=()=>{let e=An&&document.visibilityState;return A(e)||e!=="hidden"},Uc=e=>(An&&document.addEventListener("visibilitychange",e),Jr("focus",e),()=>{An&&document.removeEventListener("visibilitychange",e),Kr("focus",e)}),Gc=e=>{let t=()=>{Rr=!0,e()},o=()=>{Rr=!1};return Jr("online",t),Jr("offline",o),()=>{Kr("online",t),Kr("offline",o)}},vl={isOnline:Bc,isVisible:Hc},Tl={initFocus:Uc,initReconnect:Gc},Fn=!fe.default.useId,Lt=!fo||xl,Zr=e=>Sl()?window.requestAnimationFrame(e):setTimeout(e,1),ho=Lt?fe.useEffect:fe.useLayoutEffect,Wr=typeof navigator<"u"&&navigator.connection,Yr=!Lt&&Wr&&(["slow-2g","2g"].includes(Wr.effectiveType)||Wr.saveData),Pn=new WeakMap,Oc=e=>go.prototype.toString.call(e),_r=(e,t)=>e===`[object ${t}]`,zc=0,kn=e=>{let t=typeof e,o=Oc(e),n=_r(o,"Date"),r=_r(o,"RegExp"),i=_r(o,"Object"),s,l;if(go(e)===e&&!n&&!r){if(s=Pn.get(e),s)return s;if(s=++zc+"~",Pn.set(e,s),Array.isArray(e)){for(s="@",l=0;l<e.length;l++)s+=kn(e[l])+",";Pn.set(e,s)}if(i){s="#";let a=go.keys(e).sort();for(;!A(l=a.pop());)A(e[l])||(s+=l+":"+kn(e[l])+",");Pn.set(e,s)}}else s=n?e.toJSON():t=="symbol"?e.toString():t=="string"?JSON.stringify(e):""+e;return s},Vo=e=>{if(qe(e))try{e=e()}catch{e=""}let t=e;return e=typeof e=="string"?e:(Array.isArray(e)?e.length:e)?kn(e):"",[e,t]},jc=0,No=()=>++jc;wl=(e,t)=>{for(let o in e)e[o][0]&&e[o][0](t)},Xr=(e,t)=>{if(!Ke.has(e)){let o=$e(Tl,t),n=Object.create(null),r=Ln.bind(le,e),i=Ye,s=Object.create(null),l=(m,d)=>{let c=s[m]||[];return s[m]=c,c.push(d),()=>c.splice(c.indexOf(d),1)},a=(m,d,c)=>{e.set(m,d);let y=s[m];if(y)for(let w of y)w(d,c)},u=()=>{if(!Ke.has(e)&&(Ke.set(e,[n,Object.create(null),Object.create(null),Object.create(null),r,a,l]),!Lt)){let m=o.initFocus(setTimeout.bind(le,wl.bind(le,n,0))),d=o.initReconnect(setTimeout.bind(le,wl.bind(le,n,1)));i=()=>{m&&m(),d&&d(),Ke.delete(e)}}};return u(),[e,r,u,i]}return[e,Ke.get(e)[4]]},Wc=(e,t,o,n,r)=>{let i=o.errorRetryCount,s=r.retryCount,l=~~((Math.random()+.5)*(1<<(s<8?s:8)))*o.errorRetryInterval;!A(i)&&s>i||setTimeout(n,l,r)},Pl=vn,[En,Al]=Xr(new Map),qn=$e({onLoadingSlow:Ye,onSuccess:Ye,onError:Ye,onErrorRetry:Wc,onDiscarded:Ye,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:Yr?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:Yr?5e3:3e3,compare:Pl,isPaused:()=>!1,cache:En,mutate:Al,fallback:{}},vl),Qr=(e,t)=>{let o=$e(e,t);if(t){let{use:n,fallback:r}=e,{use:i,fallback:s}=t;n&&i&&(o.use=n.concat(i)),r&&s&&(o.fallback=$e(r,s))}return o},Cn=(0,fe.createContext)({}),ei=e=>{let{value:t}=e,o=(0,fe.useContext)(Cn),n=qe(t),r=(0,fe.useMemo)(()=>n?t(o):t,[n,o,t]),i=(0,fe.useMemo)(()=>n?r:Qr(o,r),[n,o,r]),s=r&&r.provider,l=(0,fe.useRef)(le);s&&!l.current&&(l.current=Xr(s(i.cache||En),r));let a=l.current;return a&&(i.cache=a[0],i.mutate=a[1]),ho(()=>{if(a)return a[2]&&a[2](),a[3]},[]),(0,fe.createElement)(Cn.Provider,$e(e,{value:i}))}});var kl,Cl=S(()=>{kl="$inf$"});var Ml=S(()=>{});var bo,Il,_c,Rc,Jc,Kc,Yc,$c,Fl,Ll,El=S(()=>{ti();ti();hl();Cl();bo=p(x(),1);Ml();Il=fo&&window.__SWR_DEVTOOLS_USE__,_c=Il?window.__SWR_DEVTOOLS_USE__:[],Rc=()=>{Il&&(window.__SWR_DEVTOOLS_REACT__=bo.default)},Jc=e=>qe(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(e[1]===null?e[2]:e[1])||{}],Kc=()=>{let e=(0,bo.useContext)(Cn);return(0,bo.useMemo)(()=>$e(qn,e),[e])},Yc=e=>(t,o,n)=>e(t,o&&((...i)=>{let[s]=Vo(t),[,,,l]=Ke.get(En);if(s.startsWith(kl))return o(...i);let a=l[s];return A(a)?o(...i):(delete l[s],a)}),n),$c=_c.concat(Yc),Fl=e=>function(...o){let n=Kc(),[r,i,s]=Jc(o),l=Qr(n,s),a=e,{use:u}=l,m=(u||[]).concat($c);for(let d=m.length;d--;)a=m[d](a);return a(r,i||l.fetcher||null,l)},Ll=(e,t,o)=>{let n=t[e]||(t[e]=[]);return n.push(o),()=>{let r=n.indexOf(o);r>=0&&(n[r]=n[n.length-1],n.pop())}};Rc()});var pe,ri,Zc,gb,oi,ni,ql,Xc,Qc,fb,rt,yo=S(()=>{pe=p(x(),1),ri=p(cl(),1);El();Zc=()=>{},gb=Zc(),oi=pe.default.use||(e=>{switch(e.status){case"pending":throw e;case"fulfilled":return e.value;case"rejected":throw e.reason;default:throw e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e}}),ni={dedupe:!0},ql=Promise.resolve(le),Xc=()=>Ye,Qc=(e,t,o)=>{let{cache:n,compare:r,suspense:i,fallbackData:s,revalidateOnMount:l,revalidateIfStale:a,refreshInterval:u,refreshWhenHidden:m,refreshWhenOffline:d,keepPreviousData:c,strictServerPrefetchWarning:y}=o,[w,h,b,f]=Ke.get(n),[g,v]=Vo(e),D=(0,pe.useRef)(!1),T=(0,pe.useRef)(!1),O=(0,pe.useRef)(g),z=(0,pe.useRef)(t),ve=(0,pe.useRef)(o),M=()=>ve.current,Te=()=>M().isVisible()&&M().isOnline(),[se,me,Y,$]=In(n,g),Pe=(0,pe.useRef)({}).current,Be=A(s)?A(o.fallback)?le:o.fallback[g]:s,lt=(N,X)=>{for(let Q in Pe){let ee=Q;if(ee==="data"){if(!r(N[ee],X[ee])&&(!A(N[ee])||!r(Qt,X[ee])))return!1}else if(X[ee]!==N[ee])return!1}return!0},_e=!D.current,Ie=(0,pe.useMemo)(()=>{let N=se(),X=$(),Q=ae=>{let Re=$e(ae);return delete Re._k,(()=>{if(!g||!t||M().isPaused())return!1;if(_e&&!A(l))return l;let Ao=A(Be)?Re.data:Be;return i?A(Ao)||a:A(Ao)||a})()?{isValidating:!0,isLoading:!0,...Re}:Re},ee=Q(N),et=N===X?ee:Q(X),Ue=ee;return[()=>{let ae=Q(se());return lt(ae,Ue)?(Ue.data=ae.data,Ue.isLoading=ae.isLoading,Ue.isValidating=ae.isValidating,Ue.error=ae.error,Ue):(Ue=ae,ae)},()=>et]},[n,g]),He=(0,ri.useSyncExternalStore)((0,pe.useCallback)(N=>Y(g,(X,Q)=>{lt(Q,X)||N()}),[n,g]),Ie[0],Ie[1]),sr=w[g]&&w[g].length>0,wt=He.data,pt=A(wt)?Be&&Mn(Be)?oi(Be):Be:wt,Zt=He.error,Xt=(0,pe.useRef)(pt),Qt=c?A(wt)?A(Xt.current)?pt:Xt.current:wt:pt,ut=g&&A(pt),Bt=(0,pe.useRef)(null);!Lt&&(0,ri.useSyncExternalStore)(Xc,()=>(Bt.current=!1,Bt),()=>(Bt.current=!0,Bt));let ar=Bt.current;y&&ar&&!i&&ut&&console.warn(`Missing pre-initiated data for serialized key "${g}" during server-side rendering. Data fetching should be initiated on the server and provided to SWR via fallback data. You can set "strictServerPrefetchWarning: false" to disable this warning.`);let xt=!g||!t||M().isPaused()||sr&&!A(Zt)?!1:_e&&!A(l)?l:i?A(pt)?!1:a:A(pt)||a,eo=_e&&xt,lr=A(He.isValidating)?eo:He.isValidating,Yo=A(He.isLoading)?eo:He.isLoading,St=(0,pe.useCallback)(async N=>{let X=z.current;if(!g||!X||T.current||M().isPaused())return!1;let Q,ee,et=!0,Ue=N||{},ae=!b[g]||!Ue.dedupe,Re=()=>Fn?!T.current&&g===O.current&&D.current:g===O.current,Po={isValidating:!1,isLoading:!1},Ao=()=>{me(Po)},Qi=()=>{let Ge=b[g];Ge&&Ge[1]===ee&&delete b[g]},es={isValidating:!0};A(se().data)&&(es.isLoading=!0);try{if(ae&&(me(es),o.loadingTimeout&&A(se().data)&&setTimeout(()=>{et&&Re()&&M().onLoadingSlow(g,o)},o.loadingTimeout),b[g]=[X(v),No()]),[Q,ee]=b[g],Q=await Q,ae&&setTimeout(Qi,o.dedupingInterval),!b[g]||b[g][1]!==ee)return ae&&Re()&&M().onDiscarded(g),!1;Po.error=le;let Ge=h[g];if(!A(Ge)&&(ee<=Ge[0]||ee<=Ge[1]||Ge[1]===0))return Ao(),ae&&Re()&&M().onDiscarded(g),!1;let mt=se().data;Po.data=r(mt,Q)?mt:Q,ae&&Re()&&M().onSuccess(Q,g,o)}catch(Ge){Qi();let mt=M(),{shouldRetryOnError:ur}=mt;mt.isPaused()||(Po.error=Ge,ae&&Re()&&(mt.onError(Ge,g,mt),(ur===!0||qe(ur)&&ur(Ge))&&(!M().revalidateOnFocus||!M().revalidateOnReconnect||Te())&&mt.onErrorRetry(Ge,g,mt,jm=>{let mr=w[g];mr&&mr[0]&&mr[0](Ft.ERROR_REVALIDATE_EVENT,jm)},{retryCount:(Ue.retryCount||0)+1,dedupe:!0})))}return et=!1,Ao(),!0},[g,n]),pr=(0,pe.useCallback)((...N)=>Ln(n,O.current,...N),[]);if(ho(()=>{z.current=t,ve.current=o,A(wt)||(Xt.current=wt)}),ho(()=>{if(!g)return;let N=St.bind(le,ni),X=0;M().revalidateOnFocus&&(X=Date.now()+M().focusThrottleInterval);let ee=Ll(g,w,(et,Ue={})=>{if(et==Ft.FOCUS_EVENT){let ae=Date.now();M().revalidateOnFocus&&ae>X&&Te()&&(X=ae+M().focusThrottleInterval,N())}else if(et==Ft.RECONNECT_EVENT)M().revalidateOnReconnect&&Te()&&N();else{if(et==Ft.MUTATE_EVENT)return St();if(et==Ft.ERROR_REVALIDATE_EVENT)return St(Ue)}});return T.current=!1,O.current=g,D.current=!0,me({_k:v}),xt&&(b[g]||(A(pt)||Lt?N():Zr(N))),()=>{T.current=!0,ee()}},[g]),ho(()=>{let N;function X(){let ee=qe(u)?u(se().data):u;ee&&N!==-1&&(N=setTimeout(Q,ee))}function Q(){!se().error&&(m||M().isVisible())&&(d||M().isOnline())?St(ni).then(X):X()}return X(),()=>{N&&(clearTimeout(N),N=-1)}},[u,m,d,g]),(0,pe.useDebugValue)(Qt),i){if(!Fn&&Lt&&ut)throw new Error("Fallback data is required when using Suspense in SSR.");ut&&(z.current=t,ve.current=o,T.current=!1);let N=f[g],X=!A(N)&&ut?pr(N):ql;if(oi(X),!A(Zt)&&ut)throw Zt;let Q=ut?St(ni):ql;!A(Qt)&&ut&&(Q.status="fulfilled",Q.value=!0),oi(Q)}return{mutate:pr,get data(){return Pe.data=!0,Qt},get error(){return Pe.error=!0,Zt},get isValidating(){return Pe.isValidating=!0,lr},get isLoading(){return Pe.isLoading=!0,Yo}}},fb=go.defineProperty(ei,"defaultValue",{value:qn}),rt=Fl(Qc)});var ip,Wn,wi=S(()=>{"use client";Ct();ip=p(Mt(),1),Wn=(0,ke.createSvgIcon)((0,ip.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 17h-2v-2h2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25"}),"Help")});var pp={};vt(pp,{default:()=>lp});function sp({children:e}){return Me.default.createElement(st.Typography,{style:{margin:4}},e)}function lp({handleClose:e}){return Me.default.createElement(ap.Dialog,{open:!0,maxWidth:"lg",onClose:e,title:"Help"},Me.default.createElement(st.DialogContent,null,Me.default.createElement(sp,null,"The procedure for the protein lookup is as follows:",Me.default.createElement("ul",null,Me.default.createElement("li",null,"(Automatic lookup) Searches UniProt for the transcript ID or gene name to retrieve the UniProt ID, which is then used to lookup the structure in AlphaFoldDB"),Me.default.createElement("li",null,"(Manual) Allows you to choose your own structure file from your local machine (e.g. a PDB file predicted by e.g. ColabFold) or supply a specific URL"),Me.default.createElement("li",null,"The residues from the structure are downloaded, and then you can choose the transcript isoform from the selected gene that best represents the structure. Asterisks are displayed if there is an exact sequence match"),Me.default.createElement("li",null,"The residues from the structure are finally aligned to the to the selected transcript's protein sequence representation, and this creates a mapping from the reference genome coordinates to positions in the 3-D structure"),Me.default.createElement("li",null,"Finally the molstar panel is opened, and this contains many specialized features features, plus additional mouseover and selection features supplied by the plugin to connect mouse click actions and mouse hover with coordinates on the linear genome view"))),Me.default.createElement(sp,null,"If you run into challenges with this workflow e.g. your transcripts are not being found in UniProt then you can use the Manual import form, or contact colin.diesh@gmail.com for troubleshooting")),Me.default.createElement(st.Divider,null),Me.default.createElement(st.DialogActions,null,Me.default.createElement(st.Button,{onClick:e,color:"primary"},"Close")))}var Me,ap,st,up=S(()=>{"use strict";Me=p(x()),ap=p(Oe()),st=p(I())});var Ai=V((N0,Sp)=>{Sp.exports=JBrowseExports["@jbrowse/core/pluggableElementTypes"]});var Tp=V((V0,vp)=>{vp.exports=JBrowseExports["@jbrowse/core/util/types/mst"]});var zo=V((B0,Pp)=>{Pp.exports=JBrowseExports["mobx-state-tree"]});async function Cp({plugin:e,colorScheme:t}){let{structures:o}=e.managers.structure.hierarchy.current;for(let n of o)await e.managers.structure.component.updateRepresentationsTheme(n.components,{color:t})}var To,kp,Ci=S(()=>{"use strict";To=[{value:"default",label:"Default (element/chain)"},{value:"plddt-confidence",label:"pLDDT confidence (AlphaFold)"},{value:"chain-id",label:"Chain"},{value:"secondary-structure",label:"Secondary structure"},{value:"hydrophobicity",label:"Hydrophobicity (Kyte-Doolittle)"},{value:"residue-name",label:"Residue type"},{value:"uncertainty",label:"B-factor / uncertainty"},{value:"molecule-type",label:"Molecule type"}],kp=To.map(e=>e.value)});function Ii(e){e.managers.interactivity.lociHighlights.clearHighlights(),e.managers.interactivity.lociSelects.deselectAll()}function Fi(e,t,o){o==="highlight"?(e.managers.interactivity.lociHighlights.clearHighlights(),e.managers.interactivity.lociHighlights.highlight({loci:t})):(e.managers.interactivity.lociSelects.deselectAll(),e.managers.interactivity.lociSelects.select({loci:t}))}async function Lp({structure:e,residues:t,plugin:o,mode:n}){if(n==="clear"||t.length===0){Ii(o);return}let{StructureSelection:r,Script:i}=await ge(),s=i.getStructureSelection(a=>a.struct.generator.atomGroups({"residue-test":a.core.logic.or(t.map(u=>a.core.rel.eq([a.struct.atomProperty.macromolecular.label_seq_id(),u]))),"group-by":a.struct.atomProperty.macromolecular.residueKey()}),e),l=r.toLociWithSourceUnits(s);Fi(o,l,n)}async function Li({structure:e,startResidue:t,endResidue:o,plugin:n,mode:r}){if(r==="clear"){Ii(n);return}let{StructureSelection:i,Script:s}=await ge(),l=s.getStructureSelection(u=>u.struct.generator.atomGroups({"residue-test":u.core.logic.and([u.core.rel.gre([u.struct.atomProperty.macromolecular.label_seq_id(),t]),u.core.rel.lte([u.struct.atomProperty.macromolecular.label_seq_id(),o])]),"group-by":u.struct.atomProperty.macromolecular.residueKey()}),e),a=i.toLociWithSourceUnits(l);Fi(n,a,r)}async function Ep({structure:e,selectedResidue:t,plugin:o,mode:n}){if(n==="clear"){Ii(o);return}let{StructureSelection:r}=await ge(),i=await gs({structure:e,selectedResidue:t+1}),s=r.toLociWithSourceUnits(i);Fi(o,s,n)}var Ei=S(()=>{"use strict";Ht();Ut()});var qp,Dp,Np,Vp,gt=S(()=>{"use strict";qp="rgba(255, 105, 180, 0.5)",Dp="2px solid #333",Np="1px solid black",Vp="#999"});async function Di({structure:e,startResidue:t,endResidue:o,plugin:n}){await Li({structure:e,startResidue:t,endResidue:o,plugin:n,mode:"highlight"})}async function Up({structure:e,startResidue:t,endResidue:o,plugin:n}){await Li({structure:e,startResidue:t,endResidue:o,plugin:n,mode:"select"})}var Ni=S(()=>{"use strict";Ei()});function $n({model:e,structureSeqPos:t}){let{genomeToTranscriptSeqMapping:o,pairwiseAlignment:n,structureSeqToTranscriptSeqPosition:r}=e;if(!o||!n)return;let{p2g:i,strand:s}=o,l=r?.[t];if(l!==void 0)return Qo(i,l,s)}function Vi({model:e,structureSeqPos:t,structureSeqEndPos:o}){let n,r;for(let i=t;i<o;i++){let s=$n({structureSeqPos:i,model:e});if(s){let[l,a]=s;(n===void 0||l<n)&&(n=l),(r===void 0||a>r)&&(r=a)}}if(n!==void 0&&r!==void 0)return[n,r]}async function Ud({model:e,structureSeqPos:t,structureSeqEndPos:o,zoomToBaseLevel:n}){let r=(0,_p.getSession)(e),{connectedView:i,genomeToTranscriptSeqMapping:s}=e;if(!s||!i)return;let{strand:l,refName:a}=s,u=i.assemblyNames[0];if(!u)return;let m=o!==void 0?Vi({structureSeqPos:t,structureSeqEndPos:o,model:e}):$n({structureSeqPos:t,model:e});if(!m)return;let[d,c]=m;if(n)await i.navToLocString(`${a}:${d}-${c}${l===-1?"[rev]":""}`,void 0,.2);else{let{assemblyManager:y}=r,h=y.get(u)?.getCanonicalRefName(a)??a;i.centerAt(d,h)}}async function Wo({model:e,structureSeqPos:t,structureSeqEndPos:o}){e.setClickedStructureRange({start:t,end:o??t+1}),await Ud({model:e,structureSeqPos:t,structureSeqEndPos:o,zoomToBaseLevel:e.zoomToBaseLevel})}var _p,Bi=S(()=>{"use strict";_p=p(te());en()});function Jp(e){return Array.from(e,t=>Gd[t])}function Kp(e){return e<0?"#cccccc":e<=50?"#ff7d45":e<=70?"#ffdb13":e<=90?"#65cbf3":"#0053d6"}function Yp(e){let t=Math.max(0,Math.min(1,(e-Rp)/(Od-Rp))),o=Math.round(51+179*t),n=Math.round(102+38*t),r=Math.round(204+-164*t);return`rgb(${o}, ${n}, ${r})`}function Hi(e,t){return t?e.flatMap((o,n)=>{let r=t[n];return o!==void 0&&r!==void 0?[{col:r,value:o}]:[]}):[]}var Gd,Rp,Od,Ui=S(()=>{"use strict";Gd={I:4.5,V:4.2,L:3.8,F:2.8,C:2.5,M:1.9,A:1.8,G:-.4,T:-.7,S:-.8,W:-.9,Y:-1.3,P:-1.6,H:-3.2,E:-3.5,Q:-3.5,D:-3.5,N:-3.5,K:-3.9,R:-4.5},Rp=-4.5,Od=4.5});var Ve,Se,tu,Zd,ou,nu=S(()=>{"use strict";Ve=p(x()),Se=p(I());Lr();tu=p(_()),Zd=(0,tu.observer)(function({model:t}){let[o,n]=(0,Ve.useState)(""),[r,i]=(0,Ve.useState)(),{showManualAlignmentDialog:s,primaryStructure:l}=t,a=()=>{n(""),i(void 0),t.setShowManualAlignmentDialog(!1)},u=()=>{if(o.trim())try{let m=hn(o.trim());if(!l){i("No structure loaded to apply alignment to");return}l.setAlignment(m),a()}catch(m){i(`Failed to parse alignment: ${m}`)}};return s?Ve.default.createElement(Se.Dialog,{open:!0,onClose:a,maxWidth:"md",fullWidth:!0},Ve.default.createElement(Se.DialogTitle,null,"Import Manual Alignment"),Ve.default.createElement(Se.DialogContent,null,Ve.default.createElement(Se.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Paste a pre-computed alignment in Clustal format. The first sequence should be the transcript and the second should be the structure."),Ve.default.createElement(Se.TextField,{multiline:!0,rows:12,fullWidth:!0,placeholder:`Example:
7
7
  transcript MKAAYLSMFGKEDHKPFGDDEVELFRAVPGLKLKIAG
8
8
  |||||||||||||||||||||||||||||||||||||
9
- structure MKAAYLSMFGKEDHKPFGDDEVELFRAVPGLKLKIAG`,value:o,onChange:m=>{n(m.target.value),i(void 0)},slotProps:{htmlInput:{style:{fontFamily:"monospace",fontSize:12}}}}),r?Ne.default.createElement(xe.Typography,{color:"error",variant:"body2",sx:{mt:1}},r):null),Ne.default.createElement(xe.DialogActions,null,Ne.default.createElement(xe.Button,{onClick:a},"Cancel"),Ne.default.createElement(xe.Button,{onClick:u,variant:"contained",color:"primary",disabled:!o.trim()},"Apply Alignment"))):null}),Wp=Hd});var Rp,Jp,Kp=v(()=>{"use client";St();Rp=p(Tt(),1),Jp=(0,Te.createSvgIcon)((0,Rp.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune")});var Yp=D((yw,$p)=>{$p.exports=JBrowseExports["@mui/material/Checkbox"]});var Xp=D((ww,Zp)=>{Zp.exports=JBrowseExports["@mui/material/IconButton"]});var eu=D((xw,Qp)=>{Qp.exports=JBrowseExports["@mui/material/ListItemIcon"]});var ou=D((vw,tu)=>{tu.exports=JBrowseExports["@mui/material/ListItemText"]});var ru=D((Sw,nu)=>{nu.exports=JBrowseExports["@mui/material/Menu"]});var su=D((Tw,iu)=>{iu.exports=JBrowseExports["@mui/material/MenuItem"]});var lu=D((Pw,au)=>{au.exports=JBrowseExports["@mui/material/TextField"]});var uu=D((Aw,pu)=>{pu.exports=JBrowseExports["@mui/material/Tooltip"]});var I,mu,F,cu,Ud,du,gu=v(()=>{"use strict";I=p(x()),mu=p(Ge()),F=p(L()),cu=p(W());We();Ud=(0,cu.observer)(function({model:t}){let[o,n]=(0,I.useState)(),[r,i]=(0,I.useState)(""),[s,l]=(0,I.useState)(""),[a,u]=(0,I.useState)("pdb"),[m,d]=(0,I.useState)(""),[c,w]=(0,I.useState)(),{showAddStructureDialog:y}=t,f=()=>{n(void 0),i(""),l(""),d(""),w(void 0),t.setShowAddStructureDialog(!1)},h=async()=>{try{let g,S;a==="pdb"&&r?g=Io(r):a==="uniprot"&&s?g=oo(s.toUpperCase()):a==="url"&&m?g=m:a==="file"&&o&&(S=await o.text()),(g!==void 0||S!==void 0)&&(await t.addStructureAndSuperpose({url:g,data:S}),f())}catch(g){console.error(g),w(g)}};if(!y)return null;let b=a==="url"&&m!==""||a==="file"&&o!==void 0||a==="pdb"&&r!==""||a==="uniprot"&&s!=="";return I.default.createElement(F.Dialog,{open:!0,onClose:f,maxWidth:"sm",fullWidth:!0},I.default.createElement(F.DialogTitle,null,"Add Structure"),I.default.createElement(F.DialogContent,null,c?I.default.createElement(mu.ErrorMessage,{error:c}):null,I.default.createElement(F.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Add another structure to superpose on the existing structure(s)."),I.default.createElement(F.FormControl,{component:"fieldset",sx:{mb:2}},I.default.createElement(F.RadioGroup,{value:a,onChange:g=>{u(g.target.value)}},I.default.createElement(F.FormControlLabel,{value:"pdb",control:I.default.createElement(F.Radio,null),label:"PDB ID"}),I.default.createElement(F.FormControlLabel,{value:"uniprot",control:I.default.createElement(F.Radio,null),label:"UniProt ID (AlphaFold)"}),I.default.createElement(F.FormControlLabel,{value:"url",control:I.default.createElement(F.Radio,null),label:"URL"}),I.default.createElement(F.FormControlLabel,{value:"file",control:I.default.createElement(F.Radio,null),label:"File"}))),a==="pdb"?I.default.createElement(F.TextField,{fullWidth:!0,value:r,onChange:g=>{i(g.target.value.toUpperCase())},label:"PDB ID (e.g. 1CRN)",placeholder:"Enter PDB ID",sx:{mb:2}}):null,a==="uniprot"?I.default.createElement(F.TextField,{fullWidth:!0,value:s,onChange:g=>{l(g.target.value.toUpperCase())},label:"UniProt ID (e.g. P04637)",placeholder:"Enter UniProt ID",helperText:"Will fetch the AlphaFold v6 predicted structure",sx:{mb:2}}):null,a==="url"?I.default.createElement(F.TextField,{fullWidth:!0,label:"Structure URL",value:m,onChange:g=>{d(g.target.value)},placeholder:"https://files.rcsb.org/download/1CRN.cif",sx:{mb:2}}):null,a==="file"?I.default.createElement("div",{style:{marginBottom:16}},I.default.createElement(F.Button,{variant:"outlined",component:"label"},o?o.name:"Choose File",I.default.createElement("input",{type:"file",hidden:!0,accept:".pdb,.cif,.mmcif,.ent",onChange:({target:g})=>{let S=g.files?.[0];S&&n(S)}})),o?I.default.createElement(F.Typography,{variant:"body2",sx:{mt:1}},"Selected: ",o.name):null):null,I.default.createElement(F.Typography,{variant:"body2",color:"text.secondary",sx:{mt:1}},"Tip: Structures will be automatically superposed using TM-align. For manual control, use the Mol* controls (\u{1F527} wrench icon).")),I.default.createElement(F.DialogActions,null,I.default.createElement(F.Button,{onClick:f},"Cancel"),I.default.createElement(F.Button,{onClick:()=>{h()},variant:"contained",color:"primary",disabled:!b},"Add Structure")))}),du=Ud});var fu,hu,Gd,bu,yu=v(()=>{"use strict";fu=p(x()),hu=p(W()),Gd=(0,hu.observer)(function({model:t}){let{structures:o}=t,n=o.map(r=>r.hoverString).filter(Boolean).join(" ");return fu.default.createElement("div",{style:{flex:1,minWidth:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontSize:12},title:n},n?`Hover: ${n}`:"\xA0")}),bu=Gd});var vu={};bt(vu,{default:()=>xu});function Li({children:e}){return ct.default.createElement(Et.Typography,{style:{margin:4,marginBottom:12}},e)}function xu({handleClose:e}){return ct.default.createElement(wu.Dialog,{open:!0,maxWidth:"lg",onClose:e,title:"Protein alignment"},ct.default.createElement(Et.DialogContent,null,ct.default.createElement(Li,null,"This panel shows the computed pairwise alignment of the reference genome sequence to the structure sequence. The structure file (PDB file, mmCIF file, etc) has a stored representation of the e.g. amino acid sequence but the sequence in the structure file can differ from the sequence from the gene on the genome browser"),ct.default.createElement(Li,null,"In order to resolve this, we align the two sequences together (using EMBOSS needle) to get pairwise alignment of the genome's representation of the protein and the structure file's representation of the protein."),ct.default.createElement(Li,null,"If you need a 100% fidelity protein, you can do a folding with e.g. AlphaFold to make sure the structure you are using matches exactly the sequence of the transcript")),ct.default.createElement(Et.DialogActions,null,ct.default.createElement(Et.Button,{onClick:()=>{e()},variant:"contained",color:"primary"},"Close")))}var ct,wu,Et,Su=v(()=>{"use strict";ct=p(x()),wu=p(Ge()),Et=p(L())});function Ei({model:e}){return jo.default.createElement(Pu.IconButton,{style:{float:"right"},onClick:()=>{(0,Tu.getSession)(e).queueDialog(t=>[Od,{handleClose:t}])}},jo.default.createElement(Hn,null))}var jo,Tu,Pu,Od,Au=v(()=>{"use strict";jo=p(x()),Tu=p(ee());ui();Pu=p(L()),Od=(0,jo.lazy)(()=>Promise.resolve().then(()=>(Su(),vu)))});function ku(e){return zd[e]??"#999999"}async function jd(e){let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status} fetching ${e}`);let o=await t.text(),n=[];for(let r of o.split(`
10
- `)){if(r.startsWith("#")||!r.trim())continue;let i=r.split(" ");if(i.length<9)continue;let s=i[2],l=Number.parseInt(i[3]??"0",10),a=Number.parseInt(i[4]??"0",10),u=i[8]??"",m="",d;for(let c of u.split(";")){let[w,y]=c.split("=");w==="Note"?m=decodeURIComponent(y??""):w==="ID"&&(d=y)}if(s){let c=`${s}-${l}-${a}-${n.length}`;n.push({type:s,start:l,end:a,description:m,id:d,uniqueId:c})}}return n}function qi(e){let{data:t,error:o,isLoading:n}=et(e?`https://rest.uniprot.org/uniprotkb/${e}.gff`:null,jd);return{features:t,error:o,isLoading:n}}var zd,Di=v(()=>{"use strict";uo();zd={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 Wd(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 Rd({feature:e}){return $e.default.createElement("div",null,$e.default.createElement("div",null,$e.default.createElement("strong",null,e.type)),$e.default.createElement("div",null,"Position: ",e.start,"-",e.end),e.description?$e.default.createElement("div",null,e.description):null)}var $e,Cu,Mu,Jd,Iu,Fu=v(()=>{"use strict";$e=p(x()),Cu=p(L()),Mu=p(W());mt();Ai();Di();Ci();Jd=(0,Mu.observer)(function({feature:t,model:o}){let[n,r]=(0,$e.useState)(!1),{molstarPluginContext:i,selectedFeatureId:s,structurePositionToAlignmentMap:l}=o,a=s===t.uniqueId,u=()=>{r(!0);let f=Wd(t,l);f&&o.setAlignmentHoverRange(f)},m=()=>{r(!1),o.setAlignmentHoverRange(void 0)},d=()=>{let f=o.molstarStructure,h=!a;f&&i&&(h?kp({structure:f,startResidue:t.start,endResidue:t.end,plugin:i}).catch(b=>{console.error(b),o.setError(b)}):i.managers.interactivity.lociSelects.deselectAll()),h?(o.setSelectedFeatureId(t.uniqueId),Go({model:o,structureSeqPos:t.start-1,structureSeqEndPos:t.end}).catch(b=>{console.error(b),o.setError(b)})):(o.setSelectedFeatureId(void 0),o.setClickedStructureRange(void 0))},{left:c,width:w}=_d(t,l),y=ku(t.type);return $e.default.createElement(Cu.Tooltip,{title:$e.default.createElement(Rd,{feature:t}),followCursor:!0},$e.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?vp:n?Sp:"none",boxSizing:"border-box"}}))}),Iu=Jd});var Wo,Lu,Eu,Kd,qu,Du=v(()=>{"use strict";Wo=p(x()),Lu=p(L()),Eu=p(W());mt();Kd=(0,Eu.observer)(function({type:t,labelWidth:o,model:n}){return Wo.default.createElement(Lu.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:Tp,fontWeight:"bold",fontSize:8,lineHeight:1},title:`Hide ${t} track`},"x"),Wo.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis"}},t)))}),qu=Kd});var Nu,Vu,$d,Bu,Hu=v(()=>{"use strict";Nu=p(x()),Vu=p(W());mt();$d=(0,Vu.observer)(function({model:t}){let{alignmentHoverPos:o}=t;return o===void 0?null:Nu.default.createElement("div",{style:{position:"absolute",left:o*6,top:0,bottom:0,width:6,backgroundColor:xp,pointerEvents:"none",zIndex:10}})}),Bu=$d});function Uu(e,t){return e.filter(o=>!t.has(o))}var dt,Jn,Yd,Gu,Ou,zu=v(()=>{"use strict";dt=p(x()),Jn=p(W());mt();Fu();Du();Hu();Yd=(0,Jn.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(Iu,{key:r.uniqueId,feature:r,model:o})),dt.default.createElement(Bu,{model:o}))}),Gu=(0,Jn.observer)(function({data:t,labelWidth:o,model:n}){let{hiddenFeatureTypes:r}=n,i=Uu(t.featureTypes,r);return dt.default.createElement(dt.default.Fragment,null,i.map(s=>dt.default.createElement(qu,{key:s,type:s,labelWidth:o,model:n})))}),Ou=(0,Jn.observer)(function({data:t,model:o}){let{hiddenFeatureTypes:n}=o,r=Uu(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(Yd,{key:i,features:t.groupedFeatures[i],model:o,sequenceLength:t.sequenceLength})))})});var Kn,ju,Wu,Zd,Ni,_u=v(()=>{"use strict";Kn=p(x()),ju=p(L()),Wu=p(W());mt();Zd=(0,Wu.observer)(function({cells:t,colorFor:o,formatValue:n,sequenceLength:r,model:i}){return Kn.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=>Kn.default.createElement(ju.Tooltip,{key:s.col,title:n(s.value),followCursor:!0},Kn.default.createElement("div",{style:{position:"absolute",left:s.col*6,top:0,width:6,height:i.trackHeight,backgroundColor:o(s.value)}}))))}),Ni=Zd});var Oe,Rt,Xd,Qd,eg,Ru,Ju,tg,$n,Ku=v(()=>{"use strict";Oe=p(x()),Rt=p(W());mt();Xd=(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))}),Qd=(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"}}))}),eg=(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}),Ru=(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"}})}),Ju=(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(Qd,{model:t,height:n}),Oe.default.createElement(Ru,{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(Ru,{range:t.alignmentHoverRange,strLength:o,background:"rgba(255, 165, 0, 0.4)",height:n}),Oe.default.createElement(eg,{model:t,strLength:o,height:n}))}),tg=(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(Xd,{str:o}))}),$n=tg});function og(e){let t={};for(let o of e)t[o.type]??=[],t[o.type].push(o);return t}function Vi(e,t){let{features:o,isLoading:n,error:r}=qi(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=og(o);return{data:{featureTypes:Object.keys(l),groupedFeatures:l,sequenceLength:s},isLoading:!1,error:void 0}}var $u=v(()=>{"use strict";Di()});function Zu({label:e,title:t,height:o}){return A.default.createElement(Jt.Tooltip,{title:t,placement:"left"},A.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 A,Jt,Xu,Qu,ng,em,tm=v(()=>{"use strict";A=p(x()),Jt=p(L()),Xu=p(Yt()),Qu=p(W());mt();Au();zu();_u();Ku();$u();Ii();ng=(0,Qu.observer)(function({model:t}){let{pairwiseAlignment:o,showHighlight:n,showProteinTracks:r,uniprotId:i,confidenceCells:s,hydrophobicityCells:l}=t,a=(0,A.useRef)(null),{data:u,isLoading:m,error:d}=Vi(t,i);if((0,A.useEffect)(()=>(0,Xu.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 A.default.createElement("div",null,"No pairwiseAlignment");let c=o.alns[0].seq,w=o.alns[1].seq,y=o.consensus;return A.default.createElement("div",null,A.default.createElement(Ei,{model:t}),A.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),A.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)}},A.default.createElement("div",{style:{flexShrink:0,width:50,textAlign:"right",paddingRight:4}},A.default.createElement("div",{style:{height:14}},A.default.createElement(Jt.Tooltip,{title:"This is the sequence of the protein from the reference genome transcript"},A.default.createElement("span",null,"GENOME"))),A.default.createElement("div",{style:{height:14}},"\xA0"),A.default.createElement("div",{style:{height:14}},A.default.createElement(Jt.Tooltip,{title:"This is the sequence of the protein from the structure file"},A.default.createElement("span",null,"STRUCT"))),r?m?A.default.createElement("div",{style:{height:14,fontSize:8,color:"#666"}},"Loading..."):d?A.default.createElement(Jt.Tooltip,{title:d instanceof Error?d.message:"Error loading features"},A.default.createElement("div",{style:{height:14,fontSize:8,color:"red"}},"Error")):u?A.default.createElement(Gu,{data:u,labelWidth:50,model:t}):null:null,r&&s.length>0?A.default.createElement(Zu,{label:"pLDDT",title:"AlphaFold per-residue confidence (pLDDT)",height:t.trackHeight+t.trackGap}):null,r&&l.length>0?A.default.createElement(Zu,{label:"hydro",title:"Kyte-Doolittle hydrophobicity (orange hydrophobic, blue hydrophilic)",height:t.trackHeight+t.trackGap}):null),A.default.createElement("div",{ref:a,style:{overflow:"auto",whiteSpace:"nowrap",flex:1,paddingBottom:10,backgroundColor:"white"}},A.default.createElement("div",{style:{position:"relative"}},A.default.createElement(Ju,{model:t,strLength:c.length,height:42}),A.default.createElement("div",{style:{height:14}},A.default.createElement($n,{model:t,str:c})),A.default.createElement("div",{style:{height:14}},A.default.createElement($n,{model:t,str:y})),A.default.createElement("div",{style:{height:14}},A.default.createElement($n,{model:t,str:w}))),r&&u?A.default.createElement(Ou,{data:u,model:t}):null,r&&s.length>0?A.default.createElement(Ni,{cells:s,colorFor:Np,formatValue:f=>`pLDDT ${f.toFixed(0)}`,sequenceLength:c.length,model:t}):null,r&&l.length>0?A.default.createElement(Ni,{cells:l,colorFor:Vp,formatValue:f=>`Kyte-Doolittle ${f.toFixed(1)}`,sequenceLength:c.length,model:t}):null)))}),em=ng});function ig({checked:e,label:t,onToggle:o}){return G.default.createElement(Bi.default,{onClick:()=>{o()},dense:!0},G.default.createElement(im.default,null,G.default.createElement(nm.default,{checked:e,size:"small",edge:"start",disableRipple:!0})),G.default.createElement(sm.default,null,t))}function sg(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,om,nm,rm,im,sm,am,Bi,lm,pm,Yn,rg,ag,lg,um,mm=v(()=>{"use strict";G=p(x()),om=p(Ge());Kp();nm=p(Yp()),rm=p(Xp()),im=p(eu()),sm=p(ou()),am=p(ru()),Bi=p(su()),lm=p(lu()),pm=p(uu()),Yn=p(W());gu();yu();tm();yi();rg=(0,Yn.observer)(function({model:t}){return G.default.createElement(lm.default,{select:!0,size:"small",label:"Color",value:t.colorScheme,onChange:o=>{let n=ho.find(r=>r.value===o.target.value);n&&t.setColorScheme(n.value)},slotProps:{select:{native:!1}},sx:{minWidth:180}},ho.map(o=>G.default.createElement(Bi.default,{key:o.value,value:o.value},o.label)))});ag=(0,Yn.observer)(function({model:t}){let[o,n]=(0,G.useState)(null);return G.default.createElement(G.default.Fragment,null,G.default.createElement(pm.default,{title:"Display settings"},G.default.createElement(rm.default,{size:"small",onClick:r=>{n(r.currentTarget)}},G.default.createElement(Jp,{fontSize:"small"}))),G.default.createElement(am.default,{anchorEl:o,open:!!o,onClose:()=>{n(null)}},sg(t).map(r=>G.default.createElement(ig,{key:r.label,checked:r.checked,label:r.label,onToggle:r.onToggle}))))}),lg=(0,Yn.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(bu,{model:t}),G.default.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center",flexShrink:0}},G.default.createElement(rg,{model:t}),G.default.createElement(ag,{model:t}))),n?o.filter(r=>r.pairwiseAlignment||r.alignmentPending).map((r,i)=>G.default.createElement("div",{key:i},r.pairwiseAlignment?G.default.createElement(em,{model:r}):G.default.createElement(om.LoadingEllipses,{message:"Loading pairwise alignment"}))):null,G.default.createElement(du,{model:t}))}),um=lg});var cm,dm=v(()=>{"use strict";cm=`
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 Hi({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(),h=document.createElement("div");o.current.append(h),a.host=h;let b=w(),g=await y({target:h,render:f,spec:{...w(),behaviors:[...b.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(),h.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,gm.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,gm,fm=v(()=>{"use strict";ft=p(x()),gm=p(zn());Nt()});var bm={};bt(bm,{default:()=>mg});var nt,Kt,Ui,hm,pg,ug,mg,ym=v(()=>{"use strict";nt=p(x()),Kt=p(Ge()),Ui=p(W());_p();mm();dm();fm();hm=document.createElement("style");hm.append(cm);document.head.append(hm);pg=(0,Ui.observer)(function({model:t}){let{showControls:o}=t,{parentRef:n,error:r,loading:i}=Hi({showControls:o,model:t});return r?nt.default.createElement(Kt.ErrorMessage,{error:r}):nt.default.createElement(ug,{model:t,parentRef:n,loading:i})}),ug=(0,Ui.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 nt.default.createElement("div",{style:{background:"#ccc"},"data-testid":a?"protein-view-ready":"protein-view-loading"},s?nt.default.createElement(Kt.ErrorMessage,{error:s}):null,n?nt.default.createElement(Kt.LoadingEllipses,{message:"Loading protein viewer"}):nt.default.createElement(um,{model:t}),nt.default.createElement("div",{ref:o,style:{position:"relative",width:r,height:i}}),nt.default.createElement(Kt.ResizeHandle,{style:{height:4,background:"grey"},onDrag:u=>t.setHeight(t.height+u)}),nt.default.createElement(Wp,{model:t}))}),mg=pg});var km={};bt(km,{default:()=>Zn});var Tm,Xn,Pm,Am,Zn,Cm=v(()=>{"use strict";Tm=p(tn()),Xn=p(ee()),Pm=p(on()),Am=p(nn()),Zn=class extends Tm.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let{features:t}=JSON.parse(await(0,Pm.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,Am.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,Xn.doesIntersect2)(a.start,a.end,r,i)&&n.next(new Xn.SimpleFeature({...a,refName:s}));n.complete()})}freeResources(){}}});var gg={};bt(gg,{default:()=>Qn});var Fm=p(Ki());var Ws=p(x());var pt=p(x()),zs=p(W());var ss=p(x()),as=p(ee()),ls=p(W());var ts=p(x()),os=p(ee()),ns=p(W());var Qi=p(Ze()),es=(0,Qi.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 Ro(e){return e.views.find(o=>o.type==="ProteinView")}var Hm=(0,ns.observer)(function({assemblyName:t,start:o,end:n,refName:r,model:i}){let{cx:s,classes:l}=es(),{assemblyManager:a}=(0,os.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 ts.default.createElement("div",{className:s(l.highlight,y<=3?l.thinborder:void 0),style:{left:f,width:y}})}else return null}),yt=Hm;Vt();var Gm=(0,ls.observer)(function({model:t}){let o=(0,as.getSession)(t),{views:n,hovered:r}=o;if(wt(r)&&n.some(i=>i.type==="ProteinView")){let{assemblyNames:i}=t,{coord:s,refName:l}=r.hoverPosition;return ss.default.createElement(yt,{model:t,start:s-1,end:s,refName:l,assemblyName:i[0]})}return null}),ps=Gm;var bs=p(x()),Zo=p(ee()),ys=p(W());Yo();Vt();To();var Om=(0,ys.observer)(function({model:t}){let o=(0,Zo.getSession)(t),{hovered:n}=o,{assemblyNames:r,id:i}=t;if(!r[0])return null;let l=Bt.get(i);if(!l||!wt(n))return null;let{coord:a}=n.hoverPosition,u=new Zo.SimpleFeature(l.feature),m=Zt(u),{g2p:d}=m,c=d[a-1];return c===void 0?null:bs.default.createElement(yt,{model:t,start:c,end:c+1,refName:l.uniprotId,assemblyName:l.uniprotId})}),ws=Om;var xs=p(x()),vs=p(ee()),Ss=p(W());Yo();Vt();var zm=(0,Ss.observer)(function({model:t}){let o=(0,vs.getSession)(t),{hovered:n}=o,{assemblyNames:r,id:i}=t;if(!wt(n))return null;let{coord:s,refName:l}=n.hoverPosition;if(Bt.getByUniprotId(l,o)?.connectedViewId!==i)return null;let u=r[0];if(!u)return null;let m=Bt.getGenomeHighlightForProteinPosition(l,s-1,o);return m?xs.default.createElement(yt,{model:t,start:m.start,end:m.end,refName:m.refName,assemblyName:u}):null}),Ts=zm;var ar=p(x()),lr=p(W());var Xo=p(x()),Ps=p(ee()),As=p(W());var jm=(0,As.observer)(function({model:t,field:o}){let n=(0,Ps.getSession)(t),{assemblyManager:r}=n,{assemblyNames:i}=t,s=Ro(n),l=i[0];return(l?r.get(l):void 0)&&l?Xo.default.createElement(Xo.default.Fragment,null,s?.structures.flatMap((u,m)=>u[o].map((d,c)=>Xo.default.createElement(yt,{key:`${d.refName}-${d.start}-${d.end}-${m}-${c}`,start:d.start,end:d.end,refName:d.refName,assemblyName:l,model:t})))):null}),sr=jm;var ks=(0,lr.observer)(function({model:t}){return ar.default.createElement(sr,{model:t,field:"clickGenomeHighlights"})}),Cs=(0,lr.observer)(function({model:t}){return ar.default.createElement(sr,{model:t,field:"hoverGenomeHighlights"})});var Hs=p(x()),Us=p(ee()),Qt=p(Yt()),Gs=p(W());function Wm(e){return e.replace(/[-.]/g,"")}function Ms(e,t){return e&&t?[...e].find(([,o])=>Wm(o)===t)?.[0]:void 0}pe();var Km=(0,Gs.observer)(function({model:t}){let o=(0,Us.getSession)(t),{views:n}=o,r=Ro(o),i=r?.connectedMsaViewId,s=i?n.find(l=>l.id===i):void 0;return(0,Hs.useEffect)(()=>{if(!r||!s)return;let l=[],a;if(l.push((0,Qt.autorun)(()=>{let u=r.primaryStructure?.structureSequences?.[0];a=Ms(s.rowMap,u===void 0?void 0:te(u))})),s.setMousePos){let{setMousePos:u}=s;l.push((0,Qt.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,Qt.autorun)(()=>{let u=s.mouseCol,m=r.primaryStructure;if(m&&!(0,Qt.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}),Os=Km;var $m=(0,zs.observer)(function({model:t}){return pt.default.createElement(pt.default.Fragment,null,pt.default.createElement(ks,{model:t}),pt.default.createElement(Cs,{model:t}),pt.default.createElement(Ts,{model:t}),pt.default.createElement(ws,{model:t}),pt.default.createElement(ps,{model:t}),pt.default.createElement(Os,{model:t}))}),js=$m;function ur(e){e.addToExtensionPoint("LinearGenomeView-TracksContainerComponent",(t,{model:o})=>[...t,Ws.default.createElement(js,{key:"highlight_protein_viewer_protein3d",model:o})])}var na=p(en());var Js=p(eo());var Ym=(0,Js.ConfigurationSchema)("AlphaFoldConfidenceAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}}},{explicitlyTyped:!0}),Ks=Ym;function mr(e){e.addAdapterType(()=>new na.default({name:"AlphaFoldConfidenceAdapter",displayName:"AlphaFoldConfidence adapter",configSchema:Ks,getAdapterClass:()=>Promise.resolve().then(()=>(oa(),ta)).then(t=>t.default)}))}var ca=p(en());var ra=p(eo());var Zm=(0,ra.ConfigurationSchema)("AlphaMissensePathogenicityAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}}},{explicitlyTyped:!0}),ia=Zm;function cr(e){e.addAdapterType(()=>new ca.default({name:"AlphaMissensePathogenicityAdapter",displayName:"AlphaMissensePathogenicity adapter",configSchema:ia,getAdapterClass:()=>Promise.resolve().then(()=>(ma(),ua)).then(t=>t.default)}))}var On=p(ee());St();var ha=p(Tt(),1),ba=(0,Te.createSvgIcon)((0,ha.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add");var ge=p(x()),ip=p(Ge()),Gn=p(ee()),fo=p(L());var R=p(x()),Vn=p(Ge()),Ft=p(L()),ql=p(W()),Dl=p(Ze());var Fe=p(x()),ko=p(L());var to=p(x()),Pa=p(L());var Ut=p(x()),va=p(ee()),Sa=p(L()),Ta=p(Ze());var dr=p(x()),ln=p(L()),xa=p(Ze()),Xm=(0,xa.makeStyles)()({block:{display:"block"}});function gr({checked:e,disabled:t,label:o,onChange:n}){let{classes:r}=Xm();return dr.default.createElement(ln.FormControlLabel,{disabled:t,className:r.block,control:dr.default.createElement(ln.Checkbox,{checked:e,onChange:n}),label:o})}pe();var Qm=(0,Ta.makeStyles)()({textAreaFont:{fontFamily:"Courier New",whiteSpace:"pre"}});function fr({structureName:e,structureSequence:t,isoformSequences:o}){let{classes:n}=Qm(),[r,i]=(0,Ut.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,va.max)([a.length,...Object.entries(s).map(([m,d])=>Se(d.feature).length)]);return Ut.default.createElement(Ut.default.Fragment,null,Ut.default.createElement(gr,{onChange:m=>{i(m.target.checked)},label:"Show in FASTA format?",checked:r}),Ut.default.createElement(Sa.TextField,{variant:"outlined",multiline:!0,minRows:5,maxRows:10,fullWidth:!0,value:r?[`>${a}
15
- ${t}`,...Object.values(s).map(({feature:m,seq:d})=>`>${Se(m)}
14
+ `});function Ki({showControls:e,model:t}){let o=(0,yt.useRef)(null),n=(0,yt.useRef)(null),[r,i]=(0,yt.useState)(),[s,l]=(0,yt.useState)(!0);return(0,yt.useEffect)(()=>{let a={cancelled:!1};return(async()=>{try{if(!o.current)return;let{GeometryExport:u,MAQualityAssessment:m,PluginConfig:d,PluginSpec:c,DefaultPluginUISpec:y,createPluginUI:w,renderReact18:h}=await ge(),b=document.createElement("div");o.current.append(b),a.host=b;let f=y(),g=await w({target:b,render:h,spec:{...y(),behaviors:[...f.behaviors,c.Behavior(u),c.Behavior(m)],layout:{initial:{controlsDisplay:"reactive",showControls:e}},config:[[d.Viewport.ShowExpand,!1]]}});await g.initialized,a.cancelled?(g.dispose(),b.remove()):(a.plugin=g,n.current=g,t?.setMolstarPluginContext(g))}catch(u){console.error(u),i(u)}finally{l(!1)}})(),()=>{a.cancelled=!0,n.current=null,t&&(0,km.isAlive)(t)&&t.setMolstarPluginContext(void 0),a.plugin?.dispose(),a.host?.remove()}},[]),(0,yt.useEffect)(()=>{let a={cancelled:!1};return(async()=>{let u=n.current;if(u){let{PluginCommands:m}=await ge();a.cancelled||await m.Layout.Update(u,{state:{showControls:e}})}})(),()=>{a.cancelled=!0}},[e]),{parentRef:o,error:r,loading:s}}var yt,km,Cm=S(()=>{"use strict";yt=p(x()),km=p(zo());Ht()});var Im={};vt(Im,{default:()=>Pg});var at,$t,Yi,Mm,vg,Tg,Pg,Fm=S(()=>{"use strict";at=p(x()),$t=p(Oe()),Yi=p(_());nu();Tm();Am();Cm();Mm=document.createElement("style");Mm.append(Pm);document.head.append(Mm);vg=(0,Yi.observer)(function({model:t}){let{showControls:o}=t,{parentRef:n,error:r,loading:i}=Ki({showControls:o,model:t});return r?at.default.createElement($t.ErrorMessage,{error:r}):at.default.createElement(Tg,{model:t,parentRef:n,loading:i})}),Tg=(0,Yi.observer)(function({model:t,parentRef:o,loading:n}){let{width:r,height:i,error:s,structures:l}=t,a=!n&&l.every(u=>!u.alignmentPending);return at.default.createElement("div",{style:{background:"#ccc"},"data-testid":a?"protein-view-ready":"protein-view-loading"},s?at.default.createElement($t.ErrorMessage,{error:s}):null,n?at.default.createElement($t.LoadingEllipses,{message:"Loading protein viewer"}):at.default.createElement(vm,{model:t}),at.default.createElement("div",{ref:o,style:{position:"relative",width:r,height:i}}),at.default.createElement($t.ResizeHandle,{style:{height:4,background:"grey"},onDrag:u=>t.setHeight(t.height+u)}),at.default.createElement(ou,{model:t}))}),Pg=vg});var Hm={};vt(Hm,{default:()=>nr});var Nm,rr,Vm,Bm,nr,Um=S(()=>{"use strict";Nm=p(an()),rr=p(te()),Vm=p(ln()),Bm=p(pn()),nr=class extends Nm.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let{features:t}=JSON.parse(await(0,Vm.openLocation)(this.getConf("location")).readFile("utf8")),o=this.getConf("scoreField");return t.map(({begin:n,end:r,...i},s)=>({...i,uniqueId:`feat-${s}`,start:+n,end:+r+1,score:o==="population_frequency"?i.populationFrequencies?.[0]?.frequency:o==="variant_impact_score"?i.predictions?.[0]?.score:void 0,description:i.descriptions?.map(l=>l.value).join(","),name:[i.mutatedType?`${i.wildType}->${i.mutatedType}`:`${i.wildType}->del`]}))}async loadData(t={}){return this.feats??=this.loadDataP().catch(o=>{throw this.feats=void 0,o}),this.feats}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,Bm.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,rr.doesIntersect2)(a.start,a.end,r,i)&&n.next(new rr.SimpleFeature({...a,refName:s}));n.complete()})}freeResources(){}}});var Cg={};vt(Cg,{default:()=>ir});var zm=p(ns());var Qs=p(x());var ct=p(x()),Zs=p(_());var fs=p(x()),hs=p(te()),bs=p(_());var us=p(x()),ms=p(te()),cs=p(_());var ls=p(tt()),ps=(0,ls.makeStyles)()({highlight:{height:"100%",background:"rgba(255,255,0,0.2)",border:"1px solid rgba(50,50,0,0.2)",position:"absolute",zIndex:99,textAlign:"center",pointerEvents:"none",overflow:"hidden"},thinborder:{border:"1px solid black"}});function Zo(e){return e.views.find(o=>o.type==="ProteinView")}var $m=(0,cs.observer)(function({assemblyName:t,start:o,end:n,refName:r,model:i}){let{cx:s,classes:l}=ps(),{assemblyManager:a}=(0,ms.getSession)(i),{offsetPx:u}=i,d=a.get(t)?.getCanonicalRefName(r)??r,c=i.bpToPx({refName:d,coord:o}),y=i.bpToPx({refName:d,coord:n});if(c&&y){let w=Math.max(Math.abs(y.offsetPx-c.offsetPx),3),h=Math.min(c.offsetPx,y.offsetPx)-u;return us.default.createElement("div",{className:s(l.highlight,w<=3?l.thinborder:void 0),style:{left:h,width:w}})}else return null}),Tt=$m;Ut();var Xm=(0,bs.observer)(function({model:t}){let o=(0,hs.getSession)(t),{views:n,hovered:r}=o;if(Pt(r)&&n.some(i=>i.type==="ProteinView")){let{assemblyNames:i}=t,{coord:s,refName:l}=r.hoverPosition;return fs.default.createElement(Tt,{model:t,start:s-1,end:s,refName:l,assemblyName:i[0]})}return null}),ys=Xm;var ks=p(x()),on=p(te()),Cs=p(_());tn();Ut();ko();var Qm=(0,Cs.observer)(function({model:t}){let o=(0,on.getSession)(t),{hovered:n}=o,{assemblyNames:r,id:i}=t;if(!r[0])return null;let l=Gt.get(i);if(!l||!Pt(n))return null;let{coord:a}=n.hoverPosition,u=new on.SimpleFeature(l.feature),m=oo(u),{g2p:d}=m,c=d[a-1];return c===void 0?null:ks.default.createElement(Tt,{model:t,start:c,end:c+1,refName:l.uniprotId,assemblyName:l.uniprotId})}),Ms=Qm;var Is=p(x()),Fs=p(te()),Ls=p(_());tn();Ut();var ec=(0,Ls.observer)(function({model:t}){let o=(0,Fs.getSession)(t),{hovered:n}=o,{assemblyNames:r,id:i}=t;if(!Pt(n))return null;let{coord:s,refName:l}=n.hoverPosition;if(Gt.getByUniprotId(l,o)?.connectedViewId!==i)return null;let u=r[0];if(!u)return null;let m=Gt.getGenomeHighlightForProteinPosition(l,s-1,o);return m?Is.default.createElement(Tt,{model:t,start:m.start,end:m.end,refName:m.refName,assemblyName:u}):null}),Es=ec;var fr=p(x()),hr=p(_());var nn=p(x()),qs=p(te()),Ds=p(_());var tc=(0,Ds.observer)(function({model:t,field:o}){let n=(0,qs.getSession)(t),{assemblyManager:r}=n,{assemblyNames:i}=t,s=Zo(n),l=i[0];return(l?r.get(l):void 0)&&l?nn.default.createElement(nn.default.Fragment,null,s?.structures.flatMap((u,m)=>u[o].map((d,c)=>nn.default.createElement(Tt,{key:`${d.refName}-${d.start}-${d.end}-${m}-${c}`,start:d.start,end:d.end,refName:d.refName,assemblyName:l,model:t})))):null}),gr=tc;var Ns=(0,hr.observer)(function({model:t}){return fr.default.createElement(gr,{model:t,field:"clickGenomeHighlights"})}),Vs=(0,hr.observer)(function({model:t}){return fr.default.createElement(gr,{model:t,field:"hoverGenomeHighlights"})});var Js=p(x()),Ks=p(te()),ro=p(to()),Ys=p(_());function oc(e){return e.replace(/[-.]/g,"")}function Bs(e,t){return e&&t?[...e].find(([,o])=>oc(o)===t)?.[0]:void 0}ce();var sc=(0,Ys.observer)(function({model:t}){let o=(0,Ks.getSession)(t),{views:n}=o,r=Zo(o),i=r?.connectedMsaViewId,s=i?n.find(l=>l.id===i):void 0;return(0,Js.useEffect)(()=>{if(!r||!s)return;let l=[],a;if(l.push((0,ro.autorun)(()=>{let u=r.primaryStructure?.structureSequences?.[0];a=Bs(s.rowMap,u===void 0?void 0:oe(u))})),s.setMousePos){let{setMousePos:u}=s;l.push((0,ro.autorun)(()=>{let m=r.primaryStructure;if(m){let d=m.structureSeqHoverPos,c=d!==void 0&&a!==void 0&&s.seqPosToVisibleCol?s.seqPosToVisibleCol(a,d):d;u(c)}}))}return l.push((0,ro.autorun)(()=>{let u=s.mouseCol,m=r.primaryStructure;if(m&&!(0,ro.untracked)(()=>!!m.alignmentHoverRange)){let c=u!==void 0&&a!==void 0&&s.visibleColToSeqPos?s.visibleColToSeqPos(a,u):u;m.setHoveredPosition(c===void 0?void 0:{structureSeqPos:c})}})),()=>{l.forEach(u=>{u()})}},[r,s]),null}),$s=sc;var ac=(0,Zs.observer)(function({model:t}){return ct.default.createElement(ct.default.Fragment,null,ct.default.createElement(Ns,{model:t}),ct.default.createElement(Vs,{model:t}),ct.default.createElement(Es,{model:t}),ct.default.createElement(Ms,{model:t}),ct.default.createElement(ys,{model:t}),ct.default.createElement($s,{model:t}))}),Xs=ac;function yr(e){e.addToExtensionPoint("LinearGenomeView-TracksContainerComponent",(t,{model:o})=>[...t,Qs.default.createElement(Xs,{key:"highlight_protein_viewer_protein3d",model:o})])}var ca=p(sn());var oa=p(io());var lc=(0,oa.ConfigurationSchema)("AlphaFoldConfidenceAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}}},{explicitlyTyped:!0}),na=lc;function wr(e){e.addAdapterType(()=>new ca.default({name:"AlphaFoldConfidenceAdapter",displayName:"AlphaFoldConfidence adapter",configSchema:na,getAdapterClass:()=>Promise.resolve().then(()=>(ma(),ua)).then(t=>t.default)}))}var Sa=p(sn());var da=p(io());var pc=(0,da.ConfigurationSchema)("AlphaMissensePathogenicityAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}}},{explicitlyTyped:!0}),ga=pc;function xr(e){e.addAdapterType(()=>new Sa.default({name:"AlphaMissensePathogenicityAdapter",displayName:"AlphaMissensePathogenicity adapter",configSchema:ga,getAdapterClass:()=>Promise.resolve().then(()=>(xa(),wa)).then(t=>t.default)}))}var Jn=p(te());Ct();var Aa=p(Mt(),1),ka=(0,ke.createSvgIcon)((0,Aa.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add");var he=p(x()),bp=p(Oe()),Rn=p(te()),vo=p(I());var J=p(x()),zn=p(Oe()),Dt=p(I()),_l=p(_()),Rl=p(tt());var Le=p(x()),Io=p(I());var so=p(x()),qa=p(I());var zt=p(x()),Fa=p(te()),La=p(I()),Ea=p(tt());var Sr=p(x()),dn=p(I()),Ia=p(tt()),uc=(0,Ia.makeStyles)()({block:{display:"block"}});function vr({checked:e,disabled:t,label:o,onChange:n}){let{classes:r}=uc();return Sr.default.createElement(dn.FormControlLabel,{disabled:t,className:r.block,control:Sr.default.createElement(dn.Checkbox,{checked:e,onChange:n}),label:o})}ce();var mc=(0,Ea.makeStyles)()({textAreaFont:{fontFamily:"Courier New",whiteSpace:"pre"}});function Tr({structureName:e,structureSequence:t,isoformSequences:o}){let{classes:n}=mc(),[r,i]=(0,zt.useState)(!1),s=Object.fromEntries(Object.entries(o).map(([m,d])=>[m,{...d,seq:oe(d.seq)}])),l=Object.entries(s).find(([m,d])=>t===d.seq),a=`${e} (structure residues)`,u=(0,Fa.max)([a.length,...Object.entries(s).map(([m,d])=>Ae(d.feature).length)]);return zt.default.createElement(zt.default.Fragment,null,zt.default.createElement(vr,{onChange:m=>{i(m.target.checked)},label:"Show in FASTA format?",checked:r}),zt.default.createElement(La.TextField,{variant:"outlined",multiline:!0,minRows:5,maxRows:10,fullWidth:!0,value:r?[`>${a}
15
+ ${t}`,...Object.values(s).map(({feature:m,seq:d})=>`>${Ae(m)}
16
16
  ${d}`)].join(`
17
- `):[`${a.padEnd(u)}${l?"*":" "} ${t}`,l?`${Se(l[1].feature).padEnd(u)}* ${l[1].seq}`:void 0,...Object.entries(s).filter(([m])=>m!==l?.[0]).map(([m,d])=>`${Se(d.feature).padEnd(u)} ${d.seq}`)].filter(m=>!!m).join(`
18
- `),slotProps:{input:{readOnly:!0,classes:{input:n.textAreaFont}}}}))}function Ao({structureSequence:e,structureName:t,isoformSequences:o}){let[n,r]=(0,to.useState)(!1);return to.default.createElement("div",{style:{margin:10}},to.default.createElement(Pa.Button,{variant:"contained",color:"primary",onClick:()=>{r(!n)}},n?"Hide all isoform protein sequences":"Show all isoform protein sequences"),n?to.default.createElement(fr,{structureSequence:e,structureName:t,isoformSequences:o}):null)}var hr=p(x());St();var Aa=p(Tt(),1),ka=(0,Te.createSvgIcon)((0,Aa.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 Ca=p(L());function Pe(e){let{children:t,...o}=e;return hr.default.createElement(Ca.Link,{...o,target:"_blank",rel:"noreferrer"},t," ",hr.default.createElement(ka,{fontSize:"small"}))}pe();function ec({uniprotId:e}){return Fe.default.createElement(ko.Typography,null,"No structure found for this UniProtID in AlphaFoldDB"," ",Fe.default.createElement(Pe,{href:`https://alphafold.ebi.ac.uk/search/text/${e}`},"(search for results)"))}function br({uniprotId:e,selectedTranscript:t,structureSequence:o,isoformSequences:n,url:r}){return e?Fe.default.createElement(Fe.default.Fragment,null,Fe.default.createElement("div",null,Fe.default.createElement(ko.Typography,null,"UniProt link:"," ",Fe.default.createElement(Pe,{href:`https://www.uniprot.org/uniprotkb/${e}/entry`},e)),Fe.default.createElement(ko.Typography,null,"AlphaFoldDB link: ",Fe.default.createElement(Pe,{href:r},r))),o?Fe.default.createElement(Ao,{structureSequence:o,structureName:e,isoformSequences:n}):Fe.default.createElement(ec,{uniprotId:e})):Fe.default.createElement(ko.Typography,null,"Searching"," ",t?Se(t):"transcript"," ","for UniProt ID")}var Pt=p(x()),Qe=p(L());pe();function tc(e){let t=Qo(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 yr({recognizedIds:e,geneName:t,selectedId:o,onSelectedIdChange:n}){let[r,i]=(0,Pt.useState)(!1),s=[{value:"auto",label:"Auto (try all)"},...e.map(l=>({value:l,label:tc(l)}))];return t&&s.push({value:`gene:${t}`,label:`${t} (gene name)`}),e.length===0&&!t?null:r?Pt.default.createElement(Qe.FormControl,{size:"small"},Pt.default.createElement(Qe.InputLabel,null,"Query UniProt by"),Pt.default.createElement(Qe.Select,{value:o,label:"Query UniProt by",onChange:l=>{n(l.target.value)}},s.map(l=>Pt.default.createElement(Qe.MenuItem,{key:l.value,value:l.value},l.label)))):Pt.default.createElement(Qe.Button,{size:"small",variant:"text",onClick:()=>{i(!0)}},"Choose identifier to query...")}var Ae=p(x()),Ya=p(Ge());St();var Ma=p(Tt(),1),Ia=(0,Te.createSvgIcon)((0,Ma.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");var At=p(L());var ut=p(x()),Le=p(L());function wr({open:e,onClose:t,options:o}){return ut.default.createElement(Le.Dialog,{open:e,onClose:t},ut.default.createElement(Le.DialogTitle,null,"Launch options"),ut.default.createElement(Le.DialogContent,null,ut.default.createElement(Le.MenuList,null,o.map(n=>ut.default.createElement(Le.MenuItem,{key:n.key,onClick:n.onClick},ut.default.createElement("div",null,ut.default.createElement(Le.Typography,{variant:"body1"},n.title),ut.default.createElement(Le.Typography,{variant:"body2",color:"text.secondary"},n.description)))))))}var Ar=p(x()),Ba=p(L());var k=p(x());St();var Fa=p(Tt(),1),pn=(0,Te.createSvgIcon)((0,Fa.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 T=p(L());Sr();var Tr={NEEDLEMAN_WUNSCH:"needleman_wunsch",SMITH_WATERMAN:"smith_waterman"},Co="smith_waterman",ic=["needleman_wunsch","smith_waterman"];function Na(e){return ic.find(t=>t===e)??Co}var Va={needleman_wunsch:"Needleman-Wunsch",smith_waterman:"Smith-Waterman"};function Pr({value:e,onChange:t,onManualAlignment:o}){let[n,r]=(0,k.useState)(!1),[i,s]=(0,k.useState)(0),[l,a]=(0,k.useState)(e),[u,m]=(0,k.useState)(""),[d,c]=(0,k.useState)(),w=()=>{a(e),m(""),c(void 0),s(0),r(!0)},y=()=>{if(i===0)t(l);else if(i===1&&u.trim()&&o)try{let h=un(u.trim());o(h)}catch(h){c(`Failed to parse alignment: ${h}`);return}r(!1)},f=()=>{a(e),m(""),c(void 0),r(!1)};return k.default.createElement(k.default.Fragment,null,k.default.createElement(T.IconButton,{onClick:w,size:"small",title:"Alignment settings"},k.default.createElement(pn,null)),k.default.createElement(T.Dialog,{open:n,onClose:f,maxWidth:"sm",fullWidth:!0},k.default.createElement(T.DialogTitle,null,"Alignment Settings"),k.default.createElement(T.DialogContent,null,k.default.createElement(T.Tabs,{value:i,onChange:(h,b)=>{s(b)},sx:{mb:2}},k.default.createElement(T.Tab,{label:"Automatic"}),k.default.createElement(T.Tab,{label:"Manual",disabled:!o})),i===0?k.default.createElement(k.default.Fragment,null,k.default.createElement(T.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Choose the algorithm for aligning transcript sequences to protein structures."),k.default.createElement(T.FormControl,{component:"fieldset"},k.default.createElement(T.FormLabel,{component:"legend"},"Algorithm"),k.default.createElement(T.RadioGroup,{value:l,onChange:h=>{a(h.target.value)}},k.default.createElement(T.FormControlLabel,{value:Tr.SMITH_WATERMAN,control:k.default.createElement(T.Radio,null),label:"Smith-Waterman (local alignment)"}),k.default.createElement(T.Typography,{variant:"caption",color:"text.secondary",sx:{ml:4,mt:-1,mb:1}},"Finds best matching region. Recommended for most use cases."),k.default.createElement(T.FormControlLabel,{value:Tr.NEEDLEMAN_WUNSCH,control:k.default.createElement(T.Radio,null),label:"Needleman-Wunsch (global alignment)"}),k.default.createElement(T.Typography,{variant:"caption",color:"text.secondary",sx:{ml:4,mt:-1,mb:1}},"End-to-end alignment. Use when sequences should align completely.")))):k.default.createElement(k.default.Fragment,null,k.default.createElement(T.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."),k.default.createElement(T.TextField,{multiline:!0,rows:10,fullWidth:!0,placeholder:`Example:
17
+ `):[`${a.padEnd(u)}${l?"*":" "} ${t}`,l?`${Ae(l[1].feature).padEnd(u)}* ${l[1].seq}`:void 0,...Object.entries(s).filter(([m])=>m!==l?.[0]).map(([m,d])=>`${Ae(d.feature).padEnd(u)} ${d.seq}`)].filter(m=>!!m).join(`
18
+ `),slotProps:{input:{readOnly:!0,classes:{input:n.textAreaFont}}}}))}function Mo({structureSequence:e,structureName:t,isoformSequences:o}){let[n,r]=(0,so.useState)(!1);return so.default.createElement("div",{style:{margin:10}},so.default.createElement(qa.Button,{variant:"contained",color:"primary",onClick:()=>{r(!n)}},n?"Hide all isoform protein sequences":"Show all isoform protein sequences"),n?so.default.createElement(Tr,{structureSequence:e,structureName:t,isoformSequences:o}):null)}var Pr=p(x());Ct();var Da=p(Mt(),1),Na=(0,ke.createSvgIcon)((0,Da.jsx)("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3z"}),"OpenInNew");var Va=p(I());function Ce(e){let{children:t,...o}=e;return Pr.default.createElement(Va.Link,{...o,target:"_blank",rel:"noreferrer"},t," ",Pr.default.createElement(Na,{fontSize:"small"}))}ce();function cc({uniprotId:e}){return Le.default.createElement(Io.Typography,null,"No structure found for this UniProtID in AlphaFoldDB"," ",Le.default.createElement(Ce,{href:`https://alphafold.ebi.ac.uk/search/text/${e}`},"(search for results)"))}function Ar({uniprotId:e,selectedTranscript:t,structureSequence:o,isoformSequences:n,url:r}){return e?Le.default.createElement(Le.default.Fragment,null,Le.default.createElement("div",null,Le.default.createElement(Io.Typography,null,"UniProt link:"," ",Le.default.createElement(Ce,{href:`https://www.uniprot.org/uniprotkb/${e}/entry`},e)),Le.default.createElement(Io.Typography,null,"AlphaFoldDB link: ",Le.default.createElement(Ce,{href:r},r))),o?Le.default.createElement(Mo,{structureSequence:o,structureName:e,isoformSequences:n}):Le.default.createElement(cc,{uniprotId:e})):Le.default.createElement(Io.Typography,null,"Searching"," ",t?Ae(t):"transcript"," ","for UniProt ID")}var It=p(x()),nt=p(I());ce();function dc(e){let t=rn(e);return t==="refseq"?e.startsWith("NM_")||e.startsWith("XM_")?`${e} (RefSeq mRNA)`:e.startsWith("NR_")||e.startsWith("XR_")?`${e} (RefSeq ncRNA)`:e.startsWith("NP_")||e.startsWith("XP_")?`${e} (RefSeq protein)`:`${e} (RefSeq)`:t==="ensembl"?e.includes("G")?`${e} (Ensembl gene)`:e.includes("T")?`${e} (Ensembl transcript)`:e.includes("P")?`${e} (Ensembl protein)`:`${e} (Ensembl)`:t==="hgnc"?`${e} (HGNC)`:t==="ccds"?`${e} (CCDS)`:e}function kr({recognizedIds:e,geneName:t,selectedId:o,onSelectedIdChange:n}){let[r,i]=(0,It.useState)(!1),s=[{value:"auto",label:"Auto (try all)"},...e.map(l=>({value:l,label:dc(l)}))];return t&&s.push({value:`gene:${t}`,label:`${t} (gene name)`}),e.length===0&&!t?null:r?It.default.createElement(nt.FormControl,{size:"small"},It.default.createElement(nt.InputLabel,null,"Query UniProt by"),It.default.createElement(nt.Select,{value:o,label:"Query UniProt by",onChange:l=>{n(l.target.value)}},s.map(l=>It.default.createElement(nt.MenuItem,{key:l.value,value:l.value},l.label)))):It.default.createElement(nt.Button,{size:"small",variant:"text",onClick:()=>{i(!0)}},"Choose identifier to query...")}var re=p(x()),al=p(Oe());Ct();var Ba=p(Mt(),1),Ha=(0,ke.createSvgIcon)((0,Ba.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");Ct();var Ua=p(Mt(),1),ao=(0,ke.createSvgIcon)((0,Ua.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings");var je=p(I());var dt=p(x()),Ee=p(I());function Cr({open:e,onClose:t,options:o}){return dt.default.createElement(Ee.Dialog,{open:e,onClose:t},dt.default.createElement(Ee.DialogTitle,null,"Launch options"),dt.default.createElement(Ee.DialogContent,null,dt.default.createElement(Ee.MenuList,null,o.map(n=>dt.default.createElement(Ee.MenuItem,{key:n.key,onClick:n.onClick},dt.default.createElement("div",null,dt.default.createElement(Ee.Typography,{variant:"body1"},n.title),dt.default.createElement(Ee.Typography,{variant:"body2",color:"text.secondary"},n.description)))))))}var ze=p(x()),de=p(I());fn();function Mr({open:e,onClose:t}){let[o,n]=(0,ze.useState)(()=>lo());return ze.default.createElement(de.Dialog,{open:e,onClose:()=>{t()}},ze.default.createElement(de.DialogTitle,null,"Launch settings"),ze.default.createElement(de.DialogContent,null,ze.default.createElement(de.FormGroup,null,ze.default.createElement(de.FormControlLabel,{control:ze.default.createElement(de.Checkbox,{checked:o}),label:"Open protein view side-by-side with the genome view",onChange:(r,i)=>{n(i),Oa(i)}})),ze.default.createElement(de.Typography,{variant:"body2",color:"text.secondary"},"When enabled, launching a protein view places it to the right of the connected genome view in a split layout instead of stacking it below.")),ze.default.createElement(de.DialogActions,null,ze.default.createElement(de.Button,{variant:"contained",onClick:()=>{t()}},"Close")))}var Dr=p(x()),Ka=p(I());var C=p(x());var P=p(I());Lr();var Er={NEEDLEMAN_WUNSCH:"needleman_wunsch",SMITH_WATERMAN:"smith_waterman"},Fo="smith_waterman",yc=["needleman_wunsch","smith_waterman"];function Ra(e){return yc.find(t=>t===e)??Fo}var Ja={needleman_wunsch:"Needleman-Wunsch",smith_waterman:"Smith-Waterman"};function qr({value:e,onChange:t,onManualAlignment:o}){let[n,r]=(0,C.useState)(!1),[i,s]=(0,C.useState)(0),[l,a]=(0,C.useState)(e),[u,m]=(0,C.useState)(""),[d,c]=(0,C.useState)(),y=()=>{a(e),m(""),c(void 0),s(0),r(!0)},w=()=>{if(i===0)t(l);else if(i===1&&u.trim()&&o)try{let b=hn(u.trim());o(b)}catch(b){c(`Failed to parse alignment: ${b}`);return}r(!1)},h=()=>{a(e),m(""),c(void 0),r(!1)};return C.default.createElement(C.default.Fragment,null,C.default.createElement(P.IconButton,{onClick:y,size:"small",title:"Alignment settings"},C.default.createElement(ao,null)),C.default.createElement(P.Dialog,{open:n,onClose:h,maxWidth:"sm",fullWidth:!0},C.default.createElement(P.DialogTitle,null,"Alignment Settings"),C.default.createElement(P.DialogContent,null,C.default.createElement(P.Tabs,{value:i,onChange:(b,f)=>{s(f)},sx:{mb:2}},C.default.createElement(P.Tab,{label:"Automatic"}),C.default.createElement(P.Tab,{label:"Manual",disabled:!o})),i===0?C.default.createElement(C.default.Fragment,null,C.default.createElement(P.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Choose the algorithm for aligning transcript sequences to protein structures."),C.default.createElement(P.FormControl,{component:"fieldset"},C.default.createElement(P.FormLabel,{component:"legend"},"Algorithm"),C.default.createElement(P.RadioGroup,{value:l,onChange:b=>{a(b.target.value)}},C.default.createElement(P.FormControlLabel,{value:Er.SMITH_WATERMAN,control:C.default.createElement(P.Radio,null),label:"Smith-Waterman (local alignment)"}),C.default.createElement(P.Typography,{variant:"caption",color:"text.secondary",sx:{ml:4,mt:-1,mb:1}},"Finds best matching region. Recommended for most use cases."),C.default.createElement(P.FormControlLabel,{value:Er.NEEDLEMAN_WUNSCH,control:C.default.createElement(P.Radio,null),label:"Needleman-Wunsch (global alignment)"}),C.default.createElement(P.Typography,{variant:"caption",color:"text.secondary",sx:{ml:4,mt:-1,mb:1}},"End-to-end alignment. Use when sequences should align completely.")))):C.default.createElement(C.default.Fragment,null,C.default.createElement(P.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Paste a pre-computed alignment in Clustal format. The first sequence should be the transcript and the second should be the structure."),C.default.createElement(P.TextField,{multiline:!0,rows:10,fullWidth:!0,placeholder:`Example:
19
19
  a MKAAYLSMFGKEDHKPFGD
20
20
  |||||||||||||||||||
21
- b MKAAYLSMFGKEDHKPFGD`,value:u,onChange:h=>{m(h.target.value),c(void 0)},sx:{fontFamily:"monospace",fontSize:12}}),d?k.default.createElement(T.Typography,{color:"error",variant:"body2",sx:{mt:1}},d):null)),k.default.createElement(T.DialogActions,null,k.default.createElement(T.Button,{onClick:f},"Cancel"),k.default.createElement(T.Button,{onClick:y,variant:"contained",color:"primary",disabled:i===1&&!u.trim()},i===0?"Save":"Apply Alignment"))))}function Mo({alignmentAlgorithm:e,onAlignmentAlgorithmChange:t}){return Ar.default.createElement(Ba.Typography,{variant:"body2",sx:{mr:2,display:"flex",alignItems:"center"}},"Transcript and structure sequences differ, will run"," ",Va[e]??e," ","alignment",Ar.default.createElement(Pr,{value:e,onChange:t}))}async function mn(e,t,o){try{await e(),t?.()}catch(n){console.error(n),o?.(n)}}function Ha({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 Mr({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,Ae.useState)(!1),[h,b]=(0,Ae.useState)(),g=!c&&!!t&&!!o&&!!n,S=Ha({uniprotId:t,userSelectedProteinSequence:o,selectedTranscript:n,isLoading:c,error:w}),K=()=>{f(!1)},C={session:a,view:l,feature:s,selectedTranscript:n,uniprotId:t},$={...C,url:r,userProvidedTranscriptSequence:o?.seq,alignmentAlgorithm:u},H=O=>()=>{K(),mn(O,e,b)},ve=H(()=>{Gt($)}),E=H(async()=>{await gn({...C,confidenceUrl:i})}),Ce=H(()=>{Fo(C)}),ne=H(()=>{$a($)}),ue=[{key:"3d",title:"Launch 3D protein structure view",description:"View protein structure with genome-to-structure coordinate mapping",onClick:ve},{key:"1d",title:"Launch 1D protein annotation view",description:"View protein features and annotations as a linear track",onClick:E},...fn()?[{key:"msa",title:"Launch MSA view",description:"View AlphaFold a3m multiple sequence alignment",onClick:Ce},{key:"3d-msa",title:"Launch 3D structure + MSA view",description:"Launch both views with AlphaFold a3m MSA",onClick:ne}]:[]];return Ae.default.createElement(Ae.default.Fragment,null,h?Ae.default.createElement(Ya.ErrorMessage,{error:h}):null,d===!1?Ae.default.createElement(Mo,{alignmentAlgorithm:u,onAlignmentAlgorithmChange:m}):null,Ae.default.createElement(At.Button,{variant:"contained",color:"secondary",size:"small",onClick:()=>{e()}},"Cancel"),!g&&S.length>0?Ae.default.createElement(At.Typography,{variant:"body2",color:"error",sx:{mr:2}},S.join(". ")):null,Ae.default.createElement(At.ButtonGroup,{variant:"contained",color:"primary",size:"small"},Ae.default.createElement(At.Button,{disabled:!g,onClick:ve},"Launch"),Ae.default.createElement(At.Button,{disabled:!g,onClick:()=>{f(!0)},"aria-label":"More launch options"},Ae.default.createElement(Ia,null))),Ae.default.createElement(wr,{open:y,onClose:K,options:ue}))}var no=p(x()),Ir=p(L());function Fr({isLoading:e,uniprotId:t,url:o,hasProteinSequence:n,sequenceSearchType:r}){return e?null:!t&&n?no.default.createElement(Ir.Typography,{color:"warning.main"},"No AlphaFold structure found for this sequence (searched by"," ",r==="md5"?"MD5 checksum":"full sequence",")"):t?no.default.createElement(Ir.Typography,{color:"success.main"},"Found AlphaFold structure: ",t,o?no.default.createElement(no.default.Fragment,null," ","-"," ",no.default.createElement("a",{href:o,target:"_blank",rel:"noreferrer"},o)):null):null}var Lo=p(x()),ro=p(L());pe();function Ot({val:e,setVal:t,isoforms:o,isoformSequences:n,structureSequence:r,feature:i,disabled:s}){let l=Xt(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 Lo.default.createElement(ro.TextField,{value:e??"",onChange:c=>{t(c.target.value)},label:"Choose transcript isoform",select:!0,disabled:s},a.toSorted(d).map(c=>Lo.default.createElement(ro.MenuItem,{value:c.id(),key:c.id()},l," - ",Se(c)," (",n[c.id()].seq.length,"aa) (matches structure residues)")),u.toSorted(d).map(c=>Lo.default.createElement(ro.MenuItem,{value:c.id(),key:c.id()},l," - ",Se(c)," (",n[c.id()].seq.length,"aa)")),m.map(c=>Lo.default.createElement(ro.MenuItem,{value:c.id(),key:c.id(),disabled:!0},l," - ",Se(c)," (no data)")))}var B=p(x()),z=p(L());function Lr({lookupMode:e,onLookupModeChange:t,manualUniprotId:o,onManualUniprotIdChange:n,featureUniprotId:r,hasProteinSequence:i,sequenceSearchType:s,onSequenceSearchTypeChange:l,endContent:a}){return B.default.createElement(B.default.Fragment,null,B.default.createElement("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap"}},B.default.createElement(z.FormControl,{component:"fieldset"},B.default.createElement(z.RadioGroup,{row:!0,value:e,onChange:u=>{t(u.target.value)}},r&&B.default.createElement(z.FormControlLabel,{value:"feature",control:B.default.createElement(z.Radio,null),label:`From feature (${r})`}),B.default.createElement(z.FormControlLabel,{value:"auto",control:B.default.createElement(z.Radio,null),label:"Auto-detect using UniProt ID mapping API"}),B.default.createElement(z.FormControlLabel,{value:"manual",control:B.default.createElement(z.Radio,null),label:"Enter manually"}),i&&B.default.createElement(z.FormControlLabel,{value:"sequence",control:B.default.createElement(z.Radio,null),label:"Search sequence against AlphaFoldDB API"}))),a),e==="manual"&&B.default.createElement("div",null,B.default.createElement(z.TextField,{label:"UniProt ID",variant:"outlined",placeholder:"e.g. P68871",size:"small",value:o,onChange:u=>{n(u.target.value)}})),e==="sequence"&&s&&l&&B.default.createElement("div",null,B.default.createElement(z.FormControl,{component:"fieldset"},B.default.createElement(z.RadioGroup,{row:!0,value:s,onChange:u=>{l(u.target.value)}},B.default.createElement(z.FormControlLabel,{value:"md5",control:B.default.createElement(z.Radio,null),label:"Exact match"}),B.default.createElement(z.FormControlLabel,{value:"sequence",control:B.default.createElement(z.Radio,null),label:"Fuzzy match"}))),B.default.createElement(z.Typography,{variant:"body2",color:"text.secondary"},"May not find the canonical UniProt entry.")),e==="manual"&&!o&&B.default.createElement(z.Typography,{variant:"body2",color:"text.secondary"},"Search"," ",B.default.createElement(Pe,{href:"https://www.uniprot.org/"},"UniProt")," or ",B.default.createElement(Pe,{href:"https://alphafold.ebi.ac.uk/"},"AlphaFoldDB")))}var _=p(x()),q=p(L()),Za=p(Ze());var dc=(0,Za.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 Er({entries:e,selectedAccession:t,onSelect:o}){let{classes:n,cx:r}=dc();return e.length===0?null:_.default.createElement("div",null,_.default.createElement(q.Typography,{variant:"body2",sx:{mb:1}},"Found ",e.length," UniProt entries. Select one:"),_.default.createElement(q.TableContainer,{component:q.Paper,className:n.tableContainer},_.default.createElement(q.Table,{size:"small",stickyHeader:!0},_.default.createElement(q.TableHead,null,_.default.createElement(q.TableRow,null,_.default.createElement(q.TableCell,{className:n.headerCell,padding:"checkbox"}),_.default.createElement(q.TableCell,{className:n.headerCell},"Accession"),_.default.createElement(q.TableCell,{className:n.headerCell},"Gene"),_.default.createElement(q.TableCell,{className:n.headerCell},"Organism"),_.default.createElement(q.TableCell,{className:n.headerCell},"Protein"),_.default.createElement(q.TableCell,{className:n.headerCell},"Status"))),_.default.createElement(q.TableBody,null,e.map(i=>_.default.createElement(q.TableRow,{key:i.accession,onClick:()=>{o(i.accession)},className:r(n.clickableRow,t===i.accession&&n.selectedRow)},_.default.createElement(q.TableCell,{padding:"checkbox"},_.default.createElement(q.Radio,{checked:t===i.accession,size:"small"})),_.default.createElement(q.TableCell,null,_.default.createElement(Pe,{href:`https://www.uniprot.org/uniprotkb/${i.accession}`},i.accession)),_.default.createElement(q.TableCell,null,i.geneName??"-"),_.default.createElement(q.TableCell,null,i.organismName??"-"),_.default.createElement(q.TableCell,null,i.proteinName?i.proteinName.length>40?`${i.proteinName.slice(0,40)}...`:i.proteinName:"-"),_.default.createElement(q.TableCell,null,_.default.createElement(q.Chip,{label:i.isReviewed?"Reviewed":"Unreviewed",size:"small",className:i.isReviewed?n.reviewedChip:n.unreviewedChip}))))))))}var go=p(x());uo();var Mt={revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1};async function Mn({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 In({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 Mn({plugin:n,trajectory:i,options:o})}async function Fn({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 Mn({plugin:r,trajectory:s,options:n})}function Ln(e){return e.obj?.data.sequence.sequences.map(t=>Array.from(t.sequence.label.toArray()).join(""))}Nt();async function Tl(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 Oc(e){let t=e.lastIndexOf("."),o=t>=0?e.slice(t+1).toLowerCase():"";return o==="cif"||o==="mmcif"||o==="bcif"?"mmcif":"pdb"}async function zc({file:e,url:t}){return Tl(async o=>{let{model:n}=e?await In({data:await e.text(),plugin:o,format:Oc(e.name)}):await Fn({url:t,plugin:o});return Ln(n)})}function Do({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}=et(o,async()=>{let s=await zc({file:e,url:t});if(!s)throw new Error("no sequences detected in file");return s},{...Mt,keepPreviousData:!0});return{error:r,isLoading:i,sequences:n}}We();function Yr({uniprotId:e}){let t=e?oo(e):void 0,o=e?Ra(e):void 0,{sequences:n,isLoading:r,error:i}=Do({url:t});return{isLoading:r,error:i,url:t,confidenceUrl:o,structureSequence:n?.[0]}}var kl=p(x());uo();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 mo(e,t){return(await jc(e,t)).json()}function Pl(e){return new Promise(t=>setTimeout(t,e))}function It(e,t){let o=(e&65535)+(t&65535);return(e>>16)+(t>>16)+(o>>16)<<16|o&65535}function Wc(e,t){return e<<t|e>>>32-t}function En(e,t,o,n,r,i){return It(Wc(It(It(t,e),It(n,i)),r),o)}function he(e,t,o,n,r,i,s){return En(t&o|~t&n,e,t,r,i,s)}function be(e,t,o,n,r,i,s){return En(t&n|o&~n,e,t,r,i,s)}function ye(e,t,o,n,r,i,s){return En(t^o^n,e,t,r,i,s)}function we(e,t,o,n,r,i,s){return En(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=he(o,n,r,i,e[s]??0,7,-680876936),i=he(i,o,n,r,e[s+1]??0,12,-389564586),r=he(r,i,o,n,e[s+2]??0,17,606105819),n=he(n,r,i,o,e[s+3]??0,22,-1044525330),o=he(o,n,r,i,e[s+4]??0,7,-176418897),i=he(i,o,n,r,e[s+5]??0,12,1200080426),r=he(r,i,o,n,e[s+6]??0,17,-1473231341),n=he(n,r,i,o,e[s+7]??0,22,-45705983),o=he(o,n,r,i,e[s+8]??0,7,1770035416),i=he(i,o,n,r,e[s+9]??0,12,-1958414417),r=he(r,i,o,n,e[s+10]??0,17,-42063),n=he(n,r,i,o,e[s+11]??0,22,-1990404162),o=he(o,n,r,i,e[s+12]??0,7,1804603682),i=he(i,o,n,r,e[s+13]??0,12,-40341101),r=he(r,i,o,n,e[s+14]??0,17,-1502002290),n=he(n,r,i,o,e[s+15]??0,22,1236535329),o=be(o,n,r,i,e[s+1]??0,5,-165796510),i=be(i,o,n,r,e[s+6]??0,9,-1069501632),r=be(r,i,o,n,e[s+11]??0,14,643717713),n=be(n,r,i,o,e[s]??0,20,-373897302),o=be(o,n,r,i,e[s+5]??0,5,-701558691),i=be(i,o,n,r,e[s+10]??0,9,38016083),r=be(r,i,o,n,e[s+15]??0,14,-660478335),n=be(n,r,i,o,e[s+4]??0,20,-405537848),o=be(o,n,r,i,e[s+9]??0,5,568446438),i=be(i,o,n,r,e[s+14]??0,9,-1019803690),r=be(r,i,o,n,e[s+3]??0,14,-187363961),n=be(n,r,i,o,e[s+8]??0,20,1163531501),o=be(o,n,r,i,e[s+13]??0,5,-1444681467),i=be(i,o,n,r,e[s+2]??0,9,-51403784),r=be(r,i,o,n,e[s+7]??0,14,1735328473),n=be(n,r,i,o,e[s+12]??0,20,-1926607734),o=ye(o,n,r,i,e[s+5]??0,4,-378558),i=ye(i,o,n,r,e[s+8]??0,11,-2022574463),r=ye(r,i,o,n,e[s+11]??0,16,1839030562),n=ye(n,r,i,o,e[s+14]??0,23,-35309556),o=ye(o,n,r,i,e[s+1]??0,4,-1530992060),i=ye(i,o,n,r,e[s+4]??0,11,1272893353),r=ye(r,i,o,n,e[s+7]??0,16,-155497632),n=ye(n,r,i,o,e[s+10]??0,23,-1094730640),o=ye(o,n,r,i,e[s+13]??0,4,681279174),i=ye(i,o,n,r,e[s]??0,11,-358537222),r=ye(r,i,o,n,e[s+3]??0,16,-722521979),n=ye(n,r,i,o,e[s+6]??0,23,76029189),o=ye(o,n,r,i,e[s+9]??0,4,-640364487),i=ye(i,o,n,r,e[s+12]??0,11,-421815835),r=ye(r,i,o,n,e[s+15]??0,16,530742520),n=ye(n,r,i,o,e[s+2]??0,23,-995338651),o=we(o,n,r,i,e[s]??0,6,-198630844),i=we(i,o,n,r,e[s+7]??0,10,1126891415),r=we(r,i,o,n,e[s+14]??0,15,-1416354905),n=we(n,r,i,o,e[s+5]??0,21,-57434055),o=we(o,n,r,i,e[s+12]??0,6,1700485571),i=we(i,o,n,r,e[s+3]??0,10,-1894986606),r=we(r,i,o,n,e[s+10]??0,15,-1051523),n=we(n,r,i,o,e[s+1]??0,21,-2054922799),o=we(o,n,r,i,e[s+8]??0,6,1873313359),i=we(i,o,n,r,e[s+15]??0,10,-30611744),r=we(r,i,o,n,e[s+6]??0,15,-1560198380),n=we(n,r,i,o,e[s+13]??0,21,1309151649),o=we(o,n,r,i,e[s+4]??0,6,-145523070),i=we(i,o,n,r,e[s+11]??0,10,-1120210379),r=we(r,i,o,n,e[s+2]??0,15,718787259),n=we(n,r,i,o,e[s+9]??0,21,-343485551),o=It(o,l),n=It(n,a),r=It(r,u),i=It(i,m)}return[o,n,r,i]}function Rc(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 Jc(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 Al(e){return Rc(_c(Jc(e),e.length*8))}pe();function Zr({sequence:e,searchType:t,enabled:o=!0}){let n=(0,kl.useMemo)(()=>{if(!e)return;let l=te(e.toUpperCase());return t==="md5"?Al(l):l},[e,t]),{data:r,error:i,isLoading:s}=et(o&&n?`https://alphafold.ebi.ac.uk/api/sequence/summary?id=${encodeURIComponent(n)}&type=${t}`:null,mo,{...Mt,keepPreviousData:!0});return{isLoading:s,result:r,uniprotId:r?.uniprotAccession,cifUrl:r?.cifUrl,plddtDocUrl:r?.plddtDocUrl,structureSequence:r?.sequence,error:i}}var qn=p(x());function Xr(e,t=300){let[o,n]=(0,qn.useState)(e);return(0,qn.useEffect)(()=>{let r=setTimeout(()=>{n(e)},t);return()=>{clearTimeout(r)}},[e,t]),o}var Il=p(ee());uo();var Ml=p(eo()),co=p(ee());function Kc(e,t){return e.map(o=>t.slice(o.start,o.end)).join("")}function $c({cds:e,sequence:t,codonTable:o}){let n=Kc(e,t),r="";for(let i=0;i<n.length;i+=3)r+=o[n.slice(i,i+3)]??"&";return r}function Yc(e,t){return e.map(o=>({...o,start:t-o.end,end:t-o.start})).toSorted((o,n)=>o.start-n.start)}function Cl(e){return`${e.start}-${e.end}`}function Zc(e){return e.filter((t,o,n)=>!o||Cl(t)!==Cl(n[o-1]))}function Xc({feature:e,seq:t}){let o=e.get("start"),n=e.get("strand"),r=e.get("subfeatures")??[],i=Zc(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 $c({cds:n===-1?Yc(i,t.length):i,sequence:n===-1?(0,co.revcom)(t):t,codonTable:(0,co.generateCodonTable)(co.defaultCodonTable)})}async function Dn({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,Ml.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?Xc({seq:c,feature:e}):void 0}pe();function Qr({feature:e,view:t}){let{data:o,error:n,isLoading:r}=et(["isoform-sequences",e.id(),t?.assemblyNames?.[0]],async()=>{let i=Ht(e),s=[],a=(await Promise.all(i.map(async u=>{try{let m=await Dn({session:(0,Il.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)},{...Mt,keepPreviousData:!0});return{isLoading:r,isoformSequences:o,error:n}}var No=p(x());pe();function ei({options:e,isoformSequences:t,structureSequence:o,resetKey:n}){let[r,i]=(0,No.useState)(),[s,l]=(0,No.useState)(n);n!==s&&(l(n),i(void 0));let a=(0,No.useMemo)(()=>t!==void 0?Bs({options:e,isoformSequences:t,structureSequence:o})?.id():void 0,[e,o,t]);return{userSelection:r??a,setUserSelection:i}}pe();function zt({feature:e,view:t,structureSequence:o,resetKey:n}){let r=Ht(e),{isoformSequences:i,isLoading:s,error:l}=Qr({feature:e,view:t}),{userSelection:a,setUserSelection:u}=ei({options:r,isoformSequences:i,structureSequence:o,resetKey:n}),m=r.find(c=>Is(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}}uo();pe();var Qc="accession,id,gene_names,organism_name,protein_name,reviewed";function ed(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 td(e){switch(Qo(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 Ll(e,t=10){let o=`https://rest.uniprot.org/uniprotkb/search?query=${encodeURIComponent(e)}&fields=${Qc}&size=${t}`;return(await mo(o)).results.map(ed)}async function od(e){let t=td(e);if(!t)return{entries:[],error:void 0};try{return{entries:await Ll(t),error:void 0}}catch(o){return console.error(`xref search failed for ${e}:`,o),{entries:[],error:o}}}function Fl(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 El({recognizedIds:e=[],geneId:t,geneName:o,organismId:n=9606}){let r=new Set(e),i=t?Po(t):void 0;i&&xt(i)&&r.add(i);let s=await Promise.all([...r].map(od)),l=Fl(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 Ll(m,5);l=Fl([...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))}pe();function ti({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:",""):xt(n)&&(i=[n]);let l=i.some(d=>xt(d))||!!s,{data:a,error:u,isLoading:m}=et(r&&l?["uniprotSearch",n,i.join(","),s]:null,async()=>El({recognizedIds:i,geneId:t,geneName:s}),{...Mt,keepPreviousData:!0});return{entries:a??[],isLoading:m,error:u,hasValidId:l}}function Nn({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}"`}pe();function oi({feature:e,view:t}){let[o,n]=(0,go.useState)("auto"),[r,i]=(0,go.useState)(""),s=Vs(e),[l,a]=(0,go.useState)("auto"),[u,m]=(0,go.useState)("md5"),[d,c]=(0,go.useState)(),w=s.uniprotId,y=o==="auto"&&w?"feature":o,f=y==="sequence",h=y==="auto",{entries:b,isLoading:g,error:S}=ti({recognizedIds:s.recognizedIds,geneId:s.geneId,geneName:s.geneName,selectedQueryId:l,enabled:h}),K=Xr(r,400),C=b[0]?.accession,$=y==="feature"?w:h?d??C:y==="manual"?K:void 0,{isLoading:H,error:ve,url:E,confidenceUrl:Ce,structureSequence:ne}=Yr({uniprotId:f?void 0:$}),{transcripts:ue,isoformSequences:O,isLoading:me,error:Ie,selectedTranscriptId:Ve,setSelectedTranscriptId:rt,selectedTranscript:Be,selectedIsoform:fe}=zt({feature:e,view:t,structureSequence:ne,resetKey:$}),{uniprotId:it,cifUrl:er,plddtDocUrl:ht,structureSequence:st,isLoading:qt,error:bo}=Zr({sequence:fe?.seq,searchType:u,enabled:f}),$t=f?er:E,at=f?ht:Ce,ze=f?st:ne,yo=f?it:$,wo=[g&&"Looking up UniProt ID",me&&"Loading protein sequences from transcript isoforms",!f&&H&&"Fetching AlphaFold structure URL",f&&qt&&"Searching AlphaFoldDB by sequence"].filter(Dt=>!!Dt),xo=wo.length>0,tr=xo?void 0:Ie??S??ve??bo;return{lookupMode:y,setLookupMode:n,manualUniprotId:r,setManualUniprotId:i,selectedQueryId:l,setSelectedQueryId:a,sequenceSearchType:u,setSequenceSearchType:m,selectedUniprotId:d,setSelectedUniprotId:c,userSelection:Ve,setUserSelection:rt,transcriptOptions:ue,selectedTranscript:Be,isoformSequences:O,userSelectedProteinSequence:fe,uniprotEntries:b,recognizedIds:s.recognizedIds,geneName:s.geneName,featureUniprotId:w,uniprotId:yo,url:$t,confidenceUrl:at,structureSequence:ze,error:tr,loadingStatuses:wo,isSequenceSearchLoading:qt,showIdentifierSelector:h&&(s.recognizedIds.length>0||!!s.geneName),showStructureSelectors:!!O&&!!Be&&(f||!!(ze&&yo)),sequencesMatch:fe?.seq&&ze?te(fe.seq)===ze:void 0,searchDescription:Nn({selectedQueryId:l,recognizedIds:s.recognizedIds,geneName:s.geneName}),searchDescriptionOr:Nn({selectedQueryId:l,recognizedIds:s.recognizedIds,geneName:s.geneName,joinWord:"or"}),selectedTableAccession:d??C,showUniprotResults:!!O&&h&&(b.length>0||g),showNoResults:!!O&&h&&!g&&b.length===0,showSequenceSearchStatus:f,showAlphaFoldDBSearchStatus:!!ze&&!!yo&&!f,isLoading:xo}}var nd=(0,Dl.makeStyles)()({dialogContent:{width:"80em","& > *":{marginBottom:20},"& > *:last-child":{marginBottom:0}},selectorsRow:{display:"flex",flexDirection:"row",gap:20,alignItems:"flex-start"}}),rd=(0,ql.observer)(function({feature:t,session:o,view:n,handleClose:r,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}){let{classes:l}=nd(),a=oi({feature:t,view:n});return R.default.createElement(R.default.Fragment,null,R.default.createElement(Ft.DialogContent,{className:l.dialogContent},a.error?R.default.createElement(Vn.ErrorMessage,{error:a.error}):null,R.default.createElement(Lr,{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?R.default.createElement(yr,{recognizedIds:a.recognizedIds,geneName:a.geneName,selectedId:a.selectedQueryId,onSelectedIdChange:a.setSelectedQueryId}):null}),a.loadingStatuses.map(u=>R.default.createElement(Vn.LoadingEllipses,{key:u,variant:"subtitle2",message:u})),a.showUniprotResults&&R.default.createElement(R.default.Fragment,null,R.default.createElement(Ft.Typography,{variant:"body2",color:"textSecondary"},"Searched UniProt by ",a.searchDescription),R.default.createElement(Er,{entries:a.uniprotEntries,selectedAccession:a.selectedTableAccession,onSelect:a.setSelectedUniprotId}),R.default.createElement(Ft.Typography,{variant:"body2",color:"textSecondary"},"If you don't see the entry you're looking for, try a different identifier above or search"," ",R.default.createElement(Pe,{href:"https://www.uniprot.org/"},"UniProt")," ",'directly and use "Enter manually".')),a.showNoResults&&R.default.createElement(Ft.Typography,{variant:"body2",color:"textSecondary"},"No UniProt entries found for ",a.searchDescriptionOr,". Try a different identifier above, or search"," ",R.default.createElement(Pe,{href:"https://www.uniprot.org/"},"UniProt")," ",'directly and use "Enter manually" above, or use "Search sequence against AlphaFoldDB API" if available.'),a.showStructureSelectors&&R.default.createElement(R.default.Fragment,null,R.default.createElement("div",{className:l.selectorsRow},R.default.createElement(Ot,{val:a.userSelection,setVal:a.setUserSelection,structureSequence:a.structureSequence,feature:t,isoforms:a.transcriptOptions,isoformSequences:a.isoformSequences})),a.showSequenceSearchStatus&&R.default.createElement(Fr,{isLoading:a.isSequenceSearchLoading,uniprotId:a.uniprotId,url:a.url,hasProteinSequence:!!a.userSelectedProteinSequence,sequenceSearchType:a.sequenceSearchType}),a.showAlphaFoldDBSearchStatus&&R.default.createElement(br,{uniprotId:a.uniprotId,selectedTranscript:a.selectedTranscript,structureSequence:a.structureSequence,isoformSequences:a.isoformSequences,url:a.url}))),R.default.createElement(Ft.DialogActions,null,R.default.createElement(Mr,{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})))}),Nl=rd;var J=p(x()),Vo=p(Ge()),Me=p(L()),Wl=p(W()),_l=p(Ze());var tt=p(x()),Ke=p(L()),Ul=p(Ze());var ni=[{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"}],Bn=["pdb100","afdb-swissprot"];async function Vl(e){let t=e.split(`
22
- `).filter(i=>!i.startsWith(">")).join("").replace(/\s/g,"").replace(/\*/g,"").toUpperCase().replace(/[^ACDEFGHIKLMNPQRSTVWY]/g,""),o=await fetch(`https://3di.foldseek.com/predict/${encodeURIComponent(t)}`);if(!o.ok)throw new Error(`3Di prediction failed: ${o.status} ${await o.text()}`);let r=(await o.text()).replace(/^["'/\s]+/,"").replace(/["'/\s]+$/,"").trim();return{aaSequence:t,di3Sequence:r}}async function Bl(e,t,o){let n=`>query
21
+ b MKAAYLSMFGKEDHKPFGD`,value:u,onChange:b=>{m(b.target.value),c(void 0)},sx:{fontFamily:"monospace",fontSize:12}}),d?C.default.createElement(P.Typography,{color:"error",variant:"body2",sx:{mt:1}},d):null)),C.default.createElement(P.DialogActions,null,C.default.createElement(P.Button,{onClick:h},"Cancel"),C.default.createElement(P.Button,{onClick:w,variant:"contained",color:"primary",disabled:i===1&&!u.trim()},i===0?"Save":"Apply Alignment"))))}function Lo({alignmentAlgorithm:e,onAlignmentAlgorithmChange:t}){return Dr.default.createElement(Ka.Typography,{variant:"body2",sx:{mr:2,display:"flex",alignItems:"center"}},"Transcript and structure sequences differ, will run"," ",Ja[e]??e," ","alignment",Dr.default.createElement(qr,{value:e,onChange:t}))}async function bn(e,t,o){try{await e(),t?.()}catch(n){console.error(n),o?.(n)}}function Ya({uniprotId:e,userSelectedProteinSequence:t,selectedTranscript:o,isLoading:n,error:r}){return n||r?[]:[!e&&"No UniProt ID found",!t&&"Could not compute protein sequence (feature may be missing CDS subfeatures)",!o&&"No transcript selected"].filter(i=>typeof i=="string")}Je();function Br({handleClose:e,uniprotId:t,userSelectedProteinSequence:o,selectedTranscript:n,url:r,confidenceUrl:i,feature:s,view:l,session:a,alignmentAlgorithm:u,onAlignmentAlgorithmChange:m,sequencesMatch:d,isLoading:c,error:y}){let[w,h]=(0,re.useState)(!1),[b,f]=(0,re.useState)(!1),[g,v]=(0,re.useState)(),D=!c&&!!t&&!!o&&!!n,T=Ya({uniprotId:t,userSelectedProteinSequence:o,selectedTranscript:n,isLoading:c,error:y}),O=()=>{h(!1)},z={session:a,view:l,feature:s,selectedTranscript:n,uniprotId:t},ve={...z,url:r,userProvidedTranscriptSequence:o?.seq,alignmentAlgorithm:u},M=Pe=>()=>{O(),bn(Pe,e,v)},Te=M(()=>{jt(ve)}),se=M(async()=>{await xn({...z,confidenceUrl:i})}),me=M(()=>{qo(z)}),Y=M(()=>{sl(ve)}),$=[{key:"3d",title:"Launch 3D protein structure view",description:"View protein structure with genome-to-structure coordinate mapping",onClick:Te},{key:"1d",title:"Launch 1D protein annotation view",description:"View protein features and annotations as a linear track",onClick:se},...Sn()?[{key:"msa",title:"Launch MSA view",description:"View AlphaFold a3m multiple sequence alignment",onClick:me},{key:"3d-msa",title:"Launch 3D structure + MSA view",description:"Launch both views with AlphaFold a3m MSA",onClick:Y}]:[]];return re.default.createElement(re.default.Fragment,null,g?re.default.createElement(al.ErrorMessage,{error:g}):null,d===!1?re.default.createElement(Lo,{alignmentAlgorithm:u,onAlignmentAlgorithmChange:m}):null,re.default.createElement(je.Tooltip,{title:"Launch settings"},re.default.createElement(je.IconButton,{size:"small","aria-label":"Launch settings",onClick:()=>{f(!0)}},re.default.createElement(ao,{fontSize:"small"}))),re.default.createElement(je.Button,{variant:"contained",color:"secondary",size:"small",onClick:()=>{e()}},"Cancel"),!D&&T.length>0?re.default.createElement(je.Typography,{variant:"body2",color:"error",sx:{mr:2}},T.join(". ")):null,re.default.createElement(je.ButtonGroup,{variant:"contained",color:"primary",size:"small"},re.default.createElement(je.Button,{disabled:!D,onClick:Te},"Launch"),re.default.createElement(je.Button,{disabled:!D,onClick:()=>{h(!0)},"aria-label":"More launch options"},re.default.createElement(Ha,null))),re.default.createElement(Cr,{open:w,onClose:O,options:$}),re.default.createElement(Mr,{open:b,onClose:()=>{f(!1)}}))}var uo=p(x()),Hr=p(I());function Ur({isLoading:e,uniprotId:t,url:o,hasProteinSequence:n,sequenceSearchType:r}){return e?null:!t&&n?uo.default.createElement(Hr.Typography,{color:"warning.main"},"No AlphaFold structure found for this sequence (searched by"," ",r==="md5"?"MD5 checksum":"full sequence",")"):t?uo.default.createElement(Hr.Typography,{color:"success.main"},"Found AlphaFold structure: ",t,o?uo.default.createElement(uo.default.Fragment,null," ","-"," ",uo.default.createElement("a",{href:o,target:"_blank",rel:"noreferrer"},o)):null):null}var Do=p(x()),mo=p(I());ce();function Wt({val:e,setVal:t,isoforms:o,isoformSequences:n,structureSequence:r,feature:i,disabled:s}){let l=no(i),a=[],u=[],m=[];for(let c of o){let y=n[c.id()];y?r&&oe(y.seq)===r?a.push(c):u.push(c):m.push(c)}let d=(c,y)=>n[y.id()].seq.length-n[c.id()].seq.length;return Do.default.createElement(mo.TextField,{value:e??"",onChange:c=>{t(c.target.value)},label:"Choose transcript isoform",select:!0,disabled:s},a.toSorted(d).map(c=>Do.default.createElement(mo.MenuItem,{value:c.id(),key:c.id()},l," - ",Ae(c)," (",n[c.id()].seq.length,"aa) (matches structure residues)")),u.toSorted(d).map(c=>Do.default.createElement(mo.MenuItem,{value:c.id(),key:c.id()},l," - ",Ae(c)," (",n[c.id()].seq.length,"aa)")),m.map(c=>Do.default.createElement(mo.MenuItem,{value:c.id(),key:c.id(),disabled:!0},l," - ",Ae(c)," (no data)")))}var U=p(x()),j=p(I());function Gr({lookupMode:e,onLookupModeChange:t,manualUniprotId:o,onManualUniprotIdChange:n,featureUniprotId:r,hasProteinSequence:i,sequenceSearchType:s,onSequenceSearchTypeChange:l,endContent:a}){return U.default.createElement(U.default.Fragment,null,U.default.createElement("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap"}},U.default.createElement(j.FormControl,{component:"fieldset"},U.default.createElement(j.RadioGroup,{row:!0,value:e,onChange:u=>{t(u.target.value)}},r&&U.default.createElement(j.FormControlLabel,{value:"feature",control:U.default.createElement(j.Radio,null),label:`From feature (${r})`}),U.default.createElement(j.FormControlLabel,{value:"auto",control:U.default.createElement(j.Radio,null),label:"Auto-detect using UniProt ID mapping API"}),U.default.createElement(j.FormControlLabel,{value:"manual",control:U.default.createElement(j.Radio,null),label:"Enter manually"}),i&&U.default.createElement(j.FormControlLabel,{value:"sequence",control:U.default.createElement(j.Radio,null),label:"Search sequence against AlphaFoldDB API"}))),a),e==="manual"&&U.default.createElement("div",null,U.default.createElement(j.TextField,{label:"UniProt ID",variant:"outlined",placeholder:"e.g. P68871",size:"small",value:o,onChange:u=>{n(u.target.value)}})),e==="sequence"&&s&&l&&U.default.createElement("div",null,U.default.createElement(j.FormControl,{component:"fieldset"},U.default.createElement(j.RadioGroup,{row:!0,value:s,onChange:u=>{l(u.target.value)}},U.default.createElement(j.FormControlLabel,{value:"md5",control:U.default.createElement(j.Radio,null),label:"Exact match"}),U.default.createElement(j.FormControlLabel,{value:"sequence",control:U.default.createElement(j.Radio,null),label:"Fuzzy match"}))),U.default.createElement(j.Typography,{variant:"body2",color:"text.secondary"},"May not find the canonical UniProt entry.")),e==="manual"&&!o&&U.default.createElement(j.Typography,{variant:"body2",color:"text.secondary"},"Search"," ",U.default.createElement(Ce,{href:"https://www.uniprot.org/"},"UniProt")," or ",U.default.createElement(Ce,{href:"https://alphafold.ebi.ac.uk/"},"AlphaFoldDB")))}var R=p(x()),q=p(I()),ll=p(tt());var kc=(0,ll.makeStyles)()({tableContainer:{maxHeight:200},headerCell:{fontWeight:"bold",backgroundColor:"#f5f5f5"},selectedRow:{backgroundColor:"#e3f2fd"},clickableRow:{cursor:"pointer","&:hover":{backgroundColor:"#f5f5f5"}},reviewedChip:{backgroundColor:"#4caf50",color:"white",fontSize:"0.7rem",height:20},unreviewedChip:{backgroundColor:"#ff9800",color:"white",fontSize:"0.7rem",height:20}});function Or({entries:e,selectedAccession:t,onSelect:o}){let{classes:n,cx:r}=kc();return e.length===0?null:R.default.createElement("div",null,R.default.createElement(q.Typography,{variant:"body2",sx:{mb:1}},"Found ",e.length," UniProt entries. Select one:"),R.default.createElement(q.TableContainer,{component:q.Paper,className:n.tableContainer},R.default.createElement(q.Table,{size:"small",stickyHeader:!0},R.default.createElement(q.TableHead,null,R.default.createElement(q.TableRow,null,R.default.createElement(q.TableCell,{className:n.headerCell,padding:"checkbox"}),R.default.createElement(q.TableCell,{className:n.headerCell},"Accession"),R.default.createElement(q.TableCell,{className:n.headerCell},"Gene"),R.default.createElement(q.TableCell,{className:n.headerCell},"Organism"),R.default.createElement(q.TableCell,{className:n.headerCell},"Protein"),R.default.createElement(q.TableCell,{className:n.headerCell},"Status"))),R.default.createElement(q.TableBody,null,e.map(i=>R.default.createElement(q.TableRow,{key:i.accession,onClick:()=>{o(i.accession)},className:r(n.clickableRow,t===i.accession&&n.selectedRow)},R.default.createElement(q.TableCell,{padding:"checkbox"},R.default.createElement(q.Radio,{checked:t===i.accession,size:"small"})),R.default.createElement(q.TableCell,null,R.default.createElement(Ce,{href:`https://www.uniprot.org/uniprotkb/${i.accession}`},i.accession)),R.default.createElement(q.TableCell,null,i.geneName??"-"),R.default.createElement(q.TableCell,null,i.organismName??"-"),R.default.createElement(q.TableCell,null,i.proteinName?i.proteinName.length>40?`${i.proteinName.slice(0,40)}...`:i.proteinName:"-"),R.default.createElement(q.TableCell,null,R.default.createElement(q.Chip,{label:i.isReviewed?"Reviewed":"Unreviewed",size:"small",className:i.isReviewed?n.reviewedChip:n.unreviewedChip}))))))))}var So=p(x());yo();var Et={revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1};async function Dn({plugin:e,trajectory:t,options:o}){let n=await e.builders.structure.createModel(t);return await e.builders.structure.hierarchy.applyPreset(t,"all-models",{useDefaultIfSingleModel:!0,representationPresetParams:o?.representationParams}),{model:n}}async function Nn({data:e,format:t="pdb",options:o,plugin:n}){let r=await n.builders.data.rawData({data:e,label:o?.dataLabel}),i=await n.builders.structure.parseTrajectory(r,t);return Dn({plugin:n,trajectory:i,options:o})}async function Vn({url:e,format:t="mmcif",isBinary:o,options:n,plugin:r}){let i=await r.builders.data.download({url:e,isBinary:o},{state:{isGhost:!0}}),s=await r.builders.structure.parseTrajectory(i,t);return Dn({plugin:r,trajectory:s,options:n})}function Bn(e){return e.obj?.data.sequence.sequences.map(t=>Array.from(t.sequence.label.toArray()).join(""))}Ht();async function Dl(e){let{createPluginUI:t,renderReact18:o}=await ge(),n=document.createElement("div"),r=await t({target:n,render:o});try{return await e(r)}finally{r.unmount(),n.remove()}}function ed(e){let t=e.lastIndexOf("."),o=t>=0?e.slice(t+1).toLowerCase():"";return o==="cif"||o==="mmcif"||o==="bcif"?"mmcif":"pdb"}async function td({file:e,url:t}){return Dl(async o=>{let{model:n}=e?await Nn({data:await e.text(),plugin:o,format:ed(e.name)}):await Vn({url:t,plugin:o});return Bn(n)})}function Bo({file:e,url:t}){let o=e?["structure-file",e.name,e.size,e.lastModified]:t?["structure-url",t]:null,{data:n,error:r,isLoading:i,isValidating:s}=rt(o,async()=>{let l=await td({file:e,url:t});if(!l)throw new Error("no sequences detected in file");return l},{...Et,keepPreviousData:!0});return{error:r,isLoading:i,isValidating:s,sequences:n}}Je();function ii({uniprotId:e}){let t=e?po(e):void 0,o=e?nl(e):void 0,{sequences:n,isLoading:r,isValidating:i,error:s}=Bo({url:t});return{isLoading:r,isValidating:i,error:s,url:t,confidenceUrl:o,structureSequence:n?.[0]}}var Hl=p(x());yo();async function od(e,t){let o=await fetch(e,t);if(!o.ok)throw new Error(`HTTP ${o.status} fetching ${e} ${await o.text()}`);return o}async function wo(e,t){return(await od(e,t)).json()}function Nl(e){return e.reason instanceof Error?e.reason:new Error("Aborted",{cause:e.reason})}function Vl(e,t){return new Promise((o,n)=>{if(t?.aborted)n(Nl(t));else{let r=setTimeout(o,e);t?.addEventListener("abort",()=>{clearTimeout(r),n(Nl(t))},{once:!0})}})}function qt(e,t){let o=(e&65535)+(t&65535);return(e>>16)+(t>>16)+(o>>16)<<16|o&65535}function nd(e,t){return e<<t|e>>>32-t}function Hn(e,t,o,n,r,i){return qt(nd(qt(qt(t,e),qt(n,i)),r),o)}function be(e,t,o,n,r,i,s){return Hn(t&o|~t&n,e,t,r,i,s)}function ye(e,t,o,n,r,i,s){return Hn(t&n|o&~n,e,t,r,i,s)}function we(e,t,o,n,r,i,s){return Hn(t^o^n,e,t,r,i,s)}function xe(e,t,o,n,r,i,s){return Hn(o^(t|~n),e,t,r,i,s)}function rd(e,t){e[t>>5]|=128<<t%32,e[(t+64>>>9<<4)+14]=t;let o=1732584193,n=-271733879,r=-1732584194,i=271733878;for(let s=0;s<e.length;s+=16){let l=o,a=n,u=r,m=i;o=be(o,n,r,i,e[s]??0,7,-680876936),i=be(i,o,n,r,e[s+1]??0,12,-389564586),r=be(r,i,o,n,e[s+2]??0,17,606105819),n=be(n,r,i,o,e[s+3]??0,22,-1044525330),o=be(o,n,r,i,e[s+4]??0,7,-176418897),i=be(i,o,n,r,e[s+5]??0,12,1200080426),r=be(r,i,o,n,e[s+6]??0,17,-1473231341),n=be(n,r,i,o,e[s+7]??0,22,-45705983),o=be(o,n,r,i,e[s+8]??0,7,1770035416),i=be(i,o,n,r,e[s+9]??0,12,-1958414417),r=be(r,i,o,n,e[s+10]??0,17,-42063),n=be(n,r,i,o,e[s+11]??0,22,-1990404162),o=be(o,n,r,i,e[s+12]??0,7,1804603682),i=be(i,o,n,r,e[s+13]??0,12,-40341101),r=be(r,i,o,n,e[s+14]??0,17,-1502002290),n=be(n,r,i,o,e[s+15]??0,22,1236535329),o=ye(o,n,r,i,e[s+1]??0,5,-165796510),i=ye(i,o,n,r,e[s+6]??0,9,-1069501632),r=ye(r,i,o,n,e[s+11]??0,14,643717713),n=ye(n,r,i,o,e[s]??0,20,-373897302),o=ye(o,n,r,i,e[s+5]??0,5,-701558691),i=ye(i,o,n,r,e[s+10]??0,9,38016083),r=ye(r,i,o,n,e[s+15]??0,14,-660478335),n=ye(n,r,i,o,e[s+4]??0,20,-405537848),o=ye(o,n,r,i,e[s+9]??0,5,568446438),i=ye(i,o,n,r,e[s+14]??0,9,-1019803690),r=ye(r,i,o,n,e[s+3]??0,14,-187363961),n=ye(n,r,i,o,e[s+8]??0,20,1163531501),o=ye(o,n,r,i,e[s+13]??0,5,-1444681467),i=ye(i,o,n,r,e[s+2]??0,9,-51403784),r=ye(r,i,o,n,e[s+7]??0,14,1735328473),n=ye(n,r,i,o,e[s+12]??0,20,-1926607734),o=we(o,n,r,i,e[s+5]??0,4,-378558),i=we(i,o,n,r,e[s+8]??0,11,-2022574463),r=we(r,i,o,n,e[s+11]??0,16,1839030562),n=we(n,r,i,o,e[s+14]??0,23,-35309556),o=we(o,n,r,i,e[s+1]??0,4,-1530992060),i=we(i,o,n,r,e[s+4]??0,11,1272893353),r=we(r,i,o,n,e[s+7]??0,16,-155497632),n=we(n,r,i,o,e[s+10]??0,23,-1094730640),o=we(o,n,r,i,e[s+13]??0,4,681279174),i=we(i,o,n,r,e[s]??0,11,-358537222),r=we(r,i,o,n,e[s+3]??0,16,-722521979),n=we(n,r,i,o,e[s+6]??0,23,76029189),o=we(o,n,r,i,e[s+9]??0,4,-640364487),i=we(i,o,n,r,e[s+12]??0,11,-421815835),r=we(r,i,o,n,e[s+15]??0,16,530742520),n=we(n,r,i,o,e[s+2]??0,23,-995338651),o=xe(o,n,r,i,e[s]??0,6,-198630844),i=xe(i,o,n,r,e[s+7]??0,10,1126891415),r=xe(r,i,o,n,e[s+14]??0,15,-1416354905),n=xe(n,r,i,o,e[s+5]??0,21,-57434055),o=xe(o,n,r,i,e[s+12]??0,6,1700485571),i=xe(i,o,n,r,e[s+3]??0,10,-1894986606),r=xe(r,i,o,n,e[s+10]??0,15,-1051523),n=xe(n,r,i,o,e[s+1]??0,21,-2054922799),o=xe(o,n,r,i,e[s+8]??0,6,1873313359),i=xe(i,o,n,r,e[s+15]??0,10,-30611744),r=xe(r,i,o,n,e[s+6]??0,15,-1560198380),n=xe(n,r,i,o,e[s+13]??0,21,1309151649),o=xe(o,n,r,i,e[s+4]??0,6,-145523070),i=xe(i,o,n,r,e[s+11]??0,10,-1120210379),r=xe(r,i,o,n,e[s+2]??0,15,718787259),n=xe(n,r,i,o,e[s+9]??0,21,-343485551),o=qt(o,l),n=qt(n,a),r=qt(r,u),i=qt(i,m)}return[o,n,r,i]}function id(e){let t="0123456789abcdef",o="";for(let n=0;n<e.length*4;n++)o+=t.charAt(e[n>>2]>>n%4*8+4&15)+t.charAt(e[n>>2]>>n%4*8&15);return o}function sd(e){let t=[];for(let n=0;n<e.length*8;n+=8)t[n>>5]=(t[n>>5]??0)|(e.charCodeAt(n/8)&255)<<n%32;return t}function Bl(e){return id(rd(sd(e),e.length*8))}ce();function si({sequence:e,searchType:t,enabled:o=!0}){let n=(0,Hl.useMemo)(()=>{if(!e)return;let a=oe(e.toUpperCase());return t==="md5"?Bl(a):a},[e,t]),{data:r,error:i,isLoading:s,isValidating:l}=rt(o&&n?`https://alphafold.ebi.ac.uk/api/sequence/summary?id=${encodeURIComponent(n)}&type=${t}`:null,wo,{...Et,keepPreviousData:!0});return{isLoading:s,isValidating:l,result:r,uniprotId:r?.uniprotAccession,cifUrl:r?.cifUrl,plddtDocUrl:r?.plddtDocUrl,structureSequence:r?.sequence,error:i}}var Un=p(x());function ai(e,t=300){let[o,n]=(0,Un.useState)(e);return(0,Un.useEffect)(()=>{let r=setTimeout(()=>{n(e)},t);return()=>{clearTimeout(r)}},[e,t]),o}var Ol=p(te());yo();var Gl=p(io()),xo=p(te());function ad(e,t){return e.map(o=>t.slice(o.start,o.end)).join("")}function ld({cds:e,sequence:t,codonTable:o}){let n=ad(e,t),r="";for(let i=0;i<n.length;i+=3)r+=o[n.slice(i,i+3)]??"&";return r}function pd(e,t){return e.map(o=>({...o,start:t-o.end,end:t-o.start})).toSorted((o,n)=>o.start-n.start)}function Ul(e){return`${e.start}-${e.end}`}function ud(e){return e.filter((t,o,n)=>!o||Ul(t)!==Ul(n[o-1]))}function md({feature:e,seq:t}){let o=e.get("start"),n=e.get("strand"),r=e.get("subfeatures")??[],i=ud(r.toSorted((s,l)=>s.get("start")-l.get("start")).map(s=>({start:s.get("start")-o,end:s.get("end")-o,type:s.get("type")})).filter(s=>s.type==="CDS"));return ld({cds:n===-1?pd(i,t.length):i,sequence:n===-1?(0,xo.revcom)(t):t,codonTable:(0,xo.generateCodonTable)(xo.defaultCodonTable)})}async function Gn({feature:e,session:t,assemblyName:o}){let n=e.get("start"),r=e.get("end"),i=e.get("refName"),{assemblyManager:s,rpcManager:l}=t,a=o?await s.waitForAssembly(o):void 0;if(!a)throw new Error("assembly not found");let u="getSequence",m=await l.call(u,"CoreGetFeatures",{adapterConfig:(0,Gl.getConf)(a,["sequence","adapter"]),sessionId:u,regions:[{start:n,end:r,refName:a.getCanonicalRefName(i),assemblyName:o}]}),[d]=m,c=d?.get("seq");return c?md({seq:c,feature:e}):void 0}ce();function li({feature:e,view:t}){let{data:o,error:n,isLoading:r}=rt(["isoform-sequences",e.id(),t?.assemblyNames?.[0]],async()=>{let i=Ot(e),s=[],a=(await Promise.all(i.map(async u=>{try{let m=await Gn({session:(0,Ol.getSession)(t),assemblyName:t?.assemblyNames?.[0],feature:u});return m?[u.id(),{feature:u,seq:m}]:void 0}catch(m){console.error("[useIsoformProteinSequences] error for",u.id(),m),s.push(m);return}}))).filter(u=>u!==void 0);if(a.length===0&&s.length===i.length&&s.length>0)throw s[0];return Object.fromEntries(a)},{...Et,keepPreviousData:!0});return{isLoading:r,isoformSequences:o,error:n}}var Ho=p(x());ce();function pi({options:e,isoformSequences:t,structureSequence:o,resetKey:n}){let[r,i]=(0,Ho.useState)(),[s,l]=(0,Ho.useState)(n);n!==s&&(l(n),i(void 0));let a=(0,Ho.useMemo)(()=>t!==void 0?Rs({options:e,isoformSequences:t,structureSequence:o})?.id():void 0,[e,o,t]);return{userSelection:r??a,setUserSelection:i}}ce();function _t({feature:e,view:t,structureSequence:o,resetKey:n}){let r=Ot(e),{isoformSequences:i,isLoading:s,error:l}=li({feature:e,view:t}),{userSelection:a,setUserSelection:u}=pi({options:r,isoformSequences:i,structureSequence:o,resetKey:n}),m=r.find(c=>Hs(c)===a),d=a?i?.[a]:void 0;return{transcripts:r,isoformSequences:i,isLoading:s,error:l,selectedTranscriptId:a,setSelectedTranscriptId:u,selectedTranscript:m,selectedIsoform:d}}yo();ce();var cd="accession,id,gene_names,organism_name,protein_name,reviewed";function dd(e){return{accession:e.primaryAccession,id:e.uniProtkbId,geneName:e.genes?.[0]?.geneName?.value,organismName:e.organism?.commonName??e.organism?.scientificName,proteinName:e.proteinDescription?.recommendedName?.fullName?.value,isReviewed:e.entryType==="UniProtKB reviewed (Swiss-Prot)"}}function gd(e){switch(rn(e)){case"ensembl":return`xref:ensembl-${e}`;case"refseq":return`xref:refseq-${e}`;case"ccds":return`xref:ccds-${e}`;case"hgnc":return`xref:hgnc-${e.replace("HGNC:","")}`;default:return}}async function jl(e,t=10){let o=`https://rest.uniprot.org/uniprotkb/search?query=${encodeURIComponent(e)}&fields=${cd}&size=${t}`;return(await wo(o)).results.map(dd)}async function fd(e){let t=gd(e);if(!t)return{entries:[],error:void 0};try{return{entries:await jl(t),error:void 0}}catch(o){return console.error(`xref search failed for ${e}:`,o),{entries:[],error:o}}}function zl(e){let t=new Set,o=[];for(let n of e)t.has(n.accession)||(t.add(n.accession),o.push(n));return o}async function Wl({recognizedIds:e=[],geneId:t,geneName:o,organismId:n=9606}){let r=new Set(e),i=t?Co(t):void 0;i&&At(i)&&r.add(i);let s=await Promise.all([...r].map(fd)),l=zl(s.flatMap(m=>m.entries)),a=s.filter(m=>m.error!==void 0),u;if(!l.some(m=>m.isReviewed)&&o)try{let m=`gene:${o}+AND+organism_id:${n}+AND+reviewed:true`,d=await jl(m,5);l=zl([...l,...d])}catch(m){console.error(`gene name search failed for ${o}:`,m),u=m}if(l.length===0){let m=r.size+(o?1:0),d=a.length+(u?1:0);if(m>0&&m===d)throw u??a[0]?.error}return l.toSorted((m,d)=>Number(d.isReviewed)-Number(m.isReviewed))}ce();function ui({recognizedIds:e=[],geneId:t,geneName:o,selectedQueryId:n="auto",enabled:r=!0}){let i=[],s;n==="auto"?(i=e,s=o):n.startsWith("gene:")?s=n.replace("gene:",""):At(n)&&(i=[n]);let l=i.some(d=>At(d))||!!s,{data:a,error:u,isLoading:m}=rt(r&&l?["uniprotSearch",n,i.join(","),s]:null,async()=>Wl({recognizedIds:i,geneId:t,geneName:s}),{...Et,keepPreviousData:!0});return{entries:a??[],isLoading:m,error:u,hasValidId:l}}function On({selectedQueryId:e,recognizedIds:t,geneName:o,joinWord:n="and"}){return e==="auto"?[t.length>0?`database ID${t.length>1?"s":""} "${t.join('", "')}"`:void 0,o?`gene name "${o}"`:void 0].filter(Boolean).join(` ${n} `):e.startsWith("gene:")?`gene name "${e.replace("gene:","")}"`:`database ID "${e}"`}ce();function mi({feature:e,view:t}){let[o,n]=(0,So.useState)("auto"),[r,i]=(0,So.useState)(""),s=_s(e),[l,a]=(0,So.useState)("auto"),[u,m]=(0,So.useState)("md5"),[d,c]=(0,So.useState)(),y=s.uniprotId,w=o==="auto"&&y?"feature":o,h=w==="sequence",b=w==="auto",{entries:f,isLoading:g,error:v}=ui({recognizedIds:s.recognizedIds,geneId:s.geneId,geneName:s.geneName,selectedQueryId:l,enabled:b}),D=ai(r,400),T=f[0]?.accession,O=w==="feature"?y:b?d??T:w==="manual"?D:void 0,{isLoading:z,isValidating:ve,error:M,url:Te,confidenceUrl:se,structureSequence:me}=ii({uniprotId:h?void 0:O}),{transcripts:Y,isoformSequences:$,isLoading:Pe,error:Be,selectedTranscriptId:lt,setSelectedTranscriptId:_e,selectedTranscript:Ie,selectedIsoform:He}=_t({feature:e,view:t,structureSequence:me,resetKey:O}),{uniprotId:sr,cifUrl:wt,plddtDocUrl:pt,structureSequence:Zt,isLoading:Xt,isValidating:Qt,error:ut}=si({sequence:He?.seq,searchType:u,enabled:h}),Bt=h?wt:Te,ar=h?pt:se,xt=h?Zt:me,eo=h?sr:O,lr=h?Qt:ve,Yo=[g&&"Looking up UniProt ID",Pe&&"Loading protein sequences from transcript isoforms",!h&&z&&"Fetching AlphaFold structure URL",h&&Xt&&"Searching AlphaFoldDB by sequence"].filter(N=>!!N),St=Yo.length>0,Xi=St?void 0:Be??v??M??ut;return{lookupMode:w,setLookupMode:n,manualUniprotId:r,setManualUniprotId:i,selectedQueryId:l,setSelectedQueryId:a,sequenceSearchType:u,setSequenceSearchType:m,selectedUniprotId:d,setSelectedUniprotId:c,userSelection:lt,setUserSelection:_e,transcriptOptions:Y,selectedTranscript:Ie,isoformSequences:$,userSelectedProteinSequence:He,uniprotEntries:f,recognizedIds:s.recognizedIds,geneName:s.geneName,featureUniprotId:y,uniprotId:eo,url:Bt,confidenceUrl:ar,structureSequence:xt,error:Xi,loadingStatuses:Yo,isSequenceSearchLoading:Xt,showIdentifierSelector:b&&(s.recognizedIds.length>0||!!s.geneName),showStructureSelectors:!!$&&!!Ie&&(h||!!(xt&&eo)),sequencesMatch:!lr&&He?.seq&&xt?oe(He.seq)===xt:void 0,searchDescription:On({selectedQueryId:l,recognizedIds:s.recognizedIds,geneName:s.geneName}),searchDescriptionOr:On({selectedQueryId:l,recognizedIds:s.recognizedIds,geneName:s.geneName,joinWord:"or"}),selectedTableAccession:d??T,showUniprotResults:!!$&&b&&(f.length>0||g),showNoResults:!!$&&b&&!g&&f.length===0,showSequenceSearchStatus:h,showAlphaFoldDBSearchStatus:!!xt&&!!eo&&!h,isLoading:St}}var hd=(0,Rl.makeStyles)()({dialogContent:{width:"80em","& > *":{marginBottom:20},"& > *:last-child":{marginBottom:0}},selectorsRow:{display:"flex",flexDirection:"row",gap:20,alignItems:"flex-start"}}),bd=(0,_l.observer)(function({feature:t,session:o,view:n,handleClose:r,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}){let{classes:l}=hd(),a=mi({feature:t,view:n});return J.default.createElement(J.default.Fragment,null,J.default.createElement(Dt.DialogContent,{className:l.dialogContent},a.error?J.default.createElement(zn.ErrorMessage,{error:a.error}):null,J.default.createElement(Gr,{lookupMode:a.lookupMode,onLookupModeChange:a.setLookupMode,manualUniprotId:a.manualUniprotId,onManualUniprotIdChange:a.setManualUniprotId,featureUniprotId:a.featureUniprotId,hasProteinSequence:!!a.userSelectedProteinSequence?.seq,sequenceSearchType:a.sequenceSearchType,onSequenceSearchTypeChange:a.setSequenceSearchType,endContent:a.showIdentifierSelector?J.default.createElement(kr,{recognizedIds:a.recognizedIds,geneName:a.geneName,selectedId:a.selectedQueryId,onSelectedIdChange:a.setSelectedQueryId}):null}),a.loadingStatuses.map(u=>J.default.createElement(zn.LoadingEllipses,{key:u,variant:"subtitle2",message:u})),a.showUniprotResults&&J.default.createElement(J.default.Fragment,null,J.default.createElement(Dt.Typography,{variant:"body2",color:"textSecondary"},"Searched UniProt by ",a.searchDescription),J.default.createElement(Or,{entries:a.uniprotEntries,selectedAccession:a.selectedTableAccession,onSelect:a.setSelectedUniprotId}),J.default.createElement(Dt.Typography,{variant:"body2",color:"textSecondary"},"If you don't see the entry you're looking for, try a different identifier above or search"," ",J.default.createElement(Ce,{href:"https://www.uniprot.org/"},"UniProt")," ",'directly and use "Enter manually".')),a.showNoResults&&J.default.createElement(Dt.Typography,{variant:"body2",color:"textSecondary"},"No UniProt entries found for ",a.searchDescriptionOr,". Try a different identifier above, or search"," ",J.default.createElement(Ce,{href:"https://www.uniprot.org/"},"UniProt")," ",'directly and use "Enter manually" above, or use "Search sequence against AlphaFoldDB API" if available.'),a.showStructureSelectors&&J.default.createElement(J.default.Fragment,null,J.default.createElement("div",{className:l.selectorsRow},J.default.createElement(Wt,{val:a.userSelection,setVal:a.setUserSelection,structureSequence:a.structureSequence,feature:t,isoforms:a.transcriptOptions,isoformSequences:a.isoformSequences})),a.showSequenceSearchStatus&&J.default.createElement(Ur,{isLoading:a.isSequenceSearchLoading,uniprotId:a.uniprotId,url:a.url,hasProteinSequence:!!a.userSelectedProteinSequence,sequenceSearchType:a.sequenceSearchType}),a.showAlphaFoldDBSearchStatus&&J.default.createElement(Ar,{uniprotId:a.uniprotId,selectedTranscript:a.selectedTranscript,structureSequence:a.structureSequence,isoformSequences:a.isoformSequences,url:a.url}))),J.default.createElement(Dt.DialogActions,null,J.default.createElement(Br,{handleClose:r,uniprotId:a.uniprotId,userSelectedProteinSequence:a.userSelectedProteinSequence,selectedTranscript:a.selectedTranscript,url:a.url,confidenceUrl:a.confidenceUrl,feature:t,view:n,session:o,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s,sequencesMatch:a.sequencesMatch,isLoading:a.isLoading,error:a.error})))}),Jl=bd;var K=p(x()),Uo=p(Oe()),Fe=p(I()),op=p(_()),np=p(tt());var it=p(x()),Ze=p(I()),Zl=p(tt());var ci=[{id:"pdb100",label:"PDB (100% redundancy)"},{id:"afdb-swissprot",label:"AlphaFold DB (Swiss-Prot)"},{id:"afdb50",label:"AlphaFold DB (50% redundancy)"},{id:"afdb-proteome",label:"AlphaFold DB (Proteomes)"},{id:"cath50",label:"CATH (50% redundancy)"},{id:"mgnify_esm30",label:"MGnify ESM30"},{id:"bfmd",label:"BFMD"},{id:"gmgcl_id",label:"GMGCL"}],jn=["pdb100","afdb-swissprot"];async function Kl({aaSequence:e,signal:t}){let o=e.split(`
22
+ `).filter(s=>!s.startsWith(">")).join("").replace(/\s/g,"").replace(/\*/g,"").toUpperCase().replace(/[^ACDEFGHIKLMNPQRSTVWY]/g,""),n=await fetch(`https://3di.foldseek.com/predict/${encodeURIComponent(o)}`,{signal:t});if(!n.ok)throw new Error(`3Di prediction failed: ${n.status} ${await n.text()}`);let i=(await n.text()).replace(/^["'/\s]+/,"").replace(/["'/\s]+$/,"").trim();return{aaSequence:o,di3Sequence:i}}async function Yl({aaSequence:e,di3Sequence:t,databases:o,signal:n}){let r=`>query
23
23
  ${e}
24
24
  >3DI
25
25
  ${t}
26
- `,r=new URLSearchParams;r.append("q",n),r.append("mode","3diaa"),r.append("email","");for(let l of o)r.append("database[]",l);let i=await fetch("https://search.foldseek.com/api/ticket",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:r}),s=await i.json();if(!i.ok)throw new Error(`Foldseek submission failed: ${i.status} ${JSON.stringify(s)}`);return s}async function id(e){let t=new URLSearchParams;t.append("tickets[]",e);let o=await fetch("https://search.foldseek.com/api/tickets",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t});if(!o.ok)throw new Error(`Failed to poll ticket status: ${o.status}`);let r=(await o.json())[0];if(!r)throw new Error("No ticket status returned");return r}async function sd(e){return mo(`https://search.foldseek.com/api/result/${e}/0`)}async function Hl(e,t){let n=0;for(;n<180;){let r=await id(e);if(r.status==="ERROR")throw console.error("[Foldseek] Search error:",r),new Error(`Foldseek search failed: ${r.error??"Unknown error"}`);if(r.status==="COMPLETE"){t?.("Fetching results...");let i=await sd(e);return{query:i.queries[0]??{header:"",sequence:""},results:i.results.map(l=>({db:l.db,alignments:l.alignments}))}}t?.(`Search ${r.status.toLowerCase()}... (${n+1}s)`),await Pl(1e3),n++}throw new Error("Foldseek search timed out")}var ad=(0,Ul.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 ri({selected:e,onChange:t,disabled:o}){let{classes:n}=ad();return tt.default.createElement("div",{className:n.root},tt.default.createElement("div",{className:n.header},tt.default.createElement(Ke.Typography,{variant:"subtitle2"},"Databases to search:"),tt.default.createElement("div",{className:n.buttons},tt.default.createElement(Ke.Button,{size:"small",onClick:()=>{t(ni.map(r=>r.id))},disabled:o},"Select all"),tt.default.createElement(Ke.Button,{size:"small",onClick:()=>{t([])},disabled:o},"Clear"))),tt.default.createElement(Ke.FormGroup,{className:n.checkboxGroup},ni.map(r=>tt.default.createElement(Ke.FormControlLabel,{key:r.id,control:tt.default.createElement(Ke.Checkbox,{size:"small",checked:e.includes(r.id),onChange:()=>{e.includes(r.id)?t(e.filter(i=>i!==r.id)):t([...e,r.id])},disabled:o}),label:r.label}))))}var N=p(x()),M=p(L()),jl=p(Ze());var qe=p(x()),zl=p(Ge()),Lt=p(L());var ld={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 Gl(e,t){return e.padStart(t," ")}function pd(e,t){return e.padEnd(t," ")}function ii(e){return e.toFixed(3).padStart(8," ")}function Ol(e,t,o="A",n){let r=e.split(",").map(Number),i=[];n&&i.push(`TITLE ${n}`),i.push("REMARK 1 Generated from Foldseek C\u03B1 coordinates");let s=1,l=1;for(let a=0;a<r.length-2;a+=3){let u=r[a],m=r[a+1],d=r[a+2],c=t[l-1]??"X",w=ld[c]??"UNK";if(u===void 0||m===void 0||d===void 0)break;let y="ATOM "+Gl(String(s),5)+" CA "+pd(w,3)+" "+o+Gl(String(l),4)+" "+ii(u)+ii(m)+ii(d)+" 1.00 0.00 C";i.push(y),s++,l++}return i.push("END"),i.join(`
27
- `)}function si(e,t){return!e||!t?!1:e.split(",").length>=3&&t.length>0}We();function ai({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=dn(e.target),w=C=>{a(C.currentTarget)},y=()=>{a(null)},f={session:t,view:o,feature:n,selectedTranscript:r,uniprotId:c},h=C=>()=>{y(),mn(C,s,m)},b=h(()=>{let C=!e.structureUrl&&si(e.tCa,e.tSeq)?Ol(e.tCa,e.tSeq,"A",e.target):void 0;Gt({...f,url:e.structureUrl,data:C,userProvidedTranscriptSequence:i})}),g=h(async()=>{await gn({...f,confidenceUrl:Ka(e.target)})}),S=h(()=>{Fo(f)});return e.structureUrl??si(e.tCa,e.tSeq)?qe.default.createElement(qe.default.Fragment,null,u?qe.default.createElement(zl.ErrorMessage,{error:u}):null,qe.default.createElement(Lt.Button,{size:"small",variant:"outlined",onClick:w},"Load"),qe.default.createElement(Lt.Menu,{anchorEl:l,open:d,onClose:y},qe.default.createElement(Lt.MenuItem,{onClick:b},"Launch 3D protein view"),c?qe.default.createElement(Lt.MenuItem,{onClick:g},"Launch 1D protein annotation view"):null,c&&fn()?qe.default.createElement(Lt.MenuItem,{onClick:S},"Launch MSA view (AlphaFoldDB a3m)"):null)):qe.default.createElement("span",null,"-")}We();var ud=(0,jl.makeStyles)()({root:{display:"flex",flexDirection:"column",gap:16},tableContainer:{maxHeight:400},headerCell:{fontWeight:"bold",backgroundColor:"#f5f5f5"},noResults:{padding:16,textAlign:"center"}});function md(e){let t=e.results.flatMap(o=>(o.alignments??[]).flat().map(n=>({...n,db:o.db,structureUrl:Ja(n.target,o.db)})));return t.sort((o,n)=>(o.eval??1/0)-(n.eval??1/0)),t.slice(0,100)}function li({results:e,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}){let{classes:l}=ud(),a=md(e);return a.length===0?N.default.createElement(M.Paper,{className:l.noResults},N.default.createElement(M.Typography,null,"No similar structures found")):N.default.createElement("div",{className:l.root},N.default.createElement(M.Typography,{variant:"subtitle2"},"Found ",a.length," similar structures"),N.default.createElement(M.TableContainer,{component:M.Paper,className:l.tableContainer},N.default.createElement(M.Table,{size:"small",stickyHeader:!0},N.default.createElement(M.TableHead,null,N.default.createElement(M.TableRow,null,N.default.createElement(M.TableCell,{className:l.headerCell},"Database"),N.default.createElement(M.TableCell,{className:l.headerCell},"Target"),N.default.createElement(M.TableCell,{className:l.headerCell},"Organism"),N.default.createElement(M.TableCell,{className:l.headerCell},"Prob"),N.default.createElement(M.TableCell,{className:l.headerCell},"Seq. Id."),N.default.createElement(M.TableCell,{className:l.headerCell},"Coverage"),N.default.createElement(M.TableCell,{className:l.headerCell},"E-value"),N.default.createElement(M.TableCell,{className:l.headerCell},"Actions"))),N.default.createElement(M.TableBody,null,a.map((u,m)=>N.default.createElement(M.TableRow,{key:`${u.db}-${u.target}-${m}`},N.default.createElement(M.TableCell,null,u.db),N.default.createElement(M.TableCell,null,u.target),N.default.createElement(M.TableCell,null,u.taxName??"-"),N.default.createElement(M.TableCell,null,u.prob!=null?`${(u.prob*100).toFixed(1)}%`:"-"),N.default.createElement(M.TableCell,null,u.seqId!=null?`${u.seqId.toFixed(1)}%`:"-"),N.default.createElement(M.TableCell,null,u.alnLength!=null&&u.qLen!=null?`${(u.alnLength/u.qLen*100).toFixed(1)}%`:"-"),N.default.createElement(M.TableCell,null,u.eval!=null?u.eval.toExponential(2):"-"),N.default.createElement(M.TableCell,null,N.default.createElement(ai,{hit:u,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}))))))))}var jt=p(x());function pi(){let[e,t]=(0,jt.useState)(),[o,n]=(0,jt.useState)(),[r,i]=(0,jt.useState)(!1),[s,l]=(0,jt.useState)(!1),[a,u]=(0,jt.useState)(),[m,d]=(0,jt.useState)(""),c=async f=>{l(!0),u(void 0),d("Predicting 3Di structure...");try{let h=await Vl(f);return n(h),h}catch(h){console.error(h),u(h);return}finally{l(!1),d("")}},w=async(f,h,b=Bn)=>{i(!0),u(void 0),d("Submitting search...");try{let g=await Bl(f,h,b),S=await Hl(g.id,d);return t(S),S}catch(g){console.error(g),u(g);return}finally{i(!1),d("")}},y=()=>{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:c,search:w,reset:y}}pe();var cd=(0,_l.makeStyles)()({dialogContent:{width:"80em",display:"flex",flexDirection:"column",gap:20},sequenceInput:{fontFamily:"monospace"},di3Section:{display:"flex",flexDirection:"column",gap:8}}),dd=(0,Wl.observer)(function({feature:t,session:o,view:n,handleClose:r}){let{classes:i}=cd(),[s,l]=(0,J.useState)(),[a,u]=(0,J.useState)(Bn),{results:m,cleanedAaSequence:d,di3Sequence:c,isLoading:w,isPredicting:y,error:f,statusMessage:h,predictStructure:b,search:g,reset:S}=pi(),{transcripts:K,isoformSequences:C,isLoading:$,error:H,selectedTranscriptId:ve,setSelectedTranscriptId:E,selectedTranscript:Ce,selectedIsoform:ne}=zt({feature:t,view:n}),ue=ne?te(ne.seq):"",O=s??ue,me=fe=>{E(fe),l(void 0)},Ie=O.trim().length>0&&!y&&!w,Ve=!!d&&!!c&&a.length>0&&!w,rt=f??H,Be=w||y;return J.default.createElement(J.default.Fragment,null,J.default.createElement(Me.DialogContent,{className:i.dialogContent},rt&&!$?J.default.createElement(Vo.ErrorMessage,{error:rt}):null,$?J.default.createElement(Vo.LoadingEllipses,{variant:"subtitle2",message:"Loading transcript sequences"}):null,C?J.default.createElement(J.default.Fragment,null,J.default.createElement(Ot,{val:ve,setVal:me,isoforms:K,isoformSequences:C,feature:t,disabled:Be}),J.default.createElement(Me.TextField,{label:"Protein sequence (amino acids)",multiline:!0,rows:4,value:O,onChange:fe=>{l(fe.target.value)},placeholder:"MKTVRQERLKSIVRILERSKEPVSGAQLAEEL...",disabled:Be,InputProps:{className:i.sequenceInput}})):null,c?J.default.createElement("div",{className:i.di3Section},J.default.createElement(Me.Typography,{variant:"subtitle2"},"3Di structural alphabet (used for searching):"),J.default.createElement(Me.TextField,{multiline:!0,rows:4,value:c,InputProps:{className:i.sequenceInput,readOnly:!0}})):null,J.default.createElement(ri,{selected:a,onChange:u,disabled:Be}),h?J.default.createElement(Vo.LoadingEllipses,{variant:"subtitle2",message:h}):null,m?J.default.createElement(li,{results:m,session:o,view:n,feature:t,selectedTranscript:Ce,userProvidedTranscriptSequence:O,onClose:r}):null),J.default.createElement(Me.DialogActions,null,J.default.createElement(Me.Button,{variant:"contained",color:"secondary",onClick:()=>{r()}},"Cancel"),m?J.default.createElement(Me.Button,{variant:"outlined",onClick:()=>{S()}},"New search"):null,c?J.default.createElement(Me.Button,{variant:"contained",color:"primary",disabled:!Ve,onClick:()=>{g(d,c,a)}},w?"Searching...":"Search Foldseek"):J.default.createElement(Me.Button,{variant:"contained",color:"primary",disabled:!Ie,onClick:()=>{b(O.trim())}},y?"Predicting...":"Predict 3Di structure")))}),Rl=dd;var De=p(x());ui();var Ql=p(L()),gd=(0,De.lazy)(()=>Promise.resolve().then(()=>(Xl(),Zl)));function Bo(){let[e,t]=(0,De.useState)(!1);return De.default.createElement(De.default.Fragment,null,De.default.createElement(Ql.IconButton,{onClick:()=>{t(!0)}},De.default.createElement(Hn,null)),e?De.default.createElement(De.Suspense,{fallback:null},De.default.createElement(gd,{handleClose:()=>{t(!1)}})):null)}var mi=p(x());function Ho({children:e,value:t,index:o,...n}){return mi.default.createElement("div",{role:"tabpanel",hidden:t!==o,...n},t===o&&mi.default.createElement("div",null,e))}var j=p(x()),Un=p(Ge()),Wt=p(L()),ep=p(W()),tp=p(Ze());var re=p(x()),oe=p(L());We();function ci({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(Bo,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(Io(a))},label:"PDB ID"}):null)}We();pe();var fd=(0,tp.makeStyles)()(e=>({dialogContent:{marginTop:e.spacing(6),width:"80em"},textAreaFont:{fontFamily:"Courier New"}}));function hd(){return j.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,"," ",j.default.createElement(Pe,{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 bd=(0,ep.observer)(function({feature:t,session:o,view:n,handleClose:r,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}){let{classes:l}=fd(),[a,u]=(0,j.useState)(),[m,d]=(0,j.useState)(""),[c,w]=(0,j.useState)("file"),[y,f]=(0,j.useState)(),[h,b]=(0,j.useState)(""),g=c==="file"?a:void 0,S=c==="file"?"":h,{sequences:K,error:C}=Do({file:g,url:S}),$=g?.name??S.slice(S.lastIndexOf("/")+1),H=K?.[0],{transcripts:ve,isoformSequences:E,selectedTranscriptId:Ce,setSelectedTranscriptId:ne,selectedTranscript:ue,selectedIsoform:O,error:me}=zt({feature:t,view:n,structureSequence:H}),Ie=me??y??C,Ve=!!(S||g)&&!!O&&!!ue,rt=!!O?.seq&&!!H&&te(O.seq)!==H,Be=async()=>{if(!(!O||!ue))try{let fe=g?await g.text():void 0;Gt({session:o,view:n,feature:t,selectedTranscript:ue,url:S||void 0,data:fe,userProvidedTranscriptSequence:O.seq,alignmentAlgorithm:i,displayName:`Protein view ${Xt(t)} - ${Se(ue)}`}),r()}catch(fe){console.error(fe),f(fe)}};return j.default.createElement(j.default.Fragment,null,j.default.createElement(Wt.DialogContent,{className:l.dialogContent},Ie?j.default.createElement(Un.ErrorMessage,{error:Ie}):null,j.default.createElement(hd,null),j.default.createElement(ci,{choice:c,setChoice:w,structureURL:h,setStructureURL:b,setFile:u,pdbId:m,setPdbId:d}),j.default.createElement("div",{style:{margin:20}},E?H?j.default.createElement(j.default.Fragment,null,j.default.createElement(Ot,{val:Ce,setVal:ne,structureSequence:H,isoforms:ve,feature:t,isoformSequences:E}),j.default.createElement(Ao,{structureSequence:H,structureName:$,isoformSequences:E})):null:j.default.createElement(Un.LoadingEllipses,{title:"Loading protein sequences",variant:"h6"}))),j.default.createElement(Wt.DialogActions,null,rt?j.default.createElement(Mo,{alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}):null,j.default.createElement(Wt.Button,{variant:"contained",color:"secondary",onClick:()=>{r()}},"Cancel"),j.default.createElement(Wt.Button,{variant:"contained",color:"primary",disabled:!Ve,onClick:()=>{Be()}},"Launch 3-D protein structure view")))}),op=bd;var np=p(x());function rp(e,t){let[o,n]=(0,np.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 di({handleClose:e,feature:t,model:o}){let[n,r]=(0,ge.useState)(0),[i,s]=rp("jbrowse-protein3d-alignment-algorithm",Co),l=(0,Gn.getSession)(o),a=(0,Gn.getContainingView)(o);return ge.default.createElement(ip.Dialog,{maxWidth:"xl",title:"Launch protein view",titleNode:ge.default.createElement(ge.default.Fragment,null,"Launch protein view ",ge.default.createElement(Bo,null)),open:!0,onClose:e},ge.default.createElement(fo.Tabs,{value:n,onChange:(u,m)=>{r(m)}},ge.default.createElement(fo.Tab,{value:0,label:"AlphaFoldDB search"}),ge.default.createElement(fo.Tab,{value:1,label:"Foldseek search"}),ge.default.createElement(fo.Tab,{value:2,label:"Open file manually"})),ge.default.createElement(Ho,{value:n,index:0},ge.default.createElement(Nl,{session:l,view:a,feature:t,handleClose:e,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s})),ge.default.createElement(Ho,{value:n,index:1},ge.default.createElement(Rl,{session:l,view:a,feature:t,handleClose:e})),ge.default.createElement(Ho,{value:n,index:2},ge.default.createElement(op,{session:l,view:a,feature:t,handleClose:e,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s})))}function yd(e){return e.name==="LinearBasicDisplay"}function wd(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:ba,onClick:()=>{let i=(0,On.getContainingTrack)(t);(0,On.getSession)(i).queueDialog(l=>[di,{model:i,handleClose:l,feature:n}])}}]:[]]}}})}function gi(e){e.addToExtensionPoint("Core-extendPluggableElement",t=>(yd(t)&&(t.stateModel=wd(t.stateModel)),t))}var sp=p(eo()),ap=p(ee());We();pe();function xd(e){if(typeof e=="string")return e;let{trackId:t}=e;return typeof t=="string"?t:void 0}function vd(e,t){let o=Po(t);return[e.get("name"),e.get("id"),e.id()].some(n=>typeof n=="string"&&(n===t||Po(n)===o))}async function lp({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,ap.parseLocString)(i,b=>l.isValidRefName(b));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(xd).filter(b=>b!==void 0),d=e.getTracksById(),c="getFeatures",w=[];for(let b of m){let g=d[b];if(!g)continue;let S=await e.rpcManager.call(c,"CoreGetFeatures",{adapterConfig:(0,sp.readConfObject)(g,"adapter"),sessionId:c,regions:[u]});for(let K of S)w.push(...Ht(K))}let y=w.find(b=>vd(b,o));if(!y)throw new Error(`transcript "${o}" not found at ${i} in tracks [${m.join(", ")}]`);if(!(y.get("subfeatures")??[]).some(b=>b.get("type")==="CDS"))throw new Error(`transcript "${o}" has no CDS subfeatures`);let h=await Dn({session:e,assemblyName:r,feature:y});if(!h)throw new Error(`could not translate a protein sequence for "${o}"`);return{url:oo(t),feature:y.toJSON(),userProvidedTranscriptSequence:h}}function fi(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 lp({session:t,uniprotId:n,transcriptId:r,connectedView:a})}catch(g){console.error(g),t.notify(`Could not launch protein view: ${g}`,"error");return}let h=o??f?.url;if(!h)throw new Error("No url or uniprotId provided when launching protein view");let b=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:h,userProvidedTranscriptSequence:f?.userProvidedTranscriptSequence??i??"",feature:f?.feature??s,connectedViewId:b}]})})}var wm=p(x()),xm=p(hi());var Gp=p(hi()),Op=p(mp()),le=p(zn());St();var dp=p(Tt(),1),bi=(0,Te.createSvgIcon)((0,dp.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(Yt());yi();function hp(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 bp(e){return!!e&&e.length>1&&e.every(t=>t>=0&&t<=100)&&new Set(e).size>1}var Oo=p(ee()),Y=p(zn()),_t=p(Yt());Si();mt();To();Vt();var Pp=e=>e;var Ti=e=>e;function Ap(e){let{structureSeqToTranscriptSeqPosition:t,transcriptSeqToStructureSeqPosition:o}=cs(e),n=gs(e),r=fs(e),i=rr(n),s=rr(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}}}Ai();var jn=["A","R","N","D","C","Q","E","G","H","I","L","K","M","F","P","S","T","W","Y","V","B","Z","X","*"],Sd=[[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]],Cp={};for(let e=0;e<jn.length;e++){let t={};for(let o=0;o<jn.length;o++)t[jn[o]]=Sd[e][o];Cp[jn[e]]=t}function Uo(e,t){return Cp[e.toUpperCase()]?.[t.toUpperCase()]??-4}var Mp=-10,Ip=-.5;function Td(e,t,o=Mp,n=Ip){let r=e.length,i=t.length,s=[],l=[],a=[];for(let h=0;h<=r;h++){s[h]=[],l[h]=[],a[h]=[];for(let b=0;b<=i;b++)s[h][b]=-1/0,l[h][b]=-1/0,a[h][b]=-1/0}s[0][0]=0;for(let h=1;h<=r;h++)l[h][0]=o+(h-1)*n;for(let h=1;h<=i;h++)a[0][h]=o+(h-1)*n;for(let h=1;h<=r;h++)for(let b=1;b<=i;b++){let g=Uo(e[h-1],t[b-1]);s[h][b]=Math.max(s[h-1][b-1],l[h-1][b-1],a[h-1][b-1])+g,l[h][b]=Math.max(s[h-1][b]+o,l[h-1][b]+n),a[h][b]=Math.max(s[h][b-1]+o,a[h][b-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 h=Uo(e[d-1],t[c-1]),b=s[d-1][c-1],g=l[d-1][c-1];s[d][c]===b+h?f="M":s[d][c]===g+h?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 Pd(e,t,o=Mp,n=Ip){let r=e.length,i=t.length,s=[],l=[],a=[],u=0,m=0,d=0;for(let b=0;b<=r;b++){s[b]=[],l[b]=[],a[b]=[];for(let g=0;g<=i;g++)s[b][g]=0,l[b][g]=-1/0,a[b][g]=-1/0}for(let b=1;b<=r;b++)for(let g=1;g<=i;g++){let S=Uo(e[b-1],t[g-1]);s[b][g]=Math.max(0,s[b-1][g-1]+S,l[b-1][g-1]+S,a[b-1][g-1]+S),l[b][g]=Math.max(s[b-1][g]+o,l[b-1][g]+n),a[b][g]=Math.max(s[b][g-1]+o,a[b][g-1]+n);let K=Math.max(s[b][g],l[b][g],a[b][g]);K>u&&(u=K,m=b,d=g)}let c="",w="",y=m,f=d,h=s[y][f]>=l[y][f]&&s[y][f]>=a[y][f]?"M":l[y][f]>=a[y][f]?"Ix":"Iy";for(let b=e.length;b>m;b--)c=e[b-1]+c,w="-"+w;for(let b=t.length;b>d;b--)c="-"+c,w=t[b-1]+w;for(;y>0&&f>0;)if(h==="M"){if(s[y][f]===0)break;c=e[y-1]+c,w=t[f-1]+w;let b=Uo(e[y-1],t[f-1]),g=s[y-1][f-1],S=l[y-1][f-1];s[y][f]===g+b?h="M":s[y][f]===S+b?h="Ix":h="Iy",y--,f--}else h==="Ix"?(c=e[y-1]+c,w="-"+w,l[y][f]===s[y-1][f]+o&&(h="M"),y--):(c="-"+c,w=t[f-1]+w,a[y][f]===s[y][f-1]+o&&(h="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 Ad(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 Fp(e,t,o){let{alignedSeq1:n,alignedSeq2:r}=o==="smith_waterman"?Pd(e,t):Td(e,t);return{consensus:Ad(n,r),alns:[{id:"a",seq:n},{id:"b",seq:r}]}}var Lp=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]));Ci();Ii();Nt();function Id(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 _n({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?Id(n,s):void 0)}else o(void 0)});return()=>{r.unsubscribe()}}Vt();We();pe();To();var Dd=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 dn(t)},get coordinateMapper(){return e.pairwiseAlignment?Ap(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 bp(t)?Mi(t,this.structurePositionToAlignmentMap):[]},get hydrophobicityCells(){let t=e.structureSequences?.[0];return t?Mi(Dp(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?Zt(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(Pp(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?ki({model:r,structureSeqPos:t.start,structureSeqEndPos:t.end}):Wn({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 Lp[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 Na(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(Ti(t));e.setHoveredPosition(o!==void 0?{structureSeqPos:o}:void 0)}},clickAlignmentPosition(t){let o=e.coordinateMapper?.alignmentToStructure(Ti(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=Fp(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&&wt(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 _n({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 _n({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 yp({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 Pi({structure:t,plugin:o,startResidue:n.start+1,endResidue:n.end}):r!==void 0?await wp({structure:t,plugin:o,selectedResidue:r,mode:"highlight"}):o.managers.interactivity.lociHighlights.clearHighlights())}))}})),Rn=Dd;Nt();var Nd="SuperpositionTransform";async function Fi(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 h=e.helpers.substructureParent.get(f);if(!h)return;let b=e.state.data.selectQ(S=>S.byValue(h).rootOfType(s.Molecule.Structure))[0]?.obj?.data;if(!b)return;let g=n.toLociWithSourceUnits(u(new t(f)));return o.Loci.remap(g,b)}).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:h,tmScoreA:b,tmScoreB:g,rmsd:S,alignedLength:K}=f;await Vd(e,a[y].cell,h,w),e.log.info(`TM-align: TM-score=${b.toFixed(4)}/${g.toFixed(4)}, RMSD=${S.toFixed(2)} \xC5, aligned ${K} residues.`)}await new Promise(y=>requestAnimationFrame(y)),await i.Camera.Reset(e)}async function Vd(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:Nd});await e.runTask(e.state.data.updateTree(d))}var Bp="proteinView-settings",Hp=["showAlignment","showProteinTracks","showHighlight","zoomToBaseLevel","autoScrollAlignment","compactTracks"];async function Up({structure:e,plugin:t}){let{model:o}=e.data?await In({data:e.data,plugin:t}):e.url?await Fn({url:e.url,plugin:t}):{model:void 0},n=o?Ln(o):void 0,r=o?hp(o,n?.[0]?.length):void 0;return{sequences:n,confidence:r}}function Bd(){return le.types.compose("ProteinView",Gp.BaseViewModel,le.types.model({id:Op.ElementId,type:le.types.literal("ProteinView"),structures:le.types.array(Rn),showControls:!1,height:le.types.optional(le.types.number,650),showHighlight:!1,zoomToBaseLevel:!0,autoScrollAlignment:!1,colorScheme:le.types.optional(le.types.enumeration("ColorScheme",gp),"default"),showAlignment:!0,showProteinTracks:!0,compactTracks:!0,alignmentAlgorithm:le.types.optional(le.types.string,Co),connectedMsaViewId:le.types.maybe(le.types.string),init:le.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(Rn.create({url:t.url,data:t.data,userProvidedTranscriptSequence:""}))}})).actions(e=>({async addStructureAndSuperpose(t){let{molstarPluginContext:o}=e;if(!o)return;let n=Rn.create({url:t.url,data:t.data,userProvidedTranscriptSequence:""});n.setLoadedToMolstar(!0),e.structures.push(n);try{n.setStructureData(await Up({structure:t,plugin:o})),e.structures.length>1&&await Fi(o)}catch(r){e.setError(r),console.error(r)}}})).actions(e=>({afterAttach(){try{let t=localStorage.getItem(Bp);if(t){let o=JSON.parse(t);for(let n of Hp)o[n]!==void 0&&(e[n]=o[n])}}catch(t){console.error("Failed to restore protein view settings",t)}(0,le.addDisposer)(e,(0,zo.autorun)(()=>{try{let t={};for(let o of Hp)t[o]=e[o];localStorage.setItem(Bp,JSON.stringify(t))}catch(t){console.error("Failed to save protein view settings",t)}})),(0,le.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,le.addDisposer)(e,(0,zo.autorun)(()=>{let{molstarPluginContext:t,colorScheme:o}=e,n=e.structures.filter(r=>r.structureSequences!==void 0).length;t&&n>0&&fp({plugin:t,colorScheme:o}).catch(r=>{console.error(r),e.setError(r)})})),(0,le.addDisposer)(e,(0,zo.autorun)(async()=>{let{structures:t,molstarPluginContext:o}=e;if(o){for(let n of t)if(!n.loadedToMolstar)try{n.setStructureData(await Up({structure:n,plugin:o})),n.setLoadedToMolstar(!0)}catch(r){e.setError(r),console.error(r)}}}))}})).views(e=>({get primaryStructure(){return e.structures[0]},menuItems(){return[{label:"Pairwise alignment",icon:bi,type:"checkbox",checked:e.showAlignment,onClick:()=>{e.setShowAlignment(!e.showAlignment)}},{label:"Protein feature tracks",icon:bi,type:"checkbox",checked:e.showProteinTracks,onClick:()=>{e.setShowProteinTracks(!e.showProteinTracks)}},{label:"Color scheme...",subMenu:ho.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:pn,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&&Fi(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 zp=Bd;var cg=(0,wm.lazy)(()=>Promise.resolve().then(()=>(ym(),bm)));function Gi(e){e.addViewType(()=>new xm.ViewType({name:"ProteinView",displayName:"Protein view",stateModel:zp(),ReactComponent:cg}))}var Mm=p(en());var vm=p(eo());var dg=(0,vm.ConfigurationSchema)("UniProtVariationAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}},scoreField:{type:"string",defaultValue:""}},{explicitlyTyped:!0}),Sm=dg;function Oi(e){e.addAdapterType(()=>new Mm.default({name:"UniProtVariationAdapter",displayName:"UniProtVariation adapter",configSchema:Sm,getAdapterClass:()=>Promise.resolve().then(()=>(Cm(),km)).then(t=>t.default)}))}var Im="0.4.11";var Qn=class extends Fm.default{name="ProteinViewer";version=Im;install(t){Gi(t),gi(t),fi(t),ur(t),mr(t),cr(t),Oi(t)}configure(t){}};return Bm(gg);})();
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: