@haniffalab/cherita-react 1.2.0-dev.2025-05-21.31931945 → 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 (79) 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 +37 -120
  20. package/dist/cjs/components/var-list/VarList.js +16 -13
  21. package/dist/cjs/components/var-list/VarListToolbar.js +1 -2
  22. package/dist/cjs/components/var-list/VarSet.js +17 -29
  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 +24 -10
  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 +36 -117
  60. package/dist/esm/components/var-list/VarList.js +15 -11
  61. package/dist/esm/components/var-list/VarSet.js +17 -28
  62. package/dist/esm/components/violin/Violin.js +43 -33
  63. package/dist/esm/context/DatasetContext.js +16 -9
  64. package/dist/esm/context/FilterContext.js +8 -6
  65. package/dist/esm/context/SettingsContext.js +168 -235
  66. package/dist/esm/helpers/color-helper.js +3 -3
  67. package/dist/esm/helpers/zarr-helper.js +15 -12
  68. package/dist/esm/utils/Filter.js +13 -9
  69. package/dist/esm/utils/Histogram.js +4 -3
  70. package/dist/esm/utils/Legend.js +2 -1
  71. package/dist/esm/utils/LoadingIndicators.js +1 -1
  72. package/dist/esm/utils/VirtualizedList.js +15 -11
  73. package/dist/esm/utils/errors.js +20 -22
  74. package/dist/esm/utils/requests.js +13 -10
  75. package/dist/esm/utils/zarrData.js +12 -8
  76. package/package.json +4 -2
  77. package/scss/cherita.scss +5 -0
  78. package/scss/components/layouts.scss +4 -0
  79. package/scss/components/lists.scss +4 -5
@@ -1,3 +1,8 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
6
  import React, { useEffect, useState } from "react";
2
7
  import { faCircleInfo } from "@fortawesome/free-solid-svg-icons";
3
8
  import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
@@ -11,6 +16,7 @@ import { useSettings } from "../../context/SettingsContext";
11
16
  import { LoadingSpinner } from "../../utils/LoadingIndicators";
12
17
  import { useDebouncedFetch } from "../../utils/requests";
13
18
  export function Violin(_ref) {
19
+ var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3, _settings$selectedVar4, _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
14
20
  let {
15
21
  mode = VIOLIN_MODES.MULTIKEY
16
22
  } = _ref;
@@ -24,30 +30,32 @@ export function Violin(_ref) {
24
30
  const [data, setData] = useState([]);
25
31
  const [layout, setLayout] = useState({});
26
32
  const [hasSelections, setHasSelections] = useState(false);
27
- const [params, setParams] = useState({
33
+ const [params, setParams] = useState(_objectSpread({
28
34
  url: dataset.url,
29
35
  mode: mode,
30
36
  scale: settings.controls.scale.violinplot.value,
31
- varNamesCol: dataset.varNamesCol,
32
- ...{
33
- [VIOLIN_MODES.MULTIKEY]: {
34
- varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
35
- name: i.name,
36
- indices: i.vars.map(v => v.index)
37
- } : i.index),
38
- obsKeys: [] // @TODO: implement
39
- },
40
- [VIOLIN_MODES.GROUPBY]: {
41
- varKey: settings.selectedVar?.isSet ? {
42
- name: settings.selectedVar?.name,
43
- indices: settings.selectedVar?.vars.map(v => v.index)
44
- } : settings.selectedVar?.index,
45
- obsCol: settings.selectedObs,
46
- obsValues: !settings.selectedObs?.omit.length ? null : _.difference(_.values(settings.selectedObs?.codes), settings.selectedObs?.omit).map(c => settings.selectedObs?.codesMap[c]),
47
- obsIndices: isSliced ? [...(obsIndices || [])] : null
48
- }
49
- }[mode]
50
- });
37
+ varNamesCol: dataset.varNamesCol
38
+ }, {
39
+ [VIOLIN_MODES.MULTIKEY]: {
40
+ varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
41
+ name: i.name,
42
+ indices: i.vars.map(v => v.index)
43
+ } : i.index),
44
+ obsKeys: [] // @TODO: implement
45
+ },
46
+ [VIOLIN_MODES.GROUPBY]: {
47
+ varKey: (_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet ? {
48
+ name: (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name,
49
+ indices: (_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars.map(v => v.index)
50
+ } : (_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.index,
51
+ obsCol: settings.selectedObs,
52
+ obsValues: !((_settings$selectedObs = settings.selectedObs) !== null && _settings$selectedObs !== void 0 && _settings$selectedObs.omit.length) ? null : _.difference(_.values((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.codes), (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.omit).map(c => {
53
+ var _settings$selectedObs4;
54
+ return (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.codesMap[c];
55
+ }),
56
+ obsIndices: isSliced ? [...(obsIndices || [])] : null
57
+ }
58
+ }[mode]));
51
59
  // @TODO: set default scale
52
60
 
53
61
  useEffect(() => {
@@ -58,8 +66,7 @@ export function Violin(_ref) {
58
66
  setHasSelections(false);
59
67
  }
60
68
  setParams(p => {
61
- return {
62
- ...p,
69
+ return _objectSpread(_objectSpread({}, p), {}, {
63
70
  url: dataset.url,
64
71
  mode: mode,
65
72
  varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
@@ -68,7 +75,7 @@ export function Violin(_ref) {
68
75
  } : i.index),
69
76
  scale: settings.controls.scale.violinplot.value,
70
77
  varNamesCol: dataset.varNamesCol
71
- };
78
+ });
72
79
  });
73
80
  } else if (mode === VIOLIN_MODES.GROUPBY) {
74
81
  if (settings.selectedObs && settings.selectedVar) {
@@ -77,20 +84,23 @@ export function Violin(_ref) {
77
84
  setHasSelections(false);
78
85
  }
79
86
  setParams(p => {
80
- return {
81
- ...p,
87
+ var _settings$selectedVar5, _settings$selectedVar6, _settings$selectedVar7, _settings$selectedVar8, _settings$selectedObs5, _settings$selectedObs6, _settings$selectedObs7;
88
+ return _objectSpread(_objectSpread({}, p), {}, {
82
89
  url: dataset.url,
83
90
  mode: mode,
84
- varKey: settings.selectedVar?.isSet ? {
85
- name: settings.selectedVar?.name,
86
- indices: settings.selectedVar?.vars.map(v => v.index)
87
- } : settings.selectedVar?.index,
91
+ varKey: (_settings$selectedVar5 = settings.selectedVar) !== null && _settings$selectedVar5 !== void 0 && _settings$selectedVar5.isSet ? {
92
+ name: (_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.name,
93
+ indices: (_settings$selectedVar7 = settings.selectedVar) === null || _settings$selectedVar7 === void 0 ? void 0 : _settings$selectedVar7.vars.map(v => v.index)
94
+ } : (_settings$selectedVar8 = settings.selectedVar) === null || _settings$selectedVar8 === void 0 ? void 0 : _settings$selectedVar8.index,
88
95
  obsCol: settings.selectedObs,
89
- obsValues: !settings.selectedObs?.omit.length ? null : _.difference(_.values(settings.selectedObs?.codes), settings.selectedObs?.omit).map(c => settings.selectedObs?.codesMap[c]),
96
+ obsValues: !((_settings$selectedObs5 = settings.selectedObs) !== null && _settings$selectedObs5 !== void 0 && _settings$selectedObs5.omit.length) ? null : _.difference(_.values((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.codes), (_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.omit).map(c => {
97
+ var _settings$selectedObs8;
98
+ return (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.codesMap[c];
99
+ }),
90
100
  obsIndices: isSliced ? [...(obsIndices || [])] : null,
91
101
  scale: settings.controls.scale.violinplot.value,
92
102
  varNamesCol: dataset.varNamesCol
93
- };
103
+ });
94
104
  });
95
105
  }
96
106
  }, [settings.controls.scale.violinplot.value, settings.selectedMultiVar, settings.selectedObs, settings.selectedVar, dataset.url, dataset.varNamesCol, obsIndices, isSliced, mode]);
@@ -119,7 +129,7 @@ export function Violin(_ref) {
119
129
  maxWidth: "100%",
120
130
  maxHeight: "100%"
121
131
  }
122
- }), fetchedData?.resampled && /*#__PURE__*/React.createElement(Alert, {
132
+ }), (fetchedData === null || fetchedData === void 0 ? void 0 : fetchedData.resampled) && /*#__PURE__*/React.createElement(Alert, {
123
133
  variant: "warning"
124
134
  }, /*#__PURE__*/React.createElement("b", null, "Warning:"), " For performance reasons this plot was generated with resampled data. It will not be exactly the same as one produced with the entire dataset. \xA0", /*#__PURE__*/React.createElement(OverlayTrigger, {
125
135
  placement: "top",
@@ -1,3 +1,11 @@
1
+ const _excluded = ["dataset_url", "children"];
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
1
9
  import React, { createContext, useContext } from "react";
2
10
  import { createSyncStoragePersister } from "@tanstack/query-sync-storage-persister";
3
11
  import { QueryClient, QueryCache } from "@tanstack/react-query";
@@ -37,7 +45,7 @@ const persistOptions = {
37
45
  state
38
46
  } = _ref;
39
47
  if (state.status === "success") {
40
- return persistKeys.includes(queryKey?.[0]);
48
+ return persistKeys.includes(queryKey === null || queryKey === void 0 ? void 0 : queryKey[0]);
41
49
  }
42
50
  return false;
43
51
  }
@@ -55,14 +63,13 @@ const initialDataset = {
55
63
  };
56
64
  export function DatasetProvider(_ref2) {
57
65
  let {
58
- dataset_url,
59
- children,
60
- ...dataset_params
61
- } = _ref2;
62
- const dataset = _.assign(initialDataset, {
63
- url: dataset_url,
64
- ...dataset_params
65
- });
66
+ dataset_url,
67
+ children
68
+ } = _ref2,
69
+ dataset_params = _objectWithoutProperties(_ref2, _excluded);
70
+ const dataset = _.assign(initialDataset, _objectSpread({
71
+ url: dataset_url
72
+ }, dataset_params));
66
73
  return /*#__PURE__*/React.createElement(DatasetContext.Provider, {
67
74
  value: dataset
68
75
  }, /*#__PURE__*/React.createElement(SettingsProvider, {
@@ -1,3 +1,8 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
6
  import React, { useReducer, createContext, useContext } from "react";
2
7
  export const FilteredDataContext = /*#__PURE__*/createContext(null);
3
8
  export const FilteredDataDispatchContext = /*#__PURE__*/createContext(null);
@@ -12,9 +17,7 @@ export function FilterProvider(_ref) {
12
17
  let {
13
18
  children
14
19
  } = _ref;
15
- const [filteredData, dispatch] = useReducer(filterReducer, {
16
- ...initialFilterData
17
- });
20
+ const [filteredData, dispatch] = useReducer(filterReducer, _objectSpread({}, initialFilterData));
18
21
  return /*#__PURE__*/React.createElement(FilteredDataContext.Provider, {
19
22
  value: filteredData
20
23
  }, /*#__PURE__*/React.createElement(FilteredDataDispatchContext.Provider, {
@@ -31,14 +34,13 @@ function filterReducer(filteredData, action) {
31
34
  switch (action.type) {
32
35
  case "set.obs.indices":
33
36
  {
34
- return {
35
- ...filteredData,
37
+ return _objectSpread(_objectSpread({}, filteredData), {}, {
36
38
  obsIndices: action.indices,
37
39
  valueMin: action.valueMin,
38
40
  valueMax: action.valueMax,
39
41
  slicedLength: action.slicedLength,
40
42
  isSliced: action.isSliced
41
- };
43
+ });
42
44
  }
43
45
  default:
44
46
  {