@haniffalab/cherita-react 0.2.0-dev.2024-05-09.97c686f2 → 0.2.0-dev.2024-05-21.ca7d726c

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.
@@ -3,27 +3,35 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ColorHelper = void 0;
6
+ exports.useColor = void 0;
7
7
  var _chromaJs = _interopRequireDefault(require("chroma-js"));
8
8
  var _lodash = _interopRequireDefault(require("lodash"));
9
9
  var _constants = require("../constants/constants");
10
+ var _DatasetContext = require("../context/DatasetContext");
11
+ var _react = require("react");
10
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
13
- 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); }
14
- class ColorHelper {
15
- constructor() {
16
- _defineProperty(this, "getScale", (colorScale, values) => {
17
- return _chromaJs.default.scale(_constants.CHROMA_COLORSCALES[colorScale]).domain([_lodash.default.min(values), _lodash.default.max(values)]);
18
- });
19
- _defineProperty(this, "getColor", function (colorEncoding, state, value) {
20
- let scale = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _chromaJs.default.scale();
21
- if (colorEncoding === "var") {
22
- return scale(value).rgb();
23
- } else if (colorEncoding === "obs") {
24
- return state.hasOwnProperty(value) ? state[value]["color"] : null;
25
- }
26
- });
27
- }
28
- }
29
- exports.ColorHelper = ColorHelper;
13
+ const useColor = () => {
14
+ var _dataset$selectedObs2;
15
+ const dataset = (0, _DatasetContext.useDataset)();
16
+ const getScale = (0, _react.useCallback)(function () {
17
+ let values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
18
+ const c = _chromaJs.default.scale(_constants.CHROMA_COLORSCALES[dataset.controls.colorScale]).domain(values ? [_lodash.default.min(values), _lodash.default.max(values)] : [0, 1]);
19
+ return c;
20
+ }, [dataset.controls.colorScale]);
21
+ const getColor = (0, _react.useCallback)(function (scale, value) {
22
+ let colorEncoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : dataset.colorEncoding;
23
+ if (colorEncoding === "var") {
24
+ return scale(value).rgb();
25
+ } else if (colorEncoding === "obs") {
26
+ var _dataset$obs$dataset$, _dataset$selectedObs;
27
+ return (_dataset$obs$dataset$ = dataset.obs[(_dataset$selectedObs = dataset.selectedObs) === null || _dataset$selectedObs === void 0 ? void 0 : _dataset$selectedObs.name]) === null || _dataset$obs$dataset$ === void 0 || (_dataset$obs$dataset$ = _dataset$obs$dataset$.state) === null || _dataset$obs$dataset$ === void 0 || (_dataset$obs$dataset$ = _dataset$obs$dataset$[value]) === null || _dataset$obs$dataset$ === void 0 ? void 0 : _dataset$obs$dataset$["color"];
28
+ } else {
29
+ return null;
30
+ }
31
+ }, [dataset.colorEncoding, dataset.obs, (_dataset$selectedObs2 = dataset.selectedObs) === null || _dataset$selectedObs2 === void 0 ? void 0 : _dataset$selectedObs2.name]);
32
+ return {
33
+ getScale,
34
+ getColor
35
+ };
36
+ };
37
+ exports.useColor = useColor;
@@ -3,7 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ZarrHelper = exports.GET_OPTIONS = void 0;
6
+ exports.useZarr = exports.ZarrHelper = exports.GET_OPTIONS = void 0;
7
+ var _react = require("react");
7
8
  var _zarr = require("zarr");
8
9
  const GET_OPTIONS = exports.GET_OPTIONS = {
9
10
  concurrencyLimit: 10,
@@ -26,4 +27,38 @@ class ZarrHelper {
26
27
  return z;
27
28
  }
28
29
  }
29
- exports.ZarrHelper = ZarrHelper;
30
+ exports.ZarrHelper = ZarrHelper;
31
+ const useZarr = function (_ref2) {
32
+ let {
33
+ url,
34
+ path
35
+ } = _ref2;
36
+ let s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
37
+ let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
38
+ const [data, setData] = (0, _react.useState)(null);
39
+ const [isPending, setIsPending] = (0, _react.useState)(true);
40
+ const [serverError, setServerError] = (0, _react.useState)(null);
41
+ (0, _react.useEffect)(() => {
42
+ const fetchData = async () => {
43
+ try {
44
+ setIsPending(true);
45
+ setServerError(null);
46
+ const zarrHelper = new ZarrHelper();
47
+ const z = await zarrHelper.open(url, path);
48
+ const result = await z.get(s, opts);
49
+ setData(result.data);
50
+ } catch (error) {
51
+ setServerError(error.message);
52
+ } finally {
53
+ setIsPending(false);
54
+ }
55
+ };
56
+ fetchData();
57
+ }, [opts, path, s, url]);
58
+ return {
59
+ data,
60
+ isPending,
61
+ serverError
62
+ };
63
+ };
64
+ exports.useZarr = useZarr;
package/dist/index.js CHANGED
@@ -111,6 +111,12 @@ Object.defineProperty(exports, "ScatterplotControls", {
111
111
  return _Scatterplot.ScatterplotControls;
112
112
  }
113
113
  });
114
+ Object.defineProperty(exports, "SearchBar", {
115
+ enumerable: true,
116
+ get: function () {
117
+ return _SearchBar.SearchBar;
118
+ }
119
+ });
114
120
  Object.defineProperty(exports, "VIOLIN_MODES", {
115
121
  enumerable: true,
116
122
  get: function () {
@@ -138,6 +144,7 @@ Object.defineProperty(exports, "ViolinControls", {
138
144
  var _ObsList = require("./components/obs-list/ObsList");
139
145
  var _ObsmList = require("./components/obsm-list/ObsmList");
140
146
  var _VarList = require("./components/var-list/VarList");
147
+ var _SearchBar = require("./components/search-bar/SearchBar");
141
148
  var _Heatmap = require("./components/heatmap/Heatmap");
142
149
  var _Dotplot = require("./components/dotplot/Dotplot");
143
150
  var _Scatterplot = require("./components/scatterplot/Scatterplot");
@@ -11,7 +11,8 @@ var _errors = require("./errors");
11
11
  async function fetchData(endpoint, params) {
12
12
  let signal = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
13
13
  let ms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 300000;
14
- const apiUrl = process.env.REACT_APP_API_URL;
14
+ let apiUrl = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
15
+ apiUrl = apiUrl || process.env.REACT_APP_API_URL;
15
16
  const controller = new AbortController();
16
17
  const timeout = setTimeout(() => {
17
18
  controller.abort(DOMException.TIMEOUT_ERR);
@@ -40,6 +41,10 @@ async function fetchData(endpoint, params) {
40
41
  }
41
42
  const useFetch = function (endpoint, params) {
42
43
  let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
44
+ let apiUrl = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
45
+ const {
46
+ enabled = true
47
+ } = opts;
43
48
  const {
44
49
  data: fetchedData,
45
50
  isLoading: isPending,
@@ -50,7 +55,11 @@ const useFetch = function (endpoint, params) {
50
55
  let {
51
56
  signal
52
57
  } = _ref;
53
- return fetchData(endpoint, params, signal);
58
+ if (enabled) {
59
+ return fetchData(endpoint, params, signal, apiUrl);
60
+ } else {
61
+ return;
62
+ }
54
63
  },
55
64
  ...opts
56
65
  });
@@ -64,6 +73,10 @@ exports.useFetch = useFetch;
64
73
  const useDebouncedFetch = function (endpoint, params) {
65
74
  let delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 500;
66
75
  let opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
76
+ let apiUrl = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
77
+ const {
78
+ enabled = true
79
+ } = opts;
67
80
  const debouncedParams = (0, _usehooks.useDebounce)(params, delay);
68
81
  const {
69
82
  data: fetchedData,
@@ -75,7 +88,11 @@ const useDebouncedFetch = function (endpoint, params) {
75
88
  let {
76
89
  signal
77
90
  } = _ref2;
78
- return fetchData(endpoint, debouncedParams, signal);
91
+ if (enabled) {
92
+ return fetchData(endpoint, debouncedParams, signal, apiUrl);
93
+ } else {
94
+ return;
95
+ }
79
96
  },
80
97
  ...opts
81
98
  });
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useVarSearch = exports.useGetDisease = exports.useDiseaseSearch = void 0;
7
+ var _react = require("react");
8
+ var _DatasetContext = require("../context/DatasetContext");
9
+ var _requests = require("./requests");
10
+ const useDiseaseSearch = () => {
11
+ const ENDPOINT = "diseases";
12
+ const dataset = (0, _DatasetContext.useDataset)();
13
+ const [params, setParams] = (0, _react.useState)({
14
+ url: dataset.url,
15
+ diseaseDatasets: dataset.diseaseDatasets,
16
+ text: ""
17
+ });
18
+ const data = (0, _requests.useFetch)(ENDPOINT, params, {
19
+ enabled: !!params.text.length
20
+ });
21
+ return {
22
+ params,
23
+ setParams,
24
+ data
25
+ };
26
+ };
27
+ exports.useDiseaseSearch = useDiseaseSearch;
28
+ const useVarSearch = () => {
29
+ const ENDPOINT = "var/names";
30
+ const dataset = (0, _DatasetContext.useDataset)();
31
+ const dispatch = (0, _DatasetContext.useDatasetDispatch)();
32
+ const [params, setParams] = (0, _react.useState)({
33
+ url: dataset.url,
34
+ text: ""
35
+ });
36
+ const data = (0, _requests.useFetch)(ENDPOINT, params, {
37
+ enabled: !!params.text.length
38
+ });
39
+ const onSelect = item => {
40
+ dispatch({
41
+ type: "varSelected",
42
+ var: item
43
+ });
44
+ dispatch({
45
+ type: "multiVarSelected",
46
+ var: item
47
+ });
48
+ dispatch({
49
+ type: "set.colorEncoding",
50
+ value: "var"
51
+ });
52
+ };
53
+ return {
54
+ params,
55
+ setParams,
56
+ data,
57
+ onSelect
58
+ };
59
+ };
60
+ exports.useVarSearch = useVarSearch;
61
+ const useGetDisease = () => {
62
+ var _dataset$selectedDise, _dataset$selectedDise2, _params$diseaseName;
63
+ const ENDPOINT = "disease/genes";
64
+ const dataset = (0, _DatasetContext.useDataset)();
65
+ const dispatch = (0, _DatasetContext.useDatasetDispatch)();
66
+ const [params, setParams] = (0, _react.useState)({
67
+ url: dataset.url,
68
+ col: dataset.varNamesCol,
69
+ diseaseName: (_dataset$selectedDise = dataset.selectedDisease) === null || _dataset$selectedDise === void 0 ? void 0 : _dataset$selectedDise.name,
70
+ diseaseDatasets: dataset.diseaseDatasets
71
+ });
72
+ (0, _react.useEffect)(() => {
73
+ setParams(p => {
74
+ return {
75
+ ...p,
76
+ diseaseName: dataset.selectedDisease.name
77
+ };
78
+ });
79
+ }, [(_dataset$selectedDise2 = dataset.selectedDisease) === null || _dataset$selectedDise2 === void 0 ? void 0 : _dataset$selectedDise2.name]);
80
+ const {
81
+ fetchedData,
82
+ isPending,
83
+ serverError
84
+ } = (0, _requests.useFetch)(ENDPOINT, params, {
85
+ enabled: !!((_params$diseaseName = params.diseaseName) !== null && _params$diseaseName !== void 0 && _params$diseaseName.length)
86
+ });
87
+ (0, _react.useEffect)(() => {
88
+ if (!isPending && !serverError) {
89
+ dispatch({
90
+ type: "set.disease.genes",
91
+ genes: fetchedData
92
+ });
93
+ }
94
+ }, [dispatch, fetchedData, isPending, serverError]);
95
+ return;
96
+ };
97
+ exports.useGetDisease = useGetDisease;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haniffalab/cherita-react",
3
- "version": "0.2.0-dev.2024-05-09.97c686f2",
3
+ "version": "0.2.0-dev.2024-05-21.ca7d726c",
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": "97c686f2f71b9fd317123f14ba380ca42cbbbe7f"
81
+ "prereleaseSha": "ca7d726c238e548f4db9899190cd6773f79ea5d0"
82
82
  }