@haniffalab/cherita-react 1.2.0 → 1.3.0-dev.2025-05-28.9afc380f

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
@@ -14,6 +14,7 @@ var _ObsToolbar = require("./ObsToolbar");
14
14
  var _constants = require("../../constants/constants");
15
15
  var _DatasetContext = require("../../context/DatasetContext");
16
16
  var _FilterContext = require("../../context/FilterContext");
17
+ var _SettingsContext = require("../../context/SettingsContext");
17
18
  var _colorHelper = require("../../helpers/color-helper");
18
19
  var _Histogram = require("../../utils/Histogram");
19
20
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
@@ -22,32 +23,40 @@ var _string = require("../../utils/string");
22
23
  var _VirtualizedList = require("../../utils/VirtualizedList");
23
24
  var _zarrData = require("../../utils/zarrData");
24
25
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
25
- 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); }
26
- 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; }
27
- const N_BINS = 5;
28
- function binContinuous(data, nBins) {
29
- const binSize = (data.max - data.min) * (1 / nBins);
30
- const thresholds = _lodash.default.range(nBins + 1).map(b => {
31
- return data.min + binSize * b;
32
- });
33
- const binEdges = _lodash.default.range(thresholds.length - 1).map(i => [thresholds[i], thresholds[i + 1]]);
34
- const bins = {
35
- nBins: nBins,
36
- binSize: binSize,
37
- thresholds: thresholds,
38
- binEdges: binEdges
39
- };
40
- return {
41
- ...data,
42
- bins: bins
43
- };
44
- }
26
+ 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); }
27
+ 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; }
28
+ 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; }
29
+ 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; }
30
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
31
+ 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); }
32
+ // const N_BINS = 5;
33
+
34
+ // function binContinuous(data, nBins) {
35
+ // const binSize = (data.max - data.min) * (1 / nBins);
36
+ // const thresholds = _.range(nBins + 1).map((b) => {
37
+ // return data.min + binSize * b;
38
+ // });
39
+ // const binEdges = _.range(thresholds.length - 1).map((i) => [
40
+ // thresholds[i],
41
+ // thresholds[i + 1],
42
+ // ]);
43
+ // const bins = {
44
+ // nBins: nBins,
45
+ // binSize: binSize,
46
+ // thresholds: thresholds,
47
+ // binEdges: binEdges,
48
+ // };
49
+ // return { ...data, bins: bins };
50
+ // }
51
+
45
52
  function getContinuousLabel(code, binEdges) {
46
- return `[ ${(0, _string.formatNumerical)(binEdges[code][0])}, ${(0, _string.formatNumerical)(binEdges[code][1], _string.FORMATS.EXPONENTIAL)}${code === binEdges.length - 1 ? " ]" : " )"}`;
53
+ return "[ ".concat((0, _string.formatNumerical)(binEdges[code][0]), ", ").concat((0, _string.formatNumerical)(binEdges[code][1], _string.FORMATS.EXPONENTIAL)).concat(code === binEdges.length - 1 ? " ]" : " )");
47
54
  }
48
55
  const useObsHistogram = obs => {
56
+ var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3, _settings$selectedVar4, _settings$selectedVar9, _settings$selectedVar0, _settings$selectedVar1, _settings$selectedVar10;
49
57
  const ENDPOINT = "obs/histograms";
50
58
  const dataset = (0, _DatasetContext.useDataset)();
59
+ const settings = (0, _SettingsContext.useSettings)();
51
60
  const {
52
61
  obsIndices,
53
62
  isSliced
@@ -56,27 +65,27 @@ const useObsHistogram = obs => {
56
65
  url: dataset.url,
57
66
  obsCol: _lodash.default.omit(obs, "omit"),
58
67
  // avoid re-rendering when toggling unselected obs
59
- varKey: dataset.selectedVar?.isSet ? {
60
- name: dataset.selectedVar?.name,
61
- indices: dataset.selectedVar?.vars.map(v => v.index)
62
- } : dataset.selectedVar?.index,
68
+ varKey: (_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet ? {
69
+ name: (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name,
70
+ indices: (_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars.map(v => v.index)
71
+ } : (_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.index,
63
72
  obsIndices: isSliced ? [...(obsIndices || [])] : null
64
73
  });
65
74
  (0, _react.useEffect)(() => {
66
75
  setParams(p => {
67
- return {
68
- ...p,
76
+ var _settings$selectedVar5, _settings$selectedVar6, _settings$selectedVar7, _settings$selectedVar8;
77
+ return _objectSpread(_objectSpread({}, p), {}, {
69
78
  obsCol: _lodash.default.omit(obs, "omit"),
70
- varKey: dataset.selectedVar?.isSet ? {
71
- name: dataset.selectedVar?.name,
72
- indices: dataset.selectedVar?.vars.map(v => v.index)
73
- } : dataset.selectedVar?.index,
79
+ varKey: (_settings$selectedVar5 = settings.selectedVar) !== null && _settings$selectedVar5 !== void 0 && _settings$selectedVar5.isSet ? {
80
+ name: (_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.name,
81
+ indices: (_settings$selectedVar7 = settings.selectedVar) === null || _settings$selectedVar7 === void 0 ? void 0 : _settings$selectedVar7.vars.map(v => v.index)
82
+ } : (_settings$selectedVar8 = settings.selectedVar) === null || _settings$selectedVar8 === void 0 ? void 0 : _settings$selectedVar8.index,
74
83
  obsIndices: isSliced ? [...(obsIndices || [])] : null
75
- };
84
+ });
76
85
  });
77
- }, [dataset.selectedVar?.index, dataset.selectedVar?.isSet, dataset.selectedVar?.name, dataset.selectedVar?.vars, obsIndices, isSliced, obs]);
86
+ }, [(_settings$selectedVar9 = settings.selectedVar) === null || _settings$selectedVar9 === void 0 ? void 0 : _settings$selectedVar9.index, (_settings$selectedVar0 = settings.selectedVar) === null || _settings$selectedVar0 === void 0 ? void 0 : _settings$selectedVar0.isSet, (_settings$selectedVar1 = settings.selectedVar) === null || _settings$selectedVar1 === void 0 ? void 0 : _settings$selectedVar1.name, (_settings$selectedVar10 = settings.selectedVar) === null || _settings$selectedVar10 === void 0 ? void 0 : _settings$selectedVar10.vars, obsIndices, isSliced, obs]);
78
87
  return (0, _requests.useFetch)(ENDPOINT, params, {
79
- enabled: !!dataset.selectedVar && dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR,
88
+ enabled: !!settings.selectedVar && settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR,
80
89
  refetchOnMount: false
81
90
  });
82
91
  };
@@ -88,6 +97,7 @@ const getBinIndex = (v, binEdges) => {
88
97
  return _lodash.default.findIndex(modifiedBinEdges, range => _lodash.default.inRange(v, ...range));
89
98
  };
90
99
  const useFilteredObsData = obs => {
100
+ var _obs$bins2;
91
101
  const {
92
102
  obsIndices
93
103
  } = (0, _FilterContext.useFilteredData)();
@@ -103,19 +113,20 @@ const useFilteredObsData = obs => {
103
113
  valueCounts = _lodash.default.countBy(filteredObsValues);
104
114
  } else {
105
115
  valueCounts = _lodash.default.countBy(filteredObsValues, v => {
106
- return getBinIndex(v, obs.bins?.binEdges || [[null, null]]);
116
+ var _obs$bins;
117
+ return getBinIndex(v, ((_obs$bins = obs.bins) === null || _obs$bins === void 0 ? void 0 : _obs$bins.binEdges) || [[null, null]]);
107
118
  });
108
119
  }
109
120
  valueCounts = _lodash.default.mapKeys(valueCounts, (_v, i) => {
110
121
  return obs.codesMap[i];
111
122
  });
112
- const totalCounts = obsIndices?.size;
123
+ const totalCounts = obsIndices === null || obsIndices === void 0 ? void 0 : obsIndices.size;
113
124
  const pct = _lodash.default.mapValues(valueCounts, v => v / totalCounts * 100);
114
125
  return {
115
126
  valueCounts,
116
127
  pct
117
128
  };
118
- }, [isCategorical, obs.bins?.binEdges, obs.codesMap, obsData.data, obsIndices]);
129
+ }, [isCategorical, (_obs$bins2 = obs.bins) === null || _obs$bins2 === void 0 ? void 0 : _obs$bins2.binEdges, obs.codesMap, obsData.data, obsIndices]);
119
130
  return {
120
131
  value_counts: valueCounts,
121
132
  pct: pct
@@ -175,7 +186,7 @@ function CategoricalItem(_ref) {
175
186
  })), /*#__PURE__*/_react.default.createElement("div", {
176
187
  className: "pl-1 m-0"
177
188
  }, /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
178
- title: isSliced ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Filtered:", " ", (0, _string.formatNumerical)(filteredStats.pct, _string.FORMATS.EXPONENTIAL), "%", /*#__PURE__*/_react.default.createElement("br", null), "Total: ", (0, _string.formatNumerical)(stats.pct, _string.FORMATS.EXPONENTIAL), "%") : `${(0, _string.formatNumerical)(stats.pct, _string.FORMATS.EXPONENTIAL)}%`,
189
+ title: isSliced ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Filtered:", " ", (0, _string.formatNumerical)(filteredStats.pct, _string.FORMATS.EXPONENTIAL), "%", /*#__PURE__*/_react.default.createElement("br", null), "Total: ", (0, _string.formatNumerical)(stats.pct, _string.FORMATS.EXPONENTIAL), "%") : "".concat((0, _string.formatNumerical)(stats.pct, _string.FORMATS.EXPONENTIAL), "%"),
179
190
  placement: "left",
180
191
  arrow: true
181
192
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -230,7 +241,7 @@ function CategoricalItem(_ref) {
230
241
  y: "0",
231
242
  width: "10",
232
243
  height: "10",
233
- fill: `rgb(${getColor({
244
+ fill: "rgb(".concat(getColor({
234
245
  value: (code - min) / (max - min),
235
246
  categorical: true,
236
247
  grayOut: isOmitted,
@@ -238,7 +249,7 @@ function CategoricalItem(_ref) {
238
249
  alpha: 1
239
250
  },
240
251
  colorEncoding: "obs"
241
- })})`
252
+ }), ")")
242
253
  }))) : null))));
243
254
  }
244
255
  function CategoricalObs(_ref2) {
@@ -248,7 +259,7 @@ function CategoricalObs(_ref2) {
248
259
  toggleObs,
249
260
  showColor = true
250
261
  } = _ref2;
251
- const dataset = (0, _DatasetContext.useDataset)();
262
+ const settings = (0, _SettingsContext.useSettings)();
252
263
  const {
253
264
  isSliced
254
265
  } = (0, _FilterContext.useFilteredData)();
@@ -258,6 +269,7 @@ function CategoricalObs(_ref2) {
258
269
  const obsHistograms = useObsHistogram(obs);
259
270
  const filteredObsData = useFilteredObsData(obs);
260
271
  const getDataAtIndex = (0, _react.useCallback)(index => {
272
+ var _obsHistograms$fetche;
261
273
  return {
262
274
  value: obs.values[index],
263
275
  code: obs.codes[obs.values[index]],
@@ -267,8 +279,8 @@ function CategoricalObs(_ref2) {
267
279
  },
268
280
  isOmitted: _lodash.default.includes(obs.omit, obs.codes[obs.values[index]]),
269
281
  label: obs.values[index],
270
- histogramData: dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? {
271
- data: obsHistograms.fetchedData?.[obs.values[index]],
282
+ histogramData: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? {
283
+ data: (_obsHistograms$fetche = obsHistograms.fetchedData) === null || _obsHistograms$fetche === void 0 ? void 0 : _obsHistograms$fetche[obs.values[index]],
272
284
  isPending: obsHistograms.isPending,
273
285
  altColor: isSliced
274
286
  } : {
@@ -276,13 +288,13 @@ function CategoricalObs(_ref2) {
276
288
  isPending: false
277
289
  },
278
290
  filteredStats: {
279
- value_counts: filteredObsData?.value_counts[obs.values[index]] || 0,
280
- pct: filteredObsData?.pct[obs.values[index]] || 0
291
+ value_counts: (filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.value_counts[obs.values[index]]) || 0,
292
+ pct: (filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.pct[obs.values[index]]) || 0
281
293
  },
282
294
  isSliced: isSliced
283
295
  };
284
- }, [dataset.colorEncoding, filteredObsData?.pct, filteredObsData?.value_counts, isSliced, obs.codes, obs.omit, obs.value_counts, obs.values, obsHistograms.fetchedData, obsHistograms.isPending, totalCounts]);
285
- showColor &= dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS;
296
+ }, [settings.colorEncoding, filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.pct, filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.value_counts, isSliced, obs.codes, obs.omit, obs.value_counts, obs.values, obsHistograms.fetchedData, obsHistograms.isPending, totalCounts]);
297
+ showColor &= settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS;
286
298
  return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, {
287
299
  variant: "flush",
288
300
  className: "cherita-list"
@@ -344,9 +356,9 @@ function ObsContinuousStats(_ref3) {
344
356
  },
345
357
  xAxis: {
346
358
  data: fetchedData.kde_values[0],
347
- valueFormatter: v => `${(0, _string.formatNumerical)(v, _string.FORMATS.EXPONENTIAL)}`
359
+ valueFormatter: v => "".concat((0, _string.formatNumerical)(v, _string.FORMATS.EXPONENTIAL))
348
360
  },
349
- valueFormatter: v => `${(0, _string.formatNumerical)(v, _string.FORMATS.EXPONENTIAL)}`,
361
+ valueFormatter: v => "".concat((0, _string.formatNumerical)(v, _string.FORMATS.EXPONENTIAL)),
350
362
  slotProps: {
351
363
  popper: {
352
364
  className: "feature-histogram-tooltip"
@@ -391,8 +403,8 @@ function ContinuousObs(_ref4) {
391
403
  isOmitted: _lodash.default.includes(obs.omit, obs.codes[obs.values[index]]),
392
404
  label: isNaN(obs.values[index]) ? "NaN" : getContinuousLabel(obs.codes[obs.values[index]], obs.bins.binEdges),
393
405
  filteredStats: {
394
- value_counts: filteredObsData?.value_counts[obs.values[index]] || 0,
395
- pct: filteredObsData?.pct[obs.values[index]] || 0
406
+ value_counts: (filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.value_counts[obs.values[index]]) || 0,
407
+ pct: (filteredObsData === null || filteredObsData === void 0 ? void 0 : filteredObsData.pct[obs.values[index]]) || 0
396
408
  },
397
409
  isSliced: isSliced
398
410
  };
@@ -18,11 +18,16 @@ var _AccordionContext = _interopRequireDefault(require("react-bootstrap/Accordio
18
18
  var _ObsItem = require("./ObsItem");
19
19
  var _constants = require("../../constants/constants");
20
20
  var _DatasetContext = require("../../context/DatasetContext");
21
+ var _SettingsContext = require("../../context/SettingsContext");
21
22
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
22
23
  var _requests = require("../../utils/requests");
23
24
  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; }
25
+ 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); }
26
+ 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; }
27
+ 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; }
28
+ 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; }
29
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
30
+ 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
31
  const ObsAccordionToggle = _ref => {
27
32
  let {
28
33
  children,
@@ -37,7 +42,7 @@ const ObsAccordionToggle = _ref => {
37
42
  handleAccordionToggle(eventKey, isCurrentEventKey);
38
43
  });
39
44
  return /*#__PURE__*/_react.default.createElement("div", {
40
- className: `obs-accordion-header ${isCurrentEventKey ? "active" : ""}`,
45
+ className: "obs-accordion-header ".concat(isCurrentEventKey ? "active" : ""),
41
46
  onClick: decoratedOnClick
42
47
  }, /*#__PURE__*/_react.default.createElement("span", {
43
48
  className: "obs-accordion-header-chevron"
@@ -48,29 +53,32 @@ const ObsAccordionToggle = _ref => {
48
53
  }, children));
49
54
  };
50
55
  function ObsColsList(_ref2) {
56
+ var _settings$selectedObs;
51
57
  let {
52
58
  showColor = true,
53
59
  enableObsGroups = true
54
60
  } = _ref2;
55
61
  const ENDPOINT = "obs/cols";
56
62
  const dataset = (0, _DatasetContext.useDataset)();
57
- const dispatch = (0, _DatasetContext.useDatasetDispatch)();
63
+ const settings = (0, _SettingsContext.useSettings)();
64
+ const dispatch = (0, _SettingsContext.useSettingsDispatch)();
58
65
  const [enableGroups, setEnableGroups] = (0, _react.useState)(enableObsGroups);
59
66
  const [obsCols, setObsCols] = (0, _react.useState)(null);
60
- const [active, setActive] = (0, _react.useState)([...[dataset.selectedObs?.name]]);
67
+ const [active, setActive] = (0, _react.useState)([...[(_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.name]]);
61
68
  const [params, setParams] = (0, _react.useState)({
62
69
  url: dataset.url
63
70
  });
64
- const obsGroups = (0, _react.useMemo)(() => ({
65
- default: _lodash.default.union(_constants.DEFAULT_OBS_GROUP, dataset.obsGroups?.default),
66
- ..._lodash.default.omit(dataset.obsGroups, "default")
67
- }), [dataset.obsGroups]);
71
+ const obsGroups = (0, _react.useMemo)(() => {
72
+ var _dataset$obsGroups;
73
+ return _objectSpread({
74
+ default: _lodash.default.union(_constants.DEFAULT_OBS_GROUP, (_dataset$obsGroups = dataset.obsGroups) === null || _dataset$obsGroups === void 0 ? void 0 : _dataset$obsGroups.default)
75
+ }, _lodash.default.omit(dataset.obsGroups, "default"));
76
+ }, [dataset.obsGroups]);
68
77
  (0, _react.useEffect)(() => {
69
78
  setParams(p => {
70
- return {
71
- ...p,
79
+ return _objectSpread(_objectSpread({}, p), {}, {
72
80
  url: dataset.url
73
- };
81
+ });
74
82
  });
75
83
  }, [dataset.url]);
76
84
  const {
@@ -91,7 +99,7 @@ function ObsColsList(_ref2) {
91
99
  });
92
100
  if (!!filteredData.length && !groupFiltered.length) {
93
101
  setEnableGroups(false);
94
- console.warn(`No obs found in obsGroups ${JSON.stringify(obsGroups)}, disabling obsGroups`);
102
+ console.warn("No obs found in obsGroups ".concat(JSON.stringify(obsGroups), ", disabling obsGroups"));
95
103
  } else {
96
104
  filteredData = groupFiltered;
97
105
  }
@@ -102,17 +110,17 @@ function ObsColsList(_ref2) {
102
110
  return d.type !== _constants.OBS_TYPES.DISCRETE;
103
111
  });
104
112
  setObsCols(_lodash.default.keyBy(_lodash.default.map(filteredData, d => {
105
- return {
106
- ...d,
113
+ return _objectSpread(_objectSpread({}, d), {}, {
107
114
  codesMap: _lodash.default.invert(d.codes),
108
115
  omit: []
109
- };
116
+ });
110
117
  }), "name"));
111
118
  }
112
119
  }, [fetchedData, isPending, obsGroups, serverError, enableGroups]);
113
120
  (0, _react.useEffect)(() => {
114
121
  if (obsCols) {
115
- if (!obsCols[dataset.selectedObs?.name]) {
122
+ var _settings$selectedObs2;
123
+ if (!obsCols[(_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.name]) {
116
124
  setActive([]);
117
125
  dispatch({
118
126
  type: "select.obs",
@@ -120,7 +128,7 @@ function ObsColsList(_ref2) {
120
128
  });
121
129
  }
122
130
  }
123
- }, [dataset.selectedObs, dispatch, obsCols]);
131
+ }, [settings.selectedObs, dispatch, obsCols]);
124
132
  const handleAccordionToggle = (itemName, isCurrentEventKey) => {
125
133
  if (isCurrentEventKey) {
126
134
  _lodash.default.delay(() => setActive(prev => _lodash.default.without(prev, itemName)), 250);
@@ -129,28 +137,26 @@ function ObsColsList(_ref2) {
129
137
  }
130
138
  };
131
139
  const toggleAll = item => {
140
+ var _settings$selectedObs3;
132
141
  const omit = item.omit.length ? [] : _lodash.default.map(item.values, v => item.codes[v]);
133
142
  setObsCols(o => {
134
- return {
135
- ...o,
136
- [item.name]: {
137
- ...item,
143
+ return _objectSpread(_objectSpread({}, o), {}, {
144
+ [item.name]: _objectSpread(_objectSpread({}, item), {}, {
138
145
  omit: omit
139
- }
140
- };
146
+ })
147
+ });
141
148
  });
142
- if (dataset.selectedObs?.name === item.name) {
149
+ if (((_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.name) === item.name) {
143
150
  dispatch({
144
151
  type: "select.obs",
145
- obs: {
146
- ...item,
152
+ obs: _objectSpread(_objectSpread({}, item), {}, {
147
153
  omit: omit
148
- }
154
+ })
149
155
  });
150
156
  }
151
157
  };
152
158
  const toggleLabel = item => {
153
- const inLabelObs = _lodash.default.some(dataset.labelObs, i => i.name === item.name);
159
+ const inLabelObs = _lodash.default.some(settings.labelObs, i => i.name === item.name);
154
160
  if (inLabelObs) {
155
161
  dispatch({
156
162
  type: "remove.label.obs",
@@ -184,6 +190,7 @@ function ObsColsList(_ref2) {
184
190
  });
185
191
  };
186
192
  const toggleObs = (item, value) => {
193
+ var _settings$selectedObs4;
187
194
  let omit;
188
195
  if (_lodash.default.includes(item.omit, item.codes[value])) {
189
196
  omit = item.omit.filter(i => i !== item.codes[value]);
@@ -191,34 +198,32 @@ function ObsColsList(_ref2) {
191
198
  omit = [...item.omit, item.codes[value]];
192
199
  }
193
200
  setObsCols(o => {
194
- return {
195
- ...o,
196
- [item.name]: {
197
- ...item,
201
+ return _objectSpread(_objectSpread({}, o), {}, {
202
+ [item.name]: _objectSpread(_objectSpread({}, item), {}, {
198
203
  omit: omit
199
- }
200
- };
204
+ })
205
+ });
201
206
  });
202
- if (dataset.selectedObs?.name === item.name) {
207
+ if (((_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.name) === item.name) {
203
208
  dispatch({
204
209
  type: "select.obs",
205
- obs: {
206
- ...item,
210
+ obs: _objectSpread(_objectSpread({}, item), {}, {
207
211
  omit: omit
208
- }
212
+ })
209
213
  });
210
214
  }
211
215
  };
212
216
  const obsItem = item => {
217
+ var _settings$selectedObs5, _settings$selectedObs6;
213
218
  if (!item) {
214
219
  return null;
215
220
  }
216
221
  if (item.type === _constants.OBS_TYPES.DISCRETE) {
217
222
  return null;
218
223
  }
219
- const inLabelObs = _lodash.default.some(dataset.labelObs, i => i.name === item.name);
220
- const inSliceObs = dataset.sliceBy.obs && dataset.selectedObs?.name === item.name;
221
- const isColorEncoding = dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS && dataset.selectedObs?.name === item.name;
224
+ const inLabelObs = _lodash.default.some(settings.labelObs, i => i.name === item.name);
225
+ const inSliceObs = settings.sliceBy.obs && ((_settings$selectedObs5 = settings.selectedObs) === null || _settings$selectedObs5 === void 0 ? void 0 : _settings$selectedObs5.name) === item.name;
226
+ const isColorEncoding = settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && ((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.name) === item.name;
222
227
  return /*#__PURE__*/_react.default.createElement("div", {
223
228
  className: "accordion-item",
224
229
  key: item.name
@@ -226,21 +231,21 @@ function ObsColsList(_ref2) {
226
231
  eventKey: item.name,
227
232
  handleAccordionToggle: handleAccordionToggle
228
233
  }, /*#__PURE__*/_react.default.createElement("div", null, item.name), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("span", {
229
- className: `mx-1 cursor-pointer ${inLabelObs ? "active-icon" : "text-muted opacity-50"}`,
234
+ className: "mx-1 cursor-pointer ".concat(inLabelObs ? "active-icon" : "text-muted opacity-50"),
230
235
  onClick: event => {
231
236
  event.stopPropagation();
232
237
  toggleLabel(item);
233
238
  },
234
239
  title: "Add to tooltip"
235
240
  }, /*#__PURE__*/_react.default.createElement(_Comment.default, null)), /*#__PURE__*/_react.default.createElement("span", {
236
- className: `mx-1 cursor-pointer ${inSliceObs ? "active-icon" : "text-muted opacity-50"}`,
241
+ className: "mx-1 cursor-pointer ".concat(inSliceObs ? "active-icon" : "text-muted opacity-50"),
237
242
  onClick: event => {
238
243
  event.stopPropagation();
239
244
  toggleSlice(item);
240
245
  },
241
246
  title: "Filter applied"
242
247
  }, /*#__PURE__*/_react.default.createElement(_JoinInner.default, null)), /*#__PURE__*/_react.default.createElement("span", {
243
- className: `mx-1 cursor-pointer ${isColorEncoding ? "active-icon" : "text-muted opacity-50"}`,
248
+ className: "mx-1 cursor-pointer ".concat(isColorEncoding ? "active-icon" : "text-muted opacity-50"),
244
249
  onClick: event => {
245
250
  event.stopPropagation();
246
251
  toggleColor(item);
@@ -270,9 +275,9 @@ function ObsColsList(_ref2) {
270
275
  })))));
271
276
  };
272
277
  const groupList = _lodash.default.map(_lodash.default.keys(obsGroups), group => {
273
- const key = `group-${group}`;
278
+ const key = "group-".concat(group);
274
279
  const groupItems = _lodash.default.compact(_lodash.default.map(_lodash.default.sortBy(obsGroups[group], o => _lodash.default.lowerCase(o.name)), item => {
275
- return obsItem(obsCols?.[item]);
280
+ return obsItem(obsCols === null || obsCols === void 0 ? void 0 : obsCols[item]);
276
281
  }));
277
282
  if (group === "default") {
278
283
  return groupItems;
@@ -289,7 +294,7 @@ function ObsColsList(_ref2) {
289
294
  }
290
295
  });
291
296
  const obsList = enableGroups ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, groupList) : _lodash.default.map(_lodash.default.sortBy(obsCols, o => _lodash.default.lowerCase(o.name)), item => obsItem(item));
292
- const defaultActiveGroup = enableGroups ? `group-${_lodash.default.findKey(obsGroups, g => g.includes(active?.[0]))}` : null;
297
+ const defaultActiveGroup = enableGroups ? "group-".concat(_lodash.default.findKey(obsGroups, g => g.includes(active === null || active === void 0 ? void 0 : active[0]))) : null;
293
298
  if (!serverError) {
294
299
  return /*#__PURE__*/_react.default.createElement("div", {
295
300
  className: "position-relative h-100"
@@ -7,14 +7,20 @@ exports.ObsmKeysList = ObsmKeysList;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactBootstrap = require("react-bootstrap");
9
9
  var _DatasetContext = require("../../context/DatasetContext");
10
+ var _SettingsContext = require("../../context/SettingsContext");
10
11
  var _requests = require("../../utils/requests");
11
12
  var _Skeleton = require("../../utils/Skeleton");
12
- 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); }
13
- 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; }
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); }
14
+ 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; }
15
+ 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; }
16
+ 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; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18
+ 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); }
14
19
  function ObsmKeysList() {
15
20
  const ENDPOINT = "obsm/keys";
16
21
  const dataset = (0, _DatasetContext.useDataset)();
17
- const dispatch = (0, _DatasetContext.useDatasetDispatch)();
22
+ const settings = (0, _SettingsContext.useSettings)();
23
+ const dispatch = (0, _SettingsContext.useSettingsDispatch)();
18
24
  const [obsmKeysList, setObsmKeysList] = (0, _react.useState)([]);
19
25
  const [active, setActive] = (0, _react.useState)(null);
20
26
  const [params, setParams] = (0, _react.useState)({
@@ -22,10 +28,9 @@ function ObsmKeysList() {
22
28
  });
23
29
  (0, _react.useEffect)(() => {
24
30
  setParams(p => {
25
- return {
26
- ...p,
31
+ return _objectSpread(_objectSpread({}, p), {}, {
27
32
  url: dataset.url
28
- };
33
+ });
29
34
  });
30
35
  }, [dataset.url]);
31
36
  const {
@@ -41,14 +46,14 @@ function ObsmKeysList() {
41
46
  }
42
47
  }, [fetchedData, isPending, serverError]);
43
48
  (0, _react.useEffect)(() => {
44
- if (dataset.selectedObsm) {
45
- setActive(dataset.selectedObsm);
49
+ if (settings.selectedObsm) {
50
+ setActive(settings.selectedObsm);
46
51
  }
47
- }, [dataset.selectedObsm]);
52
+ }, [settings.selectedObsm]);
48
53
  const obsmList = obsmKeysList.map(item => {
49
54
  return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
50
55
  key: item,
51
- className: `custom ${active === item && "active"}`,
56
+ className: "custom ".concat(active === item && "active"),
52
57
  onClick: () => {
53
58
  dispatch({
54
59
  type: "select.obsm",
@@ -63,8 +68,8 @@ function ObsmKeysList() {
63
68
  }
64
69
  return /*#__PURE__*/_react.default.createElement(_reactBootstrap.DropdownButton, {
65
70
  as: _reactBootstrap.ButtonGroup,
66
- title: dataset.selectedObsm || "Select an embedding",
67
- variant: dataset.selectedObsm ? "primary" : "warning",
71
+ title: settings.selectedObsm || "Select an embedding",
72
+ variant: settings.selectedObsm ? "primary" : "warning",
68
73
  id: "bg-nested-dropdown",
69
74
  size: "sm"
70
75
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Header, null, "Embeddings"), obsmList);
@@ -14,18 +14,21 @@ var _ObsList = require("../obs-list/ObsList");
14
14
  var _ObsmList = require("../obsm-list/ObsmList");
15
15
  var _SearchBar = require("../search-bar/SearchBar");
16
16
  var _VarList = require("../var-list/VarList");
17
+ const _excluded = ["show", "handleClose"],
18
+ _excluded2 = ["show", "handleClose", "Controls"];
17
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
+ 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; }
21
+ 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; }
18
22
  function OffcanvasObs(_ref) {
19
23
  let {
20
- show,
21
- handleClose,
22
- ...props
23
- } = _ref;
24
+ show,
25
+ handleClose
26
+ } = _ref,
27
+ props = _objectWithoutProperties(_ref, _excluded);
24
28
  return /*#__PURE__*/_react.default.createElement(_Offcanvas.default, {
25
29
  show: show,
26
30
  onHide: handleClose,
27
- scroll: true,
28
- backdrop: false
31
+ scroll: true
29
32
  }, /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Header, {
30
33
  closeButton: true
31
34
  }, /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Title, null, "Categories")), /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Body, {
@@ -63,11 +66,11 @@ function OffcanvasVars(_ref3) {
63
66
  }
64
67
  function OffcanvasControls(_ref4) {
65
68
  let {
66
- show,
67
- handleClose,
68
- Controls,
69
- ...props
70
- } = _ref4;
69
+ show,
70
+ handleClose,
71
+ Controls
72
+ } = _ref4,
73
+ props = _objectWithoutProperties(_ref4, _excluded2);
71
74
  return /*#__PURE__*/_react.default.createElement(_Offcanvas.default, {
72
75
  show: show,
73
76
  onHide: handleClose