@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
@@ -21,10 +21,15 @@ var _Legend = require("../../utils/Legend");
21
21
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
22
22
  var _requests = require("../../utils/requests");
23
23
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
24
- 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); }
25
- 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; }
24
+ 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); }
25
+ 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; }
26
+ 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; }
27
+ 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; }
28
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
29
+ 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); }
26
30
  _fontawesomeSvgCore.library.add(_freeSolidSvgIcons.faSliders);
27
31
  function usePseudospatialData(plotType) {
32
+ var _settings$selectedVar5, _settings$selectedVar6, _settings$selectedVar7, _settings$selectedVar8;
28
33
  const ENDPOINT = "pseudospatial";
29
34
  const dataset = (0, _DatasetContext.useDataset)();
30
35
  const settings = (0, _SettingsContext.useSettings)();
@@ -45,40 +50,49 @@ function usePseudospatialData(plotType) {
45
50
  }, [dataset.url, settings.pseudospatial.maskSet, settings.pseudospatial.maskValues, dataset.varNamesCol, isSliced, obsIndices]);
46
51
  const getPlotParams = (0, _react.useCallback)(() => {
47
52
  if (plotType === _constants.PSEUDOSPATIAL_PLOT_TYPES.GENE) {
48
- return {
49
- varKey: settings.selectedVar?.isSet ? {
50
- name: settings.selectedVar?.name,
51
- indices: settings.selectedVar?.vars.map(v => v.index)
52
- } : settings.selectedVar?.index,
53
- ...(settings.sliceBy.obs ? {
54
- obsCol: settings.selectedObs,
55
- obsValues: !settings.selectedObs?.omit.length ? null : _lodash.default.difference(_lodash.default.values(settings.selectedObs?.codes), settings.selectedObs?.omit).map(c => settings.selectedObs?.codesMap[c])
56
- } : {})
57
- };
53
+ var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3, _settings$selectedVar4, _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
54
+ return _objectSpread({
55
+ varKey: (_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet ? {
56
+ name: (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name,
57
+ indices: (_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars.map(v => v.index)
58
+ } : (_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.index
59
+ }, settings.sliceBy.obs ? {
60
+ obsCol: settings.selectedObs,
61
+ obsValues: !((_settings$selectedObs = settings.selectedObs) !== null && _settings$selectedObs !== void 0 && _settings$selectedObs.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.codes), (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.omit).map(c => {
62
+ var _settings$selectedObs4;
63
+ return (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.codesMap[c];
64
+ })
65
+ } : {});
58
66
  } else if (plotType === _constants.PSEUDOSPATIAL_PLOT_TYPES.CATEGORICAL) {
67
+ var _settings$selectedObs5, _settings$selectedObs6, _settings$selectedObs7;
59
68
  return {
60
69
  obsCol: settings.selectedObs,
61
- obsValues: !settings.selectedObs?.omit.length ? null : _lodash.default.difference(_lodash.default.values(settings.selectedObs?.codes), settings.selectedObs?.omit).map(c => settings.selectedObs?.codesMap[c]),
70
+ obsValues: !((_settings$selectedObs5 = settings.selectedObs) !== null && _settings$selectedObs5 !== void 0 && _settings$selectedObs5.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.codes), (_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.omit).map(c => {
71
+ var _settings$selectedObs8;
72
+ return (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.codesMap[c];
73
+ }),
62
74
  mode: settings.pseudospatial.categoricalMode
63
75
  };
64
76
  } else if (plotType === "continuous") {
77
+ var _settings$selectedObs9, _settings$selectedObs0, _settings$selectedObs1;
65
78
  return {
66
79
  obsCol: settings.selectedObs,
67
- obsValues: !settings.selectedObs?.omit.length ? null : _lodash.default.difference(_lodash.default.values(settings.selectedObs?.codes), settings.selectedObs?.omit).map(c => settings.selectedObs?.codesMap[c])
80
+ obsValues: !((_settings$selectedObs9 = settings.selectedObs) !== null && _settings$selectedObs9 !== void 0 && _settings$selectedObs9.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_settings$selectedObs0 = settings.selectedObs) === null || _settings$selectedObs0 === void 0 ? void 0 : _settings$selectedObs0.codes), (_settings$selectedObs1 = settings.selectedObs) === null || _settings$selectedObs1 === void 0 ? void 0 : _settings$selectedObs1.omit).map(c => {
81
+ var _settings$selectedObs10;
82
+ return (_settings$selectedObs10 = settings.selectedObs) === null || _settings$selectedObs10 === void 0 ? void 0 : _settings$selectedObs10.codesMap[c];
83
+ })
68
84
  };
69
85
  }
70
- }, [settings.pseudospatial.categoricalMode, settings.selectedObs, settings.selectedVar?.index, settings.selectedVar?.isSet, settings.selectedVar?.name, settings.selectedVar?.vars, settings.sliceBy.obs, plotType]);
86
+ }, [settings.pseudospatial.categoricalMode, settings.selectedObs, (_settings$selectedVar5 = settings.selectedVar) === null || _settings$selectedVar5 === void 0 ? void 0 : _settings$selectedVar5.index, (_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.isSet, (_settings$selectedVar7 = settings.selectedVar) === null || _settings$selectedVar7 === void 0 ? void 0 : _settings$selectedVar7.name, (_settings$selectedVar8 = settings.selectedVar) === null || _settings$selectedVar8 === void 0 ? void 0 : _settings$selectedVar8.vars, settings.sliceBy.obs, plotType]);
71
87
  const params = (0, _react.useMemo)(() => {
72
- return {
73
- ...baseParams,
74
- ...getPlotParams()
75
- };
88
+ return _objectSpread(_objectSpread({}, baseParams), getPlotParams());
76
89
  }, [baseParams, getPlotParams]);
77
90
  return (0, _requests.useDebouncedFetch)(ENDPOINT + "/" + plotType, params, 500, {
78
91
  enabled: !!plotType && !!settings.pseudospatial.maskSet
79
92
  });
80
93
  }
81
94
  function Pseudospatial(_ref) {
95
+ var _settings$selectedObs14, _layout$coloraxis3, _layout$coloraxis4;
82
96
  let {
83
97
  showLegend = true,
84
98
  sharedScaleRange = false,
@@ -95,21 +109,21 @@ function Pseudospatial(_ref) {
95
109
  } = (0, _colorHelper.useColor)();
96
110
  const colorscale = (0, _react.useRef)(settings.controls.colorScale);
97
111
  (0, _react.useEffect)(() => {
98
- setPlotType(settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? _constants.PSEUDOSPATIAL_PLOT_TYPES.GENE : settings.selectedObs?.type === _constants.OBS_TYPES.CATEGORICAL || settings.selectedObs?.type === _constants.OBS_TYPES.BOOLEAN ? _constants.PSEUDOSPATIAL_PLOT_TYPES.CATEGORICAL : settings.selectedObs?.type === _constants.OBS_TYPES.CONTINUOUS ? _constants.PSEUDOSPATIAL_PLOT_TYPES.CONTINUOUS : _constants.PSEUDOSPATIAL_PLOT_TYPES.MASKS);
99
- }, [settings.colorEncoding, settings.selectedObs?.type, setPlotType]);
112
+ var _settings$selectedObs11, _settings$selectedObs12, _settings$selectedObs13;
113
+ setPlotType(settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? _constants.PSEUDOSPATIAL_PLOT_TYPES.GENE : ((_settings$selectedObs11 = settings.selectedObs) === null || _settings$selectedObs11 === void 0 ? void 0 : _settings$selectedObs11.type) === _constants.OBS_TYPES.CATEGORICAL || ((_settings$selectedObs12 = settings.selectedObs) === null || _settings$selectedObs12 === void 0 ? void 0 : _settings$selectedObs12.type) === _constants.OBS_TYPES.BOOLEAN ? _constants.PSEUDOSPATIAL_PLOT_TYPES.CATEGORICAL : ((_settings$selectedObs13 = settings.selectedObs) === null || _settings$selectedObs13 === void 0 ? void 0 : _settings$selectedObs13.type) === _constants.OBS_TYPES.CONTINUOUS ? _constants.PSEUDOSPATIAL_PLOT_TYPES.CONTINUOUS : _constants.PSEUDOSPATIAL_PLOT_TYPES.MASKS);
114
+ }, [settings.colorEncoding, (_settings$selectedObs14 = settings.selectedObs) === null || _settings$selectedObs14 === void 0 ? void 0 : _settings$selectedObs14.type, setPlotType]);
100
115
  const updateColorscale = (0, _react.useCallback)(colorscale => {
101
116
  setLayout(l => {
102
- return {
103
- ...l,
104
- coloraxis: {
105
- ...l.coloraxis,
117
+ return _objectSpread(_objectSpread({}, l), {}, {
118
+ coloraxis: _objectSpread(_objectSpread({}, l.coloraxis), {}, {
106
119
  colorscale: colorscale
107
- }
108
- };
120
+ })
121
+ });
109
122
  });
110
123
  setData(d => {
111
- const min = layout?.coloraxis?.cmin;
112
- const max = layout?.coloraxis?.cmax;
124
+ var _layout$coloraxis, _layout$coloraxis2;
125
+ const min = layout === null || layout === void 0 || (_layout$coloraxis = layout.coloraxis) === null || _layout$coloraxis === void 0 ? void 0 : _layout$coloraxis.cmin;
126
+ const max = layout === null || layout === void 0 || (_layout$coloraxis2 = layout.coloraxis) === null || _layout$coloraxis2 === void 0 ? void 0 : _layout$coloraxis2.cmax;
113
127
  return _lodash.default.map(d, trace => {
114
128
  const v = trace.meta.value;
115
129
  if (v === null) {
@@ -118,17 +132,15 @@ function Pseudospatial(_ref) {
118
132
  const color = (0, _colorHelper.rgbToHex)(getColor({
119
133
  value: (v - min) / (max - min)
120
134
  }));
121
- return {
122
- ...trace,
135
+ return _objectSpread(_objectSpread({}, trace), {}, {
123
136
  fillcolor: color,
124
- line: {
125
- ...trace.line,
137
+ line: _objectSpread(_objectSpread({}, trace.line), {}, {
126
138
  color: color
127
- }
128
- };
139
+ })
140
+ });
129
141
  });
130
142
  });
131
- }, [getColor, layout?.coloraxis?.cmax, layout?.coloraxis?.cmin]);
143
+ }, [getColor, layout === null || layout === void 0 || (_layout$coloraxis3 = layout.coloraxis) === null || _layout$coloraxis3 === void 0 ? void 0 : _layout$coloraxis3.cmax, layout === null || layout === void 0 || (_layout$coloraxis4 = layout.coloraxis) === null || _layout$coloraxis4 === void 0 ? void 0 : _layout$coloraxis4.cmin]);
132
144
  const {
133
145
  fetchedData,
134
146
  isPending,
@@ -163,40 +175,36 @@ function Pseudospatial(_ref) {
163
175
  const color = (0, _colorHelper.rgbToHex)(getColor({
164
176
  value: (v - min) / (max - min)
165
177
  }));
166
- return {
167
- ...trace,
178
+ return _objectSpread(_objectSpread({}, trace), {}, {
168
179
  fillcolor: color,
169
- line: {
170
- ...trace.line,
180
+ line: _objectSpread(_objectSpread({}, trace.line), {}, {
171
181
  color: color
172
- }
173
- };
182
+ })
183
+ });
174
184
  });
175
185
  });
176
186
  setLayout(l => {
177
- return {
178
- ...l,
179
- coloraxis: {
180
- ...l.coloraxis,
187
+ return _objectSpread(_objectSpread({}, l), {}, {
188
+ coloraxis: _objectSpread(_objectSpread({}, l.coloraxis), {}, {
181
189
  cmin: min,
182
190
  cmax: max
183
- }
184
- };
191
+ })
192
+ });
185
193
  });
186
194
  }
187
195
  }, [settings.controls.range, settings.controls.valueMax, settings.controls.valueMin, settings.controls.valueRange, getColor, sharedScaleRange]);
188
196
  const hasSelections = !!plotType && !!settings.pseudospatial.maskSet;
189
197
  const faSlidersPath = _freeSolidSvgIcons.faSliders.icon[4];
190
198
  if (!serverError) {
199
+ var _layout$coloraxis5, _layout$coloraxis6;
191
200
  return /*#__PURE__*/_react.default.createElement("div", {
192
201
  className: "cherita-pseudospatial"
193
202
  }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, hasSelections && isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), hasSelections && /*#__PURE__*/_react.default.createElement(_reactPlotly.default, {
194
203
  data: data,
195
- layout: {
196
- ...layout,
204
+ layout: _objectSpread(_objectSpread({}, layout), {}, {
197
205
  autosize: true,
198
206
  height: height
199
- },
207
+ }),
200
208
  useResizeHandler: true,
201
209
  className: "cherita-pseudospatial-plot",
202
210
  config: {
@@ -215,8 +223,8 @@ function Pseudospatial(_ref) {
215
223
  }]
216
224
  }
217
225
  }), hasSelections && showLegend && /*#__PURE__*/_react.default.createElement(_Legend.Legend, {
218
- min: layout?.coloraxis?.cmin,
219
- max: layout?.coloraxis?.cmax,
226
+ min: layout === null || layout === void 0 || (_layout$coloraxis5 = layout.coloraxis) === null || _layout$coloraxis5 === void 0 ? void 0 : _layout$coloraxis5.cmin,
227
+ max: layout === null || layout === void 0 || (_layout$coloraxis6 = layout.coloraxis) === null || _layout$coloraxis6 === void 0 ? void 0 : _layout$coloraxis6.cmax,
220
228
  addText: plotType === _constants.PSEUDOSPATIAL_PLOT_TYPES.GENE ? " - Mean expression" : plotType === _constants.PSEUDOSPATIAL_PLOT_TYPES.CATEGORICAL ? " - %" : plotType === _constants.PSEUDOSPATIAL_PLOT_TYPES.CONTINUOUS ? " - Mean value" : ""
221
229
  })));
222
230
  } else {
@@ -12,8 +12,12 @@ var _DatasetContext = require("../../context/DatasetContext");
12
12
  var _SettingsContext = require("../../context/SettingsContext");
13
13
  var _requests = require("../../utils/requests");
14
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
- 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); }
16
- 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; }
15
+ 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); }
16
+ 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; }
17
+ 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; }
18
+ 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; }
19
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
20
+ 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); }
17
21
  function CategoricalMode() {
18
22
  const settings = (0, _SettingsContext.useSettings)();
19
23
  const dispatch = (0, _SettingsContext.useSettingsDispatch)();
@@ -35,6 +39,7 @@ function CategoricalMode() {
35
39
  }, _lodash.default.capitalize(mode.name)), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Menu, null, modeList));
36
40
  }
37
41
  function MaskSet() {
42
+ var _settings$pseudospati5, _settings$pseudospati6, _maskSets$settings$ps2, _settings$pseudospati7, _settings$pseudospati8, _maskSets$settings$ps3, _settings$pseudospati9;
38
43
  const ENDPOINT = "masks";
39
44
  const dataset = (0, _DatasetContext.useDataset)();
40
45
  const settings = (0, _SettingsContext.useSettings)();
@@ -45,10 +50,9 @@ function MaskSet() {
45
50
  });
46
51
  (0, _react.useEffect)(() => {
47
52
  setParams(p => {
48
- return {
49
- ...p,
53
+ return _objectSpread(_objectSpread({}, p), {}, {
50
54
  url: dataset.url
51
- };
55
+ });
52
56
  });
53
57
  }, [dataset.url]);
54
58
  const {
@@ -74,9 +78,10 @@ function MaskSet() {
74
78
  }
75
79
  }, _lodash.default.capitalize(key)));
76
80
  const handleMaskChange = mask => {
77
- let newMasks = settings.pseudospatial.maskValues || maskSets?.[settings.pseudospatial?.maskSet];
81
+ var _settings$pseudospati, _settings$pseudospati2;
82
+ let newMasks = settings.pseudospatial.maskValues || (maskSets === null || maskSets === void 0 ? void 0 : maskSets[(_settings$pseudospati = settings.pseudospatial) === null || _settings$pseudospati === void 0 ? void 0 : _settings$pseudospati.maskSet]);
78
83
  newMasks = newMasks.includes(mask) ? newMasks.filter(m => m !== mask) : [...newMasks, mask];
79
- if (!_lodash.default.difference(maskSets?.[settings.pseudospatial?.maskSet], newMasks).length) {
84
+ if (!_lodash.default.difference(maskSets === null || maskSets === void 0 ? void 0 : maskSets[(_settings$pseudospati2 = settings.pseudospatial) === null || _settings$pseudospati2 === void 0 ? void 0 : _settings$pseudospati2.maskSet], newMasks).length) {
80
85
  newMasks = null;
81
86
  }
82
87
  dispatch({
@@ -85,7 +90,8 @@ function MaskSet() {
85
90
  });
86
91
  };
87
92
  const toggleMasks = () => {
88
- if (!settings.pseudospatial.maskValues || settings.pseudospatial.maskValues?.length === maskSets?.[settings.pseudospatial?.maskSet]?.length) {
93
+ var _settings$pseudospati3, _maskSets$settings$ps, _settings$pseudospati4;
94
+ if (!settings.pseudospatial.maskValues || ((_settings$pseudospati3 = settings.pseudospatial.maskValues) === null || _settings$pseudospati3 === void 0 ? void 0 : _settings$pseudospati3.length) === (maskSets === null || maskSets === void 0 || (_maskSets$settings$ps = maskSets[(_settings$pseudospati4 = settings.pseudospatial) === null || _settings$pseudospati4 === void 0 ? void 0 : _settings$pseudospati4.maskSet]) === null || _maskSets$settings$ps === void 0 ? void 0 : _maskSets$settings$ps.length)) {
89
95
  dispatch({
90
96
  type: "set.pseudospatial.maskValues",
91
97
  maskValues: []
@@ -97,7 +103,7 @@ function MaskSet() {
97
103
  });
98
104
  }
99
105
  };
100
- const masksList = _lodash.default.map(maskSets?.[settings.pseudospatial?.maskSet], mask => /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.ItemText, {
106
+ const masksList = _lodash.default.map(maskSets === null || maskSets === void 0 ? void 0 : maskSets[(_settings$pseudospati5 = settings.pseudospatial) === null || _settings$pseudospati5 === void 0 ? void 0 : _settings$pseudospati5.maskSet], mask => /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.ItemText, {
101
107
  key: mask
102
108
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Form.Check, {
103
109
  type: "checkbox",
@@ -105,8 +111,8 @@ function MaskSet() {
105
111
  checked: !settings.pseudospatial.maskValues || settings.pseudospatial.maskValues.includes(mask),
106
112
  onChange: () => handleMaskChange(mask)
107
113
  })));
108
- const nMasks = settings.pseudospatial.maskValues ? settings.pseudospatial.maskValues?.length : maskSets?.[settings.pseudospatial?.maskSet]?.length || "No";
109
- const toggleAllChecked = !settings.pseudospatial.maskValues || settings.pseudospatial.maskValues?.length === maskSets?.[settings.pseudospatial?.maskSet]?.length;
114
+ const nMasks = settings.pseudospatial.maskValues ? (_settings$pseudospati6 = settings.pseudospatial.maskValues) === null || _settings$pseudospati6 === void 0 ? void 0 : _settings$pseudospati6.length : (maskSets === null || maskSets === void 0 || (_maskSets$settings$ps2 = maskSets[(_settings$pseudospati7 = settings.pseudospatial) === null || _settings$pseudospati7 === void 0 ? void 0 : _settings$pseudospati7.maskSet]) === null || _maskSets$settings$ps2 === void 0 ? void 0 : _maskSets$settings$ps2.length) || "No";
115
+ const toggleAllChecked = !settings.pseudospatial.maskValues || ((_settings$pseudospati8 = settings.pseudospatial.maskValues) === null || _settings$pseudospati8 === void 0 ? void 0 : _settings$pseudospati8.length) === (maskSets === null || maskSets === void 0 || (_maskSets$settings$ps3 = maskSets[(_settings$pseudospati9 = settings.pseudospatial) === null || _settings$pseudospati9 === void 0 ? void 0 : _settings$pseudospati9.maskSet]) === null || _maskSets$settings$ps3 === void 0 ? void 0 : _maskSets$settings$ps3.length);
110
116
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Toggle, {
111
117
  variant: "light"
112
118
  }, _lodash.default.capitalize(settings.pseudospatial.maskSet || "Select a mask set")), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Menu, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Header, null, "Mask set"), maskSetList)), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Toggle, {
@@ -26,8 +26,12 @@ var _LoadingIndicators = require("../../utils/LoadingIndicators");
26
26
  var _string = require("../../utils/string");
27
27
  var _zarrData = require("../../utils/zarrData");
28
28
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
29
- 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); }
30
- 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; }
29
+ 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); }
30
+ 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; }
31
+ 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; }
32
+ 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; }
33
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
34
+ 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); }
31
35
  window.deck.log.level = 1;
32
36
  const INITIAL_VIEW_STATE = {
33
37
  longitude: 0,
@@ -38,6 +42,7 @@ const INITIAL_VIEW_STATE = {
38
42
  bearing: 0
39
43
  };
40
44
  function Scatterplot(_ref) {
45
+ var _settings$selectedObs3, _features$features2, _obsmData$serverError, _xData$serverError, _obsData$serverError, _labelObsData$serverE, _settings$selectedVar, _settings$selectedObs4, _obsmData$data;
41
46
  let {
42
47
  radius = 30,
43
48
  setShowObs,
@@ -82,12 +87,12 @@ function Scatterplot(_ref) {
82
87
 
83
88
  (0, _react.useEffect)(() => {
84
89
  if (!obsmData.isPending && !obsmData.serverError) {
90
+ var _deckRef$current, _deckRef$current2;
85
91
  setIsRendering(true);
86
92
  setData(d => {
87
- return {
88
- ...d,
93
+ return _objectSpread(_objectSpread({}, d), {}, {
89
94
  positions: obsmData.data
90
- };
95
+ });
91
96
  });
92
97
  const mapHelper = new _mapHelper.MapHelper();
93
98
  const {
@@ -95,35 +100,34 @@ function Scatterplot(_ref) {
95
100
  longitude,
96
101
  zoom
97
102
  } = mapHelper.fitBounds(obsmData.data, {
98
- width: deckRef?.current?.deck?.width,
99
- height: deckRef?.current?.deck?.height
103
+ 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,
104
+ 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
100
105
  });
101
106
  setViewState(v => {
102
- return {
103
- ...v,
107
+ return _objectSpread(_objectSpread({}, v), {}, {
104
108
  longitude: longitude,
105
109
  latitude: latitude,
106
110
  zoom: zoom
107
- };
111
+ });
108
112
  });
109
113
  } else if (!obsmData.isPending && obsmData.serverError) {
110
114
  setIsRendering(true);
111
115
  setData(d => {
112
- return {
113
- ...d,
116
+ return _objectSpread(_objectSpread({}, d), {}, {
114
117
  positions: []
115
- };
118
+ });
116
119
  });
117
120
  }
118
121
  }, [settings.selectedObsm, obsmData.data, obsmData.isPending, obsmData.serverError]);
119
122
  const getBounds = (0, _react.useCallback)(() => {
123
+ var _deckRef$current3, _deckRef$current4;
120
124
  const {
121
125
  latitude,
122
126
  longitude,
123
127
  zoom
124
128
  } = new _mapHelper.MapHelper().fitBounds(data.positions, {
125
- width: deckRef?.current?.deck?.width,
126
- height: deckRef?.current?.deck?.height
129
+ 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,
130
+ 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
127
131
  });
128
132
  return {
129
133
  latitude,
@@ -137,17 +141,15 @@ function Scatterplot(_ref) {
137
141
  if (!xData.isPending && !xData.serverError) {
138
142
  // @TODO: add condition to check obs slicing
139
143
  setData(d => {
140
- return {
141
- ...d,
144
+ return _objectSpread(_objectSpread({}, d), {}, {
142
145
  values: xData.data
143
- };
146
+ });
144
147
  });
145
148
  } else if (!xData.isPending && xData.serverError) {
146
149
  setData(d => {
147
- return {
148
- ...d,
150
+ return _objectSpread(_objectSpread({}, d), {}, {
149
151
  values: []
150
- };
152
+ });
151
153
  });
152
154
  }
153
155
  }
@@ -157,44 +159,41 @@ function Scatterplot(_ref) {
157
159
  setIsRendering(true);
158
160
  if (!obsData.isPending && !obsData.serverError) {
159
161
  setData(d => {
160
- return {
161
- ...d,
162
+ return _objectSpread(_objectSpread({}, d), {}, {
162
163
  values: obsData.data
163
- };
164
+ });
164
165
  });
165
166
  } else if (!obsData.isPending && obsData.serverError) {
166
167
  setData(d => {
167
- return {
168
- ...d,
168
+ return _objectSpread(_objectSpread({}, d), {}, {
169
169
  values: []
170
- };
170
+ });
171
171
  });
172
172
  }
173
173
  } else if (settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR && settings.sliceBy.obs) {
174
174
  if (!obsData.isPending && !obsData.serverError) {
175
175
  setData(d => {
176
- return {
177
- ...d,
176
+ return _objectSpread(_objectSpread({}, d), {}, {
178
177
  sliceValues: obsData.data
179
- };
178
+ });
180
179
  });
181
180
  } else if (!obsData.isPending && obsData.serverError) {
182
181
  setData(d => {
183
- return {
184
- ...d,
182
+ return _objectSpread(_objectSpread({}, d), {}, {
185
183
  sliceValues: []
186
- };
184
+ });
187
185
  });
188
186
  }
189
187
  }
190
188
  }, [settings.colorEncoding, obsData.data, obsData.isPending, obsData.serverError, settings.sliceBy.obs]);
191
189
  const isCategorical = (0, _react.useMemo)(() => {
192
190
  if (settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS) {
193
- return settings.selectedObs?.type === _constants.OBS_TYPES.CATEGORICAL || settings.selectedObs?.type === _constants.OBS_TYPES.BOOLEAN;
191
+ var _settings$selectedObs, _settings$selectedObs2;
192
+ return ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === _constants.OBS_TYPES.CATEGORICAL || ((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.type) === _constants.OBS_TYPES.BOOLEAN;
194
193
  } else {
195
194
  return false;
196
195
  }
197
- }, [settings.colorEncoding, settings.selectedObs?.type]);
196
+ }, [settings.colorEncoding, (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.type]);
198
197
  (0, _react.useEffect)(() => {
199
198
  dispatch({
200
199
  type: "set.controls.valueRange",
@@ -280,17 +279,18 @@ function Scatterplot(_ref) {
280
279
  const layers = (0, _react.useDeferredValue)(mode === _editModes.ViewMode ? memoizedLayers.reverse() : memoizedLayers); // draw scatterplot on top of polygons when in ViewMode
281
280
 
282
281
  (0, _react.useEffect)(() => {
283
- if (!features?.features?.length) {
282
+ var _features$features;
283
+ if (!(features !== null && features !== void 0 && (_features$features = features.features) !== null && _features$features !== void 0 && _features$features.length)) {
284
284
  dispatch({
285
285
  type: "disable.slice.polygons"
286
286
  });
287
287
  }
288
- }, [dispatch, features?.features?.length]);
288
+ }, [dispatch, features === null || features === void 0 || (_features$features2 = features.features) === null || _features$features2 === void 0 ? void 0 : _features$features2.length]);
289
289
  (0, _react.useEffect)(() => {
290
290
  dispatch({
291
291
  type: "set.polygons",
292
292
  obsm: settings.selectedObsm,
293
- polygons: features?.features || []
293
+ polygons: (features === null || features === void 0 ? void 0 : features.features) || []
294
294
  });
295
295
  }, [settings.selectedObsm, dispatch, features.features]);
296
296
  function onLayerClick(info) {
@@ -303,9 +303,9 @@ function Scatterplot(_ref) {
303
303
  const getLabel = function (o, v) {
304
304
  let isVar = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
305
305
  if (isVar || o.type === _constants.OBS_TYPES.CONTINUOUS) {
306
- return `${o.name}: ${(0, _string.formatNumerical)(parseFloat(v))}`;
306
+ return "".concat(o.name, ": ").concat((0, _string.formatNumerical)(parseFloat(v)));
307
307
  } else {
308
- return `${o.name}: ${o.codesMap[v]}`;
308
+ return "".concat(o.name, ": ").concat(o.codesMap[v]);
309
309
  }
310
310
  };
311
311
  const getTooltip = _ref5 => {
@@ -313,15 +313,17 @@ function Scatterplot(_ref) {
313
313
  object,
314
314
  index
315
315
  } = _ref5;
316
- if (!object || object?.type === "Feature") return;
316
+ if (!object || (object === null || object === void 0 ? void 0 : object.type) === "Feature") return;
317
317
  const text = [];
318
318
  if (settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && settings.selectedObs && !_lodash.default.some(settings.labelObs, {
319
319
  name: settings.selectedObs.name
320
320
  })) {
321
- text.push(getLabel(settings.selectedObs, obsData.data?.[index]));
321
+ var _obsData$data;
322
+ text.push(getLabel(settings.selectedObs, (_obsData$data = obsData.data) === null || _obsData$data === void 0 ? void 0 : _obsData$data[index]));
322
323
  }
323
324
  if (settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR && settings.selectedVar) {
324
- text.push(getLabel(settings.selectedVar, xData.data?.[index], true));
325
+ var _xData$data;
326
+ text.push(getLabel(settings.selectedVar, (_xData$data = xData.data) === null || _xData$data === void 0 ? void 0 : _xData$data[index], true));
325
327
  }
326
328
  if (settings.labelObs.length) {
327
329
  text.push(..._lodash.default.map(labelObsData.data, (v, k) => {
@@ -335,16 +337,16 @@ function Scatterplot(_ref) {
335
337
  text: text.length ? _lodash.default.compact(text).join("\n") : null,
336
338
  className: grayOut ? "tooltip-grayout" : "deck-tooltip",
337
339
  style: !grayOut ? {
338
- "border-left": `3px solid ${(0, _colorHelper.rgbToHex)(getFillColor(null, {
340
+ "border-left": "3px solid ".concat((0, _colorHelper.rgbToHex)(getFillColor(null, {
339
341
  index
340
- }))}`
342
+ })))
341
343
  } : {
342
344
  "border-left": "none"
343
345
  }
344
346
  };
345
347
  };
346
348
  const isPending = (isRendering || xData.isPending || obsmData.isPending) && !obsmData.isPending;
347
- const error = settings.selectedObsm && obsmData.serverError?.length || settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR && xData.serverError?.length || settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && obsData.serverError?.length || settings.labelObs.lengh && labelObsData.serverError?.length;
349
+ const error = settings.selectedObsm && ((_obsmData$serverError = obsmData.serverError) === null || _obsmData$serverError === void 0 ? void 0 : _obsmData$serverError.length) || settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR && ((_xData$serverError = xData.serverError) === null || _xData$serverError === void 0 ? void 0 : _xData$serverError.length) || settings.colorEncoding === _constants.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);
348
350
  return /*#__PURE__*/_react.default.createElement("div", {
349
351
  className: "cherita-container-scatterplot"
350
352
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -378,12 +380,10 @@ function Scatterplot(_ref) {
378
380
  setFeatures: setFeatures,
379
381
  selectedFeatureIndexes: selectedFeatureIndexes,
380
382
  resetBounds: () => setViewState(getBounds()),
381
- increaseZoom: () => setViewState(v => ({
382
- ...v,
383
+ increaseZoom: () => setViewState(v => _objectSpread(_objectSpread({}, v), {}, {
383
384
  zoom: v.zoom + 1
384
385
  })),
385
- decreaseZoom: () => setViewState(v => ({
386
- ...v,
386
+ decreaseZoom: () => setViewState(v => _objectSpread(_objectSpread({}, v), {}, {
387
387
  zoom: v.zoom - 1
388
388
  })),
389
389
  setShowObs: setShowObs,
@@ -398,8 +398,8 @@ function Scatterplot(_ref) {
398
398
  }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
399
399
  icon: _freeSolidSvgIcons.faTriangleExclamation
400
400
  }), "\xA0Error loading data"), /*#__PURE__*/_react.default.createElement(_Toolbox.Toolbox, {
401
- mode: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? settings.selectedVar?.name : settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? settings.selectedObs?.name : null,
402
- obsLength: parseInt(obsmData.data?.length),
401
+ mode: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? (_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name : settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.name : null,
402
+ obsLength: parseInt((_obsmData$data = obsmData.data) === null || _obsmData$data === void 0 ? void 0 : _obsmData$data.length),
403
403
  slicedLength: parseInt(slicedLength)
404
404
  })), /*#__PURE__*/_react.default.createElement(_Legend.Legend, {
405
405
  isCategorical: isCategorical,
@@ -6,29 +6,17 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.ScatterplotControls = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _material = require("@mui/material");
9
- var _lodash = _interopRequireDefault(require("lodash"));
10
9
  var _reactBootstrap = require("react-bootstrap");
11
- var _colorscales = require("../../constants/colorscales");
12
10
  var _constants = require("../../constants/constants");
13
11
  var _SettingsContext = require("../../context/SettingsContext");
14
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
- 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); }
16
- 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; }
12
+ var _Controls = require("../controls/Controls");
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); }
17
14
  const ScatterplotControls = () => {
15
+ var _settings$selectedObs;
18
16
  const settings = (0, _SettingsContext.useSettings)();
19
17
  const dispatch = (0, _SettingsContext.useSettingsDispatch)();
20
18
  const [sliderValue, setSliderValue] = _react.default.useState(settings.controls.range || [0, 1]);
21
- const isCategorical = settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? settings.selectedObs?.type === _constants.OBS_TYPES.CATEGORICAL : false;
22
- const colormapList = _lodash.default.keys(_colorscales.COLORSCALES).map(key => /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
23
- key: key,
24
- active: settings.controls.colorScale === key,
25
- onClick: () => {
26
- dispatch({
27
- type: "set.controls.colorScale",
28
- colorScale: key
29
- });
30
- }
31
- }, key));
19
+ const isCategorical = settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === _constants.OBS_TYPES.CATEGORICAL : false;
32
20
  const valueLabelFormat = value => {
33
21
  return (value * (settings.controls.valueRange[1] - settings.controls.valueRange[0]) + settings.controls.valueRange[0]).toFixed(2);
34
22
  };
@@ -57,7 +45,9 @@ const ScatterplotControls = () => {
57
45
  }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
58
46
  id: "colorscale-range",
59
47
  gutterBottom: true
60
- }, "Colorscale range"), /*#__PURE__*/_react.default.createElement(_material.Slider, {
48
+ }, "Colorscale range"), /*#__PURE__*/_react.default.createElement("div", {
49
+ className: "px-4"
50
+ }, /*#__PURE__*/_react.default.createElement(_material.Slider, {
61
51
  "aria-labelledby": "colorscale-range",
62
52
  min: 0,
63
53
  max: 1,
@@ -70,12 +60,9 @@ const ScatterplotControls = () => {
70
60
  valueLabelFormat: valueLabelFormat,
71
61
  marks: marks,
72
62
  disabled: isCategorical
73
- }));
74
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Toggle, {
75
- id: "dropdownColorscale",
76
- variant: "light"
77
- }, settings.controls.colorScale), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Menu, null, colormapList)), /*#__PURE__*/_react.default.createElement("div", {
78
- className: "m-4"
79
- }, rangeSlider));
63
+ })));
64
+ 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(_reactBootstrap.Form.Group, {
65
+ className: "mb-2"
66
+ }, rangeSlider)));
80
67
  };
81
68
  exports.ScatterplotControls = ScatterplotControls;