@tamagui/web 1.124.10 → 1.124.12
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/hooks/useThemeState.cjs +47 -26
- package/dist/cjs/hooks/useThemeState.js +31 -22
- package/dist/cjs/hooks/useThemeState.js.map +1 -1
- package/dist/cjs/hooks/useThemeState.native.js +69 -25
- package/dist/cjs/hooks/useThemeState.native.js.map +2 -2
- package/dist/cjs/views/Theme.cjs +11 -7
- package/dist/cjs/views/Theme.js +15 -4
- package/dist/cjs/views/Theme.js.map +1 -1
- package/dist/cjs/views/Theme.native.js +10 -7
- package/dist/cjs/views/Theme.native.js.map +2 -2
- package/dist/esm/hooks/useThemeState.js +31 -22
- package/dist/esm/hooks/useThemeState.js.map +1 -1
- package/dist/esm/hooks/useThemeState.mjs +47 -26
- package/dist/esm/hooks/useThemeState.mjs.map +1 -1
- package/dist/esm/hooks/useThemeState.native.js +69 -25
- package/dist/esm/hooks/useThemeState.native.js.map +2 -2
- package/dist/esm/views/Theme.js +16 -11
- package/dist/esm/views/Theme.js.map +1 -1
- package/dist/esm/views/Theme.mjs +11 -7
- package/dist/esm/views/Theme.mjs.map +1 -1
- package/dist/esm/views/Theme.native.js +10 -7
- package/dist/esm/views/Theme.native.js.map +2 -2
- package/package.json +11 -11
- package/src/hooks/useThemeState.ts +87 -44
- package/src/views/Theme.tsx +17 -15
- package/types/hooks/useThemeState.d.ts.map +1 -1
- package/types/views/Theme.d.ts.map +1 -1
|
@@ -38,13 +38,25 @@ const ThemeStateContext = (0, import_react.createContext)(""),
|
|
|
38
38
|
listenersByParent = {},
|
|
39
39
|
hasRenderedOnce = /* @__PURE__ */new WeakMap(),
|
|
40
40
|
pendingUpdate = /* @__PURE__ */new Map(),
|
|
41
|
-
states = /* @__PURE__ */new Map()
|
|
41
|
+
states = /* @__PURE__ */new Map(),
|
|
42
|
+
localStates = /* @__PURE__ */new Map();
|
|
43
|
+
process.env.NODE_ENV === "development" && (globalThis.getTamaguiThemes = () => {
|
|
44
|
+
function buildTree(id) {
|
|
45
|
+
const node = states.get(id);
|
|
46
|
+
if (!node) return null;
|
|
47
|
+
const children = Array.from(states.values()).filter(child => child?.parentId === id).map(child => buildTree(child.id)).filter(Boolean);
|
|
48
|
+
return {
|
|
49
|
+
...node,
|
|
50
|
+
children
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
rootThemeState && console.info(buildTree(rootThemeState.id));
|
|
54
|
+
});
|
|
42
55
|
let shouldForce = !1;
|
|
43
56
|
const forceUpdateThemes = () => {
|
|
44
57
|
cacheVersion++, shouldForce = !0, allListeners.forEach(cb => cb());
|
|
45
58
|
},
|
|
46
|
-
getThemeState = id => states.get(id)
|
|
47
|
-
cache = /* @__PURE__ */new Map();
|
|
59
|
+
getThemeState = id => states.get(id);
|
|
48
60
|
let cacheVersion = 0,
|
|
49
61
|
themes = null,
|
|
50
62
|
rootThemeState = null;
|
|
@@ -54,6 +66,7 @@ const getRootThemeState = () => rootThemeState,
|
|
|
54
66
|
disable
|
|
55
67
|
} = props,
|
|
56
68
|
parentId = (0, import_react.useContext)(ThemeStateContext);
|
|
69
|
+
if (!parentId && !isRoot) throw new Error("No parent?");
|
|
57
70
|
if (disable) return states.get(parentId) || {
|
|
58
71
|
id: "",
|
|
59
72
|
name: "light",
|
|
@@ -64,17 +77,24 @@ const getRootThemeState = () => rootThemeState,
|
|
|
64
77
|
subscribe = (0, import_react.useCallback)(cb => (listenersByParent[parentId] ||= /* @__PURE__ */new Set(), listenersByParent[parentId].add(id), allListeners.set(id, () => {
|
|
65
78
|
pendingUpdate.set(id, shouldForce ? "force" : !0), cb();
|
|
66
79
|
}), () => {
|
|
67
|
-
allListeners.delete(id), listenersByParent[parentId].delete(id);
|
|
80
|
+
allListeners.delete(id), listenersByParent[parentId].delete(id), localStates.delete(id), states.delete(id), pendingUpdate.delete(id);
|
|
68
81
|
}), [id, parentId]),
|
|
69
82
|
propsKey = getPropsKey(props),
|
|
70
83
|
getSnapshot = () => {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
84
|
+
let local = localStates.get(id);
|
|
85
|
+
const needsUpdate = isRoot || props.name === "light" || props.name === "dark" || props.name === null ? !0 : hasRenderedOnce.get(keys) ? keys?.current?.size ? !0 : props.needsUpdate?.() : !0,
|
|
86
|
+
[rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, pendingUpdate.get(id));
|
|
87
|
+
return pendingUpdate.delete(id), (!local || rerender) && (local = {
|
|
88
|
+
...next
|
|
89
|
+
}, localStates.set(id, local)), process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && (console.groupCollapsed(` ${id} \u{1FA84} ${rerender}`, local.name, ">", next.name), console.info({
|
|
90
|
+
props,
|
|
91
|
+
propsKey,
|
|
92
|
+
isRoot,
|
|
93
|
+
parentId,
|
|
94
|
+
local,
|
|
95
|
+
next,
|
|
96
|
+
needsUpdate
|
|
97
|
+
}), console.groupEnd()), Object.assign(local, next), local.id = id, states.set(id, next), local;
|
|
78
98
|
};
|
|
79
99
|
process.env.NODE_ENV === "development" && globalThis.time && globalThis.time`theme-prep-uses`;
|
|
80
100
|
const state = (0, import_react.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
|
|
@@ -84,21 +104,19 @@ const getRootThemeState = () => rootThemeState,
|
|
|
84
104
|
return;
|
|
85
105
|
}
|
|
86
106
|
propsKey && (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && console.warn(` \xB7 useTheme(${id}) scheduleUpdate`, propsKey, states.get(id)?.name), scheduleUpdate(id));
|
|
87
|
-
}, [keys, propsKey]), state
|
|
88
|
-
...state,
|
|
89
|
-
isNew: !0
|
|
90
|
-
} : state;
|
|
107
|
+
}, [keys, propsKey]), state;
|
|
91
108
|
},
|
|
92
|
-
|
|
109
|
+
getNextState = (lastState, props, propsKey, isRoot = !1, id, parentId, needsUpdate, pendingUpdate2) => {
|
|
93
110
|
const {
|
|
94
111
|
debug
|
|
95
112
|
} = props,
|
|
96
113
|
parentState = states.get(parentId);
|
|
97
114
|
themes || (themes = (0, import_config.getConfig)().themes);
|
|
98
|
-
const name = !propsKey &&
|
|
99
|
-
isSameAsParent =
|
|
115
|
+
const name = !propsKey && (!lastState || !lastState?.isNew) ? null : getNewThemeName(parentState?.name, props, pendingUpdate2 === "force" ? !0 : !!needsUpdate),
|
|
116
|
+
isSameAsParent = parentState && (!name || name === parentState.name),
|
|
117
|
+
shouldRerender = !!(needsUpdate && (pendingUpdate2 || lastState?.name !== parentState?.name));
|
|
100
118
|
if (process.env.NODE_ENV === "development" && debug && debug !== "profile") {
|
|
101
|
-
const message = ` \xB7 useTheme(${id})
|
|
119
|
+
const message = ` \xB7 useTheme(${id}) => ${name} needsUpdate ${needsUpdate} shouldRerender ${shouldRerender}`;
|
|
102
120
|
console.groupCollapsed(message), console.trace({
|
|
103
121
|
name,
|
|
104
122
|
lastState,
|
|
@@ -109,15 +127,17 @@ const getRootThemeState = () => rootThemeState,
|
|
|
109
127
|
isSameAsParent
|
|
110
128
|
}), console.groupEnd();
|
|
111
129
|
}
|
|
112
|
-
if (
|
|
130
|
+
if (isSameAsParent) return [shouldRerender, {
|
|
131
|
+
...parentState,
|
|
132
|
+
isNew: !1
|
|
133
|
+
}];
|
|
113
134
|
if (!name) {
|
|
114
135
|
const next = lastState ?? parentState;
|
|
115
136
|
if (!next) throw new Error("No theme and no parent?");
|
|
116
|
-
return
|
|
137
|
+
return shouldRerender ? [!0, {
|
|
117
138
|
...(parentState || lastState)
|
|
118
|
-
} : next;
|
|
139
|
+
}] : [!1, next];
|
|
119
140
|
}
|
|
120
|
-
if (pendingUpdate2 !== "force" && lastState && lastState.name === name) return lastState;
|
|
121
141
|
const scheme = getScheme(name),
|
|
122
142
|
parentInverses = parentState?.inverses ?? 0,
|
|
123
143
|
isInverse = parentState && scheme !== parentState.scheme,
|
|
@@ -130,16 +150,17 @@ const getRootThemeState = () => rootThemeState,
|
|
|
130
150
|
parentId,
|
|
131
151
|
parentName: parentState?.name,
|
|
132
152
|
inverses,
|
|
133
|
-
isInverse
|
|
153
|
+
isInverse,
|
|
154
|
+
isNew: !0
|
|
134
155
|
};
|
|
135
|
-
isRoot && (rootThemeState = nextState);
|
|
156
|
+
if (isRoot && (rootThemeState = nextState), pendingUpdate2 !== "force" && lastState && lastState.name === name) return [!1, nextState];
|
|
136
157
|
const shouldAvoidRerender = pendingUpdate2 !== "force" && lastState && !needsUpdate && nextState.name === lastState.name;
|
|
137
158
|
return process.env.NODE_ENV === "development" && debug && debug !== "profile" && (console.groupCollapsed(` \xB7 useTheme(${id}) \u23ED\uFE0F ${name} shouldAvoidRerender: ${shouldAvoidRerender}`), console.info({
|
|
138
159
|
lastState,
|
|
139
160
|
needsUpdate,
|
|
140
161
|
nextState,
|
|
141
162
|
pendingUpdate: pendingUpdate2
|
|
142
|
-
}), console.groupEnd()), shouldAvoidRerender ?
|
|
163
|
+
}), console.groupEnd()), shouldAvoidRerender ? [!1, nextState] : [!0, nextState];
|
|
143
164
|
};
|
|
144
165
|
function scheduleUpdate(id) {
|
|
145
166
|
const queue = [id],
|
|
@@ -24,14 +24,25 @@ __export(useThemeState_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(useThemeState_exports);
|
|
26
26
|
var import_constants = require("@tamagui/constants"), import_react = require("react"), import_config = require("../config");
|
|
27
|
-
const ThemeStateContext = (0, import_react.createContext)(""), keysToId = /* @__PURE__ */ new WeakMap(), allListeners = /* @__PURE__ */ new Map(), listenersByParent = {}, hasRenderedOnce = /* @__PURE__ */ new WeakMap(), pendingUpdate = /* @__PURE__ */ new Map(), states = /* @__PURE__ */ new Map();
|
|
27
|
+
const ThemeStateContext = (0, import_react.createContext)(""), keysToId = /* @__PURE__ */ new WeakMap(), allListeners = /* @__PURE__ */ new Map(), listenersByParent = {}, hasRenderedOnce = /* @__PURE__ */ new WeakMap(), pendingUpdate = /* @__PURE__ */ new Map(), states = /* @__PURE__ */ new Map(), localStates = /* @__PURE__ */ new Map();
|
|
28
|
+
process.env.NODE_ENV === "development" && (globalThis.getTamaguiThemes = () => {
|
|
29
|
+
function buildTree(id) {
|
|
30
|
+
const node = states.get(id);
|
|
31
|
+
if (!node) return null;
|
|
32
|
+
const children = Array.from(states.values()).filter((child) => child?.parentId === id).map((child) => buildTree(child.id)).filter(Boolean);
|
|
33
|
+
return { ...node, children };
|
|
34
|
+
}
|
|
35
|
+
rootThemeState && console.info(buildTree(rootThemeState.id));
|
|
36
|
+
});
|
|
28
37
|
let shouldForce = !1;
|
|
29
38
|
const forceUpdateThemes = () => {
|
|
30
39
|
cacheVersion++, shouldForce = !0, allListeners.forEach((cb) => cb());
|
|
31
|
-
}, getThemeState = (id) => states.get(id)
|
|
40
|
+
}, getThemeState = (id) => states.get(id);
|
|
32
41
|
let cacheVersion = 0, themes = null, rootThemeState = null;
|
|
33
42
|
const getRootThemeState = () => rootThemeState, useThemeState = (props, isRoot = !1, keys) => {
|
|
34
43
|
const { disable } = props, parentId = (0, import_react.useContext)(ThemeStateContext);
|
|
44
|
+
if (!parentId && !isRoot)
|
|
45
|
+
throw new Error("No parent?");
|
|
35
46
|
if (disable)
|
|
36
47
|
return states.get(parentId) || {
|
|
37
48
|
id: "",
|
|
@@ -43,15 +54,13 @@ const getRootThemeState = () => rootThemeState, useThemeState = (props, isRoot =
|
|
|
43
54
|
(cb) => (listenersByParent[parentId] ||= /* @__PURE__ */ new Set(), listenersByParent[parentId].add(id), allListeners.set(id, () => {
|
|
44
55
|
pendingUpdate.set(id, shouldForce ? "force" : !0), cb();
|
|
45
56
|
}), () => {
|
|
46
|
-
allListeners.delete(id), listenersByParent[parentId].delete(id);
|
|
57
|
+
allListeners.delete(id), listenersByParent[parentId].delete(id), localStates.delete(id), states.delete(id), pendingUpdate.delete(id);
|
|
47
58
|
}),
|
|
48
59
|
[id, parentId]
|
|
49
60
|
), propsKey = getPropsKey(props), getSnapshot = () => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const next = getSnapshotFrom(
|
|
54
|
-
last,
|
|
61
|
+
let local = localStates.get(id);
|
|
62
|
+
const needsUpdate = isRoot || props.name === "light" || props.name === "dark" || props.name === null ? !0 : hasRenderedOnce.get(keys) ? keys?.current?.size ? !0 : props.needsUpdate?.() : !0, [rerender, next] = getNextState(
|
|
63
|
+
local,
|
|
55
64
|
props,
|
|
56
65
|
propsKey,
|
|
57
66
|
isRoot,
|
|
@@ -60,7 +69,7 @@ const getRootThemeState = () => rootThemeState, useThemeState = (props, isRoot =
|
|
|
60
69
|
needsUpdate,
|
|
61
70
|
pendingUpdate.get(id)
|
|
62
71
|
);
|
|
63
|
-
return
|
|
72
|
+
return pendingUpdate.delete(id), (!local || rerender) && (local = { ...next }, localStates.set(id, local)), process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && (console.groupCollapsed(` ${id} \u{1FA84} ${rerender}`, local.name, ">", next.name), console.info({ props, propsKey, isRoot, parentId, local, next, needsUpdate }), console.groupEnd()), Object.assign(local, next), local.id = id, states.set(id, next), local;
|
|
64
73
|
};
|
|
65
74
|
process.env.NODE_ENV === "development" && globalThis.time && globalThis.time`theme-prep-uses`;
|
|
66
75
|
const state = (0, import_react.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
|
|
@@ -70,29 +79,27 @@ const getRootThemeState = () => rootThemeState, useThemeState = (props, isRoot =
|
|
|
70
79
|
return;
|
|
71
80
|
}
|
|
72
81
|
propsKey && (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && console.warn(` \xB7 useTheme(${id}) scheduleUpdate`, propsKey, states.get(id)?.name), scheduleUpdate(id));
|
|
73
|
-
}, [keys, propsKey]), state
|
|
74
|
-
},
|
|
82
|
+
}, [keys, propsKey]), state;
|
|
83
|
+
}, getNextState = (lastState, props, propsKey, isRoot = !1, id, parentId, needsUpdate, pendingUpdate2) => {
|
|
75
84
|
const { debug } = props, parentState = states.get(parentId);
|
|
76
85
|
themes || (themes = (0, import_config.getConfig)().themes);
|
|
77
|
-
const name = !propsKey &&
|
|
86
|
+
const name = !propsKey && (!lastState || !lastState?.isNew) ? null : getNewThemeName(
|
|
78
87
|
parentState?.name,
|
|
79
88
|
props,
|
|
80
89
|
pendingUpdate2 === "force" ? !0 : !!needsUpdate
|
|
81
|
-
), isSameAsParent =
|
|
90
|
+
), isSameAsParent = parentState && (!name || name === parentState.name), shouldRerender = !!(needsUpdate && (pendingUpdate2 || lastState?.name !== parentState?.name));
|
|
82
91
|
if (process.env.NODE_ENV === "development" && debug && debug !== "profile") {
|
|
83
|
-
const message = ` \xB7 useTheme(${id})
|
|
92
|
+
const message = ` \xB7 useTheme(${id}) => ${name} needsUpdate ${needsUpdate} shouldRerender ${shouldRerender}`;
|
|
84
93
|
console.groupCollapsed(message), console.trace({ name, lastState, parentState, props, propsKey, id, isSameAsParent }), console.groupEnd();
|
|
85
94
|
}
|
|
86
|
-
if (
|
|
87
|
-
return parentState;
|
|
95
|
+
if (isSameAsParent)
|
|
96
|
+
return [shouldRerender, { ...parentState, isNew: !1 }];
|
|
88
97
|
if (!name) {
|
|
89
98
|
const next = lastState ?? parentState;
|
|
90
99
|
if (!next)
|
|
91
100
|
throw new Error("No theme and no parent?");
|
|
92
|
-
return
|
|
101
|
+
return shouldRerender ? [!0, { ...parentState || lastState }] : [!1, next];
|
|
93
102
|
}
|
|
94
|
-
if (pendingUpdate2 !== "force" && lastState && lastState.name === name)
|
|
95
|
-
return lastState;
|
|
96
103
|
const scheme = getScheme(name), parentInverses = parentState?.inverses ?? 0, isInverse = parentState && scheme !== parentState.scheme, inverses = parentInverses + (isInverse ? 1 : 0), nextState = {
|
|
97
104
|
id,
|
|
98
105
|
name,
|
|
@@ -101,13 +108,15 @@ const getRootThemeState = () => rootThemeState, useThemeState = (props, isRoot =
|
|
|
101
108
|
parentId,
|
|
102
109
|
parentName: parentState?.name,
|
|
103
110
|
inverses,
|
|
104
|
-
isInverse
|
|
111
|
+
isInverse,
|
|
112
|
+
isNew: !0
|
|
105
113
|
};
|
|
106
|
-
isRoot && (rootThemeState = nextState)
|
|
114
|
+
if (isRoot && (rootThemeState = nextState), pendingUpdate2 !== "force" && lastState && lastState.name === name)
|
|
115
|
+
return [!1, nextState];
|
|
107
116
|
const shouldAvoidRerender = pendingUpdate2 !== "force" && lastState && !needsUpdate && nextState.name === lastState.name;
|
|
108
117
|
return process.env.NODE_ENV === "development" && debug && debug !== "profile" && (console.groupCollapsed(
|
|
109
118
|
` \xB7 useTheme(${id}) \u23ED\uFE0F ${name} shouldAvoidRerender: ${shouldAvoidRerender}`
|
|
110
|
-
), console.info({ lastState, needsUpdate, nextState, pendingUpdate: pendingUpdate2 }), console.groupEnd()), shouldAvoidRerender ?
|
|
119
|
+
), console.info({ lastState, needsUpdate, nextState, pendingUpdate: pendingUpdate2 }), console.groupEnd()), shouldAvoidRerender ? [!1, nextState] : [!0, nextState];
|
|
111
120
|
};
|
|
112
121
|
function scheduleUpdate(id) {
|
|
113
122
|
const queue = [id], visited = /* @__PURE__ */ new Set();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useThemeState.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["pendingUpdate", "themes"]
|
|
6
6
|
}
|
|
@@ -24,16 +24,35 @@ __export(useThemeState_exports, {
|
|
|
24
24
|
useThemeState: () => useThemeState
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(useThemeState_exports);
|
|
27
|
-
var import_constants = require("@tamagui/constants"), import_react = require("react"), import_config = require("../config"), ThemeStateContext = (0, import_react.createContext)(""), keysToId = /* @__PURE__ */ new WeakMap(), allListeners = /* @__PURE__ */ new Map(), listenersByParent = {}, hasRenderedOnce = /* @__PURE__ */ new WeakMap(), pendingUpdate = /* @__PURE__ */ new Map(), states = /* @__PURE__ */ new Map(),
|
|
27
|
+
var import_constants = require("@tamagui/constants"), import_react = require("react"), import_config = require("../config"), ThemeStateContext = (0, import_react.createContext)(""), keysToId = /* @__PURE__ */ new WeakMap(), allListeners = /* @__PURE__ */ new Map(), listenersByParent = {}, hasRenderedOnce = /* @__PURE__ */ new WeakMap(), pendingUpdate = /* @__PURE__ */ new Map(), states = /* @__PURE__ */ new Map(), localStates = /* @__PURE__ */ new Map();
|
|
28
|
+
process.env.NODE_ENV === "development" && (globalThis.getTamaguiThemes = function() {
|
|
29
|
+
function buildTree(id) {
|
|
30
|
+
var node = states.get(id);
|
|
31
|
+
if (!node) return null;
|
|
32
|
+
var children = Array.from(states.values()).filter(function(child) {
|
|
33
|
+
return (child == null ? void 0 : child.parentId) === id;
|
|
34
|
+
}).map(function(child) {
|
|
35
|
+
return buildTree(child.id);
|
|
36
|
+
}).filter(Boolean);
|
|
37
|
+
return {
|
|
38
|
+
...node,
|
|
39
|
+
children
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
rootThemeState && console.info(buildTree(rootThemeState.id));
|
|
43
|
+
});
|
|
44
|
+
var shouldForce = !1, forceUpdateThemes = function() {
|
|
28
45
|
cacheVersion++, shouldForce = !0, allListeners.forEach(function(cb) {
|
|
29
46
|
return cb();
|
|
30
47
|
});
|
|
31
48
|
}, getThemeState = function(id) {
|
|
32
49
|
return states.get(id);
|
|
33
|
-
},
|
|
50
|
+
}, cacheVersion = 0, themes = null, rootThemeState = null, getRootThemeState = function() {
|
|
34
51
|
return rootThemeState;
|
|
35
52
|
}, useThemeState = function(props) {
|
|
36
53
|
var isRoot = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1, keys = arguments.length > 2 ? arguments[2] : void 0, { disable } = props, parentId = (0, import_react.useContext)(ThemeStateContext);
|
|
54
|
+
if (!parentId && !isRoot)
|
|
55
|
+
throw new Error("No parent?");
|
|
37
56
|
if (disable)
|
|
38
57
|
return states.get(parentId) || {
|
|
39
58
|
id: "",
|
|
@@ -46,17 +65,24 @@ var import_constants = require("@tamagui/constants"), import_react = require("re
|
|
|
46
65
|
return (_listenersByParent = listenersByParent)[_parentId = parentId] || (_listenersByParent[_parentId] = /* @__PURE__ */ new Set()), listenersByParent[parentId].add(id), allListeners.set(id, function() {
|
|
47
66
|
pendingUpdate.set(id, shouldForce ? "force" : !0), cb();
|
|
48
67
|
}), function() {
|
|
49
|
-
allListeners.delete(id), listenersByParent[parentId].delete(id);
|
|
68
|
+
allListeners.delete(id), listenersByParent[parentId].delete(id), localStates.delete(id), states.delete(id), pendingUpdate.delete(id);
|
|
50
69
|
};
|
|
51
70
|
}, [
|
|
52
71
|
id,
|
|
53
72
|
parentId
|
|
54
73
|
]), propsKey = getPropsKey(props), getSnapshot = function() {
|
|
55
|
-
var _keys_current, _props_needsUpdate,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
74
|
+
var _keys_current, _props_needsUpdate, local = localStates.get(id), needsUpdate = isRoot || props.name === "light" || props.name === "dark" || props.name === null ? !0 : hasRenderedOnce.get(keys) ? !(keys == null || (_keys_current = keys.current) === null || _keys_current === void 0) && _keys_current.size ? !0 : (_props_needsUpdate = props.needsUpdate) === null || _props_needsUpdate === void 0 ? void 0 : _props_needsUpdate.call(props) : !0, [rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, pendingUpdate.get(id));
|
|
75
|
+
return pendingUpdate.delete(id), (!local || rerender) && (local = {
|
|
76
|
+
...next
|
|
77
|
+
}, localStates.set(id, local)), process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && (console.groupCollapsed(` ${id} \u{1FA84} ${rerender}`, local.name, ">", next.name), console.info({
|
|
78
|
+
props,
|
|
79
|
+
propsKey,
|
|
80
|
+
isRoot,
|
|
81
|
+
parentId,
|
|
82
|
+
local,
|
|
83
|
+
next,
|
|
84
|
+
needsUpdate
|
|
85
|
+
}), console.groupEnd()), Object.assign(local, next), local.id = id, states.set(id, next), local;
|
|
60
86
|
};
|
|
61
87
|
process.env.NODE_ENV === "development" && globalThis.time && globalThis.time`theme-prep-uses`;
|
|
62
88
|
var state = (0, import_react.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
|
|
@@ -75,34 +101,41 @@ var import_constants = require("@tamagui/constants"), import_react = require("re
|
|
|
75
101
|
}, [
|
|
76
102
|
keys,
|
|
77
103
|
propsKey
|
|
78
|
-
]), state
|
|
79
|
-
|
|
80
|
-
isNew: !0
|
|
81
|
-
} : state;
|
|
82
|
-
}, getSnapshotFrom = function(lastState, props, propsKey) {
|
|
104
|
+
]), state;
|
|
105
|
+
}, getNextState = function(lastState, props, propsKey) {
|
|
83
106
|
var isRoot = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !1, id = arguments.length > 4 ? arguments[4] : void 0, parentId = arguments.length > 5 ? arguments[5] : void 0, needsUpdate = arguments.length > 6 ? arguments[6] : void 0, pendingUpdate2 = arguments.length > 7 ? arguments[7] : void 0, { debug } = props, parentState = states.get(parentId);
|
|
84
107
|
themes || (themes = (0, import_config.getConfig)().themes);
|
|
85
|
-
var name = !propsKey &&
|
|
108
|
+
var name = !propsKey && (!lastState || !(lastState != null && lastState.isNew)) ? null : getNewThemeName(parentState == null ? void 0 : parentState.name, props, pendingUpdate2 === "force" ? !0 : !!needsUpdate), isSameAsParent = parentState && (!name || name === parentState.name), shouldRerender = !!(needsUpdate && (pendingUpdate2 || (lastState == null ? void 0 : lastState.name) !== (parentState == null ? void 0 : parentState.name)));
|
|
86
109
|
if (process.env.NODE_ENV === "development" && debug && debug !== "profile") {
|
|
87
|
-
var message = ` \xB7 useTheme(${id})
|
|
110
|
+
var message = ` \xB7 useTheme(${id}) => ${name} needsUpdate ${needsUpdate} shouldRerender ${shouldRerender}`;
|
|
88
111
|
console.info(message);
|
|
89
112
|
}
|
|
90
|
-
if (
|
|
91
|
-
return
|
|
113
|
+
if (isSameAsParent)
|
|
114
|
+
return [
|
|
115
|
+
shouldRerender,
|
|
116
|
+
{
|
|
117
|
+
...parentState,
|
|
118
|
+
isNew: !1
|
|
119
|
+
}
|
|
120
|
+
];
|
|
92
121
|
if (!name) {
|
|
93
122
|
var next = lastState ?? parentState;
|
|
94
123
|
if (!next)
|
|
95
124
|
throw new Error("No theme and no parent?");
|
|
96
|
-
if (
|
|
125
|
+
if (shouldRerender) {
|
|
97
126
|
var updated = {
|
|
98
127
|
...parentState || lastState
|
|
99
128
|
};
|
|
100
|
-
return
|
|
129
|
+
return [
|
|
130
|
+
!0,
|
|
131
|
+
updated
|
|
132
|
+
];
|
|
101
133
|
}
|
|
102
|
-
return
|
|
134
|
+
return [
|
|
135
|
+
!1,
|
|
136
|
+
next
|
|
137
|
+
];
|
|
103
138
|
}
|
|
104
|
-
if (pendingUpdate2 !== "force" && lastState && lastState.name === name)
|
|
105
|
-
return lastState;
|
|
106
139
|
var scheme = getScheme(name), _parentState_inverses, parentInverses = (_parentState_inverses = parentState == null ? void 0 : parentState.inverses) !== null && _parentState_inverses !== void 0 ? _parentState_inverses : 0, isInverse = parentState && scheme !== parentState.scheme, inverses = parentInverses + (isInverse ? 1 : 0), nextState = {
|
|
107
140
|
id,
|
|
108
141
|
name,
|
|
@@ -111,16 +144,27 @@ var import_constants = require("@tamagui/constants"), import_react = require("re
|
|
|
111
144
|
parentId,
|
|
112
145
|
parentName: parentState == null ? void 0 : parentState.name,
|
|
113
146
|
inverses,
|
|
114
|
-
isInverse
|
|
147
|
+
isInverse,
|
|
148
|
+
isNew: !0
|
|
115
149
|
};
|
|
116
|
-
isRoot && (rootThemeState = nextState)
|
|
150
|
+
if (isRoot && (rootThemeState = nextState), pendingUpdate2 !== "force" && lastState && lastState.name === name)
|
|
151
|
+
return [
|
|
152
|
+
!1,
|
|
153
|
+
nextState
|
|
154
|
+
];
|
|
117
155
|
var shouldAvoidRerender = pendingUpdate2 !== "force" && lastState && !needsUpdate && nextState.name === lastState.name;
|
|
118
156
|
return process.env.NODE_ENV === "development" && debug && debug !== "profile" && (console.groupCollapsed(` \xB7 useTheme(${id}) \u23ED\uFE0F ${name} shouldAvoidRerender: ${shouldAvoidRerender}`), console.info({
|
|
119
157
|
lastState,
|
|
120
158
|
needsUpdate,
|
|
121
159
|
nextState,
|
|
122
160
|
pendingUpdate: pendingUpdate2
|
|
123
|
-
}), console.groupEnd()), shouldAvoidRerender ?
|
|
161
|
+
}), console.groupEnd()), shouldAvoidRerender ? [
|
|
162
|
+
!1,
|
|
163
|
+
nextState
|
|
164
|
+
] : [
|
|
165
|
+
!0,
|
|
166
|
+
nextState
|
|
167
|
+
];
|
|
124
168
|
};
|
|
125
169
|
function scheduleUpdate(id) {
|
|
126
170
|
for (var queue = [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/Users/n8/tamagui/code/core/web/src/hooks/useThemeState.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;;;;;;;;;;;
|
|
5
|
-
"names": ["ThemeStateContext", "createContext", "keysToId", "WeakMap", "allListeners", "Map", "listenersByParent", "hasRenderedOnce", "pendingUpdate", "states", "
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["ThemeStateContext", "createContext", "keysToId", "WeakMap", "allListeners", "Map", "listenersByParent", "hasRenderedOnce", "pendingUpdate", "states", "localStates", "process", "env", "NODE_ENV", "globalThis", "getTamaguiThemes", "buildTree", "id", "node", "get", "children", "Array", "from", "values", "filter", "child", "parentId", "map", "Boolean", "rootThemeState", "console", "info", "shouldForce", "forceUpdateThemes", "cacheVersion", "forEach", "cb", "getThemeState", "themes", "getRootThemeState", "useThemeState", "props", "isRoot", "keys", "disable", "useContext", "Error", "name", "theme", "getConfig", "light", "inverses", "useId", "subscribe", "useCallback", "Set", "add", "set", "delete", "propsKey", "getPropsKey", "getSnapshot", "local", "needsUpdate", "current", "size", "rerender", "next", "getNextState", "debug", "groupCollapsed", "groupEnd", "Object", "assign", "time", "state", "useSyncExternalStore", "useIsomorphicLayoutEffect", "warn", "scheduleUpdate", "lastState", "parentState", "isNew", "getNewThemeName", "isSameAsParent", "shouldRerender", "message", "updated", "scheme", "getScheme", "parentInverses", "isInverse", "nextState", "parentName", "shouldAvoidRerender", "scheduleUpdate", "id", "queue", "visited", "Set", "length", "parent", "shift", "children", "listenersByParent", "childId", "has", "add", "push", "forEach", "cb", "allListeners", "get", "validSchemes", "light", "dark", "getScheme", "name", "split", "getNewThemeName", "parentName", "reset", "componentName", "inverse", "debug", "forceUpdate", "Error", "process", "env", "NODE_ENV", "lastPartIndex", "lastIndexOf", "slice", "themes", "getConfig", "parentParts", "lastName", "toLowerCase", "pop", "subNames", "undefined", "filter", "Boolean", "found", "max", "i", "base", "join", "subName", "potential", "scheme", "replace", "RegExp", "getPropsKey", "forceClassName", "hasThemeUpdatingProps", "props"]
|
|
6
6
|
}
|
package/dist/cjs/views/Theme.cjs
CHANGED
|
@@ -71,7 +71,12 @@ function getThemedChildren(themeState, children, props, isRoot = !1, stateRef) {
|
|
|
71
71
|
forceClassName
|
|
72
72
|
} = props,
|
|
73
73
|
state = stateRef.current;
|
|
74
|
-
|
|
74
|
+
let shouldRenderChildrenWithTheme = state.hasEverThemed || themeState.isNew || isRoot || (0, import_useThemeState.hasThemeUpdatingProps)(props);
|
|
75
|
+
if (process.env.NODE_ENV === "development" && props.debug && (children = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_ThemeDebug.ThemeDebug, {
|
|
76
|
+
themeState,
|
|
77
|
+
themeProps: props,
|
|
78
|
+
children
|
|
79
|
+
})), !shouldRenderChildrenWithTheme) return children;
|
|
75
80
|
children = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_useThemeState.ThemeStateContext.Provider, {
|
|
76
81
|
value: themeState.id,
|
|
77
82
|
children
|
|
@@ -92,23 +97,22 @@ function getThemedChildren(themeState, children, props, isRoot = !1, stateRef) {
|
|
|
92
97
|
children: child.props.children
|
|
93
98
|
})) : child);
|
|
94
99
|
}
|
|
95
|
-
if (process.env.NODE_ENV === "development" && props.debug &&
|
|
100
|
+
if (process.env.NODE_ENV === "development" && props.debug && console.warn(" getThemedChildren", {
|
|
96
101
|
requiresExtraWrapper,
|
|
97
102
|
forceClassName,
|
|
98
103
|
themeState,
|
|
99
104
|
state,
|
|
100
105
|
...getThemeClassNameAndStyle(themeState, props, isRoot)
|
|
101
|
-
}),
|
|
102
|
-
themeState,
|
|
103
|
-
themeProps: props,
|
|
104
|
-
children
|
|
105
|
-
})), forceClassName === !1) return children;
|
|
106
|
+
}), forceClassName === !1) return children;
|
|
106
107
|
if (import_constants.isWeb) {
|
|
107
108
|
const {
|
|
108
109
|
className,
|
|
109
110
|
style
|
|
110
111
|
} = getThemeClassNameAndStyle(themeState, props, isRoot);
|
|
111
112
|
if (children = /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
113
|
+
...(process.env.NODE_ENV === "development" && {
|
|
114
|
+
"data-theme-id": themeState.id
|
|
115
|
+
}),
|
|
112
116
|
className: `${className} _dsp_contents is_Theme`,
|
|
113
117
|
style,
|
|
114
118
|
children
|
package/dist/cjs/views/Theme.js
CHANGED
|
@@ -48,7 +48,8 @@ const empty = { className: "", style: {} }, Theme = (0, import_react.forwardRef)
|
|
|
48
48
|
Theme.avoidForwardRef = !0;
|
|
49
49
|
function getThemedChildren(themeState, children, props, isRoot = !1, stateRef) {
|
|
50
50
|
const { shallow, forceClassName } = props, state = stateRef.current;
|
|
51
|
-
|
|
51
|
+
let shouldRenderChildrenWithTheme = state.hasEverThemed || themeState.isNew || isRoot || (0, import_useThemeState.hasThemeUpdatingProps)(props);
|
|
52
|
+
if (process.env.NODE_ENV === "development" && props.debug && (children = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ThemeDebug.ThemeDebug, { themeState, themeProps: props, children })), !shouldRenderChildrenWithTheme)
|
|
52
53
|
return children;
|
|
53
54
|
children = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_useThemeState.ThemeStateContext.Provider, { value: themeState.id, children });
|
|
54
55
|
const { isInverse, name } = themeState, requiresExtraWrapper = isInverse || forceClassName;
|
|
@@ -65,17 +66,27 @@ function getThemedChildren(themeState, children, props, isRoot = !1, stateRef) {
|
|
|
65
66
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Theme, { name: parentState.name, children: child.props.children })
|
|
66
67
|
) : child);
|
|
67
68
|
}
|
|
68
|
-
if (process.env.NODE_ENV === "development" && props.debug &&
|
|
69
|
+
if (process.env.NODE_ENV === "development" && props.debug && console.warn(" getThemedChildren", {
|
|
69
70
|
requiresExtraWrapper,
|
|
70
71
|
forceClassName,
|
|
71
72
|
themeState,
|
|
72
73
|
state,
|
|
73
74
|
...getThemeClassNameAndStyle(themeState, props, isRoot)
|
|
74
|
-
}),
|
|
75
|
+
}), forceClassName === !1)
|
|
75
76
|
return children;
|
|
76
77
|
if (import_constants.isWeb) {
|
|
77
78
|
const { className, style } = getThemeClassNameAndStyle(themeState, props, isRoot);
|
|
78
|
-
if (children = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
79
|
+
if (children = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
80
|
+
"span",
|
|
81
|
+
{
|
|
82
|
+
...process.env.NODE_ENV === "development" && {
|
|
83
|
+
"data-theme-id": themeState.id
|
|
84
|
+
},
|
|
85
|
+
className: `${className} _dsp_contents is_Theme`,
|
|
86
|
+
style,
|
|
87
|
+
children
|
|
88
|
+
}
|
|
89
|
+
), state.hasEverThemed === "wrapped") {
|
|
79
90
|
const className2 = requiresExtraWrapper ? `${isInverse ? name.startsWith("light") ? "t_light is_inversed" : name.startsWith("dark") ? "t_dark is_inversed" : "" : ""} _dsp_contents` : "_dsp_contents";
|
|
80
91
|
children = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: className2, children });
|
|
81
92
|
}
|