@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.
Files changed (126) hide show
  1. package/dist/cjs/config.js +2 -2
  2. package/dist/cjs/config.js.map +2 -2
  3. package/dist/cjs/createComponent.js +1 -1
  4. package/dist/cjs/createComponent.js.map +2 -2
  5. package/dist/cjs/createFont.web.test.js +125 -0
  6. package/dist/cjs/createFont.web.test.js.map +7 -0
  7. package/dist/cjs/createTamagui.js +1 -3
  8. package/dist/cjs/createTamagui.js.map +2 -2
  9. package/dist/cjs/createTokens.web.test.js +28 -0
  10. package/dist/cjs/createTokens.web.test.js.map +7 -0
  11. package/dist/cjs/createVariable.js.map +1 -1
  12. package/dist/cjs/createVariable.web.test.js +7 -0
  13. package/dist/cjs/createVariable.web.test.js.map +7 -0
  14. package/dist/cjs/helpers/ThemeManager.test.js +465 -0
  15. package/dist/cjs/helpers/ThemeManager.test.js.map +7 -0
  16. package/dist/cjs/helpers/expandStyles.js +12 -2
  17. package/dist/cjs/helpers/expandStyles.js.map +3 -3
  18. package/dist/cjs/helpers/getSplitStyles.js +15 -20
  19. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  20. package/dist/cjs/helpers/getStylesAtomic.native.js +5 -8
  21. package/dist/cjs/helpers/getStylesAtomic.native.js.map +2 -2
  22. package/dist/cjs/helpers/normalizeColor.js +5 -5
  23. package/dist/cjs/helpers/normalizeColor.js.map +3 -3
  24. package/dist/cjs/helpers/useShallowSetState.js +14 -15
  25. package/dist/cjs/helpers/useShallowSetState.js.map +2 -2
  26. package/dist/cjs/hooks/useMedia.js +12 -13
  27. package/dist/cjs/hooks/useMedia.js.map +2 -2
  28. package/dist/cjs/hooks/useTheme.js +21 -17
  29. package/dist/cjs/hooks/useTheme.js.map +2 -2
  30. package/dist/cjs/index.js.map +2 -2
  31. package/dist/cjs/setupReactNative.js +8 -9
  32. package/dist/cjs/setupReactNative.js.map +2 -2
  33. package/dist/cjs/styled.js.map +2 -2
  34. package/dist/cjs/types.js.map +1 -1
  35. package/dist/cjs/views/Stack.web.test.js +22 -0
  36. package/dist/cjs/views/Stack.web.test.js.map +7 -0
  37. package/dist/esm/config.js +2 -2
  38. package/dist/esm/config.js.map +2 -2
  39. package/dist/esm/config.mjs +2 -2
  40. package/dist/esm/config.mjs.map +2 -2
  41. package/dist/esm/createComponent.js +1 -1
  42. package/dist/esm/createComponent.js.map +2 -2
  43. package/dist/esm/createComponent.mjs +1 -1
  44. package/dist/esm/createComponent.mjs.map +2 -2
  45. package/dist/esm/createFont.web.test.js +124 -0
  46. package/dist/esm/createFont.web.test.js.map +7 -0
  47. package/dist/esm/createFont.web.test.mjs +124 -0
  48. package/dist/esm/createFont.web.test.mjs.map +7 -0
  49. package/dist/esm/createTamagui.js +1 -3
  50. package/dist/esm/createTamagui.js.map +2 -2
  51. package/dist/esm/createTamagui.mjs +1 -3
  52. package/dist/esm/createTamagui.mjs.map +2 -2
  53. package/dist/esm/createTokens.web.test.js +27 -0
  54. package/dist/esm/createTokens.web.test.js.map +7 -0
  55. package/dist/esm/createTokens.web.test.mjs +27 -0
  56. package/dist/esm/createTokens.web.test.mjs.map +7 -0
  57. package/dist/esm/createVariable.js.map +1 -1
  58. package/dist/esm/createVariable.mjs.map +1 -1
  59. package/dist/esm/createVariable.web.test.js +6 -0
  60. package/dist/esm/createVariable.web.test.js.map +7 -0
  61. package/dist/esm/createVariable.web.test.mjs +6 -0
  62. package/dist/esm/createVariable.web.test.mjs.map +7 -0
  63. package/dist/esm/helpers/ThemeManager.test.js +464 -0
  64. package/dist/esm/helpers/ThemeManager.test.js.map +7 -0
  65. package/dist/esm/helpers/ThemeManager.test.mjs +464 -0
  66. package/dist/esm/helpers/ThemeManager.test.mjs.map +7 -0
  67. package/dist/esm/helpers/expandStyles.js +1 -1
  68. package/dist/esm/helpers/expandStyles.js.map +2 -2
  69. package/dist/esm/helpers/expandStyles.mjs +1 -1
  70. package/dist/esm/helpers/expandStyles.mjs.map +2 -2
  71. package/dist/esm/helpers/getSplitStyles.js +15 -20
  72. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  73. package/dist/esm/helpers/getSplitStyles.mjs +15 -20
  74. package/dist/esm/helpers/getSplitStyles.mjs.map +2 -2
  75. package/dist/esm/helpers/getStylesAtomic.native.js +4 -6
  76. package/dist/esm/helpers/getStylesAtomic.native.js.map +2 -2
  77. package/dist/esm/helpers/getStylesAtomic.native.mjs +4 -6
  78. package/dist/esm/helpers/getStylesAtomic.native.mjs.map +2 -2
  79. package/dist/esm/helpers/normalizeColor.js +4 -4
  80. package/dist/esm/helpers/normalizeColor.js.map +3 -3
  81. package/dist/esm/helpers/normalizeColor.mjs +4 -4
  82. package/dist/esm/helpers/normalizeColor.mjs.map +3 -3
  83. package/dist/esm/helpers/useShallowSetState.js +14 -15
  84. package/dist/esm/helpers/useShallowSetState.js.map +2 -2
  85. package/dist/esm/helpers/useShallowSetState.mjs +14 -15
  86. package/dist/esm/helpers/useShallowSetState.mjs.map +2 -2
  87. package/dist/esm/hooks/useMedia.js +12 -13
  88. package/dist/esm/hooks/useMedia.js.map +2 -2
  89. package/dist/esm/hooks/useMedia.mjs +12 -13
  90. package/dist/esm/hooks/useMedia.mjs.map +2 -2
  91. package/dist/esm/hooks/useTheme.js +21 -17
  92. package/dist/esm/hooks/useTheme.js.map +2 -2
  93. package/dist/esm/hooks/useTheme.mjs +21 -17
  94. package/dist/esm/hooks/useTheme.mjs.map +2 -2
  95. package/dist/esm/index.js.map +2 -2
  96. package/dist/esm/index.mjs.map +2 -2
  97. package/dist/esm/setupReactNative.js +8 -9
  98. package/dist/esm/setupReactNative.js.map +2 -2
  99. package/dist/esm/setupReactNative.mjs +8 -9
  100. package/dist/esm/setupReactNative.mjs.map +2 -2
  101. package/dist/esm/styled.js.map +2 -2
  102. package/dist/esm/styled.mjs.map +2 -2
  103. package/dist/esm/views/Stack.web.test.js +21 -0
  104. package/dist/esm/views/Stack.web.test.js.map +7 -0
  105. package/dist/esm/views/Stack.web.test.mjs +21 -0
  106. package/dist/esm/views/Stack.web.test.mjs.map +7 -0
  107. package/package.json +5 -5
  108. package/src/index.ts +0 -1
  109. package/types/config.d.ts.map +1 -1
  110. package/types/createFont.web.test.d.ts.map +1 -0
  111. package/types/createTamagui.d.ts.map +1 -1
  112. package/types/createTokens.web.test.d.ts.map +1 -0
  113. package/types/createVariable.d.ts.map +1 -1
  114. package/types/createVariable.web.test.d.ts.map +1 -0
  115. package/types/helpers/ThemeManager.test.d.ts.map +1 -0
  116. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  117. package/types/helpers/getStylesAtomic.native.d.ts.map +1 -1
  118. package/types/helpers/normalizeColor.d.ts.map +1 -1
  119. package/types/helpers/useShallowSetState.d.ts.map +1 -1
  120. package/types/hooks/useMedia.d.ts.map +1 -1
  121. package/types/hooks/useTheme.d.ts.map +1 -1
  122. package/types/index.d.ts.map +1 -1
  123. package/types/setupReactNative.d.ts.map +1 -1
  124. package/types/styled.d.ts.map +1 -1
  125. package/types/types.d.ts.map +1 -1
  126. 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 { normalizeCSSColor } from "@tamagui/normalize-css-color";
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 { 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,SAAS,yBAAyB;AAElC,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;",
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 { normalizeCSSColor } from "@tamagui/normalize-css-color";
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 { 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,SAAS,yBAAyB;AAElC,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;",
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
- let valInit = props[keyInit];
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
- const isMainStyle = keyInit === "style";
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 (!isMainStyle && usedKeys[key]) {
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 (process.env.TAMAGUI_TARGET === "native") {
580
- if (key === "pointerEvents") {
581
- usedKeys[key] = 1;
582
- viewProps[key] = val;
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] = atomicStyle.value;
657
+ retainedStyles[key] = style[key];
663
658
  } else {
664
659
  addStyleToInsertRules(rulesToInsert, atomicStyle);
665
660
  mergeClassName(transforms, classNames, key, atomicStyle.identifier);