@haniffalab/cherita-react 1.3.0-dev.2025-06-04.d986a94b → 1.3.0

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 (30) hide show
  1. package/dist/cjs/components/dotplot/Dotplot.js +5 -35
  2. package/dist/cjs/components/full-page/FullPage.js +50 -108
  3. package/dist/cjs/components/full-page/FullPagePseudospatial.js +157 -0
  4. package/dist/cjs/components/heatmap/Heatmap.js +5 -35
  5. package/dist/cjs/components/matrixplot/Matrixplot.js +5 -35
  6. package/dist/cjs/components/obs-list/ObsList.js +3 -4
  7. package/dist/cjs/components/scatterplot/SpatialControls.js +3 -3
  8. package/dist/cjs/components/violin/Violin.js +6 -37
  9. package/dist/cjs/constants/constants.js +2 -14
  10. package/dist/cjs/index.js +21 -15
  11. package/dist/css/cherita.css +23 -76
  12. package/dist/css/cherita.css.map +1 -1
  13. package/dist/esm/components/dotplot/Dotplot.js +6 -36
  14. package/dist/esm/components/full-page/FullPage.js +50 -110
  15. package/dist/esm/components/full-page/FullPagePseudospatial.js +149 -0
  16. package/dist/esm/components/heatmap/Heatmap.js +6 -36
  17. package/dist/esm/components/matrixplot/Matrixplot.js +6 -36
  18. package/dist/esm/components/obs-list/ObsList.js +3 -4
  19. package/dist/esm/components/scatterplot/SpatialControls.js +3 -3
  20. package/dist/esm/components/violin/Violin.js +8 -39
  21. package/dist/esm/constants/constants.js +1 -13
  22. package/dist/esm/index.js +4 -4
  23. package/package.json +3 -4
  24. package/scss/cherita.scss +1 -0
  25. package/scss/components/layouts.scss +1 -69
  26. package/scss/components/plotly.scss +14 -19
  27. package/dist/cjs/components/full-page/PlotTypeSelector.js +0 -57
  28. package/dist/cjs/components/toolbar/Toolbar.js +0 -102
  29. package/dist/esm/components/full-page/PlotTypeSelector.js +0 -50
  30. package/dist/esm/components/toolbar/Toolbar.js +0 -91
@@ -8,13 +8,11 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _lodash = _interopRequireDefault(require("lodash"));
9
9
  var _reactBootstrap = require("react-bootstrap");
10
10
  var _reactPlotly = _interopRequireDefault(require("react-plotly.js"));
11
- var _constants = require("../../constants/constants");
12
11
  var _DatasetContext = require("../../context/DatasetContext");
13
12
  var _FilterContext = require("../../context/FilterContext");
14
13
  var _SettingsContext = require("../../context/SettingsContext");
15
14
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
16
15
  var _requests = require("../../utils/requests");
17
- var _Toolbar = require("../toolbar/Toolbar");
18
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
17
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
18
  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; }
@@ -22,16 +20,8 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
22
20
  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; }
23
21
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
24
22
  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); }
25
- function Dotplot(_ref) {
23
+ function Dotplot() {
26
24
  var _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
27
- let {
28
- showObsBtn = false,
29
- showVarsBtn = false,
30
- showCtrlsBtn = false,
31
- setShowObs,
32
- setShowVars,
33
- setShowControls
34
- } = _ref;
35
25
  const ENDPOINT = "dotplot";
36
26
  const dataset = (0, _DatasetContext.useDataset)();
37
27
  const settings = (0, _SettingsContext.useSettings)();
@@ -136,29 +126,17 @@ function Dotplot(_ref) {
136
126
  });
137
127
  });
138
128
  }, [settings.controls.colorAxis.cmin, settings.controls.colorAxis.cmax]);
139
- const customModeBarButtons = _lodash.default.compact([showObsBtn && (0, _Toolbar.ObsPlotlyToolbar)({
140
- onClick: setShowObs
141
- }), showVarsBtn && (0, _Toolbar.VarPlotlyToolbar)({
142
- onClick: setShowVars
143
- }), showCtrlsBtn && (0, _Toolbar.ControlsPlotlyToolbar)({
144
- onClick: setShowControls
145
- })]);
146
- const modeBarButtons = customModeBarButtons.length ? [customModeBarButtons, _constants.PLOTLY_MODEBAR_BUTTONS] : [_constants.PLOTLY_MODEBAR_BUTTONS];
147
129
  if (!serverError) {
148
130
  if (hasSelections) {
149
131
  return /*#__PURE__*/_react.default.createElement("div", {
150
- className: "cherita-plot cherita-dotplot position-relative"
132
+ className: "cherita-dotplot position-relative"
151
133
  }, isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), /*#__PURE__*/_react.default.createElement(_reactPlotly.default, {
152
134
  data: data,
153
135
  layout: layout,
154
136
  useResizeHandler: true,
155
137
  style: {
156
- width: "100%",
157
- height: "100%"
158
- },
159
- config: {
160
- displaylogo: false,
161
- modeBarButtons: modeBarButtons
138
+ maxWidth: "100%",
139
+ maxHeight: "100%"
162
140
  }
163
141
  }));
164
142
  }
@@ -166,15 +144,7 @@ function Dotplot(_ref) {
166
144
  className: "cherita-dotplot"
167
145
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
168
146
  variant: "light"
169
- }, "Select", " ", showVarsBtn ? /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
170
- variant: "link",
171
- className: "border-0 p-0 align-baseline",
172
- onClick: setShowVars
173
- }, "features") : "features", " ", "and a", " ", showObsBtn ? /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
174
- variant: "link",
175
- className: "border-0 p-0 align-baseline",
176
- onClick: setShowObs
177
- }, "category") : "category"));
147
+ }, "Select features and a category"));
178
148
  } else {
179
149
  return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
180
150
  variant: "danger"
@@ -4,38 +4,32 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.FullPage = FullPage;
7
+ exports.FullPagePlots = FullPagePlots;
8
+ exports.FullPageScatterplot = FullPageScatterplot;
7
9
  var _react = _interopRequireWildcard(require("react"));
8
- var _material = require("@mui/material");
9
10
  var _reactBootstrap = require("react-bootstrap");
10
11
  var _constants = require("../../constants/constants");
11
12
  var _DatasetContext = require("../../context/DatasetContext");
12
13
  var _Dotplot = require("../dotplot/Dotplot");
13
- var _DotplotControls = require("../dotplot/DotplotControls");
14
- var _PlotTypeSelector = require("../full-page/PlotTypeSelector");
15
14
  var _Heatmap = require("../heatmap/Heatmap");
16
- var _HeatmapControls = require("../heatmap/HeatmapControls");
17
15
  var _Matrixplot = require("../matrixplot/Matrixplot");
18
- var _MatrixplotControls = require("../matrixplot/MatrixplotControls");
19
16
  var _ObsList = require("../obs-list/ObsList");
20
17
  var _offcanvas = require("../offcanvas");
21
- var _Pseudospatial = require("../pseudospatial/Pseudospatial");
22
- var _PseudospatialToolbar = require("../pseudospatial/PseudospatialToolbar");
23
18
  var _Scatterplot = require("../scatterplot/Scatterplot");
24
19
  var _ScatterplotControls = require("../scatterplot/ScatterplotControls");
25
20
  var _SearchBar = require("../search-bar/SearchBar");
26
21
  var _VarList = require("../var-list/VarList");
27
22
  var _Violin = require("../violin/Violin");
28
- var _ViolinControls = require("../violin/ViolinControls");
29
- const _excluded = ["isPseudospatial", "searchDiseases", "defaultPlotType"];
23
+ const _excluded = ["children", "varMode", "searchDiseases"];
30
24
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
31
25
  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); }
32
26
  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; }
33
27
  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; }
34
28
  function FullPage(_ref) {
35
29
  let {
36
- isPseudospatial = false,
37
- searchDiseases = true,
38
- defaultPlotType = _constants.PLOT_TYPES.SCATTERPLOT
30
+ children,
31
+ varMode = _constants.SELECTION_MODES.SINGLE,
32
+ searchDiseases = false
39
33
  } = _ref,
40
34
  props = _objectWithoutProperties(_ref, _excluded);
41
35
  const appRef = (0, _react.useRef)();
@@ -48,16 +42,6 @@ function FullPage(_ref) {
48
42
  const [showVars, setShowVars] = (0, _react.useState)(false);
49
43
  const [showControls, setShowControls] = (0, _react.useState)(false);
50
44
  const [showModal, setShowModal] = (0, _react.useState)(false);
51
- const [plotType, setPlotType] = (0, _react.useState)(defaultPlotType || _constants.PLOT_TYPES.SCATTERPLOT);
52
- const [showPseudospatialControls, setShowPseudospatialControls] = (0, _react.useState)(false);
53
- const [pseudospatialPlotType, setpseudospatialPlotType] = (0, _react.useState)(null);
54
- (0, _react.useEffect)(() => {
55
- setPlotType(defaultPlotType || _constants.PLOT_TYPES.SCATTERPLOT);
56
- }, [defaultPlotType]);
57
- const LgBreakpoint = (0, _material.useMediaQuery)(_constants.BREAKPOINTS.LG);
58
- const XlBreakpoint = (0, _material.useMediaQuery)(_constants.BREAKPOINTS.XL);
59
- const showObsBtn = LgBreakpoint;
60
- const showVarsBtn = XlBreakpoint;
61
45
  (0, _react.useEffect)(() => {
62
46
  const updateDimensions = () => {
63
47
  if (appRef.current) {
@@ -76,67 +60,9 @@ function FullPage(_ref) {
76
60
  }
77
61
  };
78
62
  window.addEventListener("resize", updateDimensions);
79
- updateDimensions();
63
+ updateDimensions(); // Initial update
80
64
  return () => window.removeEventListener("resize", updateDimensions);
81
65
  }, []);
82
- const {
83
- plotControls,
84
- varMode,
85
- showSelectedAsActive
86
- } = {
87
- [_constants.PLOT_TYPES.SCATTERPLOT]: {
88
- plotControls: _ScatterplotControls.ScatterplotControls,
89
- varMode: _constants.SELECTION_MODES.SINGLE,
90
- showSelectedAsActive: false
91
- },
92
- [_constants.PLOT_TYPES.DOTPLOT]: {
93
- plotControls: _DotplotControls.DotplotControls,
94
- varMode: _constants.SELECTION_MODES.MULTIPLE,
95
- showSelectedAsActive: true
96
- },
97
- [_constants.PLOT_TYPES.MATRIXPLOT]: {
98
- plotControls: _MatrixplotControls.MatrixplotControls,
99
- varMode: _constants.SELECTION_MODES.MULTIPLE,
100
- showSelectedAsActive: true
101
- },
102
- [_constants.PLOT_TYPES.HEATMAP]: {
103
- plotControls: _HeatmapControls.HeatmapControls,
104
- varMode: _constants.SELECTION_MODES.MULTIPLE,
105
- showSelectedAsActive: true
106
- },
107
- [_constants.PLOT_TYPES.VIOLINPLOT]: {
108
- plotControls: _ViolinControls.ViolinControls,
109
- varMode: _constants.SELECTION_MODES.MULTIPLE,
110
- showSelectedAsActive: false
111
- }
112
- }[plotType];
113
- const plot = (0, _react.useMemo)(() => {
114
- const commonProps = {
115
- showObsBtn,
116
- showVarsBtn,
117
- showCtrlsBtn: true,
118
- setShowObs,
119
- setShowVars,
120
- setShowControls
121
- };
122
- switch (plotType) {
123
- case _constants.PLOT_TYPES.DOTPLOT:
124
- return /*#__PURE__*/_react.default.createElement(_Dotplot.Dotplot, commonProps);
125
- case _constants.PLOT_TYPES.MATRIXPLOT:
126
- return /*#__PURE__*/_react.default.createElement(_Matrixplot.Matrixplot, commonProps);
127
- case _constants.PLOT_TYPES.HEATMAP:
128
- return /*#__PURE__*/_react.default.createElement(_Heatmap.Heatmap, commonProps);
129
- case _constants.PLOT_TYPES.VIOLINPLOT:
130
- return /*#__PURE__*/_react.default.createElement(_Violin.Violin, _extends({
131
- mode: _constants.VIOLIN_MODES.MULTIKEY
132
- }, commonProps));
133
- case _constants.PLOT_TYPES.SCATTERPLOT:
134
- default:
135
- return /*#__PURE__*/_react.default.createElement(_Scatterplot.Scatterplot, _extends({}, commonProps, {
136
- isFullscreen: true
137
- }));
138
- }
139
- }, [plotType, showObsBtn, showVarsBtn]);
140
66
  return /*#__PURE__*/_react.default.createElement("div", {
141
67
  ref: appRef,
142
68
  className: "cherita-app",
@@ -145,32 +71,22 @@ function FullPage(_ref) {
145
71
  }
146
72
  }, /*#__PURE__*/_react.default.createElement(_DatasetContext.DatasetProvider, props, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Container, {
147
73
  fluid: true,
148
- className: "cherita-app-container",
74
+ className: "d-flex g-0",
149
75
  style: {
150
76
  height: appDimensions.height
151
77
  }
152
78
  }, /*#__PURE__*/_react.default.createElement("div", {
153
79
  className: "cherita-app-obs modern-scrollbars border-end h-100"
154
- }, /*#__PURE__*/_react.default.createElement(_ObsList.ObsColsList, _extends({}, props, {
155
- showSelectedAsActive: showSelectedAsActive
156
- }))), /*#__PURE__*/_react.default.createElement("div", {
157
- className: "cherita-app-canvas"
158
- }, plot), /*#__PURE__*/_react.default.createElement("div", {
80
+ }, /*#__PURE__*/_react.default.createElement(_ObsList.ObsColsList, props)), /*#__PURE__*/_react.default.createElement("div", {
81
+ className: "cherita-app-canvas flex-grow-1"
82
+ }, children({
83
+ setShowObs,
84
+ setShowVars
85
+ })), /*#__PURE__*/_react.default.createElement("div", {
159
86
  className: "cherita-app-sidebar p-3"
160
87
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Card, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Card.Body, {
161
88
  className: "d-flex flex-column p-0"
162
89
  }, /*#__PURE__*/_react.default.createElement("div", {
163
- className: "sidebar-plotselector"
164
- }, /*#__PURE__*/_react.default.createElement(_PlotTypeSelector.PlotTypeSelector, {
165
- currentType: plotType,
166
- onChange: type => setPlotType(type)
167
- })), plotType === _constants.PLOT_TYPES.SCATTERPLOT && isPseudospatial ? /*#__PURE__*/_react.default.createElement("div", {
168
- className: "sidebar-pseudospatial"
169
- }, /*#__PURE__*/_react.default.createElement(_Pseudospatial.Pseudospatial, {
170
- plotType: pseudospatialPlotType,
171
- setPlotType: setpseudospatialPlotType,
172
- setShowControls: setShowPseudospatialControls
173
- })) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), /*#__PURE__*/_react.default.createElement("div", {
174
90
  className: "sidebar-features modern-scrollbars"
175
91
  }, /*#__PURE__*/_react.default.createElement(_SearchBar.SearchBar, {
176
92
  searchDiseases: searchDiseases,
@@ -183,25 +99,51 @@ function FullPage(_ref) {
183
99
  centered: true
184
100
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Header, {
185
101
  closeButton: true
186
- }), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Body, null)), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasObs, _extends({}, props, {
187
- showSelectedAsActive: showSelectedAsActive,
102
+ }), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Body, null)), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasObs, {
188
103
  show: showObs,
189
104
  handleClose: () => setShowObs(false)
190
- })), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasVars, {
105
+ }), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasVars, {
191
106
  show: showVars,
192
107
  handleClose: () => setShowVars(false),
193
108
  mode: varMode
194
- }), plotControls && /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasControls, {
109
+ }), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasControls, {
195
110
  show: showControls,
196
111
  handleClose: () => setShowControls(false),
197
- Controls: plotControls
112
+ Controls: _ScatterplotControls.ScatterplotControls
198
113
  }), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasObsm, {
199
114
  show: showObsm,
200
115
  handleClose: () => setShowObsm(false)
201
- }), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasControls, {
202
- show: showPseudospatialControls,
203
- handleClose: () => setShowPseudospatialControls(false),
204
- Controls: _PseudospatialToolbar.PseudospatialToolbar,
205
- plotType: pseudospatialPlotType
116
+ }))));
117
+ }
118
+ function FullPageScatterplot(props) {
119
+ return /*#__PURE__*/_react.default.createElement(FullPage, _extends({}, props, {
120
+ varMode: _constants.SELECTION_MODES.SINGLE
121
+ }), _ref2 => {
122
+ let {
123
+ setShowObs,
124
+ setShowVars
125
+ } = _ref2;
126
+ return /*#__PURE__*/_react.default.createElement(_Scatterplot.Scatterplot, {
127
+ setShowObs: setShowObs,
128
+ setShowVars: setShowVars,
129
+ isFullscreen: true
130
+ });
131
+ });
132
+ }
133
+ function FullPagePlots(props) {
134
+ return /*#__PURE__*/_react.default.createElement(FullPage, _extends({}, props, {
135
+ varMode: _constants.SELECTION_MODES.MULTIPLE
136
+ }), /*#__PURE__*/_react.default.createElement("div", {
137
+ className: "container-fluid w-100 h-100 d-flex flex-column overflow-y-auto"
138
+ }, /*#__PURE__*/_react.default.createElement("div", {
139
+ className: "row flex-grow-1"
140
+ }, /*#__PURE__*/_react.default.createElement(_Heatmap.Heatmap, null)), /*#__PURE__*/_react.default.createElement("div", {
141
+ className: "row flex-grow-1"
142
+ }, /*#__PURE__*/_react.default.createElement(_Matrixplot.Matrixplot, null)), /*#__PURE__*/_react.default.createElement("div", {
143
+ className: "row flex-grow-1"
144
+ }, /*#__PURE__*/_react.default.createElement(_Dotplot.Dotplot, null)), /*#__PURE__*/_react.default.createElement("div", {
145
+ className: "row flex-grow-1"
146
+ }, /*#__PURE__*/_react.default.createElement(_Violin.Violin, {
147
+ mode: _constants.VIOLIN_MODES.GROUPBY
206
148
  }))));
207
149
  }
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FullPage = FullPage;
7
+ exports.FullPagePseudospatial = FullPagePseudospatial;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
10
+ var _reactFontawesome = require("@fortawesome/react-fontawesome");
11
+ var _reactBootstrap = require("react-bootstrap");
12
+ var _constants = require("../../constants/constants");
13
+ var _DatasetContext = require("../../context/DatasetContext");
14
+ var _ObsList = require("../obs-list/ObsList");
15
+ var _offcanvas = require("../offcanvas");
16
+ var _Pseudospatial = require("../pseudospatial/Pseudospatial");
17
+ var _PseudospatialToolbar = require("../pseudospatial/PseudospatialToolbar");
18
+ var _Scatterplot = require("../scatterplot/Scatterplot");
19
+ var _ScatterplotControls = require("../scatterplot/ScatterplotControls");
20
+ var _SearchBar = require("../search-bar/SearchBar");
21
+ var _VarList = require("../var-list/VarList");
22
+ const _excluded = ["children", "varMode", "searchDiseases"];
23
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
24
+ 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); }
25
+ 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; }
26
+ 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; }
27
+ function FullPage(_ref) {
28
+ let {
29
+ children,
30
+ varMode = _constants.SELECTION_MODES.SINGLE,
31
+ searchDiseases = false
32
+ } = _ref,
33
+ props = _objectWithoutProperties(_ref, _excluded);
34
+ const appRef = (0, _react.useRef)();
35
+ const [appDimensions, setAppDimensions] = (0, _react.useState)({
36
+ width: 0,
37
+ height: 0
38
+ });
39
+ const [showObs, setShowObs] = (0, _react.useState)(false);
40
+ const [showObsm, setShowObsm] = (0, _react.useState)(false);
41
+ const [showVars, setShowVars] = (0, _react.useState)(false);
42
+ const [showControls, setShowControls] = (0, _react.useState)(false);
43
+ const [showPseudospatialControls, setShowPseudospatialControls] = (0, _react.useState)(false);
44
+ const [showModal, setShowModal] = (0, _react.useState)(false);
45
+ const [pseudospatialPlotType, setpseudospatialPlotType] = (0, _react.useState)(null);
46
+ (0, _react.useEffect)(() => {
47
+ const updateDimensions = () => {
48
+ if (appRef.current) {
49
+ // Get the distance from the top of the page to the target element
50
+ const rect = appRef.current.getBoundingClientRect();
51
+ const distanceFromTop = rect.top + window.scrollY;
52
+
53
+ // Calculate the available height for the Cherita app
54
+ const availableHeight = window.innerHeight - distanceFromTop;
55
+
56
+ // Update the dimensions to fit the viewport minus the navbar height
57
+ setAppDimensions({
58
+ width: appRef.current.offsetWidth,
59
+ height: availableHeight
60
+ });
61
+ }
62
+ };
63
+ window.addEventListener("resize", updateDimensions);
64
+ updateDimensions(); // Initial update
65
+ return () => window.removeEventListener("resize", updateDimensions);
66
+ }, []);
67
+ return /*#__PURE__*/_react.default.createElement("div", {
68
+ ref: appRef,
69
+ className: "cherita-app",
70
+ style: {
71
+ height: appDimensions.height
72
+ }
73
+ }, /*#__PURE__*/_react.default.createElement(_DatasetContext.DatasetProvider, props, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Container, {
74
+ fluid: true,
75
+ className: "d-flex g-0",
76
+ style: {
77
+ height: appDimensions.height
78
+ }
79
+ }, /*#__PURE__*/_react.default.createElement("div", {
80
+ className: "cherita-app-obs modern-scrollbars border-end h-100"
81
+ }, /*#__PURE__*/_react.default.createElement(_ObsList.ObsColsList, props)), /*#__PURE__*/_react.default.createElement("div", {
82
+ className: "cherita-app-canvas flex-grow-1"
83
+ }, children({
84
+ setShowObs,
85
+ setShowVars
86
+ })), /*#__PURE__*/_react.default.createElement("div", {
87
+ className: "cherita-app-sidebar p-3"
88
+ }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Card, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Card.Header, {
89
+ className: "d-flex justify-content-evenly align-items-center"
90
+ }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
91
+ variant: "link",
92
+ onClick: () => setShowModal(true)
93
+ }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
94
+ icon: _freeSolidSvgIcons.faArrowUpRightFromSquare
95
+ }))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Card.Body, {
96
+ className: "d-flex flex-column p-0"
97
+ }, /*#__PURE__*/_react.default.createElement("div", {
98
+ className: "sidebar-pseudospatial"
99
+ }, /*#__PURE__*/_react.default.createElement(_Pseudospatial.Pseudospatial, {
100
+ className: "sidebar-pseudospatial",
101
+ plotType: pseudospatialPlotType,
102
+ setPlotType: setpseudospatialPlotType,
103
+ setShowControls: setShowPseudospatialControls
104
+ })), /*#__PURE__*/_react.default.createElement("div", {
105
+ className: "sidebar-features modern-scrollbars"
106
+ }, /*#__PURE__*/_react.default.createElement(_SearchBar.SearchBar, {
107
+ searchDiseases: searchDiseases,
108
+ searchVar: true
109
+ }), /*#__PURE__*/_react.default.createElement(_VarList.VarNamesList, {
110
+ mode: varMode
111
+ })))))), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal, {
112
+ show: showModal,
113
+ onHide: () => setShowModal(false),
114
+ centered: true
115
+ }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Header, {
116
+ closeButton: true
117
+ }), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Body, null, /*#__PURE__*/_react.default.createElement(_Pseudospatial.Pseudospatial, {
118
+ plotType: pseudospatialPlotType,
119
+ setPlotType: setpseudospatialPlotType,
120
+ setShowControls: setShowPseudospatialControls,
121
+ height: 500
122
+ }))), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasObs, {
123
+ show: showObs,
124
+ handleClose: () => setShowObs(false)
125
+ }), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasVars, {
126
+ show: showVars,
127
+ handleClose: () => setShowVars(false),
128
+ mode: varMode
129
+ }), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasControls, {
130
+ show: showControls,
131
+ handleClose: () => setShowControls(false),
132
+ Controls: _ScatterplotControls.ScatterplotControls
133
+ }), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasControls, {
134
+ show: showPseudospatialControls,
135
+ handleClose: () => setShowPseudospatialControls(false),
136
+ Controls: _PseudospatialToolbar.PseudospatialToolbar,
137
+ plotType: pseudospatialPlotType
138
+ }), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasObsm, {
139
+ show: showObsm,
140
+ handleClose: () => setShowObsm(false)
141
+ }))));
142
+ }
143
+ function FullPagePseudospatial(props) {
144
+ return /*#__PURE__*/_react.default.createElement(FullPage, _extends({}, props, {
145
+ varMode: _constants.SELECTION_MODES.SINGLE
146
+ }), _ref2 => {
147
+ let {
148
+ setShowObs,
149
+ setShowVars
150
+ } = _ref2;
151
+ return /*#__PURE__*/_react.default.createElement(_Scatterplot.Scatterplot, {
152
+ setShowObs: setShowObs,
153
+ setShowVars: setShowVars,
154
+ isFullscreen: true
155
+ });
156
+ });
157
+ }
@@ -8,13 +8,11 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _lodash = _interopRequireDefault(require("lodash"));
9
9
  var _reactBootstrap = require("react-bootstrap");
10
10
  var _reactPlotly = _interopRequireDefault(require("react-plotly.js"));
11
- var _constants = require("../../constants/constants");
12
11
  var _DatasetContext = require("../../context/DatasetContext");
13
12
  var _FilterContext = require("../../context/FilterContext");
14
13
  var _SettingsContext = require("../../context/SettingsContext");
15
14
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
16
15
  var _requests = require("../../utils/requests");
17
- var _Toolbar = require("../toolbar/Toolbar");
18
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
17
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
18
  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; }
@@ -22,16 +20,8 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
22
20
  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; }
23
21
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
24
22
  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); }
25
- function Heatmap(_ref) {
23
+ function Heatmap() {
26
24
  var _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
27
- let {
28
- showObsBtn = false,
29
- showVarsBtn = false,
30
- showCtrlsBtn = false,
31
- setShowObs,
32
- setShowVars,
33
- setShowControls
34
- } = _ref;
35
25
  const ENDPOINT = "heatmap";
36
26
  const dataset = (0, _DatasetContext.useDataset)();
37
27
  const settings = (0, _SettingsContext.useSettings)();
@@ -108,29 +98,17 @@ function Heatmap(_ref) {
108
98
  colorscale.current = settings.controls.colorScale;
109
99
  updateColorscale(colorscale.current);
110
100
  }, [settings.controls.colorScale, updateColorscale]);
111
- const customModeBarButtons = _lodash.default.compact([showObsBtn && (0, _Toolbar.ObsPlotlyToolbar)({
112
- onClick: setShowObs
113
- }), showVarsBtn && (0, _Toolbar.VarPlotlyToolbar)({
114
- onClick: setShowVars
115
- }), showCtrlsBtn && (0, _Toolbar.ControlsPlotlyToolbar)({
116
- onClick: setShowControls
117
- })]);
118
- const modeBarButtons = customModeBarButtons.length ? [customModeBarButtons, _constants.PLOTLY_MODEBAR_BUTTONS] : [_constants.PLOTLY_MODEBAR_BUTTONS];
119
101
  if (!serverError) {
120
102
  if (hasSelections) {
121
103
  return /*#__PURE__*/_react.default.createElement("div", {
122
- className: "cherita-plot cherita-heatmap position-relative"
104
+ className: "cherita-heatmap position-relative"
123
105
  }, isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), /*#__PURE__*/_react.default.createElement(_reactPlotly.default, {
124
106
  data: data,
125
107
  layout: layout,
126
108
  useResizeHandler: true,
127
109
  style: {
128
- width: "100%",
129
- height: "100%"
130
- },
131
- config: {
132
- displaylogo: false,
133
- modeBarButtons: modeBarButtons
110
+ maxWidth: "100%",
111
+ maxHeight: "100%"
134
112
  }
135
113
  }));
136
114
  }
@@ -138,15 +116,7 @@ function Heatmap(_ref) {
138
116
  className: "cherita-heatmap"
139
117
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
140
118
  variant: "light"
141
- }, "Select", " ", showVarsBtn ? /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
142
- variant: "link",
143
- className: "border-0 p-0 align-baseline",
144
- onClick: setShowVars
145
- }, "features") : "features", " ", "and a", " ", showObsBtn ? /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
146
- variant: "link",
147
- className: "border-0 p-0 align-baseline",
148
- onClick: setShowObs
149
- }, "category") : "category"));
119
+ }, "Select features and a category"));
150
120
  } else {
151
121
  return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
152
122
  variant: "danger"
@@ -8,13 +8,11 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _lodash = _interopRequireDefault(require("lodash"));
9
9
  var _reactBootstrap = require("react-bootstrap");
10
10
  var _reactPlotly = _interopRequireDefault(require("react-plotly.js"));
11
- var _constants = require("../../constants/constants");
12
11
  var _DatasetContext = require("../../context/DatasetContext");
13
12
  var _FilterContext = require("../../context/FilterContext");
14
13
  var _SettingsContext = require("../../context/SettingsContext");
15
14
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
16
15
  var _requests = require("../../utils/requests");
17
- var _Toolbar = require("../toolbar/Toolbar");
18
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
17
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
18
  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; }
@@ -22,16 +20,8 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
22
20
  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; }
23
21
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
24
22
  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); }
25
- function Matrixplot(_ref) {
23
+ function Matrixplot() {
26
24
  var _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
27
- let {
28
- showObsBtn = false,
29
- showVarsBtn = false,
30
- showCtrlsBtn = false,
31
- setShowObs,
32
- setShowVars,
33
- setShowControls
34
- } = _ref;
35
25
  const ENDPOINT = "matrixplot";
36
26
  const dataset = (0, _DatasetContext.useDataset)();
37
27
  const settings = (0, _SettingsContext.useSettings)();
@@ -110,29 +100,17 @@ function Matrixplot(_ref) {
110
100
  colorscale.current = settings.controls.colorScale;
111
101
  updateColorscale(colorscale.current);
112
102
  }, [settings.controls.colorScale, updateColorscale]);
113
- const customModeBarButtons = _lodash.default.compact([showObsBtn && (0, _Toolbar.ObsPlotlyToolbar)({
114
- onClick: setShowObs
115
- }), showVarsBtn && (0, _Toolbar.VarPlotlyToolbar)({
116
- onClick: setShowVars
117
- }), showCtrlsBtn && (0, _Toolbar.ControlsPlotlyToolbar)({
118
- onClick: setShowControls
119
- })]);
120
- const modeBarButtons = customModeBarButtons.length ? [customModeBarButtons, _constants.PLOTLY_MODEBAR_BUTTONS] : [_constants.PLOTLY_MODEBAR_BUTTONS];
121
103
  if (!serverError) {
122
104
  if (hasSelections) {
123
105
  return /*#__PURE__*/_react.default.createElement("div", {
124
- className: "cherita-plot cherita-matrixplot position-relative"
106
+ className: "cherita-matrixplot position-relative"
125
107
  }, isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), /*#__PURE__*/_react.default.createElement(_reactPlotly.default, {
126
108
  data: data,
127
109
  layout: layout,
128
110
  useResizeHandler: true,
129
111
  style: {
130
- width: "100%",
131
- height: "100%"
132
- },
133
- config: {
134
- displaylogo: false,
135
- modeBarButtons: modeBarButtons
112
+ maxWidth: "100%",
113
+ maxHeight: "100%"
136
114
  }
137
115
  }));
138
116
  }
@@ -140,15 +118,7 @@ function Matrixplot(_ref) {
140
118
  className: "cherita-matrixplot"
141
119
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
142
120
  variant: "light"
143
- }, "Select", " ", showVarsBtn ? /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
144
- variant: "link",
145
- className: "border-0 p-0 align-baseline",
146
- onClick: setShowVars
147
- }, "features") : "features", " ", "and a", " ", showObsBtn ? /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
148
- variant: "link",
149
- className: "border-0 p-0 align-baseline",
150
- onClick: setShowObs
151
- }, "category") : "category"));
121
+ }, "Select features and a category"));
152
122
  } else {
153
123
  return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
154
124
  variant: "danger"