@haniffalab/cherita-react 0.2.0-dev.2025-01-22.f523ac5e → 0.2.0-dev.2025-01-28.4d5ab0a4
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 -148
- 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 +112 -160
- package/dist/components/var-list/VarList.js +81 -124
- 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
|
@@ -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;
|
package/dist/utils/Histogram.js
CHANGED
|
@@ -9,46 +9,39 @@ var _xCharts = require("@mui/x-charts");
|
|
|
9
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
10
10
|
var _LoadingIndicators = require("./LoadingIndicators");
|
|
11
11
|
var _string = require("./string");
|
|
12
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
function Histogram(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
className: "feature-histogram-tooltip"
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
})
|
|
52
|
-
}) : null
|
|
53
|
-
});
|
|
13
|
+
function Histogram({
|
|
14
|
+
data,
|
|
15
|
+
isPending,
|
|
16
|
+
altColor = false
|
|
17
|
+
}) {
|
|
18
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
19
|
+
className: "feature-histogram-container"
|
|
20
|
+
}, isPending ? /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingLinear, null) : data ? /*#__PURE__*/_react.default.createElement("div", {
|
|
21
|
+
className: "feature-histogram m-1"
|
|
22
|
+
}, /*#__PURE__*/_react.default.createElement(_xCharts.SparkLineChart, {
|
|
23
|
+
plotType: "bar",
|
|
24
|
+
data: data.log10,
|
|
25
|
+
margin: {
|
|
26
|
+
top: 0,
|
|
27
|
+
right: 0,
|
|
28
|
+
bottom: 0,
|
|
29
|
+
left: 0
|
|
30
|
+
},
|
|
31
|
+
colors: altColor ? _xCharts.mangoFusionPalette : _xCharts.blueberryTwilightPalette,
|
|
32
|
+
showHighlight: true,
|
|
33
|
+
showTooltip: true,
|
|
34
|
+
valueFormatter: (v, {
|
|
35
|
+
dataIndex
|
|
36
|
+
}) => `${(0, _string.formatNumerical)(data.hist[dataIndex])}`,
|
|
37
|
+
xAxis: {
|
|
38
|
+
data: _lodash.default.range(data.bin_edges?.length) || null,
|
|
39
|
+
valueFormatter: v => `Bin [${(0, _string.formatNumerical)(data.bin_edges[v][0], _string.FORMATS.EXPONENTIAL)}, ${(0, _string.formatNumerical)(data.bin_edges[v][1], _string.FORMATS.EXPONENTIAL)}${v === data.bin_edges.length - 1 ? "]" : ")"}`
|
|
40
|
+
},
|
|
41
|
+
slotProps: {
|
|
42
|
+
popper: {
|
|
43
|
+
className: "feature-histogram-tooltip"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
})) : null);
|
|
54
47
|
}
|
|
@@ -6,22 +6,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.ImageViewer = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactBootstrap = require("react-bootstrap");
|
|
9
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
9
|
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); }
|
|
11
10
|
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; }
|
|
12
|
-
const ImageViewer =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} = _ref;
|
|
11
|
+
const ImageViewer = ({
|
|
12
|
+
src,
|
|
13
|
+
alt,
|
|
14
|
+
className = "img-fluid"
|
|
15
|
+
}) => {
|
|
18
16
|
const [error, setError] = (0, _react.useState)(false);
|
|
19
17
|
const handleError = () => {
|
|
20
18
|
console.error("Error loading image from src:", src);
|
|
21
19
|
setError(true);
|
|
22
20
|
};
|
|
23
21
|
if (!error) {
|
|
24
|
-
return /*#__PURE__*/
|
|
22
|
+
return /*#__PURE__*/_react.default.createElement("img", {
|
|
25
23
|
src: src,
|
|
26
24
|
alt: alt,
|
|
27
25
|
className: className,
|
|
@@ -29,12 +27,9 @@ const ImageViewer = _ref => {
|
|
|
29
27
|
onError: handleError
|
|
30
28
|
});
|
|
31
29
|
} else {
|
|
32
|
-
return /*#__PURE__*/(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
children: "Failed to load image"
|
|
36
|
-
})
|
|
37
|
-
});
|
|
30
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
|
|
31
|
+
variant: "danger"
|
|
32
|
+
}, "Failed to load image"));
|
|
38
33
|
}
|
|
39
34
|
};
|
|
40
35
|
exports.ImageViewer = ImageViewer;
|
package/dist/utils/Legend.js
CHANGED
|
@@ -10,16 +10,14 @@ var _string = require("./string");
|
|
|
10
10
|
var _constants = require("../constants/constants");
|
|
11
11
|
var _DatasetContext = require("../context/DatasetContext");
|
|
12
12
|
var _colorHelper = require("../helpers/color-helper");
|
|
13
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
-
function Legend(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
} = _ref;
|
|
14
|
+
function Legend({
|
|
15
|
+
isCategorical = false,
|
|
16
|
+
min = 0,
|
|
17
|
+
max = 1,
|
|
18
|
+
colorscale = null,
|
|
19
|
+
addText = ""
|
|
20
|
+
}) {
|
|
23
21
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
24
22
|
const {
|
|
25
23
|
getColor
|
|
@@ -31,44 +29,36 @@ function Legend(_ref) {
|
|
|
31
29
|
categorical: isCategorical,
|
|
32
30
|
colorscale: colorscale
|
|
33
31
|
}));
|
|
34
|
-
return /*#__PURE__*/
|
|
32
|
+
return /*#__PURE__*/_react.React.createElement("span", {
|
|
33
|
+
key: i,
|
|
35
34
|
className: "grad-step",
|
|
36
35
|
style: {
|
|
37
36
|
backgroundColor: color
|
|
38
37
|
}
|
|
39
|
-
}
|
|
38
|
+
});
|
|
40
39
|
});
|
|
41
40
|
}, [colorscale, getColor, isCategorical]);
|
|
42
41
|
if (dataset.colorEncoding && !isCategorical) {
|
|
43
|
-
return /*#__PURE__*/
|
|
44
|
-
className: "cherita-legend"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
57
|
-
className: "domain-max",
|
|
58
|
-
children: (0, _string.formatNumerical)(max, _string.FORMATS.EXPONENTIAL)
|
|
59
|
-
})]
|
|
60
|
-
})
|
|
61
|
-
});
|
|
42
|
+
return /*#__PURE__*/_react.React.createElement("div", {
|
|
43
|
+
className: "cherita-legend"
|
|
44
|
+
}, /*#__PURE__*/_react.React.createElement("div", {
|
|
45
|
+
className: "gradient"
|
|
46
|
+
}, /*#__PURE__*/_react.React.createElement("p", {
|
|
47
|
+
className: "small m-0 p-0"
|
|
48
|
+
}, (dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? dataset.selectedVar?.name : dataset.selectedObs?.name) + addText), spanList, /*#__PURE__*/_react.React.createElement("span", {
|
|
49
|
+
className: "domain-min"
|
|
50
|
+
}, (0, _string.formatNumerical)(min, _string.FORMATS.EXPONENTIAL)), /*#__PURE__*/_react.React.createElement("span", {
|
|
51
|
+
className: "domain-med"
|
|
52
|
+
}, (0, _string.formatNumerical)((min + max) * 0.5, _string.FORMATS.EXPONENTIAL)), /*#__PURE__*/_react.React.createElement("span", {
|
|
53
|
+
className: "domain-max"
|
|
54
|
+
}, (0, _string.formatNumerical)(max, _string.FORMATS.EXPONENTIAL))));
|
|
62
55
|
} else {
|
|
63
|
-
return /*#__PURE__*/
|
|
64
|
-
className: "cherita-legend"
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
})
|
|
71
|
-
})
|
|
72
|
-
});
|
|
56
|
+
return /*#__PURE__*/_react.React.createElement("div", {
|
|
57
|
+
className: "cherita-legend"
|
|
58
|
+
}, /*#__PURE__*/_react.React.createElement("div", {
|
|
59
|
+
className: "gradient"
|
|
60
|
+
}, /*#__PURE__*/_react.React.createElement("p", {
|
|
61
|
+
className: "small m-0 p-0"
|
|
62
|
+
}, dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS && dataset.selectedObs ? dataset.selectedObs.name : "")));
|
|
73
63
|
}
|
|
74
64
|
}
|