@haniffalab/cherita-react 1.4.4 → 1.4.5

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.
@@ -14,11 +14,6 @@ var _requests = require("../../utils/requests");
14
14
  var _Skeleton = require("../../utils/Skeleton");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
16
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
- 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; }
18
- 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; }
19
- 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; }
20
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
21
- 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); }
22
17
  function ObsmKeysList(_ref) {
23
18
  let {
24
19
  setHasObsm
@@ -29,16 +24,9 @@ function ObsmKeysList(_ref) {
29
24
  const dispatch = (0, _SettingsContext.useSettingsDispatch)();
30
25
  const [obsmKeysList, setObsmKeysList] = (0, _react.useState)([]);
31
26
  const [active, setActive] = (0, _react.useState)(null);
32
- const [params, setParams] = (0, _react.useState)({
27
+ const params = (0, _react.useMemo)(() => ({
33
28
  url: dataset.url
34
- });
35
- (0, _react.useEffect)(() => {
36
- setParams(p => {
37
- return _objectSpread(_objectSpread({}, p), {}, {
38
- url: dataset.url
39
- });
40
- });
41
- }, [dataset.url]);
29
+ }), [dataset.url]);
42
30
  const {
43
31
  fetchedData,
44
32
  isPending,
@@ -47,15 +35,31 @@ function ObsmKeysList(_ref) {
47
35
  refetchOnMount: false
48
36
  });
49
37
  (0, _react.useEffect)(() => {
50
- if (!isPending && !serverError) {
51
- if (!fetchedData || !fetchedData.length) {
38
+ if (!isPending) {
39
+ if (serverError || !fetchedData || !fetchedData.length) {
52
40
  setHasObsm(false);
41
+ setObsmKeysList([]);
42
+ if (settings.selectedObsm) {
43
+ dispatch({
44
+ type: 'select.obsm',
45
+ obsm: null
46
+ });
47
+ }
53
48
  } else {
54
49
  setHasObsm(true);
55
50
  setObsmKeysList(fetchedData);
56
-
57
- // Set default obsm if in keys list and not selected
58
- if (!settings.selectedObsm) {
51
+ if (settings.selectedObsm) {
52
+ // If selected obsm is not in keys list, reset to null
53
+ if (!_lodash.default.includes(fetchedData, settings.selectedObsm)) {
54
+ dispatch({
55
+ type: 'select.obsm',
56
+ obsm: null
57
+ });
58
+ } else {
59
+ setActive(settings.selectedObsm);
60
+ }
61
+ } else {
62
+ // Set default obsm if in keys list and not selected
59
63
  // Follow DEFAULT_OBSM_KEYS order
60
64
  _lodash.default.each(_constants.DEFAULT_OBSM_KEYS, k => {
61
65
  const defaultObsm = _lodash.default.find(fetchedData, item => item.toLowerCase() === k);
@@ -69,17 +73,6 @@ function ObsmKeysList(_ref) {
69
73
  });
70
74
  }
71
75
  }
72
- if (settings.selectedObsm) {
73
- // If selected obsm is not in keys list, reset to null
74
- if (!_lodash.default.includes(fetchedData || [], settings.selectedObsm)) {
75
- dispatch({
76
- type: 'select.obsm',
77
- obsm: null
78
- });
79
- } else {
80
- setActive(settings.selectedObsm);
81
- }
82
- }
83
76
  }
84
77
  }, [dispatch, fetchedData, isPending, serverError, setHasObsm, settings.selectedObsm]);
85
78
  const obsmList = obsmKeysList.map(item => {
@@ -165,13 +165,11 @@ function SelectionItem(_ref3) {
165
165
  selectVar();
166
166
  },
167
167
  disabled: isNotInData,
168
- title: isNotInData ? 'Not present in data' : 'Set as color encoding',
169
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
168
+ title: isNotInData ? 'Not present in data' : isMultiple ? isActive ? 'Remove from plot' : 'Add to plot' : 'Set as color encoding',
169
+ children: [!isMultiple && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
170
170
  icon: _freeSolidSvgIcons.faDroplet
171
171
  }), isMultiple && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
172
- icon: _freeSolidSvgIcons.faPlus,
173
- size: "xs",
174
- className: "ps-xs-1"
172
+ icon: _freeSolidSvgIcons.faCheck
175
173
  })]
176
174
  }, item.matrix_index), showRemove && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
177
175
  type: "button",
@@ -9,10 +9,10 @@ var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
9
9
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
10
10
  var _lodash = _interopRequireDefault(require("lodash"));
11
11
  var _reactBootstrap = require("react-bootstrap");
12
- var _VarItem = require("./VarItem");
13
12
  var _constants = require("../../constants/constants");
14
13
  var _SettingsContext = require("../../context/SettingsContext");
15
14
  var _SearchBar = require("../search-bar/SearchBar");
15
+ var _VarItem = require("./VarItem");
16
16
  var _jsxRuntime = require("react/jsx-runtime");
17
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
18
  // @TODO: add button to score genes and plot
@@ -101,13 +101,11 @@ function SelectionSet(_ref) {
101
101
  selectSet();
102
102
  },
103
103
  disabled: !set.vars.length,
104
- title: "Set as color encoding",
105
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
104
+ title: !set.vars.length ? 'No variables in set' : isMultiple ? isActive ? 'Remove from plot' : 'Add to plot' : 'Set as color encoding',
105
+ children: [!isMultiple && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
106
106
  icon: _freeSolidSvgIcons.faDroplet
107
107
  }), isMultiple && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
108
- icon: _freeSolidSvgIcons.faPlus,
109
- size: "xs",
110
- className: "ps-xs-1"
108
+ icon: _freeSolidSvgIcons.faCheck
111
109
  })]
112
110
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
113
111
  type: "button",
@@ -60,7 +60,7 @@ const persistOptions = {
60
60
  return false;
61
61
  }
62
62
  },
63
- buster: "1.4.4" || '0.0.0'
63
+ buster: "1.4.5" || '0.0.0'
64
64
  // @TODO: add maxAge and api version numbers as buster
65
65
  };
66
66
  const initialDataset = {
@@ -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.4") {
176
+ if (!buster || buster !== "1.4.5") {
177
177
  localSettings = {};
178
178
  }
179
179
  const initSettings = (0, _react.useRef)(initializer({
@@ -198,7 +198,7 @@ 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.4" || '0.0.0',
201
+ buster: "1.4.5" || '0.0.0',
202
202
  timestamp: Date.now()
203
203
  }, _lodash.default.omit(settings, 'data'))));
204
204
  } catch (err) {
@@ -1,9 +1,4 @@
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); }
6
- import { useEffect, useState } from 'react';
1
+ import { useEffect, useState, useMemo } from 'react';
7
2
  import _ from 'lodash';
8
3
  import { Button, ButtonGroup, Dropdown, DropdownButton, OverlayTrigger, Tooltip } from 'react-bootstrap';
9
4
  import { DEFAULT_OBSM_KEYS } from '../../constants/constants';
@@ -22,16 +17,9 @@ export function ObsmKeysList(_ref) {
22
17
  const dispatch = useSettingsDispatch();
23
18
  const [obsmKeysList, setObsmKeysList] = useState([]);
24
19
  const [active, setActive] = useState(null);
25
- const [params, setParams] = useState({
20
+ const params = useMemo(() => ({
26
21
  url: dataset.url
27
- });
28
- useEffect(() => {
29
- setParams(p => {
30
- return _objectSpread(_objectSpread({}, p), {}, {
31
- url: dataset.url
32
- });
33
- });
34
- }, [dataset.url]);
22
+ }), [dataset.url]);
35
23
  const {
36
24
  fetchedData,
37
25
  isPending,
@@ -40,15 +28,31 @@ export function ObsmKeysList(_ref) {
40
28
  refetchOnMount: false
41
29
  });
42
30
  useEffect(() => {
43
- if (!isPending && !serverError) {
44
- if (!fetchedData || !fetchedData.length) {
31
+ if (!isPending) {
32
+ if (serverError || !fetchedData || !fetchedData.length) {
45
33
  setHasObsm(false);
34
+ setObsmKeysList([]);
35
+ if (settings.selectedObsm) {
36
+ dispatch({
37
+ type: 'select.obsm',
38
+ obsm: null
39
+ });
40
+ }
46
41
  } else {
47
42
  setHasObsm(true);
48
43
  setObsmKeysList(fetchedData);
49
-
50
- // Set default obsm if in keys list and not selected
51
- if (!settings.selectedObsm) {
44
+ if (settings.selectedObsm) {
45
+ // If selected obsm is not in keys list, reset to null
46
+ if (!_.includes(fetchedData, settings.selectedObsm)) {
47
+ dispatch({
48
+ type: 'select.obsm',
49
+ obsm: null
50
+ });
51
+ } else {
52
+ setActive(settings.selectedObsm);
53
+ }
54
+ } else {
55
+ // Set default obsm if in keys list and not selected
52
56
  // Follow DEFAULT_OBSM_KEYS order
53
57
  _.each(DEFAULT_OBSM_KEYS, k => {
54
58
  const defaultObsm = _.find(fetchedData, item => item.toLowerCase() === k);
@@ -62,17 +66,6 @@ export function ObsmKeysList(_ref) {
62
66
  });
63
67
  }
64
68
  }
65
- if (settings.selectedObsm) {
66
- // If selected obsm is not in keys list, reset to null
67
- if (!_.includes(fetchedData || [], settings.selectedObsm)) {
68
- dispatch({
69
- type: 'select.obsm',
70
- obsm: null
71
- });
72
- } else {
73
- setActive(settings.selectedObsm);
74
- }
75
- }
76
69
  }
77
70
  }, [dispatch, fetchedData, isPending, serverError, setHasObsm, settings.selectedObsm]);
78
71
  const obsmList = obsmKeysList.map(item => {
@@ -4,7 +4,7 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
4
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
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); }
6
6
  import { useEffect, useState } from 'react';
7
- import { faDroplet, faPlus, faTrash } from '@fortawesome/free-solid-svg-icons';
7
+ import { faCheck, faDroplet, faTrash } from '@fortawesome/free-solid-svg-icons';
8
8
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
9
9
  import { MoreVert } from '@mui/icons-material';
10
10
  import _ from 'lodash';
@@ -156,13 +156,11 @@ export function SelectionItem(_ref3) {
156
156
  selectVar();
157
157
  },
158
158
  disabled: isNotInData,
159
- title: isNotInData ? 'Not present in data' : 'Set as color encoding',
160
- children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
159
+ title: isNotInData ? 'Not present in data' : isMultiple ? isActive ? 'Remove from plot' : 'Add to plot' : 'Set as color encoding',
160
+ children: [!isMultiple && /*#__PURE__*/_jsx(FontAwesomeIcon, {
161
161
  icon: faDroplet
162
162
  }), isMultiple && /*#__PURE__*/_jsx(FontAwesomeIcon, {
163
- icon: faPlus,
164
- size: "xs",
165
- className: "ps-xs-1"
163
+ icon: faCheck
166
164
  })]
167
165
  }, item.matrix_index), showRemove && /*#__PURE__*/_jsx(Button, {
168
166
  type: "button",
@@ -1,12 +1,12 @@
1
1
  import { useState } from 'react';
2
- import { faChevronDown, faChevronUp, faCircleInfo, faDroplet, faPlus, faTrash } from '@fortawesome/free-solid-svg-icons';
2
+ import { faCheck, faChevronDown, faChevronUp, faCircleInfo, faDroplet, faPlus, faTrash } from '@fortawesome/free-solid-svg-icons';
3
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
4
  import _ from 'lodash';
5
5
  import { Button, Collapse, ListGroup, OverlayTrigger, Tooltip } from 'react-bootstrap';
6
- import { SelectionItem } from './VarItem';
7
6
  import { COLOR_ENCODINGS, SELECTION_MODES } from '../../constants/constants';
8
7
  import { useSettings, useSettingsDispatch } from '../../context/SettingsContext';
9
8
  import { SearchModal } from '../search-bar/SearchBar';
9
+ import { SelectionItem } from './VarItem';
10
10
 
11
11
  // @TODO: add button to score genes and plot
12
12
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
@@ -95,13 +95,11 @@ function SelectionSet(_ref) {
95
95
  selectSet();
96
96
  },
97
97
  disabled: !set.vars.length,
98
- title: "Set as color encoding",
99
- children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
98
+ title: !set.vars.length ? 'No variables in set' : isMultiple ? isActive ? 'Remove from plot' : 'Add to plot' : 'Set as color encoding',
99
+ children: [!isMultiple && /*#__PURE__*/_jsx(FontAwesomeIcon, {
100
100
  icon: faDroplet
101
101
  }), isMultiple && /*#__PURE__*/_jsx(FontAwesomeIcon, {
102
- icon: faPlus,
103
- size: "xs",
104
- className: "ps-xs-1"
102
+ icon: faCheck
105
103
  })]
106
104
  }), /*#__PURE__*/_jsx(Button, {
107
105
  type: "button",
@@ -51,7 +51,7 @@ const persistOptions = {
51
51
  return false;
52
52
  }
53
53
  },
54
- buster: "1.4.4" || '0.0.0'
54
+ buster: "1.4.5" || '0.0.0'
55
55
  // @TODO: add maxAge and api version numbers as buster
56
56
  };
57
57
  const initialDataset = {
@@ -163,7 +163,7 @@ export function SettingsProvider(_ref2) {
163
163
 
164
164
  // If the buster is not set or does not match the current package version,
165
165
  // reset localSettings to avoid stale data
166
- if (!buster || buster !== "1.4.4") {
166
+ if (!buster || buster !== "1.4.5") {
167
167
  localSettings = {};
168
168
  }
169
169
  const initSettings = useRef(initializer({
@@ -188,7 +188,7 @@ export function SettingsProvider(_ref2) {
188
188
  if (canOverrideSettings && settings) {
189
189
  try {
190
190
  localStorage.setItem(DATASET_STORAGE_KEY, JSON.stringify(_objectSpread({
191
- buster: "1.4.4" || '0.0.0',
191
+ buster: "1.4.5" || '0.0.0',
192
192
  timestamp: Date.now()
193
193
  }, _.omit(settings, 'data'))));
194
194
  } catch (err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haniffalab/cherita-react",
3
- "version": "1.4.4",
3
+ "version": "1.4.5",
4
4
  "author": "Haniffa Lab",
5
5
  "license": "MIT",
6
6
  "keywords": [