@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
@@ -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, { useCallback, useDeferredValue, useEffect, useMemo, useRef, useState } from "react";
2
7
  import { ScatterplotLayer } from "@deck.gl/layers";
3
8
  import { DeckGL } from "@deck.gl/react";
@@ -29,6 +34,7 @@ const INITIAL_VIEW_STATE = {
29
34
  bearing: 0
30
35
  };
31
36
  export function Scatterplot(_ref) {
37
+ var _settings$selectedObs3, _features$features2, _obsmData$serverError, _xData$serverError, _obsData$serverError, _labelObsData$serverE, _settings$selectedVar, _settings$selectedObs4, _obsmData$data;
32
38
  let {
33
39
  radius = 30,
34
40
  setShowObs,
@@ -73,12 +79,12 @@ export function Scatterplot(_ref) {
73
79
 
74
80
  useEffect(() => {
75
81
  if (!obsmData.isPending && !obsmData.serverError) {
82
+ var _deckRef$current, _deckRef$current2;
76
83
  setIsRendering(true);
77
84
  setData(d => {
78
- return {
79
- ...d,
85
+ return _objectSpread(_objectSpread({}, d), {}, {
80
86
  positions: obsmData.data
81
- };
87
+ });
82
88
  });
83
89
  const mapHelper = new MapHelper();
84
90
  const {
@@ -86,35 +92,34 @@ export function Scatterplot(_ref) {
86
92
  longitude,
87
93
  zoom
88
94
  } = mapHelper.fitBounds(obsmData.data, {
89
- width: deckRef?.current?.deck?.width,
90
- height: deckRef?.current?.deck?.height
95
+ 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,
96
+ 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
91
97
  });
92
98
  setViewState(v => {
93
- return {
94
- ...v,
99
+ return _objectSpread(_objectSpread({}, v), {}, {
95
100
  longitude: longitude,
96
101
  latitude: latitude,
97
102
  zoom: zoom
98
- };
103
+ });
99
104
  });
100
105
  } else if (!obsmData.isPending && obsmData.serverError) {
101
106
  setIsRendering(true);
102
107
  setData(d => {
103
- return {
104
- ...d,
108
+ return _objectSpread(_objectSpread({}, d), {}, {
105
109
  positions: []
106
- };
110
+ });
107
111
  });
108
112
  }
109
113
  }, [settings.selectedObsm, obsmData.data, obsmData.isPending, obsmData.serverError]);
110
114
  const getBounds = useCallback(() => {
115
+ var _deckRef$current3, _deckRef$current4;
111
116
  const {
112
117
  latitude,
113
118
  longitude,
114
119
  zoom
115
120
  } = new MapHelper().fitBounds(data.positions, {
116
- width: deckRef?.current?.deck?.width,
117
- height: deckRef?.current?.deck?.height
121
+ 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,
122
+ 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
118
123
  });
119
124
  return {
120
125
  latitude,
@@ -128,17 +133,15 @@ export function Scatterplot(_ref) {
128
133
  if (!xData.isPending && !xData.serverError) {
129
134
  // @TODO: add condition to check obs slicing
130
135
  setData(d => {
131
- return {
132
- ...d,
136
+ return _objectSpread(_objectSpread({}, d), {}, {
133
137
  values: xData.data
134
- };
138
+ });
135
139
  });
136
140
  } else if (!xData.isPending && xData.serverError) {
137
141
  setData(d => {
138
- return {
139
- ...d,
142
+ return _objectSpread(_objectSpread({}, d), {}, {
140
143
  values: []
141
- };
144
+ });
142
145
  });
143
146
  }
144
147
  }
@@ -148,44 +151,41 @@ export function Scatterplot(_ref) {
148
151
  setIsRendering(true);
149
152
  if (!obsData.isPending && !obsData.serverError) {
150
153
  setData(d => {
151
- return {
152
- ...d,
154
+ return _objectSpread(_objectSpread({}, d), {}, {
153
155
  values: obsData.data
154
- };
156
+ });
155
157
  });
156
158
  } else if (!obsData.isPending && obsData.serverError) {
157
159
  setData(d => {
158
- return {
159
- ...d,
160
+ return _objectSpread(_objectSpread({}, d), {}, {
160
161
  values: []
161
- };
162
+ });
162
163
  });
163
164
  }
164
165
  } else if (settings.colorEncoding === COLOR_ENCODINGS.VAR && settings.sliceBy.obs) {
165
166
  if (!obsData.isPending && !obsData.serverError) {
166
167
  setData(d => {
167
- return {
168
- ...d,
168
+ return _objectSpread(_objectSpread({}, d), {}, {
169
169
  sliceValues: obsData.data
170
- };
170
+ });
171
171
  });
172
172
  } else if (!obsData.isPending && obsData.serverError) {
173
173
  setData(d => {
174
- return {
175
- ...d,
174
+ return _objectSpread(_objectSpread({}, d), {}, {
176
175
  sliceValues: []
177
- };
176
+ });
178
177
  });
179
178
  }
180
179
  }
181
180
  }, [settings.colorEncoding, obsData.data, obsData.isPending, obsData.serverError, settings.sliceBy.obs]);
182
181
  const isCategorical = useMemo(() => {
183
182
  if (settings.colorEncoding === COLOR_ENCODINGS.OBS) {
184
- return settings.selectedObs?.type === OBS_TYPES.CATEGORICAL || settings.selectedObs?.type === OBS_TYPES.BOOLEAN;
183
+ var _settings$selectedObs, _settings$selectedObs2;
184
+ return ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === OBS_TYPES.CATEGORICAL || ((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.type) === OBS_TYPES.BOOLEAN;
185
185
  } else {
186
186
  return false;
187
187
  }
188
- }, [settings.colorEncoding, settings.selectedObs?.type]);
188
+ }, [settings.colorEncoding, (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.type]);
189
189
  useEffect(() => {
190
190
  dispatch({
191
191
  type: "set.controls.valueRange",
@@ -271,17 +271,18 @@ export function Scatterplot(_ref) {
271
271
  const layers = useDeferredValue(mode === ViewMode ? memoizedLayers.reverse() : memoizedLayers); // draw scatterplot on top of polygons when in ViewMode
272
272
 
273
273
  useEffect(() => {
274
- if (!features?.features?.length) {
274
+ var _features$features;
275
+ if (!(features !== null && features !== void 0 && (_features$features = features.features) !== null && _features$features !== void 0 && _features$features.length)) {
275
276
  dispatch({
276
277
  type: "disable.slice.polygons"
277
278
  });
278
279
  }
279
- }, [dispatch, features?.features?.length]);
280
+ }, [dispatch, features === null || features === void 0 || (_features$features2 = features.features) === null || _features$features2 === void 0 ? void 0 : _features$features2.length]);
280
281
  useEffect(() => {
281
282
  dispatch({
282
283
  type: "set.polygons",
283
284
  obsm: settings.selectedObsm,
284
- polygons: features?.features || []
285
+ polygons: (features === null || features === void 0 ? void 0 : features.features) || []
285
286
  });
286
287
  }, [settings.selectedObsm, dispatch, features.features]);
287
288
  function onLayerClick(info) {
@@ -294,9 +295,9 @@ export function Scatterplot(_ref) {
294
295
  const getLabel = function (o, v) {
295
296
  let isVar = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
296
297
  if (isVar || o.type === OBS_TYPES.CONTINUOUS) {
297
- return `${o.name}: ${formatNumerical(parseFloat(v))}`;
298
+ return "".concat(o.name, ": ").concat(formatNumerical(parseFloat(v)));
298
299
  } else {
299
- return `${o.name}: ${o.codesMap[v]}`;
300
+ return "".concat(o.name, ": ").concat(o.codesMap[v]);
300
301
  }
301
302
  };
302
303
  const getTooltip = _ref5 => {
@@ -304,15 +305,17 @@ export function Scatterplot(_ref) {
304
305
  object,
305
306
  index
306
307
  } = _ref5;
307
- if (!object || object?.type === "Feature") return;
308
+ if (!object || (object === null || object === void 0 ? void 0 : object.type) === "Feature") return;
308
309
  const text = [];
309
310
  if (settings.colorEncoding === COLOR_ENCODINGS.OBS && settings.selectedObs && !_.some(settings.labelObs, {
310
311
  name: settings.selectedObs.name
311
312
  })) {
312
- text.push(getLabel(settings.selectedObs, obsData.data?.[index]));
313
+ var _obsData$data;
314
+ text.push(getLabel(settings.selectedObs, (_obsData$data = obsData.data) === null || _obsData$data === void 0 ? void 0 : _obsData$data[index]));
313
315
  }
314
316
  if (settings.colorEncoding === COLOR_ENCODINGS.VAR && settings.selectedVar) {
315
- text.push(getLabel(settings.selectedVar, xData.data?.[index], true));
317
+ var _xData$data;
318
+ text.push(getLabel(settings.selectedVar, (_xData$data = xData.data) === null || _xData$data === void 0 ? void 0 : _xData$data[index], true));
316
319
  }
317
320
  if (settings.labelObs.length) {
318
321
  text.push(..._.map(labelObsData.data, (v, k) => {
@@ -326,16 +329,16 @@ export function Scatterplot(_ref) {
326
329
  text: text.length ? _.compact(text).join("\n") : null,
327
330
  className: grayOut ? "tooltip-grayout" : "deck-tooltip",
328
331
  style: !grayOut ? {
329
- "border-left": `3px solid ${rgbToHex(getFillColor(null, {
332
+ "border-left": "3px solid ".concat(rgbToHex(getFillColor(null, {
330
333
  index
331
- }))}`
334
+ })))
332
335
  } : {
333
336
  "border-left": "none"
334
337
  }
335
338
  };
336
339
  };
337
340
  const isPending = (isRendering || xData.isPending || obsmData.isPending) && !obsmData.isPending;
338
- const error = settings.selectedObsm && obsmData.serverError?.length || settings.colorEncoding === COLOR_ENCODINGS.VAR && xData.serverError?.length || settings.colorEncoding === COLOR_ENCODINGS.OBS && obsData.serverError?.length || settings.labelObs.lengh && labelObsData.serverError?.length;
341
+ const error = settings.selectedObsm && ((_obsmData$serverError = obsmData.serverError) === null || _obsmData$serverError === void 0 ? void 0 : _obsmData$serverError.length) || settings.colorEncoding === COLOR_ENCODINGS.VAR && ((_xData$serverError = xData.serverError) === null || _xData$serverError === void 0 ? void 0 : _xData$serverError.length) || settings.colorEncoding === COLOR_ENCODINGS.OBS && ((_obsData$serverError = obsData.serverError) === null || _obsData$serverError === void 0 ? void 0 : _obsData$serverError.length) || settings.labelObs.lengh && ((_labelObsData$serverE = labelObsData.serverError) === null || _labelObsData$serverE === void 0 ? void 0 : _labelObsData$serverE.length);
339
342
  return /*#__PURE__*/React.createElement("div", {
340
343
  className: "cherita-container-scatterplot"
341
344
  }, /*#__PURE__*/React.createElement("div", {
@@ -369,12 +372,10 @@ export function Scatterplot(_ref) {
369
372
  setFeatures: setFeatures,
370
373
  selectedFeatureIndexes: selectedFeatureIndexes,
371
374
  resetBounds: () => setViewState(getBounds()),
372
- increaseZoom: () => setViewState(v => ({
373
- ...v,
375
+ increaseZoom: () => setViewState(v => _objectSpread(_objectSpread({}, v), {}, {
374
376
  zoom: v.zoom + 1
375
377
  })),
376
- decreaseZoom: () => setViewState(v => ({
377
- ...v,
378
+ decreaseZoom: () => setViewState(v => _objectSpread(_objectSpread({}, v), {}, {
378
379
  zoom: v.zoom - 1
379
380
  })),
380
381
  setShowObs: setShowObs,
@@ -389,8 +390,8 @@ export function Scatterplot(_ref) {
389
390
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
390
391
  icon: faTriangleExclamation
391
392
  }), "\xA0Error loading data"), /*#__PURE__*/React.createElement(Toolbox, {
392
- mode: settings.colorEncoding === COLOR_ENCODINGS.VAR ? settings.selectedVar?.name : settings.colorEncoding === COLOR_ENCODINGS.OBS ? settings.selectedObs?.name : null,
393
- obsLength: parseInt(obsmData.data?.length),
393
+ mode: settings.colorEncoding === COLOR_ENCODINGS.VAR ? (_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name : settings.colorEncoding === COLOR_ENCODINGS.OBS ? (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.name : null,
394
+ obsLength: parseInt((_obsmData$data = obsmData.data) === null || _obsmData$data === void 0 ? void 0 : _obsmData$data.length),
394
395
  slicedLength: parseInt(slicedLength)
395
396
  })), /*#__PURE__*/React.createElement(Legend, {
396
397
  isCategorical: isCategorical,
@@ -1,25 +1,15 @@
1
1
  import React, { useEffect } from "react";
2
2
  import { Box, Slider, Typography } from "@mui/material";
3
- import _ from "lodash";
4
- import { Dropdown } from "react-bootstrap";
5
- import { COLORSCALES } from "../../constants/colorscales";
3
+ import { Form } from "react-bootstrap";
6
4
  import { COLOR_ENCODINGS, OBS_TYPES } from "../../constants/constants";
7
5
  import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
6
+ import { ColorscaleSelect } from "../controls/Controls";
8
7
  export const ScatterplotControls = () => {
8
+ var _settings$selectedObs;
9
9
  const settings = useSettings();
10
10
  const dispatch = useSettingsDispatch();
11
11
  const [sliderValue, setSliderValue] = React.useState(settings.controls.range || [0, 1]);
12
- const isCategorical = settings.colorEncoding === COLOR_ENCODINGS.OBS ? settings.selectedObs?.type === OBS_TYPES.CATEGORICAL : false;
13
- const colormapList = _.keys(COLORSCALES).map(key => /*#__PURE__*/React.createElement(Dropdown.Item, {
14
- key: key,
15
- active: settings.controls.colorScale === key,
16
- onClick: () => {
17
- dispatch({
18
- type: "set.controls.colorScale",
19
- colorScale: key
20
- });
21
- }
22
- }, key));
12
+ const isCategorical = settings.colorEncoding === COLOR_ENCODINGS.OBS ? ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === OBS_TYPES.CATEGORICAL : false;
23
13
  const valueLabelFormat = value => {
24
14
  return (value * (settings.controls.valueRange[1] - settings.controls.valueRange[0]) + settings.controls.valueRange[0]).toFixed(2);
25
15
  };
@@ -48,7 +38,9 @@ export const ScatterplotControls = () => {
48
38
  }, /*#__PURE__*/React.createElement(Typography, {
49
39
  id: "colorscale-range",
50
40
  gutterBottom: true
51
- }, "Colorscale range"), /*#__PURE__*/React.createElement(Slider, {
41
+ }, "Colorscale range"), /*#__PURE__*/React.createElement("div", {
42
+ className: "px-4"
43
+ }, /*#__PURE__*/React.createElement(Slider, {
52
44
  "aria-labelledby": "colorscale-range",
53
45
  min: 0,
54
46
  max: 1,
@@ -61,11 +53,8 @@ export const ScatterplotControls = () => {
61
53
  valueLabelFormat: valueLabelFormat,
62
54
  marks: marks,
63
55
  disabled: isCategorical
64
- }));
65
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Dropdown, null, /*#__PURE__*/React.createElement(Dropdown.Toggle, {
66
- id: "dropdownColorscale",
67
- variant: "light"
68
- }, settings.controls.colorScale), /*#__PURE__*/React.createElement(Dropdown.Menu, null, colormapList)), /*#__PURE__*/React.createElement("div", {
69
- className: "m-4"
70
- }, rangeSlider));
56
+ })));
57
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Form, null, /*#__PURE__*/React.createElement(ColorscaleSelect, null), /*#__PURE__*/React.createElement(Form.Group, {
58
+ className: "mb-2"
59
+ }, rangeSlider)));
71
60
  };
@@ -13,6 +13,7 @@ import { OffcanvasControls } from "../offcanvas";
13
13
  import { ScatterplotControls } from "./ScatterplotControls";
14
14
  import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
15
15
  export function SpatialControls(_ref) {
16
+ var _features$features;
16
17
  let {
17
18
  mode,
18
19
  setMode,
@@ -140,7 +141,7 @@ export function SpatialControls(_ref) {
140
141
  onSelect: onSelect
141
142
  }, /*#__PURE__*/React.createElement(Dropdown.Toggle, {
142
143
  id: "dropdown-autoclose-outside",
143
- className: `caret-off ${mode === DrawPolygonByDraggingMode || mode === ModifyMode ? "active" : ""}`
144
+ className: "caret-off ".concat(mode === DrawPolygonByDraggingMode || mode === ModifyMode ? "active" : "")
144
145
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
145
146
  icon: faDrawPolygon
146
147
  })), /*#__PURE__*/React.createElement(Dropdown.Menu, null, /*#__PURE__*/React.createElement(Dropdown.Header, null, "Polygon tools"), /*#__PURE__*/React.createElement(Dropdown.Item, {
@@ -158,7 +159,7 @@ export function SpatialControls(_ref) {
158
159
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
159
160
  icon: faTrash,
160
161
  className: "nav-icon"
161
- }), "Delete polygons"))), !!features?.features?.length && polygonControls, /*#__PURE__*/React.createElement(Button, {
162
+ }), "Delete polygons"))), !!(features !== null && features !== void 0 && (_features$features = features.features) !== null && _features$features !== void 0 && _features$features.length) && polygonControls, /*#__PURE__*/React.createElement(Button, {
162
163
  onClick: handleShowControls
163
164
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
164
165
  icon: faSliders
@@ -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, { useState } from "react";
2
7
  import CloseIcon from "@mui/icons-material/Close";
3
8
  import SearchIcon from "@mui/icons-material/Search";
@@ -111,9 +116,9 @@ export function SearchModal(_ref2) {
111
116
  className: "flex-column"
112
117
  }, searchVar && /*#__PURE__*/React.createElement(Nav.Item, null, /*#__PURE__*/React.createElement(Nav.Link, {
113
118
  eventKey: FEATURE_TYPE.VAR
114
- }, "Genes", " ", !!varResultsLength && `(${varResultsLength})`)), searchDiseases && /*#__PURE__*/React.createElement(Nav.Item, null, /*#__PURE__*/React.createElement(Nav.Link, {
119
+ }, "Genes", " ", !!varResultsLength && "(".concat(varResultsLength, ")"))), searchDiseases && /*#__PURE__*/React.createElement(Nav.Item, null, /*#__PURE__*/React.createElement(Nav.Link, {
115
120
  eventKey: FEATURE_TYPE.DISEASE
116
- }, "Diseases", " ", !!diseaseResultsLength && `(${diseaseResultsLength})`)))), /*#__PURE__*/React.createElement(Col, {
121
+ }, "Diseases", " ", !!diseaseResultsLength && "(".concat(diseaseResultsLength, ")"))))), /*#__PURE__*/React.createElement(Col, {
117
122
  sm: 9,
118
123
  className: "py-3"
119
124
  }, /*#__PURE__*/React.createElement(Tab.Content, null, searchVar && /*#__PURE__*/React.createElement(Tab.Pane, {
@@ -123,10 +128,9 @@ export function SearchModal(_ref2) {
123
128
  handleSelect: handleSelect,
124
129
  selectedResult: selectedResult.var,
125
130
  setSelectedResult: item => setSelectedResult(prev => {
126
- return {
127
- ...prev,
131
+ return _objectSpread(_objectSpread({}, prev), {}, {
128
132
  var: item
129
- };
133
+ });
130
134
  }),
131
135
  setResultsLength: setVarResultsLength
132
136
  })), searchDiseases && /*#__PURE__*/React.createElement(Tab.Pane, {
@@ -135,10 +139,9 @@ export function SearchModal(_ref2) {
135
139
  text: text,
136
140
  selectedResult: selectedResult.disease,
137
141
  setSelectedResult: item => setSelectedResult(prev => {
138
- return {
139
- ...prev,
142
+ return _objectSpread(_objectSpread({}, prev), {}, {
140
143
  disease: item
141
- };
144
+ });
142
145
  }),
143
146
  setResultsLength: setDiseaseResultsLength
144
147
  }))))))), /*#__PURE__*/React.createElement(Col, {
@@ -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, { useState, useEffect } from "react";
2
7
  import { faPlus } from "@fortawesome/free-solid-svg-icons";
3
8
  import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
@@ -20,10 +25,9 @@ export function VarInfo(_ref) {
20
25
  });
21
26
  useEffect(() => {
22
27
  setParams(p => {
23
- return {
24
- ...p,
28
+ return _objectSpread(_objectSpread({}, p), {}, {
25
29
  geneName: varItem.name
26
- };
30
+ });
27
31
  });
28
32
  }, [varItem.name]);
29
33
  const {
@@ -34,7 +38,7 @@ export function VarInfo(_ref) {
34
38
  refetchOnMount: false,
35
39
  enabled: !!dataset.diseaseDatasets.length
36
40
  });
37
- const hasDiseaseInfo = !isPending && !serverError && !!fetchedData?.length;
41
+ const hasDiseaseInfo = !isPending && !serverError && !!(fetchedData !== null && fetchedData !== void 0 && fetchedData.length);
38
42
  return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h5", null, varItem.name), !!dataset.diseaseDatasets.length && isPending && /*#__PURE__*/React.createElement("p", null, "Loading..."), hasDiseaseInfo && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h6", null, "Associated diseases"), /*#__PURE__*/React.createElement(VarDiseaseInfo, {
39
43
  data: fetchedData
40
44
  })));
@@ -54,13 +58,12 @@ const useVarMean = function (varKeys) {
54
58
  });
55
59
  useEffect(() => {
56
60
  setParams(p => {
57
- return {
58
- ...p,
61
+ return _objectSpread(_objectSpread({}, p), {}, {
59
62
  varKeys: _.map(varKeys, v => v.isSet ? {
60
63
  name: v.name,
61
64
  indices: v.vars.map(v => v.index)
62
65
  } : v.index)
63
- };
66
+ });
64
67
  });
65
68
  }, [varKeys]);
66
69
  return useFetch(ENDPOINT, params, {
@@ -93,10 +96,9 @@ export function DiseaseInfo(_ref2) {
93
96
  });
94
97
  useEffect(() => {
95
98
  setParams(p => {
96
- return {
97
- ...p,
99
+ return _objectSpread(_objectSpread({}, p), {}, {
98
100
  diseaseId: disease.id
99
- };
101
+ });
100
102
  });
101
103
  }, [disease]);
102
104
  const diseaseData = useFetch(ENDPOINT, params, {
@@ -108,7 +110,7 @@ export function DiseaseInfo(_ref2) {
108
110
  setDiseaseVars(diseaseData.fetchedData);
109
111
  }
110
112
  }, [diseaseData.fetchedData, diseaseData.isPending, diseaseData.serverError]);
111
- const varMeans = useVarMean(diseaseVars, !!diseaseVars?.length && settings.varSort.disease.sort === VAR_SORT.MATRIX);
113
+ const varMeans = useVarMean(diseaseVars, !!(diseaseVars !== null && diseaseVars !== void 0 && diseaseVars.length) && settings.varSort.disease.sort === VAR_SORT.MATRIX);
112
114
  useEffect(() => {
113
115
  if (settings.varSort.disease.sort === VAR_SORT.MATRIX) {
114
116
  if (!varMeans.isPending && !varMeans.serverError) {
@@ -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, { useDeferredValue, useEffect, useMemo, useState } from "react";
2
7
  import { faPlus } from "@fortawesome/free-solid-svg-icons";
3
8
  import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
@@ -30,10 +35,9 @@ export function VarSearchResults(_ref) {
30
35
  const setData = text => {
31
36
  if (text.length) {
32
37
  setParams(p => {
33
- return {
34
- ...p,
38
+ return _objectSpread(_objectSpread({}, p), {}, {
35
39
  text: text
36
- };
40
+ });
37
41
  });
38
42
  } else {
39
43
  setSuggestions([]);
@@ -47,7 +51,7 @@ export function VarSearchResults(_ref) {
47
51
  useEffect(() => {
48
52
  if (!isPending && !serverError) {
49
53
  setSuggestions(fetchedData);
50
- setResultsLength(fetchedData?.length);
54
+ setResultsLength(fetchedData === null || fetchedData === void 0 ? void 0 : fetchedData.length);
51
55
  }
52
56
  }, [fetchedData, isPending, serverError, setResultsLength]);
53
57
  const getDataAtIndex = index => deferredData[index];
@@ -58,7 +62,7 @@ export function VarSearchResults(_ref) {
58
62
  onClick: () => {
59
63
  setSelectedResult(item);
60
64
  },
61
- active: selectedResult?.index === item.index
65
+ active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.index) === item.index
62
66
  }, /*#__PURE__*/React.createElement("div", {
63
67
  className: "d-flex justify-content-between align-items-center w-100"
64
68
  }, /*#__PURE__*/React.createElement("div", null, item.name), /*#__PURE__*/React.createElement("div", {
@@ -80,7 +84,7 @@ export function VarSearchResults(_ref) {
80
84
  }, /*#__PURE__*/React.createElement(ListGroup, {
81
85
  variant: "flush",
82
86
  className: "cherita-list"
83
- }, deferredData?.length ? /*#__PURE__*/React.createElement(VirtualizedList, {
87
+ }, deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/React.createElement(VirtualizedList, {
84
88
  getDataAtIndex: getDataAtIndex,
85
89
  count: deferredData.length,
86
90
  ItemComponent: ItemComponent,
@@ -115,10 +119,9 @@ export function DiseasesSearchResults(_ref2) {
115
119
  const setData = text => {
116
120
  if (text.length) {
117
121
  setParams(p => {
118
- return {
119
- ...p,
122
+ return _objectSpread(_objectSpread({}, p), {}, {
120
123
  text: text
121
- };
124
+ });
122
125
  });
123
126
  } else {
124
127
  setSuggestions([]);
@@ -132,7 +135,7 @@ export function DiseasesSearchResults(_ref2) {
132
135
  useEffect(() => {
133
136
  if (!isPending && !serverError) {
134
137
  setSuggestions(fetchedData);
135
- setResultsLength(fetchedData?.length);
138
+ setResultsLength(fetchedData === null || fetchedData === void 0 ? void 0 : fetchedData.length);
136
139
  }
137
140
  }, [fetchedData, isPending, serverError, setResultsLength]);
138
141
  const getDataAtIndex = index => deferredData[index];
@@ -143,7 +146,7 @@ export function DiseasesSearchResults(_ref2) {
143
146
  onClick: () => {
144
147
  setSelectedResult(item);
145
148
  },
146
- active: selectedResult?.id === item.id
149
+ active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.id) === item.id
147
150
  }, /*#__PURE__*/React.createElement("div", {
148
151
  className: "d-flex justify-content-between align-items-center w-100"
149
152
  }, /*#__PURE__*/React.createElement("div", null, item.disease_name)))));
@@ -152,7 +155,7 @@ export function DiseasesSearchResults(_ref2) {
152
155
  }, /*#__PURE__*/React.createElement(ListGroup, {
153
156
  variant: "flush",
154
157
  className: "cherita-list"
155
- }, deferredData?.length ? /*#__PURE__*/React.createElement(VirtualizedList, {
158
+ }, deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/React.createElement(VirtualizedList, {
156
159
  getDataAtIndex: getDataAtIndex,
157
160
  count: deferredData.length,
158
161
  ItemComponent: ItemComponent,
@@ -1,4 +1,9 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
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); }
2
7
  import React, { useEffect, useState } from "react";
3
8
  import { faDroplet, faPlus, faTrash } from "@fortawesome/free-solid-svg-icons";
4
9
  import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
@@ -31,10 +36,9 @@ function VarHistogram(_ref) {
31
36
  });
32
37
  useEffect(() => {
33
38
  setParams(p => {
34
- return {
35
- ...p,
39
+ return _objectSpread(_objectSpread({}, p), {}, {
36
40
  obsIndices: isSliced ? [...(obsIndices || [])] : null
37
- };
41
+ });
38
42
  });
39
43
  }, [obsIndices, isSliced]);
40
44
  const {
@@ -107,9 +111,9 @@ export function SelectionItem(_ref3) {
107
111
  refetchOnMount: false,
108
112
  enabled: !!dataset.diseaseDatasets.length
109
113
  });
110
- const hasDiseaseInfo = !isPending && !serverError && !!fetchedData?.length;
114
+ const hasDiseaseInfo = !isPending && !serverError && !!(fetchedData !== null && fetchedData !== void 0 && fetchedData.length);
111
115
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
112
- className: `d-flex justify-content-between ${hasDiseaseInfo ? "cursor-pointer" : ""}`,
116
+ className: "d-flex justify-content-between ".concat(hasDiseaseInfo ? "cursor-pointer" : ""),
113
117
  onClick: () => {
114
118
  setOpenInfo(o => !o);
115
119
  }
@@ -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 { faTimes } from "@fortawesome/free-solid-svg-icons";
3
8
  import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
@@ -27,13 +32,12 @@ const useVarMean = function (varKeys) {
27
32
  });
28
33
  useEffect(() => {
29
34
  setParams(p => {
30
- return {
31
- ...p,
35
+ return _objectSpread(_objectSpread({}, p), {}, {
32
36
  varKeys: _.map(varKeys, v => v.isSet ? {
33
37
  name: v.name,
34
38
  indices: v.vars.map(v => v.index)
35
39
  } : v.index)
36
- };
40
+ });
37
41
  });
38
42
  }, [varKeys]);
39
43
  return useFetch(ENDPOINT, params, {
@@ -47,17 +51,19 @@ const sortMeans = (i, means) => {
47
51
  return means[i.name] || _.min(_.values(means)) - 1;
48
52
  };
49
53
  export function VarNamesList(_ref) {
54
+ var _settings$selectedVar, _settings$selectedVar2;
50
55
  let {
51
56
  mode = SELECTION_MODES.SINGLE,
52
57
  displayName = "genes"
53
58
  } = _ref;
54
59
  const settings = useSettings();
55
60
  const dispatch = useSettingsDispatch();
56
- const [active, setActive] = useState(mode === SELECTION_MODES.SINGLE ? settings.selectedVar?.matrix_index || settings.selectedVar?.name : settings.selectedMultiVar.map(i => i.matrix_index || i.name));
61
+ const [active, setActive] = useState(mode === SELECTION_MODES.SINGLE ? ((_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.matrix_index) || ((_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name) : settings.selectedMultiVar.map(i => i.matrix_index || i.name));
57
62
  const [sortedVars, setSortedVars] = useState([]);
58
63
  useEffect(() => {
59
64
  if (mode === SELECTION_MODES.SINGLE) {
60
- setActive(settings.selectedVar?.matrix_index || settings.selectedVar?.name);
65
+ var _settings$selectedVar3, _settings$selectedVar4;
66
+ setActive(((_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.matrix_index) || ((_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.name));
61
67
  }
62
68
  }, [mode, settings.selectedVar]);
63
69
  useEffect(() => {
@@ -108,13 +114,13 @@ export function VarNamesList(_ref) {
108
114
  });
109
115
  const newSetName = () => {
110
116
  let n = 1;
111
- let setName = `Set ${n}`;
117
+ let setName = "Set ".concat(n);
112
118
  const nameExists = name => {
113
119
  return settings.vars.some(v => v.name === name);
114
120
  };
115
121
  while (nameExists(setName)) {
116
122
  n++;
117
- setName = `Set ${n}`;
123
+ setName = "Set ".concat(n);
118
124
  }
119
125
  return setName;
120
126
  };