@haniffalab/cherita-react 0.2.0-dev.2024-09-26.1ea62883 → 0.2.0-dev.2024-10-16.42ace931

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.
@@ -48,7 +48,6 @@ const meanData = (_i, data) => {
48
48
  });
49
49
  };
50
50
  function Scatterplot(_ref) {
51
- var _dataset$selectedVar, _dataset$selectedVar2, _dataset$selectedVar3, _dataset$selectedObs, _dataset$selectedObs2, _dataset$selectedObs7, _dataset$selectedObs11, _dataset$selectedObs12, _dataset$selectedObs13, _dataset$selectedObs15, _features$features2, _obsmData$serverError, _xData$serverError, _obsData$serverError, _labelObsData$serverE, _obsmData$data;
52
51
  let {
53
52
  radius = 30
54
53
  } = _ref;
@@ -79,11 +78,11 @@ function Scatterplot(_ref) {
79
78
  url: dataset.url,
80
79
  path: "obsm/" + dataset.selectedObsm
81
80
  });
82
- const [xParams, setXParams] = (0, _react.useState)(!dataset.selectedVar ? [] : !((_dataset$selectedVar = dataset.selectedVar) !== null && _dataset$selectedVar !== void 0 && _dataset$selectedVar.isSet) ? [{
81
+ const [xParams, setXParams] = (0, _react.useState)(!dataset.selectedVar ? [] : !dataset.selectedVar?.isSet ? [{
83
82
  url: dataset.url,
84
83
  path: "X",
85
- s: [null, (_dataset$selectedVar2 = dataset.selectedVar) === null || _dataset$selectedVar2 === void 0 ? void 0 : _dataset$selectedVar2.matrix_index]
86
- }] : _lodash.default.map((_dataset$selectedVar3 = dataset.selectedVar) === null || _dataset$selectedVar3 === void 0 ? void 0 : _dataset$selectedVar3.vars, v => {
84
+ s: [null, dataset.selectedVar?.matrix_index]
85
+ }] : _lodash.default.map(dataset.selectedVar?.vars, v => {
87
86
  return {
88
87
  url: dataset.url,
89
88
  path: "X",
@@ -92,7 +91,7 @@ function Scatterplot(_ref) {
92
91
  }));
93
92
  const [obsParams, setObsParams] = (0, _react.useState)({
94
93
  url: dataset.url,
95
- path: "obs/" + ((_dataset$selectedObs = dataset.selectedObs) === null || _dataset$selectedObs === void 0 ? void 0 : _dataset$selectedObs.name) + (((_dataset$selectedObs2 = dataset.selectedObs) === null || _dataset$selectedObs2 === void 0 ? void 0 : _dataset$selectedObs2.type) === _constants.OBS_TYPES.CATEGORICAL ? "/codes" : "")
94
+ path: "obs/" + dataset.selectedObs?.name + (dataset.selectedObs?.type === _constants.OBS_TYPES.CATEGORICAL ? "/codes" : "")
96
95
  });
97
96
  const [labelObsParams, setLabelObsParams] = (0, _react.useState)([]);
98
97
  const obsmData = (0, _zarrHelper.useZarr)(obsmParams, null, _zarrHelper.GET_OPTIONS);
@@ -108,12 +107,11 @@ function Scatterplot(_ref) {
108
107
  });
109
108
  }, [dataset.selectedObsm]);
110
109
  (0, _react.useEffect)(() => {
111
- var _dataset$selectedVar4, _dataset$selectedVar5, _dataset$selectedVar6;
112
- setXParams(!dataset.selectedVar ? [] : !((_dataset$selectedVar4 = dataset.selectedVar) !== null && _dataset$selectedVar4 !== void 0 && _dataset$selectedVar4.isSet) ? [{
110
+ setXParams(!dataset.selectedVar ? [] : !dataset.selectedVar?.isSet ? [{
113
111
  url: dataset.url,
114
112
  path: "X",
115
- s: [null, (_dataset$selectedVar5 = dataset.selectedVar) === null || _dataset$selectedVar5 === void 0 ? void 0 : _dataset$selectedVar5.matrix_index]
116
- }] : _lodash.default.map((_dataset$selectedVar6 = dataset.selectedVar) === null || _dataset$selectedVar6 === void 0 ? void 0 : _dataset$selectedVar6.vars, v => {
113
+ s: [null, dataset.selectedVar?.matrix_index]
114
+ }] : _lodash.default.map(dataset.selectedVar?.vars, v => {
117
115
  return {
118
116
  url: dataset.url,
119
117
  path: "X",
@@ -123,10 +121,9 @@ function Scatterplot(_ref) {
123
121
  }, [dataset.selectedVar, dataset.url]);
124
122
  (0, _react.useEffect)(() => {
125
123
  setObsParams(p => {
126
- var _dataset$selectedObs3, _dataset$selectedObs4;
127
124
  return {
128
125
  ...p,
129
- path: "obs/" + ((_dataset$selectedObs3 = dataset.selectedObs) === null || _dataset$selectedObs3 === void 0 ? void 0 : _dataset$selectedObs3.name) + (((_dataset$selectedObs4 = dataset.selectedObs) === null || _dataset$selectedObs4 === void 0 ? void 0 : _dataset$selectedObs4.type) === _constants.OBS_TYPES.CATEGORICAL ? "/codes" : "")
126
+ path: "obs/" + dataset.selectedObs?.name + (dataset.selectedObs?.type === _constants.OBS_TYPES.CATEGORICAL ? "/codes" : "")
130
127
  };
131
128
  });
132
129
  }, [dataset.selectedObs]);
@@ -158,7 +155,6 @@ function Scatterplot(_ref) {
158
155
 
159
156
  (0, _react.useEffect)(() => {
160
157
  if (!obsmData.isPending && !obsmData.serverError) {
161
- var _deckRef$current, _deckRef$current2;
162
158
  setIsRendering(true);
163
159
  setData(d => {
164
160
  return {
@@ -172,8 +168,8 @@ function Scatterplot(_ref) {
172
168
  longitude,
173
169
  zoom
174
170
  } = mapHelper.fitBounds(obsmData.data, {
175
- width: deckRef === null || deckRef === void 0 || (_deckRef$current = deckRef.current) === null || _deckRef$current === void 0 || (_deckRef$current = _deckRef$current.deck) === null || _deckRef$current === void 0 ? void 0 : _deckRef$current.width,
176
- height: deckRef === null || deckRef === void 0 || (_deckRef$current2 = deckRef.current) === null || _deckRef$current2 === void 0 || (_deckRef$current2 = _deckRef$current2.deck) === null || _deckRef$current2 === void 0 ? void 0 : _deckRef$current2.height
171
+ width: deckRef?.current?.deck?.width,
172
+ height: deckRef?.current?.deck?.height
177
173
  });
178
174
  setViewState(v => {
179
175
  return {
@@ -194,14 +190,13 @@ function Scatterplot(_ref) {
194
190
  }
195
191
  }, [dataset.selectedObsm, obsmData.data, obsmData.isPending, obsmData.serverError]);
196
192
  const getBounds = (0, _react.useCallback)(() => {
197
- var _deckRef$current3, _deckRef$current4;
198
193
  const {
199
194
  latitude,
200
195
  longitude,
201
196
  zoom
202
197
  } = new _mapHelper.MapHelper().fitBounds(data.positions, {
203
- width: deckRef === null || deckRef === void 0 || (_deckRef$current3 = deckRef.current) === null || _deckRef$current3 === void 0 || (_deckRef$current3 = _deckRef$current3.deck) === null || _deckRef$current3 === void 0 ? void 0 : _deckRef$current3.width,
204
- height: deckRef === null || deckRef === void 0 || (_deckRef$current4 = deckRef.current) === null || _deckRef$current4 === void 0 || (_deckRef$current4 = _deckRef$current4.deck) === null || _deckRef$current4 === void 0 ? void 0 : _deckRef$current4.height
198
+ width: deckRef?.current?.deck?.width,
199
+ height: deckRef?.current?.deck?.height
205
200
  });
206
201
  return {
207
202
  latitude,
@@ -268,12 +263,11 @@ function Scatterplot(_ref) {
268
263
  }, [dataset.colorEncoding, obsData.data, obsData.isPending, obsData.serverError, dataset.sliceBy.obs]);
269
264
  const isCategorical = (0, _react.useMemo)(() => {
270
265
  if (dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS) {
271
- var _dataset$selectedObs5, _dataset$selectedObs6;
272
- return ((_dataset$selectedObs5 = dataset.selectedObs) === null || _dataset$selectedObs5 === void 0 ? void 0 : _dataset$selectedObs5.type) === _constants.OBS_TYPES.CATEGORICAL || ((_dataset$selectedObs6 = dataset.selectedObs) === null || _dataset$selectedObs6 === void 0 ? void 0 : _dataset$selectedObs6.type) === _constants.OBS_TYPES.BOOLEAN;
266
+ return dataset.selectedObs?.type === _constants.OBS_TYPES.CATEGORICAL || dataset.selectedObs?.type === _constants.OBS_TYPES.BOOLEAN;
273
267
  } else {
274
268
  return false;
275
269
  }
276
- }, [dataset.colorEncoding, (_dataset$selectedObs7 = dataset.selectedObs) === null || _dataset$selectedObs7 === void 0 ? void 0 : _dataset$selectedObs7.type]);
270
+ }, [dataset.colorEncoding, dataset.selectedObs?.type]);
277
271
  const isInBins = (v, binEdges, indices) => {
278
272
  const lastEdge = _lodash.default.last(binEdges);
279
273
  const allButLastEdges = _lodash.default.initial(binEdges);
@@ -284,12 +278,10 @@ function Scatterplot(_ref) {
284
278
  return _lodash.default.some(ranges, range => _lodash.default.inRange(v, ...range));
285
279
  };
286
280
  const isInSlice = (0, _react.useCallback)((index, values, positions) => {
287
- var _dataset$selectedObs9, _dataset$selectedObs10;
288
281
  let inSlice = true;
289
282
  if (isCategorical && values) {
290
- var _dataset$selectedObs8;
291
- inSlice &= !_lodash.default.includes((_dataset$selectedObs8 = dataset.selectedObs) === null || _dataset$selectedObs8 === void 0 ? void 0 : _dataset$selectedObs8.omit, values[index]);
292
- } else if ((dataset.sliceBy.obs || dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS && ((_dataset$selectedObs9 = dataset.selectedObs) === null || _dataset$selectedObs9 === void 0 ? void 0 : _dataset$selectedObs9.type) === _constants.OBS_TYPES.CONTINUOUS) && !!((_dataset$selectedObs10 = dataset.selectedObs) !== null && _dataset$selectedObs10 !== void 0 && _dataset$selectedObs10.omit.length) && values) {
283
+ inSlice &= !_lodash.default.includes(dataset.selectedObs?.omit, values[index]);
284
+ } else if ((dataset.sliceBy.obs || dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS && dataset.selectedObs?.type === _constants.OBS_TYPES.CONTINUOUS) && !!dataset.selectedObs?.omit.length && values) {
293
285
  if (dataset.selectedObs.type === _constants.OBS_TYPES.CATEGORICAL) {
294
286
  inSlice &= !_lodash.default.includes(dataset.selectedObs.omit, values[index]);
295
287
  } else if (dataset.selectedObs.type === _constants.OBS_TYPES.CONTINUOUS) {
@@ -301,12 +293,12 @@ function Scatterplot(_ref) {
301
293
  }
302
294
  }
303
295
  if (dataset.sliceBy.polygons && positions) {
304
- inSlice &= _lodash.default.some(features === null || features === void 0 ? void 0 : features.features, (_f, i) => {
296
+ inSlice &= _lodash.default.some(features?.features, (_f, i) => {
305
297
  return (0, _turf.booleanPointInPolygon)((0, _turf.point)([positions[index][0], positions[index][1]]), features.features[i]);
306
298
  });
307
299
  }
308
300
  return inSlice;
309
- }, [dataset.colorEncoding, (_dataset$selectedObs11 = dataset.selectedObs) === null || _dataset$selectedObs11 === void 0 || (_dataset$selectedObs11 = _dataset$selectedObs11.bins) === null || _dataset$selectedObs11 === void 0 ? void 0 : _dataset$selectedObs11.binEdges, (_dataset$selectedObs12 = dataset.selectedObs) === null || _dataset$selectedObs12 === void 0 ? void 0 : _dataset$selectedObs12.omit, (_dataset$selectedObs13 = dataset.selectedObs) === null || _dataset$selectedObs13 === void 0 ? void 0 : _dataset$selectedObs13.type, dataset.sliceBy.obs, dataset.sliceBy.polygons, features.features, isCategorical]);
301
+ }, [dataset.colorEncoding, dataset.selectedObs?.bins?.binEdges, dataset.selectedObs?.omit, dataset.selectedObs?.type, dataset.sliceBy.obs, dataset.sliceBy.polygons, features.features, isCategorical]);
310
302
  const {
311
303
  filteredIndices,
312
304
  valueMin,
@@ -334,8 +326,7 @@ function Scatterplot(_ref) {
334
326
  slicedLength: filtered.length
335
327
  };
336
328
  } else if (dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS) {
337
- var _dataset$selectedObs14;
338
- const isContinuous = ((_dataset$selectedObs14 = dataset.selectedObs) === null || _dataset$selectedObs14 === void 0 ? void 0 : _dataset$selectedObs14.type) === _constants.OBS_TYPES.CONTINUOUS;
329
+ const isContinuous = dataset.selectedObs?.type === _constants.OBS_TYPES.CONTINUOUS;
339
330
  const {
340
331
  filtered,
341
332
  filteredIndices
@@ -363,7 +354,7 @@ function Scatterplot(_ref) {
363
354
  slicedLength: data.values.length
364
355
  };
365
356
  }
366
- }, [data.positions, data.sliceValues, data.values, dataset.colorEncoding, (_dataset$selectedObs15 = dataset.selectedObs) === null || _dataset$selectedObs15 === void 0 ? void 0 : _dataset$selectedObs15.type, isInSlice]);
357
+ }, [data.positions, data.sliceValues, data.values, dataset.colorEncoding, dataset.selectedObs?.type, isInSlice]);
367
358
  (0, _react.useEffect)(() => {
368
359
  filterDispatch({
369
360
  type: "set.obs.indices",
@@ -441,13 +432,12 @@ function Scatterplot(_ref) {
441
432
  const layers = (0, _react.useDeferredValue)(mode === _editModes.ViewMode ? memoizedLayers.reverse() : memoizedLayers); // draw scatterplot on top of polygons when in ViewMode
442
433
 
443
434
  (0, _react.useEffect)(() => {
444
- var _features$features;
445
- if (!(features !== null && features !== void 0 && (_features$features = features.features) !== null && _features$features !== void 0 && _features$features.length)) {
435
+ if (!features?.features?.length) {
446
436
  dispatch({
447
437
  type: "disable.slice.polygons"
448
438
  });
449
439
  }
450
- }, [dispatch, features === null || features === void 0 || (_features$features2 = features.features) === null || _features$features2 === void 0 ? void 0 : _features$features2.length]);
440
+ }, [dispatch, features?.features?.length]);
451
441
  function onLayerClick(info) {
452
442
  if (mode !== _editModes.ViewMode) {
453
443
  // don't change selection while editing
@@ -458,9 +448,9 @@ function Scatterplot(_ref) {
458
448
  const getLabel = function (o, v) {
459
449
  let isVar = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
460
450
  if (isVar || o.type === _constants.OBS_TYPES.CONTINUOUS) {
461
- return "".concat(o.name, ": ").concat((0, _string.prettyNumerical)(parseFloat(v)));
451
+ return `${o.name}: ${(0, _string.prettyNumerical)(parseFloat(v))}`;
462
452
  } else {
463
- return "".concat(o.name, ": ").concat(o.codesMap[v]);
453
+ return `${o.name}: ${o.codesMap[v]}`;
464
454
  }
465
455
  };
466
456
  const getTooltip = _ref4 => {
@@ -473,12 +463,10 @@ function Scatterplot(_ref) {
473
463
  if (dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS && dataset.selectedObs && !_lodash.default.some(dataset.labelObs, {
474
464
  name: dataset.selectedObs.name
475
465
  })) {
476
- var _obsData$data;
477
- text.push(getLabel(dataset.selectedObs, (_obsData$data = obsData.data) === null || _obsData$data === void 0 ? void 0 : _obsData$data[index]));
466
+ text.push(getLabel(dataset.selectedObs, obsData.data?.[index]));
478
467
  }
479
468
  if (dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR && dataset.selectedVar) {
480
- var _xData$data;
481
- text.push(getLabel(dataset.selectedVar, (_xData$data = xData.data) === null || _xData$data === void 0 ? void 0 : _xData$data[index], true));
469
+ text.push(getLabel(dataset.selectedVar, xData.data?.[index], true));
482
470
  }
483
471
  if (dataset.labelObs.length) {
484
472
  text.push(..._lodash.default.map(labelObsData.data, (v, k) => {
@@ -492,7 +480,7 @@ function Scatterplot(_ref) {
492
480
  };
493
481
  };
494
482
  const isPending = (isRendering || xData.isPending || obsmData.isPending) && !obsmData.isPending;
495
- const error = dataset.selectedObsm && ((_obsmData$serverError = obsmData.serverError) === null || _obsmData$serverError === void 0 ? void 0 : _obsmData$serverError.length) || dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR && ((_xData$serverError = xData.serverError) === null || _xData$serverError === void 0 ? void 0 : _xData$serverError.length) || dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS && ((_obsData$serverError = obsData.serverError) === null || _obsData$serverError === void 0 ? void 0 : _obsData$serverError.length) || dataset.labelObs.lengh && ((_labelObsData$serverE = labelObsData.serverError) === null || _labelObsData$serverE === void 0 ? void 0 : _labelObsData$serverE.length);
483
+ const error = dataset.selectedObsm && obsmData.serverError?.length || dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR && xData.serverError?.length || dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS && obsData.serverError?.length || dataset.labelObs.lengh && labelObsData.serverError?.length;
496
484
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
497
485
  className: "cherita-scatterplot",
498
486
  children: [obsmData.isPending && /*#__PURE__*/(0, _jsxRuntime.jsx)(_LoadingIndicators.LoadingSpinner, {
@@ -543,7 +531,7 @@ function Scatterplot(_ref) {
543
531
  }), "\xA0Error loading data"]
544
532
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbox.Toolbox, {
545
533
  mode: dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? dataset.selectedVar.name : dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? dataset.selectedObs.name : null,
546
- obsLength: parseInt((_obsmData$data = obsmData.data) === null || _obsmData$data === void 0 ? void 0 : _obsmData$data.length),
534
+ obsLength: parseInt(obsmData.data?.length),
547
535
  slicedLength: parseInt(slicedLength)
548
536
  })]
549
537
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Legend.Legend, {
@@ -16,11 +16,10 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
16
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
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; }
18
18
  const ScatterplotControls = () => {
19
- var _dataset$selectedObs;
20
19
  const dataset = (0, _DatasetContext.useDataset)();
21
20
  const dispatch = (0, _DatasetContext.useDatasetDispatch)();
22
21
  const [sliderValue, setSliderValue] = _react.default.useState(dataset.controls.range || [0, 1]);
23
- const isCategorical = dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? ((_dataset$selectedObs = dataset.selectedObs) === null || _dataset$selectedObs === void 0 ? void 0 : _dataset$selectedObs.type) === _constants.OBS_TYPES.CATEGORICAL : false;
22
+ const isCategorical = dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? dataset.selectedObs?.type === _constants.OBS_TYPES.CATEGORICAL : false;
24
23
  const colormapList = _lodash.default.keys(_colorscales.COLORSCALES).map(key => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Item, {
25
24
  active: dataset.controls.colorScale === key,
26
25
  onClick: () => {
@@ -15,13 +15,12 @@ var _Dropdown = _interopRequireDefault(require("react-bootstrap/Dropdown"));
15
15
  var _DropdownButton = _interopRequireDefault(require("react-bootstrap/DropdownButton"));
16
16
  var _ScatterplotControls = require("./ScatterplotControls");
17
17
  var _DatasetContext = require("../../context/DatasetContext");
18
- var _Offcanvas = require("../Offcanvas");
18
+ var _offcanvas = require("../offcanvas");
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
20
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
21
  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); }
22
22
  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; }
23
23
  function SpatialControls(_ref) {
24
- var _features$features;
25
24
  let {
26
25
  mode,
27
26
  setMode,
@@ -163,7 +162,7 @@ function SpatialControls(_ref) {
163
162
  icon: _freeSolidSvgIcons.faSliders
164
163
  })
165
164
  })]
166
- }), !!(features !== null && features !== void 0 && (_features$features = features.features) !== null && _features$features !== void 0 && _features$features.length) && polygonControls, /*#__PURE__*/(0, _jsxRuntime.jsx)(_Offcanvas.OffcanvasControls, {
165
+ }), !!features?.features?.length && polygonControls, /*#__PURE__*/(0, _jsxRuntime.jsx)(_offcanvas.OffcanvasControls, {
167
166
  show: showControls,
168
167
  handleClose: handleCloseControls,
169
168
  Controls: _ScatterplotControls.ScatterplotControls
@@ -58,7 +58,7 @@ function VarSearchResults(_ref) {
58
58
  }
59
59
  }, [fetchedData, isPending, serverError, setShowSuggestions]);
60
60
  const suggestionsList = (0, _react.useMemo)(() => {
61
- return deferredData === null || deferredData === void 0 ? void 0 : deferredData.map(item => {
61
+ return deferredData?.map(item => {
62
62
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Item, {
63
63
  as: "button",
64
64
  disabled: isStale,
@@ -80,7 +80,7 @@ function VarSearchResults(_ref) {
80
80
  maxHeight: "25vh",
81
81
  overflowY: "scroll"
82
82
  },
83
- children: deferredData !== null && deferredData !== void 0 && deferredData.length ? suggestionsList : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Item, {
83
+ children: deferredData?.length ? suggestionsList : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Item, {
84
84
  as: "button",
85
85
  disabled: true,
86
86
  children: !serverError ? isStale || isPending ? "Loading..." : "No items found" : "Failed to fetch data"
@@ -130,7 +130,7 @@ function DiseasesSearchResults(_ref2) {
130
130
  }
131
131
  }, [fetchedData, isPending, serverError, setShowSuggestions]);
132
132
  const suggestionsList = (0, _react.useMemo)(() => {
133
- return deferredData === null || deferredData === void 0 ? void 0 : deferredData.map(item => {
133
+ return deferredData?.map(item => {
134
134
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Item, {
135
135
  as: "button",
136
136
  disabled: isStale,
@@ -156,7 +156,7 @@ function DiseasesSearchResults(_ref2) {
156
156
  maxHeight: "25vh",
157
157
  overflowY: "scroll"
158
158
  },
159
- children: deferredData !== null && deferredData !== void 0 && deferredData.length ? suggestionsList : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Item, {
159
+ children: deferredData?.length ? suggestionsList : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Item, {
160
160
  as: "button",
161
161
  disabled: true,
162
162
  children: !serverError ? isStale || isPending ? "Loading..." : "No items found" : "Failed to fetch data"
@@ -25,7 +25,6 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
25
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
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; }
27
27
  function VarHistogram(_ref) {
28
- var _fetchedData$bin_edge;
29
28
  let {
30
29
  item
31
30
  } = _ref;
@@ -73,11 +72,11 @@ function VarHistogram(_ref) {
73
72
  let {
74
73
  dataIndex
75
74
  } = _ref2;
76
- return "".concat((0, _string.prettyNumerical)(fetchedData.hist[dataIndex]));
75
+ return `${(0, _string.prettyNumerical)(fetchedData.hist[dataIndex])}`;
77
76
  },
78
77
  xAxis: {
79
- data: _lodash.default.range((_fetchedData$bin_edge = fetchedData.bin_edges) === null || _fetchedData$bin_edge === void 0 ? void 0 : _fetchedData$bin_edge.length) || null,
80
- valueFormatter: v => "Bin [".concat((0, _string.prettyNumerical)(fetchedData.bin_edges[v][0]), ", ").concat((0, _string.prettyNumerical)(fetchedData.bin_edges[v][1])).concat(v === fetchedData.bin_edges.length - 1 ? "]" : ")")
78
+ data: _lodash.default.range(fetchedData.bin_edges?.length) || null,
79
+ valueFormatter: v => `Bin [${(0, _string.prettyNumerical)(fetchedData.bin_edges[v][0])}, ${(0, _string.prettyNumerical)(fetchedData.bin_edges[v][1])}${v === fetchedData.bin_edges.length - 1 ? "]" : ")"}`
81
80
  },
82
81
  slotProps: {
83
82
  popper: {
@@ -89,7 +88,6 @@ function VarHistogram(_ref) {
89
88
  });
90
89
  }
91
90
  function VarDiseaseInfoItem(item) {
92
- var _item$metadata;
93
91
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
94
92
  className: "feature-disease-info",
95
93
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
@@ -108,7 +106,7 @@ function VarDiseaseInfoItem(item) {
108
106
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
109
107
  children: item.organs.map(o => o.name).join(", ")
110
108
  })]
111
- }), !!((_item$metadata = item.metadata) !== null && _item$metadata !== void 0 && _item$metadata.length) && item.metadata.map(m => {
109
+ }), !!item.metadata?.length && item.metadata.map(m => {
112
110
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("tr", {
113
111
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
114
112
  children: m.key
@@ -164,7 +162,7 @@ function SingleSelectionItem(_ref4) {
164
162
  const hasDiseaseInfo = !isPending && !serverError && !!fetchedData.length;
165
163
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
166
164
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
167
- className: "d-flex justify-content-between ".concat(hasDiseaseInfo ? "cursor-pointer" : ""),
165
+ className: `d-flex justify-content-between ${hasDiseaseInfo ? "cursor-pointer" : ""}`,
168
166
  onClick: () => {
169
167
  setOpenInfo(o => !o);
170
168
  },
@@ -18,7 +18,6 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
18
18
  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); }
19
19
  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; }
20
20
  function DiseaseVarList(_ref) {
21
- var _dataset$selectedDise, _dataset$selectedDise3;
22
21
  let {
23
22
  makeListItem
24
23
  } = _ref;
@@ -29,15 +28,14 @@ function DiseaseVarList(_ref) {
29
28
  const [params, setParams] = (0, _react.useState)({
30
29
  url: dataset.url,
31
30
  col: dataset.varNamesCol,
32
- diseaseId: (_dataset$selectedDise = dataset.selectedDisease) === null || _dataset$selectedDise === void 0 ? void 0 : _dataset$selectedDise.id,
31
+ diseaseId: dataset.selectedDisease?.id,
33
32
  diseaseDatasets: dataset.diseaseDatasets
34
33
  });
35
34
  (0, _react.useEffect)(() => {
36
35
  setParams(p => {
37
- var _dataset$selectedDise2;
38
36
  return {
39
37
  ...p,
40
- diseaseId: (_dataset$selectedDise2 = dataset.selectedDisease) === null || _dataset$selectedDise2 === void 0 ? void 0 : _dataset$selectedDise2.id
38
+ diseaseId: dataset.selectedDisease?.id
41
39
  };
42
40
  });
43
41
  }, [dataset.selectedDisease]);
@@ -75,7 +73,7 @@ function DiseaseVarList(_ref) {
75
73
  children: "clear"
76
74
  })]
77
75
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
78
- children: (_dataset$selectedDise3 = dataset.selectedDisease) === null || _dataset$selectedDise3 === void 0 ? void 0 : _dataset$selectedDise3.name
76
+ children: dataset.selectedDisease?.name
79
77
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup, {
80
78
  children: diseaseVarList
81
79
  })]
@@ -83,7 +81,6 @@ function DiseaseVarList(_ref) {
83
81
  });
84
82
  }
85
83
  function VarNamesList(_ref2) {
86
- var _dataset$selectedVar, _dataset$selectedVar2, _dataset$selectedVar6, _dataset$selectedVar7;
87
84
  let {
88
85
  mode = _constants.SELECTION_MODES.SINGLE,
89
86
  displayName = "genes",
@@ -92,10 +89,9 @@ function VarNamesList(_ref2) {
92
89
  const dataset = (0, _DatasetContext.useDataset)();
93
90
  const dispatch = (0, _DatasetContext.useDatasetDispatch)();
94
91
  const [varButtons, setVarButtons] = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ? dataset.selectedVar ? _lodash.default.unionWith([dataset.selectedVar], dataset.varSets, _lodash.default.isEqual) : [...dataset.varSets] : [...dataset.selectedMultiVar, ...dataset.varSets]);
95
- const [active, setActive] = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ? ((_dataset$selectedVar = dataset.selectedVar) === null || _dataset$selectedVar === void 0 ? void 0 : _dataset$selectedVar.matrix_index) || ((_dataset$selectedVar2 = dataset.selectedVar) === null || _dataset$selectedVar2 === void 0 ? void 0 : _dataset$selectedVar2.name) : dataset.selectedMultiVar.map(i => i.matrix_index || i.name));
92
+ const [active, setActive] = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ? dataset.selectedVar?.matrix_index || dataset.selectedVar?.name : dataset.selectedMultiVar.map(i => i.matrix_index || i.name));
96
93
  (0, _react.useEffect)(() => {
97
94
  if (mode === _constants.SELECTION_MODES.SINGLE) {
98
- var _dataset$selectedVar3, _dataset$selectedVar4;
99
95
  setVarButtons(v => {
100
96
  if (dataset.selectedVar) {
101
97
  return _lodash.default.unionWith(v, [dataset.selectedVar], _lodash.default.isEqual);
@@ -103,7 +99,7 @@ function VarNamesList(_ref2) {
103
99
  return v;
104
100
  }
105
101
  });
106
- setActive(((_dataset$selectedVar3 = dataset.selectedVar) === null || _dataset$selectedVar3 === void 0 ? void 0 : _dataset$selectedVar3.matrix_index) || ((_dataset$selectedVar4 = dataset.selectedVar) === null || _dataset$selectedVar4 === void 0 ? void 0 : _dataset$selectedVar4.name));
102
+ setActive(dataset.selectedVar?.matrix_index || dataset.selectedVar?.name);
107
103
  }
108
104
  }, [mode, dataset.selectedVar]);
109
105
  (0, _react.useEffect)(() => {
@@ -129,8 +125,7 @@ function VarNamesList(_ref2) {
129
125
  return [...updated, ...newSets];
130
126
  });
131
127
  if (mode === _constants.SELECTION_MODES.SINGLE) {
132
- var _dataset$selectedVar5;
133
- if ((_dataset$selectedVar5 = dataset.selectedVar) !== null && _dataset$selectedVar5 !== void 0 && _dataset$selectedVar5.isSet) {
128
+ if (dataset.selectedVar?.isSet) {
134
129
  const selectedSet = dataset.varSets.find(s => s.name === dataset.selectedVar.name);
135
130
  dispatch({
136
131
  type: "select.var",
@@ -143,7 +138,7 @@ function VarNamesList(_ref2) {
143
138
  vars: dataset.varSets
144
139
  });
145
140
  }
146
- }, [mode, dataset.varSets, (_dataset$selectedVar6 = dataset.selectedVar) === null || _dataset$selectedVar6 === void 0 ? void 0 : _dataset$selectedVar6.isSet, (_dataset$selectedVar7 = dataset.selectedVar) === null || _dataset$selectedVar7 === void 0 ? void 0 : _dataset$selectedVar7.name, dispatch]);
141
+ }, [mode, dataset.varSets, dataset.selectedVar?.isSet, dataset.selectedVar?.name, dispatch]);
147
142
  const makeListItem = function (item) {
148
143
  let isDiseaseGene = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
149
144
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
@@ -174,13 +169,13 @@ function VarNamesList(_ref2) {
174
169
  });
175
170
  const newSetName = () => {
176
171
  let n = 1;
177
- let setName = "Set ".concat(n);
172
+ let setName = `Set ${n}`;
178
173
  const setNameExists = name => {
179
174
  return dataset.varSets.some(set => set.name === name);
180
175
  };
181
176
  while (setNameExists(setName)) {
182
177
  n++;
183
- setName = "Set ".concat(n);
178
+ setName = `Set ${n}`;
184
179
  }
185
180
  return setName;
186
181
  };
@@ -61,7 +61,15 @@ function SingleSelectionSet(_ref) {
61
61
  children: set.name
62
62
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
63
63
  className: "d-flex align-items-center gap-1",
64
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.List, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
64
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.OverlayTrigger, {
65
+ placement: "top",
66
+ overlay: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Tooltip, {
67
+ children: "This set represents the mean value of its features"
68
+ }),
69
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
70
+ icon: _freeSolidSvgIcons.faCircleInfo
71
+ })
72
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.List, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
65
73
  type: "button",
66
74
  variant: isActive ? "primary" : "outline-primary",
67
75
  className: "m-0 p-0 px-1",
@@ -19,7 +19,6 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
19
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
20
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
21
  function Violin(_ref) {
22
- var _dataset$selectedVar, _dataset$selectedVar2, _dataset$selectedVar3, _dataset$selectedVar4, _dataset$selectedObs, _dataset$selectedObs2, _dataset$selectedObs3;
23
22
  let {
24
23
  mode = _constants.VIOLIN_MODES.MULTIKEY
25
24
  } = _ref;
@@ -42,15 +41,12 @@ function Violin(_ref) {
42
41
  obsKeys: [] // @TODO: implement
43
42
  },
44
43
  [_constants.VIOLIN_MODES.GROUPBY]: {
45
- varKey: (_dataset$selectedVar = dataset.selectedVar) !== null && _dataset$selectedVar !== void 0 && _dataset$selectedVar.isSet ? {
46
- name: (_dataset$selectedVar2 = dataset.selectedVar) === null || _dataset$selectedVar2 === void 0 ? void 0 : _dataset$selectedVar2.name,
47
- indices: (_dataset$selectedVar3 = dataset.selectedVar) === null || _dataset$selectedVar3 === void 0 ? void 0 : _dataset$selectedVar3.vars.map(v => v.index)
48
- } : (_dataset$selectedVar4 = dataset.selectedVar) === null || _dataset$selectedVar4 === void 0 ? void 0 : _dataset$selectedVar4.index,
44
+ varKey: dataset.selectedVar?.isSet ? {
45
+ name: dataset.selectedVar?.name,
46
+ indices: dataset.selectedVar?.vars.map(v => v.index)
47
+ } : dataset.selectedVar?.index,
49
48
  obsCol: dataset.selectedObs,
50
- obsValues: !((_dataset$selectedObs = dataset.selectedObs) !== null && _dataset$selectedObs !== void 0 && _dataset$selectedObs.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_dataset$selectedObs2 = dataset.selectedObs) === null || _dataset$selectedObs2 === void 0 ? void 0 : _dataset$selectedObs2.codes), (_dataset$selectedObs3 = dataset.selectedObs) === null || _dataset$selectedObs3 === void 0 ? void 0 : _dataset$selectedObs3.omit).map(c => {
51
- var _dataset$selectedObs4;
52
- return (_dataset$selectedObs4 = dataset.selectedObs) === null || _dataset$selectedObs4 === void 0 ? void 0 : _dataset$selectedObs4.codesMap[c];
53
- })
49
+ obsValues: !dataset.selectedObs?.omit.length ? null : _lodash.default.difference(_lodash.default.values(dataset.selectedObs?.codes), dataset.selectedObs?.omit).map(c => dataset.selectedObs?.codesMap[c])
54
50
  }
55
51
  }[mode]
56
52
  });
@@ -83,20 +79,16 @@ function Violin(_ref) {
83
79
  setHasSelections(false);
84
80
  }
85
81
  setParams(p => {
86
- var _dataset$selectedVar5, _dataset$selectedVar6, _dataset$selectedVar7, _dataset$selectedVar8, _dataset$selectedObs5, _dataset$selectedObs6, _dataset$selectedObs7;
87
82
  return {
88
83
  ...p,
89
84
  url: dataset.url,
90
85
  mode: mode,
91
- varKey: (_dataset$selectedVar5 = dataset.selectedVar) !== null && _dataset$selectedVar5 !== void 0 && _dataset$selectedVar5.isSet ? {
92
- name: (_dataset$selectedVar6 = dataset.selectedVar) === null || _dataset$selectedVar6 === void 0 ? void 0 : _dataset$selectedVar6.name,
93
- indices: (_dataset$selectedVar7 = dataset.selectedVar) === null || _dataset$selectedVar7 === void 0 ? void 0 : _dataset$selectedVar7.vars.map(v => v.index)
94
- } : (_dataset$selectedVar8 = dataset.selectedVar) === null || _dataset$selectedVar8 === void 0 ? void 0 : _dataset$selectedVar8.index,
86
+ varKey: dataset.selectedVar?.isSet ? {
87
+ name: dataset.selectedVar?.name,
88
+ indices: dataset.selectedVar?.vars.map(v => v.index)
89
+ } : dataset.selectedVar?.index,
95
90
  obsCol: dataset.selectedObs,
96
- obsValues: !((_dataset$selectedObs5 = dataset.selectedObs) !== null && _dataset$selectedObs5 !== void 0 && _dataset$selectedObs5.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_dataset$selectedObs6 = dataset.selectedObs) === null || _dataset$selectedObs6 === void 0 ? void 0 : _dataset$selectedObs6.codes), (_dataset$selectedObs7 = dataset.selectedObs) === null || _dataset$selectedObs7 === void 0 ? void 0 : _dataset$selectedObs7.omit).map(c => {
97
- var _dataset$selectedObs8;
98
- return (_dataset$selectedObs8 = dataset.selectedObs) === null || _dataset$selectedObs8 === void 0 ? void 0 : _dataset$selectedObs8.codesMap[c];
99
- }),
91
+ obsValues: !dataset.selectedObs?.omit.length ? null : _lodash.default.difference(_lodash.default.values(dataset.selectedObs?.codes), dataset.selectedObs?.omit).map(c => dataset.selectedObs?.codesMap[c]),
100
92
  scale: dataset.controls.scale.violinplot.value,
101
93
  varNamesCol: dataset.varNamesCol
102
94
  };
@@ -128,7 +120,7 @@ function Violin(_ref) {
128
120
  maxWidth: "100%",
129
121
  maxHeight: "100%"
130
122
  }
131
- }), (fetchedData === null || fetchedData === void 0 ? void 0 : fetchedData.resampled) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Alert, {
123
+ }), fetchedData?.resampled && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Alert, {
132
124
  variant: "warning",
133
125
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("b", {
134
126
  children: "Warning:"
@@ -45,7 +45,7 @@ const persistOptions = {
45
45
  state
46
46
  } = _ref;
47
47
  if (state.status === "success") {
48
- return persistKeys.includes(queryKey === null || queryKey === void 0 ? void 0 : queryKey[0]);
48
+ return persistKeys.includes(queryKey?.[0]);
49
49
  }
50
50
  return false;
51
51
  }
@@ -142,13 +142,12 @@ function datasetReducer(dataset, action) {
142
142
  switch (action.type) {
143
143
  case "select.obs":
144
144
  {
145
- var _action$obs;
146
145
  return {
147
146
  ...dataset,
148
147
  selectedObs: action.obs,
149
148
  controls: {
150
149
  ...dataset.controls,
151
- range: ((_action$obs = action.obs) === null || _action$obs === void 0 ? void 0 : _action$obs.type) === _constants.OBS_TYPES.CATEGORICAL ? [0, 1] : dataset.controls.range
150
+ range: action.obs?.type === _constants.OBS_TYPES.CATEGORICAL ? [0, 1] : dataset.controls.range
152
151
  },
153
152
  colorEncoding: dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS && !action.obs ? null : dataset.colorEncoding,
154
153
  sliceBy: {