@haniffalab/cherita-react 1.2.0-dev.2025-05-21.e8f5ce54 → 1.2.0-dev.2025-05-21.e57ef5f2
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/cjs/components/dotplot/Dotplot.js +26 -19
- package/dist/cjs/components/dotplot/DotplotControls.js +17 -19
- package/dist/cjs/components/full-page/FullPage.js +9 -7
- package/dist/cjs/components/full-page/FullPagePseudospatial.js +9 -7
- package/dist/cjs/components/heatmap/Heatmap.js +22 -13
- package/dist/cjs/components/matrixplot/Matrixplot.js +22 -13
- package/dist/cjs/components/obs-list/ObsItem.js +37 -29
- package/dist/cjs/components/obs-list/ObsList.js +47 -44
- package/dist/cjs/components/obsm-list/ObsmList.js +9 -6
- package/dist/cjs/components/offcanvas/index.js +13 -9
- package/dist/cjs/components/pseudospatial/Pseudospatial.js +61 -53
- package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +17 -11
- package/dist/cjs/components/scatterplot/Scatterplot.js +52 -52
- package/dist/cjs/components/scatterplot/ScatterplotControls.js +3 -3
- package/dist/cjs/components/scatterplot/SpatialControls.js +4 -4
- package/dist/cjs/components/search-bar/SearchBar.js +12 -10
- package/dist/cjs/components/search-bar/SearchInfo.js +14 -13
- package/dist/cjs/components/search-bar/SearchResults.js +16 -14
- package/dist/cjs/components/var-list/VarItem.js +10 -7
- package/dist/cjs/components/var-list/VarList.js +14 -9
- package/dist/cjs/components/var-list/VarListToolbar.js +1 -2
- package/dist/cjs/components/var-list/VarSet.js +1 -2
- package/dist/cjs/components/violin/Violin.js +44 -35
- package/dist/cjs/context/DatasetContext.js +17 -11
- package/dist/cjs/context/FilterContext.js +9 -8
- package/dist/cjs/context/SettingsContext.js +169 -237
- package/dist/cjs/context/ZarrDataContext.js +1 -2
- package/dist/cjs/helpers/color-helper.js +3 -3
- package/dist/cjs/helpers/zarr-helper.js +15 -12
- package/dist/cjs/utils/Filter.js +13 -9
- package/dist/cjs/utils/Histogram.js +4 -3
- package/dist/cjs/utils/ImageViewer.js +1 -2
- package/dist/cjs/utils/Legend.js +3 -3
- package/dist/cjs/utils/LoadingIndicators.js +1 -1
- package/dist/cjs/utils/VirtualizedList.js +16 -13
- package/dist/cjs/utils/errors.js +20 -22
- package/dist/cjs/utils/requests.js +13 -10
- package/dist/cjs/utils/zarrData.js +12 -8
- package/dist/css/cherita.css +13 -9
- package/dist/css/cherita.css.map +1 -1
- package/dist/esm/components/dotplot/Dotplot.js +25 -17
- package/dist/esm/components/dotplot/DotplotControls.js +16 -17
- package/dist/esm/components/full-page/FullPage.js +8 -5
- package/dist/esm/components/full-page/FullPagePseudospatial.js +8 -5
- package/dist/esm/components/heatmap/Heatmap.js +21 -11
- package/dist/esm/components/matrixplot/Matrixplot.js +21 -11
- package/dist/esm/components/obs-list/ObsItem.js +36 -27
- package/dist/esm/components/obs-list/ObsList.js +46 -42
- package/dist/esm/components/obsm-list/ObsmList.js +8 -4
- package/dist/esm/components/offcanvas/index.js +13 -9
- package/dist/esm/components/pseudospatial/Pseudospatial.js +60 -51
- package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +16 -9
- package/dist/esm/components/scatterplot/Scatterplot.js +51 -50
- package/dist/esm/components/scatterplot/ScatterplotControls.js +2 -1
- package/dist/esm/components/scatterplot/SpatialControls.js +3 -2
- package/dist/esm/components/search-bar/SearchBar.js +11 -8
- package/dist/esm/components/search-bar/SearchInfo.js +13 -11
- package/dist/esm/components/search-bar/SearchResults.js +15 -12
- package/dist/esm/components/var-list/VarItem.js +9 -5
- package/dist/esm/components/var-list/VarList.js +13 -7
- package/dist/esm/components/violin/Violin.js +43 -33
- package/dist/esm/context/DatasetContext.js +16 -9
- package/dist/esm/context/FilterContext.js +8 -6
- package/dist/esm/context/SettingsContext.js +168 -235
- package/dist/esm/helpers/color-helper.js +3 -3
- package/dist/esm/helpers/zarr-helper.js +15 -12
- package/dist/esm/utils/Filter.js +13 -9
- package/dist/esm/utils/Histogram.js +4 -3
- package/dist/esm/utils/Legend.js +2 -1
- package/dist/esm/utils/LoadingIndicators.js +1 -1
- package/dist/esm/utils/VirtualizedList.js +15 -11
- package/dist/esm/utils/errors.js +20 -22
- package/dist/esm/utils/requests.js +13 -10
- package/dist/esm/utils/zarrData.js +12 -8
- package/package.json +4 -2
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
1
6
|
import React, { useState, useEffect } from "react";
|
|
2
7
|
import { faPlus } from "@fortawesome/free-solid-svg-icons";
|
|
3
8
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
@@ -20,10 +25,9 @@ export function VarInfo(_ref) {
|
|
|
20
25
|
});
|
|
21
26
|
useEffect(() => {
|
|
22
27
|
setParams(p => {
|
|
23
|
-
return {
|
|
24
|
-
...p,
|
|
28
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
25
29
|
geneName: varItem.name
|
|
26
|
-
};
|
|
30
|
+
});
|
|
27
31
|
});
|
|
28
32
|
}, [varItem.name]);
|
|
29
33
|
const {
|
|
@@ -34,7 +38,7 @@ export function VarInfo(_ref) {
|
|
|
34
38
|
refetchOnMount: false,
|
|
35
39
|
enabled: !!dataset.diseaseDatasets.length
|
|
36
40
|
});
|
|
37
|
-
const hasDiseaseInfo = !isPending && !serverError && !!fetchedData
|
|
41
|
+
const hasDiseaseInfo = !isPending && !serverError && !!(fetchedData !== null && fetchedData !== void 0 && fetchedData.length);
|
|
38
42
|
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h5", null, varItem.name), !!dataset.diseaseDatasets.length && isPending && /*#__PURE__*/React.createElement("p", null, "Loading..."), hasDiseaseInfo && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h6", null, "Associated diseases"), /*#__PURE__*/React.createElement(VarDiseaseInfo, {
|
|
39
43
|
data: fetchedData
|
|
40
44
|
})));
|
|
@@ -54,13 +58,12 @@ const useVarMean = function (varKeys) {
|
|
|
54
58
|
});
|
|
55
59
|
useEffect(() => {
|
|
56
60
|
setParams(p => {
|
|
57
|
-
return {
|
|
58
|
-
...p,
|
|
61
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
59
62
|
varKeys: _.map(varKeys, v => v.isSet ? {
|
|
60
63
|
name: v.name,
|
|
61
64
|
indices: v.vars.map(v => v.index)
|
|
62
65
|
} : v.index)
|
|
63
|
-
};
|
|
66
|
+
});
|
|
64
67
|
});
|
|
65
68
|
}, [varKeys]);
|
|
66
69
|
return useFetch(ENDPOINT, params, {
|
|
@@ -93,10 +96,9 @@ export function DiseaseInfo(_ref2) {
|
|
|
93
96
|
});
|
|
94
97
|
useEffect(() => {
|
|
95
98
|
setParams(p => {
|
|
96
|
-
return {
|
|
97
|
-
...p,
|
|
99
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
98
100
|
diseaseId: disease.id
|
|
99
|
-
};
|
|
101
|
+
});
|
|
100
102
|
});
|
|
101
103
|
}, [disease]);
|
|
102
104
|
const diseaseData = useFetch(ENDPOINT, params, {
|
|
@@ -108,7 +110,7 @@ export function DiseaseInfo(_ref2) {
|
|
|
108
110
|
setDiseaseVars(diseaseData.fetchedData);
|
|
109
111
|
}
|
|
110
112
|
}, [diseaseData.fetchedData, diseaseData.isPending, diseaseData.serverError]);
|
|
111
|
-
const varMeans = useVarMean(diseaseVars, !!diseaseVars
|
|
113
|
+
const varMeans = useVarMean(diseaseVars, !!(diseaseVars !== null && diseaseVars !== void 0 && diseaseVars.length) && settings.varSort.disease.sort === VAR_SORT.MATRIX);
|
|
112
114
|
useEffect(() => {
|
|
113
115
|
if (settings.varSort.disease.sort === VAR_SORT.MATRIX) {
|
|
114
116
|
if (!varMeans.isPending && !varMeans.serverError) {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
1
6
|
import React, { useDeferredValue, useEffect, useMemo, useState } from "react";
|
|
2
7
|
import { faPlus } from "@fortawesome/free-solid-svg-icons";
|
|
3
8
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
@@ -30,10 +35,9 @@ export function VarSearchResults(_ref) {
|
|
|
30
35
|
const setData = text => {
|
|
31
36
|
if (text.length) {
|
|
32
37
|
setParams(p => {
|
|
33
|
-
return {
|
|
34
|
-
...p,
|
|
38
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
35
39
|
text: text
|
|
36
|
-
};
|
|
40
|
+
});
|
|
37
41
|
});
|
|
38
42
|
} else {
|
|
39
43
|
setSuggestions([]);
|
|
@@ -47,7 +51,7 @@ export function VarSearchResults(_ref) {
|
|
|
47
51
|
useEffect(() => {
|
|
48
52
|
if (!isPending && !serverError) {
|
|
49
53
|
setSuggestions(fetchedData);
|
|
50
|
-
setResultsLength(fetchedData
|
|
54
|
+
setResultsLength(fetchedData === null || fetchedData === void 0 ? void 0 : fetchedData.length);
|
|
51
55
|
}
|
|
52
56
|
}, [fetchedData, isPending, serverError, setResultsLength]);
|
|
53
57
|
const getDataAtIndex = index => deferredData[index];
|
|
@@ -58,7 +62,7 @@ export function VarSearchResults(_ref) {
|
|
|
58
62
|
onClick: () => {
|
|
59
63
|
setSelectedResult(item);
|
|
60
64
|
},
|
|
61
|
-
active: selectedResult
|
|
65
|
+
active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.index) === item.index
|
|
62
66
|
}, /*#__PURE__*/React.createElement("div", {
|
|
63
67
|
className: "d-flex justify-content-between align-items-center w-100"
|
|
64
68
|
}, /*#__PURE__*/React.createElement("div", null, item.name), /*#__PURE__*/React.createElement("div", {
|
|
@@ -80,7 +84,7 @@ export function VarSearchResults(_ref) {
|
|
|
80
84
|
}, /*#__PURE__*/React.createElement(ListGroup, {
|
|
81
85
|
variant: "flush",
|
|
82
86
|
className: "cherita-list"
|
|
83
|
-
}, deferredData
|
|
87
|
+
}, deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/React.createElement(VirtualizedList, {
|
|
84
88
|
getDataAtIndex: getDataAtIndex,
|
|
85
89
|
count: deferredData.length,
|
|
86
90
|
ItemComponent: ItemComponent,
|
|
@@ -115,10 +119,9 @@ export function DiseasesSearchResults(_ref2) {
|
|
|
115
119
|
const setData = text => {
|
|
116
120
|
if (text.length) {
|
|
117
121
|
setParams(p => {
|
|
118
|
-
return {
|
|
119
|
-
...p,
|
|
122
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
120
123
|
text: text
|
|
121
|
-
};
|
|
124
|
+
});
|
|
122
125
|
});
|
|
123
126
|
} else {
|
|
124
127
|
setSuggestions([]);
|
|
@@ -132,7 +135,7 @@ export function DiseasesSearchResults(_ref2) {
|
|
|
132
135
|
useEffect(() => {
|
|
133
136
|
if (!isPending && !serverError) {
|
|
134
137
|
setSuggestions(fetchedData);
|
|
135
|
-
setResultsLength(fetchedData
|
|
138
|
+
setResultsLength(fetchedData === null || fetchedData === void 0 ? void 0 : fetchedData.length);
|
|
136
139
|
}
|
|
137
140
|
}, [fetchedData, isPending, serverError, setResultsLength]);
|
|
138
141
|
const getDataAtIndex = index => deferredData[index];
|
|
@@ -143,7 +146,7 @@ export function DiseasesSearchResults(_ref2) {
|
|
|
143
146
|
onClick: () => {
|
|
144
147
|
setSelectedResult(item);
|
|
145
148
|
},
|
|
146
|
-
active: selectedResult
|
|
149
|
+
active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.id) === item.id
|
|
147
150
|
}, /*#__PURE__*/React.createElement("div", {
|
|
148
151
|
className: "d-flex justify-content-between align-items-center w-100"
|
|
149
152
|
}, /*#__PURE__*/React.createElement("div", null, item.disease_name)))));
|
|
@@ -152,7 +155,7 @@ export function DiseasesSearchResults(_ref2) {
|
|
|
152
155
|
}, /*#__PURE__*/React.createElement(ListGroup, {
|
|
153
156
|
variant: "flush",
|
|
154
157
|
className: "cherita-list"
|
|
155
|
-
}, deferredData
|
|
158
|
+
}, deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/React.createElement(VirtualizedList, {
|
|
156
159
|
getDataAtIndex: getDataAtIndex,
|
|
157
160
|
count: deferredData.length,
|
|
158
161
|
ItemComponent: ItemComponent,
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
2
7
|
import React, { useEffect, useState } from "react";
|
|
3
8
|
import { faDroplet, faPlus, faTrash } from "@fortawesome/free-solid-svg-icons";
|
|
4
9
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
@@ -31,10 +36,9 @@ function VarHistogram(_ref) {
|
|
|
31
36
|
});
|
|
32
37
|
useEffect(() => {
|
|
33
38
|
setParams(p => {
|
|
34
|
-
return {
|
|
35
|
-
...p,
|
|
39
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
36
40
|
obsIndices: isSliced ? [...(obsIndices || [])] : null
|
|
37
|
-
};
|
|
41
|
+
});
|
|
38
42
|
});
|
|
39
43
|
}, [obsIndices, isSliced]);
|
|
40
44
|
const {
|
|
@@ -107,9 +111,9 @@ export function SelectionItem(_ref3) {
|
|
|
107
111
|
refetchOnMount: false,
|
|
108
112
|
enabled: !!dataset.diseaseDatasets.length
|
|
109
113
|
});
|
|
110
|
-
const hasDiseaseInfo = !isPending && !serverError && !!fetchedData
|
|
114
|
+
const hasDiseaseInfo = !isPending && !serverError && !!(fetchedData !== null && fetchedData !== void 0 && fetchedData.length);
|
|
111
115
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
112
|
-
className:
|
|
116
|
+
className: "d-flex justify-content-between ".concat(hasDiseaseInfo ? "cursor-pointer" : ""),
|
|
113
117
|
onClick: () => {
|
|
114
118
|
setOpenInfo(o => !o);
|
|
115
119
|
}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
1
6
|
import React, { useEffect, useState } from "react";
|
|
2
7
|
import { faTimes } from "@fortawesome/free-solid-svg-icons";
|
|
3
8
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
@@ -27,13 +32,12 @@ const useVarMean = function (varKeys) {
|
|
|
27
32
|
});
|
|
28
33
|
useEffect(() => {
|
|
29
34
|
setParams(p => {
|
|
30
|
-
return {
|
|
31
|
-
...p,
|
|
35
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
32
36
|
varKeys: _.map(varKeys, v => v.isSet ? {
|
|
33
37
|
name: v.name,
|
|
34
38
|
indices: v.vars.map(v => v.index)
|
|
35
39
|
} : v.index)
|
|
36
|
-
};
|
|
40
|
+
});
|
|
37
41
|
});
|
|
38
42
|
}, [varKeys]);
|
|
39
43
|
return useFetch(ENDPOINT, params, {
|
|
@@ -47,17 +51,19 @@ const sortMeans = (i, means) => {
|
|
|
47
51
|
return means[i.name] || _.min(_.values(means)) - 1;
|
|
48
52
|
};
|
|
49
53
|
export function VarNamesList(_ref) {
|
|
54
|
+
var _settings$selectedVar, _settings$selectedVar2;
|
|
50
55
|
let {
|
|
51
56
|
mode = SELECTION_MODES.SINGLE,
|
|
52
57
|
displayName = "genes"
|
|
53
58
|
} = _ref;
|
|
54
59
|
const settings = useSettings();
|
|
55
60
|
const dispatch = useSettingsDispatch();
|
|
56
|
-
const [active, setActive] = useState(mode === SELECTION_MODES.SINGLE ? settings.selectedVar
|
|
61
|
+
const [active, setActive] = useState(mode === SELECTION_MODES.SINGLE ? ((_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.matrix_index) || ((_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name) : settings.selectedMultiVar.map(i => i.matrix_index || i.name));
|
|
57
62
|
const [sortedVars, setSortedVars] = useState([]);
|
|
58
63
|
useEffect(() => {
|
|
59
64
|
if (mode === SELECTION_MODES.SINGLE) {
|
|
60
|
-
|
|
65
|
+
var _settings$selectedVar3, _settings$selectedVar4;
|
|
66
|
+
setActive(((_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.matrix_index) || ((_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.name));
|
|
61
67
|
}
|
|
62
68
|
}, [mode, settings.selectedVar]);
|
|
63
69
|
useEffect(() => {
|
|
@@ -108,13 +114,13 @@ export function VarNamesList(_ref) {
|
|
|
108
114
|
});
|
|
109
115
|
const newSetName = () => {
|
|
110
116
|
let n = 1;
|
|
111
|
-
let setName =
|
|
117
|
+
let setName = "Set ".concat(n);
|
|
112
118
|
const nameExists = name => {
|
|
113
119
|
return settings.vars.some(v => v.name === name);
|
|
114
120
|
};
|
|
115
121
|
while (nameExists(setName)) {
|
|
116
122
|
n++;
|
|
117
|
-
setName =
|
|
123
|
+
setName = "Set ".concat(n);
|
|
118
124
|
}
|
|
119
125
|
return setName;
|
|
120
126
|
};
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
1
6
|
import React, { useEffect, useState } from "react";
|
|
2
7
|
import { faCircleInfo } from "@fortawesome/free-solid-svg-icons";
|
|
3
8
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
@@ -11,6 +16,7 @@ import { useSettings } from "../../context/SettingsContext";
|
|
|
11
16
|
import { LoadingSpinner } from "../../utils/LoadingIndicators";
|
|
12
17
|
import { useDebouncedFetch } from "../../utils/requests";
|
|
13
18
|
export function Violin(_ref) {
|
|
19
|
+
var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3, _settings$selectedVar4, _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
|
|
14
20
|
let {
|
|
15
21
|
mode = VIOLIN_MODES.MULTIKEY
|
|
16
22
|
} = _ref;
|
|
@@ -24,30 +30,32 @@ export function Violin(_ref) {
|
|
|
24
30
|
const [data, setData] = useState([]);
|
|
25
31
|
const [layout, setLayout] = useState({});
|
|
26
32
|
const [hasSelections, setHasSelections] = useState(false);
|
|
27
|
-
const [params, setParams] = useState({
|
|
33
|
+
const [params, setParams] = useState(_objectSpread({
|
|
28
34
|
url: dataset.url,
|
|
29
35
|
mode: mode,
|
|
30
36
|
scale: settings.controls.scale.violinplot.value,
|
|
31
|
-
varNamesCol: dataset.varNamesCol
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
37
|
+
varNamesCol: dataset.varNamesCol
|
|
38
|
+
}, {
|
|
39
|
+
[VIOLIN_MODES.MULTIKEY]: {
|
|
40
|
+
varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
|
|
41
|
+
name: i.name,
|
|
42
|
+
indices: i.vars.map(v => v.index)
|
|
43
|
+
} : i.index),
|
|
44
|
+
obsKeys: [] // @TODO: implement
|
|
45
|
+
},
|
|
46
|
+
[VIOLIN_MODES.GROUPBY]: {
|
|
47
|
+
varKey: (_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet ? {
|
|
48
|
+
name: (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name,
|
|
49
|
+
indices: (_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars.map(v => v.index)
|
|
50
|
+
} : (_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.index,
|
|
51
|
+
obsCol: settings.selectedObs,
|
|
52
|
+
obsValues: !((_settings$selectedObs = settings.selectedObs) !== null && _settings$selectedObs !== void 0 && _settings$selectedObs.omit.length) ? null : _.difference(_.values((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.codes), (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.omit).map(c => {
|
|
53
|
+
var _settings$selectedObs4;
|
|
54
|
+
return (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.codesMap[c];
|
|
55
|
+
}),
|
|
56
|
+
obsIndices: isSliced ? [...(obsIndices || [])] : null
|
|
57
|
+
}
|
|
58
|
+
}[mode]));
|
|
51
59
|
// @TODO: set default scale
|
|
52
60
|
|
|
53
61
|
useEffect(() => {
|
|
@@ -58,8 +66,7 @@ export function Violin(_ref) {
|
|
|
58
66
|
setHasSelections(false);
|
|
59
67
|
}
|
|
60
68
|
setParams(p => {
|
|
61
|
-
return {
|
|
62
|
-
...p,
|
|
69
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
63
70
|
url: dataset.url,
|
|
64
71
|
mode: mode,
|
|
65
72
|
varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
|
|
@@ -68,7 +75,7 @@ export function Violin(_ref) {
|
|
|
68
75
|
} : i.index),
|
|
69
76
|
scale: settings.controls.scale.violinplot.value,
|
|
70
77
|
varNamesCol: dataset.varNamesCol
|
|
71
|
-
};
|
|
78
|
+
});
|
|
72
79
|
});
|
|
73
80
|
} else if (mode === VIOLIN_MODES.GROUPBY) {
|
|
74
81
|
if (settings.selectedObs && settings.selectedVar) {
|
|
@@ -77,20 +84,23 @@ export function Violin(_ref) {
|
|
|
77
84
|
setHasSelections(false);
|
|
78
85
|
}
|
|
79
86
|
setParams(p => {
|
|
80
|
-
|
|
81
|
-
|
|
87
|
+
var _settings$selectedVar5, _settings$selectedVar6, _settings$selectedVar7, _settings$selectedVar8, _settings$selectedObs5, _settings$selectedObs6, _settings$selectedObs7;
|
|
88
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
82
89
|
url: dataset.url,
|
|
83
90
|
mode: mode,
|
|
84
|
-
varKey: settings.selectedVar
|
|
85
|
-
name: settings.selectedVar
|
|
86
|
-
indices: settings.selectedVar
|
|
87
|
-
} : settings.selectedVar
|
|
91
|
+
varKey: (_settings$selectedVar5 = settings.selectedVar) !== null && _settings$selectedVar5 !== void 0 && _settings$selectedVar5.isSet ? {
|
|
92
|
+
name: (_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.name,
|
|
93
|
+
indices: (_settings$selectedVar7 = settings.selectedVar) === null || _settings$selectedVar7 === void 0 ? void 0 : _settings$selectedVar7.vars.map(v => v.index)
|
|
94
|
+
} : (_settings$selectedVar8 = settings.selectedVar) === null || _settings$selectedVar8 === void 0 ? void 0 : _settings$selectedVar8.index,
|
|
88
95
|
obsCol: settings.selectedObs,
|
|
89
|
-
obsValues: !settings.selectedObs
|
|
96
|
+
obsValues: !((_settings$selectedObs5 = settings.selectedObs) !== null && _settings$selectedObs5 !== void 0 && _settings$selectedObs5.omit.length) ? null : _.difference(_.values((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.codes), (_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.omit).map(c => {
|
|
97
|
+
var _settings$selectedObs8;
|
|
98
|
+
return (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.codesMap[c];
|
|
99
|
+
}),
|
|
90
100
|
obsIndices: isSliced ? [...(obsIndices || [])] : null,
|
|
91
101
|
scale: settings.controls.scale.violinplot.value,
|
|
92
102
|
varNamesCol: dataset.varNamesCol
|
|
93
|
-
};
|
|
103
|
+
});
|
|
94
104
|
});
|
|
95
105
|
}
|
|
96
106
|
}, [settings.controls.scale.violinplot.value, settings.selectedMultiVar, settings.selectedObs, settings.selectedVar, dataset.url, dataset.varNamesCol, obsIndices, isSliced, mode]);
|
|
@@ -119,7 +129,7 @@ export function Violin(_ref) {
|
|
|
119
129
|
maxWidth: "100%",
|
|
120
130
|
maxHeight: "100%"
|
|
121
131
|
}
|
|
122
|
-
}), fetchedData
|
|
132
|
+
}), (fetchedData === null || fetchedData === void 0 ? void 0 : fetchedData.resampled) && /*#__PURE__*/React.createElement(Alert, {
|
|
123
133
|
variant: "warning"
|
|
124
134
|
}, /*#__PURE__*/React.createElement("b", null, "Warning:"), " For performance reasons this plot was generated with resampled data. It will not be exactly the same as one produced with the entire dataset. \xA0", /*#__PURE__*/React.createElement(OverlayTrigger, {
|
|
125
135
|
placement: "top",
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
const _excluded = ["dataset_url", "children"];
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
8
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
1
9
|
import React, { createContext, useContext } from "react";
|
|
2
10
|
import { createSyncStoragePersister } from "@tanstack/query-sync-storage-persister";
|
|
3
11
|
import { QueryClient, QueryCache } from "@tanstack/react-query";
|
|
@@ -37,7 +45,7 @@ const persistOptions = {
|
|
|
37
45
|
state
|
|
38
46
|
} = _ref;
|
|
39
47
|
if (state.status === "success") {
|
|
40
|
-
return persistKeys.includes(queryKey
|
|
48
|
+
return persistKeys.includes(queryKey === null || queryKey === void 0 ? void 0 : queryKey[0]);
|
|
41
49
|
}
|
|
42
50
|
return false;
|
|
43
51
|
}
|
|
@@ -55,14 +63,13 @@ const initialDataset = {
|
|
|
55
63
|
};
|
|
56
64
|
export function DatasetProvider(_ref2) {
|
|
57
65
|
let {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const dataset = _.assign(initialDataset, {
|
|
63
|
-
url: dataset_url
|
|
64
|
-
|
|
65
|
-
});
|
|
66
|
+
dataset_url,
|
|
67
|
+
children
|
|
68
|
+
} = _ref2,
|
|
69
|
+
dataset_params = _objectWithoutProperties(_ref2, _excluded);
|
|
70
|
+
const dataset = _.assign(initialDataset, _objectSpread({
|
|
71
|
+
url: dataset_url
|
|
72
|
+
}, dataset_params));
|
|
66
73
|
return /*#__PURE__*/React.createElement(DatasetContext.Provider, {
|
|
67
74
|
value: dataset
|
|
68
75
|
}, /*#__PURE__*/React.createElement(SettingsProvider, {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
1
6
|
import React, { useReducer, createContext, useContext } from "react";
|
|
2
7
|
export const FilteredDataContext = /*#__PURE__*/createContext(null);
|
|
3
8
|
export const FilteredDataDispatchContext = /*#__PURE__*/createContext(null);
|
|
@@ -12,9 +17,7 @@ export function FilterProvider(_ref) {
|
|
|
12
17
|
let {
|
|
13
18
|
children
|
|
14
19
|
} = _ref;
|
|
15
|
-
const [filteredData, dispatch] = useReducer(filterReducer, {
|
|
16
|
-
...initialFilterData
|
|
17
|
-
});
|
|
20
|
+
const [filteredData, dispatch] = useReducer(filterReducer, _objectSpread({}, initialFilterData));
|
|
18
21
|
return /*#__PURE__*/React.createElement(FilteredDataContext.Provider, {
|
|
19
22
|
value: filteredData
|
|
20
23
|
}, /*#__PURE__*/React.createElement(FilteredDataDispatchContext.Provider, {
|
|
@@ -31,14 +34,13 @@ function filterReducer(filteredData, action) {
|
|
|
31
34
|
switch (action.type) {
|
|
32
35
|
case "set.obs.indices":
|
|
33
36
|
{
|
|
34
|
-
return {
|
|
35
|
-
...filteredData,
|
|
37
|
+
return _objectSpread(_objectSpread({}, filteredData), {}, {
|
|
36
38
|
obsIndices: action.indices,
|
|
37
39
|
valueMin: action.valueMin,
|
|
38
40
|
valueMax: action.valueMax,
|
|
39
41
|
slicedLength: action.slicedLength,
|
|
40
42
|
isSliced: action.isSliced
|
|
41
|
-
};
|
|
43
|
+
});
|
|
42
44
|
}
|
|
43
45
|
default:
|
|
44
46
|
{
|