@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.
- package/dist/assets/mutationOverTimeWorker-BOCXtKzd.js.map +1 -1
- package/dist/dashboard-components.js +216 -207
- package/dist/dashboard-components.js.map +1 -1
- package/dist/genspectrum-components.d.ts +40 -40
- package/package.json +2 -2
- package/src/operator/SlidingOperator.ts +3 -0
- package/src/preact/aggregatedData/aggregate.tsx +41 -33
- package/src/preact/components/error-display.tsx +1 -0
- package/src/preact/mutationComparison/mutation-comparison.tsx +32 -34
- package/src/preact/mutations/mutations.tsx +63 -56
- package/src/preact/mutationsOverTime/mutations-over-time.tsx +33 -25
- package/src/preact/numberSequencesOverTime/number-sequences-over-time.tsx +46 -64
- package/src/preact/prevalenceOverTime/__mockData__/numeratorFilterNoData.json +11 -0
- package/src/preact/prevalenceOverTime/prevalence-over-time-bar-chart.tsx +13 -6
- package/src/preact/prevalenceOverTime/prevalence-over-time-bubble-chart.tsx +13 -6
- package/src/preact/prevalenceOverTime/prevalence-over-time-line-chart.tsx +13 -6
- package/src/preact/prevalenceOverTime/prevalence-over-time.stories.tsx +74 -11
- package/src/preact/prevalenceOverTime/prevalence-over-time.tsx +1 -1
- package/src/preact/relativeGrowthAdvantage/relative-growth-advantage.stories.tsx +12 -5
- package/src/preact/relativeGrowthAdvantage/relative-growth-advantage.tsx +29 -36
- package/standalone-bundle/dashboard-components.js +9842 -9847
- package/standalone-bundle/dashboard-components.js.map +1 -1
|
@@ -1930,16 +1930,13 @@ function useQuery(fetchDataCallback, dependencies) {
|
|
|
1930
1930
|
}, [JSON.stringify(dependencies)]);
|
|
1931
1931
|
return { data, error, isLoading };
|
|
1932
1932
|
}
|
|
1933
|
-
const MutationComparison = (
|
|
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, { ...
|
|
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(
|
|
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 = (
|
|
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, { ...
|
|
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,
|
|
5462
|
+
return /* @__PURE__ */ u$1(MutationsTabs, { mutationsData: data, originalComponentProps: componentProps });
|
|
5472
5463
|
};
|
|
5473
|
-
const MutationsTabs = ({ mutationsData,
|
|
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 = () =>
|
|
5586
|
-
|
|
5587
|
-
/* @__PURE__ */ u$1(
|
|
5588
|
-
|
|
5589
|
-
|
|
5590
|
-
|
|
5591
|
-
|
|
5592
|
-
|
|
5593
|
-
|
|
5594
|
-
|
|
5595
|
-
|
|
5596
|
-
|
|
5597
|
-
|
|
5598
|
-
|
|
5599
|
-
|
|
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
|
-
|
|
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, { ...
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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, {
|
|
7856
|
+
/* @__PURE__ */ u$1(RelativeGrowthAdvantageInfo, { originalComponentProps }),
|
|
7861
7857
|
/* @__PURE__ */ u$1(Fullscreen, {})
|
|
7862
7858
|
] });
|
|
7863
7859
|
};
|
|
7864
|
-
const RelativeGrowthAdvantageInfo = ({
|
|
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 = (
|
|
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, { ...
|
|
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,
|
|
8033
|
+
return /* @__PURE__ */ u$1(AggregatedDataTabs, { data, originalComponentProps: componentProps });
|
|
8031
8034
|
};
|
|
8032
|
-
const AggregatedDataTabs = ({ data,
|
|
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(
|
|
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,
|
|
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,
|
|
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(
|
|
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 = (
|
|
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, { ...
|
|
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(
|
|
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, {
|
|
8384
|
+
/* @__PURE__ */ u$1(NumberSequencesOverTimeInfo, { originalComponentProps }),
|
|
8391
8385
|
/* @__PURE__ */ u$1(Fullscreen, {})
|
|
8392
8386
|
] });
|
|
8393
8387
|
};
|
|
8394
8388
|
const NumberSequencesOverTimeInfo = ({
|
|
8395
|
-
|
|
8396
|
-
|
|
8397
|
-
|
|
8398
|
-
/* @__PURE__ */ u$1(
|
|
8399
|
-
|
|
8400
|
-
|
|
8401
|
-
|
|
8402
|
-
|
|
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 = (
|
|
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, { ...
|
|
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
|
-
|
|
8946
|
-
views
|
|
8946
|
+
originalComponentProps: componentProps
|
|
8947
8947
|
}
|
|
8948
8948
|
);
|
|
8949
8949
|
};
|
|
8950
8950
|
const MutationsOverTimeTabs = ({
|
|
8951
8951
|
mutationOverTimeData,
|
|
8952
|
-
|
|
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(
|
|
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) => {
|