@haniffalab/cherita-react 1.2.0-dev.2025-05-21.e8f5ce54 → 1.2.0-dev.2025-05-21.6154c7e3
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.
- package/dist/cjs/components/controls/Controls.js +60 -0
- package/dist/cjs/components/dotplot/Dotplot.js +29 -22
- package/dist/cjs/components/dotplot/DotplotControls.js +62 -99
- package/dist/cjs/components/full-page/FullPage.js +9 -7
- package/dist/cjs/components/full-page/FullPagePseudospatial.js +9 -7
- package/dist/cjs/components/heatmap/Heatmap.js +22 -13
- package/dist/cjs/components/heatmap/HeatmapControls.js +2 -19
- package/dist/cjs/components/matrixplot/Matrixplot.js +25 -16
- package/dist/cjs/components/matrixplot/MatrixplotControls.js +4 -34
- package/dist/cjs/components/obs-list/ObsItem.js +37 -29
- package/dist/cjs/components/obs-list/ObsList.js +47 -44
- package/dist/cjs/components/obsm-list/ObsmList.js +9 -6
- package/dist/cjs/components/offcanvas/index.js +13 -9
- package/dist/cjs/components/pseudospatial/Pseudospatial.js +61 -53
- package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +17 -11
- package/dist/cjs/components/scatterplot/Scatterplot.js +52 -52
- package/dist/cjs/components/scatterplot/ScatterplotControls.js +11 -24
- package/dist/cjs/components/scatterplot/SpatialControls.js +4 -4
- package/dist/cjs/components/search-bar/SearchBar.js +12 -10
- package/dist/cjs/components/search-bar/SearchInfo.js +14 -13
- package/dist/cjs/components/search-bar/SearchResults.js +16 -14
- package/dist/cjs/components/var-list/VarItem.js +10 -7
- package/dist/cjs/components/var-list/VarList.js +14 -9
- package/dist/cjs/components/var-list/VarListToolbar.js +1 -2
- package/dist/cjs/components/var-list/VarSet.js +1 -2
- package/dist/cjs/components/violin/Violin.js +48 -39
- package/dist/cjs/components/violin/ViolinControls.js +4 -20
- package/dist/cjs/context/DatasetContext.js +17 -11
- package/dist/cjs/context/FilterContext.js +9 -8
- package/dist/cjs/context/SettingsContext.js +172 -240
- package/dist/cjs/context/ZarrDataContext.js +1 -2
- package/dist/cjs/helpers/color-helper.js +3 -3
- package/dist/cjs/helpers/zarr-helper.js +15 -12
- package/dist/cjs/utils/Filter.js +13 -9
- package/dist/cjs/utils/Histogram.js +4 -3
- package/dist/cjs/utils/ImageViewer.js +1 -2
- package/dist/cjs/utils/Legend.js +3 -3
- package/dist/cjs/utils/LoadingIndicators.js +1 -1
- package/dist/cjs/utils/VirtualizedList.js +16 -13
- package/dist/cjs/utils/errors.js +20 -22
- package/dist/cjs/utils/requests.js +13 -10
- package/dist/cjs/utils/zarrData.js +12 -8
- package/dist/css/cherita.css +13 -9
- package/dist/css/cherita.css.map +1 -1
- package/dist/esm/components/controls/Controls.js +51 -0
- package/dist/esm/components/dotplot/Dotplot.js +28 -20
- package/dist/esm/components/dotplot/DotplotControls.js +62 -97
- package/dist/esm/components/full-page/FullPage.js +8 -5
- package/dist/esm/components/full-page/FullPagePseudospatial.js +8 -5
- package/dist/esm/components/heatmap/Heatmap.js +21 -11
- package/dist/esm/components/heatmap/HeatmapControls.js +3 -20
- package/dist/esm/components/matrixplot/Matrixplot.js +24 -14
- package/dist/esm/components/matrixplot/MatrixplotControls.js +5 -35
- package/dist/esm/components/obs-list/ObsItem.js +36 -27
- package/dist/esm/components/obs-list/ObsList.js +46 -42
- package/dist/esm/components/obsm-list/ObsmList.js +8 -4
- package/dist/esm/components/offcanvas/index.js +13 -9
- package/dist/esm/components/pseudospatial/Pseudospatial.js +60 -51
- package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +16 -9
- package/dist/esm/components/scatterplot/Scatterplot.js +51 -50
- package/dist/esm/components/scatterplot/ScatterplotControls.js +11 -22
- package/dist/esm/components/scatterplot/SpatialControls.js +3 -2
- package/dist/esm/components/search-bar/SearchBar.js +11 -8
- package/dist/esm/components/search-bar/SearchInfo.js +13 -11
- package/dist/esm/components/search-bar/SearchResults.js +15 -12
- package/dist/esm/components/var-list/VarItem.js +9 -5
- package/dist/esm/components/var-list/VarList.js +13 -7
- package/dist/esm/components/violin/Violin.js +47 -37
- package/dist/esm/components/violin/ViolinControls.js +5 -21
- package/dist/esm/context/DatasetContext.js +16 -9
- package/dist/esm/context/FilterContext.js +8 -6
- package/dist/esm/context/SettingsContext.js +171 -238
- package/dist/esm/helpers/color-helper.js +3 -3
- package/dist/esm/helpers/zarr-helper.js +15 -12
- package/dist/esm/utils/Filter.js +13 -9
- package/dist/esm/utils/Histogram.js +4 -3
- package/dist/esm/utils/Legend.js +2 -1
- package/dist/esm/utils/LoadingIndicators.js +1 -1
- package/dist/esm/utils/VirtualizedList.js +15 -11
- package/dist/esm/utils/errors.js +20 -22
- package/dist/esm/utils/requests.js +13 -10
- package/dist/esm/utils/zarrData.js +12 -8
- package/package.json +4 -2
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
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; }
|
|
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
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
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); }
|
|
1
6
|
import React, { useContext, useEffect, useMemo, useState } from "react";
|
|
2
7
|
import { faChevronDown, faChevronRight } from "@fortawesome/free-solid-svg-icons";
|
|
3
8
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
@@ -29,7 +34,7 @@ const ObsAccordionToggle = _ref => {
|
|
|
29
34
|
handleAccordionToggle(eventKey, isCurrentEventKey);
|
|
30
35
|
});
|
|
31
36
|
return /*#__PURE__*/React.createElement("div", {
|
|
32
|
-
className:
|
|
37
|
+
className: "obs-accordion-header ".concat(isCurrentEventKey ? "active" : ""),
|
|
33
38
|
onClick: decoratedOnClick
|
|
34
39
|
}, /*#__PURE__*/React.createElement("span", {
|
|
35
40
|
className: "obs-accordion-header-chevron"
|
|
@@ -40,6 +45,7 @@ const ObsAccordionToggle = _ref => {
|
|
|
40
45
|
}, children));
|
|
41
46
|
};
|
|
42
47
|
export function ObsColsList(_ref2) {
|
|
48
|
+
var _settings$selectedObs;
|
|
43
49
|
let {
|
|
44
50
|
showColor = true,
|
|
45
51
|
enableObsGroups = true
|
|
@@ -50,20 +56,21 @@ export function ObsColsList(_ref2) {
|
|
|
50
56
|
const dispatch = useSettingsDispatch();
|
|
51
57
|
const [enableGroups, setEnableGroups] = useState(enableObsGroups);
|
|
52
58
|
const [obsCols, setObsCols] = useState(null);
|
|
53
|
-
const [active, setActive] = useState([...[settings.selectedObs
|
|
59
|
+
const [active, setActive] = useState([...[(_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.name]]);
|
|
54
60
|
const [params, setParams] = useState({
|
|
55
61
|
url: dataset.url
|
|
56
62
|
});
|
|
57
|
-
const obsGroups = useMemo(() =>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
const obsGroups = useMemo(() => {
|
|
64
|
+
var _dataset$obsGroups;
|
|
65
|
+
return _objectSpread({
|
|
66
|
+
default: _.union(DEFAULT_OBS_GROUP, (_dataset$obsGroups = dataset.obsGroups) === null || _dataset$obsGroups === void 0 ? void 0 : _dataset$obsGroups.default)
|
|
67
|
+
}, _.omit(dataset.obsGroups, "default"));
|
|
68
|
+
}, [dataset.obsGroups]);
|
|
61
69
|
useEffect(() => {
|
|
62
70
|
setParams(p => {
|
|
63
|
-
return {
|
|
64
|
-
...p,
|
|
71
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
65
72
|
url: dataset.url
|
|
66
|
-
};
|
|
73
|
+
});
|
|
67
74
|
});
|
|
68
75
|
}, [dataset.url]);
|
|
69
76
|
const {
|
|
@@ -84,7 +91,7 @@ export function ObsColsList(_ref2) {
|
|
|
84
91
|
});
|
|
85
92
|
if (!!filteredData.length && !groupFiltered.length) {
|
|
86
93
|
setEnableGroups(false);
|
|
87
|
-
console.warn(
|
|
94
|
+
console.warn("No obs found in obsGroups ".concat(JSON.stringify(obsGroups), ", disabling obsGroups"));
|
|
88
95
|
} else {
|
|
89
96
|
filteredData = groupFiltered;
|
|
90
97
|
}
|
|
@@ -95,17 +102,17 @@ export function ObsColsList(_ref2) {
|
|
|
95
102
|
return d.type !== OBS_TYPES.DISCRETE;
|
|
96
103
|
});
|
|
97
104
|
setObsCols(_.keyBy(_.map(filteredData, d => {
|
|
98
|
-
return {
|
|
99
|
-
...d,
|
|
105
|
+
return _objectSpread(_objectSpread({}, d), {}, {
|
|
100
106
|
codesMap: _.invert(d.codes),
|
|
101
107
|
omit: []
|
|
102
|
-
};
|
|
108
|
+
});
|
|
103
109
|
}), "name"));
|
|
104
110
|
}
|
|
105
111
|
}, [fetchedData, isPending, obsGroups, serverError, enableGroups]);
|
|
106
112
|
useEffect(() => {
|
|
107
113
|
if (obsCols) {
|
|
108
|
-
|
|
114
|
+
var _settings$selectedObs2;
|
|
115
|
+
if (!obsCols[(_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.name]) {
|
|
109
116
|
setActive([]);
|
|
110
117
|
dispatch({
|
|
111
118
|
type: "select.obs",
|
|
@@ -122,23 +129,21 @@ export function ObsColsList(_ref2) {
|
|
|
122
129
|
}
|
|
123
130
|
};
|
|
124
131
|
const toggleAll = item => {
|
|
132
|
+
var _settings$selectedObs3;
|
|
125
133
|
const omit = item.omit.length ? [] : _.map(item.values, v => item.codes[v]);
|
|
126
134
|
setObsCols(o => {
|
|
127
|
-
return {
|
|
128
|
-
|
|
129
|
-
[item.name]: {
|
|
130
|
-
...item,
|
|
135
|
+
return _objectSpread(_objectSpread({}, o), {}, {
|
|
136
|
+
[item.name]: _objectSpread(_objectSpread({}, item), {}, {
|
|
131
137
|
omit: omit
|
|
132
|
-
}
|
|
133
|
-
};
|
|
138
|
+
})
|
|
139
|
+
});
|
|
134
140
|
});
|
|
135
|
-
if (settings.selectedObs
|
|
141
|
+
if (((_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.name) === item.name) {
|
|
136
142
|
dispatch({
|
|
137
143
|
type: "select.obs",
|
|
138
|
-
obs: {
|
|
139
|
-
...item,
|
|
144
|
+
obs: _objectSpread(_objectSpread({}, item), {}, {
|
|
140
145
|
omit: omit
|
|
141
|
-
}
|
|
146
|
+
})
|
|
142
147
|
});
|
|
143
148
|
}
|
|
144
149
|
};
|
|
@@ -177,6 +182,7 @@ export function ObsColsList(_ref2) {
|
|
|
177
182
|
});
|
|
178
183
|
};
|
|
179
184
|
const toggleObs = (item, value) => {
|
|
185
|
+
var _settings$selectedObs4;
|
|
180
186
|
let omit;
|
|
181
187
|
if (_.includes(item.omit, item.codes[value])) {
|
|
182
188
|
omit = item.omit.filter(i => i !== item.codes[value]);
|
|
@@ -184,25 +190,23 @@ export function ObsColsList(_ref2) {
|
|
|
184
190
|
omit = [...item.omit, item.codes[value]];
|
|
185
191
|
}
|
|
186
192
|
setObsCols(o => {
|
|
187
|
-
return {
|
|
188
|
-
|
|
189
|
-
[item.name]: {
|
|
190
|
-
...item,
|
|
193
|
+
return _objectSpread(_objectSpread({}, o), {}, {
|
|
194
|
+
[item.name]: _objectSpread(_objectSpread({}, item), {}, {
|
|
191
195
|
omit: omit
|
|
192
|
-
}
|
|
193
|
-
};
|
|
196
|
+
})
|
|
197
|
+
});
|
|
194
198
|
});
|
|
195
|
-
if (settings.selectedObs
|
|
199
|
+
if (((_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.name) === item.name) {
|
|
196
200
|
dispatch({
|
|
197
201
|
type: "select.obs",
|
|
198
|
-
obs: {
|
|
199
|
-
...item,
|
|
202
|
+
obs: _objectSpread(_objectSpread({}, item), {}, {
|
|
200
203
|
omit: omit
|
|
201
|
-
}
|
|
204
|
+
})
|
|
202
205
|
});
|
|
203
206
|
}
|
|
204
207
|
};
|
|
205
208
|
const obsItem = item => {
|
|
209
|
+
var _settings$selectedObs5, _settings$selectedObs6;
|
|
206
210
|
if (!item) {
|
|
207
211
|
return null;
|
|
208
212
|
}
|
|
@@ -210,8 +214,8 @@ export function ObsColsList(_ref2) {
|
|
|
210
214
|
return null;
|
|
211
215
|
}
|
|
212
216
|
const inLabelObs = _.some(settings.labelObs, i => i.name === item.name);
|
|
213
|
-
const inSliceObs = settings.sliceBy.obs && settings.selectedObs
|
|
214
|
-
const isColorEncoding = settings.colorEncoding === COLOR_ENCODINGS.OBS && settings.selectedObs
|
|
217
|
+
const inSliceObs = settings.sliceBy.obs && ((_settings$selectedObs5 = settings.selectedObs) === null || _settings$selectedObs5 === void 0 ? void 0 : _settings$selectedObs5.name) === item.name;
|
|
218
|
+
const isColorEncoding = settings.colorEncoding === COLOR_ENCODINGS.OBS && ((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.name) === item.name;
|
|
215
219
|
return /*#__PURE__*/React.createElement("div", {
|
|
216
220
|
className: "accordion-item",
|
|
217
221
|
key: item.name
|
|
@@ -219,21 +223,21 @@ export function ObsColsList(_ref2) {
|
|
|
219
223
|
eventKey: item.name,
|
|
220
224
|
handleAccordionToggle: handleAccordionToggle
|
|
221
225
|
}, /*#__PURE__*/React.createElement("div", null, item.name), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", {
|
|
222
|
-
className:
|
|
226
|
+
className: "mx-1 cursor-pointer ".concat(inLabelObs ? "active-icon" : "text-muted opacity-50"),
|
|
223
227
|
onClick: event => {
|
|
224
228
|
event.stopPropagation();
|
|
225
229
|
toggleLabel(item);
|
|
226
230
|
},
|
|
227
231
|
title: "Add to tooltip"
|
|
228
232
|
}, /*#__PURE__*/React.createElement(CommentIcon, null)), /*#__PURE__*/React.createElement("span", {
|
|
229
|
-
className:
|
|
233
|
+
className: "mx-1 cursor-pointer ".concat(inSliceObs ? "active-icon" : "text-muted opacity-50"),
|
|
230
234
|
onClick: event => {
|
|
231
235
|
event.stopPropagation();
|
|
232
236
|
toggleSlice(item);
|
|
233
237
|
},
|
|
234
238
|
title: "Filter applied"
|
|
235
239
|
}, /*#__PURE__*/React.createElement(JoinInnerIcon, null)), /*#__PURE__*/React.createElement("span", {
|
|
236
|
-
className:
|
|
240
|
+
className: "mx-1 cursor-pointer ".concat(isColorEncoding ? "active-icon" : "text-muted opacity-50"),
|
|
237
241
|
onClick: event => {
|
|
238
242
|
event.stopPropagation();
|
|
239
243
|
toggleColor(item);
|
|
@@ -263,9 +267,9 @@ export function ObsColsList(_ref2) {
|
|
|
263
267
|
})))));
|
|
264
268
|
};
|
|
265
269
|
const groupList = _.map(_.keys(obsGroups), group => {
|
|
266
|
-
const key =
|
|
270
|
+
const key = "group-".concat(group);
|
|
267
271
|
const groupItems = _.compact(_.map(_.sortBy(obsGroups[group], o => _.lowerCase(o.name)), item => {
|
|
268
|
-
return obsItem(obsCols
|
|
272
|
+
return obsItem(obsCols === null || obsCols === void 0 ? void 0 : obsCols[item]);
|
|
269
273
|
}));
|
|
270
274
|
if (group === "default") {
|
|
271
275
|
return groupItems;
|
|
@@ -282,7 +286,7 @@ export function ObsColsList(_ref2) {
|
|
|
282
286
|
}
|
|
283
287
|
});
|
|
284
288
|
const obsList = enableGroups ? /*#__PURE__*/React.createElement(React.Fragment, null, groupList) : _.map(_.sortBy(obsCols, o => _.lowerCase(o.name)), item => obsItem(item));
|
|
285
|
-
const defaultActiveGroup = enableGroups ?
|
|
289
|
+
const defaultActiveGroup = enableGroups ? "group-".concat(_.findKey(obsGroups, g => g.includes(active === null || active === void 0 ? void 0 : active[0]))) : null;
|
|
286
290
|
if (!serverError) {
|
|
287
291
|
return /*#__PURE__*/React.createElement("div", {
|
|
288
292
|
className: "position-relative h-100"
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
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; }
|
|
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
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
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); }
|
|
1
6
|
import React, { useEffect, useState } from "react";
|
|
2
7
|
import { Button, ButtonGroup, Dropdown, DropdownButton, OverlayTrigger, Tooltip } from "react-bootstrap";
|
|
3
8
|
import { useDataset } from "../../context/DatasetContext";
|
|
@@ -16,10 +21,9 @@ export function ObsmKeysList() {
|
|
|
16
21
|
});
|
|
17
22
|
useEffect(() => {
|
|
18
23
|
setParams(p => {
|
|
19
|
-
return {
|
|
20
|
-
...p,
|
|
24
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
21
25
|
url: dataset.url
|
|
22
|
-
};
|
|
26
|
+
});
|
|
23
27
|
});
|
|
24
28
|
}, [dataset.url]);
|
|
25
29
|
const {
|
|
@@ -42,7 +46,7 @@ export function ObsmKeysList() {
|
|
|
42
46
|
const obsmList = obsmKeysList.map(item => {
|
|
43
47
|
return /*#__PURE__*/React.createElement(Dropdown.Item, {
|
|
44
48
|
key: item,
|
|
45
|
-
className:
|
|
49
|
+
className: "custom ".concat(active === item && "active"),
|
|
46
50
|
onClick: () => {
|
|
47
51
|
dispatch({
|
|
48
52
|
type: "select.obsm",
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
const _excluded = ["show", "handleClose"],
|
|
2
|
+
_excluded2 = ["show", "handleClose", "Controls"];
|
|
3
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
4
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
1
5
|
import React from "react";
|
|
2
6
|
import Offcanvas from "react-bootstrap/Offcanvas";
|
|
3
7
|
import { SELECTION_MODES } from "../../constants/constants";
|
|
@@ -7,10 +11,10 @@ import { SearchBar } from "../search-bar/SearchBar";
|
|
|
7
11
|
import { VarNamesList } from "../var-list/VarList";
|
|
8
12
|
export function OffcanvasObs(_ref) {
|
|
9
13
|
let {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
show,
|
|
15
|
+
handleClose
|
|
16
|
+
} = _ref,
|
|
17
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
14
18
|
return /*#__PURE__*/React.createElement(Offcanvas, {
|
|
15
19
|
show: show,
|
|
16
20
|
onHide: handleClose,
|
|
@@ -52,11 +56,11 @@ export function OffcanvasVars(_ref3) {
|
|
|
52
56
|
}
|
|
53
57
|
export function OffcanvasControls(_ref4) {
|
|
54
58
|
let {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
show,
|
|
60
|
+
handleClose,
|
|
61
|
+
Controls
|
|
62
|
+
} = _ref4,
|
|
63
|
+
props = _objectWithoutProperties(_ref4, _excluded2);
|
|
60
64
|
return /*#__PURE__*/React.createElement(Offcanvas, {
|
|
61
65
|
show: show,
|
|
62
66
|
onHide: handleClose
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
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; }
|
|
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
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
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); }
|
|
1
6
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
7
|
import { library } from "@fortawesome/fontawesome-svg-core";
|
|
3
8
|
import { faSliders } from "@fortawesome/free-solid-svg-icons";
|
|
@@ -15,6 +20,7 @@ import { LoadingSpinner } from "../../utils/LoadingIndicators";
|
|
|
15
20
|
import { useDebouncedFetch } from "../../utils/requests";
|
|
16
21
|
library.add(faSliders);
|
|
17
22
|
function usePseudospatialData(plotType) {
|
|
23
|
+
var _settings$selectedVar5, _settings$selectedVar6, _settings$selectedVar7, _settings$selectedVar8;
|
|
18
24
|
const ENDPOINT = "pseudospatial";
|
|
19
25
|
const dataset = useDataset();
|
|
20
26
|
const settings = useSettings();
|
|
@@ -35,40 +41,49 @@ function usePseudospatialData(plotType) {
|
|
|
35
41
|
}, [dataset.url, settings.pseudospatial.maskSet, settings.pseudospatial.maskValues, dataset.varNamesCol, isSliced, obsIndices]);
|
|
36
42
|
const getPlotParams = useCallback(() => {
|
|
37
43
|
if (plotType === PLOT_TYPES.GENE) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3, _settings$selectedVar4, _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
|
|
45
|
+
return _objectSpread({
|
|
46
|
+
varKey: (_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet ? {
|
|
47
|
+
name: (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name,
|
|
48
|
+
indices: (_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars.map(v => v.index)
|
|
49
|
+
} : (_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.index
|
|
50
|
+
}, settings.sliceBy.obs ? {
|
|
51
|
+
obsCol: settings.selectedObs,
|
|
52
|
+
obsValues: !((_settings$selectedObs = settings.selectedObs) !== null && _settings$selectedObs !== void 0 && _settings$selectedObs.omit.length) ? null : _.difference(_.values((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.codes), (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.omit).map(c => {
|
|
53
|
+
var _settings$selectedObs4;
|
|
54
|
+
return (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.codesMap[c];
|
|
55
|
+
})
|
|
56
|
+
} : {});
|
|
48
57
|
} else if (plotType === PLOT_TYPES.CATEGORICAL) {
|
|
58
|
+
var _settings$selectedObs5, _settings$selectedObs6, _settings$selectedObs7;
|
|
49
59
|
return {
|
|
50
60
|
obsCol: settings.selectedObs,
|
|
51
|
-
obsValues: !settings.selectedObs
|
|
61
|
+
obsValues: !((_settings$selectedObs5 = settings.selectedObs) !== null && _settings$selectedObs5 !== void 0 && _settings$selectedObs5.omit.length) ? null : _.difference(_.values((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.codes), (_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.omit).map(c => {
|
|
62
|
+
var _settings$selectedObs8;
|
|
63
|
+
return (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.codesMap[c];
|
|
64
|
+
}),
|
|
52
65
|
mode: settings.pseudospatial.categoricalMode
|
|
53
66
|
};
|
|
54
67
|
} else if (plotType === "continuous") {
|
|
68
|
+
var _settings$selectedObs9, _settings$selectedObs0, _settings$selectedObs1;
|
|
55
69
|
return {
|
|
56
70
|
obsCol: settings.selectedObs,
|
|
57
|
-
obsValues: !settings.selectedObs
|
|
71
|
+
obsValues: !((_settings$selectedObs9 = settings.selectedObs) !== null && _settings$selectedObs9 !== void 0 && _settings$selectedObs9.omit.length) ? null : _.difference(_.values((_settings$selectedObs0 = settings.selectedObs) === null || _settings$selectedObs0 === void 0 ? void 0 : _settings$selectedObs0.codes), (_settings$selectedObs1 = settings.selectedObs) === null || _settings$selectedObs1 === void 0 ? void 0 : _settings$selectedObs1.omit).map(c => {
|
|
72
|
+
var _settings$selectedObs10;
|
|
73
|
+
return (_settings$selectedObs10 = settings.selectedObs) === null || _settings$selectedObs10 === void 0 ? void 0 : _settings$selectedObs10.codesMap[c];
|
|
74
|
+
})
|
|
58
75
|
};
|
|
59
76
|
}
|
|
60
|
-
}, [settings.pseudospatial.categoricalMode, settings.selectedObs, settings.selectedVar
|
|
77
|
+
}, [settings.pseudospatial.categoricalMode, settings.selectedObs, (_settings$selectedVar5 = settings.selectedVar) === null || _settings$selectedVar5 === void 0 ? void 0 : _settings$selectedVar5.index, (_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.isSet, (_settings$selectedVar7 = settings.selectedVar) === null || _settings$selectedVar7 === void 0 ? void 0 : _settings$selectedVar7.name, (_settings$selectedVar8 = settings.selectedVar) === null || _settings$selectedVar8 === void 0 ? void 0 : _settings$selectedVar8.vars, settings.sliceBy.obs, plotType]);
|
|
61
78
|
const params = useMemo(() => {
|
|
62
|
-
return {
|
|
63
|
-
...baseParams,
|
|
64
|
-
...getPlotParams()
|
|
65
|
-
};
|
|
79
|
+
return _objectSpread(_objectSpread({}, baseParams), getPlotParams());
|
|
66
80
|
}, [baseParams, getPlotParams]);
|
|
67
81
|
return useDebouncedFetch(ENDPOINT + "/" + plotType, params, 500, {
|
|
68
82
|
enabled: !!plotType && !!settings.pseudospatial.maskSet
|
|
69
83
|
});
|
|
70
84
|
}
|
|
71
85
|
export function Pseudospatial(_ref) {
|
|
86
|
+
var _settings$selectedObs14, _layout$coloraxis3, _layout$coloraxis4;
|
|
72
87
|
let {
|
|
73
88
|
showLegend = true,
|
|
74
89
|
sharedScaleRange = false,
|
|
@@ -85,21 +100,21 @@ export function Pseudospatial(_ref) {
|
|
|
85
100
|
} = useColor();
|
|
86
101
|
const colorscale = useRef(settings.controls.colorScale);
|
|
87
102
|
useEffect(() => {
|
|
88
|
-
|
|
89
|
-
|
|
103
|
+
var _settings$selectedObs11, _settings$selectedObs12, _settings$selectedObs13;
|
|
104
|
+
setPlotType(settings.colorEncoding === COLOR_ENCODINGS.VAR ? PLOT_TYPES.GENE : ((_settings$selectedObs11 = settings.selectedObs) === null || _settings$selectedObs11 === void 0 ? void 0 : _settings$selectedObs11.type) === OBS_TYPES.CATEGORICAL || ((_settings$selectedObs12 = settings.selectedObs) === null || _settings$selectedObs12 === void 0 ? void 0 : _settings$selectedObs12.type) === OBS_TYPES.BOOLEAN ? PLOT_TYPES.CATEGORICAL : ((_settings$selectedObs13 = settings.selectedObs) === null || _settings$selectedObs13 === void 0 ? void 0 : _settings$selectedObs13.type) === OBS_TYPES.CONTINUOUS ? PLOT_TYPES.CONTINUOUS : PLOT_TYPES.MASKS);
|
|
105
|
+
}, [settings.colorEncoding, (_settings$selectedObs14 = settings.selectedObs) === null || _settings$selectedObs14 === void 0 ? void 0 : _settings$selectedObs14.type, setPlotType]);
|
|
90
106
|
const updateColorscale = useCallback(colorscale => {
|
|
91
107
|
setLayout(l => {
|
|
92
|
-
return {
|
|
93
|
-
|
|
94
|
-
coloraxis: {
|
|
95
|
-
...l.coloraxis,
|
|
108
|
+
return _objectSpread(_objectSpread({}, l), {}, {
|
|
109
|
+
coloraxis: _objectSpread(_objectSpread({}, l.coloraxis), {}, {
|
|
96
110
|
colorscale: colorscale
|
|
97
|
-
}
|
|
98
|
-
};
|
|
111
|
+
})
|
|
112
|
+
});
|
|
99
113
|
});
|
|
100
114
|
setData(d => {
|
|
101
|
-
|
|
102
|
-
const
|
|
115
|
+
var _layout$coloraxis, _layout$coloraxis2;
|
|
116
|
+
const min = layout === null || layout === void 0 || (_layout$coloraxis = layout.coloraxis) === null || _layout$coloraxis === void 0 ? void 0 : _layout$coloraxis.cmin;
|
|
117
|
+
const max = layout === null || layout === void 0 || (_layout$coloraxis2 = layout.coloraxis) === null || _layout$coloraxis2 === void 0 ? void 0 : _layout$coloraxis2.cmax;
|
|
103
118
|
return _.map(d, trace => {
|
|
104
119
|
const v = trace.meta.value;
|
|
105
120
|
if (v === null) {
|
|
@@ -108,17 +123,15 @@ export function Pseudospatial(_ref) {
|
|
|
108
123
|
const color = rgbToHex(getColor({
|
|
109
124
|
value: (v - min) / (max - min)
|
|
110
125
|
}));
|
|
111
|
-
return {
|
|
112
|
-
...trace,
|
|
126
|
+
return _objectSpread(_objectSpread({}, trace), {}, {
|
|
113
127
|
fillcolor: color,
|
|
114
|
-
line: {
|
|
115
|
-
...trace.line,
|
|
128
|
+
line: _objectSpread(_objectSpread({}, trace.line), {}, {
|
|
116
129
|
color: color
|
|
117
|
-
}
|
|
118
|
-
};
|
|
130
|
+
})
|
|
131
|
+
});
|
|
119
132
|
});
|
|
120
133
|
});
|
|
121
|
-
}, [getColor, layout
|
|
134
|
+
}, [getColor, layout === null || layout === void 0 || (_layout$coloraxis3 = layout.coloraxis) === null || _layout$coloraxis3 === void 0 ? void 0 : _layout$coloraxis3.cmax, layout === null || layout === void 0 || (_layout$coloraxis4 = layout.coloraxis) === null || _layout$coloraxis4 === void 0 ? void 0 : _layout$coloraxis4.cmin]);
|
|
122
135
|
const {
|
|
123
136
|
fetchedData,
|
|
124
137
|
isPending,
|
|
@@ -153,40 +166,36 @@ export function Pseudospatial(_ref) {
|
|
|
153
166
|
const color = rgbToHex(getColor({
|
|
154
167
|
value: (v - min) / (max - min)
|
|
155
168
|
}));
|
|
156
|
-
return {
|
|
157
|
-
...trace,
|
|
169
|
+
return _objectSpread(_objectSpread({}, trace), {}, {
|
|
158
170
|
fillcolor: color,
|
|
159
|
-
line: {
|
|
160
|
-
...trace.line,
|
|
171
|
+
line: _objectSpread(_objectSpread({}, trace.line), {}, {
|
|
161
172
|
color: color
|
|
162
|
-
}
|
|
163
|
-
};
|
|
173
|
+
})
|
|
174
|
+
});
|
|
164
175
|
});
|
|
165
176
|
});
|
|
166
177
|
setLayout(l => {
|
|
167
|
-
return {
|
|
168
|
-
|
|
169
|
-
coloraxis: {
|
|
170
|
-
...l.coloraxis,
|
|
178
|
+
return _objectSpread(_objectSpread({}, l), {}, {
|
|
179
|
+
coloraxis: _objectSpread(_objectSpread({}, l.coloraxis), {}, {
|
|
171
180
|
cmin: min,
|
|
172
181
|
cmax: max
|
|
173
|
-
}
|
|
174
|
-
};
|
|
182
|
+
})
|
|
183
|
+
});
|
|
175
184
|
});
|
|
176
185
|
}
|
|
177
186
|
}, [settings.controls.range, settings.controls.valueMax, settings.controls.valueMin, settings.controls.valueRange, getColor, sharedScaleRange]);
|
|
178
187
|
const hasSelections = !!plotType && !!settings.pseudospatial.maskSet;
|
|
179
188
|
const faSlidersPath = faSliders.icon[4];
|
|
180
189
|
if (!serverError) {
|
|
190
|
+
var _layout$coloraxis5, _layout$coloraxis6;
|
|
181
191
|
return /*#__PURE__*/React.createElement("div", {
|
|
182
192
|
className: "cherita-pseudospatial"
|
|
183
193
|
}, /*#__PURE__*/React.createElement(React.Fragment, null, hasSelections && isPending && /*#__PURE__*/React.createElement(LoadingSpinner, null), hasSelections && /*#__PURE__*/React.createElement(Plot, {
|
|
184
194
|
data: data,
|
|
185
|
-
layout: {
|
|
186
|
-
...layout,
|
|
195
|
+
layout: _objectSpread(_objectSpread({}, layout), {}, {
|
|
187
196
|
autosize: true,
|
|
188
197
|
height: height
|
|
189
|
-
},
|
|
198
|
+
}),
|
|
190
199
|
useResizeHandler: true,
|
|
191
200
|
className: "cherita-pseudospatial-plot",
|
|
192
201
|
config: {
|
|
@@ -205,8 +214,8 @@ export function Pseudospatial(_ref) {
|
|
|
205
214
|
}]
|
|
206
215
|
}
|
|
207
216
|
}), hasSelections && showLegend && /*#__PURE__*/React.createElement(Legend, {
|
|
208
|
-
min: layout
|
|
209
|
-
max: layout
|
|
217
|
+
min: layout === null || layout === void 0 || (_layout$coloraxis5 = layout.coloraxis) === null || _layout$coloraxis5 === void 0 ? void 0 : _layout$coloraxis5.cmin,
|
|
218
|
+
max: layout === null || layout === void 0 || (_layout$coloraxis6 = layout.coloraxis) === null || _layout$coloraxis6 === void 0 ? void 0 : _layout$coloraxis6.cmax,
|
|
210
219
|
addText: plotType === PLOT_TYPES.GENE ? " - Mean expression" : plotType === PLOT_TYPES.CATEGORICAL ? " - %" : plotType === PLOT_TYPES.CONTINUOUS ? " - Mean value" : ""
|
|
211
220
|
})));
|
|
212
221
|
} else {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
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; }
|
|
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
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
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); }
|
|
1
6
|
import React, { useEffect, useState } from "react";
|
|
2
7
|
import _ from "lodash";
|
|
3
8
|
import { ButtonGroup, Dropdown, Form } from "react-bootstrap";
|
|
@@ -26,6 +31,7 @@ function CategoricalMode() {
|
|
|
26
31
|
}, _.capitalize(mode.name)), /*#__PURE__*/React.createElement(Dropdown.Menu, null, modeList));
|
|
27
32
|
}
|
|
28
33
|
function MaskSet() {
|
|
34
|
+
var _settings$pseudospati5, _settings$pseudospati6, _maskSets$settings$ps2, _settings$pseudospati7, _settings$pseudospati8, _maskSets$settings$ps3, _settings$pseudospati9;
|
|
29
35
|
const ENDPOINT = "masks";
|
|
30
36
|
const dataset = useDataset();
|
|
31
37
|
const settings = useSettings();
|
|
@@ -36,10 +42,9 @@ function MaskSet() {
|
|
|
36
42
|
});
|
|
37
43
|
useEffect(() => {
|
|
38
44
|
setParams(p => {
|
|
39
|
-
return {
|
|
40
|
-
...p,
|
|
45
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
41
46
|
url: dataset.url
|
|
42
|
-
};
|
|
47
|
+
});
|
|
43
48
|
});
|
|
44
49
|
}, [dataset.url]);
|
|
45
50
|
const {
|
|
@@ -65,9 +70,10 @@ function MaskSet() {
|
|
|
65
70
|
}
|
|
66
71
|
}, _.capitalize(key)));
|
|
67
72
|
const handleMaskChange = mask => {
|
|
68
|
-
|
|
73
|
+
var _settings$pseudospati, _settings$pseudospati2;
|
|
74
|
+
let newMasks = settings.pseudospatial.maskValues || (maskSets === null || maskSets === void 0 ? void 0 : maskSets[(_settings$pseudospati = settings.pseudospatial) === null || _settings$pseudospati === void 0 ? void 0 : _settings$pseudospati.maskSet]);
|
|
69
75
|
newMasks = newMasks.includes(mask) ? newMasks.filter(m => m !== mask) : [...newMasks, mask];
|
|
70
|
-
if (!_.difference(maskSets
|
|
76
|
+
if (!_.difference(maskSets === null || maskSets === void 0 ? void 0 : maskSets[(_settings$pseudospati2 = settings.pseudospatial) === null || _settings$pseudospati2 === void 0 ? void 0 : _settings$pseudospati2.maskSet], newMasks).length) {
|
|
71
77
|
newMasks = null;
|
|
72
78
|
}
|
|
73
79
|
dispatch({
|
|
@@ -76,7 +82,8 @@ function MaskSet() {
|
|
|
76
82
|
});
|
|
77
83
|
};
|
|
78
84
|
const toggleMasks = () => {
|
|
79
|
-
|
|
85
|
+
var _settings$pseudospati3, _maskSets$settings$ps, _settings$pseudospati4;
|
|
86
|
+
if (!settings.pseudospatial.maskValues || ((_settings$pseudospati3 = settings.pseudospatial.maskValues) === null || _settings$pseudospati3 === void 0 ? void 0 : _settings$pseudospati3.length) === (maskSets === null || maskSets === void 0 || (_maskSets$settings$ps = maskSets[(_settings$pseudospati4 = settings.pseudospatial) === null || _settings$pseudospati4 === void 0 ? void 0 : _settings$pseudospati4.maskSet]) === null || _maskSets$settings$ps === void 0 ? void 0 : _maskSets$settings$ps.length)) {
|
|
80
87
|
dispatch({
|
|
81
88
|
type: "set.pseudospatial.maskValues",
|
|
82
89
|
maskValues: []
|
|
@@ -88,7 +95,7 @@ function MaskSet() {
|
|
|
88
95
|
});
|
|
89
96
|
}
|
|
90
97
|
};
|
|
91
|
-
const masksList = _.map(maskSets
|
|
98
|
+
const masksList = _.map(maskSets === null || maskSets === void 0 ? void 0 : maskSets[(_settings$pseudospati5 = settings.pseudospatial) === null || _settings$pseudospati5 === void 0 ? void 0 : _settings$pseudospati5.maskSet], mask => /*#__PURE__*/React.createElement(Dropdown.ItemText, {
|
|
92
99
|
key: mask
|
|
93
100
|
}, /*#__PURE__*/React.createElement(Form.Check, {
|
|
94
101
|
type: "checkbox",
|
|
@@ -96,8 +103,8 @@ function MaskSet() {
|
|
|
96
103
|
checked: !settings.pseudospatial.maskValues || settings.pseudospatial.maskValues.includes(mask),
|
|
97
104
|
onChange: () => handleMaskChange(mask)
|
|
98
105
|
})));
|
|
99
|
-
const nMasks = settings.pseudospatial.maskValues ? settings.pseudospatial.maskValues
|
|
100
|
-
const toggleAllChecked = !settings.pseudospatial.maskValues || settings.pseudospatial.maskValues
|
|
106
|
+
const nMasks = settings.pseudospatial.maskValues ? (_settings$pseudospati6 = settings.pseudospatial.maskValues) === null || _settings$pseudospati6 === void 0 ? void 0 : _settings$pseudospati6.length : (maskSets === null || maskSets === void 0 || (_maskSets$settings$ps2 = maskSets[(_settings$pseudospati7 = settings.pseudospatial) === null || _settings$pseudospati7 === void 0 ? void 0 : _settings$pseudospati7.maskSet]) === null || _maskSets$settings$ps2 === void 0 ? void 0 : _maskSets$settings$ps2.length) || "No";
|
|
107
|
+
const toggleAllChecked = !settings.pseudospatial.maskValues || ((_settings$pseudospati8 = settings.pseudospatial.maskValues) === null || _settings$pseudospati8 === void 0 ? void 0 : _settings$pseudospati8.length) === (maskSets === null || maskSets === void 0 || (_maskSets$settings$ps3 = maskSets[(_settings$pseudospati9 = settings.pseudospatial) === null || _settings$pseudospati9 === void 0 ? void 0 : _settings$pseudospati9.maskSet]) === null || _maskSets$settings$ps3 === void 0 ? void 0 : _maskSets$settings$ps3.length);
|
|
101
108
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Dropdown, null, /*#__PURE__*/React.createElement(Dropdown.Toggle, {
|
|
102
109
|
variant: "light"
|
|
103
110
|
}, _.capitalize(settings.pseudospatial.maskSet || "Select a mask set")), /*#__PURE__*/React.createElement(Dropdown.Menu, null, /*#__PURE__*/React.createElement(Dropdown.Header, null, "Mask set"), maskSetList)), /*#__PURE__*/React.createElement(Dropdown, null, /*#__PURE__*/React.createElement(Dropdown.Toggle, {
|