@vxrn/color-scheme 1.13.3 → 1.13.4

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.
@@ -39,28 +39,32 @@ const storageKey = "vxrn-scheme";
39
39
  function SchemeProvider({
40
40
  children,
41
41
  getClassName = name => `t_${name}`,
42
- defaultScheme
42
+ defaultScheme,
43
+ forceScheme
43
44
  }) {
45
+ (0, import_userScheme.setForceScheme)(forceScheme ?? null);
44
46
  const {
45
- value
46
- } = (0, import_userScheme.useUserScheme)();
47
+ value
48
+ } = (0, import_userScheme.useUserScheme)(),
49
+ resolvedValue = forceScheme ?? value;
47
50
  (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
48
- defaultScheme && typeof localStorage < "u" && (localStorage.getItem(storageKey) || (0, import_userScheme.setUserScheme)(defaultScheme));
49
- }, []), (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
50
- const toAdd = getClassName(value),
51
- toRemove = getClassName(value === "light" ? "dark" : "light"),
51
+ !forceScheme && defaultScheme && typeof localStorage < "u" && (localStorage.getItem(storageKey) || (0, import_userScheme.setUserScheme)(defaultScheme));
52
+ }, [defaultScheme, forceScheme]), (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
53
+ const toAdd = getClassName(resolvedValue),
54
+ toRemove = getClassName(resolvedValue === "light" ? "dark" : "light"),
52
55
  {
53
56
  classList
54
57
  } = document.documentElement;
55
58
  classList.remove(toRemove), classList.contains(toAdd) || classList.add(toAdd);
56
- }, [value]);
57
- const fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
58
- seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
59
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
60
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)("script", {
61
- suppressHydrationWarning: !0,
62
- dangerouslySetInnerHTML: {
63
- __html: `let d = document.documentElement.classList
59
+ }, [getClassName, resolvedValue]);
60
+ let scriptContent;
61
+ if (forceScheme) scriptContent = `let d = document.documentElement.classList
62
+ d.remove('${getClassName("light")}')
63
+ d.remove('${getClassName("dark")}')
64
+ d.add('${getClassName(forceScheme)}')`;else {
65
+ const fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
66
+ seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
67
+ scriptContent = `let d = document.documentElement.classList
64
68
  d.remove('${getClassName("light")}')
65
69
  d.remove('${getClassName("dark")}')
66
70
  let e = localStorage.getItem('${storageKey}')
@@ -68,8 +72,13 @@ ${seedStorage}
68
72
  let t = 'system' === e || !e
69
73
  ? ${fallback}
70
74
  : e === 'dark'
71
- t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
72
- `
75
+ t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')`;
76
+ }
77
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
78
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)("script", {
79
+ suppressHydrationWarning: !0,
80
+ dangerouslySetInnerHTML: {
81
+ __html: scriptContent
73
82
  }
74
83
  }), children]
75
84
  });
@@ -80,8 +89,13 @@ function MetaTheme({
80
89
  lightColor
81
90
  }) {
82
91
  const {
83
- value
84
- } = (0, import_userScheme.useUserScheme)();
92
+ value
93
+ } = (0, import_userScheme.useUserScheme)(),
94
+ forced = (0, import_userScheme.getForceScheme)(),
95
+ scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === "dark" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')
96
+ let e1 = localStorage.getItem('${storageKey}')
97
+ let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
98
+ dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;
85
99
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
86
100
  children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)("meta", {
87
101
  suppressHydrationWarning: !0,
@@ -92,12 +106,7 @@ function MetaTheme({
92
106
  suppressHydrationWarning: !0,
93
107
  id: "meta-theme-hydrate",
94
108
  dangerouslySetInnerHTML: {
95
- __html: `
96
- let dc = document.getElementById('vxrn-theme-color')
97
- let e1 = localStorage.getItem('${storageKey}')
98
- let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
99
- dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
100
- `
109
+ __html: scriptContent
101
110
  }
102
111
  })]
103
112
  });
@@ -40,17 +40,35 @@ var import_jsx_runtime = require("react/jsx-runtime"),
40
40
  storageKey = "vxrn-scheme";
41
41
  function SchemeProvider(param) {
42
42
  var {
43
- children,
44
- getClassName = function (name) {
45
- return `t_${name}`;
46
- },
47
- defaultScheme
48
- } = param,
49
- {
43
+ children,
44
+ getClassName = function (name) {
45
+ return `t_${name}`;
46
+ },
47
+ defaultScheme,
48
+ forceScheme
49
+ } = param;
50
+ (0, import_userScheme.setForceScheme)(forceScheme ?? null);
51
+ var {
50
52
  value
51
53
  } = (0, import_userScheme.useUserScheme)(),
52
- fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
53
- seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
54
+ resolvedValue = forceScheme ?? value,
55
+ scriptContent;
56
+ if (forceScheme) scriptContent = `let d = document.documentElement.classList
57
+ d.remove('${getClassName("light")}')
58
+ d.remove('${getClassName("dark")}')
59
+ d.add('${getClassName(forceScheme)}')`;else {
60
+ var fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
61
+ seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
62
+ scriptContent = `let d = document.documentElement.classList
63
+ d.remove('${getClassName("light")}')
64
+ d.remove('${getClassName("dark")}')
65
+ let e = localStorage.getItem('${storageKey}')
66
+ ${seedStorage}
67
+ let t = 'system' === e || !e
68
+ ? ${fallback}
69
+ : e === 'dark'
70
+ t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')`;
71
+ }
54
72
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
55
73
  children: [null, children]
56
74
  });
@@ -63,7 +81,12 @@ function MetaTheme(param) {
63
81
  } = param,
64
82
  {
65
83
  value
66
- } = (0, import_userScheme.useUserScheme)();
84
+ } = (0, import_userScheme.useUserScheme)(),
85
+ forced = (0, import_userScheme.getForceScheme)(),
86
+ scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === "dark" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')
87
+ let e1 = localStorage.getItem('${storageKey}')
88
+ let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
89
+ dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;
67
90
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
68
91
  children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)("meta", {
69
92
  suppressHydrationWarning: !0,
@@ -74,12 +97,7 @@ function MetaTheme(param) {
74
97
  suppressHydrationWarning: !0,
75
98
  id: "meta-theme-hydrate",
76
99
  dangerouslySetInnerHTML: {
77
- __html: `
78
- let dc = document.getElementById('vxrn-theme-color')
79
- let e1 = localStorage.getItem('${storageKey}')
80
- let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
81
- dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
82
- `
100
+ __html: scriptContent
83
101
  }
84
102
  })]
85
103
  });
@@ -1 +1 @@
1
- {"version":3,"names":["__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_use_isomorphic_layout_effect","import_userScheme","storageKey","param","children","getClassName","name","defaultScheme","fallback","seedStorage","jsxs","Fragment","color","darkColor","lightColor","jsx","suppressHydrationWarning","id","content","dangerouslySetInnerHTML","__html"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,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,mBAAA,CAAAK,eAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAJ,kBAAA,CAAAI;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAlB,YAAA,CAAAK,aAA0C;AAiB1C,IAAAc,kBAAmB,GAAAC,OAAA;EAAAC,mCAAA,GAAAD,OAAA;EAAAE,iBAAA,GAAAF,OAAA;EAAAV,mBAAA,GAAAU,OAAA;EAAAR,kBAAA,GAAAQ,OAAA;EAAAG,UAAA;AAEZ,SAASf,eAAegB,KAAA;EAC7B;MAAAC,QAAA;MAAAC,YAAA,YAAAA,CAAAC,IAAA;QACA,YAAAA,IAAgB;MAChB;MAAAC;IAAA,IAAAJ,KAAA;IAAA;MAAApB;IAAA,QAAAkB,iBAAA,CAAAN,aAAA;IAAAa,QAAA,GAAAD,aAAA,OAAAA,aAAA;IAAAE,WAAA,GAAAF,aAAA,mCAAAL,UAAA,MAAAK,aAAA;EACF,OAKG,mBAAAT,kBAAA,CAAAY,IAAA,EAAAZ,kBAAA,CAAAa,QAAA;IACDP,QAAQ,GAIN,MACMA,QAAA;EAQJ;AAGA;AAEqB,SAEnBlB,SAAMA,CAAAiB,KAAA;EAGZ;MAAMS,KAAA;MAAAC,SAAW;MAAAC;IACb,IAAIX,KAAA;IAAA;MAAApB;IAAa,QAAAkB,iBACjB,CAAAN,aAAA;EAMJ,OACE,mBAAAG,kBAAA,CAAAY,IAAA,EAAAZ,kBAAA,CAAAa,QAAA;IAEIP,QAAA,GAAC,mBAAAN,kBAAA,CAAAiB,GAAA;MAAAC,wBAAA;MACCC,EAAA;MACAX,IAAA;MAAyBY,OACvB,EAAAN,KAAQ,KAAA7B,KAAA,cAAA8B,SAAA,GAAAC,UAAA;IAAA,IACa,eACrB,IAAahB,kBAAO,CAAAiB,GAAA;MAAAC,wBACA;MAC9BC,EAAA,sBAAW;MAAAE,uBAAA;QAEPC,MAAQ;AAAA;AAAA,iCAEmBlB,UAAA;AAAoC;AAAA,oCAE3DW,SAAA,QAAAC,UAAA;AAAA;MACF;IAED;EAGP;AAEO","ignoreList":[]}
1
+ {"version":3,"names":["__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_use_isomorphic_layout_effect","import_userScheme","storageKey","param","children","getClassName","name","defaultScheme","forceScheme","setForceScheme","resolvedValue","scriptContent","fallback","seedStorage","jsxs","Fragment","color","darkColor","lightColor","forced","getForceScheme","jsx","suppressHydrationWarning","id","content","dangerouslySetInnerHTML","__html"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,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,mBAAA,CAAAK,eAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAJ,kBAAA,CAAAI;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAlB,YAAA,CAAAK,aAA0C;AAsB1C,IAAAc,kBAAmB,GAAAC,OAAA;EAAAC,mCAAA,GAAAD,OAAA;EAAAE,iBAAA,GAAAF,OAAA;EAAAV,mBAAA,GAAAU,OAAA;EAAAR,kBAAA,GAAAQ,OAAA;EAAAG,UAAA;AAEZ,SAASf,eAAegB,KAAA;EAC7B;IAAAC,QAAA;IAAAC,YAAA,YAAAA,CAAAC,IAAA;MACA,YAAAA,IAAgB;IAChB;IAAAC,aAAA;IAAAC;EAAA,IAAAL,KAAA;EACA,IAAAF,iBAAA,CAAAQ,cAAA,EAAAD,WAAA;EACF,IAOG;MAAAzB;IAAA,QAAAkB,iBAAA,CAAAN,aAAA;IAAAe,aAAA,GAAAF,WAAA,IAAAzB,KAAA;IAAA4B,aAAA;EAED,IAAAH,WAAA,EAEAG,aAAc;AAKZ,YAAAN,YAAA;AACE,YAAKA,YAAe;AAEW,SAG7BA,YAAe,CAAAG,WAAY,WAG7B;IAGA,IAAAI,QAAU,GAAAL,aACL,OAAAA,aAAmB,cACtB,8DAAmB;MAAAM,WAAA,GAAAN,aAAA,mCAAAL,UAAA,MAAAK,aAAA;IAEvBI,aAAI,GAAc;AAGpB,YAAIN,YAAA;AAEJ,YAAIA,YAAA;AAEF,gCAAgBH,UAAA;AAAA,EAAAW,WACR;AAAqB;AACD,MAAAD,QACvB;AAAyB;AAE9B,aAAMP,YAAW,uBACTA,YAAa,aACjB;EAMJ;EAAgB,sBACK,IAAAP,kBAAQ,CAAAgB,IAAA,EAAAhB,kBAAA,CAAAiB,QAAA;IAAAX,QACrB,GAAoB,MAE9BA,QAAW;EAAA;AAEC;AAAA,SAAAlB,SAEDA,CAAAiB,KAAA,EAAa;EACxB;MAAAa,KAAA;MAAAC,SAAA;MAAAC;IAAA,IAAAf,KAAA;IAAA;MAAApB;IAAA,QAAAkB,iBAAA,CAAAN,aAAA;IAAAwB,MAAA,OAAAlB,iBAAA,CAAAmB,cAAA;IAAAT,aAAA,GAAAQ,MAAA,0EAAAA,MAAA,cAAAF,SAAA,GAAAC,UAAA;AAEA,iCACEhB,UAAA;AAEI;AAAA,oCAACe,SAAA,QAAAC,UAAA;EAAA,0BAAApB,kBAAA,CAAAgB,IAAA,EAAAhB,kBAAA,CAAAiB,QAAA;IAAAX,QACC,GAAwB,eACxB,IAAAN,kBAAmC,CAAAuB,GAAA,UAAc;MAAAC,wBAAA;MACnDC,EAAA;MAEDjB,IAAA;MACHkB,OAAA,EAAAR,KAAA,KAAAjC,KAAA,cAAAkC,SAAA,GAAAC,UAAA;IAEJ,IAEO,eAAmB,IAAApB,kBAAA,CAAAuB,GAAA;MACxBC,wBAAA;MACAC,EAAA;MACAE,uBAAA;QAKCC,MAAA,EAAAf;MACK;IAKF;EACqC;AAIzC","ignoreList":[]}
@@ -20,8 +20,10 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
20
20
  }), mod);
21
21
  var userScheme_exports = {};
22
22
  __export(userScheme_exports, {
23
+ getForceScheme: () => getForceScheme,
23
24
  getUserScheme: () => getUserScheme,
24
25
  onUserSchemeChange: () => onUserSchemeChange,
26
+ setForceScheme: () => setForceScheme,
25
27
  setUserScheme: () => setUserScheme,
26
28
  useUserScheme: () => useUserScheme
27
29
  });
@@ -32,6 +34,29 @@ var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-e
32
34
  import_systemScheme = require("./systemScheme.cjs");
33
35
  const listeners = /* @__PURE__ */new Set(),
34
36
  storageKey = "vxrn-scheme";
37
+ let _forceScheme = null;
38
+ function notifyListeners() {
39
+ listeners.forEach(listener => {
40
+ listener(currentSetting, currentValue);
41
+ });
42
+ }
43
+ function restoreUnforcedScheme() {
44
+ if (typeof localStorage < "u") {
45
+ const stored = localStorage.getItem(storageKey);
46
+ if (stored) {
47
+ currentSetting = stored, currentValue = stored === "system" ? resolveValue("system") : stored;
48
+ return;
49
+ }
50
+ }
51
+ currentSetting = "system", currentValue = resolveValue("system");
52
+ }
53
+ function setForceScheme(scheme) {
54
+ const wasForced = _forceScheme;
55
+ wasForced !== scheme && (_forceScheme = scheme, scheme ? (currentSetting = scheme, currentValue = scheme) : wasForced && (restoreUnforcedScheme(), startWebListener()));
56
+ }
57
+ function getForceScheme() {
58
+ return _forceScheme;
59
+ }
35
60
  function getInitialSetting() {
36
61
  return "system";
37
62
  }
@@ -55,22 +80,23 @@ function resolveValue(setting) {
55
80
  return setting === "system" ? (0, import_systemScheme.getSystemScheme)() : setting;
56
81
  }
57
82
  function updateValueFromSystem() {
83
+ if (_forceScheme) return;
58
84
  const value = resolveValue("system");
59
- value !== currentValue && (currentValue = value, listeners.forEach(l => {
60
- l(currentSetting, currentValue);
61
- }));
85
+ value !== currentValue && (currentValue = value, notifyListeners());
62
86
  }
63
87
  function updateScheme(setting) {
88
+ if (_forceScheme) return;
64
89
  const value = setting === "system" ? resolveValue("system") : setting;
65
- (value !== currentValue || currentSetting !== setting) && (currentSetting = setting, currentValue = value, listeners.forEach(l => {
66
- l(currentSetting, currentValue);
67
- }));
90
+ (value !== currentValue || currentSetting !== setting) && (currentSetting = setting, currentValue = value, notifyListeners());
68
91
  }
69
92
  function setUserScheme(setting) {
70
- typeof localStorage < "u" && localStorage.setItem(storageKey, setting), updateScheme(setting);
93
+ _forceScheme || (typeof localStorage < "u" && localStorage.setItem(storageKey, setting), updateScheme(setting));
71
94
  }
72
95
  function getUserScheme() {
73
- return {
96
+ return _forceScheme ? {
97
+ setting: _forceScheme,
98
+ value: _forceScheme
99
+ } : {
74
100
  setting: currentSetting,
75
101
  value: currentValue
76
102
  };
@@ -81,22 +107,26 @@ function onUserSchemeChange(listener) {
81
107
  };
82
108
  }
83
109
  function useUserScheme() {
84
- const [state, setState] = (0, import_react.useState)(() => getUserScheme());
110
+ const [state, setState] = (0, import_react.useState)(() => getUserScheme()),
111
+ snapshot = getUserScheme(),
112
+ resolvedState = state.setting === snapshot.setting && state.value === snapshot.value ? state : snapshot;
85
113
  return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
86
- if (typeof localStorage < "u") {
87
- const stored = localStorage.getItem(storageKey);
88
- stored && updateScheme(stored);
114
+ if (!_forceScheme) {
115
+ if (typeof localStorage < "u") {
116
+ const stored = localStorage.getItem(storageKey);
117
+ stored && updateScheme(stored);
118
+ }
119
+ startWebListener();
89
120
  }
90
- const dispose = onUserSchemeChange((setting, value) => {
121
+ return onUserSchemeChange((setting, value) => {
91
122
  setState({
92
123
  setting,
93
124
  value
94
125
  });
95
126
  });
96
- return startWebListener(), dispose;
97
127
  }, []), (0, import_react.useMemo)(() => ({
98
- setting: state.setting,
99
- value: state.value,
128
+ setting: resolvedState.setting,
129
+ value: resolvedState.value,
100
130
  set: setUserScheme
101
- }), [state.setting, state.value]);
131
+ }), [resolvedState.setting, resolvedState.value]);
102
132
  }
@@ -22,8 +22,10 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
22
22
  }), mod);
23
23
  var userScheme_exports = {};
24
24
  __export(userScheme_exports, {
25
+ getForceScheme: () => getForceScheme,
25
26
  getUserScheme: () => getUserScheme,
26
27
  onUserSchemeChange: () => onUserSchemeChange,
28
+ setForceScheme: () => setForceScheme,
27
29
  setUserScheme: () => setUserScheme,
28
30
  useUserScheme: () => useUserScheme
29
31
  });
@@ -33,7 +35,30 @@ var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-e
33
35
  import_react_native = require("react-native"),
34
36
  import_systemScheme = require("./systemScheme.native.js"),
35
37
  listeners = /* @__PURE__ */new Set(),
36
- storageKey = "vxrn-scheme";
38
+ storageKey = "vxrn-scheme",
39
+ _forceScheme = null;
40
+ function notifyListeners() {
41
+ listeners.forEach(function (listener) {
42
+ listener(currentSetting, currentValue);
43
+ });
44
+ }
45
+ function restoreUnforcedScheme() {
46
+ if (typeof localStorage < "u") {
47
+ var stored = localStorage.getItem(storageKey);
48
+ if (stored) {
49
+ currentSetting = stored, currentValue = stored === "system" ? resolveValue("system") : stored;
50
+ return;
51
+ }
52
+ }
53
+ currentSetting = "system", currentValue = resolveValue("system");
54
+ }
55
+ function setForceScheme(scheme) {
56
+ var wasForced = _forceScheme;
57
+ wasForced !== scheme && (_forceScheme = scheme, scheme ? (currentSetting = scheme, currentValue = scheme) : wasForced && (restoreUnforcedScheme(), startWebListener()));
58
+ }
59
+ function getForceScheme() {
60
+ return _forceScheme;
61
+ }
37
62
  function getInitialSetting() {
38
63
  if (typeof localStorage < "u") {
39
64
  var stored = localStorage.getItem(storageKey);
@@ -66,22 +91,25 @@ function resolveValue(setting) {
66
91
  return setting === "system" ? import_react_native.Appearance.getColorScheme() === "dark" ? "dark" : "light" : setting;
67
92
  }
68
93
  function updateValueFromSystem() {
69
- var value = resolveValue("system");
70
- value !== currentValue && (currentValue = value, listeners.forEach(function (l) {
71
- l(currentSetting, currentValue);
72
- }));
94
+ if (!_forceScheme) {
95
+ var value = resolveValue("system");
96
+ value !== currentValue && (currentValue = value, notifyListeners());
97
+ }
73
98
  }
74
99
  function updateScheme(setting) {
75
- var value = setting === "system" ? resolveValue("system") : setting;
76
- (value !== currentValue || currentSetting !== setting) && (currentSetting = setting, currentValue = value, setting !== "system" ? import_react_native.Appearance.setColorScheme(value) : import_react_native.Appearance.setColorScheme("unspecified"), listeners.forEach(function (l) {
77
- l(currentSetting, currentValue);
78
- }));
100
+ if (!_forceScheme) {
101
+ var value = setting === "system" ? resolveValue("system") : setting;
102
+ (value !== currentValue || currentSetting !== setting) && (currentSetting = setting, currentValue = value, setting !== "system" ? import_react_native.Appearance.setColorScheme(value) : import_react_native.Appearance.setColorScheme("unspecified"), notifyListeners());
103
+ }
79
104
  }
80
105
  function setUserScheme(setting) {
81
- typeof localStorage < "u" && localStorage.setItem(storageKey, setting), updateScheme(setting);
106
+ _forceScheme || (typeof localStorage < "u" && localStorage.setItem(storageKey, setting), updateScheme(setting));
82
107
  }
83
108
  function getUserScheme() {
84
- return {
109
+ return _forceScheme ? {
110
+ setting: _forceScheme,
111
+ value: _forceScheme
112
+ } : {
85
113
  setting: currentSetting,
86
114
  value: currentValue
87
115
  };
@@ -93,12 +121,17 @@ function onUserSchemeChange(listener) {
93
121
  }
94
122
  function useUserScheme() {
95
123
  var [state, setState] = (0, import_react.useState)(function () {
96
- return getUserScheme();
97
- });
124
+ return getUserScheme();
125
+ }),
126
+ snapshot = getUserScheme(),
127
+ resolvedState = state.setting === snapshot.setting && state.value === snapshot.value ? state : snapshot;
98
128
  return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(function () {
99
- if (typeof localStorage < "u") {
100
- var stored = localStorage.getItem(storageKey);
101
- stored && updateScheme(stored);
129
+ if (!_forceScheme) {
130
+ if (typeof localStorage < "u") {
131
+ var stored = localStorage.getItem(storageKey);
132
+ stored && updateScheme(stored);
133
+ }
134
+ startWebListener();
102
135
  }
103
136
  var dispose = onUserSchemeChange(function (setting, value) {
104
137
  setState({
@@ -106,13 +139,13 @@ function useUserScheme() {
106
139
  value
107
140
  });
108
141
  });
109
- return startWebListener(), dispose;
142
+ return dispose;
110
143
  }, []), (0, import_react.useMemo)(function () {
111
144
  return {
112
- setting: state.setting,
113
- value: state.value,
145
+ setting: resolvedState.setting,
146
+ value: resolvedState.value,
114
147
  set: setUserScheme
115
148
  };
116
- }, [state.setting, state.value]);
149
+ }, [resolvedState.setting, resolvedState.value]);
117
150
  }
118
151
  //# sourceMappingURL=userScheme.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","userScheme_exports","__export","getUserScheme","onUserSchemeChange","setUserScheme","useUserScheme","module","exports","import_use_isomorphic_layout_effect","require","import_react","import_react_native","import_systemScheme","listeners","Set","storageKey","getInitialSetting","localStorage","stored","getItem","getInitialValue","setting","Appearance","getColorScheme","initialSetting","currentSetting","currentValue","addChangeListener","next","colorScheme","updateValueFromSystem","isWebListening","startWebListener","_window_matchMedia","_window","_matcher_addEventListener","matcher","window","matchMedia","call","onSystemChange","addEventListener","resolveValue","forEach","l","updateScheme","setColorScheme","setItem","listener","add","delete","state","setState","useState","useIsomorphicLayoutEffect"],"sources":["../../src/userScheme.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__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_systemScheme","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","addEventListener","updateScheme","setColorScheme","setItem","add","delete","state","setState","useState","snapshot","resolvedState","useIsomorphicLayoutEffect"],"sources":["../../src/userScheme.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
2
- import { setUserScheme, useUserScheme } from "./userScheme.mjs";
2
+ import { getForceScheme, setForceScheme, setUserScheme, useUserScheme } from "./userScheme.mjs";
3
3
  import { getSystemScheme, useSystemScheme } from "./systemScheme.mjs";
4
4
  import { getUserScheme, onUserSchemeChange, setUserScheme as setUserScheme2, useUserScheme as useUserScheme2 } from "./userScheme.mjs";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -7,28 +7,32 @@ const storageKey = "vxrn-scheme";
7
7
  function SchemeProvider({
8
8
  children,
9
9
  getClassName = name => `t_${name}`,
10
- defaultScheme
10
+ defaultScheme,
11
+ forceScheme
11
12
  }) {
13
+ setForceScheme(forceScheme ?? null);
12
14
  const {
13
- value
14
- } = useUserScheme();
15
+ value
16
+ } = useUserScheme(),
17
+ resolvedValue = forceScheme ?? value;
15
18
  useIsomorphicLayoutEffect(() => {
16
- defaultScheme && typeof localStorage < "u" && (localStorage.getItem(storageKey) || setUserScheme(defaultScheme));
17
- }, []), useIsomorphicLayoutEffect(() => {
18
- const toAdd = getClassName(value),
19
- toRemove = getClassName(value === "light" ? "dark" : "light"),
19
+ !forceScheme && defaultScheme && typeof localStorage < "u" && (localStorage.getItem(storageKey) || setUserScheme(defaultScheme));
20
+ }, [defaultScheme, forceScheme]), useIsomorphicLayoutEffect(() => {
21
+ const toAdd = getClassName(resolvedValue),
22
+ toRemove = getClassName(resolvedValue === "light" ? "dark" : "light"),
20
23
  {
21
24
  classList
22
25
  } = document.documentElement;
23
26
  classList.remove(toRemove), classList.contains(toAdd) || classList.add(toAdd);
24
- }, [value]);
25
- const fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
26
- seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
27
- return /* @__PURE__ */jsxs(Fragment, {
28
- children: [/* @__PURE__ */jsx("script", {
29
- suppressHydrationWarning: !0,
30
- dangerouslySetInnerHTML: {
31
- __html: `let d = document.documentElement.classList
27
+ }, [getClassName, resolvedValue]);
28
+ let scriptContent;
29
+ if (forceScheme) scriptContent = `let d = document.documentElement.classList
30
+ d.remove('${getClassName("light")}')
31
+ d.remove('${getClassName("dark")}')
32
+ d.add('${getClassName(forceScheme)}')`;else {
33
+ const fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
34
+ seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
35
+ scriptContent = `let d = document.documentElement.classList
32
36
  d.remove('${getClassName("light")}')
33
37
  d.remove('${getClassName("dark")}')
34
38
  let e = localStorage.getItem('${storageKey}')
@@ -36,8 +40,13 @@ ${seedStorage}
36
40
  let t = 'system' === e || !e
37
41
  ? ${fallback}
38
42
  : e === 'dark'
39
- t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
40
- `
43
+ t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')`;
44
+ }
45
+ return /* @__PURE__ */jsxs(Fragment, {
46
+ children: [/* @__PURE__ */jsx("script", {
47
+ suppressHydrationWarning: !0,
48
+ dangerouslySetInnerHTML: {
49
+ __html: scriptContent
41
50
  }
42
51
  }), children]
43
52
  });
@@ -48,8 +57,13 @@ function MetaTheme({
48
57
  lightColor
49
58
  }) {
50
59
  const {
51
- value
52
- } = useUserScheme();
60
+ value
61
+ } = useUserScheme(),
62
+ forced = getForceScheme(),
63
+ scriptContent = forced ? `document.getElementById('vxrn-theme-color').setAttribute('content','${forced === "dark" ? darkColor : lightColor}')` : `let dc = document.getElementById('vxrn-theme-color')
64
+ let e1 = localStorage.getItem('${storageKey}')
65
+ let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
66
+ dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')`;
53
67
  return /* @__PURE__ */jsxs(Fragment, {
54
68
  children: [/* @__PURE__ */jsx("meta", {
55
69
  suppressHydrationWarning: !0,
@@ -60,12 +74,7 @@ function MetaTheme({
60
74
  suppressHydrationWarning: !0,
61
75
  id: "meta-theme-hydrate",
62
76
  dangerouslySetInnerHTML: {
63
- __html: `
64
- let dc = document.getElementById('vxrn-theme-color')
65
- let e1 = localStorage.getItem('${storageKey}')
66
- let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
67
- dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
68
- `
77
+ __html: scriptContent
69
78
  }
70
79
  })]
71
80
  });
@@ -1 +1 @@
1
- {"version":3,"names":["useIsomorphicLayoutEffect","setUserScheme","useUserScheme","getSystemScheme","useSystemScheme","getUserScheme","onUserSchemeChange","setUserScheme2","useUserScheme2","Fragment","jsx","jsxs","storageKey","SchemeProvider","children","getClassName","name","defaultScheme","value","localStorage","getItem","toAdd","toRemove","classList","document","documentElement","remove","contains","add","fallback","seedStorage","suppressHydrationWarning","dangerouslySetInnerHTML","__html","MetaTheme","color","darkColor","lightColor","id","content"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,yBAAA,QAAiC;AAE1C,SAASC,aAAA,EAAeC,aAAA,QAAqB;AAO7C,SAASC,eAAA,EAAiBC,eAAA,QAAuB;AACjD,SACEC,aAAA,EACAC,kBAAA,EACAL,aAAA,IAAAM,cAAA,EACAL,aAAA,IAAAM,cAAA,QACK;AA8CH,SAAAC,QAAA,EAEIC,GAAA,EAFJC,IAAA;AA5CJ,MAAMC,UAAA,GAAa;AAEZ,SAASC,eAAe;EAC7BC,QAAA;EACAC,YAAA,GAAgBC,IAAA,IAAS,KAAKA,IAAI;EAClCC;AACF,GAKG;EACD,MAAM;IAAEC;EAAM,IAAIhB,aAAA,CAAc;EAI9BF,yBAAA,CAA0B,MAAM;IAC1BiB,aAAA,IAAiB,OAAOE,YAAA,GAAiB,QACtCA,YAAA,CAAaC,OAAA,CAAQR,UAAU,KAClCX,aAAA,CAAcgB,aAAa;EAGjC,GAAG,EAAE,GAELjB,yBAAA,CAA0B,MAAM;IAC9B,MAAMqB,KAAA,GAAQN,YAAA,CAAaG,KAAK;MAC1BI,QAAA,GAAWP,YAAA,CAAaG,KAAA,KAAU,UAAU,SAAS,OAAO;MAC5D;QAAEK;MAAU,IAAIC,QAAA,CAASC,eAAA;IAC/BF,SAAA,CAAUG,MAAA,CAAOJ,QAAQ,GACpBC,SAAA,CAAUI,QAAA,CAASN,KAAK,KAC3BE,SAAA,CAAUK,GAAA,CAAIP,KAAK;EAEvB,GAAG,CAACH,KAAK,CAAC;EAGZ,MAAMW,QAAA,GAAWZ,aAAA,GACb,IAAIA,aAAa,iBACjB;IAEEa,WAAA,GAAcb,aAAA,GAChB,gCAAgCL,UAAU,MAAMK,aAAa,QAC7D;EAEJ,OACE,eAAAN,IAAA,CAAAF,QAAA;IAEIK,QAAA,kBAAAJ,GAAA,CAAC;MACCqB,wBAAA,EAAwB;MACxBC,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA,YACRlB,YAAA,CAAa,OAAO,CAAC;AAAA,YACrBA,YAAA,CAAa,MAAM,CAAC;AAAA,gCACAH,UAAU;AAAA,EACxCkB,WAAW;AAAA;AAAA,MAEPD,QAAQ;AAAA;AAAA,aAEDd,YAAA,CAAa,MAAM,CAAC,eAAeA,YAAA,CAAa,OAAO,CAAC;AAAA;MAE3D;IAAA,CACF,GAEDD,QAAA;EAAA,CACH;AAEJ;AAEO,SAASoB,UAAU;EACxBC,KAAA;EACAC,SAAA;EACAC;AACF,GAIG;EACD,MAAM;IAAEnB;EAAM,IAAIhB,aAAA,CAAc;EAEhC,OACE,eAAAS,IAAA,CAAAF,QAAA;IACEK,QAAA,kBAAAJ,GAAA,CAAC;MACCqB,wBAAA,EAAwB;MACxBO,EAAA,EAAG;MACHtB,IAAA,EAAK;MACLuB,OAAA,EAASJ,KAAA,KAAUjB,KAAA,KAAU,SAASkB,SAAA,GAAYC,UAAA;IAAA,CACpD,GACA,eAAA3B,GAAA,CAAC;MACCqB,wBAAA,EAAwB;MACxBO,EAAA,EAAG;MACHN,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA;AAAA,iCAEerB,UAAU;AAAA;AAAA,oCAEPwB,SAAS,QAAQC,UAAU;AAAA;MAEvD;IAAA,CACF;EAAA,CACF;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["useIsomorphicLayoutEffect","getForceScheme","setForceScheme","setUserScheme","useUserScheme","getSystemScheme","useSystemScheme","getUserScheme","onUserSchemeChange","setUserScheme2","useUserScheme2","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":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}