@haniffalab/cherita-react 1.3.0-dev.2025-06-06.f1eddad0 → 1.3.1-dev.2025-10-29.6de4119f

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 +99 -105
  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 +267 -205
  20. package/dist/cjs/components/obs-list/ObsList.js +161 -129
  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 +128 -100
  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 +176 -120
  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 +131 -103
  35. package/dist/cjs/components/var-list/VarList.js +85 -71
  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 -97
  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 +51 -48
  42. package/dist/cjs/context/DatasetContext.js +26 -17
  43. package/dist/cjs/context/FilterContext.js +11 -9
  44. package/dist/cjs/context/SettingsContext.js +271 -88
  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 +36 -29
  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 +135 -65
  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 +119 -124
  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 +282 -217
  82. package/dist/esm/components/obs-list/ObsList.js +176 -143
  83. package/dist/esm/components/obs-list/ObsToolbar.js +3 -3
  84. package/dist/esm/components/obsm-list/ObsmList.js +71 -32
  85. package/dist/esm/components/offcanvas/index.js +68 -33
  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 +149 -120
  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 +187 -130
  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 +142 -113
  97. package/dist/esm/components/var-list/VarList.js +99 -84
  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 -108
  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 +50 -47
  104. package/dist/esm/context/DatasetContext.js +33 -23
  105. package/dist/esm/context/FilterContext.js +11 -8
  106. package/dist/esm/context/SettingsContext.js +273 -89
  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 +37 -29
  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 +20 -8
  127. package/scss/cherita-bootstrap.scss +2 -2
  128. package/scss/cherita.scss +65 -16
  129. package/scss/components/accordions.scss +15 -2
  130. package/scss/components/layouts.scss +68 -50
  131. package/scss/components/lists.scss +16 -5
  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,14 +3,15 @@ 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, { useDeferredValue, useEffect, useMemo, useState } from "react";
7
- import { faPlus } from "@fortawesome/free-solid-svg-icons";
8
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
9
- import _ from "lodash";
10
- import { Button, ListGroup } from "react-bootstrap";
11
- import { useSettingsDispatch } from "../../context/SettingsContext";
12
- import { useDiseaseSearch, useVarSearch } from "../../utils/search";
13
- import { VirtualizedList } from "../../utils/VirtualizedList";
6
+ import { useDeferredValue, useEffect, useMemo, useState } from 'react';
7
+ import { faPlus } from '@fortawesome/free-solid-svg-icons';
8
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
9
+ import _ from 'lodash';
10
+ import { Button, ListGroup } from 'react-bootstrap';
11
+ import { useSettingsDispatch } from '../../context/SettingsContext';
12
+ import { useDiseaseSearch, useVarSearch } from '../../utils/search';
13
+ import { VirtualizedList } from '../../utils/VirtualizedList';
14
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
14
15
  export function VarSearchResults(_ref) {
15
16
  let {
16
17
  text,
@@ -55,47 +56,59 @@ export function VarSearchResults(_ref) {
55
56
  }
56
57
  }, [fetchedData, isPending, serverError, setResultsLength]);
57
58
  const getDataAtIndex = index => deferredData[index];
58
- const ItemComponent = item => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
59
- className: "virtualized-list-wrapper"
60
- }, /*#__PURE__*/React.createElement(ListGroup.Item, {
61
- key: item,
62
- onClick: () => {
63
- setSelectedResult(item);
64
- },
65
- active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.index) === item.index
66
- }, /*#__PURE__*/React.createElement("div", {
67
- className: "d-flex justify-content-between align-items-center w-100"
68
- }, /*#__PURE__*/React.createElement("div", null, item.name), /*#__PURE__*/React.createElement("div", {
69
- className: "d-flex align-items-center gap-1"
70
- }, /*#__PURE__*/React.createElement(Button, {
71
- type: "button",
72
- className: "m-0 p-0 px-1",
73
- variant: "outline-secondary",
74
- title: "Add to list",
75
- disabled: isStale,
76
- onClick: () => {
77
- handleSelect(dispatch, item);
78
- }
79
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
80
- icon: faPlus
81
- })))))));
82
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
83
- className: "search-results"
84
- }, /*#__PURE__*/React.createElement(ListGroup, {
85
- variant: "flush",
86
- className: "cherita-list"
87
- }, deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/React.createElement(VirtualizedList, {
88
- getDataAtIndex: getDataAtIndex,
89
- count: deferredData.length,
90
- ItemComponent: ItemComponent,
91
- overscan: 500,
92
- estimateSize: 42,
93
- maxHeight: "70vh"
94
- }) : /*#__PURE__*/React.createElement(ListGroup.Item, {
95
- key: "empty",
96
- as: "button",
97
- disabled: true
98
- }, !text.length ? "Search features" : !serverError ? isStale || isPending ? "Loading..." : "No items found" : "Failed to fetch data"))));
59
+ const ItemComponent = item => /*#__PURE__*/_jsx(_Fragment, {
60
+ children: /*#__PURE__*/_jsx("div", {
61
+ className: "virtualized-list-wrapper",
62
+ children: /*#__PURE__*/_jsx(ListGroup.Item, {
63
+ onClick: () => {
64
+ setSelectedResult(item);
65
+ },
66
+ active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.index) === item.index,
67
+ children: /*#__PURE__*/_jsxs("div", {
68
+ className: "d-flex justify-content-between align-items-center w-100",
69
+ children: [/*#__PURE__*/_jsx("div", {
70
+ children: item.name
71
+ }), /*#__PURE__*/_jsx("div", {
72
+ className: "d-flex align-items-center gap-1",
73
+ children: /*#__PURE__*/_jsx(Button, {
74
+ type: "button",
75
+ className: "m-0 p-0 px-1",
76
+ variant: "outline-secondary",
77
+ title: "Add to list",
78
+ disabled: isStale,
79
+ onClick: () => {
80
+ handleSelect(dispatch, item);
81
+ },
82
+ children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
83
+ icon: faPlus
84
+ })
85
+ })
86
+ })]
87
+ })
88
+ }, item)
89
+ })
90
+ });
91
+ return /*#__PURE__*/_jsx("div", {
92
+ children: /*#__PURE__*/_jsx("div", {
93
+ className: "search-results",
94
+ children: /*#__PURE__*/_jsx(ListGroup, {
95
+ variant: "flush",
96
+ className: "cherita-list",
97
+ children: deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/_jsx(VirtualizedList, {
98
+ getDataAtIndex: getDataAtIndex,
99
+ count: deferredData.length,
100
+ ItemComponent: ItemComponent,
101
+ overscan: 500,
102
+ estimateSize: () => 42,
103
+ maxHeight: "70vh"
104
+ }) : /*#__PURE__*/_jsx(ListGroup.Item, {
105
+ as: "button",
106
+ disabled: true,
107
+ children: !text.length ? 'Search features' : !serverError ? isStale || isPending ? 'Loading...' : 'No items found' : 'Failed to fetch data'
108
+ }, "empty")
109
+ })
110
+ })
111
+ });
99
112
  }
100
113
  export function DiseasesSearchResults(_ref2) {
101
114
  let {
@@ -139,32 +152,42 @@ export function DiseasesSearchResults(_ref2) {
139
152
  }
140
153
  }, [fetchedData, isPending, serverError, setResultsLength]);
141
154
  const getDataAtIndex = index => deferredData[index];
142
- const ItemComponent = item => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
143
- className: "virtualized-list-wrapper"
144
- }, /*#__PURE__*/React.createElement(ListGroup.Item, {
145
- key: item.name,
146
- onClick: () => {
147
- setSelectedResult(item);
148
- },
149
- active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.id) === item.id
150
- }, /*#__PURE__*/React.createElement("div", {
151
- className: "d-flex justify-content-between align-items-center w-100"
152
- }, /*#__PURE__*/React.createElement("div", null, item.disease_name)))));
153
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
154
- className: "search-results"
155
- }, /*#__PURE__*/React.createElement(ListGroup, {
156
- variant: "flush",
157
- className: "cherita-list"
158
- }, deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/React.createElement(VirtualizedList, {
159
- getDataAtIndex: getDataAtIndex,
160
- count: deferredData.length,
161
- ItemComponent: ItemComponent,
162
- overscan: 250,
163
- estimateSize: 32,
164
- maxHeight: "70vh"
165
- }) : /*#__PURE__*/React.createElement(ListGroup.Item, {
166
- key: "empty",
167
- as: "button",
168
- disabled: true
169
- }, !text.length ? "Search diseases" : !serverError ? isStale || isPending ? "Loading..." : "No items found" : "Failed to fetch data"))));
155
+ const ItemComponent = item => /*#__PURE__*/_jsx(_Fragment, {
156
+ children: /*#__PURE__*/_jsx("div", {
157
+ className: "virtualized-list-wrapper",
158
+ children: /*#__PURE__*/_jsx(ListGroup.Item, {
159
+ onClick: () => {
160
+ setSelectedResult(item);
161
+ },
162
+ active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.id) === item.id,
163
+ children: /*#__PURE__*/_jsx("div", {
164
+ className: "d-flex justify-content-between align-items-center w-100",
165
+ children: /*#__PURE__*/_jsx("div", {
166
+ children: item.disease_name
167
+ })
168
+ })
169
+ }, item.name)
170
+ })
171
+ });
172
+ return /*#__PURE__*/_jsx("div", {
173
+ children: /*#__PURE__*/_jsx("div", {
174
+ className: "search-results",
175
+ children: /*#__PURE__*/_jsx(ListGroup, {
176
+ variant: "flush",
177
+ className: "cherita-list",
178
+ children: deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/_jsx(VirtualizedList, {
179
+ getDataAtIndex: getDataAtIndex,
180
+ count: deferredData.length,
181
+ ItemComponent: ItemComponent,
182
+ overscan: 250,
183
+ estimateSize: () => 32,
184
+ maxHeight: "70vh"
185
+ }) : /*#__PURE__*/_jsx(ListGroup.Item, {
186
+ as: "button",
187
+ disabled: true,
188
+ children: !text.length ? 'Search diseases' : !serverError ? isStale || isPending ? 'Loading...' : 'No items found' : 'Failed to fetch data'
189
+ }, "empty")
190
+ })
191
+ })
192
+ });
170
193
  }
@@ -1,7 +1,7 @@
1
- import React from "react";
2
- import { faList, faSearch, faSliders } from "@fortawesome/free-solid-svg-icons";
3
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
4
- import { Container, Nav, Navbar } from "react-bootstrap";
1
+ import { faList, faSearch, faSliders } from '@fortawesome/free-solid-svg-icons';
2
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
+ import { Container, Nav, Navbar } from 'react-bootstrap';
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  export const Toolbar = _ref => {
6
6
  let {
7
7
  showObsBtn = true,
@@ -11,48 +11,58 @@ export const Toolbar = _ref => {
11
11
  setShowVars,
12
12
  setShowControls
13
13
  } = _ref;
14
- return /*#__PURE__*/React.createElement(Navbar, {
14
+ return /*#__PURE__*/_jsx(Navbar, {
15
15
  expand: "md",
16
16
  bg: "primary",
17
17
  variant: "dark",
18
- className: "cherita-navbar"
19
- }, /*#__PURE__*/React.createElement(Container, {
20
- fluid: true
21
- }, /*#__PURE__*/React.createElement(Navbar.Toggle, {
22
- "aria-controls": "navbarScroll"
23
- }), /*#__PURE__*/React.createElement(Navbar.Collapse, {
24
- id: "navbarScroll"
25
- }, /*#__PURE__*/React.createElement(Nav, {
26
- navbarScroll: true
27
- }, showObsBtn && /*#__PURE__*/React.createElement(Nav.Item, {
28
- className: "me-2"
29
- }, /*#__PURE__*/React.createElement(Nav.Link, {
30
- onClick: () => setShowObs(true)
31
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
32
- icon: faList,
33
- className: "me-2"
34
- }), "Explore Categories")), showVarsBtn && /*#__PURE__*/React.createElement(Nav.Item, {
35
- className: "me-2"
36
- }, /*#__PURE__*/React.createElement(Nav.Link, {
37
- onClick: () => setShowVars(true)
38
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
39
- icon: faSearch,
40
- className: "me-2"
41
- }), "Search Genes")), showCtrlsBtn && /*#__PURE__*/React.createElement(Nav.Item, {
42
- className: "me-2"
43
- }, /*#__PURE__*/React.createElement(Nav.Link, {
44
- onClick: () => setShowControls(true)
45
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
46
- icon: faSliders,
47
- className: "me-2"
48
- }), "Controls"))))));
18
+ className: "cherita-navbar",
19
+ children: /*#__PURE__*/_jsxs(Container, {
20
+ fluid: true,
21
+ children: [/*#__PURE__*/_jsx(Navbar.Toggle, {
22
+ "aria-controls": "navbarScroll"
23
+ }), /*#__PURE__*/_jsx(Navbar.Collapse, {
24
+ id: "navbarScroll",
25
+ children: /*#__PURE__*/_jsxs(Nav, {
26
+ navbarScroll: true,
27
+ children: [showObsBtn && /*#__PURE__*/_jsx(Nav.Item, {
28
+ className: "me-2",
29
+ children: /*#__PURE__*/_jsxs(Nav.Link, {
30
+ onClick: () => setShowObs(true),
31
+ children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
32
+ icon: faList,
33
+ className: "me-2"
34
+ }), "Explore Categories"]
35
+ })
36
+ }), showVarsBtn && /*#__PURE__*/_jsx(Nav.Item, {
37
+ className: "me-2",
38
+ children: /*#__PURE__*/_jsxs(Nav.Link, {
39
+ onClick: () => setShowVars(true),
40
+ children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
41
+ icon: faSearch,
42
+ className: "me-2"
43
+ }), "Search Genes"]
44
+ })
45
+ }), showCtrlsBtn && /*#__PURE__*/_jsx(Nav.Item, {
46
+ className: "me-2",
47
+ children: /*#__PURE__*/_jsxs(Nav.Link, {
48
+ onClick: () => setShowControls(true),
49
+ children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
50
+ icon: faSliders,
51
+ className: "me-2"
52
+ }), "Controls"]
53
+ })
54
+ })]
55
+ })
56
+ })]
57
+ })
58
+ });
49
59
  };
50
60
  export const ObsPlotlyToolbar = _ref2 => {
51
61
  let {
52
62
  onClick
53
63
  } = _ref2;
54
64
  return {
55
- name: "Categories",
65
+ name: 'Categories',
56
66
  icon: {
57
67
  width: 512,
58
68
  height: 512,
@@ -66,7 +76,7 @@ export const VarPlotlyToolbar = _ref3 => {
66
76
  onClick
67
77
  } = _ref3;
68
78
  return {
69
- name: "Features",
79
+ name: 'Features',
70
80
  icon: {
71
81
  width: 512,
72
82
  height: 512,
@@ -80,7 +90,7 @@ export const ControlsPlotlyToolbar = _ref4 => {
80
90
  onClick
81
91
  } = _ref4;
82
92
  return {
83
- name: "Controls",
93
+ name: 'Controls',
84
94
  icon: {
85
95
  width: 512,
86
96
  height: 512,