@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
@@ -8,8 +8,7 @@ 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
- 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); }
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; }
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
12
  const ZarrDataContext = /*#__PURE__*/(0, _react.createContext)(null);
14
13
  function ZarrDataProvider(_ref) {
15
14
  let {
@@ -9,9 +9,9 @@ var _colorscales = require("../constants/colorscales");
9
9
  var _SettingsContext = require("../context/SettingsContext");
10
10
  const GRAY = [214, 212, 212];
11
11
  const parseHexColor = color => {
12
- const r = parseInt(color?.substring(1, 3), 16);
13
- const g = parseInt(color?.substring(3, 5), 16);
14
- const b = parseInt(color?.substring(5, 7), 16);
12
+ const r = parseInt(color === null || color === void 0 ? void 0 : color.substring(1, 3), 16);
13
+ const g = parseInt(color === null || color === void 0 ? void 0 : color.substring(3, 5), 16);
14
+ const b = parseInt(color === null || color === void 0 ? void 0 : color.substring(5, 7), 16);
15
15
  return [r, g, b];
16
16
  };
17
17
  const interpolateColor = (color1, color2, factor) => {
@@ -7,6 +7,11 @@ exports.useZarr = exports.useMultipleZarr = exports.ZarrHelper = exports.GET_OPT
7
7
  var _react = require("react");
8
8
  var _reactQuery = require("@tanstack/react-query");
9
9
  var _zarr = require("zarr");
10
+ 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; }
11
+ 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; }
12
+ 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; }
13
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
14
+ 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); }
10
15
  const GET_OPTIONS = exports.GET_OPTIONS = {
11
16
  concurrencyLimit: 10,
12
17
  // max number of concurrent requests (default 10)
@@ -15,7 +20,7 @@ const GET_OPTIONS = exports.GET_OPTIONS = {
15
20
  progress,
16
21
  queueSize
17
22
  } = _ref;
18
- console.debug(`${progress / queueSize * 100}% complete.`);
23
+ console.debug("".concat(progress / queueSize * 100, "% complete."));
19
24
  } // callback executed after each request
20
25
  };
21
26
  class ZarrHelper {
@@ -54,18 +59,17 @@ const useZarr = function (_ref2) {
54
59
  data = null,
55
60
  isLoading: isPending = false,
56
61
  error: serverError = null
57
- } = (0, _reactQuery.useQuery)({
62
+ } = (0, _reactQuery.useQuery)(_objectSpread({
58
63
  queryKey: ["zarr", url, path, s],
59
64
  queryFn: () => fetchDataFromZarr(url, path, s, options),
60
65
  retry: (failureCount, _ref3) => {
61
66
  let {
62
67
  error
63
68
  } = _ref3;
64
- if ([400, 401, 403, 404, 422].includes(error?.status)) return false;
69
+ if ([400, 401, 403, 404, 422].includes(error === null || error === void 0 ? void 0 : error.status)) return false;
65
70
  return failureCount < 3;
66
- },
67
- ...opts
68
- });
71
+ }
72
+ }, opts));
69
73
  return {
70
74
  data,
71
75
  isPending,
@@ -77,7 +81,7 @@ const aggregateData = (inputs, data) => {
77
81
  const dataObject = {};
78
82
  inputs.forEach((input, index) => {
79
83
  const key = input.key;
80
- dataObject[key] = data?.[index];
84
+ dataObject[key] = data === null || data === void 0 ? void 0 : data[index];
81
85
  });
82
86
  return dataObject;
83
87
  };
@@ -97,18 +101,17 @@ const useMultipleZarr = function (inputs) {
97
101
  isLoading: isPending = false,
98
102
  serverError = null
99
103
  } = (0, _reactQuery.useQueries)({
100
- queries: inputs.map(input => ({
104
+ queries: inputs.map(input => _objectSpread({
101
105
  queryKey: ["zarr", input.url, input.path, input.s],
102
106
  queryFn: () => fetchDataFromZarr(input.url, input.path, input.s, options),
103
107
  retry: (failureCount, _ref4) => {
104
108
  let {
105
109
  error
106
110
  } = _ref4;
107
- if ([400, 401, 403, 404, 422].includes(error?.status)) return false;
111
+ if ([400, 401, 403, 404, 422].includes(error === null || error === void 0 ? void 0 : error.status)) return false;
108
112
  return failureCount < 3;
109
- },
110
- ...opts
111
- })),
113
+ }
114
+ }, opts)),
112
115
  combine
113
116
  });
114
117
  return {
@@ -22,7 +22,7 @@ const isInBins = (v, binEdges, indices) => {
22
22
  return _lodash.default.some(ranges, range => _lodash.default.inRange(v, ...range));
23
23
  };
24
24
  const isInPolygons = (polygons, positions, index) => {
25
- if (!polygons?.length || !positions?.length) {
25
+ if (!(polygons !== null && polygons !== void 0 && polygons.length) || !(positions !== null && positions !== void 0 && positions.length)) {
26
26
  return false;
27
27
  }
28
28
  return _lodash.default.some(polygons, (_f, i) => {
@@ -30,12 +30,13 @@ const isInPolygons = (polygons, positions, index) => {
30
30
  });
31
31
  };
32
32
  const isInValues = (omit, value) => {
33
- if (!omit?.length) {
33
+ if (!(omit !== null && omit !== void 0 && omit.length)) {
34
34
  return true;
35
35
  }
36
36
  return !_lodash.default.includes(omit, value);
37
37
  };
38
38
  const useFilter = data => {
39
+ var _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3, _settings$selectedObs4, _settings$selectedObs7, _settings$selectedObs8;
39
40
  const settings = (0, _SettingsContext.useSettings)();
40
41
  const filterDataDispatch = (0, _FilterContext.useFilteredDataDispatch)();
41
42
  const {
@@ -45,24 +46,26 @@ const useFilter = data => {
45
46
  isPending,
46
47
  serverError
47
48
  } = data;
48
- const isCategorical = settings.selectedObs?.type === _constants.OBS_TYPES.CATEGORICAL || settings.selectedObs?.type === _constants.OBS_TYPES.BOOLEAN;
49
- const isContinuous = settings.selectedObs?.type === _constants.OBS_TYPES.CONTINUOUS;
50
- const sliceByObs = settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && !!settings.selectedObs?.omit.length || settings.sliceBy.obs;
49
+ const isCategorical = ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === _constants.OBS_TYPES.CATEGORICAL || ((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.type) === _constants.OBS_TYPES.BOOLEAN;
50
+ const isContinuous = ((_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.type) === _constants.OBS_TYPES.CONTINUOUS;
51
+ const sliceByObs = settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && !!((_settings$selectedObs4 = settings.selectedObs) !== null && _settings$selectedObs4 !== void 0 && _settings$selectedObs4.omit.length) || settings.sliceBy.obs;
51
52
  const isInObsSlice = (0, _react.useCallback)((index, values) => {
52
53
  let inSlice = true;
53
54
  if (values && sliceByObs) {
54
55
  if (isCategorical) {
55
- inSlice &= isInValues(settings.selectedObs?.omit, values[index]);
56
+ var _settings$selectedObs5;
57
+ inSlice &= isInValues((_settings$selectedObs5 = settings.selectedObs) === null || _settings$selectedObs5 === void 0 ? void 0 : _settings$selectedObs5.omit, values[index]);
56
58
  } else if (isContinuous) {
57
59
  if (isNaN(values[index])) {
58
- inSlice &= isInValues(settings.selectedObs?.omit, -1);
60
+ var _settings$selectedObs6;
61
+ inSlice &= isInValues((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.omit, -1);
59
62
  } else {
60
63
  inSlice &= isInBins(values[index], settings.selectedObs.bins.binEdges, _lodash.default.without(settings.selectedObs.omit, -1));
61
64
  }
62
65
  }
63
66
  }
64
67
  return inSlice;
65
- }, [settings.selectedObs?.bins?.binEdges, settings.selectedObs?.omit, isCategorical, isContinuous, sliceByObs]);
68
+ }, [(_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]);
66
69
  const isInPolygonsSlice = (0, _react.useCallback)((index, positions) => {
67
70
  let inSlice = true;
68
71
  if (settings.sliceBy.polygons && positions) {
@@ -128,11 +131,12 @@ const useFilter = data => {
128
131
  slicedLength: filtered.length
129
132
  };
130
133
  } else {
134
+ var _obsData$data;
131
135
  return {
132
136
  filteredIndices: null,
133
137
  valueMin: _lodash.default.min(obsData.data),
134
138
  valueMax: _lodash.default.max(obsData.data),
135
- slicedLength: obsData.data?.length
139
+ slicedLength: (_obsData$data = obsData.data) === null || _obsData$data === void 0 ? void 0 : _obsData$data.length
136
140
  };
137
141
  }
138
142
  }, [settings.colorEncoding, isContinuous, isInSlice, isPending, obsData.data, obsmData.data, serverError, xData.data]);
@@ -11,6 +11,7 @@ var _LoadingIndicators = require("./LoadingIndicators");
11
11
  var _string = require("./string");
12
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
13
  function Histogram(_ref) {
14
+ var _data$bin_edges;
14
15
  let {
15
16
  data,
16
17
  isPending,
@@ -36,11 +37,11 @@ function Histogram(_ref) {
36
37
  let {
37
38
  dataIndex
38
39
  } = _ref2;
39
- return `${(0, _string.formatNumerical)(data.hist[dataIndex])}`;
40
+ return "".concat((0, _string.formatNumerical)(data.hist[dataIndex]));
40
41
  },
41
42
  xAxis: {
42
- data: _lodash.default.range(data.bin_edges?.length) || null,
43
- 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 ? "]" : ")"}`
43
+ data: _lodash.default.range((_data$bin_edges = data.bin_edges) === null || _data$bin_edges === void 0 ? void 0 : _data$bin_edges.length) || null,
44
+ valueFormatter: v => "Bin [".concat((0, _string.formatNumerical)(data.bin_edges[v][0], _string.FORMATS.EXPONENTIAL), ", ").concat((0, _string.formatNumerical)(data.bin_edges[v][1], _string.FORMATS.EXPONENTIAL)).concat(v === data.bin_edges.length - 1 ? "]" : ")")
44
45
  },
45
46
  slotProps: {
46
47
  popper: {
@@ -6,8 +6,7 @@ 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
- 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); }
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; }
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
10
  const ImageViewer = _ref => {
12
11
  let {
13
12
  src,
@@ -13,8 +13,7 @@ var _constants = require("../constants/constants");
13
13
  var _SettingsContext = require("../context/SettingsContext");
14
14
  var _colorHelper = require("../helpers/color-helper");
15
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
- 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); }
17
- 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; }
16
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
17
  function Legend(_ref) {
19
18
  let {
20
19
  isCategorical = false,
@@ -44,6 +43,7 @@ function Legend(_ref) {
44
43
  });
45
44
  }, [colorscale, getColor, isCategorical]);
46
45
  if (settings.colorEncoding && !isCategorical) {
46
+ var _settings$selectedVar, _settings$selectedObs;
47
47
  return /*#__PURE__*/_react.default.createElement("div", {
48
48
  className: "cherita-legend"
49
49
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -53,7 +53,7 @@ function Legend(_ref) {
53
53
  }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
54
54
  icon: _freeSolidSvgIcons.faDroplet,
55
55
  className: "me-1"
56
- }), (settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? settings.selectedVar?.name : settings.selectedObs?.name) + addText), spanList, /*#__PURE__*/_react.default.createElement("span", {
56
+ }), (settings.colorEncoding === _constants.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.default.createElement("span", {
57
57
  className: "domain-min"
58
58
  }, (0, _string.formatNumerical)(min, _string.FORMATS.EXPONENTIAL)), /*#__PURE__*/_react.default.createElement("span", {
59
59
  className: "domain-med"
@@ -16,7 +16,7 @@ const LoadingSpinner = _ref => {
16
16
  className: "loading-spinner"
17
17
  }, /*#__PURE__*/_react.default.createElement(_material.CircularProgress, {
18
18
  disableShrink: disableShrink
19
- }), text?.length && /*#__PURE__*/_react.default.createElement("span", {
19
+ }), (text === null || text === void 0 ? void 0 : text.length) && /*#__PURE__*/_react.default.createElement("span", {
20
20
  className: "visually-hidden"
21
21
  }, text));
22
22
  };
@@ -6,19 +6,22 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.VirtualizedList = VirtualizedList;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactVirtual = require("@tanstack/react-virtual");
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); }
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; }
9
+ const _excluded = ["getDataAtIndex", "count", "ItemComponent", "estimateSize", "overscan", "maxHeight"];
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
11
  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); }
12
+ 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; }
13
+ 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; }
12
14
  function VirtualizedList(_ref) {
15
+ var _virtualItems$0$start, _virtualItems$;
13
16
  let {
14
- getDataAtIndex,
15
- count,
16
- ItemComponent,
17
- estimateSize = 45,
18
- overscan = 25,
19
- maxHeight = "65vh",
20
- ...props
21
- } = _ref;
17
+ getDataAtIndex,
18
+ count,
19
+ ItemComponent,
20
+ estimateSize = 45,
21
+ overscan = 25,
22
+ maxHeight = "65vh"
23
+ } = _ref,
24
+ props = _objectWithoutProperties(_ref, _excluded);
22
25
  const [parentNode, setParentNode] = (0, _react.useState)(null);
23
26
  const itemVirtualizer = (0, _reactVirtual.useVirtualizer)({
24
27
  count: count,
@@ -32,7 +35,7 @@ function VirtualizedList(_ref) {
32
35
  const virtualItems = itemVirtualizer.getVirtualItems();
33
36
  (0, _react.useEffect)(() => {
34
37
  itemVirtualizer.measure();
35
- }, [itemVirtualizer, parentNode?.clientHeight, getDataAtIndex]);
38
+ }, [itemVirtualizer, parentNode === null || parentNode === void 0 ? void 0 : parentNode.clientHeight, getDataAtIndex]);
36
39
  return /*#__PURE__*/_react.default.createElement("div", {
37
40
  ref: refCallback,
38
41
  style: {
@@ -42,7 +45,7 @@ function VirtualizedList(_ref) {
42
45
  className: "modern-scrollbars"
43
46
  }, /*#__PURE__*/_react.default.createElement("div", {
44
47
  style: {
45
- height: `${itemVirtualizer.getTotalSize()}px`,
48
+ height: "".concat(itemVirtualizer.getTotalSize(), "px"),
46
49
  width: "100%",
47
50
  position: "relative",
48
51
  willChange: "transform"
@@ -53,7 +56,7 @@ function VirtualizedList(_ref) {
53
56
  top: 0,
54
57
  left: 0,
55
58
  width: "100%",
56
- transform: `translateY(${virtualItems[0]?.start ?? 0}px)`
59
+ 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)")
57
60
  }
58
61
  }, virtualItems.map(virtualItem => /*#__PURE__*/_react.default.createElement("div", {
59
62
  key: virtualItem.key,
@@ -4,6 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.parseError = void 0;
7
+ 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; }
8
+ 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; }
9
+ 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; }
10
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
11
+ 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
12
  const parseError = err => {
8
13
  if (err === DOMException.TIMEOUT_ERR) {
9
14
  return {
@@ -11,42 +16,35 @@ const parseError = err => {
11
16
  name: err
12
17
  };
13
18
  }
14
- switch (err?.name) {
19
+ switch (err === null || err === void 0 ? void 0 : err.name) {
15
20
  case "TypeError":
16
- return {
17
- ...err,
21
+ return _objectSpread(_objectSpread({}, err), {}, {
18
22
  message: "Failed to fetch data from server"
19
- };
23
+ });
20
24
  case "ReadZarrError":
21
- return {
22
- ...err,
25
+ return _objectSpread(_objectSpread({}, err), {}, {
23
26
  message: "Failed to read AnnData-Zarr"
24
- };
27
+ });
25
28
  case "InvalidObs":
26
- return {
27
- ...err,
29
+ return _objectSpread(_objectSpread({}, err), {}, {
28
30
  message: "Observation not found in dataset"
29
- };
31
+ });
30
32
  case "InvalidVar":
31
- return {
32
- ...err,
33
+ return _objectSpread(_objectSpread({}, err), {}, {
33
34
  message: "Feature not found in dataset"
34
- };
35
+ });
35
36
  case "InvalidKey":
36
- return {
37
- ...err,
37
+ return _objectSpread(_objectSpread({}, err), {}, {
38
38
  message: "Key not found in datset"
39
- };
39
+ });
40
40
  case "BadRequest":
41
- return {
42
- ...err,
41
+ return _objectSpread(_objectSpread({}, err), {}, {
43
42
  message: "Invalid request to server"
44
- };
43
+ });
45
44
  case "InternalServerError":
46
- return {
47
- ...err,
45
+ return _objectSpread(_objectSpread({}, err), {}, {
48
46
  message: "Server error"
49
- };
47
+ });
50
48
  default:
51
49
  return err;
52
50
  }
@@ -8,6 +8,11 @@ exports.useFetch = exports.useDebouncedFetch = void 0;
8
8
  var _reactQuery = require("@tanstack/react-query");
9
9
  var _usehooks = require("@uidotdev/usehooks");
10
10
  var _errors = require("./errors");
11
+ 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; }
12
+ 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; }
13
+ 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; }
14
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
15
+ 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); }
11
16
  async function fetchData(endpoint, params) {
12
17
  let signal = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
13
18
  let ms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 300000;
@@ -49,7 +54,7 @@ const useFetch = function (endpoint, params) {
49
54
  data: fetchedData = null,
50
55
  isLoading: isPending = false,
51
56
  error: serverError = null
52
- } = (0, _reactQuery.useQuery)({
57
+ } = (0, _reactQuery.useQuery)(_objectSpread({
53
58
  queryKey: [endpoint, params],
54
59
  queryFn: _ref => {
55
60
  let {
@@ -61,11 +66,10 @@ const useFetch = function (endpoint, params) {
61
66
  let {
62
67
  error
63
68
  } = _ref2;
64
- if ([400, 401, 403, 404, 422].includes(error?.status)) return false;
69
+ if ([400, 401, 403, 404, 422].includes(error === null || error === void 0 ? void 0 : error.status)) return false;
65
70
  return failureCount < 3;
66
- },
67
- ...opts
68
- });
71
+ }
72
+ }, opts));
69
73
  return {
70
74
  fetchedData,
71
75
  isPending,
@@ -85,7 +89,7 @@ const useDebouncedFetch = function (endpoint, params) {
85
89
  data: fetchedData = null,
86
90
  isLoading: isPending = false,
87
91
  error: serverError = null
88
- } = (0, _reactQuery.useQuery)({
92
+ } = (0, _reactQuery.useQuery)(_objectSpread({
89
93
  queryKey: [endpoint, debouncedParams],
90
94
  queryFn: _ref3 => {
91
95
  let {
@@ -97,11 +101,10 @@ const useDebouncedFetch = function (endpoint, params) {
97
101
  let {
98
102
  error
99
103
  } = _ref4;
100
- if ([400, 401, 403, 404, 422].includes(error?.status)) return false;
104
+ if ([400, 401, 403, 404, 422].includes(error === null || error === void 0 ? void 0 : error.status)) return false;
101
105
  return failureCount < 3;
102
- },
103
- ...opts
104
- });
106
+ }
107
+ }, opts));
105
108
  return {
106
109
  fetchedData,
107
110
  isPending,
@@ -44,14 +44,15 @@ const meanData = (_i, data) => {
44
44
  });
45
45
  };
46
46
  const useXData = function () {
47
+ var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3;
47
48
  let agg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : meanData;
48
49
  const dataset = (0, _DatasetContext.useDataset)();
49
50
  const settings = (0, _SettingsContext.useSettings)();
50
- const [xParams, setXParams] = (0, _react.useState)(!settings.selectedVar ? [] : !settings.selectedVar?.isSet ? [{
51
+ const [xParams, setXParams] = (0, _react.useState)(!settings.selectedVar ? [] : !((_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet) ? [{
51
52
  url: dataset.url,
52
53
  path: "X",
53
- s: [null, settings.selectedVar?.matrix_index]
54
- }] : _lodash.default.map(settings.selectedVar?.vars, v => {
54
+ s: [null, (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.matrix_index]
55
+ }] : _lodash.default.map((_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars, v => {
55
56
  return {
56
57
  url: dataset.url,
57
58
  path: "X",
@@ -59,11 +60,12 @@ const useXData = function () {
59
60
  };
60
61
  }));
61
62
  (0, _react.useEffect)(() => {
62
- setXParams(!settings.selectedVar ? [] : !settings.selectedVar?.isSet ? [{
63
+ var _settings$selectedVar4, _settings$selectedVar5, _settings$selectedVar6;
64
+ setXParams(!settings.selectedVar ? [] : !((_settings$selectedVar4 = settings.selectedVar) !== null && _settings$selectedVar4 !== void 0 && _settings$selectedVar4.isSet) ? [{
63
65
  url: dataset.url,
64
66
  path: "X",
65
- s: [null, settings.selectedVar?.matrix_index]
66
- }] : _lodash.default.map(settings.selectedVar?.vars, v => {
67
+ s: [null, (_settings$selectedVar5 = settings.selectedVar) === null || _settings$selectedVar5 === void 0 ? void 0 : _settings$selectedVar5.matrix_index]
68
+ }] : _lodash.default.map((_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.vars, v => {
67
69
  return {
68
70
  url: dataset.url,
69
71
  path: "X",
@@ -77,18 +79,20 @@ const useXData = function () {
77
79
  };
78
80
  exports.useXData = useXData;
79
81
  const useObsData = function () {
82
+ var _obs, _obs2;
80
83
  let obs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
81
84
  const dataset = (0, _DatasetContext.useDataset)();
82
85
  const settings = (0, _SettingsContext.useSettings)();
83
86
  obs = obs || settings.selectedObs;
84
87
  const [obsParams, setObsParams] = (0, _react.useState)({
85
88
  url: dataset.url,
86
- path: "obs/" + obs?.name + (obs?.type === _constants.OBS_TYPES.CATEGORICAL ? "/codes" : "")
89
+ path: "obs/" + ((_obs = obs) === null || _obs === void 0 ? void 0 : _obs.name) + (((_obs2 = obs) === null || _obs2 === void 0 ? void 0 : _obs2.type) === _constants.OBS_TYPES.CATEGORICAL ? "/codes" : "")
87
90
  });
88
91
  (0, _react.useEffect)(() => {
92
+ var _obs3, _obs4;
89
93
  setObsParams({
90
94
  url: dataset.url,
91
- path: "obs/" + obs?.name + (obs?.type === _constants.OBS_TYPES.CATEGORICAL ? "/codes" : "")
95
+ path: "obs/" + ((_obs3 = obs) === null || _obs3 === void 0 ? void 0 : _obs3.name) + (((_obs4 = obs) === null || _obs4 === void 0 ? void 0 : _obs4.type) === _constants.OBS_TYPES.CATEGORICAL ? "/codes" : "")
92
96
  });
93
97
  }, [dataset.url, obs]);
94
98
  return (0, _zarrHelper.useZarr)(obsParams, _zarrHelper.GET_OPTIONS, {
@@ -1,6 +1,6 @@
1
1
  @charset "UTF-8";
2
2
  /*!
3
- * Bootstrap v5.3.5 (https://getbootstrap.com/)
3
+ * Bootstrap v5.3.6 (https://getbootstrap.com/)
4
4
  * Copyright 2011-2025 The Bootstrap Authors
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  */
@@ -4454,24 +4454,24 @@ textarea.form-control-lg {
4454
4454
  border-top-right-radius: 0;
4455
4455
  border-bottom-right-radius: 0;
4456
4456
  }
4457
- .card-group > .card:not(:last-child) .card-img-top,
4458
- .card-group > .card:not(:last-child) .card-header {
4457
+ .card-group > .card:not(:last-child) > .card-img-top,
4458
+ .card-group > .card:not(:last-child) > .card-header {
4459
4459
  border-top-right-radius: 0;
4460
4460
  }
4461
- .card-group > .card:not(:last-child) .card-img-bottom,
4462
- .card-group > .card:not(:last-child) .card-footer {
4461
+ .card-group > .card:not(:last-child) > .card-img-bottom,
4462
+ .card-group > .card:not(:last-child) > .card-footer {
4463
4463
  border-bottom-right-radius: 0;
4464
4464
  }
4465
4465
  .card-group > .card:not(:first-child) {
4466
4466
  border-top-left-radius: 0;
4467
4467
  border-bottom-left-radius: 0;
4468
4468
  }
4469
- .card-group > .card:not(:first-child) .card-img-top,
4470
- .card-group > .card:not(:first-child) .card-header {
4469
+ .card-group > .card:not(:first-child) > .card-img-top,
4470
+ .card-group > .card:not(:first-child) > .card-header {
4471
4471
  border-top-left-radius: 0;
4472
4472
  }
4473
- .card-group > .card:not(:first-child) .card-img-bottom,
4474
- .card-group > .card:not(:first-child) .card-footer {
4473
+ .card-group > .card:not(:first-child) > .card-img-bottom,
4474
+ .card-group > .card:not(:first-child) > .card-footer {
4475
4475
  border-bottom-left-radius: 0;
4476
4476
  }
4477
4477
  }
@@ -7054,6 +7054,10 @@ textarea.form-control-lg {
7054
7054
  .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {
7055
7055
  position: absolute !important;
7056
7056
  }
7057
+ .visually-hidden *,
7058
+ .visually-hidden-focusable:not(:focus):not(:focus-within) * {
7059
+ overflow: hidden !important;
7060
+ }
7057
7061
 
7058
7062
  .stretched-link::after {
7059
7063
  position: absolute;