@tamagui/web 1.41.0 → 1.42.0
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/createComponent.js +5 -2
- package/dist/cjs/createComponent.js.map +1 -1
- package/dist/cjs/helpers/createMediaStyle.js +63 -23
- package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
- package/dist/cjs/helpers/getSplitStyles.js +43 -7
- package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
- package/dist/cjs/hooks/useMedia.js +19 -7
- package/dist/cjs/hooks/useMedia.js.map +1 -1
- package/dist/cjs/hooks/useStyle.js +2 -2
- package/dist/cjs/hooks/useStyle.js.map +1 -1
- package/dist/cjs/hooks/useTheme.js +34 -29
- package/dist/cjs/hooks/useTheme.js.map +1 -1
- package/dist/cjs/styled.js.map +1 -1
- package/dist/esm/createComponent.js +5 -2
- package/dist/esm/createComponent.js.map +1 -1
- package/dist/esm/helpers/createMediaStyle.js +63 -23
- package/dist/esm/helpers/createMediaStyle.js.map +2 -2
- package/dist/esm/helpers/getSplitStyles.js +44 -7
- package/dist/esm/helpers/getSplitStyles.js.map +2 -2
- package/dist/esm/hooks/useMedia.js +19 -7
- package/dist/esm/hooks/useMedia.js.map +1 -1
- package/dist/esm/hooks/useStyle.js +3 -3
- package/dist/esm/hooks/useStyle.js.map +1 -1
- package/dist/esm/hooks/useTheme.js +34 -29
- package/dist/esm/hooks/useTheme.js.map +1 -1
- package/dist/esm/styled.js.map +1 -1
- package/package.json +9 -9
- package/src/createComponent.tsx +8 -3
- package/src/helpers/createMediaStyle.ts +76 -28
- package/src/helpers/getSplitStyles.tsx +54 -7
- package/src/hooks/useMedia.tsx +30 -7
- package/src/hooks/useStyle.tsx +3 -3
- package/src/hooks/useTheme.tsx +37 -41
- package/src/styled.tsx +3 -4
- package/src/types.tsx +23 -3
- package/types/createComponent.d.ts.map +1 -1
- package/types/helpers/createMediaStyle.d.ts +1 -1
- package/types/helpers/createMediaStyle.d.ts.map +1 -1
- package/types/helpers/getSplitStyles.d.ts +4 -1
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/hooks/useMedia.d.ts +2 -2
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/hooks/useTheme.d.ts +1 -1
- package/types/hooks/useTheme.d.ts.map +1 -1
- package/types/styled.d.ts +1 -1
- package/types/styled.d.ts.map +1 -1
- package/types/types.d.ts +15 -2
- package/types/types.d.ts.map +1 -1
|
@@ -3,6 +3,7 @@ import { useMemo, useSyncExternalStore } from "react";
|
|
|
3
3
|
import { getConfig } from "../config";
|
|
4
4
|
import { createProxy } from "../helpers/createProxy";
|
|
5
5
|
import { matchMedia } from "../helpers/matchMedia";
|
|
6
|
+
import { pseudoDescriptors } from "../helpers/pseudoDescriptors";
|
|
6
7
|
import { useSafeRef } from "./useSafeRef";
|
|
7
8
|
let mediaState = (
|
|
8
9
|
// development only safeguard
|
|
@@ -22,16 +23,21 @@ let mediaState = (
|
|
|
22
23
|
const mediaQueryConfig = {};
|
|
23
24
|
const getMedia = () => mediaState;
|
|
24
25
|
const mediaKeys = /* @__PURE__ */ new Set();
|
|
25
|
-
const isMediaKey = (key) => mediaKeys.has(key);
|
|
26
|
+
const isMediaKey = (key) => mediaKeys.has(key) || key.startsWith("$platform-") || key.startsWith("$theme-");
|
|
26
27
|
let initState;
|
|
27
28
|
const getInitialMediaState = () => {
|
|
28
29
|
return (getConfig().disableSSR ? mediaState : initState) || {};
|
|
29
30
|
};
|
|
31
|
+
const defaultMediaImportance = Object.keys(pseudoDescriptors).length;
|
|
30
32
|
let mediaKeysOrdered;
|
|
31
33
|
const getMediaKeyImportance = (key) => {
|
|
32
34
|
if (process.env.NODE_ENV === "development" && key[0] === "$") {
|
|
33
35
|
throw new Error("use short key");
|
|
34
36
|
}
|
|
37
|
+
const conf = getConfig();
|
|
38
|
+
if (conf.settings.mediaPropOrder) {
|
|
39
|
+
return defaultMediaImportance;
|
|
40
|
+
}
|
|
35
41
|
return mediaKeysOrdered.indexOf(key) + 100;
|
|
36
42
|
};
|
|
37
43
|
const dispose = /* @__PURE__ */ new Set();
|
|
@@ -171,25 +177,31 @@ function useMediaPropsActive(props, opts) {
|
|
|
171
177
|
if (shouldExpandShorthands) {
|
|
172
178
|
subKey = config.shorthands[subKey] || subKey;
|
|
173
179
|
}
|
|
174
|
-
mergeMediaByImportance(next, mediaKey, subKey, value, importancesUsed);
|
|
180
|
+
mergeMediaByImportance(next, mediaKey, subKey, value, importancesUsed, true);
|
|
175
181
|
}
|
|
176
182
|
}
|
|
177
183
|
} else {
|
|
178
184
|
if (shouldExpandShorthands) {
|
|
179
185
|
key = config.shorthands[key] || key;
|
|
180
186
|
}
|
|
181
|
-
mergeMediaByImportance(next, "", key, val, importancesUsed);
|
|
187
|
+
mergeMediaByImportance(next, "", key, val, importancesUsed, true);
|
|
182
188
|
}
|
|
183
189
|
}
|
|
184
190
|
return next;
|
|
185
191
|
}, [media, props]);
|
|
186
192
|
}
|
|
187
|
-
const getMediaImportanceIfMoreImportant = (mediaKey, key, importancesUsed) => {
|
|
188
|
-
const
|
|
193
|
+
const getMediaImportanceIfMoreImportant = (mediaKey, key, importancesUsed, isSizeMedia) => {
|
|
194
|
+
const conf = getConfig();
|
|
195
|
+
const importance = isSizeMedia && !conf.settings.mediaPropOrder ? getMediaKeyImportance(mediaKey) : defaultMediaImportance;
|
|
189
196
|
return !importancesUsed[key] || importance > importancesUsed[key] ? importance : null;
|
|
190
197
|
};
|
|
191
|
-
function mergeMediaByImportance(onto, mediaKey, key, value, importancesUsed) {
|
|
192
|
-
const importance = getMediaImportanceIfMoreImportant(
|
|
198
|
+
function mergeMediaByImportance(onto, mediaKey, key, value, importancesUsed, isSizeMedia) {
|
|
199
|
+
const importance = getMediaImportanceIfMoreImportant(
|
|
200
|
+
mediaKey,
|
|
201
|
+
key,
|
|
202
|
+
importancesUsed,
|
|
203
|
+
isSizeMedia
|
|
204
|
+
);
|
|
193
205
|
if (importance === null) {
|
|
194
206
|
return false;
|
|
195
207
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useMedia.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,iCAAiC;AAC1C,SAAS,SAAS,4BAA4B;AAE9C,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["update"]
|
|
6
6
|
}
|
|
@@ -4,17 +4,17 @@ import { FontLanguageContext } from "../contexts/FontLanguageContext";
|
|
|
4
4
|
import { TextAncestorContext } from "../contexts/TextAncestorContext";
|
|
5
5
|
import { useSplitStyles } from "../helpers/getSplitStyles";
|
|
6
6
|
import { useMedia } from "./useMedia";
|
|
7
|
-
import {
|
|
7
|
+
import { useThemeWithState } from "./useTheme";
|
|
8
8
|
function useStyle(base, style, options) {
|
|
9
9
|
const isText = base.staticConfig.isText;
|
|
10
10
|
const hasTextAncestor = !!(isWeb && isText ? useContext(TextAncestorContext) : false);
|
|
11
11
|
const languageContext = isRSC ? null : useContext(FontLanguageContext);
|
|
12
|
-
const
|
|
12
|
+
const themeState = useThemeWithState({});
|
|
13
13
|
const media = useMedia();
|
|
14
14
|
const out = useSplitStyles(
|
|
15
15
|
style,
|
|
16
16
|
base.staticConfig,
|
|
17
|
-
|
|
17
|
+
themeState,
|
|
18
18
|
{
|
|
19
19
|
...options,
|
|
20
20
|
mediaState: media,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useStyle.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,OAAO,aAAa;AAC7B,SAAS,kBAAkB;AAE3B,SAAS,2BAA2B;AACpC,SAAS,2BAA2B;AACpC,SAAS,sBAAsB;AAQ/B,SAAS,gBAAgB;AACzB,SAAS,
|
|
4
|
+
"mappings": "AAAA,SAAS,OAAO,aAAa;AAC7B,SAAS,kBAAkB;AAE3B,SAAS,2BAA2B;AACpC,SAAS,2BAA2B;AACpC,SAAS,sBAAsB;AAQ/B,SAAS,gBAAgB;AACzB,SAAS,yBAAyB;AAE3B,SAAS,SAId,MACA,OACA,SACA;AACA,QAAM,SAAS,KAAK,aAAa;AACjC,QAAM,kBAAkB,CAAC,EAAE,SAAS,SAAS,WAAW,mBAAmB,IAAI;AAC/E,QAAM,kBAAkB,QAAQ,OAAO,WAAW,mBAAmB;AACrE,QAAM,aAAa,kBAAkB,CAAC,CAAC;AACvC,QAAM,QAAQ,SAAS;AACvB,QAAM,MAAM;AAAA,IACV;AAAA,IACA,KAAK;AAAA,IACL;AAAA,IACA;AAAA,MACE,GAAI;AAAA,MACJ,YAAY;AAAA,MACZ;AAAA,MACA,oBAAoB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB,SAAS,SAAS;AAAA,IAClB,mCAAS;AAAA,EACX;AACA,SAAO;AAAA,IACL,OAAO,OAAO,KAAK,IAAI,KAAK,EAAE,SAAS,IAAI,QAAQ;AAAA,IACnD,YAAY,IAAI;AAAA,EAClB;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -32,7 +32,7 @@ const useThemeWithState = (props) => {
|
|
|
32
32
|
keys.current,
|
|
33
33
|
isClient ? () => {
|
|
34
34
|
var _a;
|
|
35
|
-
return ((_a = props.shouldUpdate) == null ? void 0 : _a.call(props)) ?? keys.current.length
|
|
35
|
+
return ((_a = props.shouldUpdate) == null ? void 0 : _a.call(props)) ?? (keys.current.length > 0 ? true : void 0);
|
|
36
36
|
} : void 0
|
|
37
37
|
);
|
|
38
38
|
const { themeManager, theme, name, className } = changedTheme;
|
|
@@ -77,32 +77,31 @@ function getThemeProxied({
|
|
|
77
77
|
if (key === GetThemeUnwrapped) {
|
|
78
78
|
return theme;
|
|
79
79
|
}
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
return (
|
|
80
|
+
if (typeof key === "string" && keys) {
|
|
81
|
+
const keyString = key[0] === "$" ? key.slice(1) : key;
|
|
82
|
+
const val = themeManager.getValue(keyString);
|
|
83
|
+
if (val && typeof val === "object") {
|
|
84
|
+
return new Proxy(val, {
|
|
85
|
+
// when they touch the actual value we only track it
|
|
86
|
+
// if its a variable (web), its ignored!
|
|
87
|
+
get(_2, subkey) {
|
|
88
|
+
if ((subkey === "val" || subkey === "get" && !isWeb) && !keys.includes(keyString)) {
|
|
89
|
+
keys.push(keyString);
|
|
90
|
+
}
|
|
91
|
+
if (subkey === "get") {
|
|
92
|
+
return () => getVariable(val);
|
|
93
|
+
}
|
|
94
|
+
return Reflect.get(val, subkey);
|
|
95
95
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
99
98
|
}
|
|
100
|
-
return
|
|
99
|
+
return Reflect.get(_, key);
|
|
101
100
|
}
|
|
102
101
|
});
|
|
103
102
|
}
|
|
104
103
|
const activeThemeManagers = /* @__PURE__ */ new Set();
|
|
105
|
-
const useChangeThemeEffect = (props, root = false, keys,
|
|
104
|
+
const useChangeThemeEffect = (props, root = false, keys, shouldUpdate) => {
|
|
106
105
|
if (isRSC) {
|
|
107
106
|
return {
|
|
108
107
|
isNewTheme: false,
|
|
@@ -129,13 +128,18 @@ const useChangeThemeEffect = (props, root = false, keys, disableUpdate) => {
|
|
|
129
128
|
const { state, mounted, isNewTheme, themeManager } = themeState;
|
|
130
129
|
const isInversingOnMount = Boolean(!themeState.mounted && props.inverse);
|
|
131
130
|
function getShouldUpdateTheme(manager = themeManager, nextState, prevState = state, forceShouldChange = false) {
|
|
132
|
-
|
|
133
|
-
if (!next)
|
|
131
|
+
if (forceShouldChange)
|
|
134
132
|
return;
|
|
135
|
-
|
|
133
|
+
const forceUpdate = shouldUpdate == null ? void 0 : shouldUpdate();
|
|
134
|
+
if (forceUpdate === false)
|
|
136
135
|
return;
|
|
137
|
-
|
|
136
|
+
const next = nextState || manager.getState(props, parentManager);
|
|
137
|
+
if (!next)
|
|
138
138
|
return;
|
|
139
|
+
if (forceUpdate !== true) {
|
|
140
|
+
if (!manager.getStateShouldChange(next, prevState))
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
139
143
|
return next;
|
|
140
144
|
}
|
|
141
145
|
if (!isServer) {
|
|
@@ -164,12 +168,13 @@ const useChangeThemeEffect = (props, root = false, keys, disableUpdate) => {
|
|
|
164
168
|
}
|
|
165
169
|
});
|
|
166
170
|
const disposeChangeListener = parentManager == null ? void 0 : parentManager.onChangeTheme((name, manager) => {
|
|
167
|
-
const
|
|
171
|
+
const force = shouldUpdate == null ? void 0 : shouldUpdate();
|
|
172
|
+
const doUpdate = force ?? Boolean((keys == null ? void 0 : keys.length) || isNewTheme);
|
|
168
173
|
if (process.env.NODE_ENV === "development" && props.debug) {
|
|
169
|
-
const logs = {
|
|
174
|
+
const logs = { force, doUpdate, props, name, manager, keys };
|
|
170
175
|
console.log(` \u{1F538} onChange`, themeManager.id, logs);
|
|
171
176
|
}
|
|
172
|
-
if (
|
|
177
|
+
if (doUpdate) {
|
|
173
178
|
setThemeState(createState);
|
|
174
179
|
}
|
|
175
180
|
}, themeManager.id);
|
|
@@ -213,7 +218,7 @@ const useChangeThemeEffect = (props, root = false, keys, disableUpdate) => {
|
|
|
213
218
|
themeManager
|
|
214
219
|
};
|
|
215
220
|
function createState(prev, force = false) {
|
|
216
|
-
if (prev && (
|
|
221
|
+
if (prev && (shouldUpdate == null ? void 0 : shouldUpdate()) === false) {
|
|
217
222
|
return prev;
|
|
218
223
|
}
|
|
219
224
|
let themeManager2 = parentManager;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useTheme.tsx"],
|
|
4
|
-
"mappings": "AACA,SAAS,UAAU,OAAO,UAAU,aAAa;AACjD,SAAS,YAAY,WAAW,iBAAiB,SAAS,gBAAgB;AAE1E,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AACP,SAAS,2BAA2B;AAEpC,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAiB7B,MAAM,aAAa,EAAE,MAAM,KAAK;AAEhC,SAAS,yBAAyB;AAChC,QAAM,SAAS,UAAU;AACzB,QAAM,OAAO,OAAO,KAAK,OAAO,MAAM,EAAE,CAAC;AACzC,SAAO,gBAAgB;AAAA,IACrB,OAAO,OAAO,OAAO,IAAI;AAAA,IACzB;AAAA,EACF,CAAC;AACH;AAQO,MAAM,WAAW,CAAC,QAAoB,eAA+B;AAlD5E;AAmDE,UAAQ,QAAQ,QAAO,uBAAkB,KAAK,MAAvB,mBAA0B,UAAU,uBAAuB;AACpF;AAEO,MAAM,oBAAoB,CAAC,UAAsB;AACtD,QAAM,OAAO,aAAuB,CAAC,CAAC;AAEtC,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,WACI,MAAM;AA9Dd;AA+DU,eAAO,WAAM,iBAAN,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["_", "themeManager", "state", "isNewTheme", "mounted"]
|
|
6
6
|
}
|
package/dist/esm/styled.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/styled.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,qBAAqB;AAE9B,SAAS,uBAAuB;AAEhC,SAAS,qBAAqB;AAC9B,SAAS,4BAA4B;AAuC9B,SAAS,OAId,aAEA,SAOA,yBACA;AAEA,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,QAAI,CAAC,aAAa;AAChB,YAAM,IAAI,MAAM,gCAAgC;AAAA,IAClD;AACA,QAAI,mCAAS,UAAU;AACrB,iBAAW,OAAO,QAAQ,UAAU;AAClC,YAAI,OAAO,eAAe;AACxB,kBAAQ;AAAA,YACN,gDAAgD;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAAqB,YAAY,cAAc;AAErD,QAAM,yBACJ,CAAC,CAAC,sBACF,EAAE,mBAAmB,iBAAiB,mBAAmB;AAE3D,MAAI,YAAiB,yBACjB,eACA,yDAAoB,cAAa;AAErC,QAAM,oBAAoB,qBAAqB,SAAS;AACxD,QAAM,gBAAgB;AAAA,IACpB,sBACE,mEAAyB,mBACzB,yDAAoB,kBACpB,qBAAqB,yDAAoB,SAAS;AAAA,EACtD;AAEA,QAAM,qBAAqB,MAAM;AA7FnC;AA8FI,QAAI,SAAS;AACX,UAAI;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,QACA,kBAAkB;AAAA,QAClB;AAAA,QACA,GAAG;AAAA,MACL,IAAI;AAEJ,UAAI,oBAAoB;AACtB,cAAM,QAAQ,mBAAmB,SAAS,CAAC,mBAAmB;AAC9D,YAAI,CAAC,OAAO;AACV,yBAAe;AAAA,YACb,GAAG,mBAAmB;AAAA,YACtB,GAAG;AAAA,UACL;AAAA,QACF;AAEA,YAAI,mBAAmB,UAAU;AAC/B,qBAAW,cAAc,mBAAmB,UAAU,QAAQ;AAAA,QAChE;AAAA,MACF;AAEA,UAAI,iBAAiB;AACnB,uBAAe;AAAA,UACb,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AAAA,MACF;AAEA,UAAI,yDAAoB,OAAO;AAE7B,YAAI,MAAM;AAER,uBAAa,gBAAgB;AAAA,QAC/B;AAAA,MACF;AAEA,YAAM,SAAS;AAAA,SACb,mEAAyB,YAAU,yDAAoB;AAAA,MACzD;AAEA,YAAM,mBACJ,yBACC,0BACC,kBACC,yDAAoB,WAAS,yDAAoB;AAEtD,UAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,cAAI,8DAAoB,iBAApB,mBAAkC,UAAS,CAAC,QAAQ,OAAO;AAC7D,iBAAO,aAAa;AAAA,QACtB;AAAA,MACF;AAEA,YAAM,OAA8B;AAAA,QAClC,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAI,CAAC,0BAA0B;AAAA,UAC7B;AAAA,QACF;AAAA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,SAAQ,yDAAoB;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG;AAAA,QACH,aAAa,QAAQ,yDAAoB,KAAK;AAAA,MAChD;AAGA,UAAI,aAAa,YAAY,CAAC,oBAAoB,SAAS;AACzD,aAAK,eAAe;AAAA,MACtB;AAEA,aAAO;AAAA,IACT;AAAA,EACF,GAAG;AAEH,QAAM,YAAY,gBAAgB,qBAAqB,CAAC,CAAC;
|
|
4
|
+
"mappings": "AAAA,SAAS,qBAAqB;AAE9B,SAAS,uBAAuB;AAEhC,SAAS,qBAAqB;AAC9B,SAAS,4BAA4B;AAuC9B,SAAS,OAId,aAEA,SAOA,yBACA;AAEA,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,QAAI,CAAC,aAAa;AAChB,YAAM,IAAI,MAAM,gCAAgC;AAAA,IAClD;AACA,QAAI,mCAAS,UAAU;AACrB,iBAAW,OAAO,QAAQ,UAAU;AAClC,YAAI,OAAO,eAAe;AACxB,kBAAQ;AAAA,YACN,gDAAgD;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAAqB,YAAY,cAAc;AAErD,QAAM,yBACJ,CAAC,CAAC,sBACF,EAAE,mBAAmB,iBAAiB,mBAAmB;AAE3D,MAAI,YAAiB,yBACjB,eACA,yDAAoB,cAAa;AAErC,QAAM,oBAAoB,qBAAqB,SAAS;AACxD,QAAM,gBAAgB;AAAA,IACpB,sBACE,mEAAyB,mBACzB,yDAAoB,kBACpB,qBAAqB,yDAAoB,SAAS;AAAA,EACtD;AAEA,QAAM,qBAAqB,MAAM;AA7FnC;AA8FI,QAAI,SAAS;AACX,UAAI;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,QACA,kBAAkB;AAAA,QAClB;AAAA,QACA,GAAG;AAAA,MACL,IAAI;AAEJ,UAAI,oBAAoB;AACtB,cAAM,QAAQ,mBAAmB,SAAS,CAAC,mBAAmB;AAC9D,YAAI,CAAC,OAAO;AACV,yBAAe;AAAA,YACb,GAAG,mBAAmB;AAAA,YACtB,GAAG;AAAA,UACL;AAAA,QACF;AAEA,YAAI,mBAAmB,UAAU;AAC/B,qBAAW,cAAc,mBAAmB,UAAU,QAAQ;AAAA,QAChE;AAAA,MACF;AAEA,UAAI,iBAAiB;AACnB,uBAAe;AAAA,UACb,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AAAA,MACF;AAEA,UAAI,yDAAoB,OAAO;AAE7B,YAAI,MAAM;AAER,uBAAa,gBAAgB;AAAA,QAC/B;AAAA,MACF;AAEA,YAAM,SAAS;AAAA,SACb,mEAAyB,YAAU,yDAAoB;AAAA,MACzD;AAEA,YAAM,mBACJ,yBACC,0BACC,kBACC,yDAAoB,WAAS,yDAAoB;AAEtD,UAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,cAAI,8DAAoB,iBAApB,mBAAkC,UAAS,CAAC,QAAQ,OAAO;AAC7D,iBAAO,aAAa;AAAA,QACtB;AAAA,MACF;AAEA,YAAM,OAA8B;AAAA,QAClC,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAI,CAAC,0BAA0B;AAAA,UAC7B;AAAA,QACF;AAAA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,SAAQ,yDAAoB;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG;AAAA,QACH,aAAa,QAAQ,yDAAoB,KAAK;AAAA,MAChD;AAGA,UAAI,aAAa,YAAY,CAAC,oBAAoB,SAAS;AACzD,aAAK,eAAe;AAAA,MACtB;AAEA,aAAO;AAAA,IACT;AAAA,EACF,GAAG;AAEH,QAAM,YAAY,gBAAgB,qBAAqB,CAAC,CAAC;AAwCzD,aAAW,OAAO,aAAa;AAC7B,QAAI,OAAO;AAAW;AAEtB,cAAU,GAAG,IAAI,YAAY,GAAG;AAAA,EAClC;AAEA,SAAO;AACT;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/web",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.42.0",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -27,19 +27,19 @@
|
|
|
27
27
|
"reset.css"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@tamagui/compose-refs": "1.
|
|
31
|
-
"@tamagui/constants": "1.
|
|
32
|
-
"@tamagui/helpers": "1.
|
|
33
|
-
"@tamagui/normalize-css-color": "1.
|
|
34
|
-
"@tamagui/use-did-finish-ssr": "1.
|
|
35
|
-
"@tamagui/use-event": "1.
|
|
36
|
-
"@tamagui/use-force-update": "1.
|
|
30
|
+
"@tamagui/compose-refs": "1.42.0",
|
|
31
|
+
"@tamagui/constants": "1.42.0",
|
|
32
|
+
"@tamagui/helpers": "1.42.0",
|
|
33
|
+
"@tamagui/normalize-css-color": "1.42.0",
|
|
34
|
+
"@tamagui/use-did-finish-ssr": "1.42.0",
|
|
35
|
+
"@tamagui/use-event": "1.42.0",
|
|
36
|
+
"@tamagui/use-force-update": "1.42.0"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"react": "*"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@tamagui/build": "1.
|
|
42
|
+
"@tamagui/build": "1.42.0",
|
|
43
43
|
"@testing-library/react": "^13.4.0",
|
|
44
44
|
"csstype": "^3.0.10",
|
|
45
45
|
"react": "^18.2.0",
|
package/src/createComponent.tsx
CHANGED
|
@@ -243,7 +243,7 @@ export function createComponent<
|
|
|
243
243
|
undefined as any as {
|
|
244
244
|
hasAnimated?: boolean
|
|
245
245
|
themeShallow?: boolean
|
|
246
|
-
|
|
246
|
+
isListeningToTheme?: boolean
|
|
247
247
|
}
|
|
248
248
|
)
|
|
249
249
|
stateRef.current ||= {}
|
|
@@ -366,7 +366,10 @@ export function createComponent<
|
|
|
366
366
|
inverse: props.themeInverse,
|
|
367
367
|
// @ts-ignore this is internal use only
|
|
368
368
|
disable: disableTheme,
|
|
369
|
-
shouldUpdate: () =>
|
|
369
|
+
shouldUpdate: () => {
|
|
370
|
+
// only forces when defined
|
|
371
|
+
return stateRef.current.isListeningToTheme
|
|
372
|
+
},
|
|
370
373
|
debug: debugProp,
|
|
371
374
|
}
|
|
372
375
|
|
|
@@ -424,7 +427,7 @@ export function createComponent<
|
|
|
424
427
|
const splitStyles = useSplitStyles(
|
|
425
428
|
props,
|
|
426
429
|
staticConfig,
|
|
427
|
-
themeState
|
|
430
|
+
themeState,
|
|
428
431
|
{
|
|
429
432
|
...state,
|
|
430
433
|
mediaState,
|
|
@@ -440,6 +443,8 @@ export function createComponent<
|
|
|
440
443
|
debugProp
|
|
441
444
|
)
|
|
442
445
|
|
|
446
|
+
stateRef.current.isListeningToTheme = splitStyles.dynamicThemeAccess
|
|
447
|
+
|
|
443
448
|
// only listen for changes if we are using raw theme values or media space, or dynamic media (native)
|
|
444
449
|
// array = space media breakpoints
|
|
445
450
|
const isMediaArray = Array.isArray(splitStyles.hasMedia)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getConfig } from '../config'
|
|
1
2
|
import { mediaObjectToString } from '../hooks/useMedia'
|
|
2
3
|
import type { MediaQueries, MediaStyleObject, StyleObject } from '../types'
|
|
3
4
|
|
|
@@ -12,38 +13,85 @@ export const createMediaStyle = (
|
|
|
12
13
|
{ property, identifier, rules }: StyleObject,
|
|
13
14
|
mediaKey: string,
|
|
14
15
|
mediaQueries: MediaQueries,
|
|
15
|
-
negate?: boolean
|
|
16
|
+
negate?: boolean,
|
|
17
|
+
priority?: number
|
|
16
18
|
): MediaStyleObject => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
)
|
|
23
|
-
selectors = Object.fromEntries(
|
|
24
|
-
mediaKeys.map((key) => [key, mediaObjectToString(mediaQueries[key])])
|
|
25
|
-
)
|
|
26
|
-
}
|
|
27
|
-
const precendencePrefix = prefixes[mediaKey]
|
|
28
|
-
const mediaSelector = selectors[mediaKey]
|
|
19
|
+
const conf = getConfig()
|
|
20
|
+
const enableMediaPropOrder = conf.settings.mediaPropOrder
|
|
21
|
+
const isThemeMedia = mediaKey.startsWith('theme-')
|
|
22
|
+
const isPlatformMedia = !isThemeMedia && mediaKey.startsWith('platform-')
|
|
23
|
+
const isThemeOrPlatform = isThemeMedia || isPlatformMedia
|
|
29
24
|
const negKey = negate ? '0' : ''
|
|
30
25
|
const ogPrefix = identifier.slice(0, identifier.indexOf('-') + 1)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
)}`
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
26
|
+
|
|
27
|
+
let styleRule: string
|
|
28
|
+
|
|
29
|
+
const id = `${ogPrefix}${MEDIA_SEP}${mediaKey.replace('-', '')}${negKey}${MEDIA_SEP}`
|
|
30
|
+
const nextIdentifier = identifier.replace(ogPrefix, id)
|
|
31
|
+
|
|
32
|
+
if (isThemeOrPlatform) {
|
|
33
|
+
const precedencePrefix = new Array(priority).fill(':root').join('')
|
|
34
|
+
const styleInner = rules
|
|
35
|
+
.map((rule) => rule.replace(identifier, nextIdentifier))
|
|
36
|
+
.join(';')
|
|
37
|
+
|
|
38
|
+
if (isThemeMedia) {
|
|
39
|
+
const key = mediaKey.split('-')[1]
|
|
40
|
+
const selectorStart = styleInner.indexOf(':root')
|
|
41
|
+
const selectorEnd = styleInner.lastIndexOf('{')
|
|
42
|
+
const selector = styleInner.slice(selectorStart, selectorEnd)
|
|
43
|
+
const precedenceSpace = conf.themeClassNameOnRoot ? '' : ' '
|
|
44
|
+
const nextSelector = `:root${precedencePrefix}${precedenceSpace}.t_${key} ${selector.replace(
|
|
45
|
+
':root',
|
|
46
|
+
''
|
|
47
|
+
)}`
|
|
48
|
+
const selectors = `${nextSelector}, :root${nextSelector}`
|
|
49
|
+
// add back in the { we used to split
|
|
50
|
+
styleRule = styleInner.replace(selector, nextSelector)
|
|
51
|
+
} else {
|
|
52
|
+
styleRule = `${precedencePrefix}${styleInner}`
|
|
53
|
+
}
|
|
45
54
|
} else {
|
|
46
|
-
|
|
55
|
+
if (!selectors) {
|
|
56
|
+
if (enableMediaPropOrder) {
|
|
57
|
+
const mediaKeys = Object.keys(mediaQueries)
|
|
58
|
+
selectors = Object.fromEntries(
|
|
59
|
+
mediaKeys.map((key) => [key, mediaObjectToString(mediaQueries[key])])
|
|
60
|
+
)
|
|
61
|
+
} else {
|
|
62
|
+
const mediaKeys = Object.keys(mediaQueries)
|
|
63
|
+
prefixes = Object.fromEntries(
|
|
64
|
+
mediaKeys.map((key, index) => [
|
|
65
|
+
key,
|
|
66
|
+
new Array(index + 1).fill(':root').join(''),
|
|
67
|
+
])
|
|
68
|
+
)
|
|
69
|
+
selectors = Object.fromEntries(
|
|
70
|
+
mediaKeys.map((key) => [key, mediaObjectToString(mediaQueries[key])])
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const precedencePrefix = enableMediaPropOrder
|
|
76
|
+
? // this new array should be cached
|
|
77
|
+
new Array(priority).fill(':root').join('')
|
|
78
|
+
: // @ts-ignore
|
|
79
|
+
prefixes[mediaKey]
|
|
80
|
+
|
|
81
|
+
const mediaSelector = selectors[mediaKey]
|
|
82
|
+
const screenStr = negate ? 'not all and' : ''
|
|
83
|
+
const mediaQuery = `${screenStr} ${mediaSelector}`
|
|
84
|
+
const styleInner = rules
|
|
85
|
+
.map((rule) => rule.replace(identifier, nextIdentifier))
|
|
86
|
+
.join(';')
|
|
87
|
+
|
|
88
|
+
// combines media queries if they already exist
|
|
89
|
+
if (styleInner.includes('@media')) {
|
|
90
|
+
// combine
|
|
91
|
+
styleRule = styleInner.replace('{', ` and ${mediaQuery} {`)
|
|
92
|
+
} else {
|
|
93
|
+
styleRule = `@media ${mediaQuery}{${precedencePrefix}${styleInner}}`
|
|
94
|
+
}
|
|
47
95
|
}
|
|
48
96
|
|
|
49
97
|
return {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
currentPlatform,
|
|
2
3
|
isAndroid,
|
|
3
4
|
isClient,
|
|
4
5
|
isRSC,
|
|
@@ -92,7 +93,10 @@ let conf: TamaguiInternalConfig
|
|
|
92
93
|
type StyleSplitter = (
|
|
93
94
|
props: { [key: string]: any },
|
|
94
95
|
staticConfig: StaticConfigParsed,
|
|
95
|
-
|
|
96
|
+
themeState: {
|
|
97
|
+
theme: ThemeParsed
|
|
98
|
+
name: string
|
|
99
|
+
},
|
|
96
100
|
state: SplitStyleState,
|
|
97
101
|
parentSplitStyles?: GetStyleResult | null,
|
|
98
102
|
languageContext?: LanguageContextType,
|
|
@@ -114,7 +118,7 @@ let defaultFontVariable = ''
|
|
|
114
118
|
export const getSplitStyles: StyleSplitter = (
|
|
115
119
|
props,
|
|
116
120
|
staticConfig,
|
|
117
|
-
|
|
121
|
+
themeState,
|
|
118
122
|
state,
|
|
119
123
|
parentSplitStyles,
|
|
120
124
|
languageContext,
|
|
@@ -123,6 +127,7 @@ export const getSplitStyles: StyleSplitter = (
|
|
|
123
127
|
) => {
|
|
124
128
|
conf = conf || getConfig()
|
|
125
129
|
const { shorthands } = conf
|
|
130
|
+
const { theme, name: themeName } = themeState
|
|
126
131
|
const { variants, propMapper, isReactNative, inlineProps, inlineWhenUnflattened } =
|
|
127
132
|
staticConfig
|
|
128
133
|
const validStyleProps = staticConfig.isText ? stylePropsText : validStyles
|
|
@@ -134,6 +139,7 @@ export const getSplitStyles: StyleSplitter = (
|
|
|
134
139
|
const numProps = propKeys.length
|
|
135
140
|
let space: SpaceTokens | null = props.space
|
|
136
141
|
let hasMedia: boolean | string[] = false
|
|
142
|
+
let dynamicThemeAccess: boolean | undefined
|
|
137
143
|
|
|
138
144
|
const shouldDoClasses =
|
|
139
145
|
staticConfig.acceptsClassName && (isWeb || IS_STATIC) && !state.noClassNames
|
|
@@ -149,6 +155,7 @@ export const getSplitStyles: StyleSplitter = (
|
|
|
149
155
|
|
|
150
156
|
// fontFamily is our special baby, ensure we grab the latest set one always
|
|
151
157
|
let fontFamily: string | undefined
|
|
158
|
+
let mediaStylesSeen = 0
|
|
152
159
|
|
|
153
160
|
/**
|
|
154
161
|
* Not the biggest fan of creating this object but it is a nice API
|
|
@@ -754,6 +761,14 @@ export const getSplitStyles: StyleSplitter = (
|
|
|
754
761
|
if (isMedia) {
|
|
755
762
|
if (!val) continue
|
|
756
763
|
|
|
764
|
+
const isPlatformMedia = key.startsWith('$platform-')
|
|
765
|
+
if (isPlatformMedia) {
|
|
766
|
+
const platform = key.slice(10)
|
|
767
|
+
if (platform !== currentPlatform) {
|
|
768
|
+
continue
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
|
|
757
772
|
hasMedia ||= true
|
|
758
773
|
|
|
759
774
|
// THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR
|
|
@@ -791,7 +806,8 @@ export const getSplitStyles: StyleSplitter = (
|
|
|
791
806
|
const importance = getMediaImportanceIfMoreImportant(
|
|
792
807
|
mediaKeyShort,
|
|
793
808
|
'space',
|
|
794
|
-
usedKeys
|
|
809
|
+
usedKeys,
|
|
810
|
+
true
|
|
795
811
|
)
|
|
796
812
|
if (importance) {
|
|
797
813
|
space = val['space']
|
|
@@ -807,19 +823,48 @@ export const getSplitStyles: StyleSplitter = (
|
|
|
807
823
|
}
|
|
808
824
|
|
|
809
825
|
const mediaStyles = getStylesAtomic(mediaStyle)
|
|
826
|
+
const priority = mediaStylesSeen
|
|
827
|
+
mediaStylesSeen += 1
|
|
828
|
+
|
|
810
829
|
for (const style of mediaStyles) {
|
|
811
|
-
const out = createMediaStyle(
|
|
830
|
+
const out = createMediaStyle(
|
|
831
|
+
style,
|
|
832
|
+
mediaKeyShort,
|
|
833
|
+
mediaQueryConfig,
|
|
834
|
+
false,
|
|
835
|
+
priority
|
|
836
|
+
)
|
|
812
837
|
const fullKey = `${style.property}${PROP_SPLIT}${mediaKeyShort}`
|
|
813
838
|
if (fullKey in usedKeys) continue
|
|
814
839
|
addStyleToInsertRules(rulesToInsert, out as any)
|
|
815
840
|
mergeClassName(transforms, classNames, fullKey, out.identifier, true)
|
|
816
841
|
}
|
|
817
|
-
} else
|
|
842
|
+
} else {
|
|
843
|
+
const isThemeMedia = mediaKeyShort.startsWith('theme-')
|
|
844
|
+
const isPlatformMedia = mediaKeyShort.startsWith('platform-')
|
|
845
|
+
|
|
846
|
+
if (!isThemeMedia && !isPlatformMedia) {
|
|
847
|
+
if (!mediaState[mediaKeyShort]) {
|
|
848
|
+
continue
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
if (isThemeMedia) {
|
|
853
|
+
// needed to get updates when theme changes
|
|
854
|
+
dynamicThemeAccess = true
|
|
855
|
+
|
|
856
|
+
const mediaThemeName = mediaKeyShort.slice(6)
|
|
857
|
+
if (!(themeName === mediaThemeName || themeName.startsWith(mediaThemeName))) {
|
|
858
|
+
continue
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
|
|
818
862
|
for (const subKey in mediaStyle) {
|
|
819
863
|
const importance = getMediaImportanceIfMoreImportant(
|
|
820
864
|
mediaKeyShort,
|
|
821
865
|
subKey,
|
|
822
|
-
usedKeys
|
|
866
|
+
usedKeys,
|
|
867
|
+
mediaState[mediaKeyShort]
|
|
823
868
|
)
|
|
824
869
|
if (importance === null) continue
|
|
825
870
|
if (subKey === 'space') {
|
|
@@ -831,7 +876,8 @@ export const getSplitStyles: StyleSplitter = (
|
|
|
831
876
|
mediaKeyShort,
|
|
832
877
|
subKey,
|
|
833
878
|
mediaStyle[subKey],
|
|
834
|
-
usedKeys
|
|
879
|
+
usedKeys,
|
|
880
|
+
mediaState[mediaKeyShort]
|
|
835
881
|
)
|
|
836
882
|
if (key === 'fontFamily') {
|
|
837
883
|
fontFamily = mediaStyle.fontFamily as string
|
|
@@ -1040,6 +1086,7 @@ export const getSplitStyles: StyleSplitter = (
|
|
|
1040
1086
|
pseudos,
|
|
1041
1087
|
classNames,
|
|
1042
1088
|
rulesToInsert,
|
|
1089
|
+
dynamicThemeAccess,
|
|
1043
1090
|
}
|
|
1044
1091
|
|
|
1045
1092
|
if (className) {
|