@haniffalab/cherita-react 1.2.0-dev.2025-05-21.e8f5ce54 → 1.2.0-dev.2025-05-21.6154c7e3

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 (83) hide show
  1. package/dist/cjs/components/controls/Controls.js +60 -0
  2. package/dist/cjs/components/dotplot/Dotplot.js +29 -22
  3. package/dist/cjs/components/dotplot/DotplotControls.js +62 -99
  4. package/dist/cjs/components/full-page/FullPage.js +9 -7
  5. package/dist/cjs/components/full-page/FullPagePseudospatial.js +9 -7
  6. package/dist/cjs/components/heatmap/Heatmap.js +22 -13
  7. package/dist/cjs/components/heatmap/HeatmapControls.js +2 -19
  8. package/dist/cjs/components/matrixplot/Matrixplot.js +25 -16
  9. package/dist/cjs/components/matrixplot/MatrixplotControls.js +4 -34
  10. package/dist/cjs/components/obs-list/ObsItem.js +37 -29
  11. package/dist/cjs/components/obs-list/ObsList.js +47 -44
  12. package/dist/cjs/components/obsm-list/ObsmList.js +9 -6
  13. package/dist/cjs/components/offcanvas/index.js +13 -9
  14. package/dist/cjs/components/pseudospatial/Pseudospatial.js +61 -53
  15. package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +17 -11
  16. package/dist/cjs/components/scatterplot/Scatterplot.js +52 -52
  17. package/dist/cjs/components/scatterplot/ScatterplotControls.js +11 -24
  18. package/dist/cjs/components/scatterplot/SpatialControls.js +4 -4
  19. package/dist/cjs/components/search-bar/SearchBar.js +12 -10
  20. package/dist/cjs/components/search-bar/SearchInfo.js +14 -13
  21. package/dist/cjs/components/search-bar/SearchResults.js +16 -14
  22. package/dist/cjs/components/var-list/VarItem.js +10 -7
  23. package/dist/cjs/components/var-list/VarList.js +14 -9
  24. package/dist/cjs/components/var-list/VarListToolbar.js +1 -2
  25. package/dist/cjs/components/var-list/VarSet.js +1 -2
  26. package/dist/cjs/components/violin/Violin.js +48 -39
  27. package/dist/cjs/components/violin/ViolinControls.js +4 -20
  28. package/dist/cjs/context/DatasetContext.js +17 -11
  29. package/dist/cjs/context/FilterContext.js +9 -8
  30. package/dist/cjs/context/SettingsContext.js +172 -240
  31. package/dist/cjs/context/ZarrDataContext.js +1 -2
  32. package/dist/cjs/helpers/color-helper.js +3 -3
  33. package/dist/cjs/helpers/zarr-helper.js +15 -12
  34. package/dist/cjs/utils/Filter.js +13 -9
  35. package/dist/cjs/utils/Histogram.js +4 -3
  36. package/dist/cjs/utils/ImageViewer.js +1 -2
  37. package/dist/cjs/utils/Legend.js +3 -3
  38. package/dist/cjs/utils/LoadingIndicators.js +1 -1
  39. package/dist/cjs/utils/VirtualizedList.js +16 -13
  40. package/dist/cjs/utils/errors.js +20 -22
  41. package/dist/cjs/utils/requests.js +13 -10
  42. package/dist/cjs/utils/zarrData.js +12 -8
  43. package/dist/css/cherita.css +13 -9
  44. package/dist/css/cherita.css.map +1 -1
  45. package/dist/esm/components/controls/Controls.js +51 -0
  46. package/dist/esm/components/dotplot/Dotplot.js +28 -20
  47. package/dist/esm/components/dotplot/DotplotControls.js +62 -97
  48. package/dist/esm/components/full-page/FullPage.js +8 -5
  49. package/dist/esm/components/full-page/FullPagePseudospatial.js +8 -5
  50. package/dist/esm/components/heatmap/Heatmap.js +21 -11
  51. package/dist/esm/components/heatmap/HeatmapControls.js +3 -20
  52. package/dist/esm/components/matrixplot/Matrixplot.js +24 -14
  53. package/dist/esm/components/matrixplot/MatrixplotControls.js +5 -35
  54. package/dist/esm/components/obs-list/ObsItem.js +36 -27
  55. package/dist/esm/components/obs-list/ObsList.js +46 -42
  56. package/dist/esm/components/obsm-list/ObsmList.js +8 -4
  57. package/dist/esm/components/offcanvas/index.js +13 -9
  58. package/dist/esm/components/pseudospatial/Pseudospatial.js +60 -51
  59. package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +16 -9
  60. package/dist/esm/components/scatterplot/Scatterplot.js +51 -50
  61. package/dist/esm/components/scatterplot/ScatterplotControls.js +11 -22
  62. package/dist/esm/components/scatterplot/SpatialControls.js +3 -2
  63. package/dist/esm/components/search-bar/SearchBar.js +11 -8
  64. package/dist/esm/components/search-bar/SearchInfo.js +13 -11
  65. package/dist/esm/components/search-bar/SearchResults.js +15 -12
  66. package/dist/esm/components/var-list/VarItem.js +9 -5
  67. package/dist/esm/components/var-list/VarList.js +13 -7
  68. package/dist/esm/components/violin/Violin.js +47 -37
  69. package/dist/esm/components/violin/ViolinControls.js +5 -21
  70. package/dist/esm/context/DatasetContext.js +16 -9
  71. package/dist/esm/context/FilterContext.js +8 -6
  72. package/dist/esm/context/SettingsContext.js +171 -238
  73. package/dist/esm/helpers/color-helper.js +3 -3
  74. package/dist/esm/helpers/zarr-helper.js +15 -12
  75. package/dist/esm/utils/Filter.js +13 -9
  76. package/dist/esm/utils/Histogram.js +4 -3
  77. package/dist/esm/utils/Legend.js +2 -1
  78. package/dist/esm/utils/LoadingIndicators.js +1 -1
  79. package/dist/esm/utils/VirtualizedList.js +15 -11
  80. package/dist/esm/utils/errors.js +20 -22
  81. package/dist/esm/utils/requests.js +13 -10
  82. package/dist/esm/utils/zarrData.js +12 -8
  83. package/package.json +4 -2
@@ -5,41 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.MatrixplotControls = MatrixplotControls;
7
7
  var _react = _interopRequireDefault(require("react"));
8
- var _lodash = _interopRequireDefault(require("lodash"));
9
8
  var _reactBootstrap = require("react-bootstrap");
10
- var _colorscales = require("../../constants/colorscales");
11
- var _constants = require("../../constants/constants");
12
- var _SettingsContext = require("../../context/SettingsContext");
9
+ var _Controls = require("../controls/Controls");
13
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
11
  function MatrixplotControls() {
15
- const settings = (0, _SettingsContext.useSettings)();
16
- const dispatch = (0, _SettingsContext.useSettingsDispatch)();
17
- const colorScaleList = _lodash.default.keys(_colorscales.COLORSCALES).map(key => /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
18
- key: key,
19
- active: settings.controls.colorScale === key,
20
- onClick: () => {
21
- dispatch({
22
- type: "set.controls.colorScale",
23
- colorScale: key
24
- });
25
- }
26
- }, key));
27
- const standardScaleList = _lodash.default.values(_constants.MATRIXPLOT_SCALES).map(scale => /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
28
- key: scale.value,
29
- active: settings.controls.scale.matrixplot.name === scale.name,
30
- onClick: () => {
31
- dispatch({
32
- type: "set.controls.scale",
33
- plot: "matrixplot",
34
- scale: scale
35
- });
36
- }
37
- }, scale.name));
38
- return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ButtonToolbar, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Toggle, {
39
- id: "dropdownColorscale",
40
- variant: "light"
41
- }, settings.controls.colorScale), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Menu, null, colorScaleList))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.InputGroup, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.InputGroup.Text, null, "Standard scale"), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Toggle, {
42
- id: "dropdownStandardScale",
43
- variant: "light"
44
- }, settings.controls.scale.matrixplot.name), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Menu, null, standardScaleList)))));
12
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Form, null, /*#__PURE__*/_react.default.createElement(_Controls.ColorscaleSelect, null), /*#__PURE__*/_react.default.createElement(_Controls.ScaleSelect, {
13
+ plot: "matrixplot"
14
+ })));
45
15
  }
@@ -23,8 +23,12 @@ var _string = require("../../utils/string");
23
23
  var _VirtualizedList = require("../../utils/VirtualizedList");
24
24
  var _zarrData = require("../../utils/zarrData");
25
25
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
- 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); }
27
- 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; }
26
+ 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); }
27
+ 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; }
28
+ 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; }
29
+ 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; }
30
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
31
+ 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); }
28
32
  // const N_BINS = 5;
29
33
 
30
34
  // function binContinuous(data, nBins) {
@@ -46,9 +50,10 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
46
50
  // }
47
51
 
48
52
  function getContinuousLabel(code, binEdges) {
49
- return `[ ${(0, _string.formatNumerical)(binEdges[code][0])}, ${(0, _string.formatNumerical)(binEdges[code][1], _string.FORMATS.EXPONENTIAL)}${code === binEdges.length - 1 ? " ]" : " )"}`;
53
+ return "[ ".concat((0, _string.formatNumerical)(binEdges[code][0]), ", ").concat((0, _string.formatNumerical)(binEdges[code][1], _string.FORMATS.EXPONENTIAL)).concat(code === binEdges.length - 1 ? " ]" : " )");
50
54
  }
51
55
  const useObsHistogram = obs => {
56
+ var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3, _settings$selectedVar4, _settings$selectedVar9, _settings$selectedVar0, _settings$selectedVar1, _settings$selectedVar10;
52
57
  const ENDPOINT = "obs/histograms";
53
58
  const dataset = (0, _DatasetContext.useDataset)();
54
59
  const settings = (0, _SettingsContext.useSettings)();
@@ -60,25 +65,25 @@ const useObsHistogram = obs => {
60
65
  url: dataset.url,
61
66
  obsCol: _lodash.default.omit(obs, "omit"),
62
67
  // avoid re-rendering when toggling unselected obs
63
- varKey: settings.selectedVar?.isSet ? {
64
- name: settings.selectedVar?.name,
65
- indices: settings.selectedVar?.vars.map(v => v.index)
66
- } : settings.selectedVar?.index,
68
+ varKey: (_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet ? {
69
+ name: (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name,
70
+ indices: (_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars.map(v => v.index)
71
+ } : (_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.index,
67
72
  obsIndices: isSliced ? [...(obsIndices || [])] : null
68
73
  });
69
74
  (0, _react.useEffect)(() => {
70
75
  setParams(p => {
71
- return {
72
- ...p,
76
+ var _settings$selectedVar5, _settings$selectedVar6, _settings$selectedVar7, _settings$selectedVar8;
77
+ return _objectSpread(_objectSpread({}, p), {}, {
73
78
  obsCol: _lodash.default.omit(obs, "omit"),
74
- varKey: settings.selectedVar?.isSet ? {
75
- name: settings.selectedVar?.name,
76
- indices: settings.selectedVar?.vars.map(v => v.index)
77
- } : settings.selectedVar?.index,
79
+ varKey: (_settings$selectedVar5 = settings.selectedVar) !== null && _settings$selectedVar5 !== void 0 && _settings$selectedVar5.isSet ? {
80
+ name: (_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.name,
81
+ indices: (_settings$selectedVar7 = settings.selectedVar) === null || _settings$selectedVar7 === void 0 ? void 0 : _settings$selectedVar7.vars.map(v => v.index)
82
+ } : (_settings$selectedVar8 = settings.selectedVar) === null || _settings$selectedVar8 === void 0 ? void 0 : _settings$selectedVar8.index,
78
83
  obsIndices: isSliced ? [...(obsIndices || [])] : null
79
- };
84
+ });
80
85
  });
81
- }, [settings.selectedVar?.index, settings.selectedVar?.isSet, settings.selectedVar?.name, settings.selectedVar?.vars, obsIndices, isSliced, obs]);
86
+ }, [(_settings$selectedVar9 = settings.selectedVar) === null || _settings$selectedVar9 === void 0 ? void 0 : _settings$selectedVar9.index, (_settings$selectedVar0 = settings.selectedVar) === null || _settings$selectedVar0 === void 0 ? void 0 : _settings$selectedVar0.isSet, (_settings$selectedVar1 = settings.selectedVar) === null || _settings$selectedVar1 === void 0 ? void 0 : _settings$selectedVar1.name, (_settings$selectedVar10 = settings.selectedVar) === null || _settings$selectedVar10 === void 0 ? void 0 : _settings$selectedVar10.vars, obsIndices, isSliced, obs]);
82
87
  return (0, _requests.useFetch)(ENDPOINT, params, {
83
88
  enabled: !!settings.selectedVar && settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR,
84
89
  refetchOnMount: false
@@ -92,6 +97,7 @@ const getBinIndex = (v, binEdges) => {
92
97
  return _lodash.default.findIndex(modifiedBinEdges, range => _lodash.default.inRange(v, ...range));
93
98
  };
94
99
  const useFilteredObsData = obs => {
100
+ var _obs$bins2;
95
101
  const {
96
102
  obsIndices
97
103
  } = (0, _FilterContext.useFilteredData)();
@@ -107,19 +113,20 @@ const useFilteredObsData = obs => {
107
113
  valueCounts = _lodash.default.countBy(filteredObsValues);
108
114
  } else {
109
115
  valueCounts = _lodash.default.countBy(filteredObsValues, v => {
110
- return getBinIndex(v, obs.bins?.binEdges || [[null, null]]);
116
+ var _obs$bins;
117
+ return getBinIndex(v, ((_obs$bins = obs.bins) === null || _obs$bins === void 0 ? void 0 : _obs$bins.binEdges) || [[null, null]]);
111
118
  });
112
119
  }
113
120
  valueCounts = _lodash.default.mapKeys(valueCounts, (_v, i) => {
114
121
  return obs.codesMap[i];
115
122
  });
116
- const totalCounts = obsIndices?.size;
123
+ const totalCounts = obsIndices === null || obsIndices === void 0 ? void 0 : obsIndices.size;
117
124
  const pct = _lodash.default.mapValues(valueCounts, v => v / totalCounts * 100);
118
125
  return {
119
126
  valueCounts,
120
127
  pct
121
128
  };
122
- }, [isCategorical, obs.bins?.binEdges, obs.codesMap, obsData.data, obsIndices]);
129
+ }, [isCategorical, (_obs$bins2 = obs.bins) === null || _obs$bins2 === void 0 ? void 0 : _obs$bins2.binEdges, obs.codesMap, obsData.data, obsIndices]);
123
130
  return {
124
131
  value_counts: valueCounts,
125
132
  pct: pct
@@ -179,7 +186,7 @@ function CategoricalItem(_ref) {
179
186
  })), /*#__PURE__*/_react.default.createElement("div", {
180
187
  className: "pl-1 m-0"
181
188
  }, /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
182
- title: isSliced ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Filtered:", " ", (0, _string.formatNumerical)(filteredStats.pct, _string.FORMATS.EXPONENTIAL), "%", /*#__PURE__*/_react.default.createElement("br", null), "Total: ", (0, _string.formatNumerical)(stats.pct, _string.FORMATS.EXPONENTIAL), "%") : `${(0, _string.formatNumerical)(stats.pct, _string.FORMATS.EXPONENTIAL)}%`,
189
+ title: isSliced ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Filtered:", " ", (0, _string.formatNumerical)(filteredStats.pct, _string.FORMATS.EXPONENTIAL), "%", /*#__PURE__*/_react.default.createElement("br", null), "Total: ", (0, _string.formatNumerical)(stats.pct, _string.FORMATS.EXPONENTIAL), "%") : "".concat((0, _string.formatNumerical)(stats.pct, _string.FORMATS.EXPONENTIAL), "%"),
183
190
  placement: "left",
184
191
  arrow: true
185
192
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -234,7 +241,7 @@ function CategoricalItem(_ref) {
234
241
  y: "0",
235
242
  width: "10",
236
243
  height: "10",
237
- fill: `rgb(${getColor({
244
+ fill: "rgb(".concat(getColor({
238
245
  value: (code - min) / (max - min),
239
246
  categorical: true,
240
247
  grayOut: isOmitted,
@@ -242,7 +249,7 @@ function CategoricalItem(_ref) {
242
249
  alpha: 1
243
250
  },
244
251
  colorEncoding: "obs"
245
- })})`
252
+ }), ")")
246
253
  }))) : null))));
247
254
  }
248
255
  function CategoricalObs(_ref2) {
@@ -262,6 +269,7 @@ function CategoricalObs(_ref2) {
262
269
  const obsHistograms = useObsHistogram(obs);
263
270
  const filteredObsData = useFilteredObsData(obs);
264
271
  const getDataAtIndex = (0, _react.useCallback)(index => {
272
+ var _obsHistograms$fetche;
265
273
  return {
266
274
  value: obs.values[index],
267
275
  code: obs.codes[obs.values[index]],
@@ -272,7 +280,7 @@ function CategoricalObs(_ref2) {
272
280
  isOmitted: _lodash.default.includes(obs.omit, obs.codes[obs.values[index]]),
273
281
  label: obs.values[index],
274
282
  histogramData: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? {
275
- data: obsHistograms.fetchedData?.[obs.values[index]],
283
+ data: (_obsHistograms$fetche = obsHistograms.fetchedData) === null || _obsHistograms$fetche === void 0 ? void 0 : _obsHistograms$fetche[obs.values[index]],
276
284
  isPending: obsHistograms.isPending,
277
285
  altColor: isSliced
278
286
  } : {
@@ -280,12 +288,12 @@ function CategoricalObs(_ref2) {
280
288
  isPending: false
281
289
  },
282
290
  filteredStats: {
283
- value_counts: filteredObsData?.value_counts[obs.values[index]] || 0,
284
- pct: filteredObsData?.pct[obs.values[index]] || 0
291
+ value_counts: (filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.value_counts[obs.values[index]]) || 0,
292
+ pct: (filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.pct[obs.values[index]]) || 0
285
293
  },
286
294
  isSliced: isSliced
287
295
  };
288
- }, [settings.colorEncoding, filteredObsData?.pct, filteredObsData?.value_counts, isSliced, obs.codes, obs.omit, obs.value_counts, obs.values, obsHistograms.fetchedData, obsHistograms.isPending, totalCounts]);
296
+ }, [settings.colorEncoding, filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.pct, filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.value_counts, isSliced, obs.codes, obs.omit, obs.value_counts, obs.values, obsHistograms.fetchedData, obsHistograms.isPending, totalCounts]);
289
297
  showColor &= settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS;
290
298
  return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, {
291
299
  variant: "flush",
@@ -348,9 +356,9 @@ function ObsContinuousStats(_ref3) {
348
356
  },
349
357
  xAxis: {
350
358
  data: fetchedData.kde_values[0],
351
- valueFormatter: v => `${(0, _string.formatNumerical)(v, _string.FORMATS.EXPONENTIAL)}`
359
+ valueFormatter: v => "".concat((0, _string.formatNumerical)(v, _string.FORMATS.EXPONENTIAL))
352
360
  },
353
- valueFormatter: v => `${(0, _string.formatNumerical)(v, _string.FORMATS.EXPONENTIAL)}`,
361
+ valueFormatter: v => "".concat((0, _string.formatNumerical)(v, _string.FORMATS.EXPONENTIAL)),
354
362
  slotProps: {
355
363
  popper: {
356
364
  className: "feature-histogram-tooltip"
@@ -395,8 +403,8 @@ function ContinuousObs(_ref4) {
395
403
  isOmitted: _lodash.default.includes(obs.omit, obs.codes[obs.values[index]]),
396
404
  label: isNaN(obs.values[index]) ? "NaN" : getContinuousLabel(obs.codes[obs.values[index]], obs.bins.binEdges),
397
405
  filteredStats: {
398
- value_counts: filteredObsData?.value_counts[obs.values[index]] || 0,
399
- pct: filteredObsData?.pct[obs.values[index]] || 0
406
+ value_counts: (filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.value_counts[obs.values[index]]) || 0,
407
+ pct: (filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.pct[obs.values[index]]) || 0
400
408
  },
401
409
  isSliced: isSliced
402
410
  };
@@ -22,8 +22,12 @@ var _SettingsContext = require("../../context/SettingsContext");
22
22
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
23
23
  var _requests = require("../../utils/requests");
24
24
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
25
- 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); }
26
- 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; }
25
+ 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); }
26
+ 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; }
27
+ 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; }
28
+ 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; }
29
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
30
+ 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); }
27
31
  const ObsAccordionToggle = _ref => {
28
32
  let {
29
33
  children,
@@ -38,7 +42,7 @@ const ObsAccordionToggle = _ref => {
38
42
  handleAccordionToggle(eventKey, isCurrentEventKey);
39
43
  });
40
44
  return /*#__PURE__*/_react.default.createElement("div", {
41
- className: `obs-accordion-header ${isCurrentEventKey ? "active" : ""}`,
45
+ className: "obs-accordion-header ".concat(isCurrentEventKey ? "active" : ""),
42
46
  onClick: decoratedOnClick
43
47
  }, /*#__PURE__*/_react.default.createElement("span", {
44
48
  className: "obs-accordion-header-chevron"
@@ -49,6 +53,7 @@ const ObsAccordionToggle = _ref => {
49
53
  }, children));
50
54
  };
51
55
  function ObsColsList(_ref2) {
56
+ var _settings$selectedObs;
52
57
  let {
53
58
  showColor = true,
54
59
  enableObsGroups = true
@@ -59,20 +64,21 @@ function ObsColsList(_ref2) {
59
64
  const dispatch = (0, _SettingsContext.useSettingsDispatch)();
60
65
  const [enableGroups, setEnableGroups] = (0, _react.useState)(enableObsGroups);
61
66
  const [obsCols, setObsCols] = (0, _react.useState)(null);
62
- const [active, setActive] = (0, _react.useState)([...[settings.selectedObs?.name]]);
67
+ const [active, setActive] = (0, _react.useState)([...[(_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.name]]);
63
68
  const [params, setParams] = (0, _react.useState)({
64
69
  url: dataset.url
65
70
  });
66
- const obsGroups = (0, _react.useMemo)(() => ({
67
- default: _lodash.default.union(_constants.DEFAULT_OBS_GROUP, dataset.obsGroups?.default),
68
- ..._lodash.default.omit(dataset.obsGroups, "default")
69
- }), [dataset.obsGroups]);
71
+ const obsGroups = (0, _react.useMemo)(() => {
72
+ var _dataset$obsGroups;
73
+ return _objectSpread({
74
+ default: _lodash.default.union(_constants.DEFAULT_OBS_GROUP, (_dataset$obsGroups = dataset.obsGroups) === null || _dataset$obsGroups === void 0 ? void 0 : _dataset$obsGroups.default)
75
+ }, _lodash.default.omit(dataset.obsGroups, "default"));
76
+ }, [dataset.obsGroups]);
70
77
  (0, _react.useEffect)(() => {
71
78
  setParams(p => {
72
- return {
73
- ...p,
79
+ return _objectSpread(_objectSpread({}, p), {}, {
74
80
  url: dataset.url
75
- };
81
+ });
76
82
  });
77
83
  }, [dataset.url]);
78
84
  const {
@@ -93,7 +99,7 @@ function ObsColsList(_ref2) {
93
99
  });
94
100
  if (!!filteredData.length && !groupFiltered.length) {
95
101
  setEnableGroups(false);
96
- console.warn(`No obs found in obsGroups ${JSON.stringify(obsGroups)}, disabling obsGroups`);
102
+ console.warn("No obs found in obsGroups ".concat(JSON.stringify(obsGroups), ", disabling obsGroups"));
97
103
  } else {
98
104
  filteredData = groupFiltered;
99
105
  }
@@ -104,17 +110,17 @@ function ObsColsList(_ref2) {
104
110
  return d.type !== _constants.OBS_TYPES.DISCRETE;
105
111
  });
106
112
  setObsCols(_lodash.default.keyBy(_lodash.default.map(filteredData, d => {
107
- return {
108
- ...d,
113
+ return _objectSpread(_objectSpread({}, d), {}, {
109
114
  codesMap: _lodash.default.invert(d.codes),
110
115
  omit: []
111
- };
116
+ });
112
117
  }), "name"));
113
118
  }
114
119
  }, [fetchedData, isPending, obsGroups, serverError, enableGroups]);
115
120
  (0, _react.useEffect)(() => {
116
121
  if (obsCols) {
117
- if (!obsCols[settings.selectedObs?.name]) {
122
+ var _settings$selectedObs2;
123
+ if (!obsCols[(_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.name]) {
118
124
  setActive([]);
119
125
  dispatch({
120
126
  type: "select.obs",
@@ -131,23 +137,21 @@ function ObsColsList(_ref2) {
131
137
  }
132
138
  };
133
139
  const toggleAll = item => {
140
+ var _settings$selectedObs3;
134
141
  const omit = item.omit.length ? [] : _lodash.default.map(item.values, v => item.codes[v]);
135
142
  setObsCols(o => {
136
- return {
137
- ...o,
138
- [item.name]: {
139
- ...item,
143
+ return _objectSpread(_objectSpread({}, o), {}, {
144
+ [item.name]: _objectSpread(_objectSpread({}, item), {}, {
140
145
  omit: omit
141
- }
142
- };
146
+ })
147
+ });
143
148
  });
144
- if (settings.selectedObs?.name === item.name) {
149
+ if (((_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.name) === item.name) {
145
150
  dispatch({
146
151
  type: "select.obs",
147
- obs: {
148
- ...item,
152
+ obs: _objectSpread(_objectSpread({}, item), {}, {
149
153
  omit: omit
150
- }
154
+ })
151
155
  });
152
156
  }
153
157
  };
@@ -186,6 +190,7 @@ function ObsColsList(_ref2) {
186
190
  });
187
191
  };
188
192
  const toggleObs = (item, value) => {
193
+ var _settings$selectedObs4;
189
194
  let omit;
190
195
  if (_lodash.default.includes(item.omit, item.codes[value])) {
191
196
  omit = item.omit.filter(i => i !== item.codes[value]);
@@ -193,25 +198,23 @@ function ObsColsList(_ref2) {
193
198
  omit = [...item.omit, item.codes[value]];
194
199
  }
195
200
  setObsCols(o => {
196
- return {
197
- ...o,
198
- [item.name]: {
199
- ...item,
201
+ return _objectSpread(_objectSpread({}, o), {}, {
202
+ [item.name]: _objectSpread(_objectSpread({}, item), {}, {
200
203
  omit: omit
201
- }
202
- };
204
+ })
205
+ });
203
206
  });
204
- if (settings.selectedObs?.name === item.name) {
207
+ if (((_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.name) === item.name) {
205
208
  dispatch({
206
209
  type: "select.obs",
207
- obs: {
208
- ...item,
210
+ obs: _objectSpread(_objectSpread({}, item), {}, {
209
211
  omit: omit
210
- }
212
+ })
211
213
  });
212
214
  }
213
215
  };
214
216
  const obsItem = item => {
217
+ var _settings$selectedObs5, _settings$selectedObs6;
215
218
  if (!item) {
216
219
  return null;
217
220
  }
@@ -219,8 +222,8 @@ function ObsColsList(_ref2) {
219
222
  return null;
220
223
  }
221
224
  const inLabelObs = _lodash.default.some(settings.labelObs, i => i.name === item.name);
222
- const inSliceObs = settings.sliceBy.obs && settings.selectedObs?.name === item.name;
223
- const isColorEncoding = settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && settings.selectedObs?.name === item.name;
225
+ const inSliceObs = settings.sliceBy.obs && ((_settings$selectedObs5 = settings.selectedObs) === null || _settings$selectedObs5 === void 0 ? void 0 : _settings$selectedObs5.name) === item.name;
226
+ const isColorEncoding = settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && ((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.name) === item.name;
224
227
  return /*#__PURE__*/_react.default.createElement("div", {
225
228
  className: "accordion-item",
226
229
  key: item.name
@@ -228,21 +231,21 @@ function ObsColsList(_ref2) {
228
231
  eventKey: item.name,
229
232
  handleAccordionToggle: handleAccordionToggle
230
233
  }, /*#__PURE__*/_react.default.createElement("div", null, item.name), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("span", {
231
- className: `mx-1 cursor-pointer ${inLabelObs ? "active-icon" : "text-muted opacity-50"}`,
234
+ className: "mx-1 cursor-pointer ".concat(inLabelObs ? "active-icon" : "text-muted opacity-50"),
232
235
  onClick: event => {
233
236
  event.stopPropagation();
234
237
  toggleLabel(item);
235
238
  },
236
239
  title: "Add to tooltip"
237
240
  }, /*#__PURE__*/_react.default.createElement(_Comment.default, null)), /*#__PURE__*/_react.default.createElement("span", {
238
- className: `mx-1 cursor-pointer ${inSliceObs ? "active-icon" : "text-muted opacity-50"}`,
241
+ className: "mx-1 cursor-pointer ".concat(inSliceObs ? "active-icon" : "text-muted opacity-50"),
239
242
  onClick: event => {
240
243
  event.stopPropagation();
241
244
  toggleSlice(item);
242
245
  },
243
246
  title: "Filter applied"
244
247
  }, /*#__PURE__*/_react.default.createElement(_JoinInner.default, null)), /*#__PURE__*/_react.default.createElement("span", {
245
- className: `mx-1 cursor-pointer ${isColorEncoding ? "active-icon" : "text-muted opacity-50"}`,
248
+ className: "mx-1 cursor-pointer ".concat(isColorEncoding ? "active-icon" : "text-muted opacity-50"),
246
249
  onClick: event => {
247
250
  event.stopPropagation();
248
251
  toggleColor(item);
@@ -272,9 +275,9 @@ function ObsColsList(_ref2) {
272
275
  })))));
273
276
  };
274
277
  const groupList = _lodash.default.map(_lodash.default.keys(obsGroups), group => {
275
- const key = `group-${group}`;
278
+ const key = "group-".concat(group);
276
279
  const groupItems = _lodash.default.compact(_lodash.default.map(_lodash.default.sortBy(obsGroups[group], o => _lodash.default.lowerCase(o.name)), item => {
277
- return obsItem(obsCols?.[item]);
280
+ return obsItem(obsCols === null || obsCols === void 0 ? void 0 : obsCols[item]);
278
281
  }));
279
282
  if (group === "default") {
280
283
  return groupItems;
@@ -291,7 +294,7 @@ function ObsColsList(_ref2) {
291
294
  }
292
295
  });
293
296
  const obsList = enableGroups ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, groupList) : _lodash.default.map(_lodash.default.sortBy(obsCols, o => _lodash.default.lowerCase(o.name)), item => obsItem(item));
294
- const defaultActiveGroup = enableGroups ? `group-${_lodash.default.findKey(obsGroups, g => g.includes(active?.[0]))}` : null;
297
+ const defaultActiveGroup = enableGroups ? "group-".concat(_lodash.default.findKey(obsGroups, g => g.includes(active === null || active === void 0 ? void 0 : active[0]))) : null;
295
298
  if (!serverError) {
296
299
  return /*#__PURE__*/_react.default.createElement("div", {
297
300
  className: "position-relative h-100"
@@ -10,8 +10,12 @@ var _DatasetContext = require("../../context/DatasetContext");
10
10
  var _SettingsContext = require("../../context/SettingsContext");
11
11
  var _requests = require("../../utils/requests");
12
12
  var _Skeleton = require("../../utils/Skeleton");
13
- 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); }
14
- 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; }
13
+ 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); }
14
+ 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; }
15
+ 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; }
16
+ 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; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18
+ 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); }
15
19
  function ObsmKeysList() {
16
20
  const ENDPOINT = "obsm/keys";
17
21
  const dataset = (0, _DatasetContext.useDataset)();
@@ -24,10 +28,9 @@ function ObsmKeysList() {
24
28
  });
25
29
  (0, _react.useEffect)(() => {
26
30
  setParams(p => {
27
- return {
28
- ...p,
31
+ return _objectSpread(_objectSpread({}, p), {}, {
29
32
  url: dataset.url
30
- };
33
+ });
31
34
  });
32
35
  }, [dataset.url]);
33
36
  const {
@@ -50,7 +53,7 @@ function ObsmKeysList() {
50
53
  const obsmList = obsmKeysList.map(item => {
51
54
  return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
52
55
  key: item,
53
- className: `custom ${active === item && "active"}`,
56
+ className: "custom ".concat(active === item && "active"),
54
57
  onClick: () => {
55
58
  dispatch({
56
59
  type: "select.obsm",
@@ -14,13 +14,17 @@ var _ObsList = require("../obs-list/ObsList");
14
14
  var _ObsmList = require("../obsm-list/ObsmList");
15
15
  var _SearchBar = require("../search-bar/SearchBar");
16
16
  var _VarList = require("../var-list/VarList");
17
+ const _excluded = ["show", "handleClose"],
18
+ _excluded2 = ["show", "handleClose", "Controls"];
17
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
+ 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; }
21
+ 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; }
18
22
  function OffcanvasObs(_ref) {
19
23
  let {
20
- show,
21
- handleClose,
22
- ...props
23
- } = _ref;
24
+ show,
25
+ handleClose
26
+ } = _ref,
27
+ props = _objectWithoutProperties(_ref, _excluded);
24
28
  return /*#__PURE__*/_react.default.createElement(_Offcanvas.default, {
25
29
  show: show,
26
30
  onHide: handleClose,
@@ -62,11 +66,11 @@ function OffcanvasVars(_ref3) {
62
66
  }
63
67
  function OffcanvasControls(_ref4) {
64
68
  let {
65
- show,
66
- handleClose,
67
- Controls,
68
- ...props
69
- } = _ref4;
69
+ show,
70
+ handleClose,
71
+ Controls
72
+ } = _ref4,
73
+ props = _objectWithoutProperties(_ref4, _excluded2);
70
74
  return /*#__PURE__*/_react.default.createElement(_Offcanvas.default, {
71
75
  show: show,
72
76
  onHide: handleClose