@haniffalab/cherita-react 0.2.0 → 0.2.1-dev.2025-02-19.e6d8aac6
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.
- package/dist/components/full-page/FullPage.js +0 -23
- package/dist/components/full-page/FullPagePseudospatial.js +214 -0
- package/dist/components/obs-list/ObsItem.js +8 -4
- package/dist/components/obs-list/ObsList.js +44 -17
- package/dist/components/obs-list/ObsToolbar.js +3 -3
- package/dist/components/offcanvas/index.js +15 -15
- package/dist/components/pseudospatial/Pseudospatial.js +26 -8
- package/dist/components/pseudospatial/PseudospatialToolbar.js +19 -0
- package/dist/components/scatterplot/Toolbox.js +6 -6
- package/dist/css/cherita.css +408 -229
- package/dist/css/cherita.css.map +1 -1
- package/dist/index.js +15 -14
- package/dist/utils/Legend.js +13 -11
- package/dist/utils/LoadingIndicators.js +1 -1
- package/dist/utils/VirtualizedList.js +2 -1
- package/dist/utils/requests.js +12 -2
- package/package.json +35 -33
- package/scss/cherita.scss +66 -46
- package/scss/components/layouts.scss +101 -0
- package/scss/components/plotly.scss +30 -0
- package/scss/components/plots.scss +13 -0
- package/scss/components/scrollbars.scss +18 -0
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.FullPage = FullPage;
|
|
7
7
|
exports.FullPagePlots = FullPagePlots;
|
|
8
|
-
exports.FullPagePseudospatial = FullPagePseudospatial;
|
|
9
8
|
exports.FullPageScatterplot = FullPageScatterplot;
|
|
10
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
10
|
var _reactBootstrap = require("react-bootstrap");
|
|
@@ -16,7 +15,6 @@ var _Heatmap = require("../heatmap/Heatmap");
|
|
|
16
15
|
var _Matrixplot = require("../matrixplot/Matrixplot");
|
|
17
16
|
var _ObsList = require("../obs-list/ObsList");
|
|
18
17
|
var _offcanvas = require("../offcanvas");
|
|
19
|
-
var _Pseudospatial = require("../pseudospatial/Pseudospatial");
|
|
20
18
|
var _Scatterplot = require("../scatterplot/Scatterplot");
|
|
21
19
|
var _ScatterplotControls = require("../scatterplot/ScatterplotControls");
|
|
22
20
|
var _SearchBar = require("../search-bar/SearchBar");
|
|
@@ -126,27 +124,6 @@ function FullPage({
|
|
|
126
124
|
function FullPageScatterplot(props) {
|
|
127
125
|
return /*#__PURE__*/_react.default.createElement(FullPage, props, /*#__PURE__*/_react.default.createElement(_Scatterplot.Scatterplot, null));
|
|
128
126
|
}
|
|
129
|
-
function FullPagePseudospatial(props) {
|
|
130
|
-
return /*#__PURE__*/_react.default.createElement(FullPage, props, /*#__PURE__*/_react.default.createElement("div", {
|
|
131
|
-
className: "container-fluid h-100"
|
|
132
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
133
|
-
className: "row"
|
|
134
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
135
|
-
className: "col-12 col-lg-7"
|
|
136
|
-
}, /*#__PURE__*/_react.default.createElement(_Scatterplot.Scatterplot, null)), /*#__PURE__*/_react.default.createElement("div", {
|
|
137
|
-
className: "col-12 col-lg-5"
|
|
138
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
139
|
-
className: "container-fluid h-100 d-flex align-itemms-center justify-content-center"
|
|
140
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
141
|
-
className: "row w-100 py-3"
|
|
142
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
143
|
-
className: "col-12"
|
|
144
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
145
|
-
className: "p-2"
|
|
146
|
-
}, /*#__PURE__*/_react.default.createElement(_Pseudospatial.Pseudospatial, null))), /*#__PURE__*/_react.default.createElement("div", {
|
|
147
|
-
className: "col-12"
|
|
148
|
-
}, /*#__PURE__*/_react.default.createElement(_Pseudospatial.PseudospatialImage, null))))))));
|
|
149
|
-
}
|
|
150
127
|
function FullPagePlots(props) {
|
|
151
128
|
return /*#__PURE__*/_react.default.createElement(FullPage, _extends({}, props, {
|
|
152
129
|
varMode: _constants.SELECTION_MODES.MULTIPLE
|
|
@@ -0,0 +1,214 @@
|
|
|
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 _AccordionButton = require("react-bootstrap/AccordionButton");
|
|
13
|
+
var _AccordionContext = _interopRequireDefault(require("react-bootstrap/AccordionContext"));
|
|
14
|
+
var _ButtonGroup = _interopRequireDefault(require("react-bootstrap/ButtonGroup"));
|
|
15
|
+
var _constants = require("../../constants/constants");
|
|
16
|
+
var _DatasetContext = require("../../context/DatasetContext");
|
|
17
|
+
var _ObsList = require("../obs-list/ObsList");
|
|
18
|
+
var _offcanvas = require("../offcanvas");
|
|
19
|
+
var _Pseudospatial = require("../pseudospatial/Pseudospatial");
|
|
20
|
+
var _PseudospatialToolbar = require("../pseudospatial/PseudospatialToolbar");
|
|
21
|
+
var _Scatterplot = require("../scatterplot/Scatterplot");
|
|
22
|
+
var _ScatterplotControls = require("../scatterplot/ScatterplotControls");
|
|
23
|
+
var _SearchBar = require("../search-bar/SearchBar");
|
|
24
|
+
var _VarList = require("../var-list/VarList");
|
|
25
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
26
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
27
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
28
|
+
function FullPage({
|
|
29
|
+
children,
|
|
30
|
+
varMode = _constants.SELECTION_MODES.SINGLE,
|
|
31
|
+
...props
|
|
32
|
+
}) {
|
|
33
|
+
const appRef = (0, _react.useRef)();
|
|
34
|
+
const [appDimensions, setAppDimensions] = (0, _react.useState)({
|
|
35
|
+
width: 0,
|
|
36
|
+
height: 0
|
|
37
|
+
});
|
|
38
|
+
const [showObs, setShowObs] = (0, _react.useState)(false);
|
|
39
|
+
const [showObsm, setShowObsm] = (0, _react.useState)(false);
|
|
40
|
+
const [showVars, setShowVars] = (0, _react.useState)(false);
|
|
41
|
+
const [showControls, setShowControls] = (0, _react.useState)(false);
|
|
42
|
+
const [showPseudospatialControls, setShowPseudospatialControls] = (0, _react.useState)(false);
|
|
43
|
+
const [showModal, setShowModal] = (0, _react.useState)(false);
|
|
44
|
+
(0, _react.useLayoutEffect)(() => {
|
|
45
|
+
function updateDimensions() {
|
|
46
|
+
if (appRef.current) {
|
|
47
|
+
// Get the distance from the top of the page to the target element
|
|
48
|
+
const rect = appRef.current.getBoundingClientRect();
|
|
49
|
+
const distanceFromTop = rect.top + window.scrollY;
|
|
50
|
+
|
|
51
|
+
// Calculate the available height for the Cherita app
|
|
52
|
+
const availableHeight = window.innerHeight - distanceFromTop;
|
|
53
|
+
|
|
54
|
+
// Update the dimensions to fit the viewport minus the navbar height
|
|
55
|
+
setAppDimensions({
|
|
56
|
+
width: appRef.current.offsetWidth,
|
|
57
|
+
height: availableHeight
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Initial calculation
|
|
63
|
+
updateDimensions();
|
|
64
|
+
|
|
65
|
+
// Event listener for resize
|
|
66
|
+
window.addEventListener("resize", updateDimensions);
|
|
67
|
+
|
|
68
|
+
// Handle dimension recalculation when accordion expands/collapses
|
|
69
|
+
const accordionItems = document.querySelectorAll(".accordion-item");
|
|
70
|
+
accordionItems.forEach(item => {
|
|
71
|
+
item.addEventListener("transitionend", updateDimensions);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// Clean up event listeners
|
|
75
|
+
return () => {
|
|
76
|
+
window.removeEventListener("resize", updateDimensions);
|
|
77
|
+
accordionItems.forEach(item => {
|
|
78
|
+
item.removeEventListener("transitionend", updateDimensions);
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
}, []); // Dependency array to run only on mount/unmount
|
|
82
|
+
|
|
83
|
+
const [open, setOpen] = (0, _react.useState)(false);
|
|
84
|
+
const [isCollapsed, setIsCollapsed] = (0, _react.useState)(false);
|
|
85
|
+
function ObsAccordionToggle({
|
|
86
|
+
title,
|
|
87
|
+
eventKey,
|
|
88
|
+
buttons
|
|
89
|
+
}) {
|
|
90
|
+
const {
|
|
91
|
+
activeEventKey
|
|
92
|
+
} = (0, _react.useContext)(_AccordionContext.default);
|
|
93
|
+
// console.log("activeEventKey:", activeEventKey);
|
|
94
|
+
|
|
95
|
+
const decoratedOnClick = (0, _AccordionButton.useAccordionButton)(eventKey, () => {
|
|
96
|
+
console.log("Clicked accordion:", eventKey);
|
|
97
|
+
});
|
|
98
|
+
const isCurrentEventKey = Array.isArray(activeEventKey) ? activeEventKey.includes(eventKey) : activeEventKey === eventKey;
|
|
99
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
100
|
+
className: "accordion-header",
|
|
101
|
+
onClick: decoratedOnClick
|
|
102
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
103
|
+
className: `accordion-header-wrapper d-flex align-items-center ${isCurrentEventKey ? "" : "collapsed"}`
|
|
104
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
105
|
+
className: "accordion-title flex-grow-1"
|
|
106
|
+
}, title), /*#__PURE__*/_react.default.createElement("div", {
|
|
107
|
+
className: "accordion-buttons ms-auto"
|
|
108
|
+
}, /*#__PURE__*/_react.default.createElement(_ButtonGroup.default, null, buttons))));
|
|
109
|
+
}
|
|
110
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
111
|
+
ref: appRef,
|
|
112
|
+
className: "cherita-app",
|
|
113
|
+
style: {
|
|
114
|
+
height: appDimensions.height
|
|
115
|
+
}
|
|
116
|
+
}, /*#__PURE__*/_react.default.createElement(_DatasetContext.DatasetProvider, props, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Container, {
|
|
117
|
+
fluid: true,
|
|
118
|
+
className: "d-flex g-0",
|
|
119
|
+
style: {
|
|
120
|
+
height: appDimensions.height
|
|
121
|
+
}
|
|
122
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Navbar, {
|
|
123
|
+
expand: "sm",
|
|
124
|
+
bg: "primary",
|
|
125
|
+
className: "cherita-navbar"
|
|
126
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
127
|
+
className: "container-fluid"
|
|
128
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Navbar.Toggle, {
|
|
129
|
+
"aria-controls": "navbarScroll"
|
|
130
|
+
}), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Navbar.Collapse, {
|
|
131
|
+
id: "navbarScroll"
|
|
132
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav, {
|
|
133
|
+
className: "me-auto my-0",
|
|
134
|
+
navbarScroll: true
|
|
135
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Item, {
|
|
136
|
+
className: "d-block d-lg-none"
|
|
137
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Link, {
|
|
138
|
+
onClick: () => setShowObs(true)
|
|
139
|
+
}, "Observations")), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Item, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Link, {
|
|
140
|
+
onClick: () => setShowVars(true)
|
|
141
|
+
}, "Features"))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav, {
|
|
142
|
+
className: "d-flex"
|
|
143
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Item, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Link, {
|
|
144
|
+
onClick: () => setShowControls(true)
|
|
145
|
+
}, "Controls")))))), /*#__PURE__*/_react.default.createElement("div", {
|
|
146
|
+
className: "cherita-app-obs modern-scrollbars border-end h-100"
|
|
147
|
+
}, /*#__PURE__*/_react.default.createElement(_ObsList.ObsColsList, null)), /*#__PURE__*/_react.default.createElement("div", {
|
|
148
|
+
className: "cherita-app-canvas flex-grow-1"
|
|
149
|
+
}, children), /*#__PURE__*/_react.default.createElement("div", {
|
|
150
|
+
className: "cherita-app-sidebar p-3"
|
|
151
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Card, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Card.Header, {
|
|
152
|
+
className: "d-flex justify-content-evenly align-items-center"
|
|
153
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
154
|
+
variant: "link",
|
|
155
|
+
onClick: () => setShowModal(true)
|
|
156
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
157
|
+
icon: _freeSolidSvgIcons.faChartSimple
|
|
158
|
+
})), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
159
|
+
variant: "link",
|
|
160
|
+
onClick: () => setShowModal(true)
|
|
161
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
162
|
+
icon: _freeSolidSvgIcons.faChartLine
|
|
163
|
+
})), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
164
|
+
variant: "link",
|
|
165
|
+
onClick: () => setShowModal(true)
|
|
166
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
167
|
+
icon: _freeSolidSvgIcons.faChartPie
|
|
168
|
+
})), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
169
|
+
variant: "link",
|
|
170
|
+
onClick: () => setShowModal(true)
|
|
171
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
172
|
+
icon: _freeSolidSvgIcons.faChartArea
|
|
173
|
+
}))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Card.Body, {
|
|
174
|
+
className: "d-flex flex-column p-0"
|
|
175
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
176
|
+
className: "sidebar-pseudospatial"
|
|
177
|
+
}, /*#__PURE__*/_react.default.createElement(_Pseudospatial.Pseudospatial, {
|
|
178
|
+
className: "sidebar-pseudospatial",
|
|
179
|
+
setShowPseudospatialControls: setShowPseudospatialControls
|
|
180
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
181
|
+
className: "sidebar-features modern-scrollbars"
|
|
182
|
+
}, /*#__PURE__*/_react.default.createElement(_SearchBar.SearchBar, {
|
|
183
|
+
searchDiseases: true,
|
|
184
|
+
searchVar: true
|
|
185
|
+
}), /*#__PURE__*/_react.default.createElement(_VarList.VarNamesList, {
|
|
186
|
+
mode: varMode
|
|
187
|
+
})))))), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal, {
|
|
188
|
+
show: showModal,
|
|
189
|
+
onHide: () => setShowModal(false),
|
|
190
|
+
centered: true
|
|
191
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Header, {
|
|
192
|
+
closeButton: true
|
|
193
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Title, null, "My Modal")), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Body, null, /*#__PURE__*/_react.default.createElement(_Pseudospatial.Pseudospatial, null))), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasObs, {
|
|
194
|
+
show: showObs,
|
|
195
|
+
handleClose: () => setShowObs(false)
|
|
196
|
+
}), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasVars, {
|
|
197
|
+
show: showVars,
|
|
198
|
+
handleClose: () => setShowVars(false)
|
|
199
|
+
}), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasControls, {
|
|
200
|
+
show: showControls,
|
|
201
|
+
handleClose: () => setShowControls(false),
|
|
202
|
+
Controls: _ScatterplotControls.ScatterplotControls
|
|
203
|
+
}), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasControls, {
|
|
204
|
+
show: showPseudospatialControls,
|
|
205
|
+
handleClose: () => setShowPseudospatialControls(false),
|
|
206
|
+
Controls: _PseudospatialToolbar.PseudospatialToolbar
|
|
207
|
+
}), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasObsm, {
|
|
208
|
+
show: showObsm,
|
|
209
|
+
handleClose: () => setShowObsm(false)
|
|
210
|
+
}))));
|
|
211
|
+
}
|
|
212
|
+
function FullPagePseudospatial(props) {
|
|
213
|
+
return /*#__PURE__*/_react.default.createElement(FullPage, props, /*#__PURE__*/_react.default.createElement(_Scatterplot.Scatterplot, null));
|
|
214
|
+
}
|
|
@@ -10,7 +10,6 @@ var _material = require("@mui/material");
|
|
|
10
10
|
var _xCharts = require("@mui/x-charts");
|
|
11
11
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
12
12
|
var _reactBootstrap = require("react-bootstrap");
|
|
13
|
-
var _ObsToolbar = require("./ObsToolbar");
|
|
14
13
|
var _constants = require("../../constants/constants");
|
|
15
14
|
var _DatasetContext = require("../../context/DatasetContext");
|
|
16
15
|
var _FilterContext = require("../../context/FilterContext");
|
|
@@ -20,6 +19,7 @@ var _LoadingIndicators = require("../../utils/LoadingIndicators");
|
|
|
20
19
|
var _requests = require("../../utils/requests");
|
|
21
20
|
var _string = require("../../utils/string");
|
|
22
21
|
var _VirtualizedList = require("../../utils/VirtualizedList");
|
|
22
|
+
var _ObsToolbar = require("./ObsToolbar");
|
|
23
23
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
24
24
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
25
25
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -103,7 +103,7 @@ function CategoricalItem({
|
|
|
103
103
|
key: value,
|
|
104
104
|
className: "obs-item"
|
|
105
105
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
106
|
-
className: "d-flex align-items-
|
|
106
|
+
className: "d-flex align-items-start"
|
|
107
107
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
108
108
|
className: "flex-grow-1"
|
|
109
109
|
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Form.Check, {
|
|
@@ -223,7 +223,9 @@ function CategoricalObs({
|
|
|
223
223
|
};
|
|
224
224
|
}, [dataset.colorEncoding, isSliced, obs.codes, obs.omit, obs.value_counts, obs.values, obsHistograms.fetchedData, obsHistograms.isPending, totalCounts]);
|
|
225
225
|
showColor &= dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS;
|
|
226
|
-
return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup,
|
|
226
|
+
return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, {
|
|
227
|
+
variant: "flush"
|
|
228
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, null, /*#__PURE__*/_react.default.createElement(_ObsToolbar.ObsToolbar, {
|
|
227
229
|
item: obs,
|
|
228
230
|
onToggleAllObs: toggleAll,
|
|
229
231
|
onToggleLabel: toggleLabel,
|
|
@@ -368,7 +370,9 @@ function ContinuousObs({
|
|
|
368
370
|
label: isNaN(obs.values[index]) ? "NaN" : getContinuousLabel(obs.codes[obs.values[index]], obs.bins.binEdges)
|
|
369
371
|
};
|
|
370
372
|
};
|
|
371
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingLinear, null), !serverError && updatedObs && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup,
|
|
373
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingLinear, null), !serverError && updatedObs && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, {
|
|
374
|
+
variant: "flush"
|
|
375
|
+
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, null, /*#__PURE__*/_react.default.createElement(_ObsToolbar.ObsToolbar, {
|
|
372
376
|
item: obs,
|
|
373
377
|
onToggleAllObs: toggleAll,
|
|
374
378
|
onToggleLabel: toggleLabel,
|
|
@@ -5,13 +5,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.ObsColsList = ObsColsList;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
|
|
9
|
+
var _reactFontawesome = require("@fortawesome/react-fontawesome");
|
|
8
10
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
11
|
var _reactBootstrap = require("react-bootstrap");
|
|
10
|
-
var
|
|
12
|
+
var _Accordion = _interopRequireDefault(require("react-bootstrap/Accordion"));
|
|
13
|
+
var _AccordionButton = require("react-bootstrap/AccordionButton");
|
|
14
|
+
var _AccordionContext = _interopRequireDefault(require("react-bootstrap/AccordionContext"));
|
|
11
15
|
var _constants = require("../../constants/constants");
|
|
12
16
|
var _DatasetContext = require("../../context/DatasetContext");
|
|
13
17
|
var _LoadingIndicators = require("../../utils/LoadingIndicators");
|
|
14
18
|
var _requests = require("../../utils/requests");
|
|
19
|
+
var _ObsItem = require("./ObsItem");
|
|
15
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
21
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
17
22
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -173,17 +178,42 @@ function ObsColsList({
|
|
|
173
178
|
});
|
|
174
179
|
}
|
|
175
180
|
};
|
|
176
|
-
|
|
181
|
+
function ObsAccordionToggle({
|
|
182
|
+
children,
|
|
183
|
+
eventKey
|
|
184
|
+
}) {
|
|
185
|
+
const {
|
|
186
|
+
activeEventKey
|
|
187
|
+
} = (0, _react.useContext)(_AccordionContext.default);
|
|
188
|
+
// console.log("activeEventKey:", activeEventKey);
|
|
189
|
+
|
|
190
|
+
const decoratedOnClick = (0, _AccordionButton.useAccordionButton)(eventKey, () => {
|
|
191
|
+
console.log("Clicked accordion:", eventKey);
|
|
192
|
+
handleAccordionToggle(eventKey);
|
|
193
|
+
});
|
|
194
|
+
const isCurrentEventKey = Array.isArray(activeEventKey) ? activeEventKey.includes(eventKey) : activeEventKey === eventKey;
|
|
195
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
196
|
+
className: `obs-accordion-header ${isCurrentEventKey ? "active" : ""}`,
|
|
197
|
+
onClick: decoratedOnClick
|
|
198
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
199
|
+
className: "obs-accordion-header-chevron"
|
|
200
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
201
|
+
icon: isCurrentEventKey ? _freeSolidSvgIcons.faChevronDown : _freeSolidSvgIcons.faChevronRight
|
|
202
|
+
})), /*#__PURE__*/_react.default.createElement("span", {
|
|
203
|
+
className: "obs-accordion-header-title"
|
|
204
|
+
}, children));
|
|
205
|
+
}
|
|
206
|
+
const obsList = _lodash.default.map(obsCols, (item, index) => {
|
|
177
207
|
if (item.type === _constants.OBS_TYPES.DISCRETE) {
|
|
178
208
|
return null;
|
|
179
209
|
}
|
|
180
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
185
|
-
|
|
186
|
-
},
|
|
210
|
+
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(ObsAccordionToggle, {
|
|
211
|
+
eventKey: item.name
|
|
212
|
+
}, item.name), /*#__PURE__*/_react.default.createElement(_Accordion.default.Collapse, {
|
|
213
|
+
eventKey: item.name
|
|
214
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
215
|
+
className: "obs-accordion-body"
|
|
216
|
+
}, expandedItems[item.name] && (item.type === _constants.OBS_TYPES.CATEGORICAL || item.type === _constants.OBS_TYPES.BOOLEAN ? /*#__PURE__*/_react.default.createElement(_ObsItem.CategoricalObs, {
|
|
187
217
|
key: item.name,
|
|
188
218
|
obs: item,
|
|
189
219
|
updateObs: updateObs,
|
|
@@ -202,18 +232,15 @@ function ObsColsList({
|
|
|
202
232
|
toggleLabel: () => toggleLabel(item),
|
|
203
233
|
toggleSlice: () => toggleSlice(item),
|
|
204
234
|
toggleColor: () => toggleColor(item)
|
|
205
|
-
}))));
|
|
235
|
+
})))));
|
|
206
236
|
});
|
|
207
237
|
if (!serverError) {
|
|
208
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
209
|
-
className: "position-relative h-100"
|
|
210
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
211
|
-
className: "list-group overflow-auto h-100"
|
|
212
|
-
}, isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Accordion, {
|
|
238
|
+
return /*#__PURE__*/_react.default.createElement("div", null, isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), /*#__PURE__*/_react.default.createElement(_Accordion.default, {
|
|
213
239
|
flush: true,
|
|
214
240
|
defaultActiveKey: [active],
|
|
215
|
-
alwaysOpen: true
|
|
216
|
-
|
|
241
|
+
alwaysOpen: true,
|
|
242
|
+
className: "obs-accordion"
|
|
243
|
+
}, obsList));
|
|
217
244
|
} else {
|
|
218
245
|
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
|
|
219
246
|
variant: "danger"
|
|
@@ -29,7 +29,7 @@ function ObsToolbar({
|
|
|
29
29
|
const inSliceObs = dataset.sliceBy.obs && dataset.selectedObs?.name === item.name;
|
|
30
30
|
const isColorEncoding = dataset.colorEncoding === _constants.COLOR_ENCODINGS.OBS && dataset.selectedObs?.name === item.name;
|
|
31
31
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
32
|
-
className: "d-flex"
|
|
32
|
+
className: "d-flex align-items-center"
|
|
33
33
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
34
34
|
className: "flex-grow-1"
|
|
35
35
|
}, showToggleAllObs && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Form.Check, {
|
|
@@ -45,14 +45,14 @@ function ObsToolbar({
|
|
|
45
45
|
onClick: onToggleLabel,
|
|
46
46
|
title: "Add to tooltip"
|
|
47
47
|
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
48
|
-
icon: _freeSolidSvgIcons.
|
|
48
|
+
icon: _freeSolidSvgIcons.faListOl
|
|
49
49
|
})), showSlice && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
50
50
|
variant: inSliceObs ? "primary" : "outline-primary",
|
|
51
51
|
size: "sm",
|
|
52
52
|
onClick: onToggleSlice,
|
|
53
53
|
title: "Slice to selected"
|
|
54
54
|
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
55
|
-
icon: _freeSolidSvgIcons.
|
|
55
|
+
icon: _freeSolidSvgIcons.faScissors
|
|
56
56
|
})), showColor && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
57
57
|
variant: isColorEncoding ? "primary" : "outline-primary",
|
|
58
58
|
size: "sm",
|
|
@@ -7,7 +7,7 @@ exports.OffcanvasControls = OffcanvasControls;
|
|
|
7
7
|
exports.OffcanvasObs = OffcanvasObs;
|
|
8
8
|
exports.OffcanvasObsm = OffcanvasObsm;
|
|
9
9
|
exports.OffcanvasVars = OffcanvasVars;
|
|
10
|
-
var _react = require("react");
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
var _Offcanvas = _interopRequireDefault(require("react-bootstrap/Offcanvas"));
|
|
12
12
|
var _constants = require("../../constants/constants");
|
|
13
13
|
var _ObsList = require("../obs-list/ObsList");
|
|
@@ -20,41 +20,41 @@ function OffcanvasObs({
|
|
|
20
20
|
handleClose,
|
|
21
21
|
...props
|
|
22
22
|
}) {
|
|
23
|
-
return /*#__PURE__*/_react.
|
|
23
|
+
return /*#__PURE__*/_react.default.createElement(_Offcanvas.default, {
|
|
24
24
|
show: show,
|
|
25
25
|
onHide: handleClose,
|
|
26
26
|
scroll: true,
|
|
27
27
|
backdrop: false
|
|
28
|
-
}, /*#__PURE__*/_react.
|
|
28
|
+
}, /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Header, {
|
|
29
29
|
closeButton: true
|
|
30
|
-
}, /*#__PURE__*/_react.
|
|
30
|
+
}, /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Title, null, "Categories")), /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Body, {
|
|
31
31
|
className: "p-0"
|
|
32
|
-
}, /*#__PURE__*/_react.
|
|
32
|
+
}, /*#__PURE__*/_react.default.createElement(_ObsList.ObsColsList, props)));
|
|
33
33
|
}
|
|
34
34
|
function OffcanvasObsm({
|
|
35
35
|
show,
|
|
36
36
|
handleClose
|
|
37
37
|
}) {
|
|
38
|
-
return /*#__PURE__*/_react.
|
|
38
|
+
return /*#__PURE__*/_react.default.createElement(_Offcanvas.default, {
|
|
39
39
|
show: show,
|
|
40
40
|
onHide: handleClose
|
|
41
|
-
}, /*#__PURE__*/_react.
|
|
41
|
+
}, /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Header, {
|
|
42
42
|
closeButton: true
|
|
43
|
-
}, /*#__PURE__*/_react.
|
|
43
|
+
}, /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Title, null, "Embedding space")), /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Body, null, /*#__PURE__*/_react.default.createElement(_ObsmList.ObsmKeysList, null)));
|
|
44
44
|
}
|
|
45
45
|
function OffcanvasVars({
|
|
46
46
|
show,
|
|
47
47
|
handleClose,
|
|
48
48
|
mode = _constants.SELECTION_MODES.MULTIPLE
|
|
49
49
|
}) {
|
|
50
|
-
return /*#__PURE__*/_react.
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(_Offcanvas.default, {
|
|
51
51
|
show: show,
|
|
52
52
|
onHide: handleClose
|
|
53
|
-
}, /*#__PURE__*/_react.
|
|
53
|
+
}, /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Header, {
|
|
54
54
|
closeButton: true
|
|
55
|
-
}, /*#__PURE__*/_react.
|
|
55
|
+
}, /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Title, null, "Features")), /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Body, null, /*#__PURE__*/_react.default.createElement(_SearchBar.SearchBar, {
|
|
56
56
|
searchDiseases: true
|
|
57
|
-
}), /*#__PURE__*/_react.
|
|
57
|
+
}), /*#__PURE__*/_react.default.createElement(_VarList.VarNamesList, {
|
|
58
58
|
mode: mode
|
|
59
59
|
})));
|
|
60
60
|
}
|
|
@@ -63,10 +63,10 @@ function OffcanvasControls({
|
|
|
63
63
|
handleClose,
|
|
64
64
|
Controls
|
|
65
65
|
}) {
|
|
66
|
-
return /*#__PURE__*/_react.
|
|
66
|
+
return /*#__PURE__*/_react.default.createElement(_Offcanvas.default, {
|
|
67
67
|
show: show,
|
|
68
68
|
onHide: handleClose
|
|
69
|
-
}, /*#__PURE__*/_react.
|
|
69
|
+
}, /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Header, {
|
|
70
70
|
closeButton: true
|
|
71
|
-
}, /*#__PURE__*/_react.
|
|
71
|
+
}, /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Title, null, "Controls")), /*#__PURE__*/_react.default.createElement(_Offcanvas.default.Body, null, /*#__PURE__*/_react.default.createElement(Controls, null)));
|
|
72
72
|
}
|
|
@@ -6,10 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Pseudospatial = Pseudospatial;
|
|
7
7
|
exports.PseudospatialImage = PseudospatialImage;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _fontawesomeSvgCore = require("@fortawesome/fontawesome-svg-core");
|
|
10
|
+
var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
|
|
9
11
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
10
12
|
var _reactBootstrap = require("react-bootstrap");
|
|
11
13
|
var _reactPlotly = _interopRequireDefault(require("react-plotly.js"));
|
|
12
|
-
var _PseudospatialToolbar = require("./PseudospatialToolbar");
|
|
13
14
|
var _constants = require("../../constants/constants");
|
|
14
15
|
var _DatasetContext = require("../../context/DatasetContext");
|
|
15
16
|
var _FilterContext = require("../../context/FilterContext");
|
|
@@ -21,6 +22,7 @@ var _requests = require("../../utils/requests");
|
|
|
21
22
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
23
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
23
24
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
25
|
+
_fontawesomeSvgCore.library.add(_freeSolidSvgIcons.faSliders);
|
|
24
26
|
function usePseudospatialData(plotType) {
|
|
25
27
|
const ENDPOINT = "pseudospatial";
|
|
26
28
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
@@ -76,7 +78,8 @@ function usePseudospatialData(plotType) {
|
|
|
76
78
|
}
|
|
77
79
|
function Pseudospatial({
|
|
78
80
|
showLegend = true,
|
|
79
|
-
sharedScaleRange = false
|
|
81
|
+
sharedScaleRange = false,
|
|
82
|
+
setShowPseudospatialControls
|
|
80
83
|
}) {
|
|
81
84
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
82
85
|
const [data, setData] = (0, _react.useState)([]);
|
|
@@ -175,18 +178,33 @@ function Pseudospatial({
|
|
|
175
178
|
}
|
|
176
179
|
}, [dataset.controls.range, dataset.controls.valueMax, dataset.controls.valueMin, dataset.controls.valueRange, getColor, sharedScaleRange]);
|
|
177
180
|
const hasSelections = !!plotType && !!dataset.pseudospatial.maskSet;
|
|
181
|
+
const faSlidersPath = _freeSolidSvgIcons.faSliders.icon[4];
|
|
178
182
|
if (!serverError) {
|
|
179
183
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
180
|
-
className: "cherita-pseudospatial
|
|
181
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
182
|
-
plotType: plotType
|
|
183
|
-
}), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, hasSelections && isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), hasSelections && /*#__PURE__*/_react.default.createElement(_reactPlotly.default, {
|
|
184
|
+
className: "cherita-pseudospatial"
|
|
185
|
+
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, hasSelections && isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), hasSelections && /*#__PURE__*/_react.default.createElement(_reactPlotly.default, {
|
|
184
186
|
data: data,
|
|
185
|
-
layout:
|
|
187
|
+
layout: {
|
|
188
|
+
...layout,
|
|
189
|
+
autosize: true,
|
|
190
|
+
height: "200"
|
|
191
|
+
},
|
|
186
192
|
useResizeHandler: true,
|
|
187
193
|
className: "cherita-pseudospatial-plot",
|
|
188
194
|
config: {
|
|
189
|
-
displaylogo: false
|
|
195
|
+
displaylogo: false,
|
|
196
|
+
displayModeBar: true,
|
|
197
|
+
modeBarButtonsToAdd: [{
|
|
198
|
+
name: "Open plot controls",
|
|
199
|
+
icon: {
|
|
200
|
+
width: 512,
|
|
201
|
+
height: 512,
|
|
202
|
+
path: faSlidersPath,
|
|
203
|
+
ascent: 512,
|
|
204
|
+
descent: 0
|
|
205
|
+
},
|
|
206
|
+
click: () => setShowPseudospatialControls(prev => !prev)
|
|
207
|
+
}]
|
|
190
208
|
}
|
|
191
209
|
}), hasSelections && showLegend && /*#__PURE__*/_react.default.createElement(_Legend.Legend, {
|
|
192
210
|
min: layout?.coloraxis?.cmin,
|
|
@@ -4,7 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.PseudospatialToolbar = PseudospatialToolbar;
|
|
7
|
+
exports.PseudospatialToolbarLite = PseudospatialToolbarLite;
|
|
7
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
|
|
10
|
+
var _reactFontawesome = require("@fortawesome/react-fontawesome");
|
|
8
11
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
12
|
var _reactBootstrap = require("react-bootstrap");
|
|
10
13
|
var _constants = require("../../constants/constants");
|
|
@@ -126,4 +129,20 @@ function PseudospatialToolbar({
|
|
|
126
129
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
127
130
|
className: "cherita-pseudospatial-toolbar"
|
|
128
131
|
}, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(MaskSet, null)), /*#__PURE__*/_react.default.createElement(_reactBootstrap.ButtonGroup, null, plotType === _constants.PSEUDOSPATIAL_PLOT_TYPES.CATEGORICAL && /*#__PURE__*/_react.default.createElement(CategoricalMode, null)));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// @TODO: add colormap, colorbar slider
|
|
135
|
+
function PseudospatialToolbarLite({
|
|
136
|
+
plotType
|
|
137
|
+
}) {
|
|
138
|
+
return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Toggle, {
|
|
139
|
+
variant: "success",
|
|
140
|
+
id: "dropdown-basic"
|
|
141
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
142
|
+
icon: _freeSolidSvgIcons.faChevronDown
|
|
143
|
+
})), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Menu, null, /*#__PURE__*/_react.default.createElement(MaskSet, null), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
|
|
144
|
+
href: "#/action-2"
|
|
145
|
+
}, "Another action"), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
|
|
146
|
+
href: "#/action-3"
|
|
147
|
+
}, "Something else")));
|
|
129
148
|
}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Toolbox = Toolbox;
|
|
7
|
-
var _react = require("react");
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
|
|
9
9
|
var _reactFontawesome = require("@fortawesome/react-fontawesome");
|
|
10
10
|
var _Button = _interopRequireDefault(require("react-bootstrap/Button"));
|
|
@@ -17,15 +17,15 @@ function Toolbox({
|
|
|
17
17
|
obsLength,
|
|
18
18
|
slicedLength
|
|
19
19
|
}) {
|
|
20
|
-
return /*#__PURE__*/_react.
|
|
20
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
21
21
|
className: "cherita-toolbox"
|
|
22
|
-
}, /*#__PURE__*/_react.
|
|
22
|
+
}, /*#__PURE__*/_react.default.createElement(_ButtonGroup.default, null, /*#__PURE__*/_react.default.createElement(_ObsmList.ObsmKeysList, null), /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
23
23
|
size: "sm"
|
|
24
|
-
}, /*#__PURE__*/_react.
|
|
24
|
+
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
25
25
|
icon: _freeSolidSvgIcons.faDroplet
|
|
26
|
-
}), " ", mode), (mode || !isNaN(obsLength)) && (mode !== null && !isNaN(slicedLength) && slicedLength !== obsLength ? /*#__PURE__*/_react.
|
|
26
|
+
}), " ", mode), (mode || !isNaN(obsLength)) && (mode !== null && !isNaN(slicedLength) && slicedLength !== obsLength ? /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
27
27
|
size: "sm"
|
|
28
|
-
}, (0, _string.formatNumerical)(slicedLength), " out of", " ", (0, _string.formatNumerical)(obsLength), " cells") : /*#__PURE__*/_react.
|
|
28
|
+
}, (0, _string.formatNumerical)(slicedLength), " out of", " ", (0, _string.formatNumerical)(obsLength), " cells") : /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
29
29
|
size: "sm"
|
|
30
30
|
}, (0, _string.formatNumerical)(obsLength), " cells"))));
|
|
31
31
|
}
|