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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/cjs/components/dotplot/Dotplot.js +26 -19
  2. package/dist/cjs/components/dotplot/DotplotControls.js +17 -19
  3. package/dist/cjs/components/full-page/FullPage.js +9 -7
  4. package/dist/cjs/components/full-page/FullPagePseudospatial.js +9 -7
  5. package/dist/cjs/components/heatmap/Heatmap.js +22 -13
  6. package/dist/cjs/components/matrixplot/Matrixplot.js +22 -13
  7. package/dist/cjs/components/obs-list/ObsItem.js +37 -29
  8. package/dist/cjs/components/obs-list/ObsList.js +47 -44
  9. package/dist/cjs/components/obsm-list/ObsmList.js +9 -6
  10. package/dist/cjs/components/offcanvas/index.js +13 -9
  11. package/dist/cjs/components/pseudospatial/Pseudospatial.js +61 -53
  12. package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +17 -11
  13. package/dist/cjs/components/scatterplot/Scatterplot.js +52 -52
  14. package/dist/cjs/components/scatterplot/ScatterplotControls.js +3 -3
  15. package/dist/cjs/components/scatterplot/SpatialControls.js +4 -4
  16. package/dist/cjs/components/search-bar/SearchBar.js +12 -10
  17. package/dist/cjs/components/search-bar/SearchInfo.js +14 -13
  18. package/dist/cjs/components/search-bar/SearchResults.js +16 -14
  19. package/dist/cjs/components/var-list/VarItem.js +10 -7
  20. package/dist/cjs/components/var-list/VarList.js +14 -9
  21. package/dist/cjs/components/var-list/VarListToolbar.js +1 -2
  22. package/dist/cjs/components/var-list/VarSet.js +1 -2
  23. package/dist/cjs/components/violin/Violin.js +44 -35
  24. package/dist/cjs/context/DatasetContext.js +17 -11
  25. package/dist/cjs/context/FilterContext.js +9 -8
  26. package/dist/cjs/context/SettingsContext.js +169 -237
  27. package/dist/cjs/context/ZarrDataContext.js +1 -2
  28. package/dist/cjs/helpers/color-helper.js +3 -3
  29. package/dist/cjs/helpers/zarr-helper.js +15 -12
  30. package/dist/cjs/utils/Filter.js +13 -9
  31. package/dist/cjs/utils/Histogram.js +4 -3
  32. package/dist/cjs/utils/ImageViewer.js +1 -2
  33. package/dist/cjs/utils/Legend.js +3 -3
  34. package/dist/cjs/utils/LoadingIndicators.js +1 -1
  35. package/dist/cjs/utils/VirtualizedList.js +16 -13
  36. package/dist/cjs/utils/errors.js +20 -22
  37. package/dist/cjs/utils/requests.js +13 -10
  38. package/dist/cjs/utils/zarrData.js +12 -8
  39. package/dist/css/cherita.css +13 -9
  40. package/dist/css/cherita.css.map +1 -1
  41. package/dist/esm/components/dotplot/Dotplot.js +25 -17
  42. package/dist/esm/components/dotplot/DotplotControls.js +16 -17
  43. package/dist/esm/components/full-page/FullPage.js +8 -5
  44. package/dist/esm/components/full-page/FullPagePseudospatial.js +8 -5
  45. package/dist/esm/components/heatmap/Heatmap.js +21 -11
  46. package/dist/esm/components/matrixplot/Matrixplot.js +21 -11
  47. package/dist/esm/components/obs-list/ObsItem.js +36 -27
  48. package/dist/esm/components/obs-list/ObsList.js +46 -42
  49. package/dist/esm/components/obsm-list/ObsmList.js +8 -4
  50. package/dist/esm/components/offcanvas/index.js +13 -9
  51. package/dist/esm/components/pseudospatial/Pseudospatial.js +60 -51
  52. package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +16 -9
  53. package/dist/esm/components/scatterplot/Scatterplot.js +51 -50
  54. package/dist/esm/components/scatterplot/ScatterplotControls.js +2 -1
  55. package/dist/esm/components/scatterplot/SpatialControls.js +3 -2
  56. package/dist/esm/components/search-bar/SearchBar.js +11 -8
  57. package/dist/esm/components/search-bar/SearchInfo.js +13 -11
  58. package/dist/esm/components/search-bar/SearchResults.js +15 -12
  59. package/dist/esm/components/var-list/VarItem.js +9 -5
  60. package/dist/esm/components/var-list/VarList.js +13 -7
  61. package/dist/esm/components/violin/Violin.js +43 -33
  62. package/dist/esm/context/DatasetContext.js +16 -9
  63. package/dist/esm/context/FilterContext.js +8 -6
  64. package/dist/esm/context/SettingsContext.js +168 -235
  65. package/dist/esm/helpers/color-helper.js +3 -3
  66. package/dist/esm/helpers/zarr-helper.js +15 -12
  67. package/dist/esm/utils/Filter.js +13 -9
  68. package/dist/esm/utils/Histogram.js +4 -3
  69. package/dist/esm/utils/Legend.js +2 -1
  70. package/dist/esm/utils/LoadingIndicators.js +1 -1
  71. package/dist/esm/utils/VirtualizedList.js +15 -11
  72. package/dist/esm/utils/errors.js +20 -22
  73. package/dist/esm/utils/requests.js +13 -10
  74. package/dist/esm/utils/zarrData.js +12 -8
  75. package/package.json +4 -2
@@ -11,8 +11,12 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _lodash = _interopRequireDefault(require("lodash"));
12
12
  var _constants = require("../constants/constants");
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
- 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); }
15
- 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; }
14
+ 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); }
15
+ 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; }
16
+ 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; }
17
+ 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; }
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
19
+ 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); }
16
20
  const SettingsContext = exports.SettingsContext = /*#__PURE__*/(0, _react.createContext)(null);
17
21
  const SettingsDispatchContext = exports.SettingsDispatchContext = /*#__PURE__*/(0, _react.createContext)(null);
18
22
  const initialSettings = {
@@ -78,7 +82,7 @@ function SettingsProvider(_ref2) {
78
82
  canOverrideSettings,
79
83
  children
80
84
  } = _ref2;
81
- const DATASET_STORAGE_KEY = `${_constants.LOCAL_STORAGE_KEY}-${dataset_url}`;
85
+ const DATASET_STORAGE_KEY = "".concat(_constants.LOCAL_STORAGE_KEY, "-").concat(dataset_url);
82
86
  // Use localStorage directly instead of useLocalStorage due to unnecessary re-renders
83
87
  // https://github.com/uidotdev/usehooks/issues/157
84
88
  const localSettings = JSON.parse(localStorage.getItem(DATASET_STORAGE_KEY)) || {};
@@ -116,133 +120,118 @@ function settingsReducer(settings, action) {
116
120
  switch (action.type) {
117
121
  case "select.obs":
118
122
  {
119
- return {
120
- ...settings,
123
+ var _action$obs;
124
+ return _objectSpread(_objectSpread({}, settings), {}, {
121
125
  selectedObs: action.obs,
122
- controls: {
123
- ...settings.controls,
124
- range: action.obs?.type === _constants.OBS_TYPES.CATEGORICAL ? [0, 1] : settings.controls.range
125
- },
126
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
127
+ range: ((_action$obs = action.obs) === null || _action$obs === void 0 ? void 0 : _action$obs.type) === _constants.OBS_TYPES.CATEGORICAL ? [0, 1] : settings.controls.range
128
+ }),
126
129
  colorEncoding: settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && !action.obs ? null : settings.colorEncoding,
127
- sliceBy: {
128
- ...settings.sliceBy,
130
+ sliceBy: _objectSpread(_objectSpread({}, settings.sliceBy), {}, {
129
131
  obs: action.obs ? settings.sliceBy.obs : false
130
- }
131
- };
132
+ })
133
+ });
132
134
  }
133
135
  case "select.obsm":
134
136
  {
135
- return {
136
- ...settings,
137
+ return _objectSpread(_objectSpread({}, settings), {}, {
137
138
  selectedObsm: action.obsm
138
- };
139
+ });
139
140
  }
140
141
  case "select.var":
141
142
  {
142
143
  if (settings.vars.find(v => _lodash.default.isEqual(v, action.var))) {
143
- return {
144
- ...settings,
144
+ return _objectSpread(_objectSpread({}, settings), {}, {
145
145
  selectedVar: action.var
146
- };
146
+ });
147
147
  } else {
148
- return {
149
- ...settings,
148
+ return _objectSpread(_objectSpread({}, settings), {}, {
150
149
  selectedVar: action.var,
151
150
  vars: [...settings.vars, action.var]
152
- };
151
+ });
153
152
  }
154
153
  }
155
154
  case "select.multivar":
156
155
  {
157
156
  const vars = settings.vars.find(v => _lodash.default.isEqual(v, action.var)) ? settings.vars : [...settings.vars, action.var];
158
157
  if (settings.selectedMultiVar.find(v => _lodash.default.isEqual(v, action.var))) {
159
- return {
160
- ...settings,
158
+ return _objectSpread(_objectSpread({}, settings), {}, {
161
159
  vars: vars
162
- };
160
+ });
163
161
  } else {
164
- return {
165
- ...settings,
162
+ return _objectSpread(_objectSpread({}, settings), {}, {
166
163
  selectedMultiVar: [...settings.selectedMultiVar, action.var],
167
164
  vars: vars
168
- };
165
+ });
169
166
  }
170
167
  }
171
168
  case "deselect.multivar":
172
169
  {
173
- return {
174
- ...settings,
170
+ return _objectSpread(_objectSpread({}, settings), {}, {
175
171
  selectedMultiVar: settings.selectedMultiVar.filter(v => v !== action.var.name)
176
- };
172
+ });
177
173
  }
178
174
  case "toggle.multivar":
179
175
  {
180
176
  const inMultiVar = settings.selectedMultiVar.some(v => v.name === action.var.name);
181
177
  if (inMultiVar) {
182
- return {
183
- ...settings,
178
+ return _objectSpread(_objectSpread({}, settings), {}, {
184
179
  selectedMultiVar: settings.selectedMultiVar.filter(v => v.name !== action.var.name)
185
- };
180
+ });
186
181
  } else {
187
- return {
188
- ...settings,
182
+ return _objectSpread(_objectSpread({}, settings), {}, {
189
183
  selectedMultiVar: [...settings.selectedMultiVar, action.var]
190
- };
184
+ });
191
185
  }
192
186
  }
193
187
  case "set.colorEncoding":
194
188
  {
195
- return {
196
- ...settings,
189
+ return _objectSpread(_objectSpread({}, settings), {}, {
197
190
  colorEncoding: action.value
198
- };
191
+ });
199
192
  }
200
193
  case "reset.vars":
201
194
  {
202
- return {
203
- ...settings,
195
+ return _objectSpread(_objectSpread({}, settings), {}, {
204
196
  vars: [],
205
197
  selectedVar: null,
206
198
  selectedMultiVar: []
207
- };
199
+ });
208
200
  }
209
201
  case "reset.multiVar":
210
202
  {
211
- return {
212
- ...settings,
203
+ return _objectSpread(_objectSpread({}, settings), {}, {
213
204
  selectedMultiVar: [],
214
205
  colorEncoding: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? null : settings.colorEncoding
215
- };
206
+ });
216
207
  }
217
208
  case "reset.var":
218
209
  {
219
- return {
220
- ...settings,
210
+ return _objectSpread(_objectSpread({}, settings), {}, {
221
211
  selectedVar: null,
222
212
  colorEncoding: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? null : settings.colorEncoding
223
- };
213
+ });
224
214
  }
225
215
  case "add.var":
226
216
  {
227
217
  if (settings.vars.find(v => v.name === action.var.name)) {
228
218
  return settings;
229
219
  } else {
230
- return {
231
- ...settings,
220
+ return _objectSpread(_objectSpread({}, settings), {}, {
232
221
  vars: [...settings.vars, action.var]
233
- };
222
+ });
234
223
  }
235
224
  }
236
225
  case "remove.var":
237
226
  {
238
- const selectedVar = settings.selectedVar?.name === action.var.name ? null : settings.selectedVar;
227
+ var _settings$selectedVar;
228
+ const selectedVar = ((_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name) === action.var.name ? null : settings.selectedVar;
239
229
  const selectedMultiVar = settings.selectedMultiVar.filter(v => v.name !== action.var.name);
240
- return {
241
- ...settings,
230
+ return _objectSpread(_objectSpread({}, settings), {}, {
242
231
  vars: settings.vars.filter(a => a.name !== action.var.name),
243
232
  selectedVar: selectedVar,
244
233
  selectedMultiVar: selectedMultiVar
245
- };
234
+ });
246
235
  }
247
236
  case "add.varSet.var":
248
237
  {
@@ -253,37 +242,34 @@ function settingsReducer(settings, action) {
253
242
  if (varSet.vars.some(v => v.name === action.var.name)) {
254
243
  return settings;
255
244
  } else {
245
+ var _settings$selectedVar2;
256
246
  const varSetVars = [...varSet.vars, action.var];
257
247
  const vars = settings.vars.map(v => {
258
248
  if (v.name === varSet.name) {
259
- return {
260
- ...v,
249
+ return _objectSpread(_objectSpread({}, v), {}, {
261
250
  vars: varSetVars
262
- };
251
+ });
263
252
  } else {
264
253
  return v;
265
254
  }
266
255
  });
267
- const selectedVar = settings.selectedVar?.name === action.varSet.name ? {
268
- ...varSet,
256
+ const selectedVar = ((_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name) === action.varSet.name ? _objectSpread(_objectSpread({}, varSet), {}, {
269
257
  vars: varSetVars
270
- } : settings.selectedVar;
258
+ }) : settings.selectedVar;
271
259
  const selectedMultiVar = settings.selectedMultiVar.map(v => {
272
260
  if (v.name === varSet.name) {
273
- return {
274
- ...v,
261
+ return _objectSpread(_objectSpread({}, v), {}, {
275
262
  vars: varSetVars
276
- };
263
+ });
277
264
  } else {
278
265
  return v;
279
266
  }
280
267
  });
281
- return {
282
- ...settings,
268
+ return _objectSpread(_objectSpread({}, settings), {}, {
283
269
  vars: vars,
284
270
  selectedVar: selectedVar,
285
271
  selectedMultiVar: selectedMultiVar
286
- };
272
+ });
287
273
  }
288
274
  }
289
275
  case "remove.varSet.var":
@@ -298,306 +284,252 @@ function settingsReducer(settings, action) {
298
284
  const varSetVars = varSet.vars.filter(v => v.name !== action.var.name);
299
285
  const vars = settings.vars.map(v => {
300
286
  if (v.name === varSet.name) {
301
- return {
302
- ...v,
287
+ return _objectSpread(_objectSpread({}, v), {}, {
303
288
  vars: varSetVars
304
- };
289
+ });
305
290
  } else {
306
291
  return v;
307
292
  }
308
293
  });
309
294
  // Remove from selected if varSet vars is empty
310
295
  if (!varSetVars.length) {
311
- const selectedVar = settings.selectedVar?.name === action.varSet.name ? null : settings.selectedVar;
296
+ var _settings$selectedVar3;
297
+ const selectedVar = ((_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.name) === action.varSet.name ? null : settings.selectedVar;
312
298
  const selectedMultiVar = settings.selectedMultiVar.filter(v => v.name !== action.varSet.name);
313
- return {
314
- ...settings,
299
+ return _objectSpread(_objectSpread({}, settings), {}, {
315
300
  vars: vars,
316
301
  selectedVar: selectedVar,
317
302
  selectedMultiVar: selectedMultiVar
318
- };
303
+ });
319
304
  } else {
305
+ var _settings$selectedVar4;
320
306
  // Update selected if varSet is selected
321
- const selectedVar = settings.selectedVar?.name === action.varSet.name ? {
322
- ...varSet,
307
+ const selectedVar = ((_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.name) === action.varSet.name ? _objectSpread(_objectSpread({}, varSet), {}, {
323
308
  vars: varSetVars
324
- } : settings.selectedVar;
309
+ }) : settings.selectedVar;
325
310
  const selectedMultiVar = settings.selectedMultiVar.map(v => {
326
311
  if (v.name === varSet.name) {
327
- return {
328
- ...v,
312
+ return _objectSpread(_objectSpread({}, v), {}, {
329
313
  vars: varSetVars
330
- };
314
+ });
331
315
  } else {
332
316
  return v;
333
317
  }
334
318
  });
335
- return {
336
- ...settings,
319
+ return _objectSpread(_objectSpread({}, settings), {}, {
337
320
  vars: vars,
338
321
  selectedVar: selectedVar,
339
322
  selectedMultiVar: selectedMultiVar
340
- };
323
+ });
341
324
  }
342
325
  }
343
326
  }
344
327
  case "set.controls.colorScale":
345
328
  {
346
- return {
347
- ...settings,
348
- controls: {
349
- ...settings.controls,
329
+ return _objectSpread(_objectSpread({}, settings), {}, {
330
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
350
331
  colorScale: action.colorScale
351
- }
352
- };
332
+ })
333
+ });
353
334
  }
354
335
  case "set.controls.valueRange":
355
336
  {
356
- return {
357
- ...settings,
358
- controls: {
359
- ...settings.controls,
337
+ return _objectSpread(_objectSpread({}, settings), {}, {
338
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
360
339
  valueRange: action.valueRange
361
- }
362
- };
340
+ })
341
+ });
363
342
  }
364
343
  case "set.controls.range":
365
344
  {
366
- return {
367
- ...settings,
368
- controls: {
369
- ...settings.controls,
345
+ return _objectSpread(_objectSpread({}, settings), {}, {
346
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
370
347
  range: action.range
371
- }
372
- };
348
+ })
349
+ });
373
350
  }
374
351
  case "set.controls.colorAxis":
375
352
  {
376
- return {
377
- ...settings,
378
- controls: {
379
- ...settings.controls,
353
+ return _objectSpread(_objectSpread({}, settings), {}, {
354
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
380
355
  colorAxis: action.colorAxis
381
- }
382
- };
356
+ })
357
+ });
383
358
  }
384
359
  case "set.controls.colorAxis.crange":
385
360
  {
386
- return {
387
- ...settings,
388
- controls: {
389
- ...settings.controls,
390
- colorAxis: {
391
- ...settings.controls.colorAxis,
361
+ return _objectSpread(_objectSpread({}, settings), {}, {
362
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
363
+ colorAxis: _objectSpread(_objectSpread({}, settings.controls.colorAxis), {}, {
392
364
  cmin: action.cmin,
393
365
  cmax: action.cmax
394
- }
395
- }
396
- };
366
+ })
367
+ })
368
+ });
397
369
  }
398
370
  case "set.controls.colorAxis.cmin":
399
371
  {
400
- return {
401
- ...settings,
402
- controls: {
403
- ...settings.controls,
404
- colorAxis: {
405
- ...settings.controls.colorAxis,
372
+ return _objectSpread(_objectSpread({}, settings), {}, {
373
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
374
+ colorAxis: _objectSpread(_objectSpread({}, settings.controls.colorAxis), {}, {
406
375
  cmin: action.cmin
407
- }
408
- }
409
- };
376
+ })
377
+ })
378
+ });
410
379
  }
411
380
  case "set.controls.colorAxis.cmax":
412
381
  {
413
- return {
414
- ...settings,
415
- controls: {
416
- ...settings.controls,
417
- colorAxis: {
418
- ...settings.controls.colorAxis,
382
+ return _objectSpread(_objectSpread({}, settings), {}, {
383
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
384
+ colorAxis: _objectSpread(_objectSpread({}, settings.controls.colorAxis), {}, {
419
385
  cmax: action.cmax
420
- }
421
- }
422
- };
386
+ })
387
+ })
388
+ });
423
389
  }
424
390
  case "set.controls.scale":
425
391
  {
426
- return {
427
- ...settings,
428
- controls: {
429
- ...settings.controls,
430
- scale: {
431
- ...settings.controls.scale,
392
+ return _objectSpread(_objectSpread({}, settings), {}, {
393
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
394
+ scale: _objectSpread(_objectSpread({}, settings.controls.scale), {}, {
432
395
  [action.plot]: action.scale
433
- }
434
- }
435
- };
396
+ })
397
+ })
398
+ });
436
399
  }
437
400
  case "set.controls.meanOnlyExpressed":
438
401
  {
439
- return {
440
- ...settings,
441
- controls: {
442
- ...settings.controls,
402
+ return _objectSpread(_objectSpread({}, settings), {}, {
403
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
443
404
  meanOnlyExpressed: action.meanOnlyExpressed
444
- }
445
- };
405
+ })
406
+ });
446
407
  }
447
408
  case "set.controls.expressionCutoff":
448
409
  {
449
- return {
450
- ...settings,
451
- controls: {
452
- ...settings.controls,
410
+ return _objectSpread(_objectSpread({}, settings), {}, {
411
+ controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
453
412
  expressionCutoff: action.expressionCutoff
454
- }
455
- };
413
+ })
414
+ });
456
415
  }
457
416
  case "toggle.slice.obs":
458
417
  {
459
418
  if (_lodash.default.isEqual(settings.selectedObs, action.obs)) {
460
- return {
461
- ...settings,
462
- sliceBy: {
463
- ...settings.sliceBy,
419
+ return _objectSpread(_objectSpread({}, settings), {}, {
420
+ sliceBy: _objectSpread(_objectSpread({}, settings.sliceBy), {}, {
464
421
  obs: !settings.sliceBy.obs
465
- }
466
- };
422
+ })
423
+ });
467
424
  } else {
468
- return {
469
- ...settings,
425
+ return _objectSpread(_objectSpread({}, settings), {}, {
470
426
  selectedObs: action.obs,
471
- sliceBy: {
472
- ...settings.sliceBy,
427
+ sliceBy: _objectSpread(_objectSpread({}, settings.sliceBy), {}, {
473
428
  obs: true
474
- }
475
- };
429
+ })
430
+ });
476
431
  }
477
432
  }
478
433
  case "toggle.slice.polygons":
479
434
  {
480
- return {
481
- ...settings,
482
- sliceBy: {
483
- ...settings.sliceBy,
435
+ return _objectSpread(_objectSpread({}, settings), {}, {
436
+ sliceBy: _objectSpread(_objectSpread({}, settings.sliceBy), {}, {
484
437
  polygons: !settings.sliceBy.polygons
485
- }
486
- };
438
+ })
439
+ });
487
440
  }
488
441
  case "disable.slice.polygons":
489
442
  {
490
- return {
491
- ...settings,
492
- sliceBy: {
493
- ...settings.sliceBy,
443
+ return _objectSpread(_objectSpread({}, settings), {}, {
444
+ sliceBy: _objectSpread(_objectSpread({}, settings.sliceBy), {}, {
494
445
  polygons: false
495
- }
496
- };
446
+ })
447
+ });
497
448
  }
498
449
  case "add.label.obs":
499
450
  {
500
451
  if (settings.labelObs.find(i => _lodash.default.isEqual(i, action.obs))) {
501
452
  return settings;
502
453
  } else {
503
- return {
504
- ...settings,
454
+ return _objectSpread(_objectSpread({}, settings), {}, {
505
455
  labelObs: [...settings.labelObs, action.obs]
506
- };
456
+ });
507
457
  }
508
458
  }
509
459
  case "remove.label.obs":
510
460
  {
511
- return {
512
- ...settings,
461
+ return _objectSpread(_objectSpread({}, settings), {}, {
513
462
  labelObs: settings.labelObs.filter(a => a.name !== action.obsName)
514
- };
463
+ });
515
464
  }
516
465
  case "reset.label.obs":
517
466
  {
518
- return {
519
- ...settings,
467
+ return _objectSpread(_objectSpread({}, settings), {}, {
520
468
  labelObs: []
521
- };
469
+ });
522
470
  }
523
471
  case "set.varSort":
524
472
  {
525
- return {
526
- ...settings,
527
- varSort: {
528
- ...settings.varSort,
473
+ return _objectSpread(_objectSpread({}, settings), {}, {
474
+ varSort: _objectSpread(_objectSpread({}, settings.varSort), {}, {
529
475
  [action.var]: {
530
476
  sort: action.sort,
531
477
  sortOrder: action.sortOrder
532
478
  }
533
- }
534
- };
479
+ })
480
+ });
535
481
  }
536
482
  case "set.varSort.sort":
537
483
  {
538
- return {
539
- ...settings,
540
- varSort: {
541
- ...settings.varSort,
542
- [action.var]: {
543
- ...settings.varSort[action.var],
484
+ return _objectSpread(_objectSpread({}, settings), {}, {
485
+ varSort: _objectSpread(_objectSpread({}, settings.varSort), {}, {
486
+ [action.var]: _objectSpread(_objectSpread({}, settings.varSort[action.var]), {}, {
544
487
  sort: action.sort
545
- }
546
- }
547
- };
488
+ })
489
+ })
490
+ });
548
491
  }
549
492
  case "set.varSort.sortOrder":
550
493
  {
551
- return {
552
- ...settings,
553
- varSort: {
554
- ...settings.varSort,
555
- [action.var]: {
556
- ...settings.varSort[action.var],
494
+ return _objectSpread(_objectSpread({}, settings), {}, {
495
+ varSort: _objectSpread(_objectSpread({}, settings.varSort), {}, {
496
+ [action.var]: _objectSpread(_objectSpread({}, settings.varSort[action.var]), {}, {
557
497
  sortOrder: action.sortOrder
558
- }
559
- }
560
- };
498
+ })
499
+ })
500
+ });
561
501
  }
562
502
  case "set.polygons":
563
503
  {
564
- return {
565
- ...settings,
566
- polygons: {
567
- ...settings.polygons,
504
+ return _objectSpread(_objectSpread({}, settings), {}, {
505
+ polygons: _objectSpread(_objectSpread({}, settings.polygons), {}, {
568
506
  [action.obsm]: action.polygons
569
- }
570
- };
507
+ })
508
+ });
571
509
  }
572
510
  case "set.pseudospatial.maskSet":
573
511
  {
574
- return {
575
- ...settings,
576
- pseudospatial: {
577
- ...settings.pseudospatial,
512
+ return _objectSpread(_objectSpread({}, settings), {}, {
513
+ pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
578
514
  maskSet: action.maskSet
579
- }
580
- };
515
+ })
516
+ });
581
517
  }
582
518
  case "set.pseudospatial.maskValues":
583
519
  {
584
- return {
585
- ...settings,
586
- pseudospatial: {
587
- ...settings.pseudospatial,
520
+ return _objectSpread(_objectSpread({}, settings), {}, {
521
+ pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
588
522
  maskValues: action.maskValues
589
- }
590
- };
523
+ })
524
+ });
591
525
  }
592
526
  case "set.pseudospatial.categoricalMode":
593
527
  {
594
- return {
595
- ...settings,
596
- pseudospatial: {
597
- ...settings.pseudospatial,
528
+ return _objectSpread(_objectSpread({}, settings), {}, {
529
+ pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
598
530
  categoricalMode: action.categoricalMode
599
- }
600
- };
531
+ })
532
+ });
601
533
  }
602
534
  default:
603
535
  {