@haniffalab/cherita-react 0.2.0-dev.2025-01-17.f9a0f419 → 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 -153
  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 +114 -161
  24. package/dist/components/var-list/VarList.js +83 -127
  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,13 +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
- // @TODO: optimize
23
- const useVarMean = function (varKeys) {
24
- let enabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
21
+ const useVarMean = (varKeys, enabled = false) => {
25
22
  const ENDPOINT = "matrix/mean";
26
23
  const dataset = (0, _DatasetContext.useDataset)();
27
24
  const [params, setParams] = (0, _react.useState)({
@@ -52,10 +49,9 @@ const useVarMean = function (varKeys) {
52
49
 
53
50
  // @TODO: display where disease data comes from
54
51
  // add to disease dataset metadata
55
- function DiseaseVarList(_ref) {
56
- let {
57
- makeListItem
58
- } = _ref;
52
+ function DiseaseVarList({
53
+ makeListItem
54
+ }) {
59
55
  const ENDPOINT = "disease/genes";
60
56
  const dataset = (0, _DatasetContext.useDataset)();
61
57
  const dispatch = (0, _DatasetContext.useDatasetDispatch)();
@@ -102,50 +98,30 @@ function DiseaseVarList(_ref) {
102
98
  return makeListItem(item, true);
103
99
  });
104
100
  const isPending = diseaseData.isPending || varMeans.isPending && dataset.varSort.disease.sort === _constants.VAR_SORT.MATRIX;
105
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
106
- children: dataset.selectedDisease && (!isPending && !diseaseVars?.length ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
107
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
108
- className: "d-flex justify-content-between mt-3",
109
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("h5", {
110
- children: "Disease genes"
111
- })
112
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Alert, {
113
- variant: "light",
114
- children: "No disease genes found."
115
- })]
116
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
117
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
118
- className: "d-flex justify-content-between mt-3",
119
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h5", {
120
- children: "Disease genes"
121
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
122
- variant: "link",
123
- onClick: () => {
124
- dispatch({
125
- type: "reset.disease"
126
- });
127
- },
128
- children: "clear"
129
- })]
130
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
131
- children: dataset.selectedDisease?.name
132
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_VarListToolbar.VarListToolbar, {
133
- varType: "disease"
134
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
135
- className: "position-relative",
136
- children: [isPending && /*#__PURE__*/(0, _jsxRuntime.jsx)(_LoadingIndicators.LoadingSpinner, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup, {
137
- children: diseaseVarList
138
- })]
139
- })]
140
- }))
141
- });
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)))));
142
119
  }
143
- function VarNamesList(_ref2) {
144
- let {
145
- mode = _constants.SELECTION_MODES.SINGLE,
146
- displayName = "genes",
147
- showDiseaseVarList = true
148
- } = _ref2;
120
+ function VarNamesList({
121
+ mode = _constants.SELECTION_MODES.SINGLE,
122
+ displayName = "genes",
123
+ showDiseaseVarList = true
124
+ }) {
149
125
  const dataset = (0, _DatasetContext.useDataset)();
150
126
  const dispatch = (0, _DatasetContext.useDatasetDispatch)();
151
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]);
@@ -177,11 +153,11 @@ function VarNamesList(_ref2) {
177
153
  }, [mode, dataset.selectedMultiVar]);
178
154
  (0, _react.useEffect)(() => {
179
155
  setVarButtons(v => {
180
- const updated = _lodash.default.map(v, i => {
156
+ const updated = _lodash.default.compact(_lodash.default.map(v, i => {
181
157
  if (i.isSet) {
182
158
  return dataset.varSets.find(s => s.name === i.name);
183
159
  } else return i;
184
- });
160
+ }));
185
161
  const newSets = _lodash.default.difference(dataset.varSets, updated);
186
162
  return [...updated, ...newSets];
187
163
  });
@@ -216,26 +192,25 @@ function VarNamesList(_ref2) {
216
192
  setSortedVarButtons(varButtons);
217
193
  }
218
194
  }, [dataset.varSort.var.sort, dataset.varSort.var.sortOrder, varButtons, varMeans.isPending, varMeans.serverError, varMeans.fetchedData]);
219
- const makeListItem = function (item) {
220
- let isDiseaseGene = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
221
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
222
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_VarItem.VarItem, {
223
- item: item,
224
- active: active,
225
- setVarButtons: setVarButtons,
226
- mode: mode,
227
- isDiseaseGene: isDiseaseGene
228
- })
229
- }, 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
+ }));
230
205
  };
231
206
  const makeSetListItem = set => {
232
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
233
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_VarSet.VarSet, {
234
- set: set,
235
- active: active,
236
- mode: mode
237
- })
238
- }, 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
+ }));
239
214
  };
240
215
  const varList = _lodash.default.map(sortedVarButtons, item => {
241
216
  if (item.isSet) {
@@ -257,60 +232,41 @@ function VarNamesList(_ref2) {
257
232
  return setName;
258
233
  };
259
234
  const isPending = varMeans.isPending && dataset.varSort.var.sort === _constants.VAR_SORT.MATRIX;
260
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
261
- className: "position-relative",
262
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
263
- className: "overflow-auto mt-3",
264
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
265
- className: "d-flex justify-content-between",
266
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h5", {
267
- children: _lodash.default.capitalize(displayName)
268
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
269
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Button, {
270
- variant: "light",
271
- className: "p-1",
272
- onClick: () => {
273
- dispatch({
274
- type: "add.varSet",
275
- varSet: {
276
- name: newSetName(),
277
- vars: [],
278
- isSet: true
279
- }
280
- });
281
- },
282
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.Add, {}), "New set"]
283
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
284
- variant: "link",
285
- onClick: () => {
286
- setVarButtons([]);
287
- dispatch({
288
- type: mode === _constants.SELECTION_MODES.SINGLE ? "reset.var" : "reset.multiVar"
289
- });
290
- dispatch({
291
- type: "reset.varSets"
292
- });
293
- },
294
- children: "clear"
295
- })]
296
- })]
297
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
298
- children: !varList.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Alert, {
299
- variant: "light",
300
- children: "Search for a feature."
301
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
302
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_VarListToolbar.VarListToolbar, {}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
303
- className: "position-relative",
304
- children: [isPending && /*#__PURE__*/(0, _jsxRuntime.jsx)(_LoadingIndicators.LoadingSpinner, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup, {
305
- children: varList
306
- })]
307
- })]
308
- })
309
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
310
- children: showDiseaseVarList && /*#__PURE__*/(0, _jsxRuntime.jsx)(DiseaseVarList, {
311
- makeListItem: makeListItem
312
- })
313
- })]
314
- })
315
- });
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
+ }))));
316
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
  }