@vxrn/color-scheme 1.19.4 → 1.19.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.
Files changed (41) hide show
  1. package/dist/cjs/index.cjs +8 -6
  2. package/dist/cjs/index.native.js +4 -2
  3. package/dist/cjs/index.native.js.map +1 -1
  4. package/dist/cjs/safeStorage.cjs +40 -0
  5. package/dist/cjs/safeStorage.native.js +43 -0
  6. package/dist/cjs/safeStorage.native.js.map +1 -0
  7. package/dist/cjs/safeStorage.test.cjs +49 -0
  8. package/dist/cjs/safeStorage.test.native.js +66 -0
  9. package/dist/cjs/safeStorage.test.native.js.map +1 -0
  10. package/dist/cjs/userScheme.cjs +9 -12
  11. package/dist/cjs/userScheme.native.js +11 -16
  12. package/dist/cjs/userScheme.native.js.map +1 -1
  13. package/dist/esm/index.js +8 -6
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/index.mjs +8 -6
  16. package/dist/esm/index.mjs.map +1 -1
  17. package/dist/esm/index.native.js +3 -2
  18. package/dist/esm/index.native.js.map +1 -1
  19. package/dist/esm/safeStorage.mjs +14 -0
  20. package/dist/esm/safeStorage.mjs.map +1 -0
  21. package/dist/esm/safeStorage.native.js +14 -0
  22. package/dist/esm/safeStorage.native.js.map +1 -0
  23. package/dist/esm/safeStorage.test.mjs +50 -0
  24. package/dist/esm/safeStorage.test.mjs.map +1 -0
  25. package/dist/esm/safeStorage.test.native.js +64 -0
  26. package/dist/esm/safeStorage.test.native.js.map +1 -0
  27. package/dist/esm/userScheme.mjs +9 -12
  28. package/dist/esm/userScheme.mjs.map +1 -1
  29. package/dist/esm/userScheme.native.js +11 -16
  30. package/dist/esm/userScheme.native.js.map +1 -1
  31. package/package.json +5 -3
  32. package/src/index.tsx +10 -6
  33. package/src/safeStorage.test.ts +63 -0
  34. package/src/safeStorage.ts +20 -0
  35. package/src/userScheme.ts +13 -20
  36. package/types/index.d.ts.map +1 -1
  37. package/types/safeStorage.d.ts +3 -0
  38. package/types/safeStorage.d.ts.map +1 -0
  39. package/types/safeStorage.test.d.ts +2 -0
  40. package/types/safeStorage.test.d.ts.map +1 -0
  41. package/types/userScheme.d.ts.map +1 -1
@@ -33,6 +33,7 @@ __export(index_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(index_exports);
35
35
  var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect");
36
+ var import_safeStorage = require("./safeStorage.cjs");
36
37
  var import_userScheme = require("./userScheme.cjs");
37
38
  var import_systemScheme = require("./systemScheme.cjs");
38
39
  var import_userScheme2 = require("./userScheme.cjs");
@@ -50,8 +51,8 @@ function SchemeProvider({
50
51
  } = (0, import_userScheme.useUserScheme)();
51
52
  const resolvedValue = forceScheme ?? value;
52
53
  (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
53
- if (!forceScheme && defaultScheme && typeof localStorage !== "undefined") {
54
- if (!localStorage.getItem(storageKey)) (0, import_userScheme.setUserScheme)(defaultScheme);
54
+ if (!forceScheme && defaultScheme) {
55
+ if (!(0, import_safeStorage.getStorageItem)(storageKey)) (0, import_userScheme.setUserScheme)(defaultScheme);
55
56
  }
56
57
  }, [defaultScheme, forceScheme]);
57
58
  (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
@@ -69,12 +70,12 @@ d.remove('${getClassName("light")}')
69
70
  d.remove('${getClassName("dark")}')
70
71
  d.add('${getClassName(forceScheme)}')`;else {
71
72
  const fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : `window.matchMedia('(prefers-color-scheme: dark)').matches`;
72
- const seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
73
+ const seedStorage = defaultScheme ? `;if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
73
74
  scriptContent = `let d = document.documentElement.classList
74
75
  d.remove('${getClassName("light")}')
75
76
  d.remove('${getClassName("dark")}')
76
- let e = localStorage.getItem('${storageKey}')
77
- ${seedStorage}
77
+ let e = null
78
+ try { e = localStorage.getItem('${storageKey}')${seedStorage} } catch (_e) {}
78
79
  let t = 'system' === e || !e
79
80
  ? ${fallback}
80
81
  : e === 'dark'
@@ -99,7 +100,8 @@ function MetaTheme({
99
100
  } = (0, import_userScheme.useUserScheme)();
100
101
  const forced = (0, import_userScheme.getForceScheme)();
101
102
  const scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === "dark" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')
102
- let e1 = localStorage.getItem('${storageKey}')
103
+ let e1 = null
104
+ try { e1 = localStorage.getItem('${storageKey}') } catch (_e) {}
103
105
  let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
104
106
  dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;
105
107
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
@@ -36,6 +36,7 @@ __export(index_exports, {
36
36
  module.exports = __toCommonJS(index_exports);
37
37
  var import_jsx_runtime = require("react/jsx-runtime");
38
38
  require("@vxrn/use-isomorphic-layout-effect");
39
+ require("./safeStorage.native.js");
39
40
  var import_userScheme = require("./userScheme.native.js");
40
41
  var import_systemScheme = require("./systemScheme.native.js");
41
42
  var import_userScheme2 = require("./userScheme.native.js");
@@ -55,7 +56,7 @@ function SchemeProvider(param) {
55
56
  } = (0, import_userScheme.useUserScheme)();
56
57
  if (forceScheme) `${getClassName("light")}${getClassName("dark")}${getClassName(forceScheme)}`;else {
57
58
  var fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : `window.matchMedia('(prefers-color-scheme: dark)').matches`;
58
- var seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
59
+ var seedStorage = defaultScheme ? `;if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
59
60
  `${getClassName("light")}${getClassName("dark")}${storageKey}${seedStorage}${fallback}${getClassName("dark")}${getClassName("light")}`;
60
61
  }
61
62
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
@@ -73,7 +74,8 @@ function MetaTheme(param) {
73
74
  } = (0, import_userScheme.useUserScheme)();
74
75
  var forced = (0, import_userScheme.getForceScheme)();
75
76
  var scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === "dark" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')
76
- let e1 = localStorage.getItem('${storageKey}')
77
+ let e1 = null
78
+ try { e1 = localStorage.getItem('${storageKey}') } catch (_e) {}
77
79
  let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
78
80
  dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;
79
81
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
@@ -1 +1 @@
1
- {"version":3,"names":["to","__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","MetaTheme","SchemeProvider","getSystemScheme","import_systemScheme","getUserScheme","import_userScheme2","onUserSchemeChange","setUserScheme","useSystemScheme","useUserScheme","module","exports","import_jsx_runtime","require","import_userScheme","storageKey","param","children","getClassName","name","defaultScheme","forceScheme","setForceScheme","fallback","seedStorage","jsxs","Fragment","color","darkColor","lightColor","forced","getForceScheme","scriptContent","jsx","suppressHydrationWarning","id","content","dangerouslySetInnerHTML","__html"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;EAAA;EAAA,OAAAA,EAAA;AAAA;AAAA,IAAAC,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,SAAA,EAAAA,CAAA,KAAAA,SAAA;EAAAC,cAAA,EAAAA,CAAA,KAAAA,cAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAC,mBAAA,CAAAD,eAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAC,kBAAA,CAAAD,aAAA;EAAAE,kBAAA,EAAAA,CAAA,KAAAD,kBAAA,CAAAC,kBAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAF,kBAAA,CAAAE,aAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAL,mBAA0C,CAAAK,eAAA;EAE1CC,aAAA,EAAAA,CAAA,KAAAJ,kBAKO,CAAAI;AAOP;AACAC,MAAA,CAAAC,OAAA,GAAAlB,YAKO,CAAAK,aAAA;AAyEH,IAAAc,kBAAA,GAAAC,OAAA;AAvEJA,OAAM,qCAAa;AAEZ,IAAAC,iBAAS,GAAeD,OAAA;AAAA,IAC7BV,mBAAA,GAAAU,OAAA;AAAA,IACAR,kBAAgB,GAAAQ,OAAc,yBAAI;AAAA,IAClCE,UAAA;AAAA,SACAd,eAAAe,KAAA;EACF,IAOG;IAAAC,QAAA;IAAAC,YAAA,YAAAA,CAAAC,IAAA;MAED,YAAAA,IAAA;IAEA;IAAAC,aAAc;IAAAC;EAAI,IAAAL,KAAA;EAClB,IAAAF,iBAAM,CAAAQ,cAAgB,EAAeD,WAAA,aAAAA,WAAA,cAAAA,WAAA;EAErC;IAAIxB;EAAA,CAAQ,IAAI,GAAAiB,iBAAmB,CAAAL,aAAU;EAE3C,IAAAY,WAAA,KAAAH,YAAA,YAAAA,YAAA,WAAAA,YAAgC,CAAAG,WAAA,SAC9B;IACE,IAAAE,QAAK,GAAAH,aAAa,OAAQA,aAAa;IACrC,IAAAI,WAAA,GAAAJ,aAAA,mCAA2BL,UAAA,MAAAK,aAAA;IAAA,GAAAF,YAC7B,YAAAA,YAAA,WAAAH,UAAA,GAAAS,WAAA,GAAAD,QAAA,GAAAL,YAAA,WAAAA,YAAA;EAAA;EACF,OACE,eAAe,IAAAN,kBAAY,CAAAa,IAAA,EAAAb,kBAAA,CAAAc,QAAA;IAAAT,QAAA,SAAAA,QAAA;EAAA;AAE/B;AACE,SAAAjB,SAAMA,CAAAgB,KAAQ;EACd;IAAAW,KAAM;IAAAC,SAAW;IAAAC;EAAa,IAAAb,KAAA;EAC9B;IAAAnB;EAAM,CAAE,OAAAiB,iBAAuB,CAAAL,aAAA;EAC/B,IAAAqB,MAAA,KAAU,EAAAhB,iBAAe,CAAAiB,cAAA;EACzB,IAAAC,aAAK,GAAUF,MAAA,GAAS,uEAAQA,MAAA,cAAAF,SAAA,GAAAC,UAAA;AAC9B,iCAAmBd,UAAA;AAAA;AACrB,oCAC8Ba,SAAA,QAAAC,UAAA;EAAA,OAClC,mBAAAjB,kBAAA,CAAAa,IAAA,EAAAb,kBAAA,CAAAc,QAAA;IAAAT,QAAA,sBAAAL,kBAAA,CAAAqB,GAAA;MAEAC,wBAAI;MAEJC,EAAA,EAAI,kBAAa;MAEfhB,IAAA,eAAgB;MAAAiB,OAAA,EAAAT,KACR,SAAa,IAAAA,KAAQ,cAAAA,KAAA,GAAA9B,KAAA,cAAA+B,SAAA,GAAAC;IAAA,mBACrB,IAAajB,kBAAO,CAAAqB,GAAA;MAAAC,wBACV;MACpBC,EAAA,sBAAO;MACLE,uBAAiB;QAAAC,MAAA,EACbN;MAAI;IAGR;EAAA;AAIA","ignoreList":[]}
1
+ {"version":3,"names":["to","__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","MetaTheme","SchemeProvider","getSystemScheme","import_systemScheme","getUserScheme","import_userScheme2","onUserSchemeChange","setUserScheme","useSystemScheme","useUserScheme","module","exports","import_jsx_runtime","require","import_userScheme","storageKey","param","children","getClassName","name","defaultScheme","forceScheme","setForceScheme","fallback","seedStorage","jsxs","Fragment","color","darkColor","lightColor","forced","getForceScheme","scriptContent","jsx","suppressHydrationWarning","id","content","dangerouslySetInnerHTML","__html"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;EAAA;EAAA,OAAAA,EAAA;AAAA;AAAA,IAAAC,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,SAAA,EAAAA,CAAA,KAAAA,SAAA;EAAAC,cAAA,EAAAA,CAAA,KAAAA,cAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAC,mBAAA,CAAAD,eAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAC,kBAAA,CAAAD,aAAA;EAAAE,kBAAA,EAAAA,CAAA,KAAAD,kBAAA,CAAAC,kBAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAF,kBAAA,CAAAE,aAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAL,mBAA0C,CAAAK,eAAA;EAC1CC,aAAA,EAAAA,CAAA,KAAAJ,kBAA+B,CAAAI;AAE/B;AAYAC,MAAA,CAAAC,OAAA,GAAAlB,YAAiD,CAAAK,aAAA;AACjD,IAAAc,kBAAA,GAKOC,OAAA;AA2EHA,OAAA;AAzEJA,OAAM,0BAAa;AAEZ,IAAAC,iBAAS,GAAeD,OAAA;AAAA,IAC7BV,mBAAA,GAAAU,OAAA;AAAA,IACAR,kBAAgB,GAAAQ,OAAc,yBAAI;AAAA,IAClCE,UAAA;AAAA,SACAd,eAAAe,KAAA;EACF,IAOG;IAAAC,QAAA;IAAAC,YAAA,YAAAA,CAAAC,IAAA;MAED,YAAAA,IAAA;IAEA;IAAAC,aAAc;IAAAC;EAAI,IAAAL,KAAA;EAClB,IAAAF,iBAAM,CAAAQ,cAAgB,EAAeD,WAAA,aAAAA,WAAA,cAAAA,WAAA;EAErC;IAAIxB;EAAA,CAAQ,IAAI,GAAAiB,iBAAmB,CAAAL,aAAU;EAE3C,IAAAY,WAAA,KAAAH,YAAA,YAAAA,YAAA,WAAAA,YAAgC,CAAAG,WAAA,SAC9B;IACE,IAAAE,QAAI,GAACH,aAAA,OAAAA,aAAA,cAAyB,GAAG;IAC/B,IAAAI,WAAA,GAAAJ,aAAA,oCAA2BL,UAAA,MAAAK,aAAA;IAAA,GAAAF,YAC7B,YAAAA,YAAA,WAAAH,UAAA,GAAAS,WAAA,GAAAD,QAAA,GAAAL,YAAA,WAAAA,YAAA;EAAA;EACF,OACE,eAAe,IAAAN,kBAAY,CAAAa,IAAA,EAAAb,kBAAA,CAAAc,QAAA;IAAAT,QAAA,SAAAA,QAAA;EAAA;AAE/B;AACE,SAAAjB,SAAMA,CAAAgB,KAAQ;EACd;IAAAW,KAAM;IAAAC,SAAW;IAAAC;EAAa,IAAAb,KAAA;EAC9B;IAAAnB;EAAM,CAAE,OAAAiB,iBAAuB,CAAAL,aAAA;EAC/B,IAAAqB,MAAA,KAAU,EAAAhB,iBAAe,CAAAiB,cAAA;EACzB,IAAAC,aAAK,GAAUF,MAAA,GAAS,uEAAQA,MAAA,cAAAF,SAAA,GAAAC,UAAA;AAC9B;AAAmB,mCACrBd,UAAA;AAAA;AAC8B,oCAClCa,SAAA,QAAAC,UAAA;EAEA,OAAI,mBAAAjB,kBAAA,CAAAa,IAAA,EAAAb,kBAAA,CAAAc,QAAA;IAAAT,QAAA,sBAAAL,kBAAA,CAAAqB,GAAA;MAEJC,wBAAiB;MAEfC,EAAA,oBAAgB;MAAAhB,IAAA,eACR;MAAqBiB,OAAA,EAAAT,KACrB,SAAa,IAAAA,KAAO,cAAAA,KAAA,GAAA9B,KAAA,cAAA+B,SAAA,GAAAC;IAAA,mBACvB,CAAa,GAAAjB,kBAAY,CAAAqB,GAAA;MAChCC,wBAAO;MACLC,EAAA,sBAAiB;MAIjBE,uBAAoB;QAAAC,MAAA,EAAAN;MAChB;IAKJ;EAAA;AAAgB","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var safeStorage_exports = {};
24
+ __export(safeStorage_exports, {
25
+ getStorageItem: () => getStorageItem,
26
+ setStorageItem: () => setStorageItem
27
+ });
28
+ module.exports = __toCommonJS(safeStorage_exports);
29
+ function getStorageItem(key) {
30
+ try {
31
+ return localStorage.getItem(key);
32
+ } catch {
33
+ return null;
34
+ }
35
+ }
36
+ function setStorageItem(key, value) {
37
+ try {
38
+ localStorage.setItem(key, value);
39
+ } catch {}
40
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var safeStorage_exports = {};
26
+ __export(safeStorage_exports, {
27
+ getStorageItem: () => getStorageItem,
28
+ setStorageItem: () => setStorageItem
29
+ });
30
+ module.exports = __toCommonJS(safeStorage_exports);
31
+ function getStorageItem(key) {
32
+ try {
33
+ return localStorage.getItem(key);
34
+ } catch (unused) {
35
+ return null;
36
+ }
37
+ }
38
+ function setStorageItem(key, value) {
39
+ try {
40
+ localStorage.setItem(key, value);
41
+ } catch (unused) {}
42
+ }
43
+ //# sourceMappingURL=safeStorage.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","safeStorage_exports","__export","getStorageItem","setStorageItem","module","exports","key","localStorage","getItem","unused","setItem"],"sources":["../../src/safeStorage.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,mBAAA;AAAAC,QAAA,CAAAD,mBAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAA,cAAA;EAAAC,cAAA,EAAAA,CAAA,KAAAA;AAAA;AAOOC,MAAA,CAAAC,OAAS,GAAAV,YAA2C,CAAAK,mBAAA;AACzD,SAAIE,eAAAI,GAAA;EACF;IACF,OAAQC,YAAA,CAAAC,OAAA,CAAAF,GAAA;EACN,SAAOG,MAAA;IACT;EACF;AAEO;AACL,SAAIN,eAAAG,GAAA,EAAAP,KAAA;EACF;IACFQ,YAAQ,CAAAG,OAAA,CAAAJ,GAAA,EAAAP,KAAA;EAAC,SAAAU,MAAA,GACX","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ var import_vitest = require("vitest");
2
+ var import_safeStorage = require("./safeStorage.cjs");
3
+ (0, import_vitest.afterEach)(() => {
4
+ delete globalThis.localStorage;
5
+ });
6
+ function defineLocalStorage(descriptor) {
7
+ Object.defineProperty(globalThis, "localStorage", {
8
+ configurable: true,
9
+ ...descriptor
10
+ });
11
+ }
12
+ (0, import_vitest.describe)("safeStorage", () => {
13
+ (0, import_vitest.it)("reads and writes through to a working localStorage", () => {
14
+ const store = /* @__PURE__ */new Map();
15
+ defineLocalStorage({
16
+ value: {
17
+ getItem: k => store.has(k) ? store.get(k) : null,
18
+ setItem: (k, v) => void store.set(k, v)
19
+ }
20
+ });
21
+ (0, import_safeStorage.setStorageItem)("vxrn-scheme", "dark");
22
+ (0, import_vitest.expect)((0, import_safeStorage.getStorageItem)("vxrn-scheme")).toBe("dark");
23
+ });
24
+ (0, import_vitest.it)("returns null instead of throwing when the localStorage getter throws", () => {
25
+ defineLocalStorage({
26
+ get() {
27
+ throw new Error('Failed to read the "localStorage" property: Access is denied.');
28
+ }
29
+ });
30
+ (0, import_vitest.expect)(() => (0, import_safeStorage.getStorageItem)("vxrn-scheme")).not.toThrow();
31
+ (0, import_vitest.expect)((0, import_safeStorage.getStorageItem)("vxrn-scheme")).toBeNull();
32
+ (0, import_vitest.expect)(() => (0, import_safeStorage.setStorageItem)("vxrn-scheme", "dark")).not.toThrow();
33
+ });
34
+ (0, import_vitest.it)("swallows errors when setItem throws (quota / blocked)", () => {
35
+ defineLocalStorage({
36
+ value: {
37
+ getItem: () => null,
38
+ setItem: () => {
39
+ throw new Error("QuotaExceededError");
40
+ }
41
+ }
42
+ });
43
+ (0, import_vitest.expect)(() => (0, import_safeStorage.setStorageItem)("vxrn-scheme", "dark")).not.toThrow();
44
+ });
45
+ (0, import_vitest.it)("returns null when localStorage is undefined (native)", () => {
46
+ (0, import_vitest.expect)((0, import_safeStorage.getStorageItem)("vxrn-scheme")).toBeNull();
47
+ (0, import_vitest.expect)(() => (0, import_safeStorage.setStorageItem)("vxrn-scheme", "dark")).not.toThrow();
48
+ });
49
+ });
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ var import_vitest = require("vitest");
4
+ var import_safeStorage = require("./safeStorage.native.js");
5
+ (0, import_vitest.afterEach)(function () {
6
+ delete globalThis.localStorage;
7
+ });
8
+ function defineLocalStorage(descriptor) {
9
+ Object.defineProperty(globalThis, "localStorage", {
10
+ configurable: true,
11
+ ...descriptor
12
+ });
13
+ }
14
+ (0, import_vitest.describe)("safeStorage", function () {
15
+ (0, import_vitest.it)("reads and writes through to a working localStorage", function () {
16
+ var store = /* @__PURE__ */new Map();
17
+ defineLocalStorage({
18
+ value: {
19
+ getItem: function getItem(k) {
20
+ return store.has(k) ? store.get(k) : null;
21
+ },
22
+ setItem: function setItem(k, v) {
23
+ return void store.set(k, v);
24
+ }
25
+ }
26
+ });
27
+ (0, import_safeStorage.setStorageItem)("vxrn-scheme", "dark");
28
+ (0, import_vitest.expect)((0, import_safeStorage.getStorageItem)("vxrn-scheme")).toBe("dark");
29
+ });
30
+ (0, import_vitest.it)("returns null instead of throwing when the localStorage getter throws", function () {
31
+ defineLocalStorage({
32
+ get() {
33
+ throw new Error('Failed to read the "localStorage" property: Access is denied.');
34
+ }
35
+ });
36
+ (0, import_vitest.expect)(function () {
37
+ return (0, import_safeStorage.getStorageItem)("vxrn-scheme");
38
+ }).not.toThrow();
39
+ (0, import_vitest.expect)((0, import_safeStorage.getStorageItem)("vxrn-scheme")).toBeNull();
40
+ (0, import_vitest.expect)(function () {
41
+ return (0, import_safeStorage.setStorageItem)("vxrn-scheme", "dark");
42
+ }).not.toThrow();
43
+ });
44
+ (0, import_vitest.it)("swallows errors when setItem throws (quota / blocked)", function () {
45
+ defineLocalStorage({
46
+ value: {
47
+ getItem: function getItem() {
48
+ return null;
49
+ },
50
+ setItem: function setItem() {
51
+ throw new Error("QuotaExceededError");
52
+ }
53
+ }
54
+ });
55
+ (0, import_vitest.expect)(function () {
56
+ return (0, import_safeStorage.setStorageItem)("vxrn-scheme", "dark");
57
+ }).not.toThrow();
58
+ });
59
+ (0, import_vitest.it)("returns null when localStorage is undefined (native)", function () {
60
+ (0, import_vitest.expect)((0, import_safeStorage.getStorageItem)("vxrn-scheme")).toBeNull();
61
+ (0, import_vitest.expect)(function () {
62
+ return (0, import_safeStorage.setStorageItem)("vxrn-scheme", "dark");
63
+ }).not.toThrow();
64
+ });
65
+ });
66
+ //# sourceMappingURL=safeStorage.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["import_vitest","require","import_safeStorage","afterEach","globalThis","localStorage","defineLocalStorage","descriptor","Object","defineProperty","configurable","describe","it","store","Map","value","getItem","k","has","get","setItem","v","set","setStorageItem","expect","getStorageItem","toBe","Error","not","toThrow","toBeNull"],"sources":["../../src/safeStorage.test.ts"],"sourcesContent":[null],"mappings":"AAAA;;AACA,IAAAA,aAAA,GAAAC,OAA+C;AAAA,IAI/CC,kBAAA,GAAAD,OAAU,0BAAM;AACd,IAAAD,aAAQ,CAAAG,SAAmB;EAC5B,OAAAC,UAAA,CAAAC,YAAA;AAED;AACE,SAAOC,kBAAeA,CAAAC,UAAY;EAAgBC,MAChD,CAAAC,cAAc,CAAAL,UAAA;IACdM,YAAG;IACJ,GAAAH;EACH;AAAA;AAGE,IAAAP,aAAA,CAAAW,QAAG;EACD,IAAAX,aAAc,CAAAY,EAAA,sDAAwB;IACtC,IAAAC,KAAA,kBAAmB,IAAAC,GAAA;IAAAR,kBACV;MAAAS,KACL;QACAC,OAAA,EAAS,SAAYA,OAAmBA,CAAAC,CAAA;UAC1C,OAAAJ,KAAA,CAAAK,GAAA,CAAAD,CAAA,IAAAJ,KAAA,CAAAM,GAAA,CAAAF,CAAA;QACD;QAEDG,OAAA,WAAAA,QAAAH,CAAA,EAAAI,CAAA;UACA,YAAAR,KAAA,CAAAS,GAAA,CAAAL,CAAA,EAAOI,CAAA;QACR;MAKD;IACE;IAAmB,EACjB,EAAAnB,kBAAM,CAAAqB,cAAA;IACJ,IAAAvB,aAAU,CAAAwB,MAAM,MAAAtB,kBAAA,CAAAuB,cAAA,kBAAAC,IAA+D;EAAA;EACjF,EACF,EAAC1B,aAAA,CAAAY,EAAA;IAEDN,kBAAA;MACAa,IAAA;QACA,UAAAQ,KAAA,gEAA4B;MAC7B;IAED;IACE,IAAA3B,aAAA,CAAAwB,MAAmB;MACjB,OAAO,IAAAtB,kBAAA,CAAAuB,cAAA;IAAA,GAAAG,GACL,CAAAC,OAAS;IAAM,IACf7B,aAAS,CAAAwB,MAAM,MAAAtB,kBAAA,CAAAuB,cAAA,kBAAAK,QAAA;IACb,IAAA9B,aAAU,CAAAwB,MAAM;MAAoB,OACtC,IAAAtB,kBAAA,CAAAqB,cAAA;IAAA,EACF,CAAAK,GAAA,CAAAC,OAAA;EAAA,EACF;EAEA,IAAA7B,aAAA,CAAAY,EAAA,yDAA4B,cAAe;IAC5CN,kBAAA;MAEDS,KAAA;QACEC,OAAA,WAAAA,QAAA,EAAO;UACP;QACD;QACFI,OAAA,WAAAA,QAAA","ignoreList":[]}
@@ -33,6 +33,7 @@ module.exports = __toCommonJS(userScheme_exports);
33
33
  var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect");
34
34
  var import_react = require("react");
35
35
  require("react-native-web");
36
+ var import_safeStorage = require("./safeStorage.cjs");
36
37
  var import_systemScheme = require("./systemScheme.cjs");
37
38
  const listeners = /* @__PURE__ */new Set();
38
39
  const storageKey = "vxrn-scheme";
@@ -43,13 +44,11 @@ function notifyListeners() {
43
44
  });
44
45
  }
45
46
  function restoreUnforcedScheme() {
46
- if (typeof localStorage !== "undefined") {
47
- const stored = localStorage.getItem(storageKey);
48
- if (stored) {
49
- currentSetting = stored;
50
- currentValue = stored === "system" ? resolveValue("system") : stored;
51
- return;
52
- }
47
+ const stored = (0, import_safeStorage.getStorageItem)(storageKey);
48
+ if (stored) {
49
+ currentSetting = stored;
50
+ currentValue = stored === "system" ? resolveValue("system") : stored;
51
+ return;
53
52
  }
54
53
  currentSetting = "system";
55
54
  currentValue = resolveValue("system");
@@ -112,7 +111,7 @@ function updateScheme(setting) {
112
111
  }
113
112
  function setUserScheme(setting) {
114
113
  if (_forceScheme) return;
115
- if (typeof localStorage !== "undefined") localStorage.setItem(storageKey, setting);
114
+ (0, import_safeStorage.setStorageItem)(storageKey, setting);
116
115
  updateScheme(setting);
117
116
  }
118
117
  function getUserScheme() {
@@ -138,10 +137,8 @@ function useUserScheme() {
138
137
  const resolvedState = state.setting === snapshot.setting && state.value === snapshot.value ? state : snapshot;
139
138
  (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
140
139
  if (!_forceScheme) {
141
- if (typeof localStorage !== "undefined") {
142
- const stored = localStorage.getItem(storageKey);
143
- if (stored) updateScheme(stored);
144
- }
140
+ const stored = (0, import_safeStorage.getStorageItem)(storageKey);
141
+ if (stored) updateScheme(stored);
145
142
  startWebListener();
146
143
  }
147
144
  return onUserSchemeChange((setting, value) => {
@@ -35,6 +35,7 @@ module.exports = __toCommonJS(userScheme_exports);
35
35
  var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect");
36
36
  var import_react = require("react");
37
37
  var import_react_native = require("react-native");
38
+ var import_safeStorage = require("./safeStorage.native.js");
38
39
  require("./systemScheme.native.js");
39
40
  var listeners = /* @__PURE__ */new Set();
40
41
  var storageKey = "vxrn-scheme";
@@ -45,13 +46,11 @@ function notifyListeners() {
45
46
  });
46
47
  }
47
48
  function restoreUnforcedScheme() {
48
- if (typeof localStorage !== "undefined") {
49
- var stored = localStorage.getItem(storageKey);
50
- if (stored) {
51
- currentSetting = stored;
52
- currentValue = stored === "system" ? resolveValue("system") : stored;
53
- return;
54
- }
49
+ var stored = (0, import_safeStorage.getStorageItem)(storageKey);
50
+ if (stored) {
51
+ currentSetting = stored;
52
+ currentValue = stored === "system" ? resolveValue("system") : stored;
53
+ return;
55
54
  }
56
55
  currentSetting = "system";
57
56
  currentValue = resolveValue("system");
@@ -72,10 +71,8 @@ function getForceScheme() {
72
71
  return _forceScheme;
73
72
  }
74
73
  function getInitialSetting() {
75
- if (typeof localStorage !== "undefined") {
76
- var stored = localStorage.getItem(storageKey);
77
- if (stored === "light" || stored === "dark" || stored === "system") return stored;
78
- }
74
+ var stored = (0, import_safeStorage.getStorageItem)(storageKey);
75
+ if (stored === "light" || stored === "dark" || stored === "system") return stored;
79
76
  return "system";
80
77
  }
81
78
  function getInitialValue(setting) {
@@ -124,7 +121,7 @@ function updateScheme(setting) {
124
121
  }
125
122
  function setUserScheme(setting) {
126
123
  if (_forceScheme) return;
127
- if (typeof localStorage !== "undefined") localStorage.setItem(storageKey, setting);
124
+ (0, import_safeStorage.setStorageItem)(storageKey, setting);
128
125
  updateScheme(setting);
129
126
  }
130
127
  function getUserScheme() {
@@ -152,10 +149,8 @@ function useUserScheme() {
152
149
  var resolvedState = state.setting === snapshot.setting && state.value === snapshot.value ? state : snapshot;
153
150
  (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(function () {
154
151
  if (!_forceScheme) {
155
- if (typeof localStorage !== "undefined") {
156
- var stored = localStorage.getItem(storageKey);
157
- if (stored) updateScheme(stored);
158
- }
152
+ var stored = (0, import_safeStorage.getStorageItem)(storageKey);
153
+ if (stored) updateScheme(stored);
159
154
  startWebListener();
160
155
  }
161
156
  return onUserSchemeChange(function (setting, value) {
@@ -1 +1 @@
1
- {"version":3,"names":["to","__toCommonJS","mod","__copyProps","__defProp","value","userScheme_exports","__export","getForceScheme","getUserScheme","onUserSchemeChange","setForceScheme","setUserScheme","useUserScheme","module","exports","import_use_isomorphic_layout_effect","require","import_react","import_react_native","listeners","Set","storageKey","_forceScheme","notifyListeners","forEach","listener","currentSetting","currentValue","restoreUnforcedScheme","localStorage","stored","getItem","resolveValue","scheme","wasForced","startWebListener","getInitialSetting","getInitialValue","setting","Appearance","getColorScheme","initialSetting","addChangeListener","next","colorScheme","updateValueFromSystem","isWebListening","_window_matchMedia","_window","_matcher_addEventListener","matcher","window","matchMedia","call","onSystemChange","onSystemChange2","addEventListener","updateScheme","setColorScheme","setItem","add","delete","state","setState","useState","snapshot","resolvedState","useIsomorphicLayoutEffect","useMemo","set"],"sources":["../../src/userScheme.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["to","__toCommonJS","mod","__copyProps","__defProp","value","userScheme_exports","__export","getForceScheme","getUserScheme","onUserSchemeChange","setForceScheme","setUserScheme","useUserScheme","module","exports","import_use_isomorphic_layout_effect","require","import_react","import_react_native","import_safeStorage","listeners","Set","storageKey","_forceScheme","notifyListeners","forEach","listener","currentSetting","currentValue","restoreUnforcedScheme","stored","getStorageItem","resolveValue","scheme","wasForced","startWebListener","getInitialSetting","getInitialValue","setting","Appearance","getColorScheme","initialSetting","addChangeListener","next","colorScheme","updateValueFromSystem","isWebListening","_window_matchMedia","_window","_matcher_addEventListener","matcher","window","matchMedia","call","onSystemChange","onSystemChange2","addEventListener","updateScheme","setColorScheme","setStorageItem","add","delete","state","setState","useState","snapshot","resolvedState","useIsomorphicLayoutEffect","useMemo","set"],"sources":["../../src/userScheme.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
2
+ import { getStorageItem } from "./safeStorage.mjs";
2
3
  import { getForceScheme, getUserScheme, onUserSchemeChange, setForceScheme, setUserScheme, setUserScheme as setUserScheme2, useUserScheme, useUserScheme as useUserScheme2 } from "./userScheme.mjs";
3
4
  import { getSystemScheme, useSystemScheme } from "./systemScheme.mjs";
4
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -15,8 +16,8 @@ function SchemeProvider({
15
16
  } = useUserScheme();
16
17
  const resolvedValue = forceScheme ?? value;
17
18
  useIsomorphicLayoutEffect(() => {
18
- if (!forceScheme && defaultScheme && typeof localStorage !== "undefined") {
19
- if (!localStorage.getItem(storageKey)) setUserScheme(defaultScheme);
19
+ if (!forceScheme && defaultScheme) {
20
+ if (!getStorageItem(storageKey)) setUserScheme(defaultScheme);
20
21
  }
21
22
  }, [defaultScheme, forceScheme]);
22
23
  useIsomorphicLayoutEffect(() => {
@@ -34,12 +35,12 @@ d.remove('${getClassName("light")}')
34
35
  d.remove('${getClassName("dark")}')
35
36
  d.add('${getClassName(forceScheme)}')`;else {
36
37
  const fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : `window.matchMedia('(prefers-color-scheme: dark)').matches`;
37
- const seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
38
+ const seedStorage = defaultScheme ? `;if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
38
39
  scriptContent = `let d = document.documentElement.classList
39
40
  d.remove('${getClassName("light")}')
40
41
  d.remove('${getClassName("dark")}')
41
- let e = localStorage.getItem('${storageKey}')
42
- ${seedStorage}
42
+ let e = null
43
+ try { e = localStorage.getItem('${storageKey}')${seedStorage} } catch (_e) {}
43
44
  let t = 'system' === e || !e
44
45
  ? ${fallback}
45
46
  : e === 'dark'
@@ -64,7 +65,8 @@ function MetaTheme({
64
65
  } = useUserScheme();
65
66
  const forced = getForceScheme();
66
67
  const scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === "dark" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')
67
- let e1 = localStorage.getItem('${storageKey}')
68
+ let e1 = null
69
+ try { e1 = localStorage.getItem('${storageKey}') } catch (_e) {}
68
70
  let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
69
71
  dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;
70
72
  return /* @__PURE__ */jsxs(Fragment, {
@@ -1 +1 @@
1
- {"version":3,"names":["useIsomorphicLayoutEffect","getForceScheme","getUserScheme","onUserSchemeChange","setForceScheme","setUserScheme","setUserScheme2","useUserScheme","useUserScheme2","getSystemScheme","useSystemScheme","Fragment","jsx","jsxs","storageKey","SchemeProvider","children","getClassName","name","defaultScheme","forceScheme","value","resolvedValue","localStorage","getItem","toAdd","toRemove","classList","document","documentElement","remove","contains","add","scriptContent","fallback","seedStorage","suppressHydrationWarning","dangerouslySetInnerHTML","__html","MetaTheme","color","darkColor","lightColor","forced","id","content"],"sources":["index.mjs"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@vxrn/use-isomorphic-layout-effect\";\nimport { getForceScheme, getUserScheme, onUserSchemeChange, setForceScheme, setUserScheme, setUserScheme as setUserScheme2, useUserScheme, useUserScheme as useUserScheme2 } from \"./userScheme\";\nimport { getSystemScheme, useSystemScheme } from \"./systemScheme\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\n\nconst storageKey = \"vxrn-scheme\";\nfunction SchemeProvider({ children, getClassName = (name) => `t_${name}`, defaultScheme, forceScheme }) {\n\tsetForceScheme(forceScheme ?? null);\n\tconst { value } = useUserScheme();\n\tconst resolvedValue = forceScheme ?? value;\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!forceScheme && defaultScheme && typeof localStorage !== \"undefined\") {\n\t\t\tif (!localStorage.getItem(storageKey)) setUserScheme(defaultScheme);\n\t\t}\n\t}, [defaultScheme, forceScheme]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconst toAdd = getClassName(resolvedValue);\n\t\tconst toRemove = getClassName(resolvedValue === \"light\" ? \"dark\" : \"light\");\n\t\tconst { classList } = document.documentElement;\n\t\tclassList.remove(toRemove);\n\t\tif (!classList.contains(toAdd)) classList.add(toAdd);\n\t}, [getClassName, resolvedValue]);\n\tlet scriptContent;\n\tif (forceScheme) scriptContent = `let d = document.documentElement.classList\nd.remove('${getClassName(\"light\")}')\nd.remove('${getClassName(\"dark\")}')\nd.add('${getClassName(forceScheme)}')`;\n\telse {\n\t\tconst fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : `window.matchMedia('(prefers-color-scheme: dark)').matches`;\n\t\tconst seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : \"\";\n\t\tscriptContent = `let d = document.documentElement.classList\nd.remove('${getClassName(\"light\")}')\nd.remove('${getClassName(\"dark\")}')\nlet e = localStorage.getItem('${storageKey}')\n${seedStorage}\nlet t = 'system' === e || !e\n ? ${fallback}\n : e === 'dark'\nt ? d.add('${getClassName(\"dark\")}') : d.add('${getClassName(\"light\")}')`;\n\t}\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"script\", {\n\t\tsuppressHydrationWarning: true,\n\t\tdangerouslySetInnerHTML: { __html: scriptContent }\n\t}), children] });\n}\nfunction MetaTheme({ color, darkColor, lightColor }) {\n\tconst { value } = useUserScheme();\n\tconst forced = getForceScheme();\n\tconst scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === \"dark\" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')\nlet e1 = localStorage.getItem('${storageKey}')\nlet isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'\ndc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"meta\", {\n\t\tsuppressHydrationWarning: true,\n\t\tid: \"vxrn-theme-color\",\n\t\tname: \"theme-color\",\n\t\tcontent: color ?? (value === \"dark\" ? darkColor : lightColor)\n\t}), /* @__PURE__ */ jsx(\"script\", {\n\t\tsuppressHydrationWarning: true,\n\t\tid: \"meta-theme-hydrate\",\n\t\tdangerouslySetInnerHTML: { __html: scriptContent }\n\t})] });\n}\n\nexport { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme2 as setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useIsomorphicLayoutEffect","getStorageItem","getForceScheme","getUserScheme","onUserSchemeChange","setForceScheme","setUserScheme","setUserScheme2","useUserScheme","useUserScheme2","getSystemScheme","useSystemScheme","Fragment","jsx","jsxs","storageKey","SchemeProvider","children","getClassName","name","defaultScheme","forceScheme","value","resolvedValue","toAdd","toRemove","classList","document","documentElement","remove","contains","add","scriptContent","fallback","seedStorage","suppressHydrationWarning","dangerouslySetInnerHTML","__html","MetaTheme","color","darkColor","lightColor","forced","id","content"],"sources":["index.mjs"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@vxrn/use-isomorphic-layout-effect\";\nimport { getStorageItem } from \"./safeStorage\";\nimport { getForceScheme, getUserScheme, onUserSchemeChange, setForceScheme, setUserScheme, setUserScheme as setUserScheme2, useUserScheme, useUserScheme as useUserScheme2 } from \"./userScheme\";\nimport { getSystemScheme, useSystemScheme } from \"./systemScheme\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\n\nconst storageKey = \"vxrn-scheme\";\nfunction SchemeProvider({ children, getClassName = (name) => `t_${name}`, defaultScheme, forceScheme }) {\n\tsetForceScheme(forceScheme ?? null);\n\tconst { value } = useUserScheme();\n\tconst resolvedValue = forceScheme ?? value;\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!forceScheme && defaultScheme) {\n\t\t\tif (!getStorageItem(storageKey)) setUserScheme(defaultScheme);\n\t\t}\n\t}, [defaultScheme, forceScheme]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconst toAdd = getClassName(resolvedValue);\n\t\tconst toRemove = getClassName(resolvedValue === \"light\" ? \"dark\" : \"light\");\n\t\tconst { classList } = document.documentElement;\n\t\tclassList.remove(toRemove);\n\t\tif (!classList.contains(toAdd)) classList.add(toAdd);\n\t}, [getClassName, resolvedValue]);\n\tlet scriptContent;\n\tif (forceScheme) scriptContent = `let d = document.documentElement.classList\nd.remove('${getClassName(\"light\")}')\nd.remove('${getClassName(\"dark\")}')\nd.add('${getClassName(forceScheme)}')`;\n\telse {\n\t\tconst fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : `window.matchMedia('(prefers-color-scheme: dark)').matches`;\n\t\tconst seedStorage = defaultScheme ? `;if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : \"\";\n\t\tscriptContent = `let d = document.documentElement.classList\nd.remove('${getClassName(\"light\")}')\nd.remove('${getClassName(\"dark\")}')\nlet e = null\ntry { e = localStorage.getItem('${storageKey}')${seedStorage} } catch (_e) {}\nlet t = 'system' === e || !e\n ? ${fallback}\n : e === 'dark'\nt ? d.add('${getClassName(\"dark\")}') : d.add('${getClassName(\"light\")}')`;\n\t}\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"script\", {\n\t\tsuppressHydrationWarning: true,\n\t\tdangerouslySetInnerHTML: { __html: scriptContent }\n\t}), children] });\n}\nfunction MetaTheme({ color, darkColor, lightColor }) {\n\tconst { value } = useUserScheme();\n\tconst forced = getForceScheme();\n\tconst scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === \"dark\" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')\nlet e1 = null\ntry { e1 = localStorage.getItem('${storageKey}') } catch (_e) {}\nlet isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'\ndc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"meta\", {\n\t\tsuppressHydrationWarning: true,\n\t\tid: \"vxrn-theme-color\",\n\t\tname: \"theme-color\",\n\t\tcontent: color ?? (value === \"dark\" ? darkColor : lightColor)\n\t}), /* @__PURE__ */ jsx(\"script\", {\n\t\tsuppressHydrationWarning: true,\n\t\tid: \"meta-theme-hydrate\",\n\t\tdangerouslySetInnerHTML: { __html: scriptContent }\n\t})] });\n}\n\nexport { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme2 as setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
2
+ import { getStorageItem } from "./safeStorage.mjs";
2
3
  import { getForceScheme, getUserScheme, onUserSchemeChange, setForceScheme, setUserScheme, setUserScheme as setUserScheme2, useUserScheme, useUserScheme as useUserScheme2 } from "./userScheme.mjs";
3
4
  import { getSystemScheme, useSystemScheme } from "./systemScheme.mjs";
4
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -15,8 +16,8 @@ function SchemeProvider({
15
16
  } = useUserScheme();
16
17
  const resolvedValue = forceScheme ?? value;
17
18
  useIsomorphicLayoutEffect(() => {
18
- if (!forceScheme && defaultScheme && typeof localStorage !== "undefined") {
19
- if (!localStorage.getItem(storageKey)) setUserScheme(defaultScheme);
19
+ if (!forceScheme && defaultScheme) {
20
+ if (!getStorageItem(storageKey)) setUserScheme(defaultScheme);
20
21
  }
21
22
  }, [defaultScheme, forceScheme]);
22
23
  useIsomorphicLayoutEffect(() => {
@@ -34,12 +35,12 @@ d.remove('${getClassName("light")}')
34
35
  d.remove('${getClassName("dark")}')
35
36
  d.add('${getClassName(forceScheme)}')`;else {
36
37
  const fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : `window.matchMedia('(prefers-color-scheme: dark)').matches`;
37
- const seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
38
+ const seedStorage = defaultScheme ? `;if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
38
39
  scriptContent = `let d = document.documentElement.classList
39
40
  d.remove('${getClassName("light")}')
40
41
  d.remove('${getClassName("dark")}')
41
- let e = localStorage.getItem('${storageKey}')
42
- ${seedStorage}
42
+ let e = null
43
+ try { e = localStorage.getItem('${storageKey}')${seedStorage} } catch (_e) {}
43
44
  let t = 'system' === e || !e
44
45
  ? ${fallback}
45
46
  : e === 'dark'
@@ -64,7 +65,8 @@ function MetaTheme({
64
65
  } = useUserScheme();
65
66
  const forced = getForceScheme();
66
67
  const scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === "dark" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')
67
- let e1 = localStorage.getItem('${storageKey}')
68
+ let e1 = null
69
+ try { e1 = localStorage.getItem('${storageKey}') } catch (_e) {}
68
70
  let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
69
71
  dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;
70
72
  return /* @__PURE__ */jsxs(Fragment, {
@@ -1 +1 @@
1
- {"version":3,"names":["useIsomorphicLayoutEffect","getForceScheme","getUserScheme","onUserSchemeChange","setForceScheme","setUserScheme","setUserScheme2","useUserScheme","useUserScheme2","getSystemScheme","useSystemScheme","Fragment","jsx","jsxs","storageKey","SchemeProvider","children","getClassName","name","defaultScheme","forceScheme","value","resolvedValue","localStorage","getItem","toAdd","toRemove","classList","document","documentElement","remove","contains","add","scriptContent","fallback","seedStorage","suppressHydrationWarning","dangerouslySetInnerHTML","__html","MetaTheme","color","darkColor","lightColor","forced","id","content"],"sources":["index.mjs"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@vxrn/use-isomorphic-layout-effect\";\nimport { getForceScheme, getUserScheme, onUserSchemeChange, setForceScheme, setUserScheme, setUserScheme as setUserScheme2, useUserScheme, useUserScheme as useUserScheme2 } from \"./userScheme\";\nimport { getSystemScheme, useSystemScheme } from \"./systemScheme\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\n\nconst storageKey = \"vxrn-scheme\";\nfunction SchemeProvider({ children, getClassName = (name) => `t_${name}`, defaultScheme, forceScheme }) {\n\tsetForceScheme(forceScheme ?? null);\n\tconst { value } = useUserScheme();\n\tconst resolvedValue = forceScheme ?? value;\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!forceScheme && defaultScheme && typeof localStorage !== \"undefined\") {\n\t\t\tif (!localStorage.getItem(storageKey)) setUserScheme(defaultScheme);\n\t\t}\n\t}, [defaultScheme, forceScheme]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconst toAdd = getClassName(resolvedValue);\n\t\tconst toRemove = getClassName(resolvedValue === \"light\" ? \"dark\" : \"light\");\n\t\tconst { classList } = document.documentElement;\n\t\tclassList.remove(toRemove);\n\t\tif (!classList.contains(toAdd)) classList.add(toAdd);\n\t}, [getClassName, resolvedValue]);\n\tlet scriptContent;\n\tif (forceScheme) scriptContent = `let d = document.documentElement.classList\nd.remove('${getClassName(\"light\")}')\nd.remove('${getClassName(\"dark\")}')\nd.add('${getClassName(forceScheme)}')`;\n\telse {\n\t\tconst fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : `window.matchMedia('(prefers-color-scheme: dark)').matches`;\n\t\tconst seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : \"\";\n\t\tscriptContent = `let d = document.documentElement.classList\nd.remove('${getClassName(\"light\")}')\nd.remove('${getClassName(\"dark\")}')\nlet e = localStorage.getItem('${storageKey}')\n${seedStorage}\nlet t = 'system' === e || !e\n ? ${fallback}\n : e === 'dark'\nt ? d.add('${getClassName(\"dark\")}') : d.add('${getClassName(\"light\")}')`;\n\t}\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"script\", {\n\t\tsuppressHydrationWarning: true,\n\t\tdangerouslySetInnerHTML: { __html: scriptContent }\n\t}), children] });\n}\nfunction MetaTheme({ color, darkColor, lightColor }) {\n\tconst { value } = useUserScheme();\n\tconst forced = getForceScheme();\n\tconst scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === \"dark\" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')\nlet e1 = localStorage.getItem('${storageKey}')\nlet isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'\ndc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"meta\", {\n\t\tsuppressHydrationWarning: true,\n\t\tid: \"vxrn-theme-color\",\n\t\tname: \"theme-color\",\n\t\tcontent: color ?? (value === \"dark\" ? darkColor : lightColor)\n\t}), /* @__PURE__ */ jsx(\"script\", {\n\t\tsuppressHydrationWarning: true,\n\t\tid: \"meta-theme-hydrate\",\n\t\tdangerouslySetInnerHTML: { __html: scriptContent }\n\t})] });\n}\n\nexport { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme2 as setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useIsomorphicLayoutEffect","getStorageItem","getForceScheme","getUserScheme","onUserSchemeChange","setForceScheme","setUserScheme","setUserScheme2","useUserScheme","useUserScheme2","getSystemScheme","useSystemScheme","Fragment","jsx","jsxs","storageKey","SchemeProvider","children","getClassName","name","defaultScheme","forceScheme","value","resolvedValue","toAdd","toRemove","classList","document","documentElement","remove","contains","add","scriptContent","fallback","seedStorage","suppressHydrationWarning","dangerouslySetInnerHTML","__html","MetaTheme","color","darkColor","lightColor","forced","id","content"],"sources":["index.mjs"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@vxrn/use-isomorphic-layout-effect\";\nimport { getStorageItem } from \"./safeStorage\";\nimport { getForceScheme, getUserScheme, onUserSchemeChange, setForceScheme, setUserScheme, setUserScheme as setUserScheme2, useUserScheme, useUserScheme as useUserScheme2 } from \"./userScheme\";\nimport { getSystemScheme, useSystemScheme } from \"./systemScheme\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\n\nconst storageKey = \"vxrn-scheme\";\nfunction SchemeProvider({ children, getClassName = (name) => `t_${name}`, defaultScheme, forceScheme }) {\n\tsetForceScheme(forceScheme ?? null);\n\tconst { value } = useUserScheme();\n\tconst resolvedValue = forceScheme ?? value;\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!forceScheme && defaultScheme) {\n\t\t\tif (!getStorageItem(storageKey)) setUserScheme(defaultScheme);\n\t\t}\n\t}, [defaultScheme, forceScheme]);\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconst toAdd = getClassName(resolvedValue);\n\t\tconst toRemove = getClassName(resolvedValue === \"light\" ? \"dark\" : \"light\");\n\t\tconst { classList } = document.documentElement;\n\t\tclassList.remove(toRemove);\n\t\tif (!classList.contains(toAdd)) classList.add(toAdd);\n\t}, [getClassName, resolvedValue]);\n\tlet scriptContent;\n\tif (forceScheme) scriptContent = `let d = document.documentElement.classList\nd.remove('${getClassName(\"light\")}')\nd.remove('${getClassName(\"dark\")}')\nd.add('${getClassName(forceScheme)}')`;\n\telse {\n\t\tconst fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : `window.matchMedia('(prefers-color-scheme: dark)').matches`;\n\t\tconst seedStorage = defaultScheme ? `;if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : \"\";\n\t\tscriptContent = `let d = document.documentElement.classList\nd.remove('${getClassName(\"light\")}')\nd.remove('${getClassName(\"dark\")}')\nlet e = null\ntry { e = localStorage.getItem('${storageKey}')${seedStorage} } catch (_e) {}\nlet t = 'system' === e || !e\n ? ${fallback}\n : e === 'dark'\nt ? d.add('${getClassName(\"dark\")}') : d.add('${getClassName(\"light\")}')`;\n\t}\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"script\", {\n\t\tsuppressHydrationWarning: true,\n\t\tdangerouslySetInnerHTML: { __html: scriptContent }\n\t}), children] });\n}\nfunction MetaTheme({ color, darkColor, lightColor }) {\n\tconst { value } = useUserScheme();\n\tconst forced = getForceScheme();\n\tconst scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === \"dark\" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')\nlet e1 = null\ntry { e1 = localStorage.getItem('${storageKey}') } catch (_e) {}\nlet isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'\ndc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"meta\", {\n\t\tsuppressHydrationWarning: true,\n\t\tid: \"vxrn-theme-color\",\n\t\tname: \"theme-color\",\n\t\tcontent: color ?? (value === \"dark\" ? darkColor : lightColor)\n\t}), /* @__PURE__ */ jsx(\"script\", {\n\t\tsuppressHydrationWarning: true,\n\t\tid: \"meta-theme-hydrate\",\n\t\tdangerouslySetInnerHTML: { __html: scriptContent }\n\t})] });\n}\n\nexport { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme2 as setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };"],"mappings":"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","ignoreList":[]}