@haniffalab/cherita-react 0.2.0-dev.2025-01-17.f9a0f419 → 0.2.0-dev.2025-01-28.7a60aa67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/components/dotplot/Dotplot.js +19 -26
- package/dist/components/dotplot/DotplotControls.js +106 -147
- package/dist/components/full-page/FullPage.js +99 -153
- package/dist/components/heatmap/Heatmap.js +19 -26
- package/dist/components/heatmap/HeatmapControls.js +7 -13
- package/dist/components/matrixplot/Matrixplot.js +19 -26
- package/dist/components/matrixplot/MatrixplotControls.js +14 -35
- package/dist/components/obs-list/ObsItem.js +182 -239
- package/dist/components/obs-list/ObsList.js +40 -49
- package/dist/components/obs-list/ObsToolbar.js +44 -55
- package/dist/components/obsm-list/ObsmList.js +15 -23
- package/dist/components/offcanvas/index.js +45 -75
- package/dist/components/pseudospatial/Pseudospatial.js +26 -34
- package/dist/components/pseudospatial/PseudospatialControls.js +1 -2
- package/dist/components/pseudospatial/PseudospatialToolbar.js +37 -65
- package/dist/components/scatterplot/Scatterplot.js +74 -89
- package/dist/components/scatterplot/ScatterplotControls.js +28 -39
- package/dist/components/scatterplot/SpatialControls.js +94 -117
- package/dist/components/scatterplot/Toolbox.js +16 -24
- package/dist/components/search-bar/SearchBar.js +45 -54
- package/dist/components/search-bar/SearchResults.js +36 -49
- package/dist/components/var-list/VarItem.js +114 -161
- package/dist/components/var-list/VarList.js +83 -127
- package/dist/components/var-list/VarListToolbar.js +48 -59
- package/dist/components/var-list/VarSet.js +95 -120
- package/dist/components/violin/Violin.js +31 -46
- package/dist/components/violin/ViolinControls.js +8 -22
- package/dist/context/DatasetContext.js +17 -27
- package/dist/context/FilterContext.js +8 -12
- package/dist/context/ZarrDataContext.js +6 -9
- package/dist/helpers/color-helper.js +11 -12
- package/dist/helpers/map-helper.js +7 -8
- package/dist/helpers/zarr-helper.js +9 -15
- package/dist/utils/Histogram.js +34 -41
- package/dist/utils/ImageViewer.js +9 -14
- package/dist/utils/Legend.js +30 -40
- package/dist/utils/LoadingIndicators.js +16 -19
- package/dist/utils/VirtualizedList.js +32 -39
- package/dist/utils/requests.js +15 -25
- package/dist/utils/string.js +4 -9
- package/dist/utils/zarrData.js +2 -8
- package/package.json +40 -34
|
@@ -14,11 +14,11 @@ var _VarItem = require("./VarItem");
|
|
|
14
14
|
var _constants = require("../../constants/constants");
|
|
15
15
|
var _DatasetContext = require("../../context/DatasetContext");
|
|
16
16
|
var _SearchBar = require("../search-bar/SearchBar");
|
|
17
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
18
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
20
19
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
21
20
|
// @TODO: add button to score genes and plot
|
|
21
|
+
|
|
22
22
|
const addVarToSet = (dispatch, set, v) => {
|
|
23
23
|
dispatch({
|
|
24
24
|
type: "add.varSet.var",
|
|
@@ -26,127 +26,102 @@ const addVarToSet = (dispatch, set, v) => {
|
|
|
26
26
|
var: v
|
|
27
27
|
});
|
|
28
28
|
};
|
|
29
|
-
function SingleSelectionSet(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
} = _ref;
|
|
29
|
+
function SingleSelectionSet({
|
|
30
|
+
set,
|
|
31
|
+
isActive,
|
|
32
|
+
selectSet,
|
|
33
|
+
removeSet,
|
|
34
|
+
removeSetVar,
|
|
35
|
+
showSearchBar = true
|
|
36
|
+
}) {
|
|
38
37
|
const [openSet, setOpenSet] = (0, _react.useState)(false);
|
|
39
38
|
const varList = set.vars.length ? _lodash.default.map(set.vars, v => {
|
|
40
|
-
return /*#__PURE__*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
}) : /*#__PURE__*/
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
in: openSet,
|
|
103
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
104
|
-
className: "mt-2",
|
|
105
|
-
children: [showSearchBar &&
|
|
106
|
-
/*#__PURE__*/
|
|
107
|
-
// @TODO: fix how results are displayed, should be placed on top of parent components
|
|
108
|
-
(0, _jsxRuntime.jsx)(_SearchBar.SearchBar, {
|
|
109
|
-
handleSelect: (d, i) => addVarToSet(d, set, i)
|
|
110
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
111
|
-
className: "mx-2",
|
|
112
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup, {
|
|
113
|
-
variant: "flush",
|
|
114
|
-
children: varList
|
|
115
|
-
})
|
|
116
|
-
})]
|
|
117
|
-
})
|
|
118
|
-
})]
|
|
119
|
-
});
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
|
|
40
|
+
key: v.name
|
|
41
|
+
}, /*#__PURE__*/_react.default.createElement(_VarItem.SingleSelectionItem, {
|
|
42
|
+
item: v,
|
|
43
|
+
showSetColorEncoding: false,
|
|
44
|
+
removeVar: () => removeSetVar(v)
|
|
45
|
+
}));
|
|
46
|
+
}) : /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
47
|
+
className: "text-muted"
|
|
48
|
+
}, "No features in this set"));
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
50
|
+
className: "d-flex justify-content-between cursor-pointer",
|
|
51
|
+
onClick: () => {
|
|
52
|
+
setOpenSet(o => !o);
|
|
53
|
+
}
|
|
54
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
55
|
+
className: "d-flex justify-content-between align-items-center w-100"
|
|
56
|
+
}, /*#__PURE__*/_react.default.createElement("div", null, set.name), /*#__PURE__*/_react.default.createElement("div", {
|
|
57
|
+
className: "d-flex align-items-center gap-1"
|
|
58
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.OverlayTrigger, {
|
|
59
|
+
placement: "top",
|
|
60
|
+
overlay: /*#__PURE__*/_react.default.createElement(_reactBootstrap.Tooltip, null, "This set represents the mean value of its features")
|
|
61
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
62
|
+
icon: _freeSolidSvgIcons.faCircleInfo
|
|
63
|
+
})), /*#__PURE__*/_react.default.createElement(_iconsMaterial.List, null), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
64
|
+
type: "button",
|
|
65
|
+
key: set.name,
|
|
66
|
+
variant: isActive ? "primary" : "outline-primary",
|
|
67
|
+
className: "m-0 p-0 px-1",
|
|
68
|
+
onClick: e => {
|
|
69
|
+
e.stopPropagation();
|
|
70
|
+
selectSet();
|
|
71
|
+
},
|
|
72
|
+
disabled: !set.vars.length,
|
|
73
|
+
title: "Set as color encoding"
|
|
74
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
75
|
+
icon: _freeSolidSvgIcons.faDroplet
|
|
76
|
+
})), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
77
|
+
type: "button",
|
|
78
|
+
className: "m-0 p-0 px-1",
|
|
79
|
+
variant: "outline-secondary",
|
|
80
|
+
title: "Remove from list",
|
|
81
|
+
onClick: e => {
|
|
82
|
+
e.stopPropagation();
|
|
83
|
+
removeSet();
|
|
84
|
+
}
|
|
85
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
86
|
+
icon: _freeSolidSvgIcons.faTrash
|
|
87
|
+
}))))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Collapse, {
|
|
88
|
+
in: openSet
|
|
89
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
90
|
+
className: "mt-2"
|
|
91
|
+
}, showSearchBar &&
|
|
92
|
+
/*#__PURE__*/
|
|
93
|
+
// @TODO: fix how results are displayed, should be placed on top of parent components
|
|
94
|
+
_react.default.createElement(_SearchBar.SearchBar, {
|
|
95
|
+
handleSelect: (d, i) => addVarToSet(d, set, i)
|
|
96
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
97
|
+
className: "mx-2"
|
|
98
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, {
|
|
99
|
+
variant: "flush"
|
|
100
|
+
}, varList)))));
|
|
120
101
|
}
|
|
121
|
-
function MultipleSelectionSet(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
children: set.name
|
|
139
|
-
}, set.name)
|
|
140
|
-
})
|
|
141
|
-
})
|
|
142
|
-
});
|
|
102
|
+
function MultipleSelectionSet({
|
|
103
|
+
set,
|
|
104
|
+
isActive,
|
|
105
|
+
toggleSet
|
|
106
|
+
}) {
|
|
107
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
108
|
+
className: "d-flex"
|
|
109
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
110
|
+
className: "flex-grow-1"
|
|
111
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
112
|
+
type: "button",
|
|
113
|
+
key: set.name,
|
|
114
|
+
variant: isActive ? "primary" : "outline-primary",
|
|
115
|
+
className: "m-0 p-0 px-1",
|
|
116
|
+
onClick: toggleSet,
|
|
117
|
+
title: set.name
|
|
118
|
+
}, set.name))));
|
|
143
119
|
}
|
|
144
|
-
function VarSet(
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
} = _ref3;
|
|
120
|
+
function VarSet({
|
|
121
|
+
set,
|
|
122
|
+
active,
|
|
123
|
+
mode = _constants.SELECTION_MODES.SINGLE
|
|
124
|
+
}) {
|
|
150
125
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
151
126
|
const dispatch = (0, _DatasetContext.useDatasetDispatch)();
|
|
152
127
|
const selectSet = () => {
|
|
@@ -204,7 +179,7 @@ function VarSet(_ref3) {
|
|
|
204
179
|
}
|
|
205
180
|
};
|
|
206
181
|
if (set && mode === _constants.SELECTION_MODES.SINGLE) {
|
|
207
|
-
return /*#__PURE__*/
|
|
182
|
+
return /*#__PURE__*/_react.default.createElement(SingleSelectionSet, {
|
|
208
183
|
set: set,
|
|
209
184
|
isActive: dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR && active === set.name,
|
|
210
185
|
selectSet: selectSet,
|
|
@@ -212,7 +187,7 @@ function VarSet(_ref3) {
|
|
|
212
187
|
removeSetVar: v => removeSetVar(v)
|
|
213
188
|
});
|
|
214
189
|
} else if (mode === _constants.SELECTION_MODES.MULTIPLE) {
|
|
215
|
-
return /*#__PURE__*/
|
|
190
|
+
return /*#__PURE__*/_react.default.createElement(MultipleSelectionSet, {
|
|
216
191
|
set: set,
|
|
217
192
|
isActive: _lodash.default.includes(active, set.name),
|
|
218
193
|
toggleSet: () => toggleSet(set)
|
|
@@ -15,14 +15,12 @@ var _DatasetContext = require("../../context/DatasetContext");
|
|
|
15
15
|
var _FilterContext = require("../../context/FilterContext");
|
|
16
16
|
var _LoadingIndicators = require("../../utils/LoadingIndicators");
|
|
17
17
|
var _requests = require("../../utils/requests");
|
|
18
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
19
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
21
20
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
22
|
-
function Violin(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} = _ref;
|
|
21
|
+
function Violin({
|
|
22
|
+
mode = _constants.VIOLIN_MODES.MULTIKEY
|
|
23
|
+
}) {
|
|
26
24
|
const ENDPOINT = "violin";
|
|
27
25
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
28
26
|
const {
|
|
@@ -117,48 +115,35 @@ function Violin(_ref) {
|
|
|
117
115
|
}, [fetchedData, hasSelections, isPending, serverError]);
|
|
118
116
|
if (!serverError) {
|
|
119
117
|
if (hasSelections) {
|
|
120
|
-
return /*#__PURE__*/
|
|
121
|
-
className: "cherita-violin position-relative"
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}),
|
|
139
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
|
|
140
|
-
icon: _freeSolidSvgIcons.faCircleInfo
|
|
141
|
-
})
|
|
142
|
-
})]
|
|
143
|
-
})]
|
|
144
|
-
});
|
|
118
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
119
|
+
className: "cherita-violin position-relative"
|
|
120
|
+
}, isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), /*#__PURE__*/_react.default.createElement(_reactPlotly.default, {
|
|
121
|
+
data: data,
|
|
122
|
+
layout: layout,
|
|
123
|
+
useResizeHandler: true,
|
|
124
|
+
style: {
|
|
125
|
+
maxWidth: "100%",
|
|
126
|
+
maxHeight: "100%"
|
|
127
|
+
}
|
|
128
|
+
}), fetchedData?.resampled && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
|
|
129
|
+
variant: "warning"
|
|
130
|
+
}, /*#__PURE__*/_react.default.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.default.createElement(_reactBootstrap.OverlayTrigger, {
|
|
131
|
+
placement: "top",
|
|
132
|
+
overlay: /*#__PURE__*/_react.default.createElement(_reactBootstrap.Tooltip, null, "Resampled to 100K values following a Monte Carlo style approach to help ensure resampled data is a good representation of the original dataset's distribution.")
|
|
133
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
134
|
+
icon: _freeSolidSvgIcons.faCircleInfo
|
|
135
|
+
}))));
|
|
145
136
|
}
|
|
146
|
-
return /*#__PURE__*/
|
|
147
|
-
className: "cherita-violin"
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
children: "Select categories and a feature"
|
|
154
|
-
})]
|
|
155
|
-
});
|
|
137
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
138
|
+
className: "cherita-violin"
|
|
139
|
+
}, mode === _constants.VIOLIN_MODES.MULTIKEY && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
|
|
140
|
+
variant: "light"
|
|
141
|
+
}, "Select features"), mode === _constants.VIOLIN_MODES.GROUPBY && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
|
|
142
|
+
variant: "light"
|
|
143
|
+
}, "Select categories and a feature"));
|
|
156
144
|
} else {
|
|
157
|
-
return /*#__PURE__*/
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
children: serverError.message
|
|
161
|
-
})
|
|
162
|
-
});
|
|
145
|
+
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
|
|
146
|
+
variant: "danger"
|
|
147
|
+
}, serverError.message));
|
|
163
148
|
}
|
|
164
149
|
}
|
|
@@ -9,12 +9,12 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
9
9
|
var _reactBootstrap = require("react-bootstrap");
|
|
10
10
|
var _constants = require("../../constants/constants");
|
|
11
11
|
var _DatasetContext = require("../../context/DatasetContext");
|
|
12
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
function ViolinControls() {
|
|
15
14
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
16
15
|
const dispatch = (0, _DatasetContext.useDatasetDispatch)();
|
|
17
|
-
const scaleList = _lodash.default.values(_constants.VIOLINPLOT_SCALES).map(scale => /*#__PURE__*/
|
|
16
|
+
const scaleList = _lodash.default.values(_constants.VIOLINPLOT_SCALES).map(scale => /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
|
|
17
|
+
key: scale.value,
|
|
18
18
|
active: dataset.controls.scale.violinplot === scale,
|
|
19
19
|
onClick: () => {
|
|
20
20
|
dispatch({
|
|
@@ -22,24 +22,10 @@ function ViolinControls() {
|
|
|
22
22
|
plot: "violinplot",
|
|
23
23
|
scale: scale
|
|
24
24
|
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.InputGroup.Text, {
|
|
32
|
-
children: "Scale"
|
|
33
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Dropdown, {
|
|
34
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Toggle, {
|
|
35
|
-
id: "dropdownStandardScale",
|
|
36
|
-
variant: "light",
|
|
37
|
-
children: dataset.controls.scale.violinplot.name
|
|
38
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Menu, {
|
|
39
|
-
children: scaleList
|
|
40
|
-
})]
|
|
41
|
-
})]
|
|
42
|
-
})
|
|
43
|
-
})
|
|
44
|
-
});
|
|
25
|
+
}
|
|
26
|
+
}, scale.name));
|
|
27
|
+
return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ButtonToolbar, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.InputGroup, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.InputGroup.Text, null, "Scale"), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Toggle, {
|
|
28
|
+
id: "dropdownStandardScale",
|
|
29
|
+
variant: "light"
|
|
30
|
+
}, dataset.controls.scale.violinplot.name), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Menu, null, scaleList)))));
|
|
45
31
|
}
|
|
@@ -15,7 +15,6 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
15
15
|
var _FilterContext = require("./FilterContext");
|
|
16
16
|
var _ZarrDataContext = require("./ZarrDataContext");
|
|
17
17
|
var _constants = require("../constants/constants");
|
|
18
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
19
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
21
20
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -40,11 +39,10 @@ const persistOptions = {
|
|
|
40
39
|
storage: window.localStorage
|
|
41
40
|
}),
|
|
42
41
|
dehydrateOptions: {
|
|
43
|
-
shouldDehydrateQuery:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
} = _ref;
|
|
42
|
+
shouldDehydrateQuery: ({
|
|
43
|
+
queryKey,
|
|
44
|
+
state
|
|
45
|
+
}) => {
|
|
48
46
|
if (state.status === "success") {
|
|
49
47
|
return persistKeys.includes(queryKey?.[0]);
|
|
50
48
|
}
|
|
@@ -113,12 +111,11 @@ const initializer = initialState => {
|
|
|
113
111
|
const localValues = _lodash.default.pick(localObj, keys);
|
|
114
112
|
return _lodash.default.assign(initialState, localValues);
|
|
115
113
|
};
|
|
116
|
-
function DatasetProvider(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
} = _ref2;
|
|
114
|
+
function DatasetProvider({
|
|
115
|
+
dataset_url,
|
|
116
|
+
children,
|
|
117
|
+
...dataset_params
|
|
118
|
+
}) {
|
|
122
119
|
const [dataset, dispatch] = (0, _react.useReducer)(datasetReducer, _lodash.default.assign(initializer({
|
|
123
120
|
url: dataset_url,
|
|
124
121
|
...initialDataset
|
|
@@ -138,21 +135,14 @@ function DatasetProvider(_ref2) {
|
|
|
138
135
|
}
|
|
139
136
|
}
|
|
140
137
|
}, [dataset]);
|
|
141
|
-
return /*#__PURE__*/
|
|
142
|
-
value: dataset
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ZarrDataContext.ZarrDataProvider, {
|
|
150
|
-
children: children
|
|
151
|
-
})
|
|
152
|
-
})
|
|
153
|
-
})
|
|
154
|
-
})
|
|
155
|
-
});
|
|
138
|
+
return /*#__PURE__*/_react.default.createElement(DatasetContext.Provider, {
|
|
139
|
+
value: dataset
|
|
140
|
+
}, /*#__PURE__*/_react.default.createElement(DatasetDispatchContext.Provider, {
|
|
141
|
+
value: dispatch
|
|
142
|
+
}, /*#__PURE__*/_react.default.createElement(_reactQueryPersistClient.PersistQueryClientProvider, {
|
|
143
|
+
client: queryClient,
|
|
144
|
+
persistOptions: persistOptions
|
|
145
|
+
}, /*#__PURE__*/_react.default.createElement(_FilterContext.FilterProvider, null, /*#__PURE__*/_react.default.createElement(_ZarrDataContext.ZarrDataProvider, null, children)))));
|
|
156
146
|
}
|
|
157
147
|
function useDataset() {
|
|
158
148
|
return (0, _react.useContext)(DatasetContext);
|
|
@@ -8,7 +8,6 @@ exports.FilteredDataDispatchContext = exports.FilteredDataContext = void 0;
|
|
|
8
8
|
exports.useFilteredData = useFilteredData;
|
|
9
9
|
exports.useFilteredDataDispatch = useFilteredDataDispatch;
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
11
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
12
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
13
|
const FilteredDataContext = exports.FilteredDataContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
@@ -20,20 +19,17 @@ const initialFilterData = {
|
|
|
20
19
|
slicedLength: null,
|
|
21
20
|
isSliced: false
|
|
22
21
|
};
|
|
23
|
-
function FilterProvider(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
} = _ref;
|
|
22
|
+
function FilterProvider({
|
|
23
|
+
children
|
|
24
|
+
}) {
|
|
27
25
|
const [filteredData, dispatch] = (0, _react.useReducer)(filterReducer, {
|
|
28
26
|
...initialFilterData
|
|
29
27
|
});
|
|
30
|
-
return /*#__PURE__*/
|
|
31
|
-
value: filteredData
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
})
|
|
36
|
-
});
|
|
28
|
+
return /*#__PURE__*/_react.default.createElement(FilteredDataContext.Provider, {
|
|
29
|
+
value: filteredData
|
|
30
|
+
}, /*#__PURE__*/_react.default.createElement(FilteredDataDispatchContext.Provider, {
|
|
31
|
+
value: dispatch
|
|
32
|
+
}, children));
|
|
37
33
|
}
|
|
38
34
|
function useFilteredData() {
|
|
39
35
|
return (0, _react.useContext)(FilteredDataContext);
|
|
@@ -8,14 +8,12 @@ exports.useZarrData = useZarrData;
|
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _Filter = require("../utils/Filter");
|
|
10
10
|
var _zarrData = require("../utils/zarrData");
|
|
11
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
11
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
12
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
13
|
const ZarrDataContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
15
|
-
function ZarrDataProvider(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} = _ref;
|
|
14
|
+
function ZarrDataProvider({
|
|
15
|
+
children
|
|
16
|
+
}) {
|
|
19
17
|
const obsmData = (0, _zarrData.useObsmData)();
|
|
20
18
|
const obsData = (0, _zarrData.useObsData)();
|
|
21
19
|
const xData = (0, _zarrData.useXData)();
|
|
@@ -27,10 +25,9 @@ function ZarrDataProvider(_ref) {
|
|
|
27
25
|
serverError: obsmData.serverError || obsData.serverError || xData.serverError
|
|
28
26
|
};
|
|
29
27
|
(0, _Filter.useFilter)(data);
|
|
30
|
-
return /*#__PURE__*/
|
|
31
|
-
value: data
|
|
32
|
-
|
|
33
|
-
});
|
|
28
|
+
return /*#__PURE__*/_react.default.createElement(ZarrDataContext.Provider, {
|
|
29
|
+
value: data
|
|
30
|
+
}, children);
|
|
34
31
|
}
|
|
35
32
|
function useZarrData() {
|
|
36
33
|
return (0, _react.useContext)(ZarrDataContext);
|
|
@@ -42,18 +42,17 @@ const rgbToHex = color => {
|
|
|
42
42
|
exports.rgbToHex = rgbToHex;
|
|
43
43
|
const useColor = () => {
|
|
44
44
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
45
|
-
const getColor = (0, _react.useCallback)(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
} = _ref;
|
|
45
|
+
const getColor = (0, _react.useCallback)(({
|
|
46
|
+
value,
|
|
47
|
+
categorical = false,
|
|
48
|
+
grayOut = false,
|
|
49
|
+
grayParams: {
|
|
50
|
+
alpha = 0.75,
|
|
51
|
+
gray = 0.95
|
|
52
|
+
} = {},
|
|
53
|
+
colorEncoding = dataset.colorEncoding,
|
|
54
|
+
colorscale = null
|
|
55
|
+
}) => {
|
|
57
56
|
const colormap = colorscale || _colorscales.COLORSCALES[categorical ? "Accent" : dataset.controls.colorScale];
|
|
58
57
|
if (colorEncoding) {
|
|
59
58
|
if (grayOut) {
|
|
@@ -6,14 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.MapHelper = void 0;
|
|
7
7
|
var _core = require("@deck.gl/core");
|
|
8
8
|
class MapHelper {
|
|
9
|
-
fitBounds(coords
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
9
|
+
fitBounds(coords, {
|
|
10
|
+
width = 400,
|
|
11
|
+
height = 600
|
|
12
|
+
} = {
|
|
13
|
+
width: 400,
|
|
14
|
+
height: 600
|
|
15
|
+
}) {
|
|
17
16
|
let view = new _core.WebMercatorViewport({
|
|
18
17
|
width: width,
|
|
19
18
|
height: height,
|
|
@@ -9,11 +9,10 @@ var _zarr = require("zarr");
|
|
|
9
9
|
const GET_OPTIONS = exports.GET_OPTIONS = {
|
|
10
10
|
concurrencyLimit: 10,
|
|
11
11
|
// max number of concurrent requests (default 10)
|
|
12
|
-
progressCallback:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
} = _ref;
|
|
12
|
+
progressCallback: ({
|
|
13
|
+
progress,
|
|
14
|
+
queueSize
|
|
15
|
+
}) => {
|
|
17
16
|
console.log(`${progress / queueSize * 100}% complete.`);
|
|
18
17
|
} // callback executed after each request
|
|
19
18
|
};
|
|
@@ -38,13 +37,10 @@ const fetchDataFromZarr = async (url, path, s, opts) => {
|
|
|
38
37
|
throw new Error(error.message);
|
|
39
38
|
}
|
|
40
39
|
};
|
|
41
|
-
const useZarr =
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
} = _ref2;
|
|
46
|
-
let s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
47
|
-
let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
40
|
+
const useZarr = ({
|
|
41
|
+
url,
|
|
42
|
+
path
|
|
43
|
+
}, s = null, opts = {}) => {
|
|
48
44
|
const {
|
|
49
45
|
enabled = true
|
|
50
46
|
} = opts;
|
|
@@ -93,9 +89,7 @@ const aggregateData = (inputs, data) => {
|
|
|
93
89
|
};
|
|
94
90
|
|
|
95
91
|
// @TODO: return response of successfully fetched data when error occurs
|
|
96
|
-
const useMultipleZarr =
|
|
97
|
-
let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
98
|
-
let agg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : aggregateData;
|
|
92
|
+
const useMultipleZarr = (inputs, opts = {}, agg = aggregateData) => {
|
|
99
93
|
const {
|
|
100
94
|
enabled = true
|
|
101
95
|
} = opts;
|