@haniffalab/cherita-react 1.3.0 → 1.3.1-dev.2025-10-29.def77f5f

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 (137) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/controls/Controls.js +38 -30
  3. package/dist/cjs/components/dotplot/Dotplot.js +85 -57
  4. package/dist/cjs/components/dotplot/DotplotControls.js +103 -83
  5. package/dist/cjs/components/full-page/FullPage.js +167 -114
  6. package/dist/cjs/components/full-page/PlotAlert.js +45 -0
  7. package/dist/cjs/components/full-page/PlotTypeSelector.js +102 -0
  8. package/dist/cjs/components/heatmap/Heatmap.js +83 -53
  9. package/dist/cjs/components/heatmap/HeatmapControls.js +6 -3
  10. package/dist/cjs/components/icons/DotPlotIcon.js +64 -0
  11. package/dist/cjs/components/icons/HeatmapIcon.js +45 -0
  12. package/dist/cjs/components/icons/MatrixPlotIcon.1.js +57 -0
  13. package/dist/cjs/components/icons/MatrixPlotIcon.js +59 -0
  14. package/dist/cjs/components/icons/ScatterplotIcon.1.js +164 -0
  15. package/dist/cjs/components/icons/ScatterplotIcon.js +144 -0
  16. package/dist/cjs/components/icons/ViolinPlotIcon.js +42 -0
  17. package/dist/cjs/components/matrixplot/Matrixplot.js +83 -54
  18. package/dist/cjs/components/matrixplot/MatrixplotControls.js +8 -5
  19. package/dist/cjs/components/obs-list/ObsItem.js +305 -216
  20. package/dist/cjs/components/obs-list/ObsList.js +164 -128
  21. package/dist/cjs/components/obs-list/ObsToolbar.js +2 -3
  22. package/dist/cjs/components/obsm-list/ObsmList.js +67 -28
  23. package/dist/cjs/components/offcanvas/index.js +62 -27
  24. package/dist/cjs/components/pseudospatial/Pseudospatial.js +132 -76
  25. package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +122 -74
  26. package/dist/cjs/components/scatterplot/Scatterplot.js +223 -175
  27. package/dist/cjs/components/scatterplot/ScatterplotControls.js +45 -31
  28. package/dist/cjs/components/scatterplot/SpatialControls.js +143 -116
  29. package/dist/cjs/components/scatterplot/Toolbox.js +41 -30
  30. package/dist/cjs/components/search-bar/SearchBar.js +176 -120
  31. package/dist/cjs/components/search-bar/SearchInfo.js +79 -85
  32. package/dist/cjs/components/search-bar/SearchResults.js +93 -71
  33. package/dist/cjs/components/toolbar/Toolbar.js +111 -0
  34. package/dist/cjs/components/var-list/VarItem.js +131 -103
  35. package/dist/cjs/components/var-list/VarList.js +96 -74
  36. package/dist/cjs/components/var-list/VarListToolbar.js +59 -54
  37. package/dist/cjs/components/var-list/VarSet.js +126 -108
  38. package/dist/cjs/components/violin/Violin.js +124 -81
  39. package/dist/cjs/components/violin/ViolinControls.js +8 -5
  40. package/dist/cjs/constants/colorscales.js +19 -19
  41. package/dist/cjs/constants/constants.js +54 -39
  42. package/dist/cjs/context/DatasetContext.js +27 -17
  43. package/dist/cjs/context/FilterContext.js +11 -9
  44. package/dist/cjs/context/SettingsContext.js +339 -125
  45. package/dist/cjs/context/ZarrDataContext.js +6 -5
  46. package/dist/cjs/helpers/color-helper.js +2 -2
  47. package/dist/cjs/helpers/map-helper.js +2 -1
  48. package/dist/cjs/helpers/zarr-helper.js +3 -3
  49. package/dist/cjs/index.js +15 -21
  50. package/dist/cjs/utils/Filter.js +16 -11
  51. package/dist/cjs/utils/Histogram.js +35 -33
  52. package/dist/cjs/utils/ImageViewer.js +11 -8
  53. package/dist/cjs/utils/Legend.js +37 -30
  54. package/dist/cjs/utils/LoadingIndicators.js +15 -13
  55. package/dist/cjs/utils/Resolver.js +213 -0
  56. package/dist/cjs/utils/Skeleton.js +10 -10
  57. package/dist/cjs/utils/StyledTooltip.js +44 -0
  58. package/dist/cjs/utils/VirtualizedList.js +36 -29
  59. package/dist/cjs/utils/errors.js +15 -15
  60. package/dist/cjs/utils/requests.js +21 -9
  61. package/dist/cjs/utils/search.js +4 -4
  62. package/dist/cjs/utils/string.js +6 -6
  63. package/dist/cjs/utils/zarrData.js +20 -21
  64. package/dist/css/cherita.css +188 -65
  65. package/dist/css/cherita.css.map +1 -1
  66. package/dist/esm/components/controls/Controls.js +43 -35
  67. package/dist/esm/components/dotplot/Dotplot.js +93 -64
  68. package/dist/esm/components/dotplot/DotplotControls.js +106 -85
  69. package/dist/esm/components/full-page/FullPage.js +180 -124
  70. package/dist/esm/components/full-page/PlotAlert.js +39 -0
  71. package/dist/esm/components/full-page/PlotTypeSelector.js +95 -0
  72. package/dist/esm/components/heatmap/Heatmap.js +91 -60
  73. package/dist/esm/components/heatmap/HeatmapControls.js +8 -4
  74. package/dist/esm/components/icons/DotPlotIcon.js +58 -0
  75. package/dist/esm/components/icons/HeatmapIcon.js +39 -0
  76. package/dist/esm/components/icons/MatrixPlotIcon.1.js +51 -0
  77. package/dist/esm/components/icons/MatrixPlotIcon.js +53 -0
  78. package/dist/esm/components/icons/ScatterplotIcon.1.js +158 -0
  79. package/dist/esm/components/icons/ScatterplotIcon.js +138 -0
  80. package/dist/esm/components/icons/ViolinPlotIcon.js +36 -0
  81. package/dist/esm/components/matrixplot/Matrixplot.js +91 -61
  82. package/dist/esm/components/matrixplot/MatrixplotControls.js +10 -6
  83. package/dist/esm/components/obs-list/ObsItem.js +320 -228
  84. package/dist/esm/components/obs-list/ObsList.js +179 -142
  85. package/dist/esm/components/obs-list/ObsToolbar.js +3 -3
  86. package/dist/esm/components/obsm-list/ObsmList.js +71 -32
  87. package/dist/esm/components/offcanvas/index.js +68 -33
  88. package/dist/esm/components/pseudospatial/Pseudospatial.js +145 -88
  89. package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +127 -78
  90. package/dist/esm/components/scatterplot/Scatterplot.js +243 -194
  91. package/dist/esm/components/scatterplot/ScatterplotControls.js +50 -35
  92. package/dist/esm/components/scatterplot/SpatialControls.js +155 -127
  93. package/dist/esm/components/scatterplot/Toolbox.js +44 -32
  94. package/dist/esm/components/search-bar/SearchBar.js +187 -130
  95. package/dist/esm/components/search-bar/SearchInfo.js +86 -91
  96. package/dist/esm/components/search-bar/SearchResults.js +100 -77
  97. package/dist/esm/components/toolbar/Toolbar.js +101 -0
  98. package/dist/esm/components/var-list/VarItem.js +142 -113
  99. package/dist/esm/components/var-list/VarList.js +108 -88
  100. package/dist/esm/components/var-list/VarListToolbar.js +64 -58
  101. package/dist/esm/components/var-list/VarSet.js +134 -115
  102. package/dist/esm/components/violin/Violin.js +135 -91
  103. package/dist/esm/components/violin/ViolinControls.js +10 -6
  104. package/dist/esm/constants/colorscales.js +19 -19
  105. package/dist/esm/constants/constants.js +53 -38
  106. package/dist/esm/context/DatasetContext.js +34 -23
  107. package/dist/esm/context/FilterContext.js +11 -8
  108. package/dist/esm/context/SettingsContext.js +341 -126
  109. package/dist/esm/context/ZarrDataContext.js +8 -6
  110. package/dist/esm/helpers/color-helper.js +5 -5
  111. package/dist/esm/helpers/map-helper.js +4 -3
  112. package/dist/esm/helpers/zarr-helper.js +6 -6
  113. package/dist/esm/index.js +22 -22
  114. package/dist/esm/utils/Filter.js +22 -17
  115. package/dist/esm/utils/Histogram.js +39 -37
  116. package/dist/esm/utils/ImageViewer.js +12 -8
  117. package/dist/esm/utils/Legend.js +44 -36
  118. package/dist/esm/utils/LoadingIndicators.js +16 -13
  119. package/dist/esm/utils/Resolver.js +201 -0
  120. package/dist/esm/utils/Skeleton.js +11 -10
  121. package/dist/esm/utils/StyledTooltip.js +38 -0
  122. package/dist/esm/utils/VirtualizedList.js +37 -29
  123. package/dist/esm/utils/errors.js +15 -15
  124. package/dist/esm/utils/requests.js +24 -12
  125. package/dist/esm/utils/search.js +7 -7
  126. package/dist/esm/utils/string.js +7 -7
  127. package/dist/esm/utils/zarrData.js +27 -28
  128. package/package.json +24 -10
  129. package/scss/cherita-bootstrap.scss +2 -2
  130. package/scss/cherita.scss +65 -17
  131. package/scss/components/accordions.scss +15 -2
  132. package/scss/components/layouts.scss +116 -30
  133. package/scss/components/lists.scss +16 -5
  134. package/scss/components/plotly.scss +40 -23
  135. package/scss/components/plots.scss +14 -1
  136. package/dist/cjs/components/full-page/FullPagePseudospatial.js +0 -157
  137. package/dist/esm/components/full-page/FullPagePseudospatial.js +0 -149
@@ -7,6 +7,7 @@ exports.useXData = exports.useObsmData = exports.useObsData = exports.useLabelOb
7
7
  var _react = require("react");
8
8
  var _lodash = _interopRequireDefault(require("lodash"));
9
9
  var _zarr = require("zarr");
10
+ var _Resolver = require("./Resolver");
10
11
  var _constants = require("../constants/constants");
11
12
  var _DatasetContext = require("../context/DatasetContext");
12
13
  var _SettingsContext = require("../context/SettingsContext");
@@ -20,7 +21,7 @@ const useObsmData = function () {
20
21
  obsm = obsm || settings.selectedObsm;
21
22
  const obsmParams = (0, _react.useMemo)(() => ({
22
23
  url: dataset.url,
23
- path: "obsm/" + obsm,
24
+ path: 'obsm/' + obsm,
24
25
  s: [null, (0, _zarr.slice)(null, 2)] // load only [:, :2]
25
26
  }), [dataset.url, obsm]);
26
27
  return (0, _zarrHelper.useZarr)(obsmParams, _zarrHelper.GET_OPTIONS, {
@@ -39,21 +40,18 @@ const meanData = (_i, data) => {
39
40
  const useXData = function () {
40
41
  let agg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : meanData;
41
42
  const dataset = (0, _DatasetContext.useDataset)();
42
- const settings = (0, _SettingsContext.useSettings)();
43
- const xParams = (0, _react.useMemo)(() => {
44
- var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3;
45
- return !settings.selectedVar ? [] : !((_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet) ? [{
43
+ const selectedVar = (0, _Resolver.useSelectedVar)();
44
+ const xParams = (0, _react.useMemo)(() => !selectedVar ? [] : !(selectedVar !== null && selectedVar !== void 0 && selectedVar.isSet) ? [{
45
+ url: dataset.url,
46
+ path: 'X',
47
+ s: [null, selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index]
48
+ }] : _lodash.default.map(selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.vars, v => {
49
+ return {
46
50
  url: dataset.url,
47
- path: "X",
48
- s: [null, (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.matrix_index]
49
- }] : _lodash.default.map((_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars, v => {
50
- return {
51
- url: dataset.url,
52
- path: "X",
53
- s: [null, v.matrix_index]
54
- };
55
- });
56
- }, [dataset.url, settings.selectedVar]);
51
+ path: 'X',
52
+ s: [null, v.matrix_index]
53
+ };
54
+ }), [dataset.url, selectedVar]);
57
55
  return (0, _zarrHelper.useMultipleZarr)(xParams, _zarrHelper.GET_OPTIONS, {
58
56
  enabled: !!xParams.length
59
57
  }, agg);
@@ -63,13 +61,13 @@ const useObsData = function () {
63
61
  var _obs3, _obs4;
64
62
  let obs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
65
63
  const dataset = (0, _DatasetContext.useDataset)();
66
- const settings = (0, _SettingsContext.useSettings)();
67
- obs = obs || settings.selectedObs;
64
+ const selectedObs = (0, _Resolver.useSelectedObs)();
65
+ obs = obs || selectedObs;
68
66
  const obsParams = (0, _react.useMemo)(() => {
69
67
  var _obs, _obs2;
70
68
  return {
71
69
  url: dataset.url,
72
- path: "obs/" + ((_obs = obs) === null || _obs === void 0 ? void 0 : _obs.name) + (((_obs2 = obs) === null || _obs2 === void 0 ? void 0 : _obs2.type) === _constants.OBS_TYPES.CATEGORICAL ? "/codes" : "")
70
+ path: 'obs/' + ((_obs = obs) === null || _obs === void 0 ? void 0 : _obs.name) + (((_obs2 = obs) === null || _obs2 === void 0 ? void 0 : _obs2.type) === _constants.OBS_TYPES.CATEGORICAL ? '/codes' : '')
73
71
  };
74
72
  }, [dataset.url, (_obs3 = obs) === null || _obs3 === void 0 ? void 0 : _obs3.name, (_obs4 = obs) === null || _obs4 === void 0 ? void 0 : _obs4.type]);
75
73
  return (0, _zarrHelper.useZarr)(obsParams, _zarrHelper.GET_OPTIONS, {
@@ -80,13 +78,14 @@ exports.useObsData = useObsData;
80
78
  const useLabelObsData = () => {
81
79
  const dataset = (0, _DatasetContext.useDataset)();
82
80
  const settings = (0, _SettingsContext.useSettings)();
83
- const labelObsParams = (0, _react.useMemo)(() => _lodash.default.map(settings.labelObs, obs => {
81
+ const labelObsParams = (0, _react.useMemo)(() => _lodash.default.map(settings.labelObs, obsName => {
82
+ const obs = settings.data.obs[obsName] || null;
84
83
  return {
85
84
  url: dataset.url,
86
- path: "obs/" + obs.name + (obs.type === _constants.OBS_TYPES.CATEGORICAL ? "/codes" : ""),
85
+ path: 'obs/' + obs.name + (obs.type === _constants.OBS_TYPES.CATEGORICAL ? '/codes' : ''),
87
86
  key: obs.name
88
87
  };
89
- }), [dataset.url, settings.labelObs]);
88
+ }), [dataset.url, settings.data.obs, settings.labelObs]);
90
89
  return (0, _zarrHelper.useMultipleZarr)(labelObsParams, _zarrHelper.GET_OPTIONS, {
91
90
  enabled: !!labelObsParams.length
92
91
  });
@@ -1,6 +1,6 @@
1
1
  @charset "UTF-8";
2
2
  /*!
3
- * Bootstrap v5.3.6 (https://getbootstrap.com/)
3
+ * Bootstrap v5.3.8 (https://getbootstrap.com/)
4
4
  * Copyright 2011-2025 The Bootstrap Authors
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  */
@@ -545,6 +545,10 @@ legend + * {
545
545
  -webkit-appearance: textfield;
546
546
  outline-offset: -2px;
547
547
  }
548
+ [type=search]::-webkit-search-cancel-button {
549
+ cursor: pointer;
550
+ filter: grayscale(1);
551
+ }
548
552
 
549
553
  /* rtl:raw:
550
554
  [type="tel"],
@@ -6141,6 +6145,7 @@ textarea.form-control-lg {
6141
6145
  .spinner-grow,
6142
6146
  .spinner-border {
6143
6147
  display: inline-block;
6148
+ flex-shrink: 0;
6144
6149
  width: var(--bs-spinner-width);
6145
6150
  height: var(--bs-spinner-height);
6146
6151
  vertical-align: var(--bs-spinner-vertical-align);
@@ -7216,7 +7221,7 @@ textarea.form-control-lg {
7216
7221
  display: inline-block !important;
7217
7222
  }
7218
7223
 
7219
- .d-block, .cherita-app .cherita-navbar {
7224
+ .d-block, .cherita-app .cherita-navbar, .cherita-app-container .cherita-app-canvas .cherita-navbar {
7220
7225
  display: block !important;
7221
7226
  }
7222
7227
 
@@ -7240,7 +7245,7 @@ textarea.form-control-lg {
7240
7245
  display: table-cell !important;
7241
7246
  }
7242
7247
 
7243
- .d-flex {
7248
+ .d-flex, .obs-accordion-header .obs-accordion-header-span .accordion-header-toolbar {
7244
7249
  display: flex !important;
7245
7250
  }
7246
7251
 
@@ -7646,7 +7651,7 @@ textarea.form-control-lg {
7646
7651
  flex-wrap: wrap !important;
7647
7652
  }
7648
7653
 
7649
- .flex-nowrap {
7654
+ .flex-nowrap, .obs-accordion-header .obs-accordion-header-span .accordion-header-toolbar {
7650
7655
  flex-wrap: nowrap !important;
7651
7656
  }
7652
7657
 
@@ -7778,7 +7783,7 @@ textarea.form-control-lg {
7778
7783
  order: 6 !important;
7779
7784
  }
7780
7785
 
7781
- .m-0 {
7786
+ .m-0, .cherita-app-container .cherita-app-canvas .cherita-navbar {
7782
7787
  margin: 0 !important;
7783
7788
  }
7784
7789
 
@@ -7811,7 +7816,7 @@ textarea.form-control-lg {
7811
7816
  margin-left: 0 !important;
7812
7817
  }
7813
7818
 
7814
- .mx-1 {
7819
+ .mx-1, .js-plotly-plot .plotly .modebar .modebar-group {
7815
7820
  margin-right: 0.25rem !important;
7816
7821
  margin-left: 0.25rem !important;
7817
7822
  }
@@ -7908,7 +7913,7 @@ textarea.form-control-lg {
7908
7913
  margin-right: 0 !important;
7909
7914
  }
7910
7915
 
7911
- .me-1 {
7916
+ .me-1, .obs-accordion-header .obs-accordion-header-span .accordion-header-title {
7912
7917
  margin-right: 0.25rem !important;
7913
7918
  }
7914
7919
 
@@ -7928,7 +7933,7 @@ textarea.form-control-lg {
7928
7933
  margin-right: 3rem !important;
7929
7934
  }
7930
7935
 
7931
- .me-auto {
7936
+ .me-auto, .var-item-name {
7932
7937
  margin-right: auto !important;
7933
7938
  }
7934
7939
 
@@ -7988,7 +7993,7 @@ textarea.form-control-lg {
7988
7993
  margin-left: auto !important;
7989
7994
  }
7990
7995
 
7991
- .p-0 {
7996
+ .p-0, .cherita-app-sidebar .card-body, .cherita-app-container, .cherita-app-container .cherita-app-canvas {
7992
7997
  padding: 0 !important;
7993
7998
  }
7994
7999
 
@@ -8012,7 +8017,7 @@ textarea.form-control-lg {
8012
8017
  padding: 3rem !important;
8013
8018
  }
8014
8019
 
8015
- .px-0 {
8020
+ .px-0, .offcanvas-vars .offcanvas-body .sidebar-features {
8016
8021
  padding-right: 0 !important;
8017
8022
  padding-left: 0 !important;
8018
8023
  }
@@ -8076,7 +8081,7 @@ textarea.form-control-lg {
8076
8081
  padding-top: 0 !important;
8077
8082
  }
8078
8083
 
8079
- .pt-1 {
8084
+ .pt-1, .offcanvas-vars .offcanvas-body {
8080
8085
  padding-top: 0.25rem !important;
8081
8086
  }
8082
8087
 
@@ -8120,7 +8125,7 @@ textarea.form-control-lg {
8120
8125
  padding-right: 3rem !important;
8121
8126
  }
8122
8127
 
8123
- .pb-0 {
8128
+ .pb-0, .offcanvas-vars .offcanvas-header {
8124
8129
  padding-bottom: 0 !important;
8125
8130
  }
8126
8131
 
@@ -8365,7 +8370,7 @@ textarea.form-control-lg {
8365
8370
  }
8366
8371
 
8367
8372
  /* rtl:begin:remove */
8368
- .text-break {
8373
+ .text-break, .obs-accordion-header .obs-accordion-header-span .accordion-header-title {
8369
8374
  word-wrap: break-word !important;
8370
8375
  word-break: break-word !important;
8371
8376
  }
@@ -8666,7 +8671,7 @@ textarea.form-control-lg {
8666
8671
  --bs-link-underline-opacity: 1;
8667
8672
  }
8668
8673
 
8669
- .bg-primary {
8674
+ .bg-primary, .js-plotly-plot .plotly .modebar .modebar-group {
8670
8675
  --bs-bg-opacity: 1;
8671
8676
  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
8672
8677
  }
@@ -11874,7 +11879,7 @@ textarea.form-control-lg {
11874
11879
  height: 20px;
11875
11880
  margin-right: 10px;
11876
11881
  }
11877
- .obs-accordion-header .obs-accordion-header-title {
11882
+ .obs-accordion-header .obs-accordion-header-span {
11878
11883
  font-size: 1rem;
11879
11884
  width: 100%;
11880
11885
  display: flex;
@@ -11890,7 +11895,7 @@ textarea.form-control-lg {
11890
11895
  }
11891
11896
 
11892
11897
  .list-group.cherita-list .virtualized-list-wrapper {
11893
- padding: 0 0.25rem 0.25rem 0.25rem;
11898
+ padding: 0 0.25rem 0.25rem;
11894
11899
  }
11895
11900
  .list-group.cherita-list .list-group-item.unstyled {
11896
11901
  background-color: transparent;
@@ -11903,7 +11908,6 @@ textarea.form-control-lg {
11903
11908
  color: var(--bs-body-color);
11904
11909
  background-color: var(--bs-tertiary-bg);
11905
11910
  border-radius: var(--bs-border-radius);
11906
- cursor: pointer;
11907
11911
  }
11908
11912
  .list-group.cherita-list .list-group-item.active {
11909
11913
  background-color: var(--bs-secondary-bg);
@@ -11911,7 +11915,7 @@ textarea.form-control-lg {
11911
11915
 
11912
11916
  .obs-statistics {
11913
11917
  border: 0;
11914
- margin: 0 0.25rem 0.25rem 0.25rem;
11918
+ margin: 0 0.25rem 0.25rem;
11915
11919
  padding: 0.375rem 0.75rem;
11916
11920
  line-height: 1.5;
11917
11921
  color: var(--bs-body-color);
@@ -11925,10 +11929,16 @@ textarea.form-control-lg {
11925
11929
  padding-left: 0.35rem;
11926
11930
  }
11927
11931
 
11928
- .cherita-app {
11929
- position: relative;
11932
+ .search-results .cherita-list.list-group .list-group-item {
11933
+ cursor: pointer;
11930
11934
  }
11931
11935
 
11936
+ .cherita-app {
11937
+ flex-grow: 1;
11938
+ display: flex;
11939
+ flex-direction: column;
11940
+ overflow: auto;
11941
+ }
11932
11942
  .cherita-app .cherita-navbar {
11933
11943
  position: absolute;
11934
11944
  z-index: 11;
@@ -11937,42 +11947,30 @@ textarea.form-control-lg {
11937
11947
  right: 0;
11938
11948
  border-radius: 0.25rem;
11939
11949
  }
11940
- @media (min-width: 992px) and (max-width: 1199px) {
11950
+ @media (width >= 992px) and (width <= 1199px) {
11941
11951
  .cherita-app .cherita-navbar {
11942
- margin-left: calc(33.33333333% + 1rem) !important;
11952
+ margin-left: calc(33.3333% + 1rem) !important;
11943
11953
  }
11944
11954
  }
11945
11955
 
11946
- .cherita-app-canvas {
11947
- position: relative;
11948
- }
11949
-
11950
11956
  .cherita-app-obs {
11951
11957
  overflow-y: auto;
11952
11958
  }
11953
11959
 
11954
11960
  .cherita-app-sidebar {
11961
+ height: 100%;
11955
11962
  width: 20%;
11956
11963
  position: relative;
11957
11964
  }
11958
11965
  .cherita-app-sidebar .card {
11959
11966
  width: 100%;
11967
+ height: 100%;
11960
11968
  }
11961
11969
  .cherita-app-sidebar .card-body {
11962
11970
  overflow-y: hidden;
11963
- }
11964
- .cherita-app-sidebar .sidebar-pseudospatial {
11965
- padding: 10px;
11966
- border-bottom: 1px solid #dee2e6;
11967
- }
11968
- .cherita-app-sidebar .sidebar-pseudospatial .cherita-legend {
11969
- margin: 0 auto;
11970
- }
11971
- .cherita-app-sidebar .sidebar-features {
11972
- padding: 10px;
11973
- margin-bottom: 10px;
11971
+ display: flex;
11972
+ flex-direction: column;
11974
11973
  height: 100%;
11975
- overflow-y: auto;
11976
11974
  }
11977
11975
  .cherita-app-sidebar .accordion-header-wrapper {
11978
11976
  cursor: pointer;
@@ -11986,7 +11984,7 @@ textarea.form-control-lg {
11986
11984
  align-items: center;
11987
11985
  width: 100%;
11988
11986
  }
11989
- .cherita-app-sidebar .accordion-header-wrapper:after {
11987
+ .cherita-app-sidebar .accordion-header-wrapper::after {
11990
11988
  content: "";
11991
11989
  flex-shrink: 0;
11992
11990
  width: var(--geeks-accordion-btn-icon-width);
@@ -12001,53 +11999,126 @@ textarea.form-control-lg {
12001
11999
  color: var(--geeks-accordion-active-color);
12002
12000
  background-color: var(--geeks-accordion-active-bg);
12003
12001
  }
12004
- .cherita-app-sidebar .accordion-header-wrapper:not(.collapsed):after {
12002
+ .cherita-app-sidebar .accordion-header-wrapper:not(.collapsed)::after {
12005
12003
  background-image: var(--geeks-accordion-btn-active-icon);
12006
12004
  transform: var(--geeks-accordion-btn-icon-transform);
12007
12005
  }
12008
12006
 
12007
+ .sidebar-pseudospatial {
12008
+ padding: 10px;
12009
+ border-bottom: 1px solid #dee2e6;
12010
+ }
12011
+ .sidebar-pseudospatial .cherita-legend {
12012
+ margin: 0 auto;
12013
+ }
12014
+
12015
+ .sidebar-features {
12016
+ padding: 10px;
12017
+ margin-bottom: 10px;
12018
+ height: 100%;
12019
+ display: flex;
12020
+ flex-direction: column;
12021
+ flex-grow: 1;
12022
+ min-height: 0;
12023
+ }
12024
+ .sidebar-features .sidebar-features-list {
12025
+ position: relative;
12026
+ flex-grow: 1;
12027
+ min-height: 0;
12028
+ }
12029
+
12030
+ .offcanvas-vars .offcanvas-body {
12031
+ display: flex;
12032
+ flex-direction: column;
12033
+ height: 100%;
12034
+ }
12009
12035
  .search-modal-info {
12010
12036
  overflow-y: auto;
12011
12037
  border-left: 1px solid #dee2e6;
12012
12038
  }
12013
12039
 
12014
- .ps-xs-1 {
12015
- padding-left: 0.15rem !important;
12040
+ .cherita-app-canvas {
12041
+ position: relative;
12042
+ }
12043
+ .cherita-app-canvas .cherita-plot {
12044
+ position: relative;
12045
+ height: 100%;
12046
+ min-height: 400px;
12047
+ }
12048
+
12049
+ .cherita-app-container {
12050
+ display: flex;
12051
+ flex-wrap: nowrap;
12052
+ width: 100%;
12053
+ height: 100%;
12054
+ }
12055
+ .cherita-app-container .cherita-app-obs {
12056
+ flex: 0 0 auto;
12057
+ min-width: 350px;
12058
+ max-width: 20%;
12059
+ overflow-y: auto;
12060
+ }
12061
+ .cherita-app-container .cherita-app-canvas {
12062
+ flex: 1 1 auto;
12063
+ min-width: 375px;
12064
+ position: relative;
12065
+ max-height: 100%;
12066
+ display: flex;
12067
+ flex-direction: column;
12068
+ }
12069
+ .cherita-app-container .cherita-app-canvas .cherita-navbar {
12070
+ position: relative;
12071
+ }
12072
+ .cherita-app-container .cherita-app-sidebar {
12073
+ flex: 0 0 auto;
12074
+ min-width: 350px;
12075
+ max-width: 20%;
12076
+ position: relative;
12077
+ }
12078
+ @media (width <= 1400px) {
12079
+ .cherita-app-container .cherita-app-obs,
12080
+ .cherita-app-container .cherita-app-sidebar {
12081
+ max-width: 25%;
12082
+ }
12016
12083
  }
12017
12084
 
12018
12085
  .js-plotly-plot .plotly .modebar {
12019
- border-radius: 5px;
12020
- background-color: rgba(0, 0, 0, 0.6);
12021
- padding: 0 4px !important;
12086
+ top: 16px;
12087
+ right: 0;
12022
12088
  }
12023
12089
  .js-plotly-plot .plotly .modebar .modebar-group {
12024
- margin: 0 !important;
12025
- padding: 0 !important;
12026
- background-color: transparent !important;
12090
+ border-radius: 5px;
12091
+ padding: 4px !important;
12027
12092
  }
12028
12093
  .js-plotly-plot .plotly .modebar .modebar-group .modebar-btn {
12029
- fill: white !important; /* Ensures white icons */
12030
- color: white !important; /* Ensures text/icons are visible */
12094
+ display: inline-flex;
12095
+ justify-content: center;
12096
+ align-items: center;
12031
12097
  position: relative;
12032
- font-size: 16px;
12033
- padding: 4px;
12098
+ font-size: 1.25rem;
12099
+ padding: 0.25rem;
12034
12100
  height: auto;
12035
12101
  cursor: pointer;
12036
12102
  line-height: normal;
12037
12103
  }
12038
12104
  .js-plotly-plot .plotly .modebar .modebar-group .modebar-btn svg {
12039
12105
  position: relative;
12040
- top: auto;
12041
- bottom: auto;
12042
- left: auto;
12043
- right: auto;
12106
+ top: 1px;
12107
+ }
12108
+ .js-plotly-plot .plotly .modebar .modebar-group .modebar-btn svg path {
12109
+ fill: white !important;
12110
+ color: white !important;
12111
+ }
12112
+ .js-plotly-plot .plotly .modebar--hover > :not(.watermark) {
12113
+ opacity: 1;
12114
+ transition: opacity 0.3s;
12044
12115
  }
12045
12116
 
12046
12117
  .cherita-spatial-controls {
12047
12118
  position: absolute;
12048
- z-index: 10;
12049
12119
  top: 1rem;
12050
12120
  left: 1rem;
12121
+ z-index: 10;
12051
12122
  width: 3rem;
12052
12123
  }
12053
12124
  .cherita-spatial-controls .btn {
@@ -12055,6 +12126,15 @@ textarea.form-control-lg {
12055
12126
  padding-right: 0;
12056
12127
  }
12057
12128
 
12129
+ .plotselector {
12130
+ padding: 0 10px;
12131
+ border-bottom: 1px solid #dee2e6;
12132
+ }
12133
+ .plotselector .plotselector-icon {
12134
+ padding: 6px;
12135
+ cursor: pointer;
12136
+ }
12137
+
12058
12138
  .modern-scrollbars::-webkit-scrollbar {
12059
12139
  width: 20px;
12060
12140
  }
@@ -12085,6 +12165,10 @@ textarea.form-control-lg {
12085
12165
  align-items: center;
12086
12166
  }
12087
12167
 
12168
+ .cursor-pointer {
12169
+ cursor: pointer;
12170
+ }
12171
+
12088
12172
  .cherita-container {
12089
12173
  margin: 40px auto;
12090
12174
  background-color: #fff;
@@ -12118,7 +12202,6 @@ textarea.form-control-lg {
12118
12202
 
12119
12203
  /* End scrollbar styling */
12120
12204
  .cherita-container-plot {
12121
- margin-top: 76px;
12122
12205
  padding: 20px;
12123
12206
  position: relative;
12124
12207
  min-height: 400px;
@@ -12184,7 +12267,7 @@ textarea.form-control-lg {
12184
12267
  display: inline-block;
12185
12268
  }
12186
12269
 
12187
- @media (max-width: 600px) {
12270
+ @media (width <= 600px) {
12188
12271
  .cherita-spatial-footer {
12189
12272
  flex-direction: column;
12190
12273
  align-items: center;
@@ -12210,6 +12293,12 @@ textarea.form-control-lg {
12210
12293
  word-break: auto-phrase;
12211
12294
  overflow-wrap: anywhere;
12212
12295
  }
12296
+ .obs-value-list-check .form-check-label {
12297
+ white-space: nowrap;
12298
+ overflow: hidden;
12299
+ text-overflow: ellipsis;
12300
+ display: block;
12301
+ }
12213
12302
 
12214
12303
  .grad-step {
12215
12304
  display: inline-block;
@@ -12279,13 +12368,13 @@ textarea.form-control-lg {
12279
12368
  }
12280
12369
 
12281
12370
  .value-count-badge {
12282
- color: #000000 !important;
12371
+ color: #000 !important;
12283
12372
  background-color: #dedede !important;
12284
12373
  font-weight: lighter;
12285
12374
  }
12286
12375
 
12287
12376
  .filtered-value-count-badge {
12288
- color: #ffffff !important;
12377
+ color: #fff !important;
12289
12378
  font-weight: normal;
12290
12379
  }
12291
12380
 
@@ -12316,23 +12405,26 @@ textarea.form-control-lg {
12316
12405
  background-color: #dedede;
12317
12406
  }
12318
12407
 
12408
+ .feature-histogram-tooltip td > p {
12409
+ font-size: 0.85rem !important;
12410
+ }
12411
+
12412
+ /* stylelint-disable-next-line selector-class-pattern */
12319
12413
  .feature-histogram-tooltip .MuiChartsTooltip-markCell,
12320
12414
  .MuiChartsTooltip-labelCell {
12321
12415
  display: none;
12322
12416
  }
12323
12417
 
12418
+ /* stylelint-disable-next-line selector-class-pattern */
12324
12419
  .feature-histogram-tooltip .MuiChartsTooltip-valueCell {
12325
12420
  padding: 0.5rem !important;
12326
12421
  }
12327
12422
 
12423
+ /* stylelint-disable-next-line selector-class-pattern */
12328
12424
  .feature-histogram-tooltip .MuiChartsTooltip-valueCell > p {
12329
12425
  font-size: 0.85rem !important;
12330
12426
  }
12331
12427
 
12332
- .feature-histogram-tooltip td > p {
12333
- font-size: 0.85rem !important;
12334
- }
12335
-
12336
12428
  .feature-disease-info-list {
12337
12429
  max-height: 300px;
12338
12430
  overflow-y: auto;
@@ -12383,6 +12475,7 @@ textarea.form-control-lg {
12383
12475
 
12384
12476
  .cherita-pseudospatial {
12385
12477
  width: 100%;
12478
+ position: relative;
12386
12479
  }
12387
12480
 
12388
12481
  .cherita-pseudospatial-plot {
@@ -12444,4 +12537,34 @@ textarea.form-control-lg {
12444
12537
  text-overflow: ellipsis;
12445
12538
  }
12446
12539
 
12540
+ .var-item-name {
12541
+ padding-right: 0.5rem;
12542
+ white-space: nowrap;
12543
+ overflow: hidden;
12544
+ text-overflow: ellipsis;
12545
+ }
12546
+
12547
+ input[type=checkbox] {
12548
+ cursor: pointer;
12549
+ }
12550
+
12551
+ .ps-xs-1 {
12552
+ padding-left: 0.15rem !important;
12553
+ }
12554
+
12555
+ .resampled-tooltip-container {
12556
+ position: absolute;
12557
+ bottom: 16px;
12558
+ right: 16px;
12559
+ z-index: 10;
12560
+ width: max-content;
12561
+ }
12562
+ @media (width >= 991px) {
12563
+ .resampled-tooltip-container {
12564
+ top: 16px;
12565
+ left: 16px;
12566
+ bottom: auto;
12567
+ }
12568
+ }
12569
+
12447
12570
  /*# sourceMappingURL=cherita.css.map */