@tamagui/web 1.13.3 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. package/dist/cjs/Tamagui.js +1 -76
  2. package/dist/cjs/Tamagui.js.map +2 -2
  3. package/dist/cjs/addTheme.js +2 -77
  4. package/dist/cjs/addTheme.js.map +2 -2
  5. package/dist/cjs/config.js +1 -122
  6. package/dist/cjs/config.js.map +2 -2
  7. package/dist/cjs/constants/constants.js +1 -48
  8. package/dist/cjs/constants/constants.js.map +2 -2
  9. package/dist/cjs/constants/isDevTools.js +1 -36
  10. package/dist/cjs/constants/isDevTools.js.map +2 -2
  11. package/dist/cjs/contexts/AnimationDriverContext.js +1 -29
  12. package/dist/cjs/contexts/AnimationDriverContext.js.map +2 -2
  13. package/dist/cjs/contexts/ButtonNestingContext.js +1 -29
  14. package/dist/cjs/contexts/ButtonNestingContext.js.map +2 -2
  15. package/dist/cjs/contexts/FontLanguageContext.js +1 -29
  16. package/dist/cjs/contexts/FontLanguageContext.js.map +2 -2
  17. package/dist/cjs/contexts/TextAncestorContext.js +1 -29
  18. package/dist/cjs/contexts/TextAncestorContext.js.map +2 -2
  19. package/dist/cjs/createComponent.js +2 -874
  20. package/dist/cjs/createComponent.js.map +3 -3
  21. package/dist/cjs/createFont.js +1 -68
  22. package/dist/cjs/createFont.js.map +2 -2
  23. package/dist/cjs/createShorthands.js +1 -30
  24. package/dist/cjs/createShorthands.js.map +2 -2
  25. package/dist/cjs/createTamagui.js +5 -202
  26. package/dist/cjs/createTamagui.js.map +2 -2
  27. package/dist/cjs/createTheme.js +1 -30
  28. package/dist/cjs/createTheme.js.map +2 -2
  29. package/dist/cjs/createTokens.js +1 -38
  30. package/dist/cjs/createTokens.js.map +2 -2
  31. package/dist/cjs/createVariable.js +1 -110
  32. package/dist/cjs/createVariable.js.map +2 -2
  33. package/dist/cjs/createVariables.js +1 -59
  34. package/dist/cjs/createVariables.js.map +2 -2
  35. package/dist/cjs/helpers/ThemeManager.js +1 -236
  36. package/dist/cjs/helpers/ThemeManager.js.map +3 -3
  37. package/dist/cjs/helpers/ThemeManagerContext.js +1 -29
  38. package/dist/cjs/helpers/ThemeManagerContext.js.map +2 -2
  39. package/dist/cjs/helpers/createMediaStyle.js +1 -66
  40. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  41. package/dist/cjs/helpers/createPropMapper.js +2 -431
  42. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  43. package/dist/cjs/helpers/createProxy.js +2 -41
  44. package/dist/cjs/helpers/createProxy.js.map +2 -2
  45. package/dist/cjs/helpers/defaultOffset.js +1 -28
  46. package/dist/cjs/helpers/defaultOffset.js.map +2 -2
  47. package/dist/cjs/helpers/expandStyle.js +1 -85
  48. package/dist/cjs/helpers/expandStyle.js.map +2 -2
  49. package/dist/cjs/helpers/expandStyles.js +1 -76
  50. package/dist/cjs/helpers/expandStyles.js.map +2 -2
  51. package/dist/cjs/helpers/extendStaticConfig.js +1 -91
  52. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  53. package/dist/cjs/helpers/getAnimationDriver.js +1 -31
  54. package/dist/cjs/helpers/getAnimationDriver.js.map +2 -2
  55. package/dist/cjs/helpers/getExpandedShorthands.js +1 -38
  56. package/dist/cjs/helpers/getExpandedShorthands.js.map +2 -2
  57. package/dist/cjs/helpers/getFontLanguage.js +1 -28
  58. package/dist/cjs/helpers/getFontLanguage.js.map +2 -2
  59. package/dist/cjs/helpers/getSplitStyles.js +3 -865
  60. package/dist/cjs/helpers/getSplitStyles.js.map +3 -3
  61. package/dist/cjs/helpers/getStylesAtomic.js +1 -226
  62. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  63. package/dist/cjs/helpers/getStylesAtomic.native.js +1 -37
  64. package/dist/cjs/helpers/getStylesAtomic.native.js.map +2 -2
  65. package/dist/cjs/helpers/getThemeCSSRules.js +4 -126
  66. package/dist/cjs/helpers/getThemeCSSRules.js.map +2 -2
  67. package/dist/cjs/helpers/getThemeCSSRules.native.js +1 -30
  68. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +2 -2
  69. package/dist/cjs/helpers/getVariantExtras.js +1 -91
  70. package/dist/cjs/helpers/getVariantExtras.js.map +2 -2
  71. package/dist/cjs/helpers/insertStyleRule.js +2 -222
  72. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  73. package/dist/cjs/helpers/isObj.js +1 -28
  74. package/dist/cjs/helpers/isObj.js.map +2 -2
  75. package/dist/cjs/helpers/isTamaguiComponent.js +1 -31
  76. package/dist/cjs/helpers/isTamaguiComponent.js.map +2 -2
  77. package/dist/cjs/helpers/isTamaguiElement.js +1 -32
  78. package/dist/cjs/helpers/isTamaguiElement.js.map +2 -2
  79. package/dist/cjs/helpers/matchMedia.js +1 -41
  80. package/dist/cjs/helpers/matchMedia.js.map +2 -2
  81. package/dist/cjs/helpers/matchMedia.native.js +1 -47
  82. package/dist/cjs/helpers/matchMedia.native.js.map +2 -2
  83. package/dist/cjs/helpers/mergeProps.js +1 -53
  84. package/dist/cjs/helpers/mergeProps.js.map +2 -2
  85. package/dist/cjs/helpers/normalizeColor.js +1 -66
  86. package/dist/cjs/helpers/normalizeColor.js.map +2 -2
  87. package/dist/cjs/helpers/normalizeShadow.js +1 -46
  88. package/dist/cjs/helpers/normalizeShadow.js.map +2 -2
  89. package/dist/cjs/helpers/normalizeShadow.native.js +1 -54
  90. package/dist/cjs/helpers/normalizeShadow.native.js.map +2 -2
  91. package/dist/cjs/helpers/normalizeStylePropKeys.js +1 -28
  92. package/dist/cjs/helpers/normalizeStylePropKeys.js.map +2 -2
  93. package/dist/cjs/helpers/normalizeStylePropKeys.native.js +1 -39
  94. package/dist/cjs/helpers/normalizeStylePropKeys.native.js.map +2 -2
  95. package/dist/cjs/helpers/normalizeValueWithProperty.js +1 -125
  96. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +2 -2
  97. package/dist/cjs/helpers/proxyThemeVariables.js +1 -39
  98. package/dist/cjs/helpers/proxyThemeVariables.js.map +2 -2
  99. package/dist/cjs/helpers/pseudoDescriptors.js +1 -52
  100. package/dist/cjs/helpers/pseudoDescriptors.js.map +2 -2
  101. package/dist/cjs/helpers/registerCSSVariable.js +1 -39
  102. package/dist/cjs/helpers/registerCSSVariable.js.map +2 -2
  103. package/dist/cjs/helpers/themeable.js +1 -61
  104. package/dist/cjs/helpers/themeable.js.map +2 -2
  105. package/dist/cjs/helpers/themes.js +1 -75
  106. package/dist/cjs/helpers/themes.js.map +2 -2
  107. package/dist/cjs/helpers/timer.js +1 -34
  108. package/dist/cjs/helpers/timer.js.map +2 -2
  109. package/dist/cjs/helpers/useShallowSetState.js +1 -58
  110. package/dist/cjs/helpers/useShallowSetState.js.map +2 -2
  111. package/dist/cjs/helpers/warnOnce.js +1 -37
  112. package/dist/cjs/helpers/warnOnce.js.map +2 -2
  113. package/dist/cjs/helpers/withStaticProperties.js +1 -32
  114. package/dist/cjs/helpers/withStaticProperties.js.map +2 -2
  115. package/dist/cjs/hooks/getThemeUnwrapped.js +1 -33
  116. package/dist/cjs/hooks/getThemeUnwrapped.js.map +2 -2
  117. package/dist/cjs/hooks/useAnimationDriver.js +1 -33
  118. package/dist/cjs/hooks/useAnimationDriver.js.map +2 -2
  119. package/dist/cjs/hooks/useId.js +1 -28
  120. package/dist/cjs/hooks/useId.js.map +2 -2
  121. package/dist/cjs/hooks/useIsTouchDevice.js +1 -32
  122. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  123. package/dist/cjs/hooks/useMedia.js +1 -264
  124. package/dist/cjs/hooks/useMedia.js.map +2 -2
  125. package/dist/cjs/hooks/useSafeRef.js +1 -58
  126. package/dist/cjs/hooks/useSafeRef.js.map +2 -2
  127. package/dist/cjs/hooks/useServerHooks.js +1 -35
  128. package/dist/cjs/hooks/useServerHooks.js.map +2 -2
  129. package/dist/cjs/hooks/useStyle.js +1 -60
  130. package/dist/cjs/hooks/useStyle.js.map +2 -2
  131. package/dist/cjs/hooks/useTheme.js +1 -229
  132. package/dist/cjs/hooks/useTheme.js.map +3 -3
  133. package/dist/cjs/hooks/useThemeName.js +1 -51
  134. package/dist/cjs/hooks/useThemeName.js.map +2 -2
  135. package/dist/cjs/index.js +1 -110
  136. package/dist/cjs/index.js.map +2 -2
  137. package/dist/cjs/inject-styles.js +1 -39
  138. package/dist/cjs/inject-styles.js.map +2 -2
  139. package/dist/cjs/insertFont.js +1 -92
  140. package/dist/cjs/insertFont.js.map +2 -2
  141. package/dist/cjs/setupHooks.js +1 -33
  142. package/dist/cjs/setupHooks.js.map +2 -2
  143. package/dist/cjs/setupReactNative.js +1 -50
  144. package/dist/cjs/setupReactNative.js.map +2 -2
  145. package/dist/cjs/styled.js +1 -93
  146. package/dist/cjs/styled.js.map +2 -2
  147. package/dist/cjs/types.js +1 -16
  148. package/dist/cjs/types.js.map +3 -3
  149. package/dist/cjs/updateTheme.js +1 -46
  150. package/dist/cjs/updateTheme.js.map +2 -2
  151. package/dist/cjs/views/AnimationDriverProvider.js +1 -32
  152. package/dist/cjs/views/AnimationDriverProvider.js.map +2 -2
  153. package/dist/cjs/views/FontLanguage.js +1 -40
  154. package/dist/cjs/views/FontLanguage.js.map +2 -2
  155. package/dist/cjs/views/FontLanguage.native.js +1 -34
  156. package/dist/cjs/views/FontLanguage.native.js.map +2 -2
  157. package/dist/cjs/views/FontLanguage.types.js +1 -16
  158. package/dist/cjs/views/FontLanguage.types.js.map +2 -2
  159. package/dist/cjs/views/Slot.js +1 -91
  160. package/dist/cjs/views/Slot.js.map +2 -2
  161. package/dist/cjs/views/Stack.js +1 -37
  162. package/dist/cjs/views/Stack.js.map +2 -2
  163. package/dist/cjs/views/TamaguiProvider.js +1 -90
  164. package/dist/cjs/views/TamaguiProvider.js.map +2 -2
  165. package/dist/cjs/views/Text.js +1 -95
  166. package/dist/cjs/views/Text.js.map +2 -2
  167. package/dist/cjs/views/Theme.js +1 -80
  168. package/dist/cjs/views/Theme.js.map +3 -3
  169. package/dist/cjs/views/ThemeProvider.js +1 -69
  170. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  171. package/dist/esm/Tamagui.js +1 -44
  172. package/dist/esm/Tamagui.js.map +2 -2
  173. package/dist/esm/Tamagui.mjs +1 -44
  174. package/dist/esm/Tamagui.mjs.map +2 -2
  175. package/dist/esm/addTheme.js +2 -53
  176. package/dist/esm/addTheme.js.map +2 -2
  177. package/dist/esm/addTheme.mjs +2 -53
  178. package/dist/esm/addTheme.mjs.map +2 -2
  179. package/dist/esm/config.js +1 -89
  180. package/dist/esm/config.js.map +2 -2
  181. package/dist/esm/config.mjs +1 -89
  182. package/dist/esm/config.mjs.map +2 -2
  183. package/dist/esm/constants/constants.js +1 -21
  184. package/dist/esm/constants/constants.js.map +2 -2
  185. package/dist/esm/constants/constants.mjs +1 -21
  186. package/dist/esm/constants/constants.mjs.map +2 -2
  187. package/dist/esm/constants/isDevTools.js +1 -12
  188. package/dist/esm/constants/isDevTools.js.map +2 -2
  189. package/dist/esm/constants/isDevTools.mjs +1 -12
  190. package/dist/esm/constants/isDevTools.mjs.map +2 -2
  191. package/dist/esm/contexts/AnimationDriverContext.js +1 -5
  192. package/dist/esm/contexts/AnimationDriverContext.js.map +2 -2
  193. package/dist/esm/contexts/AnimationDriverContext.mjs +1 -5
  194. package/dist/esm/contexts/AnimationDriverContext.mjs.map +2 -2
  195. package/dist/esm/contexts/ButtonNestingContext.js +1 -5
  196. package/dist/esm/contexts/ButtonNestingContext.js.map +2 -2
  197. package/dist/esm/contexts/ButtonNestingContext.mjs +1 -5
  198. package/dist/esm/contexts/ButtonNestingContext.mjs.map +2 -2
  199. package/dist/esm/contexts/FontLanguageContext.js +1 -5
  200. package/dist/esm/contexts/FontLanguageContext.js.map +2 -2
  201. package/dist/esm/contexts/FontLanguageContext.mjs +1 -5
  202. package/dist/esm/contexts/FontLanguageContext.mjs.map +2 -2
  203. package/dist/esm/contexts/TextAncestorContext.js +1 -5
  204. package/dist/esm/contexts/TextAncestorContext.js.map +2 -2
  205. package/dist/esm/contexts/TextAncestorContext.mjs +1 -5
  206. package/dist/esm/contexts/TextAncestorContext.mjs.map +2 -2
  207. package/dist/esm/createComponent.js +2 -846
  208. package/dist/esm/createComponent.js.map +3 -3
  209. package/dist/esm/createComponent.mjs +2 -846
  210. package/dist/esm/createComponent.mjs.map +3 -3
  211. package/dist/esm/createFont.js +1 -44
  212. package/dist/esm/createFont.js.map +2 -2
  213. package/dist/esm/createFont.mjs +1 -44
  214. package/dist/esm/createFont.mjs.map +2 -2
  215. package/dist/esm/createShorthands.js +1 -6
  216. package/dist/esm/createShorthands.js.map +2 -2
  217. package/dist/esm/createShorthands.mjs +1 -6
  218. package/dist/esm/createShorthands.mjs.map +2 -2
  219. package/dist/esm/createTamagui.js +5 -186
  220. package/dist/esm/createTamagui.js.map +2 -2
  221. package/dist/esm/createTamagui.mjs +5 -186
  222. package/dist/esm/createTamagui.mjs.map +2 -2
  223. package/dist/esm/createTheme.js +1 -6
  224. package/dist/esm/createTheme.js.map +2 -2
  225. package/dist/esm/createTheme.mjs +1 -6
  226. package/dist/esm/createTheme.mjs.map +2 -2
  227. package/dist/esm/createTokens.js +1 -14
  228. package/dist/esm/createTokens.js.map +2 -2
  229. package/dist/esm/createTokens.mjs +1 -14
  230. package/dist/esm/createTokens.mjs.map +2 -2
  231. package/dist/esm/createVariable.js +1 -77
  232. package/dist/esm/createVariable.js.map +2 -2
  233. package/dist/esm/createVariable.mjs +1 -77
  234. package/dist/esm/createVariable.mjs.map +2 -2
  235. package/dist/esm/createVariables.js +1 -34
  236. package/dist/esm/createVariables.js.map +2 -2
  237. package/dist/esm/createVariables.mjs +1 -34
  238. package/dist/esm/createVariables.mjs.map +2 -2
  239. package/dist/esm/helpers/ThemeManager.js +1 -211
  240. package/dist/esm/helpers/ThemeManager.js.map +3 -3
  241. package/dist/esm/helpers/ThemeManager.mjs +1 -211
  242. package/dist/esm/helpers/ThemeManager.mjs.map +3 -3
  243. package/dist/esm/helpers/ThemeManagerContext.js +1 -5
  244. package/dist/esm/helpers/ThemeManagerContext.js.map +2 -2
  245. package/dist/esm/helpers/ThemeManagerContext.mjs +1 -5
  246. package/dist/esm/helpers/ThemeManagerContext.mjs.map +2 -2
  247. package/dist/esm/helpers/createMediaStyle.js +1 -41
  248. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  249. package/dist/esm/helpers/createMediaStyle.mjs +1 -41
  250. package/dist/esm/helpers/createMediaStyle.mjs.map +2 -2
  251. package/dist/esm/helpers/createPropMapper.js +2 -404
  252. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  253. package/dist/esm/helpers/createPropMapper.mjs +2 -404
  254. package/dist/esm/helpers/createPropMapper.mjs.map +2 -2
  255. package/dist/esm/helpers/createProxy.js +2 -17
  256. package/dist/esm/helpers/createProxy.js.map +2 -2
  257. package/dist/esm/helpers/createProxy.mjs +2 -17
  258. package/dist/esm/helpers/createProxy.mjs.map +2 -2
  259. package/dist/esm/helpers/defaultOffset.js +1 -4
  260. package/dist/esm/helpers/defaultOffset.js.map +2 -2
  261. package/dist/esm/helpers/defaultOffset.mjs +1 -4
  262. package/dist/esm/helpers/defaultOffset.mjs.map +2 -2
  263. package/dist/esm/helpers/expandStyle.js +1 -61
  264. package/dist/esm/helpers/expandStyle.js.map +2 -2
  265. package/dist/esm/helpers/expandStyle.mjs +1 -61
  266. package/dist/esm/helpers/expandStyle.mjs.map +2 -2
  267. package/dist/esm/helpers/expandStyles.js +1 -51
  268. package/dist/esm/helpers/expandStyles.js.map +2 -2
  269. package/dist/esm/helpers/expandStyles.mjs +1 -51
  270. package/dist/esm/helpers/expandStyles.mjs.map +2 -2
  271. package/dist/esm/helpers/extendStaticConfig.js +1 -66
  272. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  273. package/dist/esm/helpers/extendStaticConfig.mjs +1 -66
  274. package/dist/esm/helpers/extendStaticConfig.mjs.map +2 -2
  275. package/dist/esm/helpers/getAnimationDriver.js +1 -7
  276. package/dist/esm/helpers/getAnimationDriver.js.map +2 -2
  277. package/dist/esm/helpers/getAnimationDriver.mjs +1 -7
  278. package/dist/esm/helpers/getAnimationDriver.mjs.map +2 -2
  279. package/dist/esm/helpers/getExpandedShorthands.js +1 -14
  280. package/dist/esm/helpers/getExpandedShorthands.js.map +2 -2
  281. package/dist/esm/helpers/getExpandedShorthands.mjs +1 -14
  282. package/dist/esm/helpers/getExpandedShorthands.mjs.map +2 -2
  283. package/dist/esm/helpers/getFontLanguage.js +1 -4
  284. package/dist/esm/helpers/getFontLanguage.js.map +2 -2
  285. package/dist/esm/helpers/getFontLanguage.mjs +1 -4
  286. package/dist/esm/helpers/getFontLanguage.mjs.map +2 -2
  287. package/dist/esm/helpers/getSplitStyles.js +3 -866
  288. package/dist/esm/helpers/getSplitStyles.js.map +3 -3
  289. package/dist/esm/helpers/getSplitStyles.mjs +3 -866
  290. package/dist/esm/helpers/getSplitStyles.mjs.map +3 -3
  291. package/dist/esm/helpers/getStylesAtomic.js +1 -200
  292. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  293. package/dist/esm/helpers/getStylesAtomic.mjs +1 -200
  294. package/dist/esm/helpers/getStylesAtomic.mjs.map +2 -2
  295. package/dist/esm/helpers/getStylesAtomic.native.js +1 -11
  296. package/dist/esm/helpers/getStylesAtomic.native.js.map +2 -2
  297. package/dist/esm/helpers/getStylesAtomic.native.mjs +1 -11
  298. package/dist/esm/helpers/getStylesAtomic.native.mjs.map +2 -2
  299. package/dist/esm/helpers/getThemeCSSRules.js +4 -102
  300. package/dist/esm/helpers/getThemeCSSRules.js.map +2 -2
  301. package/dist/esm/helpers/getThemeCSSRules.mjs +4 -102
  302. package/dist/esm/helpers/getThemeCSSRules.mjs.map +2 -2
  303. package/dist/esm/helpers/getThemeCSSRules.native.js +1 -6
  304. package/dist/esm/helpers/getThemeCSSRules.native.js.map +2 -2
  305. package/dist/esm/helpers/getThemeCSSRules.native.mjs +1 -6
  306. package/dist/esm/helpers/getThemeCSSRules.native.mjs.map +2 -2
  307. package/dist/esm/helpers/getVariantExtras.js +1 -66
  308. package/dist/esm/helpers/getVariantExtras.js.map +2 -2
  309. package/dist/esm/helpers/getVariantExtras.mjs +1 -66
  310. package/dist/esm/helpers/getVariantExtras.mjs.map +2 -2
  311. package/dist/esm/helpers/insertStyleRule.js +2 -190
  312. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  313. package/dist/esm/helpers/insertStyleRule.mjs +2 -190
  314. package/dist/esm/helpers/insertStyleRule.mjs.map +2 -2
  315. package/dist/esm/helpers/isObj.js +1 -4
  316. package/dist/esm/helpers/isObj.js.map +2 -2
  317. package/dist/esm/helpers/isObj.mjs +1 -4
  318. package/dist/esm/helpers/isObj.mjs.map +2 -2
  319. package/dist/esm/helpers/isTamaguiComponent.js +1 -7
  320. package/dist/esm/helpers/isTamaguiComponent.js.map +2 -2
  321. package/dist/esm/helpers/isTamaguiComponent.mjs +1 -7
  322. package/dist/esm/helpers/isTamaguiComponent.mjs.map +2 -2
  323. package/dist/esm/helpers/isTamaguiElement.js +1 -8
  324. package/dist/esm/helpers/isTamaguiElement.js.map +2 -2
  325. package/dist/esm/helpers/isTamaguiElement.mjs +1 -8
  326. package/dist/esm/helpers/isTamaguiElement.mjs.map +2 -2
  327. package/dist/esm/helpers/matchMedia.js +1 -16
  328. package/dist/esm/helpers/matchMedia.js.map +2 -2
  329. package/dist/esm/helpers/matchMedia.mjs +1 -16
  330. package/dist/esm/helpers/matchMedia.mjs.map +2 -2
  331. package/dist/esm/helpers/matchMedia.native.js +1 -22
  332. package/dist/esm/helpers/matchMedia.native.js.map +2 -2
  333. package/dist/esm/helpers/matchMedia.native.mjs +1 -22
  334. package/dist/esm/helpers/matchMedia.native.mjs.map +2 -2
  335. package/dist/esm/helpers/mergeProps.js +1 -29
  336. package/dist/esm/helpers/mergeProps.js.map +2 -2
  337. package/dist/esm/helpers/mergeProps.mjs +1 -29
  338. package/dist/esm/helpers/mergeProps.mjs.map +2 -2
  339. package/dist/esm/helpers/normalizeColor.js +1 -30
  340. package/dist/esm/helpers/normalizeColor.js.map +2 -2
  341. package/dist/esm/helpers/normalizeColor.mjs +1 -30
  342. package/dist/esm/helpers/normalizeColor.mjs.map +2 -2
  343. package/dist/esm/helpers/normalizeShadow.js +1 -22
  344. package/dist/esm/helpers/normalizeShadow.js.map +2 -2
  345. package/dist/esm/helpers/normalizeShadow.mjs +1 -22
  346. package/dist/esm/helpers/normalizeShadow.mjs.map +2 -2
  347. package/dist/esm/helpers/normalizeShadow.native.js +1 -30
  348. package/dist/esm/helpers/normalizeShadow.native.js.map +2 -2
  349. package/dist/esm/helpers/normalizeShadow.native.mjs +1 -30
  350. package/dist/esm/helpers/normalizeShadow.native.mjs.map +2 -2
  351. package/dist/esm/helpers/normalizeStylePropKeys.js +1 -4
  352. package/dist/esm/helpers/normalizeStylePropKeys.js.map +2 -2
  353. package/dist/esm/helpers/normalizeStylePropKeys.mjs +1 -4
  354. package/dist/esm/helpers/normalizeStylePropKeys.mjs.map +2 -2
  355. package/dist/esm/helpers/normalizeStylePropKeys.native.js +1 -15
  356. package/dist/esm/helpers/normalizeStylePropKeys.native.js.map +2 -2
  357. package/dist/esm/helpers/normalizeStylePropKeys.native.mjs +1 -15
  358. package/dist/esm/helpers/normalizeStylePropKeys.native.mjs.map +2 -2
  359. package/dist/esm/helpers/normalizeValueWithProperty.js +1 -100
  360. package/dist/esm/helpers/normalizeValueWithProperty.js.map +2 -2
  361. package/dist/esm/helpers/normalizeValueWithProperty.mjs +1 -100
  362. package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +2 -2
  363. package/dist/esm/helpers/proxyThemeVariables.js +1 -15
  364. package/dist/esm/helpers/proxyThemeVariables.js.map +2 -2
  365. package/dist/esm/helpers/proxyThemeVariables.mjs +1 -15
  366. package/dist/esm/helpers/proxyThemeVariables.mjs.map +2 -2
  367. package/dist/esm/helpers/pseudoDescriptors.js +1 -28
  368. package/dist/esm/helpers/pseudoDescriptors.js.map +2 -2
  369. package/dist/esm/helpers/pseudoDescriptors.mjs +1 -28
  370. package/dist/esm/helpers/pseudoDescriptors.mjs.map +2 -2
  371. package/dist/esm/helpers/registerCSSVariable.js +1 -13
  372. package/dist/esm/helpers/registerCSSVariable.js.map +2 -2
  373. package/dist/esm/helpers/registerCSSVariable.mjs +1 -13
  374. package/dist/esm/helpers/registerCSSVariable.mjs.map +2 -2
  375. package/dist/esm/helpers/themeable.js +1 -27
  376. package/dist/esm/helpers/themeable.js.map +2 -2
  377. package/dist/esm/helpers/themeable.mjs +1 -27
  378. package/dist/esm/helpers/themeable.mjs.map +2 -2
  379. package/dist/esm/helpers/themes.js +1 -50
  380. package/dist/esm/helpers/themes.js.map +2 -2
  381. package/dist/esm/helpers/themes.mjs +1 -50
  382. package/dist/esm/helpers/themes.mjs.map +2 -2
  383. package/dist/esm/helpers/timer.js +1 -10
  384. package/dist/esm/helpers/timer.js.map +2 -2
  385. package/dist/esm/helpers/timer.mjs +1 -10
  386. package/dist/esm/helpers/timer.mjs.map +2 -2
  387. package/dist/esm/helpers/useShallowSetState.js +1 -34
  388. package/dist/esm/helpers/useShallowSetState.js.map +2 -2
  389. package/dist/esm/helpers/useShallowSetState.mjs +1 -34
  390. package/dist/esm/helpers/useShallowSetState.mjs.map +2 -2
  391. package/dist/esm/helpers/warnOnce.js +1 -13
  392. package/dist/esm/helpers/warnOnce.js.map +2 -2
  393. package/dist/esm/helpers/warnOnce.mjs +1 -13
  394. package/dist/esm/helpers/warnOnce.mjs.map +2 -2
  395. package/dist/esm/helpers/withStaticProperties.js +1 -8
  396. package/dist/esm/helpers/withStaticProperties.js.map +2 -2
  397. package/dist/esm/helpers/withStaticProperties.mjs +1 -8
  398. package/dist/esm/helpers/withStaticProperties.mjs.map +2 -2
  399. package/dist/esm/hooks/getThemeUnwrapped.js +1 -8
  400. package/dist/esm/hooks/getThemeUnwrapped.js.map +2 -2
  401. package/dist/esm/hooks/getThemeUnwrapped.mjs +1 -8
  402. package/dist/esm/hooks/getThemeUnwrapped.mjs.map +2 -2
  403. package/dist/esm/hooks/useAnimationDriver.js +1 -9
  404. package/dist/esm/hooks/useAnimationDriver.js.map +2 -2
  405. package/dist/esm/hooks/useAnimationDriver.mjs +1 -9
  406. package/dist/esm/hooks/useAnimationDriver.mjs.map +2 -2
  407. package/dist/esm/hooks/useId.js +1 -4
  408. package/dist/esm/hooks/useId.js.map +2 -2
  409. package/dist/esm/hooks/useId.mjs +1 -4
  410. package/dist/esm/hooks/useId.mjs.map +2 -2
  411. package/dist/esm/hooks/useIsTouchDevice.js +1 -8
  412. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  413. package/dist/esm/hooks/useIsTouchDevice.mjs +1 -8
  414. package/dist/esm/hooks/useIsTouchDevice.mjs.map +2 -2
  415. package/dist/esm/hooks/useMedia.js +1 -225
  416. package/dist/esm/hooks/useMedia.js.map +2 -2
  417. package/dist/esm/hooks/useMedia.mjs +1 -225
  418. package/dist/esm/hooks/useMedia.mjs.map +2 -2
  419. package/dist/esm/hooks/useSafeRef.js +1 -34
  420. package/dist/esm/hooks/useSafeRef.js.map +2 -2
  421. package/dist/esm/hooks/useSafeRef.mjs +1 -34
  422. package/dist/esm/hooks/useSafeRef.mjs.map +2 -2
  423. package/dist/esm/hooks/useServerHooks.js +1 -10
  424. package/dist/esm/hooks/useServerHooks.js.map +2 -2
  425. package/dist/esm/hooks/useServerHooks.mjs +1 -10
  426. package/dist/esm/hooks/useServerHooks.mjs.map +2 -2
  427. package/dist/esm/hooks/useStyle.js +1 -36
  428. package/dist/esm/hooks/useStyle.js.map +2 -2
  429. package/dist/esm/hooks/useStyle.mjs +1 -36
  430. package/dist/esm/hooks/useStyle.mjs.map +2 -2
  431. package/dist/esm/hooks/useTheme.js +1 -204
  432. package/dist/esm/hooks/useTheme.js.map +3 -3
  433. package/dist/esm/hooks/useTheme.mjs +1 -204
  434. package/dist/esm/hooks/useTheme.mjs.map +3 -3
  435. package/dist/esm/hooks/useThemeName.js +1 -27
  436. package/dist/esm/hooks/useThemeName.js.map +2 -2
  437. package/dist/esm/hooks/useThemeName.mjs +1 -27
  438. package/dist/esm/hooks/useThemeName.mjs.map +2 -2
  439. package/dist/esm/index.js +1 -88
  440. package/dist/esm/index.js.map +2 -2
  441. package/dist/esm/index.mjs +1 -88
  442. package/dist/esm/index.mjs.map +2 -2
  443. package/dist/esm/inject-styles.js +1 -15
  444. package/dist/esm/inject-styles.js.map +2 -2
  445. package/dist/esm/inject-styles.mjs +1 -15
  446. package/dist/esm/inject-styles.mjs.map +2 -2
  447. package/dist/esm/insertFont.js +1 -66
  448. package/dist/esm/insertFont.js.map +2 -2
  449. package/dist/esm/insertFont.mjs +1 -66
  450. package/dist/esm/insertFont.mjs.map +2 -2
  451. package/dist/esm/setupHooks.js +1 -8
  452. package/dist/esm/setupHooks.js.map +2 -2
  453. package/dist/esm/setupHooks.mjs +1 -8
  454. package/dist/esm/setupHooks.mjs.map +2 -2
  455. package/dist/esm/setupReactNative.js +1 -24
  456. package/dist/esm/setupReactNative.js.map +2 -2
  457. package/dist/esm/setupReactNative.mjs +1 -24
  458. package/dist/esm/setupReactNative.mjs.map +2 -2
  459. package/dist/esm/styled.js +1 -69
  460. package/dist/esm/styled.js.map +2 -2
  461. package/dist/esm/styled.mjs +1 -69
  462. package/dist/esm/styled.mjs.map +2 -2
  463. package/dist/esm/updateTheme.js +1 -22
  464. package/dist/esm/updateTheme.js.map +2 -2
  465. package/dist/esm/updateTheme.mjs +1 -22
  466. package/dist/esm/updateTheme.mjs.map +2 -2
  467. package/dist/esm/views/AnimationDriverProvider.js +1 -8
  468. package/dist/esm/views/AnimationDriverProvider.js.map +2 -2
  469. package/dist/esm/views/AnimationDriverProvider.mjs +1 -8
  470. package/dist/esm/views/AnimationDriverProvider.mjs.map +2 -2
  471. package/dist/esm/views/FontLanguage.js +1 -16
  472. package/dist/esm/views/FontLanguage.js.map +2 -2
  473. package/dist/esm/views/FontLanguage.mjs +1 -16
  474. package/dist/esm/views/FontLanguage.mjs.map +2 -2
  475. package/dist/esm/views/FontLanguage.native.js +1 -10
  476. package/dist/esm/views/FontLanguage.native.js.map +2 -2
  477. package/dist/esm/views/FontLanguage.native.mjs +1 -10
  478. package/dist/esm/views/FontLanguage.native.mjs.map +2 -2
  479. package/dist/esm/views/Slot.js +1 -65
  480. package/dist/esm/views/Slot.js.map +2 -2
  481. package/dist/esm/views/Slot.mjs +1 -65
  482. package/dist/esm/views/Slot.mjs.map +2 -2
  483. package/dist/esm/views/Stack.js +1 -13
  484. package/dist/esm/views/Stack.js.map +2 -2
  485. package/dist/esm/views/Stack.mjs +1 -13
  486. package/dist/esm/views/Stack.mjs.map +2 -2
  487. package/dist/esm/views/TamaguiProvider.js +1 -56
  488. package/dist/esm/views/TamaguiProvider.js.map +2 -2
  489. package/dist/esm/views/TamaguiProvider.mjs +1 -56
  490. package/dist/esm/views/TamaguiProvider.mjs.map +2 -2
  491. package/dist/esm/views/Text.js +1 -71
  492. package/dist/esm/views/Text.js.map +2 -2
  493. package/dist/esm/views/Text.mjs +1 -71
  494. package/dist/esm/views/Text.mjs.map +2 -2
  495. package/dist/esm/views/Theme.js +1 -55
  496. package/dist/esm/views/Theme.js.map +3 -3
  497. package/dist/esm/views/Theme.mjs +1 -55
  498. package/dist/esm/views/Theme.mjs.map +3 -3
  499. package/dist/esm/views/ThemeProvider.js +1 -44
  500. package/dist/esm/views/ThemeProvider.js.map +2 -2
  501. package/dist/esm/views/ThemeProvider.mjs +1 -44
  502. package/dist/esm/views/ThemeProvider.mjs.map +2 -2
  503. package/package.json +9 -9
  504. package/src/createComponent.tsx +38 -5
  505. package/src/helpers/ThemeManager.tsx +40 -32
  506. package/src/helpers/getSplitStyles.tsx +0 -8
  507. package/src/hooks/useTheme.tsx +145 -93
  508. package/src/types.tsx +2 -2
  509. package/src/views/Theme.tsx +49 -27
  510. package/types/createComponent.d.ts.map +1 -1
  511. package/types/helpers/ThemeManager.d.ts +1 -0
  512. package/types/helpers/ThemeManager.d.ts.map +1 -1
  513. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  514. package/types/hooks/useTheme.d.ts +5 -7
  515. package/types/hooks/useTheme.d.ts.map +1 -1
  516. package/types/types.d.ts +2 -2
  517. package/types/types.d.ts.map +1 -1
  518. package/types/views/Theme.d.ts.map +1 -1
@@ -1,45 +1,2 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { isClient } from "@tamagui/constants";
3
- import { createContext, useLayoutEffect, useMemo } from "react";
4
- import { THEME_CLASSNAME_PREFIX } from "../constants/constants.js";
5
- import { Theme } from "./Theme.js";
6
- const ThemeProviderRootContext = createContext(null);
7
- const ThemeProvider = (props) => {
8
- if (isClient) {
9
- useLayoutEffect(() => {
10
- if (props.disableRootThemeClass)
11
- return;
12
- const cn = `${THEME_CLASSNAME_PREFIX}${props.defaultTheme}`;
13
- const target = props.themeClassNameOnRoot ? document.documentElement : document.body;
14
- target.classList.add(cn);
15
- return () => {
16
- target.classList.remove(cn);
17
- };
18
- }, [props.defaultTheme, props.disableRootThemeClass, props.themeClassNameOnRoot]);
19
- }
20
- return /* @__PURE__ */ jsx(
21
- ThemeProviderRootContext.Provider,
22
- {
23
- value: useMemo(() => {
24
- return {
25
- defaultTheme: props.defaultTheme
26
- };
27
- }, []),
28
- children: /* @__PURE__ */ jsx(
29
- Theme,
30
- {
31
- className: props.className,
32
- name: props.defaultTheme,
33
- forceClassName: props.disableRootThemeClass ? false : void 0,
34
- _isRoot: true,
35
- children: props.children
36
- }
37
- )
38
- }
39
- );
40
- };
41
- export {
42
- ThemeProvider,
43
- ThemeProviderRootContext
44
- };
1
+ import{jsx as m}from"react/jsx-runtime";import{isClient as a}from"@tamagui/constants";import{createContext as r,useLayoutEffect as l,useMemo as s}from"react";import{THEME_CLASSNAME_PREFIX as n}from"../constants/constants.js";import{Theme as d}from"./Theme.js";const i=r(null),f=e=>(a&&l(()=>{if(e.disableRootThemeClass)return;const t=`${n}${e.defaultTheme}`,o=e.themeClassNameOnRoot?document.documentElement:document.body;return o.classList.add(t),()=>{o.classList.remove(t)}},[e.defaultTheme,e.disableRootThemeClass,e.themeClassNameOnRoot]),m(i.Provider,{value:s(()=>({defaultTheme:e.defaultTheme}),[]),children:m(d,{className:e.className,name:e.defaultTheme,forceClassName:e.disableRootThemeClass?!1:void 0,_isRoot:!0,children:e.children})}));export{f as ThemeProvider,i as ThemeProviderRootContext};
45
2
  //# sourceMappingURL=ThemeProvider.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/ThemeProvider.tsx"],
4
4
  "sourcesContent": ["import { isClient } from '@tamagui/constants'\nimport { createContext, useLayoutEffect, useMemo } from 'react'\n\nimport { THEME_CLASSNAME_PREFIX } from '../constants/constants.js'\nimport { Theme } from './Theme.js'\n\nexport type ThemeProviderProps = {\n className?: string\n defaultTheme: string\n disableRootThemeClass?: boolean\n themeClassNameOnRoot?: boolean\n children?: any\n reset?: boolean\n}\n\nexport const ThemeProviderRootContext = createContext<Pick<\n ThemeProviderProps,\n 'defaultTheme'\n> | null>(null)\n\nexport const ThemeProvider = (props: ThemeProviderProps) => {\n // ensure theme is attached to root body node as well to work with modals by default\n if (isClient) {\n useLayoutEffect(() => {\n if (props.disableRootThemeClass) return\n const cn = `${THEME_CLASSNAME_PREFIX}${props.defaultTheme}`\n const target = props.themeClassNameOnRoot ? document.documentElement : document.body\n target.classList.add(cn)\n return () => {\n target.classList.remove(cn)\n }\n }, [props.defaultTheme, props.disableRootThemeClass, props.themeClassNameOnRoot])\n }\n\n return (\n <ThemeProviderRootContext.Provider\n value={useMemo(() => {\n return {\n defaultTheme: props.defaultTheme,\n }\n // NOTE DON'T CHANGE THIS ITS ONLY USED BY useThemeName for SSR safety for now...\n }, [])}\n >\n <Theme\n className={props.className}\n name={props.defaultTheme}\n forceClassName={props.disableRootThemeClass ? false : undefined}\n // @ts-expect-error\n _isRoot\n >\n {props.children}\n </Theme>\n </ThemeProviderRootContext.Provider>\n )\n}\n"],
5
- "mappings": "AA2CM;AA3CN,SAAS,gBAAgB;AACzB,SAAS,eAAe,iBAAiB,eAAe;AAExD,SAAS,8BAA8B;AACvC,SAAS,aAAa;AAWf,MAAM,2BAA2B,cAG9B,IAAI;AAEP,MAAM,gBAAgB,CAAC,UAA8B;AAE1D,MAAI,UAAU;AACZ,oBAAgB,MAAM;AACpB,UAAI,MAAM;AAAuB;AACjC,YAAM,KAAK,GAAG,yBAAyB,MAAM;AAC7C,YAAM,SAAS,MAAM,uBAAuB,SAAS,kBAAkB,SAAS;AAChF,aAAO,UAAU,IAAI,EAAE;AACvB,aAAO,MAAM;AACX,eAAO,UAAU,OAAO,EAAE;AAAA,MAC5B;AAAA,IACF,GAAG,CAAC,MAAM,cAAc,MAAM,uBAAuB,MAAM,oBAAoB,CAAC;AAAA,EAClF;AAEA,SACE;AAAA,IAAC,yBAAyB;AAAA,IAAzB;AAAA,MACC,OAAO,QAAQ,MAAM;AACnB,eAAO;AAAA,UACL,cAAc,MAAM;AAAA,QACtB;AAAA,MAEF,GAAG,CAAC,CAAC;AAAA,MAEL;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,MAAM;AAAA,UACjB,MAAM,MAAM;AAAA,UACZ,gBAAgB,MAAM,wBAAwB,QAAQ;AAAA,UAEtD,SAAO;AAAA,UAEN,gBAAM;AAAA;AAAA,MACT;AAAA;AAAA,EACF;AAEJ;",
6
- "names": []
5
+ "mappings": "AA2CM,cAAAA,MAAA,oBA3CN,OAAS,YAAAC,MAAgB,qBACzB,OAAS,iBAAAC,EAAe,mBAAAC,EAAiB,WAAAC,MAAe,QAExD,OAAS,0BAAAC,MAA8B,4BACvC,OAAS,SAAAC,MAAa,aAWf,MAAMC,EAA2BL,EAG9B,IAAI,EAEDM,EAAiBC,IAExBR,GACFE,EAAgB,IAAM,CACpB,GAAIM,EAAM,sBAAuB,OACjC,MAAMC,EAAK,GAAGL,IAAyBI,EAAM,eACvCE,EAASF,EAAM,qBAAuB,SAAS,gBAAkB,SAAS,KAChF,OAAAE,EAAO,UAAU,IAAID,CAAE,EAChB,IAAM,CACXC,EAAO,UAAU,OAAOD,CAAE,CAC5B,CACF,EAAG,CAACD,EAAM,aAAcA,EAAM,sBAAuBA,EAAM,oBAAoB,CAAC,EAIhFT,EAACO,EAAyB,SAAzB,CACC,MAAOH,EAAQ,KACN,CACL,aAAcK,EAAM,YACtB,GAEC,CAAC,CAAC,EAEL,SAAAT,EAACM,EAAA,CACC,UAAWG,EAAM,UACjB,KAAMA,EAAM,aACZ,eAAgBA,EAAM,sBAAwB,GAAQ,OAEtD,QAAO,GAEN,SAAAA,EAAM,SACT,EACF",
6
+ "names": ["jsx", "isClient", "createContext", "useLayoutEffect", "useMemo", "THEME_CLASSNAME_PREFIX", "Theme", "ThemeProviderRootContext", "ThemeProvider", "props", "cn", "target"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/web",
3
- "version": "1.13.3",
3
+ "version": "1.14.0",
4
4
  "source": "src/index.ts",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -27,19 +27,19 @@
27
27
  "reset.css"
28
28
  ],
29
29
  "dependencies": {
30
- "@tamagui/compose-refs": "1.13.3",
31
- "@tamagui/constants": "1.13.3",
32
- "@tamagui/helpers": "1.13.3",
33
- "@tamagui/normalize-css-color": "1.13.3",
34
- "@tamagui/use-did-finish-ssr": "1.13.3",
35
- "@tamagui/use-event": "1.13.3",
36
- "@tamagui/use-force-update": "1.13.3"
30
+ "@tamagui/compose-refs": "1.14.0",
31
+ "@tamagui/constants": "1.14.0",
32
+ "@tamagui/helpers": "1.14.0",
33
+ "@tamagui/normalize-css-color": "1.14.0",
34
+ "@tamagui/use-did-finish-ssr": "1.14.0",
35
+ "@tamagui/use-event": "1.14.0",
36
+ "@tamagui/use-force-update": "1.14.0"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "react": "*"
40
40
  },
41
41
  "devDependencies": {
42
- "@tamagui/build": "1.13.3",
42
+ "@tamagui/build": "1.14.0",
43
43
  "@testing-library/react": "^13.4.0",
44
44
  "csstype": "^3.0.10",
45
45
  "react": "^18.2.0",
@@ -12,6 +12,7 @@ import React, {
12
12
  useEffect,
13
13
  useId,
14
14
  useRef,
15
+ useState,
15
16
  } from 'react'
16
17
 
17
18
  import { onConfiguredOnce } from './config.js'
@@ -183,7 +184,9 @@ export function createComponent<
183
184
  didAccessThemeVariableValue?: boolean
184
185
  }
185
186
  )
186
- stateRef.current ??= {}
187
+ stateRef.current ||= {}
188
+
189
+ const hostRef = useServerRef<TamaguiElement>(null)
187
190
 
188
191
  /**
189
192
  * Component state for tracking animations, pseudos
@@ -290,9 +293,10 @@ export function createComponent<
290
293
  componentName,
291
294
  reset: props.reset,
292
295
  inverse: props.themeInverse,
293
- // @ts-expect-error
296
+ // @ts-ignore this is internal use only
294
297
  disable: props['data-themeable'],
295
- debug: props.debug,
298
+ debug:
299
+ process.env.NODE_ENV === 'development' && props.debug ? { hostRef } : undefined,
296
300
  shouldUpdate: () => !!stateRef.current.didAccessThemeVariableValue,
297
301
  })!
298
302
 
@@ -342,8 +346,6 @@ export function createComponent<
342
346
  keys: noClassNames && isMediaSpaced ? (splitStyles.hasMedia as any) : null,
343
347
  })
344
348
 
345
- const hostRef = useServerRef<TamaguiElement>(null)
346
-
347
349
  // animation setup
348
350
  const isAnimatedReactNativeWeb = isAnimated && avoidClassesWhileAnimating
349
351
 
@@ -730,6 +732,37 @@ export function createComponent<
730
732
  // passPropsToChildren: true,
731
733
  })
732
734
 
735
+ if (process.env.NODE_ENV === 'development') {
736
+ if (props['debug'] === 'visualize') {
737
+ const [onChangeCount, setOnChangeCount] = useState(0)
738
+
739
+ useEffect(() => {
740
+ themeState.themeManager?.onChangeTheme((name, manager) => {
741
+ setOnChangeCount((p) => ++p)
742
+ console.warn(`🖤`, name)
743
+ })
744
+ }, [themeState.themeManager])
745
+
746
+ content = (
747
+ <>
748
+ {content}
749
+ <code>
750
+ <pre>
751
+ {JSON.stringify({
752
+ name: themeState.themeManager?.state.name,
753
+ parent: themeState.themeManager?.state.parentName,
754
+ id: themeState.themeManager?.id,
755
+ parentId: themeState.themeManager?.parentManager?.id,
756
+ isNew: themeState.isNewTheme,
757
+ onChangeCount,
758
+ })}
759
+ </pre>
760
+ </code>
761
+ </>
762
+ )
763
+ }
764
+ }
765
+
733
766
  if (process.env.TAMAGUI_TARGET === 'web') {
734
767
  if (events || isAnimatedReactNativeWeb) {
735
768
  content = (
@@ -26,7 +26,10 @@ export function hasNoThemeUpdatingProps(props: ThemeProps) {
26
26
  return !(props.name || props.componentName || props.inverse || props.reset)
27
27
  }
28
28
 
29
+ let uid = 0
30
+
29
31
  export class ThemeManager {
32
+ id = uid++
30
33
  themeListeners = new Set<ThemeListener>()
31
34
  parentManager: ThemeManager | null = null
32
35
  state: ThemeManagerState = emptyState
@@ -41,26 +44,28 @@ export class ThemeManager {
41
44
  }
42
45
  if (!parentManager) {
43
46
  if (process.env.NODE_ENV !== 'production') {
44
- console.trace()
45
- throw new Error(`No parent manager given`)
47
+ throw new Error(
48
+ `No parent manager given, this is likely due to duplicated Tamagui dependencies. Check your lockfile for mis-matched versions.`
49
+ )
46
50
  }
47
51
  throw `❌`
48
52
  }
49
- // copy over listeners
50
- this.themeListeners = parentManager.themeListeners
51
53
 
52
54
  // no change no props
53
55
  if (hasNoThemeUpdatingProps(props)) {
54
56
  return parentManager
55
57
  }
58
+
56
59
  if (parentManager) {
57
60
  this.parentManager = parentManager
58
61
  }
62
+
59
63
  const updatedState = this.getStateIfChanged(props)
60
64
  if (updatedState) {
61
65
  this.state = updatedState
62
66
  return
63
67
  }
68
+
64
69
  return parentManager || this
65
70
  }
66
71
 
@@ -76,6 +81,7 @@ export class ThemeManager {
76
81
  }
77
82
  const nextState = this.getStateIfChanged(props)
78
83
  if (nextState) {
84
+ this.props = props
79
85
  this.state = nextState
80
86
  return true
81
87
  }
@@ -172,24 +178,20 @@ function getNextThemeClassName(name: string, isInverting = false) {
172
178
  return next.replace('light_', '').replace('dark_', '')
173
179
  }
174
180
 
175
- const cache = new WeakMap<ThemeProps, [ThemeManager, ThemeManagerState | null]>()
176
-
177
181
  function getState(
178
182
  props: ThemeProps,
179
183
  parentManager?: ThemeManager | null
180
184
  ): ThemeManagerState | null {
181
- const cached = cache.get(props)
182
- if (cached && cached[0] === parentManager) {
183
- return cached[1]
184
- }
185
-
186
185
  const themes = getThemes()
187
186
 
188
187
  if (props.name && props.reset) {
189
188
  throw new Error('Cannot reset + set new name')
190
189
  }
190
+
191
191
  if (props.reset && !parentManager?.parentManager) {
192
- console.warn('Cannot reset no grandparent exists')
192
+ if (process.env.NODE_ENV === 'development') {
193
+ console.warn('Cannot reset no grandparent exists')
194
+ }
193
195
  return null
194
196
  }
195
197
 
@@ -204,12 +206,12 @@ function getState(
204
206
  // components look for most specific, fallback upwards
205
207
  const base = parentName.split(THEME_NAME_SEPARATOR)
206
208
  const lastSegment = base[base.length - 1]
207
- const isParentAComponentTheme =
209
+ const isParentComponentTheme =
208
210
  parentName && lastSegment[0].toUpperCase() === lastSegment[0]
209
- if (isParentAComponentTheme) {
211
+ if (isParentComponentTheme) {
210
212
  base.pop() // always remove componentName they can't nest
211
213
  }
212
- const parentBaseTheme = isParentAComponentTheme
214
+ const parentBaseTheme = isParentComponentTheme
213
215
  ? base.slice(0, base.length).join(THEME_NAME_SEPARATOR)
214
216
  : parentName
215
217
  const max = base.length
@@ -218,9 +220,18 @@ function getState(
218
220
  ? max // component name only don't search upwards
219
221
  : 0
220
222
 
221
- // prettier-ignore
222
223
  // eslint-disable-next-line no-console
223
- if (process.env.NODE_ENV === 'development' && props.debug === 'verbose') [ console.groupCollapsed('ThemeManager.getState()', props, { parentName, parentBaseTheme, base, min, max, isParentAComponentTheme }), console.trace(), console.groupEnd() ]
224
+ if (process.env.NODE_ENV === 'development' && typeof props.debug === 'string') {
225
+ console.groupCollapsed('ThemeManager.getState()')
226
+ console.log({
227
+ parentName,
228
+ parentBaseTheme,
229
+ base,
230
+ min,
231
+ max,
232
+ isParentComponentTheme,
233
+ })
234
+ }
224
235
 
225
236
  for (let i = max; i >= min; i--) {
226
237
  let prefix = base.slice(0, i).join(THEME_NAME_SEPARATOR)
@@ -243,12 +254,8 @@ function getState(
243
254
  if (componentName) {
244
255
  // components only look for component themes
245
256
  if (nextName) {
246
- potentials.push(
247
- `${prefix.slice(
248
- 0,
249
- prefix.indexOf(THEME_NAME_SEPARATOR)
250
- )}_${nextName}_${componentName}`
251
- )
257
+ const beforeSeparator = prefix.slice(0, prefix.indexOf(THEME_NAME_SEPARATOR))
258
+ potentials.push(`${beforeSeparator}_${nextName}_${componentName}`)
252
259
  }
253
260
  potentials.push(`${prefix}_${componentName}`)
254
261
  if (nextName) {
@@ -258,15 +265,11 @@ function getState(
258
265
 
259
266
  const found = potentials.find((t) => t in themes)
260
267
 
261
- // eslint-disable-next-line no-console
262
- if (process.env.NODE_ENV === 'development' && props.debug === 'verbose')
263
- console.log('getState found', found, 'from', potentials, 'parentName', parentName)
268
+ if (process.env.NODE_ENV === 'development' && typeof props.debug === 'string') {
269
+ console.log(' - ', { found, potentials })
270
+ }
264
271
 
265
272
  if (found) {
266
- // optimization return null if not changed
267
- if (found === parentName) {
268
- break
269
- }
270
273
  result = {
271
274
  name: found,
272
275
  theme: getThemeUnwrapped(themes[found]),
@@ -277,8 +280,13 @@ function getState(
277
280
  }
278
281
  }
279
282
 
280
- if (parentManager) {
281
- cache.set(props, [parentManager, result])
283
+ // eslint-disable-next-line no-console
284
+ if (process.env.NODE_ENV === 'development' && typeof props.debug === 'string') {
285
+ console.log({
286
+ result,
287
+ })
288
+ console.trace()
289
+ console.groupEnd()
282
290
  }
283
291
 
284
292
  return result
@@ -881,14 +881,6 @@ export const getSplitStyles: StyleSplitter = (
881
881
  // always do this at the very end to preserve the order strictly (animations, origin)
882
882
  // and allow proper merging of all pseudos before applying
883
883
  if (flatTransforms) {
884
- if (process.env.NODE_ENV === 'development' && debug) {
885
- // eslint-disable-next-line no-console
886
- console.log(
887
- 'Merging flat transforms, transform before',
888
- [...(style.transform || [])],
889
- flatTransforms
890
- )
891
- }
892
884
  mergeTransforms(style, flatTransforms, true)
893
885
  }
894
886