@haniffalab/cherita-react 1.2.0 → 1.3.0-dev.2025-05-29.ee7e9b72

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 (91) hide show
  1. package/dist/cjs/components/controls/Controls.js +60 -0
  2. package/dist/cjs/components/dotplot/Dotplot.js +47 -38
  3. package/dist/cjs/components/dotplot/DotplotControls.js +77 -114
  4. package/dist/cjs/components/full-page/FullPage.js +29 -33
  5. package/dist/cjs/components/full-page/FullPagePseudospatial.js +30 -33
  6. package/dist/cjs/components/heatmap/Heatmap.js +33 -22
  7. package/dist/cjs/components/heatmap/HeatmapControls.js +2 -19
  8. package/dist/cjs/components/matrixplot/Matrixplot.js +35 -24
  9. package/dist/cjs/components/matrixplot/MatrixplotControls.js +4 -34
  10. package/dist/cjs/components/obs-list/ObsItem.js +63 -51
  11. package/dist/cjs/components/obs-list/ObsList.js +53 -48
  12. package/dist/cjs/components/obsm-list/ObsmList.js +17 -12
  13. package/dist/cjs/components/offcanvas/index.js +14 -11
  14. package/dist/cjs/components/pseudospatial/Pseudospatial.js +78 -68
  15. package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +27 -21
  16. package/dist/cjs/components/scatterplot/Scatterplot.js +82 -76
  17. package/dist/cjs/components/scatterplot/ScatterplotControls.js +18 -31
  18. package/dist/cjs/components/scatterplot/SpatialControls.js +53 -23
  19. package/dist/cjs/components/scatterplot/Toolbox.js +1 -18
  20. package/dist/cjs/components/search-bar/SearchBar.js +156 -59
  21. package/dist/cjs/components/search-bar/SearchInfo.js +182 -0
  22. package/dist/cjs/components/search-bar/SearchResults.js +90 -60
  23. package/dist/cjs/components/var-list/VarItem.js +52 -75
  24. package/dist/cjs/components/var-list/VarList.js +47 -172
  25. package/dist/cjs/components/var-list/VarListToolbar.js +7 -8
  26. package/dist/cjs/components/var-list/VarSet.js +66 -57
  27. package/dist/cjs/components/violin/Violin.js +54 -43
  28. package/dist/cjs/components/violin/ViolinControls.js +4 -20
  29. package/dist/cjs/context/DatasetContext.js +26 -513
  30. package/dist/cjs/context/FilterContext.js +9 -8
  31. package/dist/cjs/context/SettingsContext.js +539 -0
  32. package/dist/cjs/context/ZarrDataContext.js +1 -2
  33. package/dist/cjs/helpers/color-helper.js +8 -8
  34. package/dist/cjs/helpers/zarr-helper.js +19 -16
  35. package/dist/cjs/utils/Filter.js +25 -21
  36. package/dist/cjs/utils/Histogram.js +4 -3
  37. package/dist/cjs/utils/ImageViewer.js +1 -2
  38. package/dist/cjs/utils/Legend.js +18 -12
  39. package/dist/cjs/utils/LoadingIndicators.js +1 -1
  40. package/dist/cjs/utils/VirtualizedList.js +16 -13
  41. package/dist/cjs/utils/errors.js +20 -22
  42. package/dist/cjs/utils/requests.js +13 -10
  43. package/dist/cjs/utils/zarrData.js +31 -50
  44. package/dist/css/cherita.css +84 -24
  45. package/dist/css/cherita.css.map +1 -1
  46. package/dist/esm/components/controls/Controls.js +51 -0
  47. package/dist/esm/components/dotplot/Dotplot.js +47 -37
  48. package/dist/esm/components/dotplot/DotplotControls.js +77 -112
  49. package/dist/esm/components/full-page/FullPage.js +29 -32
  50. package/dist/esm/components/full-page/FullPagePseudospatial.js +30 -32
  51. package/dist/esm/components/heatmap/Heatmap.js +32 -20
  52. package/dist/esm/components/heatmap/HeatmapControls.js +3 -20
  53. package/dist/esm/components/matrixplot/Matrixplot.js +34 -22
  54. package/dist/esm/components/matrixplot/MatrixplotControls.js +5 -35
  55. package/dist/esm/components/obs-list/ObsItem.js +63 -49
  56. package/dist/esm/components/obs-list/ObsList.js +53 -47
  57. package/dist/esm/components/obsm-list/ObsmList.js +17 -11
  58. package/dist/esm/components/offcanvas/index.js +14 -11
  59. package/dist/esm/components/pseudospatial/Pseudospatial.js +77 -66
  60. package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +27 -20
  61. package/dist/esm/components/scatterplot/Scatterplot.js +81 -74
  62. package/dist/esm/components/scatterplot/ScatterplotControls.js +18 -29
  63. package/dist/esm/components/scatterplot/SpatialControls.js +54 -23
  64. package/dist/esm/components/scatterplot/Toolbox.js +1 -18
  65. package/dist/esm/components/search-bar/SearchBar.js +156 -59
  66. package/dist/esm/components/search-bar/SearchInfo.js +173 -0
  67. package/dist/esm/components/search-bar/SearchResults.js +91 -60
  68. package/dist/esm/components/var-list/VarItem.js +53 -76
  69. package/dist/esm/components/var-list/VarList.js +47 -171
  70. package/dist/esm/components/var-list/VarListToolbar.js +6 -6
  71. package/dist/esm/components/var-list/VarSet.js +67 -57
  72. package/dist/esm/components/violin/Violin.js +53 -41
  73. package/dist/esm/components/violin/ViolinControls.js +5 -21
  74. package/dist/esm/context/DatasetContext.js +25 -510
  75. package/dist/esm/context/FilterContext.js +8 -6
  76. package/dist/esm/context/SettingsContext.js +528 -0
  77. package/dist/esm/helpers/color-helper.js +8 -8
  78. package/dist/esm/helpers/zarr-helper.js +19 -16
  79. package/dist/esm/utils/Filter.js +25 -21
  80. package/dist/esm/utils/Histogram.js +4 -3
  81. package/dist/esm/utils/Legend.js +17 -10
  82. package/dist/esm/utils/LoadingIndicators.js +1 -1
  83. package/dist/esm/utils/VirtualizedList.js +15 -11
  84. package/dist/esm/utils/errors.js +20 -22
  85. package/dist/esm/utils/requests.js +13 -10
  86. package/dist/esm/utils/zarrData.js +33 -51
  87. package/package.json +6 -3
  88. package/scss/cherita.scss +50 -9
  89. package/scss/components/layouts.scss +24 -13
  90. package/scss/components/lists.scss +10 -0
  91. package/scss/components/plots.scss +3 -5
@@ -3,23 +3,28 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.DatasetDispatchContext = exports.DatasetContext = void 0;
6
+ exports.DatasetContext = void 0;
7
7
  exports.DatasetProvider = DatasetProvider;
8
8
  exports.useDataset = useDataset;
9
- exports.useDatasetDispatch = useDatasetDispatch;
10
9
  var _react = _interopRequireWildcard(require("react"));
11
10
  var _querySyncStoragePersister = require("@tanstack/query-sync-storage-persister");
12
11
  var _reactQuery = require("@tanstack/react-query");
13
12
  var _reactQueryPersistClient = require("@tanstack/react-query-persist-client");
14
13
  var _lodash = _interopRequireDefault(require("lodash"));
15
14
  var _FilterContext = require("./FilterContext");
15
+ var _SettingsContext = require("./SettingsContext");
16
16
  var _ZarrDataContext = require("./ZarrDataContext");
17
- var _constants = require("../constants/constants");
17
+ const _excluded = ["dataset_url", "children"];
18
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
- 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; }
19
+ 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); }
20
+ 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; }
21
+ 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; }
22
+ 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; }
23
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
24
+ 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); }
25
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
26
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
21
27
  const DatasetContext = exports.DatasetContext = /*#__PURE__*/(0, _react.createContext)(null);
22
- const DatasetDispatchContext = exports.DatasetDispatchContext = /*#__PURE__*/(0, _react.createContext)(null);
23
28
  const queryClient = new _reactQuery.QueryClient({
24
29
  defaultOptions: {
25
30
  queries: {
@@ -50,7 +55,7 @@ const persistOptions = {
50
55
  state
51
56
  } = _ref;
52
57
  if (state.status === "success") {
53
- return persistKeys.includes(queryKey?.[0]);
58
+ return persistKeys.includes(queryKey === null || queryKey === void 0 ? void 0 : queryKey[0]);
54
59
  }
55
60
  return false;
56
61
  }
@@ -58,93 +63,29 @@ const persistOptions = {
58
63
  // @TODO: add maxAge and buster (app and api version numbers as busters)
59
64
  };
60
65
  const initialDataset = {
66
+ url: null,
61
67
  varNamesCol: null,
62
- selectedObs: null,
63
- selectedObsm: null,
64
- selectedVar: null,
65
- selectedMultiObs: [],
66
- selectedMultiVar: [],
67
- colorEncoding: null,
68
- labelObs: [],
69
- varSets: [],
70
- sliceBy: {
71
- obs: false,
72
- polygons: false
73
- },
74
- controls: {
75
- colorScale: "Viridis",
76
- valueRange: [0, 1],
77
- range: [0, 1],
78
- colorAxis: {
79
- dmin: 0,
80
- dmax: 1,
81
- cmin: 0,
82
- cmax: 1
83
- },
84
- scale: {
85
- dotplot: _constants.DOTPLOT_SCALES.NONE,
86
- matrixplot: _constants.MATRIXPLOT_SCALES.NONE,
87
- violinplot: _constants.VIOLINPLOT_SCALES.WIDTH
88
- },
89
- meanOnlyExpressed: false,
90
- expressionCutoff: 0.0
91
- },
92
68
  diseaseDatasets: [],
93
- selectedDisease: null,
94
- varSort: {
95
- var: {
96
- sort: _constants.VAR_SORT.NONE,
97
- sortOrder: _constants.VAR_SORT_ORDER.ASC
98
- },
99
- disease: {
100
- sort: _constants.VAR_SORT.NONE,
101
- sortOrder: _constants.VAR_SORT_ORDER.ASC
102
- }
103
- },
104
69
  obsGroups: null,
105
70
  imageUrl: null,
106
- pseudospatial: {
107
- maskSet: null,
108
- maskValues: null,
109
- categoricalMode: _constants.PSEUDOSPATIAL_CATEGORICAL_MODES.ACROSS.value
110
- },
111
- polygons: {}
112
- };
113
- const initializer = initialState => {
114
- const localObj = (JSON.parse(localStorage.getItem(_constants.LOCAL_STORAGE_KEY)) || {})[initialState.url] || {};
115
- const keys = _lodash.default.keys(initialState);
116
- const localValues = _lodash.default.pick(localObj, keys);
117
- return _lodash.default.assign(initialState, localValues);
71
+ defaultSettings: {},
72
+ canOverrideSettings: true
118
73
  };
119
74
  function DatasetProvider(_ref2) {
120
75
  let {
121
- dataset_url,
122
- children,
123
- ...dataset_params
124
- } = _ref2;
125
- const [dataset, dispatch] = (0, _react.useReducer)(datasetReducer, _lodash.default.assign(initializer({
126
- url: dataset_url,
127
- ...initialDataset
128
- }), dataset_params));
129
- (0, _react.useEffect)(() => {
130
- try {
131
- const localObj = JSON.parse(localStorage.getItem(_constants.LOCAL_STORAGE_KEY)) || {};
132
- localStorage.setItem(_constants.LOCAL_STORAGE_KEY, JSON.stringify({
133
- ...localObj,
134
- [dataset.url]: dataset
135
- }));
136
- } catch (err) {
137
- if (err.code === 22 || err.code === 1014 || err.name === "QuotaExceededError" || err.name === "NS_ERROR_DOM_QUOTA_REACHED") {
138
- console.err("Browser storage quota exceeded");
139
- } else {
140
- console.err(err);
141
- }
142
- }
143
- }, [dataset]);
76
+ dataset_url,
77
+ children
78
+ } = _ref2,
79
+ dataset_params = _objectWithoutProperties(_ref2, _excluded);
80
+ const dataset = _lodash.default.assign(initialDataset, _objectSpread({
81
+ url: dataset_url
82
+ }, dataset_params));
144
83
  return /*#__PURE__*/_react.default.createElement(DatasetContext.Provider, {
145
84
  value: dataset
146
- }, /*#__PURE__*/_react.default.createElement(DatasetDispatchContext.Provider, {
147
- value: dispatch
85
+ }, /*#__PURE__*/_react.default.createElement(_SettingsContext.SettingsProvider, {
86
+ dataset_url: dataset.url,
87
+ defaultSettings: dataset.defaultSettings,
88
+ canOverrideSettings: dataset.canOverrideSettings
148
89
  }, /*#__PURE__*/_react.default.createElement(_reactQueryPersistClient.PersistQueryClientProvider, {
149
90
  client: queryClient,
150
91
  persistOptions: persistOptions
@@ -152,432 +93,4 @@ function DatasetProvider(_ref2) {
152
93
  }
153
94
  function useDataset() {
154
95
  return (0, _react.useContext)(DatasetContext);
155
- }
156
- function useDatasetDispatch() {
157
- return (0, _react.useContext)(DatasetDispatchContext);
158
- }
159
- function datasetReducer(dataset, action) {
160
- switch (action.type) {
161
- case "select.obs":
162
- {
163
- return {
164
- ...dataset,
165
- selectedObs: action.obs,
166
- controls: {
167
- ...dataset.controls,
168
- range: action.obs?.type === _constants.OBS_TYPES.CATEGORICAL ? [0, 1] : dataset.controls.range
169
- },
170
- colorEncoding: dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS && !action.obs ? null : dataset.colorEncoding,
171
- sliceBy: {
172
- ...dataset.sliceBy,
173
- obs: action.obs ? dataset.sliceBy.obs : false
174
- }
175
- };
176
- }
177
- case "select.obsm":
178
- {
179
- return {
180
- ...dataset,
181
- selectedObsm: action.obsm
182
- };
183
- }
184
- case "select.var":
185
- {
186
- return {
187
- ...dataset,
188
- selectedVar: action.var
189
- };
190
- }
191
- case "select.multivar":
192
- {
193
- if (dataset.selectedMultiVar.find(i => action.var.isSet ? i.name === action.var.name : i.matrix_index === action.var.matrix_index)) {
194
- return dataset;
195
- } else {
196
- return {
197
- ...dataset,
198
- selectedMultiVar: [...dataset.selectedMultiVar, action.var]
199
- };
200
- }
201
- }
202
- case "deselect.multivar":
203
- {
204
- return {
205
- ...dataset,
206
- selectedMultiVar: dataset.selectedMultiVar.filter(a => action.var.isSet ? a.name !== action.var.name : a.matrix_index !== action.var.matrix_index)
207
- };
208
- }
209
- case "update.multivar":
210
- {
211
- return {
212
- ...dataset,
213
- selelectedMultiVar: dataset.selectedMultiVar.map(i => {
214
- if (i.isSet) {
215
- return action.vars.find(s => s.name === i.name);
216
- }
217
- return i;
218
- })
219
- };
220
- }
221
- case "set.colorEncoding":
222
- {
223
- return {
224
- ...dataset,
225
- colorEncoding: action.value
226
- };
227
- }
228
- case "reset.multiVar":
229
- {
230
- return {
231
- ...dataset,
232
- selectedMultiVar: [],
233
- colorEncoding: dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? null : dataset.colorEncoding
234
- };
235
- }
236
- case "reset.var":
237
- {
238
- return {
239
- ...dataset,
240
- selectedVar: null,
241
- colorEncoding: dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? null : dataset.colorEncoding
242
- };
243
- }
244
- case "add.varSet":
245
- {
246
- return {
247
- ...dataset,
248
- varSets: [...dataset.varSets, action.varSet]
249
- };
250
- }
251
- case "remove.varSet":
252
- {
253
- return {
254
- ...dataset,
255
- varSets: dataset.varSets.filter(a => a.name !== action.varSet.name)
256
- };
257
- }
258
- case "reset.varSets":
259
- {
260
- return {
261
- ...dataset,
262
- varSets: []
263
- };
264
- }
265
- case "add.varSet.var":
266
- {
267
- const varSet = dataset.varSets.find(s => s.name === action.varSet.name);
268
- if (varSet.vars.find(v => _lodash.default.isEqual(v, action.var))) {
269
- return dataset;
270
- } else {
271
- return {
272
- ...dataset,
273
- varSets: dataset.varSets.map(s => {
274
- if (s.name === varSet.name) {
275
- return {
276
- ...s,
277
- vars: [...s.vars, action.var]
278
- };
279
- } else {
280
- return s;
281
- }
282
- })
283
- };
284
- }
285
- }
286
- case "remove.varSet.var":
287
- {
288
- const varSet = dataset.varSets.find(s => s.name === action.varSet.name);
289
- return {
290
- ...dataset,
291
- varSets: dataset.varSets.map(s => {
292
- if (s.name === varSet.name) {
293
- return {
294
- ...s,
295
- vars: s.vars.filter(v => v.name !== action.var.name)
296
- };
297
- } else {
298
- return s;
299
- }
300
- })
301
- };
302
- }
303
- case "select.disease":
304
- {
305
- return {
306
- ...dataset,
307
- selectedDisease: {
308
- id: action.id,
309
- name: action.name
310
- }
311
- };
312
- }
313
- case "reset.disease":
314
- {
315
- return {
316
- ...dataset,
317
- selectedDisease: null
318
- };
319
- }
320
- case "set.controls.colorScale":
321
- {
322
- return {
323
- ...dataset,
324
- controls: {
325
- ...dataset.controls,
326
- colorScale: action.colorScale
327
- }
328
- };
329
- }
330
- case "set.controls.valueRange":
331
- {
332
- return {
333
- ...dataset,
334
- controls: {
335
- ...dataset.controls,
336
- valueRange: action.valueRange
337
- }
338
- };
339
- }
340
- case "set.controls.range":
341
- {
342
- return {
343
- ...dataset,
344
- controls: {
345
- ...dataset.controls,
346
- range: action.range
347
- }
348
- };
349
- }
350
- case "set.controls.colorAxis":
351
- {
352
- return {
353
- ...dataset,
354
- controls: {
355
- ...dataset.controls,
356
- colorAxis: action.colorAxis
357
- }
358
- };
359
- }
360
- case "set.controls.colorAxis.crange":
361
- {
362
- return {
363
- ...dataset,
364
- controls: {
365
- ...dataset.controls,
366
- colorAxis: {
367
- ...dataset.controls.colorAxis,
368
- cmin: action.cmin,
369
- cmax: action.cmax
370
- }
371
- }
372
- };
373
- }
374
- case "set.controls.colorAxis.cmin":
375
- {
376
- return {
377
- ...dataset,
378
- controls: {
379
- ...dataset.controls,
380
- colorAxis: {
381
- ...dataset.controls.colorAxis,
382
- cmin: action.cmin
383
- }
384
- }
385
- };
386
- }
387
- case "set.controls.colorAxis.cmax":
388
- {
389
- return {
390
- ...dataset,
391
- controls: {
392
- ...dataset.controls,
393
- colorAxis: {
394
- ...dataset.controls.colorAxis,
395
- cmax: action.cmax
396
- }
397
- }
398
- };
399
- }
400
- case "set.controls.scale":
401
- {
402
- return {
403
- ...dataset,
404
- controls: {
405
- ...dataset.controls,
406
- scale: {
407
- ...dataset.controls.scale,
408
- [action.plot]: action.scale
409
- }
410
- }
411
- };
412
- }
413
- case "set.controls.meanOnlyExpressed":
414
- {
415
- return {
416
- ...dataset,
417
- controls: {
418
- ...dataset.controls,
419
- meanOnlyExpressed: action.meanOnlyExpressed
420
- }
421
- };
422
- }
423
- case "set.controls.expressionCutoff":
424
- {
425
- return {
426
- ...dataset,
427
- controls: {
428
- ...dataset.controls,
429
- expressionCutoff: action.expressionCutoff
430
- }
431
- };
432
- }
433
- case "toggle.slice.obs":
434
- {
435
- if (_lodash.default.isEqual(dataset.selectedObs, action.obs)) {
436
- return {
437
- ...dataset,
438
- sliceBy: {
439
- ...dataset.sliceBy,
440
- obs: !dataset.sliceBy.obs
441
- }
442
- };
443
- } else {
444
- return {
445
- ...dataset,
446
- selectedObs: action.obs,
447
- sliceBy: {
448
- ...dataset.sliceBy,
449
- obs: true
450
- }
451
- };
452
- }
453
- }
454
- case "toggle.slice.polygons":
455
- {
456
- return {
457
- ...dataset,
458
- sliceBy: {
459
- ...dataset.sliceBy,
460
- polygons: !dataset.sliceBy.polygons
461
- }
462
- };
463
- }
464
- case "disable.slice.polygons":
465
- {
466
- return {
467
- ...dataset,
468
- sliceBy: {
469
- ...dataset.sliceBy,
470
- polygons: false
471
- }
472
- };
473
- }
474
- case "add.label.obs":
475
- {
476
- if (dataset.labelObs.find(i => _lodash.default.isEqual(i, action.obs))) {
477
- return dataset;
478
- } else {
479
- return {
480
- ...dataset,
481
- labelObs: [...dataset.labelObs, action.obs]
482
- };
483
- }
484
- }
485
- case "remove.label.obs":
486
- {
487
- return {
488
- ...dataset,
489
- labelObs: dataset.labelObs.filter(a => a.name !== action.obsName)
490
- };
491
- }
492
- case "reset.label.obs":
493
- {
494
- return {
495
- ...dataset,
496
- labelObs: []
497
- };
498
- }
499
- case "set.varSort":
500
- {
501
- return {
502
- ...dataset,
503
- varSort: {
504
- ...dataset.varSort,
505
- [action.var]: {
506
- sort: action.sort,
507
- sortOrder: action.sortOrder
508
- }
509
- }
510
- };
511
- }
512
- case "set.varSort.sort":
513
- {
514
- return {
515
- ...dataset,
516
- varSort: {
517
- ...dataset.varSort,
518
- [action.var]: {
519
- ...dataset.varSort[action.var],
520
- sort: action.sort
521
- }
522
- }
523
- };
524
- }
525
- case "set.varSort.sortOrder":
526
- {
527
- return {
528
- ...dataset,
529
- varSort: {
530
- ...dataset.varSort,
531
- [action.var]: {
532
- ...dataset.varSort[action.var],
533
- sortOrder: action.sortOrder
534
- }
535
- }
536
- };
537
- }
538
- case "set.polygons":
539
- {
540
- return {
541
- ...dataset,
542
- polygons: {
543
- ...dataset.polygons,
544
- [action.obsm]: action.polygons
545
- }
546
- };
547
- }
548
- case "set.pseudospatial.maskSet":
549
- {
550
- return {
551
- ...dataset,
552
- pseudospatial: {
553
- ...dataset.pseudospatial,
554
- maskSet: action.maskSet
555
- }
556
- };
557
- }
558
- case "set.pseudospatial.maskValues":
559
- {
560
- return {
561
- ...dataset,
562
- pseudospatial: {
563
- ...dataset.pseudospatial,
564
- maskValues: action.maskValues
565
- }
566
- };
567
- }
568
- case "set.pseudospatial.categoricalMode":
569
- {
570
- return {
571
- ...dataset,
572
- pseudospatial: {
573
- ...dataset.pseudospatial,
574
- categoricalMode: action.categoricalMode
575
- }
576
- };
577
- }
578
- default:
579
- {
580
- throw Error("Unknown action: " + action.type);
581
- }
582
- }
583
96
  }
@@ -8,8 +8,12 @@ exports.FilteredDataDispatchContext = exports.FilteredDataContext = void 0;
8
8
  exports.useFilteredData = useFilteredData;
9
9
  exports.useFilteredDataDispatch = useFilteredDataDispatch;
10
10
  var _react = _interopRequireWildcard(require("react"));
11
- 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); }
12
- 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; }
11
+ 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); }
12
+ 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; }
13
+ 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; }
14
+ 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; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
16
+ 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); }
13
17
  const FilteredDataContext = exports.FilteredDataContext = /*#__PURE__*/(0, _react.createContext)(null);
14
18
  const FilteredDataDispatchContext = exports.FilteredDataDispatchContext = /*#__PURE__*/(0, _react.createContext)(null);
15
19
  const initialFilterData = {
@@ -23,9 +27,7 @@ function FilterProvider(_ref) {
23
27
  let {
24
28
  children
25
29
  } = _ref;
26
- const [filteredData, dispatch] = (0, _react.useReducer)(filterReducer, {
27
- ...initialFilterData
28
- });
30
+ const [filteredData, dispatch] = (0, _react.useReducer)(filterReducer, _objectSpread({}, initialFilterData));
29
31
  return /*#__PURE__*/_react.default.createElement(FilteredDataContext.Provider, {
30
32
  value: filteredData
31
33
  }, /*#__PURE__*/_react.default.createElement(FilteredDataDispatchContext.Provider, {
@@ -42,14 +44,13 @@ function filterReducer(filteredData, action) {
42
44
  switch (action.type) {
43
45
  case "set.obs.indices":
44
46
  {
45
- return {
46
- ...filteredData,
47
+ return _objectSpread(_objectSpread({}, filteredData), {}, {
47
48
  obsIndices: action.indices,
48
49
  valueMin: action.valueMin,
49
50
  valueMax: action.valueMax,
50
51
  slicedLength: action.slicedLength,
51
52
  isSliced: action.isSliced
52
- };
53
+ });
53
54
  }
54
55
  default:
55
56
  {