@haniffalab/cherita-react 0.1.12-dev.2024-02-12.20ce0bfd → 0.1.12-dev.2024-02-12.b016d286
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.
|
@@ -64,16 +64,20 @@ function ObsColsList() {
|
|
|
64
64
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
65
65
|
obs = _useState4[0],
|
|
66
66
|
setObs = _useState4[1];
|
|
67
|
-
var _useState5 = (0, _react.useState)(
|
|
67
|
+
var _useState5 = (0, _react.useState)(false),
|
|
68
68
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
var _useState7 = (0, _react.useState)(
|
|
69
|
+
updatedObsColsList = _useState6[0],
|
|
70
|
+
setUpdatedObsColsList = _useState6[1];
|
|
71
|
+
var _useState7 = (0, _react.useState)(null),
|
|
72
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
73
|
+
active = _useState8[0],
|
|
74
|
+
setActive = _useState8[1];
|
|
75
|
+
var _useState9 = (0, _react.useState)({
|
|
72
76
|
url: dataset.url
|
|
73
77
|
}),
|
|
74
|
-
|
|
75
|
-
params =
|
|
76
|
-
setParams =
|
|
78
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
79
|
+
params = _useState10[0],
|
|
80
|
+
setParams = _useState10[1];
|
|
77
81
|
var colorHelper = new _color.ColorHelper();
|
|
78
82
|
(0, _react.useEffect)(function () {
|
|
79
83
|
setParams(function (p) {
|
|
@@ -88,6 +92,17 @@ function ObsColsList() {
|
|
|
88
92
|
fetchedData = _useFetch.fetchedData,
|
|
89
93
|
isPending = _useFetch.isPending,
|
|
90
94
|
serverError = _useFetch.serverError;
|
|
95
|
+
var validateSelection = (0, _react.useCallback)(function (selectedObs) {
|
|
96
|
+
if (updatedObsColsList) {
|
|
97
|
+
if (!_lodash.default.some(obsColsList, selectedObs)) {
|
|
98
|
+
setActive(null);
|
|
99
|
+
dispatch({
|
|
100
|
+
type: "obsSelected",
|
|
101
|
+
obs: null
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}, [dispatch, obsColsList, updatedObsColsList]);
|
|
91
106
|
(0, _react.useEffect)(function () {
|
|
92
107
|
if (!isPending && !serverError) {
|
|
93
108
|
setObs(fetchedData.reduce(function (result, key) {
|
|
@@ -118,13 +133,15 @@ function ObsColsList() {
|
|
|
118
133
|
}
|
|
119
134
|
return d;
|
|
120
135
|
}));
|
|
136
|
+
setUpdatedObsColsList(true);
|
|
121
137
|
}
|
|
122
138
|
}, [fetchedData, isPending, serverError]);
|
|
123
139
|
(0, _react.useEffect)(function () {
|
|
124
140
|
if (dataset.selectedObs) {
|
|
141
|
+
validateSelection(dataset.selectedObs);
|
|
125
142
|
setActive(dataset.selectedObs.name);
|
|
126
143
|
}
|
|
127
|
-
}, [dataset.selectedObs]);
|
|
144
|
+
}, [dataset.selectedObs, validateSelection]);
|
|
128
145
|
(0, _react.useEffect)(function () {
|
|
129
146
|
dispatch({
|
|
130
147
|
type: "set.obs",
|
|
@@ -113,20 +113,24 @@ function VarNamesList(_ref2) {
|
|
|
113
113
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
114
114
|
varNames = _useState8[0],
|
|
115
115
|
setVarNames = _useState8[1];
|
|
116
|
-
var _useState9 = (0, _react.useState)(
|
|
116
|
+
var _useState9 = (0, _react.useState)(false),
|
|
117
117
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
var _useState11 = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ?
|
|
118
|
+
updatedVarNames = _useState10[0],
|
|
119
|
+
setUpdatedVarNames = _useState10[1];
|
|
120
|
+
var _useState11 = (0, _react.useState)(mode ? mode === _constants.SELECTION_MODES.SINGLE ? [dataset.selectVar] : dataset.selectedMultiVar : []),
|
|
121
121
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
var _useState13 = (0, _react.useState)(
|
|
122
|
+
varButtons = _useState12[0],
|
|
123
|
+
setVarButtons = _useState12[1];
|
|
124
|
+
var _useState13 = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ? dataset.selectVar : dataset.selectedMultiVar),
|
|
125
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
126
|
+
active = _useState14[0],
|
|
127
|
+
setActive = _useState14[1];
|
|
128
|
+
var _useState15 = (0, _react.useState)({
|
|
125
129
|
url: dataset.url
|
|
126
130
|
}),
|
|
127
|
-
|
|
128
|
-
params =
|
|
129
|
-
setParams =
|
|
131
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
132
|
+
params = _useState16[0],
|
|
133
|
+
setParams = _useState16[1];
|
|
130
134
|
(0, _react.useEffect)(function () {
|
|
131
135
|
setParams(function (p) {
|
|
132
136
|
return _objectSpread(_objectSpread({}, p), {}, {
|
|
@@ -140,23 +144,49 @@ function VarNamesList(_ref2) {
|
|
|
140
144
|
fetchedData = _useFetch.fetchedData,
|
|
141
145
|
isPending = _useFetch.isPending,
|
|
142
146
|
serverError = _useFetch.serverError;
|
|
147
|
+
var validateSelection = (0, _react.useCallback)(function (selectedVar, mode) {
|
|
148
|
+
if (updatedVarNames) {
|
|
149
|
+
if (mode === _constants.SELECTION_MODES.SINGLE) {
|
|
150
|
+
if (selectedVar && !_lodash.default.some(varNames, selectedVar)) {
|
|
151
|
+
setActive(null);
|
|
152
|
+
dispatch({
|
|
153
|
+
type: "varSelected",
|
|
154
|
+
var: null
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
} else {
|
|
158
|
+
if (selectedVar.length && !_lodash.default.every(selectedVar, function (v) {
|
|
159
|
+
return _lodash.default.some(varNames, v);
|
|
160
|
+
})) {
|
|
161
|
+
setActive([]);
|
|
162
|
+
dispatch({
|
|
163
|
+
type: "multiVarReset",
|
|
164
|
+
var: []
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}, [dispatch, varNames, updatedVarNames]);
|
|
143
170
|
(0, _react.useEffect)(function () {
|
|
144
171
|
if (!isPending && !serverError) {
|
|
145
172
|
setVarNames(fetchedData);
|
|
173
|
+
setUpdatedVarNames(true);
|
|
146
174
|
}
|
|
147
175
|
}, [fetchedData, isPending, serverError]);
|
|
148
176
|
(0, _react.useEffect)(function () {
|
|
149
177
|
if (mode === _constants.SELECTION_MODES.SINGLE && dataset.selectedVar) {
|
|
178
|
+
validateSelection(dataset.selectVar, mode);
|
|
150
179
|
setActive(dataset.selectedVar.matrix_index);
|
|
151
180
|
}
|
|
152
|
-
}, [mode, dataset.selectedVar]);
|
|
181
|
+
}, [mode, dataset.selectedVar, dataset.selectVar, validateSelection]);
|
|
153
182
|
(0, _react.useEffect)(function () {
|
|
154
183
|
if (mode === _constants.SELECTION_MODES.MULTIPLE) {
|
|
184
|
+
validateSelection(dataset.selectedMultiVar, mode);
|
|
155
185
|
setActive(dataset.selectedMultiVar.map(function (i) {
|
|
156
186
|
return i.matrix_index;
|
|
157
187
|
}));
|
|
158
188
|
}
|
|
159
|
-
}, [mode, dataset.selectedMultiVar]);
|
|
189
|
+
}, [mode, dataset.selectedMultiVar, validateSelection]);
|
|
160
190
|
var selectVar = function selectVar(item) {
|
|
161
191
|
setVarButtons(function () {
|
|
162
192
|
if (varButtons[0] && varButtons.find(function (v) {
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.VIOLIN_MODES = exports.VIOLINPLOT_STANDARDSCALES = exports.SELECTION_MODES = exports.PLOTLY_COLORSCALES = exports.MATRIXPLOT_STANDARDSCALES = exports.DOTPLOT_STANDARDSCALES = exports.CHROMA_COLORSCALES = void 0;
|
|
6
|
+
exports.VIOLIN_MODES = exports.VIOLINPLOT_STANDARDSCALES = exports.SELECTION_MODES = exports.PLOTLY_COLORSCALES = exports.MATRIXPLOT_STANDARDSCALES = exports.LOCAL_STORAGE_KEY = exports.DOTPLOT_STANDARDSCALES = exports.CHROMA_COLORSCALES = void 0;
|
|
7
|
+
var LOCAL_STORAGE_KEY = "CHERITA";
|
|
8
|
+
exports.LOCAL_STORAGE_KEY = LOCAL_STORAGE_KEY;
|
|
7
9
|
var PLOTLY_COLORSCALES = ["Blackbody", "Bluered", "Blues", "Cividis", "Earth", "Electric", "Greens", "Greys", "Hot", "Jet", "Picnic", "Portland", "Rainbow", "RdBu", "Reds", "Viridis", "YlGnBu", "YlOrRd"];
|
|
8
10
|
exports.PLOTLY_COLORSCALES = PLOTLY_COLORSCALES;
|
|
9
11
|
var CHROMA_COLORSCALES = {
|
|
@@ -9,9 +9,12 @@ exports.DatasetProvider = DatasetProvider;
|
|
|
9
9
|
exports.useDataset = useDataset;
|
|
10
10
|
exports.useDatasetDispatch = useDatasetDispatch;
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
12
13
|
var _reactQuery = require("@tanstack/react-query");
|
|
13
14
|
var _reactQueryPersistClient = require("@tanstack/react-query-persist-client");
|
|
14
15
|
var _querySyncStoragePersister = require("@tanstack/query-sync-storage-persister");
|
|
16
|
+
var _constants = require("../constants/constants");
|
|
17
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
19
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
20
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
@@ -36,15 +39,17 @@ exports.DatasetDispatchContext = DatasetDispatchContext;
|
|
|
36
39
|
var queryClient = new _reactQuery.QueryClient({
|
|
37
40
|
defaultOptions: {
|
|
38
41
|
queries: {
|
|
39
|
-
gcTime: 1000 * 60 * 60 * 24
|
|
42
|
+
gcTime: 1000 * 60 * 60 * 24 * 7 // store for a week
|
|
40
43
|
}
|
|
41
44
|
},
|
|
45
|
+
|
|
42
46
|
queryCache: new _reactQuery.QueryCache({
|
|
43
47
|
onError: function onError(error, query) {
|
|
44
48
|
console.error(error);
|
|
45
49
|
}
|
|
46
50
|
})
|
|
47
51
|
});
|
|
52
|
+
// Type of queries to store responses
|
|
48
53
|
var persistKeys = ["obs/cols", "var/names", "obsm/keys"];
|
|
49
54
|
var persistOptions = {
|
|
50
55
|
persister: (0, _querySyncStoragePersister.createSyncStoragePersister)({
|
|
@@ -60,38 +65,59 @@ var persistOptions = {
|
|
|
60
65
|
return false;
|
|
61
66
|
}
|
|
62
67
|
}
|
|
68
|
+
// @TODO: add maxAge and buster (app and api version numbers as busters)
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
var initialDataset = {
|
|
72
|
+
obs: {},
|
|
73
|
+
selectedObs: null,
|
|
74
|
+
selectedObsm: null,
|
|
75
|
+
selectedVar: null,
|
|
76
|
+
selectedMultiObs: [],
|
|
77
|
+
selectedMultiVar: [],
|
|
78
|
+
colorEncoding: null,
|
|
79
|
+
controls: {
|
|
80
|
+
colorScale: "Viridis",
|
|
81
|
+
colorAxis: {
|
|
82
|
+
dmin: 0,
|
|
83
|
+
dmax: 1,
|
|
84
|
+
cmin: 0,
|
|
85
|
+
cmax: 1
|
|
86
|
+
},
|
|
87
|
+
standardScale: null,
|
|
88
|
+
meanOnlyExpressed: false,
|
|
89
|
+
expressionCutoff: 0.0
|
|
90
|
+
},
|
|
91
|
+
state: {
|
|
92
|
+
obs: {}
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
var initializer = function initializer(initialState) {
|
|
96
|
+
var localObj = (JSON.parse(localStorage.getItem(_constants.LOCAL_STORAGE_KEY)) || {})[initialState.url] || {};
|
|
97
|
+
var keys = _lodash.default.keys(initialState);
|
|
98
|
+
var localValues = _lodash.default.pick(localObj, keys);
|
|
99
|
+
return _lodash.default.assign(initialState, localValues);
|
|
63
100
|
};
|
|
64
101
|
function DatasetProvider(_ref2) {
|
|
65
102
|
var dataset_url = _ref2.dataset_url,
|
|
66
103
|
children = _ref2.children;
|
|
67
|
-
var _useReducer = (0, _react.useReducer)(datasetReducer, {
|
|
68
|
-
url: dataset_url
|
|
69
|
-
|
|
70
|
-
selectedObs: null,
|
|
71
|
-
selectedObsm: null,
|
|
72
|
-
selectedVar: null,
|
|
73
|
-
selectedMultiObs: [],
|
|
74
|
-
selectedMultiVar: [],
|
|
75
|
-
colorEncoding: null,
|
|
76
|
-
controls: {
|
|
77
|
-
colorScale: "Viridis",
|
|
78
|
-
colorAxis: {
|
|
79
|
-
dmin: 0,
|
|
80
|
-
dmax: 1,
|
|
81
|
-
cmin: 0,
|
|
82
|
-
cmax: 1
|
|
83
|
-
},
|
|
84
|
-
standardScale: null,
|
|
85
|
-
meanOnlyExpressed: false,
|
|
86
|
-
expressionCutoff: 0.0
|
|
87
|
-
},
|
|
88
|
-
state: {
|
|
89
|
-
obs: {}
|
|
90
|
-
}
|
|
91
|
-
}),
|
|
104
|
+
var _useReducer = (0, _react.useReducer)(datasetReducer, _objectSpread({
|
|
105
|
+
url: dataset_url
|
|
106
|
+
}, initialDataset), initializer),
|
|
92
107
|
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
93
108
|
dataset = _useReducer2[0],
|
|
94
109
|
dispatch = _useReducer2[1];
|
|
110
|
+
(0, _react.useEffect)(function () {
|
|
111
|
+
try {
|
|
112
|
+
localStorage.setItem(_constants.LOCAL_STORAGE_KEY, JSON.stringify(_defineProperty({}, dataset.url, dataset)));
|
|
113
|
+
} catch (err) {
|
|
114
|
+
if (err.code === 22 || err.code === 1014 || err.name === "QuotaExceededError" || err.name === "NS_ERROR_DOM_QUOTA_REACHED") {
|
|
115
|
+
console.log("Browser storage quota exceeded");
|
|
116
|
+
} else {
|
|
117
|
+
console.log(err);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}, [dataset]);
|
|
95
121
|
return /*#__PURE__*/_react.default.createElement(DatasetContext.Provider, {
|
|
96
122
|
value: dataset
|
|
97
123
|
}, /*#__PURE__*/_react.default.createElement(DatasetDispatchContext.Provider, {
|
|
@@ -163,6 +189,12 @@ function datasetReducer(dataset, action) {
|
|
|
163
189
|
colorEncoding: action.value
|
|
164
190
|
});
|
|
165
191
|
}
|
|
192
|
+
case "multiVarReset":
|
|
193
|
+
{
|
|
194
|
+
return _objectSpread(_objectSpread({}, dataset), {}, {
|
|
195
|
+
selectedMultiVar: []
|
|
196
|
+
});
|
|
197
|
+
}
|
|
166
198
|
case "set.controls.colorScale":
|
|
167
199
|
{
|
|
168
200
|
return _objectSpread(_objectSpread({}, dataset), {}, {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haniffalab/cherita-react",
|
|
3
|
-
"version": "0.1.12-dev.2024-02-12.
|
|
3
|
+
"version": "0.1.12-dev.2024-02-12.b016d286",
|
|
4
4
|
"author": "",
|
|
5
5
|
"license": "",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -78,5 +78,5 @@
|
|
|
78
78
|
"url": "https://github.com/haniffalab/cherita-react/issues"
|
|
79
79
|
},
|
|
80
80
|
"homepage": "https://github.com/haniffalab/cherita-react#readme",
|
|
81
|
-
"prereleaseSha": "
|
|
81
|
+
"prereleaseSha": "b016d286df62d95c86e969e73dd08d268dc41a7a"
|
|
82
82
|
}
|