@haniffalab/cherita-react 1.3.0 → 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 (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
@@ -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,21 +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";
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";
16
18
  export function VarInfo(_ref) {
17
19
  let {
18
20
  varItem
19
21
  } = _ref;
20
- const ENDPOINT = "disease/gene";
22
+ const ENDPOINT = 'disease/gene';
21
23
  const dataset = useDataset();
22
24
  const [params, setParams] = useState({
23
25
  geneName: varItem.name,
@@ -39,50 +41,27 @@ export function VarInfo(_ref) {
39
41
  enabled: !!dataset.diseaseDatasets.length
40
42
  });
41
43
  const hasDiseaseInfo = !isPending && !serverError && !!(fetchedData !== null && fetchedData !== void 0 && fetchedData.length);
42
- 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, {
43
- data: fetchedData
44
- })));
45
- }
46
- const useVarMean = function (varKeys) {
47
- let enabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
48
- const ENDPOINT = "matrix/mean";
49
- const dataset = useDataset();
50
- const [params, setParams] = useState({
51
- url: dataset.url,
52
- varKeys: _.map(varKeys, v => v.isSet ? {
53
- name: v.name,
54
- indices: v.vars.map(v => v.index)
55
- } : v.index),
56
- // obsIndices:
57
- varNamesCol: dataset.varNamesCol
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
+ })]
58
56
  });
59
- useEffect(() => {
60
- setParams(p => {
61
- return _objectSpread(_objectSpread({}, p), {}, {
62
- varKeys: _.map(varKeys, v => v.isSet ? {
63
- name: v.name,
64
- indices: v.vars.map(v => v.index)
65
- } : v.index)
66
- });
67
- });
68
- }, [varKeys]);
69
- return useFetch(ENDPOINT, params, {
70
- enabled: enabled,
71
- refetchOnMount: false
72
- });
73
- };
74
-
75
- // ensure nulls are lowest values
76
- const sortMeans = (i, means) => {
77
- return means[i.name] || _.min(_.values(means)) - 1;
78
- };
57
+ }
79
58
  export function DiseaseInfo(_ref2) {
80
59
  let {
81
60
  disease,
82
61
  handleSelect,
83
62
  addVarSet
84
63
  } = _ref2;
85
- const ENDPOINT = "disease/genes";
64
+ const ENDPOINT = 'disease/genes';
86
65
  const dataset = useDataset();
87
66
  const settings = useSettings();
88
67
  const dispatch = useSettingsDispatch();
@@ -119,55 +98,71 @@ export function DiseaseInfo(_ref2) {
119
98
  }, settings.varSort.disease.sortOrder));
120
99
  }
121
100
  } else if (settings.varSort.disease.sort === VAR_SORT.NAME) {
122
- setSortedDiseaseVars(_.orderBy(diseaseVars, "name", settings.varSort.disease.sortOrder));
101
+ setSortedDiseaseVars(_.orderBy(diseaseVars, 'name', settings.varSort.disease.sortOrder));
123
102
  } else {
124
103
  setSortedDiseaseVars(diseaseVars);
125
104
  }
126
105
  }, [settings.varSort.disease.sort, settings.varSort.disease.sortOrder, diseaseVars, varMeans.fetchedData, varMeans.isPending, varMeans.serverError]);
127
106
  const diseaseVarList = _.map(sortedDiseaseVars, v => {
128
- return /*#__PURE__*/React.createElement(ListGroup.Item, {
129
- key: v.gene_id
130
- }, /*#__PURE__*/React.createElement("div", {
131
- className: "d-flex justify-content-between align-items-center w-100"
132
- }, v.name, /*#__PURE__*/React.createElement("div", {
133
- className: "d-flex align-items-center gap-1"
134
- }, /*#__PURE__*/React.createElement(Button, {
135
- type: "button",
136
- className: "m-0 p-0 px-1",
137
- variant: "outline-secondary",
138
- title: "Add to list",
139
- onClick: () => {
140
- handleSelect(dispatch, {
141
- name: v.name,
142
- index: v.index,
143
- matrix_index: v.matrix_index
144
- });
145
- }
146
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
147
- icon: faPlus
148
- })))));
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);
149
131
  });
150
132
  const isPending = diseaseData.isPending || varMeans.isPending && settings.varSort.disease.sort === VAR_SORT.MATRIX;
151
- 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", {
152
- className: "d-flex justify-content-end mb-2"
153
- }, /*#__PURE__*/React.createElement(Button, {
154
- size: "sm",
155
- title: "Add all as a set",
156
- onClick: () => {
157
- addVarSet(dispatch, {
158
- name: disease.disease_name,
159
- vars: _.map(diseaseVars, v => {
160
- return {
161
- index: v.index,
162
- name: v.name,
163
- matrix_index: v.matrix_index
164
- };
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"]
165
161
  })
166
- });
167
- }
168
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
169
- icon: faPlus
170
- }), " Add all as a set")), /*#__PURE__*/React.createElement(ListGroup, {
171
- className: "overflow-scroll"
172
- }, diseaseVarList)));
162
+ }), /*#__PURE__*/_jsx(ListGroup, {
163
+ className: "overflow-scroll",
164
+ children: diseaseVarList
165
+ })]
166
+ })]
167
+ });
173
168
  }