@tamagui/core 1.0.1-beta.219 → 1.0.1-beta.221

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 (302) hide show
  1. package/dist/cjs/addTheme.js +7 -10
  2. package/dist/cjs/addTheme.js.map +3 -3
  3. package/dist/cjs/config.js +8 -4
  4. package/dist/cjs/config.js.map +2 -2
  5. package/dist/cjs/{hooks/useUnmountEffect.js → contexts/ButtonNestingContext.js} +7 -9
  6. package/dist/cjs/contexts/ButtonNestingContext.js.map +7 -0
  7. package/dist/cjs/createComponent.js +63 -67
  8. package/dist/cjs/createComponent.js.map +3 -3
  9. package/dist/cjs/createFont.js +11 -4
  10. package/dist/cjs/createFont.js.map +2 -2
  11. package/dist/cjs/createFont.test.js +125 -0
  12. package/dist/cjs/createFont.test.js.map +7 -0
  13. package/dist/cjs/createTamagui.js +13 -12
  14. package/dist/cjs/createTamagui.js.map +2 -2
  15. package/dist/cjs/createTokens.js.map +2 -2
  16. package/dist/cjs/createTokens.test.js +27 -0
  17. package/dist/cjs/createTokens.test.js.map +7 -0
  18. package/dist/cjs/createVariable.js +4 -9
  19. package/dist/cjs/createVariable.js.map +2 -2
  20. package/dist/cjs/createVariable.test.js +7 -0
  21. package/dist/cjs/createVariable.test.js.map +7 -0
  22. package/dist/cjs/createVariables.js +6 -7
  23. package/dist/cjs/createVariables.js.map +2 -2
  24. package/dist/cjs/helpers/ThemeManager.js +161 -147
  25. package/dist/cjs/helpers/ThemeManager.js.map +3 -3
  26. package/dist/cjs/helpers/ThemeManager.test.js +449 -0
  27. package/dist/cjs/helpers/ThemeManager.test.js.map +7 -0
  28. package/dist/cjs/helpers/{getTokens.js → ThemeManagerContext.js} +8 -8
  29. package/dist/cjs/helpers/ThemeManagerContext.js.map +7 -0
  30. package/dist/cjs/helpers/createPropMapper.js +4 -4
  31. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  32. package/dist/cjs/helpers/extendStaticConfig.js +2 -4
  33. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  34. package/dist/cjs/helpers/{assignNativePropsToWeb.native.js → getBoundingClientRect.js} +15 -8
  35. package/dist/cjs/helpers/getBoundingClientRect.js.map +7 -0
  36. package/dist/cjs/{hooks/useConstant.js → helpers/getRect.js} +14 -17
  37. package/dist/cjs/helpers/getRect.js.map +7 -0
  38. package/dist/cjs/helpers/getSplitStyles.js +82 -87
  39. package/dist/cjs/helpers/getSplitStyles.js.map +3 -3
  40. package/dist/cjs/helpers/getStylesAtomic.native.js.map +2 -2
  41. package/dist/cjs/helpers/getThemeCSSRules.js +6 -2
  42. package/dist/cjs/helpers/getThemeCSSRules.js.map +2 -2
  43. package/dist/cjs/helpers/insertStyleRule.js +1 -1
  44. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  45. package/dist/cjs/helpers/mergeTransform.js +11 -8
  46. package/dist/cjs/helpers/mergeTransform.js.map +2 -2
  47. package/dist/cjs/helpers/pseudoDescriptors.js +1 -0
  48. package/dist/cjs/helpers/pseudoDescriptors.js.map +2 -2
  49. package/dist/cjs/helpers/themeable.js +9 -9
  50. package/dist/cjs/helpers/themeable.js.map +2 -2
  51. package/dist/cjs/hooks/useElementLayout.js +4 -12
  52. package/dist/cjs/hooks/useElementLayout.js.map +2 -2
  53. package/dist/cjs/hooks/useMedia.js +2 -1
  54. package/dist/cjs/hooks/useMedia.js.map +2 -2
  55. package/dist/cjs/hooks/useTheme.js +114 -156
  56. package/dist/cjs/hooks/useTheme.js.map +3 -3
  57. package/dist/cjs/hooks/{useIsMounted.js → useThemeName.js} +23 -14
  58. package/dist/cjs/hooks/useThemeName.js.map +7 -0
  59. package/dist/cjs/index.js +2 -5
  60. package/dist/cjs/index.js.map +2 -2
  61. package/dist/cjs/setupReactNative.js +20 -7
  62. package/dist/cjs/setupReactNative.js.map +2 -2
  63. package/dist/cjs/styled.js +2 -19
  64. package/dist/cjs/styled.js.map +2 -2
  65. package/dist/cjs/types.js.map +1 -1
  66. package/dist/cjs/updateTheme.js +9 -9
  67. package/dist/cjs/updateTheme.js.map +2 -2
  68. package/dist/cjs/views/TamaguiProvider.js +3 -3
  69. package/dist/cjs/views/TamaguiProvider.js.map +2 -2
  70. package/dist/cjs/views/Theme.js +39 -28
  71. package/dist/cjs/views/Theme.js.map +3 -3
  72. package/dist/cjs/views/ThemeInverse.js +4 -2
  73. package/dist/cjs/views/ThemeInverse.js.map +2 -2
  74. package/dist/cjs/views/ThemeProvider.js +8 -33
  75. package/dist/cjs/views/ThemeProvider.js.map +3 -3
  76. package/dist/esm/addTheme.js +7 -10
  77. package/dist/esm/addTheme.js.map +3 -3
  78. package/dist/esm/config.js +8 -3
  79. package/dist/esm/config.js.map +2 -2
  80. package/dist/esm/contexts/ButtonNestingContext.js +6 -0
  81. package/dist/esm/contexts/ButtonNestingContext.js.map +7 -0
  82. package/dist/esm/createComponent.js +65 -70
  83. package/dist/esm/createComponent.js.map +3 -3
  84. package/dist/esm/createFont.js +11 -4
  85. package/dist/esm/createFont.js.map +2 -2
  86. package/dist/esm/createFont.test.js +124 -0
  87. package/dist/esm/createFont.test.js.map +7 -0
  88. package/dist/esm/createTamagui.js +13 -12
  89. package/dist/esm/createTamagui.js.map +2 -2
  90. package/dist/esm/createTokens.js.map +2 -2
  91. package/dist/esm/createTokens.test.js +26 -0
  92. package/dist/esm/createTokens.test.js.map +7 -0
  93. package/dist/esm/createVariable.js +4 -9
  94. package/dist/esm/createVariable.js.map +2 -2
  95. package/dist/esm/createVariable.test.js +6 -0
  96. package/dist/esm/createVariable.test.js.map +7 -0
  97. package/dist/esm/createVariables.js +6 -7
  98. package/dist/esm/createVariables.js.map +2 -2
  99. package/dist/esm/helpers/ThemeManager.js +140 -144
  100. package/dist/esm/helpers/ThemeManager.js.map +3 -3
  101. package/dist/esm/helpers/ThemeManager.test.js +448 -0
  102. package/dist/esm/helpers/ThemeManager.test.js.map +7 -0
  103. package/dist/esm/helpers/ThemeManagerContext.js +6 -0
  104. package/dist/esm/helpers/ThemeManagerContext.js.map +7 -0
  105. package/dist/esm/helpers/createPropMapper.js +4 -4
  106. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  107. package/dist/esm/helpers/extendStaticConfig.js +2 -4
  108. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  109. package/dist/esm/helpers/getBoundingClientRect.js +13 -0
  110. package/dist/esm/helpers/getBoundingClientRect.js.map +7 -0
  111. package/dist/esm/helpers/getRect.js +12 -0
  112. package/dist/esm/helpers/getRect.js.map +7 -0
  113. package/dist/esm/helpers/getSplitStyles.js +90 -89
  114. package/dist/esm/helpers/getSplitStyles.js.map +3 -3
  115. package/dist/esm/helpers/getStylesAtomic.native.js.map +2 -2
  116. package/dist/esm/helpers/getThemeCSSRules.js +6 -2
  117. package/dist/esm/helpers/getThemeCSSRules.js.map +2 -2
  118. package/dist/esm/helpers/insertStyleRule.js +1 -1
  119. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  120. package/dist/esm/helpers/mergeTransform.js +8 -6
  121. package/dist/esm/helpers/mergeTransform.js.map +2 -2
  122. package/dist/esm/helpers/pseudoDescriptors.js +1 -0
  123. package/dist/esm/helpers/pseudoDescriptors.js.map +2 -2
  124. package/dist/esm/helpers/themeable.js +9 -9
  125. package/dist/esm/helpers/themeable.js.map +2 -2
  126. package/dist/esm/hooks/useElementLayout.js +2 -9
  127. package/dist/esm/hooks/useElementLayout.js.map +2 -2
  128. package/dist/esm/hooks/useMedia.js +3 -2
  129. package/dist/esm/hooks/useMedia.js.map +2 -2
  130. package/dist/esm/hooks/useTheme.js +114 -159
  131. package/dist/esm/hooks/useTheme.js.map +3 -3
  132. package/dist/esm/hooks/useThemeName.js +25 -0
  133. package/dist/esm/hooks/useThemeName.js.map +7 -0
  134. package/dist/esm/index.js +3 -5
  135. package/dist/esm/index.js.map +2 -2
  136. package/dist/esm/setupReactNative.js +18 -6
  137. package/dist/esm/setupReactNative.js.map +2 -2
  138. package/dist/esm/styled.js +3 -20
  139. package/dist/esm/styled.js.map +2 -2
  140. package/dist/esm/updateTheme.js +9 -9
  141. package/dist/esm/updateTheme.js.map +2 -2
  142. package/dist/esm/views/TamaguiProvider.js +4 -4
  143. package/dist/esm/views/TamaguiProvider.js.map +2 -2
  144. package/dist/esm/views/Theme.js +40 -29
  145. package/dist/esm/views/Theme.js.map +3 -3
  146. package/dist/esm/views/ThemeInverse.js +4 -2
  147. package/dist/esm/views/ThemeInverse.js.map +2 -2
  148. package/dist/esm/views/ThemeProvider.js +8 -27
  149. package/dist/esm/views/ThemeProvider.js.map +2 -2
  150. package/package.json +13 -13
  151. package/src/__snapshots__/createTokens.test.ts.snap +877 -0
  152. package/src/addTheme.ts +9 -12
  153. package/src/config.ts +10 -2
  154. package/src/contexts/ButtonNestingContext.tsx +3 -0
  155. package/src/createComponent.tsx +117 -108
  156. package/src/createFont.test.ts +129 -0
  157. package/src/createFont.ts +12 -5
  158. package/src/createTamagui.ts +16 -14
  159. package/src/createTokens.test.ts +29 -0
  160. package/src/createTokens.ts +1 -1
  161. package/src/createVariable.test.ts +7 -0
  162. package/src/createVariable.ts +4 -10
  163. package/src/createVariables.ts +7 -7
  164. package/src/helpers/ThemeManager.test.tsx +480 -0
  165. package/src/helpers/ThemeManager.tsx +171 -166
  166. package/src/helpers/ThemeManagerContext.tsx +5 -0
  167. package/src/helpers/createPropMapper.ts +4 -4
  168. package/src/helpers/extendStaticConfig.ts +4 -4
  169. package/src/helpers/getBoundingClientRect.tsx +7 -0
  170. package/src/helpers/getRect.tsx +8 -0
  171. package/src/helpers/getSplitStyles.tsx +98 -94
  172. package/src/helpers/getStylesAtomic.native.ts +1 -0
  173. package/src/helpers/getThemeCSSRules.ts +9 -2
  174. package/src/helpers/insertStyleRule.tsx +2 -2
  175. package/src/helpers/mergeTransform.ts +13 -6
  176. package/src/helpers/pseudoDescriptors.ts +1 -0
  177. package/src/helpers/themeable.tsx +17 -9
  178. package/src/hooks/useElementLayout.tsx +3 -8
  179. package/src/hooks/useMedia.tsx +3 -3
  180. package/src/hooks/useTheme.tsx +138 -211
  181. package/src/hooks/useThemeName.tsx +25 -0
  182. package/src/index.ts +3 -4
  183. package/src/setupReactNative.ts +16 -5
  184. package/src/styled.tsx +4 -23
  185. package/src/types.tsx +42 -17
  186. package/src/updateTheme.ts +12 -9
  187. package/src/views/TamaguiProvider.tsx +5 -5
  188. package/src/views/Theme.tsx +48 -39
  189. package/src/views/ThemeProvider.tsx +11 -33
  190. package/types/Tamagui.d.ts +1 -1
  191. package/types/addTheme.d.ts +23 -2
  192. package/types/config.d.ts +0 -1
  193. package/types/contexts/ButtonNestingContext.d.ts +3 -0
  194. package/types/createFont.test.d.ts +2 -0
  195. package/types/createTokens.test.d.ts +2 -0
  196. package/types/createVariable.d.ts +2 -2
  197. package/types/createVariable.test.d.ts +2 -0
  198. package/types/helpers/ThemeManager.d.ts +20 -30
  199. package/types/helpers/ThemeManager.test.d.ts +2 -0
  200. package/types/helpers/ThemeManagerContext.d.ts +4 -0
  201. package/types/helpers/getBoundingClientRect.d.ts +2 -0
  202. package/types/helpers/getRect.d.ts +9 -0
  203. package/types/helpers/insertStyleRule.d.ts +1 -1
  204. package/types/helpers/mergeTransform.d.ts +5 -3
  205. package/types/helpers/themeable.d.ts +3 -0
  206. package/types/hooks/useElementLayout.d.ts +0 -8
  207. package/types/hooks/useTheme.d.ts +10 -20
  208. package/types/hooks/useThemeName.d.ts +5 -0
  209. package/types/index.d.ts +3 -4
  210. package/types/setupReactNative.d.ts +4 -2
  211. package/types/types.d.ts +35 -10
  212. package/types/updateTheme.d.ts +23 -2
  213. package/types/views/Theme.d.ts +3 -4
  214. package/dist/cjs/constants/platform.js +0 -74
  215. package/dist/cjs/constants/platform.js.map +0 -7
  216. package/dist/cjs/constants/platform.native.js +0 -62
  217. package/dist/cjs/constants/platform.native.js.map +0 -7
  218. package/dist/cjs/helpers/assignNativePropsToWeb.js +0 -188
  219. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +0 -7
  220. package/dist/cjs/helpers/assignNativePropsToWeb.native.js.map +0 -7
  221. package/dist/cjs/helpers/calc.js +0 -71
  222. package/dist/cjs/helpers/calc.js.map +0 -7
  223. package/dist/cjs/helpers/getFont.js +0 -66
  224. package/dist/cjs/helpers/getFont.js.map +0 -7
  225. package/dist/cjs/helpers/getStackSize.js +0 -46
  226. package/dist/cjs/helpers/getStackSize.js.map +0 -7
  227. package/dist/cjs/helpers/getTokens.js.map +0 -7
  228. package/dist/cjs/helpers/startTransition.js +0 -36
  229. package/dist/cjs/helpers/startTransition.js.map +0 -7
  230. package/dist/cjs/helpers/validate.js +0 -2
  231. package/dist/cjs/helpers/validate.js.map +0 -7
  232. package/dist/cjs/hooks/useConstant.js.map +0 -7
  233. package/dist/cjs/hooks/useIsMounted.js.map +0 -7
  234. package/dist/cjs/hooks/usePressable.js +0 -36
  235. package/dist/cjs/hooks/usePressable.js.map +0 -7
  236. package/dist/cjs/hooks/useUnmountEffect.js.map +0 -7
  237. package/dist/cjs/injectStyles.js +0 -40
  238. package/dist/cjs/injectStyles.js.map +0 -7
  239. package/dist/cjs/react-native.js +0 -22
  240. package/dist/cjs/react-native.js.map +0 -7
  241. package/dist/esm/constants/platform.js +0 -39
  242. package/dist/esm/constants/platform.js.map +0 -7
  243. package/dist/esm/constants/platform.native.js +0 -28
  244. package/dist/esm/constants/platform.native.js.map +0 -7
  245. package/dist/esm/helpers/assignNativePropsToWeb.js +0 -164
  246. package/dist/esm/helpers/assignNativePropsToWeb.js.map +0 -7
  247. package/dist/esm/helpers/assignNativePropsToWeb.native.js +0 -6
  248. package/dist/esm/helpers/assignNativePropsToWeb.native.js.map +0 -7
  249. package/dist/esm/helpers/calc.js +0 -47
  250. package/dist/esm/helpers/calc.js.map +0 -7
  251. package/dist/esm/helpers/getFont.js +0 -42
  252. package/dist/esm/helpers/getFont.js.map +0 -7
  253. package/dist/esm/helpers/getStackSize.js +0 -22
  254. package/dist/esm/helpers/getStackSize.js.map +0 -7
  255. package/dist/esm/helpers/getTokens.js +0 -6
  256. package/dist/esm/helpers/getTokens.js.map +0 -7
  257. package/dist/esm/helpers/startTransition.js +0 -6
  258. package/dist/esm/helpers/startTransition.js.map +0 -7
  259. package/dist/esm/helpers/validate.js +0 -1
  260. package/dist/esm/helpers/validate.js.map +0 -7
  261. package/dist/esm/hooks/useConstant.js +0 -15
  262. package/dist/esm/hooks/useConstant.js.map +0 -7
  263. package/dist/esm/hooks/useIsMounted.js +0 -16
  264. package/dist/esm/hooks/useIsMounted.js.map +0 -7
  265. package/dist/esm/hooks/usePressable.js +0 -12
  266. package/dist/esm/hooks/usePressable.js.map +0 -7
  267. package/dist/esm/hooks/useUnmountEffect.js +0 -8
  268. package/dist/esm/hooks/useUnmountEffect.js.map +0 -7
  269. package/dist/esm/injectStyles.js +0 -16
  270. package/dist/esm/injectStyles.js.map +0 -7
  271. package/dist/esm/react-native.js +0 -3
  272. package/dist/esm/react-native.js.map +0 -7
  273. package/src/contexts/ButtonInsideButtonContext.tsx +0 -3
  274. package/src/contexts/ThemeContext.tsx +0 -5
  275. package/src/helpers/areEqualSets.tsx +0 -9
  276. package/src/views/ThemeInverse.tsx +0 -40
  277. package/src/views/ThemeReset.tsx +0 -43
  278. package/types/constants/platform.d.ts +0 -13
  279. package/types/constants/platform.native.d.ts +0 -13
  280. package/types/contexts/ButtonInsideButtonContext.d.ts +0 -3
  281. package/types/contexts/ThemeContext.d.ts +0 -7
  282. package/types/helpers/areEqualSets.d.ts +0 -2
  283. package/types/helpers/assignNativePropsToWeb.d.ts +0 -2
  284. package/types/helpers/assignNativePropsToWeb.native.d.ts +0 -2
  285. package/types/helpers/calc.d.ts +0 -1
  286. package/types/helpers/getFont.d.ts +0 -3
  287. package/types/helpers/getStackSize.d.ts +0 -8
  288. package/types/helpers/getTokens.d.ts +0 -2
  289. package/types/helpers/startTransition.d.ts +0 -3
  290. package/types/helpers/validate.d.ts +0 -1
  291. package/types/hooks/useConstant.d.ts +0 -2
  292. package/types/hooks/useIsMounted.d.ts +0 -3
  293. package/types/hooks/useMedia.test.d.ts +0 -1
  294. package/types/hooks/usePressable.d.ts +0 -3
  295. package/types/hooks/usePressablePressResponder.d.ts +0 -84
  296. package/types/hooks/useUnmountEffect.d.ts +0 -2
  297. package/types/injectStyles.d.ts +0 -7
  298. package/types/react-native.d.ts +0 -8
  299. package/types/views/AbsoluteFill.d.ts +0 -5
  300. package/types/views/AbsoluteFill.native.d.ts +0 -3
  301. package/types/views/ThemeInverse.d.ts +0 -9
  302. package/types/views/ThemeReset.d.ts +0 -4
@@ -25,22 +25,19 @@ var import_constants = require("@tamagui/constants");
25
25
  var import_config = require("./config");
26
26
  var import_getThemeCSSRules = require("./helpers/getThemeCSSRules");
27
27
  var import_themes = require("./helpers/themes");
28
- function addTheme({
29
- name: themeName,
30
- theme: themeIn,
31
- insertCSS,
32
- update
33
- }) {
28
+ function addTheme(props) {
34
29
  var _a;
35
30
  const config = (0, import_config.getConfig)();
36
31
  if (process.env.NODE_ENV === "development") {
37
32
  if (!config) {
38
- throw new Error(`Must run createTamagui once before loading theme`);
33
+ throw new Error(`No config`);
39
34
  }
40
- if (!update && config.themes[themeName]) {
41
- throw new Error(`Already defined theme "${themeName}", use updateTheme to change values`);
35
+ const theme2 = config.themes[props.name];
36
+ if (!props.update && theme2) {
37
+ return { theme: theme2 };
42
38
  }
43
39
  }
40
+ const { name: themeName, theme: themeIn, insertCSS } = props;
44
41
  const theme = { ...themeIn };
45
42
  for (const key in theme) {
46
43
  (0, import_themes.ensureThemeVariable)(theme, key);
@@ -56,7 +53,7 @@ function addTheme({
56
53
  names: [themeName],
57
54
  theme
58
55
  });
59
- const id = `tamagui_theme_style_${themeName}`;
56
+ const id = `t_theme_style_${themeName}`;
60
57
  const existing = document.querySelector(`#${id}`);
61
58
  const style = document.createElement("style");
62
59
  style.id = id;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/addTheme.ts"],
4
- "sourcesContent": ["import { isWeb } from '@tamagui/constants'\n\nimport { getConfig, updateConfig } from './config'\nimport { getThemeCSSRules } from './helpers/getThemeCSSRules'\nimport { ensureThemeVariable, proxyThemeToParents } from './helpers/themes'\nimport { ThemeDefinition, ThemeParsed } from './types'\n\nexport function addTheme({\n name: themeName,\n theme: themeIn,\n insertCSS,\n update,\n}: {\n name: string\n theme: ThemeDefinition\n insertCSS?: boolean\n update?: boolean\n}) {\n const config = getConfig()\n if (process.env.NODE_ENV === 'development') {\n if (!config) {\n throw new Error(`Must run createTamagui once before loading theme`)\n }\n if (!update && config.themes[themeName]) {\n throw new Error(`Already defined theme \"${themeName}\", use updateTheme to change values`)\n }\n }\n\n const theme = { ...themeIn } as ThemeParsed\n for (const key in theme) {\n ensureThemeVariable(theme, key)\n }\n\n const themeProxied = proxyThemeToParents(themeName, theme, config.themes)\n config.themes[themeName] = themeProxied\n\n let cssRules: string[] = []\n\n if (isWeb) {\n if (insertCSS) {\n cssRules = getThemeCSSRules({\n // @ts-ignore this works but should be fixed types\n config,\n themeName,\n names: [themeName],\n theme,\n })\n const id = `tamagui_theme_style_${themeName}`\n const existing = document.querySelector(`#${id}`)\n const style = document.createElement('style')\n style.id = id\n style.appendChild(document.createTextNode(cssRules.join('\\n')))\n document.head.appendChild(style)\n if (existing) {\n existing.parentElement?.removeChild(existing)\n }\n }\n }\n\n updateConfig('themes', { ...config.themes, [themeName]: themeProxied })\n\n // trigger updates in components\n\n return {\n theme: themeProxied,\n cssRules,\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAsB;AAEtB,oBAAwC;AACxC,8BAAiC;AACjC,oBAAyD;AAGlD,SAAS,SAAS;AAAA,EACvB,MAAM;AAAA,EACN,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAKG;AAjBH;AAkBE,QAAM,aAAS,yBAAU;AACzB,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACpE;AACA,QAAI,CAAC,UAAU,OAAO,OAAO,YAAY;AACvC,YAAM,IAAI,MAAM,0BAA0B,8CAA8C;AAAA,IAC1F;AAAA,EACF;AAEA,QAAM,QAAQ,EAAE,GAAG,QAAQ;AAC3B,aAAW,OAAO,OAAO;AACvB,2CAAoB,OAAO,GAAG;AAAA,EAChC;AAEA,QAAM,mBAAe,mCAAoB,WAAW,OAAO,OAAO,MAAM;AACxE,SAAO,OAAO,aAAa;AAE3B,MAAI,WAAqB,CAAC;AAE1B,MAAI,wBAAO;AACT,QAAI,WAAW;AACb,qBAAW,0CAAiB;AAAA,QAE1B;AAAA,QACA;AAAA,QACA,OAAO,CAAC,SAAS;AAAA,QACjB;AAAA,MACF,CAAC;AACD,YAAM,KAAK,uBAAuB;AAClC,YAAM,WAAW,SAAS,cAAc,IAAI,IAAI;AAChD,YAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,YAAM,KAAK;AACX,YAAM,YAAY,SAAS,eAAe,SAAS,KAAK,IAAI,CAAC,CAAC;AAC9D,eAAS,KAAK,YAAY,KAAK;AAC/B,UAAI,UAAU;AACZ,uBAAS,kBAAT,mBAAwB,YAAY;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAEA,kCAAa,UAAU,EAAE,GAAG,OAAO,QAAQ,CAAC,YAAY,aAAa,CAAC;AAItE,SAAO;AAAA,IACL,OAAO;AAAA,IACP;AAAA,EACF;AACF;",
6
- "names": []
4
+ "sourcesContent": ["import { isWeb } from '@tamagui/constants'\n\nimport { getConfig, updateConfig } from './config'\nimport { getThemeCSSRules } from './helpers/getThemeCSSRules'\nimport { ensureThemeVariable, proxyThemeToParents } from './helpers/themes'\nimport { ThemeDefinition, ThemeParsed } from './types'\n\nexport function addTheme(props: {\n name: string\n theme: Partial<Record<keyof ThemeDefinition, any>>\n insertCSS?: boolean\n update?: boolean\n}) {\n const config = getConfig()\n\n if (process.env.NODE_ENV === 'development') {\n if (!config) {\n throw new Error(`No config`)\n }\n const theme = config.themes[props.name]\n if (!props.update && theme) {\n return { theme }\n }\n }\n\n const { name: themeName, theme: themeIn, insertCSS } = props\n const theme = { ...themeIn } as ThemeParsed\n for (const key in theme) {\n ensureThemeVariable(theme, key)\n }\n\n const themeProxied = proxyThemeToParents(themeName, theme, config.themes)\n config.themes[themeName] = themeProxied\n\n let cssRules: string[] = []\n\n if (isWeb) {\n if (insertCSS) {\n cssRules = getThemeCSSRules({\n // @ts-ignore this works but should be fixed types\n config,\n themeName,\n names: [themeName],\n theme,\n })\n const id = `t_theme_style_${themeName}`\n const existing = document.querySelector(`#${id}`)\n const style = document.createElement('style')\n style.id = id\n style.appendChild(document.createTextNode(cssRules.join('\\n')))\n document.head.appendChild(style)\n if (existing) {\n existing.parentElement?.removeChild(existing)\n }\n }\n }\n\n updateConfig('themes', { ...config.themes, [themeName]: themeProxied })\n\n // trigger updates in components\n return {\n theme: themeProxied,\n cssRules,\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAsB;AAEtB,oBAAwC;AACxC,8BAAiC;AACjC,oBAAyD;AAGlD,SAAS,SAAS,OAKtB;AAZH;AAaE,QAAM,aAAS,yBAAU;AAEzB,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,WAAW;AAAA,IAC7B;AACA,UAAMA,SAAQ,OAAO,OAAO,MAAM;AAClC,QAAI,CAAC,MAAM,UAAUA,QAAO;AAC1B,aAAO,EAAE,OAAAA,OAAM;AAAA,IACjB;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,WAAW,OAAO,SAAS,UAAU,IAAI;AACvD,QAAM,QAAQ,EAAE,GAAG,QAAQ;AAC3B,aAAW,OAAO,OAAO;AACvB,2CAAoB,OAAO,GAAG;AAAA,EAChC;AAEA,QAAM,mBAAe,mCAAoB,WAAW,OAAO,OAAO,MAAM;AACxE,SAAO,OAAO,aAAa;AAE3B,MAAI,WAAqB,CAAC;AAE1B,MAAI,wBAAO;AACT,QAAI,WAAW;AACb,qBAAW,0CAAiB;AAAA,QAE1B;AAAA,QACA;AAAA,QACA,OAAO,CAAC,SAAS;AAAA,QACjB;AAAA,MACF,CAAC;AACD,YAAM,KAAK,iBAAiB;AAC5B,YAAM,WAAW,SAAS,cAAc,IAAI,IAAI;AAChD,YAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,YAAM,KAAK;AACX,YAAM,YAAY,SAAS,eAAe,SAAS,KAAK,IAAI,CAAC,CAAC;AAC9D,eAAS,KAAK,YAAY,KAAK;AAC/B,UAAI,UAAU;AACZ,uBAAS,kBAAT,mBAAwB,YAAY;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAEA,kCAAa,UAAU,EAAE,GAAG,OAAO,QAAQ,CAAC,YAAY,aAAa,CAAC;AAGtE,SAAO;AAAA,IACL,OAAO;AAAA,IACP;AAAA,EACF;AACF;",
6
+ "names": ["theme"]
7
7
  }
@@ -20,7 +20,6 @@ var config_exports = {};
20
20
  __export(config_exports, {
21
21
  configListeners: () => configListeners,
22
22
  getConfig: () => getConfig,
23
- getHasConfigured: () => getHasConfigured,
24
23
  getThemes: () => getThemes,
25
24
  getTokens: () => getTokens,
26
25
  onConfiguredOnce: () => onConfiguredOnce,
@@ -45,8 +44,14 @@ const setConfigFont = (name, font, fontParsed) => {
45
44
  Object.assign(conf.fonts, { [name]: font });
46
45
  Object.assign(conf.fontsParsed, { [`$${name}`]: fontParsed });
47
46
  };
48
- const getHasConfigured = () => !!conf;
49
- const getConfig = () => conf;
47
+ const getConfig = () => {
48
+ if (!conf) {
49
+ throw new Error(
50
+ process.env.NODE_ENV === "development" ? `Missing tamagui config, you either have a duplicate config, or haven't set it up. Be sure createTamagui is called before rendering.` : `Err0`
51
+ );
52
+ }
53
+ return conf;
54
+ };
50
55
  const getTokens = (prefixed) => prefixed ? conf.tokensParsed : conf.tokens;
51
56
  const useTokens = getTokens;
52
57
  const getThemes = () => conf.themes;
@@ -65,7 +70,6 @@ const updateConfig = (key, value) => {
65
70
  0 && (module.exports = {
66
71
  configListeners,
67
72
  getConfig,
68
- getHasConfigured,
69
73
  getThemes,
70
74
  getTokens,
71
75
  onConfiguredOnce,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/config.ts"],
4
- "sourcesContent": ["import { ConfigListener, TamaguiInternalConfig, ThemeParsed, Tokens } from './types'\n\nlet conf: TamaguiInternalConfig | null\n\nexport const setConfig = (next: TamaguiInternalConfig) => {\n conf = next\n if (configListeners.size) {\n configListeners.forEach((cb) => cb(next))\n }\n}\n\nexport const setConfigFont = (name: string, font: any, fontParsed: any) => {\n if (process.env.NODE_ENV === 'development') {\n if (!conf) throw new Error(`Haven't called createTamagui yet`)\n }\n Object.assign(conf!.fonts, { [name]: font })\n Object.assign(conf!.fontsParsed, { [`$${name}`]: fontParsed })\n}\n\nexport const getHasConfigured = () => !!conf\nexport const getConfig = () => conf!\nexport const getTokens = (prefixed?: boolean): Tokens =>\n prefixed ? conf!.tokensParsed : conf!.tokens\n\n/**\n * Note: this is the same as `getTokens`\n */\nexport const useTokens = getTokens\n\nexport const getThemes = () => conf!.themes\n\nexport const configListeners = new Set<ConfigListener>()\n\nexport const onConfiguredOnce = (cb: ConfigListener) => {\n if (conf) {\n cb(conf)\n } else {\n configListeners.add(cb)\n }\n}\n\nexport const updateConfig = (key: string, value: any) => {\n Object.assign(key, value)\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAI;AAEG,MAAM,YAAY,CAAC,SAAgC;AACxD,SAAO;AACP,MAAI,gBAAgB,MAAM;AACxB,oBAAgB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAAA,EAC1C;AACF;AAEO,MAAM,gBAAgB,CAAC,MAAc,MAAW,eAAoB;AACzE,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC;AAAM,YAAM,IAAI,MAAM,kCAAkC;AAAA,EAC/D;AACA,SAAO,OAAO,KAAM,OAAO,EAAE,CAAC,OAAO,KAAK,CAAC;AAC3C,SAAO,OAAO,KAAM,aAAa,EAAE,CAAC,IAAI,SAAS,WAAW,CAAC;AAC/D;AAEO,MAAM,mBAAmB,MAAM,CAAC,CAAC;AACjC,MAAM,YAAY,MAAM;AACxB,MAAM,YAAY,CAAC,aACxB,WAAW,KAAM,eAAe,KAAM;AAKjC,MAAM,YAAY;AAElB,MAAM,YAAY,MAAM,KAAM;AAE9B,MAAM,kBAAkB,oBAAI,IAAoB;AAEhD,MAAM,mBAAmB,CAAC,OAAuB;AACtD,MAAI,MAAM;AACR,OAAG,IAAI;AAAA,EACT,OAAO;AACL,oBAAgB,IAAI,EAAE;AAAA,EACxB;AACF;AAEO,MAAM,eAAe,CAAC,KAAa,UAAe;AACvD,SAAO,OAAO,KAAK,KAAK;AAC1B;",
4
+ "sourcesContent": ["import { ConfigListener, TamaguiInternalConfig, ThemeParsed, Tokens } from './types'\n\nlet conf: TamaguiInternalConfig | null\n\nexport const setConfig = (next: TamaguiInternalConfig) => {\n conf = next\n if (configListeners.size) {\n configListeners.forEach((cb) => cb(next))\n }\n}\n\nexport const setConfigFont = (name: string, font: any, fontParsed: any) => {\n if (process.env.NODE_ENV === 'development') {\n if (!conf) throw new Error(`Haven't called createTamagui yet`)\n }\n Object.assign(conf!.fonts, { [name]: font })\n Object.assign(conf!.fontsParsed, { [`$${name}`]: fontParsed })\n}\n\nexport const getConfig = () => {\n if (!conf) {\n throw new Error(\n process.env.NODE_ENV === 'development'\n ? `Missing tamagui config, you either have a duplicate config, or haven't set it up. Be sure createTamagui is called before rendering.`\n : `Err0`\n )\n }\n return conf\n}\nexport const getTokens = (prefixed?: boolean): Tokens =>\n prefixed ? conf!.tokensParsed : conf!.tokens\n\n/**\n * Note: this is the same as `getTokens`\n */\nexport const useTokens = getTokens\n\nexport const getThemes = () => conf!.themes\n\nexport const configListeners = new Set<ConfigListener>()\n\nexport const onConfiguredOnce = (cb: ConfigListener) => {\n if (conf) {\n cb(conf)\n } else {\n configListeners.add(cb)\n }\n}\n\nexport const updateConfig = (key: string, value: any) => {\n Object.assign(key, value)\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAI;AAEG,MAAM,YAAY,CAAC,SAAgC;AACxD,SAAO;AACP,MAAI,gBAAgB,MAAM;AACxB,oBAAgB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAAA,EAC1C;AACF;AAEO,MAAM,gBAAgB,CAAC,MAAc,MAAW,eAAoB;AACzE,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC;AAAM,YAAM,IAAI,MAAM,kCAAkC;AAAA,EAC/D;AACA,SAAO,OAAO,KAAM,OAAO,EAAE,CAAC,OAAO,KAAK,CAAC;AAC3C,SAAO,OAAO,KAAM,aAAa,EAAE,CAAC,IAAI,SAAS,WAAW,CAAC;AAC/D;AAEO,MAAM,YAAY,MAAM;AAC7B,MAAI,CAAC,MAAM;AACT,UAAM,IAAI;AAAA,MACR,QAAQ,IAAI,aAAa,gBACrB,wIACA;AAAA,IACN;AAAA,EACF;AACA,SAAO;AACT;AACO,MAAM,YAAY,CAAC,aACxB,WAAW,KAAM,eAAe,KAAM;AAKjC,MAAM,YAAY;AAElB,MAAM,YAAY,MAAM,KAAM;AAE9B,MAAM,kBAAkB,oBAAI,IAAoB;AAEhD,MAAM,mBAAmB,CAAC,OAAuB;AACtD,MAAI,MAAM;AACR,OAAG,IAAI;AAAA,EACT,OAAO;AACL,oBAAgB,IAAI,EAAE;AAAA,EACxB;AACF;AAEO,MAAM,eAAe,CAAC,KAAa,UAAe;AACvD,SAAO,OAAO,KAAK,KAAK;AAC1B;",
6
6
  "names": []
7
7
  }
@@ -16,17 +16,15 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var useUnmountEffect_exports = {};
20
- __export(useUnmountEffect_exports, {
21
- useUnmountEffect: () => useUnmountEffect
19
+ var ButtonNestingContext_exports = {};
20
+ __export(ButtonNestingContext_exports, {
21
+ ButtonNestingContext: () => ButtonNestingContext
22
22
  });
23
- module.exports = __toCommonJS(useUnmountEffect_exports);
23
+ module.exports = __toCommonJS(ButtonNestingContext_exports);
24
24
  var import_react = require("react");
25
- function useUnmountEffect(callback) {
26
- return (0, import_react.useEffect)(() => () => callback(), []);
27
- }
25
+ const ButtonNestingContext = (0, import_react.createContext)(false);
28
26
  // Annotate the CommonJS export names for ESM import in node:
29
27
  0 && (module.exports = {
30
- useUnmountEffect
28
+ ButtonNestingContext
31
29
  });
32
- //# sourceMappingURL=useUnmountEffect.js.map
30
+ //# sourceMappingURL=ButtonNestingContext.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/contexts/ButtonNestingContext.tsx"],
4
+ "sourcesContent": ["import { createContext } from 'react'\n\nexport const ButtonNestingContext = createContext(false)\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAEvB,MAAM,2BAAuB,4BAAc,KAAK;",
6
+ "names": []
7
+ }
@@ -36,17 +36,16 @@ var import_compose_refs = require("@tamagui/compose-refs");
36
36
  var import_constants = require("@tamagui/constants");
37
37
  var import_helpers = require("@tamagui/helpers");
38
38
  var import_react_native_use_responder_events = require("@tamagui/react-native-use-responder-events");
39
- var import_use_force_update = require("@tamagui/use-force-update");
40
39
  var import_react = __toESM(require("react"));
41
40
  var import_config = require("./config");
42
41
  var import_constants2 = require("./constants/constants");
43
42
  var import_FontLanguageContext = require("./contexts/FontLanguageContext");
44
43
  var import_TextAncestorContext = require("./contexts/TextAncestorContext");
45
44
  var import_extendStaticConfig = require("./helpers/extendStaticConfig");
45
+ var import_getRect = require("./helpers/getRect");
46
46
  var import_getSplitStyles = require("./helpers/getSplitStyles");
47
47
  var import_insertStyleRule = require("./helpers/insertStyleRule");
48
48
  var import_mergeProps = require("./helpers/mergeProps");
49
- var import_mergeTransform = require("./helpers/mergeTransform");
50
49
  var import_proxyThemeVariables = require("./helpers/proxyThemeVariables");
51
50
  var import_useShallowSetState = require("./helpers/useShallowSetState");
52
51
  var import_useElementLayout = require("./hooks/useElementLayout");
@@ -56,7 +55,6 @@ var import_useTheme = require("./hooks/useTheme");
56
55
  var import_Pressability = require("./vendor/Pressability");
57
56
  var import_Slot = require("./views/Slot");
58
57
  var import_Theme = require("./views/Theme");
59
- import_react.default["keep"];
60
58
  process.env.TAMAGUI_TARGET;
61
59
  let defaultComponentState = null;
62
60
  let defaultComponentStateMounted = null;
@@ -96,7 +94,6 @@ function createComponent(configIn, ParentComponent) {
96
94
  }
97
95
  })();
98
96
  const defaultComponentClassName = `is_${staticConfig.componentName}`;
99
- const avoidClassesWhileAnimating = true;
100
97
  let defaultNativeStyle;
101
98
  let tamaguiDefaultProps;
102
99
  let defaultTag;
@@ -112,6 +109,9 @@ function createComponent(configIn, ParentComponent) {
112
109
  const { Component, isText, isZStack } = staticConfig;
113
110
  const componentName = props.componentName || staticConfig.componentName;
114
111
  const componentClassName = props.asChild ? "" : props.componentName ? `is_${props.componentName}` : defaultComponentClassName;
112
+ const animationsConfig = tamaguiConfig.animations;
113
+ const useAnimations = animationsConfig == null ? void 0 : animationsConfig.useAnimations;
114
+ const avoidClassesWhileAnimating = animationsConfig.isReactNative;
115
115
  const hasEnterStyle = !!props.enterStyle;
116
116
  const needsMount = Boolean((import_constants.isWeb ? import_constants.isClient : true) && (hasEnterStyle || props.animation));
117
117
  const states = (0, import_useServerHooks.useServerState)(
@@ -120,15 +120,28 @@ function createComponent(configIn, ParentComponent) {
120
120
  const state = propsIn.forceStyle ? { ...states[0], [propsIn.forceStyle]: true } : states[0];
121
121
  const setState = states[1];
122
122
  const setStateShallow = (0, import_useShallowSetState.useShallowSetState)(setState, debugProp, componentName);
123
- const useAnimations = (_a = tamaguiConfig.animations) == null ? void 0 : _a.useAnimations;
124
- const hasEverAnimated = (0, import_react.useRef)(false);
123
+ const stateRef = (0, import_react.useRef)(
124
+ void 0
125
+ );
126
+ stateRef.current ?? (stateRef.current = {});
125
127
  const isAnimated = (() => {
126
128
  const next = !!(useAnimations && props.animation);
127
- if (next && !hasEverAnimated.current) {
128
- hasEverAnimated.current = true;
129
+ if (next && !stateRef.current.hasAnimated) {
130
+ stateRef.current.hasAnimated = true;
129
131
  }
130
- return next || hasEverAnimated.current;
132
+ return next || stateRef.current.hasAnimated;
131
133
  })();
134
+ const usePresence = (_a = tamaguiConfig.animations) == null ? void 0 : _a.usePresence;
135
+ const presence = !import_constants.isRSC && isAnimated ? usePresence() : null;
136
+ if (isAnimated && presence) {
137
+ const presenceState = presence[2];
138
+ if (presenceState) {
139
+ if (presenceState.enterVariant)
140
+ props[presenceState.enterVariant] = true;
141
+ if (presenceState.exitVariant)
142
+ props[presenceState.exitVariant] = true;
143
+ }
144
+ }
132
145
  const isReactNative = Boolean(
133
146
  staticConfig.isReactNative || isAnimated && tamaguiConfig.animations.isReactNative
134
147
  );
@@ -141,18 +154,22 @@ function createComponent(configIn, ParentComponent) {
141
154
  console.group(`%c ${banner}`, "background: yellow;");
142
155
  if (!import_constants.isServer) {
143
156
  console.log(`state`, state);
144
- console.groupCollapsed("props");
145
- console.log(props);
146
- console.log("order", Object.keys(props));
147
- console.groupEnd();
148
157
  }
149
158
  }
150
159
  }
151
160
  const shouldAvoidClasses = !import_constants.isWeb || !!(props.animation && avoidClassesWhileAnimating) || !staticConfig.acceptsClassName;
152
161
  const shouldForcePseudo = !!propsIn.forceStyle;
153
162
  const noClassNames = shouldAvoidClasses || shouldForcePseudo;
154
- const forceUpdate = (0, import_use_force_update.useForceUpdate)();
155
- const theme = (0, import_useTheme.useTheme)(props.theme, componentName, props, forceUpdate, !noClassNames);
163
+ const theme = (0, import_useTheme.useTheme)({
164
+ name: props.theme,
165
+ componentName,
166
+ reset: props.reset,
167
+ inverse: props.themeInverse,
168
+ disable: props["data-themeable"],
169
+ debug: props.debug
170
+ });
171
+ const themeManager = (0, import_useTheme.getThemeManager)(theme);
172
+ const themeIsNew = (0, import_useTheme.getThemeIsNewTheme)(theme);
156
173
  const shouldSetMounted = needsMount && state.unmounted;
157
174
  const setMounted = shouldSetMounted ? () => {
158
175
  setTimeout(
@@ -174,6 +191,7 @@ function createComponent(configIn, ParentComponent) {
174
191
  let elementType = isText ? (isAnimated ? AnimatedText : null) || BaseTextComponent : (isAnimated ? AnimatedView : null) || BaseViewComponent;
175
192
  elementType = Component || elementType;
176
193
  const isStringElement = typeof elementType === "string";
194
+ const isExiting = (presence == null ? void 0 : presence[0]) === false;
177
195
  const splitStyles = (0, import_getSplitStyles.useSplitStyles)(
178
196
  props,
179
197
  staticConfig,
@@ -183,7 +201,8 @@ function createComponent(configIn, ParentComponent) {
183
201
  noClassNames,
184
202
  dynamicStylesInline: noClassNames,
185
203
  hasTextAncestor,
186
- resolveVariablesAs: "value"
204
+ resolveVariablesAs: "value",
205
+ isExiting
187
206
  },
188
207
  null,
189
208
  languageContext || void 0,
@@ -221,41 +240,15 @@ function createComponent(configIn, ParentComponent) {
221
240
  const propsWithAnimation = props;
222
241
  let animationStyles;
223
242
  if (!import_constants.isRSC && isAnimated && useAnimations) {
224
- const animations = useAnimations(propsWithAnimation, {
243
+ const animations = useAnimations({
244
+ props: propsWithAnimation,
245
+ style: splitStylesStyle,
246
+ presence,
225
247
  state,
226
248
  pseudos,
227
249
  onDidAnimate: props.onDidAnimate,
228
250
  hostRef,
229
- staticConfig,
230
- getStyle({ isExiting, isEntering, exitVariant, enterVariant } = {}) {
231
- var _a2, _b2, _c2, _d2;
232
- const animationStyle = { ...defaultNativeStyle, ...splitStylesStyle };
233
- const enterStyle = isEntering ? enterVariant && ((_a2 = staticConfig.variants) == null ? void 0 : _a2[enterVariant]["true"]) ? (0, import_getSplitStyles.getSubStyle)(
234
- "",
235
- (_b2 = staticConfig.variants) == null ? void 0 : _b2[enterVariant]["true"],
236
- staticConfig,
237
- theme,
238
- props,
239
- state,
240
- tamaguiConfig
241
- ) : null : null;
242
- const exitStyle = isExiting ? exitVariant && ((_c2 = staticConfig.variants) == null ? void 0 : _c2[exitVariant]["true"]) ? (0, import_getSplitStyles.getSubStyle)(
243
- "",
244
- (_d2 = staticConfig.variants) == null ? void 0 : _d2[exitVariant]["true"],
245
- staticConfig,
246
- theme,
247
- props,
248
- state,
249
- tamaguiConfig
250
- ) : pseudos.exitStyle : null;
251
- if (isEntering && enterStyle) {
252
- merge(animationStyle, enterStyle);
253
- }
254
- if (isExiting && exitStyle) {
255
- merge(animationStyle, exitStyle);
256
- }
257
- return animationStyle;
258
- }
251
+ staticConfig
259
252
  });
260
253
  if (animations) {
261
254
  animationStyles = animations.style;
@@ -440,7 +433,7 @@ function createComponent(configIn, ParentComponent) {
440
433
  const classList = [
441
434
  componentName ? componentClassName : "",
442
435
  fontFamilyClassName,
443
- theme.className,
436
+ themeIsNew ? theme.className : "",
444
437
  classNames ? Object.values(classNames).join(" ") : ""
445
438
  ];
446
439
  const className = classList.join(" ");
@@ -573,16 +566,19 @@ function createComponent(configIn, ParentComponent) {
573
566
  let space = spaceProp;
574
567
  if (state.mediaState && mediaKeys.length) {
575
568
  for (const key in state.mediaState) {
576
- if (state.mediaState[key] && props[key] && props[key].space !== void 0) {
569
+ if (key in state.mediaState && key in props && props[key].space !== void 0) {
577
570
  space = props[key].space;
578
571
  }
579
572
  }
580
573
  }
581
- const themeManager = (0, import_useTheme.getThemeManager)(theme);
582
- const shouldSetChildrenThemeToParent = Boolean(
583
- themeShallow && themeManager && themeManager.didChangeTheme
584
- );
585
- const shouldProvideThemeManager = shouldSetChildrenThemeToParent || themeManager && themeManager.didChangeTheme;
574
+ const themeShouldReset = Boolean(themeShallow && themeManager && themeIsNew);
575
+ const shouldProvideThemeManager = themeShouldReset || themeManager && themeIsNew;
576
+ if (shouldProvideThemeManager) {
577
+ stateRef.current.hasProvidedThemeManager = true;
578
+ }
579
+ if (themeShouldReset) {
580
+ stateRef.current.themeShouldReset = true;
581
+ }
586
582
  const childEls = !children || asChild ? children : (0, import_Theme.wrapThemeManagerContext)(
587
583
  spacedChildren({
588
584
  separator,
@@ -591,8 +587,8 @@ function createComponent(configIn, ParentComponent) {
591
587
  direction: props.spaceDirection || "both",
592
588
  isZStack
593
589
  }),
594
- shouldProvideThemeManager ? themeManager : void 0,
595
- shouldSetChildrenThemeToParent
590
+ stateRef.current.hasProvidedThemeManager ? themeManager : void 0,
591
+ stateRef.current.themeShouldReset
596
592
  );
597
593
  let content;
598
594
  if (asChild) {
@@ -922,16 +918,6 @@ function mergeConfigDefaultProps(name, props, configDefaults, parentNames, conf)
922
918
  }
923
919
  return props;
924
920
  }
925
- function merge(base, next) {
926
- for (const key in next) {
927
- const val = next[key];
928
- if (key in import_helpers.stylePropsTransform) {
929
- (0, import_mergeTransform.mergeTransform)(base, key, val, true);
930
- } else {
931
- base[key] = val;
932
- }
933
- }
934
- }
935
921
  function usePlatformMethods(hostRef) {
936
922
  (0, import_constants.useIsomorphicLayoutEffect)(() => {
937
923
  const node = hostRef.current;
@@ -943,7 +929,7 @@ function usePlatformMethods(hostRef) {
943
929
  if (!node)
944
930
  return;
945
931
  setTimeout(() => {
946
- const { height, left, top, width } = (0, import_useElementLayout.getRect)(node);
932
+ const { height, left, top, width } = (0, import_getRect.getRect)(node);
947
933
  callback(left, top, width, height);
948
934
  }, 0);
949
935
  };
@@ -968,6 +954,16 @@ const dontComposePressabilityKeys = {
968
954
  function getMediaStateObject(obj) {
969
955
  return Object.fromEntries(Object.entries(obj).flatMap(([k, v]) => v ? [[`$${k}`, v]] : []));
970
956
  }
957
+ const baseDefaults = {
958
+ opacity: 1
959
+ };
960
+ const transformDefaults = {
961
+ opacity: 1,
962
+ scale: 1,
963
+ rotate: "0deg",
964
+ rotateY: "0deg",
965
+ rotateX: "0deg"
966
+ };
971
967
  // Annotate the CommonJS export names for ESM import in node:
972
968
  0 && (module.exports = {
973
969
  Spacer,