@vxrn/color-scheme 1.14.4 → 1.14.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.
- package/dist/cjs/index.cjs +52 -38
- package/dist/cjs/index.native.js +67 -38
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/systemScheme.cjs +20 -16
- package/dist/cjs/systemScheme.native.js +33 -29
- package/dist/cjs/systemScheme.native.js.map +1 -1
- package/dist/cjs/userScheme.cjs +111 -44
- package/dist/cjs/userScheme.native.js +115 -59
- package/dist/cjs/userScheme.native.js.map +1 -1
- package/dist/esm/index.js +35 -23
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +35 -23
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +51 -23
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/systemScheme.mjs +6 -4
- package/dist/esm/systemScheme.mjs.map +1 -1
- package/dist/esm/systemScheme.native.js +19 -17
- package/dist/esm/systemScheme.native.js.map +1 -1
- package/dist/esm/userScheme.mjs +95 -30
- package/dist/esm/userScheme.mjs.map +1 -1
- package/dist/esm/userScheme.native.js +99 -45
- package/dist/esm/userScheme.native.js.map +1 -1
- package/package.json +3 -3
|
@@ -2,102 +2,155 @@ import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
|
|
|
2
2
|
import { useState, useMemo } from "react";
|
|
3
3
|
import { Appearance } from "react-native";
|
|
4
4
|
import { getSystemScheme } from "./systemScheme.native.js";
|
|
5
|
-
var listeners = /* @__PURE__ */new Set()
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
var listeners = /* @__PURE__ */new Set();
|
|
6
|
+
var storageKey = "vxrn-scheme";
|
|
7
|
+
var _forceScheme = null;
|
|
8
8
|
function notifyListeners() {
|
|
9
9
|
listeners.forEach(function (listener) {
|
|
10
10
|
listener(currentSetting, currentValue);
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
function restoreUnforcedScheme() {
|
|
14
|
-
if (typeof localStorage
|
|
14
|
+
if (typeof localStorage !== "undefined") {
|
|
15
15
|
var stored = localStorage.getItem(storageKey);
|
|
16
16
|
if (stored) {
|
|
17
|
-
currentSetting = stored
|
|
17
|
+
currentSetting = stored;
|
|
18
|
+
currentValue = stored === "system" ? resolveValue("system") : stored;
|
|
18
19
|
return;
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
|
-
currentSetting = "system"
|
|
22
|
+
currentSetting = "system";
|
|
23
|
+
currentValue = resolveValue("system");
|
|
22
24
|
}
|
|
23
25
|
function setForceScheme(scheme) {
|
|
24
26
|
var wasForced = _forceScheme;
|
|
25
|
-
|
|
27
|
+
if (wasForced === scheme) return;
|
|
28
|
+
_forceScheme = scheme;
|
|
29
|
+
if (scheme) {
|
|
30
|
+
currentSetting = scheme;
|
|
31
|
+
currentValue = scheme;
|
|
32
|
+
} else if (wasForced) {
|
|
33
|
+
restoreUnforcedScheme();
|
|
34
|
+
startWebListener();
|
|
35
|
+
}
|
|
26
36
|
}
|
|
27
37
|
function getForceScheme() {
|
|
28
38
|
return _forceScheme;
|
|
29
39
|
}
|
|
30
40
|
function getInitialSetting() {
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
41
|
+
if (true) {
|
|
42
|
+
if (typeof localStorage !== "undefined") {
|
|
43
|
+
var stored = localStorage.getItem(storageKey);
|
|
44
|
+
if (stored === "light" || stored === "dark" || stored === "system") {
|
|
45
|
+
return stored;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
34
48
|
}
|
|
35
49
|
return "system";
|
|
36
50
|
}
|
|
37
51
|
function getInitialValue(setting) {
|
|
38
|
-
|
|
52
|
+
if (true) {
|
|
53
|
+
if (setting === "system") {
|
|
54
|
+
return Appearance.getColorScheme() === "dark" ? "dark" : "light";
|
|
55
|
+
}
|
|
56
|
+
return setting;
|
|
57
|
+
}
|
|
58
|
+
return "light";
|
|
39
59
|
}
|
|
40
|
-
var initialSetting = getInitialSetting()
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
60
|
+
var initialSetting = getInitialSetting();
|
|
61
|
+
var currentSetting = initialSetting;
|
|
62
|
+
var currentValue = getInitialValue(initialSetting);
|
|
63
|
+
if (true) {
|
|
64
|
+
Appearance.addChangeListener(function (next) {
|
|
65
|
+
if (currentSetting === "system" && next.colorScheme) {
|
|
66
|
+
updateValueFromSystem();
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
var isWebListening = false;
|
|
47
71
|
function startWebListener() {
|
|
48
72
|
var _window_matchMedia, _window, _matcher_addEventListener;
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
73
|
+
if (isWebListening) return;
|
|
74
|
+
isWebListening = true;
|
|
75
|
+
var matcher = typeof window !== "undefined" ? (_window_matchMedia = (_window = window).matchMedia) === null || _window_matchMedia === void 0 ? void 0 : _window_matchMedia.call(_window, "(prefers-color-scheme: dark)") : null;
|
|
76
|
+
var onSystemChange = function () {
|
|
77
|
+
if (currentSetting === "system") {
|
|
78
|
+
updateValueFromSystem();
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
onSystemChange();
|
|
82
|
+
matcher === null || matcher === void 0 ? void 0 : (_matcher_addEventListener = matcher.addEventListener) === null || _matcher_addEventListener === void 0 ? void 0 : _matcher_addEventListener.call(matcher, "change", onSystemChange);
|
|
57
83
|
}
|
|
58
84
|
function resolveValue(setting) {
|
|
59
|
-
|
|
85
|
+
if (setting === "system") {
|
|
86
|
+
if (true) {
|
|
87
|
+
return Appearance.getColorScheme() === "dark" ? "dark" : "light";
|
|
88
|
+
}
|
|
89
|
+
return getSystemScheme();
|
|
90
|
+
}
|
|
91
|
+
return setting;
|
|
60
92
|
}
|
|
61
93
|
function updateValueFromSystem() {
|
|
62
|
-
if (
|
|
63
|
-
|
|
64
|
-
|
|
94
|
+
if (_forceScheme) return;
|
|
95
|
+
var value = resolveValue("system");
|
|
96
|
+
if (value !== currentValue) {
|
|
97
|
+
currentValue = value;
|
|
98
|
+
notifyListeners();
|
|
65
99
|
}
|
|
66
100
|
}
|
|
67
101
|
function updateScheme(setting) {
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
102
|
+
if (_forceScheme) return;
|
|
103
|
+
var value = setting === "system" ? resolveValue("system") : setting;
|
|
104
|
+
if (value !== currentValue || currentSetting !== setting) {
|
|
105
|
+
currentSetting = setting;
|
|
106
|
+
currentValue = value;
|
|
107
|
+
if (true) {
|
|
108
|
+
if (setting !== "system") {
|
|
109
|
+
Appearance.setColorScheme(value);
|
|
110
|
+
} else {
|
|
111
|
+
Appearance.setColorScheme("unspecified");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
notifyListeners();
|
|
71
115
|
}
|
|
72
116
|
}
|
|
73
117
|
function setUserScheme(setting) {
|
|
74
|
-
|
|
118
|
+
if (_forceScheme) return;
|
|
119
|
+
if (typeof localStorage !== "undefined") {
|
|
120
|
+
localStorage.setItem(storageKey, setting);
|
|
121
|
+
}
|
|
122
|
+
updateScheme(setting);
|
|
75
123
|
}
|
|
76
124
|
function getUserScheme() {
|
|
77
|
-
|
|
125
|
+
if (_forceScheme) return {
|
|
78
126
|
setting: _forceScheme,
|
|
79
127
|
value: _forceScheme
|
|
80
|
-
}
|
|
128
|
+
};
|
|
129
|
+
return {
|
|
81
130
|
setting: currentSetting,
|
|
82
131
|
value: currentValue
|
|
83
132
|
};
|
|
84
133
|
}
|
|
85
134
|
function onUserSchemeChange(listener) {
|
|
86
|
-
|
|
135
|
+
listeners.add(listener);
|
|
136
|
+
listener(currentSetting, currentValue);
|
|
137
|
+
return function () {
|
|
87
138
|
listeners.delete(listener);
|
|
88
139
|
};
|
|
89
140
|
}
|
|
90
141
|
function useUserScheme() {
|
|
91
142
|
var [state, setState] = useState(function () {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
143
|
+
return getUserScheme();
|
|
144
|
+
});
|
|
145
|
+
var snapshot = getUserScheme();
|
|
146
|
+
var resolvedState = state.setting === snapshot.setting && state.value === snapshot.value ? state : snapshot;
|
|
147
|
+
useIsomorphicLayoutEffect(function () {
|
|
97
148
|
if (!_forceScheme) {
|
|
98
|
-
if (typeof localStorage
|
|
149
|
+
if (typeof localStorage !== "undefined") {
|
|
99
150
|
var stored = localStorage.getItem(storageKey);
|
|
100
|
-
|
|
151
|
+
if (stored) {
|
|
152
|
+
updateScheme(stored);
|
|
153
|
+
}
|
|
101
154
|
}
|
|
102
155
|
startWebListener();
|
|
103
156
|
}
|
|
@@ -108,7 +161,8 @@ function useUserScheme() {
|
|
|
108
161
|
});
|
|
109
162
|
});
|
|
110
163
|
return dispose;
|
|
111
|
-
}, [])
|
|
164
|
+
}, []);
|
|
165
|
+
return useMemo(function () {
|
|
112
166
|
return {
|
|
113
167
|
setting: resolvedState.setting,
|
|
114
168
|
value: resolvedState.value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useIsomorphicLayoutEffect","useState","useMemo","Appearance","getSystemScheme","listeners","Set","storageKey","_forceScheme","notifyListeners","forEach","listener","currentSetting","currentValue","restoreUnforcedScheme","localStorage","stored","getItem","resolveValue","setForceScheme","scheme","wasForced","startWebListener","getForceScheme","getInitialSetting","getInitialValue","setting","getColorScheme","initialSetting","addChangeListener","next","colorScheme","updateValueFromSystem","isWebListening","_window_matchMedia","_window","_matcher_addEventListener","matcher","window","matchMedia","call","onSystemChange","addEventListener","value","updateScheme","setColorScheme","setUserScheme","setItem","getUserScheme","onUserSchemeChange","add","delete","useUserScheme","state","setState","snapshot","resolvedState"],"sources":["../../src/userScheme.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,yBAAA,QAAiC;AAC1C,SAASC,QAAA,EAAUC,OAAA,QAAe;AAClC,SAA2BC,UAAA;AAC3B,SAASC,eAAA,QAAoC;AAe7C,IAAAC,SAAM,kBAAY,IAAAC,GAAI;
|
|
1
|
+
{"version":3,"names":["useIsomorphicLayoutEffect","useState","useMemo","Appearance","getSystemScheme","listeners","Set","storageKey","_forceScheme","notifyListeners","forEach","listener","currentSetting","currentValue","restoreUnforcedScheme","localStorage","stored","getItem","resolveValue","setForceScheme","scheme","wasForced","startWebListener","getForceScheme","getInitialSetting","getInitialValue","setting","getColorScheme","initialSetting","addChangeListener","next","colorScheme","updateValueFromSystem","isWebListening","_window_matchMedia","_window","_matcher_addEventListener","matcher","window","matchMedia","call","onSystemChange","addEventListener","value","updateScheme","setColorScheme","setUserScheme","setItem","getUserScheme","onUserSchemeChange","add","delete","useUserScheme","state","setState","snapshot","resolvedState","dispose"],"sources":["../../src/userScheme.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,yBAAA,QAAiC;AAC1C,SAASC,QAAA,EAAUC,OAAA,QAAe;AAClC,SAA2BC,UAAA;AAC3B,SAASC,eAAA,QAAoC;AAe7C,IAAAC,SAAM,kBAAY,IAAAC,GAAI;AACtB,IAAAC,UAAM,gBAAa;AAGnB,IAAIC,YAAA,GAA8B;AAElC,SAASC,gBAAA,EAAkB;EACzBJ,SAAA,CAAUK,OAAA,CAAQ,UAACC,QAAa;IAC9BA,QAAA,CAASC,cAAA,EAAgBC,YAAY;EACvC,CAAC;AACH;AAEA,SAASC,sBAAA,EAAwB;EAC/B,IAAI,OAAOC,YAAA,KAAiB,aAAa;IACvC,IAAAC,MAAM,GAAAD,YAAS,CAAAE,OAAa,CAAAV,UAAQ;IACpC,IAAIS,MAAA,EAAQ;MACVJ,cAAA,GAAiBI,MAAA;MACjBH,YAAA,GAAeG,MAAA,KAAW,WAAWE,YAAA,CAAa,QAAQ,IAAIF,MAAA;MAC9D;IACF;EACF;EAEAJ,cAAA,GAAiB;EACjBC,YAAA,GAAeK,YAAA,CAAa,QAAQ;AACtC;AAOO,SAASC,eAAeC,MAAA,EAAuB;EACpD,IAAAC,SAAM,GAAAb,YAAY;EAElB,IAAIa,SAAA,KAAcD,MAAA,EAAQ;EAE1BZ,YAAA,GAAeY,MAAA;EAEf,IAAIA,MAAA,EAAQ;IACVR,cAAA,GAAiBQ,MAAA;IACjBP,YAAA,GAAeO,MAAA;EACjB,WAAWC,SAAA,EAAW;IACpBP,qBAAA,CAAsB;IACtBQ,gBAAA,CAAiB;EACnB;AACF;AAEO,SAASC,eAAA,EAAgC;EAC9C,OAAOf,YAAA;AACT;AAGA,SAASgB,kBAAA,EAAmC;EAC1C,IAAI;IACF,IAAI,OAAOT,YAAA,KAAiB,aAAa;MACvC,IAAAC,MAAM,GAAAD,YAAS,CAAAE,OAAa,CAAAV,UAAQ;MACpC,IAAIS,MAAA,KAAW,WAAWA,MAAA,KAAW,UAAUA,MAAA,KAAW,UAAU;QAClE,OAAOA,MAAA;MACT;IACF;EACF;EAEA,OAAO;AACT;AAEA,SAASS,gBAAgBC,OAAA,EAAgC;EACvD,IAAI;IACF,IAAIA,OAAA,KAAY,UAAU;MACxB,OAAOvB,UAAA,CAAWwB,cAAA,CAAe,MAAM,SAAS,SAAS;IAC3D;IACA,OAAOD,OAAA;EACT;EAEA,OAAO;AACT;AACA,IAAAE,cAAM,GAAAJ,iBAAiB;AACvB,IAAIZ,cAAA,GAAgCgB,cAAA;AACpC,IAAIf,YAAA,GAAuBY,eAAA,CAAgBG,cAAc;AAGzD,IAAI;EACFzB,UAAA,CAAW0B,iBAAA,CAAkB,UAACC,IAAS;IACrC,IAAIlB,cAAA,KAAmB,YAAYkB,IAAA,CAAKC,WAAA,EAAa;MACnDC,qBAAA,CAAsB;IACxB;EACF,CAAC;AACH;AAGA,IAAIC,cAAA,GAAiB;AACrB,SAASX,iBAAA,EAAmB;EAC1B,IAAIY,kBAAgB,EAAAC,OAAA,EAAAC,yBAAA;EACpB,IAAAH,cAAiB;EAEjBA,cAAM,GACJ;EAIF,IAAAI,OAAM,UAAAC,MAAiB,KAAM,eAAAJ,kBAAA,IAAAC,OAAA,GAAAG,MAAA,EAAAC,UAAA,cAAAL,kBAAA,uBAAAA,kBAAA,CAAAM,IAAA,CAAAL,OAAA;EAC3B,IAAAM,cAAI,YAAAA,CAAA,EAAmB;IACrB,IAAA7B,cAAA,aAAsB;MACxBoB,qBAAA;IACF;EAEA;EACAS,cAAS;EACXJ,OAAA,aAAAA,OAAA,wBAAAD,yBAAA,GAAAC,OAAA,CAAAK,gBAAA,cAAAN,yBAAA,uBAAAA,yBAAA,CAAAI,IAAA,CAAAH,OAAA,YAAAI,cAAA;AAEA;AACE,SAAIvB,YAAYA,CAAAQ,OAAU;EACxB,IAAAA,OAAI,KAAyC;IAC3C,UAAO;MACT,OAAAvB,UAAA,CAAAwB,cAAA;IACA;IACF,OAAAvB,eAAA;EACA;EACF,OAAAsB,OAAA;AAGA;AACE,SAAIM,qBAAcA,CAAA;EAClB,IAAAxB,YAAc;EACd,IAAImC,KAAA,GAAAzB,YAAU,SAAc;EAC1B,IAAAyB,KAAA,KAAA9B,YAAe;IAEfA,YAAA,GAAA8B,KAAgB;IAClBlC,eAAA;EACF;AAEA;AACE,SAAImC,YAAcA,CAAAlB,OAAA;EAClB,IAAAlB,YAAc;EAEd,IAAImC,KAAA,GAAAjB,OAAU,aAAgB,GAAAR,YAAA,SAAmB,IAASQ,OAAA;EACxD,IAAAiB,KAAA,KAAA9B,YAAiB,IAAAD,cAAA,KAAAc,OAAA;IACjBd,cAAA,GAAec,OAAA;IAEfb,YAA6C,GAAA8B,KAAA;IAG3C,QAAI;MACF,IAAAjB,OAAA,KAAW;QACbvB,UAAO,CAAA0C,cAAA,CAAAF,KAAA;MAEL;QACFxC,UAAA,CAAA0C,cAAA;MACF;IAEA;IACFpC,eAAA;EACF;AAQO;AACL,SAAIqC,aAAcA,CAAApB,OAAA;EAClB,IAAIlB,YAAO;EACT,WAAAO,YAAqB,gBAAY;IACnCA,YAAA,CAAAgC,OAAA,CAAAxC,UAAA,EAAAmB,OAAA;EACA;EACFkB,YAAA,CAAAlB,OAAA;AAOO;AACL,SAAIsB,aAAcA,CAAA;EAClB,IAAAxC,YAAS,EAAS;IACpBkB,OAAA,EAAAlB,YAAA;IAQOmC,KAAS,EAAAnC;EACd;EACA;IACAkB,OAAO,EAAAd,cAAM;IACX+B,KAAA,EAAA9B;EACF;AACF;AAeO,SAASoC,kBAA4BA,CAAAtC,QAAA;EAC1CN,SAAO,CAAA6C,GAAA,CAAOvC,QAAQ;EACtBA,QAAM,CAAAC,cAAW,EAAAC,YAAc;EAC/B,OAAM;IAKNR,SAAA,CAAA8C,MAAA,CAAAxC,QAA0B;EACxB;AAEE;AACE,SAAAyC,aAAMA,CAAA,EAAS;EACf,KAAAC,KAAI,EAAAC,QAAQ,IAAArD,QAAA;IACV,OAAA+C,aAAa;EAAM;EACrB,IACFO,QAAA,GAAAP,aAAA;EACA,IAAAQ,aAAA,GAAAH,KAAiB,CAAA3B,OAAA,KAAA6B,QAAA,CAAA7B,OAAA,IAAA2B,KAAA,CAAAV,KAAA,KAAAY,QAAA,CAAAZ,KAAA,GAAAU,KAAA,GAAAE,QAAA;EAAAvD,yBACnB;IAGA,KAAAQ,YAAgB;MACd,WAAWO,YAAS,KAAO;QAC5B,IAAAC,MAAA,GAAAD,YAAA,CAAAE,OAAA,CAAAV,UAAA;QAED,IAAOS,MAAA;UACJ4B,YAAA,CAAA5B,MAAA;QAEL;MACE;MACEM,gBAAS;IAAc;IACF,IACrBmC,OAAK,GAAAR,kBAAA,WAAAvB,OAAA,EAAAiB,KAAA;MACPW,QAAA;QACC5B,OAAA;QACHiB;MACF","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vxrn/color-scheme",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.5",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package.json": "./package.json",
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"watch": "tamagui-build --watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@vxrn/use-isomorphic-layout-effect": "1.14.
|
|
33
|
+
"@vxrn/use-isomorphic-layout-effect": "1.14.5"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@tamagui/build": "2.0.0-rc.
|
|
36
|
+
"@tamagui/build": "2.0.0-rc.36-1775258360494",
|
|
37
37
|
"react": "19.2.0",
|
|
38
38
|
"react-native": "0.83.2"
|
|
39
39
|
},
|