@tamagui/web 1.124.4 → 1.124.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/helpers/insertStyleRule.js.map +1 -1
- package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -1
- package/dist/cjs/hooks/getThemeProxied.cjs +21 -15
- package/dist/cjs/hooks/getThemeProxied.js +20 -12
- package/dist/cjs/hooks/getThemeProxied.js.map +1 -1
- package/dist/cjs/hooks/getThemeProxied.native.js +25 -21
- package/dist/cjs/hooks/getThemeProxied.native.js.map +2 -2
- package/dist/cjs/hooks/useThemeState.cjs +76 -62
- package/dist/cjs/hooks/useThemeState.js +51 -39
- package/dist/cjs/hooks/useThemeState.js.map +2 -2
- package/dist/cjs/hooks/useThemeState.native.js +38 -30
- package/dist/cjs/hooks/useThemeState.native.js.map +2 -2
- package/dist/esm/helpers/insertStyleRule.js.map +1 -1
- package/dist/esm/helpers/insertStyleRule.mjs.map +1 -1
- package/dist/esm/helpers/insertStyleRule.native.js.map +1 -1
- package/dist/esm/hooks/getThemeProxied.js +20 -11
- package/dist/esm/hooks/getThemeProxied.js.map +1 -1
- package/dist/esm/hooks/getThemeProxied.mjs +20 -14
- package/dist/esm/hooks/getThemeProxied.mjs.map +1 -1
- package/dist/esm/hooks/getThemeProxied.native.js +26 -21
- package/dist/esm/hooks/getThemeProxied.native.js.map +2 -2
- package/dist/esm/hooks/useThemeState.js +51 -39
- package/dist/esm/hooks/useThemeState.js.map +2 -2
- package/dist/esm/hooks/useThemeState.mjs +76 -63
- package/dist/esm/hooks/useThemeState.mjs.map +1 -1
- package/dist/esm/hooks/useThemeState.native.js +37 -30
- package/dist/esm/hooks/useThemeState.native.js.map +2 -2
- package/package.json +11 -11
- package/src/hooks/getThemeProxied.ts +19 -13
- package/src/hooks/useThemeState.ts +99 -57
- package/types/helpers/insertStyleRule.d.ts.map +1 -1
- package/types/hooks/getThemeProxied.d.ts +2 -2
- package/types/hooks/getThemeProxied.d.ts.map +1 -1
- package/types/hooks/useThemeState.d.ts +1 -0
- package/types/hooks/useThemeState.d.ts.map +1 -1
|
@@ -2,34 +2,40 @@ import "@tamagui/constants";
|
|
|
2
2
|
import { getConfig } from "../config.mjs";
|
|
3
3
|
import { getVariable } from "../createVariable.mjs";
|
|
4
4
|
import "./doesRootSchemeMatchSystem.mjs";
|
|
5
|
+
import { keysToId } from "./useThemeState.mjs";
|
|
5
6
|
const cache = /* @__PURE__ */new Map();
|
|
6
|
-
let curKeys, curProps;
|
|
7
|
+
let curKeys, curProps, curState;
|
|
7
8
|
const emptyObject = {};
|
|
8
|
-
function getThemeProxied(_props,
|
|
9
|
-
|
|
10
|
-
if (
|
|
11
|
-
|
|
12
|
-
const {
|
|
13
|
-
name,
|
|
14
|
-
scheme
|
|
15
|
-
} = state,
|
|
16
|
-
config = getConfig();
|
|
9
|
+
function getThemeProxied(_props, _state, _keys) {
|
|
10
|
+
if (!_state?.theme) return emptyObject;
|
|
11
|
+
if (curKeys = _keys, curProps = _props, curState = _state, cache.has(curState.theme)) return cache.get(curState.theme);
|
|
12
|
+
const config = getConfig();
|
|
17
13
|
function track(key) {
|
|
18
|
-
curKeys && (curKeys.current || (curKeys.current = /* @__PURE__ */new Set()), curKeys.current.add(key), process.env.NODE_ENV === "development" && curProps.debug
|
|
14
|
+
if (curKeys && (curKeys.current || (curKeys.current = /* @__PURE__ */new Set()), curKeys.current.add(key), process.env.NODE_ENV === "development" && curProps.debug)) {
|
|
15
|
+
const realId = keysToId.get(curKeys);
|
|
16
|
+
console.info(` \u{1F3A8} useTheme(${realId}) tracking new key: ${key}`, curKeys, globalThis.states?.get(realId + 1));
|
|
17
|
+
}
|
|
19
18
|
}
|
|
20
|
-
const proxied = Object.fromEntries(Object.entries(theme).flatMap(([key, value]) => {
|
|
19
|
+
const proxied = Object.fromEntries(Object.entries(_state.theme).flatMap(([key, value]) => {
|
|
21
20
|
const proxied2 = {
|
|
22
21
|
...value,
|
|
23
22
|
get val() {
|
|
24
23
|
return globalThis.tamaguiAvoidTracking || track(key), value.val;
|
|
25
24
|
},
|
|
26
25
|
get(platform) {
|
|
27
|
-
|
|
26
|
+
if (!curState) return;
|
|
27
|
+
const outVal = getVariable(value),
|
|
28
|
+
{
|
|
29
|
+
name,
|
|
30
|
+
scheme,
|
|
31
|
+
inverses
|
|
32
|
+
} = curState;
|
|
33
|
+
return outVal;
|
|
28
34
|
}
|
|
29
35
|
};
|
|
30
36
|
return [[key, proxied2], [`$${key}`, proxied2]];
|
|
31
37
|
}));
|
|
32
|
-
return cache.set(theme, proxied), proxied;
|
|
38
|
+
return cache.set(_state.theme, proxied), proxied;
|
|
33
39
|
}
|
|
34
40
|
export { getThemeProxied };
|
|
35
41
|
//# sourceMappingURL=getThemeProxied.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getConfig","getVariable","cache","Map","curKeys","curProps","emptyObject","getThemeProxied","_props","
|
|
1
|
+
{"version":3,"names":["getConfig","getVariable","keysToId","cache","Map","curKeys","curProps","curState","emptyObject","getThemeProxied","_props","_state","_keys","theme","has","get","config","track","key","current","Set","add","process","env","NODE_ENV","debug","realId","console","info","globalThis","states","proxied","Object","fromEntries","entries","flatMap","value","proxied2","val","tamaguiAvoidTracking","platform","outVal","name","scheme","inverses","set"],"sources":["../../../src/hooks/getThemeProxied.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAsB;AAEtB,SAASA,SAAA,QAA6B;AAEtC,SAASC,WAAA,QAAmB;AAQ5B,OAA0C;AAC1C,SAASC,QAAA,QAAiC;AAqC1C,MAAMC,KAAA,GAAwC,mBAAIC,GAAA,CAAI;AAEtD,IAAIC,OAAA,EACAC,QAAA,EACAC,QAAA;AAEJ,MAAMC,WAAA,GAAc,CAAC;AAEd,SAASC,gBAEdC,MAAA,EACAC,MAAA,EACAC,KAAA,EACc;EACd,IAAI,CAACD,MAAA,EAAQE,KAAA,EACX,OAAOL,WAAA;EAOT,IAJAH,OAAA,GAAUO,KAAA,EACVN,QAAA,GAAWI,MAAA,EACXH,QAAA,GAAWI,MAAA,EAEPR,KAAA,CAAMW,GAAA,CAAIP,QAAA,CAASM,KAAK,GAE1B,OADgBV,KAAA,CAAMY,GAAA,CAAIR,QAAA,CAASM,KAAK;EAO1C,MAAMG,MAAA,GAAShB,SAAA,CAAU;EAEzB,SAASiB,MAAMC,GAAA,EAAa;IAC1B,IAAKb,OAAA,KACAA,OAAA,CAAQc,OAAA,KACXd,OAAA,CAAQc,OAAA,GAAU,mBAAIC,GAAA,CAAI,IAE5Bf,OAAA,CAAQc,OAAA,CAAQE,GAAA,CAAIH,GAAG,GACnBI,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,iBAAiBlB,QAAA,CAASmB,KAAA,GAAO;MAC5D,MAAMC,MAAA,GAASxB,QAAA,CAASa,GAAA,CAAIV,OAAO;MACnCsB,OAAA,CAAQC,IAAA,CACN,uBAAgBF,MAAM,uBAAuBR,GAAG,IAChDb,OAAA,EACAwB,UAAA,CAAWC,MAAA,EAAWf,GAAA,CAAIW,MAAA,GAAS,CAAC,CACtC;IACF;EACF;EAEA,MAAMK,OAAA,GAAUC,MAAA,CAAOC,WAAA,CACrBD,MAAA,CAAOE,OAAA,CAAQvB,MAAA,CAAOE,KAAK,EAAEsB,OAAA,CAAQ,CAAC,CAACjB,GAAA,EAAKkB,KAAK,MAAM;IACrD,MAAMC,QAAA,GAAU;MACd,GAAGD,KAAA;MACH,IAAIE,IAAA,EAAM;QAER,OAAKT,UAAA,CAAWU,oBAAA,IAEdtB,KAAA,CAAMC,GAAG,GAEJkB,KAAA,CAAME,GAAA;MACf;MACAvB,IAAIyB,QAAA,EAAkB;QACpB,IAAI,CAACjC,QAAA,EAAU;QAEf,MAAMkC,MAAA,GAASxC,WAAA,CAAYmC,KAAK;UAC1B;YAAEM,IAAA;YAAMC,MAAA;YAAQC;UAAS,IAAIrC,QAAA;QA0CnC,OAAOkC,MAAA;MACT;IACF;IAEA,OAAO,CACL,CAACvB,GAAA,EAAKmB,QAAO,GACb,CAAC,IAAInB,GAAG,IAAImB,QAAO,EACrB;EACF,CAAC,CACH;EAEA,OAAAlC,KAAA,CAAM0C,GAAA,CAAIlC,MAAA,CAAOE,KAAA,EAAOkB,OAAO,GAExBA,OAAA;AACT","ignoreList":[]}
|
|
@@ -2,42 +2,47 @@ import { isIos } from "@tamagui/constants";
|
|
|
2
2
|
import { getConfig, getSetting } from "../config";
|
|
3
3
|
import { getVariable } from "../createVariable";
|
|
4
4
|
import { doesRootSchemeMatchSystem } from "./doesRootSchemeMatchSystem";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (!theme)
|
|
5
|
+
import { keysToId } from "./useThemeState";
|
|
6
|
+
var cache = /* @__PURE__ */ new Map(), curKeys, curProps, curState, emptyObject = {};
|
|
7
|
+
function getThemeProxied(_props, _state, _keys) {
|
|
8
|
+
if (!_state?.theme)
|
|
9
9
|
return emptyObject;
|
|
10
|
-
if (curKeys = _keys, curProps = _props, cache.has(theme)) {
|
|
11
|
-
var proxied = cache.get(theme);
|
|
10
|
+
if (curKeys = _keys, curProps = _props, curState = _state, cache.has(curState.theme)) {
|
|
11
|
+
var proxied = cache.get(curState.theme);
|
|
12
12
|
return proxied;
|
|
13
13
|
}
|
|
14
|
-
var
|
|
14
|
+
var config = getConfig();
|
|
15
15
|
function track(key) {
|
|
16
|
-
curKeys && (curKeys.current || (curKeys.current = /* @__PURE__ */ new Set()), curKeys.current.add(key), process.env.NODE_ENV === "development" && curProps.debug
|
|
16
|
+
if (curKeys && (curKeys.current || (curKeys.current = /* @__PURE__ */ new Set()), curKeys.current.add(key), process.env.NODE_ENV === "development" && curProps.debug)) {
|
|
17
|
+
var _globalThis_states, realId = keysToId.get(curKeys);
|
|
18
|
+
console.info(` \u{1F3A8} useTheme(${realId}) tracking new key: ${key}`, curKeys, (_globalThis_states = globalThis.states) === null || _globalThis_states === void 0 ? void 0 : _globalThis_states.get(realId + 1));
|
|
19
|
+
}
|
|
17
20
|
}
|
|
18
|
-
var proxied1 = Object.fromEntries(Object.entries(theme).flatMap(function(param) {
|
|
21
|
+
var proxied1 = Object.fromEntries(Object.entries(_state.theme).flatMap(function(param) {
|
|
19
22
|
var [key, value] = param, proxied2 = {
|
|
20
23
|
...value,
|
|
21
24
|
get val() {
|
|
22
25
|
return globalThis.tamaguiAvoidTracking || track(key), value.val;
|
|
23
26
|
},
|
|
24
27
|
get(platform) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
if (curState) {
|
|
29
|
+
var outVal = getVariable(value), { name, scheme, inverses } = curState, shouldOptimize = scheme && platform !== "web" && isIos && !curProps.deopt && getSetting("fastSchemeChange") && inverses === 0 && doesRootSchemeMatchSystem();
|
|
30
|
+
if (shouldOptimize) {
|
|
31
|
+
var _config_themes_name, _config_themes_oppositeName, oppositeScheme = scheme === "dark" ? "light" : "dark", oppositeName = name.replace(scheme, oppositeScheme), color = getVariable((_config_themes_name = config.themes[name]) === null || _config_themes_name === void 0 ? void 0 : _config_themes_name[key]), oppositeColor = getVariable((_config_themes_oppositeName = config.themes[oppositeName]) === null || _config_themes_oppositeName === void 0 ? void 0 : _config_themes_oppositeName[key]), dynamicVal = {
|
|
32
|
+
dynamic: {
|
|
33
|
+
[scheme]: color,
|
|
34
|
+
[oppositeScheme]: oppositeColor
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
return dynamicVal;
|
|
38
|
+
}
|
|
39
|
+
return process.env.NODE_ENV === "development" && curProps.debug && console.info(` \u{1F3A8} useTheme() tracking new key because of:
|
|
36
40
|
not web: ${platform !== "web"}
|
|
37
41
|
isIOS: ${isIos}
|
|
38
42
|
deopt: ${curProps.deopt}
|
|
39
43
|
fastScheme: ${getSetting("fastSchemeChange")}
|
|
40
44
|
`), track(key), outVal;
|
|
45
|
+
}
|
|
41
46
|
}
|
|
42
47
|
};
|
|
43
48
|
return [
|
|
@@ -51,7 +56,7 @@ function getThemeProxied(_props, state, _keys) {
|
|
|
51
56
|
]
|
|
52
57
|
];
|
|
53
58
|
}));
|
|
54
|
-
return cache.set(theme, proxied1), proxied1;
|
|
59
|
+
return cache.set(_state.theme, proxied1), proxied1;
|
|
55
60
|
}
|
|
56
61
|
export {
|
|
57
62
|
getThemeProxied
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/Users/n8/tamagui/code/core/web/src/hooks/getThemeProxied.ts"],
|
|
4
|
-
"mappings": "AAAA,SAASA,aAAa;AAEtB,SAASC,WAAWC,kBAAkB;AAEtC,SAASC,mBAAmB;AAQ5B,SAASC,iCAAiC;
|
|
5
|
-
"names": ["isIos", "getConfig", "getSetting", "getVariable", "doesRootSchemeMatchSystem", "cache", "Map", "curKeys", "curProps", "emptyObject", "getThemeProxied", "_props", "
|
|
4
|
+
"mappings": "AAAA,SAASA,aAAa;AAEtB,SAASC,WAAWC,kBAAkB;AAEtC,SAASC,mBAAmB;AAQ5B,SAASC,iCAAiC;AAC1C,SAASC,gBAAiC;AAqC1C,IAAMC,QAAwC,oBAAIC,IAAAA,GAE9CC,SACAC,UACAC,UAEEC,cAAc,CAAC;AAEd,SAASC,gBAEdC,QACAC,QACAC,OAA2C;AAE3C,MAAI,CAACD,QAAQE;AACX,WAAOL;AAOT,MAJAH,UAAUO,OACVN,WAAWI,QACXH,WAAWI,QAEPR,MAAMW,IAAIP,SAASM,KAAK,GAAG;AAC7B,QAAME,UAAUZ,MAAMa,IAAIT,SAASM,KAAK;AACxC,WAAOE;EACT;AAKA,MAAME,SAASnB,UAAAA;AAEf,WAASoB,MAAMC,KAAW;AACxB,QAAKd,YACAA,QAAQe,YACXf,QAAQe,UAAU,oBAAIC,IAAAA,IAExBhB,QAAQe,QAAQE,IAAIH,GAAAA,GAChBI,QAAQC,IAAIC,aAAa,iBAAiBnB,SAASoB,QAAO;UAK1DC,oBAJIC,SAAS1B,SAASc,IAAIX,OAAAA;AAC5BwB,cAAQC,KACN,uBAAgBF,MAAAA,uBAA6BT,GAAAA,IAC7Cd,UACAsB,qBAAAA,WAAW,YAAS,QAApBA,uBAAAA,SAAAA,SAAAA,mBAAsBX,IAAIY,SAAS,CAAA,CAAA;IAEvC;EACF;AAEA,MAAMb,WAAUgB,OAAOC,YACrBD,OAAOE,QAAQtB,OAAOE,KAAK,EAAEqB,QAAQ,SAAA,OAAA;QAAC,CAACf,KAAKgB,KAAAA,IAAM,OAC1CpB,WAAU;MACd,GAAGoB;MACH,IAAIC,MAAM;AAER,eAAKT,WAAWU,wBAEdnB,MAAMC,GAAAA,GAEDgB,MAAMC;MACf;MACApB,IAAIsB,UAAgB;AAClB,YAAK/B,UAEL;cAAMgC,SAASvC,YAAYmC,KAAAA,GACrB,EAAEK,MAAMC,QAAQC,SAAQ,IAAKnC,UAK3BoC,iBACJF,UACAH,aAAa,SACbzC,SACA,CAACS,SAASsC,SACV7C,WAAW,kBAAA,KACX2C,aAAa,KACbzC,0BAAAA;AAEF,cAAI0C,gBAAgB;gBAGQ1B,qBACQA,6BAH5B4B,iBAAiBJ,WAAW,SAAS,UAAU,QAC/CK,eAAeN,KAAKO,QAAQN,QAAQI,cAAAA,GACpCG,QAAQhD,aAAYiB,sBAAAA,OAAOgC,OAAOT,IAAAA,OAAK,QAAnBvB,wBAAAA,SAAAA,SAAAA,oBAAsBE,GAAAA,CAAI,GAC9C+B,gBAAgBlD,aAAYiB,8BAAAA,OAAOgC,OAAOH,YAAAA,OAAa,QAA3B7B,gCAAAA,SAAAA,SAAAA,4BAA8BE,GAAAA,CAAI,GAE9DgC,aAAa;cACjBC,SAAS;gBACP,CAACX,MAAAA,GAASO;gBACV,CAACH,cAAAA,GAAiBK;cACpB;YACF;AAEA,mBAAOC;UACT;AAEA,iBAAI5B,QAAQC,IAAIC,aAAa,iBAAiBnB,SAASoB,SACrDG,QAAQC,KAAK;2BACAQ,aAAa,KAAA;yBACfzC,KAAAA;yBACAS,SAASsC,KAAK;8BACT7C,WAAW,kBAAA,CAAA;eAC1B,GAGHmB,MAAMC,GAAAA,GAGDoB;;MACT;IACF;AAEA,WAAO;MACL;QAACpB;QAAKJ;;MACN;QAAC,IAAII,GAAAA;QAAOJ;;;EAEhB,CAAA,CAAA;AAGFZ,eAAMkD,IAAI1C,OAAOE,OAAOE,QAAAA,GAEjBA;AACT;",
|
|
5
|
+
"names": ["isIos", "getConfig", "getSetting", "getVariable", "doesRootSchemeMatchSystem", "keysToId", "cache", "Map", "curKeys", "curProps", "curState", "emptyObject", "getThemeProxied", "_props", "_state", "_keys", "theme", "has", "proxied", "get", "config", "track", "key", "current", "Set", "add", "process", "env", "NODE_ENV", "debug", "globalThis", "realId", "console", "info", "Object", "fromEntries", "entries", "flatMap", "value", "val", "tamaguiAvoidTracking", "platform", "outVal", "name", "scheme", "inverses", "shouldOptimize", "deopt", "oppositeScheme", "oppositeName", "replace", "color", "themes", "oppositeColor", "dynamicVal", "dynamic", "set"]
|
|
6
6
|
}
|
|
@@ -7,11 +7,13 @@ import {
|
|
|
7
7
|
useSyncExternalStore
|
|
8
8
|
} from "react";
|
|
9
9
|
import { getConfig } from "../config";
|
|
10
|
-
const ThemeStateContext = createContext(""), allListeners = /* @__PURE__ */ new Map(), listenersByParent = {},
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
const ThemeStateContext = createContext(""), keysToId = /* @__PURE__ */ new WeakMap(), allListeners = /* @__PURE__ */ new Map(), listenersByParent = {}, hasRenderedOnce = /* @__PURE__ */ new WeakMap(), pendingUpdate = /* @__PURE__ */ new Map(), states = /* @__PURE__ */ new Map();
|
|
11
|
+
let shouldForce = !1;
|
|
12
|
+
const forceUpdateThemes = () => {
|
|
13
|
+
cacheVersion++, shouldForce = !0, allListeners.forEach((cb) => cb());
|
|
14
|
+
}, getThemeState = (id) => states.get(id), cache = /* @__PURE__ */ new Map();
|
|
15
|
+
let cacheVersion = 0, themes = null, rootThemeState = null;
|
|
16
|
+
const getRootThemeState = () => rootThemeState, useThemeState = (props, isRoot = !1, keys) => {
|
|
15
17
|
const { disable } = props, parentId = useContext(ThemeStateContext);
|
|
16
18
|
if (disable)
|
|
17
19
|
return states.get(parentId) || {
|
|
@@ -21,48 +23,56 @@ const getRootThemeState = () => rootThemeState, HasRenderedOnce = /* @__PURE__ *
|
|
|
21
23
|
inverses: 0
|
|
22
24
|
};
|
|
23
25
|
const id = useId(), subscribe = useCallback(
|
|
24
|
-
(cb) => (listenersByParent[parentId] ||= /* @__PURE__ */ new Set(), listenersByParent[parentId].add(id), allListeners.set(id,
|
|
26
|
+
(cb) => (listenersByParent[parentId] ||= /* @__PURE__ */ new Set(), listenersByParent[parentId].add(id), allListeners.set(id, () => {
|
|
27
|
+
pendingUpdate.set(id, shouldForce ? "force" : !0), cb();
|
|
28
|
+
}), () => {
|
|
25
29
|
allListeners.delete(id), listenersByParent[parentId].delete(id);
|
|
26
30
|
}),
|
|
27
|
-
[id, parentId
|
|
28
|
-
), propsKey = getPropsKey(props), getSnapshot = () =>
|
|
31
|
+
[id, parentId]
|
|
32
|
+
), propsKey = getPropsKey(props), getSnapshot = () => {
|
|
33
|
+
const last = states.get(id), needsUpdate = props.name === "light" || props.name === "dark" ? !0 : hasRenderedOnce.get(keys) ? keys?.current?.size ? !0 : props.needsUpdate?.() : !0, parentState = states.get(parentId), cacheKey = `${cacheVersion}${id}${propsKey}${parentState?.name || ""}${isRoot}`;
|
|
34
|
+
if (!needsUpdate && cache.has(cacheKey))
|
|
35
|
+
return cache.get(cacheKey);
|
|
36
|
+
const next = getSnapshotFrom(
|
|
37
|
+
last,
|
|
38
|
+
props,
|
|
39
|
+
propsKey,
|
|
40
|
+
isRoot,
|
|
41
|
+
id,
|
|
42
|
+
parentId,
|
|
43
|
+
needsUpdate,
|
|
44
|
+
pendingUpdate.get(id)
|
|
45
|
+
);
|
|
46
|
+
return last !== next && (pendingUpdate.delete(id), states.set(id, next), cache.set(id, next), process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && console.warn(` \xB7 useTheme(${id}) UPDATE from`, last, "to", next)), next;
|
|
47
|
+
};
|
|
29
48
|
process.env.NODE_ENV === "development" && globalThis.time && globalThis.time`theme-prep-uses`;
|
|
30
49
|
const state = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
31
50
|
return useIsomorphicLayoutEffect(() => {
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && console.warn(` \xB7 useTheme(${id}) scheduleUpdate`, propsKey, states.get(id)?.name), scheduleUpdate(id);
|
|
51
|
+
if (!hasRenderedOnce.get(keys)) {
|
|
52
|
+
hasRenderedOnce.set(keys, !0);
|
|
53
|
+
return;
|
|
38
54
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
), console.info({
|
|
44
|
-
state,
|
|
45
|
-
parentId,
|
|
46
|
-
props,
|
|
47
|
-
propsKey,
|
|
48
|
-
id,
|
|
49
|
-
parentState: states.get(parentId)
|
|
50
|
-
}), console.groupEnd()), state.id === id ? { ...state, isNew: !0 } : state;
|
|
51
|
-
};
|
|
52
|
-
let themes = null;
|
|
53
|
-
const getSnapshotFrom = (props, propsKey, isRoot = !1, id, parentId, keys) => {
|
|
54
|
-
const needsUpdate = keys?.current?.size || props.needsUpdate?.(), parentState = states.get(parentId);
|
|
55
|
+
propsKey && (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && console.warn(` \xB7 useTheme(${id}) scheduleUpdate`, propsKey, states.get(id)?.name), scheduleUpdate(id));
|
|
56
|
+
}, [keys, propsKey]), state.id === id ? { ...state, isNew: !0 } : state;
|
|
57
|
+
}, getSnapshotFrom = (lastState, props, propsKey, isRoot = !1, id, parentId, needsUpdate, pendingUpdate2) => {
|
|
58
|
+
const parentState = states.get(parentId);
|
|
55
59
|
themes || (themes = getConfig().themes);
|
|
56
|
-
const
|
|
60
|
+
const name = !propsKey && pendingUpdate2 !== "force" ? null : getNewThemeName(
|
|
61
|
+
parentState?.name,
|
|
62
|
+
props,
|
|
63
|
+
pendingUpdate2 === "force" ? !0 : !!needsUpdate
|
|
64
|
+
), isSameAsParent = !!(!name && propsKey);
|
|
57
65
|
if (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile") {
|
|
58
66
|
const message = ` \xB7 useTheme(${id}) snapshot ${name}, parent ${parentState?.id} needsUpdate ${needsUpdate}`;
|
|
59
|
-
console.groupCollapsed(message), console.
|
|
67
|
+
console.groupCollapsed(message), console.trace({ name, lastState, parentState, props, propsKey, id, isSameAsParent }), console.groupEnd();
|
|
60
68
|
}
|
|
61
|
-
if (parentState &&
|
|
69
|
+
if (parentState && isSameAsParent)
|
|
62
70
|
return parentState;
|
|
63
|
-
if (!name)
|
|
64
|
-
|
|
65
|
-
|
|
71
|
+
if (!name) {
|
|
72
|
+
const next = lastState ?? parentState;
|
|
73
|
+
return needsUpdate && pendingUpdate2 ? { ...parentState || lastState } : next;
|
|
74
|
+
}
|
|
75
|
+
if (pendingUpdate2 !== "force" && lastState && lastState.name === name)
|
|
66
76
|
return lastState;
|
|
67
77
|
const scheme = getScheme(name), parentInverses = parentState?.inverses ?? 0, isInverse = parentState && scheme !== parentState.scheme, inverses = parentInverses + (isInverse ? 1 : 0), nextState = {
|
|
68
78
|
id,
|
|
@@ -74,7 +84,7 @@ const getSnapshotFrom = (props, propsKey, isRoot = !1, id, parentId, keys) => {
|
|
|
74
84
|
inverses,
|
|
75
85
|
isInverse
|
|
76
86
|
};
|
|
77
|
-
return process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && (console.groupCollapsed(` \xB7 useTheme(${id}) \u23ED\
|
|
87
|
+
return process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && (console.groupCollapsed(` \xB7 useTheme(${id}) \u23ED\uFE0F2 ${name}`), console.info("state", nextState), console.groupEnd()), isRoot && (rootThemeState = nextState), pendingUpdate2 !== "force" && lastState && !needsUpdate ? (Object.assign(lastState, nextState), lastState) : nextState;
|
|
78
88
|
};
|
|
79
89
|
function scheduleUpdate(id) {
|
|
80
90
|
const queue = [id], visited = /* @__PURE__ */ new Set();
|
|
@@ -95,7 +105,7 @@ const validSchemes = {
|
|
|
95
105
|
function getScheme(name) {
|
|
96
106
|
return validSchemes[name.split("_")[0]];
|
|
97
107
|
}
|
|
98
|
-
function getNewThemeName(parentName = "", { name, reset, componentName, inverse }, forceUpdate = !1) {
|
|
108
|
+
function getNewThemeName(parentName = "", { name, reset, componentName, inverse, debug }, forceUpdate = !1) {
|
|
99
109
|
if (name && reset)
|
|
100
110
|
throw new Error(
|
|
101
111
|
process.env.NODE_ENV === "production" ? "\u274C004" : "Cannot reset and set a new name at the same time."
|
|
@@ -125,7 +135,8 @@ function getNewThemeName(parentName = "", { name, reset, componentName, inverse
|
|
|
125
135
|
}
|
|
126
136
|
if (found) break;
|
|
127
137
|
}
|
|
128
|
-
if (
|
|
138
|
+
if (inverse) {
|
|
139
|
+
found ||= parentName;
|
|
129
140
|
const scheme = found.split("_")[0];
|
|
130
141
|
found = found.replace(new RegExp(`^${scheme}`), scheme === "light" ? "dark" : "light");
|
|
131
142
|
}
|
|
@@ -146,6 +157,7 @@ export {
|
|
|
146
157
|
getRootThemeState,
|
|
147
158
|
getThemeState,
|
|
148
159
|
hasThemeUpdatingProps,
|
|
160
|
+
keysToId,
|
|
149
161
|
useThemeState
|
|
150
162
|
};
|
|
151
163
|
//# sourceMappingURL=useThemeState.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useThemeState.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,iCAAiC;AAC1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,iBAAiB;AAiBnB,MAAM,oBAAoB,cAAkB,EAAE,
|
|
5
|
-
"names": ["themes"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["pendingUpdate", "themes"]
|
|
6
6
|
}
|
|
@@ -2,16 +2,22 @@ import { useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
|
2
2
|
import { createContext, useCallback, useContext, useId, useSyncExternalStore } from "react";
|
|
3
3
|
import { getConfig } from "../config.mjs";
|
|
4
4
|
const ThemeStateContext = createContext(""),
|
|
5
|
+
keysToId = /* @__PURE__ */new WeakMap(),
|
|
5
6
|
allListeners = /* @__PURE__ */new Map(),
|
|
6
7
|
listenersByParent = {},
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
hasRenderedOnce = /* @__PURE__ */new WeakMap(),
|
|
9
|
+
pendingUpdate = /* @__PURE__ */new Map(),
|
|
10
|
+
states = /* @__PURE__ */new Map();
|
|
11
|
+
let shouldForce = !1;
|
|
12
|
+
const forceUpdateThemes = () => {
|
|
13
|
+
cacheVersion++, shouldForce = !0, allListeners.forEach(cb => cb());
|
|
10
14
|
},
|
|
11
|
-
getThemeState = id => states.get(id)
|
|
12
|
-
|
|
15
|
+
getThemeState = id => states.get(id),
|
|
16
|
+
cache = /* @__PURE__ */new Map();
|
|
17
|
+
let cacheVersion = 0,
|
|
18
|
+
themes = null,
|
|
19
|
+
rootThemeState = null;
|
|
13
20
|
const getRootThemeState = () => rootThemeState,
|
|
14
|
-
HasRenderedOnce = /* @__PURE__ */new WeakMap(),
|
|
15
21
|
useThemeState = (props, isRoot = !1, keys) => {
|
|
16
22
|
const {
|
|
17
23
|
disable
|
|
@@ -24,70 +30,75 @@ const getRootThemeState = () => rootThemeState,
|
|
|
24
30
|
inverses: 0
|
|
25
31
|
};
|
|
26
32
|
const id = useId(),
|
|
27
|
-
subscribe = useCallback(cb => (listenersByParent[parentId] ||= /* @__PURE__ */new Set(), listenersByParent[parentId].add(id), allListeners.set(id,
|
|
33
|
+
subscribe = useCallback(cb => (listenersByParent[parentId] ||= /* @__PURE__ */new Set(), listenersByParent[parentId].add(id), allListeners.set(id, () => {
|
|
34
|
+
pendingUpdate.set(id, shouldForce ? "force" : !0), cb();
|
|
35
|
+
}), () => {
|
|
28
36
|
allListeners.delete(id), listenersByParent[parentId].delete(id);
|
|
29
|
-
}), [id, parentId
|
|
37
|
+
}), [id, parentId]),
|
|
30
38
|
propsKey = getPropsKey(props),
|
|
31
|
-
getSnapshot = () =>
|
|
39
|
+
getSnapshot = () => {
|
|
40
|
+
const last = states.get(id),
|
|
41
|
+
needsUpdate = props.name === "light" || props.name === "dark" ? !0 : hasRenderedOnce.get(keys) ? keys?.current?.size ? !0 : props.needsUpdate?.() : !0,
|
|
42
|
+
parentState = states.get(parentId),
|
|
43
|
+
cacheKey = `${cacheVersion}${id}${propsKey}${parentState?.name || ""}${isRoot}`;
|
|
44
|
+
if (!needsUpdate && cache.has(cacheKey)) return cache.get(cacheKey);
|
|
45
|
+
const next = getSnapshotFrom(last, props, propsKey, isRoot, id, parentId, needsUpdate, pendingUpdate.get(id));
|
|
46
|
+
return last !== next && (pendingUpdate.delete(id), states.set(id, next), cache.set(id, next), process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && console.warn(` \xB7 useTheme(${id}) UPDATE from`, last, "to", next)), next;
|
|
47
|
+
};
|
|
32
48
|
process.env.NODE_ENV === "development" && globalThis.time && globalThis.time`theme-prep-uses`;
|
|
33
49
|
const state = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
34
50
|
return useIsomorphicLayoutEffect(() => {
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && console.warn(` \xB7 useTheme(${id}) scheduleUpdate`, propsKey, states.get(id)?.name), scheduleUpdate(id);
|
|
51
|
+
if (!hasRenderedOnce.get(keys)) {
|
|
52
|
+
hasRenderedOnce.set(keys, !0);
|
|
53
|
+
return;
|
|
41
54
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
parentId,
|
|
45
|
-
props,
|
|
46
|
-
propsKey,
|
|
47
|
-
id,
|
|
48
|
-
parentState: states.get(parentId)
|
|
49
|
-
}), console.groupEnd()), state.id === id ? {
|
|
55
|
+
propsKey && (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && console.warn(` \xB7 useTheme(${id}) scheduleUpdate`, propsKey, states.get(id)?.name), scheduleUpdate(id));
|
|
56
|
+
}, [keys, propsKey]), state.id === id ? {
|
|
50
57
|
...state,
|
|
51
58
|
isNew: !0
|
|
52
59
|
} : state;
|
|
60
|
+
},
|
|
61
|
+
getSnapshotFrom = (lastState, props, propsKey, isRoot = !1, id, parentId, needsUpdate, pendingUpdate2) => {
|
|
62
|
+
const parentState = states.get(parentId);
|
|
63
|
+
themes || (themes = getConfig().themes);
|
|
64
|
+
const name = !propsKey && pendingUpdate2 !== "force" ? null : getNewThemeName(parentState?.name, props, pendingUpdate2 === "force" ? !0 : !!needsUpdate),
|
|
65
|
+
isSameAsParent = !!(!name && propsKey);
|
|
66
|
+
if (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile") {
|
|
67
|
+
const message = ` \xB7 useTheme(${id}) snapshot ${name}, parent ${parentState?.id} needsUpdate ${needsUpdate}`;
|
|
68
|
+
console.groupCollapsed(message), console.trace({
|
|
69
|
+
name,
|
|
70
|
+
lastState,
|
|
71
|
+
parentState,
|
|
72
|
+
props,
|
|
73
|
+
propsKey,
|
|
74
|
+
id,
|
|
75
|
+
isSameAsParent
|
|
76
|
+
}), console.groupEnd();
|
|
77
|
+
}
|
|
78
|
+
if (parentState && isSameAsParent) return parentState;
|
|
79
|
+
if (!name) {
|
|
80
|
+
const next = lastState ?? parentState;
|
|
81
|
+
return needsUpdate && pendingUpdate2 ? {
|
|
82
|
+
...(parentState || lastState)
|
|
83
|
+
} : next;
|
|
84
|
+
}
|
|
85
|
+
if (pendingUpdate2 !== "force" && lastState && lastState.name === name) return lastState;
|
|
86
|
+
const scheme = getScheme(name),
|
|
87
|
+
parentInverses = parentState?.inverses ?? 0,
|
|
88
|
+
isInverse = parentState && scheme !== parentState.scheme,
|
|
89
|
+
inverses = parentInverses + (isInverse ? 1 : 0),
|
|
90
|
+
nextState = {
|
|
91
|
+
id,
|
|
92
|
+
name,
|
|
93
|
+
theme: themes[name],
|
|
94
|
+
scheme,
|
|
95
|
+
parentId,
|
|
96
|
+
parentName: parentState?.name,
|
|
97
|
+
inverses,
|
|
98
|
+
isInverse
|
|
99
|
+
};
|
|
100
|
+
return process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && (console.groupCollapsed(` \xB7 useTheme(${id}) \u23ED\uFE0F2 ${name}`), console.info("state", nextState), console.groupEnd()), isRoot && (rootThemeState = nextState), pendingUpdate2 !== "force" && lastState && !needsUpdate ? (Object.assign(lastState, nextState), lastState) : nextState;
|
|
53
101
|
};
|
|
54
|
-
let themes = null;
|
|
55
|
-
const getSnapshotFrom = (props, propsKey, isRoot = !1, id, parentId, keys) => {
|
|
56
|
-
const needsUpdate = keys?.current?.size || props.needsUpdate?.(),
|
|
57
|
-
parentState = states.get(parentId);
|
|
58
|
-
themes || (themes = getConfig().themes);
|
|
59
|
-
const lastState = states.get(id),
|
|
60
|
-
name = propsKey ? getNewThemeName(parentState?.name, props, !!needsUpdate) : null;
|
|
61
|
-
if (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile") {
|
|
62
|
-
const message = ` \xB7 useTheme(${id}) snapshot ${name}, parent ${parentState?.id} needsUpdate ${needsUpdate}`;
|
|
63
|
-
console.groupCollapsed(message), console.info({
|
|
64
|
-
lastState,
|
|
65
|
-
parentState,
|
|
66
|
-
props,
|
|
67
|
-
propsKey,
|
|
68
|
-
id,
|
|
69
|
-
keys
|
|
70
|
-
}), console.groupEnd();
|
|
71
|
-
}
|
|
72
|
-
if (parentState && !name && propsKey) return parentState;
|
|
73
|
-
if (!name) return lastState && !needsUpdate ? lastState : (states.set(id, parentState), parentState);
|
|
74
|
-
if (lastState && lastState.name === name) return lastState;
|
|
75
|
-
const scheme = getScheme(name),
|
|
76
|
-
parentInverses = parentState?.inverses ?? 0,
|
|
77
|
-
isInverse = parentState && scheme !== parentState.scheme,
|
|
78
|
-
inverses = parentInverses + (isInverse ? 1 : 0),
|
|
79
|
-
nextState = {
|
|
80
|
-
id,
|
|
81
|
-
name,
|
|
82
|
-
theme: themes[name],
|
|
83
|
-
scheme,
|
|
84
|
-
parentId,
|
|
85
|
-
parentName: parentState?.name,
|
|
86
|
-
inverses,
|
|
87
|
-
isInverse
|
|
88
|
-
};
|
|
89
|
-
return process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && (console.groupCollapsed(` \xB7 useTheme(${id}) \u23ED\uFE0F ${name}`), console.info("state", nextState), console.groupEnd()), states.set(id, nextState), isRoot && (rootThemeState = nextState), nextState;
|
|
90
|
-
};
|
|
91
102
|
function scheduleUpdate(id) {
|
|
92
103
|
const queue = [id],
|
|
93
104
|
visited = /* @__PURE__ */new Set();
|
|
@@ -111,7 +122,8 @@ function getNewThemeName(parentName = "", {
|
|
|
111
122
|
name,
|
|
112
123
|
reset,
|
|
113
124
|
componentName,
|
|
114
|
-
inverse
|
|
125
|
+
inverse,
|
|
126
|
+
debug
|
|
115
127
|
}, forceUpdate = !1) {
|
|
116
128
|
if (name && reset) throw new Error(process.env.NODE_ENV === "production" ? "\u274C004" : "Cannot reset and set a new name at the same time.");
|
|
117
129
|
if (reset) {
|
|
@@ -139,7 +151,8 @@ function getNewThemeName(parentName = "", {
|
|
|
139
151
|
}
|
|
140
152
|
if (found) break;
|
|
141
153
|
}
|
|
142
|
-
if (
|
|
154
|
+
if (inverse) {
|
|
155
|
+
found ||= parentName;
|
|
143
156
|
const scheme = found.split("_")[0];
|
|
144
157
|
found = found.replace(new RegExp(`^${scheme}`), scheme === "light" ? "dark" : "light");
|
|
145
158
|
}
|
|
@@ -156,5 +169,5 @@ const getPropsKey = ({
|
|
|
156
169
|
componentName
|
|
157
170
|
}) => `${name || ""}${inverse || ""}${reset || ""}${forceClassName || ""}${componentName || ""}`,
|
|
158
171
|
hasThemeUpdatingProps = props => "inverse" in props || "name" in props || "reset" in props || "forceClassName" in props;
|
|
159
|
-
export { ThemeStateContext, forceUpdateThemes, getRootThemeState, getThemeState, hasThemeUpdatingProps, useThemeState };
|
|
172
|
+
export { ThemeStateContext, forceUpdateThemes, getRootThemeState, getThemeState, hasThemeUpdatingProps, keysToId, useThemeState };
|
|
160
173
|
//# sourceMappingURL=useThemeState.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useIsomorphicLayoutEffect","createContext","useCallback","useContext","useId","useSyncExternalStore","getConfig","ThemeStateContext","allListeners","Map","listenersByParent","states","forceUpdateThemes","forEach","cb","getThemeState","id","get","
|
|
1
|
+
{"version":3,"names":["useIsomorphicLayoutEffect","createContext","useCallback","useContext","useId","useSyncExternalStore","getConfig","ThemeStateContext","keysToId","WeakMap","allListeners","Map","listenersByParent","hasRenderedOnce","pendingUpdate","states","shouldForce","forceUpdateThemes","cacheVersion","forEach","cb","getThemeState","id","get","cache","themes","rootThemeState","getRootThemeState","useThemeState","props","isRoot","keys","disable","parentId","name","theme","light","inverses","subscribe","Set","add","set","delete","propsKey","getPropsKey","getSnapshot","last","needsUpdate","current","size","parentState","cacheKey","has","next","getSnapshotFrom","process","env","NODE_ENV","debug","console","warn","globalThis","time","state","scheduleUpdate","isNew","lastState","pendingUpdate2","getNewThemeName","isSameAsParent","message","groupCollapsed","trace","groupEnd","scheme","getScheme","parentInverses","isInverse","nextState","parentName","info","Object","assign","queue","visited","length","parent","shift","children","childId","push","validSchemes","dark","split","reset","componentName","inverse","forceUpdate","Error","lastPartIndex","lastIndexOf","slice","themes2","parentParts","lastName","toLowerCase","pop","subNames","filter","Boolean","found","max","i","base","join","subName","potential","replace","RegExp","forceClassName","hasThemeUpdatingProps"],"sources":["../../../src/hooks/useThemeState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|