@haniffalab/cherita-react 1.4.0-dev.2025-06-09.7cd38232 → 1.4.0-dev.2025-06-13.6fe0c0de

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.
@@ -60,7 +60,7 @@ const persistOptions = {
60
60
  return false;
61
61
  }
62
62
  },
63
- buster: "1.4.0-dev.2025-06-09.7cd38232" || "0.0.0"
63
+ buster: "1.4.0-dev.2025-06-13.6fe0c0de" || "0.0.0"
64
64
  // @TODO: add maxAge and api version numbers as buster
65
65
  };
66
66
  const initialDataset = {
@@ -10,6 +10,7 @@ exports.useSettingsDispatch = useSettingsDispatch;
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _lodash = _interopRequireDefault(require("lodash"));
12
12
  var _constants = require("../constants/constants");
13
+ const _excluded = ["buster", "timestamp"];
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
15
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
16
  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; }
@@ -17,6 +18,8 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
17
18
  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; }
18
19
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
19
20
  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); }
21
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
22
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
20
23
  const SettingsContext = exports.SettingsContext = /*#__PURE__*/(0, _react.createContext)(null);
21
24
  const SettingsDispatchContext = exports.SettingsDispatchContext = /*#__PURE__*/(0, _react.createContext)(null);
22
25
 
@@ -128,7 +131,18 @@ function SettingsProvider(_ref2) {
128
131
  const DATASET_STORAGE_KEY = "".concat(_constants.LOCAL_STORAGE_KEY, "-").concat(dataset_url);
129
132
  // Use localStorage directly instead of useLocalStorage due to unnecessary re-renders
130
133
  // https://github.com/uidotdev/usehooks/issues/157
131
- const localSettings = JSON.parse(localStorage.getItem(DATASET_STORAGE_KEY)) || {};
134
+ let _ref3 = JSON.parse(localStorage.getItem(DATASET_STORAGE_KEY)) || {},
135
+ {
136
+ buster,
137
+ timestamp
138
+ } = _ref3,
139
+ localSettings = _objectWithoutProperties(_ref3, _excluded);
140
+
141
+ // If the buster is not set or does not match the current package version,
142
+ // reset localSettings to avoid stale data
143
+ if (!buster || buster !== "1.4.0-dev.2025-06-13.6fe0c0de") {
144
+ localSettings = {};
145
+ }
132
146
  const [settings, dispatch] = (0, _react.useReducer)(settingsReducer, {
133
147
  canOverrideSettings,
134
148
  defaultSettings,
@@ -137,7 +151,10 @@ function SettingsProvider(_ref2) {
137
151
  (0, _react.useEffect)(() => {
138
152
  if (canOverrideSettings) {
139
153
  try {
140
- localStorage.setItem(DATASET_STORAGE_KEY, JSON.stringify(settings));
154
+ localStorage.setItem(DATASET_STORAGE_KEY, JSON.stringify(_objectSpread({
155
+ buster: "1.4.0-dev.2025-06-13.6fe0c0de" || "0.0.0",
156
+ timestamp: Date.now()
157
+ }, settings)));
141
158
  } catch (err) {
142
159
  if (err.code === 22 || err.code === 1014 || err.name === "QuotaExceededError" || err.name === "NS_ERROR_DOM_QUOTA_REACHED") {
143
160
  console.err("Browser storage quota exceeded");
@@ -50,7 +50,7 @@ const persistOptions = {
50
50
  return false;
51
51
  }
52
52
  },
53
- buster: "1.4.0-dev.2025-06-09.7cd38232" || "0.0.0"
53
+ buster: "1.4.0-dev.2025-06-13.6fe0c0de" || "0.0.0"
54
54
  // @TODO: add maxAge and api version numbers as buster
55
55
  };
56
56
  const initialDataset = {
@@ -1,8 +1,11 @@
1
+ const _excluded = ["buster", "timestamp"];
1
2
  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
3
  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
4
  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
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
6
  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); }
7
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
6
9
  import React, { createContext, useContext, useEffect, useReducer } from "react";
7
10
  import _ from "lodash";
8
11
  import { COLOR_ENCODINGS, DOTPLOT_SCALES, LOCAL_STORAGE_KEY, MATRIXPLOT_SCALES, OBS_TYPES, PSEUDOSPATIAL_CATEGORICAL_MODES, VAR_SORT, VAR_SORT_ORDER, VIOLINPLOT_SCALES } from "../constants/constants";
@@ -117,7 +120,18 @@ export function SettingsProvider(_ref2) {
117
120
  const DATASET_STORAGE_KEY = "".concat(LOCAL_STORAGE_KEY, "-").concat(dataset_url);
118
121
  // Use localStorage directly instead of useLocalStorage due to unnecessary re-renders
119
122
  // https://github.com/uidotdev/usehooks/issues/157
120
- const localSettings = JSON.parse(localStorage.getItem(DATASET_STORAGE_KEY)) || {};
123
+ let _ref3 = JSON.parse(localStorage.getItem(DATASET_STORAGE_KEY)) || {},
124
+ {
125
+ buster,
126
+ timestamp
127
+ } = _ref3,
128
+ localSettings = _objectWithoutProperties(_ref3, _excluded);
129
+
130
+ // If the buster is not set or does not match the current package version,
131
+ // reset localSettings to avoid stale data
132
+ if (!buster || buster !== "1.4.0-dev.2025-06-13.6fe0c0de") {
133
+ localSettings = {};
134
+ }
121
135
  const [settings, dispatch] = useReducer(settingsReducer, {
122
136
  canOverrideSettings,
123
137
  defaultSettings,
@@ -126,7 +140,10 @@ export function SettingsProvider(_ref2) {
126
140
  useEffect(() => {
127
141
  if (canOverrideSettings) {
128
142
  try {
129
- localStorage.setItem(DATASET_STORAGE_KEY, JSON.stringify(settings));
143
+ localStorage.setItem(DATASET_STORAGE_KEY, JSON.stringify(_objectSpread({
144
+ buster: "1.4.0-dev.2025-06-13.6fe0c0de" || "0.0.0",
145
+ timestamp: Date.now()
146
+ }, settings)));
130
147
  } catch (err) {
131
148
  if (err.code === 22 || err.code === 1014 || err.name === "QuotaExceededError" || err.name === "NS_ERROR_DOM_QUOTA_REACHED") {
132
149
  console.err("Browser storage quota exceeded");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haniffalab/cherita-react",
3
- "version": "1.4.0-dev.2025-06-09.7cd38232",
3
+ "version": "1.4.0-dev.2025-06-13.6fe0c0de",
4
4
  "author": "Haniffa Lab",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -128,5 +128,5 @@
128
128
  "url": "https://github.com/haniffalab/cherita-react/issues"
129
129
  },
130
130
  "homepage": "https://github.com/haniffalab/cherita-react#readme",
131
- "prereleaseSha": "7cd382328af1f50698b9685b997517b3dcbe991a"
131
+ "prereleaseSha": "6fe0c0de28690a314a69e0e8c66f3af963e7cd94"
132
132
  }