@tamagui/core 1.5.13 → 1.5.14
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/config.js +2 -2
- package/dist/cjs/config.js.map +2 -2
- package/dist/cjs/createComponent.js +1 -1
- package/dist/cjs/createComponent.js.map +2 -2
- package/dist/cjs/createFont.web.test.js +125 -0
- package/dist/cjs/createFont.web.test.js.map +7 -0
- package/dist/cjs/createTamagui.js +1 -3
- package/dist/cjs/createTamagui.js.map +2 -2
- package/dist/cjs/createTokens.web.test.js +28 -0
- package/dist/cjs/createTokens.web.test.js.map +7 -0
- package/dist/cjs/createVariable.js.map +1 -1
- package/dist/cjs/createVariable.web.test.js +7 -0
- package/dist/cjs/createVariable.web.test.js.map +7 -0
- package/dist/cjs/helpers/ThemeManager.test.js +465 -0
- package/dist/cjs/helpers/ThemeManager.test.js.map +7 -0
- package/dist/cjs/helpers/expandStyles.js +12 -2
- package/dist/cjs/helpers/expandStyles.js.map +3 -3
- package/dist/cjs/helpers/getSplitStyles.js +15 -20
- package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
- package/dist/cjs/helpers/getStylesAtomic.native.js +5 -8
- package/dist/cjs/helpers/getStylesAtomic.native.js.map +2 -2
- package/dist/cjs/helpers/normalizeColor.js +5 -5
- package/dist/cjs/helpers/normalizeColor.js.map +3 -3
- package/dist/cjs/helpers/useShallowSetState.js +14 -15
- package/dist/cjs/helpers/useShallowSetState.js.map +2 -2
- package/dist/cjs/hooks/useMedia.js +12 -13
- package/dist/cjs/hooks/useMedia.js.map +2 -2
- package/dist/cjs/hooks/useTheme.js +21 -17
- package/dist/cjs/hooks/useTheme.js.map +2 -2
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/setupReactNative.js +8 -9
- package/dist/cjs/setupReactNative.js.map +2 -2
- package/dist/cjs/styled.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/views/Stack.web.test.js +22 -0
- package/dist/cjs/views/Stack.web.test.js.map +7 -0
- package/dist/esm/config.js +2 -2
- package/dist/esm/config.js.map +2 -2
- package/dist/esm/config.mjs +2 -2
- package/dist/esm/config.mjs.map +2 -2
- package/dist/esm/createComponent.js +1 -1
- package/dist/esm/createComponent.js.map +2 -2
- package/dist/esm/createComponent.mjs +1 -1
- package/dist/esm/createComponent.mjs.map +2 -2
- package/dist/esm/createFont.web.test.js +124 -0
- package/dist/esm/createFont.web.test.js.map +7 -0
- package/dist/esm/createFont.web.test.mjs +124 -0
- package/dist/esm/createFont.web.test.mjs.map +7 -0
- package/dist/esm/createTamagui.js +1 -3
- package/dist/esm/createTamagui.js.map +2 -2
- package/dist/esm/createTamagui.mjs +1 -3
- package/dist/esm/createTamagui.mjs.map +2 -2
- package/dist/esm/createTokens.web.test.js +27 -0
- package/dist/esm/createTokens.web.test.js.map +7 -0
- package/dist/esm/createTokens.web.test.mjs +27 -0
- package/dist/esm/createTokens.web.test.mjs.map +7 -0
- package/dist/esm/createVariable.js.map +1 -1
- package/dist/esm/createVariable.mjs.map +1 -1
- package/dist/esm/createVariable.web.test.js +6 -0
- package/dist/esm/createVariable.web.test.js.map +7 -0
- package/dist/esm/createVariable.web.test.mjs +6 -0
- package/dist/esm/createVariable.web.test.mjs.map +7 -0
- package/dist/esm/helpers/ThemeManager.test.js +464 -0
- package/dist/esm/helpers/ThemeManager.test.js.map +7 -0
- package/dist/esm/helpers/ThemeManager.test.mjs +464 -0
- package/dist/esm/helpers/ThemeManager.test.mjs.map +7 -0
- package/dist/esm/helpers/expandStyles.js +1 -1
- package/dist/esm/helpers/expandStyles.js.map +2 -2
- package/dist/esm/helpers/expandStyles.mjs +1 -1
- package/dist/esm/helpers/expandStyles.mjs.map +2 -2
- package/dist/esm/helpers/getSplitStyles.js +15 -20
- package/dist/esm/helpers/getSplitStyles.js.map +2 -2
- package/dist/esm/helpers/getSplitStyles.mjs +15 -20
- package/dist/esm/helpers/getSplitStyles.mjs.map +2 -2
- package/dist/esm/helpers/getStylesAtomic.native.js +4 -6
- package/dist/esm/helpers/getStylesAtomic.native.js.map +2 -2
- package/dist/esm/helpers/getStylesAtomic.native.mjs +4 -6
- package/dist/esm/helpers/getStylesAtomic.native.mjs.map +2 -2
- package/dist/esm/helpers/normalizeColor.js +4 -4
- package/dist/esm/helpers/normalizeColor.js.map +3 -3
- package/dist/esm/helpers/normalizeColor.mjs +4 -4
- package/dist/esm/helpers/normalizeColor.mjs.map +3 -3
- package/dist/esm/helpers/useShallowSetState.js +14 -15
- package/dist/esm/helpers/useShallowSetState.js.map +2 -2
- package/dist/esm/helpers/useShallowSetState.mjs +14 -15
- package/dist/esm/helpers/useShallowSetState.mjs.map +2 -2
- package/dist/esm/hooks/useMedia.js +12 -13
- package/dist/esm/hooks/useMedia.js.map +2 -2
- package/dist/esm/hooks/useMedia.mjs +12 -13
- package/dist/esm/hooks/useMedia.mjs.map +2 -2
- package/dist/esm/hooks/useTheme.js +21 -17
- package/dist/esm/hooks/useTheme.js.map +2 -2
- package/dist/esm/hooks/useTheme.mjs +21 -17
- package/dist/esm/hooks/useTheme.mjs.map +2 -2
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/index.mjs.map +2 -2
- package/dist/esm/setupReactNative.js +8 -9
- package/dist/esm/setupReactNative.js.map +2 -2
- package/dist/esm/setupReactNative.mjs +8 -9
- package/dist/esm/setupReactNative.mjs.map +2 -2
- package/dist/esm/styled.js.map +2 -2
- package/dist/esm/styled.mjs.map +2 -2
- package/dist/esm/views/Stack.web.test.js +21 -0
- package/dist/esm/views/Stack.web.test.js.map +7 -0
- package/dist/esm/views/Stack.web.test.mjs +21 -0
- package/dist/esm/views/Stack.web.test.mjs.map +7 -0
- package/package.json +5 -5
- package/src/index.ts +0 -1
- package/types/config.d.ts.map +1 -1
- package/types/createFont.web.test.d.ts.map +1 -0
- package/types/createTamagui.d.ts.map +1 -1
- package/types/createTokens.web.test.d.ts.map +1 -0
- package/types/createVariable.d.ts.map +1 -1
- package/types/createVariable.web.test.d.ts.map +1 -0
- package/types/helpers/ThemeManager.test.d.ts.map +1 -0
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/getStylesAtomic.native.d.ts.map +1 -1
- package/types/helpers/normalizeColor.d.ts.map +1 -1
- package/types/helpers/useShallowSetState.d.ts.map +1 -1
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/hooks/useTheme.d.ts.map +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/setupReactNative.d.ts.map +1 -1
- package/types/styled.d.ts.map +1 -1
- package/types/types.d.ts.map +1 -1
- package/types/views/Stack.web.test.d.ts.map +1 -0
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
import { getDefaultTamaguiConfig } from "@tamagui/config-default-node";
|
|
2
|
+
import { beforeAll, describe, expect, test } from "vitest";
|
|
3
|
+
import { createTamagui } from "../createTamagui";
|
|
4
|
+
import { ThemeManager } from "./ThemeManager";
|
|
5
|
+
const conf = getDefaultTamaguiConfig();
|
|
6
|
+
describe("ThemeManager", () => {
|
|
7
|
+
beforeAll(() => {
|
|
8
|
+
createTamagui(conf);
|
|
9
|
+
});
|
|
10
|
+
test("Changes theme to dark", () => {
|
|
11
|
+
const manager = new ThemeManager(
|
|
12
|
+
{
|
|
13
|
+
name: "dark"
|
|
14
|
+
},
|
|
15
|
+
"root"
|
|
16
|
+
);
|
|
17
|
+
expect(manager.state.name).toBe("dark");
|
|
18
|
+
});
|
|
19
|
+
test('Given parent theme "dark" and child theme "red" to return theme "dark_red"', () => {
|
|
20
|
+
const parent = new ThemeManager(
|
|
21
|
+
{
|
|
22
|
+
name: "dark"
|
|
23
|
+
},
|
|
24
|
+
"root"
|
|
25
|
+
);
|
|
26
|
+
const child = new ThemeManager(
|
|
27
|
+
{
|
|
28
|
+
name: "red"
|
|
29
|
+
},
|
|
30
|
+
parent
|
|
31
|
+
);
|
|
32
|
+
expect(parent.state.name).toBe("dark");
|
|
33
|
+
expect(child.state.name).toBe("dark_red");
|
|
34
|
+
});
|
|
35
|
+
test('Given parent theme "dark", child theme "red_alt2" and component "Button" returns "dark_red_alt2_Button"', () => {
|
|
36
|
+
const parent = new ThemeManager(
|
|
37
|
+
{
|
|
38
|
+
name: "dark"
|
|
39
|
+
},
|
|
40
|
+
"root"
|
|
41
|
+
);
|
|
42
|
+
const child1 = new ThemeManager(
|
|
43
|
+
{
|
|
44
|
+
name: "red"
|
|
45
|
+
},
|
|
46
|
+
parent
|
|
47
|
+
);
|
|
48
|
+
expect(child1.state.name).toBe("dark_red");
|
|
49
|
+
const child2 = new ThemeManager(
|
|
50
|
+
{
|
|
51
|
+
name: "alt2",
|
|
52
|
+
componentName: "Button"
|
|
53
|
+
},
|
|
54
|
+
child1
|
|
55
|
+
);
|
|
56
|
+
expect(child2.state.name).toBe("dark_red_alt2_Button");
|
|
57
|
+
});
|
|
58
|
+
test('Given parent theme "dark", child theme "red" and component "Button" returns "dark_red_Button"', () => {
|
|
59
|
+
const parent = new ThemeManager(
|
|
60
|
+
{
|
|
61
|
+
name: "dark"
|
|
62
|
+
},
|
|
63
|
+
"root"
|
|
64
|
+
);
|
|
65
|
+
const child1 = new ThemeManager(
|
|
66
|
+
{
|
|
67
|
+
name: "red"
|
|
68
|
+
},
|
|
69
|
+
parent
|
|
70
|
+
);
|
|
71
|
+
expect(child1.state.name).toBe("dark_red");
|
|
72
|
+
const child2 = new ThemeManager(
|
|
73
|
+
{
|
|
74
|
+
componentName: "Button"
|
|
75
|
+
},
|
|
76
|
+
child1
|
|
77
|
+
);
|
|
78
|
+
expect(child2.state.name).toBe("dark_red_Button");
|
|
79
|
+
});
|
|
80
|
+
test('Given parent theme "dark", child theme "red" and missing component "Card" returns "dark_red"', () => {
|
|
81
|
+
const parent = new ThemeManager(
|
|
82
|
+
{
|
|
83
|
+
name: "dark"
|
|
84
|
+
},
|
|
85
|
+
"root"
|
|
86
|
+
);
|
|
87
|
+
const child1 = new ThemeManager(
|
|
88
|
+
{
|
|
89
|
+
name: "red"
|
|
90
|
+
},
|
|
91
|
+
parent
|
|
92
|
+
);
|
|
93
|
+
expect(child1.state.name).toBe("dark_red");
|
|
94
|
+
const child2 = new ThemeManager(
|
|
95
|
+
{
|
|
96
|
+
componentName: "Card"
|
|
97
|
+
},
|
|
98
|
+
child1
|
|
99
|
+
);
|
|
100
|
+
expect(child2.state.name).toBe("dark_red");
|
|
101
|
+
});
|
|
102
|
+
test('Changes "light" to "dark"', () => {
|
|
103
|
+
const parent = new ThemeManager(
|
|
104
|
+
{
|
|
105
|
+
name: "light"
|
|
106
|
+
},
|
|
107
|
+
"root"
|
|
108
|
+
);
|
|
109
|
+
const child = new ThemeManager(
|
|
110
|
+
{
|
|
111
|
+
name: "dark"
|
|
112
|
+
},
|
|
113
|
+
parent
|
|
114
|
+
);
|
|
115
|
+
expect(parent.state.name).toBe("light");
|
|
116
|
+
expect(child.state.name).toBe("dark");
|
|
117
|
+
});
|
|
118
|
+
test('Inverts "light" to "dark"', () => {
|
|
119
|
+
const parent = new ThemeManager(
|
|
120
|
+
{
|
|
121
|
+
name: "light"
|
|
122
|
+
},
|
|
123
|
+
"root"
|
|
124
|
+
);
|
|
125
|
+
const child1 = new ThemeManager(
|
|
126
|
+
{
|
|
127
|
+
inverse: true
|
|
128
|
+
},
|
|
129
|
+
parent
|
|
130
|
+
);
|
|
131
|
+
expect(child1.state.name).toBe("dark");
|
|
132
|
+
});
|
|
133
|
+
test('Inverts "light_red" to "dark_red"', () => {
|
|
134
|
+
const parent = new ThemeManager(
|
|
135
|
+
{
|
|
136
|
+
name: "light"
|
|
137
|
+
},
|
|
138
|
+
"root"
|
|
139
|
+
);
|
|
140
|
+
const child1 = new ThemeManager(
|
|
141
|
+
{
|
|
142
|
+
name: "red",
|
|
143
|
+
inverse: true
|
|
144
|
+
},
|
|
145
|
+
parent
|
|
146
|
+
);
|
|
147
|
+
expect(child1.state.name).toBe("dark_red");
|
|
148
|
+
});
|
|
149
|
+
test("Updates state", () => {
|
|
150
|
+
const parent = new ThemeManager(
|
|
151
|
+
{
|
|
152
|
+
name: "light"
|
|
153
|
+
},
|
|
154
|
+
"root"
|
|
155
|
+
);
|
|
156
|
+
const newState = parent.updateState({
|
|
157
|
+
name: "dark"
|
|
158
|
+
});
|
|
159
|
+
expect(newState).toMatchInlineSnapshot(`
|
|
160
|
+
{
|
|
161
|
+
"className": "t_dark",
|
|
162
|
+
"name": "dark",
|
|
163
|
+
"parentName": "",
|
|
164
|
+
"theme": {
|
|
165
|
+
"background": {
|
|
166
|
+
"isVar": true,
|
|
167
|
+
"key": "color-2",
|
|
168
|
+
"name": "background",
|
|
169
|
+
"val": "#000",
|
|
170
|
+
"variable": "",
|
|
171
|
+
},
|
|
172
|
+
"color": {
|
|
173
|
+
"isVar": true,
|
|
174
|
+
"key": "color-1",
|
|
175
|
+
"name": "color",
|
|
176
|
+
"val": "#fff",
|
|
177
|
+
"variable": "",
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
}
|
|
181
|
+
`);
|
|
182
|
+
expect(parent.state.name).toBe("dark");
|
|
183
|
+
});
|
|
184
|
+
test("Returns parent on empty", () => {
|
|
185
|
+
const parent = new ThemeManager(
|
|
186
|
+
{
|
|
187
|
+
name: "light"
|
|
188
|
+
},
|
|
189
|
+
"root"
|
|
190
|
+
);
|
|
191
|
+
const child = new ThemeManager(
|
|
192
|
+
{
|
|
193
|
+
name: null
|
|
194
|
+
},
|
|
195
|
+
parent
|
|
196
|
+
);
|
|
197
|
+
expect(child).toBe(parent);
|
|
198
|
+
});
|
|
199
|
+
test("Resets theme", () => {
|
|
200
|
+
const parent = new ThemeManager(
|
|
201
|
+
{
|
|
202
|
+
name: "light"
|
|
203
|
+
},
|
|
204
|
+
"root"
|
|
205
|
+
);
|
|
206
|
+
const child = new ThemeManager(
|
|
207
|
+
{
|
|
208
|
+
name: "dark"
|
|
209
|
+
},
|
|
210
|
+
parent
|
|
211
|
+
);
|
|
212
|
+
expect(child.state.name).toBe("dark");
|
|
213
|
+
expect(child.parentManager).toBe(parent);
|
|
214
|
+
const child2 = new ThemeManager(
|
|
215
|
+
{
|
|
216
|
+
reset: true
|
|
217
|
+
},
|
|
218
|
+
child
|
|
219
|
+
);
|
|
220
|
+
expect(child2.parentManager).toBe(child);
|
|
221
|
+
expect(child2.state.name).toBe("light");
|
|
222
|
+
});
|
|
223
|
+
test("Nested invert and reset", () => {
|
|
224
|
+
const parent = new ThemeManager(
|
|
225
|
+
{
|
|
226
|
+
name: "light"
|
|
227
|
+
},
|
|
228
|
+
"root"
|
|
229
|
+
);
|
|
230
|
+
const child = new ThemeManager(
|
|
231
|
+
{
|
|
232
|
+
name: "dark"
|
|
233
|
+
},
|
|
234
|
+
parent
|
|
235
|
+
);
|
|
236
|
+
const child2 = new ThemeManager(
|
|
237
|
+
{
|
|
238
|
+
reset: true
|
|
239
|
+
},
|
|
240
|
+
child
|
|
241
|
+
);
|
|
242
|
+
const child3 = new ThemeManager(
|
|
243
|
+
{
|
|
244
|
+
inverse: true
|
|
245
|
+
},
|
|
246
|
+
child2
|
|
247
|
+
);
|
|
248
|
+
expect(child3.state.name).toBe("dark");
|
|
249
|
+
});
|
|
250
|
+
test("Updates from null the new theme nested 3 themes", () => {
|
|
251
|
+
const a = new ThemeManager(
|
|
252
|
+
{
|
|
253
|
+
name: "dark"
|
|
254
|
+
},
|
|
255
|
+
"root"
|
|
256
|
+
);
|
|
257
|
+
const b = new ThemeManager(
|
|
258
|
+
{
|
|
259
|
+
name: "red"
|
|
260
|
+
},
|
|
261
|
+
a
|
|
262
|
+
);
|
|
263
|
+
expect(b.state.name).toBe("dark_red");
|
|
264
|
+
const c = new ThemeManager(
|
|
265
|
+
{
|
|
266
|
+
name: "alt2"
|
|
267
|
+
},
|
|
268
|
+
b
|
|
269
|
+
);
|
|
270
|
+
expect(c.state.name).toBe("dark_red_alt2");
|
|
271
|
+
});
|
|
272
|
+
test("Ignored dup themes", () => {
|
|
273
|
+
const a = new ThemeManager(
|
|
274
|
+
{
|
|
275
|
+
name: "dark"
|
|
276
|
+
},
|
|
277
|
+
"root"
|
|
278
|
+
);
|
|
279
|
+
const b = new ThemeManager(
|
|
280
|
+
{
|
|
281
|
+
name: "dark"
|
|
282
|
+
},
|
|
283
|
+
a
|
|
284
|
+
);
|
|
285
|
+
expect(b === a).toBe(true);
|
|
286
|
+
});
|
|
287
|
+
test("Nested component themes fallback to grandparents", () => {
|
|
288
|
+
const parent = new ThemeManager(
|
|
289
|
+
{
|
|
290
|
+
name: "dark"
|
|
291
|
+
},
|
|
292
|
+
"root"
|
|
293
|
+
);
|
|
294
|
+
const child = new ThemeManager(
|
|
295
|
+
{
|
|
296
|
+
name: "red",
|
|
297
|
+
componentName: "Button"
|
|
298
|
+
},
|
|
299
|
+
parent
|
|
300
|
+
);
|
|
301
|
+
const child2 = new ThemeManager(
|
|
302
|
+
{
|
|
303
|
+
name: "blue"
|
|
304
|
+
},
|
|
305
|
+
child
|
|
306
|
+
);
|
|
307
|
+
expect(child2.state.name).toBe("dark_blue");
|
|
308
|
+
const child3 = new ThemeManager(
|
|
309
|
+
{
|
|
310
|
+
componentName: "Button"
|
|
311
|
+
},
|
|
312
|
+
child2
|
|
313
|
+
);
|
|
314
|
+
expect(child3.state.name).toBe("dark_blue_Button");
|
|
315
|
+
});
|
|
316
|
+
test(`Component theme with sub component that doesn't exist keeps same theme`, () => {
|
|
317
|
+
const parent = new ThemeManager(
|
|
318
|
+
{
|
|
319
|
+
name: "dark"
|
|
320
|
+
},
|
|
321
|
+
"root"
|
|
322
|
+
);
|
|
323
|
+
const child = new ThemeManager(
|
|
324
|
+
{
|
|
325
|
+
name: "red",
|
|
326
|
+
componentName: "Button"
|
|
327
|
+
},
|
|
328
|
+
parent
|
|
329
|
+
);
|
|
330
|
+
const child2 = new ThemeManager(
|
|
331
|
+
{
|
|
332
|
+
componentName: "Spacer"
|
|
333
|
+
},
|
|
334
|
+
child
|
|
335
|
+
);
|
|
336
|
+
expect(child2).toBe(child);
|
|
337
|
+
});
|
|
338
|
+
test(`Doesn't find invalid parent when only passing component`, () => {
|
|
339
|
+
expect(!!conf.themes["dark_Card"]).toBeTruthy();
|
|
340
|
+
const parent = new ThemeManager(
|
|
341
|
+
{
|
|
342
|
+
name: "dark_red"
|
|
343
|
+
},
|
|
344
|
+
"root"
|
|
345
|
+
);
|
|
346
|
+
const child = new ThemeManager(
|
|
347
|
+
{
|
|
348
|
+
componentName: "Card"
|
|
349
|
+
},
|
|
350
|
+
parent
|
|
351
|
+
);
|
|
352
|
+
expect(child.state.name).toBe(parent.state.name);
|
|
353
|
+
});
|
|
354
|
+
test(`Finds sub-theme when componentName and name are passed but componentName doesn't exist`, () => {
|
|
355
|
+
const parent = new ThemeManager(
|
|
356
|
+
{
|
|
357
|
+
name: "dark"
|
|
358
|
+
},
|
|
359
|
+
"root"
|
|
360
|
+
);
|
|
361
|
+
const child = new ThemeManager(
|
|
362
|
+
{
|
|
363
|
+
name: "red",
|
|
364
|
+
componentName: "Missing"
|
|
365
|
+
},
|
|
366
|
+
parent
|
|
367
|
+
);
|
|
368
|
+
expect(child.state.name).toBe("dark_red");
|
|
369
|
+
});
|
|
370
|
+
test("Uses the full className without the light/dark prefix", () => {
|
|
371
|
+
const parent = new ThemeManager(
|
|
372
|
+
{
|
|
373
|
+
name: "dark"
|
|
374
|
+
},
|
|
375
|
+
"root"
|
|
376
|
+
);
|
|
377
|
+
const child = new ThemeManager(
|
|
378
|
+
{
|
|
379
|
+
name: "red_alt2"
|
|
380
|
+
},
|
|
381
|
+
parent
|
|
382
|
+
);
|
|
383
|
+
expect(child.state.className).toBe("t_red_alt2");
|
|
384
|
+
const child2 = new ThemeManager(
|
|
385
|
+
{
|
|
386
|
+
name: "red"
|
|
387
|
+
},
|
|
388
|
+
parent
|
|
389
|
+
);
|
|
390
|
+
const child3 = new ThemeManager(
|
|
391
|
+
{
|
|
392
|
+
name: "alt2"
|
|
393
|
+
},
|
|
394
|
+
child2
|
|
395
|
+
);
|
|
396
|
+
expect(child3.state.className).toBe("t_red_alt2");
|
|
397
|
+
});
|
|
398
|
+
test("Finds component dark_red + Button", () => {
|
|
399
|
+
const parent = new ThemeManager(
|
|
400
|
+
{
|
|
401
|
+
name: "dark_red"
|
|
402
|
+
},
|
|
403
|
+
"root"
|
|
404
|
+
);
|
|
405
|
+
const child = new ThemeManager(
|
|
406
|
+
{
|
|
407
|
+
name: "dark_red",
|
|
408
|
+
componentName: "Button"
|
|
409
|
+
},
|
|
410
|
+
parent
|
|
411
|
+
);
|
|
412
|
+
expect(child.state.className).toBe("t_red_Button");
|
|
413
|
+
expect(child.state.name).toBe("dark_red_Button");
|
|
414
|
+
});
|
|
415
|
+
test("Drops componentName if only regular name found at stronger level", () => {
|
|
416
|
+
const parent = new ThemeManager(
|
|
417
|
+
{
|
|
418
|
+
name: "dark_red"
|
|
419
|
+
},
|
|
420
|
+
"root"
|
|
421
|
+
);
|
|
422
|
+
const child = new ThemeManager(
|
|
423
|
+
{
|
|
424
|
+
name: "alt1",
|
|
425
|
+
componentName: "Button"
|
|
426
|
+
},
|
|
427
|
+
parent
|
|
428
|
+
);
|
|
429
|
+
expect(child.state.name).toBe("dark_red_alt1");
|
|
430
|
+
});
|
|
431
|
+
test("Component name + theme change when nested already", () => {
|
|
432
|
+
const parent = new ThemeManager(
|
|
433
|
+
{
|
|
434
|
+
name: "dark_red"
|
|
435
|
+
},
|
|
436
|
+
"root"
|
|
437
|
+
);
|
|
438
|
+
const child = new ThemeManager(
|
|
439
|
+
{
|
|
440
|
+
name: "yellow",
|
|
441
|
+
componentName: "Button"
|
|
442
|
+
},
|
|
443
|
+
parent
|
|
444
|
+
);
|
|
445
|
+
expect(child.state.name).toBe("dark_yellow_Button");
|
|
446
|
+
});
|
|
447
|
+
test("Component name + name finds one up when component name missing", () => {
|
|
448
|
+
const parent = new ThemeManager(
|
|
449
|
+
{
|
|
450
|
+
name: "dark_red_alt1"
|
|
451
|
+
},
|
|
452
|
+
"root"
|
|
453
|
+
);
|
|
454
|
+
const child = new ThemeManager(
|
|
455
|
+
{
|
|
456
|
+
name: "alt2",
|
|
457
|
+
componentName: "Missing"
|
|
458
|
+
},
|
|
459
|
+
parent
|
|
460
|
+
);
|
|
461
|
+
expect(child.state.name).toBe("dark_red_alt2");
|
|
462
|
+
});
|
|
463
|
+
});
|
|
464
|
+
//# sourceMappingURL=ThemeManager.test.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/helpers/ThemeManager.test.tsx"],
|
|
4
|
+
"sourcesContent": ["import { getDefaultTamaguiConfig } from '@tamagui/config-default-node'\nimport { beforeAll, describe, expect, test } from 'vitest'\n\nimport { createTamagui } from '../createTamagui'\nimport { ThemeManager } from './ThemeManager'\n\nconst conf = getDefaultTamaguiConfig()\n\ndescribe('ThemeManager', () => {\n beforeAll(() => {\n createTamagui(conf)\n })\n\n test('Changes theme to dark', () => {\n const manager = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n expect(manager.state.name).toBe('dark')\n })\n\n test('Given parent theme \"dark\" and child theme \"red\" to return theme \"dark_red\"', () => {\n const parent = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'red',\n },\n parent\n )\n expect(parent.state.name).toBe('dark')\n expect(child.state.name).toBe('dark_red')\n })\n\n test('Given parent theme \"dark\", child theme \"red_alt2\" and component \"Button\" returns \"dark_red_alt2_Button\"', () => {\n const parent = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n const child1 = new ThemeManager(\n {\n name: 'red',\n },\n parent\n )\n expect(child1.state.name).toBe('dark_red')\n const child2 = new ThemeManager(\n {\n name: 'alt2',\n componentName: 'Button',\n },\n child1\n )\n expect(child2.state.name).toBe('dark_red_alt2_Button')\n })\n\n test('Given parent theme \"dark\", child theme \"red\" and component \"Button\" returns \"dark_red_Button\"', () => {\n const parent = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n const child1 = new ThemeManager(\n {\n name: 'red',\n },\n parent\n )\n expect(child1.state.name).toBe('dark_red')\n const child2 = new ThemeManager(\n {\n componentName: 'Button',\n },\n child1\n )\n expect(child2.state.name).toBe('dark_red_Button')\n })\n\n test('Given parent theme \"dark\", child theme \"red\" and missing component \"Card\" returns \"dark_red\"', () => {\n const parent = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n const child1 = new ThemeManager(\n {\n name: 'red',\n },\n parent\n )\n expect(child1.state.name).toBe('dark_red')\n const child2 = new ThemeManager(\n {\n componentName: 'Card',\n },\n child1\n )\n expect(child2.state.name).toBe('dark_red')\n })\n\n test('Changes \"light\" to \"dark\"', () => {\n const parent = new ThemeManager(\n {\n name: 'light',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'dark',\n },\n parent\n )\n expect(parent.state.name).toBe('light')\n expect(child.state.name).toBe('dark')\n })\n\n test('Inverts \"light\" to \"dark\"', () => {\n const parent = new ThemeManager(\n {\n name: 'light',\n },\n 'root'\n )\n const child1 = new ThemeManager(\n {\n inverse: true,\n },\n parent\n )\n expect(child1.state.name).toBe('dark')\n })\n\n test('Inverts \"light_red\" to \"dark_red\"', () => {\n const parent = new ThemeManager(\n {\n name: 'light',\n },\n 'root'\n )\n const child1 = new ThemeManager(\n {\n name: 'red',\n inverse: true,\n },\n parent\n )\n expect(child1.state.name).toBe('dark_red')\n })\n\n test('Updates state', () => {\n const parent = new ThemeManager(\n {\n name: 'light',\n },\n 'root'\n )\n const newState = parent.updateState({\n name: 'dark',\n })\n expect(newState).toMatchInlineSnapshot(`\n {\n \"className\": \"t_dark\",\n \"name\": \"dark\",\n \"parentName\": \"\",\n \"theme\": {\n \"background\": {\n \"isVar\": true,\n \"key\": \"color-2\",\n \"name\": \"background\",\n \"val\": \"#000\",\n \"variable\": \"\",\n },\n \"color\": {\n \"isVar\": true,\n \"key\": \"color-1\",\n \"name\": \"color\",\n \"val\": \"#fff\",\n \"variable\": \"\",\n },\n },\n }\n `)\n expect(parent.state.name).toBe('dark')\n })\n\n test('Returns parent on empty', () => {\n const parent = new ThemeManager(\n {\n name: 'light',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: null,\n },\n parent\n )\n expect(child).toBe(parent)\n })\n\n test('Resets theme', () => {\n const parent = new ThemeManager(\n {\n name: 'light',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'dark',\n },\n parent\n )\n expect(child.state.name).toBe('dark')\n expect(child.parentManager).toBe(parent)\n const child2 = new ThemeManager(\n {\n reset: true,\n },\n child\n )\n expect(child2.parentManager).toBe(child)\n expect(child2.state.name).toBe('light')\n })\n\n test('Nested invert and reset', () => {\n const parent = new ThemeManager(\n {\n name: 'light',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'dark',\n },\n parent\n )\n const child2 = new ThemeManager(\n {\n reset: true,\n },\n child\n )\n const child3 = new ThemeManager(\n {\n inverse: true,\n },\n child2\n )\n expect(child3.state.name).toBe('dark')\n })\n\n test('Updates from null the new theme nested 3 themes', () => {\n const a = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n const b = new ThemeManager(\n {\n name: 'red',\n },\n a\n )\n expect(b.state.name).toBe('dark_red')\n const c = new ThemeManager(\n {\n name: 'alt2',\n },\n b\n )\n expect(c.state.name).toBe('dark_red_alt2')\n })\n\n test('Ignored dup themes', () => {\n const a = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n const b = new ThemeManager(\n {\n name: 'dark',\n },\n a\n )\n expect(b === a).toBe(true)\n })\n\n test('Nested component themes fallback to grandparents', () => {\n const parent = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'red',\n componentName: 'Button',\n },\n parent\n )\n const child2 = new ThemeManager(\n {\n name: 'blue',\n },\n child\n )\n expect(child2.state.name).toBe('dark_blue')\n const child3 = new ThemeManager(\n {\n componentName: 'Button',\n },\n child2\n )\n expect(child3.state.name).toBe('dark_blue_Button')\n })\n\n test(`Component theme with sub component that doesn't exist keeps same theme`, () => {\n const parent = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'red',\n componentName: 'Button',\n },\n parent\n )\n const child2 = new ThemeManager(\n {\n componentName: 'Spacer',\n },\n child\n )\n expect(child2).toBe(child)\n })\n\n test(`Doesn't find invalid parent when only passing component`, () => {\n expect(!!conf.themes['dark_Card']).toBeTruthy()\n\n const parent = new ThemeManager(\n {\n name: 'dark_red',\n },\n 'root'\n )\n\n const child = new ThemeManager(\n {\n componentName: 'Card',\n },\n parent\n )\n\n // dont find dark_Card because dark_red is highest it should climb\n expect(child.state.name).toBe(parent.state.name)\n })\n\n test(`Finds sub-theme when componentName and name are passed but componentName doesn't exist`, () => {\n const parent = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n\n const child = new ThemeManager(\n {\n name: 'red',\n componentName: 'Missing',\n },\n parent\n )\n\n // dont find dark_Card because dark_red is highest it should climb\n expect(child.state.name).toBe('dark_red')\n })\n\n test('Uses the full className without the light/dark prefix', () => {\n const parent = new ThemeManager(\n {\n name: 'dark',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'red_alt2',\n },\n parent\n )\n expect(child.state.className).toBe('t_red_alt2')\n\n const child2 = new ThemeManager(\n {\n name: 'red',\n },\n parent\n )\n const child3 = new ThemeManager(\n {\n name: 'alt2',\n },\n child2\n )\n expect(child3.state.className).toBe('t_red_alt2')\n })\n\n test('Finds component dark_red + Button', () => {\n const parent = new ThemeManager(\n {\n name: 'dark_red',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'dark_red',\n componentName: 'Button',\n },\n parent\n )\n expect(child.state.className).toBe('t_red_Button')\n expect(child.state.name).toBe('dark_red_Button')\n })\n\n test('Drops componentName if only regular name found at stronger level', () => {\n const parent = new ThemeManager(\n {\n name: 'dark_red',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'alt1',\n componentName: 'Button',\n },\n parent\n )\n expect(child.state.name).toBe('dark_red_alt1')\n })\n\n test('Component name + theme change when nested already', () => {\n const parent = new ThemeManager(\n {\n name: 'dark_red',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'yellow',\n componentName: 'Button',\n },\n parent\n )\n expect(child.state.name).toBe('dark_yellow_Button')\n })\n\n test('Component name + name finds one up when component name missing', () => {\n const parent = new ThemeManager(\n {\n name: 'dark_red_alt1',\n },\n 'root'\n )\n const child = new ThemeManager(\n {\n name: 'alt2',\n componentName: 'Missing',\n },\n parent\n )\n expect(child.state.name).toBe('dark_red_alt2')\n })\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isWeb } from "@tamagui/constants";
|
|
2
|
-
import
|
|
2
|
+
import normalizeCSSColor from "@tamagui/normalize-css-color";
|
|
3
3
|
import { getConfig } from "../config";
|
|
4
4
|
import { expandStyle } from "./expandStyle";
|
|
5
5
|
import { normalizeColor, rgba } from "./normalizeColor";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/expandStyles.ts"],
|
|
4
|
-
"sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport
|
|
5
|
-
"mappings": "AAAA,SAAS,aAAa;AACtB,
|
|
4
|
+
"sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport normalizeCSSColor from '@tamagui/normalize-css-color'\n\nimport { getConfig } from '../config'\nimport { expandStyle } from './expandStyle'\nimport { normalizeColor, rgba } from './normalizeColor'\nimport { normalizeValueWithProperty } from './normalizeValueWithProperty.js'\nimport { pseudoDescriptors } from './pseudoDescriptors'\n\nlet shorthands: Record<string, string> | null = null\nexport const defaultOffset = { height: 0, width: 0 }\n\n/**\n * This is what you want to run before Object.assign() a style onto another.\n * It does the following:\n * 1. Turns user shorthands into longhands, ie px = paddingHorizontal\n * 2. Normalizes various inconsistent styles to be more consistent\n * 3. Expands react-native shorthands, ie paddingHorizontal => paddingLeft, paddingRight\n */\n\nexport function expandStyles(style: Record<string, any>, config = getConfig()) {\n const res: Record<string, any> = {}\n\n for (let key in style) {\n shorthands = shorthands || (config ? config.shorthands : null)\n if (shorthands) {\n key = shorthands[key] || key\n }\n if (key in pseudoDescriptors) {\n res[key] = expandStyles(style[key])\n continue\n }\n const val = normalizeValueWithProperty(style[key], key)\n // expand react-native shorthands\n const out = expandStyle(key, val)\n if (out) {\n Object.assign(res, Object.fromEntries(out))\n } else {\n res[key] = val\n }\n }\n\n fixStyles(res)\n\n return res\n}\n\nexport function fixStyles(style: Record<string, any>) {\n if (style.shadowRadius) {\n Object.assign(style, normalizeShadow(style))\n }\n\n // ensure border style set by default to solid\n for (const key in borderDefaults) {\n if (style[key] && !style[borderDefaults[key]]) {\n style[borderDefaults[key]] = 'solid'\n }\n }\n}\n\nconst borderDefaults = {\n borderWidth: 'borderStyle',\n borderBottomWidth: 'borderBottomStyle',\n borderTopWidth: 'borderTopStyle',\n borderLeftWidth: 'borderLeftStyle',\n borderRightWidth: 'borderRightStyle',\n}\n\nfunction normalizeShadow({\n shadowColor,\n shadowOffset,\n shadowOpacity,\n shadowRadius,\n}: Record<string, any>) {\n const { height, width } = shadowOffset || defaultOffset\n const colorStr = String(shadowColor || 'black')\n return {\n shadowOffset: {\n width: normalizeValueWithProperty(width || 0),\n height: normalizeValueWithProperty(height || 0),\n },\n shadowRadius: normalizeValueWithProperty(shadowRadius || 0),\n ...(isWeb && {\n shadowColor: normalizeColor(colorStr, shadowOpacity),\n }),\n ...(process.env.TAMAGUI_TARGET === 'native' &&\n (() => {\n // on native fix bug - shadows behave better if turned into non-alpha rgb() + shadowOpacity\n const val = normalizeCSSColor(colorStr)\n if (!val) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No rgba form', colorStr)\n }\n return {\n shadowColor,\n shadowOpacity,\n }\n }\n const { r, g, b, a } = rgba(val)\n return {\n shadowColor: `rgb(${r},${g},${b})`,\n shadowOpacity: shadowOpacity ?? a,\n }\n })()),\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,aAAa;AACtB,OAAO,uBAAuB;AAE9B,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB,YAAY;AACrC,SAAS,kCAAkC;AAC3C,SAAS,yBAAyB;AAElC,IAAI,aAA4C;AACzC,MAAM,gBAAgB,EAAE,QAAQ,GAAG,OAAO,EAAE;AAU5C,SAAS,aAAa,OAA4B,SAAS,UAAU,GAAG;AAC7E,QAAM,MAA2B,CAAC;AAElC,WAAS,OAAO,OAAO;AACrB,iBAAa,eAAe,SAAS,OAAO,aAAa;AACzD,QAAI,YAAY;AACd,YAAM,WAAW,GAAG,KAAK;AAAA,IAC3B;AACA,QAAI,OAAO,mBAAmB;AAC5B,UAAI,GAAG,IAAI,aAAa,MAAM,GAAG,CAAC;AAClC;AAAA,IACF;AACA,UAAM,MAAM,2BAA2B,MAAM,GAAG,GAAG,GAAG;AAEtD,UAAM,MAAM,YAAY,KAAK,GAAG;AAChC,QAAI,KAAK;AACP,aAAO,OAAO,KAAK,OAAO,YAAY,GAAG,CAAC;AAAA,IAC5C,OAAO;AACL,UAAI,GAAG,IAAI;AAAA,IACb;AAAA,EACF;AAEA,YAAU,GAAG;AAEb,SAAO;AACT;AAEO,SAAS,UAAU,OAA4B;AACpD,MAAI,MAAM,cAAc;AACtB,WAAO,OAAO,OAAO,gBAAgB,KAAK,CAAC;AAAA,EAC7C;AAGA,aAAW,OAAO,gBAAgB;AAChC,QAAI,MAAM,GAAG,KAAK,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG;AAC7C,YAAM,eAAe,GAAG,CAAC,IAAI;AAAA,IAC/B;AAAA,EACF;AACF;AAEA,MAAM,iBAAiB;AAAA,EACrB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,kBAAkB;AACpB;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,EAAE,QAAQ,MAAM,IAAI,gBAAgB;AAC1C,QAAM,WAAW,OAAO,eAAe,OAAO;AAC9C,SAAO;AAAA,IACL,cAAc;AAAA,MACZ,OAAO,2BAA2B,SAAS,CAAC;AAAA,MAC5C,QAAQ,2BAA2B,UAAU,CAAC;AAAA,IAChD;AAAA,IACA,cAAc,2BAA2B,gBAAgB,CAAC;AAAA,IAC1D,GAAI,SAAS;AAAA,MACX,aAAa,eAAe,UAAU,aAAa;AAAA,IACrD;AAAA,IACA,GAAI,QAAQ,IAAI,mBAAmB,aAChC,MAAM;AAEL,YAAM,MAAM,kBAAkB,QAAQ;AACtC,UAAI,CAAC,KAAK;AACR,YAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,kBAAQ,KAAK,gBAAgB,QAAQ;AAAA,QACvC;AACA,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,YAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,GAAG;AAC/B,aAAO;AAAA,QACL,aAAa,OAAO,KAAK,KAAK;AAAA,QAC9B,eAAe,iBAAiB;AAAA,MAClC;AAAA,IACF,GAAG;AAAA,EACP;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isWeb } from "@tamagui/constants";
|
|
2
|
-
import
|
|
2
|
+
import normalizeCSSColor from "@tamagui/normalize-css-color";
|
|
3
3
|
import { getConfig } from "../config";
|
|
4
4
|
import { expandStyle } from "./expandStyle";
|
|
5
5
|
import { normalizeColor, rgba } from "./normalizeColor";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/expandStyles.ts"],
|
|
4
|
-
"sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport
|
|
5
|
-
"mappings": "AAAA,SAAS,aAAa;AACtB,
|
|
4
|
+
"sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport normalizeCSSColor from '@tamagui/normalize-css-color'\n\nimport { getConfig } from '../config'\nimport { expandStyle } from './expandStyle'\nimport { normalizeColor, rgba } from './normalizeColor'\nimport { normalizeValueWithProperty } from './normalizeValueWithProperty.js'\nimport { pseudoDescriptors } from './pseudoDescriptors'\n\nlet shorthands: Record<string, string> | null = null\nexport const defaultOffset = { height: 0, width: 0 }\n\n/**\n * This is what you want to run before Object.assign() a style onto another.\n * It does the following:\n * 1. Turns user shorthands into longhands, ie px = paddingHorizontal\n * 2. Normalizes various inconsistent styles to be more consistent\n * 3. Expands react-native shorthands, ie paddingHorizontal => paddingLeft, paddingRight\n */\n\nexport function expandStyles(style: Record<string, any>, config = getConfig()) {\n const res: Record<string, any> = {}\n\n for (let key in style) {\n shorthands = shorthands || (config ? config.shorthands : null)\n if (shorthands) {\n key = shorthands[key] || key\n }\n if (key in pseudoDescriptors) {\n res[key] = expandStyles(style[key])\n continue\n }\n const val = normalizeValueWithProperty(style[key], key)\n // expand react-native shorthands\n const out = expandStyle(key, val)\n if (out) {\n Object.assign(res, Object.fromEntries(out))\n } else {\n res[key] = val\n }\n }\n\n fixStyles(res)\n\n return res\n}\n\nexport function fixStyles(style: Record<string, any>) {\n if (style.shadowRadius) {\n Object.assign(style, normalizeShadow(style))\n }\n\n // ensure border style set by default to solid\n for (const key in borderDefaults) {\n if (style[key] && !style[borderDefaults[key]]) {\n style[borderDefaults[key]] = 'solid'\n }\n }\n}\n\nconst borderDefaults = {\n borderWidth: 'borderStyle',\n borderBottomWidth: 'borderBottomStyle',\n borderTopWidth: 'borderTopStyle',\n borderLeftWidth: 'borderLeftStyle',\n borderRightWidth: 'borderRightStyle',\n}\n\nfunction normalizeShadow({\n shadowColor,\n shadowOffset,\n shadowOpacity,\n shadowRadius,\n}: Record<string, any>) {\n const { height, width } = shadowOffset || defaultOffset\n const colorStr = String(shadowColor || 'black')\n return {\n shadowOffset: {\n width: normalizeValueWithProperty(width || 0),\n height: normalizeValueWithProperty(height || 0),\n },\n shadowRadius: normalizeValueWithProperty(shadowRadius || 0),\n ...(isWeb && {\n shadowColor: normalizeColor(colorStr, shadowOpacity),\n }),\n ...(process.env.TAMAGUI_TARGET === 'native' &&\n (() => {\n // on native fix bug - shadows behave better if turned into non-alpha rgb() + shadowOpacity\n const val = normalizeCSSColor(colorStr)\n if (!val) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No rgba form', colorStr)\n }\n return {\n shadowColor,\n shadowOpacity,\n }\n }\n const { r, g, b, a } = rgba(val)\n return {\n shadowColor: `rgb(${r},${g},${b})`,\n shadowOpacity: shadowOpacity ?? a,\n }\n })()),\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,aAAa;AACtB,OAAO,uBAAuB;AAE9B,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB,YAAY;AACrC,SAAS,kCAAkC;AAC3C,SAAS,yBAAyB;AAElC,IAAI,aAA4C;AACzC,MAAM,gBAAgB,EAAE,QAAQ,GAAG,OAAO,EAAE;AAU5C,SAAS,aAAa,OAA4B,SAAS,UAAU,GAAG;AAC7E,QAAM,MAA2B,CAAC;AAElC,WAAS,OAAO,OAAO;AACrB,iBAAa,eAAe,SAAS,OAAO,aAAa;AACzD,QAAI,YAAY;AACd,YAAM,WAAW,GAAG,KAAK;AAAA,IAC3B;AACA,QAAI,OAAO,mBAAmB;AAC5B,UAAI,GAAG,IAAI,aAAa,MAAM,GAAG,CAAC;AAClC;AAAA,IACF;AACA,UAAM,MAAM,2BAA2B,MAAM,GAAG,GAAG,GAAG;AAEtD,UAAM,MAAM,YAAY,KAAK,GAAG;AAChC,QAAI,KAAK;AACP,aAAO,OAAO,KAAK,OAAO,YAAY,GAAG,CAAC;AAAA,IAC5C,OAAO;AACL,UAAI,GAAG,IAAI;AAAA,IACb;AAAA,EACF;AAEA,YAAU,GAAG;AAEb,SAAO;AACT;AAEO,SAAS,UAAU,OAA4B;AACpD,MAAI,MAAM,cAAc;AACtB,WAAO,OAAO,OAAO,gBAAgB,KAAK,CAAC;AAAA,EAC7C;AAGA,aAAW,OAAO,gBAAgB;AAChC,QAAI,MAAM,GAAG,KAAK,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG;AAC7C,YAAM,eAAe,GAAG,CAAC,IAAI;AAAA,IAC/B;AAAA,EACF;AACF;AAEA,MAAM,iBAAiB;AAAA,EACrB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,kBAAkB;AACpB;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,EAAE,QAAQ,MAAM,IAAI,gBAAgB;AAC1C,QAAM,WAAW,OAAO,eAAe,OAAO;AAC9C,SAAO;AAAA,IACL,cAAc;AAAA,MACZ,OAAO,2BAA2B,SAAS,CAAC;AAAA,MAC5C,QAAQ,2BAA2B,UAAU,CAAC;AAAA,IAChD;AAAA,IACA,cAAc,2BAA2B,gBAAgB,CAAC;AAAA,IAC1D,GAAI,SAAS;AAAA,MACX,aAAa,eAAe,UAAU,aAAa;AAAA,IACrD;AAAA,IACA,GAAI,QAAQ,IAAI,mBAAmB,aAChC,MAAM;AAEL,YAAM,MAAM,kBAAkB,QAAQ;AACtC,UAAI,CAAC,KAAK;AACR,YAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,kBAAQ,KAAK,gBAAgB,QAAQ;AAAA,QACvC;AACA,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,YAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,GAAG;AAC/B,aAAO;AAAA,QACL,aAAa,OAAO,KAAK,KAAK;AAAA,QAC9B,eAAe,iBAAiB;AAAA,MAClC;AAAA,IACF,GAAG;AAAA,EACP;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -59,6 +59,8 @@ if (process.env.TAMAGUI_TARGET === "native") {
|
|
|
59
59
|
wordWrap: true,
|
|
60
60
|
textOverflow: true,
|
|
61
61
|
textDecorationDistance: true,
|
|
62
|
+
userSelect: true,
|
|
63
|
+
selectable: true,
|
|
62
64
|
cursor: true,
|
|
63
65
|
contain: true,
|
|
64
66
|
boxSizing: true,
|
|
@@ -129,6 +131,9 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
129
131
|
if (cache.has(props)) {
|
|
130
132
|
return cache.get(props);
|
|
131
133
|
}
|
|
134
|
+
if (props.debug) {
|
|
135
|
+
console.log("props", props);
|
|
136
|
+
}
|
|
132
137
|
conf = conf || getConfig();
|
|
133
138
|
const { shorthands } = conf;
|
|
134
139
|
const {
|
|
@@ -208,22 +213,16 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
208
213
|
let keyInit = propKeys[i];
|
|
209
214
|
if (keyInit === "className")
|
|
210
215
|
continue;
|
|
211
|
-
|
|
216
|
+
const valInit = props[keyInit];
|
|
212
217
|
if (keyInit in shorthands) {
|
|
213
218
|
keyInit = shorthands[keyInit];
|
|
214
219
|
}
|
|
215
|
-
if (process.env.TAMAGUI_TARGET === "native") {
|
|
216
|
-
if (keyInit === "userSelect") {
|
|
217
|
-
keyInit = "selectable";
|
|
218
|
-
valInit = valInit === "none" ? false : true;
|
|
219
|
-
} else if (keyInit.startsWith("data-") || keyInit.startsWith("aria-")) {
|
|
220
|
-
continue;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
220
|
if (keyInit in usedKeys)
|
|
224
221
|
continue;
|
|
225
222
|
if (keyInit in skipProps)
|
|
226
223
|
continue;
|
|
224
|
+
if (!isWeb && keyInit.startsWith("data-"))
|
|
225
|
+
continue;
|
|
227
226
|
if (typeof valInit === "string" && valInit[0] === "_") {
|
|
228
227
|
if (keyInit in validStyleProps || keyInit.includes("-")) {
|
|
229
228
|
if (shouldDoClasses) {
|
|
@@ -241,8 +240,7 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
241
240
|
}
|
|
242
241
|
continue;
|
|
243
242
|
}
|
|
244
|
-
|
|
245
|
-
if (isMainStyle || keyInit.startsWith("_style")) {
|
|
243
|
+
if (keyInit === "style" || keyInit.startsWith("_style")) {
|
|
246
244
|
if (!valInit)
|
|
247
245
|
continue;
|
|
248
246
|
const styles = Array.isArray(valInit) ? valInit : [valInit];
|
|
@@ -252,9 +250,8 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
252
250
|
if (!cur)
|
|
253
251
|
continue;
|
|
254
252
|
for (const key in cur) {
|
|
255
|
-
if (
|
|
253
|
+
if (usedKeys[key])
|
|
256
254
|
continue;
|
|
257
|
-
}
|
|
258
255
|
usedKeys[key] = 1;
|
|
259
256
|
style[key] = cur[key];
|
|
260
257
|
}
|
|
@@ -576,12 +573,10 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
576
573
|
}
|
|
577
574
|
continue;
|
|
578
575
|
}
|
|
579
|
-
if (
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
continue;
|
|
584
|
-
}
|
|
576
|
+
if (!isWeb && key === "pointerEvents") {
|
|
577
|
+
usedKeys[key] = 1;
|
|
578
|
+
viewProps[key] = val;
|
|
579
|
+
continue;
|
|
585
580
|
}
|
|
586
581
|
if (key === "fontFamily" && !fontFamily && valInit && val) {
|
|
587
582
|
fontFamily = valInit[0] === "$" ? valInit : val;
|
|
@@ -659,7 +654,7 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
659
654
|
for (const atomicStyle of atomic) {
|
|
660
655
|
const key = atomicStyle.property;
|
|
661
656
|
if (props.animateOnly && props.animateOnly.includes(key)) {
|
|
662
|
-
retainedStyles[key] =
|
|
657
|
+
retainedStyles[key] = style[key];
|
|
663
658
|
} else {
|
|
664
659
|
addStyleToInsertRules(rulesToInsert, atomicStyle);
|
|
665
660
|
mergeClassName(transforms, classNames, key, atomicStyle.identifier);
|