jbrowse-plugin-protein3d 0.4.13 → 0.4.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ProteinView/components/FeatureBar.js +1 -1
- package/dist/jbrowse-plugin-protein3d.umd.production.min.js +2 -2
- package/dist/jbrowse-plugin-protein3d.umd.production.min.js.map +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/ProteinView/components/FeatureBar.tsx +4 -0
- package/src/version.ts +1 -1
|
@@ -84,7 +84,7 @@ const FeatureBar = observer(function FeatureBar({ feature, model, }) {
|
|
|
84
84
|
const { left, width } = getFeatureGeometry(feature, structurePositionToAlignmentMap);
|
|
85
85
|
const color = getFeatureColor(feature.type);
|
|
86
86
|
return (React.createElement(Tooltip, { title: React.createElement(FeatureTooltipContent, { feature: feature }), followCursor: true },
|
|
87
|
-
React.createElement("div", { onClick: () => {
|
|
87
|
+
React.createElement("div", { "data-testid": `protein-feature-${feature.type}`, "data-feature-id": feature.uniqueId, "data-feature-start": feature.start, "data-feature-end": feature.end, onClick: () => {
|
|
88
88
|
handleClick();
|
|
89
89
|
}, onMouseEnter: () => {
|
|
90
90
|
handleMouseEnter();
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
transcript MKAAYLSMFGKEDHKPFGDDEVELFRAVPGLKLKIAG
|
|
8
8
|
|||||||||||||||||||||||||||||||||||||
|
|
9
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=`
|
|
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",{"data-testid":`protein-feature-${t.type}`,"data-feature-id":t.uniqueId,"data-feature-start":t.start,"data-feature-end":t.end,onClick:()=>{d()},onMouseEnter:()=>{u()},onMouseLeave:()=>{m()},style:{position:"absolute",left:c,top:0,width:y,height:o.trackHeight,backgroundColor:w,opacity:n||a?.9:.6,cursor:"pointer",borderRadius:2,border:a?Dp:n?Np:"none",boxSizing:"border-box"}}))}),Ou=sg});var Ko,ju,Wu,ag,_u,Ru=S(()=>{"use strict";Ko=p(x()),ju=p(I()),Wu=p(_());gt();ag=(0,Wu.observer)(function({type:t,labelWidth:o,model:n}){return Ko.default.createElement(ju.Tooltip,{title:t,placement:"left"},Ko.default.createElement("div",{style:{height:n.trackHeight+n.trackGap,width:o-4,fontSize:9,fontFamily:"monospace",textAlign:"right",paddingRight:4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",display:"flex",alignItems:"center",justifyContent:"flex-end",gap:2}},Ko.default.createElement("span",{onClick:r=>{r.stopPropagation(),n.hideFeatureType(t)},style:{cursor:"pointer",color:Vp,fontWeight:"bold",fontSize:8,lineHeight:1},title:`Hide ${t} track`},"x"),Ko.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis"}},t)))}),_u=ag});var Ju,Ku,lg,Yu,$u=S(()=>{"use strict";Ju=p(x()),Ku=p(_());gt();lg=(0,Ku.observer)(function({model:t}){let{alignmentHoverPos:o}=t;return o===void 0?null:Ju.default.createElement("div",{style:{position:"absolute",left:o*6,top:0,bottom:0,width:6,backgroundColor:qp,pointerEvents:"none",zIndex:10}})}),Yu=lg});function Zu(e,t){return e.filter(o=>!t.has(o))}var ht,Qn,pg,Xu,Qu,em=S(()=>{"use strict";ht=p(x()),Qn=p(_());gt();zu();Ru();$u();pg=(0,Qn.observer)(function({features:t,model:o,sequenceLength:n}){return ht.default.createElement("div",{style:{position:"relative",height:o.trackHeight,width:n*6,marginBottom:o.trackGap}},t.map(r=>ht.default.createElement(Ou,{key:r.uniqueId,feature:r,model:o})),ht.default.createElement(Yu,{model:o}))}),Xu=(0,Qn.observer)(function({data:t,labelWidth:o,model:n}){let{hiddenFeatureTypes:r}=n,i=Zu(t.featureTypes,r);return ht.default.createElement(ht.default.Fragment,null,i.map(s=>ht.default.createElement(_u,{key:s,type:s,labelWidth:o,model:n})))}),Qu=(0,Qn.observer)(function({data:t,model:o}){let{hiddenFeatureTypes:n}=o,r=Zu(t.featureTypes,n);return ht.default.createElement("div",{onMouseMove:i=>{let s=i.currentTarget.getBoundingClientRect(),l=i.clientX-s.left,a=Math.floor(l/6);a>=0&&a<t.sequenceLength&&o.hoverAlignmentPosition(a)},onMouseLeave:()=>{o.setHoveredPosition(void 0)}},r.map(i=>ht.default.createElement(pg,{key:i,features:t.groupedFeatures[i],model:o,sequenceLength:t.sequenceLength})))})});var er,tm,om,ug,_i,nm=S(()=>{"use strict";er=p(x()),tm=p(I()),om=p(_());gt();ug=(0,om.observer)(function({cells:t,colorFor:o,formatValue:n,sequenceLength:r,model:i}){return er.default.createElement("div",{style:{position:"relative",height:i.trackHeight,width:r*6,marginBottom:i.trackGap},onMouseMove:s=>{let l=s.currentTarget.getBoundingClientRect(),a=Math.floor((s.clientX-l.left)/6);a>=0&&a<r&&i.hoverAlignmentPosition(a)},onMouseLeave:()=>{i.setHoveredPosition(void 0)}},t.map(s=>er.default.createElement(tm.Tooltip,{key:s.col,title:n(s.value),followCursor:!0},er.default.createElement("div",{style:{position:"absolute",left:s.col*6,top:0,width:6,height:i.trackHeight,backgroundColor:o(s.value)}}))))}),_i=ug});var We,Kt,mg,cg,dg,rm,im,gg,tr,sm=S(()=>{"use strict";We=p(x()),Kt=p(_());gt();mg=(0,Kt.observer)(function({str:t}){return t.split("").map((o,n)=>We.default.createElement("span",{key:n,style:{position:"absolute",left:n*6,width:6}},o===" "?"\xA0":o))}),cg=(0,Kt.observer)(function({model:t,height:o}){let{showHighlight:n,alignmentMatchSet:r}=t;return!n||!r?null:[...r].map(i=>We.default.createElement("span",{key:i,style:{position:"absolute",left:i*6,top:0,width:6,height:o,background:"#33ff19a0",pointerEvents:"none"}}))}),dg=(0,Kt.observer)(function({model:t,strLength:o,height:n}){let{alignmentHoverPos:r}=t;return r!==void 0&&r>=0&&r<o?We.default.createElement("span",{style:{position:"absolute",left:r*6,top:0,width:6,height:n,background:"#f698",pointerEvents:"none"}}):null}),rm=(0,Kt.observer)(function({range:t,strLength:o,background:n,border:r,height:i}){if(!t)return null;let{start:s,end:l}=t,a=Math.max(0,s),u=Math.min(o-1,l);if(a>u)return null;let m=(u-a+1)*6;return We.default.createElement("span",{style:{position:"absolute",left:a*6,top:0,width:m,height:i,background:n,border:r,boxSizing:"border-box",pointerEvents:"none"}})}),im=(0,Kt.observer)(function({model:t,strLength:o,height:n}){return We.default.createElement("div",{style:{position:"absolute",top:0,left:0,width:o*6,height:n,pointerEvents:"none"}},We.default.createElement(cg,{model:t,height:n}),We.default.createElement(rm,{range:t.clickAlignmentRange,strLength:o,background:"rgba(0, 120, 255, 0.3)",border:"1px solid rgba(0, 120, 255, 0.6)",height:n}),We.default.createElement(rm,{range:t.alignmentHoverRange,strLength:o,background:"rgba(255, 165, 0, 0.4)",height:n}),We.default.createElement(dg,{model:t,strLength:o,height:n}))}),gg=(0,Kt.observer)(function({model:t,str:o}){return We.default.createElement("span",{style:{position:"relative",display:"inline-block",width:o.length*6,height:"1em"},onMouseMove:n=>{let r=n.currentTarget.getBoundingClientRect(),i=n.clientX-r.left,s=Math.floor(i/6);s>=0&&s<o.length&&t.hoverAlignmentPosition(s)},onClick:n=>{let r=n.currentTarget.getBoundingClientRect(),i=n.clientX-r.left,s=Math.floor(i/6);s>=0&&s<o.length&&t.clickAlignmentPosition(s)}},We.default.createElement(mg,{str:o}))}),tr=gg});function fg(e){let t={};for(let o of e)t[o.type]??=[],t[o.type].push(o);return t}function Ri(e,t){let{features:o,isLoading:n,error:r}=ji(t),{pairwiseAlignment:i}=e;if(!t||n||r||!o||!i)return{data:void 0,isLoading:n,error:r};let s=i.alns[0].seq.length,l=fg(o);return{data:{featureTypes:Object.keys(l),groupedFeatures:l,sequenceLength:s},isLoading:!1,error:void 0}}var am=S(()=>{"use strict";Wi()});function pm({label:e,title:t,height:o}){return k.default.createElement(Yt.Tooltip,{title:t,placement:"left"},k.default.createElement("div",{style:{height:o,fontSize:9,fontFamily:"monospace",textAlign:"right",paddingRight:4,display:"flex",alignItems:"center",justifyContent:"flex-end",overflow:"hidden",whiteSpace:"nowrap"}},e))}var k,Yt,um,mm,hg,cm,dm=S(()=>{"use strict";k=p(x()),Yt=p(I()),um=p(to()),mm=p(_());gt();Bu();em();nm();sm();am();Ui();hg=(0,mm.observer)(function({model:t}){let{pairwiseAlignment:o,showHighlight:n,showProteinTracks:r,uniprotId:i,confidenceCells:s,hydrophobicityCells:l}=t,a=(0,k.useRef)(null),{data:u,isLoading:m,error:d}=Ri(t,i);if((0,k.useEffect)(()=>(0,um.autorun)(()=>{let h=a.current;t.autoScrollAlignment&&!t.isMouseInAlignment&&t.alignmentHoverPos!==void 0&&h&&h.scrollTo({left:t.alignmentHoverPos*6-h.clientWidth/2,behavior:"smooth"})}),[t]),!o)return k.default.createElement("div",null,"No pairwiseAlignment");let c=o.alns[0].seq,y=o.alns[1].seq,w=o.consensus;return k.default.createElement("div",null,k.default.createElement(zi,{model:t}),k.default.createElement(Yt.Typography,null,"Alignment of the protein structure file's sequence with the selected transcript's sequence."," ",n?"Green is the aligned portion":null),k.default.createElement("div",{style:{display:"flex",fontSize:9,fontFamily:"monospace",cursor:"pointer",margin:8,paddingBottom:8},onMouseEnter:()=>{t.setIsMouseInAlignment(!0)},onMouseLeave:()=>{t.setIsMouseInAlignment(!1),t.setHoveredPosition(void 0)}},k.default.createElement("div",{style:{flexShrink:0,width:50,textAlign:"right",paddingRight:4}},k.default.createElement("div",{style:{height:14}},k.default.createElement(Yt.Tooltip,{title:"This is the sequence of the protein from the reference genome transcript"},k.default.createElement("span",null,"GENOME"))),k.default.createElement("div",{style:{height:14}},"\xA0"),k.default.createElement("div",{style:{height:14}},k.default.createElement(Yt.Tooltip,{title:"This is the sequence of the protein from the structure file"},k.default.createElement("span",null,"STRUCT"))),r?m?k.default.createElement("div",{style:{height:14,fontSize:8,color:"#666"}},"Loading..."):d?k.default.createElement(Yt.Tooltip,{title:d instanceof Error?d.message:"Error loading features"},k.default.createElement("div",{style:{height:14,fontSize:8,color:"red"}},"Error")):u?k.default.createElement(Xu,{data:u,labelWidth:50,model:t}):null:null,r&&s.length>0?k.default.createElement(pm,{label:"pLDDT",title:"AlphaFold per-residue confidence (pLDDT)",height:t.trackHeight+t.trackGap}):null,r&&l.length>0?k.default.createElement(pm,{label:"hydro",title:"Kyte-Doolittle hydrophobicity (orange hydrophobic, blue hydrophilic)",height:t.trackHeight+t.trackGap}):null),k.default.createElement("div",{ref:a,style:{overflow:"auto",whiteSpace:"nowrap",flex:1,paddingBottom:10,backgroundColor:"white"}},k.default.createElement("div",{style:{position:"relative"}},k.default.createElement(im,{model:t,strLength:c.length,height:42}),k.default.createElement("div",{style:{height:14}},k.default.createElement(tr,{model:t,str:c})),k.default.createElement("div",{style:{height:14}},k.default.createElement(tr,{model:t,str:w})),k.default.createElement("div",{style:{height:14}},k.default.createElement(tr,{model:t,str:y}))),r&&u?k.default.createElement(Qu,{data:u,model:t}):null,r&&s.length>0?k.default.createElement(_i,{cells:s,colorFor:Kp,formatValue:h=>`pLDDT ${h.toFixed(0)}`,sequenceLength:c.length,model:t}):null,r&&l.length>0?k.default.createElement(_i,{cells:l,colorFor:Yp,formatValue:h=>`Kyte-Doolittle ${h.toFixed(1)}`,sequenceLength:c.length,model:t}):null)))}),cm=hg});function yg({checked:e,label:t,onToggle:o}){return G.default.createElement(Ji.default,{onClick:()=>{o()},dense:!0},G.default.createElement(bm.default,null,G.default.createElement(fm.default,{checked:e,size:"small",edge:"start",disableRipple:!0})),G.default.createElement(ym.default,null,t))}function wg(e){return[{label:"Show alignment",checked:e.showAlignment,onToggle:()=>{e.setShowAlignment(!e.showAlignment)}},{label:"Show features",checked:e.showProteinTracks,onToggle:()=>{e.setShowProteinTracks(!e.showProteinTracks)}},{label:"Auto-scroll features",checked:e.autoScrollAlignment,onToggle:()=>{e.setAutoScrollAlignment(!e.autoScrollAlignment)}},{label:"Compact tracks",checked:e.compactTracks,onToggle:()=>{e.setCompactTracks(!e.compactTracks)}}]}var G,gm,fm,hm,bm,ym,wm,Ji,xm,Sm,or,bg,xg,Sg,vm,Tm=S(()=>{"use strict";G=p(x()),gm=p(Oe());su();fm=p(lu()),hm=p(uu()),bm=p(cu()),ym=p(gu()),wm=p(hu()),Ji=p(yu()),xm=p(xu()),Sm=p(vu()),or=p(_());ku();Fu();dm();Ci();bg=(0,or.observer)(function({model:t}){return G.default.createElement(xm.default,{select:!0,size:"small",label:"Color",value:t.colorScheme,onChange:o=>{let n=To.find(r=>r.value===o.target.value);n&&t.setColorScheme(n.value)},slotProps:{select:{native:!1}},sx:{minWidth:180}},To.map(o=>G.default.createElement(Ji.default,{key:o.value,value:o.value},o.label)))});xg=(0,or.observer)(function({model:t}){let[o,n]=(0,G.useState)(null);return G.default.createElement(G.default.Fragment,null,G.default.createElement(Sm.default,{title:"Display settings"},G.default.createElement(hm.default,{size:"small",onClick:r=>{n(r.currentTarget)}},G.default.createElement(iu,{fontSize:"small"}))),G.default.createElement(wm.default,{anchorEl:o,open:!!o,onClose:()=>{n(null)}},wg(t).map(r=>G.default.createElement(yg,{key:r.label,checked:r.checked,label:r.label,onToggle:r.onToggle}))))}),Sg=(0,or.observer)(function({model:t}){let{structures:o,showAlignment:n}=t;return G.default.createElement("div",null,G.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},G.default.createElement(Iu,{model:t}),G.default.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center",flexShrink:0}},G.default.createElement(bg,{model:t}),G.default.createElement(xg,{model:t}))),n?o.filter(r=>r.pairwiseAlignment||r.alignmentPending).map((r,i)=>G.default.createElement("div",{key:i},r.pairwiseAlignment?G.default.createElement(cm,{model:r}):G.default.createElement(gm.LoadingEllipses,{message:"Loading pairwise alignment"}))):null,G.default.createElement(Au,{model:t}))}),vm=Sg});var Pm,Am=S(()=>{"use strict";Pm=`
|
|
11
11
|
.msp-plugin{font-family:Helvetica Neue,Segoe UI,Helvetica,Source Sans Pro,Arial,sans-serif;font-size:14px;line-height:1.42857143;position:absolute;inset:0}.msp-plugin *{box-sizing:border-box}.msp-plugin [hidden],.msp-plugin template{display:none}.msp-plugin a{background-color:transparent}.msp-plugin a:active,.msp-plugin a:hover{outline:0}.msp-plugin abbr[title]{border-bottom:1px dotted}.msp-plugin b,.msp-plugin strong{font-weight:700}.msp-plugin small{font-size:80%}.msp-plugin img{border:0}.msp-plugin svg:not(:root){overflow:hidden}.msp-plugin button,.msp-plugin input,.msp-plugin optgroup,.msp-plugin select,.msp-plugin textarea{color:inherit;font:inherit;margin:0}.msp-plugin button{overflow:visible}.msp-plugin button,.msp-plugin select{text-transform:none}.msp-plugin button,.msp-plugin html input[type=button],.msp-plugin input[type=reset],.msp-plugin input[type=submit]{-webkit-appearance:button;cursor:pointer}.msp-plugin button[disabled],.msp-plugin html input[disabled]{cursor:default}.msp-plugin button::-moz-focus-inner,.msp-plugin input::-moz-focus-inner{border:0;padding:0}.msp-plugin input{line-height:normal}.msp-plugin input[type=checkbox],.msp-plugin input[type=radio]{box-sizing:border-box;padding:0}.msp-plugin input[type=number]::-webkit-inner-spin-button,.msp-plugin input[type=number]::-webkit-outer-spin-button{height:auto}.msp-plugin textarea{overflow:auto}.msp-plugin .msp-layout-expanded,.msp-plugin .msp-layout-standard{inset:0}.msp-plugin .msp-layout-standard{border:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-region{overflow:hidden}.msp-plugin .msp-layout-static,.msp-plugin .msp-layout-scrollable{position:absolute}.msp-plugin .msp-scrollable{overflow-y:auto}.msp-plugin .msp-scrollable-container{position:absolute;inset:0;overflow-y:auto}.msp-plugin .msp-layout-static{overflow:hidden}.msp-plugin .msp-layout-top .msp-layout-static,.msp-plugin .msp-layout-main .msp-layout-static,.msp-plugin .msp-layout-bottom .msp-layout-static,.msp-plugin .msp-layout-right .msp-layout-static{inset:0}.msp-plugin .msp-layout-right .msp-layout-scrollable{inset:43px 0 0}.msp-plugin .msp-layout-left .msp-layout-static{inset:0}.msp-plugin .msp-layout-standard-outside{position:absolute}.msp-plugin .msp-layout-standard-outside .msp-layout-main{position:absolute;inset:0}.msp-plugin .msp-layout-standard-outside .msp-layout-top{position:absolute;right:0;height:97px;top:-97px;width:50%;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-outside .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;top:-97px;width:50%;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-outside .msp-layout-right{position:absolute;width:50%;right:0;bottom:-295px;height:295px;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-outside .msp-layout-left{position:absolute;width:50%;left:0;bottom:-295px;height:295px;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-standard-outside .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-outside .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-standard-landscape{position:absolute}.msp-plugin .msp-layout-standard-landscape .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}.msp-plugin .msp-layout-standard-landscape .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-landscape .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-landscape .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-landscape .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-main,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-top,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-bottom{right:0}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-main,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-top,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-bottom{left:0}.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-main,.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-top,.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-bottom{left:32px}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-bottom .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-top .msp-layout-main{top:0}.msp-plugin .msp-layout-standard-portrait{position:absolute}.msp-plugin .msp-layout-standard-portrait .msp-layout-main{position:absolute;inset:97px 0 361px}.msp-plugin .msp-layout-standard-portrait .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-portrait .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-portrait .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-portrait .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-portrait .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-portrait .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}.msp-plugin .msp-layout-standard-reactive{position:absolute}@media(orientation:landscape),(min-width:1000px){.msp-plugin .msp-layout-standard-reactive .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}.msp-plugin .msp-layout-standard-reactive .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-main,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-top,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-bottom{right:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-main,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-top,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-bottom{left:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-main,.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-top,.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-bottom{left:32px}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-main{top:0}}@media(orientation:portrait)and (max-width:1000px){.msp-plugin .msp-layout-standard-reactive .msp-layout-main{position:absolute;inset:97px 0 361px}.msp-plugin .msp-layout-standard-reactive .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}}.msp-plugin .msp-layout-expanded{position:fixed}@media(orientation:landscape){.msp-plugin .msp-layout-expanded .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}.msp-plugin .msp-layout-expanded .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-main,.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-top,.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-bottom{right:0}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-main,.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-top,.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-bottom{left:0}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-main,.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-top,.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-bottom{left:32px}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-main{bottom:0}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-main{top:0}}@media(orientation:portrait){.msp-plugin .msp-layout-expanded .msp-layout-main{position:absolute;inset:97px 0 361px}.msp-plugin .msp-layout-expanded .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}}.msp-plugin ::-webkit-scrollbar{width:10px;height:10px}.msp-plugin ::-webkit-scrollbar-track{border-radius:0;background-color:#e9e6e0}.msp-plugin ::-webkit-scrollbar-thumb{border-radius:10px;background-color:#beb7a4;border:solid 1px transparent;background-clip:content-box}.msp-plugin .msp-form-control,.msp-plugin .msp-control-row select,.msp-plugin .msp-control-row button,.msp-plugin .msp-control-row input[type=text],.msp-plugin .msp-btn{display:block;width:100%;background:#f3f2ee;border:none;padding:0 10px;line-height:30px;height:32px;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-shadow:none;box-shadow:none;background-image:none}.msp-plugin .msp-form-control::-moz-placeholder,.msp-plugin .msp-control-row select::-moz-placeholder,.msp-plugin .msp-control-row button::-moz-placeholder,.msp-plugin .msp-control-row input[type=text]::-moz-placeholder,.msp-plugin .msp-btn::-moz-placeholder{color:#9c835f;opacity:1}.msp-plugin .msp-form-control:-ms-input-placeholder,.msp-plugin .msp-control-row select:-ms-input-placeholder,.msp-plugin .msp-control-row button:-ms-input-placeholder,.msp-plugin .msp-control-row input[type=text]:-ms-input-placeholder,.msp-plugin .msp-btn:-ms-input-placeholder{color:#9c835f}.msp-plugin .msp-form-control::-webkit-input-placeholder,.msp-plugin .msp-control-row select::-webkit-input-placeholder,.msp-plugin .msp-control-row button::-webkit-input-placeholder,.msp-plugin .msp-control-row input[type=text]::-webkit-input-placeholder,.msp-plugin .msp-btn::-webkit-input-placeholder{color:#9c835f}.msp-plugin .msp-form-control:hover,.msp-plugin .msp-control-row select:hover,.msp-plugin .msp-control-row button:hover,.msp-plugin .msp-control-row input[type=text]:hover,.msp-plugin .msp-btn:hover{color:#ae5d04;background-color:#e9e6e0;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-form-control:active,.msp-plugin .msp-control-row select:active,.msp-plugin .msp-control-row button:active,.msp-plugin .msp-control-row input[type=text]:active,.msp-plugin .msp-btn:active,.msp-plugin .msp-form-control:focus,.msp-plugin .msp-control-row select:focus,.msp-plugin .msp-control-row button:focus,.msp-plugin .msp-control-row input[type=text]:focus,.msp-plugin .msp-btn:focus{color:#332b1f;background-color:#f3f2ee;border:none;outline-offset:0;outline:none}.msp-plugin .msp-form-control[disabled],.msp-plugin .msp-control-row select[disabled],.msp-plugin .msp-control-row button[disabled],.msp-plugin .msp-control-row input[disabled][type=text],.msp-plugin [disabled].msp-btn,.msp-plugin .msp-form-control[readonly],.msp-plugin .msp-control-row select[readonly],.msp-plugin .msp-control-row button[readonly],.msp-plugin .msp-control-row input[readonly][type=text],.msp-plugin [readonly].msp-btn,fieldset[disabled] .msp-plugin .msp-form-control,fieldset[disabled] .msp-plugin .msp-control-row select,fieldset[disabled] .msp-plugin .msp-control-row button,fieldset[disabled] .msp-plugin .msp-control-row input[type=text],fieldset[disabled] .msp-plugin .msp-btn{background:#eeece7;opacity:.35}.msp-plugin .msp-btn,.msp-plugin .msp-control-row button{display:inline-block;margin-bottom:0;text-align:center;touch-action:manipulation;cursor:pointer;background-image:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:0 10px;line-height:32px;border:none;-moz-box-sizing:border-box;box-sizing:border-box}.msp-plugin .msp-btn[disabled],.msp-plugin .msp-control-row button[disabled]{background:#eeece7;opacity:.35}.msp-plugin .msp-btn-block,.msp-plugin .msp-control-row button{display:block;width:100%}.msp-plugin .msp-btn,.msp-plugin .msp-control-row button,.msp-plugin .msp-btn:active,.msp-plugin .msp-btn-link:focus,.msp-plugin .msp-btn:hover{outline:none}.msp-plugin .msp-material-icon svg{display:inline-flex;vertical-align:middle;font-size:1.2em;margin-bottom:3px;fill:currentColor;width:1em;height:1em;flex-shrink:0;user-select:none}.msp-plugin .msp-btn-block>.msp-material-icon,.msp-plugin .msp-control-row button>.msp-material-icon{margin-left:0;margin-right:.4em}.msp-plugin .msp-btn-childless>.msp-material-icon{margin-left:0;margin-right:0}.msp-plugin .msp-btn-icon{border:none;height:32px;width:32px;line-height:32px;padding:0;text-align:center}.msp-plugin .msp-btn-icon:hover{color:#ae5d04;background-color:#e9e6e0;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-btn-icon[disabled],.msp-plugin .msp-btn-icon[disabled]:hover,.msp-plugin .msp-btn-icon[disabled]:active{color:#9c835f}.msp-plugin .msp-btn-icon-small{border:none;height:32px;width:20px;line-height:32px;padding:0;text-align:center}.msp-plugin .msp-btn-icon-small:hover{color:#ae5d04;background-color:#e9e6e0;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-btn-icon-small[disabled],.msp-plugin .msp-btn-icon-small[disabled]:hover,.msp-plugin .msp-btn-icon-small[disabled]:active{color:#9c835f}.msp-plugin .msp-btn-link{font-weight:400;border-radius:0}.msp-plugin .msp-btn-link,.msp-plugin .msp-btn-link:active,.msp-plugin .msp-btn-link.active,.msp-plugin .msp-btn-link[disabled],fieldset[disabled] .msp-plugin .msp-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.msp-plugin .msp-btn-link,.msp-plugin .msp-btn-link:hover,.msp-plugin .msp-btn-link:focus,.msp-plugin .msp-btn-link:active{border-color:transparent}.msp-plugin .msp-btn-link:hover,.msp-plugin .msp-btn-link:focus{text-decoration:none;background-color:transparent}.msp-plugin .msp-btn-link[disabled]:hover,.msp-plugin .msp-btn-link[disabled]:focus,fieldset[disabled] .msp-plugin .msp-btn-link:hover,fieldset[disabled] .msp-plugin .msp-btn-link:focus{text-decoration:none}.msp-plugin .msp-btn-link .msp-icon{font-size:100%}.msp-plugin .msp-btn-link,.msp-plugin .msp-btn-link:active,.msp-plugin .msp-btn-link:focus{color:#332b1f;text-decoration:none}.msp-plugin .msp-btn-link:hover{color:#ae5d04;text-decoration:none}.msp-plugin .msp-btn-link-toggle-on{color:#332b1f}.msp-plugin .msp-btn-link-toggle-off,.msp-plugin .msp-btn-link-toggle-off:active,.msp-plugin .msp-btn-link-toggle-off:focus{color:#9c835f!important}.msp-plugin .msp-btn-link-toggle-on:hover{color:#ae5d04!important}.msp-plugin .msp-btn-link-toggle-off:hover{color:#dc9c56!important}.msp-plugin .msp-btn-action,.msp-plugin .msp-btn-action:active,.msp-plugin .msp-btn-action:focus{color:#332b1f;background:#f3f2ee}.msp-plugin .msp-btn-action:hover{color:#ae5d04;background:#f9f8f6}.msp-plugin .msp-btn-action[disabled],.msp-plugin .msp-btn-action[disabled]:hover,.msp-plugin .msp-btn-action[disabled]:active,.msp-plugin .msp-btn-action[disabled]:focus{color:#362e21}.msp-plugin .msp-btn-commit-on,.msp-plugin .msp-btn-commit-on:active,.msp-plugin .msp-btn-commit-on:focus{color:#974102;background:#f2f1ed}.msp-plugin .msp-btn-commit-on:hover{color:#ae5d04;background:#f8f7f4}.msp-plugin .msp-btn-commit-on[disabled],.msp-plugin .msp-btn-commit-on[disabled]:hover,.msp-plugin .msp-btn-commit-on[disabled]:active,.msp-plugin .msp-btn-commit-on[disabled]:focus{color:#9c4302}.msp-plugin .msp-btn-commit-off,.msp-plugin .msp-btn-commit-off:active,.msp-plugin .msp-btn-commit-off:focus{color:#332b1f;background:#f6f5f3}.msp-plugin .msp-btn-commit-off:hover{color:#ae5d04;background:#fcfbfa}.msp-plugin .msp-btn-commit-off[disabled],.msp-plugin .msp-btn-commit-off[disabled]:hover,.msp-plugin .msp-btn-commit-off[disabled]:active,.msp-plugin .msp-btn-commit-off[disabled]:focus{color:#362e21}.msp-plugin .msp-btn-remove:hover{color:#f2f4f7}.msp-plugin .msp-btn-commit-on:hover{color:#fc6c03}.msp-plugin .msp-select-toggle:after{content:"";position:absolute;right:.75rem;top:50%;transform:translateY(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid #ae5d04;opacity:0;pointer-events:none}.msp-plugin .msp-select-toggle:hover:after{opacity:1}.msp-plugin .msp-btn-action{height:32px;line-height:32px}.msp-plugin input[type=file]{display:block}.msp-plugin input[type=range]{display:block;width:100%}.msp-plugin select[multiple],.msp-plugin select[size],.msp-plugin textarea.msp-form-control,.msp-plugin textarea.msp-btn{height:auto}.msp-plugin .msp-control-top-offset{margin-top:1px}.msp-plugin .msp-btn-commit{text-align:right;padding:0 10px 0 0;line-height:32px;border:none;overflow:hidden;font-weight:700}.msp-plugin .msp-btn-commit .msp-icon{display:block-inline;line-height:32px;width:32px;text-align:center}.msp-plugin select.msp-form-control,.msp-plugin .msp-control-row select,.msp-plugin select.msp-btn{background:none;background-color:#f3f2ee;background-size:8px 12px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right 10px center;padding-right:24px}.msp-plugin select.msp-form-control:-moz-focusring,.msp-plugin .msp-control-row select:-moz-focusring,.msp-plugin select.msp-btn:-moz-focusring{color:transparent;text-shadow:0 0 0 #332b1f}.msp-plugin .msp-default-bg{background:#eeece7}.msp-plugin .msp-transparent-bg{background:transparent}.msp-plugin .msp-no-hover-outline:hover{color:#ae5d04;background-color:inherit;border:none;outline-offset:0!important;outline:none!important}.msp-plugin .msp-icon-inline{margin-right:8px}.msp-plugin .msp-control-row{position:relative;height:32px;background:#eeece7;margin-top:1px}.msp-plugin .msp-control-row>span.msp-control-row-label,.msp-plugin .msp-control-row>button.msp-control-button-label{line-height:32px;display:block;width:120px;text-align:right;padding:0 10px;color:#63533c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-control-row>button.msp-control-button-label{background:#eeece7;cursor:pointer}.msp-plugin .msp-control-row .msp-control-current{background:#eeece7}.msp-plugin .msp-control-row>div.msp-control-row-ctrl{position:absolute;inset:0 0 0 120px}.msp-plugin .msp-control-row>div.msp-control-row-text{position:absolute;inset:0 0 0 120px;display:flex;align-items:center;padding:0 10px}.msp-plugin .msp-control-row>div{background:#f3f2ee}.msp-plugin .msp-control-row>.msp-flex-row,.msp-plugin .msp-control-row>.msp-state-image-row{background:#eeece7}.msp-plugin .msp-control-label-short>span{width:80px!important}.msp-plugin .msp-control-label-short>div:nth-child(2){left:80px!important}.msp-plugin .msp-control-col-2{float:left;width:50%}.msp-plugin .msp-control-twoline{height:64px!important}.msp-plugin .msp-control-group{position:relative}.msp-plugin .msp-toggle-button .msp-icon{display:inline-block;margin-right:6px}.msp-plugin .msp-toggle-button>div>button:hover{border-color:#e9e6e0!important;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-slider>div:first-child{position:absolute;inset:0 62px 0 18px;display:flex}.msp-plugin .msp-slider>div:last-child{position:absolute;height:32px;line-height:32px;text-align:center;right:0;width:50px;top:0;bottom:0}.msp-plugin .msp-slider-no-input>div:first-child{right:18px}.msp-plugin .msp-slider-no-input>div:last-child{visibility:hidden;width:0}.msp-plugin .msp-slider input[type=text]{padding-right:6px;padding-left:4px;font-size:80%;text-align:right}.msp-plugin .msp-slider2>div:first-child{position:absolute;height:32px;line-height:32px;text-align:center;left:0;width:25px;top:0;bottom:0;font-size:80%}.msp-plugin .msp-slider2>div:nth-child(2){position:absolute;inset:0 37px 0 35px;display:flex}.msp-plugin .msp-slider2>div:last-child{position:absolute;height:32px;line-height:32px;text-align:center;right:0;width:25px;top:0;bottom:0;font-size:80%}.msp-plugin .msp-slider2 input[type=text]{padding-right:4px;padding-left:4px;font-size:80%;text-align:center}.msp-plugin .msp-toggle-color-picker button{border:10px solid rgb(243.2865853659,241.9085365854,238.4634146341)!important;margin:0;text-align:center;padding-right:10px;padding-left:10px}.msp-plugin .msp-toggle-color-picker button:hover{border-color:#e9e6e0!important;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-toggle-color-picker .msp-color-picker{position:absolute;z-index:100000;background:#eeece7;border-top:1px solid #eeece7;padding-bottom:5px;width:100%}.msp-plugin .msp-toggle-color-picker-above .msp-color-picker{top:-85px;height:85px}.msp-plugin .msp-toggle-color-picker-below .msp-color-picker{top:32px;height:80px}.msp-plugin .msp-control-offset{padding-left:10px}.msp-plugin .msp-accent-offset{padding-left:1px;margin-left:8px;border-left:2px solid rgb(232.5914634146,139.3719512195,56.9085365854)}.msp-plugin .msp-control-group-wrapper{margin-bottom:0;margin-top:1px}.msp-plugin .msp-control-group-header{background:#eeece7}.msp-plugin .msp-control-group-header>button,.msp-plugin .msp-control-group-header div{padding-left:4px;text-align:left;height:24px!important;line-height:24px!important;font-size:85%!important;background:#eeece7!important;color:#63533c}.msp-plugin .msp-control-group-header .msp-icon{height:24px!important;line-height:24px!important}.msp-plugin .msp-control-group-header>span{padding-left:5px;line-height:21.3333333333px;font-size:70%;background:#eeece7;color:#63533c}.msp-plugin .msp-control-current{background:#eeece7}.msp-plugin .msp-control-group-footer{background:#e3e0d8;height:5px;font-size:1px;margin-top:1px}.msp-plugin .msp-control-group-expander{display:block;position:absolute;line-height:32px;padding:0;left:0;top:0;width:120px;text-align:left;background:transparent}.msp-plugin .msp-control-group-expander .msp-icon{line-height:29px;width:31px;text-align:center;font-size:100%}.msp-plugin .msp-plugin-layout_controls{position:absolute;left:10px;top:10px}.msp-plugin .msp-plugin-layout_controls>button:first-child{margin-right:6px}.msp-plugin .msp-empty-control{display:none}.msp-plugin .msp-control .msp-btn-block,.msp-plugin .msp-control .msp-control-row button,.msp-plugin .msp-control-row .msp-control button{margin-bottom:0;margin-top:0}.msp-plugin .msp-row-text{height:32px;position:relative;background:#eeece7;margin-top:1px}.msp-plugin .msp-row-text>div{line-height:32px;text-align:center;color:#63533c}.msp-plugin .msp-help span{display:none}.msp-plugin .msp-help:hover span{display:inline-block;background:linear-gradient(#eeece7,#eeece7cc)}.msp-plugin .msp-help-text{position:relative;background:#eeece7;margin-top:1px}.msp-plugin .msp-help-text>div{padding:5px 10px;text-align:left;color:#63533c}.msp-plugin .msp-help-text>p{padding:5px 10px;text-align:left;color:#63533c}.msp-plugin .msp-help-description{font-style:italic}.msp-plugin .msp-help-legend{padding-top:10px}.msp-plugin .msp-scale-legend>div{width:100%;height:30px}.msp-plugin .msp-scale-legend>div>span{padding:5px;color:#fff;font-weight:700;background-color:#0003}.msp-plugin .msp-table-legend>div{margin-right:5px;display:inline-flex}.msp-plugin .msp-table-legend>div .msp-table-legend-color{width:30px;height:20px}.msp-plugin .msp-table-legend>div .msp-table-legend-text{margin:0 5px}.msp-plugin .msp-image-preview{position:relative;background:#eeece7;margin-top:1px;padding:10px}.msp-plugin .msp-image-preview canvas{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.msp-plugin .msp-image-preview>span{margin-top:6px;display:block;text-align:center;font-size:80%;line-height:15px}.msp-plugin .msp-copy-image-wrapper{position:relative}.msp-plugin .msp-copy-image-wrapper div{font-weight:700;padding:3px;margin:1px 0;width:100%;background:#f3f2ee;text-align:center}.msp-plugin .msp-copy-image-wrapper img{margin-top:1px}.msp-plugin .msp-control-text-area-wrapper,.msp-plugin .msp-text-area-wrapper{position:relative}.msp-plugin .msp-control-text-area-wrapper textarea,.msp-plugin .msp-text-area-wrapper textarea{border:none;width:100%;height:100%;background:#f3f2ee;padding:5px 10px;resize:none;font-size:12px;line-height:16px}.msp-plugin .msp-control-text-area-wrapper{height:64px!important}.msp-plugin .msp-text-area-wrapper{height:96px!important}.msp-plugin .msp-help-row{position:relative;height:32px;background:#eeece7;margin-top:1px;display:table;width:100%}.msp-plugin .msp-help-row>span{width:120px;text-align:right;padding:3px 10px;color:#63533c;display:table-cell;font-weight:700;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-help-row>div{background:#f3f2ee;position:relative;padding:3px 10px;display:table-cell}.msp-plugin .msp-canvas{width:100%;height:100%;background-color:#f3f2ee}.msp-plugin .msp-canvas text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.msp-plugin .msp-canvas circle{stroke:#000;stroke-width:10;stroke-opacity:.3}.msp-plugin .msp-canvas circle:hover{fill:#ae5d04;stroke:#000;stroke-width:10px}.msp-plugin .msp-canvas .info{fill:#fff;stroke:#000;stroke-width:3}.msp-plugin .msp-canvas .show{visibility:visible}.msp-plugin .msp-canvas .hide{visibility:hidden}.msp-plugin .msp-canvas .delete-button rect{fill:#ed4337;stroke:#000}.msp-plugin .msp-canvas .delete-button text{stroke:#fff;fill:#fff}.msp-plugin .msp-canvas .delete-button:hover{stroke:#000;stroke-width:3;fill:#ff6961}.msp-plugin .msp-canvas .infoCircle:hover{fill:#4c66b2}.msp-plugin .msp-canvas:focus{outline:none}.msp-plugin .msp-log-wrap{position:absolute;inset:0;overflow:hidden}.msp-plugin .msp-log{position:absolute;inset:0 -20px 0 0;overflow-y:scroll;overflow-x:hidden;font-size:90%;background:#e0ddd4}.msp-plugin .msp-log{font-size:90%}.msp-plugin .msp-log ul{padding:0;margin:0}.msp-plugin .msp-log{color:#433829}.msp-plugin .msp-log li{clear:both;margin:0;background:#eeece7;position:relative}.msp-plugin .msp-log li:not(:last-child){border-bottom:1px solid rgb(206.2804878049,200.5487804878,186.2195121951)}.msp-plugin .msp-log .msp-log-entry{margin-left:110px;background:#ebe8e3;padding:3px 25px 3px 10px}.msp-plugin .msp-log .msp-log-timestamp{padding:3px 10px;float:left;text-align:right;width:110px;color:#726046;font-size:100%}.msp-plugin .msp-log .msp-log-timestamp small{font-size:100%}.msp-plugin .msp-log .label{margin-top:-3px;font-size:7pt}.msp-plugin .msp-log-entry-badge{position:absolute;left:0;top:0;bottom:0;width:6px}.msp-plugin .msp-log-entry-message{background:#0cca5d}.msp-plugin .msp-log-entry-info{background:#5e3673}.msp-plugin .msp-log-entry-error{background:#fd354b}.msp-plugin .msp-log-entry-warning{background:#fcc937}.msp-plugin .msp-slider-base{position:relative;height:14px;padding:5px 0;width:100%;border-radius:6px;align-self:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.msp-plugin .msp-slider-base *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.msp-plugin .msp-slider-base-rail{position:absolute;width:100%;background-color:#e0ddd4;height:4px;border-radius:2px}.msp-plugin .msp-slider-base-track{position:absolute;left:0;height:4px;border-radius:6px;background-color:tint(#332b1f,60%)}.msp-plugin .msp-slider-base-handle{position:absolute;margin-left:-11px;margin-top:-9px;width:22px;height:22px;cursor:pointer;border-radius:50%;background-color:#332b1f;border:4px solid rgb(224.2548780488,220.637804878,211.5951219512)}.msp-plugin .msp-slider-base-handle:hover{background-color:#ae5d04}.msp-plugin .msp-slider-base-mark{position:absolute;top:18px;left:0;width:100%;font-size:12px}.msp-plugin .msp-slider-base-mark-text{position:absolute;display:inline-block;vertical-align:middle;text-align:center;cursor:pointer;color:#999}.msp-plugin .msp-slider-base-mark-text-active{color:#666}.msp-plugin .msp-slider-base-step{position:absolute;width:100%;height:4px;background:transparent}.msp-plugin .msp-slider-base-dot{position:absolute;bottom:-2px;margin-left:-4px;width:8px;height:8px;border:2px solid #e9e9e9;background-color:#fff;cursor:pointer;border-radius:50%;vertical-align:middle}.msp-plugin .msp-slider-base-dot:first-child{margin-left:-4px}.msp-plugin .msp-slider-base-dot:last-child{margin-left:-4px}.msp-plugin .msp-slider-base-dot-active{border-color:tint(#332b1f,50%)}.msp-plugin .msp-slider-base-disabled{background:#eeece7;opacity:.35}.msp-plugin .msp-slider-base-disabled .msp-slider-base-handle,.msp-plugin .msp-slider-base-disabled .msp-slider-base-dot{cursor:not-allowed}.msp-plugin .msp-slider-base-disabled .msp-slider-base-mark-text,.msp-plugin .msp-slider-base-disabled .msp-slider-base-dot{cursor:not-allowed!important}.msp-plugin .msp-markdown table{border:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);border-collapse:collapse}.msp-plugin .msp-markdown th{text-align:left}.msp-plugin .msp-markdown th,.msp-plugin .msp-markdown td{border:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);padding:4px 8px}.msp-plugin .msp-markdown img{max-width:100%;height:auto}.msp-plugin .msp-description{padding:10px;font-size:85%;background:#eeece7;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;font-weight:light;cursor:default}.msp-plugin .msp-description:not(:first-child){border-top:1px solid rgb(224.2548780488,220.637804878,211.5951219512)}.msp-plugin .msp-color-picker input{color:#000!important}.msp-plugin .msp-no-webgl{position:absolute;width:100%;height:100%;left:0;top:0;display:table;text-align:center;background:#eeece7}.msp-plugin .msp-no-webgl>div b{font-size:120%}.msp-plugin .msp-no-webgl>div{display:table-cell;vertical-align:middle;text-align:center;width:100%;height:100%}.msp-plugin .msp-loader-msp-btn-file{position:relative;overflow:hidden}.msp-plugin .msp-loader-msp-btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;filter:alpha(opacity=0);opacity:0;outline:none;background:#fff;cursor:inherit;display:block}.msp-plugin .msp-controls-section{margin-bottom:10px}.msp-plugin .msp-combined-color-button{border:4px solid rgb(243.2865853659,241.9085365854,238.4634146341)!important;margin:0;text-align:center;padding-right:10px;padding-left:10px}.msp-plugin .msp-combined-color-button:hover{border-color:#e9e6e0!important;border:none;outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-combined-color-swatch{width:100%;display:grid;grid-gap:1px;grid-template-columns:repeat(6,auto)}.msp-plugin .msp-combined-color-swatch .msp-btn:hover,.msp-plugin .msp-combined-color-swatch .msp-control-row button:hover,.msp-plugin .msp-control-row .msp-combined-color-swatch button:hover{outline-offset:-1px!important;outline:1px solid rgb(200.993902439,194.6402439024,178.756097561)!important}.msp-plugin .msp-action-select{position:relative}.msp-plugin .msp-action-select select{padding-left:42px}.msp-plugin .msp-action-select option:first-child{color:#63533c}.msp-plugin .msp-action-select>.msp-icon{display:block;top:0;left:10px;position:absolute;line-height:32px}.msp-plugin .msp-simple-help-section{height:28px;line-height:28px;margin-top:5px;margin-bottom:5px;padding:0 10px;font-weight:500;background:#eeece7;color:#332b1f}.msp-plugin .msp-left-panel-controls-buttons{position:absolute;width:32px;top:0;bottom:0;padding-top:10px;background:#eeece7}.msp-plugin .msp-left-panel-controls-buttons-bottom{position:absolute;bottom:0}.msp-plugin .msp-left-panel-controls-button-data-dirty{position:absolute;width:6px;height:6px;background:#e98b39;border-radius:3px;right:6px;bottom:6px}.msp-plugin .msp-left-panel-controls .msp-scrollable-container{left:33px}.msp-plugin .msp-mapped-parameter-group{position:relative}.msp-plugin .msp-mapped-parameter-group>.msp-control-row:first-child>div:nth-child(2){right:33px}.msp-plugin .msp-mapped-parameter-group>button:first-child{right:33px}.msp-plugin .msp-mapped-parameter-group>.msp-btn-icon{position:absolute;right:0;width:32px;top:0;padding:0}.msp-plugin .msp-shape-filled{fill:#332b1f;stroke:#332b1f}.msp-plugin .msp-shape-empty{fill:none;stroke:#332b1f}.msp-plugin .msp-no-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msp-plugin .msp-25-lower-contrast-text{color:#826e4f}.msp-plugin .msp-expandable-group-color-stripe{position:absolute;left:0;top:30px;width:120px;height:2px}.msp-plugin .msp-section-header{height:32px;line-height:32px;margin-top:10px;margin-bottom:10px;text-align:right;padding:0 10px;font-weight:700;background:#eeece7;overflow:hidden;cursor:default}.msp-plugin .msp-section-header>.msp-icon{display:block;float:left}.msp-plugin .msp-section-header>small{font-weight:400}.msp-plugin .msp-current-header{height:32px;line-height:32px;margin-bottom:10px;text-align:center;font-weight:700;background:#eeece7}.msp-plugin .msp-flex-row,.msp-plugin .msp-state-image-row{margin-top:1px;background:#eeece7;display:flex;flex-direction:row;width:inherit;height:32px}.msp-plugin .msp-flex-row>.msp-flex-item,.msp-plugin .msp-state-image-row>.msp-flex-item{margin:0 1px 0 0;flex:1 1 auto;overflow:hidden}.msp-plugin .msp-flex-row>.msp-flex-item:last-child,.msp-plugin .msp-state-image-row>.msp-flex-item:last-child{margin-right:0}.msp-plugin .msp-flex-row>select,.msp-plugin .msp-state-image-row>select,.msp-plugin .msp-flex-row>button,.msp-plugin .msp-state-image-row>button{margin:0 1px 0 0;flex:1 1 auto;height:32px;overflow:hidden}.msp-plugin .msp-flex-row .msp-btn-icon,.msp-plugin .msp-state-image-row .msp-btn-icon,.msp-plugin .msp-flex-row .msp-btn-icon-small,.msp-plugin .msp-state-image-row .msp-btn-icon-small{flex:0 0 32px;max-width:32px}.msp-plugin .msp-flex-row>select,.msp-plugin .msp-state-image-row>select{background:none}.msp-plugin .msp-flex-row>select>option[value=_],.msp-plugin .msp-state-image-row>select>option[value=_]{display:none}.msp-plugin .msp-flex-row>select:last-child,.msp-plugin .msp-state-image-row>select:last-child,.msp-plugin .msp-flex-row>button:last-child,.msp-plugin .msp-state-image-row>button:last-child{margin-right:0}.msp-plugin .msp-flex-row>button.msp-control-button-label,.msp-plugin .msp-state-image-row>button.msp-control-button-label{background:#eeece7}.msp-plugin .msp-state-list{list-style:none}.msp-plugin .msp-state-list>li{position:relative;overflow:hidden}.msp-plugin .msp-state-list>li>button:first-child{text-align:left;border-left:10px solid rgb(212.6243902439,207.6390243902,195.1756097561)!important}.msp-plugin .msp-state-list>li>div{position:absolute;right:0;top:0}.msp-plugin .msp-state-image-row{height:96px;margin-top:0}.msp-plugin .msp-state-image-row>button{height:96px;padding:0}.msp-plugin .msp-state-image-row>button>img{min-height:96px;width:inherit;transform:translateY(-50%);top:50%;position:relative}.msp-plugin .msp-tree-row{position:relative;margin-top:0;margin-bottom:1px;background:transparent}.msp-plugin .msp-tree-row-current .msp-btn-tree-label>span{font-weight:700}.msp-plugin .msp-tree-row-current .msp-btn-tree-label{border-radius:0!important}.msp-plugin .msp-tree-row .msp-btn-tree-label{text-align:left;border-radius:0 0 0 8px;border-left-width:4px;border-left-style:solid}.msp-plugin .msp-tree-row .msp-btn-tree-label>small{color:#726046}.msp-plugin .msp-tree-updates-wrapper .msp-control-group-header:last-child{margin-bottom:1px}.msp-plugin .msp-viewport-top-left-controls{position:absolute;left:10px;top:10px}.msp-plugin .msp-viewport-top-left-controls .msp-traj-controls{line-height:32px;float:left;margin-right:10px;background-color:#f3f2ee}.msp-plugin .msp-viewport-top-left-controls .msp-traj-controls>span{color:#332b1f;margin-left:10px;margin-right:10px;font-size:85%;display:inline-block}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls{line-height:32px;float:left;margin-right:10px}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls>button{background-color:#f3f2ee}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls>select{display:inline-block;width:200px;margin-right:10px}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-animation-slider{position:relative;display:inline-block;width:120px;line-height:32px}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-animation-button{margin-left:10px}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls{line-height:32px;float:left;margin-right:10px;position:relative}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls>div:first-child{position:relative;display:inline-block}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls>div:first-child>button{position:relative}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls .msp-animation-viewport-controls-select{width:290px;position:absolute;left:0;margin-top:10px;background:#e0ddd4;z-index:10001}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls .msp-animation-viewport-controls-select .msp-control-row:first-child{margin-top:0}.msp-plugin .msp-selection-viewport-controls{position:relative;margin:10px auto 0;width:430px}.msp-plugin .msp-selection-viewport-controls-actions{position:absolute;width:100%;top:32px;background:#e0ddd4}.msp-plugin .msp-selection-viewport-controls>.msp-flex-row .msp-btn,.msp-plugin .msp-selection-viewport-controls>.msp-state-image-row .msp-btn,.msp-plugin .msp-selection-viewport-controls>.msp-flex-row .msp-control-row button,.msp-plugin .msp-control-row .msp-selection-viewport-controls>.msp-flex-row button,.msp-plugin .msp-selection-viewport-controls>.msp-state-image-row .msp-control-row button,.msp-plugin .msp-control-row .msp-selection-viewport-controls>.msp-state-image-row button{padding:0 5px}.msp-plugin .msp-selection-viewport-controls select.msp-form-control,.msp-plugin .msp-selection-viewport-controls select.msp-btn,.msp-plugin .msp-selection-viewport-controls .msp-control-row select,.msp-plugin .msp-control-row .msp-selection-viewport-controls select{padding:0 5px;text-align:center;background:#f3f2ee;flex:0 0 80px;text-overflow:ellipsis}.msp-plugin .msp-param-object-list-item{margin-top:1px;position:relative}.msp-plugin .msp-param-object-list-item>button{text-align:left}.msp-plugin .msp-param-object-list-item>button>span{font-weight:700}.msp-plugin .msp-param-object-list-item>div{position:absolute;right:0;top:0}.msp-plugin .msp-state-actions .msp-transform-wrapper:last-child{margin-bottom:10px}.msp-plugin .msp-button-row{display:flex;flex-direction:row;height:32px;width:inherit}.msp-plugin .msp-button-row>button{margin:0 1px 0 0;flex:1 1 auto;height:32px;text-align-last:center;background:none;padding:0 10px;overflow:hidden}.msp-plugin .msp-action-menu-options-no-header,.msp-plugin .msp-action-menu-options .msp-control-group-children{max-height:300px;overflow:hidden;overflow-y:auto}.msp-plugin .msp-action-menu-options .msp-control-row,.msp-plugin .msp-action-menu-options button,.msp-plugin .msp-action-menu-options .msp-icon,.msp-plugin .msp-action-menu-options .msp-flex-row,.msp-plugin .msp-action-menu-options .msp-state-image-row{height:24px;line-height:24px}.msp-plugin .msp-action-menu-options button{text-align:left}.msp-plugin .msp-action-menu-options .msp-action-menu-button{margin-top:1px;display:flex}.msp-plugin .msp-action-menu-options .msp-action-menu-button .msp-icon{margin-right:6px}.msp-plugin .msp-representation-entry{position:relative}.msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-btn,.msp-plugin .msp-control-row .msp-representation-entry>.msp-control-group-header>button{font-weight:700}.msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-icon,.msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-btn-link{line-height:24px;height:24px}.msp-plugin .msp-control-group-presets-wrapper{position:absolute;right:0;top:0}.msp-plugin .msp-control-group-presets-wrapper .msp-control-group-header{background:transparent}.msp-plugin .msp-control-group-presets-wrapper button{background:transparent!important}.msp-plugin .msp-parameter-matrix input{flex:1 1 auto;min-width:0}.msp-plugin .msp-btn-apply-simple{text-align:left}.msp-plugin .msp-btn-apply-simple .msp-icon{margin-right:10px}.msp-plugin .msp-type-class-Root{border-left-color:#eeece7}.msp-plugin .msp-type-class-Group{border-left-color:#e98b39}.msp-plugin .msp-type-class-Data{border-left-color:#bfc8c9}.msp-plugin .msp-type-class-Object{border-left-color:#54d98c}.msp-plugin .msp-type-class-Representation3D{border-left-color:#4aa3df}.msp-plugin .msp-type-class-Behavior{border-left-color:#b07cc6}.msp-plugin .msp-accent-color-cyan{color:#bfc8c9}.msp-plugin .msp-accent-bg-cyan{background:#bfc8c9}.msp-plugin .msp-transform-header-brand-cyan{border-bottom:1px solid rgb(190.5846153846,200.3076923077,200.9153846154)}.msp-plugin .msp-transform-header-brand-cyan:active,.msp-plugin .msp-transform-header-brand-cyan:focus{border-bottom:1px solid rgb(190.5846153846,200.3076923077,200.9153846154)}.msp-plugin .msp-accent-color-red{color:#ef8b80}.msp-plugin .msp-accent-bg-red{background:#ef8b80}.msp-plugin .msp-transform-header-brand-red{border-bottom:1px solid rgb(239.3835616438,138.5273972603,128.1164383562)}.msp-plugin .msp-transform-header-brand-red:active,.msp-plugin .msp-transform-header-brand-red:focus{border-bottom:1px solid rgb(239.3835616438,138.5273972603,128.1164383562)}.msp-plugin .msp-accent-color-gray{color:#46637f}.msp-plugin .msp-accent-bg-gray{background:#46637f}.msp-plugin .msp-transform-header-brand-gray{border-bottom:1px solid rgb(70.1643835616,98.5,126.8356164384)}.msp-plugin .msp-transform-header-brand-gray:active,.msp-plugin .msp-transform-header-brand-gray:focus{border-bottom:1px solid rgb(70.1643835616,98.5,126.8356164384)}.msp-plugin .msp-accent-color-green{color:#54d98c}.msp-plugin .msp-accent-bg-green{background:#54d98c}.msp-plugin .msp-transform-header-brand-green{border-bottom:1px solid rgb(84.456,216.544,140.468)}.msp-plugin .msp-transform-header-brand-green:active,.msp-plugin .msp-transform-header-brand-green:focus{border-bottom:1px solid rgb(84.456,216.544,140.468)}.msp-plugin .msp-accent-color-purple{color:#b07cc6}.msp-plugin .msp-accent-bg-purple{background:#b07cc6}.msp-plugin .msp-transform-header-brand-purple{border-bottom:1px solid rgb(176.3389121339,124.4225941423,197.5774058577)}.msp-plugin .msp-transform-header-brand-purple:active,.msp-plugin .msp-transform-header-brand-purple:focus{border-bottom:1px solid rgb(176.3389121339,124.4225941423,197.5774058577)}.msp-plugin .msp-accent-color-blue{color:#4aa3df}.msp-plugin .msp-accent-bg-blue{background:#4aa3df}.msp-plugin .msp-transform-header-brand-blue{border-bottom:1px solid rgb(73.6589958159,162.989539749,222.8410041841)}.msp-plugin .msp-transform-header-brand-blue:active,.msp-plugin .msp-transform-header-brand-blue:focus{border-bottom:1px solid rgb(73.6589958159,162.989539749,222.8410041841)}.msp-plugin .msp-accent-color-orange{color:#e98b39}.msp-plugin .msp-accent-bg-orange{background:#e98b39}.msp-plugin .msp-transform-header-brand-orange{border-bottom:1px solid rgb(232.5914634146,139.3719512195,56.9085365854)}.msp-plugin .msp-transform-header-brand-orange:active,.msp-plugin .msp-transform-header-brand-orange:focus{border-bottom:1px solid rgb(232.5914634146,139.3719512195,56.9085365854)}.msp-plugin .msp-volume-channel-inline-controls>:first-child{position:absolute;left:0;top:0;height:32px;right:32px}.msp-plugin .msp-volume-channel-inline-controls .msp-slider>div:first-child{right:42px}.msp-plugin .msp-volume-channel-inline-controls .msp-slider>div:last-child{width:30px}.msp-plugin .msp-volume-channel-inline-controls>button{position:absolute;right:0;width:32px;top:0;padding:0}.msp-plugin .msp-volume-channel-inline-controls>button .msp-material-icon{margin-right:0}.msp-plugin .msp-list-unstyled{padding-left:0;list-style:none}.msp-plugin .msp-drag-drop-overlay{border:12px dashed #332b1f;background:#0000005c;display:flex;align-items:center;justify-content:center;position:absolute;inset:0;font-size:48px;font-weight:700}.msp-plugin .msp-task-state{line-height:32px}.msp-plugin .msp-task-state>span{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-overlay-tasks{position:absolute;display:flex;inset:0;height:100%;width:100%;z-index:1000;justify-content:center;align-items:center;background:#00000040}.msp-plugin .msp-overlay-tasks .msp-task-state>div{height:32px;margin-top:1px;position:relative;width:100%;background:#eeece7}.msp-plugin .msp-overlay-tasks .msp-task-state>div>div{height:32px;line-height:32px;display:inline-block;padding:0 10px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;white-space:nowrap;background:#eeece7;position:absolute}.msp-plugin .msp-overlay-tasks .msp-task-state>div>button{display:inline-block;margin-top:-3px}.msp-plugin .msp-background-tasks{position:absolute;left:0;bottom:0;z-index:1000}.msp-plugin .msp-background-tasks .msp-task-state>div{height:32px;margin-top:1px;position:relative;width:100%;background:#eeece7}.msp-plugin .msp-background-tasks .msp-task-state>div>div{height:32px;line-height:32px;display:inline-block;padding:0 10px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;white-space:nowrap;background:#eeece7;position:absolute}.msp-plugin .msp-background-tasks .msp-task-state>div>button{display:inline-block;margin-top:-3px}.msp-plugin .msp-viewport{position:absolute;inset:0;background:#eeece7}.msp-plugin .msp-viewport .msp-btn-link{background:#0003}.msp-plugin .msp-viewport-expanded{position:fixed;z-index:1000}.msp-plugin .msp-viewport-controls{position:absolute;right:10px;top:10px;width:32px}.msp-plugin .msp-viewport-controls-buttons{text-align:right;position:relative}.msp-plugin .msp-viewport-controls-buttons>div{position:relative;margin-bottom:4px}.msp-plugin .msp-viewport-controls-buttons button{padding:0;text-align:center;width:32px;position:relative}.msp-plugin .msp-viewport-controls-buttons .msp-btn-link-toggle-off{color:#9c835f}.msp-plugin .msp-viewport-controls-buttons .msp-btn-link:hover{color:#ae5d04}.msp-plugin .msp-semi-transparent-background{background:#eeece7;opacity:.5;position:absolute;top:0;left:0;width:100%;height:100%}.msp-plugin .msp-hover-box-wrapper{position:relative}.msp-plugin .msp-hover-box-wrapper .msp-hover-box-body{visibility:hidden;position:absolute;right:36px;top:0;width:100px;background-color:#eeece7}.msp-plugin .msp-hover-box-wrapper .msp-hover-box-spacer{visibility:hidden;position:absolute;right:32px;top:0;width:4px;height:32px}.msp-plugin .msp-hover-box-wrapper:hover .msp-hover-box-body,.msp-plugin .msp-hover-box-wrapper:hover .msp-hover-box-spacer{visibility:visible}.msp-plugin .msp-viewport-controls-panel{width:290px;top:0;right:36px;position:absolute;background:#e0ddd4}.msp-plugin .msp-viewport-controls-panel .msp-control-group-wrapper:first-child{padding-top:0}.msp-plugin .msp-viewport-controls-panel .msp-viewport-controls-panel-controls{overflow-y:auto;max-height:400px}.msp-plugin .msp-highlight-toast-wrapper{position:absolute;right:10px;bottom:10px;max-width:95%;z-index:10000;pointer-events:none}.msp-plugin .msp-highlight-toast-wrapper .msp-toast-container{pointer-events:initial}.msp-plugin .msp-highlight-info{color:#ae5d04;padding:3px 10px;background:#eeece7;opacity:90%;max-width:400px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-highlight-markdown-row{padding-left:10px}.msp-plugin .msp-highlight-simple-row{text-align:right}.msp-plugin .msp-highlight-info-hr{margin-inline:0px;margin-block:3px;border:none;height:1px;background-color:#ae5d04}.msp-plugin .msp-highlight-info-additional{font-size:85%;display:inline-block;color:#fa911e}.msp-plugin .msp-snapshot-description-wrapper{background:#eeece780;position:absolute;left:0;top:42px;padding:6.6px 10px;max-height:224px;overflow:hidden;overflow-y:auto;width:max-content;max-width:400px}.msp-plugin .msp-snapshot-description-wrapper a{text-decoration:underline;cursor:pointer;color:#332b1f}.msp-plugin .msp-snapshot-description-wrapper ul,.msp-plugin .msp-snapshot-description-wrapper ol{padding-left:14px}.msp-plugin .msp-sequence{position:absolute;inset:0;background:#eeece7}.msp-plugin .msp-sequence-select{position:relative;height:24px;width:100%;margin-bottom:1px;background:#e0ddd4;text-align:left}.msp-plugin .msp-sequence-select>span{display:inline-block;line-height:24px;padding:0 10px;font-size:85%;font-weight:700;cursor:default}.msp-plugin .msp-sequence-select>select{display:inline-block;max-width:120px;width:auto;text-overflow:ellipsis;font-size:85%;height:24px;line-height:24px;background-size:6px 8px;background-color:#e0ddd4}.msp-plugin .msp-sequence-wrapper{word-break:break-word;padding:10px 10px 3px;user-select:none}.msp-plugin .msp-sequence-wrapper-non-empty{font-size:85%;line-height:180%;font-family:Courier New,monospace;background:#f3f2ee;width:100%;overflow-y:auto;overflow-x:hidden;position:absolute;inset:25px 0 0}.msp-plugin .msp-sequence-chain-label{margin-left:10px;margin-top:10px;user-select:none;color:#ae5d04;font-size:90%;line-height:90%;padding-left:.2em}.msp-plugin .msp-sequence-wrapper span{cursor:pointer}.msp-plugin .msp-sequence-wrapper .msp-sequence-residue-long{margin:0 .2em}.msp-plugin .msp-sequence-wrapper .msp-sequence-residue-long-begin{margin:0 .2em 0 0}.msp-plugin .msp-sequence-wrapper .msp-sequence-residue-focused{font-weight:700;text-decoration:underline}.msp-plugin .msp-sequence-wrapper .msp-sequence-label{color:#ae5d04;font-size:90%;line-height:90%;padding-bottom:1em;padding-left:.2em}.msp-plugin .msp-sequence-wrapper .msp-sequence-number{color:#ae5d04;word-break:keep-all;cursor:default;position:relative;top:-1.1em;left:3.1em;padding:0;margin-left:-3em;font-size:80%;pointer-events:none}.msp-plugin .msp-sequence-wrapper .msp-sequence-number-long{left:3.3em}.msp-plugin .msp-sequence-wrapper .msp-sequence-number-long-negative{left:2.7em}.msp-plugin .msp-sequence-wrapper .msp-sequence-number-negative{left:2.5em}.msp-plugin .msp-sequence-wrapper .msp-sequence-present{color:#332b1f}.msp-plugin .msp-sequence-wrapper .msp-sequence-missing{color:#b4a184;cursor:default}.msp-plugin .msp-transformer .msp-entity-badge{position:absolute;top:0;right:0;height:32px;line-height:32px;width:32px}.msp-plugin .msp-layout-right,.msp-plugin .msp-layout-left{background:#e0ddd4}.msp-plugin .msp-transformer-wrapper{position:relative}.msp-plugin .msp-transformer-wrapper .msp-entity-badge{left:0;top:0}.msp-plugin .msp-transformer-wrapper:first-child .msp-panel-description-content{top:33px}.msp-plugin .msp-transformer-wrapper:not(:first-child) .msp-panel-description-content{bottom:33px}.msp-plugin .msp-transform-wrapper{margin-bottom:10px}.msp-plugin .msp-transform-wrapper-collapsed,.msp-plugin .msp-transform-update-wrapper,.msp-plugin .msp-transform-update-wrapper-collapsed{margin-bottom:1px}.msp-plugin .msp-transform-update-wrapper>.msp-transform-header>button,.msp-plugin .msp-transform-update-wrapper-collapsed>.msp-transform-header>button{text-align:left;padding-left:32px;line-height:24px;background:#e9e6e0}.msp-plugin .msp-transform-wrapper>.msp-transform-header>button{text-align:left;background:#eeece7;font-weight:700;padding-right:5px}.msp-plugin .msp-transform-header{position:relative}.msp-plugin .msp-transform-header>button>small{font-weight:400;float:right}.msp-plugin .msp-transform-header>button>span:first-child{margin-right:10px}.msp-plugin .msp-transform-header>button:hover{color:#63533c}.msp-plugin .msp-transform-header-brand{margin-bottom:-1px}.msp-plugin .msp-transform-header-brand svg{fill:#332b1f;stroke:#332b1f}.msp-plugin .msp-transform-default-params{background:#eeece7;position:absolute;left:0;top:0;width:32px;padding:0}.msp-plugin .msp-transform-default-params:hover{background:#fff}.msp-plugin .msp-transform-apply-wrap{position:relative;margin-top:1px;width:100%;height:32px}.msp-plugin .msp-transform-refresh{width:87px;margin-left:33px;background:#eeece7;text-align:right}.msp-plugin .msp-transform-apply{display:block;position:absolute;left:120px;right:0;top:0}.msp-plugin .msp-transform-apply-wider{margin-left:33px}.msp-plugin .msp-data-beh{margin:10px 0!important}.msp-plugin .msp-toast-container{position:relative;z-index:1001}.msp-plugin .msp-toast-container .msp-toast-entry{color:#332b1f;background:#e0ddd4;position:relative;float:right;min-height:32px;margin-top:10px;border:1px solid rgb(206.2804878049,200.5487804878,186.2195121951);display:table}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-title{height:100%;line-height:32px;padding:0 10px;background:#eeece7;font-weight:700;display:table-cell;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;font-weight:light;cursor:pointer}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message{padding:3px 42px 3px 10px;display:table-cell}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a{text-decoration:none;color:#974102;font-weight:700}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:hover{text-decoration:underline;color:#fc6c03}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:active,.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:focus{color:#974102;outline-offset:0;outline:none}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-hide{position:absolute;width:42px;right:0;top:0;bottom:0}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-hide .msp-btn-icon{background:transparent;position:absolute;inset:1px 0 0;width:100%;text-align:right;padding-right:5px}.msp-plugin .msp-logo{display:block;position:absolute;bottom:10px;right:10px;height:32px;width:100px;background-repeat:no-repeat;background-position:bottom right;background-size:auto;background-image:url(data:image/png;base64,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)}.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 */
|
|
@@ -24,7 +24,7 @@ ${e}
|
|
|
24
24
|
>3DI
|
|
25
25
|
${t}
|
|
26
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);})();
|
|
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.14";var ir=class extends zm.default{name="ProteinViewer";version=Om;install(t){$i(t),Ti(t),Pi(t),yr(t),wr(t),xr(t),Zi(t)}configure(t){}};return Ym(Cg);})();
|
|
28
28
|
/*! Bundled license information:
|
|
29
29
|
|
|
30
30
|
use-sync-external-store/cjs/use-sync-external-store-shim.production.js:
|