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

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 +21 -10
  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
@@ -1,14 +1,15 @@
1
- import React, { useState } from "react";
2
- import { faArrowDown19, faArrowDownAZ, faArrowUp91, faArrowUpZA, faXmark } from "@fortawesome/free-solid-svg-icons";
3
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
4
- import { ToggleButton, ToggleButtonGroup } from "react-bootstrap";
5
- import { VAR_SORT, VAR_SORT_ORDER } from "../../constants/constants";
6
- import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
1
+ import { useState } from 'react';
2
+ import { faArrowDown19, faArrowDownAZ, faArrowUp91, faArrowUpZA, faXmark } from '@fortawesome/free-solid-svg-icons';
3
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
+ import { ToggleButton, ToggleButtonGroup } from 'react-bootstrap';
5
+ import { VAR_SORT, VAR_SORT_ORDER } from '../../constants/constants';
6
+ import { useSettings, useSettingsDispatch } from '../../context/SettingsContext';
7
7
 
8
8
  // @TODO: set option for "var" and "disease"
9
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  export function VarListToolbar(_ref) {
10
11
  let {
11
- varType = "var"
12
+ varType = 'var'
12
13
  } = _ref;
13
14
  const settings = useSettings();
14
15
  const dispatch = useSettingsDispatch();
@@ -19,7 +20,7 @@ export function VarListToolbar(_ref) {
19
20
  if (sort !== sortValue) {
20
21
  setSort(sortValue);
21
22
  dispatch({
22
- type: "set.varSort",
23
+ type: 'set.varSort',
23
24
  var: varType,
24
25
  sort: sortValue,
25
26
  sortOrder: sortOrder
@@ -28,60 +29,65 @@ export function VarListToolbar(_ref) {
28
29
  const newSortOrder = sortOrder === VAR_SORT_ORDER.ASC ? VAR_SORT_ORDER.DESC : VAR_SORT_ORDER.ASC;
29
30
  setSortOrder(newSortOrder);
30
31
  dispatch({
31
- type: "set.varSort",
32
+ type: 'set.varSort',
32
33
  var: varType,
33
34
  sort: sortValue,
34
35
  sortOrder: newSortOrder
35
36
  });
36
37
  }
37
38
  };
38
- return /*#__PURE__*/React.createElement("div", {
39
- className: "d-flex justify-content-end align-items-center mb-2"
40
- }, /*#__PURE__*/React.createElement(ToggleButtonGroup, {
41
- name: "sortfeatures",
42
- "aria-label": "Sort features by",
43
- size: "sm",
44
- type: "radio"
45
- }, /*#__PURE__*/React.createElement(ToggleButton, {
46
- id: VAR_SORT.NAME,
47
- value: VAR_SORT.NAME,
48
- "aria-label": "alphabetical",
49
- title: "Sort alphabetically",
50
- selected: sort === VAR_SORT.NAME,
51
- onChange: () => {
52
- handleSort(VAR_SORT.NAME, nameSortOrder, setNameSortOrder);
53
- }
54
- }, nameSortOrder === VAR_SORT_ORDER.ASC ? /*#__PURE__*/React.createElement(FontAwesomeIcon, {
55
- icon: faArrowDownAZ
56
- }) : /*#__PURE__*/React.createElement(FontAwesomeIcon, {
57
- icon: faArrowUpZA
58
- })), /*#__PURE__*/React.createElement(ToggleButton, {
59
- id: VAR_SORT.MATRIX,
60
- value: VAR_SORT.MATRIX,
61
- "aria-label": "matrix value",
62
- title: "Sort by matrix value",
63
- selected: sort === VAR_SORT.MATRIX,
64
- onChange: () => {
65
- handleSort(VAR_SORT.MATRIX, matrixSortOrder, setMatrixSortOrder);
66
- }
67
- }, matrixSortOrder === VAR_SORT_ORDER.ASC ? /*#__PURE__*/React.createElement(FontAwesomeIcon, {
68
- icon: faArrowDown19
69
- }) : /*#__PURE__*/React.createElement(FontAwesomeIcon, {
70
- icon: faArrowUp91
71
- })), /*#__PURE__*/React.createElement(ToggleButton, {
72
- id: "none",
73
- value: "none",
74
- "aria-label": "none",
75
- title: "No sorting",
76
- onClick: () => {
77
- setSort(VAR_SORT.NONE);
78
- dispatch({
79
- type: "set.varSort.sort",
80
- var: varType,
81
- sort: VAR_SORT.NONE
82
- });
83
- }
84
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
85
- icon: faXmark
86
- }))));
39
+ return /*#__PURE__*/_jsx("div", {
40
+ className: "d-flex justify-content-end align-items-center mb-2",
41
+ children: /*#__PURE__*/_jsxs(ToggleButtonGroup, {
42
+ name: "sortfeatures",
43
+ "aria-label": "Sort features by",
44
+ size: "sm",
45
+ type: "radio",
46
+ children: [/*#__PURE__*/_jsx(ToggleButton, {
47
+ id: VAR_SORT.NAME,
48
+ value: VAR_SORT.NAME,
49
+ "aria-label": "alphabetical",
50
+ title: "Sort alphabetically",
51
+ selected: sort === VAR_SORT.NAME,
52
+ onChange: () => {
53
+ handleSort(VAR_SORT.NAME, nameSortOrder, setNameSortOrder);
54
+ },
55
+ children: nameSortOrder === VAR_SORT_ORDER.ASC ? /*#__PURE__*/_jsx(FontAwesomeIcon, {
56
+ icon: faArrowDownAZ
57
+ }) : /*#__PURE__*/_jsx(FontAwesomeIcon, {
58
+ icon: faArrowUpZA
59
+ })
60
+ }), /*#__PURE__*/_jsx(ToggleButton, {
61
+ id: VAR_SORT.MATRIX,
62
+ value: VAR_SORT.MATRIX,
63
+ "aria-label": "matrix value",
64
+ title: "Sort by matrix value",
65
+ selected: sort === VAR_SORT.MATRIX,
66
+ onChange: () => {
67
+ handleSort(VAR_SORT.MATRIX, matrixSortOrder, setMatrixSortOrder);
68
+ },
69
+ children: matrixSortOrder === VAR_SORT_ORDER.ASC ? /*#__PURE__*/_jsx(FontAwesomeIcon, {
70
+ icon: faArrowDown19
71
+ }) : /*#__PURE__*/_jsx(FontAwesomeIcon, {
72
+ icon: faArrowUp91
73
+ })
74
+ }), /*#__PURE__*/_jsx(ToggleButton, {
75
+ id: "none",
76
+ value: "none",
77
+ "aria-label": "none",
78
+ title: "No sorting",
79
+ onClick: () => {
80
+ setSort(VAR_SORT.NONE);
81
+ dispatch({
82
+ type: 'set.varSort.sort',
83
+ var: varType,
84
+ sort: VAR_SORT.NONE
85
+ });
86
+ },
87
+ children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
88
+ icon: faXmark
89
+ })
90
+ })]
91
+ })
92
+ });
87
93
  }
@@ -1,18 +1,18 @@
1
- import React, { useState } from "react";
2
- import { faChevronDown, faChevronUp, faCircleInfo, faDroplet, faPlus, faTrash } from "@fortawesome/free-solid-svg-icons";
3
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
4
- import _ from "lodash";
5
- import { Button, Collapse, ListGroup, OverlayTrigger, Tooltip } from "react-bootstrap";
6
- import { SelectionItem } from "./VarItem";
7
- import { COLOR_ENCODINGS, SELECTION_MODES } from "../../constants/constants";
8
- import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
9
- import { SearchModal } from "../search-bar/SearchBar";
1
+ import { useState } from 'react';
2
+ import { faChevronDown, faChevronUp, faCircleInfo, faDroplet, faPlus, faTrash } from '@fortawesome/free-solid-svg-icons';
3
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
+ import _ from 'lodash';
5
+ import { Button, Collapse, ListGroup, OverlayTrigger, Tooltip } from 'react-bootstrap';
6
+ import { SelectionItem } from './VarItem';
7
+ import { COLOR_ENCODINGS, SELECTION_MODES } from '../../constants/constants';
8
+ import { useSettings, useSettingsDispatch } from '../../context/SettingsContext';
9
+ import { SearchModal } from '../search-bar/SearchBar';
10
10
 
11
11
  // @TODO: add button to score genes and plot
12
-
12
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
13
  const addVarToSet = (dispatch, set, v) => {
14
14
  dispatch({
15
- type: "add.varSet.var",
15
+ type: 'add.varSet.var',
16
16
  varSet: set,
17
17
  var: v
18
18
  });
@@ -28,100 +28,119 @@ function SelectionSet(_ref) {
28
28
  } = _ref;
29
29
  const [openSet, setOpenSet] = useState(false);
30
30
  const [showModal, setShowModal] = useState(false);
31
- const [searchText, setSearchText] = useState("");
31
+ const [searchText, setSearchText] = useState('');
32
32
  const varList = set.vars.length ? _.map(set.vars, v => {
33
- return /*#__PURE__*/React.createElement(ListGroup.Item, {
34
- key: v.name
35
- }, /*#__PURE__*/React.createElement(SelectionItem, {
36
- item: v,
37
- showSetColorEncoding: false,
38
- removeVar: () => removeSetVar(v)
39
- }));
40
- }) : /*#__PURE__*/React.createElement(ListGroup.Item, null, /*#__PURE__*/React.createElement("div", {
41
- className: "text-muted"
42
- }, "No features in this set"));
43
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
44
- className: "d-flex justify-content-between cursor-pointer",
45
- onClick: () => {
46
- setOpenSet(o => !o);
47
- }
48
- }, /*#__PURE__*/React.createElement("div", {
49
- className: "d-flex justify-content-between align-items-center w-100"
50
- }, /*#__PURE__*/React.createElement("div", {
51
- className: "ellipsis-text",
52
- title: set.name
53
- }, set.name), /*#__PURE__*/React.createElement("div", {
54
- className: "d-flex align-items-center gap-1"
55
- }, /*#__PURE__*/React.createElement(OverlayTrigger, {
56
- placement: "top",
57
- overlay: /*#__PURE__*/React.createElement(Tooltip, null, "This set represents the mean value of its features")
58
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
59
- icon: faCircleInfo
60
- })), /*#__PURE__*/React.createElement(Button, {
61
- type: "button",
62
- variant: "outline-primary",
63
- className: "m-0 p-0 px-1",
64
- disabled: !set.vars.length,
65
- title: "Open set"
66
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
67
- icon: openSet ? faChevronUp : faChevronDown
68
- })), /*#__PURE__*/React.createElement(Button, {
69
- type: "button",
70
- variant: "outline-primary",
71
- className: "m-0 p-0 px-1",
72
- onClick: e => {
73
- e.stopPropagation();
74
- setShowModal(true);
75
- },
76
- title: "Add to set"
77
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
78
- icon: faPlus
79
- })), /*#__PURE__*/React.createElement(Button, {
80
- type: "button",
81
- variant: isActive ? "primary" : "outline-primary",
82
- className: "m-0 p-0 px-1",
83
- onClick: e => {
84
- e.stopPropagation();
85
- selectSet();
86
- },
87
- disabled: !set.vars.length,
88
- title: "Set as color encoding"
89
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
90
- icon: faDroplet
91
- }), isMultiple && /*#__PURE__*/React.createElement(FontAwesomeIcon, {
92
- icon: faPlus,
93
- size: "xs",
94
- className: "ps-xs-1"
95
- })), /*#__PURE__*/React.createElement(Button, {
96
- type: "button",
97
- className: "m-0 p-0 px-1",
98
- variant: "outline-secondary",
99
- title: "Remove from list",
100
- onClick: e => {
101
- e.stopPropagation();
102
- removeSet();
103
- }
104
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
105
- icon: faTrash
106
- }))))), /*#__PURE__*/React.createElement(Collapse, {
107
- in: openSet
108
- }, /*#__PURE__*/React.createElement("div", {
109
- className: "mt-2"
110
- }, /*#__PURE__*/React.createElement(ListGroup, {
111
- variant: "flush",
112
- className: "cherita-list var-set-list"
113
- }, varList))), /*#__PURE__*/React.createElement(SearchModal, {
114
- show: showModal,
115
- handleClose: () => setShowModal(false),
116
- text: searchText,
117
- setText: setSearchText,
118
- displayText: "features",
119
- handleSelect: (d, i) => {
120
- addVarToSet(d, set, i);
121
- },
122
- searchVar: true,
123
- searchDiseases: false
124
- }));
33
+ return /*#__PURE__*/_jsx(ListGroup.Item, {
34
+ children: /*#__PURE__*/_jsx(SelectionItem, {
35
+ item: v,
36
+ showSetColorEncoding: false,
37
+ removeVar: () => removeSetVar(v)
38
+ })
39
+ }, v.name);
40
+ }) : /*#__PURE__*/_jsx(ListGroup.Item, {
41
+ children: /*#__PURE__*/_jsx("div", {
42
+ className: "text-muted",
43
+ children: "No features in this set"
44
+ })
45
+ });
46
+ return /*#__PURE__*/_jsxs(_Fragment, {
47
+ children: [/*#__PURE__*/_jsx("div", {
48
+ className: "d-flex justify-content-between cursor-pointer",
49
+ onClick: () => {
50
+ setOpenSet(o => !o);
51
+ },
52
+ children: /*#__PURE__*/_jsxs("div", {
53
+ className: "d-flex justify-content-between align-items-center w-100",
54
+ children: [/*#__PURE__*/_jsx("div", {
55
+ className: "ellipsis-text",
56
+ title: set.name,
57
+ children: set.name
58
+ }), /*#__PURE__*/_jsxs("div", {
59
+ className: "d-flex align-items-center gap-1",
60
+ children: [/*#__PURE__*/_jsx(OverlayTrigger, {
61
+ placement: "top",
62
+ overlay: /*#__PURE__*/_jsx(Tooltip, {
63
+ children: "This set represents the mean value of its features"
64
+ }),
65
+ children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
66
+ icon: faCircleInfo
67
+ })
68
+ }), /*#__PURE__*/_jsx(Button, {
69
+ type: "button",
70
+ variant: "outline-primary",
71
+ className: "m-0 p-0 px-1",
72
+ disabled: !set.vars.length,
73
+ title: "Open set",
74
+ children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
75
+ icon: openSet ? faChevronUp : faChevronDown
76
+ })
77
+ }), /*#__PURE__*/_jsx(Button, {
78
+ type: "button",
79
+ variant: "outline-primary",
80
+ className: "m-0 p-0 px-1",
81
+ onClick: e => {
82
+ e.stopPropagation();
83
+ setShowModal(true);
84
+ },
85
+ title: "Add to set",
86
+ children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
87
+ icon: faPlus
88
+ })
89
+ }), /*#__PURE__*/_jsxs(Button, {
90
+ type: "button",
91
+ variant: isActive ? 'primary' : 'outline-primary',
92
+ className: "m-0 p-0 px-1",
93
+ onClick: e => {
94
+ e.stopPropagation();
95
+ selectSet();
96
+ },
97
+ disabled: !set.vars.length,
98
+ title: "Set as color encoding",
99
+ children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
100
+ icon: faDroplet
101
+ }), isMultiple && /*#__PURE__*/_jsx(FontAwesomeIcon, {
102
+ icon: faPlus,
103
+ size: "xs",
104
+ className: "ps-xs-1"
105
+ })]
106
+ }), /*#__PURE__*/_jsx(Button, {
107
+ type: "button",
108
+ className: "m-0 p-0 px-1",
109
+ variant: "outline-secondary",
110
+ title: "Remove from list",
111
+ onClick: e => {
112
+ e.stopPropagation();
113
+ removeSet();
114
+ },
115
+ children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
116
+ icon: faTrash
117
+ })
118
+ })]
119
+ })]
120
+ })
121
+ }), /*#__PURE__*/_jsx(Collapse, {
122
+ in: openSet,
123
+ children: /*#__PURE__*/_jsx("div", {
124
+ className: "mt-2",
125
+ children: /*#__PURE__*/_jsx(ListGroup, {
126
+ variant: "flush",
127
+ className: "cherita-list var-set-list",
128
+ children: varList
129
+ })
130
+ })
131
+ }), /*#__PURE__*/_jsx(SearchModal, {
132
+ show: showModal,
133
+ handleClose: () => setShowModal(false),
134
+ text: searchText,
135
+ setText: setSearchText,
136
+ displayText: 'features',
137
+ handleSelect: (d, i) => {
138
+ addVarToSet(d, set, i);
139
+ },
140
+ searchVar: true,
141
+ searchDiseases: false
142
+ })]
143
+ });
125
144
  }
126
145
  export function VarSet(_ref2) {
127
146
  let {
@@ -134,16 +153,16 @@ export function VarSet(_ref2) {
134
153
  const selectSet = () => {
135
154
  if (mode === SELECTION_MODES.SINGLE) {
136
155
  dispatch({
137
- type: "select.var",
156
+ type: 'select.var',
138
157
  var: set
139
158
  });
140
159
  dispatch({
141
- type: "set.colorEncoding",
142
- value: "var"
160
+ type: 'set.colorEncoding',
161
+ value: 'var'
143
162
  });
144
163
  } else if (mode === SELECTION_MODES.MULTIPLE) {
145
164
  dispatch({
146
- type: "select.multivar",
165
+ type: 'select.multivar',
147
166
  var: set
148
167
  });
149
168
  }
@@ -152,37 +171,37 @@ export function VarSet(_ref2) {
152
171
  if (mode === SELECTION_MODES.SINGLE) {
153
172
  if (active === set.name) {
154
173
  dispatch({
155
- type: "reset.var"
174
+ type: 'reset.var'
156
175
  });
157
176
  }
158
177
  } else if (mode === SELECTION_MODES.MULTIPLE) {
159
178
  if (active.includes(set.name)) {
160
179
  dispatch({
161
- type: "deselect.multivar",
180
+ type: 'deselect.multivar',
162
181
  var: set
163
182
  });
164
183
  }
165
184
  }
166
185
  dispatch({
167
- type: "remove.var",
186
+ type: 'remove.var',
168
187
  var: set
169
188
  });
170
189
  };
171
190
  const removeSetVar = v => {
172
191
  dispatch({
173
- type: "remove.varSet.var",
192
+ type: 'remove.varSet.var',
174
193
  varSet: set,
175
194
  var: v
176
195
  });
177
196
  };
178
197
  const toggleSet = () => {
179
198
  dispatch({
180
- type: "toggle.multivar",
199
+ type: 'toggle.multivar',
181
200
  var: set
182
201
  });
183
202
  };
184
203
  if (set && mode === SELECTION_MODES.SINGLE) {
185
- return /*#__PURE__*/React.createElement(SelectionSet, {
204
+ return /*#__PURE__*/_jsx(SelectionSet, {
186
205
  set: set,
187
206
  isActive: settings.colorEncoding === COLOR_ENCODINGS.VAR && active === set.name,
188
207
  selectSet: selectSet,
@@ -190,7 +209,7 @@ export function VarSet(_ref2) {
190
209
  removeSetVar: v => removeSetVar(v)
191
210
  });
192
211
  } else if (mode === SELECTION_MODES.MULTIPLE) {
193
- return /*#__PURE__*/React.createElement(SelectionSet, {
212
+ return /*#__PURE__*/_jsx(SelectionSet, {
194
213
  set: set,
195
214
  isActive: _.includes(active, set.name),
196
215
  selectSet: toggleSet,