@haniffalab/cherita-react 0.2.0-dev.2025-01-22.f523ac5e → 0.2.0-dev.2025-01-28.7a60aa67

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 (43) hide show
  1. package/README.md +5 -0
  2. package/dist/components/dotplot/Dotplot.js +19 -26
  3. package/dist/components/dotplot/DotplotControls.js +106 -147
  4. package/dist/components/full-page/FullPage.js +99 -148
  5. package/dist/components/heatmap/Heatmap.js +19 -26
  6. package/dist/components/heatmap/HeatmapControls.js +7 -13
  7. package/dist/components/matrixplot/Matrixplot.js +19 -26
  8. package/dist/components/matrixplot/MatrixplotControls.js +14 -35
  9. package/dist/components/obs-list/ObsItem.js +182 -239
  10. package/dist/components/obs-list/ObsList.js +40 -49
  11. package/dist/components/obs-list/ObsToolbar.js +44 -55
  12. package/dist/components/obsm-list/ObsmList.js +15 -23
  13. package/dist/components/offcanvas/index.js +45 -75
  14. package/dist/components/pseudospatial/Pseudospatial.js +26 -34
  15. package/dist/components/pseudospatial/PseudospatialControls.js +1 -2
  16. package/dist/components/pseudospatial/PseudospatialToolbar.js +37 -65
  17. package/dist/components/scatterplot/Scatterplot.js +74 -89
  18. package/dist/components/scatterplot/ScatterplotControls.js +28 -39
  19. package/dist/components/scatterplot/SpatialControls.js +94 -117
  20. package/dist/components/scatterplot/Toolbox.js +16 -24
  21. package/dist/components/search-bar/SearchBar.js +45 -54
  22. package/dist/components/search-bar/SearchResults.js +36 -49
  23. package/dist/components/var-list/VarItem.js +112 -160
  24. package/dist/components/var-list/VarList.js +81 -124
  25. package/dist/components/var-list/VarListToolbar.js +48 -59
  26. package/dist/components/var-list/VarSet.js +95 -120
  27. package/dist/components/violin/Violin.js +31 -46
  28. package/dist/components/violin/ViolinControls.js +8 -22
  29. package/dist/context/DatasetContext.js +17 -27
  30. package/dist/context/FilterContext.js +8 -12
  31. package/dist/context/ZarrDataContext.js +6 -9
  32. package/dist/helpers/color-helper.js +11 -12
  33. package/dist/helpers/map-helper.js +7 -8
  34. package/dist/helpers/zarr-helper.js +9 -15
  35. package/dist/utils/Histogram.js +34 -41
  36. package/dist/utils/ImageViewer.js +9 -14
  37. package/dist/utils/Legend.js +30 -40
  38. package/dist/utils/LoadingIndicators.js +16 -19
  39. package/dist/utils/VirtualizedList.js +32 -39
  40. package/dist/utils/requests.js +15 -25
  41. package/dist/utils/string.js +4 -9
  42. package/dist/utils/zarrData.js +2 -8
  43. package/package.json +40 -34
@@ -15,12 +15,10 @@ var _constants = require("../../constants/constants");
15
15
  var _DatasetContext = require("../../context/DatasetContext");
16
16
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
17
17
  var _requests = require("../../utils/requests");
18
- var _jsxRuntime = require("react/jsx-runtime");
19
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
19
  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); }
21
20
  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; }
22
- const useVarMean = function (varKeys) {
23
- let enabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
21
+ const useVarMean = (varKeys, enabled = false) => {
24
22
  const ENDPOINT = "matrix/mean";
25
23
  const dataset = (0, _DatasetContext.useDataset)();
26
24
  const [params, setParams] = (0, _react.useState)({
@@ -51,10 +49,9 @@ const useVarMean = function (varKeys) {
51
49
 
52
50
  // @TODO: display where disease data comes from
53
51
  // add to disease dataset metadata
54
- function DiseaseVarList(_ref) {
55
- let {
56
- makeListItem
57
- } = _ref;
52
+ function DiseaseVarList({
53
+ makeListItem
54
+ }) {
58
55
  const ENDPOINT = "disease/genes";
59
56
  const dataset = (0, _DatasetContext.useDataset)();
60
57
  const dispatch = (0, _DatasetContext.useDatasetDispatch)();
@@ -101,50 +98,30 @@ function DiseaseVarList(_ref) {
101
98
  return makeListItem(item, true);
102
99
  });
103
100
  const isPending = diseaseData.isPending || varMeans.isPending && dataset.varSort.disease.sort === _constants.VAR_SORT.MATRIX;
104
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
105
- children: dataset.selectedDisease && (!isPending && !diseaseVars?.length ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
106
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
107
- className: "d-flex justify-content-between mt-3",
108
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("h5", {
109
- children: "Disease genes"
110
- })
111
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Alert, {
112
- variant: "light",
113
- children: "No disease genes found."
114
- })]
115
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
116
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
117
- className: "d-flex justify-content-between mt-3",
118
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h5", {
119
- children: "Disease genes"
120
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
121
- variant: "link",
122
- onClick: () => {
123
- dispatch({
124
- type: "reset.disease"
125
- });
126
- },
127
- children: "clear"
128
- })]
129
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
130
- children: dataset.selectedDisease?.name
131
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_VarListToolbar.VarListToolbar, {
132
- varType: "disease"
133
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
134
- className: "position-relative",
135
- children: [isPending && /*#__PURE__*/(0, _jsxRuntime.jsx)(_LoadingIndicators.LoadingSpinner, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup, {
136
- children: diseaseVarList
137
- })]
138
- })]
139
- }))
140
- });
101
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, dataset.selectedDisease && (!isPending && !diseaseVars?.length ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
102
+ className: "d-flex justify-content-between mt-3"
103
+ }, /*#__PURE__*/_react.default.createElement("h5", null, "Disease genes")), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
104
+ variant: "light"
105
+ }, "No disease genes found.")) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
106
+ className: "d-flex justify-content-between mt-3"
107
+ }, /*#__PURE__*/_react.default.createElement("h5", null, "Disease genes"), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
108
+ variant: "link",
109
+ onClick: () => {
110
+ dispatch({
111
+ type: "reset.disease"
112
+ });
113
+ }
114
+ }, "clear")), /*#__PURE__*/_react.default.createElement("p", null, dataset.selectedDisease?.name), /*#__PURE__*/_react.default.createElement(_VarListToolbar.VarListToolbar, {
115
+ varType: "disease"
116
+ }), /*#__PURE__*/_react.default.createElement("div", {
117
+ className: "position-relative"
118
+ }, isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, null, diseaseVarList)))));
141
119
  }
142
- function VarNamesList(_ref2) {
143
- let {
144
- mode = _constants.SELECTION_MODES.SINGLE,
145
- displayName = "genes",
146
- showDiseaseVarList = true
147
- } = _ref2;
120
+ function VarNamesList({
121
+ mode = _constants.SELECTION_MODES.SINGLE,
122
+ displayName = "genes",
123
+ showDiseaseVarList = true
124
+ }) {
148
125
  const dataset = (0, _DatasetContext.useDataset)();
149
126
  const dispatch = (0, _DatasetContext.useDatasetDispatch)();
150
127
  const [varButtons, setVarButtons] = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ? dataset.selectedVar ? _lodash.default.unionWith([dataset.selectedVar], dataset.varSets, _lodash.default.isEqual) : [...dataset.varSets] : [...dataset.selectedMultiVar, ...dataset.varSets]);
@@ -215,26 +192,25 @@ function VarNamesList(_ref2) {
215
192
  setSortedVarButtons(varButtons);
216
193
  }
217
194
  }, [dataset.varSort.var.sort, dataset.varSort.var.sortOrder, varButtons, varMeans.isPending, varMeans.serverError, varMeans.fetchedData]);
218
- const makeListItem = function (item) {
219
- let isDiseaseGene = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
220
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
221
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_VarItem.VarItem, {
222
- item: item,
223
- active: active,
224
- setVarButtons: setVarButtons,
225
- mode: mode,
226
- isDiseaseGene: isDiseaseGene
227
- })
228
- }, item.matrix_index);
195
+ const makeListItem = (item, isDiseaseGene = false) => {
196
+ return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
197
+ key: item.matrix_index
198
+ }, /*#__PURE__*/_react.default.createElement(_VarItem.VarItem, {
199
+ item: item,
200
+ active: active,
201
+ setVarButtons: setVarButtons,
202
+ mode: mode,
203
+ isDiseaseGene: isDiseaseGene
204
+ }));
229
205
  };
230
206
  const makeSetListItem = set => {
231
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
232
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_VarSet.VarSet, {
233
- set: set,
234
- active: active,
235
- mode: mode
236
- })
237
- }, set.name);
207
+ return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
208
+ key: set.name
209
+ }, /*#__PURE__*/_react.default.createElement(_VarSet.VarSet, {
210
+ set: set,
211
+ active: active,
212
+ mode: mode
213
+ }));
238
214
  };
239
215
  const varList = _lodash.default.map(sortedVarButtons, item => {
240
216
  if (item.isSet) {
@@ -256,60 +232,41 @@ function VarNamesList(_ref2) {
256
232
  return setName;
257
233
  };
258
234
  const isPending = varMeans.isPending && dataset.varSort.var.sort === _constants.VAR_SORT.MATRIX;
259
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
260
- className: "position-relative",
261
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
262
- className: "overflow-auto mt-3",
263
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
264
- className: "d-flex justify-content-between",
265
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h5", {
266
- children: _lodash.default.capitalize(displayName)
267
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
268
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Button, {
269
- variant: "light",
270
- className: "p-1",
271
- onClick: () => {
272
- dispatch({
273
- type: "add.varSet",
274
- varSet: {
275
- name: newSetName(),
276
- vars: [],
277
- isSet: true
278
- }
279
- });
280
- },
281
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.Add, {}), "New set"]
282
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
283
- variant: "link",
284
- onClick: () => {
285
- setVarButtons([]);
286
- dispatch({
287
- type: mode === _constants.SELECTION_MODES.SINGLE ? "reset.var" : "reset.multiVar"
288
- });
289
- dispatch({
290
- type: "reset.varSets"
291
- });
292
- },
293
- children: "clear"
294
- })]
295
- })]
296
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
297
- children: !varList.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Alert, {
298
- variant: "light",
299
- children: "Search for a feature."
300
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
301
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_VarListToolbar.VarListToolbar, {}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
302
- className: "position-relative",
303
- children: [isPending && /*#__PURE__*/(0, _jsxRuntime.jsx)(_LoadingIndicators.LoadingSpinner, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup, {
304
- children: varList
305
- })]
306
- })]
307
- })
308
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
309
- children: showDiseaseVarList && /*#__PURE__*/(0, _jsxRuntime.jsx)(DiseaseVarList, {
310
- makeListItem: makeListItem
311
- })
312
- })]
313
- })
314
- });
235
+ return /*#__PURE__*/_react.default.createElement("div", {
236
+ className: "position-relative"
237
+ }, /*#__PURE__*/_react.default.createElement("div", {
238
+ className: "overflow-auto mt-3"
239
+ }, /*#__PURE__*/_react.default.createElement("div", {
240
+ className: "d-flex justify-content-between"
241
+ }, /*#__PURE__*/_react.default.createElement("h5", null, _lodash.default.capitalize(displayName)), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
242
+ variant: "light",
243
+ className: "p-1",
244
+ onClick: () => {
245
+ dispatch({
246
+ type: "add.varSet",
247
+ varSet: {
248
+ name: newSetName(),
249
+ vars: [],
250
+ isSet: true
251
+ }
252
+ });
253
+ }
254
+ }, /*#__PURE__*/_react.default.createElement(_iconsMaterial.Add, null), "New set"), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
255
+ variant: "link",
256
+ onClick: () => {
257
+ setVarButtons([]);
258
+ dispatch({
259
+ type: mode === _constants.SELECTION_MODES.SINGLE ? "reset.var" : "reset.multiVar"
260
+ });
261
+ dispatch({
262
+ type: "reset.varSets"
263
+ });
264
+ }
265
+ }, "clear"))), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !varList.length ? /*#__PURE__*/_react.default.createElement(_reactBootstrap.Alert, {
266
+ variant: "light"
267
+ }, "Search for a feature.") : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_VarListToolbar.VarListToolbar, null), /*#__PURE__*/_react.default.createElement("div", {
268
+ className: "position-relative"
269
+ }, isPending && /*#__PURE__*/_react.default.createElement(_LoadingIndicators.LoadingSpinner, null), /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, null, varList)))), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showDiseaseVarList && /*#__PURE__*/_react.default.createElement(DiseaseVarList, {
270
+ makeListItem: makeListItem
271
+ }))));
315
272
  }
@@ -11,14 +11,12 @@ var _material = require("@mui/material");
11
11
  var _reactBootstrap = require("react-bootstrap");
12
12
  var _constants = require("../../constants/constants");
13
13
  var _DatasetContext = require("../../context/DatasetContext");
14
- var _jsxRuntime = require("react/jsx-runtime");
15
14
  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); }
16
15
  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; }
17
16
  // @TODO: set option for "var" and "disease"
18
- function VarListToolbar(_ref) {
19
- let {
20
- varType = "var"
21
- } = _ref;
17
+ function VarListToolbar({
18
+ varType = "var"
19
+ }) {
22
20
  const dataset = (0, _DatasetContext.useDataset)();
23
21
  const dispatch = (0, _DatasetContext.useDatasetDispatch)();
24
22
  const [sort, setSort] = (0, _react.useState)(dataset.varSort.var.sort);
@@ -44,58 +42,49 @@ function VarListToolbar(_ref) {
44
42
  });
45
43
  }
46
44
  };
47
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Navbar, {
48
- className: "var-list-toolbar",
49
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.InputGroup, {
50
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.InputGroup.Text, {
51
- children: "Sort by:"
52
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.ToggleButtonGroup, {
53
- "aria-label": "Sort feature by",
54
- size: "small",
55
- className: "mh-100",
56
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ToggleButton, {
57
- value: _constants.VAR_SORT.NAME,
58
- "aria-label": "alphabetical",
59
- title: "Sort alphabetically",
60
- selected: sort === _constants.VAR_SORT.NAME,
61
- onChange: () => {
62
- handleSort(_constants.VAR_SORT.NAME, nameSortOrder, setNameSortOrder);
63
- },
64
- children: nameSortOrder === _constants.VAR_SORT_ORDER.ASC ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
65
- icon: _freeSolidSvgIcons.faArrowDownAZ
66
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
67
- icon: _freeSolidSvgIcons.faArrowUpZA
68
- })
69
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ToggleButton, {
70
- value: _constants.VAR_SORT.MATRIX,
71
- "aria-label": "matrix value",
72
- title: "Sort by matrix value",
73
- selected: sort === _constants.VAR_SORT.MATRIX,
74
- onChange: () => {
75
- handleSort(_constants.VAR_SORT.MATRIX, matrixSortOrder, setMatrixSortOrder);
76
- },
77
- children: matrixSortOrder === _constants.VAR_SORT_ORDER.ASC ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
78
- icon: _freeSolidSvgIcons.faArrowDown19
79
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
80
- icon: _freeSolidSvgIcons.faArrowUp91
81
- })
82
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ToggleButton, {
83
- value: "none",
84
- "aria-label": "none",
85
- title: "No sorting",
86
- onClick: () => {
87
- setSort(_constants.VAR_SORT.NONE);
88
- dispatch({
89
- type: "set.varSort.sort",
90
- var: varType,
91
- sort: _constants.VAR_SORT.NONE
92
- });
93
- },
94
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
95
- icon: _freeSolidSvgIcons.faXmark
96
- })
97
- })]
98
- })]
99
- })
100
- });
45
+ return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Navbar, {
46
+ className: "var-list-toolbar"
47
+ }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.InputGroup, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.InputGroup.Text, null, "Sort by:"), /*#__PURE__*/_react.default.createElement(_material.ToggleButtonGroup, {
48
+ "aria-label": "Sort feature by",
49
+ size: "small",
50
+ className: "mh-100"
51
+ }, /*#__PURE__*/_react.default.createElement(_material.ToggleButton, {
52
+ value: _constants.VAR_SORT.NAME,
53
+ "aria-label": "alphabetical",
54
+ title: "Sort alphabetically",
55
+ selected: sort === _constants.VAR_SORT.NAME,
56
+ onChange: () => {
57
+ handleSort(_constants.VAR_SORT.NAME, nameSortOrder, setNameSortOrder);
58
+ }
59
+ }, nameSortOrder === _constants.VAR_SORT_ORDER.ASC ? /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
60
+ icon: _freeSolidSvgIcons.faArrowDownAZ
61
+ }) : /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
62
+ icon: _freeSolidSvgIcons.faArrowUpZA
63
+ })), /*#__PURE__*/_react.default.createElement(_material.ToggleButton, {
64
+ value: _constants.VAR_SORT.MATRIX,
65
+ "aria-label": "matrix value",
66
+ title: "Sort by matrix value",
67
+ selected: sort === _constants.VAR_SORT.MATRIX,
68
+ onChange: () => {
69
+ handleSort(_constants.VAR_SORT.MATRIX, matrixSortOrder, setMatrixSortOrder);
70
+ }
71
+ }, matrixSortOrder === _constants.VAR_SORT_ORDER.ASC ? /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
72
+ icon: _freeSolidSvgIcons.faArrowDown19
73
+ }) : /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
74
+ icon: _freeSolidSvgIcons.faArrowUp91
75
+ })), /*#__PURE__*/_react.default.createElement(_material.ToggleButton, {
76
+ value: "none",
77
+ "aria-label": "none",
78
+ title: "No sorting",
79
+ onClick: () => {
80
+ setSort(_constants.VAR_SORT.NONE);
81
+ dispatch({
82
+ type: "set.varSort.sort",
83
+ var: varType,
84
+ sort: _constants.VAR_SORT.NONE
85
+ });
86
+ }
87
+ }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
88
+ icon: _freeSolidSvgIcons.faXmark
89
+ })))));
101
90
  }
@@ -14,11 +14,11 @@ var _VarItem = require("./VarItem");
14
14
  var _constants = require("../../constants/constants");
15
15
  var _DatasetContext = require("../../context/DatasetContext");
16
16
  var _SearchBar = require("../search-bar/SearchBar");
17
- var _jsxRuntime = require("react/jsx-runtime");
18
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
18
  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); }
20
19
  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; }
21
20
  // @TODO: add button to score genes and plot
21
+
22
22
  const addVarToSet = (dispatch, set, v) => {
23
23
  dispatch({
24
24
  type: "add.varSet.var",
@@ -26,127 +26,102 @@ const addVarToSet = (dispatch, set, v) => {
26
26
  var: v
27
27
  });
28
28
  };
29
- function SingleSelectionSet(_ref) {
30
- let {
31
- set,
32
- isActive,
33
- selectSet,
34
- removeSet,
35
- removeSetVar,
36
- showSearchBar = true
37
- } = _ref;
29
+ function SingleSelectionSet({
30
+ set,
31
+ isActive,
32
+ selectSet,
33
+ removeSet,
34
+ removeSetVar,
35
+ showSearchBar = true
36
+ }) {
38
37
  const [openSet, setOpenSet] = (0, _react.useState)(false);
39
38
  const varList = set.vars.length ? _lodash.default.map(set.vars, v => {
40
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
41
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_VarItem.SingleSelectionItem, {
42
- item: v,
43
- showSetColorEncoding: false,
44
- removeVar: () => removeSetVar(v)
45
- })
46
- }, v.name);
47
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
48
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
49
- className: "text-muted",
50
- children: "No features in this set"
51
- })
52
- });
53
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
54
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
55
- className: "d-flex justify-content-between cursor-pointer",
56
- onClick: () => {
57
- setOpenSet(o => !o);
58
- },
59
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
60
- className: "d-flex justify-content-between align-items-center w-100",
61
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
62
- children: set.name
63
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
64
- className: "d-flex align-items-center gap-1",
65
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.OverlayTrigger, {
66
- placement: "top",
67
- overlay: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Tooltip, {
68
- children: "This set represents the mean value of its features"
69
- }),
70
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
71
- icon: _freeSolidSvgIcons.faCircleInfo
72
- })
73
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.List, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
74
- type: "button",
75
- variant: isActive ? "primary" : "outline-primary",
76
- className: "m-0 p-0 px-1",
77
- onClick: e => {
78
- e.stopPropagation();
79
- selectSet();
80
- },
81
- disabled: !set.vars.length,
82
- title: "Set as color encoding",
83
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
84
- icon: _freeSolidSvgIcons.faDroplet
85
- })
86
- }, set.name), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
87
- type: "button",
88
- className: "m-0 p-0 px-1",
89
- variant: "outline-secondary",
90
- title: "Remove from list",
91
- onClick: e => {
92
- e.stopPropagation();
93
- removeSet();
94
- },
95
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
96
- icon: _freeSolidSvgIcons.faTrash
97
- })
98
- })]
99
- })]
100
- })
101
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Collapse, {
102
- in: openSet,
103
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
104
- className: "mt-2",
105
- children: [showSearchBar &&
106
- /*#__PURE__*/
107
- // @TODO: fix how results are displayed, should be placed on top of parent components
108
- (0, _jsxRuntime.jsx)(_SearchBar.SearchBar, {
109
- handleSelect: (d, i) => addVarToSet(d, set, i)
110
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
111
- className: "mx-2",
112
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup, {
113
- variant: "flush",
114
- children: varList
115
- })
116
- })]
117
- })
118
- })]
119
- });
39
+ return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
40
+ key: v.name
41
+ }, /*#__PURE__*/_react.default.createElement(_VarItem.SingleSelectionItem, {
42
+ item: v,
43
+ showSetColorEncoding: false,
44
+ removeVar: () => removeSetVar(v)
45
+ }));
46
+ }) : /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, null, /*#__PURE__*/_react.default.createElement("div", {
47
+ className: "text-muted"
48
+ }, "No features in this set"));
49
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
50
+ className: "d-flex justify-content-between cursor-pointer",
51
+ onClick: () => {
52
+ setOpenSet(o => !o);
53
+ }
54
+ }, /*#__PURE__*/_react.default.createElement("div", {
55
+ className: "d-flex justify-content-between align-items-center w-100"
56
+ }, /*#__PURE__*/_react.default.createElement("div", null, set.name), /*#__PURE__*/_react.default.createElement("div", {
57
+ className: "d-flex align-items-center gap-1"
58
+ }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.OverlayTrigger, {
59
+ placement: "top",
60
+ overlay: /*#__PURE__*/_react.default.createElement(_reactBootstrap.Tooltip, null, "This set represents the mean value of its features")
61
+ }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
62
+ icon: _freeSolidSvgIcons.faCircleInfo
63
+ })), /*#__PURE__*/_react.default.createElement(_iconsMaterial.List, null), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
64
+ type: "button",
65
+ key: set.name,
66
+ variant: isActive ? "primary" : "outline-primary",
67
+ className: "m-0 p-0 px-1",
68
+ onClick: e => {
69
+ e.stopPropagation();
70
+ selectSet();
71
+ },
72
+ disabled: !set.vars.length,
73
+ title: "Set as color encoding"
74
+ }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
75
+ icon: _freeSolidSvgIcons.faDroplet
76
+ })), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
77
+ type: "button",
78
+ className: "m-0 p-0 px-1",
79
+ variant: "outline-secondary",
80
+ title: "Remove from list",
81
+ onClick: e => {
82
+ e.stopPropagation();
83
+ removeSet();
84
+ }
85
+ }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
86
+ icon: _freeSolidSvgIcons.faTrash
87
+ }))))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Collapse, {
88
+ in: openSet
89
+ }, /*#__PURE__*/_react.default.createElement("div", {
90
+ className: "mt-2"
91
+ }, showSearchBar &&
92
+ /*#__PURE__*/
93
+ // @TODO: fix how results are displayed, should be placed on top of parent components
94
+ _react.default.createElement(_SearchBar.SearchBar, {
95
+ handleSelect: (d, i) => addVarToSet(d, set, i)
96
+ }), /*#__PURE__*/_react.default.createElement("div", {
97
+ className: "mx-2"
98
+ }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, {
99
+ variant: "flush"
100
+ }, varList)))));
120
101
  }
121
- function MultipleSelectionSet(_ref2) {
122
- let {
123
- set,
124
- isActive,
125
- toggleSet
126
- } = _ref2;
127
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
128
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
129
- className: "d-flex",
130
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
131
- className: "flex-grow-1",
132
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
133
- type: "button",
134
- variant: isActive ? "primary" : "outline-primary",
135
- className: "m-0 p-0 px-1",
136
- onClick: toggleSet,
137
- title: set.name,
138
- children: set.name
139
- }, set.name)
140
- })
141
- })
142
- });
102
+ function MultipleSelectionSet({
103
+ set,
104
+ isActive,
105
+ toggleSet
106
+ }) {
107
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
108
+ className: "d-flex"
109
+ }, /*#__PURE__*/_react.default.createElement("div", {
110
+ className: "flex-grow-1"
111
+ }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
112
+ type: "button",
113
+ key: set.name,
114
+ variant: isActive ? "primary" : "outline-primary",
115
+ className: "m-0 p-0 px-1",
116
+ onClick: toggleSet,
117
+ title: set.name
118
+ }, set.name))));
143
119
  }
144
- function VarSet(_ref3) {
145
- let {
146
- set,
147
- active,
148
- mode = _constants.SELECTION_MODES.SINGLE
149
- } = _ref3;
120
+ function VarSet({
121
+ set,
122
+ active,
123
+ mode = _constants.SELECTION_MODES.SINGLE
124
+ }) {
150
125
  const dataset = (0, _DatasetContext.useDataset)();
151
126
  const dispatch = (0, _DatasetContext.useDatasetDispatch)();
152
127
  const selectSet = () => {
@@ -204,7 +179,7 @@ function VarSet(_ref3) {
204
179
  }
205
180
  };
206
181
  if (set && mode === _constants.SELECTION_MODES.SINGLE) {
207
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(SingleSelectionSet, {
182
+ return /*#__PURE__*/_react.default.createElement(SingleSelectionSet, {
208
183
  set: set,
209
184
  isActive: dataset.colorEncoding === _constants.COLOR_ENCODINGS.VAR && active === set.name,
210
185
  selectSet: selectSet,
@@ -212,7 +187,7 @@ function VarSet(_ref3) {
212
187
  removeSetVar: v => removeSetVar(v)
213
188
  });
214
189
  } else if (mode === _constants.SELECTION_MODES.MULTIPLE) {
215
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(MultipleSelectionSet, {
190
+ return /*#__PURE__*/_react.default.createElement(MultipleSelectionSet, {
216
191
  set: set,
217
192
  isActive: _lodash.default.includes(active, set.name),
218
193
  toggleSet: () => toggleSet(set)