@haniffalab/cherita-react 1.4.1-dev.2025-10-23.e95b5a90 → 1.4.1-dev.2025-10-23.55fbe6ff

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 (126) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/controls/Controls.js +4 -4
  3. package/dist/cjs/components/dotplot/Dotplot.js +8 -8
  4. package/dist/cjs/components/dotplot/DotplotControls.js +5 -5
  5. package/dist/cjs/components/full-page/FullPage.js +1 -2
  6. package/dist/cjs/components/full-page/PlotAlert.js +1 -1
  7. package/dist/cjs/components/full-page/PlotTypeSelector.js +13 -13
  8. package/dist/cjs/components/heatmap/Heatmap.js +7 -7
  9. package/dist/cjs/components/icons/DotPlotIcon.js +1 -1
  10. package/dist/cjs/components/icons/HeatmapIcon.js +1 -1
  11. package/dist/cjs/components/icons/MatrixPlotIcon.1.js +1 -1
  12. package/dist/cjs/components/icons/MatrixPlotIcon.js +1 -1
  13. package/dist/cjs/components/icons/ScatterplotIcon.1.js +1 -1
  14. package/dist/cjs/components/icons/ScatterplotIcon.js +1 -1
  15. package/dist/cjs/components/icons/ViolinPlotIcon.js +1 -1
  16. package/dist/cjs/components/matrixplot/Matrixplot.js +7 -7
  17. package/dist/cjs/components/obs-list/ObsItem.js +19 -19
  18. package/dist/cjs/components/obs-list/ObsList.js +17 -17
  19. package/dist/cjs/components/obsm-list/ObsmList.js +7 -7
  20. package/dist/cjs/components/pseudospatial/Pseudospatial.js +16 -16
  21. package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +10 -10
  22. package/dist/cjs/components/scatterplot/Scatterplot.js +16 -16
  23. package/dist/cjs/components/scatterplot/ScatterplotControls.js +1 -1
  24. package/dist/cjs/components/scatterplot/SpatialControls.js +9 -9
  25. package/dist/cjs/components/scatterplot/Toolbox.js +4 -4
  26. package/dist/cjs/components/search-bar/SearchBar.js +14 -14
  27. package/dist/cjs/components/search-bar/SearchInfo.js +3 -3
  28. package/dist/cjs/components/search-bar/SearchResults.js +2 -2
  29. package/dist/cjs/components/toolbar/Toolbar.js +3 -3
  30. package/dist/cjs/components/var-list/VarItem.js +15 -15
  31. package/dist/cjs/components/var-list/VarList.js +5 -5
  32. package/dist/cjs/components/var-list/VarListToolbar.js +4 -4
  33. package/dist/cjs/components/var-list/VarSet.js +13 -13
  34. package/dist/cjs/components/violin/Violin.js +10 -10
  35. package/dist/cjs/constants/colorscales.js +19 -19
  36. package/dist/cjs/constants/constants.js +47 -47
  37. package/dist/cjs/context/DatasetContext.js +3 -3
  38. package/dist/cjs/context/FilterContext.js +2 -2
  39. package/dist/cjs/context/SettingsContext.js +57 -57
  40. package/dist/cjs/helpers/color-helper.js +2 -2
  41. package/dist/cjs/helpers/zarr-helper.js +3 -3
  42. package/dist/cjs/utils/Filter.js +1 -1
  43. package/dist/cjs/utils/Histogram.js +2 -2
  44. package/dist/cjs/utils/ImageViewer.js +2 -2
  45. package/dist/cjs/utils/Legend.js +1 -1
  46. package/dist/cjs/utils/LoadingIndicators.js +1 -1
  47. package/dist/cjs/utils/Resolver.js +7 -7
  48. package/dist/cjs/utils/Skeleton.js +1 -1
  49. package/dist/cjs/utils/StyledTooltip.js +5 -5
  50. package/dist/cjs/utils/VirtualizedList.js +7 -7
  51. package/dist/cjs/utils/errors.js +15 -15
  52. package/dist/cjs/utils/requests.js +5 -5
  53. package/dist/cjs/utils/search.js +4 -4
  54. package/dist/cjs/utils/string.js +6 -6
  55. package/dist/cjs/utils/zarrData.js +5 -5
  56. package/dist/css/cherita.css +21 -20
  57. package/dist/css/cherita.css.map +1 -1
  58. package/dist/esm/components/controls/Controls.js +9 -9
  59. package/dist/esm/components/dotplot/Dotplot.js +21 -21
  60. package/dist/esm/components/dotplot/DotplotControls.js +9 -9
  61. package/dist/esm/components/full-page/FullPage.js +22 -23
  62. package/dist/esm/components/full-page/PlotAlert.js +5 -5
  63. package/dist/esm/components/full-page/PlotTypeSelector.js +21 -21
  64. package/dist/esm/components/heatmap/Heatmap.js +20 -20
  65. package/dist/esm/components/heatmap/HeatmapControls.js +2 -2
  66. package/dist/esm/components/icons/DotPlotIcon.js +1 -1
  67. package/dist/esm/components/icons/HeatmapIcon.js +1 -1
  68. package/dist/esm/components/icons/MatrixPlotIcon.1.js +1 -1
  69. package/dist/esm/components/icons/MatrixPlotIcon.js +1 -1
  70. package/dist/esm/components/icons/ScatterplotIcon.1.js +1 -1
  71. package/dist/esm/components/icons/ScatterplotIcon.js +1 -1
  72. package/dist/esm/components/icons/ViolinPlotIcon.js +1 -1
  73. package/dist/esm/components/matrixplot/Matrixplot.js +20 -20
  74. package/dist/esm/components/matrixplot/MatrixplotControls.js +2 -2
  75. package/dist/esm/components/obs-list/ObsItem.js +37 -37
  76. package/dist/esm/components/obs-list/ObsList.js +34 -34
  77. package/dist/esm/components/obs-list/ObsToolbar.js +1 -1
  78. package/dist/esm/components/obsm-list/ObsmList.js +15 -15
  79. package/dist/esm/components/offcanvas/index.js +6 -6
  80. package/dist/esm/components/pseudospatial/Pseudospatial.js +31 -31
  81. package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +17 -17
  82. package/dist/esm/components/scatterplot/Scatterplot.js +38 -38
  83. package/dist/esm/components/scatterplot/ScatterplotControls.js +9 -9
  84. package/dist/esm/components/scatterplot/SpatialControls.js +23 -23
  85. package/dist/esm/components/scatterplot/Toolbox.js +7 -7
  86. package/dist/esm/components/search-bar/SearchBar.js +27 -27
  87. package/dist/esm/components/search-bar/SearchInfo.js +14 -14
  88. package/dist/esm/components/search-bar/SearchResults.js +10 -10
  89. package/dist/esm/components/toolbar/Toolbar.js +6 -6
  90. package/dist/esm/components/var-list/VarItem.js +27 -27
  91. package/dist/esm/components/var-list/VarList.js +21 -21
  92. package/dist/esm/components/var-list/VarListToolbar.js +10 -10
  93. package/dist/esm/components/var-list/VarSet.js +22 -22
  94. package/dist/esm/components/violin/Violin.js +26 -26
  95. package/dist/esm/components/violin/ViolinControls.js +2 -2
  96. package/dist/esm/constants/colorscales.js +19 -19
  97. package/dist/esm/constants/constants.js +47 -47
  98. package/dist/esm/context/DatasetContext.js +11 -11
  99. package/dist/esm/context/FilterContext.js +3 -3
  100. package/dist/esm/context/SettingsContext.js +61 -61
  101. package/dist/esm/context/ZarrDataContext.js +3 -3
  102. package/dist/esm/helpers/color-helper.js +5 -5
  103. package/dist/esm/helpers/map-helper.js +2 -2
  104. package/dist/esm/helpers/zarr-helper.js +6 -6
  105. package/dist/esm/index.js +22 -22
  106. package/dist/esm/utils/Filter.js +8 -8
  107. package/dist/esm/utils/Histogram.js +6 -6
  108. package/dist/esm/utils/ImageViewer.js +4 -4
  109. package/dist/esm/utils/Legend.js +9 -9
  110. package/dist/esm/utils/LoadingIndicators.js +2 -2
  111. package/dist/esm/utils/Resolver.js +13 -13
  112. package/dist/esm/utils/Skeleton.js +2 -2
  113. package/dist/esm/utils/StyledTooltip.js +6 -6
  114. package/dist/esm/utils/VirtualizedList.js +9 -9
  115. package/dist/esm/utils/errors.js +15 -15
  116. package/dist/esm/utils/requests.js +8 -8
  117. package/dist/esm/utils/search.js +7 -7
  118. package/dist/esm/utils/string.js +7 -7
  119. package/dist/esm/utils/zarrData.js +13 -13
  120. package/package.json +11 -7
  121. package/scss/cherita-bootstrap.scss +2 -2
  122. package/scss/cherita.scss +24 -17
  123. package/scss/components/accordions.scss +4 -1
  124. package/scss/components/layouts.scss +13 -12
  125. package/scss/components/lists.scss +8 -4
  126. package/scss/components/plotly.scss +1 -0
@@ -6,10 +6,10 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
6
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
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
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; }
9
- import { createContext, useContext, useEffect, useReducer, useRef } from "react";
10
- import _ from "lodash";
11
- import { COLOR_ENCODINGS, DOTPLOT_SCALES, LOCAL_STORAGE_KEY, MATRIXPLOT_SCALES, OBS_TYPES, PSEUDOSPATIAL_CATEGORICAL_MODES, VAR_SORT, VAR_SORT_ORDER, VIOLINPLOT_SCALES } from "../constants/constants";
12
- import { useResolver } from "../utils/Resolver";
9
+ import { createContext, useContext, useEffect, useReducer, useRef } from 'react';
10
+ import _ from 'lodash';
11
+ import { COLOR_ENCODINGS, DOTPLOT_SCALES, LOCAL_STORAGE_KEY, MATRIXPLOT_SCALES, OBS_TYPES, PSEUDOSPATIAL_CATEGORICAL_MODES, VAR_SORT, VAR_SORT_ORDER, VIOLINPLOT_SCALES } from '../constants/constants';
12
+ import { useResolver } from '../utils/Resolver';
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  export const SettingsContext = /*#__PURE__*/createContext(null);
15
15
  export const SettingsDispatchContext = /*#__PURE__*/createContext(null);
@@ -33,7 +33,7 @@ const initialSettings = {
33
33
  },
34
34
  polygons: {},
35
35
  controls: {
36
- colorScale: "Viridis",
36
+ colorScale: 'Viridis',
37
37
  range: [0, 1],
38
38
  // normalized
39
39
  colorAxis: {
@@ -93,7 +93,7 @@ const validateSettings = settings => {
93
93
 
94
94
  // make sure selectedMultiVar are in vars
95
95
  if (settings.selectedMultiVar) {
96
- const notInVars = _.differenceBy(settings.selectedMultiVar, settings.vars, "name");
96
+ const notInVars = _.differenceBy(settings.selectedMultiVar, settings.vars, 'name');
97
97
  if (notInVars.length) {
98
98
  settings.vars = [...settings.vars, ...notInVars];
99
99
  }
@@ -163,7 +163,7 @@ export function SettingsProvider(_ref2) {
163
163
 
164
164
  // If the buster is not set or does not match the current package version,
165
165
  // reset localSettings to avoid stale data
166
- if (!buster || buster !== "1.4.1-dev.2025-10-23.e95b5a90") {
166
+ if (!buster || buster !== "1.4.1-dev.2025-10-23.55fbe6ff") {
167
167
  localSettings = {};
168
168
  }
169
169
  const initSettings = useRef(initializer({
@@ -177,9 +177,9 @@ export function SettingsProvider(_ref2) {
177
177
  // If resolvedSettings is null, do not update settings
178
178
  if (resolvedSettings) {
179
179
  const validatedSettings = validateSettings(resolvedSettings);
180
- console.log("Initial settings:", validatedSettings);
180
+ console.log('Initial settings:', validatedSettings);
181
181
  dispatch({
182
- type: "init",
182
+ type: 'init',
183
183
  settings: validatedSettings
184
184
  });
185
185
  }
@@ -188,12 +188,12 @@ export function SettingsProvider(_ref2) {
188
188
  if (canOverrideSettings && settings) {
189
189
  try {
190
190
  localStorage.setItem(DATASET_STORAGE_KEY, JSON.stringify(_objectSpread({
191
- buster: "1.4.1-dev.2025-10-23.e95b5a90" || "0.0.0",
191
+ buster: "1.4.1-dev.2025-10-23.55fbe6ff" || '0.0.0',
192
192
  timestamp: Date.now()
193
- }, _.omit(settings, "data"))));
193
+ }, _.omit(settings, 'data'))));
194
194
  } catch (err) {
195
- if (err.code === 22 || err.code === 1014 || err.name === "QuotaExceededError" || err.name === "NS_ERROR_DOM_QUOTA_REACHED") {
196
- console.err("Browser storage quota exceeded");
195
+ if (err.code === 22 || err.code === 1014 || err.name === 'QuotaExceededError' || err.name === 'NS_ERROR_DOM_QUOTA_REACHED') {
196
+ console.err('Browser storage quota exceeded');
197
197
  } else {
198
198
  console.err(err);
199
199
  }
@@ -214,17 +214,17 @@ export function useSettings() {
214
214
  export function useSettingsDispatch() {
215
215
  return useContext(SettingsDispatchContext);
216
216
  }
217
- const OBS_DATA_KEYS = ["name", "type",
217
+ const OBS_DATA_KEYS = ['name', 'type',
218
218
  // categorical and numerical
219
- "codes", "codesMap", "values", "n_values", "value_counts",
219
+ 'codes', 'codesMap', 'values', 'n_values', 'value_counts',
220
220
  // numerical
221
- "bins", "min", "max", "mean", "median", "n_unique"];
221
+ 'bins', 'min', 'max', 'mean', 'median', 'n_unique'];
222
222
  const splitObs = obs => {
223
223
  if (!obs) return {
224
224
  settings: null,
225
225
  data: {}
226
226
  };
227
- const settings = _.pick(obs, ["name", "omit", "bins"]);
227
+ const settings = _.pick(obs, ['name', 'omit', 'bins']);
228
228
  const data = obs ? {
229
229
  [obs.name]: _.pick(obs, OBS_DATA_KEYS)
230
230
  } : {};
@@ -240,16 +240,16 @@ const splitVar = v => {
240
240
  };
241
241
  let settings, data;
242
242
  if (v.isSet) {
243
- settings = _objectSpread(_objectSpread({}, _.pick(v, ["name", "isSet"])), {}, {
243
+ settings = _objectSpread(_objectSpread({}, _.pick(v, ['name', 'isSet'])), {}, {
244
244
  vars: _.map(v.vars, vv => ({
245
245
  name: vv.name
246
246
  }))
247
247
  });
248
- data = _.fromPairs(_.map(v.vars, vv => [vv.name, _.pick(vv, ["name", "index", "matrix_index"])]));
248
+ data = _.fromPairs(_.map(v.vars, vv => [vv.name, _.pick(vv, ['name', 'index', 'matrix_index'])]));
249
249
  } else {
250
- settings = _.pick(v, ["name", "isSet"]);
250
+ settings = _.pick(v, ['name', 'isSet']);
251
251
  data = {
252
- [v.name]: _.pick(v, ["name", "index", "matrix_index"])
252
+ [v.name]: _.pick(v, ['name', 'index', 'matrix_index'])
253
253
  };
254
254
  }
255
255
  return {
@@ -259,11 +259,11 @@ const splitVar = v => {
259
259
  };
260
260
  function settingsReducer(settings, action) {
261
261
  switch (action.type) {
262
- case "init":
262
+ case 'init':
263
263
  {
264
264
  return action.settings;
265
265
  }
266
- case "select.obs":
266
+ case 'select.obs':
267
267
  {
268
268
  var _action$obs;
269
269
  const {
@@ -287,13 +287,13 @@ function settingsReducer(settings, action) {
287
287
  })
288
288
  });
289
289
  }
290
- case "select.obsm":
290
+ case 'select.obsm':
291
291
  {
292
292
  return _objectSpread(_objectSpread({}, settings), {}, {
293
293
  selectedObsm: action.obsm
294
294
  });
295
295
  }
296
- case "select.var":
296
+ case 'select.var':
297
297
  {
298
298
  const {
299
299
  settings: varSettings,
@@ -306,7 +306,7 @@ function settingsReducer(settings, action) {
306
306
  })
307
307
  }));
308
308
  }
309
- case "select.multivar":
309
+ case 'select.multivar':
310
310
  {
311
311
  const inMultiVar = settings.selectedMultiVar.some(v => v.name === action.var.name);
312
312
  if (inMultiVar) {
@@ -324,13 +324,13 @@ function settingsReducer(settings, action) {
324
324
  }));
325
325
  }
326
326
  }
327
- case "deselect.multivar":
327
+ case 'deselect.multivar':
328
328
  {
329
329
  return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
330
330
  selectedMultiVar: settings.selectedMultiVar.filter(v => v !== action.var.name)
331
331
  }));
332
332
  }
333
- case "toggle.multivar":
333
+ case 'toggle.multivar':
334
334
  {
335
335
  const inMultiVar = settings.selectedMultiVar.some(v => v.name === action.var.name);
336
336
  if (inMultiVar) {
@@ -350,13 +350,13 @@ function settingsReducer(settings, action) {
350
350
  }));
351
351
  }
352
352
  }
353
- case "set.colorEncoding":
353
+ case 'set.colorEncoding':
354
354
  {
355
355
  return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
356
356
  colorEncoding: action.value
357
357
  }));
358
358
  }
359
- case "reset.vars":
359
+ case 'reset.vars':
360
360
  {
361
361
  return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
362
362
  vars: [],
@@ -364,19 +364,19 @@ function settingsReducer(settings, action) {
364
364
  selectedMultiVar: []
365
365
  }));
366
366
  }
367
- case "reset.multiVar":
367
+ case 'reset.multiVar':
368
368
  {
369
369
  return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
370
370
  selectedMultiVar: []
371
371
  }));
372
372
  }
373
- case "reset.var":
373
+ case 'reset.var':
374
374
  {
375
375
  return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
376
376
  selectedVar: null
377
377
  }));
378
378
  }
379
- case "add.var":
379
+ case 'add.var':
380
380
  {
381
381
  if (settings.vars.find(v => v.name === action.var.name)) {
382
382
  return settings;
@@ -393,7 +393,7 @@ function settingsReducer(settings, action) {
393
393
  });
394
394
  }
395
395
  }
396
- case "remove.var":
396
+ case 'remove.var':
397
397
  {
398
398
  var _settings$selectedVar;
399
399
  const selectedVar = ((_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name) === action.var.name ? null : settings.selectedVar;
@@ -404,7 +404,7 @@ function settingsReducer(settings, action) {
404
404
  selectedMultiVar: selectedMultiVar
405
405
  }));
406
406
  }
407
- case "add.varSet.var":
407
+ case 'add.varSet.var':
408
408
  {
409
409
  const varSet = settings.vars.find(s => s.isSet && s.name === action.varSet.name);
410
410
  if (!varSet) {
@@ -450,7 +450,7 @@ function settingsReducer(settings, action) {
450
450
  }));
451
451
  }
452
452
  }
453
- case "remove.varSet.var":
453
+ case 'remove.varSet.var':
454
454
  {
455
455
  const varSet = settings.vars.find(s => s.isSet && s.name === action.varSet.name);
456
456
  if (!varSet) {
@@ -502,7 +502,7 @@ function settingsReducer(settings, action) {
502
502
  }
503
503
  }
504
504
  }
505
- case "set.controls.colorScale":
505
+ case 'set.controls.colorScale':
506
506
  {
507
507
  return _objectSpread(_objectSpread({}, settings), {}, {
508
508
  controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
@@ -510,7 +510,7 @@ function settingsReducer(settings, action) {
510
510
  })
511
511
  });
512
512
  }
513
- case "set.controls.range":
513
+ case 'set.controls.range':
514
514
  {
515
515
  return _objectSpread(_objectSpread({}, settings), {}, {
516
516
  controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
@@ -518,7 +518,7 @@ function settingsReducer(settings, action) {
518
518
  })
519
519
  });
520
520
  }
521
- case "set.controls.colorAxis":
521
+ case 'set.controls.colorAxis':
522
522
  {
523
523
  return _objectSpread(_objectSpread({}, settings), {}, {
524
524
  controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
@@ -526,7 +526,7 @@ function settingsReducer(settings, action) {
526
526
  })
527
527
  });
528
528
  }
529
- case "set.controls.colorAxis.crange":
529
+ case 'set.controls.colorAxis.crange':
530
530
  {
531
531
  return _objectSpread(_objectSpread({}, settings), {}, {
532
532
  controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
@@ -537,7 +537,7 @@ function settingsReducer(settings, action) {
537
537
  })
538
538
  });
539
539
  }
540
- case "set.controls.colorAxis.cmin":
540
+ case 'set.controls.colorAxis.cmin':
541
541
  {
542
542
  return _objectSpread(_objectSpread({}, settings), {}, {
543
543
  controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
@@ -547,7 +547,7 @@ function settingsReducer(settings, action) {
547
547
  })
548
548
  });
549
549
  }
550
- case "set.controls.colorAxis.cmax":
550
+ case 'set.controls.colorAxis.cmax':
551
551
  {
552
552
  return _objectSpread(_objectSpread({}, settings), {}, {
553
553
  controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
@@ -557,7 +557,7 @@ function settingsReducer(settings, action) {
557
557
  })
558
558
  });
559
559
  }
560
- case "set.controls.scale":
560
+ case 'set.controls.scale':
561
561
  {
562
562
  return _objectSpread(_objectSpread({}, settings), {}, {
563
563
  controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
@@ -567,7 +567,7 @@ function settingsReducer(settings, action) {
567
567
  })
568
568
  });
569
569
  }
570
- case "set.controls.meanOnlyExpressed":
570
+ case 'set.controls.meanOnlyExpressed':
571
571
  {
572
572
  return _objectSpread(_objectSpread({}, settings), {}, {
573
573
  controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
@@ -575,7 +575,7 @@ function settingsReducer(settings, action) {
575
575
  })
576
576
  });
577
577
  }
578
- case "set.controls.expressionCutoff":
578
+ case 'set.controls.expressionCutoff':
579
579
  {
580
580
  return _objectSpread(_objectSpread({}, settings), {}, {
581
581
  controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
@@ -583,7 +583,7 @@ function settingsReducer(settings, action) {
583
583
  })
584
584
  });
585
585
  }
586
- case "toggle.slice.obs":
586
+ case 'toggle.slice.obs':
587
587
  {
588
588
  if (settings.selectedObs && settings.selectedObs.name === action.obs.name) {
589
589
  return _objectSpread(_objectSpread({}, settings), {}, {
@@ -607,7 +607,7 @@ function settingsReducer(settings, action) {
607
607
  });
608
608
  }
609
609
  }
610
- case "toggle.slice.polygons":
610
+ case 'toggle.slice.polygons':
611
611
  {
612
612
  return _objectSpread(_objectSpread({}, settings), {}, {
613
613
  sliceBy: _objectSpread(_objectSpread({}, settings.sliceBy), {}, {
@@ -615,7 +615,7 @@ function settingsReducer(settings, action) {
615
615
  })
616
616
  });
617
617
  }
618
- case "disable.slice.polygons":
618
+ case 'disable.slice.polygons':
619
619
  {
620
620
  return _objectSpread(_objectSpread({}, settings), {}, {
621
621
  sliceBy: _objectSpread(_objectSpread({}, settings.sliceBy), {}, {
@@ -623,7 +623,7 @@ function settingsReducer(settings, action) {
623
623
  })
624
624
  });
625
625
  }
626
- case "add.label.obs":
626
+ case 'add.label.obs':
627
627
  {
628
628
  if (_.includes(settings.labelObs, action.obs.name)) {
629
629
  return settings;
@@ -640,19 +640,19 @@ function settingsReducer(settings, action) {
640
640
  });
641
641
  }
642
642
  }
643
- case "remove.label.obs":
643
+ case 'remove.label.obs':
644
644
  {
645
645
  return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
646
646
  labelObs: settings.labelObs.filter(a => a !== action.obsName)
647
647
  }));
648
648
  }
649
- case "reset.label.obs":
649
+ case 'reset.label.obs':
650
650
  {
651
651
  return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
652
652
  labelObs: []
653
653
  }));
654
654
  }
655
- case "set.varSort":
655
+ case 'set.varSort':
656
656
  {
657
657
  return _objectSpread(_objectSpread({}, settings), {}, {
658
658
  varSort: _objectSpread(_objectSpread({}, settings.varSort), {}, {
@@ -663,7 +663,7 @@ function settingsReducer(settings, action) {
663
663
  })
664
664
  });
665
665
  }
666
- case "set.varSort.sort":
666
+ case 'set.varSort.sort':
667
667
  {
668
668
  return _objectSpread(_objectSpread({}, settings), {}, {
669
669
  varSort: _objectSpread(_objectSpread({}, settings.varSort), {}, {
@@ -673,7 +673,7 @@ function settingsReducer(settings, action) {
673
673
  })
674
674
  });
675
675
  }
676
- case "set.varSort.sortOrder":
676
+ case 'set.varSort.sortOrder':
677
677
  {
678
678
  return _objectSpread(_objectSpread({}, settings), {}, {
679
679
  varSort: _objectSpread(_objectSpread({}, settings.varSort), {}, {
@@ -683,7 +683,7 @@ function settingsReducer(settings, action) {
683
683
  })
684
684
  });
685
685
  }
686
- case "set.polygons":
686
+ case 'set.polygons':
687
687
  {
688
688
  return _objectSpread(_objectSpread({}, settings), {}, {
689
689
  polygons: _objectSpread(_objectSpread({}, settings.polygons), {}, {
@@ -691,7 +691,7 @@ function settingsReducer(settings, action) {
691
691
  })
692
692
  });
693
693
  }
694
- case "set.pseudospatial.maskSet":
694
+ case 'set.pseudospatial.maskSet':
695
695
  {
696
696
  return _objectSpread(_objectSpread({}, settings), {}, {
697
697
  pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
@@ -699,7 +699,7 @@ function settingsReducer(settings, action) {
699
699
  })
700
700
  });
701
701
  }
702
- case "set.pseudospatial.maskValues":
702
+ case 'set.pseudospatial.maskValues':
703
703
  {
704
704
  return _objectSpread(_objectSpread({}, settings), {}, {
705
705
  pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
@@ -707,7 +707,7 @@ function settingsReducer(settings, action) {
707
707
  })
708
708
  });
709
709
  }
710
- case "set.pseudospatial.categoricalMode":
710
+ case 'set.pseudospatial.categoricalMode':
711
711
  {
712
712
  return _objectSpread(_objectSpread({}, settings), {}, {
713
713
  pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
@@ -715,7 +715,7 @@ function settingsReducer(settings, action) {
715
715
  })
716
716
  });
717
717
  }
718
- case "toggle.pseudospatial.refImg.visible":
718
+ case 'toggle.pseudospatial.refImg.visible':
719
719
  {
720
720
  return _objectSpread(_objectSpread({}, settings), {}, {
721
721
  pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
@@ -725,7 +725,7 @@ function settingsReducer(settings, action) {
725
725
  })
726
726
  });
727
727
  }
728
- case "set.pseudospatial.refImg.opacity":
728
+ case 'set.pseudospatial.refImg.opacity':
729
729
  {
730
730
  return _objectSpread(_objectSpread({}, settings), {}, {
731
731
  pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
@@ -737,7 +737,7 @@ function settingsReducer(settings, action) {
737
737
  }
738
738
  default:
739
739
  {
740
- throw Error("Unknown action: " + action.type);
740
+ throw Error('Unknown action: ' + action.type);
741
741
  }
742
742
  }
743
743
  }
@@ -1,6 +1,6 @@
1
- import { createContext, useContext } from "react";
2
- import { useFilter } from "../utils/Filter";
3
- import { useObsData, useObsmData, useXData } from "../utils/zarrData";
1
+ import { createContext, useContext } from 'react';
2
+ import { useFilter } from '../utils/Filter';
3
+ import { useObsData, useObsmData, useXData } from '../utils/zarrData';
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  const ZarrDataContext = /*#__PURE__*/createContext(null);
6
6
  export function ZarrDataProvider(_ref) {
@@ -1,6 +1,6 @@
1
- import { useCallback } from "react";
2
- import { COLORSCALES } from "../constants/colorscales";
3
- import { useSettings } from "../context/SettingsContext";
1
+ import { useCallback } from 'react';
2
+ import { COLORSCALES } from '../constants/colorscales';
3
+ import { useSettings } from '../context/SettingsContext';
4
4
  const GRAY = [214, 212, 212];
5
5
  const parseHexColor = color => {
6
6
  const r = parseInt(color === null || color === void 0 ? void 0 : color.substring(1, 3), 16);
@@ -31,7 +31,7 @@ const computeColor = (colormap, value) => {
31
31
  };
32
32
  export const rgbToHex = color => {
33
33
  const [r, g, b] = color || [0, 0, 0, 0];
34
- return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
34
+ return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
35
35
  };
36
36
  export const useColor = () => {
37
37
  const settings = useSettings();
@@ -47,7 +47,7 @@ export const useColor = () => {
47
47
  colorEncoding = settings.colorEncoding,
48
48
  colorscale = null
49
49
  } = _ref;
50
- const colormap = colorscale || COLORSCALES[categorical ? "Accent" : settings.controls.colorScale];
50
+ const colormap = colorscale || COLORSCALES[categorical ? 'Accent' : settings.controls.colorScale];
51
51
  if (colorEncoding) {
52
52
  if (grayOut) {
53
53
  // Mix color with gray manually instead of chroma.mix to get better performance with deck.gl
@@ -1,5 +1,5 @@
1
- import { WebMercatorViewport } from "@deck.gl/core";
2
- import _ from "lodash";
1
+ import { WebMercatorViewport } from '@deck.gl/core';
2
+ import _ from 'lodash';
3
3
  export class MapHelper {
4
4
  fitBounds(coords) {
5
5
  let {
@@ -3,9 +3,9 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
3
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
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
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); }
6
- import { useCallback } from "react";
7
- import { useQueries, useQuery } from "@tanstack/react-query";
8
- import { ArrayNotFoundError, GroupNotFoundError, openArray } from "zarr";
6
+ import { useCallback } from 'react';
7
+ import { useQueries, useQuery } from '@tanstack/react-query';
8
+ import { ArrayNotFoundError, GroupNotFoundError, openArray } from 'zarr';
9
9
  export const GET_OPTIONS = {
10
10
  concurrencyLimit: 10,
11
11
  // max number of concurrent requests (default 10)
@@ -22,7 +22,7 @@ export class ZarrHelper {
22
22
  const z = await openArray({
23
23
  store: url,
24
24
  path: path,
25
- mode: "r"
25
+ mode: 'r'
26
26
  });
27
27
  return z;
28
28
  }
@@ -53,7 +53,7 @@ export const useZarr = function (_ref2) {
53
53
  isLoading: isPending = false,
54
54
  error: serverError = null
55
55
  } = useQuery(_objectSpread({
56
- queryKey: ["zarr", url, path, s],
56
+ queryKey: ['zarr', url, path, s],
57
57
  queryFn: () => fetchDataFromZarr(url, path, s, options),
58
58
  retry: (failureCount, _ref3) => {
59
59
  let {
@@ -94,7 +94,7 @@ export const useMultipleZarr = function (inputs) {
94
94
  serverError = null
95
95
  } = useQueries({
96
96
  queries: inputs.map(input => _objectSpread({
97
- queryKey: ["zarr", input.url, input.path, input.s],
97
+ queryKey: ['zarr', input.url, input.path, input.s],
98
98
  queryFn: () => fetchDataFromZarr(input.url, input.path, input.s, options),
99
99
  retry: (failureCount, _ref4) => {
100
100
  let {
package/dist/esm/index.js CHANGED
@@ -1,22 +1,22 @@
1
- export { Dotplot } from "./components/dotplot/Dotplot";
2
- export { DotplotControls } from "./components/dotplot/DotplotControls";
3
- export { FullPage } from "./components/full-page/FullPage";
4
- export { Heatmap } from "./components/heatmap/Heatmap";
5
- export { HeatmapControls } from "./components/heatmap/HeatmapControls";
6
- export { Matrixplot } from "./components/matrixplot/Matrixplot";
7
- export { MatrixplotControls } from "./components/matrixplot/MatrixplotControls";
8
- export { ObsColsList } from "./components/obs-list/ObsList";
9
- export { ObsmKeysList } from "./components/obsm-list/ObsmList";
10
- export { OffcanvasControls, OffcanvasObs, OffcanvasObsm, OffcanvasVars } from "./components/offcanvas";
11
- export { Pseudospatial } from "./components/pseudospatial/Pseudospatial";
12
- export { Scatterplot } from "./components/scatterplot/Scatterplot";
13
- export { ScatterplotControls } from "./components/scatterplot/ScatterplotControls";
14
- export { SearchBar } from "./components/search-bar/SearchBar";
15
- export { Toolbar } from "./components/toolbar/Toolbar";
16
- export { VarNamesList } from "./components/var-list/VarList";
17
- export { Violin } from "./components/violin/Violin";
18
- export { ViolinControls } from "./components/violin/ViolinControls";
19
- export { COLORSCALES } from "./constants/colorscales";
20
- export { PLOT_TYPES, SELECTION_MODES, VIOLIN_MODES } from "./constants/constants";
21
- export { DatasetProvider } from "./context/DatasetContext";
22
- export { FilterProvider } from "./context/FilterContext";
1
+ export { Dotplot } from './components/dotplot/Dotplot';
2
+ export { DotplotControls } from './components/dotplot/DotplotControls';
3
+ export { FullPage } from './components/full-page/FullPage';
4
+ export { Heatmap } from './components/heatmap/Heatmap';
5
+ export { HeatmapControls } from './components/heatmap/HeatmapControls';
6
+ export { Matrixplot } from './components/matrixplot/Matrixplot';
7
+ export { MatrixplotControls } from './components/matrixplot/MatrixplotControls';
8
+ export { ObsColsList } from './components/obs-list/ObsList';
9
+ export { ObsmKeysList } from './components/obsm-list/ObsmList';
10
+ export { OffcanvasControls, OffcanvasObs, OffcanvasObsm, OffcanvasVars } from './components/offcanvas';
11
+ export { Pseudospatial } from './components/pseudospatial/Pseudospatial';
12
+ export { Scatterplot } from './components/scatterplot/Scatterplot';
13
+ export { ScatterplotControls } from './components/scatterplot/ScatterplotControls';
14
+ export { SearchBar } from './components/search-bar/SearchBar';
15
+ export { Toolbar } from './components/toolbar/Toolbar';
16
+ export { VarNamesList } from './components/var-list/VarList';
17
+ export { Violin } from './components/violin/Violin';
18
+ export { ViolinControls } from './components/violin/ViolinControls';
19
+ export { COLORSCALES } from './constants/colorscales';
20
+ export { PLOT_TYPES, SELECTION_MODES, VIOLIN_MODES } from './constants/constants';
21
+ export { DatasetProvider } from './context/DatasetContext';
22
+ export { FilterProvider } from './context/FilterContext';
@@ -1,10 +1,10 @@
1
- import { useEffect, useCallback, useMemo } from "react";
2
- import { booleanPointInPolygon, point } from "@turf/turf";
3
- import _ from "lodash";
4
- import { useSelectedObs } from "./Resolver";
5
- import { COLOR_ENCODINGS, OBS_TYPES } from "../constants/constants";
6
- import { useFilteredDataDispatch } from "../context/FilterContext";
7
- import { useSettings } from "../context/SettingsContext";
1
+ import { useEffect, useCallback, useMemo } from 'react';
2
+ import { booleanPointInPolygon, point } from '@turf/turf';
3
+ import _ from 'lodash';
4
+ import { useSelectedObs } from './Resolver';
5
+ import { COLOR_ENCODINGS, OBS_TYPES } from '../constants/constants';
6
+ import { useFilteredDataDispatch } from '../context/FilterContext';
7
+ import { useSettings } from '../context/SettingsContext';
8
8
  const EPSILON = 1e-6;
9
9
  const isInBins = (v, binEdges, indices) => {
10
10
  const lastEdge = _.last(binEdges);
@@ -144,7 +144,7 @@ export const useFilter = data => {
144
144
  useEffect(() => {
145
145
  if (!isPending && !serverError) {
146
146
  filterDataDispatch({
147
- type: "set.obs.indices",
147
+ type: 'set.obs.indices',
148
148
  indices: isSliced ? filteredIndices : null,
149
149
  valueMin: valueMin,
150
150
  valueMax: valueMax,
@@ -1,7 +1,7 @@
1
- import { SparkLineChart, mangoFusionPalette, blueberryTwilightPalette } from "@mui/x-charts";
2
- import _ from "lodash";
3
- import { LoadingLinear } from "./LoadingIndicators";
4
- import { formatNumerical, FORMATS } from "./string";
1
+ import { SparkLineChart, mangoFusionPalette, blueberryTwilightPalette } from '@mui/x-charts';
2
+ import _ from 'lodash';
3
+ import { LoadingLinear } from './LoadingIndicators';
4
+ import { formatNumerical, FORMATS } from './string';
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  export function Histogram(_ref) {
7
7
  var _data$bin_edges;
@@ -34,11 +34,11 @@ export function Histogram(_ref) {
34
34
  },
35
35
  xAxis: {
36
36
  data: _.range((_data$bin_edges = data.bin_edges) === null || _data$bin_edges === void 0 ? void 0 : _data$bin_edges.length) || null,
37
- valueFormatter: v => "Bin [".concat(formatNumerical(data.bin_edges[v][0], FORMATS.EXPONENTIAL), ", ").concat(formatNumerical(data.bin_edges[v][1], FORMATS.EXPONENTIAL)).concat(v === data.bin_edges.length - 1 ? "]" : ")")
37
+ valueFormatter: v => "Bin [".concat(formatNumerical(data.bin_edges[v][0], FORMATS.EXPONENTIAL), ", ").concat(formatNumerical(data.bin_edges[v][1], FORMATS.EXPONENTIAL)).concat(v === data.bin_edges.length - 1 ? ']' : ')')
38
38
  },
39
39
  slotProps: {
40
40
  popper: {
41
- className: "feature-histogram-tooltip"
41
+ className: 'feature-histogram-tooltip'
42
42
  }
43
43
  }
44
44
  })
@@ -1,15 +1,15 @@
1
- import { useState } from "react";
2
- import { Alert } from "react-bootstrap";
1
+ import { useState } from 'react';
2
+ import { Alert } from 'react-bootstrap';
3
3
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
4
4
  export const ImageViewer = _ref => {
5
5
  let {
6
6
  src,
7
7
  alt,
8
- className = "img-fluid"
8
+ className = 'img-fluid'
9
9
  } = _ref;
10
10
  const [error, setError] = useState(false);
11
11
  const handleError = () => {
12
- console.error("Error loading image from src:", src);
12
+ console.error('Error loading image from src:', src);
13
13
  setError(true);
14
14
  };
15
15
  if (!error) {