@rcsb/rcsb-statistics 0.3.29 → 0.3.31

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/README.md CHANGED
@@ -1,86 +1,40 @@
1
- <a id="readme-top"></a>
1
+ # RCSB PDB Statistics
2
2
 
3
- <!-- TABLE OF CONTENTS -->
4
- <details>
5
- <summary>Table of Contents</summary>
6
- <ol>
7
- <li>
8
- <a href="#about-rcsb-pdb-statistics">About RCSB PDB Statistics</a>
9
- <ul>
10
- <li><a href="#built-with">Built With</a></li>
11
- </ul>
12
- </li>
13
- <li>
14
- <a href="#getting-started">Getting Started</a>
15
- <ul>
16
- <li><a href="#prerequisites">Prerequisites</a></li>
17
- <li><a href="#installation">Installation</a></li>
18
- </ul>
19
- </li>
20
- </ol>
21
- </details>
3
+ Visual summaries of 3D macromolecular structures from the RCSB PDB, helping users uncover biological insights and trends in the archive
22
4
 
23
- <!-- ABOUT RCSB PDB Statistics -->
24
- ## About RCSB PDB Statistics
5
+ ---
25
6
 
26
- Visual summaries of RCSB PDB data can be used to effectively communicate complex information to a wide range of users.
7
+ ## 📚 Table of Contents
27
8
 
28
- What is RCSB PDB Statistics?:
29
- * A comprehensive portfolio of statistics that effectively summarize PDB data.
30
- * Visual summaries of RCSB PDB data allow users to identify patterns and trends that may not be immediately apparent in raw data.
31
- * Easy-to-use yet powerful tools for non-programmatic users to explore PDB data.
9
+ - [About RCSB PDB Statistics](#about-rcsb-pdb-statistics)
10
+ - [Getting Started](#getting-started)
11
+ - [Prerequisites](#prerequisites)
12
+ - [Installation](#installation)
13
+ - [Usage](#usage)
14
+ - [Contributing](#contributing)
15
+ - [License](#license)
32
16
 
33
- These statistics are generated using Web Services and represent the current holdings of the archive. View statistics on PDB Data Deposited and Data Downloaded.
17
+ ---
34
18
 
35
- <p align="right">([back to top](#readme-top))</p>
19
+ ## About RCSB PDB Statistics
36
20
 
37
- ### Built With
21
+ What is RCSB PDB Statistics?
38
22
 
39
- Here's a list of the major frameworks/libraries used for this project:
23
+ - A comprehensive portfolio of statistics that effectively summarize PDB data.
24
+ - Visual summaries of RCSB PDB data allow users to identify patterns and trends not immediately apparent in raw data.
25
+ - Easy-to-use yet powerful tools for non-programmatic users to explore PDB data.
40
26
 
41
- * [![React][React.js]][React-url]
42
- * [![Bootstrap][Bootstrap.com]][Bootstrap-url]
27
+ These statistics are generated using Web Services and represent the current holdings of the archive. View statistics on PDB Data Deposited and Data Downloaded.
43
28
 
44
- <p align="right">([back to top](#readme-top))</p>
29
+ ---
45
30
 
46
- <!-- GETTING STARTED -->
47
31
  ## Getting Started
48
32
 
49
- This module is intended to be used within the RCSB Sierra web application. To get a local copy up and running, follow these simple steps.
33
+ This module is intended to be used within the RCSB Sierra web application. To get a local copy up and running, follow these steps.
50
34
 
51
35
  ### Prerequisites
52
36
 
53
- If not installed already, you will need Node Package Manager:
54
-
55
- * npm
56
- ```sh
57
- npm install npm@latest -g
58
- ```
59
-
60
- ### Installation
61
-
62
- Let's get started
63
-
64
- 1. Clone the repo
65
- ```sh
66
- git clone https://github.com/your_username_/Project-Name.git
67
- ```
68
- 2. Install NPM packages
69
- ```sh
70
- npm install
71
- ```
72
-
73
- 3. Start the application
74
- ```sh
75
- npm start
76
- ```
77
- 3. Start the application
78
- navigate to http://localhost:3000/
79
-
80
- <p align="right">(<a href="#readme-top">back to top</a>)</p>
37
+ You’ll need [Node.js](https://nodejs.org/) and npm:
81
38
 
82
- <!-- LINKS & IMAGES -->
83
- [React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB
84
- [React-url]: https://reactjs.org/
85
- [Bootstrap.com]: https://img.shields.io/badge/Bootstrap-563D7C?style=for-the-badge&logo=bootstrap&logoColor=white
86
- [Bootstrap-url]: https://getbootstrap.com
39
+ ```sh
40
+ npm install npm@latest -g
package/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="RCSB Protein Data Bank: A Resource for Studying Biological Macromolecules"/><title>RCSB Statistics</title><script defer="defer" src="/static/js/main.2a77ead0.js"></script><link href="/static/css/main.7609051a.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript sto run this app.</noscript><div id="statsroot"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="RCSB Protein Data Bank: A Resource for Studying Biological Macromolecules"/><title>RCSB Statistics</title><script defer="defer" src="/static/js/main.c114cdcb.js"></script><link href="/static/css/main.7609051a.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript sto run this app.</noscript><div id="statsroot"></div></body></html>
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_rcsb_rcsb_statistics=self.webpackChunk_rcsb_rcsb_statistics||[]).push([[324],{1324:(e,t,n)=>{n.r(t),n.d(t,{default:()=>Je});var a=n(6540),l=n(7767),r=n(4731),o=n(6118),i=n(3839),c=n(1105),s=n(1376),d=n(4479),u=n(3048),p=n(6044),m=n(8027),b=n(1223);const g=e=>{let{size:t=24,color:n="#bbb",disabled:l=!1}=e;return a.createElement("svg",{width:t,height:t,viewBox:"0 0 528.74 522.05",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{opacity:l?.5:1,cursor:l?"not-allowed":"pointer",pointerEvents:l?"none":"auto"}},a.createElement("path",{fill:n,d:"M274.5,5.22C189.25-13.05,114.92,14.41,111.53,123.11l-41.03,1.16-8.09,61.26h38.14c-6.59,22.84-28.2,247-44.49,258.9-9.25,8.09-22.54,10.98-47.39,5.78l-8.67,63.57c62.01,26.28,139.42-12.34,149.1-82.64,7.95-49.39,28.89-195.23,36.41-246.76l52.01.58,10.98-60.68h-52.59l4.44-30.57c11.36-29.11,36.03-30.32,62.02-23.75l12.14-64.72Z"}),a.createElement("path",{fill:n,d:"M304.9,217.1l-8.49-23.98c-90.49,30-137.29,262.05-41.47,306.8l10.99-23.48c-27.73-20.47-27.77-70.59-24.98-103.93,1.51-52.85,20.66-123.28,63.96-155.4Z"}),a.createElement("polygon",{fill:n,points:"357.37 270.57 306.4 270.57 334.38 344.52 278.42 432.47 331.88 432.97 363.86 385.5 379.35 432.47 428.82 432.47 398.84 353.02 454.3 270.57 397.84 271.07 372.36 312.04 357.37 270.57"}),a.createElement("path",{fill:n,d:"M464.93,214.67l14.66-20.8c79.02,53.33,61.38,289.4-42.97,306.6l-4.24-25.58c32.23-12.22,45.81-60.47,52.14-93.32,12.83-51.29,13.42-124.28-19.59-166.9Z"}))};var f,h,v,y,x,E,w,j,C,k,O,A,S,D,T,P,z,q,_,F,N,R,L,I,M,H=n(2756),U=n(7638),Y=n(6061),Z=n(8422),B=n(7581);function J(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const V=(0,B.i7)(f||(f=J(["\n from {\n opacity: .5;\n transform: translateZ(0) scale(0.999);\n }\n to {\n opacity: 1;\n transform: translateZ(0) scale(1);\n }\n"]))),$=B.Ay.div(h||(h=J(["\n animation: "," .5s ease-in;\n will-change: opacity, transform;\n"])),V),G=B.Ay.div(v||(v=J([" \n display: flex;\n justify-content: flex-end;\n margin-top: -10px;\n"]))),W=B.Ay.div.attrs((()=>({as:"div"})))(y||(y=J(["\n margin-top: 35px;\n padding-top: 10px;\n border-top: 1px solid #ccc;\n margin-right: 200px;\n"]))),K=B.Ay.button(x||(x=J(["\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid #e7e7e7;\n border-radius: 3px;\n padding: 3px 5px;\n\n & svg { \n margin-right: 5px; \n }\n"]))),Q=B.Ay.div(E||(E=J(["\n padding-left: 25px;\n margin-top: 60px;\n"]))),X=(0,B.Ay)(c.A)(w||(w=J(["\n margin-top: 60px;\n"]))),ee=B.Ay.div(j||(j=J(["\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 5px;\n"]))),te=B.Ay.div(C||(C=J(["\n background-color: #f0f0f0;\n border: ",";\n padding: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ",";\n filter: ",";\n\n ","\n"])),(e=>{let{selected:t}=e;return t?"1px solid black":"1px solid #fff"}),(e=>{let{disabled:t}=e;return t?"#bbb":"#606060"}),(e=>{let{disabled:t}=e;return t?"grayscale(30%) blur(0.5px)":"none"}),(e=>{let{disabled:t}=e;return!t&&"\n &:hover {\n background-color: #e0e0e0;\n border: 1px solid #808080;\n cursor: pointer;\n }\n "})),ne=B.Ay.div(k||(k=J(["\n display: flex;\n align-items: center;\n margin-bottom: 5px;\n min-width: 170px;\n"]))),ae=B.Ay.input(O||(O=J(["\n margin-right: 20px;\n"]))),le=B.Ay.label(A||(A=J(["\n font-size: 12px;\n margin-left: 5px;\n font-weight: normal;\n margin-bottom: 0 !important;\n"]))),re=B.Ay.div(S||(S=J(["\n font-weight: bold;\n font-size: 1.2em;\n margin-bottom: 15px;\n"]))),oe=B.Ay.div(D||(D=J(["\n width: auto;\n height: 550px;\n margin-bottom: 180px;\n margin-left: -15px;\n"]))),ie=B.Ay.div(T||(T=J(["\n margin-top: 20px;\n min-width: 170px;\n label {\n font-size: 12px;\n font-weight: normal;\n margin-left: 5px;\n margin-bottom: 0 !important;\n margin-top: 4px !important;\n }\n .form-check {\n display: flex;\n align-items: center;\n }\n"]))),ce=B.Ay.div(P||(P=J(["\n margin-bottom: 35px;\n"]))),se=B.Ay.div(z||(z=J(["\n font-weight: bold;\n margin-bottom: 5px;\n"]))),de=(B.Ay.div(q||(q=J(["\n width: 100%;\n\n\n .col-md-10{\n width: 90% !important;\n }\n\n .col-md-10 > div:first-child {\n height: 80vh !important;\n }\n\n .col-md-2{\n width: 0 !important;\n }\n"]))),B.Ay.div(_||(_=J(["\n display: block;\n font-size: 18px;\n font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;\n font-weight: bold;\n color: #333;\n padding-top: 0;\n padding-bottom: 15px;\n text-align: start;\n margin-top: -2px;\n"])))),ue=B.Ay.div(F||(F=J(["\n position: relative;\n display: inline-block;\n cursor: pointer;\n\n &:hover ul {\n display: block;\n top:-5px;\n margin-left:15px\n }\n"]))),pe=B.Ay.div(N||(N=J(["\n position: relative;\n display: inline-block;\n cursor: ",";\n opacity: ",";\n pointer-events: ",";\n filter: ",";\n color: ",";\n\n &:hover ul {\n display: ",";\n top: -5px;\n margin-left: 15px;\n }\n"])),(e=>{let{disabled:t}=e;return t?"not-allowed":"pointer"}),(e=>{let{disabled:t}=e;return t?.4:1}),(e=>{let{disabled:t}=e;return t?"none":"auto"}),(e=>{let{disabled:t}=e;return t?"grayscale(30%) blur(0.5px)":"none"}),(e=>{let{disabled:t}=e;return t?"#bbb":"inherit"}),(e=>{let{disabled:t}=e;return t?"none":"block"})),me=B.Ay.div(R||(R=J(["\n display: flex;\n align-items: center;\n cursor: pointer;\n position: relative;\n\n .triangle {\n width: 8px;\n aspect-ratio: 1;\n clip-path: polygon(0 0, 100% 0, 50% 70%);\n background-color: #999;\n position: absolute;\n right: -9px;\n top: 50%;\n transform: translateY(-10%);\n transition: transform 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n }\n\n &:hover .triangle {\n transform: translateY(0.2rem);\n }\n"]))),be=B.Ay.ul(L||(L=J(["\n display: none;\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n min-width: 160px;\n padding: 2px 0;\n margin: 0;\n font-size: 14px;\n color: #333;\n text-align: left;\n list-style: none;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n\n ",":hover & {\n display: block;\n }\n\n & > li.disabled {\n pointer-events: none;\n color: #ccc;\n }\n\n & > li:not(.disabled):hover {\n background-color: #f8f9fa;\n }\n"])),ue),ge=B.Ay.li(I||(I=J(["\n padding: 8px 20px;\n display: flex;\n align-items: center;\n cursor: pointer;\n white-space: nowrap;\n\n &:hover {\n background-color: #f1f1f1;\n }\n"]))),fe=B.Ay.span(M||(M=J(["\n margin-left: 8px;\n font-size: 14px;\n color: #333;\n margin-right: 5px;\n"])));var he,ve=n(2195);const ye=B.Ay.div(he||(xe=["\n .gridjs-pagination {\n display: flex;\n justify-content: space-between;\n padding: 10px;\n background-color: #f9fafb;\n border: 1px solid #ccc;\n border-radius: 0 0 8px 8px;\n }\n\n .gridjs-summary {\n font-size: 14px;\n color: #555;\n margin-top: 5px;\n }\n\n .gridjs-pages button {\n margin: 0 5px;\n padding: 5px 10px;\n border-radius: 5px;\n background-color: #fff;\n border: 1px solid #ccc;\n color: #333;\n cursor: pointer;\n transition: background-color 0.3s, color 0.3s;\n }\n\n .gridjs-pages button:hover {\n background-color: #e0e0e0;\n color: #000;\n }\n\n .gridjs-pages button:disabled {\n color: #aaa;\n background-color: #f5f5f5;\n cursor: not-allowed;\n }\n\n .gridjs-pages button.gridjs-currentPage {\n background-color: #d0d0d0;\n font-weight: bold;\n border-color: #aaa;\n }\n\n .gridjs-wrapper {\n width: 100%;\n border-radius: 8px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n margin-bottom: 20px;\n border: 1px solid #e5e7eb;\n margin-top: 20px;\n }\n\n td.gridjs-td {\n padding: 12px 16px;\n font-size: 13px;\n color: #444;\n border: 1px solid #e5e7eb;\n }\n\n th.gridjs-th {\n position: relative;\n padding: 12px 16px;\n background-color: #f7f7f7;\n color: #333;\n font-weight: bold;\n text-align: left;\n border: 1px solid #e5e7eb;\n cursor: pointer;\n }\n\n .gridjs-th .gridjs-sort {\n display: none !important;\n }\n\n th.gridjs-th.gridjs-sort-neutral::after {\n content: '⇵';\n margin-left: 10px;\n font-size: 12px;\n color: #888;\n }\n\n th.gridjs-th.gridjs-sort-asc::after {\n content: '▲';\n margin-left: 10px;\n font-size: 12px;\n color: #888;\n }\n\n th.gridjs-th.gridjs-sort-desc::after {\n content: '▼';\n margin-left: 10px;\n font-size: 12px;\n color: #888;\n }\n\n input.gridjs-input {\n outline: none;\n background-color: #fff;\n border: 1px solid #d2d6dc;\n border-radius: 5px;\n padding: 8px 12px;\n font-size: 14px;\n margin-bottom: 10px;\n }\n\n input.gridjs-input:focus {\n border-color: #9bc2f7;\n box-shadow: 0 0 0 3px rgba(149, 189, 243, 0.5);\n }\n"],Ee||(Ee=xe.slice(0)),he=Object.freeze(Object.defineProperties(xe,{raw:{value:Object.freeze(Ee)}}))));var xe,Ee;const we=e=>{let{data:t,title:n}=e;if(0===t.length)return a.createElement("p",null,"No data available.");const l=Object.keys(t[0]),r=t.map((e=>l.map((t=>e[t])))).sort(((e,t)=>t[0]-e[0]));return a.createElement(a.Fragment,null,n&&a.createElement(de,null,n),a.createElement(ye,null,a.createElement(ve.x,{columns:l,data:r,search:!1,pagination:{limit:10},sort:!0,style:{table:{border:"1px solid #ccc","border-radius":"8px",width:"100%","background-color":"#fff",color:"#000","font-family":"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif","font-size":"14px","text-align":"left"},th:{"background-color":"#f5f5f5",color:"#333","border-bottom":"2px solid #ccc",padding:"12px","font-weight":"bold"},td:{padding:"12px","border-bottom":"1px solid #eee",color:"#555","font-size":"13px"}}})))};var je=n(658);const Ce=e=>{let{chartType:t,handleChartTypeChange:n,isDistPlot:l}=e;const r=e=>{n(e)};return a.createElement(ue,null,a.createElement(me,null,a.createElement(te,null,(()=>{switch(t){case"bar":default:return a.createElement(m.v$b,{size:15});case"line":return a.createElement(m.YYR,{size:15});case"pie":return a.createElement(m.qvi,{size:15})}})()),a.createElement("span",{className:"triangle"})),a.createElement(be,null,a.createElement(ge,{onClick:()=>r("bar")},a.createElement(te,null,a.createElement(m.v$b,{size:15})),a.createElement(fe,null,"Bar Chart")," ","bar"===t&&a.createElement(je.CkS,null)),!l&&a.createElement(ge,{onClick:()=>r("line")},a.createElement(te,null,a.createElement(m.YYR,{size:15})),a.createElement(fe,null,"Line Chart")," ","line"===t&&a.createElement(je.CkS,null)),l&&a.createElement(ge,{onClick:()=>r("pie")},a.createElement(te,null,a.createElement(m.qvi,{size:15})),a.createElement(fe,null,"Pie Chart")," ","pie"===t&&a.createElement(je.CkS,null))))},ke=e=>{let{scaleType:t,handleScaleTypeChange:n,isDistPlot:l,disabled:r}=e;const o=e=>{n(e)};return a.createElement(pe,{disabled:r},a.createElement(me,null,a.createElement(te,null,a.createElement(g,{size:15,color:"#606060"})),a.createElement("span",{className:"triangle"})),a.createElement(be,null,a.createElement(ge,{onClick:()=>o("logarithmic")},a.createElement(fe,null,"Logarithmic")," ","logarithmic"===t&&a.createElement(je.CkS,null)),a.createElement(ge,{onClick:()=>o("linear")},a.createElement(fe,null,"Linear")," ","linear"===t&&a.createElement(je.CkS,null))))};var Oe=n(637),Ae=n(7231);function Se(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function De(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Se(Object(n),!0).forEach((function(t){Te(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Se(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Te(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}o.t1.register(o.PP,o.kc,o.OJ,o.E8,o.No,o.Bs,o.FN,o.hE,o.m_,o.s$,i.Ay);const Pe=e=>{const t=e.datasets.map((e=>{const t=[];let n=0;return e.data.forEach((e=>{n+=e,t.push(n)})),De(De({},e),{},{data:t})}));return De(De({},e),{},{datasets:t})},ze=e=>{var t,n,l;let{data:o,plotName:i}=e;const f=(0,a.useRef)(null),{handleOpenModal:h,handleCloseModal:v}=(0,H.h)(),{settings:y,updateCurrentInput:x,setConfig:E}=(0,U.t)(),w=y.colorScheme,j=Oe.jS.find((e=>e.key===i)),C="distribution"===(null==j?void 0:j.chartCategory),k=null==j?void 0:j.trauncateViewData,O=(null==j?void 0:j.chartOptions)||{},A=C?y.config.chartType.distrubution:y.config.chartType.growth,S=y.config.chartType.scale,D=C?"non-cumulative":y.config.chartType.dataView,T=(0,Y.R)(),[P,z]=(0,a.useState)(o.datasets.map((e=>({label:e.label||"",visible:!0})))),[q,_]=(0,a.useState)("natural"),[F,N]=(0,a.useState)((()=>"cumulative"===(C?"non-cumulative":D)?Pe(o):o)),R=o.datasets.map((e=>({label:e.label||"",visible:!0}))),L=C?"non-cumulative":"cumulative",I=()=>{z(R),_("natural"),E({chartType:De(De({},y.config.chartType),{},{[C?"distrubution":"growth"]:"bar",scale:"linear",dataView:L})}),N("cumulative"===L?Pe(o):o)};(0,a.useEffect)((()=>{const e="cumulative"===D?Pe(o):o;N(e)}),[D,o]),(0,a.useEffect)((()=>{if("cumulative"===D){const e=Pe(o);N({labels:o.labels,datasets:e.datasets.map((e=>{var t;return De(De({},e),{},{hidden:!(null!==(t=P.find((t=>t.label===e.label)))&&void 0!==t&&t.visible)})}))})}else N({labels:o.labels,datasets:o.datasets.map((e=>{var t;return De(De({},e),{},{hidden:!(null!==(t=P.find((t=>t.label===e.label)))&&void 0!==t&&t.visible)})}))})}),[D,o,P]),(0,a.useEffect)((()=>{if("distribution-source-organism"===i){var e;const t=[],n=[],a=[];if(null!=o&&null!==(e=o.datasets)&&void 0!==e&&null!==(e=e[0])&&void 0!==e&&e.objectConfig&&Array.isArray(o.labels)){o.datasets[0].objectConfig.forEach(((e,l)=>{if(e.label===q){var r,i;const c=null===(r=o.labels)||void 0===r?void 0:r[l],s=null===(i=o.datasets[0].data)||void 0===i?void 0:i[l];c&&void 0!==s&&(t.push(c),n.push(s),a.push(e))}}));const e=De(De({},o.datasets[0]),{},{data:n,objectConfig:a});N({labels:t,datasets:[e]})}}}),[q,o,i]),(0,a.useEffect)((()=>{JSON.stringify(y.currentInput)!==JSON.stringify(P)&&(i.includes("overall")||x(P))}),[P,x]);const M=()=>{E({chartType:De(De({},y.config.chartType),{},{scale:"linear"===y.config.chartType.scale?"logarithmic":"linear"})})},B=e=>{E({chartType:De(De({},y.config.chartType),{},{dataView:e})})},J=e=>{_(e)},V=e=>{if(f.current){const n=(0,r.CK)(f.current,e);if(n.length>0&&o.labels){const{index:e}=n[0],a=o.labels[e];if(j&&j.getSearchObj){var t;const e=j.getSearchObj(y,a),n=JSON.stringify(e),l=encodeURIComponent(n),r=(null===(t=j.query)||void 0===t?void 0:t.returnType)===Ae.ReturnType.MolDefinition?"/search/chemical/?request=":"/search?request=",o="".concat(y.config.searchAdvancedUrl).concat(r).concat(l);window.open(o,"_blank")}}}},$=De(De({},O),{},{layout:{padding:{right:1}},scales:C||"line"!==A?O.scales:De(De({},O.scales),{},{x:De(De({},null===(t=O.scales)||void 0===t?void 0:t.x),{},{stacked:!1}),y:De(De({},null===(n=O.scales)||void 0===n?void 0:n.y),{},{type:S,stacked:!1,min:"logarithmic"===S?1:void 0,ticks:{callback:function(e){return"logarithmic"===S?[1,10,100,1e3,1e4,1e5].includes(e)?e:null:e}},title:{display:!0,text:"".concat((null==O||null===(l=O.scales)||void 0===l||null===(l=l.y)||void 0===l||null===(l=l.title)||void 0===l?void 0:l.text)||"Y-Axis"," ").concat("logarithmic"===S?"(Logarithmic scale)":"(Linear scale)")}})}),plugins:De(De({},O.plugins),{},{legend:{display:o.datasets.length>1,position:"bottom",align:"start",labels:{generateLabels:e=>e.data.datasets.map(((e,t)=>({text:e.label||"Dataset ".concat(t+1),fillStyle:e.backgroundColor,hidden:e.hidden||!1,datasetIndex:t}))).filter((e=>!e.hidden)),boxWidth:40,padding:20,font:{size:14,family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",style:"normal"},color:"#333"},onClick:()=>{}}}),elements:{line:{tension:.1,spanGaps:!0},point:{radius:0,hoverRadius:0}},animation:{duration:400,easing:"easeInOutQuart"},onHover:(e,t)=>{t.length?e.native.target.style.cursor="pointer":e.native.target.style.cursor="default"}}),de=e=>{E({chartType:De(De({},y.config.chartType),{},{[C?"distrubution":"growth"]:e})})},ue=(e,t)=>{const n=e.datasets[0],a=e.labels.map(((e,n)=>t[n%t.length]));return{labels:e.labels,datasets:[{data:n.data,backgroundColor:a,borderColor:a,borderWidth:1}]}},pe=e=>{const{title:t,legend:n,tooltips:a,responsive:l,plugins:r}=e,o={responsive:null==l||l,maintainAspectRatio:!1,plugins:De(De({},r),{},{legend:De(De({},n),{},{display:!0,position:"bottom",onClick:(e,t,n)=>((e,t)=>{const n=e.getDatasetMeta(0),a=t.index;if(void 0!==a){const l=n.data[a].hidden;n.data[a].hidden=!l,t.hidden=n.data[a].hidden,e.options.plugins.legend.labels.generateLabels=e=>e.data.labels.map(((t,a)=>({text:t,fillStyle:e.data.datasets[0].backgroundColor[a],hidden:n.data[a].hidden,index:a}))),e.update()}})(n.chart,t)}),tooltip:De(De({},a),{},{callbacks:{label:e=>{const{dataset:t,dataIndex:n,chart:a}=e,l=a.getDatasetMeta(0).data.map(((e,t)=>e.hidden?null:t)).filter((e=>null!==e)).map((e=>t.data[e])),r=t.data[n],o=(r/l.reduce(((e,t)=>e+t),0)*100).toFixed(2);return"".concat(e.label,": ").concat((0,Z.bF)(r)," - ").concat(o,"% (of shown data)")}}})}),animation:{animateScale:!0,animateRotate:!0},elements:{arc:{hoverBorderWidth:3,hoverOffset:20,hoverBorderColor:"white"}},onHover:(e,t)=>{t.length?e.native.target.style.cursor="pointer":e.native.target.style.cursor="default"}};return o},me=e=>{if(!e||!e.datasets||!Array.isArray(e.datasets))return{labels:[],datasets:[]};const t=e.datasets.map((e=>{const t=e.data.map((e=>"number"!=typeof e||isNaN(e)?null:e));return De(De({},e),{},{data:t,stack:void 0,fill:!1,borderColor:e.borderColor||"rgba(75, 192, 192, 1)",backgroundColor:e.backgroundColor||"rgba(75, 192, 192, 0.2)",borderWidth:3,pointRadius:0,pointHoverRadius:0,tension:.1})}));return{labels:e.labels||[],datasets:t}};return a.createElement(a.Fragment,null,a.createElement(G,null,a.createElement(K,{onClick:e=>{if(null==j||!j.getSearchObj)return;const t=(()=>{const e=P.some((e=>!e.visible));return C||!e?(0,Z.ry)(T,y):((e,t,n,a,l)=>{var r,o;const i="".concat(t.config.searchApiUrl,"/query-editor.html?json="),c=null==j||null===(r=j.query)||void 0===r||null===(r=r.firstDim)||void 0===r?void 0:r.attribute,s=null==j||null===(o=j.query)||void 0===o?void 0:o.returnType;let d,u,p;if(a){var m,b;const e=null==j||null===(m=j.query)||void 0===m||null===(m=m.firstDim)||void 0===m?void 0:m.ranges,t=null==j||null===(b=j.query)||void 0===b||null===(b=b.firstDim)||void 0===b?void 0:b.filter;if(e&&!t){var g,f;if(!Array.isArray(e)||e.length<2)return i;if(d=null===(g=e[0])||void 0===g?void 0:g.to,u=null===(f=e[e.length-1])||void 0===f?void 0:f.from,void 0===d||void 0===u)return i;p={type:Ae.Type.Terminal,label:"text",service:Ae.Service.Text,parameters:{attribute:c,operator:Ae.Operator.Range,value:{from:d,to:u,include_lower:!0,include_upper:!1}}}}else if(t){var h,v;const e=l.labels,t=Array.isArray(null==j||null===(h=j.query)||void 0===h||null===(h=h.firstDim)||void 0===h?void 0:h.facets)?null==j||null===(v=j.query)||void 0===v||null===(v=v.firstDim)||void 0===v||null===(v=v.facets[0])||void 0===v?void 0:v.attribute:void 0;p={type:Ae.Type.Group,nodes:e.map((e=>({type:Ae.Type.Terminal,service:Ae.Service.Text,parameters:{attribute:t,operator:Ae.Operator.ExactMatch,value:e}}))),logical_operator:Ae.LogicalOperator.Or,label:"text"}}else{const e=l.labels.slice(0,25);p={type:Ae.Type.Group,nodes:e.map((e=>({type:Ae.Type.Terminal,service:Ae.Service.Text,parameters:{attribute:c,operator:Ae.Operator.ExactMatch,negation:!1,value:e}}))),logical_operator:Ae.LogicalOperator.Or,label:"text"}}}else{var y;const e=n(t,"1976-05-19");if(!e||!e.query||!e.query.nodes)return i;const a=null!=j&&null!==(y=j.query)&&void 0!==y&&null!==(y=y.secondDim)&&void 0!==y&&y.filter?e.query.nodes.slice(1):e.query.nodes.slice(1)[0].nodes;p={type:e.query.type,nodes:a,logical_operator:Ae.LogicalOperator.Or}}const x={query:p,return_type:s,request_options:e.searchRequest.request_options},E=encodeURIComponent(JSON.stringify(x));return"".concat(i).concat(E)})(T,y,j.getSearchObj,C,F)})();t&&window.open(t,"_blank")}},a.createElement(m.Pcn,null)," Search API")),a.createElement(u.A,null,(()=>{De(De({},$),{},{maintainAspectRatio:!1,plugins:{legend:{display:!1}}});const e=()=>"Report: ".concat(O.plugins.title.text,", Generated on: ").concat((new Date).toLocaleDateString()," ").concat((new Date).toLocaleTimeString()),t=(e,t,n)=>{var a,l;if(null==e||null===(a=e.datasets)||void 0===a||!a.length||0===e.labels.length)return{columns:[],gridData:[]};if(t){var r,o;const t=e.labels||[],a=e.datasets[0]||{},l=(null===(r=n.scales)||void 0===r||null===(r=r.x)||void 0===r||null===(r=r.title)||void 0===r?void 0:r.text)||"Range",i=(null===(o=n.scales)||void 0===o||null===(o=o.y)||void 0===o||null===(o=o.title)||void 0===o?void 0:o.text)||"Number of Entries";return{columns:"x"===n.indexAxis?[l,i]:[i,l],gridData:t.map(((e,t)=>[e,(0,Z.bF)(a.data[t]||0)]))}}if(1===e.datasets.length)return{columns:["Year",(null===(l=n.scales)||void 0===l||null===(l=l.y)||void 0===l||null===(l=l.title)||void 0===l?void 0:l.text)||"Data"],gridData:e.labels.map(((t,n)=>[t,(0,Z.bF)(e.datasets[0].data[n]||0)]))};const i=e.datasets.filter((e=>{var t;return null===(t=P.find((t=>t.label===e.label)))||void 0===t?void 0:t.visible}));return{columns:["Year",...i.map((e=>e.label))],gridData:e.labels.map(((e,t)=>{const n=[e];return i.forEach((e=>{n.push((0,Z.bF)(e.data[t]||0))})),n}))}},n=t(F,C,O);if(0===n.columns.length||0===n.gridData.length)return a.createElement("p",null,"No data available for table.");const l=n.gridData.map((e=>{const t={};return n.columns.forEach(((n,a)=>{t[n]=e[a]})),t})),o=k?De(De({},F),{},{labels:F.labels.slice(0,25),datasets:F.datasets.map((e=>De(De({},e),{},{data:e.data.slice(0,25)})))}):F,u={bar:a.createElement(r.yP,{ref:f,data:o,options:$,onClick:V}),line:a.createElement(r.N1,{ref:f,data:me(F),options:$}),pie:a.createElement(r.Fq,{ref:f,data:ue(o,w),options:pe($),onClick:V}),table:a.createElement(a.Fragment,null," ",a.createElement(we,{data:l,title:$.plugins.title.text}))};return a.createElement(d.A,null,a.createElement(c.A,{md:10},a.createElement(oe,null,u[A],a.createElement(W,null,a.createElement("div",{dangerouslySetInnerHTML:{__html:(null==j?void 0:j.description)||""}})))),a.createElement(c.A,{md:2},a.createElement(d.A,null,a.createElement(X,{md:2},a.createElement(ee,null,a.createElement(a.Fragment,null,a.createElement(Ce,{"data-tooltip-id":"chart-type-tooltip","data-tooltip-content":"Change Chart type",chartType:A,handleChartTypeChange:de,isDistPlot:C}),a.createElement(te,{"data-tooltip-id":"table-tooltip","data-tooltip-content":"Display data in a structured, sortable table format",disabled:!1,selected:"table"===A,onClick:()=>de("table")},a.createElement(m.ist,{size:15})),a.createElement(te,{"data-tooltip-id":"csv-tooltip","data-tooltip-content":"Export data in a CSV format",onClick:()=>{const n=t(F,C,O),a=((t,n)=>{const a=e(),l=[...n].sort(((e,t)=>e[0]>t[0]?-1:e[0]<t[0]?1:0));return[a,t.join(","),...l.map((e=>e.map((e=>e.replace(/,/g,""))).join(",")))].join("\n")})(n.columns,n.gridData),l=new Blob([a],{type:"text/csv;charset=utf-8;"}),r=URL.createObjectURL(l),o=document.createElement("a");o.href=r;const i=e(),c="".concat(i.replace(/[^a-z0-9]/gi,"_").toLowerCase(),".csv");o.setAttribute("download",c),document.body.appendChild(o),o.click(),document.body.removeChild(o)},disabled:!1},a.createElement(b.BVt,{size:15})),!C&&("line"===A?a.createElement(ke,{"data-tooltip-id":"scale-tooltip","data-tooltip-content":"Toggle data scale",scaleType:S,handleScaleTypeChange:M,isDistPlot:C,disabled:!1}):a.createElement(te,{"data-tooltip-id":"scale-tooltip","data-tooltip-content":"Switch to the Line Chart view to enable the option to change the scale to logarithmic",disabled:!0},a.createElement(g,{size:15,color:"#606060",disabled:!0}))),a.createElement(te,{"data-tooltip-id":"reset-tooltip","data-tooltip-content":"Reset chart to the default display and clear any applied filters",onClick:I,disabled:!1},a.createElement(m.DIg,{size:15})),a.createElement(p.m_,{id:"settings-tooltip",place:"left"}),a.createElement(p.m_,{id:"information-tooltip",place:"left"}),a.createElement(p.m_,{id:"chart-type-tooltip",place:"left"}),a.createElement(p.m_,{id:"table-tooltip",place:"left"}),a.createElement(p.m_,{id:"scale-tooltip",place:"left"}),a.createElement(p.m_,{id:"csv-tooltip",place:"left"}),a.createElement(p.m_,{id:"reset-tooltip",place:"left"})))),a.createElement(c.A,{md:10},a.createElement(Q,null,a.createElement(a.Fragment,null,C?"distribution-source-organism"===i&&a.createElement(ie,null,a.createElement(se,null,"Data Set"),a.createElement(s.A.Check,{type:"radio",id:"view-natural",label:"Natural",name:"source-organism-view-switch",value:"natural",checked:"natural"===q,onChange:()=>J("natural")}),a.createElement(s.A.Check,{type:"radio",id:"view-genetically engineered",label:"Genetically Engineered",name:"source-organism-view-switch",value:"genetically engineered",checked:"genetically engineered"===q,onChange:()=>J("genetically engineered")}),a.createElement(s.A.Check,{type:"radio",id:"view-synthetic",label:"Synthetic",name:"source-organism-view-switch",value:"synthetic",checked:"synthetic"===q,onChange:()=>J("synthetic")})):a.createElement(a.Fragment,null,P.length>1&&a.createElement(a.Fragment,null,a.createElement(re,null,"Data Options"),a.createElement(ce,null,a.createElement(se,null,"Data Shown"),P.map((e=>{const t="unique-protein-sequences"===i&&e.label?"Identity ".concat(parseFloat(e.label).toFixed(0),"%"):e.label;return a.createElement(ne,{key:e.label},a.createElement(ae,{type:"checkbox",id:e.label,checked:e.visible,onChange:()=>{return t=e.label,void z((e=>e.map((e=>e.label===t?De(De({},e),{},{visible:!e.visible}):e))));var t}}),a.createElement(le,{htmlFor:e.label},t))})))),a.createElement(ie,null,a.createElement(se,null,"Data Set"),a.createElement(s.A.Check,{type:"radio",id:"view-annual",label:"Annual",name:"view-switch",value:"non-cumulative",checked:"non-cumulative"===D,onChange:()=>B("non-cumulative")}),a.createElement(s.A.Check,{type:"radio",id:"view-cumulative",label:"Cumulative",name:"view-switch",value:"Cumulative",checked:"cumulative"===D,onChange:()=>B("cumulative")})))))))))})()))};var qe=n(3076),_e=n(8533),Fe=n(176),Ne=n(7704),Re=n(8154),Le=n(2543);function Ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Me(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ie(Object(n),!0).forEach((function(t){He(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ie(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function He(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ue=async function(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],l=arguments.length>4?arguments[4]:void 0,r=arguments.length>5?arguments[5]:void 0,o=arguments.length>6?arguments[6]:void 0;const i=(0,Le.cloneDeep)(n.firstDim);n.secondDim&&(0,Re.vw)(n.secondDim,i);const c={return_type:n.returnType,request_options:{paginate:{rows:0},facets:[i]}};r("searchRequest",c),r("stats_notes",l);const s=await(async(e,t)=>{const n="".concat(t.searchApiUrl,"/rcsbsearch/v2/query");return fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then((e=>{if(!e.ok)throw new Error(e.statusText);return e.json()})).catch((e=>{throw console.error("Error:",e),e}))})(c,o.config);if(!s)return[[]];const d=(0,Ne.z)(s);let u=d[0].data;const p={resolution:Z.$Z,"r-free":Z.$Z,"molecular-weight-structure":Z.bl,"molecular-weight-entity":Z.bl,"molecular-weight-small-molecules":Z.$Z,"atom-count":Z.pF,"residue-count":Z.pF},m=p[e]?p[e](u):u;if(p[e]&&(u=m),"distribution-source-organism"===e)return[d.filter((e=>"Source Organism"===e.name)).flatMap((e=>e.data.map((t=>Me(Me({},t),{},{labelPath:e.labelPath,objectConfig:Me({},t.objectConfig||{})}))))).map(((e,n)=>Me(Me({},e),{},{objectConfig:Me(Me({},e.objectConfig),{},{color:t[n%t.length],label:e.labelPath.join(", ")})})))];if(a&&u.length>0){let e=0;return[u.map((e=>Me(Me({},e),{},{objectConfig:Me(Me({},e.objectConfig),{},{color:t[0%t.length],label:"Annual"})}))),u.map((n=>(e+=n.population,Me(Me({},n),{},{population:e,objectConfig:{objectId:[n.label,e],color:t[1%t.length],label:"Cumulative"}}))))]}return n.secondDim?Ye(e,n,d.filter((e=>e.name===Ze(n.secondDim))),t,o.config.searchAdvancedUrl,o.currentInput):[u.map((e=>Me(Me({},e),{},{objectConfig:{objectId:[e.label,e.population],color:t[0%t.length]}})))]},Ye=(e,t,n,a,l,r)=>{const o=new Set,i=[],c=new Map;n.forEach((e=>{const t=e.labelPath[0];i.push(t),e.data.forEach((e=>{var n;o.add(e.label.toString()),c.has(t)||c.set(t,new Map),null===(n=c.get(t))||void 0===n||n.set(e.label.toString(),e.population)}))}));const s=Array.from(o),d=[];return s.forEach(((e,t)=>{const n=[];i.forEach((l=>{var r,o;const i=null!==(r=null===(o=c.get(l))||void 0===o?void 0:o.get(e))&&void 0!==r?r:0;i>0&&n.push({label:l,population:i,objectConfig:{objectId:[l,e,i],color:a[t%a.length]}})})),n.length>0&&d.push(n)})),d},Ze=e=>{if("name"in e)return e.name;if(!e.facets||1!==e.facets.length)throw new Error("Multiple facets are not allowed");return Ze(e.facets[0])},Be=(e,t)=>{const{settings:n}=(0,U.t)(),{setProperty:a}=(0,Y.R)(),l=n.colorScheme.join("");return(0,Fe.I)({queryKey:[e,t,l],queryFn:()=>(async(e,t,n,a)=>{const{stats_notes:l,query:r}=(e=>{const t=Oe.Tb.getStatisticsChartObject(e);return{stats_notes:null==t?void 0:t.description,query:null==t?void 0:t.query}})(e);if(!r)throw new Error("Unknown chart key: ".concat(e));return Ue(e,t,r,!1,l,n,a)})(e,n.colorScheme,a,n),enabled:!!e,staleTime:0})},Je=e=>{let{setFullscreenContent:t}=e;const n=(0,l.g)().plotname||"",r=n||"",{data:o,isLoading:i,error:c}=Be(r),{settings:s}=(0,U.t)();if(i)return a.createElement($,null,a.createElement(qe.A,null));if(c)return a.createElement($,null,a.createElement(_e.A,{error:c}));const d=o&&o.length>0?("distribution-source-organism"===n&&console.log("chart data",o),{labels:o[0].map((e=>e.label)),datasets:o.map(((e,t)=>{var n,a,l,r;const i={};return e.forEach((e=>{i[e.label]=e.population})),{label:null!==(n=null===(a=e[0])||void 0===a||null===(a=a.objectConfig)||void 0===a||null===(a=a.objectId)||void 0===a?void 0:a[1])&&void 0!==n?n:"Dataset ".concat(t+1),data:o[0].map((e=>i[e.label]||0)),backgroundColor:(null===(l=e[0])||void 0===l||null===(l=l.objectConfig)||void 0===l?void 0:l.color)||"rgba(0, 0, 0, 0.1)",borderColor:(null===(r=e[0])||void 0===r||null===(r=r.objectConfig)||void 0===r?void 0:r.color)||"rgba(0, 0, 0, 0.1)",borderWidth:1,objectConfig:e.map((e=>e.objectConfig))}}))}):null;return a.createElement($,{key:n},d?a.createElement(a.Fragment,null,a.createElement(ze,{data:d,plotName:n})):a.createElement($,null,a.createElement(_e.A,{error:new Error("No data available")})))}}}]);