@haniffalab/cherita-react 1.4.1-dev.2025-08-13.6fc43290 → 1.4.1-dev.2025-08-13.8f63c242

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 (31) hide show
  1. package/dist/cjs/components/dotplot/Dotplot.js +12 -16
  2. package/dist/cjs/components/heatmap/Heatmap.js +11 -16
  3. package/dist/cjs/components/matrixplot/Matrixplot.js +11 -16
  4. package/dist/cjs/components/obs-list/ObsItem.js +14 -14
  5. package/dist/cjs/components/obs-list/ObsList.js +24 -23
  6. package/dist/cjs/components/pseudospatial/Pseudospatial.js +25 -31
  7. package/dist/cjs/components/scatterplot/Scatterplot.js +14 -23
  8. package/dist/cjs/components/scatterplot/ScatterplotControls.js +9 -3
  9. package/dist/cjs/components/var-list/VarList.js +16 -14
  10. package/dist/cjs/components/violin/Violin.js +21 -25
  11. package/dist/cjs/context/DatasetContext.js +4 -4
  12. package/dist/cjs/context/SettingsContext.js +175 -40
  13. package/dist/cjs/utils/Filter.js +15 -10
  14. package/dist/cjs/utils/Resolver.js +188 -0
  15. package/dist/cjs/utils/zarrData.js +16 -17
  16. package/dist/esm/components/dotplot/Dotplot.js +12 -16
  17. package/dist/esm/components/heatmap/Heatmap.js +11 -16
  18. package/dist/esm/components/matrixplot/Matrixplot.js +11 -16
  19. package/dist/esm/components/obs-list/ObsItem.js +14 -14
  20. package/dist/esm/components/obs-list/ObsList.js +24 -23
  21. package/dist/esm/components/pseudospatial/Pseudospatial.js +25 -31
  22. package/dist/esm/components/scatterplot/Scatterplot.js +14 -23
  23. package/dist/esm/components/scatterplot/ScatterplotControls.js +9 -3
  24. package/dist/esm/components/var-list/VarList.js +16 -14
  25. package/dist/esm/components/violin/Violin.js +21 -25
  26. package/dist/esm/context/DatasetContext.js +4 -4
  27. package/dist/esm/context/SettingsContext.js +176 -41
  28. package/dist/esm/utils/Filter.js +15 -10
  29. package/dist/esm/utils/Resolver.js +176 -0
  30. package/dist/esm/utils/zarrData.js +16 -17
  31. package/package.json +2 -2
@@ -24,6 +24,7 @@ var _colorHelper = require("../../helpers/color-helper");
24
24
  var _mapHelper = require("../../helpers/map-helper");
25
25
  var _Legend = require("../../utils/Legend");
26
26
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
27
+ var _Resolver = require("../../utils/Resolver");
27
28
  var _string = require("../../utils/string");
28
29
  var _zarrData = require("../../utils/zarrData");
29
30
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -43,7 +44,7 @@ const INITIAL_VIEW_STATE = {
43
44
  bearing: 0
44
45
  };
45
46
  function Scatterplot(_ref) {
46
- var _settings$selectedObs2, _settings$selectedObs5, _settings$selectedObs8, _features$features2, _obsmData$serverError, _xData$serverError, _obsData$serverError, _labelObsData$serverE, _settings$selectedVar, _settings$selectedObs9, _data$positions;
47
+ var _features$features2, _obsmData$serverError, _xData$serverError, _obsData$serverError, _labelObsData$serverE, _settings$selectedVar, _data$positions;
47
48
  let {
48
49
  radius = null,
49
50
  setShowObs,
@@ -74,6 +75,7 @@ function Scatterplot(_ref) {
74
75
  values: []
75
76
  });
76
77
  const [coordsError, setCoordsError] = (0, _react.useState)(null);
78
+ const selectedObs = (0, _Resolver.useSelectedObs)();
77
79
 
78
80
  // EditableGeoJsonLayer
79
81
  const [mode, setMode] = (0, _react.useState)(() => _editModes.ViewMode);
@@ -182,8 +184,7 @@ function Scatterplot(_ref) {
182
184
  getOriginalIndex,
183
185
  sortedIndexMap
184
186
  } = (0, _react.useMemo)(() => {
185
- var _settings$selectedObs;
186
- if ((settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR || settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === _constants.OBS_TYPES.CONTINUOUS) && data.positions && data.values && data.positions.length === data.values.length) {
187
+ if ((settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR || settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && (selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type) === _constants.OBS_TYPES.CONTINUOUS) && data.positions && data.values && data.positions.length === data.values.length) {
187
188
  const sortedIndices = _lodash.default.map(data.values, (_v, i) => i).sort((a, b) => data.values[a] - data.values[b]);
188
189
  const sortedIndexMap = new Map(_lodash.default.map(sortedIndices, (originalIndex, sortedIndex) => [originalIndex, sortedIndex]));
189
190
  return {
@@ -200,24 +201,17 @@ function Scatterplot(_ref) {
200
201
  // return original index
201
202
  sortedIndexMap: identitySortedIndexMap // return original index
202
203
  };
203
- }, [data, identityGetOriginalIndex, identitySortedIndexMap, settings.colorEncoding, (_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.type]);
204
+ }, [data, identityGetOriginalIndex, identitySortedIndexMap, selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type, settings.colorEncoding]);
204
205
  const sortedObsIndices = (0, _react.useMemo)(() => {
205
206
  return obsIndices ? new Set(Array.from(obsIndices, i => sortedIndexMap.get(i))) : obsIndices;
206
207
  }, [obsIndices, sortedIndexMap]);
207
208
  const isCategorical = (0, _react.useMemo)(() => {
208
209
  if (settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS) {
209
- var _settings$selectedObs3, _settings$selectedObs4;
210
- return ((_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.type) === _constants.OBS_TYPES.CATEGORICAL || ((_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.type) === _constants.OBS_TYPES.BOOLEAN;
210
+ return (selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type) === _constants.OBS_TYPES.CATEGORICAL || (selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type) === _constants.OBS_TYPES.BOOLEAN;
211
211
  } else {
212
212
  return false;
213
213
  }
214
- }, [settings.colorEncoding, (_settings$selectedObs5 = settings.selectedObs) === null || _settings$selectedObs5 === void 0 ? void 0 : _settings$selectedObs5.type]);
215
- (0, _react.useEffect)(() => {
216
- dispatch({
217
- type: "set.controls.valueRange",
218
- valueRange: [valueMin, valueMax]
219
- });
220
- }, [dispatch, valueMax, valueMin]);
214
+ }, [settings.colorEncoding, selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type]);
221
215
  const {
222
216
  min,
223
217
  max
@@ -226,7 +220,6 @@ function Scatterplot(_ref) {
226
220
  max: settings.controls.range[1] * (valueMax - valueMin) + valueMin
227
221
  };
228
222
  const getFillColor = (0, _react.useCallback)((_d, _ref2) => {
229
- var _settings$selectedObs6, _settings$selectedObs7;
230
223
  let {
231
224
  index
232
225
  } = _ref2;
@@ -235,10 +228,10 @@ function Scatterplot(_ref) {
235
228
  value: (sortedData.values[index] - min) / (max - min),
236
229
  categorical: isCategorical,
237
230
  grayOut: grayOut
238
- }, useUnsColors && settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && (_settings$selectedObs6 = settings.selectedObs) !== null && _settings$selectedObs6 !== void 0 && _settings$selectedObs6.colors ? {
239
- colorscale: (_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.colors
231
+ }, useUnsColors && settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && selectedObs !== null && selectedObs !== void 0 && selectedObs.colors ? {
232
+ colorscale: selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.colors
240
233
  } : {})) || [0, 0, 0, 100];
241
- }, [isPending, sortedObsIndices, getColor, sortedData.values, min, max, isCategorical, useUnsColors, settings.colorEncoding, (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.colors]);
234
+ }, [isPending, sortedObsIndices, getColor, sortedData.values, min, max, isCategorical, useUnsColors, settings.colorEncoding, selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.colors]);
242
235
 
243
236
  // @TODO: add support for pseudospatial hover to reflect in radius
244
237
  const getRadius = (0, _react.useCallback)((_d, _ref3) => {
@@ -336,11 +329,9 @@ function Scatterplot(_ref) {
336
329
  } = _ref5;
337
330
  if (!object || (object === null || object === void 0 ? void 0 : object.type) === "Feature") return;
338
331
  const text = [];
339
- if (settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && settings.selectedObs && !_lodash.default.some(settings.labelObs, {
340
- name: settings.selectedObs.name
341
- })) {
332
+ if (settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && selectedObs && !_lodash.default.includes(settings.labelObs, selectedObs.name)) {
342
333
  var _data$values;
343
- text.push(getLabel(settings.selectedObs, (_data$values = data.values) === null || _data$values === void 0 ? void 0 : _data$values[getOriginalIndex(index)]));
334
+ text.push(getLabel(selectedObs, (_data$values = data.values) === null || _data$values === void 0 ? void 0 : _data$values[getOriginalIndex(index)]));
344
335
  }
345
336
  if (settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR && settings.selectedVar) {
346
337
  var _data$values2;
@@ -348,7 +339,7 @@ function Scatterplot(_ref) {
348
339
  }
349
340
  if (settings.labelObs.length) {
350
341
  text.push(..._lodash.default.map(labelObsData.data, (v, k) => {
351
- const labelObs = _lodash.default.find(settings.labelObs, o => o.name === k);
342
+ const labelObs = settings.data.obs[k];
352
343
  return getLabel(labelObs, v[getOriginalIndex(index)]);
353
344
  }));
354
345
  }
@@ -418,7 +409,7 @@ function Scatterplot(_ref) {
418
409
  }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
419
410
  icon: _freeSolidSvgIcons.faTriangleExclamation
420
411
  }), "\xA0Error loading data"), /*#__PURE__*/_react.default.createElement(_Toolbox.Toolbox, {
421
- mode: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? (_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name : settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? (_settings$selectedObs9 = settings.selectedObs) === null || _settings$selectedObs9 === void 0 ? void 0 : _settings$selectedObs9.name : null,
412
+ mode: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? (_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name : settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.name : null,
422
413
  obsLength: parseInt((_data$positions = data.positions) === null || _data$positions === void 0 ? void 0 : _data$positions.length),
423
414
  slicedLength: parseInt(slicedLength)
424
415
  })), /*#__PURE__*/_react.default.createElement(_Legend.Legend, {
@@ -8,17 +8,23 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _material = require("@mui/material");
9
9
  var _reactBootstrap = require("react-bootstrap");
10
10
  var _constants = require("../../constants/constants");
11
+ var _FilterContext = require("../../context/FilterContext");
11
12
  var _SettingsContext = require("../../context/SettingsContext");
13
+ var _Resolver = require("../../utils/Resolver");
12
14
  var _Controls = require("../controls/Controls");
13
15
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
16
  const ScatterplotControls = () => {
15
- var _settings$selectedObs;
16
17
  const settings = (0, _SettingsContext.useSettings)();
17
18
  const dispatch = (0, _SettingsContext.useSettingsDispatch)();
18
19
  const [sliderValue, setSliderValue] = _react.default.useState(settings.controls.range || [0, 1]);
19
- const isCategorical = settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === _constants.OBS_TYPES.CATEGORICAL : false;
20
+ const {
21
+ valueMin,
22
+ valueMax
23
+ } = (0, _FilterContext.useFilteredData)();
24
+ const selectedObs = (0, _Resolver.useSelectedObs)();
25
+ const isCategorical = settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? (selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type) === _constants.OBS_TYPES.CATEGORICAL : false;
20
26
  const valueLabelFormat = value => {
21
- return (value * (settings.controls.valueRange[1] - settings.controls.valueRange[0]) + settings.controls.valueRange[0]).toFixed(2);
27
+ return (value * (valueMax - valueMin) + valueMin).toFixed(2);
22
28
  };
23
29
  const marks = [{
24
30
  value: 0,
@@ -20,6 +20,7 @@ var _FilterContext = require("../../context/FilterContext");
20
20
  var _SettingsContext = require("../../context/SettingsContext");
21
21
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
22
22
  var _requests = require("../../utils/requests");
23
+ var _Resolver = require("../../utils/Resolver");
23
24
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
24
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); }
25
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; }
@@ -38,7 +39,7 @@ const useVarMean = function (varKeys) {
38
39
  url: dataset.url,
39
40
  varKeys: _lodash.default.map(varKeys, v => v.isSet ? {
40
41
  name: v.name,
41
- indices: v.vars.map(v => v.index)
42
+ indices: v.vars.map(vv => vv.index)
42
43
  } : v.index),
43
44
  obsIndices: obsIndices,
44
45
  varNamesCol: dataset.varNamesCol
@@ -48,7 +49,7 @@ const useVarMean = function (varKeys) {
48
49
  return _objectSpread(_objectSpread({}, p), {}, {
49
50
  varKeys: _lodash.default.map(varKeys, v => v.isSet ? {
50
51
  name: v.name,
51
- indices: v.vars.map(v => v.index)
52
+ indices: v.vars.map(vv => vv.index)
52
53
  } : v.index),
53
54
  obsIndices: obsIndices
54
55
  });
@@ -67,42 +68,43 @@ const sortMeans = (i, means) => {
67
68
  };
68
69
  exports.sortMeans = sortMeans;
69
70
  function VarNamesList(_ref) {
70
- var _settings$selectedVar, _settings$selectedVar2;
71
71
  let {
72
72
  mode = _constants.SELECTION_MODES.SINGLE,
73
73
  displayName = "genes"
74
74
  } = _ref;
75
75
  const settings = (0, _SettingsContext.useSettings)();
76
76
  const dispatch = (0, _SettingsContext.useSettingsDispatch)();
77
- const [active, setActive] = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ? ((_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.matrix_index) || ((_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name) : settings.selectedMultiVar.map(i => i.matrix_index || i.name));
77
+ const selectedVar = (0, _Resolver.useSelectedVar)();
78
+ const selectedMultiVar = (0, _Resolver.useSelectedMultiVar)();
79
+ const settingsVars = (0, _Resolver.useSettingsVars)();
80
+ const [active, setActive] = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ? (selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index) || (selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name) : selectedMultiVar.map(i => i.matrix_index || i.name));
78
81
  const [sortedVars, setSortedVars] = (0, _react.useState)([]);
79
82
  (0, _react.useEffect)(() => {
80
83
  if (mode === _constants.SELECTION_MODES.SINGLE) {
81
- var _settings$selectedVar3, _settings$selectedVar4;
82
- setActive(((_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.matrix_index) || ((_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.name));
84
+ setActive((selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index) || (selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name));
83
85
  }
84
- }, [mode, settings.selectedVar]);
86
+ }, [mode, selectedVar]);
85
87
  (0, _react.useEffect)(() => {
86
88
  if (mode === _constants.SELECTION_MODES.MULTIPLE) {
87
- setActive(settings.selectedMultiVar.map(i => i.matrix_index || i.name));
89
+ setActive(selectedMultiVar.map(i => i.matrix_index || i.name));
88
90
  }
89
- }, [mode, settings.selectedMultiVar]);
90
- const varMeans = useVarMean(settings.vars, settings.varSort.var.sort === _constants.VAR_SORT.MATRIX);
91
+ }, [mode, selectedMultiVar]);
92
+ const varMeans = useVarMean(settingsVars, settings.varSort.var.sort === _constants.VAR_SORT.MATRIX);
91
93
 
92
94
  // @TODO: deferr sortedVars ?
93
95
  (0, _react.useEffect)(() => {
94
96
  if (settings.varSort.var.sort === _constants.VAR_SORT.MATRIX) {
95
97
  if (!varMeans.isPending && !varMeans.serverError && varMeans.fetchedData) {
96
- setSortedVars(_lodash.default.orderBy(settings.vars, o => {
98
+ setSortedVars(_lodash.default.orderBy(settingsVars, o => {
97
99
  return sortMeans(o, varMeans.fetchedData);
98
100
  }, settings.varSort.var.sortOrder));
99
101
  }
100
102
  } else if (settings.varSort.var.sort === _constants.VAR_SORT.NAME) {
101
- setSortedVars(_lodash.default.orderBy(settings.vars, "name", settings.varSort.var.sortOrder));
103
+ setSortedVars(_lodash.default.orderBy(settingsVars, "name", settings.varSort.var.sortOrder));
102
104
  } else {
103
- setSortedVars(settings.vars);
105
+ setSortedVars(settingsVars);
104
106
  }
105
- }, [settings.varSort.var.sort, settings.varSort.var.sortOrder, varMeans.isPending, varMeans.serverError, varMeans.fetchedData, settings.vars]);
107
+ }, [settings.varSort.var.sort, settings.varSort.var.sortOrder, varMeans.isPending, varMeans.serverError, varMeans.fetchedData, settingsVars]);
106
108
  const makeListItem = item => {
107
109
  return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
108
110
  key: item.matrix_index
@@ -16,6 +16,7 @@ var _FilterContext = require("../../context/FilterContext");
16
16
  var _SettingsContext = require("../../context/SettingsContext");
17
17
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
18
18
  var _requests = require("../../utils/requests");
19
+ var _Resolver = require("../../utils/Resolver");
19
20
  var _Toolbar = require("../toolbar/Toolbar");
20
21
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
22
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
@@ -25,7 +26,6 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
25
26
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
26
27
  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); }
27
28
  function Violin(_ref) {
28
- var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3, _settings$selectedVar4, _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
29
29
  let {
30
30
  mode = _constants.VIOLIN_MODES.MULTIKEY,
31
31
  showObsBtn = false,
@@ -45,6 +45,9 @@ function Violin(_ref) {
45
45
  const [data, setData] = (0, _react.useState)([]);
46
46
  const [layout, setLayout] = (0, _react.useState)({});
47
47
  const [hasSelections, setHasSelections] = (0, _react.useState)(false);
48
+ const selectedMultiVar = (0, _Resolver.useSelectedMultiVar)();
49
+ const selectedVar = (0, _Resolver.useSelectedVar)();
50
+ const selectedObs = (0, _Resolver.useSelectedObs)();
48
51
  const [params, setParams] = (0, _react.useState)(_objectSpread({
49
52
  url: dataset.url,
50
53
  mode: mode,
@@ -52,22 +55,19 @@ function Violin(_ref) {
52
55
  varNamesCol: dataset.varNamesCol
53
56
  }, {
54
57
  [_constants.VIOLIN_MODES.MULTIKEY]: {
55
- varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
58
+ varKeys: selectedMultiVar.map(i => i.isSet ? {
56
59
  name: i.name,
57
60
  indices: i.vars.map(v => v.index)
58
61
  } : i.index),
59
62
  obsKeys: [] // @TODO: implement
60
63
  },
61
64
  [_constants.VIOLIN_MODES.GROUPBY]: {
62
- varKey: (_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet ? {
63
- name: (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name,
64
- indices: (_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars.map(v => v.index)
65
- } : (_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.index,
66
- obsCol: settings.selectedObs,
67
- obsValues: !((_settings$selectedObs = settings.selectedObs) !== null && _settings$selectedObs !== void 0 && _settings$selectedObs.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.codes), (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.omit).map(c => {
68
- var _settings$selectedObs4;
69
- return (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.codesMap[c];
70
- }),
65
+ varKey: selectedVar !== null && selectedVar !== void 0 && selectedVar.isSet ? {
66
+ name: selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name,
67
+ indices: selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.vars.map(v => v.index)
68
+ } : selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.index,
69
+ obsCol: selectedObs,
70
+ obsValues: !(selectedObs !== null && selectedObs !== void 0 && selectedObs.omit.length) ? null : _lodash.default.difference(selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.values, selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.omit),
71
71
  obsIndices: isSliced ? [...(obsIndices || [])] : null
72
72
  }
73
73
  }[mode]));
@@ -75,7 +75,7 @@ function Violin(_ref) {
75
75
 
76
76
  (0, _react.useEffect)(() => {
77
77
  if (mode === _constants.VIOLIN_MODES.MULTIKEY) {
78
- if (settings.selectedMultiVar.length) {
78
+ if (selectedMultiVar.length) {
79
79
  setHasSelections(true);
80
80
  } else {
81
81
  setHasSelections(false);
@@ -84,7 +84,7 @@ function Violin(_ref) {
84
84
  return _objectSpread(_objectSpread({}, p), {}, {
85
85
  url: dataset.url,
86
86
  mode: mode,
87
- varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
87
+ varKeys: selectedMultiVar.map(i => i.isSet ? {
88
88
  name: i.name,
89
89
  indices: i.vars.map(v => v.index)
90
90
  } : i.index),
@@ -93,32 +93,28 @@ function Violin(_ref) {
93
93
  });
94
94
  });
95
95
  } else if (mode === _constants.VIOLIN_MODES.GROUPBY) {
96
- if (settings.selectedObs && settings.selectedVar) {
96
+ if (selectedObs && selectedVar) {
97
97
  setHasSelections(true);
98
98
  } else {
99
99
  setHasSelections(false);
100
100
  }
101
101
  setParams(p => {
102
- var _settings$selectedVar5, _settings$selectedVar6, _settings$selectedVar7, _settings$selectedVar8, _settings$selectedObs5, _settings$selectedObs6, _settings$selectedObs7;
103
102
  return _objectSpread(_objectSpread({}, p), {}, {
104
103
  url: dataset.url,
105
104
  mode: mode,
106
- varKey: (_settings$selectedVar5 = settings.selectedVar) !== null && _settings$selectedVar5 !== void 0 && _settings$selectedVar5.isSet ? {
107
- name: (_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.name,
108
- indices: (_settings$selectedVar7 = settings.selectedVar) === null || _settings$selectedVar7 === void 0 ? void 0 : _settings$selectedVar7.vars.map(v => v.index)
109
- } : (_settings$selectedVar8 = settings.selectedVar) === null || _settings$selectedVar8 === void 0 ? void 0 : _settings$selectedVar8.index,
110
- obsCol: settings.selectedObs,
111
- obsValues: !((_settings$selectedObs5 = settings.selectedObs) !== null && _settings$selectedObs5 !== void 0 && _settings$selectedObs5.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.codes), (_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.omit).map(c => {
112
- var _settings$selectedObs8;
113
- return (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.codesMap[c];
114
- }),
105
+ varKey: selectedVar !== null && selectedVar !== void 0 && selectedVar.isSet ? {
106
+ name: selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name,
107
+ indices: selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.vars.map(v => v.index)
108
+ } : selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.index,
109
+ obsCol: selectedObs,
110
+ obsValues: !(selectedObs !== null && selectedObs !== void 0 && selectedObs.omit.length) ? null : _lodash.default.difference(selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.values, selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.omit),
115
111
  obsIndices: isSliced ? [...(obsIndices || [])] : null,
116
112
  scale: settings.controls.scale.violinplot,
117
113
  varNamesCol: dataset.varNamesCol
118
114
  });
119
115
  });
120
116
  }
121
- }, [settings.controls.scale.violinplot, settings.selectedMultiVar, settings.selectedObs, settings.selectedVar, dataset.url, dataset.varNamesCol, obsIndices, isSliced, mode]);
117
+ }, [settings.controls.scale.violinplot, selectedMultiVar, selectedObs, selectedVar, dataset.url, dataset.varNamesCol, obsIndices, isSliced, mode]);
122
118
  const {
123
119
  fetchedData,
124
120
  isPending,
@@ -60,7 +60,7 @@ const persistOptions = {
60
60
  return false;
61
61
  }
62
62
  },
63
- buster: "1.4.1-dev.2025-08-13.6fc43290" || "0.0.0"
63
+ buster: "1.4.1-dev.2025-08-13.8f63c242" || "0.0.0"
64
64
  // @TODO: add maxAge and api version numbers as buster
65
65
  };
66
66
  const initialDataset = {
@@ -84,13 +84,13 @@ function DatasetProvider(_ref2) {
84
84
  }, dataset_params));
85
85
  return /*#__PURE__*/_react.default.createElement(DatasetContext.Provider, {
86
86
  value: dataset
87
+ }, /*#__PURE__*/_react.default.createElement(_reactQueryPersistClient.PersistQueryClientProvider, {
88
+ client: queryClient,
89
+ persistOptions: persistOptions
87
90
  }, /*#__PURE__*/_react.default.createElement(_SettingsContext.SettingsProvider, {
88
91
  dataset_url: dataset.url,
89
92
  defaultSettings: dataset.defaultSettings,
90
93
  canOverrideSettings: dataset.canOverrideSettings
91
- }, /*#__PURE__*/_react.default.createElement(_reactQueryPersistClient.PersistQueryClientProvider, {
92
- client: queryClient,
93
- persistOptions: persistOptions
94
94
  }, /*#__PURE__*/_react.default.createElement(_FilterContext.FilterProvider, null, /*#__PURE__*/_react.default.createElement(_ZarrDataContext.ZarrDataProvider, null, children)))));
95
95
  }
96
96
  function useDataset() {