@haniffalab/cherita-react 1.4.1-dev.2025-10-22.61540191 → 1.4.1-dev.2025-10-23.3179e534

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 (103) hide show
  1. package/dist/cjs/components/controls/Controls.js +38 -30
  2. package/dist/cjs/components/dotplot/Dotplot.js +40 -33
  3. package/dist/cjs/components/dotplot/DotplotControls.js +103 -83
  4. package/dist/cjs/components/full-page/FullPage.js +92 -69
  5. package/dist/cjs/components/full-page/PlotAlert.js +25 -16
  6. package/dist/cjs/components/full-page/PlotTypeSelector.js +43 -36
  7. package/dist/cjs/components/heatmap/Heatmap.js +40 -33
  8. package/dist/cjs/components/heatmap/HeatmapControls.js +6 -3
  9. package/dist/cjs/components/icons/DotPlotIcon.js +16 -10
  10. package/dist/cjs/components/icons/HeatmapIcon.js +17 -11
  11. package/dist/cjs/components/icons/MatrixPlotIcon.1.js +22 -16
  12. package/dist/cjs/components/icons/MatrixPlotIcon.js +22 -16
  13. package/dist/cjs/components/icons/ScatterplotIcon.1.js +21 -15
  14. package/dist/cjs/components/icons/ScatterplotIcon.js +21 -15
  15. package/dist/cjs/components/icons/ViolinPlotIcon.js +22 -14
  16. package/dist/cjs/components/matrixplot/Matrixplot.js +40 -33
  17. package/dist/cjs/components/matrixplot/MatrixplotControls.js +8 -5
  18. package/dist/cjs/components/obs-list/ObsItem.js +238 -190
  19. package/dist/cjs/components/obs-list/ObsList.js +106 -87
  20. package/dist/cjs/components/obs-list/ObsToolbar.js +2 -3
  21. package/dist/cjs/components/obsm-list/ObsmList.js +47 -32
  22. package/dist/cjs/components/offcanvas/index.js +61 -31
  23. package/dist/cjs/components/pseudospatial/Pseudospatial.js +46 -36
  24. package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +98 -68
  25. package/dist/cjs/components/scatterplot/Scatterplot.js +87 -65
  26. package/dist/cjs/components/scatterplot/ScatterplotControls.js +35 -27
  27. package/dist/cjs/components/scatterplot/SpatialControls.js +134 -107
  28. package/dist/cjs/components/scatterplot/Toolbox.js +41 -30
  29. package/dist/cjs/components/search-bar/SearchBar.js +157 -110
  30. package/dist/cjs/components/search-bar/SearchInfo.js +73 -47
  31. package/dist/cjs/components/search-bar/SearchResults.js +93 -71
  32. package/dist/cjs/components/toolbar/Toolbar.js +43 -34
  33. package/dist/cjs/components/var-list/VarItem.js +106 -79
  34. package/dist/cjs/components/var-list/VarList.js +67 -53
  35. package/dist/cjs/components/var-list/VarListToolbar.js +56 -51
  36. package/dist/cjs/components/var-list/VarSet.js +115 -97
  37. package/dist/cjs/components/violin/Violin.js +77 -58
  38. package/dist/cjs/components/violin/ViolinControls.js +8 -5
  39. package/dist/cjs/context/DatasetContext.js +20 -13
  40. package/dist/cjs/context/FilterContext.js +9 -7
  41. package/dist/cjs/context/SettingsContext.js +11 -9
  42. package/dist/cjs/context/ZarrDataContext.js +6 -5
  43. package/dist/cjs/utils/Histogram.js +35 -33
  44. package/dist/cjs/utils/ImageViewer.js +9 -6
  45. package/dist/cjs/utils/Legend.js +36 -29
  46. package/dist/cjs/utils/LoadingIndicators.js +14 -12
  47. package/dist/cjs/utils/Skeleton.js +10 -10
  48. package/dist/cjs/utils/StyledTooltip.js +7 -2
  49. package/dist/cjs/utils/VirtualizedList.js +32 -25
  50. package/dist/cjs/utils/errors.js +1 -1
  51. package/dist/css/cherita.css +6 -1
  52. package/dist/css/cherita.css.map +1 -1
  53. package/dist/esm/components/controls/Controls.js +38 -30
  54. package/dist/esm/components/dotplot/Dotplot.js +40 -33
  55. package/dist/esm/components/dotplot/DotplotControls.js +103 -82
  56. package/dist/esm/components/full-page/FullPage.js +92 -69
  57. package/dist/esm/components/full-page/PlotAlert.js +25 -16
  58. package/dist/esm/components/full-page/PlotTypeSelector.js +43 -36
  59. package/dist/esm/components/heatmap/Heatmap.js +40 -33
  60. package/dist/esm/components/heatmap/HeatmapControls.js +6 -2
  61. package/dist/esm/components/icons/DotPlotIcon.js +16 -10
  62. package/dist/esm/components/icons/HeatmapIcon.js +17 -11
  63. package/dist/esm/components/icons/MatrixPlotIcon.1.js +22 -16
  64. package/dist/esm/components/icons/MatrixPlotIcon.js +22 -16
  65. package/dist/esm/components/icons/ScatterplotIcon.1.js +21 -15
  66. package/dist/esm/components/icons/ScatterplotIcon.js +21 -15
  67. package/dist/esm/components/icons/ViolinPlotIcon.js +22 -14
  68. package/dist/esm/components/matrixplot/Matrixplot.js +40 -33
  69. package/dist/esm/components/matrixplot/MatrixplotControls.js +8 -4
  70. package/dist/esm/components/obs-list/ObsItem.js +237 -186
  71. package/dist/esm/components/obs-list/ObsList.js +106 -86
  72. package/dist/esm/components/obs-list/ObsToolbar.js +2 -2
  73. package/dist/esm/components/obsm-list/ObsmList.js +47 -31
  74. package/dist/esm/components/offcanvas/index.js +61 -31
  75. package/dist/esm/components/pseudospatial/Pseudospatial.js +46 -36
  76. package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +98 -68
  77. package/dist/esm/components/scatterplot/Scatterplot.js +87 -64
  78. package/dist/esm/components/scatterplot/ScatterplotControls.js +35 -26
  79. package/dist/esm/components/scatterplot/SpatialControls.js +134 -106
  80. package/dist/esm/components/scatterplot/Toolbox.js +41 -29
  81. package/dist/esm/components/search-bar/SearchBar.js +157 -109
  82. package/dist/esm/components/search-bar/SearchInfo.js +73 -46
  83. package/dist/esm/components/search-bar/SearchResults.js +93 -70
  84. package/dist/esm/components/toolbar/Toolbar.js +43 -33
  85. package/dist/esm/components/var-list/VarItem.js +106 -78
  86. package/dist/esm/components/var-list/VarList.js +67 -52
  87. package/dist/esm/components/var-list/VarListToolbar.js +56 -50
  88. package/dist/esm/components/var-list/VarSet.js +115 -96
  89. package/dist/esm/components/violin/Violin.js +77 -58
  90. package/dist/esm/components/violin/ViolinControls.js +8 -4
  91. package/dist/esm/context/DatasetContext.js +20 -12
  92. package/dist/esm/context/FilterContext.js +9 -6
  93. package/dist/esm/context/SettingsContext.js +11 -8
  94. package/dist/esm/context/ZarrDataContext.js +6 -4
  95. package/dist/esm/utils/Histogram.js +35 -33
  96. package/dist/esm/utils/ImageViewer.js +9 -5
  97. package/dist/esm/utils/Legend.js +36 -28
  98. package/dist/esm/utils/LoadingIndicators.js +14 -11
  99. package/dist/esm/utils/Skeleton.js +10 -9
  100. package/dist/esm/utils/StyledTooltip.js +7 -2
  101. package/dist/esm/utils/VirtualizedList.js +32 -24
  102. package/dist/esm/utils/errors.js +1 -1
  103. package/package.json +3 -3
@@ -16,6 +16,7 @@ import { useDebouncedFetch } from "../../utils/requests";
16
16
  import { useSelectedMultiVar, useSelectedObs } from "../../utils/Resolver";
17
17
  import { PlotAlert } from "../full-page/PlotAlert";
18
18
  import { ControlsPlotlyToolbar, ObsPlotlyToolbar, VarPlotlyToolbar } from "../toolbar/Toolbar";
19
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
20
  export function Dotplot(_ref) {
20
21
  let {
21
22
  showObsBtn = false,
@@ -137,44 +138,50 @@ export function Dotplot(_ref) {
137
138
  const modeBarButtons = customModeBarButtons.length ? [customModeBarButtons, PLOTLY_MODEBAR_BUTTONS] : [PLOTLY_MODEBAR_BUTTONS];
138
139
  if (!serverError) {
139
140
  if (hasSelections) {
140
- return /*#__PURE__*/React.createElement("div", {
141
- className: "cherita-plot cherita-dotplot position-relative"
142
- }, isPending && /*#__PURE__*/React.createElement(LoadingSpinner, null), /*#__PURE__*/React.createElement(Plot, {
143
- data: data,
144
- layout: layout,
145
- useResizeHandler: true,
146
- style: {
147
- width: "100%",
148
- height: "100%"
149
- },
150
- config: {
151
- displaylogo: false,
152
- modeBarButtons: modeBarButtons
153
- }
154
- }));
141
+ return /*#__PURE__*/_jsxs("div", {
142
+ className: "cherita-plot cherita-dotplot position-relative",
143
+ children: [isPending && /*#__PURE__*/_jsx(LoadingSpinner, {}), /*#__PURE__*/_jsx(Plot, {
144
+ data: data,
145
+ layout: layout,
146
+ useResizeHandler: true,
147
+ style: {
148
+ width: "100%",
149
+ height: "100%"
150
+ },
151
+ config: {
152
+ displaylogo: false,
153
+ modeBarButtons: modeBarButtons
154
+ }
155
+ })]
156
+ });
155
157
  }
156
- return /*#__PURE__*/React.createElement(PlotAlert, {
158
+ return /*#__PURE__*/_jsx(PlotAlert, {
157
159
  variant: "info",
158
- heading: "Dotplot",
160
+ heading: "Set up your dotplot",
159
161
  plotType: plotType,
160
- setPlotType: setPlotType
161
- }, /*#__PURE__*/React.createElement("p", {
162
- className: "p-0 m-0"
163
- }, "Select one or more", " ", showVarsBtn ? /*#__PURE__*/React.createElement(Button, {
164
- variant: "link",
165
- className: "border-0 p-0 align-baseline",
166
- onClick: setShowVars
167
- }, "features") : "features", " ", "to display their expression across groups, then choose a", " ", showObsBtn ? /*#__PURE__*/React.createElement(Button, {
168
- variant: "link",
169
- className: "border-0 p-0 align-baseline",
170
- onClick: setShowObs
171
- }, "category") : "category", " ", "to group observations in the dotplot."));
162
+ setPlotType: setPlotType,
163
+ children: /*#__PURE__*/_jsxs("p", {
164
+ className: "p-0 m-0",
165
+ children: ["Select one or more", " ", showVarsBtn ? /*#__PURE__*/_jsx(Button, {
166
+ variant: "link",
167
+ className: "border-0 p-0 align-baseline",
168
+ onClick: setShowVars,
169
+ children: "features"
170
+ }) : "features", " ", "to display their expression across groups, then choose a", " ", showObsBtn ? /*#__PURE__*/_jsx(Button, {
171
+ variant: "link",
172
+ className: "border-0 p-0 align-baseline",
173
+ onClick: setShowObs,
174
+ children: "category"
175
+ }) : "category", " ", "to group observations in the dotplot."]
176
+ })
177
+ });
172
178
  } else {
173
- return /*#__PURE__*/React.createElement(PlotAlert, {
179
+ return /*#__PURE__*/_jsx(PlotAlert, {
174
180
  variant: "danger",
175
- heading: "Dotplot",
181
+ heading: "Error displaying the dotplot",
176
182
  plotType: plotType,
177
- setPlotType: setPlotType
178
- }, serverError.message || "An unexpected error occurred while generating the plot.");
183
+ setPlotType: setPlotType,
184
+ children: serverError.message || "An unexpected error occurred while generating the plot."
185
+ });
179
186
  }
180
187
  }
@@ -3,10 +3,11 @@ 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 React, { useEffect, useState } from "react";
6
+ import { useEffect, useState } from "react";
7
7
  import { Button, Form, InputGroup } from "react-bootstrap";
8
8
  import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
9
9
  import { ColorscaleSelect, ScaleSelect } from "../controls/Controls";
10
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
10
11
  export function DotplotControls() {
11
12
  const settings = useSettings();
12
13
  const dispatch = useSettingsDispatch();
@@ -26,88 +27,108 @@ export function DotplotControls() {
26
27
  expressionCutoff: settings.controls.expressionCutoff
27
28
  }));
28
29
  }, [settings.controls.colorAxis.cmin, settings.controls.colorAxis.cmax, settings.controls.expressionCutoff]);
29
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Form, null, /*#__PURE__*/React.createElement(ColorscaleSelect, null), /*#__PURE__*/React.createElement(Form.Group, {
30
- className: "mb-2"
31
- }, /*#__PURE__*/React.createElement(InputGroup, null, /*#__PURE__*/React.createElement(InputGroup.Text, null, "min"), /*#__PURE__*/React.createElement(Form.Control, {
32
- name: "scaleMin",
33
- size: "sm",
34
- type: "number",
35
- value: controls.colorAxis.cmin,
36
- step: 0.1,
37
- min: Math.min(settings.controls.colorAxis.dmin, 0.0),
38
- max: settings.controls.colorAxis.dmax,
39
- onChange: e => {
40
- setControls(_objectSpread(_objectSpread({}, controls), {}, {
41
- colorAxis: _objectSpread(_objectSpread({}, controls.colorAxis), {}, {
42
- cmin: e.target.value
30
+ return /*#__PURE__*/_jsx(_Fragment, {
31
+ children: /*#__PURE__*/_jsxs(Form, {
32
+ children: [/*#__PURE__*/_jsx(ColorscaleSelect, {}), /*#__PURE__*/_jsx(Form.Group, {
33
+ className: "mb-2",
34
+ children: /*#__PURE__*/_jsxs(InputGroup, {
35
+ children: [/*#__PURE__*/_jsx(InputGroup.Text, {
36
+ children: "min"
37
+ }), /*#__PURE__*/_jsx(Form.Control, {
38
+ name: "scaleMin",
39
+ size: "sm",
40
+ type: "number",
41
+ value: controls.colorAxis.cmin,
42
+ step: 0.1,
43
+ min: Math.min(settings.controls.colorAxis.dmin, 0.0),
44
+ max: settings.controls.colorAxis.dmax,
45
+ onChange: e => {
46
+ setControls(_objectSpread(_objectSpread({}, controls), {}, {
47
+ colorAxis: _objectSpread(_objectSpread({}, controls.colorAxis), {}, {
48
+ cmin: e.target.value
49
+ })
50
+ }));
51
+ }
52
+ }), /*#__PURE__*/_jsx(InputGroup.Text, {
53
+ children: "max"
54
+ }), /*#__PURE__*/_jsx(Form.Control, {
55
+ name: "scaleMax",
56
+ size: "sm",
57
+ type: "number",
58
+ value: controls.colorAxis.cmax,
59
+ step: 0.1,
60
+ min: controls.colorAxis.cmin,
61
+ max: settings.controls.colorAxis.dmax,
62
+ onChange: e => {
63
+ if (parseFloat(e.target.value) > settings.controls.colorAxis.dmax) {
64
+ e.target.value = settings.controls.colorAxis.dmax.toFixed(1);
65
+ }
66
+ setControls(_objectSpread(_objectSpread({}, controls), {}, {
67
+ colorAxis: _objectSpread(_objectSpread({}, controls.colorAxis), {}, {
68
+ cmax: e.target.value
69
+ })
70
+ }));
71
+ }
72
+ }), /*#__PURE__*/_jsx(Button, {
73
+ variant: "outline-primary",
74
+ onClick: () => dispatch({
75
+ type: "set.controls.colorAxis.crange",
76
+ cmin: controls.colorAxis.cmin,
77
+ cmax: controls.colorAxis.cmax
78
+ }),
79
+ children: "Apply"
80
+ }), /*#__PURE__*/_jsx(Button, {
81
+ variant: "outline-primary",
82
+ onClick: () => dispatch({
83
+ type: "set.controls.colorAxis.crange",
84
+ cmin: settings.controls.colorAxis.dmin,
85
+ cmax: settings.controls.colorAxis.dmax
86
+ }),
87
+ children: "Reset"
88
+ })]
43
89
  })
44
- }));
45
- }
46
- }), /*#__PURE__*/React.createElement(InputGroup.Text, null, "max"), /*#__PURE__*/React.createElement(Form.Control, {
47
- name: "scaleMax",
48
- size: "sm",
49
- type: "number",
50
- value: controls.colorAxis.cmax,
51
- step: 0.1,
52
- min: controls.colorAxis.cmin,
53
- max: settings.controls.colorAxis.dmax,
54
- onChange: e => {
55
- if (parseFloat(e.target.value) > settings.controls.colorAxis.dmax) {
56
- e.target.value = settings.controls.colorAxis.dmax.toFixed(1);
57
- }
58
- setControls(_objectSpread(_objectSpread({}, controls), {}, {
59
- colorAxis: _objectSpread(_objectSpread({}, controls.colorAxis), {}, {
60
- cmax: e.target.value
90
+ }), /*#__PURE__*/_jsx(ScaleSelect, {
91
+ plot: "dotplot"
92
+ }), /*#__PURE__*/_jsxs(Form.Group, {
93
+ className: "mb-2",
94
+ children: [/*#__PURE__*/_jsx(Form.Label, {
95
+ children: "Expression Cutoff"
96
+ }), /*#__PURE__*/_jsxs(InputGroup, {
97
+ children: [/*#__PURE__*/_jsx(Form.Control, {
98
+ size: "sm",
99
+ type: "number",
100
+ step: "0.1",
101
+ min: 0.0,
102
+ value: controls.expressionCutoff,
103
+ onChange: e => {
104
+ setControls(_objectSpread(_objectSpread({}, controls), {}, {
105
+ expressionCutoff: e.target.value
106
+ }));
107
+ }
108
+ }), /*#__PURE__*/_jsx(Button, {
109
+ variant: "outline-primary",
110
+ onClick: () => dispatch({
111
+ type: "set.controls.expressionCutoff",
112
+ expressionCutoff: parseFloat(controls.expressionCutoff)
113
+ }),
114
+ children: "Apply"
115
+ })]
116
+ })]
117
+ }), /*#__PURE__*/_jsx(Form.Group, {
118
+ className: "mb-2",
119
+ children: /*#__PURE__*/_jsx(Form.Check, {
120
+ type: "switch",
121
+ id: "meanOnlyExpressed",
122
+ label: "Average only above cutoff",
123
+ checked: settings.controls.meanOnlyExpressed,
124
+ onChange: () => {
125
+ dispatch({
126
+ type: "set.controls.meanOnlyExpressed",
127
+ meanOnlyExpressed: !settings.controls.meanOnlyExpressed
128
+ });
129
+ }
61
130
  })
62
- }));
63
- }
64
- }), /*#__PURE__*/React.createElement(Button, {
65
- variant: "outline-primary",
66
- onClick: () => dispatch({
67
- type: "set.controls.colorAxis.crange",
68
- cmin: controls.colorAxis.cmin,
69
- cmax: controls.colorAxis.cmax
131
+ })]
70
132
  })
71
- }, "Apply"), /*#__PURE__*/React.createElement(Button, {
72
- variant: "outline-primary",
73
- onClick: () => dispatch({
74
- type: "set.controls.colorAxis.crange",
75
- cmin: settings.controls.colorAxis.dmin,
76
- cmax: settings.controls.colorAxis.dmax
77
- })
78
- }, "Reset"))), /*#__PURE__*/React.createElement(ScaleSelect, {
79
- plot: "dotplot"
80
- }), /*#__PURE__*/React.createElement(Form.Group, {
81
- className: "mb-2"
82
- }, /*#__PURE__*/React.createElement(Form.Label, null, "Expression Cutoff"), /*#__PURE__*/React.createElement(InputGroup, null, /*#__PURE__*/React.createElement(Form.Control, {
83
- size: "sm",
84
- type: "number",
85
- step: "0.1",
86
- min: 0.0,
87
- value: controls.expressionCutoff,
88
- onChange: e => {
89
- setControls(_objectSpread(_objectSpread({}, controls), {}, {
90
- expressionCutoff: e.target.value
91
- }));
92
- }
93
- }), /*#__PURE__*/React.createElement(Button, {
94
- variant: "outline-primary",
95
- onClick: () => dispatch({
96
- type: "set.controls.expressionCutoff",
97
- expressionCutoff: parseFloat(controls.expressionCutoff)
98
- })
99
- }, "Apply"))), /*#__PURE__*/React.createElement(Form.Group, {
100
- className: "mb-2"
101
- }, /*#__PURE__*/React.createElement(Form.Check, {
102
- type: "switch",
103
- id: "meanOnlyExpressed",
104
- label: "Average only above cutoff",
105
- checked: settings.controls.meanOnlyExpressed,
106
- onChange: () => {
107
- dispatch({
108
- type: "set.controls.meanOnlyExpressed",
109
- meanOnlyExpressed: !settings.controls.meanOnlyExpressed
110
- });
111
- }
112
- }))));
133
+ });
113
134
  }
@@ -1,15 +1,19 @@
1
1
  const _excluded = ["searchDiseases", "defaultPlotType"];
2
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
3
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; }
4
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; }
5
9
  import { useEffect, useMemo, useState } from "react";
6
10
  import { useMediaQuery } from "@mui/material";
7
11
  import { Card, Container, Modal } from "react-bootstrap";
12
+ import { PlotTypeSelector } from "./PlotTypeSelector";
8
13
  import { BREAKPOINTS, PLOT_TYPES, SELECTION_MODES, VIOLIN_MODES } from "../../constants/constants";
9
14
  import { DatasetProvider } from "../../context/DatasetContext";
10
15
  import { Dotplot } from "../dotplot/Dotplot";
11
16
  import { DotplotControls } from "../dotplot/DotplotControls";
12
- import { PlotTypeSelector } from "../full-page/PlotTypeSelector";
13
17
  import { Heatmap } from "../heatmap/Heatmap";
14
18
  import { HeatmapControls } from "../heatmap/HeatmapControls";
15
19
  import { Matrixplot } from "../matrixplot/Matrixplot";
@@ -24,6 +28,7 @@ import { SearchBar } from "../search-bar/SearchBar";
24
28
  import { VarNamesList } from "../var-list/VarList";
25
29
  import { Violin } from "../violin/Violin";
26
30
  import { ViolinControls } from "../violin/ViolinControls";
31
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
27
32
  export function FullPage(_ref) {
28
33
  let {
29
34
  searchDiseases = true,
@@ -93,82 +98,100 @@ export function FullPage(_ref) {
93
98
  };
94
99
  switch (plotType) {
95
100
  case PLOT_TYPES.DOTPLOT:
96
- return /*#__PURE__*/React.createElement(Dotplot, commonProps);
101
+ return /*#__PURE__*/_jsx(Dotplot, _objectSpread({}, commonProps));
97
102
  case PLOT_TYPES.MATRIXPLOT:
98
- return /*#__PURE__*/React.createElement(Matrixplot, commonProps);
103
+ return /*#__PURE__*/_jsx(Matrixplot, _objectSpread({}, commonProps));
99
104
  case PLOT_TYPES.HEATMAP:
100
- return /*#__PURE__*/React.createElement(Heatmap, commonProps);
105
+ return /*#__PURE__*/_jsx(Heatmap, _objectSpread({}, commonProps));
101
106
  case PLOT_TYPES.VIOLINPLOT:
102
- return /*#__PURE__*/React.createElement(Violin, _extends({
107
+ return /*#__PURE__*/_jsx(Violin, _objectSpread({
103
108
  mode: VIOLIN_MODES.MULTIKEY
104
109
  }, commonProps));
105
110
  case PLOT_TYPES.SCATTERPLOT:
106
111
  default:
107
- return /*#__PURE__*/React.createElement(Scatterplot, _extends({}, commonProps, {
112
+ return /*#__PURE__*/_jsx(Scatterplot, _objectSpread(_objectSpread({}, commonProps), {}, {
108
113
  isFullscreen: true
109
114
  }));
110
115
  }
111
116
  }, [plotType, showObsBtn, showVarsBtn]);
112
- return /*#__PURE__*/React.createElement("div", {
113
- className: "cherita-app"
114
- }, /*#__PURE__*/React.createElement(DatasetProvider, props, /*#__PURE__*/React.createElement(Container, {
115
- fluid: true,
116
- className: "cherita-app-container"
117
- }, /*#__PURE__*/React.createElement("div", {
118
- className: "cherita-app-obs modern-scrollbars border-end h-100"
119
- }, /*#__PURE__*/React.createElement(ObsColsList, _extends({}, props, {
120
- showSelectedAsActive: showSelectedAsActive,
121
- showHistograms: varMode === SELECTION_MODES.SINGLE,
122
- showColor: varMode === SELECTION_MODES.SINGLE
123
- }))), /*#__PURE__*/React.createElement("div", {
124
- className: "cherita-app-canvas"
125
- }, plot), /*#__PURE__*/React.createElement("div", {
126
- className: "cherita-app-sidebar p-3"
127
- }, /*#__PURE__*/React.createElement(Card, null, /*#__PURE__*/React.createElement(Card.Body, null, /*#__PURE__*/React.createElement("div", {
128
- className: "plotselector"
129
- }, /*#__PURE__*/React.createElement(PlotTypeSelector, {
130
- currentType: plotType,
131
- onChange: type => setPlotType(type)
132
- })), plotType === PLOT_TYPES.SCATTERPLOT && isPseudospatial ? /*#__PURE__*/React.createElement("div", {
133
- className: "sidebar-pseudospatial"
134
- }, /*#__PURE__*/React.createElement(Pseudospatial, {
135
- plotType: pseudospatialPlotType,
136
- setPlotType: setpseudospatialPlotType,
137
- setShowControls: setShowPseudospatialControls
138
- })) : /*#__PURE__*/React.createElement(React.Fragment, null), /*#__PURE__*/React.createElement("div", {
139
- className: "sidebar-features"
140
- }, /*#__PURE__*/React.createElement(SearchBar, {
141
- searchDiseases: searchDiseases,
142
- searchVar: true
143
- }), /*#__PURE__*/React.createElement("div", {
144
- className: "sidebar-features-list"
145
- }, /*#__PURE__*/React.createElement(VarNamesList, {
146
- mode: varMode
147
- }))))))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Modal, {
148
- show: showModal,
149
- onHide: () => setShowModal(false),
150
- centered: true
151
- }, /*#__PURE__*/React.createElement(Modal.Header, {
152
- closeButton: true
153
- }), /*#__PURE__*/React.createElement(Modal.Body, null)), /*#__PURE__*/React.createElement(OffcanvasObs, _extends({}, props, {
154
- showSelectedAsActive: showSelectedAsActive,
155
- show: showObs,
156
- handleClose: () => setShowObs(false)
157
- })), /*#__PURE__*/React.createElement(OffcanvasVars, {
158
- show: showVars,
159
- handleClose: () => setShowVars(false),
160
- mode: varMode
161
- }), plotControls && /*#__PURE__*/React.createElement(OffcanvasControls, {
162
- show: showControls,
163
- handleClose: () => setShowControls(false),
164
- Controls: plotControls
165
- }), /*#__PURE__*/React.createElement(OffcanvasObsm, {
166
- show: showObsm,
167
- handleClose: () => setShowObsm(false)
168
- }), /*#__PURE__*/React.createElement(OffcanvasControls, {
169
- show: showPseudospatialControls,
170
- handleClose: () => setShowPseudospatialControls(false),
171
- Controls: PseudospatialToolbar,
172
- plotType: pseudospatialPlotType
173
- }))));
117
+ return /*#__PURE__*/_jsx("div", {
118
+ className: "cherita-app",
119
+ children: /*#__PURE__*/_jsxs(DatasetProvider, _objectSpread(_objectSpread({}, props), {}, {
120
+ children: [/*#__PURE__*/_jsxs(Container, {
121
+ fluid: true,
122
+ className: "cherita-app-container",
123
+ children: [/*#__PURE__*/_jsx("div", {
124
+ className: "cherita-app-obs modern-scrollbars border-end h-100",
125
+ children: /*#__PURE__*/_jsx(ObsColsList, _objectSpread(_objectSpread({}, props), {}, {
126
+ showSelectedAsActive: showSelectedAsActive,
127
+ showHistograms: varMode === SELECTION_MODES.SINGLE,
128
+ showColor: varMode === SELECTION_MODES.SINGLE
129
+ }))
130
+ }), /*#__PURE__*/_jsx("div", {
131
+ className: "cherita-app-canvas",
132
+ children: plot
133
+ }), /*#__PURE__*/_jsx("div", {
134
+ className: "cherita-app-sidebar p-3",
135
+ children: /*#__PURE__*/_jsx(Card, {
136
+ children: /*#__PURE__*/_jsxs(Card.Body, {
137
+ children: [/*#__PURE__*/_jsx("div", {
138
+ className: "plotselector",
139
+ children: /*#__PURE__*/_jsx(PlotTypeSelector, {
140
+ currentType: plotType,
141
+ onChange: type => setPlotType(type)
142
+ })
143
+ }), plotType === PLOT_TYPES.SCATTERPLOT && isPseudospatial ? /*#__PURE__*/_jsx("div", {
144
+ className: "sidebar-pseudospatial",
145
+ children: /*#__PURE__*/_jsx(Pseudospatial, {
146
+ plotType: pseudospatialPlotType,
147
+ setPlotType: setpseudospatialPlotType,
148
+ setShowControls: setShowPseudospatialControls
149
+ })
150
+ }) : /*#__PURE__*/_jsx(_Fragment, {}), /*#__PURE__*/_jsxs("div", {
151
+ className: "sidebar-features",
152
+ children: [/*#__PURE__*/_jsx(SearchBar, {
153
+ searchDiseases: searchDiseases,
154
+ searchVar: true
155
+ }), /*#__PURE__*/_jsx("div", {
156
+ className: "sidebar-features-list",
157
+ children: /*#__PURE__*/_jsx(VarNamesList, {
158
+ mode: varMode
159
+ })
160
+ })]
161
+ })]
162
+ })
163
+ })
164
+ })]
165
+ }), /*#__PURE__*/_jsxs("div", {
166
+ children: [/*#__PURE__*/_jsxs(Modal, {
167
+ show: showModal,
168
+ onHide: () => setShowModal(false),
169
+ centered: true,
170
+ children: [/*#__PURE__*/_jsx(Modal.Header, {
171
+ closeButton: true
172
+ }), /*#__PURE__*/_jsx(Modal.Body, {})]
173
+ }), /*#__PURE__*/_jsx(OffcanvasObs, _objectSpread(_objectSpread({}, props), {}, {
174
+ showSelectedAsActive: showSelectedAsActive,
175
+ show: showObs,
176
+ handleClose: () => setShowObs(false)
177
+ })), /*#__PURE__*/_jsx(OffcanvasVars, {
178
+ show: showVars,
179
+ handleClose: () => setShowVars(false),
180
+ mode: varMode
181
+ }), plotControls && /*#__PURE__*/_jsx(OffcanvasControls, {
182
+ show: showControls,
183
+ handleClose: () => setShowControls(false),
184
+ Controls: plotControls
185
+ }), /*#__PURE__*/_jsx(OffcanvasObsm, {
186
+ show: showObsm,
187
+ handleClose: () => setShowObsm(false)
188
+ }), /*#__PURE__*/_jsx(OffcanvasControls, {
189
+ show: showPseudospatialControls,
190
+ handleClose: () => setShowPseudospatialControls(false),
191
+ Controls: PseudospatialToolbar,
192
+ plotType: pseudospatialPlotType
193
+ })]
194
+ })]
195
+ }))
196
+ });
174
197
  }
@@ -1,7 +1,8 @@
1
1
  import { useMediaQuery } from "@mui/material";
2
2
  import { Alert } from "react-bootstrap";
3
- import { BREAKPOINTS, PLOT_TYPES } from "../../constants/constants";
4
3
  import { PlotTypeSelector } from "./PlotTypeSelector";
4
+ import { BREAKPOINTS, PLOT_TYPES } from "../../constants/constants";
5
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
5
6
  export function PlotAlert(_ref) {
6
7
  let {
7
8
  variant = "warning",
@@ -12,19 +13,27 @@ export function PlotAlert(_ref) {
12
13
  } = _ref;
13
14
  const XlBreakpoint = useMediaQuery(BREAKPOINTS.XL);
14
15
  const showPlotSelector = XlBreakpoint;
15
- return /*#__PURE__*/React.createElement(React.Fragment, null, showPlotSelector && /*#__PURE__*/React.createElement("div", {
16
- className: "plotselector"
17
- }, /*#__PURE__*/React.createElement(PlotTypeSelector, {
18
- currentType: plotType,
19
- onChange: type => {
20
- if (setPlotType) setPlotType(type);
21
- }
22
- })), /*#__PURE__*/React.createElement("div", {
23
- className: "cherita-plot-alert h-100"
24
- }, /*#__PURE__*/React.createElement("div", {
25
- className: "w-100 h-100 d-flex justify-content-center align-items-center"
26
- }, /*#__PURE__*/React.createElement(Alert, {
27
- variant: variant,
28
- className: "m-0 w-75 w-lg-50 text-center"
29
- }, heading && /*#__PURE__*/React.createElement(Alert.Heading, null, heading), " ", children))));
16
+ return /*#__PURE__*/_jsxs(_Fragment, {
17
+ children: [showPlotSelector && /*#__PURE__*/_jsx("div", {
18
+ className: "plotselector",
19
+ children: /*#__PURE__*/_jsx(PlotTypeSelector, {
20
+ currentType: plotType,
21
+ onChange: type => {
22
+ if (setPlotType) setPlotType(type);
23
+ }
24
+ })
25
+ }), /*#__PURE__*/_jsx("div", {
26
+ className: "cherita-plot-alert h-100",
27
+ children: /*#__PURE__*/_jsx("div", {
28
+ className: "w-100 h-100 d-flex justify-content-center align-items-center",
29
+ children: /*#__PURE__*/_jsxs(Alert, {
30
+ variant: variant,
31
+ className: "m-0 w-75 w-lg-50 text-center",
32
+ children: [heading && /*#__PURE__*/_jsx(Alert.Heading, {
33
+ children: heading
34
+ }), " ", children]
35
+ })
36
+ })
37
+ })]
38
+ });
30
39
  }
@@ -11,6 +11,7 @@ import HeatmapIcon from "../icons/HeatmapIcon";
11
11
  import MatrixPlotIcon from "../icons/MatrixPlotIcon";
12
12
  import ScatterplotIcon from "../icons/ScatterplotIcon";
13
13
  import ViolinPlotIcon from "../icons/ViolinPlotIcon";
14
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
14
15
  const plotTypes = [{
15
16
  type: PLOT_TYPES.SCATTERPLOT,
16
17
  icon: ScatterplotIcon,
@@ -49,40 +50,46 @@ export function PlotTypeSelector(_ref) {
49
50
  const handleMouseLeave = type => setHoveredMap(prev => _objectSpread(_objectSpread({}, prev), {}, {
50
51
  [type]: false
51
52
  }));
52
- return /*#__PURE__*/React.createElement("div", {
53
- className: "d-flex gap-2 justify-content-between"
54
- }, plotTypes.map(_ref2 => {
55
- let {
56
- type,
57
- icon: Icon,
58
- name,
59
- description
60
- } = _ref2;
61
- const isActive = currentType === type;
62
- const hovered = hoveredMap[type] || false;
63
- const colour = isActive ? "#005a86" : hovered ? "#0071a7" : "#000";
64
- return /*#__PURE__*/React.createElement(StyledTooltip, {
65
- key: type,
66
- title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("strong", null, name), /*#__PURE__*/React.createElement("br", null), description),
67
- placement: "bottom",
68
- slotProps: {
69
- popper: {
70
- modifiers: [{
71
- name: "offset",
72
- options: {
73
- offset: [0, -12]
74
- }
75
- }]
76
- }
77
- }
78
- }, /*#__PURE__*/React.createElement("div", {
79
- onMouseEnter: () => handleMouseEnter(type),
80
- onMouseLeave: () => handleMouseLeave(type),
81
- onClick: () => onChange(type),
82
- className: "plotselector-icon".concat(isActive ? " active" : "")
83
- }, /*#__PURE__*/React.createElement(Icon, {
84
- size: 34,
85
- colour: colour
86
- })));
87
- }));
53
+ return /*#__PURE__*/_jsx("div", {
54
+ className: "d-flex gap-2 justify-content-between",
55
+ children: plotTypes.map(_ref2 => {
56
+ let {
57
+ type,
58
+ icon: Icon,
59
+ name,
60
+ description
61
+ } = _ref2;
62
+ const isActive = currentType === type;
63
+ const hovered = hoveredMap[type] || false;
64
+ const colour = isActive ? "#005a86" : hovered ? "#0071a7" : "#000";
65
+ return /*#__PURE__*/_jsx(StyledTooltip, {
66
+ title: /*#__PURE__*/_jsxs(_Fragment, {
67
+ children: [/*#__PURE__*/_jsx("strong", {
68
+ children: name
69
+ }), /*#__PURE__*/_jsx("br", {}), description]
70
+ }),
71
+ placement: "bottom",
72
+ slotProps: {
73
+ popper: {
74
+ modifiers: [{
75
+ name: "offset",
76
+ options: {
77
+ offset: [0, -12]
78
+ }
79
+ }]
80
+ }
81
+ },
82
+ children: /*#__PURE__*/_jsx("div", {
83
+ onMouseEnter: () => handleMouseEnter(type),
84
+ onMouseLeave: () => handleMouseLeave(type),
85
+ onClick: () => onChange(type),
86
+ className: "plotselector-icon".concat(isActive ? " active" : ""),
87
+ children: /*#__PURE__*/_jsx(Icon, {
88
+ size: 34,
89
+ colour: colour
90
+ })
91
+ })
92
+ }, type);
93
+ })
94
+ });
88
95
  }