@rcsb/rcsb-statistics 0.3.44-dev.aipcb.2 → 0.3.44
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 +0 -12
- package/build/index.html +1 -1
- package/build/static/css/main.a8ce960b.css +8 -0
- package/build/static/js/10.d9d49a66.chunk.js +1 -0
- package/build/static/js/109.2ff3158c.chunk.js +1 -0
- package/build/static/js/152.d0d96551.chunk.js +2 -0
- package/build/static/js/{717.312e799d.chunk.js.LICENSE.txt → 152.d0d96551.chunk.js.LICENSE.txt} +16 -0
- package/build/static/js/317.c95bf735.chunk.js +1 -0
- package/build/static/js/47.96ede111.chunk.js +1 -0
- package/build/static/js/613.8638dc20.chunk.js +1 -0
- package/build/static/js/630.bc43e10d.chunk.js +1 -0
- package/build/static/js/main.0e4cd2a8.js +2 -0
- package/package.json +1 -2
- package/build/ai/chart-catalog.json +0 -76
- package/build/ai/chart-core.d.ts +0 -53
- package/build/ai/chart-core.js +0 -1
- package/build/static/css/221.be447a2a.chunk.css +0 -68
- package/build/static/css/489.00de475c.chunk.css +0 -92
- package/build/static/css/main.894a09f3.css +0 -10
- package/build/static/js/221.00ed9342.chunk.js +0 -1
- package/build/static/js/417.a91bf47f.chunk.js +0 -1
- package/build/static/js/463.93a9a793.chunk.js +0 -1
- package/build/static/js/489.37e3a556.chunk.js +0 -1
- package/build/static/js/503.3d99188e.chunk.js +0 -1
- package/build/static/js/639.a102039f.chunk.js +0 -2
- package/build/static/js/639.a102039f.chunk.js.LICENSE.txt +0 -15
- package/build/static/js/646.d06a86d8.chunk.js +0 -1
- package/build/static/js/690.c5f42ab2.chunk.js +0 -1
- package/build/static/js/717.312e799d.chunk.js +0 -2
- package/build/static/js/732.59dd3430.chunk.js +0 -1
- package/build/static/js/main.a02d7dee.js +0 -2
- /package/build/static/js/{main.a02d7dee.js.LICENSE.txt → main.0e4cd2a8.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_rcsb_rcsb_statistics=self.webpackChunk_rcsb_rcsb_statistics||[]).push([[221],{4221(e,t,n){n.r(t),n.d(t,{default:()=>O});var r,a,l=n(9711),o=n(5311),i=n(376);function s(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const c=i.Ay.ul(r||(r=s(["\n padding: 10px;\n max-height: 300px;\n overflow-y: auto;\n"]))),d=(0,i.Ay)(o.N_).attrs({className:"list-group-item"})(a||(a=s(["\n padding: 0;\n margin-bottom: 10px;\n border: none;\n color: #337ab7 !important;\n font-weight: 400;\n font-size: 14px;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline !important;\n background: none !important; \n }\n"]))),u=e=>{const t=[...e.items].sort((e,t)=>e.display_title.localeCompare(t.display_title,"en",{sensitivity:"base"}));return l.createElement(c,null,t.map((e,t)=>l.createElement(d,{key:t,to:e.link},e.display_title)))};var p,m,f,h,b,g,y,w,x;function E(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}i.Ay.label(p||(p=E(["\n display: block;\n font-size: 1.2em;\n margin-bottom: 0.5em;\n"])));const v=i.Ay.div(m||(m=E(["\n width: 700px;\n"]))),A=i.Ay.input(f||(f=E(["\n flex: 1;\n width: 100%;\n height: 45px;\n padding: 6px 12px;\n font-size: 16px;\n border: 1px solid #ccc;\n border-radius: 4px;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n line-height: 1.42857143;\n color: #555;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n &::placeholder {\n font-style: italic;\n }\n"]))),_=i.Ay.div(h||(h=E(["\n background-color: #f7f7f7;\n padding: 10px;\n display: flex;\n justify-content: center;\n margin-bottom: 1em;\n"]))),k=i.Ay.div(b||(b=E(["\n padding-top: 15px;\n"]))),S=i.Ay.div(g||(g=E(["\n display: flex;\n flex-wrap: wrap;\n gap: 20px;\n justify-content: flex-start;\n padding: 10px;\n"]))),D=i.Ay.div(y||(y=E(["\n flex: 1 1 calc(33.333% - 20px);\n max-width: calc(33.333% - 20px);\n min-height: 150px;\n position: relative;\n overflow: hidden;\n border: 1px solid #ddd;\n border-radius: 4px;\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n"]))),C=i.Ay.h2(w||(w=E(["\n font-size: 24px;\n font-weight: bold;\n margin: 20px 0;\n color: #333;\n margin-bottom: -5px;\n"]))),j=i.Ay.h3(x||(x=E(["\n background-color: #325880;\n color: #fff; \n padding: 10px;\n margin: 0;\n font-weight: bold;\n font-size: 1.1em;\n border-bottom: 1px solid #ddd;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n font-size: 16px;\n font-weight: bold;\n"])));var B=n(1990),I=n(7083);function P(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,l,o,i=[],s=!0,c=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=l.call(n)).done)&&(i.push(r.value),i.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return z(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?z(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}const O=()=>{const e=P((0,l.useState)(""),2),t=e[0],n=e[1],r=P((0,l.useState)({}),2),a=r[0],i=r[1],s=(0,l.useRef)(null);(0,l.useEffect)(()=>{const e=B._1.filter(e=>{var n;return(null!==(n=e.display_title)&&void 0!==n?n:"").toLowerCase().includes(t.toLowerCase())}).reduce((e,t)=>{const n=t.displayCategory;return n&&(e[n]||(e[n]=[]),e[n].push(t)),e},{});i(e)},[t]),(0,l.useEffect)(()=>{const e=setTimeout(()=>{s.current&&s.current.focus()},0),t=setInterval(()=>{s.current&&(s.current.focus(),clearInterval(t))},100);return()=>{clearTimeout(e),clearInterval(t)}},[]);const c=Object.keys(a).map(e=>[e,a[e]]),d=c.some(e=>P(e,2)[1].some(e=>"Released Structures"===e.displaySection)),p=c.some(e=>P(e,2)[1].some(e=>"Small Molecules"===e.displaySection));return l.createElement("article",null,l.createElement(o.N_,{className:"ai-chart-home-card",to:I.A.AI_CHART_BUILDER},l.createElement("div",null,l.createElement("h2",null,"AI Powered Chart Builder"),l.createElement("p",null,"Ask a question about the PDB. Create, compare, and refine charts using live archive data.")),l.createElement("span",{"aria-hidden":"true"},"→")),l.createElement(_,null,l.createElement(v,null,l.createElement(A,{id:"statistics-filter",type:"text",placeholder:"Enter keywords to filter statistics",value:t,onChange:e=>n(e.target.value),ref:s}))),l.createElement(S,null,d&&l.createElement(l.Fragment,null,l.createElement(C,null,"Released Structures Statistics"),l.createElement("p",null,"These statistics are generated for all structures currently released in the PDB archive. Macromolecular structures are described in the wwPDB"," ",l.createElement("a",{href:"https://mmcif.wwpdb.org/",target:"_blank",rel:"noopener noreferrer"},"PDBx/mmCIF Dictionary"),".")),c.map(e=>{let t=P(e,2),n=t[0];const r=t[1].filter(e=>"Released Structures"===e.displaySection);return r.length>0?l.createElement(D,{key:n},l.createElement(j,null,r[0].category_text),l.createElement(u,{items:r})):null})),l.createElement(S,null,p&&l.createElement(l.Fragment,null,l.createElement(C,null,"Small Molecule Statistics"),l.createElement("p",null,"These statistics are generated for all residue and small molecule components currently released in the PDB archive. Chemical components (ligands, small molecules and monomers) are described in the wwPDB"," ",l.createElement("a",{href:"https://www.wwpdb.org/data/ccd",target:"_blank",rel:"noopener noreferrer"},"Chemical Component Dictionary (CCD)")," ","and peptide-like molecules are described in the wwPDB"," ",l.createElement("a",{href:"https://www.wwpdb.org/data/bird",target:"_blank",rel:"noopener noreferrer"},"Biologically Interesting Molecule Reference Dictionary (BIRD)"),".")),c.map(e=>{let t=P(e,2),n=t[0];const r=t[1].filter(e=>"Small Molecules"===e.displaySection);return r.length>0?l.createElement(D,{key:n},l.createElement(j,null,r[0].category_text),l.createElement(u,{items:r})):null})),l.createElement(k,null,l.createElement("p",null,"These statistics are generated using ",l.createElement("a",{href:"/pages/webservices"},"Web Services")," and represent the current holdings of the archive."),l.createElement("p",null,"wwPDB hosts statistics on PDB ",l.createElement("a",{href:"https://www.wwpdb.org/stats/deposition",target:"_blank",rel:"noopener"},"Data Deposited")," and ",l.createElement("a",{href:"https://www.wwpdb.org/stats/download",target:"_blank",rel:"noopener"},"Data Downloaded"),".")))}}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_rcsb_rcsb_statistics=self.webpackChunk_rcsb_rcsb_statistics||[]).push([[417],{5417(e,t,n){n.r(t),n.d(t,{default:()=>_e});var l=n(9711),r=n(6876),a=n(8804),o=n(6619),i=n(2329),c=n(9806),s=n(5411),u=n(4654),d=n(2164),p=n(5579),m=n(728),b=n(5818),v=n(9782);const f=e=>{let t=e.size,n=void 0===t?24:t,r=e.color,a=void 0===r?"#bbb":r,o=e.disabled,i=void 0!==o&&o;return l.createElement("svg",{width:n,height:n,viewBox:"0 0 528.74 522.05",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{opacity:i?.5:1,cursor:i?"not-allowed":"pointer",pointerEvents:i?"none":"auto"}},l.createElement("path",{fill:a,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"}),l.createElement("path",{fill:a,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"}),l.createElement("polygon",{fill:a,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"}),l.createElement("path",{fill:a,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 g,h=n(2699),y=n(9281),x=n(9970),w=n(4855),E=n(4233),j=n(1980);function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,l)}return n}function O(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?k(Object(n),!0).forEach(function(t){C(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):k(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function C(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 A=n(376).Ay.div(g||(S=["\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 text-align: right;\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: right;\n border: 1px solid #e5e7eb;\n cursor: pointer;\n white-space: nowrap;\n }\n\n th.gridjs-th.gridjs-th-sort .gridjs-th-content {\n display: inline-block;\n float: none;\n width: auto;\n max-width: calc(100% - 24px);\n vertical-align: middle;\n }\n\n .gridjs-th .gridjs-sort {\n display: inline-flex;\n float: none;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-left: 8px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #888;\n font-size: 0;\n line-height: 1;\n vertical-align: middle;\n }\n\n .gridjs-th .gridjs-sort::after {\n font-size: 12px;\n line-height: 1;\n color: currentColor;\n }\n\n .gridjs-th .gridjs-sort.gridjs-sort-neutral {\n display: none;\n }\n\n .gridjs-th .gridjs-sort.gridjs-sort-asc::after {\n content: '▲';\n }\n\n .gridjs-th .gridjs-sort.gridjs-sort-desc::after {\n content: '▼';\n }\n\n .gridjs-th .gridjs-sort:hover,\n .gridjs-th .gridjs-sort:focus-visible {\n color: #333;\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"],P||(P=S.slice(0)),g=Object.freeze(Object.defineProperties(S,{raw:{value:Object.freeze(P)}}))));var S,P;const D=e=>{let t=e.data,n=e.title;const r=l.useRef(null),a=t.length>0?Object.keys(t[0]):[],o=a.findIndex(e=>"year"===e.toLowerCase()),i="".concat(null!=n?n:"","|").concat(a.join("|"));if(l.useLayoutEffect(()=>{var e,t;if(-1===o)return;const n=null===(e=r.current)||void 0===e||null===(t=e.getInstance)||void 0===t?void 0:t.call(e);n&&n.config.store.dispatch(e=>O(O({},e),{},{sort:{columns:[{index:o,direction:-1}]}}))},[i,o]),0===t.length)return l.createElement("p",null,"No data available.");const c=a.map(e=>({name:e,sort:"year"===e.toLowerCase()?{direction:-1}:{}})),s=t.map(e=>a.map(t=>e[t]));return-1!==o&&s.sort((e,t)=>Number(t[o])-Number(e[o])),l.createElement(l.Fragment,null,n&&l.createElement(E.ne,null,n),l.createElement(A,null,l.createElement(j.x,{ref:r,columns:c,data:s,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","text-align":"right"},td:{padding:"12px","border-bottom":"1px solid #eee",color:"#555","font-size":"13px","text-align":"right"}}})))};var T=n(83);const q=b.v$b,N=b.YYR,z=b.qvi,_=T.CkS,I=e=>{let t=e.chartType,n=e.handleChartTypeChange,r=e.isDistPlot;const a=e=>{n(e)};return l.createElement(E.RZ,null,l.createElement(E.C,null,l.createElement(E.vE,null,(()=>{switch(t){case"bar":default:return l.createElement(q,{size:15});case"line":return l.createElement(N,{size:15});case"pie":return l.createElement(z,{size:15})}})()),l.createElement("span",{className:"triangle"})),l.createElement(E.rI,null,l.createElement(E.tJ,{onClick:()=>a("bar")},l.createElement(E.vE,null,l.createElement(q,{size:15})),l.createElement(E.hf,null,"Bar Chart")," ","bar"===t&&l.createElement(_,null)),!r&&l.createElement(E.tJ,{onClick:()=>a("line")},l.createElement(E.vE,null,l.createElement(N,{size:15})),l.createElement(E.hf,null,"Line Chart")," ","line"===t&&l.createElement(_,null)),r&&l.createElement(E.tJ,{onClick:()=>a("pie")},l.createElement(E.vE,null,l.createElement(z,{size:15})),l.createElement(E.hf,null,"Pie Chart")," ","pie"===t&&l.createElement(_,null))))},F=T.CkS,R=e=>{let t=e.scaleType,n=e.handleScaleTypeChange,r=(e.isDistPlot,e.disabled);const a=e=>{n(e)};return l.createElement(E.tf,{disabled:r},l.createElement(E.C,null,l.createElement(E.vE,null,l.createElement(f,{size:15,color:"#606060"})),l.createElement("span",{className:"triangle"})),l.createElement(E.rI,null,l.createElement(E.tJ,{onClick:()=>a("logarithmic")},l.createElement(E.hf,null,"Logarithmic")," ","logarithmic"===t&&l.createElement(F,null)),l.createElement(E.tJ,{onClick:()=>a("linear")},l.createElement(E.hf,null,"Linear")," ","linear"===t&&l.createElement(F,null))))};var L,M,V,U,K=n(1990),$=n(2520);function B(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var l,r,a,o,i=[],c=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(l=a.call(n)).done)&&(i.push(l.value),i.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return H(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,l=Array(t);n<t;n++)l[n]=e[n];return l}function J(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,l)}return n}function Z(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?J(Object(n),!0).forEach(function(t){W(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):J(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function W(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 Y=b.Pcn,G=b.DIg,X=b.ist,Q=v.BVt,ee={id:"logarithmicTopBorder",afterDraw:e=>{var t;if("logarithmic"!==(null===(t=e.scales.y)||void 0===t?void 0:t.type))return;const n=e.ctx,l=e.chartArea,r=(0,i.X)(e,l.top,1);n.save(),n.beginPath(),n.lineWidth=1,n.strokeStyle="#e4e4e4",n.moveTo(l.left,r),n.lineTo(l.right,r),n.stroke(),n.restore()}};o.t1.register(o.PP,o.kc,o.OJ,o.E8,o.No,o.Bs,o.FN,o.hE,o.tK,o.m_,o.s$,c.Ay);const te=o.t1.defaults.plugins.zoom;te.zoom=Z(Z({},te.zoom),{},{wheel:Z(Z({},null===(L=te.zoom)||void 0===L?void 0:L.wheel),{},{speed:.025})}),te.limits=Z(Z({},te.limits),{},{x:Z(Z({},null===(M=te.limits)||void 0===M?void 0:M.x),{},{min:"original",max:"original",minRange:4}),y:Z(Z({},null===(V=te.limits)||void 0===V?void 0:V.y),{},{min:"original",max:"original",minRange:4})});const ne=o.t1.defaults.transitions;ne.zoom=Z(Z({},ne.zoom),{},{animation:Z(Z({},null===(U=ne.zoom)||void 0===U?void 0:U.animation),{},{duration:0})});const le=e=>{const t=e.datasets.map(e=>{if(Array.isArray(e.cumulativeData))return Z(Z({},e),{},{data:[...e.cumulativeData]});const t=[];let n=0;return e.data.forEach(e=>{n+=e,t.push(n)}),Z(Z({},e),{},{data:t})});return Z(Z({},e),{},{datasets:t})},re=e=>{var t,n,r,o,c,b,v,g,j,k,O,C,A,S,P,T;let q=e.data,N=e.plotName,z=e.reportVariantSelector,_=e.dataViewSelector;const F=(0,l.useRef)(null),L=(0,h.h)(),M=(L.handleOpenModal,L.handleCloseModal,(0,y.t)()),V=M.settings,U=M.setConfig,H=V.colorScheme,J=K.Tb.getStatisticsChartObject(N),W="distribution"===(null==J?void 0:J.chartCategory),te=!W&&!0===(null==J?void 0:J.fixedDataView),ne=!0===(null==J?void 0:J.hideDatasetControls),re=null==J?void 0:J.trauncateViewData,ae=(null==J?void 0:J.chartOptions)||{},oe=W?V.config.chartType.distrubution:V.config.chartType.growth,ie=V.config.chartType.scale,ce=Boolean(_),se=null!==(t=null==_?void 0:_.selectedView)&&void 0!==t?t:W||te?"non-cumulative":V.config.chartType.dataView,ue=!te&&!ce,de=null==J||null===(n=J.growthTooltipLabels)||void 0===n?void 0:n["cumulative"===se?"cumulative":"annual"],pe=(0,x.R)(),me=null===(r=ae.plugins)||void 0===r||null===(r=r.title)||void 0===r?void 0:r.text,be=Array.isArray(me)?me.join(" "):me||"",ve=B((0,l.useState)(q.datasets.map(e=>({label:e.label||"",visible:!0}))),2),fe=ve[0],ge=ve[1],he=B((0,l.useState)(()=>"cumulative"===(W||te?"non-cumulative":se)&&ue?le(q):q),2),ye=he[0],xe=he[1],we=q.datasets.map(e=>({label:e.label||"",visible:!0})),Ee=JSON.stringify([N,we.map(e=>e.label)]),je=null!==(o=null==_?void 0:_.defaultView)&&void 0!==o?o:W||te?"non-cumulative":"cumulative",ke=()=>{var e,t;null===(e=F.current)||void 0===e||null===(t=e.resetZoom)||void 0===t||t.call(e,"none"),ge(we),null==_||_.onChange(je),U({chartType:Z(Z({},V.config.chartType),{},{[W?"distrubution":"growth"]:"bar",scale:"linear",dataView:je})}),xe("cumulative"===je&&ue?le(q):q)};(0,l.useEffect)(()=>{ge(we)},[Ee]),(0,l.useEffect)(()=>{const e="cumulative"===se&&ue?le(q):q;xe(e)},[se,q,ue]),(0,l.useEffect)(()=>{if("cumulative"===se&&ue){const e=le(q);xe({labels:q.labels,datasets:e.datasets.map(e=>{var t;return Z(Z({},e),{},{hidden:!1===(null===(t=fe.find(t=>t.label===e.label))||void 0===t?void 0:t.visible)})})})}else xe({labels:q.labels,datasets:q.datasets.map(e=>{var t;return Z(Z({},e),{},{hidden:!1===(null===(t=fe.find(t=>t.label===e.label))||void 0===t?void 0:t.visible)})})})},[se,q,fe,ue]);const Oe=()=>{U({chartType:Z(Z({},V.config.chartType),{},{scale:"linear"===V.config.chartType.scale?"logarithmic":"linear"})})},Ce=e=>{_?_.onChange(e):U({chartType:Z(Z({},V.config.chartType),{},{dataView:e})})},Ae=(e,t)=>{var n,l;if(null!==(n=e.native)&&void 0!==n&&n.shiftKey||0===t.length||!ye.labels)return;const r=t[0],a=r.index,o=r.datasetIndex,i=ye.labels[a],c=null===(l=ye.datasets)||void 0===l||null===(l=l[o])||void 0===l?void 0:l.label;if(J&&J.getSearchObj){var s;const e=J.getSearchObj(Z(Z({},V),{},{currentInput:fe}),i,c),t=JSON.stringify(e),n=encodeURIComponent(t),l=(null===(s=J.query)||void 0===s?void 0:s.returnType)===$.pz.MolDefinition?"/search/chemical/?request=":"/search?request=",r="".concat(V.config.searchAdvancedUrl).concat(l).concat(n);window.open(r,"_blank")}},Se=null===(c=ae.plugins)||void 0===c?void 0:c.zoom,Pe="bar"!==oe&&"line"!==oe||null==Se||!Se.zoom?Se:Z(Z({},Se),{},{pan:Z(Z({},Se.pan),{},{modifierKey:"shift"}),zoom:Z(Z({},Se.zoom),{},{drag:Z(Z({},null===(b=Se.zoom)||void 0===b?void 0:b.drag),{},{enabled:!0,threshold:10,backgroundColor:"rgba(51, 122, 183, 0.16)",borderColor:"#337ab7",borderWidth:1,drawTime:"afterDatasetsDraw"})})}),De=Z(Z({},ae),{},{layout:{padding:{right:1}},scales:W||"line"!==oe?ae.scales:Z(Z({},ae.scales),{},{x:Z(Z({},null===(v=ae.scales)||void 0===v?void 0:v.x),{},{stacked:!1}),y:Z(Z({},null===(g=ae.scales)||void 0===g?void 0:g.y),{},{type:ie,stacked:!1,min:"logarithmic"===ie?1:void 0,ticks:{callback:function(e){return"logarithmic"===ie?-1!==[1,10,100,1e3,1e4,1e5].indexOf(e)?e:null:e}},title:{display:!0,text:"".concat((null==ae||null===(j=ae.scales)||void 0===j||null===(j=j.y)||void 0===j||null===(j=j.title)||void 0===j?void 0:j.text)||"Y-Axis"," ").concat("logarithmic"===ie?"(Logarithmic scale)":"(Linear scale)")}})}),plugins:Z(Z({},ae.plugins),{},{tooltip:de?Z(Z({},null===(k=ae.plugins)||void 0===k?void 0:k.tooltip),{},{callbacks:Z(Z({},null===(O=ae.plugins)||void 0===O||null===(O=O.tooltip)||void 0===O?void 0:O.callbacks),{},{label:e=>" ".concat(de,": ").concat((0,w.bF)(e.raw))})}):null===(C=ae.plugins)||void 0===C?void 0:C.tooltip,zoom:Pe,title:Z(Z({},null===(A=ae.plugins)||void 0===A?void 0:A.title),{},{display:!1}),legend:{display:q.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:Z(Z({},ae.elements),{},{bar:Z(Z({},null===(S=ae.elements)||void 0===S?void 0:S.bar),{},{hoverBackgroundColor:(e,t)=>{return n=t.backgroundColor,(0,i.c)(n).saturate(1).darken(.3).hexString();var n},hoverBorderWidth:0}),line:Z(Z({},null===(P=ae.elements)||void 0===P?void 0:P.line),{},{tension:.1,spanGaps:!0}),point:Z(Z({},null===(T=ae.elements)||void 0===T?void 0:T.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"}}),Te=e=>{U({chartType:Z(Z({},V.config.chartType),{},{[W?"distrubution":"growth"]:e})})},qe=(e,t)=>{const n=e.datasets[0],l=e.labels.map(e=>"string"==typeof e?e.replace(/\s+Da$/i,""):e),r=e.labels.map((e,n)=>t[n%t.length]);return{labels:l,datasets:[{data:n.data,backgroundColor:r,borderColor:r,borderWidth:1}]}},Ne=e=>{var t;e.title;const n=e.legend,l=e.tooltips,r=e.responsive,a=e.plugins,o="y"===e.indexAxis?"y":"x",i=null===(t=e.scales)||void 0===t||null===(t=t[o])||void 0===t?void 0:t.title,c=null==i?void 0:i.text,s="string"==typeof c?c.trim().length>0:Array.isArray(c)&&c.length>0,u={responsive:null==r||r,maintainAspectRatio:!1,plugins:Z(Z({},a),{},{subtitle:Z(Z({},null==a?void 0:a.subtitle),{},{display:!1!==(null==i?void 0:i.display)&&s,position:"bottom",text:c,color:null==i?void 0:i.color,font:null==i?void 0:i.font,padding:{top:10,bottom:0}}),legend:Z(Z({},n),{},{display:!0,position:"bottom",onClick:(e,t,n)=>((e,t)=>{const n=e.getDatasetMeta(0),l=t.index;if(void 0!==l){const r=n.data[l].hidden;n.data[l].hidden=!r,t.hidden=n.data[l].hidden,e.options.plugins.legend.labels.generateLabels=e=>e.data.labels.map((t,l)=>({text:t,fillStyle:e.data.datasets[0].backgroundColor[l],hidden:n.data[l].hidden,index:l})),e.update()}})(n.chart,t)}),tooltip:Z(Z({},l),{},{callbacks:{label:e=>{const t=e.dataset,n=e.dataIndex,l=e.chart.getDatasetMeta(0).data.map((e,t)=>e.hidden?null:t).filter(e=>null!==e).map(e=>t.data[e]),r=t.data[n],a=(r/l.reduce((e,t)=>e+t,0)*100).toFixed(2);return"".concat(e.label,": ").concat((0,w.bF)(r)," - ").concat(a,"% (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 u},ze=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 Z(Z({},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}},_e=()=>z?l.createElement(E.NF,null,l.createElement(E.Yg,null,z.title),z.options.map(e=>l.createElement(s.A.Check,{key:e.key,type:"radio",id:"report-variant-".concat(N,"-").concat(e.key),label:e.label,name:"report-variant-".concat(N),value:e.key,checked:z.selectedKey===e.key,onChange:()=>z.onChange(e.key)}))):null;return l.createElement(l.Fragment,null,l.createElement(E.Kb,null,l.createElement(E.OV,{onClick:e=>{if(null==J||!J.getSearchObj)return;const t=(()=>{const e=fe.some(e=>!e.visible);return W||!e?(0,w.ry)(pe,V):((e,t,n,l,r)=>{var a,o;const i="".concat(t.config.searchApiUrl,"/query-editor.html?json="),c=null==J||null===(a=J.query)||void 0===a||null===(a=a.firstDim)||void 0===a?void 0:a.attribute,s=null==J||null===(o=J.query)||void 0===o?void 0:o.returnType;let u,d,p;if(l){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 v,f;if(!Array.isArray(e)||e.length<2)return i;if(u=null===(v=e[0])||void 0===v?void 0:v.to,d=null===(f=e[e.length-1])||void 0===f?void 0:f.from,void 0===u||void 0===d)return i;p={type:$.Type.Terminal,label:"text",service:$.kl.Text,parameters:{attribute:c,operator:$.XP.Range,value:{from:u,to:d,include_lower:!0,include_upper:!1}}}}else if(t){var g,h;const e=r.labels,t=Array.isArray(null==J||null===(g=J.query)||void 0===g||null===(g=g.firstDim)||void 0===g?void 0:g.facets)?null==J||null===(h=J.query)||void 0===h||null===(h=h.firstDim)||void 0===h||null===(h=h.facets[0])||void 0===h?void 0:h.attribute:void 0;p={type:$.Type.Group,nodes:e.map(e=>({type:$.Type.Terminal,service:$.kl.Text,parameters:{attribute:t,operator:$.XP.ExactMatch,value:e}})),logical_operator:$.LogicalOperator.Or,label:"text"}}else{const e=r.labels.slice(0,25);p={type:$.Type.Group,nodes:e.map(e=>({type:$.Type.Terminal,service:$.kl.Text,parameters:{attribute:c,operator:$.XP.ExactMatch,negation:!1,value:e}})),logical_operator:$.LogicalOperator.Or,label:"text"}}}else{var y;const e=n(t,"1976-05-19");if(!e||!e.query||!e.query.nodes)return i;const l=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:l,logical_operator:$.LogicalOperator.Or}}const x={query:p,return_type:s,request_options:e.searchRequest.request_options},w=encodeURIComponent(JSON.stringify(x));return"".concat(i).concat(w)})(pe,Z(Z({},V),{},{currentInput:fe}),J.getSearchObj,W,ye)})();t&&window.open(t,"_blank")}},l.createElement(Y,null)," Search API")),l.createElement(p.A,null,(e=>{Z(Z({},De),{},{maintainAspectRatio:!1,plugins:Z(Z({},De.plugins),{},{legend:Z(Z({},De.plugins.legend),{},{display:!1})})});const t=()=>"Report: ".concat(be,", Generated on: ").concat((new Date).toLocaleDateString()," ").concat((new Date).toLocaleTimeString()),n=(e,t,n)=>{var l,r;if(null==e||null===(l=e.datasets)||void 0===l||!l.length||0===e.labels.length)return{columns:[],gridData:[]};if(t){var a,o;const t=e.labels||[],l=e.datasets[0]||{},r=(null===(a=n.scales)||void 0===a||null===(a=a.x)||void 0===a||null===(a=a.title)||void 0===a?void 0:a.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?[r,i]:[i,r],gridData:t.map((e,t)=>[e,(0,w.bF)(l.data[t]||0)])}}if(1===e.datasets.length)return{columns:["Year",(null===(r=n.scales)||void 0===r||null===(r=r.y)||void 0===r||null===(r=r.title)||void 0===r?void 0:r.text)||"Data"],gridData:e.labels.map((t,n)=>[t,(0,w.bF)(e.datasets[0].data[n]||0)])};const i=e.datasets.filter(e=>{var t;return!1!==(null===(t=fe.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,w.bF)(e.data[t]||0))}),n})}},r=n(ye,W,ae);if(0===r.columns.length||0===r.gridData.length)return l.createElement("p",null,"No data available for table.");const o=r.gridData.map(e=>{const t={};return r.columns.forEach((n,l)=>{t[n]=e[l]}),t}),i=re?Z(Z({},ye),{},{labels:ye.labels.slice(0,25),datasets:ye.datasets.map(e=>Z(Z({},e),{},{data:e.data.slice(0,25)},Array.isArray(e.stackData)&&{stackData:e.stackData.slice(0,25)}))}):ye,c=Z(Z({},i),{},{datasets:i.datasets.map(e=>Array.isArray(e.stackData)?Z(Z({},e),{},{displayData:e.data,data:e.stackData}):e)}),p={bar:l.createElement(a.yP,{ref:F,data:c,options:Z(Z({},De),{},{onClick:Ae})}),line:l.createElement(a.N1,{ref:F,data:ze(ye),options:De,plugins:[ee]}),pie:l.createElement(a.Fq,{ref:F,data:qe(i,H),options:Z(Z({},Ne(De)),{},{onClick:Ae})}),table:l.createElement(D,{data:o})};return l.createElement(d.A,null,l.createElement(u.A,{md:10},l.createElement(E.rh,{$isTable:"table"===oe},l.createElement(E.hx,null,be),l.createElement(E.at,{$isTable:"table"===oe,$fullscreen:e},p[oe]),l.createElement(E.Q3,null,l.createElement("div",{dangerouslySetInnerHTML:{__html:(null==J?void 0:J.description)||""}})))),l.createElement(u.A,{md:2},l.createElement(d.A,null,l.createElement(E.G,{md:2},l.createElement(E.Tu,null,l.createElement(l.Fragment,null,l.createElement(I,{"data-tooltip-id":"chart-type-tooltip","data-tooltip-content":"Change Chart type",chartType:oe,handleChartTypeChange:Te,isDistPlot:W}),l.createElement(E.vE,{"data-tooltip-id":"table-tooltip","data-tooltip-content":"Display data in a structured, sortable table format",disabled:!1,selected:"table"===oe,onClick:()=>Te("table")},l.createElement(X,{size:15})),l.createElement(E.vE,{"data-tooltip-id":"csv-tooltip","data-tooltip-content":"Export data in a CSV format",onClick:()=>{const e=n(ye,W,ae),l=((e,n)=>{const l=t(),r=[...n].sort((e,t)=>e[0]>t[0]?-1:e[0]<t[0]?1:0);return[l,e.join(","),...r.map(e=>e.map(e=>e.replace(/,/g,"")).join(","))].join("\n")})(e.columns,e.gridData),r=new Blob([l],{type:"text/csv;charset=utf-8;"}),a=URL.createObjectURL(r),o=document.createElement("a");o.href=a;const i=t(),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},l.createElement(Q,{size:15})),!W&&("line"===oe?l.createElement(R,{"data-tooltip-id":"scale-tooltip","data-tooltip-content":"Toggle data scale",scaleType:ie,handleScaleTypeChange:Oe,isDistPlot:W,disabled:!1}):l.createElement(E.vE,{"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},l.createElement(f,{size:15,color:"#606060",disabled:!0}))),l.createElement(E.vE,{"data-tooltip-id":"reset-tooltip","data-tooltip-content":"Reset chart to the default display and clear any applied filters",onClick:ke,disabled:!1},l.createElement(G,{size:15})),l.createElement(m.m_,{id:"settings-tooltip",place:"left"}),l.createElement(m.m_,{id:"information-tooltip",place:"left"}),l.createElement(m.m_,{id:"chart-type-tooltip",place:"left"}),l.createElement(m.m_,{id:"table-tooltip",place:"left"}),l.createElement(m.m_,{id:"scale-tooltip",place:"left"}),l.createElement(m.m_,{id:"csv-tooltip",place:"left"}),l.createElement(m.m_,{id:"reset-tooltip",place:"left"})))),(()=>{const e=!ne&&fe.length>1,t=!W&&(Boolean(z)||e),n=W&&Boolean(z);return l.createElement(u.A,{md:10},l.createElement(E.Nk,null,l.createElement(l.Fragment,null,W?n&&l.createElement(l.Fragment,null,l.createElement(E.MV,null,"Data Options"),_e()):l.createElement(l.Fragment,null,t&&l.createElement(E.MV,null,"Data Options"),_e(),e&&l.createElement(E.ou,null,l.createElement(E.Yg,null,"Data Shown"),fe.map(e=>{const t="unique-protein-sequences"===N&&e.label?"Identity ".concat(parseFloat(e.label).toFixed(0),"%"):e.label;return l.createElement(E.VT,{key:e.label},l.createElement(E.ph,{type:"checkbox",id:e.label,checked:e.visible,onChange:()=>{return t=e.label,void ge(e=>e.map(e=>e.label===t?Z(Z({},e),{},{visible:!e.visible}):e));var t}}),l.createElement(E.Gw,{htmlFor:e.label},t))})),(!te||_)&&l.createElement(E.NF,null,l.createElement(E.Yg,null,"Data Set"),l.createElement(s.A.Check,{type:"radio",id:"view-annual",label:"Annual",name:"view-switch",value:"non-cumulative",checked:"non-cumulative"===se,onChange:()=>Ce("non-cumulative")}),l.createElement(s.A.Check,{type:"radio",id:"view-cumulative",label:"Cumulative",name:"view-switch",value:"Cumulative",checked:"cumulative"===se,onChange:()=>Ce("cumulative")}))))))})())))})(!1)))};var ae=n(1727),oe=n(6402),ie=n(1086),ce=n(1760),se=n(3431),ue=n(8741),de=n(6644);function pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,l)}return n}function me(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?pe(Object(n),!0).forEach(function(t){be(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):pe(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function be(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 ve=e=>{const t=K.Tb.getStatisticsChartObject(e);return{stats_notes:null==t?void 0:t.description,query:null==t?void 0:t.query}},fe=e=>/^unique-protein-sequences-(30|50|70|90|95|100)$/.test(e),ge=(e,t)=>{var n;return null!==(n=e[t%Math.max(e.length,1)])&&void 0!==n?n:"#4f81bd"},he=e=>{var t,n;return null!==(t=null===(n=String(e).match(/\d{4}/))||void 0===n?void 0:n[0])&&void 0!==t?t:String(e)},ye=e=>{const t=String(e).match(/\d{4}-\d{2}-\d{2}/g),n=null==t?void 0:t[t.length-1];if(!n)return String(e).slice(-4);const l=new Date("".concat(n,"T00:00:00Z"));return l.setUTCDate(l.getUTCDate()-1),String(l.getUTCFullYear())},xe=function(e,t,n,l){return{label:e,population:t,objectConfig:{objectId:[e,n,t,...arguments.length>4&&void 0!==arguments[4]?arguments[4]:[]],color:l,label:n}}},we=(e,t)=>{var n;const l=null==e||null===(n=e.facets)||void 0===n?void 0:n.find(e=>e.name===t);if(!l||!Array.isArray(l.buckets)||0===l.buckets.length)throw new Error("Missing Search API facet: ".concat(t));return l.buckets},Ee=e=>{var t;const n=null==e||null===(t=e.facets)||void 0===t?void 0:t.find(e=>e.name===K.zF);var l;if(void 0===(null==n?void 0:n.value)||null===(null==n?void 0:n.value))throw new Error("Missing UniProtKB cardinality for ".concat(null!==(l=null==e?void 0:e.label)&&void 0!==l?l:"unknown bucket"));const r=Number(n.value);var a;if(!Number.isFinite(r))throw new Error("Invalid UniProtKB cardinality for ".concat(null!==(a=null==e?void 0:e.label)&&void 0!==a?a:"unknown bucket"));return r},je=e=>e.map((e,t)=>{var n;return me(me({},e),{},{label:null!==(n=K.cJ[t])&&void 0!==n?n:e.label})}),ke=e=>{var t;const n=(0,de.cloneDeep)(e.firstDim);e.secondDim&&(0,ue.vw)(e.secondDim,n);const l=(null!==(t=e.additionalFacets)&&void 0!==t?t:[]).map(e=>(0,de.cloneDeep)(e));return{return_type:e.returnType,request_options:me({paginate:{rows:0},facets:[n,...l]},e.resultsContentType?{results_content_type:e.resultsContentType}:{})}},Oe=async(e,t,n)=>{const l=ve(e),r=l.stats_notes,a=l.query;if(!a)throw new Error("Unknown chart key: ".concat(e));return Ce(e,t,a,!1,r,n)},Ce=async function(e,t,n){let l=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>5?arguments[5]:void 0;const a=ke(n),o=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})})(a,r.config);if(!o)return[[]];if(e===K.HL)return((e,t)=>{const n=[...we(e,K.yF)].sort((e,t)=>Number(he(e.label))-Number(he(t.label))),l=new Map(we(e,K.mf).map(e=>[ye(e.label),Ee(e)])),r=K.zF;return[n.map(e=>{const n=he(e.label),a=l.get(n);if(void 0===a)throw new Error("Missing cumulative UniProtKB count for ".concat(n));return me(me({},xe(n,Ee(e),r,ge(t,0))),{},{cumulativePopulation:a})})]})(o,t);if((e=>/^unique-protein-domains-annual-(all|scop|ecod|scop2|cath)$/.test(e))(e))return((e,t,n)=>{var l,r;const a=[...null!==(l=null==t||null===(r=t.facets)||void 0===r||null===(r=r[0])||void 0===r?void 0:r.buckets)&&void 0!==l?l:[]].sort((e,t)=>Number(he(e.label))-Number(he(t.label)));return(e===K.K4?["SCOP","ECOD","SCOP2","CATH"]:[e.replace("unique-protein-domains-annual-","").toUpperCase()]).map((t,l)=>{var r;const o=null!==(r=K.Ul[t])&&void 0!==r?r:t;return a.map(r=>{const a=he(r.label),i=((e,t,n)=>{var l,r;if(e===K.K4){var a,o;const e=null==t||null===(a=t.facets)||void 0===a||null===(a=a[0])||void 0===a||null===(a=a.buckets)||void 0===a?void 0:a.find(e=>String(e.label).toUpperCase()===n);return Number(null!==(o=null==e?void 0:e.population)&&void 0!==o?o:0)}return Number(null!==(l=null==t||null===(r=t.facets)||void 0===r||null===(r=r[0])||void 0===r||null===(r=r.buckets)||void 0===r||null===(r=r[0])||void 0===r?void 0:r.population)&&void 0!==l?l:0)})(e,r,t);return xe(a,i,o,ge(n,l))})})})(e,o,t);if((e=>/^unique-protein-sequences-annual-(30|50|70|90|95|100)$/.test(e))(e))return((e,t)=>{var n,l;return[[...null!==(n=null==e||null===(l=e.facets)||void 0===l||null===(l=l[0])||void 0===l?void 0:l.buckets)&&void 0!==n?n:[]].sort((e,t)=>Number(he(e.label))-Number(he(t.label))).map(e=>{var n,l;const r=he(e.label),a=Number(null!==(n=null==e||null===(l=e.facets)||void 0===l||null===(l=l[0])||void 0===l?void 0:l.value)&&void 0!==n?n:0);return xe(r,a,"Number of Unique Protein Sequences",ge(t,0))})]})(o,t);if((e=>(e=>/^unique-protein-domains-(scop|ecod|scop2|cath)$/.test(e))(e)||fe(e))(e))return((e,t,n)=>{var l,r;const a=[...null!==(l=null==t||null===(r=t.facets)||void 0===r||null===(r=r[0])||void 0===r?void 0:r.buckets)&&void 0!==l?l:[]].sort((e,t)=>Number(ye(e.label))-Number(ye(t.label))),o=(e=>fe(e)?{annual:"Number of New Protein Sequences",total:"Total Number of Protein Sequences"}:{annual:"Number of New Domains Annually",total:"Total Number of Unique Domains Available"})(e);let i=0;const c=[],s=[];return a.forEach(t=>{const l=ye(t.label),r=((e,t)=>{var n,l,r,a;return fe(e)?Number(null!==(r=null==t||null===(a=t.facets)||void 0===a||null===(a=a[0])||void 0===a?void 0:a.value)&&void 0!==r?r:0):Number(null!==(n=null==t||null===(l=t.facets)||void 0===l||null===(l=l[0])||void 0===l||null===(l=l.buckets)||void 0===l||null===(l=l[0])||void 0===l?void 0:l.population)&&void 0!==n?n:0)})(e,t),a=i,u=r-a;i=r,c.push(xe(l,u,o.annual,ge(n,0),[r])),s.push(me(me({},xe(l,r,o.total,ge(n,1),[u])),{},{stackPopulation:a}))}),[c,s]})(e,o,t);const i=(0,se.z)(o);let c=i[0].data;const s={resolution:w.$Z,"r-free":w.$Z,"molecular-weight-structure":w.bl,"molecular-weight-entity":w.bl,"molecular-weight-small-molecules":w.U0,"atom-count":w.pF,"residue-count":w.pF,[K.sq]:je},u=s[e]?s[e](c):c;if(s[e]&&(c=u),"distribution-source-organism"===e)return[i.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(e===K.NK){const e="Number of Entries";return[c.map(n=>xe(String(n.label),Number(n.population),e,ge(t,0)))]}if(l&&c.length>0){let e=0;return[c.map(e=>me(me({},e),{},{objectConfig:me(me({},e.objectConfig),{},{color:t[0%t.length],label:"Annual"})})),c.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?Ae(e,n,i.filter(e=>e.name===Se(n.secondDim)),t,r.config.searchAdvancedUrl,r.currentInput):[c.map(e=>me(me({},e),{},{objectConfig:{objectId:[e.label,e.population],color:t[0%t.length]}}))]},Ae=(e,t,n,l,r,a)=>{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),u=[];return s.forEach((e,t)=>{const n=[];i.forEach(r=>{var a,o;const i=null!==(a=null===(o=c.get(r))||void 0===o?void 0:o.get(e))&&void 0!==a?a:0;i>0&&n.push({label:r,population:i,objectConfig:{objectId:[r,e,i],color:l[t%l.length]}})}),n.length>0&&u.push(n)}),u},Se=e=>{if("name"in e)return e.name;if(!e.facets||1!==e.facets.length)throw new Error("Multiple facets are not allowed");return Se(e.facets[0])},Pe=(e,t,n)=>[e,t,n];function De(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,l)}return n}function Te(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?De(Object(n),!0).forEach(function(t){qe(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):De(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function qe(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}function Ne(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var l,r,a,o,i=[],c=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(l=a.call(n)).done)&&(i.push(l.value),i.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ze(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ze(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ze(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,l=Array(t);n<t;n++)l[n]=e[n];return l}const _e=e=>{var t;e.setFullscreenContent;const n=(0,r.g)().plotname||"",a=n||"";l.useEffect(()=>{window.scrollTo(0,0)},[n]);const o=Ne(l.useState(K._Z),2),i=o[0],c=o[1],s=Ne(l.useState(K.gj),2),u=s[0],d=s[1],p=Ne(l.useState(K.XJ),2),m=p[0],b=p[1],v=Ne(l.useState(K.b4),2),f=v[0],g=v[1],h=Ne(l.useState("non-cumulative"),2),w=h[0],j=h[1],k=Ne(l.useState("non-cumulative"),2),O=k[0],C=k[1],A=(()=>{if(a===K.pm)return{title:"Types of Source Organism",options:K.$Z,selectedKey:i,onChange:e=>c(e)};if((a===K.WD||a===K.i8)&&"cumulative"===w)return{title:"Data Shown",options:K.Lw,selectedKey:u,onChange:e=>d(e)};if(a===K.fA){const e="non-cumulative"===O;return{title:"Sequence Identity",options:e?K.i7:K.WE,selectedKey:e?m:f,onChange:t=>{e?(b(t),g((e=>"unique-protein-sequences-".concat(e.replace("unique-protein-sequences-annual-","").replace("unique-protein-sequences-","")))(t))):(g(t),b((e=>"unique-protein-sequences-annual-".concat(e.replace("unique-protein-sequences-annual-","").replace("unique-protein-sequences-","")))(t)))}}}})(),S=a===K.WD||a===K.i8,P=a===K.fA,D=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const l=(0,y.t)().settings,r=l.colorScheme.join("");return(0,ce.E)({queries:e.map(e=>{var a;return{queryKey:Pe(e,t,r),queryFn:()=>Oe(e,l.colorScheme,l),enabled:!!e,staleTime:null!==(a=n.staleTime)&&void 0!==a?a:0}})})}(P?"non-cumulative"===O?K.i7.map(e=>e.key):K.WE.map(e=>e.key):[],void 0,{staleTime:1/0}),T=S?{selectedView:w,onChange:j,defaultView:"non-cumulative"}:P?{selectedView:O,onChange:C,defaultView:"non-cumulative"}:void 0,q=a===K.pm?i:S?"non-cumulative"===w?K.K4:u:P?"non-cumulative"===O?m:f:a,N=function(e,t){var n;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const a=(0,y.t)().settings,o=(0,x.R)().setProperty,i=a.colorScheme.join(""),c=l.useRef(null);return l.useEffect(()=>{e&&c.current!==e&&(c.current=e,((e,t)=>{const n=ve(e),l=n.stats_notes,r=n.query;r&&(t("searchRequest",ke(r)),t("stats_notes",l))})(e,o))},[e,o]),(0,ie.I)({queryKey:Pe(e,t,i),queryFn:()=>Oe(e,a.colorScheme,a),enabled:!!e,staleTime:null!==(n=r.staleTime)&&void 0!==n?n:0})}(q,void 0,{staleTime:P?1/0:0}),z=N.data,_=N.isLoading,I=N.error,F=P&&D.some(e=>e.isLoading),R=null===(t=D.find(e=>e.error))||void 0===t?void 0:t.error;if(_||F)return l.createElement(E.tt,null,l.createElement(ae.A,null));if(I||R)return l.createElement(E.tt,null,l.createElement(oe.A,{error:I||R}));const L=z&&z.length>0?{labels:z[0].map(e=>e.label),datasets:z.map((e,t)=>{var n,l,r,a,o,i;const c={},s={},u={};return e.forEach(e=>{c[e.label]=e.population,"number"==typeof e.cumulativePopulation&&(s[e.label]=e.cumulativePopulation),"number"==typeof e.stackPopulation&&(u[e.label]=e.stackPopulation)}),Te(Te({label:null!==(n=null!==(l=null===(r=e[0])||void 0===r||null===(r=r.objectConfig)||void 0===r?void 0:r.label)&&void 0!==l?l: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:z[0].map(e=>c[e.label]||0),backgroundColor:(null===(o=e[0])||void 0===o||null===(o=o.objectConfig)||void 0===o?void 0:o.color)||"rgba(0, 0, 0, 0.1)",borderColor:(null===(i=e[0])||void 0===i||null===(i=i.objectConfig)||void 0===i?void 0:i.color)||"rgba(0, 0, 0, 0.1)",borderWidth:1,objectConfig:e.map(e=>e.objectConfig)},Object.keys(s).length>0&&{cumulativeData:z[0].map(e=>{var t,n;return null!==(t=null!==(n=s[e.label])&&void 0!==n?n:c[e.label])&&void 0!==t?t:0})}),Object.keys(u).length>0&&{stackData:z[0].map(e=>{var t,n;return null!==(t=null!==(n=u[e.label])&&void 0!==n?n:c[e.label])&&void 0!==t?t:0})})})}:null;return l.createElement(E.tt,{key:n},L?l.createElement(l.Fragment,null,l.createElement(re,{data:L,plotName:q,reportVariantSelector:A,dataViewSelector:T})):l.createElement(E.tt,null,l.createElement(oe.A,{error:new Error("No data available")})))}},4233(e,t,n){n.d(t,{C:()=>te,G:()=>L,Gw:()=>$,Kb:()=>_,MV:()=>B,NF:()=>W,Nk:()=>R,OV:()=>F,Q3:()=>I,RZ:()=>Q,Tu:()=>M,VT:()=>U,Yg:()=>G,at:()=>Z,hf:()=>re,hx:()=>J,ne:()=>X,ou:()=>Y,ph:()=>K,rI:()=>ne,rh:()=>H,tJ:()=>le,tf:()=>ee,tt:()=>z,vE:()=>V});var l,r,a,o,i,c,s,u,d,p,m,b,v,f,g,h,y,x,w,E,j,k,O,C,A,S,P,D=n(376),T=n(4654);function q(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const N=(0,D.i7)(l||(l=q(["\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"]))),z=D.Ay.div(r||(r=q(["\n animation: "," .5s ease-in;\n will-change: opacity, transform;\n"])),N),_=D.Ay.div(a||(a=q([" \n display: flex;\n justify-content: flex-end;\n margin-top: -10px;\n"]))),I=D.Ay.div.attrs(()=>({as:"div"}))(o||(o=q(["\n margin-top: 35px;\n padding-top: 10px;\n border-top: 1px solid #ccc;\n margin-right: 200px;\n"]))),F=D.Ay.button(i||(i=q(["\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"]))),R=D.Ay.div(c||(c=q(["\n padding-left: 25px;\n margin-top: 60px;\n"]))),L=(0,D.Ay)(T.A)(s||(s=q(["\n margin-top: 60px;\n"]))),M=D.Ay.div(u||(u=q(["\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 5px;\n"]))),V=D.Ay.div(d||(d=q(["\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=>e.selected?"1px solid black":"1px solid #fff",e=>e.disabled?"#bbb":"#606060",e=>e.disabled?"grayscale(30%) blur(0.5px)":"none",e=>!e.disabled&&"\n &:hover {\n background-color: #e0e0e0;\n border: 1px solid #808080;\n cursor: pointer;\n }\n "),U=D.Ay.div(p||(p=q(["\n display: flex;\n align-items: center;\n margin-bottom: 5px;\n min-width: 170px;\n"]))),K=D.Ay.input(m||(m=q(["\n margin-right: 20px;\n"]))),$=D.Ay.label(b||(b=q(["\n font-size: 12px;\n margin-left: 5px;\n font-weight: normal;\n margin-bottom: 0 !important;\n"]))),B=D.Ay.div(v||(v=q(["\n font-weight: bold;\n font-size: 1.2em;\n margin-bottom: 15px;\n"]))),H=D.Ay.div(f||(f=q(["\n width: auto;\n height: auto;\n min-height: ",";\n margin-bottom: 70px;\n margin-left: -15px;\n"])),e=>e.$isTable?"0":"550px"),J=D.Ay.h1(g||(g=q(["\n display: block;\n margin: 0;\n padding: 0 0 29px;\n font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;\n font-size: 18px;\n font-weight: bold;\n color: #333;\n text-align: start;\n"]))),Z=D.Ay.div(h||(h=q(["\n position: relative;\n height: ",";\n"])),e=>{let t=e.$isTable,n=e.$fullscreen;return t?"auto":n?"calc(100% - 62px)":"calc(550px - 62px)"}),W=D.Ay.div(y||(y=q(["\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"]))),Y=D.Ay.div(x||(x=q(["\n margin-bottom: 35px;\n"]))),G=D.Ay.div(w||(w=q(["\n font-weight: bold;\n margin-bottom: 5px;\n"]))),X=(D.Ay.div(E||(E=q(["\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"]))),D.Ay.div(j||(j=q(["\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"])))),Q=D.Ay.div(k||(k=q(["\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"]))),ee=D.Ay.div(O||(O=q(["\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=>e.disabled?"not-allowed":"pointer",e=>e.disabled?.4:1,e=>e.disabled?"none":"auto",e=>e.disabled?"grayscale(30%) blur(0.5px)":"none",e=>e.disabled?"#bbb":"inherit",e=>e.disabled?"none":"block"),te=D.Ay.div(C||(C=q(["\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"]))),ne=D.Ay.ul(A||(A=q(["\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"])),Q),le=D.Ay.li(S||(S=q(["\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"]))),re=D.Ay.span(P||(P=q(["\n margin-left: 8px;\n font-size: 14px;\n color: #333;\n margin-right: 5px;\n"])))}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_rcsb_rcsb_statistics=self.webpackChunk_rcsb_rcsb_statistics||[]).push([[463],{2463(e,t,r){r.r(t),r.d(t,{default:()=>C});var n=r(9711),a=r(376),l=r(9281);const o=async(e,t)=>{var r;return(async(e,t)=>{const r="".concat(t.replace(/\/$/,""),"/rcsbsearch/v2/query"),n=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!n.ok)throw new Error(n.statusText);return n.json()})(e,null==t||null===(r=t.config)||void 0===r?void 0:r.searchApiUrl)},i={request_info:{query_id:"ligand_complex_stats_any_ligand",src:"ui"},request_options:{results_content_type:["experimental"]},return_type:"entry",query:{type:"terminal",service:"text",parameters:{attribute:"rcsb_entry_info.nonpolymer_entity_count",operator:"greater",value:0}}},s=[i,{request_info:{query_id:"ligand_complex_stats_mv100",src:"ui"},return_type:"entry",request_options:{results_content_type:["experimental"]},query:{type:"group",logical_operator:"and",nodes:[i.query,{type:"terminal",service:"text_chem",parameters:{attribute:"chem_comp.formula_weight",operator:"range",value:{from:100,to:300,include_lower:!0,include_upper:!0}}}]}},{request_info:{query_id:"ligand_complex_stats_mv300",src:"ui"},return_type:"entry",request_options:{results_content_type:["experimental"]},query:{type:"group",logical_operator:"and",nodes:[i.query,{type:"terminal",service:"text_chem",parameters:{attribute:"chem_comp.formula_weight",operator:"range",value:{from:300,to:500,include_lower:!0,include_upper:!0}}}]}},{request_info:{query_id:"ligand_complex_stats_mv500",src:"ui"},return_type:"entry",request_options:{results_content_type:["experimental"]},query:{type:"group",logical_operator:"and",nodes:[i.query,{type:"terminal",service:"text_chem",parameters:{attribute:"chem_comp.formula_weight",operator:"range",value:{from:500,to:1200,include_lower:!0,include_upper:!0}}}]}},{request_info:{query_id:"ligand_complex_stats_loi",src:"ui"},return_type:"entry",request_options:{results_content_type:["experimental"]},query:{type:"group",logical_operator:"and",nodes:[{type:"terminal",service:"text",parameters:{attribute:"rcsb_nonpolymer_entity_annotation.comp_id",operator:"exists"}},{type:"terminal",service:"text",parameters:{attribute:"rcsb_nonpolymer_entity_annotation.type",operator:"exact_match",value:"SUBJECT_OF_INVESTIGATION"}}]}},{request_info:{query_id:"ligand_complex_stats_bird",src:"ui"},return_type:"entry",request_options:{results_content_type:["experimental"]},query:{type:"terminal",service:"text_chem",parameters:{attribute:"pdbx_reference_molecule.prd_id",operator:"exists"}}},{request_info:{query_id:"ligand_complex_stats_branched_entities",src:"ui"},return_type:"entry",request_options:{results_content_type:["experimental"]},query:{type:"terminal",service:"text",parameters:{attribute:"pdbx_entity_branch.type",operator:"exact_match",value:"oligosaccharide"}}}],c=["structures with any non-polymer small molecules","structures with non-polymer small molecules of 100-300 Da","structures with non-polymer small molecules of 300-500 Da","structures with non-polymer small molecules of 500-1200 Da","structures with author-designated Ligand/s of Interest","structures with a biologically interesting short oligomer or oligomer-like BIRD molecules","structures with branched entities of oligosaccharides"],u={request_options:{paginate:{start:0,rows:0},results_content_type:["experimental"],facets:[{filter:{type:"terminal",service:"text",parameters:{attribute:"exptl.method",operator:"exact_match",value:"ELECTRON MICROSCOPY"}},facets:[{filter:{type:"terminal",service:"text",parameters:{attribute:"pdbx_database_related.content_type",operator:"exact_match",value:"associated EM volume"}},facets:[{filter:{type:"terminal",service:"text",parameters:{attribute:"pdbx_database_related.db_name",operator:"exact_match",value:"EMDB"}},facets:[{name:"pdbx_database_related.db_id",aggregation_type:"cardinality",attribute:"pdbx_database_related.db_id"}]}]}]}]},return_type:"entry"},p={query:{type:"group",logical_operator:"and",nodes:[{type:"group",logical_operator:"and",nodes:[{type:"terminal",service:"text",parameters:{operator:"exact_match",value:"ELECTRON MICROSCOPY",attribute:"exptl.method"}},{type:"terminal",service:"text",parameters:{operator:"exact_match",value:"EMDB",attribute:"pdbx_database_related.db_name"}},{type:"terminal",service:"text",parameters:{operator:"exact_match",value:"associated EM volume",attribute:"pdbx_database_related.content_type"}}]}]},return_type:"entry",request_options:{results_content_type:["experimental"]}},m=[{key:"exptl-data-counts-info",title:"Experimental Data Counts Info",description:"Experimental Data Counts Info Description",return_type:"entry",facets:[{name:"rcsb_repository_holdings_current.repository_content_types",aggregation_type:"terms",attribute:"rcsb_repository_holdings_current.repository_content_types"}]}],d=e=>{const t={type:"group",logical_operator:"and",nodes:[{type:"terminal",service:"text",parameters:{attribute:"rcsb_repository_holdings_current.repository_content_types",operator:"exact_match",value:e}}]},r={};return r.query=t,r.return_type="entry",r.request_info={src:"ui",query_id:"stats"},encodeURIComponent(JSON.stringify(r))},y={return_type:"entry",request_options:{facets:[{name:"rcsb_entry_info.experimental_method",aggregation_type:"terms",attribute:"rcsb_entry_info.experimental_method",facets:[{name:"rcsb_entry_info.selected_polymer_entity_types",aggregation_type:"terms",attribute:"rcsb_entry_info.selected_polymer_entity_types"}]}],paginate:{start:0,rows:0}}};function _(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,l,o,i=[],s=!0,c=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=l.call(r)).done)&&(i.push(n.value),i.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}const b=e=>e instanceof Error?e.message:String(e);var f,g,v,x=r(4966);function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function w(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const N=["Protein (only)","Protein/Oligosaccharide","Protein/NA","Nucleic acid (only)","Other","Oligosaccharide (only)"],q=a.Ay.h1(f||(f=w(["\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 margin-bottom: 0;\n"]))),S=a.Ay.div(g||(g=w(["\n display: grid;\n grid-template-columns: minmax(80px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: 4px;\n margin-bottom: 4px;\n"]))),M=a.Ay.a(v||(v=w(["\n display: inline-block;\n min-width: 80px;\n text-align: right;\n"]))),I=e=>{let t=e.count,r=void 0===t?3:t;return n.createElement(n.Fragment,null,Array.from({length:r},(e,t)=>n.createElement(x.kD,{key:"summary-loading-row-".concat(t)})))},D=e=>[...e].sort((e,t)=>{var r,n;return Number(null!==(r=t.population)&&void 0!==r?r:0)-Number(null!==(n=e.population)&&void 0!==n?n:0)}),C=()=>{const e=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3;const t=(0,l.t)().settings,r=_((0,n.useState)([]),2),a=r[0],i=r[1],h=_((0,n.useState)([]),2),f=h[0],g=h[1],v=_((0,n.useState)(null),2),x=v[0],E=v[1],w=_((0,n.useState)([]),2),N=w[0],q=w[1],S=_((0,n.useState)(!0),2),M=S[0],I=S[1],D=_((0,n.useState)(null),2),C=D[0],U=D[1];return(0,n.useEffect)(()=>{let r=!1;return(async()=>{const n=Math.max(1,Math.floor(Number.isFinite(e)?e:3)),a=new Array(s.length);let l,_,h=null,f=null;const v=()=>{f&&!r&&g(((e,t)=>{const r=[];return e.forEach(e=>{"structure factors"===e.label?r.push({label:"have a structure factor file",population:e.population,searchUrl:d(e.label)}):"NMR restraints V1"===e.label?r.push({label:"have an NMR restraint file",population:e.population,searchUrl:d(e.label)}):"NMR chemical shifts"===e.label?r.push({label:"have a chemical shifts file",population:e.population,searchUrl:d(e.label)}):"Combined NMR data (NEF)"===e.label&&r.push({label:"have NMR unified data files (NEF and/or NMR-STAR format files)",population:e.population,searchUrl:d(e.label)})}),t&&r.push({label:t.label,population:t.population,searchUrl:encodeURIComponent(JSON.stringify(t.searchUrl))}),r})(f,null!=h?h:void 0))},x=()=>{void 0===l||void 0===_||r||(h={label:"PDB structures were determined using ".concat(_.toLocaleString("en-US")," 3DEM maps"),population:l,searchUrl:p},E(h),v())},w=m[0],N={return_type:w.return_type||"entry",request_options:{paginate:{rows:0},facets:w.facets}},S=y,M=s.map((e,n)=>({label:c[n],run:async()=>{var l;const s=await o(e,t);r||(a[n]={label:c[n],population:Number(null!==(l=s.total_count)&&void 0!==l?l:0),searchUrl:e},i(a.filter(Boolean)))}})),D=[{label:"experimental data counts",run:async()=>{var e,n;const a=await o(N,t);r||(f=null!==(e=null==a||null===(n=a.facets)||void 0===n||null===(n=n[0])||void 0===n?void 0:n.buckets)&&void 0!==e?e:[],v())}},{label:"summary holdings data",run:async()=>{var e,n;const a=await o(S,t);if(r)return;const l=null!==(e=null==a||null===(n=a.facets)||void 0===n||null===(n=n[0])||void 0===n?void 0:n.buckets)&&void 0!==e?e:[];q(l)}},M[0],{label:"EMDB-associated PDB structures",run:async()=>{var e;const n=await o(p,t);r||(l=Number(null!==(e=n.total_count)&&void 0!==e?e:0),x())}},{label:"unique 3DEM maps",run:async()=>{var e,n;const a=await o(u,t);r||(_=Number(null!==(e=null==a||null===(n=a.facets)||void 0===n||null===(n=n[0])||void 0===n?void 0:n.value)&&void 0!==e?e:0),x())}},...M.slice(1)].filter(e=>Boolean(e));let C=D.length;I(!0),U(null),i([]),g([]),E(null),await(async()=>{let e=0;const t=Math.min(n,D.length);if(0===t)return void I(!1);const a=Array.from({length:t},async()=>{for(;!r;){const t=e;e+=1;const n=D[t];if(!n)return;try{await n.run()}catch(e){r||U(t=>{const r="".concat(n.label,": ").concat(b(e));return t?"".concat(t,"; ").concat(r):r})}finally{r||(C-=1,0===C&&I(!1))}}});await Promise.all(a)})()})().catch(e=>{r||(U(b(e)),I(!1))}),()=>{r=!0}},[t,e]),{ligandInfo:a,exptlInfo:f,emCounts:x,holdingsChartData:N,loading:M,error:C}}(3),t=e.ligandInfo,r=e.exptlInfo,a=e.emCounts,i=e.holdingsChartData,h=e.loading,f=e.error,g=e=>encodeURIComponent(JSON.stringify(e||{})),v=Boolean(a),x=(0,n.useMemo)(()=>D(r),[r]),w=(0,n.useMemo)(()=>D(t),[t]),C=Math.max(0,s.length-t.length),U=(R=(0,n.useState)({columnIndex:1,direction:"desc"}),j=2,function(e){if(Array.isArray(e))return e}(R)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,l,o,i=[],s=!0,c=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=l.call(r)).done)&&(i.push(n.value),i.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return i}}(R,j)||function(e,t){if(e){if("string"==typeof e)return E(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(e,t):void 0}}(R,j)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),T=U[0],A=U[1],O=(e,t)=>({type:"terminal",service:"text",parameters:{attribute:e,operator:"exact_match",value:t}}),k=e=>"/search?request=".concat(g((e=>({query:1===e.length?e[0]:{type:"group",logical_operator:"and",nodes:e},return_type:"entry",request_info:{src:"ui",query_id:"stats"}}))(e))),B=e=>{A(t=>t.columnIndex===e?{columnIndex:e,direction:"desc"===t.direction?"asc":"desc"}:{columnIndex:e,direction:"desc"})},P=(0,n.useMemo)(()=>{const e=N.map(e=>{const t=i.map(t=>((e,t)=>{var r,n,a;const l=(null!==(r=null==e||null===(n=e.facets)||void 0===n||null===(n=n[0])||void 0===n?void 0:n.buckets)&&void 0!==r?r:[]).find(e=>e.label===t);return l?Number(null!==(a=l.population)&&void 0!==a?a:0):0})(t,e));return{molecularType:e,rowCounts:t,rowTotal:t.reduce((e,t)=>e+t,0)}}),t=T.columnIndex;return 0===t?[...e].sort((e,t)=>e.molecularType<t.molecularType?"asc"===T.direction?-1:1:e.molecularType>t.molecularType?"asc"===T.direction?1:-1:0):[...e].sort((e,r)=>{var n,a;const l=null!==(n=e.rowCounts[t-1])&&void 0!==n?n:0,o=null!==(a=r.rowCounts[t-1])&&void 0!==a?a:0;return"asc"===T.direction?l-o:o-l})},[i,T]);var R,j;return n.createElement("div",null,n.createElement(q,null,"PDB Data Distribution Summary"),f&&n.createElement("p",{style:{color:"red"}},f),n.createElement("div",{className:"table-responsive"},n.createElement("table",{className:"table table-condensed table-bordered dt-responsive nowrap",cellSpacing:0,width:"100%"},n.createElement("thead",null,n.createElement("tr",{className:"light-gray"},n.createElement("th",{onClick:()=>B(0),style:{cursor:"pointer"}},"Molecular Type",0===T.columnIndex?"desc"===T.direction?" ▼":" ▲":""),i.map((e,t)=>n.createElement("th",{key:t,className:"text-end",onClick:()=>B(t+1),style:{cursor:"pointer"}},e.label,T.columnIndex===t+1?"desc"===T.direction?" ▼":" ▲":"")),n.createElement("th",{className:"fw-bold text-end"},"Total"))),n.createElement("tbody",null,P.map(e=>{return n.createElement("tr",{key:e.molecularType},n.createElement("td",null,e.molecularType),e.rowCounts.map((t,r)=>{return n.createElement("td",{key:"".concat(e.molecularType,"-").concat(r),className:"text-end"},t>0?n.createElement("a",{href:(a=i[r].label,l=e.molecularType,k([O("rcsb_entry_info.experimental_method",a),O("rcsb_entry_info.selected_polymer_entity_types",l)]))},t.toLocaleString("en-US")):0);var a,l}),n.createElement("td",{className:"text-end"},n.createElement("a",{href:(t=e.molecularType,k([O("rcsb_entry_info.selected_polymer_entity_types",t)]))},e.rowTotal.toLocaleString("en-US"))));var t})),n.createElement("tfoot",null,n.createElement("tr",{className:"table-light fw-bold"},n.createElement("th",{scope:"row"},"Total"),i.map((e,t)=>{var r,a;return n.createElement("td",{key:t,className:"text-end"},n.createElement("a",{href:(a=e.label,k([O("rcsb_entry_info.experimental_method",a)]))},Number(null!==(r=e.population)&&void 0!==r?r:0).toLocaleString("en-US")))}),n.createElement("td",{className:"text-end"},i.reduce((e,t)=>{var r;return e+Number(null!==(r=t.population)&&void 0!==r?r:0)},0).toLocaleString("en-US")))))),n.createElement("div",{className:"row",style:{marginTop:"10px"}},n.createElement("div",{className:"col-lg-12 col-md-12 col-sm-12"},n.createElement("p",null,n.createElement("strong",null,"Multiple Methods:")," Atomic structures substantially underpinned by more than one experimental method currently supported by the PDB archive (NMR, 3DEM, or crystallography/diffraction) with or without some additional data provided by currently unsupported methods."),n.createElement("p",null,n.createElement("strong",null,"Integrative Methods:")," Atomic structures with all data coming from currently unsupported methods by the PDB, or only partially underpinned by an experimental method currently supported by the PDB, or partially/entirely non-atomic structures supported by the PDB-IHM."))),n.createElement("div",{className:"row"},n.createElement("div",{className:"col-lg-6 col-md-6 col-sm-12"},n.createElement("h4",null,"PDB Structures with Experimental Data"),n.createElement("div",{className:"list-group"},r&&r.length>0?n.createElement(n.Fragment,null,x.map((e,t)=>n.createElement(S,{key:t},n.createElement(M,{href:"/search?request=".concat("string"==typeof e.searchUrl?e.searchUrl:g(e.searchUrl))},Number(e.population).toLocaleString("en-US")),n.createElement("span",null,e.label))),h&&!v&&n.createElement(I,{count:1})):h?n.createElement(I,null):n.createElement("div",null,"No experimental data counts available."))),n.createElement("div",{className:"col-lg-6 col-md-6 col-sm-12"},n.createElement("h4",null,"PDB Structures with Small Molecule Data"),n.createElement("div",{className:"list-group"},t&&t.length>0?n.createElement(n.Fragment,null,w.map((e,t)=>n.createElement(S,{key:t},n.createElement(M,{href:"/search?request=".concat("string"==typeof e.searchUrl?e.searchUrl:g(e.searchUrl))},Number(e.population).toLocaleString("en-US")),n.createElement("span",null,e.label))),h&&C>0&&n.createElement(I,{count:Math.min(3,C)})):h?n.createElement(I,null):n.createElement("div",null,"No ligand data available.")))))}}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_rcsb_rcsb_statistics=self.webpackChunk_rcsb_rcsb_statistics||[]).push([[489],{8596(e,t,r){function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach(function(t){i(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function i(e,t,r){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 r=t.call(e,"string");if("object"!=typeof r)return r;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:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const o=r(3482),l=e=>Boolean(e&&"object"==typeof e&&!Array.isArray(e)),s=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),c=e=>{throw new Error(e)};function u(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"Chart";if(t.$ref)return u(e,r.$defs[t.$ref.split("/").pop()],r,n);if(t.anyOf)return void(t.anyOf.some(t=>{try{return u(e,t,r,n),!0}catch(e){return!1}})||c("".concat(n," has an invalid value.")));const a=t.type;("object"===a&&!l(e)||"array"===a&&!Array.isArray(e)||"integer"===a&&!Number.isInteger(e)||"number"===a&&("number"!=typeof e||!Number.isFinite(e))||"string"===a&&"string"!=typeof e||"boolean"===a&&"boolean"!=typeof e)&&c("".concat(n," must be ").concat(a,".")),t.enum&&!t.enum.includes(e)&&c("".concat(n," is not supported.")),"number"==typeof e&&(void 0!==t.minimum&&e<t.minimum||void 0!==t.maximum&&e>t.maximum)&&c("".concat(n," is outside the supported range.")),"string"==typeof e&&(t.minLength&&e.trim().length<t.minLength||t.maxLength&&e.length>t.maxLength||/[\u0000-\u0008\u000b\u000c\u000e-\u001f]/.test(e))&&c("".concat(n," has invalid text.")),Array.isArray(e)&&((t.minItems&&e.length<t.minItems||t.maxItems&&e.length>t.maxItems||t.uniqueItems&&new Set(e.map(e=>JSON.stringify(e))).size!==e.length)&&c("".concat(n," has an invalid number of items.")),e.forEach((e,a)=>u(e,t.items,r,"".concat(n,"[").concat(a,"]")))),l(e)&&((t.required||[]).forEach(t=>{s(e,t)||c("".concat(n,".").concat(t," is required."))}),Object.keys(e).forEach(a=>{s(t.properties||{},a)?u(e[a],t.properties[a],r,"".concat(n,".").concat(a)):!1===t.additionalProperties&&c("".concat(n,".").concat(a," is not supported."))}))}function m(e){u(e,o.specSchema);const t=JSON.parse(JSON.stringify(e)),r=o.dimensions[t.dimension];return!["line","area"].includes(t.chartType)||r.ordered&&"vertical"===t.orientation&&"labelAsc"===t.sort||c("Line and area charts require release year or resolution, vertical orientation, and ascending labels."),"area"===t.chartType&&"linear"!==t.scale&&c("Area charts require a linear scale for their zero baseline."),["pie","doughnut"].includes(t.chartType)&&(r.overlapping||1!==t.series.length||t.cumulative||"linear"!==t.scale)&&c("Pie and doughnut charts require a single non-overlapping series (release year or methodology), linear scale, and non-cumulative values."),!t.cumulative||"releaseYear"===t.dimension&&"labelAsc"===t.sort||c("Cumulative charts require release year in chronological order."),"percent"===t.measure&&"linear"!==t.scale&&c("Percentages require a linear scale."),new Set(t.series.map(e=>e.label)).size!==t.series.length&&c("Give each comparison series a different label."),[t.filters,...t.series.map(e=>e.filters)].forEach(e=>e.forEach(e=>{const t=o.filters[e.field];t.operators.includes(e.operator)||c("Unsupported operator for ".concat(t.label,".")),"in"===e.operator?(Array.isArray(e.value)||c("".concat(t.label," requires a list.")),e.value.forEach(e=>{"taxonomy"===t.kind?(!Number.isInteger(e)||e<=0)&&c("Taxonomy IDs must be positive integers."):("string"!=typeof e||t.values&&!t.values.includes(e)||"identifier"===t.kind&&!/^[A-Z0-9]{1,10}$/.test(e))&&c("Invalid value for ".concat(t.label,"."))})):("number"!=typeof e.value||e.value<t.minimum||e.value>t.maximum||"year"===t.kind&&!Number.isInteger(e.value))&&c("Invalid range for ".concat(t.label,"."))})),t.series.forEach(e=>{const r=[...t.filters,...e.filters];["releaseYear","resolution"].forEach(e=>{const t=r.filter(t=>t.field===e&&"gte"===t.operator).map(e=>e.value),n=r.filter(t=>t.field===e&&"lte"===t.operator).map(e=>e.value);t.length&&n.length&&Math.max(...t)>Math.min(...n)&&c("The ".concat(e," lower bound exceeds its upper bound."))}),"integrativeInput"===t.dimension&&r.some(e=>"methodology"===e.field&&!e.value.includes("integrative"))&&c("Integrative input charts cannot exclude integrative structures.")}),t}function d(e){const t=m(e);return a(a({},o.presentationDefaults),{},{borderWidth:["line","area"].includes(t.chartType)?2:1},t.presentation)}function p(e){const t=o.filters[e.field];let r=e.value;return"year"===t.kind&&(r="".concat(r,"-").concat("gte"===e.operator?"01-01":"12-31")),"taxonomy"===t.kind&&(r=r.map(String)),{type:"terminal",service:"text",parameters:{attribute:t.attribute,operator:{in:"in",gte:"greater_or_equal",lte:"less_or_equal"}[e.operator],value:r}}}function h(e){const t=new Set;return e.flatMap(r=>{const n=o.filters[r.field];if(!["number","year"].includes(n.kind))return[p(r)];if(t.has(r.field))return[];t.add(r.field);const i=e.filter(e=>e.field===r.field),l=i.filter(e=>"gte"===e.operator).map(e=>e.value),s=i.filter(e=>"lte"===e.operator).map(e=>e.value);if(!l.length||!s.length)return[p(a(a({},r),{},{operator:l.length?"gte":"lte",value:l.length?Math.max(...l):Math.min(...s)}))];const c=Math.max(...l),u=Math.min(...s);return[{type:"terminal",service:"text",parameters:{attribute:n.attribute,operator:"range",value:{from:"year"===n.kind?"".concat(c,"-01-01"):c,to:"year"===n.kind?"".concat(u,"-12-31"):u,include_lower:!0,include_upper:!0}}}]})}function g(e){const t=m(e),r=o.dimensions[t.dimension],n={name:"chart",aggregation_type:r.aggregation,attribute:r.attribute,min_interval_population:1};return"terms"===r.aggregation&&(n.max_num_intervals=1e3),"date_histogram"===r.aggregation&&(n.interval="year"),"histogram"===r.aggregation&&(n.interval=t.interval),t.series.map(e=>{const a=[...t.filters,...e.filters,...r.requiredFilter?[r.requiredFilter]:[]],i={return_type:"entry",request_options:{results_content_type:["experimental"],paginate:{start:0,rows:0},facets:[n]}};return a.length&&(i.query={type:"group",logical_operator:"and",nodes:h(a).map(e=>({type:"group",logical_operator:"and",nodes:[e]}))}),i})}function y(e){return"".concat(o.filters[e.field].label," ").concat("in"===e.operator?"is any of":"gte"===e.operator?"≥":"≤"," ").concat(Array.isArray(e.value)?e.value.join(", "):e.value)}function b(e){const t=[];return o.dimensions[e.dimension].overlapping&&t.push("An entry may occur in more than one category. Bucket counts must not be summed as a unique entry total."),e.series.length>1&&t.push("Comparison cohorts may overlap; each is counted independently."),"sourceOrganism"===e.dimension&&t.push("Source organisms are those recorded for any matching entry; they are not expression hosts. All source types are included."),"releaseYear"===e.dimension&&t.push("Counts describe the current archive by initial release year, not historical archive snapshots. The current year is incomplete."),e.cumulative&&t.push("Cumulative values begin at the earliest year included by the filters."),"area"===e.chartType&&t.push("Area series use a zero baseline and are not stacked; overlapping cohorts are counted independently."),"logarithmic"===e.scale&&t.push("Zero values are omitted from the logarithmic chart; the table retains them."),"percent"===e.measure&&t.push("The denominator is every matching entry in that series, including entries missing the chart attribute."),t}e.exports={catalog:o,validateSchema:u,validateChartSpec:m,getChartPresentation:d,buildChartRequests:g,buildChartDrilldownRequest:function(e,t,r){var n;const a=m(e);(!Number.isInteger(r)||r<0||r>=a.series.length)&&c("Select a valid chart series."),("string"!=typeof t||!t.trim()||t.length>300||/[\u0000-\u001f\u007f]/.test(t))&&c("Select a valid chart category.");const i={attribute:o.dimensions[a.dimension].attribute,operator:"exact_match",value:t};if("releaseYear"===a.dimension){(!/^\d{4}$/.test(t)||Number(t)<o.filters.releaseYear.minimum||Number(t)>o.filters.releaseYear.maximum)&&c("Select a valid release year.");const e="".concat(Number(t)+1,"-01-01");i.operator=a.cumulative?"less":"range",i.value=a.cumulative?e:{from:"".concat(t,"-01-01"),to:e,include_lower:!0,include_upper:!1}}else if("resolution"===a.dimension){const e=Number(t);(!/^(?:0|[1-9]\d*)(?:\.\d+)?$/.test(t)||!Number.isFinite(e)||e<0||e>o.filters.resolution.maximum||Math.abs(e/a.interval-Math.round(e/a.interval))>1e-8)&&c("Select a valid resolution interval."),i.operator="range",i.value={from:e,to:Number((e+a.interval).toPrecision(12)),include_lower:!0,include_upper:!1}}return{return_type:"entry",query:{type:"group",logical_operator:"and",nodes:[...(null===(n=g(a)[r].query)||void 0===n?void 0:n.nodes)||[],{type:"group",logical_operator:"and",nodes:[{type:"terminal",service:"text",parameters:i}]}]},request_options:{results_content_type:["experimental"],paginate:{start:0,rows:25}}}},describeFilter:y,describeChart:function(e){return m(e),"".concat(e.cumulative?"Cumulative ":"").concat("count"===e.measure?"PDB entry counts":"Percentage of matching PDB entries"," by ").concat(o.dimensions[e.dimension].label.toLowerCase(),"; ").concat(e.chartType," chart; ").concat(e.series.length," ").concat(1===e.series.length?"series":"comparison series",".")},chartWarnings:b,chartChanges:function(e,t){return e?(m(e),m(t),[...new Set([...Object.keys(e),...Object.keys(t)])].filter(r=>JSON.stringify(e[r])!==JSON.stringify(t[r])).flatMap(r=>{if("presentation"===r){const r=d(e),n=d(t),a={palette:"Color palette",legend:"Legend",grid:"Grid lines",lineStyle:"Line style",pointRadius:"Point radius",borderWidth:"Border width",barRadius:"Bar corner radius",doughnutCutout:"Doughnut cutout"},i=(e,t)=>"grid"===e?t?"shown":"hidden":"doughnutCutout"===e?"".concat(t,"%"):String(t);return Object.keys(n).filter(e=>r[e]!==n[e]).map(e=>"".concat(a[e],": ").concat(i(e,r[e])," → ").concat(i(e,n[e]),"."))}return"filters"===r?"Filters: ".concat(t.filters.length?t.filters.map(y).join("; "):"none","."):"series"===r?"Series: ".concat(t.series.map(e=>"".concat(e.label).concat(e.filters.length?" (".concat(e.filters.map(y).join("; "),")"):"")).join("; "),"."):"".concat(r,": ").concat(String(e[r])," → ").concat(String(t[r]))})):["Create a new chart."]},formatChartData:function(e,t){const r=m(e);Array.isArray(t)&&t.length===r.series.length||c("A response is required for every chart series.");const n=o.dimensions[r.dimension];let i=!1;const s=t.map((e,t)=>{var n;(!l(e)||!Number.isInteger(e.total_count)||e.total_count<0)&&c("The Search API did not return a valid entry count.");const a=null===(n=e.facets)||void 0===n||null===(n=n.find(e=>"chart"===e.name))||void 0===n?void 0:n.buckets;Array.isArray(a)||0===e.total_count||c("The Search API did not return the requested chart aggregation."),(a||[]).length>=1e3&&(i=!0);const o=new Map;return(a||[]).forEach(t=>{(!Number.isInteger(t.population)||t.population<0||t.population>e.total_count||!["string","number"].includes(typeof t.label)||String(t.label).length>300)&&c("The Search API returned an invalid chart bucket.");let n=String(t.label);if("releaseYear"===r.dimension){const e=n.match(/\d{4}/);e||c("The Search API returned an invalid release year."),n=e[0]}"resolution"===r.dimension&&((!Number.isFinite(Number(n))||Number(n)<0)&&c("The Search API returned an invalid resolution interval."),n=String(Number(Number(n).toPrecision(12)))),o.has(n)&&c("The Search API returned duplicate chart buckets."),o.set(n,t.population)}),{label:r.series[t].label,total:e.total_count,values:o}});let u=[...new Set(s.flatMap(e=>[...e.values.keys()]))];const d=u.every(e=>Number.isFinite(Number(e)));if(u.sort((e,t)=>d?Number(e)-Number(t):e.localeCompare(t)),"releaseYear"===r.dimension&&u.length){const e=Number(u[0]),t=Number(u[u.length-1]);t-e>200&&c("The Search API returned an unsupported year range."),u=Array.from({length:t-e+1},(t,r)=>String(e+r))}if("resolution"===r.dimension&&u.length){const e=Number(u[0]),t=Math.round((Number(u[u.length-1])-e)/r.interval)+1;t>1e3&&c("This resolution histogram exceeds 1,000 bins. Increase the bin width or narrow the resolution range."),u=Array.from({length:t},(t,n)=>String(Number((e+n*r.interval).toPrecision(12))))}const p=u.map(e=>({label:e,counts:s.map(t=>t.values.get(e)||0)}));if(r.cumulative){const e=s.map(()=>0);p.forEach(t=>{t.counts=t.counts.map((t,r)=>e[r]+=t)})}"countDesc"===r.sort&&p.sort((e,t)=>t.counts.reduce((e,t)=>e+t,0)-e.counts.reduce((e,t)=>e+t,0)||e.label.localeCompare(t.label));const h=!n.ordered,g=(h?p.slice(0,r.topN):p).map(e=>a(a({},e),{},{values:e.counts.map((e,t)=>"percent"===r.measure?s[t].total?100*e/s[t].total:0:e)})),y=b(r);return h&&p.length>g.length&&y.push("Showing ".concat(g.length," of ").concat(p.length).concat(i?"+":""," categories returned. Omitted categories are not combined into an invented “Other” count.")),i&&y.push("The category aggregation reached its 1,000-bucket limit. Narrow the filters for a more complete category listing."),["pie","doughnut"].includes(r.chartType)&&(i||g.length!==p.length)&&c("A pie or doughnut chart must show all categories. Increase the category limit or use a bar chart."),["pie","doughnut"].includes(r.chartType)&&g.reduce((e,t)=>e+t.counts[0],0)!==s[0].total&&c("A pie or doughnut chart requires complete, non-overlapping categories covering every matching entry. Use a bar chart for this population."),{rows:g,series:s.map(e=>({label:e.label,total:e.total})),warnings:y,retrievedAt:(new Date).toISOString(),categoryCount:p.length}}}},489(e,t,r){"use strict";r.r(t),r.d(t,{default:()=>Q});var n=r(9711),a=r(4062),i=r(8354),o=r(2917),l=r(5411),s=r(5042);const c=s.YrT,u=s.cO3,m=s.i5c,d=s.VSk,p=s.yGN,h=s.a4x,g=s.QPV,y=s.vQY;var b=r(9281),f=r(8596);function v(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function E(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?v(Object(r),!0).forEach(function(t){w(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):v(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function w(e,t,r){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 r=t.call(e,"string");if("object"!=typeof r)return r;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:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const S=e=>{const t=String(e);return'"'.concat((/^[\s]*[=+@-]|^[\t\r\n]/.test(t)?"'".concat(t):t).replace(/"/g,'""'),'"')};function C(e,t,r){const n=URL.createObjectURL(new Blob([e],{type:r})),a=document.createElement("a");a.href=n,a.download=t,a.click(),setTimeout(()=>URL.revokeObjectURL(n),0)}var O=r(8804),A=r(6619),N=r(9806);function P(e,t,r){const n=[];let a="";for(const i of t.split(/\s+/)){const t=a?"".concat(a," ").concat(i):i;for(a&&e.measureText(t).width>r?(n.push(a),a=i):a=t;e.measureText(a).width>r&&a.length>1;){let t=a.length-1;for(;t>1&&e.measureText(a.slice(0,t)).width>r;)t--;n.push(a.slice(0,t)),a=a.slice(t)}}return a.trim()&&n.push(a.trim()),n}function x(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const a=document.createElement("canvas"),i=a.getContext("2d");if(!i)throw new Error("PNG export is not supported in this browser.");const o=e.width/(e.clientWidth||e.width),l=Math.round(20*o),s=Math.max(e.width,Math.round(400*o)),c=s-2*l;i.font="600 ".concat(18*o,"px sans-serif");const u=P(i,t.title,c);i.font="".concat(11*o,"px sans-serif");const m=P(i,"Source: RCSB PDB Search API · Retrieved ".concat(new Date(r.retrievedAt).toISOString().slice(0,10)," · Released PDB entries only.").concat(n?" ".concat(n):""),c),d=25*u.length*o,p=16*m.length*o;a.width=s,a.height=Math.ceil(e.height+d+p+4*l),i.fillStyle="#ffffff",i.fillRect(0,0,a.width,a.height),i.fillStyle="#243746",i.font="600 ".concat(18*o,"px sans-serif"),i.textBaseline="top",u.forEach((e,t)=>i.fillText(e,l,l+25*t*o));const h=2*l+d;return i.drawImage(e,(s-e.width)/2,h),i.fillStyle="#526675",i.font="".concat(11*o,"px sans-serif"),m.forEach((t,r)=>i.fillText(t,l,h+e.height+l+16*r*o)),a.toDataURL("image/png",1)}var k=r(2329);function j(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?j(Object(r),!0).forEach(function(t){I(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):j(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function I(e,t,r){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 r=t.call(e,"string");if("object"!=typeof r)return r;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:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const T={bar:"Bar",line:"Line",area:"Area",pie:"Pie",doughnut:"Doughnut"},R={accessible:["#0072b2","#e69f00","#009e73","#cc79a7","#56b4e9","#d55e00","#f0e442","#000000"],warm:["#b83b32","#e77932","#a54f73","#d4a02e","#7c3e58","#dc6b68","#914b28","#f0bb6a"],cool:["#286f9e","#279c95","#625d9d","#68a6c1","#365f73","#758eaf","#397f64","#9abcc7"],monochrome:["#253f56","#49657b","#6f879a","#8da1b1","#b1c0cc","#334e65","#5b758a","#8196a7"]},D=e=>["pie","doughnut"].includes(e.chartType),q=e=>"bar"===e.chartType&&"horizontal"===e.orientation?"y":"x",L=(e,t)=>"resolution"===e.dimension?"".concat(t,"–").concat(Number((Number(t)+e.interval).toPrecision(12))," Å"):t;function B(e,t){return(0,f.validateChartSpec)(_(_(_({},e),{},{chartType:t},["line","area"].includes(t)?{orientation:"vertical"}:{}),["pie","doughnut","area"].includes(t)?{scale:"linear"}:{}))}function z(e,t){return Object.keys(T).filter(r=>{try{const n=B(e,r);return!D(n)||1===t.series.length&&t.rows.length>0&&t.categoryCount===t.rows.length&&t.rows.length<1e3&&t.rows.reduce((e,t)=>e+t.counts[0],0)===t.series[0].total&&t.series[0].total>0}catch(e){return!1}})}function F(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function M(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?F(Object(r),!0).forEach(function(t){Y(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):F(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function Y(e,t,r){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 r=t.call(e,"string");if("object"!=typeof r)return r;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:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function U(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,l=[],s=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return $(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?$(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}A.t1.register(A.PP,A.kc,A.OJ,A.E8,A.No,A.Bs,A.FN,A.m_,A.s$);const J=[A.dN,N.Ay];function W(e){var t;let r=e.spec,o=e.data,s=e.preview,c=void 0!==s&&s,u=e.onSpecChange,m=e.disabled,d=void 0!==m&&m,p=e.readOnly,v=void 0!==p&&p;const E=(0,b.t)().settings,w=(0,n.useRef)(null),A=U((0,n.useState)(!1),2),N=A[0],P=A[1],j=U((0,n.useState)(r),2),I=j[0],F=j[1],Y=U((0,n.useState)(""),2),$=Y[0],W=Y[1],G=U((0,n.useState)(null),2),V=G[0],Z=G[1],K=U((0,n.useState)(""),2),H=K[0],X=K[1],Q=U((0,n.useState)(0),2),ee=Q[0],te=Q[1],re=U((0,n.useState)(null),2),ne=re[0],ae=re[1],ie=(0,n.useRef)({active:!1,suppressClick:!1});(0,n.useEffect)(()=>{F(r),W("")},[r]),(0,n.useEffect)(()=>{Z(null),X(""),te(0)},[o]);const oe=(0,f.getChartPresentation)(I),le=I.categoryLabel||f.catalog.dimensions[I.dimension].label,se="y"===q(I),ce=D(I),ue=!ce&&o.rows.length>1,me=["line","area"].includes(I.chartType),de="".concat(I.chartType,"-").concat(I.orientation,"-").concat(I.scale,"-").concat(I.dimension,"-").concat(o.retrievedAt),pe=(null==ne?void 0:ne.key)===de?{min:ne.min,max:ne.max}:null;(0,n.useEffect)(()=>{ae(null),ie.current={active:!1,suppressClick:!1}},[de]);const he=e=>{if(!d&&!v)try{const t=(0,f.validateChartSpec)(e(I));if(!z(t,o).includes(t.chartType))throw new Error("This chart type needs a complete, non-overlapping population. Choose a bar chart.");null==u||u(t),F(t),W("")}catch(e){W(e instanceof Error?e.message:"This chart setting is not supported.")}},ge=e=>he(t=>M(M({},t),{},{presentation:M(M({},t.presentation),e)})),ye=(e,t)=>{e<0||e>=o.rows.length||t<0||t>=o.series.length||(Z({row:e,series:t}),X(String(e)),te(t))},be=e=>{var t,r;if(e!==w.current)return;const n=null===(t=e.scales)||void 0===t?void 0:t[q(I)];ae(null!==(r=e.isZoomedOrPanned)&&void 0!==r&&r.call(e)&&n?{min:n.min,max:n.max,key:de}:null)},fe=function(e,t,r){const n=(0,f.getChartPresentation)(e),a="default"===n.palette?r:R[n.palette],i=a.length?a:R.accessible;return{labels:t.rows.map(t=>L(e,t.label)),datasets:t.series.map((r,a)=>{var o;const l=i[a%i.length];return{label:r.label,data:t.rows.map(t=>"logarithmic"===e.scale&&0===t.values[a]?null:t.values[a]),backgroundColor:D(e)?t.rows.map((e,t)=>i[t%i.length]):"area"===e.chartType?(0,k.c)(l).alpha(.25).rgbString():l,borderColor:l,borderWidth:n.borderWidth,borderRadius:n.barRadius,pointRadius:void 0===(null===(o=e.presentation)||void 0===o?void 0:o.pointRadius)&&t.rows.length>40?1:n.pointRadius,pointHitRadius:8,pointHoverRadius:Math.max(4,n.pointRadius+1),tension:"smooth"===n.lineStyle?.15:0,stepped:"stepped"===n.lineStyle,fill:"area"===e.chartType&&"origin"}})}}(I,o,E.colorScheme),ve=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=(0,f.getChartPresentation)(e),a=q(e),i="x"===a?"y":"x",o=e.categoryLabel||f.catalog.dimensions[e.dimension].label,l=e.valueLabel||("percent"===e.measure?"Matching PDB entries (%)":"Number of PDB entries"),s=D(e),c=!s&&t.rows.length>1,u=e=>{var t;let n=e.chart;return null===(t=r.onGestureComplete)||void 0===t?void 0:t.call(r,n)};return _(_({responsive:!0,maintainAspectRatio:!1,animation:!1,indexAxis:a,onClick:r.onSelect},"doughnut"===e.chartType?{cutout:"".concat(n.doughnutCutout,"%")}:{}),{},{plugins:_({legend:{display:"hidden"!==n.legend&&("auto"!==n.legend||s||t.series.length>1),position:"auto"===n.legend||"hidden"===n.legend?"bottom":n.legend},tooltip:{callbacks:{label:t=>"".concat(t.dataset.label,": ").concat(Number(t.raw).toLocaleString(void 0,{maximumFractionDigits:2})).concat("percent"===e.measure?"%":" entries")}}},c?{zoom:{limits:{[a]:{min:0,max:t.rows.length-1,minRange:1}},pan:{enabled:!0,mode:a,modifierKey:"shift",threshold:10,onPanStart:r.onGestureStart,onPanComplete:u},zoom:{mode:a,wheel:{enabled:!0,modifierKey:"ctrl",speed:.1},pinch:{enabled:!0},drag:{enabled:!1},onZoomStart:r.onGestureStart,onZoomComplete:u}}}:{})},s?{}:{scales:{[i]:{type:e.scale,beginAtZero:"linear"===e.scale,grid:{display:n.grid},title:{display:!0,text:l}},[a]:{type:"category",grid:{display:n.grid},title:{display:!0,text:o},ticks:{autoSkip:"x"===a,maxRotation:55}}}})}(I,o,{onSelect:(e,t,r)=>{var n,a,i;ie.current.active||ie.current.suppressClick||null!==(n=r.isZoomingOrPanning)&&void 0!==n&&n.call(r)||null!==(a=e.native)&&void 0!==a&&a.ctrlKey||null!==(i=e.native)&&void 0!==i&&i.shiftKey||t.length&&ye(t[0].index,t[0].datasetIndex)},onGestureStart:()=>{ie.current={active:!0,suppressClick:!0}},onGestureComplete:e=>{ie.current.active=!1,be(e)}});pe&&!ce&&Object.assign(ve.scales[q(I)],pe);const Ee=e=>{w.current&&(e?w.current.zoom({[q(I)]:e},"none"):w.current.resetZoom("none"),be(w.current))};let we=null,Se="";try{V&&(we=function(e,t,r,n){if(!Number.isInteger(r)||!Number.isInteger(n)||r<0||n<0||r>=t.rows.length||n>=t.series.length)return null;const a=t.rows[r],i=t.series[n],o=(0,f.buildChartDrilldownRequest)(e,a.label,n);return{label:"".concat(e.cumulative?"Through ":"").concat(L(e,a.label)),series:i.label,count:a.counts[n],value:a.values[n],total:i.total,href:"/search?request=".concat(encodeURIComponent(JSON.stringify(o)))}}(I,o,V.row,V.series))}catch(e){Se=e instanceof Error?e.message:"Matching structures are not available for this category."}const Ce=me?O.N1:"doughnut"===I.chartType?O.nu:"pie"===I.chartType?O.Fq:O.yP;return n.createElement("section",{className:"ai-chart-result".concat(c?" ai-chart-preview":""),"aria-label":c?"Proposed chart preview":"Applied chart"},n.createElement("div",{className:"ai-chart-result-heading"},n.createElement("div",null,n.createElement("div",{className:"ai-chart-eyebrow"},c?"Proposed chart · not yet applied":"Applied chart"),n.createElement("h2",null,I.title)),n.createElement(a.A,{size:"sm",variant:"outline-secondary",onClick:()=>{P(!N),ae(null)}},N?n.createElement(y,null):n.createElement(g,null)," ",N?"Chart":"Data table")),n.createElement("div",{className:"ai-chart-totals"},o.series.map(e=>n.createElement("span",{key:e.label},n.createElement("strong",null,e.total.toLocaleString())," matching entries · ",e.label))),n.createElement("details",{className:"ai-chart-customize"},n.createElement("summary",null,"Customize chart"),n.createElement("fieldset",{disabled:d||v},n.createElement("div",{className:"ai-chart-style-grid"},n.createElement("label",null,"Chart type",n.createElement(l.A.Select,{size:"sm",value:I.chartType,onChange:e=>he(t=>B(t,e.target.value))},z(I,o).map(e=>n.createElement("option",{key:e,value:e},T[e])))),n.createElement("label",null,"Color palette",n.createElement(l.A.Select,{size:"sm",value:oe.palette,onChange:e=>ge({palette:e.target.value})},["default","accessible","warm","cool","monochrome"].map(e=>n.createElement("option",{key:e,value:e},e[0].toUpperCase()+e.slice(1))))),n.createElement("label",null,"Legend",n.createElement(l.A.Select,{size:"sm",value:oe.legend,onChange:e=>ge({legend:e.target.value})},["auto","top","bottom","left","right","hidden"].map(e=>n.createElement("option",{key:e,value:e},e[0].toUpperCase()+e.slice(1))))),!ce&&n.createElement("label",null,"Value scale",n.createElement(l.A.Select,{size:"sm",value:I.scale,onChange:e=>he(t=>M(M({},t),{},{scale:e.target.value}))},n.createElement("option",{value:"linear"},"Linear"),n.createElement("option",{value:"logarithmic",disabled:"percent"===I.measure||"area"===I.chartType||!o.rows.some(e=>e.values.some(e=>e>0))},"Logarithmic"))),"bar"===I.chartType&&n.createElement("label",null,"Orientation",n.createElement(l.A.Select,{size:"sm",value:I.orientation,onChange:e=>he(t=>M(M({},t),{},{orientation:e.target.value}))},n.createElement("option",{value:"vertical"},"Vertical"),n.createElement("option",{value:"horizontal"},"Horizontal"))),!ce&&n.createElement("label",{className:"ai-chart-grid-toggle"},n.createElement("input",{type:"checkbox",checked:oe.grid,onChange:e=>ge({grid:e.target.checked})})," Show grid lines"),me&&n.createElement(n.Fragment,null,n.createElement("label",null,"Line style",n.createElement(l.A.Select,{size:"sm",value:oe.lineStyle,onChange:e=>ge({lineStyle:e.target.value})},n.createElement("option",{value:"straight"},"Straight"),n.createElement("option",{value:"smooth"},"Smooth"),n.createElement("option",{value:"stepped"},"Stepped"))),n.createElement("label",null,"Point radius",n.createElement(l.A.Control,{size:"sm",type:"number",min:0,max:8,step:1,value:void 0===(null===(t=I.presentation)||void 0===t?void 0:t.pointRadius)&&o.rows.length>40?1:oe.pointRadius,onChange:e=>ge({pointRadius:Number(e.target.value)})}))),n.createElement("label",null,"Border width",n.createElement(l.A.Control,{size:"sm",type:"number",min:1,max:5,step:1,value:oe.borderWidth,onChange:e=>ge({borderWidth:Number(e.target.value)})})),"bar"===I.chartType&&n.createElement("label",null,"Bar corner radius",n.createElement(l.A.Control,{size:"sm",type:"number",min:0,max:12,step:1,value:oe.barRadius,onChange:e=>ge({barRadius:Number(e.target.value)})})),"doughnut"===I.chartType&&n.createElement("label",null,"Doughnut hole (%)",n.createElement(l.A.Control,{size:"sm",type:"number",min:20,max:85,step:1,value:oe.doughnutCutout,onChange:e=>ge({doughnutCutout:Number(e.target.value)})})))),n.createElement("p",null,v?"Customize the active preview or discard it before changing this previous chart.":d?"Chart settings are paused while your request is running.":"Changes update this chart immediately without an AI request. Available chart types follow the data’s counting and ordering rules.")),$&&n.createElement(i.A,{variant:"danger"},$),!N&&ue&&n.createElement("div",{className:"ai-chart-zoom"},n.createElement(a.A,{size:"sm",variant:"outline-secondary",onClick:()=>Ee(1.4)},"Zoom in"),n.createElement(a.A,{size:"sm",variant:"outline-secondary",onClick:()=>Ee(.7)},"Zoom out"),n.createElement(a.A,{size:"sm",variant:"outline-secondary",onClick:()=>Ee(),disabled:!pe},"Reset zoom"),n.createElement("small",null,"Ctrl + wheel or pinch to zoom categories. Shift + drag to pan. Values and totals do not change.")),o.rows.length?N?n.createElement("div",{className:"ai-chart-table"},n.createElement("table",{className:"table table-striped table-sm"},n.createElement("caption",null,"Live PDB entry counts. ","percent"===I.measure?"Percentages use each series total as the denominator.":""," Select a value to inspect matching structures."),n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",{scope:"col"},le),o.series.map(e=>n.createElement("th",{scope:"col",key:e.label},e.label)))),n.createElement("tbody",null,o.rows.map((e,t)=>n.createElement("tr",{key:e.label},n.createElement("th",{scope:"row"},L(I,e.label)),e.values.map((r,a)=>n.createElement("td",{key:a},n.createElement("button",{type:"button",className:"ai-chart-cell","aria-label":"Inspect ".concat(L(I,e.label),", ").concat(o.series[a].label),onClick:()=>ye(t,a)},r.toLocaleString(void 0,{maximumFractionDigits:2}),"percent"===I.measure?"% (".concat(e.counts[a].toLocaleString()," entries)"):"")))))))):n.createElement("div",{onPointerDownCapture:e=>{ie.current.active||e.ctrlKey||e.shiftKey||(ie.current.suppressClick=!1)},style:{height:se?Math.min(900,Math.max(340,25*o.rows.length+100)):400}},n.createElement(Ce,{key:de,ref:w,data:fe,options:ve,plugins:ce?[]:J})):n.createElement("div",{className:"ai-chart-empty"},"No entries have chart values for these filters. Refine the request to broaden the population."),o.rows.length>0&&n.createElement("div",{className:"ai-chart-inspect"},n.createElement("p",null,"Click a chart value or choose a category to inspect its PDB entries."),n.createElement("div",{className:"ai-chart-inspect-controls"},n.createElement("label",null,"Inspect category",n.createElement(l.A.Select,{size:"sm",value:H,onChange:e=>{X(e.target.value),e.target.value?ye(Number(e.target.value),ee):Z(null)}},n.createElement("option",{value:""},"Choose a category…"),o.rows.map((e,t)=>n.createElement("option",{key:e.label,value:t},L(I,e.label))))),o.series.length>1&&n.createElement("label",null,"Inspect series",n.createElement(l.A.Select,{size:"sm",value:ee,onChange:e=>{te(Number(e.target.value)),H&&ye(Number(H),Number(e.target.value))}},o.series.map((e,t)=>n.createElement("option",{key:e.label,value:t},e.label))))),we&&n.createElement("div",{className:"ai-chart-selection",role:"status"},n.createElement("strong",null,we.label),n.createElement("p",null,we.series,": ",we.count.toLocaleString()," matching PDB entries","percent"===I.measure?" (".concat(we.value.toLocaleString(void 0,{maximumFractionDigits:2}),"% of ").concat(we.total.toLocaleString()," matching entries)"):"",".","resolution"===I.dimension?" This bin includes its lower bound and excludes its upper bound.":""),n.createElement("a",{href:we.href,target:"_blank",rel:"noopener noreferrer"},"View matching structures")),Se&&n.createElement(i.A,{variant:"warning"},Se)),n.createElement("div",{className:"ai-chart-export-row"},n.createElement(a.A,{size:"sm",variant:"outline-secondary",onClick:()=>C(function(e,t){return[[e.categoryLabel||"Category",...t.series.flatMap(t=>["".concat(t.label,": entry count"),..."percent"===e.measure?["".concat(t.label,": percent of ").concat(t.total," matching entries")]:[]])],...t.rows.map(t=>[t.label,...t.counts.flatMap((r,n)=>[r,..."percent"===e.measure?[t.values[n]]:[]])])].map(e=>e.map(S).join(",")).join("\r\n")}(I,o),"pdb-chart-data.csv","text/csv;charset=utf-8")},n.createElement(h,null)," CSV"),n.createElement(a.A,{size:"sm",variant:"outline-secondary",onClick:()=>C(JSON.stringify({chart:I,data:o,searchRequests:(0,f.buildChartRequests)(I),view:{categoryAxis:ce?null:q(I),bounds:pe}},null,2),"pdb-chart.json","application/json")},n.createElement(h,null)," Chart + data JSON"),!N&&o.rows.length>0&&n.createElement(a.A,{size:"sm",variant:"outline-secondary",onClick:()=>{if(!w.current)return;const e=document.createElement("a");e.href=pe?x(w.current.canvas,I,o,"Zoomed view; full data available in CSV/JSON."):x(w.current.canvas,I,o),e.download="pdb-chart.png",e.click()}},n.createElement(h,null)," PNG"),n.createElement("span",null,"Retrieved ",new Date(o.retrievedAt).toLocaleString())),n.createElement("p",{className:"ai-chart-export-scope"},"PNG captures the visible chart view. CSV and JSON include the full data."),n.createElement("details",{className:"ai-chart-provenance"},n.createElement("summary",null,"Data source, filters, and counting rules"),n.createElement("p",null,"Live ",n.createElement("a",{href:"https://search.rcsb.org/#faceted-queries",target:"_blank",rel:"noopener noreferrer"},"RCSB PDB Search API"),". Released PDB entries only; computed models excluded. Missing attribute values are not a category."),n.createElement("p",null,I.filters.length?I.filters.map(f.describeFilter).join("; "):"No population filters."),I.series.map(e=>n.createElement("p",{key:e.label},n.createElement("strong",null,e.label,":")," ",e.filters.length?e.filters.map(f.describeFilter).join("; "):"No additional cohort filters.")),o.warnings.length>0&&n.createElement("ul",null,o.warnings.map(e=>n.createElement("li",{key:e},e))),n.createElement("details",null,n.createElement("summary",null,"Reproducible Search API requests"),n.createElement("pre",null,JSON.stringify((0,f.buildChartRequests)(I),null,2)))))}function G(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function V(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?G(Object(r),!0).forEach(function(t){Z(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):G(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function Z(e,t,r){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 r=t.call(e,"string");if("object"!=typeof r)return r;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:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function K(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,l=[],s=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return H(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?H(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}const X=[{title:"Track growth by experimental method",prompt:"Compare cumulative PDB growth since 2000 for X-ray diffraction, electron microscopy, and solution NMR as an area chart."},{title:"Follow an archive trend",prompt:"Compare annual releases of X-ray and electron microscopy structures since 2015 as a line chart."},{title:"Investigate integrative structures",prompt:"Chart the input data types used in integrative PDB structures."},{title:"Explore resolution distributions",prompt:"Show X-ray structure resolution from 0 to 4 angstroms as a vertical bar histogram with 0.5 angstrom bins."},{title:"Compare structure methodologies",prompt:"Compare experimental and integrative structures in the current PDB archive as a doughnut chart, using an accessible color palette."}];function Q(){const e=function(e){const t=e.aiCommands||("undefined"!=typeof window?window.__RCSB_AI_COMMANDS__:void 0);return t&&"function"==typeof t.execute&&"function"==typeof t.getStatus?t:void 0}((0,b.t)().settings.config),t=K((0,n.useState)(null),2),r=t[0],s=t[1],h=K((0,n.useState)([]),2),g=h[0],y=h[1],v=K((0,n.useState)(""),2),w=v[0],S=v[1],C=K((0,n.useState)(null),2),O=C[0],A=C[1],N=K((0,n.useState)(null),2),P=N[0],x=N[1],k=K((0,n.useState)([]),2),j=k[0],_=k[1],I=K((0,n.useState)(!1),2),T=I[0],R=I[1],D=K((0,n.useState)("Interpreting your chart request…"),2),q=D[0],L=D[1],B=K((0,n.useState)(""),2),z=B[0],F=B[1],M=(0,n.useRef)(null),Y=(0,n.useRef)(0),U=(0,n.useRef)(null),$=(0,n.useRef)(null),J=(0,n.useRef)(null);(0,n.useEffect)(()=>{var t;let r=!0;const n=e=>{if(!r)return;const t=JSON.stringify([e.connected,e.provider,e.model,e.connectionId]);var n;null!==J.current&&t!==J.current&&(Y.current+=1,null===(n=M.current)||void 0===n||n.abort(),M.current=null,R(!1),A(null),_([]),F(e.connected?"Your AI connection or model changed. Prepare a new preview before applying it.":"Reconnect your AI provider in AI Settings. Your applied chart has not changed.")),J.current=t,s(e)},a=()=>null==e?void 0:e.getStatus().then(n).catch(()=>n({connected:!1})),i=null==e||null===(t=e.subscribe)||void 0===t?void 0:t.call(e,n);return a(),window.addEventListener("focus",a),()=>{var e;r=!1,null==i||i(),window.removeEventListener("focus",a),Y.current+=1,null===(e=M.current)||void 0===e||e.abort()}},[e]),(0,n.useEffect)(()=>{var e,t;null===(e=U.current)||void 0===e||null===(t=e.scrollTo)||void 0===t||t.call(e,{top:g.length?U.current.scrollHeight:0,behavior:g.length?"smooth":"auto"})},[g,T,j]);const G=async function(){const t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:w).trim();if(!t||t.length>4e3||T||M.current||!e||null==r||!r.connected)return;const n=++Y.current,a=new AbortController;M.current=a;const i=[...g,{role:"user",content:t}].slice(-15);y(i),S(""),_([]),F(""),R(!0),L("Interpreting your chart request…");try{const t=function(e){var t,r;if(!e||!e.ok||!["ready","clarification"].includes(e.status)||"string"!=typeof e.message)throw new Error("The AI service returned an incomplete chart response. Your current chart has not changed.");if("clarification"===e.status){if(!Array.isArray(e.questions)||e.questions.length>4||e.questions.some(e=>"string"!=typeof e.question||e.options&&(!Array.isArray(e.options)||e.options.length>8||e.options.some(e=>"string"!=typeof e))))throw new Error("The AI service returned an invalid clarification. Please rephrase your request.");return e}if("configureChart"!==(null===(t=e.command)||void 0===t?void 0:t.action))throw new Error("The AI service returned an unsupported command.");const n=(0,f.validateChartSpec)(e.command.spec),a=null===(r=e.preview)||void 0===r?void 0:r.chartData;if(!a||!Array.isArray(a.rows)||a.rows.length>1e3||!Array.isArray(a.series)||a.series.length!==n.series.length||!Array.isArray(a.warnings)||a.warnings.length>20||a.warnings.some(e=>"string"!=typeof e||e.length>1e3)||!Number.isInteger(a.categoryCount)||a.categoryCount<a.rows.length||!Number.isFinite(Date.parse(a.retrievedAt)))throw new Error("Live chart data was not returned. Your current chart has not changed.");if(a.series.some((e,t)=>e.label!==n.series[t].label||!Number.isInteger(e.total)||e.total<0)||a.rows.some(e=>"string"!=typeof e.label||!Array.isArray(e.counts)||e.counts.length!==a.series.length||!Array.isArray(e.values)||e.values.length!==a.series.length||e.counts.some(e=>!Number.isInteger(e)||e<0)||e.values.some(e=>!Number.isFinite(e)||e<0)))throw new Error("Live chart data did not pass validation. Your current chart has not changed.");if(new Set(a.rows.map(e=>e.label)).size!==a.rows.length||a.rows.some(e=>e.counts.some((t,r)=>t>a.series[r].total||Math.abs(e.values[r]-("percent"===n.measure?a.series[r].total?100*t/a.series[r].total:0:t))>1e-6)))throw new Error("Chart values do not match the validated entry counts.");return E(E({},e),{},{command:{action:"configureChart",spec:n}})}(await e.execute({action:"configureChart",messages:i,context:{currentChart:(null==P?void 0:P.command.spec)||null,pendingChart:(null==O?void 0:O.command.spec)||null},previousCommand:(null==O?void 0:O.command)||(null==P?void 0:P.command)||null},{signal:a.signal,onProgress:e=>{if(n!==Y.current||a.signal.aborted)return;const t={planning:"Interpreting your chart request…",lookup:"Looking up PDB metadata…",building:"Preparing the chart specification…",validating:"Validating the chart and loading live PDB counts…"};t[e]&&L(t[e])}}));if(n!==Y.current||a.signal.aborted)return;y([...i,{role:"assistant",content:t.message}]),_(t.questions||[]),"ready"===t.status&&A({command:t.command,data:t.preview.chartData,preview:t.preview})}catch(e){if(n!==Y.current||a.signal.aborted)return;F(e instanceof Error?e.message:"The chart could not be prepared. Your current chart has not changed.")}finally{n===Y.current&&(R(!1),M.current=null)}},Z=()=>{var e;Y.current+=1,null===(e=M.current)||void 0===e||e.abort(),M.current=null,R(!1),F("Request cancelled. Your current chart and previous proposal have not changed.")},H=(null==e?void 0:e.settingsUrl)||"/search/ai-settings",Q=Boolean(e&&(null==r?void 0:r.connected)),ee=O||P,te=O?(0,f.chartChanges)((null==P?void 0:P.command.spec)||null,O.command.spec):[];return n.createElement("article",{className:"ai-chart-workspace"},n.createElement("header",{className:"ai-chart-page-heading"},n.createElement("div",null,n.createElement("h1",null,"AI Powered Chart Builder"),n.createElement("p",null,"Describe a question. Review a chart grounded in live PDB data.")),n.createElement(a.A,{variant:"outline-secondary",href:H},n.createElement(d,null)," AI Settings")),!Q&&n.createElement(i.A,{variant:"info",className:"ai-chart-connect"},e&&null===r?"Checking your AI connection…":n.createElement(n.Fragment,null,"Connect a provider in ",n.createElement("a",{href:H},"AI Settings")," to create and refine charts. The chart builder uses the same connection as the AI Query Builder."),!e&&n.createElement("div",{className:"small mt-1"},"AI commands are available when this app is hosted in a configured Sierra environment.")),n.createElement("div",{className:"ai-chart-layout"},n.createElement("section",{className:"ai-chart-chat","aria-label":"Chart conversation"},n.createElement("div",{className:"ai-chart-panel-heading"},n.createElement("strong",null,"Build a chart"),n.createElement(a.A,{variant:"link",size:"sm",onClick:()=>{var e;Z(),y([]),A(null),x(null),_([]),S(""),F(""),null===(e=$.current)||void 0===e||e.focus()},disabled:!g.length&&!P},n.createElement(u,null)," Start over")),n.createElement("div",{ref:U,className:"ai-chart-conversation","aria-live":"polite",role:"region","aria-label":"Chart conversation and examples",tabIndex:0},!g.length&&n.createElement(n.Fragment,null,n.createElement("p",{className:"ai-chart-welcome"},"What would you like to learn about the PDB archive?"),n.createElement("p",{className:"ai-chart-muted"},"Compare methods, organisms, ligands, release-year trends, resolution distributions, or integrative input data. Start with an example or ask your own question."),n.createElement("div",{className:"ai-chart-examples"},X.map(e=>n.createElement("button",{key:e.title,onClick:()=>{var t;S(e.prompt),null===(t=$.current)||void 0===t||t.focus()}},n.createElement("strong",null,e.title),n.createElement("span",null,e.prompt))))),g.map((e,t)=>n.createElement("div",{key:t,className:"ai-chart-message ai-chart-message-".concat(e.role)},n.createElement("span",{className:"visually-hidden"},"user"===e.role?"You":"AI",": "),e.content)),j.map((e,t)=>{var r;return n.createElement("div",{key:t,className:"ai-chart-question"},n.createElement("strong",null,e.question),n.createElement("div",null,null===(r=e.options)||void 0===r?void 0:r.map(t=>n.createElement(a.A,{key:t,size:"sm",variant:"outline-primary",disabled:T||!Q,onClick:()=>G("".concat(e.question,"\n").concat(t))},t))))}),T&&n.createElement("div",{role:"status",className:"ai-chart-wait"},n.createElement(o.A,{animation:"border",size:"sm"}),n.createElement("span",null,q))),z&&n.createElement(i.A,{variant:"danger",className:"m-3 mb-0",dismissible:!0,onClose:()=>F("")},z),n.createElement(l.A,{className:"ai-chart-composer",onSubmit:e=>{e.preventDefault(),G()}},n.createElement(l.A.Label,{htmlFor:"ai-chart-prompt"},ee?"Refine this chart":"Describe your chart"),n.createElement(l.A.Control,{as:"textarea",id:"ai-chart-prompt",ref:$,rows:3,maxLength:4e3,value:w,onChange:e=>S(e.target.value),placeholder:ee?"Try “make it an area chart”, “use a cool palette”, or “hide the gridlines”…":"For example, compare X-ray and cryo-EM structure releases over time…",disabled:T}),n.createElement("div",{className:"ai-chart-composer-actions"},n.createElement("span",null,(null==r?void 0:r.model)||"Your connected AI model"),T?n.createElement(a.A,{variant:"outline-secondary",onClick:Z},n.createElement(p,null)," Cancel"):n.createElement(a.A,{type:"submit",disabled:!Q||!w.trim()},n.createElement(m,null)," Build Chart")))),n.createElement("div",{className:"ai-chart-canvas"},O&&n.createElement("div",{className:"ai-chart-review"},n.createElement("div",null,n.createElement("strong",null,"Review before applying"),n.createElement("p",null,(0,f.describeChart)(O.command.spec))),te.length?n.createElement("ul",null,te.map(e=>n.createElement("li",{key:e},e))):n.createElement("p",null,"No chart settings changed."),O.data.warnings.length>0&&n.createElement("details",null,n.createElement("summary",null,O.data.warnings.length," counting ",1===O.data.warnings.length?"note":"notes"),n.createElement("ul",null,O.data.warnings.map(e=>n.createElement("li",{key:e},e)))),n.createElement("div",{className:"ai-chart-review-actions"},n.createElement(a.A,{disabled:T,onClick:()=>{x(O),A(null)}},n.createElement(c,null)," Apply chart"),n.createElement(a.A,{variant:"outline-secondary",disabled:T,onClick:()=>A(null)},"Discard proposal"))),ee?n.createElement(W,{key:"".concat(ee.data.retrievedAt,"-").concat(Boolean(O)),spec:ee.command.spec,data:ee.data,preview:Boolean(O),onSpecChange:e=>{if(ee&&!T&&!M.current)try{const t=(0,f.validateChartSpec)(V(V({},ee.command.spec),{},{chartType:e.chartType,orientation:e.orientation,scale:e.scale},e.presentation?{presentation:e.presentation}:{})),r=new Set((0,f.chartWarnings)(ee.command.spec)),n=[...new Set([...ee.data.warnings.filter(e=>!r.has(e)),...(0,f.chartWarnings)(t)])],a=V(V({},ee.data),{},{warnings:n}),i={command:{action:"configureChart",spec:t},data:a,preview:V(V({},ee.preview),{},{summary:(0,f.describeChart)(t),changes:(0,f.chartChanges)((null==P?void 0:P.command.spec)||null,t),warnings:n,chartData:a})};O?A(i):x(i),F("")}catch(e){F(e instanceof Error?e.message:"Those chart settings are not compatible with this data.")}},disabled:T}):n.createElement("div",{className:"ai-chart-placeholder"},n.createElement("p",null,"A validated preview will appear here. Nothing is applied until you choose Apply chart.")),P&&O&&n.createElement("details",{className:"ai-chart-previous"},n.createElement("summary",null,"View currently applied chart"),n.createElement(W,{spec:P.command.spec,data:P.data,readOnly:!0})))))}},3482(e){"use strict";e.exports=JSON.parse('{"version":1,"action":"configureChart","name":"AI Powered Chart Builder","checkedAt":"2026-09-13","sources":["https://search.rcsb.org/#faceted-queries","https://search.rcsb.org/rcsbsearch/v2/metadata/schema"],"countingRules":["Every value is a live count of released PDB entries, not polymer entities, atoms, chains, downloads, citations, or unique sequences. Computed models are excluded.","Categories may overlap when an entry has multiple methods, organisms, polymer types, input datasets, or resolution values. Do not sum overlapping buckets to claim a unique total.","Percentages use all matching entries in each cohort as the denominator, including entries missing the chart attribute. They are not normalized to the displayed top categories.","All filters are entry-level requirements. An organism and ligand filter may match different entities in the same entry. Do not promise same-chain, binding-site, or same-entity relationships.","Lower and upper bounds on one numeric or date attribute are combined into one inclusive interval. At least one value must satisfy both bounds; different reported resolutions cannot satisfy opposite ends of the interval.","Cumulative release-year counts start at the selected lower release-year bound, not necessarily the beginning of the archive. Current-year counts are incomplete.","Area charts require an ordered dimension, ascending labels, vertical orientation and linear scale. Their translucent series are not stacked. Doughnut charts follow the same complete, non-overlapping partition rules as pie charts.","Presentation settings change appearance only. They cannot change chart counts, filters, aggregation attributes, or destinations. Use only the supported palettes, legend positions, grid, line styles and numeric drawing controls.","Selecting a bucket searches matching entries, keeping every global and cohort filter. The clicked bucket is an independent requirement: in a multi-valued entry, the value in the bucket may differ from the value satisfying a population filter. Resolution buckets use one half-open interval including the lower bound and excluding the upper bound.","Comparisons use up to four explicit named cohorts with independent additional filters; cohorts may overlap. Never fabricate counts or arbitrary Search API attributes.","Ask a clarification when a request needs unsupported statistics, ambiguous units or entity relationships, or an unknown organism taxon. Preserve the existing chart and filters during refinement unless the user requests a change."],"dimensions":{"releaseYear":{"label":"Release year","attribute":"rcsb_accession_info.initial_release_date","aggregation":"date_histogram","interval":"year","ordered":true,"overlapping":false},"method":{"label":"Experimental method","attribute":"exptl.method","aggregation":"terms","ordered":false,"overlapping":true},"sourceOrganism":{"label":"Source organism","attribute":"rcsb_entity_source_organism.ncbi_scientific_name","aggregation":"terms","ordered":false,"overlapping":true},"resolution":{"label":"Resolution (Å)","attribute":"rcsb_entry_info.resolution_combined","aggregation":"histogram","ordered":true,"overlapping":true},"polymerType":{"label":"Polymer type","attribute":"entity_poly.rcsb_entity_polymer_type","aggregation":"terms","ordered":false,"overlapping":true},"integrativeInput":{"label":"Integrative input data type","attribute":"rcsb_ihm_dataset_list.name","aggregation":"terms","ordered":false,"overlapping":true,"requiredFilter":{"field":"methodology","operator":"in","value":["integrative"]}},"methodology":{"label":"Structure determination methodology","attribute":"rcsb_entry_info.structure_determination_methodology","aggregation":"terms","ordered":false,"overlapping":false}},"filters":{"releaseYear":{"label":"Release year","attribute":"rcsb_accession_info.initial_release_date","kind":"year","operators":["gte","lte"],"minimum":1971,"maximum":2100},"method":{"label":"Experimental method","attribute":"exptl.method","kind":"enum","operators":["in"],"values":["X-RAY DIFFRACTION","ELECTRON MICROSCOPY","SOLUTION NMR","SOLID-STATE NMR","NEUTRON DIFFRACTION","ELECTRON CRYSTALLOGRAPHY","FIBER DIFFRACTION","POWDER DIFFRACTION","SOLUTION SCATTERING","INFRARED SPECTROSCOPY","EPR","FLUORESCENCE TRANSFER"]},"resolution":{"label":"Resolution (Å)","attribute":"rcsb_entry_info.resolution_combined","kind":"number","operators":["gte","lte"],"minimum":0.01,"maximum":1000},"sourceTaxonomy":{"label":"Source organism NCBI taxonomy ID (including descendants)","attribute":"rcsb_entity_source_organism.taxonomy_lineage.id","kind":"taxonomy","operators":["in"]},"sourceOrganism":{"label":"Exact source organism scientific name","attribute":"rcsb_entity_source_organism.ncbi_scientific_name","kind":"text","operators":["in"]},"ligand":{"label":"Non-polymer chemical component ID present in entry","attribute":"rcsb_nonpolymer_entity.rcsb_nonpolymer_comp_id","kind":"identifier","operators":["in"]},"polymerType":{"label":"Polymer type present in entry","attribute":"entity_poly.rcsb_entity_polymer_type","kind":"enum","operators":["in"],"values":["Protein","DNA","RNA","NA-hybrid","Other"]},"methodology":{"label":"Structure determination methodology","attribute":"rcsb_entry_info.structure_determination_methodology","kind":"enum","operators":["in"],"values":["experimental","integrative"]}},"knownTaxa":{"human":9606,"mouse":10090,"Escherichia coli":562,"Saccharomyces cerevisiae":4932},"presentationDefaults":{"palette":"default","legend":"auto","grid":true,"lineStyle":"smooth","pointRadius":3,"borderWidth":1,"barRadius":0,"doughnutCutout":60},"specSchema":{"type":"object","additionalProperties":false,"required":["version","title","categoryLabel","valueLabel","dimension","chartType","measure","scale","orientation","sort","topN","interval","cumulative","filters","series"],"properties":{"version":{"type":"integer","enum":[1]},"title":{"type":"string","minLength":1,"maxLength":140},"categoryLabel":{"type":"string","minLength":1,"maxLength":100},"valueLabel":{"type":"string","minLength":1,"maxLength":100},"dimension":{"type":"string","enum":["releaseYear","method","sourceOrganism","resolution","polymerType","integrativeInput","methodology"]},"chartType":{"type":"string","enum":["bar","line","area","pie","doughnut"]},"measure":{"type":"string","enum":["count","percent"]},"scale":{"type":"string","enum":["linear","logarithmic"]},"orientation":{"type":"string","enum":["vertical","horizontal"]},"sort":{"type":"string","enum":["labelAsc","countDesc"]},"topN":{"type":"integer","minimum":1,"maximum":60},"interval":{"type":"number","minimum":0.1,"maximum":100},"cumulative":{"type":"boolean"},"presentation":{"$ref":"#/$defs/presentation"},"filters":{"type":"array","maxItems":12,"items":{"$ref":"#/$defs/filter"}},"series":{"type":"array","minItems":1,"maxItems":4,"items":{"type":"object","additionalProperties":false,"required":["label","filters"],"properties":{"label":{"type":"string","minLength":1,"maxLength":80},"filters":{"type":"array","maxItems":8,"items":{"$ref":"#/$defs/filter"}}}}}},"$defs":{"presentation":{"type":"object","additionalProperties":false,"properties":{"palette":{"type":"string","enum":["default","accessible","warm","cool","monochrome"]},"legend":{"type":"string","enum":["auto","top","bottom","left","right","hidden"]},"grid":{"type":"boolean"},"lineStyle":{"type":"string","enum":["straight","smooth","stepped"]},"pointRadius":{"type":"integer","minimum":0,"maximum":8},"borderWidth":{"type":"integer","minimum":1,"maximum":5},"barRadius":{"type":"integer","minimum":0,"maximum":12},"doughnutCutout":{"type":"integer","minimum":20,"maximum":85}}},"filter":{"type":"object","additionalProperties":false,"required":["field","operator","value"],"properties":{"field":{"type":"string","enum":["releaseYear","method","resolution","sourceTaxonomy","sourceOrganism","ligand","polymerType","methodology"]},"operator":{"type":"string","enum":["in","gte","lte"]},"value":{"anyOf":[{"type":"number"},{"type":"array","minItems":1,"maxItems":10,"uniqueItems":true,"items":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"integer","minimum":1,"maximum":999999999}]}}]}}}}}}')}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_rcsb_rcsb_statistics=self.webpackChunk_rcsb_rcsb_statistics||[]).push([[503],{8354(t,r,e){e.d(r,{A:()=>w});var a=e(1573),i=e.n(a),n=e(9711),o=e(4625),s=e(4987),l=e(3088),c=e(2148),d=e(6503);const h=(0,c.A)("h4");h.displayName="DivStyledAsH4";const k=n.forwardRef(({className:t,bsPrefix:r,as:e=h,...a},n)=>(r=(0,l.oU)(r,"alert-heading"),(0,d.jsx)(e,{ref:n,className:i()(t,r),...a})));k.displayName="AlertHeading";const u=k;var g=e(8820);const x=n.forwardRef(({className:t,bsPrefix:r,as:e=g.A,...a},n)=>(r=(0,l.oU)(r,"alert-link"),(0,d.jsx)(e,{ref:n,className:i()(t,r),...a})));x.displayName="AlertLink";const f=x;var v=e(4716),p=e(3636);const y=n.forwardRef((t,r)=>{const{bsPrefix:e,show:a=!0,closeLabel:n="Close alert",closeVariant:c,className:h,children:k,variant:u="primary",onClose:g,dismissible:x,transition:f=v.A,...y}=(0,o.Zw)(t,{show:"onClose"}),w=(0,l.oU)(e,"alert"),L=(0,s.A)(t=>{g&&g(!1,t)}),m=!0===f?v.A:f,b=(0,d.jsxs)("div",{role:"alert",...m?void 0:y,ref:r,className:i()(h,w,u&&`${w}-${u}`,x&&`${w}-dismissible`),children:[x&&(0,d.jsx)(p.A,{onClick:L,"aria-label":n,variant:c}),k]});return m?(0,d.jsx)(m,{unmountOnExit:!0,...y,ref:void 0,in:a,children:b}):a?b:null});y.displayName="Alert";const w=Object.assign(y,{Link:f,Heading:u})},2917(t,r,e){e.d(r,{A:()=>c});var a=e(1573),i=e.n(a),n=e(9711),o=e(3088),s=e(6503);const l=n.forwardRef(({bsPrefix:t,variant:r,animation:e="border",size:a,as:n="div",className:l,...c},d)=>{const h=`${t=(0,o.oU)(t,"spinner")}-${e}`;return(0,s.jsx)(n,{ref:d,...c,className:i()(l,h,a&&`${h}-${a}`,r&&`text-${r}`)})});l.displayName="Spinner";const c=l},5042(t,r,e){e.d(r,{QPV:()=>l,VSk:()=>o,YrT:()=>d,a4x:()=>c,cO3:()=>s,i5c:()=>n,vQY:()=>h,yGN:()=>i});var a=e(5044);function i(t){return(0,a.k5)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"line",attr:{x1:"18",y1:"6",x2:"6",y2:"18"},child:[]},{tag:"line",attr:{x1:"6",y1:"6",x2:"18",y2:"18"},child:[]}]})(t)}function n(t){return(0,a.k5)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"},child:[]}]})(t)}function o(t){return(0,a.k5)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"circle",attr:{cx:"12",cy:"12",r:"3"},child:[]},{tag:"path",attr:{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"},child:[]}]})(t)}function s(t){return(0,a.k5)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"polyline",attr:{points:"1 4 1 10 7 10"},child:[]},{tag:"path",attr:{d:"M3.51 15a9 9 0 1 0 2.13-9.36L1 10"},child:[]}]})(t)}function l(t){return(0,a.k5)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"rect",attr:{x:"3",y:"3",width:"7",height:"7"},child:[]},{tag:"rect",attr:{x:"14",y:"3",width:"7",height:"7"},child:[]},{tag:"rect",attr:{x:"14",y:"14",width:"7",height:"7"},child:[]},{tag:"rect",attr:{x:"3",y:"14",width:"7",height:"7"},child:[]}]})(t)}function c(t){return(0,a.k5)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"},child:[]},{tag:"polyline",attr:{points:"7 10 12 15 17 10"},child:[]},{tag:"line",attr:{x1:"12",y1:"15",x2:"12",y2:"3"},child:[]}]})(t)}function d(t){return(0,a.k5)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"polyline",attr:{points:"20 6 9 17 4 12"},child:[]}]})(t)}function h(t){return(0,a.k5)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"line",attr:{x1:"18",y1:"20",x2:"18",y2:"10"},child:[]},{tag:"line",attr:{x1:"12",y1:"20",x2:"12",y2:"4"},child:[]},{tag:"line",attr:{x1:"6",y1:"20",x2:"6",y2:"14"},child:[]}]})(t)}}}]);
|