@haniffalab/cherita-react 1.4.1 → 1.4.2

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 +18 -7
  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
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.DiseasesSearchResults = DiseasesSearchResults;
7
7
  exports.VarSearchResults = VarSearchResults;
8
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = require("react");
9
9
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
10
10
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
11
11
  var _lodash = _interopRequireDefault(require("lodash"));
@@ -13,8 +13,8 @@ var _reactBootstrap = require("react-bootstrap");
13
13
  var _SettingsContext = require("../../context/SettingsContext");
14
14
  var _search = require("../../utils/search");
15
15
  var _VirtualizedList = require("../../utils/VirtualizedList");
16
+ var _jsxRuntime = require("react/jsx-runtime");
16
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
- 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); }
18
18
  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; }
19
19
  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; }
20
20
  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; }
@@ -64,47 +64,59 @@ function VarSearchResults(_ref) {
64
64
  }
65
65
  }, [fetchedData, isPending, serverError, setResultsLength]);
66
66
  const getDataAtIndex = index => deferredData[index];
67
- const ItemComponent = item => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
68
- className: "virtualized-list-wrapper"
69
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
70
- key: item,
71
- onClick: () => {
72
- setSelectedResult(item);
73
- },
74
- active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.index) === item.index
75
- }, /*#__PURE__*/_react.default.createElement("div", {
76
- className: "d-flex justify-content-between align-items-center w-100"
77
- }, /*#__PURE__*/_react.default.createElement("div", null, item.name), /*#__PURE__*/_react.default.createElement("div", {
78
- className: "d-flex align-items-center gap-1"
79
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
80
- type: "button",
81
- className: "m-0 p-0 px-1",
82
- variant: "outline-secondary",
83
- title: "Add to list",
84
- disabled: isStale,
85
- onClick: () => {
86
- handleSelect(dispatch, item);
87
- }
88
- }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
89
- icon: _freeSolidSvgIcons.faPlus
90
- })))))));
91
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
92
- className: "search-results"
93
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, {
94
- variant: "flush",
95
- className: "cherita-list"
96
- }, deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/_react.default.createElement(_VirtualizedList.VirtualizedList, {
97
- getDataAtIndex: getDataAtIndex,
98
- count: deferredData.length,
99
- ItemComponent: ItemComponent,
100
- overscan: 500,
101
- estimateSize: () => 42,
102
- maxHeight: "70vh"
103
- }) : /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
104
- key: "empty",
105
- as: "button",
106
- disabled: true
107
- }, !text.length ? "Search features" : !serverError ? isStale || isPending ? "Loading..." : "No items found" : "Failed to fetch data"))));
67
+ const ItemComponent = item => /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
68
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
69
+ className: "virtualized-list-wrapper",
70
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
71
+ onClick: () => {
72
+ setSelectedResult(item);
73
+ },
74
+ active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.index) === item.index,
75
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
76
+ className: "d-flex justify-content-between align-items-center w-100",
77
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
78
+ children: item.name
79
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
80
+ className: "d-flex align-items-center gap-1",
81
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
82
+ type: "button",
83
+ className: "m-0 p-0 px-1",
84
+ variant: "outline-secondary",
85
+ title: "Add to list",
86
+ disabled: isStale,
87
+ onClick: () => {
88
+ handleSelect(dispatch, item);
89
+ },
90
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
91
+ icon: _freeSolidSvgIcons.faPlus
92
+ })
93
+ })
94
+ })]
95
+ })
96
+ }, item)
97
+ })
98
+ });
99
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
100
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
101
+ className: "search-results",
102
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup, {
103
+ variant: "flush",
104
+ className: "cherita-list",
105
+ children: deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_VirtualizedList.VirtualizedList, {
106
+ getDataAtIndex: getDataAtIndex,
107
+ count: deferredData.length,
108
+ ItemComponent: ItemComponent,
109
+ overscan: 500,
110
+ estimateSize: () => 42,
111
+ maxHeight: "70vh"
112
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
113
+ as: "button",
114
+ disabled: true,
115
+ children: !text.length ? 'Search features' : !serverError ? isStale || isPending ? 'Loading...' : 'No items found' : 'Failed to fetch data'
116
+ }, "empty")
117
+ })
118
+ })
119
+ });
108
120
  }
109
121
  function DiseasesSearchResults(_ref2) {
110
122
  let {
@@ -148,32 +160,42 @@ function DiseasesSearchResults(_ref2) {
148
160
  }
149
161
  }, [fetchedData, isPending, serverError, setResultsLength]);
150
162
  const getDataAtIndex = index => deferredData[index];
151
- const ItemComponent = item => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
152
- className: "virtualized-list-wrapper"
153
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
154
- key: item.name,
155
- onClick: () => {
156
- setSelectedResult(item);
157
- },
158
- active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.id) === item.id
159
- }, /*#__PURE__*/_react.default.createElement("div", {
160
- className: "d-flex justify-content-between align-items-center w-100"
161
- }, /*#__PURE__*/_react.default.createElement("div", null, item.disease_name)))));
162
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
163
- className: "search-results"
164
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, {
165
- variant: "flush",
166
- className: "cherita-list"
167
- }, deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/_react.default.createElement(_VirtualizedList.VirtualizedList, {
168
- getDataAtIndex: getDataAtIndex,
169
- count: deferredData.length,
170
- ItemComponent: ItemComponent,
171
- overscan: 250,
172
- estimateSize: () => 32,
173
- maxHeight: "70vh"
174
- }) : /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
175
- key: "empty",
176
- as: "button",
177
- disabled: true
178
- }, !text.length ? "Search diseases" : !serverError ? isStale || isPending ? "Loading..." : "No items found" : "Failed to fetch data"))));
163
+ const ItemComponent = item => /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
164
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
165
+ className: "virtualized-list-wrapper",
166
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
167
+ onClick: () => {
168
+ setSelectedResult(item);
169
+ },
170
+ active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.id) === item.id,
171
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
172
+ className: "d-flex justify-content-between align-items-center w-100",
173
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
174
+ children: item.disease_name
175
+ })
176
+ })
177
+ }, item.name)
178
+ })
179
+ });
180
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
181
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
182
+ className: "search-results",
183
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup, {
184
+ variant: "flush",
185
+ className: "cherita-list",
186
+ children: deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_VirtualizedList.VirtualizedList, {
187
+ getDataAtIndex: getDataAtIndex,
188
+ count: deferredData.length,
189
+ ItemComponent: ItemComponent,
190
+ overscan: 250,
191
+ estimateSize: () => 32,
192
+ maxHeight: "70vh"
193
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
194
+ as: "button",
195
+ disabled: true,
196
+ children: !text.length ? 'Search diseases' : !serverError ? isStale || isPending ? 'Loading...' : 'No items found' : 'Failed to fetch data'
197
+ }, "empty")
198
+ })
199
+ })
200
+ });
179
201
  }
@@ -4,11 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VarPlotlyToolbar = exports.Toolbar = exports.ObsPlotlyToolbar = exports.ControlsPlotlyToolbar = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
7
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
9
8
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
10
9
  var _reactBootstrap = require("react-bootstrap");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ var _jsxRuntime = require("react/jsx-runtime");
12
11
  const Toolbar = _ref => {
13
12
  let {
14
13
  showObsBtn = true,
@@ -18,41 +17,51 @@ const Toolbar = _ref => {
18
17
  setShowVars,
19
18
  setShowControls
20
19
  } = _ref;
21
- return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Navbar, {
20
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Navbar, {
22
21
  expand: "md",
23
22
  bg: "primary",
24
23
  variant: "dark",
25
- className: "cherita-navbar"
26
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Container, {
27
- fluid: true
28
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Navbar.Toggle, {
29
- "aria-controls": "navbarScroll"
30
- }), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Navbar.Collapse, {
31
- id: "navbarScroll"
32
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav, {
33
- navbarScroll: true
34
- }, showObsBtn && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Item, {
35
- className: "me-2"
36
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Link, {
37
- onClick: () => setShowObs(true)
38
- }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
39
- icon: _freeSolidSvgIcons.faList,
40
- className: "me-2"
41
- }), "Explore Categories")), showVarsBtn && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Item, {
42
- className: "me-2"
43
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Link, {
44
- onClick: () => setShowVars(true)
45
- }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
46
- icon: _freeSolidSvgIcons.faSearch,
47
- className: "me-2"
48
- }), "Search Genes")), showCtrlsBtn && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Item, {
49
- className: "me-2"
50
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Link, {
51
- onClick: () => setShowControls(true)
52
- }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
53
- icon: _freeSolidSvgIcons.faSliders,
54
- className: "me-2"
55
- }), "Controls"))))));
24
+ className: "cherita-navbar",
25
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Container, {
26
+ fluid: true,
27
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Navbar.Toggle, {
28
+ "aria-controls": "navbarScroll"
29
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Navbar.Collapse, {
30
+ id: "navbarScroll",
31
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Nav, {
32
+ navbarScroll: true,
33
+ children: [showObsBtn && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Nav.Item, {
34
+ className: "me-2",
35
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Nav.Link, {
36
+ onClick: () => setShowObs(true),
37
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
38
+ icon: _freeSolidSvgIcons.faList,
39
+ className: "me-2"
40
+ }), "Explore Categories"]
41
+ })
42
+ }), showVarsBtn && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Nav.Item, {
43
+ className: "me-2",
44
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Nav.Link, {
45
+ onClick: () => setShowVars(true),
46
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
47
+ icon: _freeSolidSvgIcons.faSearch,
48
+ className: "me-2"
49
+ }), "Search Genes"]
50
+ })
51
+ }), showCtrlsBtn && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Nav.Item, {
52
+ className: "me-2",
53
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Nav.Link, {
54
+ onClick: () => setShowControls(true),
55
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
56
+ icon: _freeSolidSvgIcons.faSliders,
57
+ className: "me-2"
58
+ }), "Controls"]
59
+ })
60
+ })]
61
+ })
62
+ })]
63
+ })
64
+ });
56
65
  };
57
66
  exports.Toolbar = Toolbar;
58
67
  const ObsPlotlyToolbar = _ref2 => {
@@ -60,7 +69,7 @@ const ObsPlotlyToolbar = _ref2 => {
60
69
  onClick
61
70
  } = _ref2;
62
71
  return {
63
- name: "Categories",
72
+ name: 'Categories',
64
73
  icon: {
65
74
  width: 512,
66
75
  height: 512,
@@ -75,7 +84,7 @@ const VarPlotlyToolbar = _ref3 => {
75
84
  onClick
76
85
  } = _ref3;
77
86
  return {
78
- name: "Features",
87
+ name: 'Features',
79
88
  icon: {
80
89
  width: 512,
81
90
  height: 512,
@@ -90,7 +99,7 @@ const ControlsPlotlyToolbar = _ref4 => {
90
99
  onClick
91
100
  } = _ref4;
92
101
  return {
93
- name: "Controls",
102
+ name: 'Controls',
94
103
  icon: {
95
104
  width: 512,
96
105
  height: 512,
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.SelectionItem = SelectionItem;
7
7
  exports.VarDiseaseInfo = VarDiseaseInfo;
8
8
  exports.VarItem = VarItem;
9
- var _react = _interopRequireWildcard(require("react"));
9
+ var _react = require("react");
10
10
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
11
11
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
12
12
  var _iconsMaterial = require("@mui/icons-material");
@@ -18,9 +18,8 @@ var _FilterContext = require("../../context/FilterContext");
18
18
  var _SettingsContext = require("../../context/SettingsContext");
19
19
  var _Histogram = require("../../utils/Histogram");
20
20
  var _requests = require("../../utils/requests");
21
+ var _jsxRuntime = require("react/jsx-runtime");
21
22
  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
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
24
23
  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; }
25
24
  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; }
26
25
  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; }
@@ -30,7 +29,7 @@ function VarHistogram(_ref) {
30
29
  let {
31
30
  item
32
31
  } = _ref;
33
- const ENDPOINT = "var/histograms";
32
+ const ENDPOINT = 'var/histograms';
34
33
  const dataset = (0, _DatasetContext.useDataset)();
35
34
  const settings = (0, _SettingsContext.useSettings)();
36
35
  const {
@@ -58,42 +57,61 @@ function VarHistogram(_ref) {
58
57
  } = (0, _requests.useDebouncedFetch)(ENDPOINT, params, {
59
58
  refetchOnMount: false
60
59
  });
61
- return !serverError && /*#__PURE__*/_react.default.createElement(_Histogram.Histogram, {
60
+ return !serverError && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Histogram.Histogram, {
62
61
  data: fetchedData,
63
62
  isPending: isPending,
64
63
  altColor: isSliced
65
64
  });
66
65
  }
67
66
  function VarDiseaseInfoItem(item) {
68
- return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
69
- key: item.disease_id,
70
- className: "feature-disease-info"
71
- }, /*#__PURE__*/_react.default.createElement("button", {
72
- type: "button",
73
- className: "btn btn-link disease-link"
74
- }, item.disease_name), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Table, {
75
- striped: true,
76
- size: "sm",
77
- responsive: true
78
- }, /*#__PURE__*/_react.default.createElement("tbody", null, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", null, "Confidence"), /*#__PURE__*/_react.default.createElement("td", null, item.confidence || "unknown")), /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", null, "Organ", item.organs.length > 1 ? "s" : ""), /*#__PURE__*/_react.default.createElement("td", null, item.organs.map(o => o.name).join(", "))), !_lodash.default.isEmpty(item.metadata) && _lodash.default.map(item.metadata, (value, key) => {
79
- if (value !== null && value !== undefined) {
80
- return /*#__PURE__*/_react.default.createElement("tr", {
81
- key: key
82
- }, /*#__PURE__*/_react.default.createElement("td", null, _lodash.default.upperFirst(key)), /*#__PURE__*/_react.default.createElement("td", null, value));
83
- }
84
- }))));
67
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.ListGroup.Item, {
68
+ className: "feature-disease-info",
69
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
70
+ type: "button",
71
+ className: "btn btn-link disease-link",
72
+ children: item.disease_name
73
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Table, {
74
+ striped: true,
75
+ size: "sm",
76
+ responsive: true,
77
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("tbody", {
78
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("tr", {
79
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
80
+ children: "Confidence"
81
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
82
+ children: item.confidence || 'unknown'
83
+ })]
84
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("tr", {
85
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("td", {
86
+ children: ["Organ", item.organs.length > 1 ? 's' : '']
87
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
88
+ children: item.organs.map(o => o.name).join(', ')
89
+ })]
90
+ }), !_lodash.default.isEmpty(item.metadata) && _lodash.default.map(item.metadata, (value, key) => {
91
+ if (value !== null && value !== undefined) {
92
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("tr", {
93
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
94
+ children: _lodash.default.upperFirst(key)
95
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
96
+ children: value
97
+ })]
98
+ }, key);
99
+ }
100
+ })]
101
+ })
102
+ })]
103
+ }, item.disease_id);
85
104
  }
86
105
  function VarDiseaseInfo(_ref2) {
87
106
  let {
88
107
  data
89
108
  } = _ref2;
90
- return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, {
91
- className: "feature-disease-info-list"
92
- }, data.map(item => {
93
- return /*#__PURE__*/_react.default.createElement(VarDiseaseInfoItem, _extends({
94
- key: item.disease_id
95
- }, item));
96
- }));
109
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup, {
110
+ className: "feature-disease-info-list",
111
+ children: data.map(item => {
112
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(VarDiseaseInfoItem, _objectSpread({}, item), item.disease_id);
113
+ })
114
+ });
97
115
  }
98
116
  function SelectionItem(_ref3) {
99
117
  let {
@@ -105,7 +123,7 @@ function SelectionItem(_ref3) {
105
123
  showRemove = true,
106
124
  isMultiple = false
107
125
  } = _ref3;
108
- const ENDPOINT = "disease/gene";
126
+ const ENDPOINT = 'disease/gene';
109
127
  const [openInfo, setOpenInfo] = (0, _react.useState)(false);
110
128
  const dataset = (0, _DatasetContext.useDataset)();
111
129
  const params = {
@@ -122,70 +140,79 @@ function SelectionItem(_ref3) {
122
140
  enabled: !!dataset.diseaseDatasets.length
123
141
  });
124
142
  const hasDiseaseInfo = !isPending && !serverError && !!(fetchedData !== null && fetchedData !== void 0 && fetchedData.length);
125
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
126
- className: hasDiseaseInfo ? "cursor-pointer" : "",
127
- onClick: () => {
128
- setOpenInfo(o => !o);
129
- }
130
- }, /*#__PURE__*/_react.default.createElement("div", {
131
- className: "d-flex align-items-center"
132
- }, /*#__PURE__*/_react.default.createElement("div", {
133
- className: "var-item-name",
134
- title: item.name
135
- }, item.name), /*#__PURE__*/_react.default.createElement("div", {
136
- className: "ms-auto d-flex align-items-center gap-1"
137
- }, hasDiseaseInfo && /*#__PURE__*/_react.default.createElement(_iconsMaterial.MoreVert, null), /*#__PURE__*/_react.default.createElement(VarHistogram, {
138
- item: item
139
- }), showSetColorEncoding && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
140
- type: "button",
141
- key: item.matrix_index,
142
- variant: isActive ? "primary" : isNotInData ? "outline-secondary" : "outline-primary",
143
- className: "m-0 p-0 px-1",
144
- onClick: e => {
145
- e.stopPropagation();
146
- selectVar();
147
- },
148
- disabled: isNotInData,
149
- title: isNotInData ? "Not present in data" : "Set as color encoding"
150
- }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
151
- icon: _freeSolidSvgIcons.faDroplet
152
- }), isMultiple && /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
153
- icon: _freeSolidSvgIcons.faPlus,
154
- size: "xs",
155
- className: "ps-xs-1"
156
- })), showRemove && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
157
- type: "button",
158
- className: "m-0 p-0 px-1",
159
- variant: "outline-secondary",
160
- title: "Remove from list",
161
- onClick: e => {
162
- e.stopPropagation();
163
- removeVar();
164
- }
165
- }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
166
- icon: _freeSolidSvgIcons.faTrash
167
- }))))), hasDiseaseInfo && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Collapse, {
168
- in: openInfo
169
- }, /*#__PURE__*/_react.default.createElement("div", {
170
- className: "mt-2 var-disease-info-collapse"
171
- }, /*#__PURE__*/_react.default.createElement(VarDiseaseInfo, {
172
- data: fetchedData
173
- }))));
143
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
144
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
145
+ className: hasDiseaseInfo ? 'cursor-pointer' : '',
146
+ onClick: () => {
147
+ setOpenInfo(o => !o);
148
+ },
149
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
150
+ className: "d-flex align-items-center",
151
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
152
+ className: "var-item-name",
153
+ title: item.name,
154
+ children: item.name
155
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
156
+ className: "ms-auto d-flex align-items-center gap-1",
157
+ children: [hasDiseaseInfo && /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.MoreVert, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(VarHistogram, {
158
+ item: item
159
+ }), showSetColorEncoding && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Button, {
160
+ type: "button",
161
+ variant: isActive ? 'primary' : isNotInData ? 'outline-secondary' : 'outline-primary',
162
+ className: "m-0 p-0 px-1",
163
+ onClick: e => {
164
+ e.stopPropagation();
165
+ selectVar();
166
+ },
167
+ disabled: isNotInData,
168
+ title: isNotInData ? 'Not present in data' : 'Set as color encoding',
169
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
170
+ icon: _freeSolidSvgIcons.faDroplet
171
+ }), isMultiple && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
172
+ icon: _freeSolidSvgIcons.faPlus,
173
+ size: "xs",
174
+ className: "ps-xs-1"
175
+ })]
176
+ }, item.matrix_index), showRemove && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
177
+ type: "button",
178
+ className: "m-0 p-0 px-1",
179
+ variant: "outline-secondary",
180
+ title: "Remove from list",
181
+ onClick: e => {
182
+ e.stopPropagation();
183
+ removeVar();
184
+ },
185
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
186
+ icon: _freeSolidSvgIcons.faTrash
187
+ })
188
+ })]
189
+ })]
190
+ })
191
+ }), hasDiseaseInfo && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Collapse, {
192
+ in: openInfo,
193
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
194
+ className: "mt-2 var-disease-info-collapse",
195
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(VarDiseaseInfo, {
196
+ data: fetchedData
197
+ })
198
+ })
199
+ })]
200
+ });
174
201
  }
175
202
  const select = (dispatch, mode, item) => {
176
203
  if (mode === _constants.SELECTION_MODES.SINGLE) {
177
204
  dispatch({
178
- type: "select.var",
205
+ type: 'select.var',
179
206
  var: item
180
207
  });
181
208
  } else if (mode === _constants.SELECTION_MODES.MULTIPLE) {
182
209
  dispatch({
183
- type: "select.multivar",
210
+ type: 'select.multivar',
184
211
  var: item
185
212
  });
186
213
  }
187
214
  dispatch({
188
- type: "set.colorEncoding",
215
+ type: 'set.colorEncoding',
189
216
  value: _constants.COLOR_ENCODINGS.VAR
190
217
  });
191
218
  };
@@ -201,19 +228,19 @@ function VarItem(_ref4) {
201
228
  const selectVar = () => debounceSelect(dispatch, mode, item);
202
229
  const removeVar = () => {
203
230
  dispatch({
204
- type: "remove.var",
231
+ type: 'remove.var',
205
232
  var: item
206
233
  });
207
234
  if (mode === _constants.SELECTION_MODES.SINGLE) {
208
235
  if (active === item.matrix_index) {
209
236
  dispatch({
210
- type: "reset.var"
237
+ type: 'reset.var'
211
238
  });
212
239
  }
213
240
  } else if (mode === _constants.SELECTION_MODES.MULTIPLE) {
214
241
  if (active.includes(item.matrix_index)) {
215
242
  dispatch({
216
- type: "deselect.multivar",
243
+ type: 'deselect.multivar',
217
244
  var: item
218
245
  });
219
246
  }
@@ -221,19 +248,19 @@ function VarItem(_ref4) {
221
248
  };
222
249
  const toggleVar = () => {
223
250
  dispatch({
224
- type: "toggle.multivar",
251
+ type: 'toggle.multivar',
225
252
  var: item
226
253
  });
227
254
  };
228
255
  if (item && mode === _constants.SELECTION_MODES.SINGLE) {
229
- return /*#__PURE__*/_react.default.createElement(SelectionItem, {
256
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(SelectionItem, {
230
257
  item: item,
231
258
  isActive: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR && active === item.matrix_index,
232
259
  selectVar: selectVar,
233
260
  removeVar: removeVar
234
261
  });
235
262
  } else if (mode === _constants.SELECTION_MODES.MULTIPLE) {
236
- return /*#__PURE__*/_react.default.createElement(SelectionItem, {
263
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(SelectionItem, {
237
264
  item: item,
238
265
  isActive: item.matrix_index !== -1 && _lodash.default.includes(active, item.matrix_index),
239
266
  selectVar: toggleVar,