@haniffalab/cherita-react 1.4.1-dev.2025-10-28.696a2f14 → 1.4.1-dev.2025-10-29.f3148d68

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.
@@ -15,12 +15,12 @@ var _reactBootstrap = require("react-bootstrap");
15
15
  var _Accordion = _interopRequireDefault(require("react-bootstrap/Accordion"));
16
16
  var _AccordionButton = require("react-bootstrap/AccordionButton");
17
17
  var _AccordionContext = _interopRequireDefault(require("react-bootstrap/AccordionContext"));
18
- var _ObsItem = require("./ObsItem");
19
18
  var _constants = require("../../constants/constants");
20
19
  var _DatasetContext = require("../../context/DatasetContext");
21
20
  var _SettingsContext = require("../../context/SettingsContext");
22
21
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
23
22
  var _requests = require("../../utils/requests");
23
+ var _ObsItem = require("./ObsItem");
24
24
  var _jsxRuntime = require("react/jsx-runtime");
25
25
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
26
  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; }
@@ -69,7 +69,7 @@ function ObsColsList(_ref2) {
69
69
  const dispatch = (0, _SettingsContext.useSettingsDispatch)();
70
70
  const [enableGroups, setEnableGroups] = (0, _react.useState)(enableObsGroups);
71
71
  const [obsCols, setObsCols] = (0, _react.useState)(null);
72
- const [active, setActive] = (0, _react.useState)([...[(_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.name]]);
72
+ const [active, setActive] = (0, _react.useState)([...(settings.selectedObs ? [(_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.name] : [])]);
73
73
  const obsGroups = (0, _react.useMemo)(() => {
74
74
  var _dataset$obsGroups;
75
75
  return _objectSpread({
@@ -132,17 +132,21 @@ function ObsColsList(_ref2) {
132
132
  }
133
133
  }, [fetchedData, isPending, obsGroups, serverError, enableGroups, (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.name, (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.omit]);
134
134
  (0, _react.useEffect)(() => {
135
- if (obsCols) {
136
- var _settings$selectedObs5;
137
- if (!obsCols[(_settings$selectedObs5 = settings.selectedObs) === null || _settings$selectedObs5 === void 0 ? void 0 : _settings$selectedObs5.name]) {
138
- setActive([]);
135
+ if (obsCols && settings.selectedObs) {
136
+ const {
137
+ name
138
+ } = settings.selectedObs;
139
+ if (!obsCols[name]) {
139
140
  dispatch({
140
141
  type: 'select.obs',
141
142
  obs: null
142
143
  });
144
+ if (active.includes(name)) {
145
+ setActive(prev => _lodash.default.without(prev, name));
146
+ }
143
147
  }
144
148
  }
145
- }, [settings.selectedObs, dispatch, obsCols]);
149
+ }, [settings.selectedObs, dispatch, obsCols, active]);
146
150
  const handleAccordionToggle = (itemName, isCurrentEventKey) => {
147
151
  if (isCurrentEventKey) {
148
152
  _lodash.default.delay(() => setActive(prev => _lodash.default.without(prev, itemName)), 250);
@@ -151,7 +155,7 @@ function ObsColsList(_ref2) {
151
155
  }
152
156
  };
153
157
  const toggleAll = item => {
154
- var _settings$selectedObs6;
158
+ var _settings$selectedObs5;
155
159
  const omit = item.omit.length ? [] : item.values;
156
160
  setObsCols(o => {
157
161
  return _objectSpread(_objectSpread({}, o), {}, {
@@ -160,7 +164,7 @@ function ObsColsList(_ref2) {
160
164
  })
161
165
  });
162
166
  });
163
- if (((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.name) === item.name) {
167
+ if (((_settings$selectedObs5 = settings.selectedObs) === null || _settings$selectedObs5 === void 0 ? void 0 : _settings$selectedObs5.name) === item.name) {
164
168
  dispatch({
165
169
  type: 'select.obs',
166
170
  obs: _objectSpread(_objectSpread({}, item), {}, {
@@ -200,7 +204,7 @@ function ObsColsList(_ref2) {
200
204
  });
201
205
  };
202
206
  const toggleObs = (item, value) => {
203
- var _settings$selectedObs7;
207
+ var _settings$selectedObs6;
204
208
  let omit;
205
209
  if (_lodash.default.includes(item.omit, value)) {
206
210
  omit = item.omit.filter(i => i !== value);
@@ -214,7 +218,7 @@ function ObsColsList(_ref2) {
214
218
  })
215
219
  });
216
220
  });
217
- if (((_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.name) === item.name) {
221
+ if (((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.name) === item.name) {
218
222
  dispatch({
219
223
  type: 'select.obs',
220
224
  obs: _objectSpread(_objectSpread({}, item), {}, {
@@ -224,7 +228,7 @@ function ObsColsList(_ref2) {
224
228
  }
225
229
  };
226
230
  const obsItem = item => {
227
- var _settings$selectedObs8, _settings$selectedObs9;
231
+ var _settings$selectedObs7, _settings$selectedObs8;
228
232
  if (!item) {
229
233
  return null;
230
234
  }
@@ -232,8 +236,8 @@ function ObsColsList(_ref2) {
232
236
  return null;
233
237
  }
234
238
  const inLabelObs = _lodash.default.includes(settings.labelObs, item.name);
235
- const inSliceObs = settings.sliceBy.obs && ((_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.name) === item.name;
236
- const isColorEncoding = (showSelectedAsActive || settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS) && ((_settings$selectedObs9 = settings.selectedObs) === null || _settings$selectedObs9 === void 0 ? void 0 : _settings$selectedObs9.name) === item.name;
239
+ const inSliceObs = settings.sliceBy.obs && ((_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.name) === item.name;
240
+ const isColorEncoding = (showSelectedAsActive || settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS) && ((_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.name) === item.name;
237
241
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
238
242
  className: "accordion-item",
239
243
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(ObsAccordionToggle, {
@@ -60,7 +60,7 @@ const persistOptions = {
60
60
  return false;
61
61
  }
62
62
  },
63
- buster: "1.4.1-dev.2025-10-28.696a2f14" || '0.0.0'
63
+ buster: "1.4.1-dev.2025-10-29.f3148d68" || '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.1-dev.2025-10-28.696a2f14") {
176
+ if (!buster || buster !== "1.4.1-dev.2025-10-29.f3148d68") {
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.1-dev.2025-10-28.696a2f14" || '0.0.0',
201
+ buster: "1.4.1-dev.2025-10-29.f3148d68" || '0.0.0',
202
202
  timestamp: Date.now()
203
203
  }, _lodash.default.omit(settings, 'data'))));
204
204
  } catch (err) {
@@ -14,12 +14,12 @@ import { Alert } from 'react-bootstrap';
14
14
  import Accordion from 'react-bootstrap/Accordion';
15
15
  import { useAccordionButton } from 'react-bootstrap/AccordionButton';
16
16
  import AccordionContext from 'react-bootstrap/AccordionContext';
17
- import { CategoricalObs, ContinuousObs } from './ObsItem';
18
17
  import { COLOR_ENCODINGS, DEFAULT_OBS_GROUP, OBS_TYPES } from '../../constants/constants';
19
18
  import { useDataset } from '../../context/DatasetContext';
20
19
  import { useSettings, useSettingsDispatch } from '../../context/SettingsContext';
21
20
  import { LoadingSpinner } from '../../utils/LoadingIndicators';
22
21
  import { useFetch } from '../../utils/requests';
22
+ import { CategoricalObs, ContinuousObs } from './ObsItem';
23
23
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
24
24
  const ObsAccordionToggle = _ref => {
25
25
  let {
@@ -62,7 +62,7 @@ export function ObsColsList(_ref2) {
62
62
  const dispatch = useSettingsDispatch();
63
63
  const [enableGroups, setEnableGroups] = useState(enableObsGroups);
64
64
  const [obsCols, setObsCols] = useState(null);
65
- const [active, setActive] = useState([...[(_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.name]]);
65
+ const [active, setActive] = useState([...(settings.selectedObs ? [(_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.name] : [])]);
66
66
  const obsGroups = useMemo(() => {
67
67
  var _dataset$obsGroups;
68
68
  return _objectSpread({
@@ -125,17 +125,21 @@ export function ObsColsList(_ref2) {
125
125
  }
126
126
  }, [fetchedData, isPending, obsGroups, serverError, enableGroups, (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.name, (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.omit]);
127
127
  useEffect(() => {
128
- if (obsCols) {
129
- var _settings$selectedObs5;
130
- if (!obsCols[(_settings$selectedObs5 = settings.selectedObs) === null || _settings$selectedObs5 === void 0 ? void 0 : _settings$selectedObs5.name]) {
131
- setActive([]);
128
+ if (obsCols && settings.selectedObs) {
129
+ const {
130
+ name
131
+ } = settings.selectedObs;
132
+ if (!obsCols[name]) {
132
133
  dispatch({
133
134
  type: 'select.obs',
134
135
  obs: null
135
136
  });
137
+ if (active.includes(name)) {
138
+ setActive(prev => _.without(prev, name));
139
+ }
136
140
  }
137
141
  }
138
- }, [settings.selectedObs, dispatch, obsCols]);
142
+ }, [settings.selectedObs, dispatch, obsCols, active]);
139
143
  const handleAccordionToggle = (itemName, isCurrentEventKey) => {
140
144
  if (isCurrentEventKey) {
141
145
  _.delay(() => setActive(prev => _.without(prev, itemName)), 250);
@@ -144,7 +148,7 @@ export function ObsColsList(_ref2) {
144
148
  }
145
149
  };
146
150
  const toggleAll = item => {
147
- var _settings$selectedObs6;
151
+ var _settings$selectedObs5;
148
152
  const omit = item.omit.length ? [] : item.values;
149
153
  setObsCols(o => {
150
154
  return _objectSpread(_objectSpread({}, o), {}, {
@@ -153,7 +157,7 @@ export function ObsColsList(_ref2) {
153
157
  })
154
158
  });
155
159
  });
156
- if (((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.name) === item.name) {
160
+ if (((_settings$selectedObs5 = settings.selectedObs) === null || _settings$selectedObs5 === void 0 ? void 0 : _settings$selectedObs5.name) === item.name) {
157
161
  dispatch({
158
162
  type: 'select.obs',
159
163
  obs: _objectSpread(_objectSpread({}, item), {}, {
@@ -193,7 +197,7 @@ export function ObsColsList(_ref2) {
193
197
  });
194
198
  };
195
199
  const toggleObs = (item, value) => {
196
- var _settings$selectedObs7;
200
+ var _settings$selectedObs6;
197
201
  let omit;
198
202
  if (_.includes(item.omit, value)) {
199
203
  omit = item.omit.filter(i => i !== value);
@@ -207,7 +211,7 @@ export function ObsColsList(_ref2) {
207
211
  })
208
212
  });
209
213
  });
210
- if (((_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.name) === item.name) {
214
+ if (((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.name) === item.name) {
211
215
  dispatch({
212
216
  type: 'select.obs',
213
217
  obs: _objectSpread(_objectSpread({}, item), {}, {
@@ -217,7 +221,7 @@ export function ObsColsList(_ref2) {
217
221
  }
218
222
  };
219
223
  const obsItem = item => {
220
- var _settings$selectedObs8, _settings$selectedObs9;
224
+ var _settings$selectedObs7, _settings$selectedObs8;
221
225
  if (!item) {
222
226
  return null;
223
227
  }
@@ -225,8 +229,8 @@ export function ObsColsList(_ref2) {
225
229
  return null;
226
230
  }
227
231
  const inLabelObs = _.includes(settings.labelObs, item.name);
228
- const inSliceObs = settings.sliceBy.obs && ((_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.name) === item.name;
229
- const isColorEncoding = (showSelectedAsActive || settings.colorEncoding === COLOR_ENCODINGS.OBS) && ((_settings$selectedObs9 = settings.selectedObs) === null || _settings$selectedObs9 === void 0 ? void 0 : _settings$selectedObs9.name) === item.name;
232
+ const inSliceObs = settings.sliceBy.obs && ((_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.name) === item.name;
233
+ const isColorEncoding = (showSelectedAsActive || settings.colorEncoding === COLOR_ENCODINGS.OBS) && ((_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.name) === item.name;
230
234
  return /*#__PURE__*/_jsxs("div", {
231
235
  className: "accordion-item",
232
236
  children: [/*#__PURE__*/_jsxs(ObsAccordionToggle, {
@@ -51,7 +51,7 @@ const persistOptions = {
51
51
  return false;
52
52
  }
53
53
  },
54
- buster: "1.4.1-dev.2025-10-28.696a2f14" || '0.0.0'
54
+ buster: "1.4.1-dev.2025-10-29.f3148d68" || '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.1-dev.2025-10-28.696a2f14") {
166
+ if (!buster || buster !== "1.4.1-dev.2025-10-29.f3148d68") {
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.1-dev.2025-10-28.696a2f14" || '0.0.0',
191
+ buster: "1.4.1-dev.2025-10-29.f3148d68" || '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.1-dev.2025-10-28.696a2f14",
3
+ "version": "1.4.1-dev.2025-10-29.f3148d68",
4
4
  "author": "Haniffa Lab",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -64,6 +64,12 @@
64
64
  "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
65
65
  "@babel/preset-env": "^7.22.5",
66
66
  "@babel/preset-react": "^7.22.5",
67
+ "@semantic-release/changelog": "^6.0.3",
68
+ "@semantic-release/commit-analyzer": "^13.0.1",
69
+ "@semantic-release/git": "^10.0.1",
70
+ "@semantic-release/github": "^11.0.6",
71
+ "@semantic-release/npm": "^12.0.2",
72
+ "@semantic-release/release-notes-generator": "^14.1.0",
67
73
  "@testing-library/dom": "^10.4.0",
68
74
  "@testing-library/jest-dom": "^6.6.3",
69
75
  "@testing-library/react": "^16.2.0",
@@ -84,6 +90,7 @@
84
90
  "react": "^18.2.0",
85
91
  "react-dom": "^18.2.0",
86
92
  "sass": "1.77.6",
93
+ "semantic-release": "^24.2.9",
87
94
  "stylelint": "^16.10.0",
88
95
  "stylelint-config-prettier": "^9.0.5",
89
96
  "stylelint-config-standard-scss": "^13.1.0",
@@ -132,5 +139,5 @@
132
139
  "url": "https://github.com/haniffalab/cherita-react/issues"
133
140
  },
134
141
  "homepage": "https://github.com/haniffalab/cherita-react#readme",
135
- "prereleaseSha": "696a2f145d529de10296ee2fb8f5bfc3e8257803"
142
+ "prereleaseSha": "f3148d688cea501c497a22ef8c73760b9c7414fd"
136
143
  }