@haniffalab/cherita-react 1.4.1 → 1.4.2-dev.2025-10-29.e8bbb191

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 (138) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/controls/Controls.js +38 -30
  3. package/dist/cjs/components/dotplot/Dotplot.js +67 -69
  4. package/dist/cjs/components/dotplot/DotplotControls.js +103 -83
  5. package/dist/cjs/components/full-page/FullPage.js +100 -74
  6. package/dist/cjs/components/full-page/PlotAlert.js +45 -0
  7. package/dist/cjs/components/full-page/PlotTypeSelector.js +89 -44
  8. package/dist/cjs/components/heatmap/Heatmap.js +65 -65
  9. package/dist/cjs/components/heatmap/HeatmapControls.js +6 -3
  10. package/dist/cjs/components/icons/DotPlotIcon.js +64 -0
  11. package/dist/cjs/components/icons/HeatmapIcon.js +45 -0
  12. package/dist/cjs/components/icons/MatrixPlotIcon.1.js +57 -0
  13. package/dist/cjs/components/icons/MatrixPlotIcon.js +59 -0
  14. package/dist/cjs/components/icons/ScatterplotIcon.1.js +164 -0
  15. package/dist/cjs/components/icons/ScatterplotIcon.js +144 -0
  16. package/dist/cjs/components/icons/ViolinPlotIcon.js +42 -0
  17. package/dist/cjs/components/matrixplot/Matrixplot.js +65 -66
  18. package/dist/cjs/components/matrixplot/MatrixplotControls.js +8 -5
  19. package/dist/cjs/components/obs-list/ObsItem.js +258 -210
  20. package/dist/cjs/components/obs-list/ObsList.js +161 -133
  21. package/dist/cjs/components/obs-list/ObsToolbar.js +2 -3
  22. package/dist/cjs/components/obsm-list/ObsmList.js +53 -38
  23. package/dist/cjs/components/offcanvas/index.js +61 -31
  24. package/dist/cjs/components/pseudospatial/Pseudospatial.js +132 -76
  25. package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +122 -74
  26. package/dist/cjs/components/scatterplot/Scatterplot.js +127 -99
  27. package/dist/cjs/components/scatterplot/ScatterplotControls.js +45 -31
  28. package/dist/cjs/components/scatterplot/SpatialControls.js +140 -113
  29. package/dist/cjs/components/scatterplot/Toolbox.js +41 -30
  30. package/dist/cjs/components/search-bar/SearchBar.js +168 -121
  31. package/dist/cjs/components/search-bar/SearchInfo.js +76 -50
  32. package/dist/cjs/components/search-bar/SearchResults.js +93 -71
  33. package/dist/cjs/components/toolbar/Toolbar.js +46 -37
  34. package/dist/cjs/components/var-list/VarItem.js +115 -88
  35. package/dist/cjs/components/var-list/VarList.js +85 -69
  36. package/dist/cjs/components/var-list/VarListToolbar.js +59 -54
  37. package/dist/cjs/components/var-list/VarSet.js +126 -108
  38. package/dist/cjs/components/violin/Violin.js +109 -107
  39. package/dist/cjs/components/violin/ViolinControls.js +8 -5
  40. package/dist/cjs/constants/colorscales.js +19 -19
  41. package/dist/cjs/constants/constants.js +47 -47
  42. package/dist/cjs/context/DatasetContext.js +24 -16
  43. package/dist/cjs/context/FilterContext.js +11 -9
  44. package/dist/cjs/context/SettingsContext.js +255 -89
  45. package/dist/cjs/context/ZarrDataContext.js +6 -5
  46. package/dist/cjs/helpers/color-helper.js +2 -2
  47. package/dist/cjs/helpers/zarr-helper.js +3 -3
  48. package/dist/cjs/utils/Filter.js +16 -11
  49. package/dist/cjs/utils/Histogram.js +35 -33
  50. package/dist/cjs/utils/ImageViewer.js +11 -8
  51. package/dist/cjs/utils/Legend.js +37 -30
  52. package/dist/cjs/utils/LoadingIndicators.js +15 -13
  53. package/dist/cjs/utils/Resolver.js +213 -0
  54. package/dist/cjs/utils/Skeleton.js +10 -10
  55. package/dist/cjs/utils/StyledTooltip.js +44 -0
  56. package/dist/cjs/utils/VirtualizedList.js +34 -27
  57. package/dist/cjs/utils/errors.js +15 -15
  58. package/dist/cjs/utils/requests.js +21 -9
  59. package/dist/cjs/utils/search.js +4 -4
  60. package/dist/cjs/utils/string.js +6 -6
  61. package/dist/cjs/utils/zarrData.js +20 -21
  62. package/dist/css/cherita.css +64 -42
  63. package/dist/css/cherita.css.map +1 -1
  64. package/dist/esm/components/controls/Controls.js +43 -35
  65. package/dist/esm/components/dotplot/Dotplot.js +77 -78
  66. package/dist/esm/components/dotplot/DotplotControls.js +106 -85
  67. package/dist/esm/components/full-page/FullPage.js +120 -93
  68. package/dist/esm/components/full-page/PlotAlert.js +39 -0
  69. package/dist/esm/components/full-page/PlotTypeSelector.js +90 -45
  70. package/dist/esm/components/heatmap/Heatmap.js +75 -74
  71. package/dist/esm/components/heatmap/HeatmapControls.js +8 -4
  72. package/dist/esm/components/icons/DotPlotIcon.js +58 -0
  73. package/dist/esm/components/icons/HeatmapIcon.js +39 -0
  74. package/dist/esm/components/icons/MatrixPlotIcon.1.js +51 -0
  75. package/dist/esm/components/icons/MatrixPlotIcon.js +53 -0
  76. package/dist/esm/components/icons/ScatterplotIcon.1.js +158 -0
  77. package/dist/esm/components/icons/ScatterplotIcon.js +138 -0
  78. package/dist/esm/components/icons/ViolinPlotIcon.js +36 -0
  79. package/dist/esm/components/matrixplot/Matrixplot.js +75 -75
  80. package/dist/esm/components/matrixplot/MatrixplotControls.js +10 -6
  81. package/dist/esm/components/obs-list/ObsItem.js +273 -222
  82. package/dist/esm/components/obs-list/ObsList.js +176 -147
  83. package/dist/esm/components/obs-list/ObsToolbar.js +3 -3
  84. package/dist/esm/components/obsm-list/ObsmList.js +60 -44
  85. package/dist/esm/components/offcanvas/index.js +67 -37
  86. package/dist/esm/components/pseudospatial/Pseudospatial.js +145 -88
  87. package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +127 -78
  88. package/dist/esm/components/scatterplot/Scatterplot.js +148 -119
  89. package/dist/esm/components/scatterplot/ScatterplotControls.js +50 -35
  90. package/dist/esm/components/scatterplot/SpatialControls.js +153 -125
  91. package/dist/esm/components/scatterplot/Toolbox.js +44 -32
  92. package/dist/esm/components/search-bar/SearchBar.js +180 -132
  93. package/dist/esm/components/search-bar/SearchInfo.js +86 -59
  94. package/dist/esm/components/search-bar/SearchResults.js +100 -77
  95. package/dist/esm/components/toolbar/Toolbar.js +49 -39
  96. package/dist/esm/components/var-list/VarItem.js +126 -98
  97. package/dist/esm/components/var-list/VarList.js +99 -82
  98. package/dist/esm/components/var-list/VarListToolbar.js +64 -58
  99. package/dist/esm/components/var-list/VarSet.js +134 -115
  100. package/dist/esm/components/violin/Violin.js +121 -118
  101. package/dist/esm/components/violin/ViolinControls.js +10 -6
  102. package/dist/esm/constants/colorscales.js +19 -19
  103. package/dist/esm/constants/constants.js +47 -47
  104. package/dist/esm/context/DatasetContext.js +31 -22
  105. package/dist/esm/context/FilterContext.js +11 -8
  106. package/dist/esm/context/SettingsContext.js +257 -90
  107. package/dist/esm/context/ZarrDataContext.js +8 -6
  108. package/dist/esm/helpers/color-helper.js +5 -5
  109. package/dist/esm/helpers/map-helper.js +2 -2
  110. package/dist/esm/helpers/zarr-helper.js +6 -6
  111. package/dist/esm/index.js +22 -22
  112. package/dist/esm/utils/Filter.js +22 -17
  113. package/dist/esm/utils/Histogram.js +39 -37
  114. package/dist/esm/utils/ImageViewer.js +12 -8
  115. package/dist/esm/utils/Legend.js +44 -36
  116. package/dist/esm/utils/LoadingIndicators.js +16 -13
  117. package/dist/esm/utils/Resolver.js +201 -0
  118. package/dist/esm/utils/Skeleton.js +11 -10
  119. package/dist/esm/utils/StyledTooltip.js +38 -0
  120. package/dist/esm/utils/VirtualizedList.js +35 -27
  121. package/dist/esm/utils/errors.js +15 -15
  122. package/dist/esm/utils/requests.js +24 -12
  123. package/dist/esm/utils/search.js +7 -7
  124. package/dist/esm/utils/string.js +7 -7
  125. package/dist/esm/utils/zarrData.js +27 -28
  126. package/package.json +21 -9
  127. package/scss/cherita-bootstrap.scss +2 -2
  128. package/scss/cherita.scss +43 -17
  129. package/scss/components/accordions.scss +4 -1
  130. package/scss/components/layouts.scss +15 -33
  131. package/scss/components/lists.scss +8 -4
  132. package/scss/components/plotly.scss +38 -26
  133. package/scss/components/plots.scss +14 -1
  134. package/dist/assets/images/plots/dotplot.svg +0 -152
  135. package/dist/assets/images/plots/heatmap.svg +0 -193
  136. package/dist/assets/images/plots/matrixplot.svg +0 -275
  137. package/dist/assets/images/plots/scatterplot.svg +0 -198
  138. package/dist/assets/images/plots/violin.svg +0 -50
@@ -3,24 +3,26 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
3
3
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
5
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
- import React, { useEffect, useState } from "react";
7
- import { faTimes } from "@fortawesome/free-solid-svg-icons";
8
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
9
- import _ from "lodash";
10
- import { Alert, Button, ListGroup } from "react-bootstrap";
11
- import ButtonGroup from "react-bootstrap/ButtonGroup";
12
- import { VarItem } from "./VarItem";
13
- import { VarListToolbar } from "./VarListToolbar";
14
- import { VarSet } from "./VarSet";
15
- import { SELECTION_MODES, VAR_SORT } from "../../constants/constants";
16
- import { useDataset } from "../../context/DatasetContext";
17
- import { useFilteredData } from "../../context/FilterContext";
18
- import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
19
- import { LoadingSpinner } from "../../utils/LoadingIndicators";
20
- import { useFetch } from "../../utils/requests";
6
+ import { useEffect, useState } from 'react';
7
+ import { faTimes } from '@fortawesome/free-solid-svg-icons';
8
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
9
+ import _ from 'lodash';
10
+ import { Alert, Button, ListGroup } from 'react-bootstrap';
11
+ import ButtonGroup from 'react-bootstrap/ButtonGroup';
12
+ import { VarItem } from './VarItem';
13
+ import { VarListToolbar } from './VarListToolbar';
14
+ import { VarSet } from './VarSet';
15
+ import { SELECTION_MODES, VAR_SORT } from '../../constants/constants';
16
+ import { useDataset } from '../../context/DatasetContext';
17
+ import { useFilteredData } from '../../context/FilterContext';
18
+ import { useSettings, useSettingsDispatch } from '../../context/SettingsContext';
19
+ import { LoadingSpinner } from '../../utils/LoadingIndicators';
20
+ import { useFetch } from '../../utils/requests';
21
+ import { useSelectedMultiVar, useSelectedVar, useSettingsVars } from '../../utils/Resolver';
22
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
21
23
  export const useVarMean = function (varKeys) {
22
24
  let enabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
23
- const ENDPOINT = "matrix/mean";
25
+ const ENDPOINT = 'matrix/mean';
24
26
  const dataset = useDataset();
25
27
  const {
26
28
  obsIndices
@@ -29,7 +31,7 @@ export const useVarMean = function (varKeys) {
29
31
  url: dataset.url,
30
32
  varKeys: _.map(varKeys, v => v.isSet ? {
31
33
  name: v.name,
32
- indices: v.vars.map(v => v.index)
34
+ indices: v.vars.map(vv => vv.index)
33
35
  } : v.index),
34
36
  obsIndices: obsIndices,
35
37
  varNamesCol: dataset.varNamesCol
@@ -39,7 +41,7 @@ export const useVarMean = function (varKeys) {
39
41
  return _objectSpread(_objectSpread({}, p), {}, {
40
42
  varKeys: _.map(varKeys, v => v.isSet ? {
41
43
  name: v.name,
42
- indices: v.vars.map(v => v.index)
44
+ indices: v.vars.map(vv => vv.index)
43
45
  } : v.index),
44
46
  obsIndices: obsIndices
45
47
  });
@@ -56,59 +58,60 @@ export const sortMeans = (i, means) => {
56
58
  return means[i.name] || _.min(_.values(means)) - 1;
57
59
  };
58
60
  export function VarNamesList(_ref) {
59
- var _settings$selectedVar, _settings$selectedVar2;
60
61
  let {
61
62
  mode = SELECTION_MODES.SINGLE,
62
- displayName = "genes"
63
+ displayName = 'genes'
63
64
  } = _ref;
64
65
  const settings = useSettings();
65
66
  const dispatch = useSettingsDispatch();
66
- const [active, setActive] = useState(mode === SELECTION_MODES.SINGLE ? ((_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.matrix_index) || ((_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name) : settings.selectedMultiVar.map(i => i.matrix_index || i.name));
67
+ const selectedVar = useSelectedVar();
68
+ const selectedMultiVar = useSelectedMultiVar();
69
+ const settingsVars = useSettingsVars();
70
+ const [active, setActive] = useState(mode === SELECTION_MODES.SINGLE ? (selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index) || (selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name) : selectedMultiVar.map(i => i.matrix_index || i.name));
67
71
  const [sortedVars, setSortedVars] = useState([]);
68
72
  useEffect(() => {
69
73
  if (mode === SELECTION_MODES.SINGLE) {
70
- var _settings$selectedVar3, _settings$selectedVar4;
71
- setActive(((_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.matrix_index) || ((_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.name));
74
+ setActive((selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index) || (selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name));
72
75
  }
73
- }, [mode, settings.selectedVar]);
76
+ }, [mode, selectedVar]);
74
77
  useEffect(() => {
75
78
  if (mode === SELECTION_MODES.MULTIPLE) {
76
- setActive(settings.selectedMultiVar.map(i => i.matrix_index || i.name));
79
+ setActive(selectedMultiVar.map(i => i.matrix_index || i.name));
77
80
  }
78
- }, [mode, settings.selectedMultiVar]);
79
- const varMeans = useVarMean(settings.vars, settings.varSort.var.sort === VAR_SORT.MATRIX);
81
+ }, [mode, selectedMultiVar]);
82
+ const varMeans = useVarMean(settingsVars, settings.varSort.var.sort === VAR_SORT.MATRIX);
80
83
 
81
84
  // @TODO: deferr sortedVars ?
82
85
  useEffect(() => {
83
86
  if (settings.varSort.var.sort === VAR_SORT.MATRIX) {
84
87
  if (!varMeans.isPending && !varMeans.serverError && varMeans.fetchedData) {
85
- setSortedVars(_.orderBy(settings.vars, o => {
88
+ setSortedVars(_.orderBy(settingsVars, o => {
86
89
  return sortMeans(o, varMeans.fetchedData);
87
90
  }, settings.varSort.var.sortOrder));
88
91
  }
89
92
  } else if (settings.varSort.var.sort === VAR_SORT.NAME) {
90
- setSortedVars(_.orderBy(settings.vars, "name", settings.varSort.var.sortOrder));
93
+ setSortedVars(_.orderBy(settingsVars, 'name', settings.varSort.var.sortOrder));
91
94
  } else {
92
- setSortedVars(settings.vars);
95
+ setSortedVars(settingsVars);
93
96
  }
94
- }, [settings.varSort.var.sort, settings.varSort.var.sortOrder, varMeans.isPending, varMeans.serverError, varMeans.fetchedData, settings.vars]);
97
+ }, [settings.varSort.var.sort, settings.varSort.var.sortOrder, varMeans.isPending, varMeans.serverError, varMeans.fetchedData, settingsVars]);
95
98
  const makeListItem = item => {
96
- return /*#__PURE__*/React.createElement(ListGroup.Item, {
97
- key: item.matrix_index
98
- }, /*#__PURE__*/React.createElement(VarItem, {
99
- item: item,
100
- active: active,
101
- mode: mode
102
- }));
99
+ return /*#__PURE__*/_jsx(ListGroup.Item, {
100
+ children: /*#__PURE__*/_jsx(VarItem, {
101
+ item: item,
102
+ active: active,
103
+ mode: mode
104
+ })
105
+ }, item.matrix_index);
103
106
  };
104
107
  const makeSetListItem = set => {
105
- return /*#__PURE__*/React.createElement(ListGroup.Item, {
106
- key: set.name
107
- }, /*#__PURE__*/React.createElement(VarSet, {
108
- set: set,
109
- active: active,
110
- mode: mode
111
- }));
108
+ return /*#__PURE__*/_jsx(ListGroup.Item, {
109
+ children: /*#__PURE__*/_jsx(VarSet, {
110
+ set: set,
111
+ active: active,
112
+ mode: mode
113
+ })
114
+ }, set.name);
112
115
  };
113
116
  const varList = _.map(sortedVars, item => {
114
117
  if (item.isSet) {
@@ -130,41 +133,55 @@ export function VarNamesList(_ref) {
130
133
  return setName;
131
134
  };
132
135
  const isPending = varMeans.isPending && settings.varSort.var.sort === VAR_SORT.MATRIX;
133
- return /*#__PURE__*/React.createElement("div", {
134
- className: "mt-3 d-flex flex-column h-100"
135
- }, /*#__PURE__*/React.createElement("div", {
136
- className: "d-flex justify-content-between mb-2"
137
- }, /*#__PURE__*/React.createElement("h5", null, _.capitalize(displayName)), /*#__PURE__*/React.createElement(ButtonGroup, {
138
- "aria-label": "Feature options",
139
- size: "sm"
140
- }, /*#__PURE__*/React.createElement(Button, {
141
- variant: "info",
142
- onClick: () => {
143
- dispatch({
144
- type: "add.var",
145
- var: {
146
- name: newSetName(),
147
- vars: [],
148
- isSet: true
149
- }
150
- });
151
- }
152
- }, "New set"), /*#__PURE__*/React.createElement(Button, {
153
- variant: "info",
154
- onClick: () => {
155
- dispatch({
156
- type: "reset.vars"
157
- });
158
- }
159
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
160
- icon: faTimes,
161
- className: "me-1"
162
- }), "Clear"))), /*#__PURE__*/React.createElement(React.Fragment, null, !varList.length ? /*#__PURE__*/React.createElement(Alert, {
163
- variant: "light"
164
- }, "Search for a feature.") : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(VarListToolbar, null), /*#__PURE__*/React.createElement("div", {
165
- className: "overflow-auto flex-grow-1 modern-scrollbars"
166
- }, isPending && /*#__PURE__*/React.createElement(LoadingSpinner, null), /*#__PURE__*/React.createElement(ListGroup, {
167
- variant: "flush",
168
- className: "cherita-list"
169
- }, varList)))));
136
+ return /*#__PURE__*/_jsxs("div", {
137
+ className: "mt-3 d-flex flex-column h-100",
138
+ children: [/*#__PURE__*/_jsxs("div", {
139
+ className: "d-flex justify-content-between mb-2",
140
+ children: [/*#__PURE__*/_jsx("h5", {
141
+ children: _.capitalize(displayName)
142
+ }), /*#__PURE__*/_jsxs(ButtonGroup, {
143
+ "aria-label": "Feature options",
144
+ size: "sm",
145
+ children: [/*#__PURE__*/_jsx(Button, {
146
+ variant: "info",
147
+ onClick: () => {
148
+ dispatch({
149
+ type: 'add.var',
150
+ var: {
151
+ name: newSetName(),
152
+ vars: [],
153
+ isSet: true
154
+ }
155
+ });
156
+ },
157
+ children: "New set"
158
+ }), /*#__PURE__*/_jsxs(Button, {
159
+ variant: "info",
160
+ onClick: () => {
161
+ dispatch({
162
+ type: 'reset.vars'
163
+ });
164
+ },
165
+ children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
166
+ icon: faTimes,
167
+ className: "me-1"
168
+ }), "Clear"]
169
+ })]
170
+ })]
171
+ }), /*#__PURE__*/_jsx(_Fragment, {
172
+ children: !varList.length ? /*#__PURE__*/_jsx(Alert, {
173
+ variant: "light",
174
+ children: "Search for a feature."
175
+ }) : /*#__PURE__*/_jsxs(_Fragment, {
176
+ children: [/*#__PURE__*/_jsx(VarListToolbar, {}), /*#__PURE__*/_jsxs("div", {
177
+ className: "overflow-auto flex-grow-1 modern-scrollbars",
178
+ children: [isPending && /*#__PURE__*/_jsx(LoadingSpinner, {}), /*#__PURE__*/_jsx(ListGroup, {
179
+ variant: "flush",
180
+ className: "cherita-list",
181
+ children: varList
182
+ })]
183
+ })]
184
+ })
185
+ })]
186
+ });
170
187
  }
@@ -1,14 +1,15 @@
1
- import React, { useState } from "react";
2
- import { faArrowDown19, faArrowDownAZ, faArrowUp91, faArrowUpZA, faXmark } from "@fortawesome/free-solid-svg-icons";
3
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
4
- import { ToggleButton, ToggleButtonGroup } from "react-bootstrap";
5
- import { VAR_SORT, VAR_SORT_ORDER } from "../../constants/constants";
6
- import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
1
+ import { useState } from 'react';
2
+ import { faArrowDown19, faArrowDownAZ, faArrowUp91, faArrowUpZA, faXmark } from '@fortawesome/free-solid-svg-icons';
3
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
+ import { ToggleButton, ToggleButtonGroup } from 'react-bootstrap';
5
+ import { VAR_SORT, VAR_SORT_ORDER } from '../../constants/constants';
6
+ import { useSettings, useSettingsDispatch } from '../../context/SettingsContext';
7
7
 
8
8
  // @TODO: set option for "var" and "disease"
9
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  export function VarListToolbar(_ref) {
10
11
  let {
11
- varType = "var"
12
+ varType = 'var'
12
13
  } = _ref;
13
14
  const settings = useSettings();
14
15
  const dispatch = useSettingsDispatch();
@@ -19,7 +20,7 @@ export function VarListToolbar(_ref) {
19
20
  if (sort !== sortValue) {
20
21
  setSort(sortValue);
21
22
  dispatch({
22
- type: "set.varSort",
23
+ type: 'set.varSort',
23
24
  var: varType,
24
25
  sort: sortValue,
25
26
  sortOrder: sortOrder
@@ -28,60 +29,65 @@ export function VarListToolbar(_ref) {
28
29
  const newSortOrder = sortOrder === VAR_SORT_ORDER.ASC ? VAR_SORT_ORDER.DESC : VAR_SORT_ORDER.ASC;
29
30
  setSortOrder(newSortOrder);
30
31
  dispatch({
31
- type: "set.varSort",
32
+ type: 'set.varSort',
32
33
  var: varType,
33
34
  sort: sortValue,
34
35
  sortOrder: newSortOrder
35
36
  });
36
37
  }
37
38
  };
38
- return /*#__PURE__*/React.createElement("div", {
39
- className: "d-flex justify-content-end align-items-center mb-2"
40
- }, /*#__PURE__*/React.createElement(ToggleButtonGroup, {
41
- name: "sortfeatures",
42
- "aria-label": "Sort features by",
43
- size: "sm",
44
- type: "radio"
45
- }, /*#__PURE__*/React.createElement(ToggleButton, {
46
- id: VAR_SORT.NAME,
47
- value: VAR_SORT.NAME,
48
- "aria-label": "alphabetical",
49
- title: "Sort alphabetically",
50
- selected: sort === VAR_SORT.NAME,
51
- onChange: () => {
52
- handleSort(VAR_SORT.NAME, nameSortOrder, setNameSortOrder);
53
- }
54
- }, nameSortOrder === VAR_SORT_ORDER.ASC ? /*#__PURE__*/React.createElement(FontAwesomeIcon, {
55
- icon: faArrowDownAZ
56
- }) : /*#__PURE__*/React.createElement(FontAwesomeIcon, {
57
- icon: faArrowUpZA
58
- })), /*#__PURE__*/React.createElement(ToggleButton, {
59
- id: VAR_SORT.MATRIX,
60
- value: VAR_SORT.MATRIX,
61
- "aria-label": "matrix value",
62
- title: "Sort by matrix value",
63
- selected: sort === VAR_SORT.MATRIX,
64
- onChange: () => {
65
- handleSort(VAR_SORT.MATRIX, matrixSortOrder, setMatrixSortOrder);
66
- }
67
- }, matrixSortOrder === VAR_SORT_ORDER.ASC ? /*#__PURE__*/React.createElement(FontAwesomeIcon, {
68
- icon: faArrowDown19
69
- }) : /*#__PURE__*/React.createElement(FontAwesomeIcon, {
70
- icon: faArrowUp91
71
- })), /*#__PURE__*/React.createElement(ToggleButton, {
72
- id: "none",
73
- value: "none",
74
- "aria-label": "none",
75
- title: "No sorting",
76
- onClick: () => {
77
- setSort(VAR_SORT.NONE);
78
- dispatch({
79
- type: "set.varSort.sort",
80
- var: varType,
81
- sort: VAR_SORT.NONE
82
- });
83
- }
84
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
85
- icon: faXmark
86
- }))));
39
+ return /*#__PURE__*/_jsx("div", {
40
+ className: "d-flex justify-content-end align-items-center mb-2",
41
+ children: /*#__PURE__*/_jsxs(ToggleButtonGroup, {
42
+ name: "sortfeatures",
43
+ "aria-label": "Sort features by",
44
+ size: "sm",
45
+ type: "radio",
46
+ children: [/*#__PURE__*/_jsx(ToggleButton, {
47
+ id: VAR_SORT.NAME,
48
+ value: VAR_SORT.NAME,
49
+ "aria-label": "alphabetical",
50
+ title: "Sort alphabetically",
51
+ selected: sort === VAR_SORT.NAME,
52
+ onChange: () => {
53
+ handleSort(VAR_SORT.NAME, nameSortOrder, setNameSortOrder);
54
+ },
55
+ children: nameSortOrder === VAR_SORT_ORDER.ASC ? /*#__PURE__*/_jsx(FontAwesomeIcon, {
56
+ icon: faArrowDownAZ
57
+ }) : /*#__PURE__*/_jsx(FontAwesomeIcon, {
58
+ icon: faArrowUpZA
59
+ })
60
+ }), /*#__PURE__*/_jsx(ToggleButton, {
61
+ id: VAR_SORT.MATRIX,
62
+ value: VAR_SORT.MATRIX,
63
+ "aria-label": "matrix value",
64
+ title: "Sort by matrix value",
65
+ selected: sort === VAR_SORT.MATRIX,
66
+ onChange: () => {
67
+ handleSort(VAR_SORT.MATRIX, matrixSortOrder, setMatrixSortOrder);
68
+ },
69
+ children: matrixSortOrder === VAR_SORT_ORDER.ASC ? /*#__PURE__*/_jsx(FontAwesomeIcon, {
70
+ icon: faArrowDown19
71
+ }) : /*#__PURE__*/_jsx(FontAwesomeIcon, {
72
+ icon: faArrowUp91
73
+ })
74
+ }), /*#__PURE__*/_jsx(ToggleButton, {
75
+ id: "none",
76
+ value: "none",
77
+ "aria-label": "none",
78
+ title: "No sorting",
79
+ onClick: () => {
80
+ setSort(VAR_SORT.NONE);
81
+ dispatch({
82
+ type: 'set.varSort.sort',
83
+ var: varType,
84
+ sort: VAR_SORT.NONE
85
+ });
86
+ },
87
+ children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
88
+ icon: faXmark
89
+ })
90
+ })]
91
+ })
92
+ });
87
93
  }