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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/cjs/components/controls/Controls.js +60 -0
  2. package/dist/cjs/components/dotplot/Dotplot.js +29 -22
  3. package/dist/cjs/components/dotplot/DotplotControls.js +62 -99
  4. package/dist/cjs/components/full-page/FullPage.js +9 -7
  5. package/dist/cjs/components/full-page/FullPagePseudospatial.js +9 -7
  6. package/dist/cjs/components/heatmap/Heatmap.js +22 -13
  7. package/dist/cjs/components/heatmap/HeatmapControls.js +2 -19
  8. package/dist/cjs/components/matrixplot/Matrixplot.js +25 -16
  9. package/dist/cjs/components/matrixplot/MatrixplotControls.js +4 -34
  10. package/dist/cjs/components/obs-list/ObsItem.js +37 -29
  11. package/dist/cjs/components/obs-list/ObsList.js +47 -44
  12. package/dist/cjs/components/obsm-list/ObsmList.js +9 -6
  13. package/dist/cjs/components/offcanvas/index.js +13 -9
  14. package/dist/cjs/components/pseudospatial/Pseudospatial.js +61 -53
  15. package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +17 -11
  16. package/dist/cjs/components/scatterplot/Scatterplot.js +52 -52
  17. package/dist/cjs/components/scatterplot/ScatterplotControls.js +11 -24
  18. package/dist/cjs/components/scatterplot/SpatialControls.js +4 -4
  19. package/dist/cjs/components/search-bar/SearchBar.js +12 -10
  20. package/dist/cjs/components/search-bar/SearchInfo.js +14 -13
  21. package/dist/cjs/components/search-bar/SearchResults.js +16 -14
  22. package/dist/cjs/components/var-list/VarItem.js +10 -7
  23. package/dist/cjs/components/var-list/VarList.js +14 -9
  24. package/dist/cjs/components/var-list/VarListToolbar.js +1 -2
  25. package/dist/cjs/components/var-list/VarSet.js +1 -2
  26. package/dist/cjs/components/violin/Violin.js +48 -39
  27. package/dist/cjs/components/violin/ViolinControls.js +4 -20
  28. package/dist/cjs/context/DatasetContext.js +17 -11
  29. package/dist/cjs/context/FilterContext.js +9 -8
  30. package/dist/cjs/context/SettingsContext.js +172 -240
  31. package/dist/cjs/context/ZarrDataContext.js +1 -2
  32. package/dist/cjs/helpers/color-helper.js +3 -3
  33. package/dist/cjs/helpers/zarr-helper.js +15 -12
  34. package/dist/cjs/utils/Filter.js +13 -9
  35. package/dist/cjs/utils/Histogram.js +4 -3
  36. package/dist/cjs/utils/ImageViewer.js +1 -2
  37. package/dist/cjs/utils/Legend.js +3 -3
  38. package/dist/cjs/utils/LoadingIndicators.js +1 -1
  39. package/dist/cjs/utils/VirtualizedList.js +16 -13
  40. package/dist/cjs/utils/errors.js +20 -22
  41. package/dist/cjs/utils/requests.js +13 -10
  42. package/dist/cjs/utils/zarrData.js +12 -8
  43. package/dist/css/cherita.css +13 -9
  44. package/dist/css/cherita.css.map +1 -1
  45. package/dist/esm/components/controls/Controls.js +51 -0
  46. package/dist/esm/components/dotplot/Dotplot.js +28 -20
  47. package/dist/esm/components/dotplot/DotplotControls.js +62 -97
  48. package/dist/esm/components/full-page/FullPage.js +8 -5
  49. package/dist/esm/components/full-page/FullPagePseudospatial.js +8 -5
  50. package/dist/esm/components/heatmap/Heatmap.js +21 -11
  51. package/dist/esm/components/heatmap/HeatmapControls.js +3 -20
  52. package/dist/esm/components/matrixplot/Matrixplot.js +24 -14
  53. package/dist/esm/components/matrixplot/MatrixplotControls.js +5 -35
  54. package/dist/esm/components/obs-list/ObsItem.js +36 -27
  55. package/dist/esm/components/obs-list/ObsList.js +46 -42
  56. package/dist/esm/components/obsm-list/ObsmList.js +8 -4
  57. package/dist/esm/components/offcanvas/index.js +13 -9
  58. package/dist/esm/components/pseudospatial/Pseudospatial.js +60 -51
  59. package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +16 -9
  60. package/dist/esm/components/scatterplot/Scatterplot.js +51 -50
  61. package/dist/esm/components/scatterplot/ScatterplotControls.js +11 -22
  62. package/dist/esm/components/scatterplot/SpatialControls.js +3 -2
  63. package/dist/esm/components/search-bar/SearchBar.js +11 -8
  64. package/dist/esm/components/search-bar/SearchInfo.js +13 -11
  65. package/dist/esm/components/search-bar/SearchResults.js +15 -12
  66. package/dist/esm/components/var-list/VarItem.js +9 -5
  67. package/dist/esm/components/var-list/VarList.js +13 -7
  68. package/dist/esm/components/violin/Violin.js +47 -37
  69. package/dist/esm/components/violin/ViolinControls.js +5 -21
  70. package/dist/esm/context/DatasetContext.js +16 -9
  71. package/dist/esm/context/FilterContext.js +8 -6
  72. package/dist/esm/context/SettingsContext.js +171 -238
  73. package/dist/esm/helpers/color-helper.js +3 -3
  74. package/dist/esm/helpers/zarr-helper.js +15 -12
  75. package/dist/esm/utils/Filter.js +13 -9
  76. package/dist/esm/utils/Histogram.js +4 -3
  77. package/dist/esm/utils/Legend.js +2 -1
  78. package/dist/esm/utils/LoadingIndicators.js +1 -1
  79. package/dist/esm/utils/VirtualizedList.js +15 -11
  80. package/dist/esm/utils/errors.js +20 -22
  81. package/dist/esm/utils/requests.js +13 -10
  82. package/dist/esm/utils/zarrData.js +12 -8
  83. package/package.json +4 -2
@@ -1,3 +1,8 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
6
  import React, { useEffect, useState } from "react";
2
7
  import { faCircleInfo } from "@fortawesome/free-solid-svg-icons";
3
8
  import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
@@ -11,6 +16,7 @@ import { useSettings } from "../../context/SettingsContext";
11
16
  import { LoadingSpinner } from "../../utils/LoadingIndicators";
12
17
  import { useDebouncedFetch } from "../../utils/requests";
13
18
  export function Violin(_ref) {
19
+ var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3, _settings$selectedVar4, _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
14
20
  let {
15
21
  mode = VIOLIN_MODES.MULTIKEY
16
22
  } = _ref;
@@ -24,30 +30,32 @@ export function Violin(_ref) {
24
30
  const [data, setData] = useState([]);
25
31
  const [layout, setLayout] = useState({});
26
32
  const [hasSelections, setHasSelections] = useState(false);
27
- const [params, setParams] = useState({
33
+ const [params, setParams] = useState(_objectSpread({
28
34
  url: dataset.url,
29
35
  mode: mode,
30
- scale: settings.controls.scale.violinplot.value,
31
- varNamesCol: dataset.varNamesCol,
32
- ...{
33
- [VIOLIN_MODES.MULTIKEY]: {
34
- varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
35
- name: i.name,
36
- indices: i.vars.map(v => v.index)
37
- } : i.index),
38
- obsKeys: [] // @TODO: implement
39
- },
40
- [VIOLIN_MODES.GROUPBY]: {
41
- varKey: settings.selectedVar?.isSet ? {
42
- name: settings.selectedVar?.name,
43
- indices: settings.selectedVar?.vars.map(v => v.index)
44
- } : settings.selectedVar?.index,
45
- obsCol: settings.selectedObs,
46
- obsValues: !settings.selectedObs?.omit.length ? null : _.difference(_.values(settings.selectedObs?.codes), settings.selectedObs?.omit).map(c => settings.selectedObs?.codesMap[c]),
47
- obsIndices: isSliced ? [...(obsIndices || [])] : null
48
- }
49
- }[mode]
50
- });
36
+ scale: settings.controls.scale.violinplot,
37
+ varNamesCol: dataset.varNamesCol
38
+ }, {
39
+ [VIOLIN_MODES.MULTIKEY]: {
40
+ varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
41
+ name: i.name,
42
+ indices: i.vars.map(v => v.index)
43
+ } : i.index),
44
+ obsKeys: [] // @TODO: implement
45
+ },
46
+ [VIOLIN_MODES.GROUPBY]: {
47
+ varKey: (_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet ? {
48
+ name: (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name,
49
+ indices: (_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars.map(v => v.index)
50
+ } : (_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.index,
51
+ obsCol: settings.selectedObs,
52
+ obsValues: !((_settings$selectedObs = settings.selectedObs) !== null && _settings$selectedObs !== void 0 && _settings$selectedObs.omit.length) ? null : _.difference(_.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 => {
53
+ var _settings$selectedObs4;
54
+ return (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.codesMap[c];
55
+ }),
56
+ obsIndices: isSliced ? [...(obsIndices || [])] : null
57
+ }
58
+ }[mode]));
51
59
  // @TODO: set default scale
52
60
 
53
61
  useEffect(() => {
@@ -58,17 +66,16 @@ export function Violin(_ref) {
58
66
  setHasSelections(false);
59
67
  }
60
68
  setParams(p => {
61
- return {
62
- ...p,
69
+ return _objectSpread(_objectSpread({}, p), {}, {
63
70
  url: dataset.url,
64
71
  mode: mode,
65
72
  varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
66
73
  name: i.name,
67
74
  indices: i.vars.map(v => v.index)
68
75
  } : i.index),
69
- scale: settings.controls.scale.violinplot.value,
76
+ scale: settings.controls.scale.violinplot,
70
77
  varNamesCol: dataset.varNamesCol
71
- };
78
+ });
72
79
  });
73
80
  } else if (mode === VIOLIN_MODES.GROUPBY) {
74
81
  if (settings.selectedObs && settings.selectedVar) {
@@ -77,23 +84,26 @@ export function Violin(_ref) {
77
84
  setHasSelections(false);
78
85
  }
79
86
  setParams(p => {
80
- return {
81
- ...p,
87
+ var _settings$selectedVar5, _settings$selectedVar6, _settings$selectedVar7, _settings$selectedVar8, _settings$selectedObs5, _settings$selectedObs6, _settings$selectedObs7;
88
+ return _objectSpread(_objectSpread({}, p), {}, {
82
89
  url: dataset.url,
83
90
  mode: mode,
84
- varKey: settings.selectedVar?.isSet ? {
85
- name: settings.selectedVar?.name,
86
- indices: settings.selectedVar?.vars.map(v => v.index)
87
- } : settings.selectedVar?.index,
91
+ varKey: (_settings$selectedVar5 = settings.selectedVar) !== null && _settings$selectedVar5 !== void 0 && _settings$selectedVar5.isSet ? {
92
+ name: (_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.name,
93
+ indices: (_settings$selectedVar7 = settings.selectedVar) === null || _settings$selectedVar7 === void 0 ? void 0 : _settings$selectedVar7.vars.map(v => v.index)
94
+ } : (_settings$selectedVar8 = settings.selectedVar) === null || _settings$selectedVar8 === void 0 ? void 0 : _settings$selectedVar8.index,
88
95
  obsCol: settings.selectedObs,
89
- obsValues: !settings.selectedObs?.omit.length ? null : _.difference(_.values(settings.selectedObs?.codes), settings.selectedObs?.omit).map(c => settings.selectedObs?.codesMap[c]),
96
+ obsValues: !((_settings$selectedObs5 = settings.selectedObs) !== null && _settings$selectedObs5 !== void 0 && _settings$selectedObs5.omit.length) ? null : _.difference(_.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 => {
97
+ var _settings$selectedObs8;
98
+ return (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.codesMap[c];
99
+ }),
90
100
  obsIndices: isSliced ? [...(obsIndices || [])] : null,
91
- scale: settings.controls.scale.violinplot.value,
101
+ scale: settings.controls.scale.violinplot,
92
102
  varNamesCol: dataset.varNamesCol
93
- };
103
+ });
94
104
  });
95
105
  }
96
- }, [settings.controls.scale.violinplot.value, settings.selectedMultiVar, settings.selectedObs, settings.selectedVar, dataset.url, dataset.varNamesCol, obsIndices, isSliced, mode]);
106
+ }, [settings.controls.scale.violinplot, settings.selectedMultiVar, settings.selectedObs, settings.selectedVar, dataset.url, dataset.varNamesCol, obsIndices, isSliced, mode]);
97
107
  const {
98
108
  fetchedData,
99
109
  isPending,
@@ -119,7 +129,7 @@ export function Violin(_ref) {
119
129
  maxWidth: "100%",
120
130
  maxHeight: "100%"
121
131
  }
122
- }), fetchedData?.resampled && /*#__PURE__*/React.createElement(Alert, {
132
+ }), (fetchedData === null || fetchedData === void 0 ? void 0 : fetchedData.resampled) && /*#__PURE__*/React.createElement(Alert, {
123
133
  variant: "warning"
124
134
  }, /*#__PURE__*/React.createElement("b", null, "Warning:"), " For performance reasons this plot was generated with resampled data. It will not be exactly the same as one produced with the entire dataset. \xA0", /*#__PURE__*/React.createElement(OverlayTrigger, {
125
135
  placement: "top",
@@ -1,24 +1,8 @@
1
1
  import React from "react";
2
- import _ from "lodash";
3
- import { Dropdown, ButtonGroup, ButtonToolbar, InputGroup } from "react-bootstrap";
4
- import { VIOLINPLOT_SCALES } from "../../constants/constants";
5
- import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
2
+ import { Form } from "react-bootstrap";
3
+ import { ScaleSelect } from "../controls/Controls";
6
4
  export function ViolinControls() {
7
- const settings = useSettings();
8
- const dispatch = useSettingsDispatch();
9
- const scaleList = _.values(VIOLINPLOT_SCALES).map(scale => /*#__PURE__*/React.createElement(Dropdown.Item, {
10
- key: scale.value,
11
- active: settings.controls.scale.violinplot === scale,
12
- onClick: () => {
13
- dispatch({
14
- type: "set.controls.scale",
15
- plot: "violinplot",
16
- scale: scale
17
- });
18
- }
19
- }, scale.name));
20
- return /*#__PURE__*/React.createElement(ButtonToolbar, null, /*#__PURE__*/React.createElement(ButtonGroup, null, /*#__PURE__*/React.createElement(InputGroup, null, /*#__PURE__*/React.createElement(InputGroup.Text, null, "Scale"), /*#__PURE__*/React.createElement(Dropdown, null, /*#__PURE__*/React.createElement(Dropdown.Toggle, {
21
- id: "dropdownStandardScale",
22
- variant: "light"
23
- }, settings.controls.scale.violinplot.name), /*#__PURE__*/React.createElement(Dropdown.Menu, null, scaleList)))));
5
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Form, null, /*#__PURE__*/React.createElement(ScaleSelect, {
6
+ plot: "violinplot"
7
+ })));
24
8
  }
@@ -1,3 +1,11 @@
1
+ const _excluded = ["dataset_url", "children"];
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ 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; }
8
+ 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; }
1
9
  import React, { createContext, useContext } from "react";
2
10
  import { createSyncStoragePersister } from "@tanstack/query-sync-storage-persister";
3
11
  import { QueryClient, QueryCache } from "@tanstack/react-query";
@@ -37,7 +45,7 @@ const persistOptions = {
37
45
  state
38
46
  } = _ref;
39
47
  if (state.status === "success") {
40
- return persistKeys.includes(queryKey?.[0]);
48
+ return persistKeys.includes(queryKey === null || queryKey === void 0 ? void 0 : queryKey[0]);
41
49
  }
42
50
  return false;
43
51
  }
@@ -55,14 +63,13 @@ const initialDataset = {
55
63
  };
56
64
  export function DatasetProvider(_ref2) {
57
65
  let {
58
- dataset_url,
59
- children,
60
- ...dataset_params
61
- } = _ref2;
62
- const dataset = _.assign(initialDataset, {
63
- url: dataset_url,
64
- ...dataset_params
65
- });
66
+ dataset_url,
67
+ children
68
+ } = _ref2,
69
+ dataset_params = _objectWithoutProperties(_ref2, _excluded);
70
+ const dataset = _.assign(initialDataset, _objectSpread({
71
+ url: dataset_url
72
+ }, dataset_params));
66
73
  return /*#__PURE__*/React.createElement(DatasetContext.Provider, {
67
74
  value: dataset
68
75
  }, /*#__PURE__*/React.createElement(SettingsProvider, {
@@ -1,3 +1,8 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
6
  import React, { useReducer, createContext, useContext } from "react";
2
7
  export const FilteredDataContext = /*#__PURE__*/createContext(null);
3
8
  export const FilteredDataDispatchContext = /*#__PURE__*/createContext(null);
@@ -12,9 +17,7 @@ export function FilterProvider(_ref) {
12
17
  let {
13
18
  children
14
19
  } = _ref;
15
- const [filteredData, dispatch] = useReducer(filterReducer, {
16
- ...initialFilterData
17
- });
20
+ const [filteredData, dispatch] = useReducer(filterReducer, _objectSpread({}, initialFilterData));
18
21
  return /*#__PURE__*/React.createElement(FilteredDataContext.Provider, {
19
22
  value: filteredData
20
23
  }, /*#__PURE__*/React.createElement(FilteredDataDispatchContext.Provider, {
@@ -31,14 +34,13 @@ function filterReducer(filteredData, action) {
31
34
  switch (action.type) {
32
35
  case "set.obs.indices":
33
36
  {
34
- return {
35
- ...filteredData,
37
+ return _objectSpread(_objectSpread({}, filteredData), {}, {
36
38
  obsIndices: action.indices,
37
39
  valueMin: action.valueMin,
38
40
  valueMax: action.valueMax,
39
41
  slicedLength: action.slicedLength,
40
42
  isSliced: action.isSliced
41
- };
43
+ });
42
44
  }
43
45
  default:
44
46
  {