@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.
Files changed (75) hide show
  1. package/dist/cjs/components/dotplot/Dotplot.js +26 -19
  2. package/dist/cjs/components/dotplot/DotplotControls.js +17 -19
  3. package/dist/cjs/components/full-page/FullPage.js +9 -7
  4. package/dist/cjs/components/full-page/FullPagePseudospatial.js +9 -7
  5. package/dist/cjs/components/heatmap/Heatmap.js +22 -13
  6. package/dist/cjs/components/matrixplot/Matrixplot.js +22 -13
  7. package/dist/cjs/components/obs-list/ObsItem.js +37 -29
  8. package/dist/cjs/components/obs-list/ObsList.js +47 -44
  9. package/dist/cjs/components/obsm-list/ObsmList.js +9 -6
  10. package/dist/cjs/components/offcanvas/index.js +13 -9
  11. package/dist/cjs/components/pseudospatial/Pseudospatial.js +61 -53
  12. package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +17 -11
  13. package/dist/cjs/components/scatterplot/Scatterplot.js +52 -52
  14. package/dist/cjs/components/scatterplot/ScatterplotControls.js +3 -3
  15. package/dist/cjs/components/scatterplot/SpatialControls.js +4 -4
  16. package/dist/cjs/components/search-bar/SearchBar.js +12 -10
  17. package/dist/cjs/components/search-bar/SearchInfo.js +14 -13
  18. package/dist/cjs/components/search-bar/SearchResults.js +16 -14
  19. package/dist/cjs/components/var-list/VarItem.js +10 -7
  20. package/dist/cjs/components/var-list/VarList.js +14 -9
  21. package/dist/cjs/components/var-list/VarListToolbar.js +1 -2
  22. package/dist/cjs/components/var-list/VarSet.js +1 -2
  23. package/dist/cjs/components/violin/Violin.js +44 -35
  24. package/dist/cjs/context/DatasetContext.js +17 -11
  25. package/dist/cjs/context/FilterContext.js +9 -8
  26. package/dist/cjs/context/SettingsContext.js +169 -237
  27. package/dist/cjs/context/ZarrDataContext.js +1 -2
  28. package/dist/cjs/helpers/color-helper.js +3 -3
  29. package/dist/cjs/helpers/zarr-helper.js +15 -12
  30. package/dist/cjs/utils/Filter.js +13 -9
  31. package/dist/cjs/utils/Histogram.js +4 -3
  32. package/dist/cjs/utils/ImageViewer.js +1 -2
  33. package/dist/cjs/utils/Legend.js +3 -3
  34. package/dist/cjs/utils/LoadingIndicators.js +1 -1
  35. package/dist/cjs/utils/VirtualizedList.js +16 -13
  36. package/dist/cjs/utils/errors.js +20 -22
  37. package/dist/cjs/utils/requests.js +13 -10
  38. package/dist/cjs/utils/zarrData.js +12 -8
  39. package/dist/css/cherita.css +13 -9
  40. package/dist/css/cherita.css.map +1 -1
  41. package/dist/esm/components/dotplot/Dotplot.js +25 -17
  42. package/dist/esm/components/dotplot/DotplotControls.js +16 -17
  43. package/dist/esm/components/full-page/FullPage.js +8 -5
  44. package/dist/esm/components/full-page/FullPagePseudospatial.js +8 -5
  45. package/dist/esm/components/heatmap/Heatmap.js +21 -11
  46. package/dist/esm/components/matrixplot/Matrixplot.js +21 -11
  47. package/dist/esm/components/obs-list/ObsItem.js +36 -27
  48. package/dist/esm/components/obs-list/ObsList.js +46 -42
  49. package/dist/esm/components/obsm-list/ObsmList.js +8 -4
  50. package/dist/esm/components/offcanvas/index.js +13 -9
  51. package/dist/esm/components/pseudospatial/Pseudospatial.js +60 -51
  52. package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +16 -9
  53. package/dist/esm/components/scatterplot/Scatterplot.js +51 -50
  54. package/dist/esm/components/scatterplot/ScatterplotControls.js +2 -1
  55. package/dist/esm/components/scatterplot/SpatialControls.js +3 -2
  56. package/dist/esm/components/search-bar/SearchBar.js +11 -8
  57. package/dist/esm/components/search-bar/SearchInfo.js +13 -11
  58. package/dist/esm/components/search-bar/SearchResults.js +15 -12
  59. package/dist/esm/components/var-list/VarItem.js +9 -5
  60. package/dist/esm/components/var-list/VarList.js +13 -7
  61. package/dist/esm/components/violin/Violin.js +43 -33
  62. package/dist/esm/context/DatasetContext.js +16 -9
  63. package/dist/esm/context/FilterContext.js +8 -6
  64. package/dist/esm/context/SettingsContext.js +168 -235
  65. package/dist/esm/helpers/color-helper.js +3 -3
  66. package/dist/esm/helpers/zarr-helper.js +15 -12
  67. package/dist/esm/utils/Filter.js +13 -9
  68. package/dist/esm/utils/Histogram.js +4 -3
  69. package/dist/esm/utils/Legend.js +2 -1
  70. package/dist/esm/utils/LoadingIndicators.js +1 -1
  71. package/dist/esm/utils/VirtualizedList.js +15 -11
  72. package/dist/esm/utils/errors.js +20 -22
  73. package/dist/esm/utils/requests.js +13 -10
  74. package/dist/esm/utils/zarrData.js +12 -8
  75. 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 { useCallback } from "react";
2
7
  import { useQueries, useQuery } from "@tanstack/react-query";
3
8
  import { ArrayNotFoundError, GroupNotFoundError, openArray } from "zarr";
@@ -9,7 +14,7 @@ export const GET_OPTIONS = {
9
14
  progress,
10
15
  queueSize
11
16
  } = _ref;
12
- console.debug(`${progress / queueSize * 100}% complete.`);
17
+ console.debug("".concat(progress / queueSize * 100, "% complete."));
13
18
  } // callback executed after each request
14
19
  };
15
20
  export class ZarrHelper {
@@ -47,18 +52,17 @@ export const useZarr = function (_ref2) {
47
52
  data = null,
48
53
  isLoading: isPending = false,
49
54
  error: serverError = null
50
- } = useQuery({
55
+ } = useQuery(_objectSpread({
51
56
  queryKey: ["zarr", url, path, s],
52
57
  queryFn: () => fetchDataFromZarr(url, path, s, options),
53
58
  retry: (failureCount, _ref3) => {
54
59
  let {
55
60
  error
56
61
  } = _ref3;
57
- if ([400, 401, 403, 404, 422].includes(error?.status)) return false;
62
+ if ([400, 401, 403, 404, 422].includes(error === null || error === void 0 ? void 0 : error.status)) return false;
58
63
  return failureCount < 3;
59
- },
60
- ...opts
61
- });
64
+ }
65
+ }, opts));
62
66
  return {
63
67
  data,
64
68
  isPending,
@@ -69,7 +73,7 @@ const aggregateData = (inputs, data) => {
69
73
  const dataObject = {};
70
74
  inputs.forEach((input, index) => {
71
75
  const key = input.key;
72
- dataObject[key] = data?.[index];
76
+ dataObject[key] = data === null || data === void 0 ? void 0 : data[index];
73
77
  });
74
78
  return dataObject;
75
79
  };
@@ -89,18 +93,17 @@ export const useMultipleZarr = function (inputs) {
89
93
  isLoading: isPending = false,
90
94
  serverError = null
91
95
  } = useQueries({
92
- queries: inputs.map(input => ({
96
+ queries: inputs.map(input => _objectSpread({
93
97
  queryKey: ["zarr", input.url, input.path, input.s],
94
98
  queryFn: () => fetchDataFromZarr(input.url, input.path, input.s, options),
95
99
  retry: (failureCount, _ref4) => {
96
100
  let {
97
101
  error
98
102
  } = _ref4;
99
- if ([400, 401, 403, 404, 422].includes(error?.status)) return false;
103
+ if ([400, 401, 403, 404, 422].includes(error === null || error === void 0 ? void 0 : error.status)) return false;
100
104
  return failureCount < 3;
101
- },
102
- ...opts
103
- })),
105
+ }
106
+ }, opts)),
104
107
  combine
105
108
  });
106
109
  return {
@@ -15,7 +15,7 @@ const isInBins = (v, binEdges, indices) => {
15
15
  return _.some(ranges, range => _.inRange(v, ...range));
16
16
  };
17
17
  const isInPolygons = (polygons, positions, index) => {
18
- if (!polygons?.length || !positions?.length) {
18
+ if (!(polygons !== null && polygons !== void 0 && polygons.length) || !(positions !== null && positions !== void 0 && positions.length)) {
19
19
  return false;
20
20
  }
21
21
  return _.some(polygons, (_f, i) => {
@@ -23,12 +23,13 @@ const isInPolygons = (polygons, positions, index) => {
23
23
  });
24
24
  };
25
25
  const isInValues = (omit, value) => {
26
- if (!omit?.length) {
26
+ if (!(omit !== null && omit !== void 0 && omit.length)) {
27
27
  return true;
28
28
  }
29
29
  return !_.includes(omit, value);
30
30
  };
31
31
  export const useFilter = data => {
32
+ var _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3, _settings$selectedObs4, _settings$selectedObs7, _settings$selectedObs8;
32
33
  const settings = useSettings();
33
34
  const filterDataDispatch = useFilteredDataDispatch();
34
35
  const {
@@ -38,24 +39,26 @@ export const useFilter = data => {
38
39
  isPending,
39
40
  serverError
40
41
  } = data;
41
- const isCategorical = settings.selectedObs?.type === OBS_TYPES.CATEGORICAL || settings.selectedObs?.type === OBS_TYPES.BOOLEAN;
42
- const isContinuous = settings.selectedObs?.type === OBS_TYPES.CONTINUOUS;
43
- const sliceByObs = settings.colorEncoding === COLOR_ENCODINGS.OBS && !!settings.selectedObs?.omit.length || settings.sliceBy.obs;
42
+ const isCategorical = ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === OBS_TYPES.CATEGORICAL || ((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.type) === OBS_TYPES.BOOLEAN;
43
+ const isContinuous = ((_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.type) === OBS_TYPES.CONTINUOUS;
44
+ const sliceByObs = settings.colorEncoding === COLOR_ENCODINGS.OBS && !!((_settings$selectedObs4 = settings.selectedObs) !== null && _settings$selectedObs4 !== void 0 && _settings$selectedObs4.omit.length) || settings.sliceBy.obs;
44
45
  const isInObsSlice = useCallback((index, values) => {
45
46
  let inSlice = true;
46
47
  if (values && sliceByObs) {
47
48
  if (isCategorical) {
48
- inSlice &= isInValues(settings.selectedObs?.omit, values[index]);
49
+ var _settings$selectedObs5;
50
+ inSlice &= isInValues((_settings$selectedObs5 = settings.selectedObs) === null || _settings$selectedObs5 === void 0 ? void 0 : _settings$selectedObs5.omit, values[index]);
49
51
  } else if (isContinuous) {
50
52
  if (isNaN(values[index])) {
51
- inSlice &= isInValues(settings.selectedObs?.omit, -1);
53
+ var _settings$selectedObs6;
54
+ inSlice &= isInValues((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.omit, -1);
52
55
  } else {
53
56
  inSlice &= isInBins(values[index], settings.selectedObs.bins.binEdges, _.without(settings.selectedObs.omit, -1));
54
57
  }
55
58
  }
56
59
  }
57
60
  return inSlice;
58
- }, [settings.selectedObs?.bins?.binEdges, settings.selectedObs?.omit, isCategorical, isContinuous, sliceByObs]);
61
+ }, [(_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 || (_settings$selectedObs7 = _settings$selectedObs7.bins) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.binEdges, (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.omit, isCategorical, isContinuous, sliceByObs]);
59
62
  const isInPolygonsSlice = useCallback((index, positions) => {
60
63
  let inSlice = true;
61
64
  if (settings.sliceBy.polygons && positions) {
@@ -121,11 +124,12 @@ export const useFilter = data => {
121
124
  slicedLength: filtered.length
122
125
  };
123
126
  } else {
127
+ var _obsData$data;
124
128
  return {
125
129
  filteredIndices: null,
126
130
  valueMin: _.min(obsData.data),
127
131
  valueMax: _.max(obsData.data),
128
- slicedLength: obsData.data?.length
132
+ slicedLength: (_obsData$data = obsData.data) === null || _obsData$data === void 0 ? void 0 : _obsData$data.length
129
133
  };
130
134
  }
131
135
  }, [settings.colorEncoding, isContinuous, isInSlice, isPending, obsData.data, obsmData.data, serverError, xData.data]);
@@ -4,6 +4,7 @@ import _ from "lodash";
4
4
  import { LoadingLinear } from "./LoadingIndicators";
5
5
  import { formatNumerical, FORMATS } from "./string";
6
6
  export function Histogram(_ref) {
7
+ var _data$bin_edges;
7
8
  let {
8
9
  data,
9
10
  isPending,
@@ -29,11 +30,11 @@ export function Histogram(_ref) {
29
30
  let {
30
31
  dataIndex
31
32
  } = _ref2;
32
- return `${formatNumerical(data.hist[dataIndex])}`;
33
+ return "".concat(formatNumerical(data.hist[dataIndex]));
33
34
  },
34
35
  xAxis: {
35
- data: _.range(data.bin_edges?.length) || null,
36
- valueFormatter: v => `Bin [${formatNumerical(data.bin_edges[v][0], FORMATS.EXPONENTIAL)}, ${formatNumerical(data.bin_edges[v][1], FORMATS.EXPONENTIAL)}${v === data.bin_edges.length - 1 ? "]" : ")"}`
36
+ data: _.range((_data$bin_edges = data.bin_edges) === null || _data$bin_edges === void 0 ? void 0 : _data$bin_edges.length) || null,
37
+ valueFormatter: v => "Bin [".concat(formatNumerical(data.bin_edges[v][0], FORMATS.EXPONENTIAL), ", ").concat(formatNumerical(data.bin_edges[v][1], FORMATS.EXPONENTIAL)).concat(v === data.bin_edges.length - 1 ? "]" : ")")
37
38
  },
38
39
  slotProps: {
39
40
  popper: {
@@ -35,6 +35,7 @@ export function Legend(_ref) {
35
35
  });
36
36
  }, [colorscale, getColor, isCategorical]);
37
37
  if (settings.colorEncoding && !isCategorical) {
38
+ var _settings$selectedVar, _settings$selectedObs;
38
39
  return /*#__PURE__*/React.createElement("div", {
39
40
  className: "cherita-legend"
40
41
  }, /*#__PURE__*/React.createElement("div", {
@@ -44,7 +45,7 @@ export function Legend(_ref) {
44
45
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
45
46
  icon: faDroplet,
46
47
  className: "me-1"
47
- }), (settings.colorEncoding === COLOR_ENCODINGS.VAR ? settings.selectedVar?.name : settings.selectedObs?.name) + addText), spanList, /*#__PURE__*/React.createElement("span", {
48
+ }), (settings.colorEncoding === COLOR_ENCODINGS.VAR ? (_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name : (_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.name) + addText), spanList, /*#__PURE__*/React.createElement("span", {
48
49
  className: "domain-min"
49
50
  }, formatNumerical(min, FORMATS.EXPONENTIAL)), /*#__PURE__*/React.createElement("span", {
50
51
  className: "domain-med"
@@ -9,7 +9,7 @@ export const LoadingSpinner = _ref => {
9
9
  className: "loading-spinner"
10
10
  }, /*#__PURE__*/React.createElement(CircularProgress, {
11
11
  disableShrink: disableShrink
12
- }), text?.length && /*#__PURE__*/React.createElement("span", {
12
+ }), (text === null || text === void 0 ? void 0 : text.length) && /*#__PURE__*/React.createElement("span", {
13
13
  className: "visually-hidden"
14
14
  }, text));
15
15
  };
@@ -1,16 +1,20 @@
1
+ const _excluded = ["getDataAtIndex", "count", "ItemComponent", "estimateSize", "overscan", "maxHeight"];
1
2
  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); }
3
+ 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; }
4
+ 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; }
2
5
  import React, { useCallback, useEffect, useState } from "react";
3
6
  import { useVirtualizer } from "@tanstack/react-virtual";
4
7
  export function VirtualizedList(_ref) {
8
+ var _virtualItems$0$start, _virtualItems$;
5
9
  let {
6
- getDataAtIndex,
7
- count,
8
- ItemComponent,
9
- estimateSize = 45,
10
- overscan = 25,
11
- maxHeight = "65vh",
12
- ...props
13
- } = _ref;
10
+ getDataAtIndex,
11
+ count,
12
+ ItemComponent,
13
+ estimateSize = 45,
14
+ overscan = 25,
15
+ maxHeight = "65vh"
16
+ } = _ref,
17
+ props = _objectWithoutProperties(_ref, _excluded);
14
18
  const [parentNode, setParentNode] = useState(null);
15
19
  const itemVirtualizer = useVirtualizer({
16
20
  count: count,
@@ -24,7 +28,7 @@ export function VirtualizedList(_ref) {
24
28
  const virtualItems = itemVirtualizer.getVirtualItems();
25
29
  useEffect(() => {
26
30
  itemVirtualizer.measure();
27
- }, [itemVirtualizer, parentNode?.clientHeight, getDataAtIndex]);
31
+ }, [itemVirtualizer, parentNode === null || parentNode === void 0 ? void 0 : parentNode.clientHeight, getDataAtIndex]);
28
32
  return /*#__PURE__*/React.createElement("div", {
29
33
  ref: refCallback,
30
34
  style: {
@@ -34,7 +38,7 @@ export function VirtualizedList(_ref) {
34
38
  className: "modern-scrollbars"
35
39
  }, /*#__PURE__*/React.createElement("div", {
36
40
  style: {
37
- height: `${itemVirtualizer.getTotalSize()}px`,
41
+ height: "".concat(itemVirtualizer.getTotalSize(), "px"),
38
42
  width: "100%",
39
43
  position: "relative",
40
44
  willChange: "transform"
@@ -45,7 +49,7 @@ export function VirtualizedList(_ref) {
45
49
  top: 0,
46
50
  left: 0,
47
51
  width: "100%",
48
- transform: `translateY(${virtualItems[0]?.start ?? 0}px)`
52
+ transform: "translateY(".concat((_virtualItems$0$start = (_virtualItems$ = virtualItems[0]) === null || _virtualItems$ === void 0 ? void 0 : _virtualItems$.start) !== null && _virtualItems$0$start !== void 0 ? _virtualItems$0$start : 0, "px)")
49
53
  }
50
54
  }, virtualItems.map(virtualItem => /*#__PURE__*/React.createElement("div", {
51
55
  key: virtualItem.key,
@@ -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
  export const parseError = err => {
2
7
  if (err === DOMException.TIMEOUT_ERR) {
3
8
  return {
@@ -5,42 +10,35 @@ export const parseError = err => {
5
10
  name: err
6
11
  };
7
12
  }
8
- switch (err?.name) {
13
+ switch (err === null || err === void 0 ? void 0 : err.name) {
9
14
  case "TypeError":
10
- return {
11
- ...err,
15
+ return _objectSpread(_objectSpread({}, err), {}, {
12
16
  message: "Failed to fetch data from server"
13
- };
17
+ });
14
18
  case "ReadZarrError":
15
- return {
16
- ...err,
19
+ return _objectSpread(_objectSpread({}, err), {}, {
17
20
  message: "Failed to read AnnData-Zarr"
18
- };
21
+ });
19
22
  case "InvalidObs":
20
- return {
21
- ...err,
23
+ return _objectSpread(_objectSpread({}, err), {}, {
22
24
  message: "Observation not found in dataset"
23
- };
25
+ });
24
26
  case "InvalidVar":
25
- return {
26
- ...err,
27
+ return _objectSpread(_objectSpread({}, err), {}, {
27
28
  message: "Feature not found in dataset"
28
- };
29
+ });
29
30
  case "InvalidKey":
30
- return {
31
- ...err,
31
+ return _objectSpread(_objectSpread({}, err), {}, {
32
32
  message: "Key not found in datset"
33
- };
33
+ });
34
34
  case "BadRequest":
35
- return {
36
- ...err,
35
+ return _objectSpread(_objectSpread({}, err), {}, {
37
36
  message: "Invalid request to server"
38
- };
37
+ });
39
38
  case "InternalServerError":
40
- return {
41
- ...err,
39
+ return _objectSpread(_objectSpread({}, err), {}, {
42
40
  message: "Server error"
43
- };
41
+ });
44
42
  default:
45
43
  return err;
46
44
  }
@@ -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 { useQuery } from "@tanstack/react-query";
2
7
  import { useDebounce } from "@uidotdev/usehooks";
3
8
  import { parseError } from "./errors";
@@ -42,7 +47,7 @@ export const useFetch = function (endpoint, params) {
42
47
  data: fetchedData = null,
43
48
  isLoading: isPending = false,
44
49
  error: serverError = null
45
- } = useQuery({
50
+ } = useQuery(_objectSpread({
46
51
  queryKey: [endpoint, params],
47
52
  queryFn: _ref => {
48
53
  let {
@@ -54,11 +59,10 @@ export const useFetch = function (endpoint, params) {
54
59
  let {
55
60
  error
56
61
  } = _ref2;
57
- if ([400, 401, 403, 404, 422].includes(error?.status)) return false;
62
+ if ([400, 401, 403, 404, 422].includes(error === null || error === void 0 ? void 0 : error.status)) return false;
58
63
  return failureCount < 3;
59
- },
60
- ...opts
61
- });
64
+ }
65
+ }, opts));
62
66
  return {
63
67
  fetchedData,
64
68
  isPending,
@@ -77,7 +81,7 @@ export const useDebouncedFetch = function (endpoint, params) {
77
81
  data: fetchedData = null,
78
82
  isLoading: isPending = false,
79
83
  error: serverError = null
80
- } = useQuery({
84
+ } = useQuery(_objectSpread({
81
85
  queryKey: [endpoint, debouncedParams],
82
86
  queryFn: _ref3 => {
83
87
  let {
@@ -89,11 +93,10 @@ export const useDebouncedFetch = function (endpoint, params) {
89
93
  let {
90
94
  error
91
95
  } = _ref4;
92
- if ([400, 401, 403, 404, 422].includes(error?.status)) return false;
96
+ if ([400, 401, 403, 404, 422].includes(error === null || error === void 0 ? void 0 : error.status)) return false;
93
97
  return failureCount < 3;
94
- },
95
- ...opts
96
- });
98
+ }
99
+ }, opts));
97
100
  return {
98
101
  fetchedData,
99
102
  isPending,
@@ -37,14 +37,15 @@ const meanData = (_i, data) => {
37
37
  });
38
38
  };
39
39
  export const useXData = function () {
40
+ var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3;
40
41
  let agg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : meanData;
41
42
  const dataset = useDataset();
42
43
  const settings = useSettings();
43
- const [xParams, setXParams] = useState(!settings.selectedVar ? [] : !settings.selectedVar?.isSet ? [{
44
+ const [xParams, setXParams] = useState(!settings.selectedVar ? [] : !((_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet) ? [{
44
45
  url: dataset.url,
45
46
  path: "X",
46
- s: [null, settings.selectedVar?.matrix_index]
47
- }] : _.map(settings.selectedVar?.vars, v => {
47
+ s: [null, (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.matrix_index]
48
+ }] : _.map((_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars, v => {
48
49
  return {
49
50
  url: dataset.url,
50
51
  path: "X",
@@ -52,11 +53,12 @@ export const useXData = function () {
52
53
  };
53
54
  }));
54
55
  useEffect(() => {
55
- setXParams(!settings.selectedVar ? [] : !settings.selectedVar?.isSet ? [{
56
+ var _settings$selectedVar4, _settings$selectedVar5, _settings$selectedVar6;
57
+ setXParams(!settings.selectedVar ? [] : !((_settings$selectedVar4 = settings.selectedVar) !== null && _settings$selectedVar4 !== void 0 && _settings$selectedVar4.isSet) ? [{
56
58
  url: dataset.url,
57
59
  path: "X",
58
- s: [null, settings.selectedVar?.matrix_index]
59
- }] : _.map(settings.selectedVar?.vars, v => {
60
+ s: [null, (_settings$selectedVar5 = settings.selectedVar) === null || _settings$selectedVar5 === void 0 ? void 0 : _settings$selectedVar5.matrix_index]
61
+ }] : _.map((_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.vars, v => {
60
62
  return {
61
63
  url: dataset.url,
62
64
  path: "X",
@@ -69,18 +71,20 @@ export const useXData = function () {
69
71
  }, agg);
70
72
  };
71
73
  export const useObsData = function () {
74
+ var _obs, _obs2;
72
75
  let obs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
73
76
  const dataset = useDataset();
74
77
  const settings = useSettings();
75
78
  obs = obs || settings.selectedObs;
76
79
  const [obsParams, setObsParams] = useState({
77
80
  url: dataset.url,
78
- path: "obs/" + obs?.name + (obs?.type === OBS_TYPES.CATEGORICAL ? "/codes" : "")
81
+ path: "obs/" + ((_obs = obs) === null || _obs === void 0 ? void 0 : _obs.name) + (((_obs2 = obs) === null || _obs2 === void 0 ? void 0 : _obs2.type) === OBS_TYPES.CATEGORICAL ? "/codes" : "")
79
82
  });
80
83
  useEffect(() => {
84
+ var _obs3, _obs4;
81
85
  setObsParams({
82
86
  url: dataset.url,
83
- path: "obs/" + obs?.name + (obs?.type === OBS_TYPES.CATEGORICAL ? "/codes" : "")
87
+ path: "obs/" + ((_obs3 = obs) === null || _obs3 === void 0 ? void 0 : _obs3.name) + (((_obs4 = obs) === null || _obs4 === void 0 ? void 0 : _obs4.type) === OBS_TYPES.CATEGORICAL ? "/codes" : "")
84
88
  });
85
89
  }, [dataset.url, obs]);
86
90
  return useZarr(obsParams, GET_OPTIONS, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haniffalab/cherita-react",
3
- "version": "1.2.0-dev.2025-05-21.e8f5ce54",
3
+ "version": "1.2.0-dev.2025-05-21.e57ef5f2",
4
4
  "author": "Haniffa Lab",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -77,6 +77,8 @@
77
77
  "jest": "^29.7.0",
78
78
  "jest-environment-jsdom": "^29.7.0",
79
79
  "prettier": "^3.5.3",
80
+ "react": "^18.2.0",
81
+ "react-dom": "^18.2.0",
80
82
  "sass": "1.77.6",
81
83
  "stylelint": "^16.10.0",
82
84
  "stylelint-config-prettier": "^9.0.5",
@@ -124,5 +126,5 @@
124
126
  "url": "https://github.com/haniffalab/cherita-react/issues"
125
127
  },
126
128
  "homepage": "https://github.com/haniffalab/cherita-react#readme",
127
- "prereleaseSha": "e8f5ce542dc9077ef06cfe3c3b03445838ae2595"
129
+ "prereleaseSha": "e57ef5f2c023e4400ae9f7dbcb1495778ba11e29"
128
130
  }