@haniffalab/cherita-react 1.3.0 → 1.3.1-dev.2025-10-29.def77f5f

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