jbrowse-plugin-protein3d 0.4.13 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/LaunchProteinView/components/FoldseekActionMenu.js +15 -14
  2. package/dist/LaunchProteinView/components/ProteinViewActions.js +27 -15
  3. package/dist/LaunchProteinView/components/UserProvidedStructure.js +1 -2
  4. package/dist/LaunchProteinView/hooks/useSafeLaunch.d.ts +9 -0
  5. package/dist/LaunchProteinView/hooks/useSafeLaunch.js +15 -0
  6. package/dist/LaunchProteinView/utils/launchViewUtils.d.ts +9 -11
  7. package/dist/LaunchProteinView/utils/launchViewUtils.js +6 -8
  8. package/dist/LaunchProteinView/utils/sideBySide.d.ts +5 -0
  9. package/dist/LaunchProteinView/utils/sideBySide.js +9 -0
  10. package/dist/LaunchProteinViewExtensionPoint/index.js +7 -4
  11. package/dist/ProteinView/applyLociInteractivity.d.ts +23 -17
  12. package/dist/ProteinView/applyLociInteractivity.js +33 -61
  13. package/dist/ProteinView/components/FeatureBar.d.ts +1 -1
  14. package/dist/ProteinView/components/FeatureBar.js +36 -34
  15. package/dist/ProteinView/components/FeatureTypeLabel.js +5 -9
  16. package/dist/ProteinView/components/ProteinFeatureTrack.js +7 -15
  17. package/dist/ProteinView/components/ProteinViewHeader.js +9 -1
  18. package/dist/ProteinView/components/ResidueValueTrack.js +26 -15
  19. package/dist/ProteinView/hooks/useProteinFeatureTrackData.d.ts +1 -0
  20. package/dist/ProteinView/hooks/useProteinFeatureTrackData.js +3 -2
  21. package/dist/ProteinView/model.d.ts +12 -0
  22. package/dist/ProteinView/structureModel.d.ts +14 -5
  23. package/dist/ProteinView/structureModel.js +69 -92
  24. package/dist/ProteinView/subscribeMolstarInteraction.d.ts +8 -0
  25. package/dist/ProteinView/subscribeMolstarInteraction.js +1 -1
  26. package/dist/ProteinView/util.d.ts +0 -5
  27. package/dist/ProteinView/util.js +0 -11
  28. package/dist/jbrowse-plugin-protein3d.umd.production.min.js +15 -15
  29. package/dist/jbrowse-plugin-protein3d.umd.production.min.js.map +4 -4
  30. package/dist/version.d.ts +1 -1
  31. package/dist/version.js +1 -1
  32. package/package.json +1 -1
  33. package/src/LaunchProteinView/components/FoldseekActionMenu.tsx +22 -17
  34. package/src/LaunchProteinView/components/ProteinViewActions.tsx +32 -17
  35. package/src/LaunchProteinView/components/UserProvidedStructure.tsx +1 -6
  36. package/src/LaunchProteinView/hooks/useSafeLaunch.ts +17 -0
  37. package/src/LaunchProteinView/utils/launchViewUtils.ts +30 -29
  38. package/src/LaunchProteinView/utils/sideBySide.ts +14 -0
  39. package/src/LaunchProteinViewExtensionPoint/index.ts +8 -9
  40. package/src/ProteinView/applyLociInteractivity.ts +62 -114
  41. package/src/ProteinView/components/FeatureBar.tsx +40 -44
  42. package/src/ProteinView/components/FeatureTypeLabel.tsx +6 -11
  43. package/src/ProteinView/components/ProteinFeatureTrack.tsx +5 -17
  44. package/src/ProteinView/components/ProteinViewHeader.tsx +15 -0
  45. package/src/ProteinView/components/ResidueValueTrack.tsx +40 -23
  46. package/src/ProteinView/hooks/useProteinFeatureTrackData.ts +6 -2
  47. package/src/ProteinView/structureModel.ts +90 -108
  48. package/src/ProteinView/subscribeMolstarInteraction.ts +9 -1
  49. package/src/ProteinView/util.ts +0 -25
  50. package/src/version.ts +1 -1
  51. package/dist/ProteinView/highlightResidueRange.d.ts +0 -14
  52. package/dist/ProteinView/highlightResidueRange.js +0 -19
  53. package/src/ProteinView/highlightResidueRange.ts +0 -44
@@ -1,30 +1,30 @@
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(`
1
+ "use strict";var JBrowsePluginProtein3d=(()=>{var Gm=Object.create;var Yo=Object.defineProperty;var zm=Object.getOwnPropertyDescriptor;var jm=Object.getOwnPropertyNames;var Wm=Object.getPrototypeOf,_m=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),At=(e,t)=>{for(var o in t)Yo(e,o,{get:t[o],enumerable:!0})},Qi=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of jm(t))!_m.call(e,r)&&r!==o&&Yo(e,r,{get:()=>t[r],enumerable:!(n=zm(t,r))||n.enumerable});return e};var p=(e,t,o)=>(o=e!=null?Gm(Wm(e)):{},Qi(t||!e||!e.__esModule?Yo(o,"default",{value:e,enumerable:!0}):o,e)),Jm=e=>Qi(Yo({},"__esModule",{value:!0}),e);var ts=V((Mg,es)=>{es.exports=JBrowseExports["@jbrowse/core/Plugin"]});var x=V((Ig,os)=>{os.exports=JBrowseExports.react});var _=V((Fg,ns)=>{ns.exports=JBrowseExports["mobx-react"]});var $=V((Lg,rs)=>{rs.exports=JBrowseExports["@jbrowse/core/util"]});var tt=V((Eg,is)=>{is.exports=JBrowseExports["tss-react/mui"]});function fs(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 b=0;b<c;b++){let w=t===1?d.start+b:d.end-1-b,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 Zo(e,t,o){let n=e[t];if(n!==void 0)return o===1?[n,n+3]:[n-2,n+1]}var Xo=S(()=>{});var Qt=V((Gg,hs)=>{hs.exports=JBrowseExports.mobx});function bs(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 ys(e){let t={};for(let o=0,n=0;o<e.length;o++)e[o]!=="-"&&(t[n]=o,n++);return t}function ws(e){return ys(e.alns[1].seq)}function xs(e){return ys(e.alns[0].seq)}function eo(e){return fs(e.toJSON())}var Po=S(()=>{"use strict";Xo()});var Ss,ot,dr,Ut,Qo=S(()=>{"use strict";Ss=p($());Xo();ot=p(Qt());Po();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 Ss.SimpleFeature(r.feature),s=eo(i);if(!s)return;let{p2g:l,strand:a,refName:u}=s,m=Zo(l,o,a);if(!m)return;let[d,c]=m;return{refName:u,start:d,end:c}}},Ut=new dr});function ee(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 ko(e){return e?.replace(/\.[^./]+$/,"")}function Ds(e){return e===void 0?"":e.id()}function Ie(e){return e===void 0?"":e.get("name")??e.get("id")??""}function on(e){return e===void 0?"":e.get("gene_name")??e.get("name")??e.get("id")??""}function Ct(e){return Ns.test(e)||Vs.test(e)||Bs.test(e)||Hs.test(e)||Us.test(e)||Os.test(e)||br.test(e)}function nn(e){if(Ns.test(e)||Vs.test(e)||Bs.test(e))return"ensembl";if(Hs.test(e)||Us.test(e))return"refseq";if(Os.test(e))return"ccds";if(br.test(e))return"hgnc"}function Qm(e){return e?Array.isArray(e)?e.flatMap(t=>typeof t=="string"?t.split(","):[]):typeof e=="string"?e.split(",").map(t=>t.trim()):[]:[]}function ec(e){let t=[];for(let o of e){let n=o.split(":"),r=n[n.length-1];r&&Ct(r)&&t.push(r),Ct(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 tc(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(/\.[^./]+$/,"");Ct(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=ec(Qm(r));for(let s of i)t.push(s);return[...new Set(t)]}function Gs(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=tc(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 zs({options:e,isoformSequences:t,structureSequence:o}){let n=e.find(i=>o&&ee(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 Ns,Vs,Bs,Hs,Us,Os,br,ce=S(()=>{"use strict";Ns=/^ENS[A-Z]*G\d+/i,Vs=/^ENS[A-Z]*T\d+/i,Bs=/^ENS[A-Z]*P\d+/i,Hs=/^[NX][MR]_\d+/i,Us=/^[NX]P_\d+/i,Os=/^CCDS\d+/i,br=/^HGNC:\d+/i});var rn=V((vf,$s)=>{$s.exports=JBrowseExports["@jbrowse/core/pluggableElementTypes/AdapterType"]});var oo=V((Tf,Zs)=>{Zs.exports=JBrowseExports["@jbrowse/core/configuration"]});var sn=V((Pf,ea)=>{ea.exports=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"]});var an=V((kf,ta)=>{ta.exports=JBrowseExports["@jbrowse/core/util/io"]});var ln=V((Cf,oa)=>{oa.exports=JBrowseExports["@jbrowse/core/util/rxjs"]});var sa={};At(sa,{default:()=>pn});var na,un,ra,ia,pn,aa=S(()=>{"use strict";na=p(sn()),un=p($()),ra=p(an()),ia=p(ln()),pn=class extends na.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let t=JSON.parse(await(0,ra.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,ia.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,un.doesIntersect2)(a.start,a.end,r,i)&&n.next(new un.SimpleFeature({...a,refName:s}));n.complete()})}freeResources(){}}});var fa={};At(fa,{default:()=>mn,parseAlphaMissense:()=>ga});function ga(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 ma,Mt,ca,da,mn,ha=S(()=>{"use strict";ma=p(sn()),Mt=p($()),ca=p(an()),da=p(ln());mn=class extends ma.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let t=await(0,ca.openLocation)(this.getConf("location")).readFile("utf8");return ga(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,Mt.min)(n),scoreMax:(0,Mt.max)(n)}}async getMultiRegionFeatureDensityStats(t){return{featureDensity:0}}async getRefNames(t={}){return[]}getFeatures(t,o={}){return(0,da.ObservableCreate)(async n=>{let{start:r,end:i,refName:s}=t,l=await this.loadData();for(let a of l)(0,Mt.doesIntersect2)(a.start,a.end,r,i)&&n.next(new Mt.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 wa=V((qf,ya)=>{ya.exports=JBrowseExports["@mui/material/utils"]});var ge,dt=S(()=>{"use client";ge=p(wa(),1)});var gt=V((Nf,xa)=>{xa.exports=JBrowseExports["react/jsx-runtime"]});var Oe=V((Hf,Ta)=>{Ta.exports=JBrowseExports["@jbrowse/core/ui"]});var M=V((Uf,Aa)=>{Aa.exports=JBrowseExports["@mui/material"]});function Mr(){let e=localStorage.getItem(Va);return e===null?!0:e==="true"}function Ba(e){localStorage.setItem(Va,e?"true":"false")}function uc(e){return"setUseWorkspaces"in e&&typeof e.setUseWorkspaces=="function"&&"setPendingMove"in e&&typeof e.setPendingMove=="function"}function mc(e,t){uc(e)&&(e.setPendingMove({type:"splitRight",viewId:t}),e.setUseWorkspaces(!0))}function dn(e,t,o){(o??Mr())&&mc(e,t)}var Va,gn=S(()=>{"use strict";Va="proteinView-launchSideBySide"});function Fr(e){let t=e.next();for(;!t.done&&t.value.trim()==="";)t=e.next();return t.value}var Lr=S(()=>{});function Ua(e){let t=e.trim();return t?t.split(/\s+/).every(n=>/^\d+$/.test(n)):!1}function cc(e){let t=e.trim();return/^\w+\s+/.test(t)&&!Ua(e)}function dc(e){return e.length>=3&&/^\d+$/.test(e[1])}function gc(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 Ha(e){let t=Fr(e),o=[],n="";if(!t)return;for(;t;)Ua(t)||(cc(t)?o.push(t):n=t),t=e.next().value;if(o.length===0)return;let r=o.map(b=>b.trim().split(/\s+/)),i=r[0];if(!i)return;let s=dc(i)?2:1,[l,a]=gc(o[0],s),u=r.map(b=>b[0]),m=r.map(b=>b[s]),d=n.slice(l,a),c=m[0];if(c){let b=c.length-d.length;b>0&&(d+=" ".repeat(b))}return{ids:u,seqs:m,consensus:d}}function Oa(e){let t,o=Ha(e);if(o!==void 0)for(;t=Ha(e);){for(let n=0;n<t.seqs.length;n++)o.seqs[n]+=t.seqs[n];o.consensus+=t.consensus}return o}var Ga=S(()=>{Lr()});function fn(e){let t=e.split(`
3
3
  `).filter(s=>!s.startsWith("#")).join(`
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:
4
+ `),o=Oa(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 Er=S(()=>{Ga();Lr()});function Ka(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 Ya=S(()=>{"use strict"});async function hc(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 bc({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 yc({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 wc({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 xc({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 Sc({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 $a({session:e,uniprotId:t,confidenceUrl:o}){let n=await hc(t);bc({session:e,uniprotId:t,featureTypes:n}),yc({session:e,uniprotId:t}),wc({session:e,uniprotId:t}),xc({session:e,uniprotId:t,confidenceUrl:o}),Sc({session:e,uniprotId:t})}var Za=S(()=>{"use strict"});async function Xa({session:e,feature:t,selectedTranscript:o,uniprotId:n,confidenceUrl:r,connectedViewId:i}){Ka(e,n),await $a({session:e,uniprotId:n,confidenceUrl:r});let s=e.addView("LinearGenomeView",{type:"LinearGenomeView",displayName:bn("Protein view",t,o,n)});i&&o&&Ut.register({viewId:s.id,connectedViewId:i,feature:o.toJSON(),uniprotId:n}),await s.navToLocString(n,n)}var Qa=S(()=>{"use strict";Ya();Za();Qo();Re()});function io(e,t=Vr){return`https://alphafold.ebi.ac.uk/files/AF-${e}-F1-model_${t}.cif`}function el(e,t=Vr){return`https://alphafold.ebi.ac.uk/files/AF-${e}-F1-confidence_${t}.json`}function vc(e,t=Vr){return`https://alphafold.ebi.ac.uk/files/msa/AF-${e}-F1-msa_${t}.a3m`}function Lo(e){return`https://files.rcsb.org/download/${e}.cif`}function Br(e){return e.split(" ")[0]}function yn(e){return/AF-([A-Z0-9]+)-F\d+/.exec(Br(e))?.[1]}function tl(e,t){let o=Br(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 Lo(n)}}function ol(e){let t=Br(e);if(t.startsWith("AF-"))return`https://alphafold.ebi.ac.uk/files/${t.replace("-model_","-confidence_")}.json`}function bn(e,t,o,n){return[...new Set([e,n,on(t),Ie(o)])].filter(r=>!!r).join(" - ")}function zt({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??bn("Protein view",o,n,r)},b=e.addView("ProteinView",c);return dn(e,b.id,d),b}async function wn({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,confidenceUrl:i}){await Xa({session:e,selectedTranscript:n,feature:o,uniprotId:r,confidenceUrl:i,connectedViewId:t.id})}function Eo({session:e,view:t,feature:o,selectedTranscript:n,uniprotId:r,displayName:i}){if(r)return e.addView("MsaView",{type:"MsaView",displayName:i??bn("MSA view",o,n,r),connectedViewId:t.id,connectedFeature:n?.toJSON(),init:{msaUrl:vc(r),colorSchemeName:"percent_identity"}})}function xn(){return window.JBrowsePluginMsaView!==void 0}function nl(e){let{uniprotId:t}=e;if(!t)return;let o=Eo(e);return zt({...e,connectedMsaViewId:o?.id})}var Vr,Re=S(()=>{"use strict";gn();ce();Qa();Vr="v6"});var ll=V(al=>{"use strict";var lo=x();function Ac(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Pc=typeof Object.is=="function"?Object.is:Ac,kc=lo.useState,Cc=lo.useEffect,Mc=lo.useLayoutEffect,Ic=lo.useDebugValue;function Fc(e,t){var o=t(),n=kc({inst:{value:o,getSnapshot:t}}),r=n[0].inst,i=n[1];return Mc(function(){r.value=o,r.getSnapshot=t,jr(r)&&i({inst:r})},[e,o,t]),Cc(function(){return jr(r)&&i({inst:r}),e(function(){jr(r)&&i({inst:r})})},[e]),Ic(o),o}function jr(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!Pc(e,o)}catch{return!0}}function Lc(e,t){return t()}var Ec=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Lc:Fc;al.useSyncExternalStore=lo.useSyncExternalStore!==void 0?lo.useSyncExternalStore:Ec});var ul=V((nb,pl)=>{"use strict";pl.exports=ll()});var Ft={};At(Ft,{ERROR_REVALIDATE_EVENT:()=>qc,FOCUS_EVENT:()=>ml,MUTATE_EVENT:()=>dl,RECONNECT_EVENT:()=>cl});var ml,cl,dl,qc,gl=S(()=>{ml=0,cl=1,dl=2,qc=3});function Sn(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--&&Sn(e[n],t[n]););return n===-1}if(!o||typeof e=="object"){n=0;for(o in e)if(fl.call(e,o)&&++n&&!fl.call(t,o)||!(o in t)||!Sn(e[o],t[o]))return!1;return Object.keys(t).length===n}}return e!==e&&t!==t}var fl,hl=S(()=>{fl=Object.prototype.hasOwnProperty});async function Fn(...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(Ee(o)){let c=o,b=[],w=t.keys();for(let h of w)!/^\$(inf|sub)\$/.test(h)&&c(t.get(h)._k)&&b.push(h);return Promise.all(b.map(d))}return d(o);async function d(c){let[b]=No(c);if(!b)return;let[w,h]=Mn(t,b),[y,f,g,v]=Ke.get(t),E=()=>{let oe=y[b];return(Ee(i.revalidate)?i.revalidate(w().data,c):i.revalidate!==!1)&&(delete g[b],delete v[b],oe&&oe[0])?oe[0](2).then(()=>w().data):w().data};if(e.length<3)return E();let T=n,G,W=!1,ve=Do();f[b]=[ve,0];let q=!P(a),Pe=w(),ie=Pe.data,me=Pe._c,Y=P(me)?ie:me;if(q&&(a=Ee(a)?a(Y,ie):a,h({data:a,_c:Y})),Ee(T))try{T=T(Y)}catch(oe){G=oe,W=!0}if(T&&Cn(T))if(T=await T.catch(oe=>{G=oe,W=!0}),ve!==f[b][0]){if(W)throw G;return T}else W&&q&&u(G)&&(s=!0,h({data:Y,_c:le}));if(s&&!W)if(Ee(s)){let oe=s(T,Y);h({data:oe,error:le,_c:le})}else h({data:T,error:le,_c:le});if(f[b][1]=Do(),Promise.resolve(E()).then(()=>{h({_c:le})}),W){if(m)throw G;return}return T}}var fe,Ke,Ye,le,po,P,Ee,$e,Cn,Wr,vn,Zr,uo,An,yl,wl,Mn,Rr,Dc,Kr,Yr,Nc,Vc,Bc,xl,Sl,In,Lt,Xr,mo,_r,$r,Tn,Hc,Jr,Uc,Pn,No,Oc,Do,bl,Qr,Gc,vl,Ln,Tl,En,ei,kn,ti,oi=S(()=>{"use client";fe=p(x(),1);hl();Ke=new WeakMap,Ye=()=>{},le=Ye(),po=Object,P=e=>e===le,Ee=e=>typeof e=="function",$e=(e,t)=>({...e,...t}),Cn=e=>Ee(e.then),Wr={},vn={},Zr="undefined",uo=typeof window!=Zr,An=typeof document!=Zr,yl=uo&&"Deno"in window,wl=()=>uo&&typeof window.requestAnimationFrame!=Zr,Mn=(e,t)=>{let o=Ke.get(e);return[()=>!P(t)&&e.get(t)||Wr,n=>{if(!P(t)){let r=e.get(t);t in vn||(vn[t]=r),o[5](t,$e(r,n),r||Wr)}},o[6],()=>!P(t)&&t in vn?vn[t]:!P(t)&&e.get(t)||Wr]},Rr=!0,Dc=()=>Rr,[Kr,Yr]=uo&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Ye,Ye],Nc=()=>{let e=An&&document.visibilityState;return P(e)||e!=="hidden"},Vc=e=>(An&&document.addEventListener("visibilitychange",e),Kr("focus",e),()=>{An&&document.removeEventListener("visibilitychange",e),Yr("focus",e)}),Bc=e=>{let t=()=>{Rr=!0,e()},o=()=>{Rr=!1};return Kr("online",t),Kr("offline",o),()=>{Yr("online",t),Yr("offline",o)}},xl={isOnline:Dc,isVisible:Nc},Sl={initFocus:Vc,initReconnect:Bc},In=!fe.default.useId,Lt=!uo||yl,Xr=e=>wl()?window.requestAnimationFrame(e):setTimeout(e,1),mo=Lt?fe.useEffect:fe.useLayoutEffect,_r=typeof navigator<"u"&&navigator.connection,$r=!Lt&&_r&&(["slow-2g","2g"].includes(_r.effectiveType)||_r.saveData),Tn=new WeakMap,Hc=e=>po.prototype.toString.call(e),Jr=(e,t)=>e===`[object ${t}]`,Uc=0,Pn=e=>{let t=typeof e,o=Hc(e),n=Jr(o,"Date"),r=Jr(o,"RegExp"),i=Jr(o,"Object"),s,l;if(po(e)===e&&!n&&!r){if(s=Tn.get(e),s)return s;if(s=++Uc+"~",Tn.set(e,s),Array.isArray(e)){for(s="@",l=0;l<e.length;l++)s+=Pn(e[l])+",";Tn.set(e,s)}if(i){s="#";let a=po.keys(e).sort();for(;!P(l=a.pop());)P(e[l])||(s+=l+":"+Pn(e[l])+",");Tn.set(e,s)}}else s=n?e.toJSON():t=="symbol"?e.toString():t=="string"?JSON.stringify(e):""+e;return s},No=e=>{if(Ee(e))try{e=e()}catch{e=""}let t=e;return e=typeof e=="string"?e:(Array.isArray(e)?e.length:e)?Pn(e):"",[e,t]},Oc=0,Do=()=>++Oc;bl=(e,t)=>{for(let o in e)e[o][0]&&e[o][0](t)},Qr=(e,t)=>{if(!Ke.has(e)){let o=$e(Sl,t),n=Object.create(null),r=Fn.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 b=s[m];if(b)for(let w of b)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,bl.bind(le,n,0))),d=o.initReconnect(setTimeout.bind(le,bl.bind(le,n,1)));i=()=>{m&&m(),d&&d(),Ke.delete(e)}}};return u(),[e,r,u,i]}return[e,Ke.get(e)[4]]},Gc=(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)},vl=Sn,[Ln,Tl]=Qr(new Map),En=$e({onLoadingSlow:Ye,onSuccess:Ye,onError:Ye,onErrorRetry:Gc,onDiscarded:Ye,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:$r?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:$r?5e3:3e3,compare:vl,isPaused:()=>!1,cache:Ln,mutate:Tl,fallback:{}},xl),ei=(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},kn=(0,fe.createContext)({}),ti=e=>{let{value:t}=e,o=(0,fe.useContext)(kn),n=Ee(t),r=(0,fe.useMemo)(()=>n?t(o):t,[n,o,t]),i=(0,fe.useMemo)(()=>n?r:ei(o,r),[n,o,r]),s=r&&r.provider,l=(0,fe.useRef)(le);s&&!l.current&&(l.current=Qr(s(i.cache||Ln),r));let a=l.current;return a&&(i.cache=a[0],i.mutate=a[1]),mo(()=>{if(a)return a[2]&&a[2](),a[3]},[]),(0,fe.createElement)(kn.Provider,$e(e,{value:i}))}});var Al,Pl=S(()=>{Al="$inf$"});var kl=S(()=>{});var co,Cl,zc,jc,Wc,_c,Jc,Rc,Ml,Il,Fl=S(()=>{oi();oi();gl();Pl();co=p(x(),1);kl();Cl=uo&&window.__SWR_DEVTOOLS_USE__,zc=Cl?window.__SWR_DEVTOOLS_USE__:[],jc=()=>{Cl&&(window.__SWR_DEVTOOLS_REACT__=co.default)},Wc=e=>Ee(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(e[1]===null?e[2]:e[1])||{}],_c=()=>{let e=(0,co.useContext)(kn);return(0,co.useMemo)(()=>$e(En,e),[e])},Jc=e=>(t,o,n)=>e(t,o&&((...i)=>{let[s]=No(t),[,,,l]=Ke.get(Ln);if(s.startsWith(Al))return o(...i);let a=l[s];return P(a)?o(...i):(delete l[s],a)}),n),Rc=zc.concat(Jc),Ml=e=>function(...o){let n=_c(),[r,i,s]=Wc(o),l=ei(n,s),a=e,{use:u}=l,m=(u||[]).concat(Rc);for(let d=m.length;d--;)a=m[d](a);return a(r,i||l.fetcher||null,l)},Il=(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())}};jc()});var pe,ii,Kc,gb,ni,ri,Ll,Yc,$c,fb,rt,go=S(()=>{pe=p(x(),1),ii=p(ul(),1);Fl();Kc=()=>{},gb=Kc(),ni=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}}),ri={dedupe:!0},Ll=Promise.resolve(le),Yc=()=>Ye,$c=(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:b}=o,[w,h,y,f]=Ke.get(n),[g,v]=No(e),E=(0,pe.useRef)(!1),T=(0,pe.useRef)(!1),G=(0,pe.useRef)(g),W=(0,pe.useRef)(t),ve=(0,pe.useRef)(o),q=()=>ve.current,Pe=()=>q().isVisible()&&q().isOnline(),[ie,me,Y,oe]=Mn(n,g),Me=(0,pe.useRef)({}).current,Ve=P(s)?P(o.fallback)?le:o.fallback[g]:s,lt=(N,Z)=>{for(let X in Me){let Q=X;if(Q==="data"){if(!r(N[Q],Z[Q])&&(!P(N[Q])||!r(Zt,Z[Q])))return!1}else if(Z[Q]!==N[Q])return!1}return!0},_e=!E.current,ke=(0,pe.useMemo)(()=>{let N=ie(),Z=oe(),X=se=>{let Je=$e(se);return delete Je._k,(()=>{if(!g||!t||q().isPaused())return!1;if(_e&&!P(l))return l;let Ao=P(Ve)?Je.data:Ve;return i?P(Ao)||a:P(Ao)||a})()?{isValidating:!0,isLoading:!0,...Je}:Je},Q=X(N),et=N===Z?Q:X(Z),He=Q;return[()=>{let se=X(ie());return lt(se,He)?(He.data=se.data,He.isLoading=se.isLoading,He.isValidating=se.isValidating,He.error=se.error,He):(He=se,se)},()=>et]},[n,g]),Be=(0,ii.useSyncExternalStore)((0,pe.useCallback)(N=>Y(g,(Z,X)=>{lt(X,Z)||N()}),[n,g]),ke[0],ke[1]),sr=w[g]&&w[g].length>0,St=Be.data,pt=P(St)?Ve&&Cn(Ve)?ni(Ve):Ve:St,Yt=Be.error,$t=(0,pe.useRef)(pt),Zt=c?P(St)?P($t.current)?pt:$t.current:St:pt,ut=g&&P(pt),Ht=(0,pe.useRef)(null);!Lt&&(0,ii.useSyncExternalStore)(Yc,()=>(Ht.current=!1,Ht),()=>(Ht.current=!0,Ht));let ar=Ht.current;b&&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 vt=!g||!t||q().isPaused()||sr&&!P(Yt)?!1:_e&&!P(l)?l:i?P(pt)?!1:a:P(pt)||a,Xt=_e&&vt,lr=P(Be.isValidating)?Xt:Be.isValidating,Ko=P(Be.isLoading)?Xt:Be.isLoading,Tt=(0,pe.useCallback)(async N=>{let Z=W.current;if(!g||!Z||T.current||q().isPaused())return!1;let X,Q,et=!0,He=N||{},se=!y[g]||!He.dedupe,Je=()=>In?!T.current&&g===G.current&&E.current:g===G.current,To={isValidating:!1,isLoading:!1},Ao=()=>{me(To)},Zi=()=>{let Ue=y[g];Ue&&Ue[1]===Q&&delete y[g]},Xi={isValidating:!0};P(ie().data)&&(Xi.isLoading=!0);try{if(se&&(me(Xi),o.loadingTimeout&&P(ie().data)&&setTimeout(()=>{et&&Je()&&q().onLoadingSlow(g,o)},o.loadingTimeout),y[g]=[Z(v),Do()]),[X,Q]=y[g],X=await X,se&&setTimeout(Zi,o.dedupingInterval),!y[g]||y[g][1]!==Q)return se&&Je()&&q().onDiscarded(g),!1;To.error=le;let Ue=h[g];if(!P(Ue)&&(Q<=Ue[0]||Q<=Ue[1]||Ue[1]===0))return Ao(),se&&Je()&&q().onDiscarded(g),!1;let mt=ie().data;To.data=r(mt,X)?mt:X,se&&Je()&&q().onSuccess(X,g,o)}catch(Ue){Zi();let mt=q(),{shouldRetryOnError:ur}=mt;mt.isPaused()||(To.error=Ue,se&&Je()&&(mt.onError(Ue,g,mt),(ur===!0||Ee(ur)&&ur(Ue))&&(!q().revalidateOnFocus||!q().revalidateOnReconnect||Pe())&&mt.onErrorRetry(Ue,g,mt,Om=>{let mr=w[g];mr&&mr[0]&&mr[0](Ft.ERROR_REVALIDATE_EVENT,Om)},{retryCount:(He.retryCount||0)+1,dedupe:!0})))}return et=!1,Ao(),!0},[g,n]),pr=(0,pe.useCallback)((...N)=>Fn(n,G.current,...N),[]);if(mo(()=>{W.current=t,ve.current=o,P(St)||($t.current=St)}),mo(()=>{if(!g)return;let N=Tt.bind(le,ri),Z=0;q().revalidateOnFocus&&(Z=Date.now()+q().focusThrottleInterval);let Q=Il(g,w,(et,He={})=>{if(et==Ft.FOCUS_EVENT){let se=Date.now();q().revalidateOnFocus&&se>Z&&Pe()&&(Z=se+q().focusThrottleInterval,N())}else if(et==Ft.RECONNECT_EVENT)q().revalidateOnReconnect&&Pe()&&N();else{if(et==Ft.MUTATE_EVENT)return Tt();if(et==Ft.ERROR_REVALIDATE_EVENT)return Tt(He)}});return T.current=!1,G.current=g,E.current=!0,me({_k:v}),vt&&(y[g]||(P(pt)||Lt?N():Xr(N))),()=>{T.current=!0,Q()}},[g]),mo(()=>{let N;function Z(){let Q=Ee(u)?u(ie().data):u;Q&&N!==-1&&(N=setTimeout(X,Q))}function X(){!ie().error&&(m||q().isVisible())&&(d||q().isOnline())?Tt(ri).then(Z):Z()}return Z(),()=>{N&&(clearTimeout(N),N=-1)}},[u,m,d,g]),(0,pe.useDebugValue)(Zt),i){if(!In&&Lt&&ut)throw new Error("Fallback data is required when using Suspense in SSR.");ut&&(W.current=t,ve.current=o,T.current=!1);let N=f[g],Z=!P(N)&&ut?pr(N):Ll;if(ni(Z),!P(Yt)&&ut)throw Yt;let X=ut?Tt(ri):Ll;!P(Zt)&&ut&&(X.status="fulfilled",X.value=!0),ni(X)}return{mutate:pr,get data(){return Me.data=!0,Zt},get error(){return Me.error=!0,Yt},get isValidating(){return Me.isValidating=!0,lr},get isLoading(){return Me.isLoading=!0,Ko}}},fb=po.defineProperty(ti,"defaultValue",{value:En}),rt=Ml($c)});function qe(){return Bn||(Bn=import(Zc+"molstar-chunk.js").catch(function(e){throw Bn=void 0,e})),Bn}var El,Zc,Bn,fo=S(()=>{"use strict";El=typeof document<"u"?document.currentScript?.src:void 0,Zc=El?El.replace(/\/[^/]*$/,"/"):""});var ip,Wn,xi=S(()=>{"use client";dt();ip=p(gt(),1),Wn=(0,ge.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={};At(pp,{default:()=>lp});function sp({children:e}){return Ae.default.createElement(st.Typography,{style:{margin:4}},e)}function lp({handleClose:e}){return Ae.default.createElement(ap.Dialog,{open:!0,maxWidth:"lg",onClose:e,title:"Help"},Ae.default.createElement(st.DialogContent,null,Ae.default.createElement(sp,null,"The procedure for the protein lookup is as follows:",Ae.default.createElement("ul",null,Ae.default.createElement("li",null,"(Automatic lookup) Searches UniProt for the transcript ID or gene name to retrieve the UniProt ID, which is then used to lookup the structure in AlphaFoldDB"),Ae.default.createElement("li",null,"(Manual) Allows you to choose your own structure file from your local machine (e.g. a PDB file predicted by e.g. ColabFold) or supply a specific URL"),Ae.default.createElement("li",null,"The residues from the structure are downloaded, and then you can choose the transcript isoform from the selected gene that best represents the structure. Asterisks are displayed if there is an exact sequence match"),Ae.default.createElement("li",null,"The residues from the structure are finally aligned to the to the selected transcript's protein sequence representation, and this creates a mapping from the reference genome coordinates to positions in the 3-D structure"),Ae.default.createElement("li",null,"Finally the molstar panel is opened, and this contains many specialized features features, plus additional mouseover and selection features supplied by the plugin to connect mouse click actions and mouse hover with coordinates on the linear genome view"))),Ae.default.createElement(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")),Ae.default.createElement(st.Divider,null),Ae.default.createElement(st.DialogActions,null,Ae.default.createElement(st.Button,{onClick:e,color:"primary"},"Close")))}var Ae,ap,st,up=S(()=>{"use strict";Ae=p(x()),ap=p(Oe()),st=p(M())});var ki=V((V0,Sp)=>{Sp.exports=JBrowseExports["@jbrowse/core/pluggableElementTypes"]});var Tp=V((B0,vp)=>{vp.exports=JBrowseExports["@jbrowse/core/util/types/mst"]});var Go=V((H0,Ap)=>{Ap.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 xo,kp,Mi=S(()=>{"use strict";xo=[{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=xo.map(e=>e.value)});async function zo({structure:e,plugin:t,channel:o,spec:n}){let{lociHighlights:r,lociSelects:i}=t.managers.interactivity;if(o==="highlight"?r.clearHighlights():i.deselectAll(),Dd(n)){let{StructureSelection:s,Script:l}=await qe(),a=l.getStructureSelection(m=>m.struct.generator.atomGroups({"residue-test":qd(n)(m),"group-by":m.struct.atomProperty.macromolecular.residueKey()}),e),u=s.toLociWithSourceUnits(a);o==="highlight"?r.highlight({loci:u}):i.select({loci:u})}}var Fi,qd,Dd,Li=S(()=>{"use strict";fo();Fi=e=>e.struct.atomProperty.macromolecular.label_seq_id(),qd=e=>e.kind==="range"?t=>t.core.logic.and([t.core.rel.gre([Fi(t),e.start+1]),t.core.rel.lte([Fi(t),e.end])]):t=>t.core.logic.or(e.residues.map(o=>t.core.rel.eq([Fi(t),o+1]))),Dd=e=>e!==void 0&&(e.kind==="range"?e.end>e.start:e.residues.length>0)});var Lp,Ep,qp,Dp,ht=S(()=>{"use strict";Lp="rgba(255, 105, 180, 0.5)",Ep="2px solid #333",qp="1px solid black",Dp="#999"});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 Zo(i,l,s)}function qi({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,zp.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?qi({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:b}=r,h=b.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 zp,Di=S(()=>{"use strict";zp=p($());Xo()});function Wp(e){return Array.from(e,t=>Od[t])}function _p(e){return e<0?"#cccccc":e<=50?"#ff7d45":e<=70?"#ffdb13":e<=90?"#65cbf3":"#0053d6"}function Jp(e){let t=Math.max(0,Math.min(1,(e-jp)/(Gd-jp))),o=Math.round(51+179*t),n=Math.round(102+38*t),r=Math.round(204+-164*t);return`rgb(${o}, ${n}, ${r})`}function Ni(e,t){return t?e.flatMap((o,n)=>{let r=t[n];return o!==void 0&&r!==void 0?[{col:r,value:o}]:[]}):[]}var Od,jp,Gd,Vi=S(()=>{"use strict";Od={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},jp=-4.5,Gd=4.5});var Ne,Se,Xp,Zd,Qp,eu=S(()=>{"use strict";Ne=p(x()),Se=p(M());Er();Xp=p(_()),Zd=(0,Xp.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=fn(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(Se.Dialog,{open:!0,onClose:a,maxWidth:"md",fullWidth:!0},Ne.default.createElement(Se.DialogTitle,null,"Import Manual Alignment"),Ne.default.createElement(Se.DialogContent,null,Ne.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."),Ne.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?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=`
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(Se.Typography,{color:"error",variant:"body2",sx:{mt:1}},r):null),Ne.default.createElement(Se.DialogActions,null,Ne.default.createElement(Se.Button,{onClick:a},"Cancel"),Ne.default.createElement(Se.Button,{onClick:u,variant:"contained",color:"primary",disabled:!o.trim()},"Apply Alignment"))):null}),Qp=Zd});var tu,ou,nu=S(()=>{"use client";dt();tu=p(gt(),1),ou=(0,ge.createSvgIcon)((0,tu.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune")});var iu=V((Uw,ru)=>{ru.exports=JBrowseExports["@mui/material/Checkbox"]});var au=V((Ow,su)=>{su.exports=JBrowseExports["@mui/material/IconButton"]});var pu=V((Gw,lu)=>{lu.exports=JBrowseExports["@mui/material/ListItemIcon"]});var mu=V((zw,uu)=>{uu.exports=JBrowseExports["@mui/material/ListItemText"]});var du=V((jw,cu)=>{cu.exports=JBrowseExports["@mui/material/Menu"]});var fu=V((Ww,gu)=>{gu.exports=JBrowseExports["@mui/material/MenuItem"]});var bu=V((_w,hu)=>{hu.exports=JBrowseExports["@mui/material/TextField"]});var wu=V((Jw,yu)=>{yu.exports=JBrowseExports["@mui/material/Tooltip"]});var F,xu,L,Su,Xd,vu,Tu=S(()=>{"use strict";F=p(x()),xu=p(Oe()),L=p(M()),Su=p(_());Re();Xd=(0,Su.observer)(function({model:t}){let[o,n]=(0,F.useState)(),[r,i]=(0,F.useState)(""),[s,l]=(0,F.useState)(""),[a,u]=(0,F.useState)("pdb"),[m,d]=(0,F.useState)(""),[c,b]=(0,F.useState)(),{showAddStructureDialog:w}=t,h=()=>{n(void 0),i(""),l(""),d(""),b(void 0),t.setShowAddStructureDialog(!1)},y=async()=>{try{let g,v;a==="pdb"&&r?g=Lo(r):a==="uniprot"&&s?g=io(s.toUpperCase()):a==="url"&&m?g=m:a==="file"&&o&&(v=await o.text()),(g!==void 0||v!==void 0)&&(await t.addStructureAndSuperpose({url:g,data:v}),h())}catch(g){console.error(g),b(g)}};if(!w)return null;let f=a==="url"&&m!==""||a==="file"&&o!==void 0||a==="pdb"&&r!==""||a==="uniprot"&&s!=="";return F.default.createElement(L.Dialog,{open:!0,onClose:h,maxWidth:"sm",fullWidth:!0},F.default.createElement(L.DialogTitle,null,"Add Structure"),F.default.createElement(L.DialogContent,null,c?F.default.createElement(xu.ErrorMessage,{error:c}):null,F.default.createElement(L.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Add another structure to superpose on the existing structure(s)."),F.default.createElement(L.FormControl,{component:"fieldset",sx:{mb:2}},F.default.createElement(L.RadioGroup,{value:a,onChange:g=>{u(g.target.value)}},F.default.createElement(L.FormControlLabel,{value:"pdb",control:F.default.createElement(L.Radio,null),label:"PDB ID"}),F.default.createElement(L.FormControlLabel,{value:"uniprot",control:F.default.createElement(L.Radio,null),label:"UniProt ID (AlphaFold)"}),F.default.createElement(L.FormControlLabel,{value:"url",control:F.default.createElement(L.Radio,null),label:"URL"}),F.default.createElement(L.FormControlLabel,{value:"file",control:F.default.createElement(L.Radio,null),label:"File"}))),a==="pdb"?F.default.createElement(L.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"?F.default.createElement(L.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"?F.default.createElement(L.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"?F.default.createElement("div",{style:{marginBottom:16}},F.default.createElement(L.Button,{variant:"outlined",component:"label"},o?o.name:"Choose File",F.default.createElement("input",{type:"file",hidden:!0,accept:".pdb,.cif,.mmcif,.ent",onChange:({target:g})=>{let v=g.files?.[0];v&&n(v)}})),o?F.default.createElement(L.Typography,{variant:"body2",sx:{mt:1}},"Selected: ",o.name):null):null,F.default.createElement(L.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).")),F.default.createElement(L.DialogActions,null,F.default.createElement(L.Button,{onClick:h},"Cancel"),F.default.createElement(L.Button,{onClick:()=>{y()},variant:"contained",color:"primary",disabled:!f},"Add Structure")))}),vu=Xd});var Au,Pu,Qd,ku,Cu=S(()=>{"use strict";Au=p(x()),Pu=p(_()),Qd=(0,Pu.observer)(function({model:t}){let{structures:o}=t,n=o.map(r=>r.hoverString).filter(Boolean).join(" ");return Au.default.createElement("div",{style:{flex:1,minWidth:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontSize:12},title:n},n?`Hover: ${n}`:"\xA0")}),ku=Qd});var Fu={};At(Fu,{default:()=>Iu});function Ui({children:e}){return bt.default.createElement(Vt.Typography,{style:{margin:4,marginBottom:12}},e)}function Iu({handleClose:e}){return bt.default.createElement(Mu.Dialog,{open:!0,maxWidth:"lg",onClose:e,title:"Protein alignment"},bt.default.createElement(Vt.DialogContent,null,bt.default.createElement(Ui,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"),bt.default.createElement(Ui,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."),bt.default.createElement(Ui,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")),bt.default.createElement(Vt.DialogActions,null,bt.default.createElement(Vt.Button,{onClick:()=>{e()},variant:"contained",color:"primary"},"Close")))}var bt,Mu,Vt,Lu=S(()=>{"use strict";bt=p(x()),Mu=p(Oe()),Vt=p(M())});function Oi({model:e}){return Ro.default.createElement(qu.IconButton,{style:{float:"right"},onClick:()=>{(0,Eu.getSession)(e).queueDialog(t=>[eg,{handleClose:t}])}},Ro.default.createElement(Wn,null))}var Ro,Eu,qu,eg,Du=S(()=>{"use strict";Ro=p(x()),Eu=p($());xi();qu=p(M()),eg=(0,Ro.lazy)(()=>Promise.resolve().then(()=>(Lu(),Fu)))});function Nu(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[b,w]=c.split("=");b==="Note"?m=decodeURIComponent(w??""):b==="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 Gi(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,zi=S(()=>{"use strict";go();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?void 0:{range:{start:o,end:n},left:o*6,width:Math.max((n-o+1)*6,3)}}function rg({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,Vu,Bu,ig,Hu,Uu=S(()=>{"use strict";Qe=p(x()),Vu=p(M()),Bu=p(_());Li();ht();zi();Di();ig=(0,Bu.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=ng(t,l),m=()=>{r(!0),u&&o.setAlignmentHoverRange(u.range)},d=()=>{r(!1),o.setAlignmentHoverRange(void 0)},c=()=>{let y=o.molstarStructure,f=!a;y&&i&&zo({structure:y,plugin:i,channel:"select",spec:f?{kind:"range",start:t.start-1,end:t.end}:void 0}).catch(g=>{console.error(g),o.setError(g)}),f?(o.setSelectedFeatureId(t.uniqueId),Wo({model:o,structureSeqPos:t.start-1,structureSeqEndPos:t.end}).catch(g=>{console.error(g),o.setError(g)})):(o.setSelectedFeatureId(void 0),o.setClickedStructureRange(void 0))};if(!u)return null;let{left:b,width:w}=u,h=Nu(t.type);return Qe.default.createElement(Vu.Tooltip,{title:Qe.default.createElement(rg,{feature:t}),followCursor:!0},Qe.default.createElement("div",{"data-testid":`protein-feature-${t.type}`,"data-feature-id":t.uniqueId,"data-feature-start":t.start,"data-feature-end":t.end,onClick:()=>{c()},onMouseEnter:()=>{m()},onMouseLeave:()=>{d()},style:{position:"absolute",left:b,top:0,width:w,height:o.trackHeight,backgroundColor:h,opacity:n||a?.9:.6,cursor:"pointer",borderRadius:2,border:a?Ep:n?qp:"none",boxSizing:"border-box"}}))}),Hu=ig});var Ou,Gu,zu=S(()=>{"use client";dt();Ou=p(gt(),1),Gu=(0,ge.createSvgIcon)((0,Ou.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")});var vo,Xn,ju,sg,Wu,_u=S(()=>{"use strict";vo=p(x());zu();Xn=p(M()),ju=p(_());ht();sg=(0,ju.observer)(function({type:t,labelWidth:o,model:n}){return vo.default.createElement(Xn.Tooltip,{title:t,placement:"left"},vo.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}},vo.default.createElement(Xn.IconButton,{onClick:r=>{r.stopPropagation(),n.hideFeatureType(t)},title:`Hide ${t} track`,sx:{p:0,color:Dp}},vo.default.createElement(Gu,{sx:{fontSize:n.trackHeight}})),vo.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis"}},t)))}),Wu=sg});var Ju,Ru,ag,Ku,Yu=S(()=>{"use strict";Ju=p(x()),Ru=p(_());ht();ag=(0,Ru.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:Lp,pointerEvents:"none",zIndex:10}})}),Ku=ag});var yt,Qn,lg,$u,Zu,Xu=S(()=>{"use strict";yt=p(x()),Qn=p(_());ht();Uu();_u();Yu();lg=(0,Qn.observer)(function({features:t,model:o,sequenceLength:n}){return yt.default.createElement("div",{style:{position:"relative",height:o.trackHeight,width:n*6,marginBottom:o.trackGap}},t.map(r=>yt.default.createElement(Hu,{key:r.uniqueId,feature:r,model:o})))}),$u=(0,Qn.observer)(function({data:t,labelWidth:o,model:n}){return yt.default.createElement(yt.default.Fragment,null,t.visibleTypes.map(r=>yt.default.createElement(Wu,{key:r,type:r,labelWidth:o,model:n})))}),Zu=(0,Qn.observer)(function({data:t,model:o}){return yt.default.createElement("div",{style:{position:"relative"},onMouseMove:n=>{let r=n.currentTarget.getBoundingClientRect(),i=Math.floor((n.clientX-r.left)/6);i>=0&&i<t.sequenceLength&&o.hoverAlignmentPosition(i)},onMouseLeave:()=>{o.setHoveredPosition(void 0)}},t.visibleTypes.map(n=>yt.default.createElement(lg,{key:n,features:t.groupedFeatures[n],model:o,sequenceLength:t.sequenceLength})),yt.default.createElement(Ku,{model:o}))})});var Bt,Qu,em,pg,ji,tm=S(()=>{"use strict";Bt=p(x()),Qu=p(M()),em=p(_());ht();pg=(0,em.observer)(function({cells:t,colorFor:o,formatValue:n,sequenceLength:r,model:i}){let[s,l]=(0,Bt.useState)(void 0),a=(0,Bt.useMemo)(()=>{let m=new Map;for(let d of t)m.set(d.col,d.value);return m},[t]),u=s===void 0?void 0:a.get(s);return Bt.default.createElement(Qu.Tooltip,{title:u===void 0?"":n(u),followCursor:!0},Bt.default.createElement("div",{style:{position:"relative",height:i.trackHeight,width:r*6,marginBottom:i.trackGap},onMouseMove:m=>{let d=m.currentTarget.getBoundingClientRect(),c=Math.floor((m.clientX-d.left)/6);l(c),c>=0&&c<r&&i.hoverAlignmentPosition(c)},onMouseLeave:()=>{l(void 0),i.setHoveredPosition(void 0)}},t.map(m=>Bt.default.createElement("div",{key:m.col,style:{position:"absolute",left:m.col*6,top:0,width:6,height:i.trackHeight,backgroundColor:o(m.value)}}))))}),ji=pg});var We,Jt,ug,mg,cg,om,nm,dg,er,rm=S(()=>{"use strict";We=p(x()),Jt=p(_());ht();ug=(0,Jt.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))}),mg=(0,Jt.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"}}))}),cg=(0,Jt.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}),om=(0,Jt.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"}})}),nm=(0,Jt.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(mg,{model:t,height:n}),We.default.createElement(om,{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(om,{range:t.alignmentHoverRange,strLength:o,background:"rgba(255, 165, 0, 0.4)",height:n}),We.default.createElement(cg,{model:t,strLength:o,height:n}))}),dg=(0,Jt.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(ug,{str:o}))}),er=dg});function gg(e){let t={};for(let o of e)t[o.type]??=[],t[o.type].push(o);return t}function Wi(e,t){let{features:o,isLoading:n,error:r}=Gi(t),{pairwiseAlignment:i,hiddenFeatureTypes:s}=e;if(!t||n||r||!o||!i)return{data:void 0,isLoading:n,error:r};let l=i.alns[0].seq.length,a=gg(o),u=Object.keys(a),m=u.filter(d=>!s.has(d));return{data:{featureTypes:u,visibleTypes:m,groupedFeatures:a,sequenceLength:l},isLoading:!1,error:void 0}}var im=S(()=>{"use strict";zi()});function am({label:e,title:t,height:o}){return k.default.createElement(Rt.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,Rt,lm,pm,fg,um,mm=S(()=>{"use strict";k=p(x()),Rt=p(M()),lm=p(Qt()),pm=p(_());ht();Du();Xu();tm();rm();im();Vi();fg=(0,pm.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}=Wi(t,i);if((0,k.useEffect)(()=>(0,lm.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,b=o.alns[1].seq,w=o.consensus;return k.default.createElement("div",null,k.default.createElement(Oi,{model:t}),k.default.createElement(Rt.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(Rt.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(Rt.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(Rt.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($u,{data:u,labelWidth:50,model:t}):null:null,r&&s.length>0?k.default.createElement(am,{label:"pLDDT",title:"AlphaFold per-residue confidence (pLDDT)",height:t.trackHeight+t.trackGap}):null,r&&l.length>0?k.default.createElement(am,{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(nm,{model:t,strLength:c.length,height:42}),k.default.createElement("div",{style:{height:14}},k.default.createElement(er,{model:t,str:c})),k.default.createElement("div",{style:{height:14}},k.default.createElement(er,{model:t,str:w})),k.default.createElement("div",{style:{height:14}},k.default.createElement(er,{model:t,str:b}))),r&&u?k.default.createElement(Zu,{data:u,model:t}):null,r&&s.length>0?k.default.createElement(ji,{cells:s,colorFor:_p,formatValue:h=>`pLDDT ${h.toFixed(0)}`,sequenceLength:c.length,model:t}):null,r&&l.length>0?k.default.createElement(ji,{cells:l,colorFor:Jp,formatValue:h=>`Kyte-Doolittle ${h.toFixed(1)}`,sequenceLength:c.length,model:t}):null)))}),um=fg});function bg({checked:e,label:t,onToggle:o}){return U.default.createElement(tr.default,{onClick:()=>{o()},dense:!0},U.default.createElement(fm.default,null,U.default.createElement(dm.default,{checked:e,size:"small",edge:"start",disableRipple:!0})),U.default.createElement(_i.default,null,t))}function yg(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 U,cm,dm,gm,fm,_i,hm,tr,bm,ym,or,hg,wg,xg,wm,xm=S(()=>{"use strict";U=p(x()),cm=p(Oe());nu();dm=p(iu()),gm=p(au()),fm=p(pu()),_i=p(mu()),hm=p(du()),tr=p(fu()),bm=p(bu()),ym=p(wu()),or=p(_());Tu();Cu();mm();Mi();hg=(0,or.observer)(function({model:t}){return U.default.createElement(bm.default,{select:!0,size:"small",label:"Color",value:t.colorScheme,onChange:o=>{let n=xo.find(r=>r.value===o.target.value);n&&t.setColorScheme(n.value)},slotProps:{select:{native:!1}},sx:{minWidth:180}},xo.map(o=>U.default.createElement(tr.default,{key:o.value,value:o.value},o.label)))});wg=(0,or.observer)(function({model:t}){let[o,n]=(0,U.useState)(null),r=t.structures.some(i=>i.hiddenFeatureTypes.size>0);return U.default.createElement(U.default.Fragment,null,U.default.createElement(ym.default,{title:"Display settings"},U.default.createElement(gm.default,{size:"small",onClick:i=>{n(i.currentTarget)}},U.default.createElement(ou,{fontSize:"small"}))),U.default.createElement(hm.default,{anchorEl:o,open:!!o,onClose:()=>{n(null)}},yg(t).map(i=>U.default.createElement(bg,{key:i.label,checked:i.checked,label:i.label,onToggle:i.onToggle})),r?U.default.createElement(tr.default,{dense:!0,onClick:()=>{for(let i of t.structures)i.showAllFeatureTypes()}},U.default.createElement(_i.default,{inset:!0},"Restore hidden feature tracks")):null))}),xg=(0,or.observer)(function({model:t}){let{structures:o,showAlignment:n}=t;return U.default.createElement("div",null,U.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},U.default.createElement(ku,{model:t}),U.default.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center",flexShrink:0}},U.default.createElement(hg,{model:t}),U.default.createElement(wg,{model:t}))),n?o.filter(r=>r.pairwiseAlignment||r.alignmentPending).map((r,i)=>U.default.createElement("div",{key:i},r.pairwiseAlignment?U.default.createElement(um,{model:r}):U.default.createElement(cm.LoadingEllipses,{message:"Loading pairwise alignment"}))):null,U.default.createElement(vu,{model:t}))}),wm=xg});var Sm,vm=S(()=>{"use strict";Sm=`
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 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)}
14
+ `});function Ji({showControls:e,model:t}){let o=(0,xt.useRef)(null),n=(0,xt.useRef)(null),[r,i]=(0,xt.useState)(),[s,l]=(0,xt.useState)(!0);return(0,xt.useEffect)(()=>{let a={cancelled:!1};return(async()=>{try{if(!o.current)return;let{GeometryExport:u,MAQualityAssessment:m,PluginConfig:d,PluginSpec:c,DefaultPluginUISpec:b,createPluginUI:w,renderReact18:h}=await qe(),y=document.createElement("div");o.current.append(y),a.host=y;let f=b(),g=await w({target:y,render:h,spec:{...b(),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(),y.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,Tm.isAlive)(t)&&t.setMolstarPluginContext(void 0),a.plugin?.dispose(),a.host?.remove()}},[]),(0,xt.useEffect)(()=>{let a={cancelled:!1};return(async()=>{let u=n.current;if(u){let{PluginCommands:m}=await qe();a.cancelled||await m.Layout.Update(u,{state:{showControls:e}})}})(),()=>{a.cancelled=!0}},[e]),{parentRef:o,error:r,loading:s}}var xt,Tm,Am=S(()=>{"use strict";xt=p(x()),Tm=p(Go());fo()});var km={};At(km,{default:()=>Tg});var at,Kt,Ri,Pm,Sg,vg,Tg,Cm=S(()=>{"use strict";at=p(x()),Kt=p(Oe()),Ri=p(_());eu();xm();vm();Am();Pm=document.createElement("style");Pm.append(Sm);document.head.append(Pm);Sg=(0,Ri.observer)(function({model:t}){let{showControls:o}=t,{parentRef:n,error:r,loading:i}=Ji({showControls:o,model:t});return r?at.default.createElement(Kt.ErrorMessage,{error:r}):at.default.createElement(vg,{model:t,parentRef:n,loading:i})}),vg=(0,Ri.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(Kt.ErrorMessage,{error:s}):null,n?at.default.createElement(Kt.LoadingEllipses,{message:"Loading protein viewer"}):at.default.createElement(wm,{model:t}),at.default.createElement("div",{ref:o,style:{position:"relative",width:r,height:i}}),at.default.createElement(Kt.ResizeHandle,{style:{height:4,background:"grey"},onDrag:u=>t.setHeight(t.height+u)}),at.default.createElement(Qp,{model:t}))}),Tg=Sg});var Nm={};At(Nm,{default:()=>nr});var Em,rr,qm,Dm,nr,Vm=S(()=>{"use strict";Em=p(sn()),rr=p($()),qm=p(an()),Dm=p(ln()),nr=class extends Em.BaseFeatureDataAdapter{static capabilities=["getFeatures","getRefNames"];feats;async loadDataP(){let{features:t}=JSON.parse(await(0,qm.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,Dm.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 kg={};At(kg,{default:()=>ir});var Um=p(ts());var Ys=p(x());var ct=p(x()),Rs=p(_());var ms=p(x()),cs=p($()),ds=p(_());var ls=p(x()),ps=p($()),us=p(_());var ss=p(tt()),as=(0,ss.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 $o(e){return e.views.find(o=>o.type==="ProteinView")}var Rm=(0,us.observer)(function({assemblyName:t,start:o,end:n,refName:r,model:i}){let{cx:s,classes:l}=as(),{assemblyManager:a}=(0,ps.getSession)(i),{offsetPx:u}=i,d=a.get(t)?.getCanonicalRefName(r)??r,c=i.bpToPx({refName:d,coord:o}),b=i.bpToPx({refName:d,coord:n});if(c&&b){let w=Math.max(Math.abs(b.offsetPx-c.offsetPx),3),h=Math.min(c.offsetPx,b.offsetPx)-u;return ls.default.createElement("div",{className:s(l.highlight,w<=3?l.thinborder:void 0),style:{left:h,width:w}})}else return null}),Pt=Rm;function kt(e){return!!e&&typeof e=="object"&&"hoverPosition"in e&&!!e.hoverPosition&&typeof e.hoverPosition=="object"&&"coord"in e.hoverPosition&&"refName"in e.hoverPosition}function cr(e){return Object.fromEntries(Object.entries(e).map(([t,o])=>[o,+t]))}var Km=(0,ds.observer)(function({model:t}){let o=(0,cs.getSession)(t),{views:n,hovered:r}=o;if(kt(r)&&n.some(i=>i.type==="ProteinView")){let{assemblyNames:i}=t,{coord:s,refName:l}=r.hoverPosition;return ms.default.createElement(Pt,{model:t,start:s-1,end:s,refName:l,assemblyName:i[0]})}return null}),gs=Km;var vs=p(x()),en=p($()),Ts=p(_());Qo();Po();var Ym=(0,Ts.observer)(function({model:t}){let o=(0,en.getSession)(t),{hovered:n}=o,{assemblyNames:r,id:i}=t;if(!r[0])return null;let l=Ut.get(i);if(!l||!kt(n))return null;let{coord:a}=n.hoverPosition,u=new en.SimpleFeature(l.feature),m=eo(u),{g2p:d}=m,c=d[a-1];return c===void 0?null:vs.default.createElement(Pt,{model:t,start:c,end:c+1,refName:l.uniprotId,assemblyName:l.uniprotId})}),As=Ym;var Ps=p(x()),ks=p($()),Cs=p(_());Qo();var $m=(0,Cs.observer)(function({model:t}){let o=(0,ks.getSession)(t),{hovered:n}=o,{assemblyNames:r,id:i}=t;if(!kt(n))return null;let{coord:s,refName:l}=n.hoverPosition;if(Ut.getByUniprotId(l,o)?.connectedViewId!==i)return null;let u=r[0];if(!u)return null;let m=Ut.getGenomeHighlightForProteinPosition(l,s-1,o);return m?Ps.default.createElement(Pt,{model:t,start:m.start,end:m.end,refName:m.refName,assemblyName:u}):null}),Ms=$m;var fr=p(x()),hr=p(_());var tn=p(x()),Is=p($()),Fs=p(_());var Zm=(0,Fs.observer)(function({model:t,field:o}){let n=(0,Is.getSession)(t),{assemblyManager:r}=n,{assemblyNames:i}=t,s=$o(n),l=i[0];return(l?r.get(l):void 0)&&l?tn.default.createElement(tn.default.Fragment,null,s?.structures.flatMap((u,m)=>u[o].map((d,c)=>tn.default.createElement(Pt,{key:`${d.refName}-${d.start}-${d.end}-${m}-${c}`,start:d.start,end:d.end,refName:d.refName,assemblyName:l,model:t})))):null}),gr=Zm;var Ls=(0,hr.observer)(function({model:t}){return fr.default.createElement(gr,{model:t,field:"clickGenomeHighlights"})}),Es=(0,hr.observer)(function({model:t}){return fr.default.createElement(gr,{model:t,field:"hoverGenomeHighlights"})});var js=p(x()),Ws=p($()),to=p(Qt()),_s=p(_());function Xm(e){return e.replace(/[-.]/g,"")}function qs(e,t){return e&&t?[...e].find(([,o])=>Xm(o)===t)?.[0]:void 0}ce();var oc=(0,_s.observer)(function({model:t}){let o=(0,Ws.getSession)(t),{views:n}=o,r=$o(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,to.autorun)(()=>{let u=r.primaryStructure?.structureSequences?.[0];a=qs(s.rowMap,u===void 0?void 0:ee(u))})),s.setMousePos){let{setMousePos:u}=s;l.push((0,to.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,to.autorun)(()=>{let u=s.mouseCol,m=r.primaryStructure;if(m&&!(0,to.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}),Js=oc;var nc=(0,Rs.observer)(function({model:t}){return ct.default.createElement(ct.default.Fragment,null,ct.default.createElement(Ls,{model:t}),ct.default.createElement(Es,{model:t}),ct.default.createElement(Ms,{model:t}),ct.default.createElement(As,{model:t}),ct.default.createElement(gs,{model:t}),ct.default.createElement(Js,{model:t}))}),Ks=nc;function yr(e){e.addToExtensionPoint("LinearGenomeView-TracksContainerComponent",(t,{model:o})=>[...t,Ys.default.createElement(Ks,{key:"highlight_protein_viewer_protein3d",model:o})])}var la=p(rn());var Xs=p(oo());var rc=(0,Xs.ConfigurationSchema)("AlphaFoldConfidenceAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}}},{explicitlyTyped:!0}),Qs=rc;function wr(e){e.addAdapterType(()=>new la.default({name:"AlphaFoldConfidenceAdapter",displayName:"AlphaFoldConfidence adapter",configSchema:Qs,getAdapterClass:()=>Promise.resolve().then(()=>(aa(),sa)).then(t=>t.default)}))}var ba=p(rn());var pa=p(oo());var ic=(0,pa.ConfigurationSchema)("AlphaMissensePathogenicityAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}}},{explicitlyTyped:!0}),ua=ic;function xr(e){e.addAdapterType(()=>new ba.default({name:"AlphaMissensePathogenicityAdapter",displayName:"AlphaMissensePathogenicity adapter",configSchema:ua,getAdapterClass:()=>Promise.resolve().then(()=>(ha(),fa)).then(t=>t.default)}))}var Rn=p($());dt();var Sa=p(gt(),1),va=(0,ge.createSvgIcon)((0,Sa.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add");var he=p(x()),bp=p(Oe()),Jn=p($()),wo=p(M());var R=p(x()),zn=p(Oe()),Dt=p(M()),Wl=p(_()),_l=p(tt());var Fe=p(x()),Mo=p(M());var no=p(x()),Ia=p(M());var Gt=p(x()),ka=p($()),Ca=p(M()),Ma=p(tt());var Sr=p(x()),cn=p(M()),Pa=p(tt()),sc=(0,Pa.makeStyles)()({block:{display:"block"}});function vr({checked:e,disabled:t,label:o,onChange:n}){let{classes:r}=sc();return Sr.default.createElement(cn.FormControlLabel,{disabled:t,className:r.block,control:Sr.default.createElement(cn.Checkbox,{checked:e,onChange:n}),label:o})}ce();var ac=(0,Ma.makeStyles)()({textAreaFont:{fontFamily:"Courier New",whiteSpace:"pre"}});function Tr({structureName:e,structureSequence:t,isoformSequences:o}){let{classes:n}=ac(),[r,i]=(0,Gt.useState)(!1),s=Object.fromEntries(Object.entries(o).map(([m,d])=>[m,{...d,seq:ee(d.seq)}])),l=Object.entries(s).find(([m,d])=>t===d.seq),a=`${e} (structure residues)`,u=(0,ka.max)([a.length,...Object.entries(s).map(([m,d])=>Ie(d.feature).length)]);return Gt.default.createElement(Gt.default.Fragment,null,Gt.default.createElement(vr,{onChange:m=>{i(m.target.checked)},label:"Show in FASTA format?",checked:r}),Gt.default.createElement(Ca.TextField,{variant:"outlined",multiline:!0,minRows:5,maxRows:10,fullWidth:!0,value:r?[`>${a}
15
+ ${t}`,...Object.values(s).map(({feature:m,seq:d})=>`>${Ie(m)}
16
16
  ${d}`)].join(`
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:
17
+ `):[`${a.padEnd(u)}${l?"*":" "} ${t}`,l?`${Ie(l[1].feature).padEnd(u)}* ${l[1].seq}`:void 0,...Object.entries(s).filter(([m])=>m!==l?.[0]).map(([m,d])=>`${Ie(d.feature).padEnd(u)} ${d.seq}`)].filter(m=>!!m).join(`
18
+ `),slotProps:{input:{readOnly:!0,classes:{input:n.textAreaFont}}}}))}function Co({structureSequence:e,structureName:t,isoformSequences:o}){let[n,r]=(0,no.useState)(!1);return no.default.createElement("div",{style:{margin:10}},no.default.createElement(Ia.Button,{variant:"contained",color:"primary",onClick:()=>{r(!n)}},n?"Hide all isoform protein sequences":"Show all isoform protein sequences"),n?no.default.createElement(Tr,{structureSequence:e,structureName:t,isoformSequences:o}):null)}var Ar=p(x());dt();var Fa=p(gt(),1),La=(0,ge.createSvgIcon)((0,Fa.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 Ea=p(M());function Te(e){let{children:t,...o}=e;return Ar.default.createElement(Ea.Link,{...o,target:"_blank",rel:"noreferrer"},t," ",Ar.default.createElement(La,{fontSize:"small"}))}ce();function lc({uniprotId:e}){return Fe.default.createElement(Mo.Typography,null,"No structure found for this UniProtID in AlphaFoldDB"," ",Fe.default.createElement(Te,{href:`https://alphafold.ebi.ac.uk/search/text/${e}`},"(search for results)"))}function Pr({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(Mo.Typography,null,"UniProt link:"," ",Fe.default.createElement(Te,{href:`https://www.uniprot.org/uniprotkb/${e}/entry`},e)),Fe.default.createElement(Mo.Typography,null,"AlphaFoldDB link: ",Fe.default.createElement(Te,{href:r},r))),o?Fe.default.createElement(Co,{structureSequence:o,structureName:e,isoformSequences:n}):Fe.default.createElement(lc,{uniprotId:e})):Fe.default.createElement(Mo.Typography,null,"Searching"," ",t?Ie(t):"transcript"," ","for UniProt ID")}var It=p(x()),nt=p(M());ce();function pc(e){let t=nn(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:pc(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 ae=p(x()),rl=p(Oe()),il=p($());dt();var qa=p(gt(),1),Da=(0,ge.createSvgIcon)((0,qa.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");dt();var Na=p(gt(),1),ro=(0,ge.createSvgIcon)((0,Na.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 ze=p(M());var ft=p(x()),Le=p(M());function Cr({open:e,onClose:t,options:o}){return ft.default.createElement(Le.Dialog,{open:e,onClose:t},ft.default.createElement(Le.DialogTitle,null,"Launch options"),ft.default.createElement(Le.DialogContent,null,ft.default.createElement(Le.MenuList,null,o.map(n=>ft.default.createElement(Le.MenuItem,{key:n.key,onClick:n.onClick},ft.default.createElement("div",null,ft.default.createElement(Le.Typography,{variant:"body1"},n.title),ft.default.createElement(Le.Typography,{variant:"body2",color:"text.secondary"},n.description)))))))}var Ge=p(x()),de=p(M());gn();function Ir({open:e,onClose:t}){let[o,n]=(0,Ge.useState)(()=>Mr());return Ge.default.createElement(de.Dialog,{open:e,onClose:()=>{t()}},Ge.default.createElement(de.DialogTitle,null,"Launch settings"),Ge.default.createElement(de.DialogContent,null,Ge.default.createElement(de.FormGroup,null,Ge.default.createElement(de.FormControlLabel,{control:Ge.default.createElement(de.Checkbox,{checked:o}),label:"Open protein view side-by-side with the genome view",onChange:(r,i)=>{n(i),Ba(i)}})),Ge.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.")),Ge.default.createElement(de.DialogActions,null,Ge.default.createElement(de.Button,{variant:"contained",onClick:()=>{t()}},"Close")))}var Nr=p(x()),Wa=p(M());var C=p(x());var A=p(M());Er();var qr={NEEDLEMAN_WUNSCH:"needleman_wunsch",SMITH_WATERMAN:"smith_waterman"},Io="smith_waterman",fc=["needleman_wunsch","smith_waterman"];function za(e){return fc.find(t=>t===e)??Io}var ja={needleman_wunsch:"Needleman-Wunsch",smith_waterman:"Smith-Waterman"};function Dr({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)(),b=()=>{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 y=fn(u.trim());o(y)}catch(y){c(`Failed to parse alignment: ${y}`);return}r(!1)},h=()=>{a(e),m(""),c(void 0),r(!1)};return C.default.createElement(C.default.Fragment,null,C.default.createElement(A.IconButton,{onClick:b,size:"small",title:"Alignment settings"},C.default.createElement(ro,null)),C.default.createElement(A.Dialog,{open:n,onClose:h,maxWidth:"sm",fullWidth:!0},C.default.createElement(A.DialogTitle,null,"Alignment Settings"),C.default.createElement(A.DialogContent,null,C.default.createElement(A.Tabs,{value:i,onChange:(y,f)=>{s(f)},sx:{mb:2}},C.default.createElement(A.Tab,{label:"Automatic"}),C.default.createElement(A.Tab,{label:"Manual",disabled:!o})),i===0?C.default.createElement(C.default.Fragment,null,C.default.createElement(A.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2}},"Choose the algorithm for aligning transcript sequences to protein structures."),C.default.createElement(A.FormControl,{component:"fieldset"},C.default.createElement(A.FormLabel,{component:"legend"},"Algorithm"),C.default.createElement(A.RadioGroup,{value:l,onChange:y=>{a(y.target.value)}},C.default.createElement(A.FormControlLabel,{value:qr.SMITH_WATERMAN,control:C.default.createElement(A.Radio,null),label:"Smith-Waterman (local alignment)"}),C.default.createElement(A.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(A.FormControlLabel,{value:qr.NEEDLEMAN_WUNSCH,control:C.default.createElement(A.Radio,null),label:"Needleman-Wunsch (global alignment)"}),C.default.createElement(A.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(A.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(A.TextField,{multiline:!0,rows:10,fullWidth:!0,placeholder:`Example:
19
19
  a MKAAYLSMFGKEDHKPFGD
20
20
  |||||||||||||||||||
21
- b MKAAYLSMFGKEDHKPFGD`,value:u,onChange:b=>{m(b.target.value),c(void 0)},sx:{fontFamily:"monospace",fontSize:12}}),d?C.default.createElement(P.Typography,{color:"error",variant:"body2",sx:{mt:1}},d):null)),C.default.createElement(P.DialogActions,null,C.default.createElement(P.Button,{onClick: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
21
+ b MKAAYLSMFGKEDHKPFGD`,value:u,onChange:y=>{m(y.target.value),c(void 0)},sx:{fontFamily:"monospace",fontSize:12}}),d?C.default.createElement(A.Typography,{color:"error",variant:"body2",sx:{mt:1}},d):null)),C.default.createElement(A.DialogActions,null,C.default.createElement(A.Button,{onClick:h},"Cancel"),C.default.createElement(A.Button,{onClick:w,variant:"contained",color:"primary",disabled:i===1&&!u.trim()},i===0?"Save":"Apply Alignment"))))}function Fo({alignmentAlgorithm:e,onAlignmentAlgorithmChange:t}){return Nr.default.createElement(Wa.Typography,{variant:"body2",sx:{mr:2,display:"flex",alignItems:"center"}},"Transcript and structure sequences differ, will run"," ",ja[e]??e," ","alignment",Nr.default.createElement(Dr,{value:e,onChange:t}))}var Ra=p(x());async function _a(e,t,o){try{await e(),t?.()}catch(n){console.error(n),o?.(n)}}function Ja({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")}function hn(e,t){let[o,n]=(0,Ra.useState)();return{runLaunch:i=>()=>{t?.(),_a(i,e,n)},launchError:o}}Re();function Hr({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:b}){let[w,h]=(0,ae.useState)(!1),[y,f]=(0,ae.useState)(!1),g=!c&&!!t&&!!o&&!!n,v=Ja({uniprotId:t,userSelectedProteinSequence:o,selectedTranscript:n,isLoading:c,error:b}),E=()=>{h(!1)},{runLaunch:T,launchError:G}=hn(e,E),W={session:a,view:l,feature:s,selectedTranscript:n,uniprotId:t},ve={...W,url:r,userProvidedTranscriptSequence:o?.seq,alignmentAlgorithm:u},q=T(()=>{zt(ve)}),Pe=T(()=>{Eo(W)}),ie=T(()=>{nl(ve)}),me=(0,il.isSessionWithAddTracks)(a)?a:void 0,Y=[{key:"3d",title:"Launch 3D protein structure view",description:"View protein structure with genome-to-structure coordinate mapping",onClick:q},...me&&t?[{key:"1d",title:"Launch 1D protein annotation view",description:"View protein features and annotations as a linear track",onClick:T(()=>wn({session:me,view:l,feature:s,selectedTranscript:n,uniprotId:t,confidenceUrl:i}))}]:[],...xn()?[{key:"msa",title:"Launch MSA view",description:"View AlphaFold a3m multiple sequence alignment",onClick:Pe},{key:"3d-msa",title:"Launch 3D structure + MSA view",description:"Launch both views with AlphaFold a3m MSA",onClick:ie}]:[]];return ae.default.createElement(ae.default.Fragment,null,G?ae.default.createElement(rl.ErrorMessage,{error:G}):null,d===!1?ae.default.createElement(Fo,{alignmentAlgorithm:u,onAlignmentAlgorithmChange:m}):null,ae.default.createElement(ze.Tooltip,{title:"Launch settings"},ae.default.createElement(ze.IconButton,{size:"small","aria-label":"Launch settings",onClick:()=>{f(!0)}},ae.default.createElement(ro,{fontSize:"small"}))),ae.default.createElement(ze.Button,{variant:"contained",color:"secondary",size:"small",onClick:()=>{e()}},"Cancel"),!g&&v.length>0?ae.default.createElement(ze.Typography,{variant:"body2",color:"error",sx:{mr:2}},v.join(". ")):null,ae.default.createElement(ze.ButtonGroup,{variant:"contained",color:"primary",size:"small"},ae.default.createElement(ze.Button,{disabled:!g,onClick:q},"Launch"),ae.default.createElement(ze.Button,{disabled:!g,onClick:()=>{h(!0)},"aria-label":"More launch options"},ae.default.createElement(Da,null))),ae.default.createElement(Cr,{open:w,onClose:E,options:Y}),ae.default.createElement(Ir,{open:y,onClose:()=>{f(!1)}}))}var so=p(x()),Ur=p(M());function Or({isLoading:e,uniprotId:t,url:o,hasProteinSequence:n,sequenceSearchType:r}){return e?null:!t&&n?so.default.createElement(Ur.Typography,{color:"warning.main"},"No AlphaFold structure found for this sequence (searched by"," ",r==="md5"?"MD5 checksum":"full sequence",")"):t?so.default.createElement(Ur.Typography,{color:"success.main"},"Found AlphaFold structure: ",t,o?so.default.createElement(so.default.Fragment,null," ","-"," ",so.default.createElement("a",{href:o,target:"_blank",rel:"noreferrer"},o)):null):null}var qo=p(x()),ao=p(M());ce();function jt({val:e,setVal:t,isoforms:o,isoformSequences:n,structureSequence:r,feature:i,disabled:s}){let l=on(i),a=[],u=[],m=[];for(let c of o){let b=n[c.id()];b?r&&ee(b.seq)===r?a.push(c):u.push(c):m.push(c)}let d=(c,b)=>n[b.id()].seq.length-n[c.id()].seq.length;return qo.default.createElement(ao.TextField,{value:e??"",onChange:c=>{t(c.target.value)},label:"Choose transcript isoform",select:!0,disabled:s},a.toSorted(d).map(c=>qo.default.createElement(ao.MenuItem,{value:c.id(),key:c.id()},l," - ",Ie(c)," (",n[c.id()].seq.length,"aa) (matches structure residues)")),u.toSorted(d).map(c=>qo.default.createElement(ao.MenuItem,{value:c.id(),key:c.id()},l," - ",Ie(c)," (",n[c.id()].seq.length,"aa)")),m.map(c=>qo.default.createElement(ao.MenuItem,{value:c.id(),key:c.id(),disabled:!0},l," - ",Ie(c)," (no data)")))}var O=p(x()),z=p(M());function Gr({lookupMode:e,onLookupModeChange:t,manualUniprotId:o,onManualUniprotIdChange:n,featureUniprotId:r,hasProteinSequence:i,sequenceSearchType:s,onSequenceSearchTypeChange:l,endContent:a}){return O.default.createElement(O.default.Fragment,null,O.default.createElement("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap"}},O.default.createElement(z.FormControl,{component:"fieldset"},O.default.createElement(z.RadioGroup,{row:!0,value:e,onChange:u=>{t(u.target.value)}},r&&O.default.createElement(z.FormControlLabel,{value:"feature",control:O.default.createElement(z.Radio,null),label:`From feature (${r})`}),O.default.createElement(z.FormControlLabel,{value:"auto",control:O.default.createElement(z.Radio,null),label:"Auto-detect using UniProt ID mapping API"}),O.default.createElement(z.FormControlLabel,{value:"manual",control:O.default.createElement(z.Radio,null),label:"Enter manually"}),i&&O.default.createElement(z.FormControlLabel,{value:"sequence",control:O.default.createElement(z.Radio,null),label:"Search sequence against AlphaFoldDB API"}))),a),e==="manual"&&O.default.createElement("div",null,O.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&&O.default.createElement("div",null,O.default.createElement(z.FormControl,{component:"fieldset"},O.default.createElement(z.RadioGroup,{row:!0,value:s,onChange:u=>{l(u.target.value)}},O.default.createElement(z.FormControlLabel,{value:"md5",control:O.default.createElement(z.Radio,null),label:"Exact match"}),O.default.createElement(z.FormControlLabel,{value:"sequence",control:O.default.createElement(z.Radio,null),label:"Fuzzy match"}))),O.default.createElement(z.Typography,{variant:"body2",color:"text.secondary"},"May not find the canonical UniProt entry.")),e==="manual"&&!o&&O.default.createElement(z.Typography,{variant:"body2",color:"text.secondary"},"Search"," ",O.default.createElement(Te,{href:"https://www.uniprot.org/"},"UniProt")," or ",O.default.createElement(Te,{href:"https://alphafold.ebi.ac.uk/"},"AlphaFoldDB")))}var J=p(x()),D=p(M()),sl=p(tt());var Tc=(0,sl.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 zr({entries:e,selectedAccession:t,onSelect:o}){let{classes:n,cx:r}=Tc();return e.length===0?null:J.default.createElement("div",null,J.default.createElement(D.Typography,{variant:"body2",sx:{mb:1}},"Found ",e.length," UniProt entries. Select one:"),J.default.createElement(D.TableContainer,{component:D.Paper,className:n.tableContainer},J.default.createElement(D.Table,{size:"small",stickyHeader:!0},J.default.createElement(D.TableHead,null,J.default.createElement(D.TableRow,null,J.default.createElement(D.TableCell,{className:n.headerCell,padding:"checkbox"}),J.default.createElement(D.TableCell,{className:n.headerCell},"Accession"),J.default.createElement(D.TableCell,{className:n.headerCell},"Gene"),J.default.createElement(D.TableCell,{className:n.headerCell},"Organism"),J.default.createElement(D.TableCell,{className:n.headerCell},"Protein"),J.default.createElement(D.TableCell,{className:n.headerCell},"Status"))),J.default.createElement(D.TableBody,null,e.map(i=>J.default.createElement(D.TableRow,{key:i.accession,onClick:()=>{o(i.accession)},className:r(n.clickableRow,t===i.accession&&n.selectedRow)},J.default.createElement(D.TableCell,{padding:"checkbox"},J.default.createElement(D.Radio,{checked:t===i.accession,size:"small"})),J.default.createElement(D.TableCell,null,J.default.createElement(Te,{href:`https://www.uniprot.org/uniprotkb/${i.accession}`},i.accession)),J.default.createElement(D.TableCell,null,i.geneName??"-"),J.default.createElement(D.TableCell,null,i.organismName??"-"),J.default.createElement(D.TableCell,null,i.proteinName?i.proteinName.length>40?`${i.proteinName.slice(0,40)}...`:i.proteinName:"-"),J.default.createElement(D.TableCell,null,J.default.createElement(D.Chip,{label:i.isReviewed?"Reviewed":"Unreviewed",size:"small",className:i.isReviewed?n.reviewedChip:n.unreviewedChip}))))))))}var yo=p(x());go();var Et={revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1};async function qn({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 Dn({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 qn({plugin:n,trajectory:i,options:o})}async function Nn({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 qn({plugin:r,trajectory:s,options:n})}function Vn(e){return e.obj?.data.sequence.sequences.map(t=>Array.from(t.sequence.label.toArray()).join(""))}fo();async function ql(e){let{createPluginUI:t,renderReact18:o}=await qe(),n=document.createElement("div"),r=await t({target:n,render:o});try{return await e(r)}finally{r.unmount(),n.remove()}}function Xc(e){let t=e.lastIndexOf("."),o=t>=0?e.slice(t+1).toLowerCase():"";return o==="cif"||o==="mmcif"||o==="bcif"?"mmcif":"pdb"}async function Qc({file:e,url:t}){return ql(async o=>{let{model:n}=e?await Dn({data:await e.text(),plugin:o,format:Xc(e.name)}):await Nn({url:t,plugin:o});return Vn(n)})}function Vo({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 Qc({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}}Re();function si({uniprotId:e}){let t=e?io(e):void 0,o=e?el(e):void 0,{sequences:n,isLoading:r,isValidating:i,error:s}=Vo({url:t});return{isLoading:r,isValidating:i,error:s,url:t,confidenceUrl:o,structureSequence:n?.[0]}}var Bl=p(x());go();async function ed(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 ho(e,t){return(await ed(e,t)).json()}function Dl(e){return e.reason instanceof Error?e.reason:new Error("Aborted",{cause:e.reason})}function Nl(e,t){return new Promise((o,n)=>{if(t?.aborted)n(Dl(t));else{let r=setTimeout(o,e);t?.addEventListener("abort",()=>{clearTimeout(r),n(Dl(t))},{once:!0})}})}function qt(e,t){let o=(e&65535)+(t&65535);return(e>>16)+(t>>16)+(o>>16)<<16|o&65535}function td(e,t){return e<<t|e>>>32-t}function Hn(e,t,o,n,r,i){return qt(td(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 od(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 nd(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 rd(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 Vl(e){return nd(od(rd(e),e.length*8))}ce();function ai({sequence:e,searchType:t,enabled:o=!0}){let n=(0,Bl.useMemo)(()=>{if(!e)return;let a=ee(e.toUpperCase());return t==="md5"?Vl(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,ho,{...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 li(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($());go();var Ul=p(oo()),bo=p($());function id(e,t){return e.map(o=>t.slice(o.start,o.end)).join("")}function sd({cds:e,sequence:t,codonTable:o}){let n=id(e,t),r="";for(let i=0;i<n.length;i+=3)r+=o[n.slice(i,i+3)]??"&";return r}function ad(e,t){return e.map(o=>({...o,start:t-o.end,end:t-o.start})).toSorted((o,n)=>o.start-n.start)}function Hl(e){return`${e.start}-${e.end}`}function ld(e){return e.filter((t,o,n)=>!o||Hl(t)!==Hl(n[o-1]))}function pd({feature:e,seq:t}){let o=e.get("start"),n=e.get("strand"),r=e.get("subfeatures")??[],i=ld(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 sd({cds:n===-1?ad(i,t.length):i,sequence:n===-1?(0,bo.revcom)(t):t,codonTable:(0,bo.generateCodonTable)(bo.defaultCodonTable)})}async function On({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,Ul.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?pd({seq:c,feature:e}):void 0}ce();function pi({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 On({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 Bo=p(x());ce();function ui({options:e,isoformSequences:t,structureSequence:o,resetKey:n}){let[r,i]=(0,Bo.useState)(),[s,l]=(0,Bo.useState)(n);n!==s&&(l(n),i(void 0));let a=(0,Bo.useMemo)(()=>t!==void 0?zs({options:e,isoformSequences:t,structureSequence:o})?.id():void 0,[e,o,t]);return{userSelection:r??a,setUserSelection:i}}ce();function Wt({feature:e,view:t,structureSequence:o,resetKey:n}){let r=Ot(e),{isoformSequences:i,isLoading:s,error:l}=pi({feature:e,view:t}),{userSelection:a,setUserSelection:u}=ui({options:r,isoformSequences:i,structureSequence:o,resetKey:n}),m=r.find(c=>Ds(c)===a),d=a?i?.[a]:void 0;return{transcripts:r,isoformSequences:i,isLoading:s,error:l,selectedTranscriptId:a,setSelectedTranscriptId:u,selectedTranscript:m,selectedIsoform:d}}go();ce();var ud="accession,id,gene_names,organism_name,protein_name,reviewed";function md(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 cd(e){switch(nn(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 zl(e,t=10){let o=`https://rest.uniprot.org/uniprotkb/search?query=${encodeURIComponent(e)}&fields=${ud}&size=${t}`;return(await ho(o)).results.map(md)}async function dd(e){let t=cd(e);if(!t)return{entries:[],error:void 0};try{return{entries:await zl(t),error:void 0}}catch(o){return console.error(`xref search failed for ${e}:`,o),{entries:[],error:o}}}function Gl(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 jl({recognizedIds:e=[],geneId:t,geneName:o,organismId:n=9606}){let r=new Set(e),i=t?ko(t):void 0;i&&Ct(i)&&r.add(i);let s=await Promise.all([...r].map(dd)),l=Gl(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 zl(m,5);l=Gl([...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 mi({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:",""):Ct(n)&&(i=[n]);let l=i.some(d=>Ct(d))||!!s,{data:a,error:u,isLoading:m}=rt(r&&l?["uniprotSearch",n,i.join(","),s]:null,async()=>jl({recognizedIds:i,geneId:t,geneName:s}),{...Et,keepPreviousData:!0});return{entries:a??[],isLoading:m,error:u,hasValidId:l}}function Gn({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 ci({feature:e,view:t}){let[o,n]=(0,yo.useState)("auto"),[r,i]=(0,yo.useState)(""),s=Gs(e),[l,a]=(0,yo.useState)("auto"),[u,m]=(0,yo.useState)("md5"),[d,c]=(0,yo.useState)(),b=s.uniprotId,w=o==="auto"&&b?"feature":o,h=w==="sequence",y=w==="auto",{entries:f,isLoading:g,error:v}=mi({recognizedIds:s.recognizedIds,geneId:s.geneId,geneName:s.geneName,selectedQueryId:l,enabled:y}),E=li(r,400),T=f[0]?.accession,G=w==="feature"?b:y?d??T:w==="manual"?E:void 0,{isLoading:W,isValidating:ve,error:q,url:Pe,confidenceUrl:ie,structureSequence:me}=si({uniprotId:h?void 0:G}),{transcripts:Y,isoformSequences:oe,isLoading:Me,error:Ve,selectedTranscriptId:lt,setSelectedTranscriptId:_e,selectedTranscript:ke,selectedIsoform:Be}=Wt({feature:e,view:t,structureSequence:me,resetKey:G}),{uniprotId:sr,cifUrl:St,plddtDocUrl:pt,structureSequence:Yt,isLoading:$t,isValidating:Zt,error:ut}=ai({sequence:Be?.seq,searchType:u,enabled:h}),Ht=h?St:Pe,ar=h?pt:ie,vt=h?Yt:me,Xt=h?sr:G,lr=h?Zt:ve,Ko=[g&&"Looking up UniProt ID",Me&&"Loading protein sequences from transcript isoforms",!h&&W&&"Fetching AlphaFold structure URL",h&&$t&&"Searching AlphaFoldDB by sequence"].filter(N=>!!N),Tt=Ko.length>0,$i=Tt?void 0:Ve??v??q??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:ke,isoformSequences:oe,userSelectedProteinSequence:Be,uniprotEntries:f,recognizedIds:s.recognizedIds,geneName:s.geneName,featureUniprotId:b,uniprotId:Xt,url:Ht,confidenceUrl:ar,structureSequence:vt,error:$i,loadingStatuses:Ko,isSequenceSearchLoading:$t,showIdentifierSelector:y&&(s.recognizedIds.length>0||!!s.geneName),showStructureSelectors:!!oe&&!!ke&&(h||!!(vt&&Xt)),sequencesMatch:!lr&&Be?.seq&&vt?ee(Be.seq)===vt:void 0,searchDescription:Gn({selectedQueryId:l,recognizedIds:s.recognizedIds,geneName:s.geneName}),searchDescriptionOr:Gn({selectedQueryId:l,recognizedIds:s.recognizedIds,geneName:s.geneName,joinWord:"or"}),selectedTableAccession:d??T,showUniprotResults:!!oe&&y&&(f.length>0||g),showNoResults:!!oe&&y&&!g&&f.length===0,showSequenceSearchStatus:h,showAlphaFoldDBSearchStatus:!!vt&&!!Xt&&!h,isLoading:Tt}}var gd=(0,_l.makeStyles)()({dialogContent:{width:"80em","& > *":{marginBottom:20},"& > *:last-child":{marginBottom:0}},selectorsRow:{display:"flex",flexDirection:"row",gap:20,alignItems:"flex-start"}}),fd=(0,Wl.observer)(function({feature:t,session:o,view:n,handleClose:r,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}){let{classes:l}=gd(),a=ci({feature:t,view:n});return R.default.createElement(R.default.Fragment,null,R.default.createElement(Dt.DialogContent,{className:l.dialogContent},a.error?R.default.createElement(zn.ErrorMessage,{error:a.error}):null,R.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?R.default.createElement(kr,{recognizedIds:a.recognizedIds,geneName:a.geneName,selectedId:a.selectedQueryId,onSelectedIdChange:a.setSelectedQueryId}):null}),a.loadingStatuses.map(u=>R.default.createElement(zn.LoadingEllipses,{key:u,variant:"subtitle2",message:u})),a.showUniprotResults&&R.default.createElement(R.default.Fragment,null,R.default.createElement(Dt.Typography,{variant:"body2",color:"textSecondary"},"Searched UniProt by ",a.searchDescription),R.default.createElement(zr,{entries:a.uniprotEntries,selectedAccession:a.selectedTableAccession,onSelect:a.setSelectedUniprotId}),R.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"," ",R.default.createElement(Te,{href:"https://www.uniprot.org/"},"UniProt")," ",'directly and use "Enter manually".')),a.showNoResults&&R.default.createElement(Dt.Typography,{variant:"body2",color:"textSecondary"},"No UniProt entries found for ",a.searchDescriptionOr,". Try a different identifier above, or search"," ",R.default.createElement(Te,{href:"https://www.uniprot.org/"},"UniProt")," ",'directly and use "Enter manually" above, or use "Search sequence against AlphaFoldDB API" if available.'),a.showStructureSelectors&&R.default.createElement(R.default.Fragment,null,R.default.createElement("div",{className:l.selectorsRow},R.default.createElement(jt,{val:a.userSelection,setVal:a.setUserSelection,structureSequence:a.structureSequence,feature:t,isoforms:a.transcriptOptions,isoformSequences:a.isoformSequences})),a.showSequenceSearchStatus&&R.default.createElement(Or,{isLoading:a.isSequenceSearchLoading,uniprotId:a.uniprotId,url:a.url,hasProteinSequence:!!a.userSelectedProteinSequence,sequenceSearchType:a.sequenceSearchType}),a.showAlphaFoldDBSearchStatus&&R.default.createElement(Pr,{uniprotId:a.uniprotId,selectedTranscript:a.selectedTranscript,structureSequence:a.structureSequence,isoformSequences:a.isoformSequences,url:a.url}))),R.default.createElement(Dt.DialogActions,null,R.default.createElement(Hr,{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=fd;var K=p(x()),Ho=p(Oe()),Ce=p(M()),op=p(_()),np=p(tt());var it=p(x()),Ze=p(M()),$l=p(tt());var di=[{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 Rl({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 Kl({aaSequence:e,di3Sequence:t,databases:o,signal:n}){let r=`>query
23
23
  ${e}
24
24
  >3DI
25
25
  ${t}
26
- `,i=new URLSearchParams;i.append("q",r),i.append("mode","3diaa"),i.append("email","");for(let a of o)i.append("database[]",a);let s=await fetch("https://search.foldseek.com/api/ticket",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i,signal:n}),l=await s.text();if(!s.ok)throw new Error(`Foldseek submission failed: ${s.status} ${l}`);return JSON.parse(l)}async function 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);})();
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 hd({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 bd({ticketId:e,signal:t}){return ho(`https://search.foldseek.com/api/result/${e}/0`,{signal:t})}async function Yl({ticketId:e,onStatusChange:t,signal:o}){let r=0;for(;r<180;){if(o?.aborted)throw o.reason;let i=await hd({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 bd({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 Nl(1e3,o),r++}throw new Error("Foldseek search timed out")}var yd=(0,$l.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 gi({selected:e,onChange:t,disabled:o}){let{classes:n}=yd();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(di.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},di.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()),I=p(M()),tp=p(tt());var je=p(x()),Ql=p(Oe()),ep=p($()),Nt=p(M());var wd={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 Zl(e,t){return e.padStart(t," ")}function xd(e,t){return e.padEnd(t," ")}function fi(e){return e.toFixed(3).padStart(8," ")}function Xl(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",b=wd[c]??"UNK";if(u===void 0||m===void 0||d===void 0)break;let w="ATOM "+Zl(String(s),5)+" CA "+xd(b,3)+" "+o+Zl(String(l),4)+" "+fi(u)+fi(m)+fi(d)+" 1.00 0.00 C";i.push(w),s++,l++}return i.push("END"),i.join(`
27
+ `)}function hi(e,t){return!e||!t?!1:e.split(",").length>=3&&t.length>0}Re();function bi({hit:e,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}){let[l,a]=(0,je.useState)(null),u=!!l,m=yn(e.target),d=E=>{a(E.currentTarget)},c=()=>{a(null)},{runLaunch:b,launchError:w}=hn(s,c),h={session:t,view:o,feature:n,selectedTranscript:r,uniprotId:m},y=b(()=>{let E=!e.structureUrl&&hi(e.tCa,e.tSeq)?Xl(e.tCa,e.tSeq,"A",e.target):void 0;zt({...h,url:e.structureUrl,data:E,userProvidedTranscriptSequence:i})}),f=b(()=>{Eo(h)});if(!(!!e.structureUrl||hi(e.tCa,e.tSeq)))return je.default.createElement("span",null,"-");let v=(0,ep.isSessionWithAddTracks)(t)?t:void 0;return je.default.createElement(je.default.Fragment,null,w?je.default.createElement(Ql.ErrorMessage,{error:w}):null,je.default.createElement(Nt.Button,{size:"small",variant:"outlined",onClick:d},"Load"),je.default.createElement(Nt.Menu,{anchorEl:l,open:u,onClose:c},je.default.createElement(Nt.MenuItem,{onClick:y},"Launch 3D protein view"),v&&m?je.default.createElement(Nt.MenuItem,{onClick:b(()=>wn({session:v,view:o,feature:n,selectedTranscript:r,uniprotId:m,confidenceUrl:ol(e.target)}))},"Launch 1D protein annotation view"):null,m&&xn()?je.default.createElement(Nt.MenuItem,{onClick:f},"Launch MSA view (AlphaFoldDB a3m)"):null))}Re();var Sd=(0,tp.makeStyles)()({root:{display:"flex",flexDirection:"column",gap:16},tableContainer:{maxHeight:400},headerCell:{fontWeight:"bold",backgroundColor:"#f5f5f5"},noResults:{padding:16,textAlign:"center"}});function vd(e){let t=e.results.flatMap(o=>(o.alignments??[]).flat().map(n=>({...n,db:o.db,structureUrl:tl(n.target,o.db)})));return t.sort((o,n)=>(o.eval??1/0)-(n.eval??1/0)),t.slice(0,100)}function yi({results:e,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}){let{classes:l}=Sd(),a=vd(e);return a.length===0?B.default.createElement(I.Paper,{className:l.noResults},B.default.createElement(I.Typography,null,"No similar structures found")):B.default.createElement("div",{className:l.root},B.default.createElement(I.Typography,{variant:"subtitle2"},"Found ",a.length," similar structures"),B.default.createElement(I.TableContainer,{component:I.Paper,className:l.tableContainer},B.default.createElement(I.Table,{size:"small",stickyHeader:!0},B.default.createElement(I.TableHead,null,B.default.createElement(I.TableRow,null,B.default.createElement(I.TableCell,{className:l.headerCell},"Database"),B.default.createElement(I.TableCell,{className:l.headerCell},"Target"),B.default.createElement(I.TableCell,{className:l.headerCell},"Organism"),B.default.createElement(I.TableCell,{className:l.headerCell},"Prob"),B.default.createElement(I.TableCell,{className:l.headerCell},"Seq. Id."),B.default.createElement(I.TableCell,{className:l.headerCell},"Coverage"),B.default.createElement(I.TableCell,{className:l.headerCell},"E-value"),B.default.createElement(I.TableCell,{className:l.headerCell},"Actions"))),B.default.createElement(I.TableBody,null,a.map((u,m)=>B.default.createElement(I.TableRow,{key:`${u.db}-${u.target}-${m}`},B.default.createElement(I.TableCell,null,u.db),B.default.createElement(I.TableCell,null,u.target),B.default.createElement(I.TableCell,null,u.taxName??"-"),B.default.createElement(I.TableCell,null,u.prob!=null?`${(u.prob*100).toFixed(1)}%`:"-"),B.default.createElement(I.TableCell,null,u.seqId!=null?`${u.seqId.toFixed(1)}%`:"-"),B.default.createElement(I.TableCell,null,u.alnLength!=null&&u.qLen!=null?`${(u.alnLength/u.qLen*100).toFixed(1)}%`:"-"),B.default.createElement(I.TableCell,null,u.eval!=null?u.eval.toExponential(2):"-"),B.default.createElement(I.TableCell,null,B.default.createElement(bi,{hit:u,session:t,view:o,feature:n,selectedTranscript:r,userProvidedTranscriptSequence:i,onClose:s}))))))))}var Xe=p(x());function wi(){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 b=()=>{c.current?.abort();let f=new AbortController;return c.current=f,f.signal},w=async f=>{let g=b();l(!0),u(void 0),d("Predicting 3Di structure...");try{let v=await Rl({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 E=b();i(!0),u(void 0),d("Submitting search...");try{let T=await Kl({aaSequence:f,di3Sequence:g,databases:v,signal:E}),G=await Yl({ticketId:T.id,onStatusChange:d,signal:E});return t(G),G}catch(T){E.aborted||(console.error(T),u(T));return}finally{E.aborted||(i(!1),d(""))}},y=()=>{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:y}}ce();var Td=(0,np.makeStyles)()({dialogContent:{width:"80em",display:"flex",flexDirection:"column",gap:20},sequenceInput:{fontFamily:"monospace"},di3Section:{display:"flex",flexDirection:"column",gap:8}}),Ad=(0,op.observer)(function({feature:t,session:o,view:n,handleClose:r}){let{classes:i}=Td(),[s,l]=(0,K.useState)(),[a,u]=(0,K.useState)(jn),{results:m,cleanedAaSequence:d,di3Sequence:c,isLoading:b,isPredicting:w,error:h,statusMessage:y,predictStructure:f,search:g,reset:v}=wi(),{transcripts:E,isoformSequences:T,isLoading:G,error:W,selectedTranscriptId:ve,setSelectedTranscriptId:q,selectedTranscript:Pe,selectedIsoform:ie}=Wt({feature:t,view:n}),me=ie?ee(ie.seq):"",Y=s??me,oe=ke=>{q(ke),l(void 0)},Me=Y.trim().length>0&&!w&&!b,Ve=!!d&&!!c&&a.length>0&&!b,lt=h??W,_e=b||w;return K.default.createElement(K.default.Fragment,null,K.default.createElement(Ce.DialogContent,{className:i.dialogContent},lt&&!G?K.default.createElement(Ho.ErrorMessage,{error:lt}):null,G?K.default.createElement(Ho.LoadingEllipses,{variant:"subtitle2",message:"Loading transcript sequences"}):null,T?K.default.createElement(K.default.Fragment,null,K.default.createElement(jt,{val:ve,setVal:oe,isoforms:E,isoformSequences:T,feature:t,disabled:_e}),K.default.createElement(Ce.TextField,{label:"Protein sequence (amino acids)",multiline:!0,rows:4,value:Y,onChange:ke=>{l(ke.target.value)},placeholder:"MKTVRQERLKSIVRILERSKEPVSGAQLAEEL...",disabled:_e,InputProps:{className:i.sequenceInput}})):null,c?K.default.createElement("div",{className:i.di3Section},K.default.createElement(Ce.Typography,{variant:"subtitle2"},"3Di structural alphabet (used for searching):"),K.default.createElement(Ce.TextField,{multiline:!0,rows:4,value:c,InputProps:{className:i.sequenceInput,readOnly:!0}})):null,K.default.createElement(gi,{selected:a,onChange:u,disabled:_e}),y?K.default.createElement(Ho.LoadingEllipses,{variant:"subtitle2",message:y}):null,m?K.default.createElement(yi,{results:m,session:o,view:n,feature:t,selectedTranscript:Pe,userProvidedTranscriptSequence:Y,onClose:r}):null),K.default.createElement(Ce.DialogActions,null,K.default.createElement(Ce.Button,{variant:"contained",color:"secondary",onClick:()=>{r()}},"Cancel"),m?K.default.createElement(Ce.Button,{variant:"outlined",onClick:()=>{v()}},"New search"):null,c?K.default.createElement(Ce.Button,{variant:"contained",color:"primary",disabled:!Ve,onClick:()=>{g(d,c,a)}},b?"Searching...":"Search Foldseek"):K.default.createElement(Ce.Button,{variant:"contained",color:"primary",disabled:!Me,onClick:()=>{f(Y.trim())}},w?"Predicting...":"Predict 3Di structure")))}),rp=Ad;var De=p(x());xi();var mp=p(M()),Pd=(0,De.lazy)(()=>Promise.resolve().then(()=>(up(),pp)));function Uo(){let[e,t]=(0,De.useState)(!1);return De.default.createElement(De.default.Fragment,null,De.default.createElement(mp.IconButton,{onClick:()=>{t(!0)}},De.default.createElement(Wn,null)),e?De.default.createElement(De.Suspense,{fallback:null},De.default.createElement(Pd,{handleClose:()=>{t(!1)}})):null)}var Si=p(x());function Oo({children:e,value:t,index:o,...n}){return Si.default.createElement("div",{role:"tabpanel",hidden:t!==o,...n},t===o&&Si.default.createElement("div",null,e))}var j=p(x()),_n=p(Oe()),_t=p(M()),cp=p(_()),dp=p(tt());var ne=p(x()),te=p(M());Re();function vi({choice:e,setChoice:t,structureURL:o,setStructureURL:n,setFile:r,pdbId:i,setPdbId:s}){return ne.default.createElement("div",{style:{display:"flex",margin:30}},ne.default.createElement(te.Typography,null,"Open your structure file ",ne.default.createElement(Uo,null)),ne.default.createElement(te.FormControl,{component:"fieldset"},ne.default.createElement(te.RadioGroup,{value:e,onChange:l=>{t(l.target.value)}},ne.default.createElement(te.FormControlLabel,{value:"url",control:ne.default.createElement(te.Radio,null),label:"URL"}),ne.default.createElement(te.FormControlLabel,{value:"file",control:ne.default.createElement(te.Radio,null),label:"File"}),ne.default.createElement(te.FormControlLabel,{value:"pdb",control:ne.default.createElement(te.Radio,null),label:"PDB ID"}))),e==="url"?ne.default.createElement("div",null,ne.default.createElement(te.Typography,null,"Open a PDB/mmCIF/etc. file from remote URL"),ne.default.createElement(te.TextField,{label:"URL",value:o,onChange:l=>{n(l.target.value)}})):null,e==="file"?ne.default.createElement("div",{style:{paddingTop:20}},ne.default.createElement(te.Typography,null,"Open a PDB/mmCIF/etc. file from your local drive"),ne.default.createElement(te.Button,{variant:"outlined",component:"label"},"Choose File",ne.default.createElement("input",{type:"file",hidden:!0,onChange:({target:l})=>{let a=l.files?.[0];a&&r(a)}}))):null,e==="pdb"?ne.default.createElement(te.TextField,{value:i,onChange:l=>{let a=l.target.value;s(a),n(Lo(a))},label:"PDB ID"}):null)}Re();ce();var kd=(0,dp.makeStyles)()(e=>({dialogContent:{marginTop:e.spacing(6),width:"80em"},textAreaFont:{fontFamily:"Courier New"}}));function Cd(){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(Te,{href:"https://github.com/sokrypton/ColabFold"},"ColabFold"),". This plugin will align the protein sequence calculated from the genome to the protein sequence embedded in the structure file which allows for slight differences in these two representations.")}var Md=(0,cp.observer)(function({feature:t,session:o,view:n,handleClose:r,alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}){let{classes:l}=kd(),[a,u]=(0,j.useState)(),[m,d]=(0,j.useState)(""),[c,b]=(0,j.useState)("file"),[w,h]=(0,j.useState)(),[y,f]=(0,j.useState)(""),g=c==="file"?a:void 0,v=c==="file"?"":y,{sequences:E,error:T}=Vo({file:g,url:v}),G=g?.name??v.slice(v.lastIndexOf("/")+1),W=E?.[0],{transcripts:ve,isoformSequences:q,selectedTranscriptId:Pe,setSelectedTranscriptId:ie,selectedTranscript:me,selectedIsoform:Y,error:oe}=Wt({feature:t,view:n,structureSequence:W}),Me=oe??w??T,Ve=!!(v||g)&&!!Y&&!!me,lt=!!Y?.seq&&!!W&&ee(Y.seq)!==W,_e=async()=>{if(!(!Y||!me))try{let ke=g?await g.text():void 0;zt({session:o,view:n,feature:t,selectedTranscript:me,url:v||void 0,data:ke,userProvidedTranscriptSequence:Y.seq,alignmentAlgorithm:i}),r()}catch(ke){console.error(ke),h(ke)}};return j.default.createElement(j.default.Fragment,null,j.default.createElement(_t.DialogContent,{className:l.dialogContent},Me?j.default.createElement(_n.ErrorMessage,{error:Me}):null,j.default.createElement(Cd,null),j.default.createElement(vi,{choice:c,setChoice:b,structureURL:y,setStructureURL:f,setFile:u,pdbId:m,setPdbId:d}),j.default.createElement("div",{style:{margin:20}},q?W?j.default.createElement(j.default.Fragment,null,j.default.createElement(jt,{val:Pe,setVal:ie,structureSequence:W,isoforms:ve,feature:t,isoformSequences:q}),j.default.createElement(Co,{structureSequence:W,structureName:G,isoformSequences:q})):null:j.default.createElement(_n.LoadingEllipses,{title:"Loading protein sequences",variant:"h6"}))),j.default.createElement(_t.DialogActions,null,lt?j.default.createElement(Fo,{alignmentAlgorithm:i,onAlignmentAlgorithmChange:s}):null,j.default.createElement(_t.Button,{variant:"contained",color:"secondary",onClick:()=>{r()}},"Cancel"),j.default.createElement(_t.Button,{variant:"contained",color:"primary",disabled:!Ve,onClick:()=>{_e()}},"Launch 3-D protein structure view")))}),gp=Md;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 Ti({handleClose:e,feature:t,model:o}){let[n,r]=(0,he.useState)(0),[i,s]=hp("jbrowse-protein3d-alignment-algorithm",Io),l=(0,Jn.getSession)(o),a=(0,Jn.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(Uo,null)),open:!0,onClose:e},he.default.createElement(wo.Tabs,{value:n,onChange:(u,m)=>{r(m)}},he.default.createElement(wo.Tab,{value:0,label:"AlphaFoldDB search"}),he.default.createElement(wo.Tab,{value:1,label:"Foldseek search"}),he.default.createElement(wo.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 Id(e){return e.name==="LinearBasicDisplay"}function Fd(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:va,onClick:()=>{let i=(0,Rn.getContainingTrack)(t);(0,Rn.getSession)(i).queueDialog(l=>[Ti,{model:i,handleClose:l,feature:n}])}}]:[]]}}})}function Ai(e){e.addToExtensionPoint("Core-extendPluggableElement",t=>(Id(t)&&(t.stateModel=Fd(t.stateModel)),t))}var yp=p(oo()),wp=p($());Re();ce();function Ld(e){if(typeof e=="string")return e;let{trackId:t}=e;return typeof t=="string"?t:void 0}function Ed(e,t){let o=ko(t);return[e.get("name"),e.get("id"),e.id()].some(n=>typeof n=="string"&&(n===t||ko(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(Ld).filter(f=>f!==void 0),d=e.getTracksById(),c="getFeatures",b=[];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 E of v)b.push(...Ot(E))}let w=b.find(f=>Ed(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 y=await On({session:e,assemblyName:r,feature:w});if(!y)throw new Error(`could not translate a protein sequence for "${o}"`);return{url:io(t),feature:w.toJSON(),userProvidedTranscriptSequence:y}}gn();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:b,zoomToBaseLevel:w,sideBySide:h})=>{let y;if(!o&&n)try{y=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??y?.url;if(!f){let T="No url or uniprotId provided when launching protein view";console.error(T),t.notify(`Could not launch protein view: ${T}`,"error");return}let g=!l&&!!a,v=l??(a?t.addView("LinearGenomeView",{type:"LinearGenomeView",init:a}).id:void 0),E=t.addView("ProteinView",{type:"ProteinView",alignmentAlgorithm:u,displayName:m,height:d,showControls:c,showHighlight:b,zoomToBaseLevel:w,structures:[{url:f,userProvidedTranscriptSequence:y?.userProvidedTranscriptSequence??i??"",feature:y?.feature??s,connectedViewId:v}]});g&&dn(t,E.id,h)})}var Mm=p(x()),Im=p(ki());var Yp=p(ki()),$p=p(Tp()),ue=p(Go());dt();var Pp=p(gt(),1),Ci=(0,ge.createSvgIcon)((0,Pp.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 Jo=p(Qt());Mi();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 Dn({data:e.data,plugin:t}):e.url?await Nn({url:e.url,plugin:t}):{model:void 0},n=o?Vn(o):void 0,r=o?Mp(o,n?.[0]?.length):void 0;return{sequences:n,confidence:r}}var Ii=p(Go());function Fp(e){let t=new Set;function o(n,r){t.add(n),Kn({structure:n,plugin:r}).then(i=>{let s=(0,Ii.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,Ii.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($()),re=p(Go()),So=p(Qt());Li();ht();Po();var Np=e=>e;var Ei=e=>e;function Vp(e){let{structureSeqToTranscriptSeqPosition:t,transcriptSeqToStructureSeqPosition:o}=bs(e),n=ws(e),r=xs(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}}}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]],Bp={};for(let e=0;e<Yn.length;e++){let t={};for(let o=0;o<Yn.length;o++)t[Yn[o]]=Nd[e][o];Bp[Yn[e]]=t}function jo(e,t){return Bp[e.toUpperCase()]?.[t.toUpperCase()]??-4}var Hp=-10,Up=-.5;function Vd(e,t,o=Hp,n=Up){let r=e.length,i=t.length,s=[],l=[],a=[];for(let y=0;y<=r;y++){s[y]=[],l[y]=[],a[y]=[];for(let f=0;f<=i;f++)s[y][f]=-1/0,l[y][f]=-1/0,a[y][f]=-1/0}s[0][0]=0;for(let y=1;y<=r;y++)l[y][0]=o+(y-1)*n;for(let y=1;y<=i;y++)a[0][y]=o+(y-1)*n;for(let y=1;y<=r;y++)for(let f=1;f<=i;f++){let g=jo(e[y-1],t[f-1]);s[y][f]=Math.max(s[y-1][f-1],l[y-1][f-1],a[y-1][f-1])+g,l[y][f]=Math.max(s[y-1][f]+o,l[y-1][f]+n),a[y][f]=Math.max(s[y][f-1]+o,a[y][f-1]+n)}let u="",m="",d=r,c=i,b=[s[r][i],l[r][i],a[r][i]],w=Math.max(...b),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 y=jo(e[d-1],t[c-1]),f=s[d-1][c-1],g=l[d-1][c-1];s[d][c]===f+y?h="M":s[d][c]===g+y?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=Hp,n=Up){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 E=Math.max(s[f][g],l[f][g],a[f][g]);E>u&&(u=E,m=f,d=g)}let c="",b="",w=m,h=d,y=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,b="-"+b;for(let f=t.length;f>d;f--)c="-"+c,b=t[f-1]+b;for(;w>0&&h>0;)if(y==="M"){if(s[w][h]===0)break;c=e[w-1]+c,b=t[h-1]+b;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?y="M":s[w][h]===v+f?y="Ix":y="Iy",w--,h--}else y==="Ix"?(c=e[w-1]+c,b="-"+b,l[w][h]===s[w-1][h]+o&&(y="M"),w--):(c="-"+c,b=t[h-1]+b,a[w][h]===s[w][h-1]+o&&(y="M"),h--);for(;w>0;)c=e[w-1]+c,b="-"+b,w--;for(;h>0;)c="-"+c,b=t[h-1]+b,h--;return{alignedSeq1:c,alignedSeq2:b,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 Op(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 Gp=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]));Di();Vi();fo();function zd(e,t){return{structureSeqPos:e.StructureProperties.residue.label_seq_id(t)-1,code:e.StructureProperties.atom.label_comp_id(t),chain:e.StructureProperties.chain.auth_asym_id(t)}}async function Bi({plugin:e,kind:t,onUpdate:o}){let n=await qe(),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()}}Re();ce();Po();var Rd=re.types.model({url:re.types.maybe(re.types.string),data:re.types.maybe(re.types.string),connectedViewId:re.types.maybe(re.types.string),pairwiseAlignment:re.types.frozen(),feature:re.types.frozen(),userProvidedTranscriptSequence:re.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 yn(t)},get coordinateMapper(){return e.pairwiseAlignment?Vp(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)?Ni(t,this.structurePositionToAlignmentMap):[]},get hydrophobicityCells(){let t=e.structureSequences?.[0];return t?Ni(Wp(ee(t)),this.structurePositionToAlignmentMap):[]},get pairwiseAlignmentToTranscriptPosition(){return this.coordinateMapper?.maps.alignmentToTranscriptPosition},get pairwiseAlignmentToStructurePosition(){return this.coordinateMapper?.maps.alignmentToStructurePosition},get hoverString(){let t=e.hoverPosition;if(t===void 0)return"";let o=this.hoverStructureLetter,n=this.hoverGenomeLetter,r=[];return t.structureSeqPos!==void 0&&r.push(`${t.structureSeqPos+1}`),o&&r.push(`Structure: ${o}`),n&&o&&n!==o&&r.push(`Genome: ${n}`),t.chain&&r.push(`Chain: ${t.chain}`),r.join(", ")},get genomeToTranscriptSeqMapping(){return e.feature?eo(new _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(Np(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 hoverHighlightRange(){let t=this.structureSeqHoverPos;return this.hoverStructureRange??(t===void 0?void 0:{start:t,end:t+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?qi({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(){return e.hoverPosition?.source==="genome"?[]:this.structureRangeToGenomeHighlight(this.hoverHighlightRange)},get clickGenomeHighlights(){return this.structureRangeToGenomeHighlight(e.clickedStructureRange)},get hoverStructureLetter(){let t=e.hoverPosition?.code;if(t)return Gp[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=ee(e.userProvidedTranscriptSequence),o=e.structureSequences?.[0]?ee(e.structureSequences[0]):void 0;return t===o},get parentView(){return(0,re.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 za(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(Ei(t));e.setHoveredPosition(o!==void 0?{structureSeqPos:o}:void 0)}},clickAlignmentPosition(t){let o=e.coordinateMapper?.alignmentToStructure(Ei(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(){let t=(o,n)=>{(0,re.addDisposer)(e,(0,So.autorun)(async()=>{let{molstarPluginContext:r}=e;r&&(0,re.addDisposer)(e,await Bi({plugin:r,kind:o,onUpdate:n}))}))};(0,re.addDisposer)(e,(0,So.autorun)(async()=>{try{let{userProvidedTranscriptSequence:o,structureSequences:n,exactMatch:r,alignmentAlgorithm:i}=e,s=o,l=n?.[0];if(e.pairwiseAlignment||!s||!l)return;let a=ee(s),u=ee(l);if(r)e.setAlignment({consensus:"|".repeat(a.length),alns:[{id:"seq1",seq:a},{id:"seq2",seq:u}]});else{let m=Op(a,u,i);e.setAlignment(m),e.parentView.setShowAlignment(!0)}}catch(o){console.error(o),e.parentView.setError(o)}})),(0,re.addDisposer)(e,(0,So.autorun)(()=>{let{hovered:o}=(0,_o.getSession)(e),{transcriptSeqToStructureSeqPosition:n,genomeToTranscriptSeqMapping:r,connectedView:i}=e;if(i?.initialized&&r&&kt(o)){let{hoverPosition:s}=o,l=r.g2p[s.coord-1],a=l===void 0?void 0:n?.[l];e.setGenomeHoveredPosition(a)}else e.hoverPosition?.source==="genome"&&e.setGenomeHoveredPosition(void 0)})),t("click",o=>{o&&(e.setHoveredPosition(o),e.setSelectedFeatureId(void 0),Wo({model:e,structureSeqPos:o.structureSeqPos}).catch(n=>{console.error(n),e.parentView.setError(n)}))}),t("hover",o=>{e.setHoveredPosition(o)}),(0,re.addDisposer)(e,(0,So.autorun)(async()=>{let{showHighlight:o,structureSeqToTranscriptSeqPosition:n,molstarPluginContext:r,molstarStructure:i}=e;i&&r&&n&&await zo({structure:i,plugin:r,channel:"select",spec:o?{kind:"list",residues:Object.keys(n).map(s=>+s)}:void 0})})),(0,re.addDisposer)(e,(0,So.autorun)(async()=>{let{molstarStructure:o,molstarPluginContext:n,hoverHighlightRange:r}=e;o&&n&&await zo({structure:o,plugin:n,channel:"highlight",spec:r?{kind:"range",...r}:void 0})}))}})),Zn=Rd;fo();var Kd="SuperpositionTransform";async function Hi(e){let{QueryContext:t,StructureElement:o,StructureSelection:n,StructureSelectionQueries:r,PluginCommands:i,PluginStateObject:s,tmAlign:l}=await qe(),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 y=e.helpers.substructureParent.get(h);if(!y)return;let f=e.state.data.selectQ(v=>v.byValue(y).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 b=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:y,tmScoreA:f,tmScoreB:g,rmsd:v,alignedLength:E}=h;await Yd(e,a[w].cell,y,b),e.log.info(`TM-align: TM-score=${f.toFixed(4)}/${g.toFixed(4)}, RMSD=${v.toFixed(2)} \xC5, aligned ${E} 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 qe(),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 Rp="proteinView-settings",Kp=["showAlignment","showProteinTracks","showHighlight","zoomToBaseLevel","autoScrollAlignment","compactTracks"];function $d(){return ue.types.compose("ProteinView",Yp.BaseViewModel,ue.types.model({id:$p.ElementId,type:ue.types.literal("ProteinView"),structures:ue.types.array(Zn),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,Io),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(Zn.create({url:t.url,data:t.data,userProvidedTranscriptSequence:""}))}})).actions(e=>({async addStructureAndSuperpose(t){let{molstarPluginContext:o}=e;if(!o)return;let n=Zn.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 Hi(o)}catch(r){e.setError(r),console.error(r)}}})).actions(e=>({afterAttach(){try{let t=localStorage.getItem(Rp);if(t){let o=JSON.parse(t);for(let n of Kp)o[n]!==void 0&&(e[n]=o[n])}}catch(t){console.error("Failed to restore protein view settings",t)}(0,ue.addDisposer)(e,(0,Jo.autorun)(()=>{try{let t={};for(let o of Kp)t[o]=e[o];localStorage.setItem(Rp,JSON.stringify(t))}catch(t){console.error("Failed to save protein view settings",t)}})),(0,ue.addDisposer)(e,(0,Jo.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,Jo.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,Jo.autorun)(Fp(e)))}})).views(e=>({get primaryStructure(){return e.structures[0]},menuItems(){return[{label:"Pairwise alignment",icon:Ci,type:"checkbox",checked:e.showAlignment,onClick:()=>{e.setShowAlignment(!e.showAlignment)}},{label:"Protein feature tracks",icon:Ci,type:"checkbox",checked:e.showProteinTracks,onClick:()=>{e.setShowProteinTracks(!e.showProteinTracks)}},{label:"Color scheme...",subMenu:xo.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:ro,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&&Hi(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=$d;var Ag=(0,Mm.lazy)(()=>Promise.resolve().then(()=>(Cm(),km)));function Ki(e){e.addViewType(()=>new Im.ViewType({name:"ProteinView",displayName:"Protein view",stateModel:Zp(),ReactComponent:Ag}))}var Bm=p(rn());var Fm=p(oo());var Pg=(0,Fm.ConfigurationSchema)("UniProtVariationAdapter",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz",locationType:"UriLocation"}},scoreField:{type:"string",defaultValue:""}},{explicitlyTyped:!0}),Lm=Pg;function Yi(e){e.addAdapterType(()=>new Bm.default({name:"UniProtVariationAdapter",displayName:"UniProtVariation adapter",configSchema:Lm,getAdapterClass:()=>Promise.resolve().then(()=>(Vm(),Nm)).then(t=>t.default)}))}var Hm="0.5.0";var ir=class extends Um.default{name="ProteinViewer";version=Hm;install(t){Ki(t),Ai(t),Pi(t),yr(t),wr(t),xr(t),Yi(t)}configure(t){}};return Jm(kg);})();
28
28
  /*! Bundled license information:
29
29
 
30
30
  use-sync-external-store/cjs/use-sync-external-store-shim.production.js: