@haniffalab/cherita-react 1.4.1-dev.2025-10-23.e95b5a90 → 1.4.1-dev.2025-10-23.55fbe6ff
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/README.md +1 -1
- package/dist/cjs/components/controls/Controls.js +4 -4
- package/dist/cjs/components/dotplot/Dotplot.js +8 -8
- package/dist/cjs/components/dotplot/DotplotControls.js +5 -5
- package/dist/cjs/components/full-page/FullPage.js +1 -2
- package/dist/cjs/components/full-page/PlotAlert.js +1 -1
- package/dist/cjs/components/full-page/PlotTypeSelector.js +13 -13
- package/dist/cjs/components/heatmap/Heatmap.js +7 -7
- package/dist/cjs/components/icons/DotPlotIcon.js +1 -1
- package/dist/cjs/components/icons/HeatmapIcon.js +1 -1
- package/dist/cjs/components/icons/MatrixPlotIcon.1.js +1 -1
- package/dist/cjs/components/icons/MatrixPlotIcon.js +1 -1
- package/dist/cjs/components/icons/ScatterplotIcon.1.js +1 -1
- package/dist/cjs/components/icons/ScatterplotIcon.js +1 -1
- package/dist/cjs/components/icons/ViolinPlotIcon.js +1 -1
- package/dist/cjs/components/matrixplot/Matrixplot.js +7 -7
- package/dist/cjs/components/obs-list/ObsItem.js +19 -19
- package/dist/cjs/components/obs-list/ObsList.js +17 -17
- package/dist/cjs/components/obsm-list/ObsmList.js +7 -7
- package/dist/cjs/components/pseudospatial/Pseudospatial.js +16 -16
- package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +10 -10
- package/dist/cjs/components/scatterplot/Scatterplot.js +16 -16
- package/dist/cjs/components/scatterplot/ScatterplotControls.js +1 -1
- package/dist/cjs/components/scatterplot/SpatialControls.js +9 -9
- package/dist/cjs/components/scatterplot/Toolbox.js +4 -4
- package/dist/cjs/components/search-bar/SearchBar.js +14 -14
- package/dist/cjs/components/search-bar/SearchInfo.js +3 -3
- package/dist/cjs/components/search-bar/SearchResults.js +2 -2
- package/dist/cjs/components/toolbar/Toolbar.js +3 -3
- package/dist/cjs/components/var-list/VarItem.js +15 -15
- package/dist/cjs/components/var-list/VarList.js +5 -5
- package/dist/cjs/components/var-list/VarListToolbar.js +4 -4
- package/dist/cjs/components/var-list/VarSet.js +13 -13
- package/dist/cjs/components/violin/Violin.js +10 -10
- package/dist/cjs/constants/colorscales.js +19 -19
- package/dist/cjs/constants/constants.js +47 -47
- package/dist/cjs/context/DatasetContext.js +3 -3
- package/dist/cjs/context/FilterContext.js +2 -2
- package/dist/cjs/context/SettingsContext.js +57 -57
- package/dist/cjs/helpers/color-helper.js +2 -2
- package/dist/cjs/helpers/zarr-helper.js +3 -3
- package/dist/cjs/utils/Filter.js +1 -1
- package/dist/cjs/utils/Histogram.js +2 -2
- package/dist/cjs/utils/ImageViewer.js +2 -2
- package/dist/cjs/utils/Legend.js +1 -1
- package/dist/cjs/utils/LoadingIndicators.js +1 -1
- package/dist/cjs/utils/Resolver.js +7 -7
- package/dist/cjs/utils/Skeleton.js +1 -1
- package/dist/cjs/utils/StyledTooltip.js +5 -5
- package/dist/cjs/utils/VirtualizedList.js +7 -7
- package/dist/cjs/utils/errors.js +15 -15
- package/dist/cjs/utils/requests.js +5 -5
- package/dist/cjs/utils/search.js +4 -4
- package/dist/cjs/utils/string.js +6 -6
- package/dist/cjs/utils/zarrData.js +5 -5
- package/dist/css/cherita.css +21 -20
- package/dist/css/cherita.css.map +1 -1
- package/dist/esm/components/controls/Controls.js +9 -9
- package/dist/esm/components/dotplot/Dotplot.js +21 -21
- package/dist/esm/components/dotplot/DotplotControls.js +9 -9
- package/dist/esm/components/full-page/FullPage.js +22 -23
- package/dist/esm/components/full-page/PlotAlert.js +5 -5
- package/dist/esm/components/full-page/PlotTypeSelector.js +21 -21
- package/dist/esm/components/heatmap/Heatmap.js +20 -20
- package/dist/esm/components/heatmap/HeatmapControls.js +2 -2
- package/dist/esm/components/icons/DotPlotIcon.js +1 -1
- package/dist/esm/components/icons/HeatmapIcon.js +1 -1
- package/dist/esm/components/icons/MatrixPlotIcon.1.js +1 -1
- package/dist/esm/components/icons/MatrixPlotIcon.js +1 -1
- package/dist/esm/components/icons/ScatterplotIcon.1.js +1 -1
- package/dist/esm/components/icons/ScatterplotIcon.js +1 -1
- package/dist/esm/components/icons/ViolinPlotIcon.js +1 -1
- package/dist/esm/components/matrixplot/Matrixplot.js +20 -20
- package/dist/esm/components/matrixplot/MatrixplotControls.js +2 -2
- package/dist/esm/components/obs-list/ObsItem.js +37 -37
- package/dist/esm/components/obs-list/ObsList.js +34 -34
- package/dist/esm/components/obs-list/ObsToolbar.js +1 -1
- package/dist/esm/components/obsm-list/ObsmList.js +15 -15
- package/dist/esm/components/offcanvas/index.js +6 -6
- package/dist/esm/components/pseudospatial/Pseudospatial.js +31 -31
- package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +17 -17
- package/dist/esm/components/scatterplot/Scatterplot.js +38 -38
- package/dist/esm/components/scatterplot/ScatterplotControls.js +9 -9
- package/dist/esm/components/scatterplot/SpatialControls.js +23 -23
- package/dist/esm/components/scatterplot/Toolbox.js +7 -7
- package/dist/esm/components/search-bar/SearchBar.js +27 -27
- package/dist/esm/components/search-bar/SearchInfo.js +14 -14
- package/dist/esm/components/search-bar/SearchResults.js +10 -10
- package/dist/esm/components/toolbar/Toolbar.js +6 -6
- package/dist/esm/components/var-list/VarItem.js +27 -27
- package/dist/esm/components/var-list/VarList.js +21 -21
- package/dist/esm/components/var-list/VarListToolbar.js +10 -10
- package/dist/esm/components/var-list/VarSet.js +22 -22
- package/dist/esm/components/violin/Violin.js +26 -26
- package/dist/esm/components/violin/ViolinControls.js +2 -2
- package/dist/esm/constants/colorscales.js +19 -19
- package/dist/esm/constants/constants.js +47 -47
- package/dist/esm/context/DatasetContext.js +11 -11
- package/dist/esm/context/FilterContext.js +3 -3
- package/dist/esm/context/SettingsContext.js +61 -61
- package/dist/esm/context/ZarrDataContext.js +3 -3
- package/dist/esm/helpers/color-helper.js +5 -5
- package/dist/esm/helpers/map-helper.js +2 -2
- package/dist/esm/helpers/zarr-helper.js +6 -6
- package/dist/esm/index.js +22 -22
- package/dist/esm/utils/Filter.js +8 -8
- package/dist/esm/utils/Histogram.js +6 -6
- package/dist/esm/utils/ImageViewer.js +4 -4
- package/dist/esm/utils/Legend.js +9 -9
- package/dist/esm/utils/LoadingIndicators.js +2 -2
- package/dist/esm/utils/Resolver.js +13 -13
- package/dist/esm/utils/Skeleton.js +2 -2
- package/dist/esm/utils/StyledTooltip.js +6 -6
- package/dist/esm/utils/VirtualizedList.js +9 -9
- package/dist/esm/utils/errors.js +15 -15
- package/dist/esm/utils/requests.js +8 -8
- package/dist/esm/utils/search.js +7 -7
- package/dist/esm/utils/string.js +7 -7
- package/dist/esm/utils/zarrData.js +13 -13
- package/package.json +11 -7
- package/scss/cherita-bootstrap.scss +2 -2
- package/scss/cherita.scss +24 -17
- package/scss/components/accordions.scss +4 -1
- package/scss/components/layouts.scss +13 -12
- package/scss/components/lists.scss +8 -4
- package/scss/components/plotly.scss +1 -0
|
@@ -4,106 +4,106 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.VIOLIN_MODES = exports.VIOLINPLOT_SCALES = exports.VAR_SORT_ORDER = exports.VAR_SORT = exports.UNSELECTED_POLYGON_FILLCOLOR = exports.SELECTION_MODES = exports.SELECTED_POLYGON_FILLCOLOR = exports.PSEUDOSPATIAL_PLOT_TYPES = exports.PSEUDOSPATIAL_CATEGORICAL_MODES = exports.PLOT_TYPES = exports.PLOTLY_MODEBAR_BUTTONS = exports.OBS_TYPES = exports.MATRIXPLOT_SCALES = exports.LOCAL_STORAGE_KEY = exports.DOTPLOT_SCALES = exports.DEFAULT_OBS_GROUP = exports.DEFAULT_OBSM_KEYS = exports.COLOR_ENCODINGS = exports.BREAKPOINTS = void 0;
|
|
7
|
-
const LOCAL_STORAGE_KEY = exports.LOCAL_STORAGE_KEY =
|
|
7
|
+
const LOCAL_STORAGE_KEY = exports.LOCAL_STORAGE_KEY = 'CHERITA';
|
|
8
8
|
const PLOT_TYPES = exports.PLOT_TYPES = {
|
|
9
|
-
SCATTERPLOT:
|
|
10
|
-
DOTPLOT:
|
|
11
|
-
HEATMAP:
|
|
12
|
-
MATRIXPLOT:
|
|
13
|
-
VIOLINPLOT:
|
|
9
|
+
SCATTERPLOT: 'scatterplot',
|
|
10
|
+
DOTPLOT: 'dotplot',
|
|
11
|
+
HEATMAP: 'heatmap',
|
|
12
|
+
MATRIXPLOT: 'matrixplot',
|
|
13
|
+
VIOLINPLOT: 'violinplot'
|
|
14
14
|
};
|
|
15
15
|
const COLOR_ENCODINGS = exports.COLOR_ENCODINGS = {
|
|
16
|
-
VAR:
|
|
17
|
-
OBS:
|
|
16
|
+
VAR: 'var',
|
|
17
|
+
OBS: 'obs'
|
|
18
18
|
};
|
|
19
19
|
const OBS_TYPES = exports.OBS_TYPES = {
|
|
20
|
-
CATEGORICAL:
|
|
21
|
-
DISCRETE:
|
|
22
|
-
CONTINUOUS:
|
|
23
|
-
BOOLEAN:
|
|
20
|
+
CATEGORICAL: 'categorical',
|
|
21
|
+
DISCRETE: 'discrete',
|
|
22
|
+
CONTINUOUS: 'continuous',
|
|
23
|
+
BOOLEAN: 'boolean'
|
|
24
24
|
};
|
|
25
25
|
const VAR_SORT = exports.VAR_SORT = {
|
|
26
26
|
NONE: null,
|
|
27
|
-
NAME:
|
|
28
|
-
MATRIX:
|
|
27
|
+
NAME: 'name',
|
|
28
|
+
MATRIX: 'matrix'
|
|
29
29
|
};
|
|
30
30
|
const VAR_SORT_ORDER = exports.VAR_SORT_ORDER = {
|
|
31
|
-
ASC:
|
|
32
|
-
DESC:
|
|
31
|
+
ASC: 'asc',
|
|
32
|
+
DESC: 'desc'
|
|
33
33
|
};
|
|
34
34
|
const SELECTED_POLYGON_FILLCOLOR = exports.SELECTED_POLYGON_FILLCOLOR = [107, 170, 209, 255 / 2];
|
|
35
35
|
const UNSELECTED_POLYGON_FILLCOLOR = exports.UNSELECTED_POLYGON_FILLCOLOR = [167, 191, 211, 255 / 3];
|
|
36
36
|
const SELECTION_MODES = exports.SELECTION_MODES = {
|
|
37
|
-
SINGLE:
|
|
38
|
-
MULTIPLE:
|
|
37
|
+
SINGLE: 'single',
|
|
38
|
+
MULTIPLE: 'multiple'
|
|
39
39
|
};
|
|
40
40
|
const VIOLIN_MODES = exports.VIOLIN_MODES = {
|
|
41
|
-
MULTIKEY:
|
|
42
|
-
GROUPBY:
|
|
41
|
+
MULTIKEY: 'multikey',
|
|
42
|
+
GROUPBY: 'groupby'
|
|
43
43
|
};
|
|
44
44
|
const MATRIXPLOT_SCALES = exports.MATRIXPLOT_SCALES = {
|
|
45
45
|
NONE: {
|
|
46
46
|
value: null,
|
|
47
|
-
name:
|
|
47
|
+
name: 'None'
|
|
48
48
|
},
|
|
49
49
|
GROUP: {
|
|
50
|
-
value:
|
|
51
|
-
name:
|
|
50
|
+
value: 'group',
|
|
51
|
+
name: 'Group'
|
|
52
52
|
},
|
|
53
53
|
VAR: {
|
|
54
|
-
value:
|
|
55
|
-
name:
|
|
54
|
+
value: 'var',
|
|
55
|
+
name: 'Var'
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
58
|
const DOTPLOT_SCALES = exports.DOTPLOT_SCALES = {
|
|
59
59
|
NONE: {
|
|
60
60
|
value: null,
|
|
61
|
-
name:
|
|
61
|
+
name: 'None'
|
|
62
62
|
},
|
|
63
63
|
GROUP: {
|
|
64
|
-
value:
|
|
65
|
-
name:
|
|
64
|
+
value: 'group',
|
|
65
|
+
name: 'Group'
|
|
66
66
|
},
|
|
67
67
|
VAR: {
|
|
68
|
-
value:
|
|
69
|
-
name:
|
|
68
|
+
value: 'var',
|
|
69
|
+
name: 'Var'
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
72
|
const VIOLINPLOT_SCALES = exports.VIOLINPLOT_SCALES = {
|
|
73
73
|
WIDTH: {
|
|
74
|
-
value:
|
|
75
|
-
name:
|
|
74
|
+
value: 'width',
|
|
75
|
+
name: 'Width'
|
|
76
76
|
},
|
|
77
77
|
COUNT: {
|
|
78
|
-
value:
|
|
79
|
-
name:
|
|
78
|
+
value: 'count',
|
|
79
|
+
name: 'Count'
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
82
|
const PSEUDOSPATIAL_PLOT_TYPES = exports.PSEUDOSPATIAL_PLOT_TYPES = {
|
|
83
|
-
GENE:
|
|
84
|
-
CATEGORICAL:
|
|
85
|
-
CONTINUOUS:
|
|
86
|
-
MASKS:
|
|
83
|
+
GENE: 'gene',
|
|
84
|
+
CATEGORICAL: 'categorical',
|
|
85
|
+
CONTINUOUS: 'continuous',
|
|
86
|
+
MASKS: 'masks'
|
|
87
87
|
};
|
|
88
88
|
const PSEUDOSPATIAL_CATEGORICAL_MODES = exports.PSEUDOSPATIAL_CATEGORICAL_MODES = {
|
|
89
89
|
ACROSS: {
|
|
90
|
-
value:
|
|
91
|
-
name:
|
|
90
|
+
value: 'across',
|
|
91
|
+
name: '% across sections'
|
|
92
92
|
},
|
|
93
93
|
WITHIN: {
|
|
94
|
-
value:
|
|
95
|
-
name:
|
|
94
|
+
value: 'within',
|
|
95
|
+
name: '% within section'
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
98
|
|
|
99
99
|
// `default` cols to be shown out of accordion, at top of obslist
|
|
100
100
|
// default values from cellxgene schema
|
|
101
|
-
const DEFAULT_OBS_GROUP = exports.DEFAULT_OBS_GROUP = [
|
|
102
|
-
const PLOTLY_MODEBAR_BUTTONS = exports.PLOTLY_MODEBAR_BUTTONS = [
|
|
101
|
+
const DEFAULT_OBS_GROUP = exports.DEFAULT_OBS_GROUP = ['assay', 'cell_type', 'development_stage', 'disease', 'donor_id', 'organism', 'self_reported_ethnicity', 'sex', 'suspension_type', 'tissue', 'tissue_type'];
|
|
102
|
+
const PLOTLY_MODEBAR_BUTTONS = exports.PLOTLY_MODEBAR_BUTTONS = ['toImage', 'zoom2d', 'pan2d', 'zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d'];
|
|
103
103
|
const BREAKPOINTS = exports.BREAKPOINTS = {
|
|
104
|
-
LG:
|
|
105
|
-
XL:
|
|
104
|
+
LG: '(max-width: 991.98px)',
|
|
105
|
+
XL: '(max-width: 1199.98px)'
|
|
106
106
|
};
|
|
107
107
|
|
|
108
108
|
// In order of priority
|
|
109
|
-
const DEFAULT_OBSM_KEYS = exports.DEFAULT_OBSM_KEYS = [
|
|
109
|
+
const DEFAULT_OBSM_KEYS = exports.DEFAULT_OBSM_KEYS = ['x_umap', 'x_tsne', 'x_scvi', 'x_pca'];
|
|
@@ -43,7 +43,7 @@ const queryClient = new _reactQuery.QueryClient({
|
|
|
43
43
|
})
|
|
44
44
|
});
|
|
45
45
|
// Type of queries to store responses
|
|
46
|
-
const persistKeys = [
|
|
46
|
+
const persistKeys = ['obs/cols', 'var/names', 'obsm/keys', 'obs/bins', 'obs/distribution'];
|
|
47
47
|
const persistOptions = {
|
|
48
48
|
persister: (0, _querySyncStoragePersister.createSyncStoragePersister)({
|
|
49
49
|
storage: window.localStorage
|
|
@@ -54,13 +54,13 @@ const persistOptions = {
|
|
|
54
54
|
queryKey,
|
|
55
55
|
state
|
|
56
56
|
} = _ref;
|
|
57
|
-
if (state.status ===
|
|
57
|
+
if (state.status === 'success') {
|
|
58
58
|
return persistKeys.includes(queryKey === null || queryKey === void 0 ? void 0 : queryKey[0]);
|
|
59
59
|
}
|
|
60
60
|
return false;
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
|
-
buster: "1.4.1-dev.2025-10-23.
|
|
63
|
+
buster: "1.4.1-dev.2025-10-23.55fbe6ff" || '0.0.0'
|
|
64
64
|
// @TODO: add maxAge and api version numbers as buster
|
|
65
65
|
};
|
|
66
66
|
const initialDataset = {
|
|
@@ -44,7 +44,7 @@ function useFilteredDataDispatch() {
|
|
|
44
44
|
}
|
|
45
45
|
function filterReducer(filteredData, action) {
|
|
46
46
|
switch (action.type) {
|
|
47
|
-
case
|
|
47
|
+
case 'set.obs.indices':
|
|
48
48
|
{
|
|
49
49
|
return _objectSpread(_objectSpread({}, filteredData), {}, {
|
|
50
50
|
obsIndices: action.indices,
|
|
@@ -56,7 +56,7 @@ function filterReducer(filteredData, action) {
|
|
|
56
56
|
}
|
|
57
57
|
default:
|
|
58
58
|
{
|
|
59
|
-
throw Error(
|
|
59
|
+
throw Error('Unknown action: ' + action.type);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -43,7 +43,7 @@ const initialSettings = {
|
|
|
43
43
|
},
|
|
44
44
|
polygons: {},
|
|
45
45
|
controls: {
|
|
46
|
-
colorScale:
|
|
46
|
+
colorScale: 'Viridis',
|
|
47
47
|
range: [0, 1],
|
|
48
48
|
// normalized
|
|
49
49
|
colorAxis: {
|
|
@@ -103,7 +103,7 @@ const validateSettings = settings => {
|
|
|
103
103
|
|
|
104
104
|
// make sure selectedMultiVar are in vars
|
|
105
105
|
if (settings.selectedMultiVar) {
|
|
106
|
-
const notInVars = _lodash.default.differenceBy(settings.selectedMultiVar, settings.vars,
|
|
106
|
+
const notInVars = _lodash.default.differenceBy(settings.selectedMultiVar, settings.vars, 'name');
|
|
107
107
|
if (notInVars.length) {
|
|
108
108
|
settings.vars = [...settings.vars, ...notInVars];
|
|
109
109
|
}
|
|
@@ -173,7 +173,7 @@ function SettingsProvider(_ref2) {
|
|
|
173
173
|
|
|
174
174
|
// If the buster is not set or does not match the current package version,
|
|
175
175
|
// reset localSettings to avoid stale data
|
|
176
|
-
if (!buster || buster !== "1.4.1-dev.2025-10-23.
|
|
176
|
+
if (!buster || buster !== "1.4.1-dev.2025-10-23.55fbe6ff") {
|
|
177
177
|
localSettings = {};
|
|
178
178
|
}
|
|
179
179
|
const initSettings = (0, _react.useRef)(initializer({
|
|
@@ -187,9 +187,9 @@ function SettingsProvider(_ref2) {
|
|
|
187
187
|
// If resolvedSettings is null, do not update settings
|
|
188
188
|
if (resolvedSettings) {
|
|
189
189
|
const validatedSettings = validateSettings(resolvedSettings);
|
|
190
|
-
console.log(
|
|
190
|
+
console.log('Initial settings:', validatedSettings);
|
|
191
191
|
dispatch({
|
|
192
|
-
type:
|
|
192
|
+
type: 'init',
|
|
193
193
|
settings: validatedSettings
|
|
194
194
|
});
|
|
195
195
|
}
|
|
@@ -198,12 +198,12 @@ function SettingsProvider(_ref2) {
|
|
|
198
198
|
if (canOverrideSettings && settings) {
|
|
199
199
|
try {
|
|
200
200
|
localStorage.setItem(DATASET_STORAGE_KEY, JSON.stringify(_objectSpread({
|
|
201
|
-
buster: "1.4.1-dev.2025-10-23.
|
|
201
|
+
buster: "1.4.1-dev.2025-10-23.55fbe6ff" || '0.0.0',
|
|
202
202
|
timestamp: Date.now()
|
|
203
|
-
}, _lodash.default.omit(settings,
|
|
203
|
+
}, _lodash.default.omit(settings, 'data'))));
|
|
204
204
|
} catch (err) {
|
|
205
|
-
if (err.code === 22 || err.code === 1014 || err.name ===
|
|
206
|
-
console.err(
|
|
205
|
+
if (err.code === 22 || err.code === 1014 || err.name === 'QuotaExceededError' || err.name === 'NS_ERROR_DOM_QUOTA_REACHED') {
|
|
206
|
+
console.err('Browser storage quota exceeded');
|
|
207
207
|
} else {
|
|
208
208
|
console.err(err);
|
|
209
209
|
}
|
|
@@ -224,17 +224,17 @@ function useSettings() {
|
|
|
224
224
|
function useSettingsDispatch() {
|
|
225
225
|
return (0, _react.useContext)(SettingsDispatchContext);
|
|
226
226
|
}
|
|
227
|
-
const OBS_DATA_KEYS = [
|
|
227
|
+
const OBS_DATA_KEYS = ['name', 'type',
|
|
228
228
|
// categorical and numerical
|
|
229
|
-
|
|
229
|
+
'codes', 'codesMap', 'values', 'n_values', 'value_counts',
|
|
230
230
|
// numerical
|
|
231
|
-
|
|
231
|
+
'bins', 'min', 'max', 'mean', 'median', 'n_unique'];
|
|
232
232
|
const splitObs = obs => {
|
|
233
233
|
if (!obs) return {
|
|
234
234
|
settings: null,
|
|
235
235
|
data: {}
|
|
236
236
|
};
|
|
237
|
-
const settings = _lodash.default.pick(obs, [
|
|
237
|
+
const settings = _lodash.default.pick(obs, ['name', 'omit', 'bins']);
|
|
238
238
|
const data = obs ? {
|
|
239
239
|
[obs.name]: _lodash.default.pick(obs, OBS_DATA_KEYS)
|
|
240
240
|
} : {};
|
|
@@ -250,16 +250,16 @@ const splitVar = v => {
|
|
|
250
250
|
};
|
|
251
251
|
let settings, data;
|
|
252
252
|
if (v.isSet) {
|
|
253
|
-
settings = _objectSpread(_objectSpread({}, _lodash.default.pick(v, [
|
|
253
|
+
settings = _objectSpread(_objectSpread({}, _lodash.default.pick(v, ['name', 'isSet'])), {}, {
|
|
254
254
|
vars: _lodash.default.map(v.vars, vv => ({
|
|
255
255
|
name: vv.name
|
|
256
256
|
}))
|
|
257
257
|
});
|
|
258
|
-
data = _lodash.default.fromPairs(_lodash.default.map(v.vars, vv => [vv.name, _lodash.default.pick(vv, [
|
|
258
|
+
data = _lodash.default.fromPairs(_lodash.default.map(v.vars, vv => [vv.name, _lodash.default.pick(vv, ['name', 'index', 'matrix_index'])]));
|
|
259
259
|
} else {
|
|
260
|
-
settings = _lodash.default.pick(v, [
|
|
260
|
+
settings = _lodash.default.pick(v, ['name', 'isSet']);
|
|
261
261
|
data = {
|
|
262
|
-
[v.name]: _lodash.default.pick(v, [
|
|
262
|
+
[v.name]: _lodash.default.pick(v, ['name', 'index', 'matrix_index'])
|
|
263
263
|
};
|
|
264
264
|
}
|
|
265
265
|
return {
|
|
@@ -269,11 +269,11 @@ const splitVar = v => {
|
|
|
269
269
|
};
|
|
270
270
|
function settingsReducer(settings, action) {
|
|
271
271
|
switch (action.type) {
|
|
272
|
-
case
|
|
272
|
+
case 'init':
|
|
273
273
|
{
|
|
274
274
|
return action.settings;
|
|
275
275
|
}
|
|
276
|
-
case
|
|
276
|
+
case 'select.obs':
|
|
277
277
|
{
|
|
278
278
|
var _action$obs;
|
|
279
279
|
const {
|
|
@@ -297,13 +297,13 @@ function settingsReducer(settings, action) {
|
|
|
297
297
|
})
|
|
298
298
|
});
|
|
299
299
|
}
|
|
300
|
-
case
|
|
300
|
+
case 'select.obsm':
|
|
301
301
|
{
|
|
302
302
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
303
303
|
selectedObsm: action.obsm
|
|
304
304
|
});
|
|
305
305
|
}
|
|
306
|
-
case
|
|
306
|
+
case 'select.var':
|
|
307
307
|
{
|
|
308
308
|
const {
|
|
309
309
|
settings: varSettings,
|
|
@@ -316,7 +316,7 @@ function settingsReducer(settings, action) {
|
|
|
316
316
|
})
|
|
317
317
|
}));
|
|
318
318
|
}
|
|
319
|
-
case
|
|
319
|
+
case 'select.multivar':
|
|
320
320
|
{
|
|
321
321
|
const inMultiVar = settings.selectedMultiVar.some(v => v.name === action.var.name);
|
|
322
322
|
if (inMultiVar) {
|
|
@@ -334,13 +334,13 @@ function settingsReducer(settings, action) {
|
|
|
334
334
|
}));
|
|
335
335
|
}
|
|
336
336
|
}
|
|
337
|
-
case
|
|
337
|
+
case 'deselect.multivar':
|
|
338
338
|
{
|
|
339
339
|
return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
|
|
340
340
|
selectedMultiVar: settings.selectedMultiVar.filter(v => v !== action.var.name)
|
|
341
341
|
}));
|
|
342
342
|
}
|
|
343
|
-
case
|
|
343
|
+
case 'toggle.multivar':
|
|
344
344
|
{
|
|
345
345
|
const inMultiVar = settings.selectedMultiVar.some(v => v.name === action.var.name);
|
|
346
346
|
if (inMultiVar) {
|
|
@@ -360,13 +360,13 @@ function settingsReducer(settings, action) {
|
|
|
360
360
|
}));
|
|
361
361
|
}
|
|
362
362
|
}
|
|
363
|
-
case
|
|
363
|
+
case 'set.colorEncoding':
|
|
364
364
|
{
|
|
365
365
|
return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
|
|
366
366
|
colorEncoding: action.value
|
|
367
367
|
}));
|
|
368
368
|
}
|
|
369
|
-
case
|
|
369
|
+
case 'reset.vars':
|
|
370
370
|
{
|
|
371
371
|
return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
|
|
372
372
|
vars: [],
|
|
@@ -374,19 +374,19 @@ function settingsReducer(settings, action) {
|
|
|
374
374
|
selectedMultiVar: []
|
|
375
375
|
}));
|
|
376
376
|
}
|
|
377
|
-
case
|
|
377
|
+
case 'reset.multiVar':
|
|
378
378
|
{
|
|
379
379
|
return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
|
|
380
380
|
selectedMultiVar: []
|
|
381
381
|
}));
|
|
382
382
|
}
|
|
383
|
-
case
|
|
383
|
+
case 'reset.var':
|
|
384
384
|
{
|
|
385
385
|
return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
|
|
386
386
|
selectedVar: null
|
|
387
387
|
}));
|
|
388
388
|
}
|
|
389
|
-
case
|
|
389
|
+
case 'add.var':
|
|
390
390
|
{
|
|
391
391
|
if (settings.vars.find(v => v.name === action.var.name)) {
|
|
392
392
|
return settings;
|
|
@@ -403,7 +403,7 @@ function settingsReducer(settings, action) {
|
|
|
403
403
|
});
|
|
404
404
|
}
|
|
405
405
|
}
|
|
406
|
-
case
|
|
406
|
+
case 'remove.var':
|
|
407
407
|
{
|
|
408
408
|
var _settings$selectedVar;
|
|
409
409
|
const selectedVar = ((_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name) === action.var.name ? null : settings.selectedVar;
|
|
@@ -414,7 +414,7 @@ function settingsReducer(settings, action) {
|
|
|
414
414
|
selectedMultiVar: selectedMultiVar
|
|
415
415
|
}));
|
|
416
416
|
}
|
|
417
|
-
case
|
|
417
|
+
case 'add.varSet.var':
|
|
418
418
|
{
|
|
419
419
|
const varSet = settings.vars.find(s => s.isSet && s.name === action.varSet.name);
|
|
420
420
|
if (!varSet) {
|
|
@@ -460,7 +460,7 @@ function settingsReducer(settings, action) {
|
|
|
460
460
|
}));
|
|
461
461
|
}
|
|
462
462
|
}
|
|
463
|
-
case
|
|
463
|
+
case 'remove.varSet.var':
|
|
464
464
|
{
|
|
465
465
|
const varSet = settings.vars.find(s => s.isSet && s.name === action.varSet.name);
|
|
466
466
|
if (!varSet) {
|
|
@@ -512,7 +512,7 @@ function settingsReducer(settings, action) {
|
|
|
512
512
|
}
|
|
513
513
|
}
|
|
514
514
|
}
|
|
515
|
-
case
|
|
515
|
+
case 'set.controls.colorScale':
|
|
516
516
|
{
|
|
517
517
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
518
518
|
controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
|
|
@@ -520,7 +520,7 @@ function settingsReducer(settings, action) {
|
|
|
520
520
|
})
|
|
521
521
|
});
|
|
522
522
|
}
|
|
523
|
-
case
|
|
523
|
+
case 'set.controls.range':
|
|
524
524
|
{
|
|
525
525
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
526
526
|
controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
|
|
@@ -528,7 +528,7 @@ function settingsReducer(settings, action) {
|
|
|
528
528
|
})
|
|
529
529
|
});
|
|
530
530
|
}
|
|
531
|
-
case
|
|
531
|
+
case 'set.controls.colorAxis':
|
|
532
532
|
{
|
|
533
533
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
534
534
|
controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
|
|
@@ -536,7 +536,7 @@ function settingsReducer(settings, action) {
|
|
|
536
536
|
})
|
|
537
537
|
});
|
|
538
538
|
}
|
|
539
|
-
case
|
|
539
|
+
case 'set.controls.colorAxis.crange':
|
|
540
540
|
{
|
|
541
541
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
542
542
|
controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
|
|
@@ -547,7 +547,7 @@ function settingsReducer(settings, action) {
|
|
|
547
547
|
})
|
|
548
548
|
});
|
|
549
549
|
}
|
|
550
|
-
case
|
|
550
|
+
case 'set.controls.colorAxis.cmin':
|
|
551
551
|
{
|
|
552
552
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
553
553
|
controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
|
|
@@ -557,7 +557,7 @@ function settingsReducer(settings, action) {
|
|
|
557
557
|
})
|
|
558
558
|
});
|
|
559
559
|
}
|
|
560
|
-
case
|
|
560
|
+
case 'set.controls.colorAxis.cmax':
|
|
561
561
|
{
|
|
562
562
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
563
563
|
controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
|
|
@@ -567,7 +567,7 @@ function settingsReducer(settings, action) {
|
|
|
567
567
|
})
|
|
568
568
|
});
|
|
569
569
|
}
|
|
570
|
-
case
|
|
570
|
+
case 'set.controls.scale':
|
|
571
571
|
{
|
|
572
572
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
573
573
|
controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
|
|
@@ -577,7 +577,7 @@ function settingsReducer(settings, action) {
|
|
|
577
577
|
})
|
|
578
578
|
});
|
|
579
579
|
}
|
|
580
|
-
case
|
|
580
|
+
case 'set.controls.meanOnlyExpressed':
|
|
581
581
|
{
|
|
582
582
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
583
583
|
controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
|
|
@@ -585,7 +585,7 @@ function settingsReducer(settings, action) {
|
|
|
585
585
|
})
|
|
586
586
|
});
|
|
587
587
|
}
|
|
588
|
-
case
|
|
588
|
+
case 'set.controls.expressionCutoff':
|
|
589
589
|
{
|
|
590
590
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
591
591
|
controls: _objectSpread(_objectSpread({}, settings.controls), {}, {
|
|
@@ -593,7 +593,7 @@ function settingsReducer(settings, action) {
|
|
|
593
593
|
})
|
|
594
594
|
});
|
|
595
595
|
}
|
|
596
|
-
case
|
|
596
|
+
case 'toggle.slice.obs':
|
|
597
597
|
{
|
|
598
598
|
if (settings.selectedObs && settings.selectedObs.name === action.obs.name) {
|
|
599
599
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
@@ -617,7 +617,7 @@ function settingsReducer(settings, action) {
|
|
|
617
617
|
});
|
|
618
618
|
}
|
|
619
619
|
}
|
|
620
|
-
case
|
|
620
|
+
case 'toggle.slice.polygons':
|
|
621
621
|
{
|
|
622
622
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
623
623
|
sliceBy: _objectSpread(_objectSpread({}, settings.sliceBy), {}, {
|
|
@@ -625,7 +625,7 @@ function settingsReducer(settings, action) {
|
|
|
625
625
|
})
|
|
626
626
|
});
|
|
627
627
|
}
|
|
628
|
-
case
|
|
628
|
+
case 'disable.slice.polygons':
|
|
629
629
|
{
|
|
630
630
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
631
631
|
sliceBy: _objectSpread(_objectSpread({}, settings.sliceBy), {}, {
|
|
@@ -633,7 +633,7 @@ function settingsReducer(settings, action) {
|
|
|
633
633
|
})
|
|
634
634
|
});
|
|
635
635
|
}
|
|
636
|
-
case
|
|
636
|
+
case 'add.label.obs':
|
|
637
637
|
{
|
|
638
638
|
if (_lodash.default.includes(settings.labelObs, action.obs.name)) {
|
|
639
639
|
return settings;
|
|
@@ -650,19 +650,19 @@ function settingsReducer(settings, action) {
|
|
|
650
650
|
});
|
|
651
651
|
}
|
|
652
652
|
}
|
|
653
|
-
case
|
|
653
|
+
case 'remove.label.obs':
|
|
654
654
|
{
|
|
655
655
|
return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
|
|
656
656
|
labelObs: settings.labelObs.filter(a => a !== action.obsName)
|
|
657
657
|
}));
|
|
658
658
|
}
|
|
659
|
-
case
|
|
659
|
+
case 'reset.label.obs':
|
|
660
660
|
{
|
|
661
661
|
return validateSettings(_objectSpread(_objectSpread({}, settings), {}, {
|
|
662
662
|
labelObs: []
|
|
663
663
|
}));
|
|
664
664
|
}
|
|
665
|
-
case
|
|
665
|
+
case 'set.varSort':
|
|
666
666
|
{
|
|
667
667
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
668
668
|
varSort: _objectSpread(_objectSpread({}, settings.varSort), {}, {
|
|
@@ -673,7 +673,7 @@ function settingsReducer(settings, action) {
|
|
|
673
673
|
})
|
|
674
674
|
});
|
|
675
675
|
}
|
|
676
|
-
case
|
|
676
|
+
case 'set.varSort.sort':
|
|
677
677
|
{
|
|
678
678
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
679
679
|
varSort: _objectSpread(_objectSpread({}, settings.varSort), {}, {
|
|
@@ -683,7 +683,7 @@ function settingsReducer(settings, action) {
|
|
|
683
683
|
})
|
|
684
684
|
});
|
|
685
685
|
}
|
|
686
|
-
case
|
|
686
|
+
case 'set.varSort.sortOrder':
|
|
687
687
|
{
|
|
688
688
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
689
689
|
varSort: _objectSpread(_objectSpread({}, settings.varSort), {}, {
|
|
@@ -693,7 +693,7 @@ function settingsReducer(settings, action) {
|
|
|
693
693
|
})
|
|
694
694
|
});
|
|
695
695
|
}
|
|
696
|
-
case
|
|
696
|
+
case 'set.polygons':
|
|
697
697
|
{
|
|
698
698
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
699
699
|
polygons: _objectSpread(_objectSpread({}, settings.polygons), {}, {
|
|
@@ -701,7 +701,7 @@ function settingsReducer(settings, action) {
|
|
|
701
701
|
})
|
|
702
702
|
});
|
|
703
703
|
}
|
|
704
|
-
case
|
|
704
|
+
case 'set.pseudospatial.maskSet':
|
|
705
705
|
{
|
|
706
706
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
707
707
|
pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
|
|
@@ -709,7 +709,7 @@ function settingsReducer(settings, action) {
|
|
|
709
709
|
})
|
|
710
710
|
});
|
|
711
711
|
}
|
|
712
|
-
case
|
|
712
|
+
case 'set.pseudospatial.maskValues':
|
|
713
713
|
{
|
|
714
714
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
715
715
|
pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
|
|
@@ -717,7 +717,7 @@ function settingsReducer(settings, action) {
|
|
|
717
717
|
})
|
|
718
718
|
});
|
|
719
719
|
}
|
|
720
|
-
case
|
|
720
|
+
case 'set.pseudospatial.categoricalMode':
|
|
721
721
|
{
|
|
722
722
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
723
723
|
pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
|
|
@@ -725,7 +725,7 @@ function settingsReducer(settings, action) {
|
|
|
725
725
|
})
|
|
726
726
|
});
|
|
727
727
|
}
|
|
728
|
-
case
|
|
728
|
+
case 'toggle.pseudospatial.refImg.visible':
|
|
729
729
|
{
|
|
730
730
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
731
731
|
pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
|
|
@@ -735,7 +735,7 @@ function settingsReducer(settings, action) {
|
|
|
735
735
|
})
|
|
736
736
|
});
|
|
737
737
|
}
|
|
738
|
-
case
|
|
738
|
+
case 'set.pseudospatial.refImg.opacity':
|
|
739
739
|
{
|
|
740
740
|
return _objectSpread(_objectSpread({}, settings), {}, {
|
|
741
741
|
pseudospatial: _objectSpread(_objectSpread({}, settings.pseudospatial), {}, {
|
|
@@ -747,7 +747,7 @@ function settingsReducer(settings, action) {
|
|
|
747
747
|
}
|
|
748
748
|
default:
|
|
749
749
|
{
|
|
750
|
-
throw Error(
|
|
750
|
+
throw Error('Unknown action: ' + action.type);
|
|
751
751
|
}
|
|
752
752
|
}
|
|
753
753
|
}
|
|
@@ -37,7 +37,7 @@ const computeColor = (colormap, value) => {
|
|
|
37
37
|
};
|
|
38
38
|
const rgbToHex = color => {
|
|
39
39
|
const [r, g, b] = color || [0, 0, 0, 0];
|
|
40
|
-
return
|
|
40
|
+
return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
|
|
41
41
|
};
|
|
42
42
|
exports.rgbToHex = rgbToHex;
|
|
43
43
|
const useColor = () => {
|
|
@@ -54,7 +54,7 @@ const useColor = () => {
|
|
|
54
54
|
colorEncoding = settings.colorEncoding,
|
|
55
55
|
colorscale = null
|
|
56
56
|
} = _ref;
|
|
57
|
-
const colormap = colorscale || _colorscales.COLORSCALES[categorical ?
|
|
57
|
+
const colormap = colorscale || _colorscales.COLORSCALES[categorical ? 'Accent' : settings.controls.colorScale];
|
|
58
58
|
if (colorEncoding) {
|
|
59
59
|
if (grayOut) {
|
|
60
60
|
// Mix color with gray manually instead of chroma.mix to get better performance with deck.gl
|