@genspectrum/dashboard-components 0.7.0 → 0.7.2

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.
@@ -1930,16 +1930,13 @@ function useQuery(fetchDataCallback, dependencies) {
1930
1930
  }, [JSON.stringify(dependencies)]);
1931
1931
  return { data, error, isLoading };
1932
1932
  }
1933
- const MutationComparison = ({ width, height, ...innerProps }) => {
1933
+ const MutationComparison = (componentProps) => {
1934
+ const { width, height } = componentProps;
1934
1935
  const size = { height, width };
1935
- return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(MutationComparisonInner, { ...innerProps }) }) });
1936
+ return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(MutationComparisonInner, { ...componentProps }) }) });
1936
1937
  };
1937
- const MutationComparisonInner = ({
1938
- lapisFilters,
1939
- sequenceType,
1940
- views,
1941
- pageSize
1942
- }) => {
1938
+ const MutationComparisonInner = (componentProps) => {
1939
+ const { lapisFilters, sequenceType } = componentProps;
1943
1940
  const lapis = x(LapisUrlContext);
1944
1941
  const { data, error, isLoading } = useQuery(async () => {
1945
1942
  return queryMutationData(lapisFilters, sequenceType, lapis);
@@ -1953,28 +1950,15 @@ const MutationComparisonInner = ({
1953
1950
  if (data === null) {
1954
1951
  return /* @__PURE__ */ u$1(NoDataDisplay, {});
1955
1952
  }
1956
- return /* @__PURE__ */ u$1(
1957
- MutationComparisonTabs,
1958
- {
1959
- data: data.mutationData,
1960
- sequenceType,
1961
- views,
1962
- pageSize
1963
- }
1964
- );
1953
+ return /* @__PURE__ */ u$1(MutationComparisonTabs, { data: data.mutationData, originalComponentProps: componentProps });
1965
1954
  };
1966
- const MutationComparisonTabs = ({
1967
- data,
1968
- views,
1969
- sequenceType,
1970
- pageSize
1971
- }) => {
1955
+ const MutationComparisonTabs = ({ data, originalComponentProps }) => {
1972
1956
  const [proportionInterval, setProportionInterval] = h({ min: 0.5, max: 1 });
1973
1957
  const [displayedMutationTypes, setDisplayedMutationTypes] = h([
1974
1958
  { label: "Substitutions", checked: true, type: "substitution" },
1975
1959
  { label: "Deletions", checked: true, type: "deletion" }
1976
1960
  ]);
1977
- const [displayedSegments, setDisplayedSegments] = useDisplayedSegments(sequenceType);
1961
+ const [displayedSegments, setDisplayedSegments] = useDisplayedSegments(originalComponentProps.sequenceType);
1978
1962
  const filteredData = T(
1979
1963
  () => filterMutationData(data, displayedSegments, displayedMutationTypes),
1980
1964
  [data, displayedSegments, displayedMutationTypes]
@@ -1989,7 +1973,7 @@ const MutationComparisonTabs = ({
1989
1973
  {
1990
1974
  data: { content: filteredData },
1991
1975
  proportionInterval,
1992
- pageSize
1976
+ pageSize: originalComponentProps.pageSize
1993
1977
  }
1994
1978
  )
1995
1979
  };
@@ -2006,7 +1990,7 @@ const MutationComparisonTabs = ({
2006
1990
  };
2007
1991
  }
2008
1992
  };
2009
- const tabs = views.map((view) => getTab(view));
1993
+ const tabs = originalComponentProps.views.map((view) => getTab(view));
2010
1994
  return /* @__PURE__ */ u$1(
2011
1995
  Tabs,
2012
1996
  {
@@ -2020,7 +2004,8 @@ const MutationComparisonTabs = ({
2020
2004
  setDisplayedMutationTypes,
2021
2005
  filteredData,
2022
2006
  proportionInterval,
2023
- setProportionInterval
2007
+ setProportionInterval,
2008
+ originalComponentProps
2024
2009
  }
2025
2010
  )
2026
2011
  }
@@ -2033,7 +2018,8 @@ const Toolbar$5 = ({
2033
2018
  setDisplayedMutationTypes,
2034
2019
  filteredData,
2035
2020
  proportionInterval,
2036
- setProportionInterval
2021
+ setProportionInterval,
2022
+ originalComponentProps
2037
2023
  }) => {
2038
2024
  return /* @__PURE__ */ u$1(Fragment, { children: [
2039
2025
  /* @__PURE__ */ u$1(
@@ -2060,10 +2046,18 @@ const Toolbar$5 = ({
2060
2046
  filename: "mutation_comparison.csv"
2061
2047
  }
2062
2048
  ),
2063
- /* @__PURE__ */ u$1(Info, { children: "Info for mutation comparison" }),
2049
+ /* @__PURE__ */ u$1(MutationComparisonInfo, { originalComponentProps }),
2064
2050
  /* @__PURE__ */ u$1(Fullscreen, {})
2065
2051
  ] });
2066
2052
  };
2053
+ const MutationComparisonInfo = ({ originalComponentProps }) => {
2054
+ const lapis = x(LapisUrlContext);
2055
+ return /* @__PURE__ */ u$1(Info, { children: [
2056
+ /* @__PURE__ */ u$1(InfoHeadline1, { children: "Info for mutation comparison" }),
2057
+ /* @__PURE__ */ u$1(InfoParagraph, { children: "TODO: https://github.com/GenSpectrum/dashboard-components/issues/465" }),
2058
+ /* @__PURE__ */ u$1(InfoComponentCode, { componentName: "mutation-comparison", params: originalComponentProps, lapisUrl: lapis })
2059
+ ] });
2060
+ };
2067
2061
  const gridJsStyle = '.gridjs-head button, .gridjs-footer button {\n cursor: pointer;\n background-color: transparent;\n background-image: none;\n padding: 0;\n margin: 0;\n border: none;\n outline: none;\n}\n\n.gridjs-temp {\n position: relative;\n}\n\n.gridjs-head {\n width: 100%;\n margin-bottom: 5px;\n padding: 5px 1px;\n}\n.gridjs-head::after {\n content: "";\n display: block;\n clear: both;\n}\n.gridjs-head:empty {\n padding: 0;\n border: none;\n}\n\n.gridjs-container {\n overflow: hidden;\n display: inline-block;\n padding: 2px;\n color: #000;\n position: relative;\n z-index: 0;\n}\n\n.gridjs-footer {\n display: block;\n position: relative;\n width: 100%;\n z-index: 5;\n padding: 12px 24px;\n border-top: 1px solid #e5e7eb;\n background-color: #fff;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.26);\n border-radius: 0 0 8px 8px;\n border-bottom-width: 1px;\n border-color: #e5e7eb;\n}\n.gridjs-footer:empty {\n padding: 0;\n border: none;\n}\n\ninput.gridjs-input {\n outline: none;\n background-color: #fff;\n border: 1px solid #d2d6dc;\n border-radius: 5px;\n padding: 10px 13px;\n font-size: 14px;\n line-height: 1.45;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\ninput.gridjs-input:focus {\n box-shadow: 0 0 0 3px rgba(149, 189, 243, 0.5);\n border-color: #9bc2f7;\n}\n\n.gridjs-pagination {\n color: #3d4044;\n}\n.gridjs-pagination::after {\n content: "";\n display: block;\n clear: both;\n}\n.gridjs-pagination .gridjs-summary {\n float: left;\n margin-top: 5px;\n}\n.gridjs-pagination .gridjs-pages {\n float: right;\n}\n.gridjs-pagination .gridjs-pages button {\n padding: 5px 14px;\n border: 1px solid #d2d6dc;\n background-color: #fff;\n border-right: none;\n outline: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.gridjs-pagination .gridjs-pages button:focus {\n box-shadow: 0 0 0 2px rgba(149, 189, 243, 0.5);\n position: relative;\n margin-right: -1px;\n border-right: 1px solid #d2d6dc;\n}\n.gridjs-pagination .gridjs-pages button:hover {\n background-color: #f7f7f7;\n color: rgb(60, 66, 87);\n outline: none;\n}\n.gridjs-pagination .gridjs-pages button:disabled,\n.gridjs-pagination .gridjs-pages button[disabled],\n.gridjs-pagination .gridjs-pages button:hover:disabled {\n cursor: default;\n background-color: #fff;\n color: #6b7280;\n}\n.gridjs-pagination .gridjs-pages button.gridjs-spread {\n cursor: default;\n box-shadow: none;\n background-color: #fff;\n}\n.gridjs-pagination .gridjs-pages button.gridjs-currentPage {\n background-color: #f7f7f7;\n font-weight: bold;\n}\n.gridjs-pagination .gridjs-pages button:last-child {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n border-right: 1px solid #d2d6dc;\n}\n.gridjs-pagination .gridjs-pages button:first-child {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.gridjs-pagination .gridjs-pages button:last-child:focus {\n margin-right: 0;\n}\n\nbutton.gridjs-sort {\n float: right;\n height: 24px;\n width: 13px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position-x: center;\n cursor: pointer;\n padding: 0;\n margin: 0;\n border: none;\n outline: none;\n background-size: contain;\n}\nbutton.gridjs-sort-neutral {\n opacity: 0.3;\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSI0MDEuOTk4cHgiIGhlaWdodD0iNDAxLjk5OHB4IiB2aWV3Qm94PSIwIDAgNDAxLjk5OCA0MDEuOTk4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MDEuOTk4IDQwMS45OTg7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik03My4wOTIsMTY0LjQ1MmgyNTUuODEzYzQuOTQ5LDAsOS4yMzMtMS44MDcsMTIuODQ4LTUuNDI0YzMuNjEzLTMuNjE2LDUuNDI3LTcuODk4LDUuNDI3LTEyLjg0NwoJCQljMC00Ljk0OS0xLjgxMy05LjIyOS01LjQyNy0xMi44NUwyMTMuODQ2LDUuNDI0QzIxMC4yMzIsMS44MTIsMjA1Ljk1MSwwLDIwMC45OTksMHMtOS4yMzMsMS44MTItMTIuODUsNS40MjRMNjAuMjQyLDEzMy4zMzEKCQkJYy0zLjYxNywzLjYxNy01LjQyNCw3LjkwMS01LjQyNCwxMi44NWMwLDQuOTQ4LDEuODA3LDkuMjMxLDUuNDI0LDEyLjg0N0M2My44NjMsMTYyLjY0NSw2OC4xNDQsMTY0LjQ1Miw3My4wOTIsMTY0LjQ1MnoiLz4KCQk8cGF0aCBkPSJNMzI4LjkwNSwyMzcuNTQ5SDczLjA5MmMtNC45NTIsMC05LjIzMywxLjgwOC0xMi44NSw1LjQyMWMtMy42MTcsMy42MTctNS40MjQsNy44OTgtNS40MjQsMTIuODQ3CgkJCWMwLDQuOTQ5LDEuODA3LDkuMjMzLDUuNDI0LDEyLjg0OEwxODguMTQ5LDM5Ni41N2MzLjYyMSwzLjYxNyw3LjkwMiw1LjQyOCwxMi44NSw1LjQyOHM5LjIzMy0xLjgxMSwxMi44NDctNS40MjhsMTI3LjkwNy0xMjcuOTA2CgkJCWMzLjYxMy0zLjYxNCw1LjQyNy03Ljg5OCw1LjQyNy0xMi44NDhjMC00Ljk0OC0xLjgxMy05LjIyOS01LjQyNy0xMi44NDdDMzM4LjEzOSwyMzkuMzUzLDMzMy44NTQsMjM3LjU0OSwzMjguOTA1LDIzNy41NDl6Ii8+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: center;\n}\nbutton.gridjs-sort-asc {\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyOTIuMzYycHgiIGhlaWdodD0iMjkyLjM2MXB4IiB2aWV3Qm94PSIwIDAgMjkyLjM2MiAyOTIuMzYxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyOTIuMzYyIDI5Mi4zNjE7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGQ9Ik0yODYuOTM1LDE5Ny4yODdMMTU5LjAyOCw2OS4zODFjLTMuNjEzLTMuNjE3LTcuODk1LTUuNDI0LTEyLjg0Ny01LjQyNHMtOS4yMzMsMS44MDctMTIuODUsNS40MjRMNS40MjQsMTk3LjI4NwoJCUMxLjgwNywyMDAuOTA0LDAsMjA1LjE4NiwwLDIxMC4xMzRzMS44MDcsOS4yMzMsNS40MjQsMTIuODQ3YzMuNjIxLDMuNjE3LDcuOTAyLDUuNDI1LDEyLjg1LDUuNDI1aDI1NS44MTMKCQljNC45NDksMCw5LjIzMy0xLjgwOCwxMi44NDgtNS40MjVjMy42MTMtMy42MTMsNS40MjctNy44OTgsNS40MjctMTIuODQ3UzI5MC41NDgsMjAwLjkwNCwyODYuOTM1LDE5Ny4yODd6Ii8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: 35%;\n background-size: 10px;\n}\nbutton.gridjs-sort-desc {\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyOTIuMzYycHgiIGhlaWdodD0iMjkyLjM2MnB4IiB2aWV3Qm94PSIwIDAgMjkyLjM2MiAyOTIuMzYyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyOTIuMzYyIDI5Mi4zNjI7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGQ9Ik0yODYuOTM1LDY5LjM3N2MtMy42MTQtMy42MTctNy44OTgtNS40MjQtMTIuODQ4LTUuNDI0SDE4LjI3NGMtNC45NTIsMC05LjIzMywxLjgwNy0xMi44NSw1LjQyNAoJCUMxLjgwNyw3Mi45OTgsMCw3Ny4yNzksMCw4Mi4yMjhjMCw0Ljk0OCwxLjgwNyw5LjIyOSw1LjQyNCwxMi44NDdsMTI3LjkwNywxMjcuOTA3YzMuNjIxLDMuNjE3LDcuOTAyLDUuNDI4LDEyLjg1LDUuNDI4CgkJczkuMjMzLTEuODExLDEyLjg0Ny01LjQyOEwyODYuOTM1LDk1LjA3NGMzLjYxMy0zLjYxNyw1LjQyNy03Ljg5OCw1LjQyNy0xMi44NDdDMjkyLjM2Miw3Ny4yNzksMjkwLjU0OCw3Mi45OTgsMjg2LjkzNSw2OS4zNzd6Ii8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: 65%;\n background-size: 10px;\n}\nbutton.gridjs-sort:focus {\n outline: none;\n}\n\ntable.gridjs-table {\n width: 100%;\n max-width: 100%;\n border-collapse: collapse;\n text-align: left;\n display: table;\n margin: 0;\n padding: 0;\n overflow: auto;\n table-layout: fixed;\n}\n\n.gridjs-tbody {\n background-color: #fff;\n}\n\ntd.gridjs-td {\n border: 1px solid #e5e7eb;\n padding: 12px 24px;\n background-color: #fff;\n box-sizing: content-box;\n}\ntd.gridjs-td:first-child {\n border-left: none;\n}\ntd.gridjs-td:last-child {\n border-right: none;\n}\ntd.gridjs-message {\n text-align: center;\n}\n\nth.gridjs-th {\n position: relative;\n color: #6b7280;\n background-color: #f9fafb;\n border: 1px solid #e5e7eb;\n border-top: none;\n padding: 14px 24px;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n box-sizing: border-box;\n white-space: nowrap;\n outline: none;\n vertical-align: middle;\n}\nth.gridjs-th .gridjs-th-content {\n text-overflow: ellipsis;\n overflow: hidden;\n width: 100%;\n float: left;\n}\nth.gridjs-th-sort {\n cursor: pointer;\n}\nth.gridjs-th-sort .gridjs-th-content {\n width: calc(100% - 15px);\n}\nth.gridjs-th-sort:hover {\n background-color: #e5e7eb;\n}\nth.gridjs-th-sort:focus {\n background-color: #e5e7eb;\n}\nth.gridjs-th-fixed {\n position: sticky;\n box-shadow: 0 1px 0 0 #e5e7eb;\n}\n@supports (-moz-appearance: none) {\n th.gridjs-th-fixed {\n box-shadow: 0 0 0 1px #e5e7eb;\n }\n}\nth.gridjs-th:first-child {\n border-left: none;\n}\nth.gridjs-th:last-child {\n border-right: none;\n}\n\n.gridjs-tr {\n border: none;\n}\n.gridjs-tr-selected td {\n background-color: #ebf5ff;\n}\n.gridjs-tr:last-child td {\n border-bottom: 0;\n}\n\n.gridjs *,\n.gridjs :after,\n.gridjs :before {\n box-sizing: border-box;\n}\n\n.gridjs-wrapper {\n position: relative;\n z-index: 1;\n overflow: auto;\n width: 100%;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.26);\n border-radius: 8px 8px 0 0;\n display: block;\n border-top-width: 1px;\n border-color: #e5e7eb;\n}\n.gridjs-wrapper:nth-last-of-type(2) {\n border-radius: 8px;\n border-bottom-width: 1px;\n}\n\n.gridjs-search {\n float: left;\n}\n.gridjs-search-input {\n width: 250px;\n}\n\n.gridjs-loading-bar {\n z-index: 10;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: #fff;\n opacity: 0.5;\n}\n.gridjs-loading-bar::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n transform: translateX(-100%);\n background-image: linear-gradient(90deg, rgba(204, 204, 204, 0) 0, rgba(204, 204, 204, 0.2) 20%, rgba(204, 204, 204, 0.5) 60%, rgba(204, 204, 204, 0));\n animation: shimmer 2s infinite;\n content: "";\n}\n@keyframes shimmer {\n 100% {\n transform: translateX(100%);\n }\n}\n\n.gridjs-td .gridjs-checkbox {\n display: block;\n margin: auto;\n cursor: pointer;\n}\n\n.gridjs-resizable {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n width: 5px;\n}\n.gridjs-resizable:hover {\n cursor: ew-resize;\n background-color: #9bc2f7;\n}\n/*# sourceMappingURL=mermaid.css?inline.map */';
2068
2062
  const minMaxPercentSliderCss = 'input[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n pointer-events: all;\n width: 24px;\n height: 24px;\n background-color: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px #C6C6C6;\n cursor: pointer;\n}\n\ninput[type=range]::-moz-range-thumb {\n -webkit-appearance: none;\n pointer-events: all;\n width: 24px;\n height: 24px;\n background-color: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px #C6C6C6;\n cursor: pointer;\n}\n\ninput[type=range]::-webkit-slider-thumb:hover {\n background: #f7f7f7;\n}\n\ninput[type=range]::-webkit-slider-thumb:active {\n box-shadow: inset 0 0 3px #387bbe, 0 0 9px #387bbe;\n -webkit-box-shadow: inset 0 0 3px #387bbe, 0 0 9px #387bbe;\n}\n\ninput[type="range"] {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n height: 2px;\n width: 100%;\n position: absolute;\n background-color: #C6C6C6;\n pointer-events: none;\n}';
2069
2063
  const tailwindStyle = `*, ::before, ::after {
@@ -5445,17 +5439,14 @@ function filterMutationsData(data, displayedSegments, displayedMutationTypes) {
5445
5439
  gridData: filteredSubstitutionsOrDeletions
5446
5440
  };
5447
5441
  }
5448
- const Mutations = ({ width, height, ...innerProps }) => {
5442
+ const Mutations = (componentProps) => {
5443
+ const { width, height } = componentProps;
5449
5444
  const size = { height, width };
5450
- return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(MutationsInner, { ...innerProps }) }) });
5445
+ return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(MutationsInner, { ...componentProps }) }) });
5451
5446
  };
5452
- const MutationsInner = ({
5453
- lapisFilter,
5454
- sequenceType,
5455
- views,
5456
- pageSize
5457
- }) => {
5447
+ const MutationsInner = (componentProps) => {
5458
5448
  const lapis = x(LapisUrlContext);
5449
+ const { lapisFilter, sequenceType } = componentProps;
5459
5450
  const { data, error, isLoading } = useQuery(async () => {
5460
5451
  return queryMutationsData(lapisFilter, sequenceType, lapis);
5461
5452
  }, [lapisFilter, sequenceType, lapis]);
@@ -5468,11 +5459,11 @@ const MutationsInner = ({
5468
5459
  if (data === null) {
5469
5460
  return /* @__PURE__ */ u$1(NoDataDisplay, {});
5470
5461
  }
5471
- return /* @__PURE__ */ u$1(MutationsTabs, { mutationsData: data, sequenceType, views, pageSize });
5462
+ return /* @__PURE__ */ u$1(MutationsTabs, { mutationsData: data, originalComponentProps: componentProps });
5472
5463
  };
5473
- const MutationsTabs = ({ mutationsData, sequenceType, views, pageSize }) => {
5464
+ const MutationsTabs = ({ mutationsData, originalComponentProps }) => {
5474
5465
  const [proportionInterval, setProportionInterval] = h({ min: 0.05, max: 1 });
5475
- const [displayedSegments, setDisplayedSegments] = useDisplayedSegments(sequenceType);
5466
+ const [displayedSegments, setDisplayedSegments] = useDisplayedSegments(originalComponentProps.sequenceType);
5476
5467
  const [displayedMutationTypes, setDisplayedMutationTypes] = h([
5477
5468
  { label: "Substitutions", checked: true, type: "substitution" },
5478
5469
  { label: "Deletions", checked: true, type: "deletion" }
@@ -5488,7 +5479,7 @@ const MutationsTabs = ({ mutationsData, sequenceType, views, pageSize }) => {
5488
5479
  {
5489
5480
  data: filteredData.tableData,
5490
5481
  proportionInterval,
5491
- pageSize
5482
+ pageSize: originalComponentProps.pageSize
5492
5483
  }
5493
5484
  )
5494
5485
  };
@@ -5499,20 +5490,20 @@ const MutationsTabs = ({ mutationsData, sequenceType, views, pageSize }) => {
5499
5490
  MutationsGrid,
5500
5491
  {
5501
5492
  data: filteredData.gridData,
5502
- sequenceType,
5493
+ sequenceType: originalComponentProps.sequenceType,
5503
5494
  proportionInterval,
5504
- pageSize
5495
+ pageSize: originalComponentProps.pageSize
5505
5496
  }
5506
5497
  )
5507
5498
  };
5508
5499
  case "insertions":
5509
5500
  return {
5510
5501
  title: "Insertions",
5511
- content: /* @__PURE__ */ u$1(InsertionsTable, { data: filteredData.insertions, pageSize })
5502
+ content: /* @__PURE__ */ u$1(InsertionsTable, { data: filteredData.insertions, pageSize: originalComponentProps.pageSize })
5512
5503
  };
5513
5504
  }
5514
5505
  };
5515
- const tabs = views.map((view) => getTab(view));
5506
+ const tabs = originalComponentProps.views.map((view) => getTab(view));
5516
5507
  const toolbar = (activeTab) => /* @__PURE__ */ u$1(
5517
5508
  Toolbar$4,
5518
5509
  {
@@ -5523,7 +5514,8 @@ const MutationsTabs = ({ mutationsData, sequenceType, views, pageSize }) => {
5523
5514
  setDisplayedMutationTypes,
5524
5515
  filteredData,
5525
5516
  proportionInterval,
5526
- setProportionInterval
5517
+ setProportionInterval,
5518
+ originalComponentProps
5527
5519
  }
5528
5520
  );
5529
5521
  return /* @__PURE__ */ u$1(Tabs, { tabs, toolbar });
@@ -5536,7 +5528,8 @@ const Toolbar$4 = ({
5536
5528
  setDisplayedMutationTypes,
5537
5529
  filteredData,
5538
5530
  proportionInterval,
5539
- setProportionInterval
5531
+ setProportionInterval,
5532
+ originalComponentProps
5540
5533
  }) => {
5541
5534
  return /* @__PURE__ */ u$1(Fragment, { children: [
5542
5535
  /* @__PURE__ */ u$1(SegmentSelector, { displayedSegments, setDisplayedSegments }),
@@ -5578,39 +5571,43 @@ const Toolbar$4 = ({
5578
5571
  filename: "insertions.csv"
5579
5572
  }
5580
5573
  ),
5581
- /* @__PURE__ */ u$1(MutationsInfo, {}),
5574
+ /* @__PURE__ */ u$1(MutationsInfo, { originalComponentProps }),
5582
5575
  /* @__PURE__ */ u$1(Fullscreen, {})
5583
5576
  ] });
5584
5577
  };
5585
- const MutationsInfo = () => /* @__PURE__ */ u$1(Info, { children: [
5586
- /* @__PURE__ */ u$1(InfoHeadline1, { children: "Mutations" }),
5587
- /* @__PURE__ */ u$1(InfoParagraph, { children: [
5588
- "This shows mutations of a variant. There are three types of mutations:",
5589
- " ",
5590
- /* @__PURE__ */ u$1(InfoLink, { href: "https://www.genome.gov/genetics-glossary/Substitution", children: "substitutions" }),
5591
- ",",
5592
- " ",
5593
- /* @__PURE__ */ u$1(InfoLink, { href: "https://www.genome.gov/genetics-glossary/Deletion", children: "deletions" }),
5594
- " and",
5595
- " ",
5596
- /* @__PURE__ */ u$1(InfoLink, { href: "https://www.genome.gov/genetics-glossary/Insertion", children: "insertions" }),
5597
- "."
5598
- ] }),
5599
- /* @__PURE__ */ u$1(InfoHeadline2, { children: "Proportion calculation" }),
5600
- /* @__PURE__ */ u$1(InfoParagraph, { children: "The proportion of a mutation is calculated by dividing the number of sequences with the mutation by the total number of sequences with a non-ambiguous symbol at the position." }),
5601
- /* @__PURE__ */ u$1(InfoParagraph, { children: [
5602
- /* @__PURE__ */ u$1("b", { children: "Example:" }),
5603
- " Assume we look at nucleotide mutations at position 5 where the reference has a T and assume there are 10 sequences in total:",
5604
- /* @__PURE__ */ u$1("ul", { className: "list-disc list-inside ml-2", children: [
5605
- /* @__PURE__ */ u$1("li", { children: "3 sequences have a C," }),
5606
- /* @__PURE__ */ u$1("li", { children: "2 sequences have a T," }),
5607
- /* @__PURE__ */ u$1("li", { children: "1 sequence has a G," }),
5608
- /* @__PURE__ */ u$1("li", { children: "3 sequences have an N," }),
5609
- /* @__PURE__ */ u$1("li", { children: "1 sequence has a Y (which means T or C)," })
5578
+ const MutationsInfo = ({ originalComponentProps }) => {
5579
+ const lapis = x(LapisUrlContext);
5580
+ return /* @__PURE__ */ u$1(Info, { children: [
5581
+ /* @__PURE__ */ u$1(InfoHeadline1, { children: "Mutations" }),
5582
+ /* @__PURE__ */ u$1(InfoParagraph, { children: [
5583
+ "This shows mutations of a variant. There are three types of mutations:",
5584
+ " ",
5585
+ /* @__PURE__ */ u$1(InfoLink, { href: "https://www.genome.gov/genetics-glossary/Substitution", children: "substitutions" }),
5586
+ ",",
5587
+ " ",
5588
+ /* @__PURE__ */ u$1(InfoLink, { href: "https://www.genome.gov/genetics-glossary/Deletion", children: "deletions" }),
5589
+ " and",
5590
+ " ",
5591
+ /* @__PURE__ */ u$1(InfoLink, { href: "https://www.genome.gov/genetics-glossary/Insertion", children: "insertions" }),
5592
+ "."
5610
5593
  ] }),
5611
- "then the proportion of the T5C mutation is 50%. The 4 sequences that have an N or Y are excluded from the calculation."
5612
- ] })
5613
- ] });
5594
+ /* @__PURE__ */ u$1(InfoHeadline2, { children: "Proportion calculation" }),
5595
+ /* @__PURE__ */ u$1(InfoParagraph, { children: "The proportion of a mutation is calculated by dividing the number of sequences with the mutation by the total number of sequences with a non-ambiguous symbol at the position." }),
5596
+ /* @__PURE__ */ u$1(InfoParagraph, { children: [
5597
+ /* @__PURE__ */ u$1("b", { children: "Example:" }),
5598
+ " Assume we look at nucleotide mutations at position 5 where the reference has a T and assume there are 10 sequences in total:",
5599
+ /* @__PURE__ */ u$1("ul", { className: "list-disc list-inside ml-2", children: [
5600
+ /* @__PURE__ */ u$1("li", { children: "3 sequences have a C," }),
5601
+ /* @__PURE__ */ u$1("li", { children: "2 sequences have a T," }),
5602
+ /* @__PURE__ */ u$1("li", { children: "1 sequence has a G," }),
5603
+ /* @__PURE__ */ u$1("li", { children: "3 sequences have an N," }),
5604
+ /* @__PURE__ */ u$1("li", { children: "1 sequence has a Y (which means T or C)," })
5605
+ ] }),
5606
+ "then the proportion of the T5C mutation is 50%. The 4 sequences that have an N or Y are excluded from the calculation."
5607
+ ] }),
5608
+ /* @__PURE__ */ u$1(InfoComponentCode, { componentName: "mutations", params: originalComponentProps, lapisUrl: lapis })
5609
+ ] });
5610
+ };
5614
5611
  var __defProp$a = Object.defineProperty;
5615
5612
  var __getOwnPropDesc$a = Object.getOwnPropertyDescriptor;
5616
5613
  var __decorateClass$a = (decorators, target, key, kind) => {
@@ -5782,12 +5779,15 @@ const PrevalenceOverTimeBarChart = ({
5782
5779
  confidenceIntervalMethod,
5783
5780
  yAxisMaxConfig
5784
5781
  }) => {
5785
- const nullFirstData = data.map((variantData) => {
5782
+ const nullFirstData = data.filter((prevalenceOverTimeData) => prevalenceOverTimeData.content.length > 0).map((variantData) => {
5786
5783
  return {
5787
5784
  content: variantData.content.sort(sortNullToBeginningThenByDate),
5788
5785
  displayName: variantData.displayName
5789
5786
  };
5790
5787
  });
5788
+ if (nullFirstData.length === 0) {
5789
+ return /* @__PURE__ */ u$1(NoDataDisplay, {});
5790
+ }
5791
5791
  const datasets2 = nullFirstData.map((graphData, index) => getDataset$1(graphData, index, confidenceIntervalMethod));
5792
5792
  const maxY = yAxisScaleType !== "logit" ? getYAxisMax(maxInData(nullFirstData), yAxisMaxConfig == null ? void 0 : yAxisMaxConfig[yAxisScaleType]) : void 0;
5793
5793
  const config = {
@@ -6814,12 +6814,15 @@ const PrevalenceOverTimeBubbleChart = ({
6814
6814
  yAxisScaleType,
6815
6815
  yAxisMaxConfig
6816
6816
  }) => {
6817
- const nonNullDateRangeData = data.map((variantData) => {
6817
+ const nonNullDateRangeData = data.filter((prevalenceOverTimeData) => prevalenceOverTimeData.content.length > 0).map((variantData) => {
6818
6818
  return {
6819
6819
  content: variantData.content.filter((dataPoint) => dataPoint.dateRange !== null),
6820
6820
  displayName: variantData.displayName
6821
6821
  };
6822
6822
  });
6823
+ if (nonNullDateRangeData.length === 0) {
6824
+ return /* @__PURE__ */ u$1(NoDataDisplay, {});
6825
+ }
6823
6826
  const firstDate = nonNullDateRangeData[0].content[0].dateRange;
6824
6827
  const total = nonNullDateRangeData.map((graphData) => graphData.content.map((dataPoint) => dataPoint.total)).flat();
6825
6828
  const [minTotal, maxTotal] = getMinMaxNumber(total);
@@ -6890,12 +6893,15 @@ const PrevalenceOverTimeLineChart = ({
6890
6893
  confidenceIntervalMethod,
6891
6894
  yAxisMaxConfig
6892
6895
  }) => {
6893
- const nonNullDateRangeData = data.map((variantData) => {
6896
+ const nonNullDateRangeData = data.filter((prevalenceOverTimeData) => prevalenceOverTimeData.content.length > 0).map((variantData) => {
6894
6897
  return {
6895
6898
  content: variantData.content.filter((dataPoint) => dataPoint.dateRange !== null),
6896
6899
  displayName: variantData.displayName
6897
6900
  };
6898
6901
  });
6902
+ if (nonNullDateRangeData.length === 0) {
6903
+ return /* @__PURE__ */ u$1(NoDataDisplay, {});
6904
+ }
6899
6905
  const datasets2 = nonNullDateRangeData.map((graphData, index) => getDataset(graphData, index, confidenceIntervalMethod)).flat();
6900
6906
  const maxY = yAxisScaleType !== "logit" ? getYAxisMax(maxInData(nonNullDateRangeData), yAxisMaxConfig == null ? void 0 : yAxisMaxConfig[yAxisScaleType]) : void 0;
6901
6907
  const config = {
@@ -7162,6 +7168,9 @@ class SlidingOperator {
7162
7168
  async evaluate(lapis, signal) {
7163
7169
  const childEvaluated = await this.child.evaluate(lapis, signal);
7164
7170
  const content = new Array();
7171
+ if (childEvaluated.content.length === 0) {
7172
+ return { content };
7173
+ }
7165
7174
  const numberOfWindows = Math.max(childEvaluated.content.length - this.windowSize, 0) + 1;
7166
7175
  for (let i2 = 0; i2 < numberOfWindows; i2++) {
7167
7176
  content.push(this.aggregate(childEvaluated.content.slice(i2, i2 + this.windowSize)));
@@ -7342,7 +7351,7 @@ const PrevalenceOverTimeInner = (componentProps) => {
7342
7351
  if (error !== null) {
7343
7352
  return /* @__PURE__ */ u$1(ErrorDisplay, { error });
7344
7353
  }
7345
- if (data === null) {
7354
+ if (data === null || data.every((variant) => variant.content.length === 0)) {
7346
7355
  return /* @__PURE__ */ u$1(NoDataDisplay, {});
7347
7356
  }
7348
7357
  return /* @__PURE__ */ u$1(PrevalenceOverTimeTabs, { data, ...componentProps });
@@ -7768,27 +7777,18 @@ function toYearMonthDay(d2) {
7768
7777
  count: d2.count
7769
7778
  };
7770
7779
  }
7771
- const RelativeGrowthAdvantage = ({
7772
- width,
7773
- height,
7774
- ...innerProps
7775
- }) => {
7780
+ const RelativeGrowthAdvantage = (componentProps) => {
7781
+ const { width, height } = componentProps;
7776
7782
  const size = { height, width };
7777
- return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(RelativeGrowthAdvantageInner, { ...innerProps }) }) });
7778
- };
7779
- const RelativeGrowthAdvantageInner = ({
7780
- numeratorFilter,
7781
- denominatorFilter,
7782
- generationTime,
7783
- views,
7784
- lapisDateField,
7785
- yAxisMaxConfig
7786
- }) => {
7783
+ return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(RelativeGrowthAdvantageInner, { ...componentProps }) }) });
7784
+ };
7785
+ const RelativeGrowthAdvantageInner = (componentProps) => {
7787
7786
  const lapis = x(LapisUrlContext);
7787
+ const { numeratorFilter, denominatorFilter, generationTime, lapisDateField } = componentProps;
7788
7788
  const [yAxisScaleType, setYAxisScaleType] = h("linear");
7789
7789
  const { data, error, isLoading } = useQuery(
7790
7790
  () => queryRelativeGrowthAdvantage(numeratorFilter, denominatorFilter, generationTime, lapis, lapisDateField),
7791
- [lapis, numeratorFilter, denominatorFilter, generationTime, views, lapisDateField]
7791
+ [lapis, numeratorFilter, denominatorFilter, generationTime, lapisDateField]
7792
7792
  );
7793
7793
  if (isLoading) {
7794
7794
  return /* @__PURE__ */ u$1(LoadingDisplay, {});
@@ -7805,9 +7805,7 @@ const RelativeGrowthAdvantageInner = ({
7805
7805
  data,
7806
7806
  yAxisScaleType,
7807
7807
  setYAxisScaleType,
7808
- views,
7809
- generationTime,
7810
- yAxisMaxConfig
7808
+ originalComponentProps: componentProps
7811
7809
  }
7812
7810
  );
7813
7811
  };
@@ -7815,9 +7813,7 @@ const RelativeGrowthAdvantageTabs = ({
7815
7813
  data,
7816
7814
  yAxisScaleType,
7817
7815
  setYAxisScaleType,
7818
- views,
7819
- generationTime,
7820
- yAxisMaxConfig
7816
+ originalComponentProps
7821
7817
  }) => {
7822
7818
  const getTab = (view) => {
7823
7819
  switch (view) {
@@ -7833,17 +7829,17 @@ const RelativeGrowthAdvantageTabs = ({
7833
7829
  params: data.params
7834
7830
  },
7835
7831
  yAxisScaleType,
7836
- yAxisMaxConfig
7832
+ yAxisMaxConfig: originalComponentProps.yAxisMaxConfig
7837
7833
  }
7838
7834
  )
7839
7835
  };
7840
7836
  }
7841
7837
  };
7842
- const tabs = views.map((view) => getTab(view));
7838
+ const tabs = originalComponentProps.views.map((view) => getTab(view));
7843
7839
  const toolbar = () => /* @__PURE__ */ u$1(
7844
7840
  RelativeGrowthAdvantageToolbar,
7845
7841
  {
7846
- generationTime,
7842
+ originalComponentProps,
7847
7843
  yAxisScaleType,
7848
7844
  setYAxisScaleType
7849
7845
  }
@@ -7853,15 +7849,19 @@ const RelativeGrowthAdvantageTabs = ({
7853
7849
  const RelativeGrowthAdvantageToolbar = ({
7854
7850
  yAxisScaleType,
7855
7851
  setYAxisScaleType,
7856
- generationTime
7852
+ originalComponentProps
7857
7853
  }) => {
7858
7854
  return /* @__PURE__ */ u$1(Fragment, { children: [
7859
7855
  /* @__PURE__ */ u$1(ScalingSelector, { yAxisScaleType, setYAxisScaleType }),
7860
- /* @__PURE__ */ u$1(RelativeGrowthAdvantageInfo, { generationTime }),
7856
+ /* @__PURE__ */ u$1(RelativeGrowthAdvantageInfo, { originalComponentProps }),
7861
7857
  /* @__PURE__ */ u$1(Fullscreen, {})
7862
7858
  ] });
7863
7859
  };
7864
- const RelativeGrowthAdvantageInfo = ({ generationTime }) => {
7860
+ const RelativeGrowthAdvantageInfo = ({
7861
+ originalComponentProps
7862
+ }) => {
7863
+ const lapis = x(LapisUrlContext);
7864
+ const generationTime = originalComponentProps.generationTime;
7865
7865
  return /* @__PURE__ */ u$1(Info, { children: [
7866
7866
  /* @__PURE__ */ u$1(InfoHeadline1, { children: "Relative growth advantage" }),
7867
7867
  /* @__PURE__ */ u$1(InfoParagraph, { children: [
@@ -7879,7 +7879,15 @@ const RelativeGrowthAdvantageInfo = ({ generationTime }) => {
7879
7879
  'Chen, Chaoran, et al. "Quantification of the spread of SARS-CoV-2 variant B.1.1.7 in Switzerland." Epidemics (2021); doi:',
7880
7880
  " ",
7881
7881
  /* @__PURE__ */ u$1(InfoLink, { href: "https://www.sciencedirect.com/science/article/pii/S1755436521000335?via=ihub", children: "10.1016/j.epidem.2021.100480" })
7882
- ] })
7882
+ ] }),
7883
+ /* @__PURE__ */ u$1(
7884
+ InfoComponentCode,
7885
+ {
7886
+ componentName: "relative-growth-advantage",
7887
+ params: originalComponentProps,
7888
+ lapisUrl: lapis
7889
+ }
7890
+ )
7883
7891
  ] });
7884
7892
  };
7885
7893
  var __defProp$8 = Object.defineProperty;
@@ -8002,18 +8010,13 @@ const AggregateTable = ({ data, fields, pageSize }) => {
8002
8010
  ];
8003
8011
  return /* @__PURE__ */ u$1(Table, { data, columns: headers, pageSize });
8004
8012
  };
8005
- const Aggregate = ({ width, height, ...innerProps }) => {
8013
+ const Aggregate = (componentProps) => {
8014
+ const { width, height } = componentProps;
8006
8015
  const size = { height, width };
8007
- return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(AggregateInner, { ...innerProps }) }) });
8008
- };
8009
- const AggregateInner = ({
8010
- fields,
8011
- views,
8012
- filter,
8013
- initialSortField,
8014
- initialSortDirection,
8015
- pageSize
8016
- }) => {
8016
+ return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(AggregateInner, { ...componentProps }) }) });
8017
+ };
8018
+ const AggregateInner = (componentProps) => {
8019
+ const { fields, filter, initialSortField, initialSortDirection } = componentProps;
8017
8020
  const lapis = x(LapisUrlContext);
8018
8021
  const { data, error, isLoading } = useQuery(async () => {
8019
8022
  return queryAggregateData(filter, fields, lapis, { field: initialSortField, direction: initialSortDirection });
@@ -8027,36 +8030,48 @@ const AggregateInner = ({
8027
8030
  if (data === null) {
8028
8031
  return /* @__PURE__ */ u$1(NoDataDisplay, {});
8029
8032
  }
8030
- return /* @__PURE__ */ u$1(AggregatedDataTabs, { data, views, fields, pageSize });
8033
+ return /* @__PURE__ */ u$1(AggregatedDataTabs, { data, originalComponentProps: componentProps });
8031
8034
  };
8032
- const AggregatedDataTabs = ({ data, views, fields, pageSize }) => {
8035
+ const AggregatedDataTabs = ({ data, originalComponentProps }) => {
8033
8036
  const getTab = (view) => {
8034
8037
  switch (view) {
8035
8038
  case "table":
8036
8039
  return {
8037
8040
  title: "Table",
8038
- content: /* @__PURE__ */ u$1(AggregateTable, { data, fields, pageSize })
8041
+ content: /* @__PURE__ */ u$1(
8042
+ AggregateTable,
8043
+ {
8044
+ data,
8045
+ fields: originalComponentProps.fields,
8046
+ pageSize: originalComponentProps.pageSize
8047
+ }
8048
+ )
8039
8049
  };
8040
8050
  }
8041
8051
  };
8042
- const tabs = views.map((view) => getTab(view));
8043
- return /* @__PURE__ */ u$1(Tabs, { tabs, toolbar: /* @__PURE__ */ u$1(Toolbar$2, { data, fields }) });
8052
+ const tabs = originalComponentProps.views.map((view) => getTab(view));
8053
+ return /* @__PURE__ */ u$1(Tabs, { tabs, toolbar: /* @__PURE__ */ u$1(Toolbar$2, { data, originalComponentProps }) });
8044
8054
  };
8045
- const Toolbar$2 = ({ data, fields }) => {
8055
+ const Toolbar$2 = ({ data, originalComponentProps }) => {
8046
8056
  return /* @__PURE__ */ u$1("div", { class: "flex flex-row", children: [
8047
8057
  /* @__PURE__ */ u$1(CsvDownloadButton, { className: "mx-1 btn btn-xs", getData: () => data, filename: "aggregate.csv" }),
8048
- /* @__PURE__ */ u$1(Info, { children: [
8049
- /* @__PURE__ */ u$1(InfoHeadline1, { children: "Aggregated data" }),
8050
- /* @__PURE__ */ u$1(InfoParagraph, { children: [
8051
- "This table shows the number and proportion of sequences stratified by the following fields:",
8052
- " ",
8053
- fields.join(", "),
8054
- ". The proportion is calculated with respect to the total count within the filtered dataset."
8055
- ] })
8056
- ] }),
8058
+ /* @__PURE__ */ u$1(AggregateInfo, { originalComponentProps }),
8057
8059
  /* @__PURE__ */ u$1(Fullscreen, {})
8058
8060
  ] });
8059
8061
  };
8062
+ const AggregateInfo = ({ originalComponentProps }) => {
8063
+ const lapis = x(LapisUrlContext);
8064
+ return /* @__PURE__ */ u$1(Info, { children: [
8065
+ /* @__PURE__ */ u$1(InfoHeadline1, { children: "Aggregated data" }),
8066
+ /* @__PURE__ */ u$1(InfoParagraph, { children: [
8067
+ "This table shows the number and proportion of sequences stratified by the following fields:",
8068
+ " ",
8069
+ originalComponentProps.fields.join(", "),
8070
+ ". The proportion is calculated with respect to the total count within the filtered dataset."
8071
+ ] }),
8072
+ /* @__PURE__ */ u$1(InfoComponentCode, { componentName: "aggregate", params: originalComponentProps, lapisUrl: lapis })
8073
+ ] });
8074
+ };
8060
8075
  var __defProp$7 = Object.defineProperty;
8061
8076
  var __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor;
8062
8077
  var __decorateClass$7 = (decorators, target, key, kind) => {
@@ -8278,18 +8293,13 @@ async function queryNumberOfSequencesOverTime(lapis, lapisFilter, lapisDateField
8278
8293
  });
8279
8294
  return Promise.all(queries);
8280
8295
  }
8281
- const NumberSequencesOverTime = ({ width, height, ...innerProps }) => {
8296
+ const NumberSequencesOverTime = (componentProps) => {
8297
+ const { width, height } = componentProps;
8282
8298
  const size = { height, width };
8283
- return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(NumberSequencesOverTimeInner, { ...innerProps }) }) });
8284
- };
8285
- const NumberSequencesOverTimeInner = ({
8286
- lapisFilter,
8287
- granularity,
8288
- smoothingWindow,
8289
- lapisDateField,
8290
- views,
8291
- pageSize
8292
- }) => {
8299
+ return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(NumberSequencesOverTimeInner, { ...componentProps }) }) });
8300
+ };
8301
+ const NumberSequencesOverTimeInner = (componentProps) => {
8302
+ const { lapisFilter, lapisDateField, granularity, smoothingWindow } = componentProps;
8293
8303
  const lapis = x(LapisUrlContext);
8294
8304
  const { data, error, isLoading } = useQuery(
8295
8305
  () => queryNumberOfSequencesOverTime(lapis, lapisFilter, lapisDateField, granularity, smoothingWindow),
@@ -8304,24 +8314,9 @@ const NumberSequencesOverTimeInner = ({
8304
8314
  if (data === null) {
8305
8315
  return /* @__PURE__ */ u$1(NoDataDisplay, {});
8306
8316
  }
8307
- return /* @__PURE__ */ u$1(
8308
- NumberSequencesOverTimeTabs,
8309
- {
8310
- views,
8311
- data,
8312
- granularity,
8313
- smoothingWindow,
8314
- pageSize
8315
- }
8316
- );
8317
+ return /* @__PURE__ */ u$1(NumberSequencesOverTimeTabs, { data, originalComponentProps: componentProps });
8317
8318
  };
8318
- const NumberSequencesOverTimeTabs = ({
8319
- views,
8320
- data,
8321
- granularity,
8322
- smoothingWindow,
8323
- pageSize
8324
- }) => {
8319
+ const NumberSequencesOverTimeTabs = ({ data, originalComponentProps }) => {
8325
8320
  const [yAxisScaleType, setYAxisScaleType] = h("linear");
8326
8321
  const getTab = (view) => {
8327
8322
  switch (view) {
@@ -8338,7 +8333,14 @@ const NumberSequencesOverTimeTabs = ({
8338
8333
  case "table":
8339
8334
  return {
8340
8335
  title: "Table",
8341
- content: /* @__PURE__ */ u$1(NumberSequencesOverTimeTable, { data, granularity, pageSize })
8336
+ content: /* @__PURE__ */ u$1(
8337
+ NumberSequencesOverTimeTable,
8338
+ {
8339
+ data,
8340
+ granularity: originalComponentProps.granularity,
8341
+ pageSize: originalComponentProps.pageSize
8342
+ }
8343
+ )
8342
8344
  };
8343
8345
  default:
8344
8346
  throw new Error(`Unknown view: ${view}`);
@@ -8347,29 +8349,21 @@ const NumberSequencesOverTimeTabs = ({
8347
8349
  return /* @__PURE__ */ u$1(
8348
8350
  Tabs,
8349
8351
  {
8350
- tabs: views.map((view) => getTab(view)),
8352
+ tabs: originalComponentProps.views.map((view) => getTab(view)),
8351
8353
  toolbar: (activeTab) => /* @__PURE__ */ u$1(
8352
8354
  Toolbar$1,
8353
8355
  {
8354
8356
  activeTab,
8355
8357
  data,
8356
- granularity,
8357
- smoothingWindow,
8358
8358
  yAxisScaleType,
8359
- setYAxisScaleType
8359
+ setYAxisScaleType,
8360
+ originalComponentProps
8360
8361
  }
8361
8362
  )
8362
8363
  }
8363
8364
  );
8364
8365
  };
8365
- const Toolbar$1 = ({
8366
- activeTab,
8367
- data,
8368
- granularity,
8369
- yAxisScaleType,
8370
- setYAxisScaleType,
8371
- smoothingWindow
8372
- }) => {
8366
+ const Toolbar$1 = ({ activeTab, data, yAxisScaleType, setYAxisScaleType, originalComponentProps }) => {
8373
8367
  return /* @__PURE__ */ u$1(Fragment, { children: [
8374
8368
  activeTab !== "Table" && /* @__PURE__ */ u$1(
8375
8369
  ScalingSelector,
@@ -8383,26 +8377,37 @@ const Toolbar$1 = ({
8383
8377
  CsvDownloadButton,
8384
8378
  {
8385
8379
  className: "mx-1 btn btn-xs",
8386
- getData: () => getNumberOfSequencesOverTimeTableData(data, granularity),
8380
+ getData: () => getNumberOfSequencesOverTimeTableData(data, originalComponentProps.granularity),
8387
8381
  filename: "number_of_sequences_over_time.csv"
8388
8382
  }
8389
8383
  ),
8390
- /* @__PURE__ */ u$1(NumberSequencesOverTimeInfo, { granularity, smoothingWindow }),
8384
+ /* @__PURE__ */ u$1(NumberSequencesOverTimeInfo, { originalComponentProps }),
8391
8385
  /* @__PURE__ */ u$1(Fullscreen, {})
8392
8386
  ] });
8393
8387
  };
8394
8388
  const NumberSequencesOverTimeInfo = ({
8395
- granularity,
8396
- smoothingWindow
8397
- }) => /* @__PURE__ */ u$1(Info, { children: [
8398
- /* @__PURE__ */ u$1(InfoHeadline1, { children: "Number of sequences over time" }),
8399
- /* @__PURE__ */ u$1(InfoParagraph, { children: [
8400
- "This presents the number of available sequences of a variant per ",
8401
- /* @__PURE__ */ u$1("b", { children: granularity }),
8402
- smoothingWindow > 0 && `, smoothed using a ${smoothingWindow}-${granularity} sliding window`,
8403
- "."
8404
- ] })
8405
- ] });
8389
+ originalComponentProps
8390
+ }) => {
8391
+ const lapis = x(LapisUrlContext);
8392
+ return /* @__PURE__ */ u$1(Info, { children: [
8393
+ /* @__PURE__ */ u$1(InfoHeadline1, { children: "Number of sequences over time" }),
8394
+ /* @__PURE__ */ u$1(InfoParagraph, { children: [
8395
+ "This presents the number of available sequences of a variant per",
8396
+ " ",
8397
+ /* @__PURE__ */ u$1("b", { children: originalComponentProps.granularity }),
8398
+ originalComponentProps.smoothingWindow > 0 && `, smoothed using a ${originalComponentProps.smoothingWindow}-${originalComponentProps.granularity} sliding window`,
8399
+ "."
8400
+ ] }),
8401
+ /* @__PURE__ */ u$1(
8402
+ InfoComponentCode,
8403
+ {
8404
+ componentName: "number-sequences-over-time",
8405
+ params: originalComponentProps,
8406
+ lapisUrl: lapis
8407
+ }
8408
+ )
8409
+ ] });
8410
+ };
8406
8411
  var __defProp$6 = Object.defineProperty;
8407
8412
  var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;
8408
8413
  var __decorateClass$6 = (decorators, target, key, kind) => {
@@ -8904,18 +8909,14 @@ function useWebWorker(messageToWorker, worker) {
8904
8909
  }, [messageToWorker]);
8905
8910
  return { data, error, isLoading };
8906
8911
  }
8907
- const MutationsOverTime = ({ width, height, ...innerProps }) => {
8912
+ const MutationsOverTime = (componentProps) => {
8913
+ const { width, height } = componentProps;
8908
8914
  const size = { height, width };
8909
- return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(MutationsOverTimeInner, { ...innerProps }) }) });
8915
+ return /* @__PURE__ */ u$1(ErrorBoundary, { size, children: /* @__PURE__ */ u$1(ResizeContainer, { size, children: /* @__PURE__ */ u$1(MutationsOverTimeInner, { ...componentProps }) }) });
8910
8916
  };
8911
- const MutationsOverTimeInner = ({
8912
- lapisFilter,
8913
- sequenceType,
8914
- views,
8915
- granularity,
8916
- lapisDateField
8917
- }) => {
8917
+ const MutationsOverTimeInner = (componentProps) => {
8918
8918
  const lapis = x(LapisUrlContext);
8919
+ const { lapisFilter, sequenceType, granularity, lapisDateField } = componentProps;
8919
8920
  const { data, error, isLoading } = useWebWorker(
8920
8921
  {
8921
8922
  lapisFilter,
@@ -8942,20 +8943,18 @@ const MutationsOverTimeInner = ({
8942
8943
  {
8943
8944
  overallMutationData,
8944
8945
  mutationOverTimeData,
8945
- sequenceType,
8946
- views
8946
+ originalComponentProps: componentProps
8947
8947
  }
8948
8948
  );
8949
8949
  };
8950
8950
  const MutationsOverTimeTabs = ({
8951
8951
  mutationOverTimeData,
8952
- sequenceType,
8953
- views,
8952
+ originalComponentProps,
8954
8953
  overallMutationData
8955
8954
  }) => {
8956
8955
  const [proportionInterval, setProportionInterval] = h({ min: 0.05, max: 0.9 });
8957
8956
  const [colorScale, setColorScale] = h({ min: 0, max: 1, color: "indigo" });
8958
- const [displayedSegments, setDisplayedSegments] = useDisplayedSegments(sequenceType);
8957
+ const [displayedSegments, setDisplayedSegments] = useDisplayedSegments(originalComponentProps.sequenceType);
8959
8958
  const [displayedMutationTypes, setDisplayedMutationTypes] = h([
8960
8959
  { label: "Substitutions", checked: true, type: "substitution" },
8961
8960
  { label: "Deletions", checked: true, type: "deletion" }
@@ -8984,7 +8983,7 @@ const MutationsOverTimeTabs = ({
8984
8983
  };
8985
8984
  }
8986
8985
  };
8987
- const tabs = views.map((view) => getTab(view));
8986
+ const tabs = originalComponentProps.views.map((view) => getTab(view));
8988
8987
  const toolbar = (activeTab) => /* @__PURE__ */ u$1(
8989
8988
  Toolbar,
8990
8989
  {
@@ -8997,7 +8996,8 @@ const MutationsOverTimeTabs = ({
8997
8996
  setProportionInterval,
8998
8997
  filteredData,
8999
8998
  colorScale,
9000
- setColorScale
8999
+ setColorScale,
9000
+ originalComponentProps
9001
9001
  }
9002
9002
  );
9003
9003
  return /* @__PURE__ */ u$1(Tabs, { tabs, toolbar });
@@ -9012,7 +9012,8 @@ const Toolbar = ({
9012
9012
  setProportionInterval,
9013
9013
  filteredData,
9014
9014
  colorScale,
9015
- setColorScale
9015
+ setColorScale,
9016
+ originalComponentProps
9016
9017
  }) => {
9017
9018
  return /* @__PURE__ */ u$1(Fragment, { children: [
9018
9019
  activeTab === "Grid" && /* @__PURE__ */ u$1(ColorScaleSelectorDropdown, { colorScale, setColorScale }),
@@ -9041,10 +9042,18 @@ const Toolbar = ({
9041
9042
  filename: "mutations_over_time.csv"
9042
9043
  }
9043
9044
  ),
9044
- /* @__PURE__ */ u$1(Info, { children: "Info for mutations over time" }),
9045
+ /* @__PURE__ */ u$1(MutationsOverTimeInfo, { originalComponentProps }),
9045
9046
  /* @__PURE__ */ u$1(Fullscreen, {})
9046
9047
  ] });
9047
9048
  };
9049
+ const MutationsOverTimeInfo = ({ originalComponentProps }) => {
9050
+ const lapis = x(LapisUrlContext);
9051
+ return /* @__PURE__ */ u$1(Info, { children: [
9052
+ /* @__PURE__ */ u$1(InfoHeadline1, { children: "Info for mutations over time" }),
9053
+ /* @__PURE__ */ u$1(InfoParagraph, { children: "TODO: https://github.com/GenSpectrum/dashboard-components/issues/441" }),
9054
+ /* @__PURE__ */ u$1(InfoComponentCode, { componentName: "mutations-over-time", params: originalComponentProps, lapisUrl: lapis })
9055
+ ] });
9056
+ };
9048
9057
  function getDownloadData(filteredData) {
9049
9058
  const dates = filteredData.getSecondAxisKeys().map((date) => toTemporalClass(date));
9050
9059
  return filteredData.getFirstAxisKeys().map((mutation) => {