@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,31 +3,41 @@ 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, { useState } from "react";
7
- import CloseIcon from "@mui/icons-material/Close";
8
- import SearchIcon from "@mui/icons-material/Search";
9
- import { Button, Form, FormGroup, InputGroup, Modal } from "react-bootstrap";
10
- import Col from "react-bootstrap/Col";
11
- import Container from "react-bootstrap/Container";
12
- import Nav from "react-bootstrap/Nav";
13
- import Row from "react-bootstrap/Row";
14
- import Tab from "react-bootstrap/Tab";
15
- import { DiseaseInfo, VarInfo } from "./SearchInfo";
16
- import { DiseasesSearchResults, VarSearchResults } from "./SearchResults";
17
- import { COLOR_ENCODINGS } from "../../constants/constants";
18
- function onVarSelect(dispatch, item) {
6
+ import { useState } from 'react';
7
+ import CloseIcon from '@mui/icons-material/Close';
8
+ import SearchIcon from '@mui/icons-material/Search';
9
+ import _ from 'lodash';
10
+ import { Button, Form, FormGroup, InputGroup, Modal } from 'react-bootstrap';
11
+ import Col from 'react-bootstrap/Col';
12
+ import Container from 'react-bootstrap/Container';
13
+ import Nav from 'react-bootstrap/Nav';
14
+ import Row from 'react-bootstrap/Row';
15
+ import Tab from 'react-bootstrap/Tab';
16
+ import { DiseaseInfo, VarInfo } from './SearchInfo';
17
+ import { DiseasesSearchResults, VarSearchResults } from './SearchResults';
18
+ import { COLOR_ENCODINGS } from '../../constants/constants';
19
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
+ const select = (dispatch, item) => {
19
21
  dispatch({
20
- type: "select.var",
22
+ type: 'select.var',
21
23
  var: item
22
24
  });
23
25
  dispatch({
24
- type: "select.multivar",
26
+ type: 'select.multivar',
25
27
  var: item
26
28
  });
27
29
  dispatch({
28
- type: "set.colorEncoding",
30
+ type: 'set.colorEncoding',
29
31
  value: COLOR_ENCODINGS.VAR
30
32
  });
33
+ };
34
+ const debounceSelect = _.debounce(select, 500);
35
+ function onVarSelect(dispatch, item) {
36
+ dispatch({
37
+ type: 'add.var',
38
+ var: item
39
+ });
40
+ debounceSelect(dispatch, item);
31
41
  }
32
42
  function addVarSet(dispatch, _ref) {
33
43
  let {
@@ -35,7 +45,7 @@ function addVarSet(dispatch, _ref) {
35
45
  vars
36
46
  } = _ref;
37
47
  dispatch({
38
- type: "add.var",
48
+ type: 'add.var',
39
49
  var: {
40
50
  name: name,
41
51
  vars: vars,
@@ -44,8 +54,8 @@ function addVarSet(dispatch, _ref) {
44
54
  });
45
55
  }
46
56
  const FEATURE_TYPE = {
47
- VAR: "var",
48
- DISEASE: "disease"
57
+ VAR: 'var',
58
+ DISEASE: 'disease'
49
59
  };
50
60
  export function SearchModal(_ref2) {
51
61
  let {
@@ -58,130 +68,177 @@ export function SearchModal(_ref2) {
58
68
  searchVar,
59
69
  searchDiseases
60
70
  } = _ref2;
61
- const [tab, setTab] = useState("var");
71
+ const [tab, setTab] = useState('var');
62
72
  const [selectedResult, setSelectedResult] = useState({
63
73
  var: null,
64
74
  disease: null
65
75
  });
66
76
  const [varResultsLength, setVarResultsLength] = useState(null);
67
77
  const [diseaseResultsLength, setDiseaseResultsLength] = useState(null);
68
- return /*#__PURE__*/React.createElement(Modal, {
78
+ return /*#__PURE__*/_jsxs(Modal, {
69
79
  show: show,
70
80
  onHide: handleClose,
71
- size: "xl"
72
- }, /*#__PURE__*/React.createElement(Modal.Header, {
73
- className: "bg-primary"
74
- }, /*#__PURE__*/React.createElement(Container, {
75
- className: "gx-0"
76
- }, /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(Col, {
77
- xs: 12
78
- }, /*#__PURE__*/React.createElement(Form, {
79
- onSubmit: e => {
80
- e.preventDefault();
81
- }
82
- }, /*#__PURE__*/React.createElement(FormGroup, null, /*#__PURE__*/React.createElement("div", {
83
- className: "d-flex align-items-center"
84
- }, /*#__PURE__*/React.createElement(InputGroup, null, /*#__PURE__*/React.createElement(InputGroup.Text, null, /*#__PURE__*/React.createElement(SearchIcon, null)), /*#__PURE__*/React.createElement(Form.Control, {
85
- autoFocus: true,
86
- type: "text",
87
- placeholder: "Search " + displayText,
88
- value: text,
89
- onChange: e => {
90
- setText(e.target.value);
91
- setSelectedResult({
92
- var: null,
93
- disease: null
94
- });
95
- setVarResultsLength(null);
96
- setDiseaseResultsLength(null);
97
- }
98
- }), /*#__PURE__*/React.createElement(Button, {
99
- variant: "light",
100
- onClick: handleClose
101
- }, /*#__PURE__*/React.createElement(CloseIcon, null)))))))))), /*#__PURE__*/React.createElement(Modal.Body, {
102
- className: "p-0"
103
- }, /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(Col, {
104
- xs: 12,
105
- md: 8
106
- }, /*#__PURE__*/React.createElement(Tab.Container, {
107
- activeKey: tab,
108
- onSelect: k => setTab(k)
109
- }, /*#__PURE__*/React.createElement(Row, {
110
- className: "w-100"
111
- }, /*#__PURE__*/React.createElement(Col, {
112
- sm: 3,
113
- className: "py-3 border-end"
114
- }, /*#__PURE__*/React.createElement(Nav, {
115
- variant: "pills",
116
- className: "flex-column"
117
- }, searchVar && /*#__PURE__*/React.createElement(Nav.Item, null, /*#__PURE__*/React.createElement(Nav.Link, {
118
- eventKey: FEATURE_TYPE.VAR
119
- }, "Genes", " ", !!varResultsLength && "(".concat(varResultsLength, ")"))), searchDiseases && /*#__PURE__*/React.createElement(Nav.Item, null, /*#__PURE__*/React.createElement(Nav.Link, {
120
- eventKey: FEATURE_TYPE.DISEASE
121
- }, "Diseases", " ", !!diseaseResultsLength && "(".concat(diseaseResultsLength, ")"))))), /*#__PURE__*/React.createElement(Col, {
122
- sm: 9,
123
- className: "py-3"
124
- }, /*#__PURE__*/React.createElement(Tab.Content, null, searchVar && /*#__PURE__*/React.createElement(Tab.Pane, {
125
- eventKey: FEATURE_TYPE.VAR
126
- }, /*#__PURE__*/React.createElement(VarSearchResults, {
127
- text: text,
128
- handleSelect: handleSelect,
129
- selectedResult: selectedResult.var,
130
- setSelectedResult: item => setSelectedResult(prev => {
131
- return _objectSpread(_objectSpread({}, prev), {}, {
132
- var: item
133
- });
134
- }),
135
- setResultsLength: setVarResultsLength
136
- })), searchDiseases && /*#__PURE__*/React.createElement(Tab.Pane, {
137
- eventKey: FEATURE_TYPE.DISEASE
138
- }, /*#__PURE__*/React.createElement(DiseasesSearchResults, {
139
- text: text,
140
- selectedResult: selectedResult.disease,
141
- setSelectedResult: item => setSelectedResult(prev => {
142
- return _objectSpread(_objectSpread({}, prev), {}, {
143
- disease: item
144
- });
145
- }),
146
- setResultsLength: setDiseaseResultsLength
147
- }))))))), /*#__PURE__*/React.createElement(Col, {
148
- xs: 12,
149
- md: 4,
150
- className: "bg-light p-3 search-modal-info"
151
- }, selectedResult[tab] ? tab === FEATURE_TYPE.DISEASE ? /*#__PURE__*/React.createElement(DiseaseInfo, {
152
- disease: selectedResult.disease,
153
- handleSelect: handleSelect,
154
- addVarSet: addVarSet
155
- }) : /*#__PURE__*/React.createElement(VarInfo, {
156
- varItem: selectedResult.var
157
- }) : /*#__PURE__*/React.createElement("div", {
158
- className: "text-muted"
159
- }, "No result selected"))))));
81
+ size: "xl",
82
+ children: [/*#__PURE__*/_jsx(Modal.Header, {
83
+ className: "bg-primary",
84
+ children: /*#__PURE__*/_jsx(Container, {
85
+ className: "gx-0",
86
+ children: /*#__PURE__*/_jsx(Row, {
87
+ children: /*#__PURE__*/_jsx(Col, {
88
+ xs: 12,
89
+ children: /*#__PURE__*/_jsx(Form, {
90
+ onSubmit: e => {
91
+ e.preventDefault();
92
+ },
93
+ children: /*#__PURE__*/_jsx(FormGroup, {
94
+ children: /*#__PURE__*/_jsx("div", {
95
+ className: "d-flex align-items-center",
96
+ children: /*#__PURE__*/_jsxs(InputGroup, {
97
+ children: [/*#__PURE__*/_jsx(InputGroup.Text, {
98
+ children: /*#__PURE__*/_jsx(SearchIcon, {})
99
+ }), /*#__PURE__*/_jsx(Form.Control, {
100
+ autoFocus: true,
101
+ type: "text",
102
+ placeholder: 'Search ' + displayText,
103
+ value: text,
104
+ onChange: e => {
105
+ setText(e.target.value);
106
+ setSelectedResult({
107
+ var: null,
108
+ disease: null
109
+ });
110
+ setVarResultsLength(null);
111
+ setDiseaseResultsLength(null);
112
+ }
113
+ }), /*#__PURE__*/_jsx(Button, {
114
+ variant: "light",
115
+ onClick: handleClose,
116
+ children: /*#__PURE__*/_jsx(CloseIcon, {})
117
+ })]
118
+ })
119
+ })
120
+ })
121
+ })
122
+ })
123
+ })
124
+ })
125
+ }), /*#__PURE__*/_jsx(Modal.Body, {
126
+ className: "p-0",
127
+ children: /*#__PURE__*/_jsx(Container, {
128
+ children: /*#__PURE__*/_jsxs(Row, {
129
+ children: [/*#__PURE__*/_jsx(Col, {
130
+ xs: 12,
131
+ md: 8,
132
+ children: /*#__PURE__*/_jsx(Tab.Container, {
133
+ activeKey: tab,
134
+ onSelect: k => setTab(k),
135
+ children: /*#__PURE__*/_jsxs(Row, {
136
+ className: "w-100",
137
+ children: [/*#__PURE__*/_jsx(Col, {
138
+ sm: 3,
139
+ className: "py-3 border-end",
140
+ children: /*#__PURE__*/_jsxs(Nav, {
141
+ variant: "pills",
142
+ className: "flex-column",
143
+ children: [searchVar && /*#__PURE__*/_jsx(Nav.Item, {
144
+ children: /*#__PURE__*/_jsxs(Nav.Link, {
145
+ eventKey: FEATURE_TYPE.VAR,
146
+ children: ["Genes", ' ', !!varResultsLength && "(".concat(varResultsLength, ")")]
147
+ })
148
+ }), searchDiseases && /*#__PURE__*/_jsx(Nav.Item, {
149
+ children: /*#__PURE__*/_jsxs(Nav.Link, {
150
+ eventKey: FEATURE_TYPE.DISEASE,
151
+ children: ["Diseases", ' ', !!diseaseResultsLength && "(".concat(diseaseResultsLength, ")")]
152
+ })
153
+ })]
154
+ })
155
+ }), /*#__PURE__*/_jsx(Col, {
156
+ sm: 9,
157
+ className: "py-3",
158
+ children: /*#__PURE__*/_jsxs(Tab.Content, {
159
+ children: [searchVar && /*#__PURE__*/_jsx(Tab.Pane, {
160
+ eventKey: FEATURE_TYPE.VAR,
161
+ children: /*#__PURE__*/_jsx(VarSearchResults, {
162
+ text: text,
163
+ handleSelect: handleSelect,
164
+ selectedResult: selectedResult.var,
165
+ setSelectedResult: item => setSelectedResult(prev => {
166
+ return _objectSpread(_objectSpread({}, prev), {}, {
167
+ var: item
168
+ });
169
+ }),
170
+ setResultsLength: setVarResultsLength
171
+ })
172
+ }), searchDiseases && /*#__PURE__*/_jsx(Tab.Pane, {
173
+ eventKey: FEATURE_TYPE.DISEASE,
174
+ children: /*#__PURE__*/_jsx(DiseasesSearchResults, {
175
+ text: text,
176
+ selectedResult: selectedResult.disease,
177
+ setSelectedResult: item => setSelectedResult(prev => {
178
+ return _objectSpread(_objectSpread({}, prev), {}, {
179
+ disease: item
180
+ });
181
+ }),
182
+ setResultsLength: setDiseaseResultsLength
183
+ })
184
+ })]
185
+ })
186
+ })]
187
+ })
188
+ })
189
+ }), /*#__PURE__*/_jsx(Col, {
190
+ xs: 12,
191
+ md: 4,
192
+ className: "bg-light p-3 search-modal-info",
193
+ children: selectedResult[tab] ? tab === FEATURE_TYPE.DISEASE ? /*#__PURE__*/_jsx(DiseaseInfo, {
194
+ disease: selectedResult.disease,
195
+ handleSelect: handleSelect,
196
+ addVarSet: addVarSet
197
+ }) : /*#__PURE__*/_jsx(VarInfo, {
198
+ varItem: selectedResult.var
199
+ }) : /*#__PURE__*/_jsx("div", {
200
+ className: "text-muted",
201
+ children: "No result selected"
202
+ })
203
+ })]
204
+ })
205
+ })
206
+ })]
207
+ });
160
208
  }
161
209
  export function SearchBar(_ref3) {
162
210
  let {
163
211
  searchVar = true,
164
212
  searchDiseases = false
165
213
  } = _ref3;
166
- const [text, setText] = useState("");
167
- const displayText = [...(searchVar ? ["features"] : []), ...(searchDiseases ? ["diseases"] : [])].join(" and ");
214
+ const [text, setText] = useState('');
215
+ const displayText = [...(searchVar ? ['features'] : []), ...(searchDiseases ? ['diseases'] : [])].join(' and ');
168
216
  const [showModal, setShowModal] = useState(false);
169
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Form, {
170
- onSubmit: e => {
171
- e.preventDefault();
172
- }
173
- }, /*#__PURE__*/React.createElement(FormGroup, null, /*#__PURE__*/React.createElement(InputGroup, null, /*#__PURE__*/React.createElement(InputGroup.Text, null, /*#__PURE__*/React.createElement(SearchIcon, null)), /*#__PURE__*/React.createElement(Form.Control, {
174
- onClick: () => setShowModal(true),
175
- type: "text",
176
- placeholder: "Search " + displayText,
177
- defaultValue: text
178
- })))), /*#__PURE__*/React.createElement(SearchModal, {
179
- show: showModal,
180
- text: text,
181
- setText: setText,
182
- displayText: displayText,
183
- searchVar: searchVar,
184
- searchDiseases: searchDiseases,
185
- handleClose: () => setShowModal(false)
186
- }));
217
+ return /*#__PURE__*/_jsxs("div", {
218
+ children: [/*#__PURE__*/_jsx(Form, {
219
+ onSubmit: e => {
220
+ e.preventDefault();
221
+ },
222
+ children: /*#__PURE__*/_jsx(FormGroup, {
223
+ children: /*#__PURE__*/_jsxs(InputGroup, {
224
+ children: [/*#__PURE__*/_jsx(InputGroup.Text, {
225
+ children: /*#__PURE__*/_jsx(SearchIcon, {})
226
+ }), /*#__PURE__*/_jsx(Form.Control, {
227
+ onClick: () => setShowModal(true),
228
+ type: "text",
229
+ placeholder: 'Search ' + displayText,
230
+ defaultValue: text
231
+ })]
232
+ })
233
+ })
234
+ }), /*#__PURE__*/_jsx(SearchModal, {
235
+ show: showModal,
236
+ text: text,
237
+ setText: setText,
238
+ displayText: displayText,
239
+ searchVar: searchVar,
240
+ searchDiseases: searchDiseases,
241
+ handleClose: () => setShowModal(false)
242
+ })]
243
+ });
187
244
  }
@@ -3,22 +3,23 @@ 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, { useState, useEffect } 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 { VAR_SORT } from "../../constants/constants";
12
- import { useDataset } from "../../context/DatasetContext";
13
- import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
14
- import { useFetch } from "../../utils/requests";
15
- import { VarDiseaseInfo } from "../var-list/VarItem";
16
- import { sortMeans, useVarMean } from "../var-list/VarList";
6
+ import { useState, useEffect } 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 { VAR_SORT } from '../../constants/constants';
12
+ import { useDataset } from '../../context/DatasetContext';
13
+ import { useSettings, useSettingsDispatch } from '../../context/SettingsContext';
14
+ import { useFetch } from '../../utils/requests';
15
+ import { VarDiseaseInfo } from '../var-list/VarItem';
16
+ import { sortMeans, useVarMean } from '../var-list/VarList';
17
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
17
18
  export function VarInfo(_ref) {
18
19
  let {
19
20
  varItem
20
21
  } = _ref;
21
- const ENDPOINT = "disease/gene";
22
+ const ENDPOINT = 'disease/gene';
22
23
  const dataset = useDataset();
23
24
  const [params, setParams] = useState({
24
25
  geneName: varItem.name,
@@ -40,9 +41,19 @@ export function VarInfo(_ref) {
40
41
  enabled: !!dataset.diseaseDatasets.length
41
42
  });
42
43
  const hasDiseaseInfo = !isPending && !serverError && !!(fetchedData !== null && fetchedData !== void 0 && fetchedData.length);
43
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h5", null, varItem.name), !!dataset.diseaseDatasets.length && isPending && /*#__PURE__*/React.createElement("p", null, "Loading..."), hasDiseaseInfo && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h6", null, "Associated diseases"), /*#__PURE__*/React.createElement(VarDiseaseInfo, {
44
- data: fetchedData
45
- })));
44
+ return /*#__PURE__*/_jsxs("div", {
45
+ children: [/*#__PURE__*/_jsx("h5", {
46
+ children: varItem.name
47
+ }), !!dataset.diseaseDatasets.length && isPending && /*#__PURE__*/_jsx("p", {
48
+ children: "Loading..."
49
+ }), hasDiseaseInfo && /*#__PURE__*/_jsxs(_Fragment, {
50
+ children: [/*#__PURE__*/_jsx("h6", {
51
+ children: "Associated diseases"
52
+ }), /*#__PURE__*/_jsx(VarDiseaseInfo, {
53
+ data: fetchedData
54
+ })]
55
+ })]
56
+ });
46
57
  }
47
58
  export function DiseaseInfo(_ref2) {
48
59
  let {
@@ -50,7 +61,7 @@ export function DiseaseInfo(_ref2) {
50
61
  handleSelect,
51
62
  addVarSet
52
63
  } = _ref2;
53
- const ENDPOINT = "disease/genes";
64
+ const ENDPOINT = 'disease/genes';
54
65
  const dataset = useDataset();
55
66
  const settings = useSettings();
56
67
  const dispatch = useSettingsDispatch();
@@ -87,55 +98,71 @@ export function DiseaseInfo(_ref2) {
87
98
  }, settings.varSort.disease.sortOrder));
88
99
  }
89
100
  } else if (settings.varSort.disease.sort === VAR_SORT.NAME) {
90
- setSortedDiseaseVars(_.orderBy(diseaseVars, "name", settings.varSort.disease.sortOrder));
101
+ setSortedDiseaseVars(_.orderBy(diseaseVars, 'name', settings.varSort.disease.sortOrder));
91
102
  } else {
92
103
  setSortedDiseaseVars(diseaseVars);
93
104
  }
94
105
  }, [settings.varSort.disease.sort, settings.varSort.disease.sortOrder, diseaseVars, varMeans.fetchedData, varMeans.isPending, varMeans.serverError]);
95
106
  const diseaseVarList = _.map(sortedDiseaseVars, v => {
96
- return /*#__PURE__*/React.createElement(ListGroup.Item, {
97
- key: v.gene_id
98
- }, /*#__PURE__*/React.createElement("div", {
99
- className: "d-flex justify-content-between align-items-center w-100"
100
- }, v.name, /*#__PURE__*/React.createElement("div", {
101
- className: "d-flex align-items-center gap-1"
102
- }, /*#__PURE__*/React.createElement(Button, {
103
- type: "button",
104
- className: "m-0 p-0 px-1",
105
- variant: "outline-secondary",
106
- title: "Add to list",
107
- onClick: () => {
108
- handleSelect(dispatch, {
109
- name: v.name,
110
- index: v.index,
111
- matrix_index: v.matrix_index
112
- });
113
- }
114
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
115
- icon: faPlus
116
- })))));
107
+ return /*#__PURE__*/_jsx(ListGroup.Item, {
108
+ children: /*#__PURE__*/_jsxs("div", {
109
+ className: "d-flex justify-content-between align-items-center w-100",
110
+ children: [v.name, /*#__PURE__*/_jsx("div", {
111
+ className: "d-flex align-items-center gap-1",
112
+ children: /*#__PURE__*/_jsx(Button, {
113
+ type: "button",
114
+ className: "m-0 p-0 px-1",
115
+ variant: "outline-secondary",
116
+ title: "Add to list",
117
+ onClick: () => {
118
+ handleSelect(dispatch, {
119
+ name: v.name,
120
+ index: v.index,
121
+ matrix_index: v.matrix_index
122
+ });
123
+ },
124
+ children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
125
+ icon: faPlus
126
+ })
127
+ })
128
+ })]
129
+ })
130
+ }, v.gene_id);
117
131
  });
118
132
  const isPending = diseaseData.isPending || varMeans.isPending && settings.varSort.disease.sort === VAR_SORT.MATRIX;
119
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h5", null, disease.disease_name), /*#__PURE__*/React.createElement("h6", null, "Implicated genes"), isPending ? /*#__PURE__*/React.createElement("p", null, "Loading...") : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
120
- className: "d-flex justify-content-end mb-2"
121
- }, /*#__PURE__*/React.createElement(Button, {
122
- size: "sm",
123
- title: "Add all as a set",
124
- onClick: () => {
125
- addVarSet(dispatch, {
126
- name: disease.disease_name,
127
- vars: _.map(diseaseVars, v => {
128
- return {
129
- index: v.index,
130
- name: v.name,
131
- matrix_index: v.matrix_index
132
- };
133
+ return /*#__PURE__*/_jsxs("div", {
134
+ children: [/*#__PURE__*/_jsx("h5", {
135
+ children: disease.disease_name
136
+ }), /*#__PURE__*/_jsx("h6", {
137
+ children: "Implicated genes"
138
+ }), isPending ? /*#__PURE__*/_jsx("p", {
139
+ children: "Loading..."
140
+ }) : /*#__PURE__*/_jsxs(_Fragment, {
141
+ children: [/*#__PURE__*/_jsx("div", {
142
+ className: "d-flex justify-content-end mb-2",
143
+ children: /*#__PURE__*/_jsxs(Button, {
144
+ size: "sm",
145
+ title: "Add all as a set",
146
+ onClick: () => {
147
+ addVarSet(dispatch, {
148
+ name: disease.disease_name,
149
+ vars: _.map(diseaseVars, v => {
150
+ return {
151
+ index: v.index,
152
+ name: v.name,
153
+ matrix_index: v.matrix_index
154
+ };
155
+ })
156
+ });
157
+ },
158
+ children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
159
+ icon: faPlus
160
+ }), " Add all as a set"]
133
161
  })
134
- });
135
- }
136
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
137
- icon: faPlus
138
- }), " Add all as a set")), /*#__PURE__*/React.createElement(ListGroup, {
139
- className: "overflow-scroll"
140
- }, diseaseVarList)));
162
+ }), /*#__PURE__*/_jsx(ListGroup, {
163
+ className: "overflow-scroll",
164
+ children: diseaseVarList
165
+ })]
166
+ })]
167
+ });
141
168
  }