@tamagui/core 1.0.1-beta.98 → 1.0.1-rc.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 (747) hide show
  1. package/dist/cjs/Tamagui.js +12 -6
  2. package/dist/cjs/Tamagui.js.map +2 -2
  3. package/dist/cjs/addTheme.js +77 -0
  4. package/dist/cjs/addTheme.js.map +7 -0
  5. package/dist/cjs/{conf.js → config.js} +25 -13
  6. package/dist/cjs/config.js.map +7 -0
  7. package/dist/cjs/constants/constants.js +16 -23
  8. package/dist/cjs/constants/constants.js.map +2 -2
  9. package/dist/cjs/constants/isDevTools.js +37 -0
  10. package/dist/cjs/constants/isDevTools.js.map +7 -0
  11. package/dist/cjs/constants/platform.js +16 -9
  12. package/dist/cjs/constants/platform.js.map +2 -2
  13. package/dist/cjs/constants/platform.native.js +62 -0
  14. package/dist/cjs/constants/platform.native.js.map +7 -0
  15. package/dist/cjs/contexts/ButtonInsideButtonContext.js +1 -0
  16. package/dist/cjs/contexts/ButtonInsideButtonContext.js.map +1 -1
  17. package/dist/cjs/contexts/ButtonNestingContext.js +30 -0
  18. package/dist/cjs/contexts/ButtonNestingContext.js.map +7 -0
  19. package/dist/cjs/contexts/FontLanguageContext.js +30 -0
  20. package/dist/cjs/contexts/FontLanguageContext.js.map +7 -0
  21. package/dist/cjs/contexts/TextAncestorContext.js +30 -0
  22. package/dist/cjs/contexts/TextAncestorContext.js.map +7 -0
  23. package/dist/cjs/{ThemeContext.js → contexts/ThemeContext.js} +1 -0
  24. package/dist/cjs/contexts/ThemeContext.js.map +7 -0
  25. package/dist/cjs/createComponent.js +583 -644
  26. package/dist/cjs/createComponent.js.map +3 -3
  27. package/dist/cjs/createFont.js +39 -19
  28. package/dist/cjs/createFont.js.map +2 -2
  29. package/dist/cjs/createFont.test.js +125 -0
  30. package/dist/cjs/createFont.test.js.map +7 -0
  31. package/dist/cjs/createShorthands.js +1 -0
  32. package/dist/cjs/createShorthands.js.map +2 -2
  33. package/dist/cjs/createTamagui.js +98 -193
  34. package/dist/cjs/createTamagui.js.map +3 -3
  35. package/dist/cjs/createTheme.js +1 -0
  36. package/dist/cjs/createTheme.js.map +2 -2
  37. package/dist/cjs/createTokens.js +1 -4
  38. package/dist/cjs/createTokens.js.map +2 -2
  39. package/dist/cjs/createTokens.test.js +27 -0
  40. package/dist/cjs/createTokens.test.js.map +7 -0
  41. package/dist/cjs/createVariable.js +36 -40
  42. package/dist/cjs/createVariable.js.map +2 -2
  43. package/dist/cjs/createVariable.test.js +7 -0
  44. package/dist/cjs/createVariable.test.js.map +7 -0
  45. package/dist/cjs/createVariables.js +15 -19
  46. package/dist/cjs/createVariables.js.map +2 -2
  47. package/dist/cjs/helpers/RNComponents.js +12 -11
  48. package/dist/cjs/helpers/RNComponents.js.map +2 -2
  49. package/dist/cjs/helpers/ThemeManager.js +230 -0
  50. package/dist/cjs/helpers/ThemeManager.js.map +7 -0
  51. package/dist/cjs/helpers/ThemeManager.test.js +465 -0
  52. package/dist/cjs/helpers/ThemeManager.test.js.map +7 -0
  53. package/dist/cjs/helpers/ThemeManagerContext.js +30 -0
  54. package/dist/cjs/helpers/ThemeManagerContext.js.map +7 -0
  55. package/dist/cjs/helpers/areEqualSets.js +1 -0
  56. package/dist/cjs/helpers/areEqualSets.js.map +1 -1
  57. package/dist/cjs/helpers/assignNativePropsToWeb.js +1 -0
  58. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +1 -1
  59. package/dist/cjs/helpers/assignNativePropsToWeb.native.js +1 -0
  60. package/dist/cjs/helpers/assignNativePropsToWeb.native.js.map +1 -1
  61. package/dist/cjs/helpers/cache.js +43 -0
  62. package/dist/cjs/helpers/cache.js.map +7 -0
  63. package/dist/cjs/helpers/calc.js +1 -0
  64. package/dist/cjs/helpers/calc.js.map +3 -3
  65. package/dist/cjs/helpers/createMediaStyle.js +23 -9
  66. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  67. package/dist/cjs/helpers/createPropMapper.js +185 -57
  68. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  69. package/dist/cjs/helpers/createProxy.js +43 -0
  70. package/dist/cjs/helpers/createProxy.js.map +7 -0
  71. package/dist/cjs/helpers/createShallowUpdate.js +13 -23
  72. package/dist/cjs/helpers/createShallowUpdate.js.map +2 -2
  73. package/dist/cjs/helpers/expandStyle.js +9 -39
  74. package/dist/cjs/helpers/expandStyle.js.map +3 -3
  75. package/dist/cjs/helpers/expandStyles.js +33 -44
  76. package/dist/cjs/helpers/expandStyles.js.map +2 -2
  77. package/dist/cjs/helpers/extendStaticConfig.js +35 -34
  78. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  79. package/dist/cjs/helpers/fixNativeShadow.js +1 -0
  80. package/dist/cjs/helpers/fixNativeShadow.js.map +1 -1
  81. package/dist/cjs/helpers/getAnimationDriver.js +32 -0
  82. package/dist/cjs/helpers/getAnimationDriver.js.map +7 -0
  83. package/dist/cjs/helpers/getBoundingClientRect.js +37 -0
  84. package/dist/cjs/helpers/getBoundingClientRect.js.map +7 -0
  85. package/dist/cjs/helpers/getExpandedShorthands.js +4 -3
  86. package/dist/cjs/helpers/getExpandedShorthands.js.map +2 -2
  87. package/dist/cjs/helpers/getFont.js +7 -2
  88. package/dist/cjs/helpers/getFont.js.map +2 -2
  89. package/dist/cjs/helpers/getFontLanguage.js +29 -0
  90. package/dist/cjs/helpers/getFontLanguage.js.map +7 -0
  91. package/dist/cjs/helpers/getRect.js +36 -0
  92. package/dist/cjs/helpers/getRect.js.map +7 -0
  93. package/dist/cjs/helpers/getSize.js +3 -2
  94. package/dist/cjs/helpers/getSize.js.map +2 -2
  95. package/dist/cjs/helpers/getSplitStyles.js +538 -228
  96. package/dist/cjs/helpers/getSplitStyles.js.map +3 -3
  97. package/dist/cjs/helpers/getStackSize.js +1 -0
  98. package/dist/cjs/helpers/getStackSize.js.map +1 -1
  99. package/dist/cjs/helpers/getStylesAtomic.js +57 -66
  100. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  101. package/dist/cjs/helpers/getStylesAtomic.native.js +1 -0
  102. package/dist/cjs/helpers/getStylesAtomic.native.js.map +2 -2
  103. package/dist/cjs/helpers/getThemeCSSRules.js +107 -0
  104. package/dist/cjs/helpers/getThemeCSSRules.js.map +7 -0
  105. package/dist/cjs/helpers/getThemeCSSRules.native.js +31 -0
  106. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +7 -0
  107. package/dist/cjs/helpers/getVariantExtras.js +50 -7
  108. package/dist/cjs/helpers/getVariantExtras.js.map +2 -2
  109. package/dist/cjs/helpers/insertStyleRule.js +53 -28
  110. package/dist/cjs/helpers/insertStyleRule.js.map +3 -3
  111. package/dist/cjs/helpers/isObj.js +1 -0
  112. package/dist/cjs/helpers/isObj.js.map +1 -1
  113. package/dist/cjs/helpers/isTamaguiComponent.js +1 -0
  114. package/dist/cjs/helpers/isTamaguiComponent.js.map +2 -2
  115. package/dist/cjs/helpers/isTamaguiElement.js +1 -0
  116. package/dist/cjs/helpers/isTamaguiElement.js.map +2 -2
  117. package/dist/cjs/helpers/matchMedia.js +7 -5
  118. package/dist/cjs/helpers/matchMedia.js.map +2 -2
  119. package/dist/cjs/helpers/matchMedia.native.js +5 -1
  120. package/dist/cjs/helpers/matchMedia.native.js.map +2 -2
  121. package/dist/cjs/helpers/mergeProps.js +19 -14
  122. package/dist/cjs/helpers/mergeProps.js.map +2 -2
  123. package/dist/cjs/helpers/mergeTransform.js +12 -8
  124. package/dist/cjs/helpers/mergeTransform.js.map +2 -2
  125. package/dist/cjs/helpers/normalizeColor.js +6 -2
  126. package/dist/cjs/helpers/normalizeColor.js.map +3 -3
  127. package/dist/cjs/helpers/normalizeValueWithProperty.js +48 -6
  128. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +2 -2
  129. package/dist/cjs/helpers/proxyThemeVariables.js +3 -1
  130. package/dist/cjs/helpers/proxyThemeVariables.js.map +2 -2
  131. package/dist/cjs/helpers/pseudoDescriptors.js +12 -0
  132. package/dist/cjs/helpers/pseudoDescriptors.js.map +2 -2
  133. package/dist/cjs/helpers/registerCSSVariable.js +8 -8
  134. package/dist/cjs/helpers/registerCSSVariable.js.map +2 -2
  135. package/dist/cjs/{constants/rnw.js → helpers/startTransition.js} +13 -9
  136. package/dist/cjs/helpers/startTransition.js.map +7 -0
  137. package/dist/cjs/helpers/themeable.js +17 -43
  138. package/dist/cjs/helpers/themeable.js.map +3 -3
  139. package/dist/cjs/helpers/themes.js +79 -0
  140. package/dist/cjs/helpers/themes.js.map +7 -0
  141. package/dist/cjs/{constants/rnw.native.js → helpers/timer.js} +14 -7
  142. package/dist/cjs/helpers/timer.js.map +7 -0
  143. package/dist/cjs/helpers/useShallowSetState.js +49 -0
  144. package/dist/cjs/helpers/useShallowSetState.js.map +7 -0
  145. package/dist/cjs/helpers/validate.js +1 -124
  146. package/dist/cjs/helpers/validate.js.map +3 -3
  147. package/dist/cjs/helpers/withStaticProperties.js +1 -0
  148. package/dist/cjs/helpers/withStaticProperties.js.map +1 -1
  149. package/dist/cjs/hooks/getThemeUnwrapped.js +37 -0
  150. package/dist/cjs/hooks/getThemeUnwrapped.js.map +7 -0
  151. package/dist/cjs/hooks/useConstant.js +4 -0
  152. package/dist/cjs/hooks/useConstant.js.map +2 -2
  153. package/dist/cjs/hooks/useElementLayout.js +84 -0
  154. package/dist/cjs/hooks/useElementLayout.js.map +7 -0
  155. package/dist/cjs/hooks/useId.js +3 -32
  156. package/dist/cjs/hooks/useId.js.map +2 -2
  157. package/dist/cjs/hooks/useIsMounted.js +1 -0
  158. package/dist/cjs/hooks/useIsMounted.js.map +1 -1
  159. package/dist/cjs/hooks/useIsSSR.js +46 -0
  160. package/dist/cjs/hooks/useIsSSR.js.map +7 -0
  161. package/dist/cjs/hooks/useIsTouchDevice.js +4 -9
  162. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  163. package/dist/cjs/hooks/useMedia.js +165 -120
  164. package/dist/cjs/hooks/useMedia.js.map +3 -3
  165. package/dist/cjs/hooks/usePressable.js +2 -15
  166. package/dist/cjs/hooks/usePressable.js.map +1 -1
  167. package/dist/cjs/hooks/useSafeRef.js +58 -0
  168. package/dist/cjs/hooks/useSafeRef.js.map +7 -0
  169. package/dist/cjs/hooks/useServerHooks.js +36 -0
  170. package/dist/cjs/hooks/useServerHooks.js.map +7 -0
  171. package/dist/cjs/hooks/useTheme.js +182 -163
  172. package/dist/cjs/hooks/useTheme.js.map +3 -3
  173. package/dist/cjs/hooks/useThemeName.js +52 -0
  174. package/dist/cjs/hooks/useThemeName.js.map +7 -0
  175. package/dist/cjs/hooks/useUnmountEffect.js +1 -0
  176. package/dist/cjs/hooks/useUnmountEffect.js.map +1 -1
  177. package/dist/cjs/index.js +41 -30
  178. package/dist/cjs/index.js.map +2 -2
  179. package/dist/cjs/inject-styles.js +40 -0
  180. package/dist/cjs/inject-styles.js.map +7 -0
  181. package/dist/cjs/injectStyles.js +40 -0
  182. package/dist/cjs/injectStyles.js.map +7 -0
  183. package/dist/cjs/insertFont.js +19 -15
  184. package/dist/cjs/insertFont.js.map +2 -2
  185. package/dist/cjs/setupReactNative.js +50 -0
  186. package/dist/cjs/setupReactNative.js.map +7 -0
  187. package/dist/cjs/static.js +2 -17
  188. package/dist/cjs/static.js.map +2 -2
  189. package/dist/cjs/styled.js +30 -49
  190. package/dist/cjs/styled.js.map +2 -2
  191. package/dist/cjs/types-rnw.js +1 -0
  192. package/dist/cjs/types-rnw.js.map +1 -1
  193. package/dist/cjs/types.js +1 -0
  194. package/dist/cjs/types.js.map +2 -2
  195. package/dist/cjs/updateTheme.js +47 -0
  196. package/dist/cjs/updateTheme.js.map +7 -0
  197. package/dist/cjs/{Pressability.js → vendor/Pressability.js} +6 -2
  198. package/dist/cjs/vendor/Pressability.js.map +7 -0
  199. package/dist/cjs/{Pressability.native.js → vendor/Pressability.native.js} +6 -2
  200. package/dist/cjs/vendor/Pressability.native.js.map +7 -0
  201. package/dist/cjs/views/FontLanguage.js +38 -0
  202. package/dist/cjs/views/FontLanguage.js.map +7 -0
  203. package/dist/cjs/views/FontLanguage.native.js +38 -0
  204. package/dist/cjs/views/FontLanguage.native.js.map +7 -0
  205. package/dist/cjs/{helpers/nativeGestureHandler.native.js → views/FontLanguage.types.js} +4 -5
  206. package/dist/cjs/views/FontLanguage.types.js.map +7 -0
  207. package/dist/cjs/views/Slot.js +49 -52
  208. package/dist/cjs/views/Slot.js.map +2 -2
  209. package/dist/cjs/views/Stack.js +4 -19
  210. package/dist/cjs/views/Stack.js.map +2 -2
  211. package/dist/cjs/views/TamaguiProvider.js +83 -0
  212. package/dist/cjs/views/TamaguiProvider.js.map +7 -0
  213. package/dist/cjs/views/Text.js +32 -29
  214. package/dist/cjs/views/Text.js.map +2 -2
  215. package/dist/cjs/views/Theme.js +55 -23
  216. package/dist/cjs/views/Theme.js.map +3 -3
  217. package/dist/cjs/views/ThemeInverse.js +22 -20
  218. package/dist/cjs/views/ThemeInverse.js.map +2 -2
  219. package/dist/cjs/views/ThemeProvider.js +14 -27
  220. package/dist/cjs/views/ThemeProvider.js.map +3 -3
  221. package/dist/cjs/views/ThemeReset.js +11 -5
  222. package/dist/cjs/views/ThemeReset.js.map +3 -3
  223. package/dist/esm/Tamagui.js +7 -5
  224. package/dist/esm/Tamagui.js.map +2 -2
  225. package/dist/esm/addTheme.js +53 -0
  226. package/dist/esm/addTheme.js.map +7 -0
  227. package/dist/esm/{conf.js → config.js} +18 -8
  228. package/dist/esm/config.js.map +7 -0
  229. package/dist/esm/constants/constants.js +13 -24
  230. package/dist/esm/constants/constants.js.map +2 -2
  231. package/dist/esm/constants/isDevTools.js +13 -0
  232. package/dist/esm/constants/isDevTools.js.map +7 -0
  233. package/dist/esm/constants/platform.js +11 -7
  234. package/dist/esm/constants/platform.js.map +2 -2
  235. package/dist/esm/constants/platform.native.js +28 -0
  236. package/dist/esm/constants/platform.native.js.map +7 -0
  237. package/dist/esm/contexts/ButtonInsideButtonContext.js +0 -0
  238. package/dist/esm/contexts/ButtonInsideButtonContext.js.map +1 -1
  239. package/dist/esm/contexts/ButtonNestingContext.js +6 -0
  240. package/dist/esm/contexts/ButtonNestingContext.js.map +7 -0
  241. package/dist/esm/contexts/FontLanguageContext.js +6 -0
  242. package/dist/esm/contexts/FontLanguageContext.js.map +7 -0
  243. package/dist/esm/contexts/TextAncestorContext.js +6 -0
  244. package/dist/esm/contexts/TextAncestorContext.js.map +7 -0
  245. package/dist/esm/{ThemeContext.js → contexts/ThemeContext.js} +0 -0
  246. package/dist/esm/contexts/ThemeContext.js.map +7 -0
  247. package/dist/esm/createComponent.js +583 -648
  248. package/dist/esm/createComponent.js.map +3 -3
  249. package/dist/esm/createFont.js +38 -19
  250. package/dist/esm/createFont.js.map +2 -2
  251. package/dist/esm/createFont.test.js +124 -0
  252. package/dist/esm/createFont.test.js.map +7 -0
  253. package/dist/esm/createShorthands.js +0 -0
  254. package/dist/esm/createShorthands.js.map +2 -2
  255. package/dist/esm/createTamagui.js +95 -192
  256. package/dist/esm/createTamagui.js.map +3 -3
  257. package/dist/esm/createTheme.js +0 -0
  258. package/dist/esm/createTheme.js.map +2 -2
  259. package/dist/esm/createTokens.js +0 -4
  260. package/dist/esm/createTokens.js.map +2 -2
  261. package/dist/esm/createTokens.test.js +26 -0
  262. package/dist/esm/createTokens.test.js.map +7 -0
  263. package/dist/esm/createVariable.js +32 -38
  264. package/dist/esm/createVariable.js.map +2 -2
  265. package/dist/esm/createVariable.test.js +6 -0
  266. package/dist/esm/createVariable.test.js.map +7 -0
  267. package/dist/esm/createVariables.js +14 -19
  268. package/dist/esm/createVariables.js.map +2 -2
  269. package/dist/esm/helpers/RNComponents.js +11 -8
  270. package/dist/esm/helpers/RNComponents.js.map +2 -2
  271. package/dist/esm/helpers/ThemeManager.js +186 -0
  272. package/dist/esm/helpers/ThemeManager.js.map +7 -0
  273. package/dist/esm/helpers/ThemeManager.test.js +464 -0
  274. package/dist/esm/helpers/ThemeManager.test.js.map +7 -0
  275. package/dist/esm/helpers/ThemeManagerContext.js +6 -0
  276. package/dist/esm/helpers/ThemeManagerContext.js.map +7 -0
  277. package/dist/esm/helpers/areEqualSets.js +0 -0
  278. package/dist/esm/helpers/areEqualSets.js.map +0 -0
  279. package/dist/esm/helpers/assignNativePropsToWeb.js +0 -0
  280. package/dist/esm/helpers/assignNativePropsToWeb.js.map +1 -1
  281. package/dist/esm/helpers/assignNativePropsToWeb.native.js +0 -0
  282. package/dist/esm/helpers/assignNativePropsToWeb.native.js.map +1 -1
  283. package/dist/esm/helpers/cache.js +18 -0
  284. package/dist/esm/helpers/cache.js.map +7 -0
  285. package/dist/esm/helpers/calc.js +0 -0
  286. package/dist/esm/helpers/calc.js.map +3 -3
  287. package/dist/esm/helpers/createMediaStyle.js +22 -9
  288. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  289. package/dist/esm/helpers/createPropMapper.js +180 -55
  290. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  291. package/dist/esm/helpers/createProxy.js +19 -0
  292. package/dist/esm/helpers/createProxy.js.map +7 -0
  293. package/dist/esm/helpers/createShallowUpdate.js +12 -25
  294. package/dist/esm/helpers/createShallowUpdate.js.map +2 -2
  295. package/dist/esm/helpers/expandStyle.js +8 -41
  296. package/dist/esm/helpers/expandStyle.js.map +3 -3
  297. package/dist/esm/helpers/expandStyles.js +32 -46
  298. package/dist/esm/helpers/expandStyles.js.map +2 -2
  299. package/dist/esm/helpers/extendStaticConfig.js +34 -36
  300. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  301. package/dist/esm/helpers/fixNativeShadow.js +0 -0
  302. package/dist/esm/helpers/fixNativeShadow.js.map +0 -0
  303. package/dist/esm/helpers/getAnimationDriver.js +8 -0
  304. package/dist/esm/helpers/getAnimationDriver.js.map +7 -0
  305. package/dist/esm/helpers/getBoundingClientRect.js +13 -0
  306. package/dist/esm/helpers/getBoundingClientRect.js.map +7 -0
  307. package/dist/esm/helpers/getExpandedShorthands.js +2 -2
  308. package/dist/esm/helpers/getExpandedShorthands.js.map +2 -2
  309. package/dist/esm/helpers/getFont.js +6 -2
  310. package/dist/esm/helpers/getFont.js.map +2 -2
  311. package/dist/esm/helpers/getFontLanguage.js +5 -0
  312. package/dist/esm/helpers/getFontLanguage.js.map +7 -0
  313. package/dist/esm/helpers/getRect.js +12 -0
  314. package/dist/esm/helpers/getRect.js.map +7 -0
  315. package/dist/esm/helpers/getSize.js +2 -2
  316. package/dist/esm/helpers/getSize.js.map +2 -2
  317. package/dist/esm/helpers/getSplitStyles.js +551 -229
  318. package/dist/esm/helpers/getSplitStyles.js.map +3 -3
  319. package/dist/esm/helpers/getStackSize.js +0 -0
  320. package/dist/esm/helpers/getStackSize.js.map +1 -1
  321. package/dist/esm/helpers/getStylesAtomic.js +53 -60
  322. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  323. package/dist/esm/helpers/getStylesAtomic.native.js +0 -0
  324. package/dist/esm/helpers/getStylesAtomic.native.js.map +2 -2
  325. package/dist/esm/helpers/getThemeCSSRules.js +83 -0
  326. package/dist/esm/helpers/getThemeCSSRules.js.map +7 -0
  327. package/dist/esm/helpers/getThemeCSSRules.native.js +7 -0
  328. package/dist/esm/helpers/getThemeCSSRules.native.js.map +7 -0
  329. package/dist/esm/helpers/getVariantExtras.js +47 -6
  330. package/dist/esm/helpers/getVariantExtras.js.map +2 -2
  331. package/dist/esm/helpers/insertStyleRule.js +48 -25
  332. package/dist/esm/helpers/insertStyleRule.js.map +3 -3
  333. package/dist/esm/helpers/isObj.js +0 -0
  334. package/dist/esm/helpers/isObj.js.map +0 -0
  335. package/dist/esm/helpers/isTamaguiComponent.js +0 -0
  336. package/dist/esm/helpers/isTamaguiComponent.js.map +2 -2
  337. package/dist/esm/helpers/isTamaguiElement.js +0 -0
  338. package/dist/esm/helpers/isTamaguiElement.js.map +2 -2
  339. package/dist/esm/helpers/matchMedia.js +6 -5
  340. package/dist/esm/helpers/matchMedia.js.map +2 -2
  341. package/dist/esm/helpers/matchMedia.native.js +0 -0
  342. package/dist/esm/helpers/matchMedia.native.js.map +1 -1
  343. package/dist/esm/helpers/mergeProps.js +18 -14
  344. package/dist/esm/helpers/mergeProps.js.map +2 -2
  345. package/dist/esm/helpers/mergeTransform.js +8 -6
  346. package/dist/esm/helpers/mergeTransform.js.map +2 -2
  347. package/dist/esm/helpers/normalizeColor.js +1 -1
  348. package/dist/esm/helpers/normalizeColor.js.map +2 -2
  349. package/dist/esm/helpers/normalizeValueWithProperty.js +45 -5
  350. package/dist/esm/helpers/normalizeValueWithProperty.js.map +2 -2
  351. package/dist/esm/helpers/proxyThemeVariables.js +2 -1
  352. package/dist/esm/helpers/proxyThemeVariables.js.map +2 -2
  353. package/dist/esm/helpers/pseudoDescriptors.js +11 -0
  354. package/dist/esm/helpers/pseudoDescriptors.js.map +2 -2
  355. package/dist/esm/helpers/registerCSSVariable.js +5 -6
  356. package/dist/esm/helpers/registerCSSVariable.js.map +2 -2
  357. package/dist/esm/helpers/startTransition.js +6 -0
  358. package/dist/esm/helpers/startTransition.js.map +7 -0
  359. package/dist/esm/helpers/themeable.js +12 -44
  360. package/dist/esm/helpers/themeable.js.map +2 -2
  361. package/dist/esm/helpers/themes.js +54 -0
  362. package/dist/esm/helpers/themes.js.map +7 -0
  363. package/dist/esm/helpers/timer.js +11 -0
  364. package/dist/esm/helpers/timer.js.map +7 -0
  365. package/dist/esm/helpers/useShallowSetState.js +25 -0
  366. package/dist/esm/helpers/useShallowSetState.js.map +7 -0
  367. package/dist/esm/helpers/validate.js +0 -98
  368. package/dist/esm/helpers/validate.js.map +3 -3
  369. package/dist/esm/helpers/withStaticProperties.js +0 -0
  370. package/dist/esm/helpers/withStaticProperties.js.map +0 -0
  371. package/dist/esm/hooks/getThemeUnwrapped.js +12 -0
  372. package/dist/esm/hooks/getThemeUnwrapped.js.map +7 -0
  373. package/dist/esm/hooks/useConstant.js +4 -1
  374. package/dist/esm/hooks/useConstant.js.map +2 -2
  375. package/dist/esm/hooks/useElementLayout.js +59 -0
  376. package/dist/esm/hooks/useElementLayout.js.map +7 -0
  377. package/dist/esm/hooks/useId.js +1 -28
  378. package/dist/esm/hooks/useId.js.map +2 -2
  379. package/dist/esm/hooks/useIsMounted.js +0 -0
  380. package/dist/esm/hooks/useIsMounted.js.map +1 -1
  381. package/dist/esm/hooks/useIsSSR.js +22 -0
  382. package/dist/esm/hooks/useIsSSR.js.map +7 -0
  383. package/dist/esm/hooks/useIsTouchDevice.js +3 -9
  384. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  385. package/dist/esm/hooks/useMedia.js +159 -122
  386. package/dist/esm/hooks/useMedia.js.map +3 -3
  387. package/dist/esm/hooks/usePressable.js +1 -16
  388. package/dist/esm/hooks/usePressable.js.map +1 -1
  389. package/dist/esm/hooks/useSafeRef.js +34 -0
  390. package/dist/esm/hooks/useSafeRef.js.map +7 -0
  391. package/dist/esm/hooks/useServerHooks.js +11 -0
  392. package/dist/esm/hooks/useServerHooks.js.map +7 -0
  393. package/dist/esm/hooks/useTheme.js +178 -162
  394. package/dist/esm/hooks/useTheme.js.map +3 -3
  395. package/dist/esm/hooks/useThemeName.js +28 -0
  396. package/dist/esm/hooks/useThemeName.js.map +7 -0
  397. package/dist/esm/hooks/useUnmountEffect.js +0 -0
  398. package/dist/esm/hooks/useUnmountEffect.js.map +1 -1
  399. package/dist/esm/index.js +37 -22
  400. package/dist/esm/index.js.map +2 -2
  401. package/dist/esm/inject-styles.js +16 -0
  402. package/dist/esm/inject-styles.js.map +7 -0
  403. package/dist/esm/injectStyles.js +16 -0
  404. package/dist/esm/injectStyles.js.map +7 -0
  405. package/dist/esm/insertFont.js +18 -15
  406. package/dist/esm/insertFont.js.map +2 -2
  407. package/dist/esm/setupReactNative.js +24 -0
  408. package/dist/esm/setupReactNative.js.map +7 -0
  409. package/dist/esm/static.js +1 -17
  410. package/dist/esm/static.js.map +2 -2
  411. package/dist/esm/styled.js +29 -51
  412. package/dist/esm/styled.js.map +2 -2
  413. package/dist/esm/types-rnw.js +0 -0
  414. package/dist/esm/types-rnw.js.map +0 -0
  415. package/dist/esm/types.js +0 -0
  416. package/dist/esm/types.js.map +0 -0
  417. package/dist/esm/updateTheme.js +23 -0
  418. package/dist/esm/updateTheme.js.map +7 -0
  419. package/dist/esm/{Pressability.js → vendor/Pressability.js} +3 -1
  420. package/dist/esm/vendor/Pressability.js.map +7 -0
  421. package/dist/esm/{Pressability.native.js → vendor/Pressability.native.js} +3 -1
  422. package/dist/esm/vendor/Pressability.native.js.map +7 -0
  423. package/dist/esm/views/FontLanguage.js +14 -0
  424. package/dist/esm/views/FontLanguage.js.map +7 -0
  425. package/dist/esm/views/FontLanguage.native.js +14 -0
  426. package/dist/esm/views/FontLanguage.native.js.map +7 -0
  427. package/dist/esm/views/FontLanguage.types.js +1 -0
  428. package/dist/{cjs/defaultComponentState.js.map → esm/views/FontLanguage.types.js.map} +0 -0
  429. package/dist/esm/views/Slot.js +47 -50
  430. package/dist/esm/views/Slot.js.map +2 -2
  431. package/dist/esm/views/Stack.js +3 -21
  432. package/dist/esm/views/Stack.js.map +2 -2
  433. package/dist/esm/views/TamaguiProvider.js +53 -0
  434. package/dist/esm/views/TamaguiProvider.js.map +7 -0
  435. package/dist/esm/views/Text.js +29 -29
  436. package/dist/esm/views/Text.js.map +2 -2
  437. package/dist/esm/views/Theme.js +48 -21
  438. package/dist/esm/views/Theme.js.map +2 -2
  439. package/dist/esm/views/ThemeInverse.js +20 -15
  440. package/dist/esm/views/ThemeInverse.js.map +2 -2
  441. package/dist/esm/views/ThemeProvider.js +11 -22
  442. package/dist/esm/views/ThemeProvider.js.map +2 -2
  443. package/dist/esm/views/ThemeReset.js +6 -4
  444. package/dist/esm/views/ThemeReset.js.map +2 -2
  445. package/package.json +51 -19
  446. package/reset.css +1 -9
  447. package/src/Tamagui.ts +48 -0
  448. package/src/__snapshots__/createTokens.test.ts.snap +877 -0
  449. package/src/addTheme.ts +65 -0
  450. package/src/config.ts +52 -0
  451. package/src/constants/constants.ts +19 -0
  452. package/src/constants/isDevTools.ts +12 -0
  453. package/src/contexts/ButtonNestingContext.tsx +3 -0
  454. package/src/contexts/FontLanguageContext.tsx +5 -0
  455. package/src/contexts/TextAncestorContext.tsx +3 -0
  456. package/src/createComponent.tsx +1280 -0
  457. package/src/createFont.test.ts +129 -0
  458. package/src/createFont.ts +52 -0
  459. package/src/createShorthands.ts +7 -0
  460. package/src/createTamagui.ts +230 -0
  461. package/src/createTheme.ts +13 -0
  462. package/src/createTokens.test.ts +29 -0
  463. package/src/createTokens.ts +35 -0
  464. package/src/createVariable.test.ts +7 -0
  465. package/src/createVariable.ts +79 -0
  466. package/src/createVariables.ts +42 -0
  467. package/src/helpers/RNComponents.tsx +14 -0
  468. package/src/helpers/ThemeManager.test.tsx +497 -0
  469. package/src/helpers/ThemeManager.tsx +252 -0
  470. package/src/helpers/ThemeManagerContext.tsx +5 -0
  471. package/src/helpers/cache.ts +18 -0
  472. package/src/helpers/createMediaStyle.ts +55 -0
  473. package/src/helpers/createPropMapper.ts +526 -0
  474. package/src/helpers/createProxy.ts +16 -0
  475. package/src/helpers/expandStyle.ts +81 -0
  476. package/src/helpers/expandStyles.ts +106 -0
  477. package/src/helpers/extendStaticConfig.ts +75 -0
  478. package/src/helpers/fixNativeShadow.tsx +2 -0
  479. package/src/helpers/getAnimationDriver.tsx +5 -0
  480. package/src/helpers/getBoundingClientRect.tsx +7 -0
  481. package/src/helpers/getExpandedShorthands.ts +15 -0
  482. package/src/helpers/getFontLanguage.ts +2 -0
  483. package/src/helpers/getRect.tsx +8 -0
  484. package/src/helpers/getSize.ts +22 -0
  485. package/src/helpers/getSplitStyles.tsx +980 -0
  486. package/src/helpers/getStylesAtomic.native.ts +4 -0
  487. package/src/helpers/getStylesAtomic.ts +275 -0
  488. package/src/helpers/getThemeCSSRules.native.ts +3 -0
  489. package/src/helpers/getThemeCSSRules.ts +112 -0
  490. package/src/helpers/getVariantExtras.tsx +85 -0
  491. package/src/helpers/insertStyleRule.tsx +163 -0
  492. package/src/helpers/isObj.ts +1 -0
  493. package/src/helpers/isTamaguiComponent.tsx +15 -0
  494. package/src/helpers/isTamaguiElement.tsx +12 -0
  495. package/src/helpers/matchMedia.native.ts +6 -0
  496. package/src/helpers/matchMedia.ts +17 -0
  497. package/src/helpers/mergeProps.ts +56 -0
  498. package/src/helpers/mergeTransform.ts +23 -0
  499. package/src/helpers/normalizeColor.ts +53 -0
  500. package/src/helpers/normalizeValueWithProperty.ts +123 -0
  501. package/src/helpers/proxyThemeVariables.tsx +15 -0
  502. package/src/helpers/pseudoDescriptors.ts +40 -0
  503. package/src/helpers/registerCSSVariable.ts +11 -0
  504. package/src/helpers/themeable.tsx +44 -0
  505. package/src/helpers/themes.ts +69 -0
  506. package/src/helpers/timer.ts +9 -0
  507. package/src/helpers/useShallowSetState.tsx +29 -0
  508. package/src/helpers/withStaticProperties.tsx +7 -0
  509. package/src/hooks/getThemeUnwrapped.tsx +7 -0
  510. package/src/hooks/useElementLayout.tsx +85 -0
  511. package/src/hooks/useId.tsx +1 -0
  512. package/src/hooks/useIsTouchDevice.tsx +6 -0
  513. package/src/hooks/useMedia.tsx +265 -0
  514. package/src/hooks/useSafeRef.ts +48 -0
  515. package/src/hooks/useServerHooks.tsx +12 -0
  516. package/src/hooks/useTheme.tsx +243 -0
  517. package/src/hooks/useThemeName.tsx +27 -0
  518. package/src/index.ts +73 -0
  519. package/src/inject-styles.ts +20 -0
  520. package/src/insertFont.ts +70 -0
  521. package/src/setupReactNative.ts +20 -0
  522. package/src/static.ts +5 -0
  523. package/src/styled.tsx +172 -0
  524. package/src/types-rnw.tsx +162 -0
  525. package/src/types.tsx +1350 -0
  526. package/src/updateTheme.ts +26 -0
  527. package/src/vendor/Pressability.native.tsx +3 -0
  528. package/src/vendor/Pressability.tsx +2 -0
  529. package/src/views/FontLanguage.native.tsx +10 -0
  530. package/src/views/FontLanguage.tsx +18 -0
  531. package/src/views/FontLanguage.types.ts +13 -0
  532. package/src/views/Slot.tsx +147 -0
  533. package/src/views/Stack.tsx +24 -0
  534. package/src/views/TamaguiProvider.tsx +59 -0
  535. package/src/views/Text.tsx +87 -0
  536. package/src/views/Theme.tsx +77 -0
  537. package/src/views/ThemeProvider.tsx +41 -0
  538. package/types/Tamagui.d.ts +9 -7
  539. package/types/addTheme.d.ts +32 -0
  540. package/types/config.d.ts +46 -0
  541. package/types/constants/constants.d.ts +14 -3
  542. package/types/constants/isDevTools.d.ts +2 -0
  543. package/types/contexts/ButtonNestingContext.d.ts +3 -0
  544. package/types/contexts/FontLanguageContext.d.ts +5 -0
  545. package/types/contexts/TextAncestorContext.d.ts +3 -0
  546. package/types/createComponent.d.ts +4 -27
  547. package/types/createFont.d.ts +0 -0
  548. package/types/createFont.test.d.ts +2 -0
  549. package/types/createShorthands.d.ts +2 -1
  550. package/types/createTamagui.d.ts +2 -25
  551. package/types/createTheme.d.ts +1 -1
  552. package/types/createTokens.d.ts +5 -5
  553. package/types/createTokens.test.d.ts +2 -0
  554. package/types/createVariable.d.ts +15 -10
  555. package/types/createVariable.test.d.ts +2 -0
  556. package/types/createVariables.d.ts +1 -1
  557. package/types/helpers/RNComponents.d.ts +1 -1
  558. package/types/helpers/ThemeManager.d.ts +36 -0
  559. package/types/helpers/ThemeManager.test.d.ts +2 -0
  560. package/types/helpers/ThemeManagerContext.d.ts +4 -0
  561. package/types/helpers/cache.d.ts +12 -0
  562. package/types/helpers/createMediaStyle.d.ts +2 -4
  563. package/types/helpers/createPropMapper.d.ts +3 -1
  564. package/types/helpers/createProxy.d.ts +2 -0
  565. package/types/helpers/expandStyle.d.ts +4 -0
  566. package/types/helpers/expandStyles.d.ts +20 -1
  567. package/types/helpers/extendStaticConfig.d.ts +0 -0
  568. package/types/helpers/fixNativeShadow.d.ts +0 -0
  569. package/types/helpers/getAnimationDriver.d.ts +6 -0
  570. package/types/helpers/getBoundingClientRect.d.ts +2 -0
  571. package/types/helpers/getExpandedShorthands.d.ts +0 -0
  572. package/types/helpers/getFontLanguage.d.ts +2 -0
  573. package/types/helpers/getRect.d.ts +9 -0
  574. package/types/helpers/getSize.d.ts +0 -0
  575. package/types/helpers/getSplitStyles.d.ts +32 -16
  576. package/types/helpers/getStylesAtomic.d.ts +11 -10
  577. package/types/helpers/getStylesAtomic.native.d.ts +0 -0
  578. package/types/helpers/getThemeCSSRules.d.ts +8 -0
  579. package/types/helpers/getThemeCSSRules.native.d.ts +2 -0
  580. package/types/helpers/getVariantExtras.d.ts +4 -6
  581. package/types/helpers/insertStyleRule.d.ts +8 -4
  582. package/types/helpers/isObj.d.ts +0 -0
  583. package/types/helpers/isTamaguiComponent.d.ts +1 -1
  584. package/types/helpers/isTamaguiElement.d.ts +5 -1
  585. package/types/helpers/matchMedia.d.ts +1 -1
  586. package/types/helpers/matchMedia.native.d.ts +0 -0
  587. package/types/helpers/mergeProps.d.ts +16 -1
  588. package/types/helpers/mergeTransform.d.ts +6 -4
  589. package/types/helpers/normalizeColor.d.ts +0 -0
  590. package/types/helpers/normalizeValueWithProperty.d.ts +5 -0
  591. package/types/helpers/proxyThemeVariables.d.ts +0 -0
  592. package/types/helpers/pseudoDescriptors.d.ts +8 -14
  593. package/types/helpers/registerCSSVariable.d.ts +3 -3
  594. package/types/helpers/themeable.d.ts +7 -7
  595. package/types/helpers/themes.d.ts +4 -0
  596. package/types/helpers/timer.d.ts +2 -0
  597. package/types/helpers/useShallowSetState.d.ts +4 -0
  598. package/types/helpers/withStaticProperties.d.ts +0 -0
  599. package/types/hooks/getThemeUnwrapped.d.ts +3 -0
  600. package/types/hooks/useElementLayout.d.ts +19 -0
  601. package/types/hooks/useId.d.ts +1 -8
  602. package/types/hooks/useIsTouchDevice.d.ts +0 -0
  603. package/types/hooks/useMedia.d.ts +22 -6
  604. package/types/hooks/useSafeRef.d.ts +4 -0
  605. package/types/hooks/useServerHooks.d.ts +4 -0
  606. package/types/hooks/useTheme.d.ts +11 -41
  607. package/types/hooks/useThemeName.d.ts +5 -0
  608. package/types/index.d.ts +17 -17
  609. package/types/inject-styles.d.ts +7 -0
  610. package/types/insertFont.d.ts +4 -1
  611. package/types/setupReactNative.d.ts +5 -0
  612. package/types/static.d.ts +1 -17
  613. package/types/styled.d.ts +6 -2
  614. package/types/types-rnw.d.ts +0 -0
  615. package/types/types.d.ts +299 -90
  616. package/types/updateTheme.d.ts +30 -0
  617. package/types/vendor/Pressability.d.ts +3 -0
  618. package/types/vendor/Pressability.native.d.ts +3 -0
  619. package/types/views/FontLanguage.d.ts +4 -0
  620. package/types/views/FontLanguage.native.d.ts +4 -0
  621. package/types/views/FontLanguage.types.d.ts +11 -0
  622. package/types/views/Slot.d.ts +4 -4
  623. package/types/views/Stack.d.ts +1 -1
  624. package/types/views/TamaguiProvider.d.ts +4 -0
  625. package/types/views/Text.d.ts +1 -1
  626. package/types/views/Theme.d.ts +4 -3
  627. package/types/views/ThemeProvider.d.ts +0 -1
  628. package/dist/cjs/Pressability.js.map +0 -7
  629. package/dist/cjs/Pressability.native.js.map +0 -7
  630. package/dist/cjs/ThemeContext.js.map +0 -7
  631. package/dist/cjs/ThemeManager.js +0 -204
  632. package/dist/cjs/ThemeManager.js.map +0 -7
  633. package/dist/cjs/conf.js.map +0 -7
  634. package/dist/cjs/constants/rnw.js.map +0 -7
  635. package/dist/cjs/constants/rnw.native.js.map +0 -7
  636. package/dist/cjs/defaultComponentState.js +0 -1
  637. package/dist/cjs/helpers/createTamaguiProvider.js +0 -91
  638. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  639. package/dist/cjs/helpers/getTextSize.js +0 -55
  640. package/dist/cjs/helpers/getTextSize.js.map +0 -7
  641. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  642. package/dist/cjs/helpers/wrapThemeManagerContext.js +0 -37
  643. package/dist/cjs/helpers/wrapThemeManagerContext.js.map +0 -7
  644. package/dist/cjs/hooks/useFeatures.js +0 -230
  645. package/dist/cjs/hooks/useFeatures.js.map +0 -7
  646. package/dist/cjs/hooks/usePrevious.js +0 -1
  647. package/dist/cjs/hooks/usePrevious.js.map +0 -7
  648. package/dist/cjs/views/TextAncestorContext.js +0 -43
  649. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  650. package/dist/esm/Pressability.js.map +0 -7
  651. package/dist/esm/Pressability.native.js.map +0 -7
  652. package/dist/esm/ThemeContext.js.map +0 -7
  653. package/dist/esm/ThemeManager.js +0 -179
  654. package/dist/esm/ThemeManager.js.map +0 -7
  655. package/dist/esm/conf.js.map +0 -7
  656. package/dist/esm/constants/rnw.js +0 -6
  657. package/dist/esm/constants/rnw.js.map +0 -7
  658. package/dist/esm/constants/rnw.native.js +0 -5
  659. package/dist/esm/constants/rnw.native.js.map +0 -7
  660. package/dist/esm/defaultComponentState.js +0 -1
  661. package/dist/esm/defaultComponentState.js.map +0 -7
  662. package/dist/esm/helpers/createTamaguiProvider.js +0 -67
  663. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  664. package/dist/esm/helpers/getTextSize.js +0 -32
  665. package/dist/esm/helpers/getTextSize.js.map +0 -7
  666. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  667. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  668. package/dist/esm/helpers/wrapThemeManagerContext.js +0 -11
  669. package/dist/esm/helpers/wrapThemeManagerContext.js.map +0 -7
  670. package/dist/esm/hooks/useFeatures.js +0 -206
  671. package/dist/esm/hooks/useFeatures.js.map +0 -7
  672. package/dist/esm/hooks/usePrevious.js +0 -1
  673. package/dist/esm/hooks/usePrevious.js.map +0 -7
  674. package/dist/esm/views/TextAncestorContext.js +0 -15
  675. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  676. package/types/Pressability.d.ts +0 -2
  677. package/types/Pressability.native.d.ts +0 -2
  678. package/types/Tamagui.d.ts.map +0 -1
  679. package/types/ThemeContext.d.ts +0 -7
  680. package/types/ThemeContext.d.ts.map +0 -1
  681. package/types/ThemeManager.d.ts +0 -52
  682. package/types/ThemeManager.d.ts.map +0 -1
  683. package/types/conf.d.ts +0 -26
  684. package/types/conf.d.ts.map +0 -1
  685. package/types/constants/platform.d.ts +0 -12
  686. package/types/constants/rnw.d.ts +0 -2
  687. package/types/constants/rnw.d.ts.map +0 -1
  688. package/types/constants/rnw.native.d.ts +0 -2
  689. package/types/contexts/ButtonInsideButtonContext.d.ts +0 -3
  690. package/types/createComponent.d.ts.map +0 -1
  691. package/types/createFont.d.ts.map +0 -1
  692. package/types/createTamagui.d.ts.map +0 -1
  693. package/types/createTokens.d.ts.map +0 -1
  694. package/types/defaultComponentState.d.ts +0 -1
  695. package/types/helpers/areEqualSets.d.ts +0 -2
  696. package/types/helpers/assignNativePropsToWeb.d.ts +0 -2
  697. package/types/helpers/assignNativePropsToWeb.d.ts.map +0 -1
  698. package/types/helpers/assignNativePropsToWeb.native.d.ts +0 -2
  699. package/types/helpers/calc.d.ts +0 -12
  700. package/types/helpers/calc.d.ts.map +0 -1
  701. package/types/helpers/createMediaStyle.d.ts.map +0 -1
  702. package/types/helpers/createPropMapper.d.ts.map +0 -1
  703. package/types/helpers/createShallowUpdate.d.ts +0 -3
  704. package/types/helpers/createTamaguiProvider.d.ts +0 -4
  705. package/types/helpers/createTamaguiProvider.d.ts.map +0 -1
  706. package/types/helpers/expandStyles.d.ts.map +0 -1
  707. package/types/helpers/extendStaticConfig.d.ts.map +0 -1
  708. package/types/helpers/getExpandedShorthands.d.ts.map +0 -1
  709. package/types/helpers/getFont.d.ts +0 -3
  710. package/types/helpers/getFont.d.ts.map +0 -1
  711. package/types/helpers/getSize.d.ts.map +0 -1
  712. package/types/helpers/getSplitStyles.d.ts.map +0 -1
  713. package/types/helpers/getStackSize.d.ts +0 -8
  714. package/types/helpers/getStackSize.d.ts.map +0 -1
  715. package/types/helpers/getStylesAtomic.d.ts.map +0 -1
  716. package/types/helpers/getVariantExtras.d.ts.map +0 -1
  717. package/types/helpers/isTamaguiComponent.d.ts.map +0 -1
  718. package/types/helpers/isTamaguiElement.d.ts.map +0 -1
  719. package/types/helpers/nativeGestureHandler.native.d.ts +0 -2
  720. package/types/helpers/themeable.d.ts.map +0 -1
  721. package/types/helpers/validate.d.ts +0 -4
  722. package/types/helpers/wrapThemeManagerContext.d.ts +0 -3
  723. package/types/helpers/wrapThemeManagerContext.d.ts.map +0 -1
  724. package/types/hooks/useConstant.d.ts +0 -2
  725. package/types/hooks/useFeatures.d.ts +0 -24
  726. package/types/hooks/useFeatures.d.ts.map +0 -1
  727. package/types/hooks/useIsMounted.d.ts +0 -3
  728. package/types/hooks/useMedia.d.ts.map +0 -1
  729. package/types/hooks/usePressable.d.ts +0 -3
  730. package/types/hooks/usePrevious.d.ts +0 -1
  731. package/types/hooks/useTheme.d.ts.map +0 -1
  732. package/types/hooks/useUnmountEffect.d.ts +0 -2
  733. package/types/index.d.ts.map +0 -1
  734. package/types/insertFont.d.ts.map +0 -1
  735. package/types/static.d.ts.map +0 -1
  736. package/types/styled.d.ts.map +0 -1
  737. package/types/types.d.ts.map +0 -1
  738. package/types/views/Stack.d.ts.map +0 -1
  739. package/types/views/Text.d.ts.map +0 -1
  740. package/types/views/TextAncestorContext.d.ts +0 -5
  741. package/types/views/TextAncestorContext.d.ts.map +0 -1
  742. package/types/views/Theme.d.ts.map +0 -1
  743. package/types/views/ThemeInverse.d.ts +0 -10
  744. package/types/views/ThemeInverse.d.ts.map +0 -1
  745. package/types/views/ThemeProvider.d.ts.map +0 -1
  746. package/types/views/ThemeReset.d.ts +0 -4
  747. package/types/views/ThemeReset.d.ts.map +0 -1
@@ -0,0 +1,980 @@
1
+ import { isClient, isRSC, isServer, isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
2
+ import {
3
+ stylePropsText,
4
+ stylePropsTransform,
5
+ validPseudoKeys,
6
+ validStyles,
7
+ validStylesOnBaseProps,
8
+ } from '@tamagui/helpers'
9
+ import type { ViewStyle } from '@tamagui/types-react-native'
10
+ import { useInsertionEffect } from 'react'
11
+
12
+ import { getConfig } from '../config'
13
+ import { isDevTools } from '../constants/isDevTools'
14
+ import {
15
+ mediaState as globalMediaState,
16
+ mediaQueryConfig,
17
+ mergeMediaByImportance,
18
+ } from '../hooks/useMedia'
19
+ import type {
20
+ DebugProp,
21
+ MediaQueryKey,
22
+ PseudoPropKeys,
23
+ PseudoStyles,
24
+ SplitStyleState,
25
+ StackProps,
26
+ StaticConfigParsed,
27
+ TamaguiInternalConfig,
28
+ ThemeParsed,
29
+ } from '../types'
30
+ import { FontLanguageProps, LanguageContextType } from '../views/FontLanguage.types'
31
+ import { createMediaStyle } from './createMediaStyle'
32
+ import { getPropMappedFontFamily } from './createPropMapper'
33
+ import { fixStyles } from './expandStyles'
34
+ import { getAtomicStyle, getStylesAtomic, styleToCSS } from './getStylesAtomic'
35
+ import {
36
+ PartialStyleObject,
37
+ RulesToInsert,
38
+ insertStyleRules,
39
+ insertedTransforms,
40
+ shouldInsertStyleRules,
41
+ updateInserted,
42
+ updateRules,
43
+ } from './insertStyleRule'
44
+ import { FlatTransforms, mergeTransform, mergeTransforms } from './mergeTransform'
45
+ import {
46
+ normalizeValueWithProperty,
47
+ reverseMapClassNameToValue,
48
+ } from './normalizeValueWithProperty.js'
49
+ import { pseudoDescriptors } from './pseudoDescriptors'
50
+
51
+ type GetStyleResult = {
52
+ pseudos: PseudoStyles
53
+ medias: Record<MediaQueryKey, ViewStyle>
54
+ style: ViewStyle
55
+ classNames: ClassNamesObject
56
+ rulesToInsert: RulesToInsert
57
+ viewProps: StackProps & Record<string, any>
58
+ fontFamily: string | undefined
59
+ mediaKeys: string[]
60
+ }
61
+
62
+ type GetStyleState = {
63
+ style: ViewStyle
64
+ usedKeys: Record<string, number>
65
+ classNames: ClassNamesObject
66
+ flatTransforms: FlatTransforms
67
+ staticConfig: StaticConfigParsed
68
+ theme: ThemeParsed
69
+ props: Record<string, any>
70
+ viewProps: Record<string, any>
71
+ state: SplitStyleState
72
+ conf: TamaguiInternalConfig
73
+ languageContext?: FontLanguageProps
74
+ avoidDefaultProps?: boolean
75
+ avoidMergeTransform?: boolean
76
+ }
77
+
78
+ export type SplitStyles = ReturnType<typeof getSplitStyles>
79
+ export type ClassNamesObject = Record<string, string>
80
+ export type SplitStyleResult = ReturnType<typeof getSplitStyles>
81
+
82
+ const skipProps = {
83
+ animation: true,
84
+ animateOnly: true,
85
+ debug: true,
86
+ componentName: true,
87
+ role: true,
88
+ tag: true,
89
+ }
90
+
91
+ const IS_STATIC = process.env.IS_STATIC === 'is_static'
92
+
93
+ // native only skips
94
+ if (process.env.TAMAGUI_TARGET === 'native') {
95
+ Object.assign(skipProps, {
96
+ whiteSpace: true,
97
+ wordWrap: true,
98
+ textOverflow: true,
99
+ textDecorationDistance: true,
100
+ userSelect: true,
101
+ selectable: true,
102
+ cursor: true,
103
+ contain: true,
104
+ boxSizing: true,
105
+ boxShadow: true,
106
+ })
107
+ }
108
+
109
+ // web only maps accessibility to aria props
110
+ const accessibilityDirectMap: Record<string, string> = {}
111
+ if (process.env.TAMAGUI_TARGET === 'web') {
112
+ // bundle size shave
113
+ const items = {
114
+ Hidden: true,
115
+ ActiveDescendant: true,
116
+ Atomic: true,
117
+ AutoComplete: true,
118
+ Busy: true,
119
+ Checked: true,
120
+ ColumnCount: 'colcount',
121
+ ColumnIndex: 'colindex',
122
+ ColumnSpan: 'colspan',
123
+ Current: true,
124
+ Details: true,
125
+ ErrorMessage: true,
126
+ Expanded: true,
127
+ HasPopup: true,
128
+ Invalid: true,
129
+ Label: true,
130
+ Level: true,
131
+ Modal: true,
132
+ Multiline: true,
133
+ MultiSelectable: true,
134
+ Orientation: true,
135
+ Owns: true,
136
+ Placeholder: true,
137
+ PosInSet: true,
138
+ Pressed: true,
139
+ RoleDescription: true,
140
+ RowCount: true,
141
+ RowIndex: true,
142
+ RowSpan: true,
143
+ Selected: true,
144
+ SetSize: true,
145
+ Sort: true,
146
+ ValueMax: true,
147
+ ValueMin: true,
148
+ ValueNow: true,
149
+ ValueText: true,
150
+ }
151
+ for (const key in items) {
152
+ let val = items[key]
153
+ if (val === true) {
154
+ val = key.toLowerCase()
155
+ }
156
+ accessibilityDirectMap[`accessibility${key}`] = `aria-${val}`
157
+ }
158
+ }
159
+
160
+ type TransformNamespaceKey = 'transform' | PseudoPropKeys | MediaQueryKey
161
+
162
+ let conf: TamaguiInternalConfig
163
+
164
+ type StyleSplitter = (
165
+ props: { [key: string]: any },
166
+ staticConfig: StaticConfigParsed,
167
+ theme: ThemeParsed,
168
+ state: SplitStyleState,
169
+ parentSplitStyles?: GetStyleResult | null,
170
+ languageContext?: LanguageContextType,
171
+ // web-only
172
+ elementType?: string,
173
+ debug?: DebugProp
174
+ ) => GetStyleResult
175
+
176
+ export const PROP_SPLIT = '-'
177
+
178
+ const accessibilityRoleToWebRole = {
179
+ adjustable: 'slider',
180
+ header: 'heading',
181
+ image: 'img',
182
+ link: 'link',
183
+ none: 'presentation',
184
+ summary: 'region',
185
+ }
186
+
187
+ // loop props backwards
188
+ // track used keys:
189
+ // const keys = new Set<string>()
190
+ // keep classnames and styles separate:
191
+ // const styles = {}
192
+ // const classNames = {}
193
+
194
+ const isMediaKey = (key: string) => Boolean(key[0] === '$' && mediaQueryConfig[key.slice(1)])
195
+
196
+ export const getSplitStyles: StyleSplitter = (
197
+ props,
198
+ staticConfig,
199
+ theme,
200
+ state,
201
+ parentSplitStyles,
202
+ languageContext,
203
+ elementType,
204
+ debug
205
+ ) => {
206
+ conf = conf || getConfig()
207
+ const { shorthands } = conf
208
+ const {
209
+ defaultVariants,
210
+ variants,
211
+ propMapper,
212
+ isReactNative,
213
+ deoptProps,
214
+ inlineProps,
215
+ inlineWhenUnflattened,
216
+ } = staticConfig
217
+ const validStyleProps = staticConfig.isText ? stylePropsText : validStyles
218
+ const mediaKeys: string[] = []
219
+ const viewProps: GetStyleResult['viewProps'] = {}
220
+ const pseudos: PseudoStyles = {}
221
+ let psuedosUsed: Record<string, number> | null = null
222
+ const medias: Record<MediaQueryKey, ViewStyle> = {}
223
+ const mediaState = state.mediaState || globalMediaState
224
+ const usedKeys: Record<string, number> = {}
225
+ const propKeys = Object.keys(props)
226
+
227
+ const shouldDoClasses =
228
+ staticConfig.acceptsClassName && (isWeb || IS_STATIC) && !state.noClassNames
229
+
230
+ let style: ViewStyle = {}
231
+ const flatTransforms: FlatTransforms = {}
232
+
233
+ const len = propKeys.length
234
+ const rulesToInsert: RulesToInsert = []
235
+ const classNames: ClassNamesObject = {}
236
+ let className = '' // existing classNames
237
+ // we need to gather these specific to each media query / pseudo
238
+ // value is [hash, val], so ["-jnjad-asdnjk", "scaleX(1) rotate(10deg)"]
239
+ const transforms: Record<TransformNamespaceKey, [string, string]> = {}
240
+ // fontFamily is our special baby, ensure we grab the latest set one always
241
+ let fontFamily: string | undefined
242
+
243
+ const styleState: GetStyleState = {
244
+ classNames,
245
+ conf,
246
+ flatTransforms,
247
+ props,
248
+ state,
249
+ staticConfig,
250
+ style,
251
+ theme,
252
+ usedKeys,
253
+ viewProps,
254
+ languageContext,
255
+ }
256
+
257
+ if (props.className) {
258
+ for (const cn of props.className.split(' ')) {
259
+ if (cn[0] === '_') {
260
+ // tamagui, merge it expanded on key, eventually this will go away with better compiler
261
+ const [shorthand, mediaOrPseudo] = cn.slice(1).split('-')
262
+ const isMedia = mediaOrPseudo[0] === '_'
263
+ const isPseudo = mediaOrPseudo[0] === '0'
264
+ const isMediaOrPseudo = isMedia || isPseudo
265
+ let fullKey = shorthands[shorthand]
266
+ if (isMedia) {
267
+ // is media
268
+ let mediaShortKey = mediaOrPseudo.slice(1)
269
+ mediaShortKey = mediaShortKey.slice(0, mediaShortKey.indexOf('_'))
270
+ fullKey += `${PROP_SPLIT}${mediaShortKey}`
271
+ } else if (isPseudo) {
272
+ // is pseudo
273
+ const pseudoShortKey = mediaOrPseudo.slice(1)
274
+ fullKey += `${PROP_SPLIT}${pseudoShortKey}`
275
+ }
276
+ if (process.env.NODE_ENV === 'development') {
277
+ if (debug) {
278
+ // eslint-disable-next-line no-console
279
+ console.log('tamagui classname', fullKey, cn)
280
+ }
281
+ }
282
+ usedKeys[fullKey] = 1
283
+ mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo)
284
+ } else {
285
+ if (cn) {
286
+ className += ' ' + cn
287
+ }
288
+ }
289
+ }
290
+ }
291
+
292
+ // loop backwards so we can skip already-used props
293
+ for (let i = len - 1; i >= 0; i--) {
294
+ let keyInit = propKeys[i]
295
+ if (keyInit === 'className') continue // handled above
296
+ const valInit = props[keyInit]
297
+
298
+ // normalize shorthands up front
299
+ const expandedKey = keyInit in shorthands
300
+ if (expandedKey) {
301
+ keyInit = shorthands[keyInit]
302
+ }
303
+
304
+ if (keyInit in usedKeys) continue
305
+ if (keyInit in skipProps) continue
306
+ if (!isWeb && keyInit.startsWith('data-')) continue
307
+
308
+ if (validStyleProps[keyInit] || keyInit.includes('-')) {
309
+ if (valInit && valInit[0] === '_') {
310
+ if (shouldDoClasses) {
311
+ classNames[keyInit] = valInit
312
+ } else {
313
+ style[keyInit] = reverseMapClassNameToValue(keyInit, valInit)
314
+ }
315
+ usedKeys[keyInit] = 1
316
+ continue
317
+ }
318
+ }
319
+
320
+ if (keyInit === 'style' || keyInit.startsWith('_style')) {
321
+ if (!valInit) continue
322
+ const styles = Array.isArray(valInit) ? valInit : [valInit]
323
+ const styleLen = styles.length
324
+ for (let j = styleLen; j >= 0; j--) {
325
+ const cur = styles[j]
326
+ if (!cur) continue
327
+ for (const key in cur) {
328
+ if (usedKeys[key]) continue
329
+ usedKeys[key] = 1
330
+ style[key] = cur[key]
331
+ }
332
+ }
333
+ continue
334
+ }
335
+
336
+ if (process.env.TAMAGUI_TARGET === 'web') {
337
+ /**
338
+ * Copying in the accessibility/prop handling from react-native-web here
339
+ * Keeps it in a single loop, avoids dup de-structuring to avoid bundle size
340
+ */
341
+ if (keyInit === 'disabled' && valInit === true) {
342
+ usedKeys[keyInit] = 1
343
+ viewProps['aria-disabled'] = true
344
+ // Enhance with native semantics
345
+ if (
346
+ elementType === 'button' ||
347
+ elementType === 'form' ||
348
+ elementType === 'input' ||
349
+ elementType === 'select' ||
350
+ elementType === 'textarea'
351
+ ) {
352
+ viewProps.disabled = true
353
+ }
354
+ if (!variants?.disabled) {
355
+ continue
356
+ }
357
+ }
358
+
359
+ if (keyInit === 'testID') {
360
+ usedKeys[keyInit] = 1
361
+ if (isReactNative) {
362
+ viewProps.testId = valInit
363
+ } else {
364
+ viewProps['data-testid'] = valInit
365
+ }
366
+ continue
367
+ }
368
+
369
+ if (keyInit === 'id' || keyInit === 'nativeID') {
370
+ usedKeys[keyInit] = 1
371
+ if (isReactNative) {
372
+ viewProps.nativeID = valInit
373
+ } else {
374
+ viewProps.id = valInit
375
+ }
376
+ continue
377
+ }
378
+
379
+ let didUseKeyInit = true
380
+
381
+ if (isReactNative) {
382
+ didUseKeyInit = false
383
+ // pass along to react-native-web
384
+ if (accessibilityDirectMap[keyInit] || keyInit.startsWith('accessibility')) {
385
+ viewProps[keyInit] = valInit
386
+ usedKeys[keyInit] = 1
387
+ continue
388
+ }
389
+ } else {
390
+ if (accessibilityDirectMap[keyInit]) {
391
+ viewProps[accessibilityDirectMap[keyInit]] = valInit
392
+ usedKeys[keyInit] = 1
393
+ continue
394
+ }
395
+ switch (keyInit) {
396
+ case 'accessibilityRole': {
397
+ if (valInit === 'none') {
398
+ viewProps.role = 'presentation'
399
+ } else {
400
+ viewProps.role = accessibilityRoleToWebRole[valInit] || valInit
401
+ }
402
+ break
403
+ }
404
+ case 'accessibilityControls': {
405
+ viewProps['aria-controls'] = processIDRefList(valInit)
406
+ break
407
+ }
408
+ case 'accessibilityDescribedBy': {
409
+ viewProps['aria-describedby'] = processIDRefList(valInit)
410
+ break
411
+ }
412
+ case 'accessibilityFlowTo': {
413
+ viewProps['aria-flowto'] = processIDRefList(valInit)
414
+ break
415
+ }
416
+ case 'accessibilityLabelledBy': {
417
+ viewProps['aria-labelledby'] = processIDRefList(valInit)
418
+ break
419
+ }
420
+ case 'accessibilityKeyShortcuts': {
421
+ if (Array.isArray(valInit)) {
422
+ viewProps['aria-keyshortcuts'] = valInit.join(' ')
423
+ }
424
+ break
425
+ }
426
+ case 'accessibilityLiveRegion': {
427
+ viewProps['aria-live'] = valInit === 'none' ? 'off' : valInit
428
+ break
429
+ }
430
+ case 'accessibilityReadOnly': {
431
+ viewProps['aria-readonly'] = valInit
432
+ // Enhance with native semantics
433
+ if (elementType === 'input' || elementType === 'select' || elementType === 'textarea') {
434
+ viewProps.readOnly = true
435
+ }
436
+ break
437
+ }
438
+ case 'accessibilityRequired': {
439
+ viewProps['aria-required'] = valInit
440
+ // Enhance with native semantics
441
+ if (elementType === 'input' || elementType === 'select' || elementType === 'textarea') {
442
+ viewProps.required = true
443
+ }
444
+ break
445
+ }
446
+ default: {
447
+ didUseKeyInit = false
448
+ }
449
+ }
450
+ }
451
+
452
+ if (didUseKeyInit) {
453
+ usedKeys[keyInit] = 1
454
+ continue
455
+ }
456
+
457
+ if (valInit && valInit[0] === '_') {
458
+ // if valid style key (or pseudo like color-hover):
459
+ // this conditional and esp the pseudo check rarely runs so not a perf issue
460
+ const isValidClassName = validStyles[keyInit]
461
+ const isMediaOrPseudo =
462
+ !isValidClassName &&
463
+ keyInit.includes(PROP_SPLIT) &&
464
+ validStyles[keyInit.split(PROP_SPLIT)[0]]
465
+
466
+ if (isValidClassName || isMediaOrPseudo) {
467
+ usedKeys[keyInit] = 1
468
+ if (process.env.NODE_ENV === 'development') {
469
+ if (debug) {
470
+ // eslint-disable-next-line no-console
471
+ console.log('tamagui classname props', keyInit, valInit)
472
+ }
473
+ }
474
+ mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo)
475
+ continue
476
+ }
477
+ }
478
+ }
479
+
480
+ if (
481
+ (defaultVariants && keyInit in defaultVariants) ||
482
+ // may want to just: not compile styled() into classnames, always do this, and always pass in all values in extras.props
483
+ // but we'd want to add styled({ extracted: true }) or something at compile time to save on parsing a bit...
484
+ (state.keepVariantsAsProps && variants && keyInit in variants)
485
+ ) {
486
+ viewProps[keyInit] = valInit
487
+ }
488
+
489
+ /**
490
+ * There's (some) reason to this madness: we want to allow returning media/pseudo from variants
491
+ * Say you have a variant hoverable: { true: { hoverStyle: {} } }
492
+ * We run propMapper first to expand variant, then we run the inner loop and look again
493
+ * for if there's a pseudo/media returned from it.
494
+ */
495
+
496
+ let isMedia = isMediaKey(keyInit)
497
+ let isPseudo = validPseudoKeys[keyInit]
498
+
499
+ if (
500
+ !isMedia &&
501
+ !isPseudo &&
502
+ !variants?.[keyInit] &&
503
+ !validStyleProps[keyInit] &&
504
+ !shorthands[keyInit]
505
+ ) {
506
+ // web-only, exclude all other accessibility props not handled above
507
+ if (isWeb && keyInit.includes('ccessibility')) {
508
+ continue
509
+ }
510
+ usedKeys[keyInit] = 1
511
+ viewProps[keyInit] = valInit
512
+ continue
513
+ }
514
+
515
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
516
+ // eslint-disable-next-line no-console
517
+ console.groupCollapsed(' 🔹 styles', keyInit, valInit)
518
+ }
519
+
520
+ const expanded =
521
+ isMedia || isPseudo
522
+ ? [[keyInit, valInit]]
523
+ : propMapper(keyInit, valInit, theme, props, state, languageContext, undefined, debug)
524
+
525
+ if (!fontFamily) {
526
+ fontFamily = getPropMappedFontFamily(expanded)
527
+ }
528
+
529
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
530
+ if (!isServer && isWeb) {
531
+ // eslint-disable-next-line no-console
532
+ console.log('expanded', expanded, '\nusedKeys', usedKeys, '\ncurrent', { ...style })
533
+ }
534
+ // eslint-disable-next-line no-console
535
+ console.groupEnd()
536
+ }
537
+
538
+ if (!expanded) continue
539
+
540
+ for (const [key, val] of expanded) {
541
+ if (val === undefined) continue
542
+
543
+ isMedia = isMediaKey(key)
544
+ isPseudo = validPseudoKeys[key]
545
+ const isMediaOrPseudo = isMedia || isPseudo
546
+
547
+ if (!isMediaOrPseudo && usedKeys[key]) {
548
+ continue
549
+ }
550
+
551
+ if (deoptProps?.has(key) || inlineProps?.has(key) || inlineWhenUnflattened?.has(key)) {
552
+ usedKeys[key] = 1
553
+ viewProps[key] = props[key] ?? val
554
+ }
555
+
556
+ // pseudo
557
+ if (isPseudo) {
558
+ if (!val) continue
559
+
560
+ // TODO can avoid processing this if !shouldDoClasses + state is off
561
+ const pseudoStyleObject = getSubStyle(styleState, key, val, true, state.noClassNames)
562
+
563
+ const descriptor = pseudoDescriptors[key as keyof typeof pseudoDescriptors]
564
+ const isEnter = descriptor.name === 'enter'
565
+ const isExit = descriptor.name === 'exit'
566
+ if (!descriptor || (isEnter && !state.unmounted) || (isExit && !state.isExiting)) {
567
+ continue
568
+ }
569
+
570
+ if (!shouldDoClasses || IS_STATIC) {
571
+ pseudos[key] ||= {}
572
+ Object.assign(pseudos[key], pseudoStyleObject)
573
+ }
574
+
575
+ if (shouldDoClasses && !isEnter && !isExit) {
576
+ const pseudoStyles = getAtomicStyle(pseudoStyleObject, descriptor)
577
+ for (const psuedoStyle of pseudoStyles) {
578
+ const fullKey = `${psuedoStyle.property}${PROP_SPLIT}${descriptor.name}`
579
+ if (!usedKeys[fullKey]) {
580
+ usedKeys[fullKey] = 1
581
+ addStyleToInsertRules(rulesToInsert, psuedoStyle)
582
+ mergeClassName(
583
+ transforms,
584
+ classNames,
585
+ fullKey,
586
+ psuedoStyle.identifier,
587
+ isMediaOrPseudo
588
+ )
589
+ }
590
+ }
591
+ } else {
592
+ const isDisabled = !state[descriptor.stateKey || descriptor.name]
593
+ if (!isDisabled) {
594
+ usedKeys[key] ||= 1
595
+ }
596
+ psuedosUsed ||= {}
597
+
598
+ const importance = descriptor.priority
599
+ for (const pkey in pseudoStyleObject) {
600
+ const val = pseudoStyleObject[pkey]
601
+ // when disabled ensure the default value is set for future animations to align
602
+ if (isDisabled) {
603
+ if (!(pkey in usedKeys) && pkey in animatableDefaults) {
604
+ const defaultVal = animatableDefaults[pkey]
605
+ mergeStyle(styleState, pkey, defaultVal, true)
606
+ }
607
+ continue
608
+ }
609
+ const curImportance = psuedosUsed[importance] || 0
610
+ if (importance >= curImportance) {
611
+ psuedosUsed[pkey] = importance
612
+ pseudos[key] ||= {}
613
+ pseudos[key][pkey] = val
614
+ // prettier-ignore
615
+ // eslint-disable-next-line no-console
616
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') console.log('merging', pkey, val)
617
+ mergeStyle(styleState, pkey, val)
618
+ }
619
+ }
620
+ }
621
+ continue
622
+ }
623
+
624
+ // media
625
+ if (isMedia) {
626
+ if (!val) continue
627
+
628
+ const mediaKey = key
629
+ const mediaKeyShort = mediaKey.slice(1)
630
+ mediaKeys.push(mediaKeyShort)
631
+
632
+ // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR
633
+ // we avoid passing in default props for media queries because that would confuse things like SizableText.size:
634
+
635
+ const mediaStyle = getSubStyle(
636
+ styleState,
637
+ key,
638
+ val,
639
+ // TODO try true like pseudo
640
+ false
641
+ )
642
+
643
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
644
+ // prettier-ignore
645
+ // eslint-disable-next-line no-console
646
+ console.log(` 📺 ${mediaKey}`, mediaState[mediaKeyShort], { mediaKey, mediaStyle, props, shouldDoClasses, mediaState: { ...mediaState } })
647
+ }
648
+
649
+ if (shouldDoClasses) {
650
+ const mediaStyles = getStylesAtomic(mediaStyle)
651
+ for (const style of mediaStyles) {
652
+ const out = createMediaStyle(style, mediaKeyShort, mediaQueryConfig)
653
+ const fullKey = `${style.property}${PROP_SPLIT}${mediaKeyShort}`
654
+ if (!usedKeys[fullKey]) {
655
+ usedKeys[fullKey] = 1
656
+ addStyleToInsertRules(rulesToInsert, out)
657
+ mergeClassName(transforms, classNames, fullKey, out.identifier, true)
658
+ }
659
+ }
660
+ } else if (mediaState[mediaKey]) {
661
+ for (const key in mediaStyle) {
662
+ const didMerge = mergeMediaByImportance(style, key, mediaStyle[key], usedKeys)
663
+ if (didMerge) {
664
+ if (key === 'fontFamily') {
665
+ fontFamily = mediaStyle[key]
666
+ }
667
+ }
668
+ }
669
+ }
670
+ continue
671
+ }
672
+
673
+ if (!isWeb && key === 'pointerEvents') {
674
+ usedKeys[key] = 1
675
+ viewProps[key] = val
676
+ continue
677
+ }
678
+
679
+ if (key === 'fontFamily' && !fontFamily && valInit && val) {
680
+ fontFamily = valInit[0] === '$' ? valInit : val
681
+ }
682
+
683
+ if (validStyleProps[key]) {
684
+ mergeStyle(styleState, key, val)
685
+ continue
686
+ }
687
+
688
+ // pass to view props
689
+ if (!variants || !(key in variants)) {
690
+ if (!skipProps[key]) {
691
+ viewProps[key] = val
692
+ usedKeys[key] = 1
693
+ }
694
+ }
695
+ }
696
+ }
697
+
698
+ fixStyles(style)
699
+ if (isWeb) {
700
+ styleToCSS(style)
701
+ }
702
+
703
+ // always do this at the very end to preserve the order strictly (animations, origin)
704
+ // and allow proper merging of all pseudos before applying
705
+ if (flatTransforms) {
706
+ if (process.env.NODE_ENV === 'development' && debug) {
707
+ // prettier-ignore
708
+ // eslint-disable-next-line no-console
709
+ console.log(`Merging flat transforms, transform before`, [...style.transform || []], flatTransforms)
710
+ }
711
+ mergeTransforms(style, flatTransforms, true)
712
+ }
713
+
714
+ // add in defaults if not set:
715
+ if (parentSplitStyles) {
716
+ if (process.env.TAMAGUI_TARGET === 'web') {
717
+ if (shouldDoClasses) {
718
+ for (const key in parentSplitStyles.classNames) {
719
+ const val = parentSplitStyles.classNames[key]
720
+ if (key in style || key in classNames) continue
721
+ classNames[key] = val
722
+ }
723
+ }
724
+ }
725
+ if (!shouldDoClasses) {
726
+ for (const key in parentSplitStyles.style) {
727
+ if (key in classNames || key in style) continue
728
+ style[key] = parentSplitStyles.style[key]
729
+ }
730
+ }
731
+ }
732
+
733
+ if (process.env.TAMAGUI_TARGET === 'web') {
734
+ if (shouldDoClasses) {
735
+ if (style['$$css']) {
736
+ // avoid re-processing for rnw
737
+ } else {
738
+ const atomic = getStylesAtomic(style)
739
+ for (const atomicStyle of atomic) {
740
+ const key = atomicStyle.property
741
+ addStyleToInsertRules(rulesToInsert, atomicStyle)
742
+ mergeClassName(transforms, classNames, key, atomicStyle.identifier)
743
+ }
744
+ if (!IS_STATIC) {
745
+ style = {}
746
+ }
747
+ }
748
+ }
749
+
750
+ if (transforms) {
751
+ for (const namespace in transforms) {
752
+ if (!transforms[namespace]) {
753
+ if (process.env.NODE_ENV === 'development') {
754
+ // eslint-disable-next-line no-console
755
+ console.warn('Error no transform', transforms, namespace)
756
+ }
757
+ continue
758
+ }
759
+ const [hash, val] = transforms[namespace]
760
+ const identifier = `_transform${hash}`
761
+ if (isClient && !insertedTransforms[identifier]) {
762
+ const rule = `.${identifier} { transform: ${val}; }`
763
+ addStyleToInsertRules(rulesToInsert, {
764
+ identifier,
765
+ rules: [rule],
766
+ property: namespace,
767
+ })
768
+ }
769
+ classNames[namespace] = identifier
770
+ }
771
+ }
772
+ }
773
+
774
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
775
+ if (isDevTools) {
776
+ // prettier-ignore
777
+ // eslint-disable-next-line no-console
778
+ console.groupCollapsed(' 🔹 styles =>')
779
+ // prettier-ignore
780
+ const logs = { style, pseudos, medias, classNames, transforms,viewProps, state, rulesToInsert, parentSplitStyles, flatTransforms }
781
+ for (const key in logs) {
782
+ // eslint-disable-next-line no-console
783
+ console.log(key, logs[key])
784
+ }
785
+ // eslint-disable-next-line no-console
786
+ console.groupEnd()
787
+ }
788
+ }
789
+
790
+ if (className) {
791
+ classNames.className = className
792
+ }
793
+
794
+ return {
795
+ fontFamily,
796
+ viewProps,
797
+ style,
798
+ medias,
799
+ mediaKeys,
800
+ pseudos,
801
+ classNames,
802
+ rulesToInsert,
803
+ }
804
+ }
805
+
806
+ function mergeClassName(
807
+ transforms: Record<string, any[]>,
808
+ classNames: Record<string, string>,
809
+ key: string,
810
+ val: string,
811
+ isMediaOrPseudo = false
812
+ ) {
813
+ if (process.env.TAMAGUI_TARGET === 'web') {
814
+ // empty classnames passed by compiler sometimes
815
+ if (!val) return
816
+ if (val.startsWith('_transform-')) {
817
+ const namespace: TransformNamespaceKey = isMediaOrPseudo ? key : 'transform'
818
+ let transform = insertedTransforms[val]
819
+ if (isClient) {
820
+ if (!transform) {
821
+ // HMR or loaded a new chunk
822
+ updateInserted()
823
+ transform = insertedTransforms[val]
824
+ if (process.env.NODE_ENV === 'development') {
825
+ if (!transform) {
826
+ // eslint-disable-next-line no-console
827
+ console.warn('no transform found', { insertedTransforms, val })
828
+ }
829
+ }
830
+ }
831
+ if (!transform) {
832
+ if (isWeb && val[0] !== '_') {
833
+ // runtime insert
834
+ transform = val
835
+ }
836
+ }
837
+ }
838
+ transforms[namespace] = transforms[namespace] || ['', '']
839
+ const identifier = val.replace('_transform', '')
840
+ transforms[namespace][0] += identifier
841
+ // ssr doesn't need to do anything just make the right classname
842
+ if (transform) {
843
+ transforms[namespace][1] += transform
844
+ }
845
+ } else {
846
+ classNames[key] = val
847
+ }
848
+ }
849
+ }
850
+
851
+ /**
852
+ * getSubStyle calls propMapper with props
853
+ * those should be specific to the substyle, but fallback to the base props
854
+ * so given props:
855
+ *
856
+ * { fontSize: 12, color: 'red', $sm: { color: 'blue' } }
857
+ *
858
+ * getSubStyle props should be a proxy that ends up like:
859
+ *
860
+ * { fontSize: 12, color: 'blue' }
861
+ *
862
+ * and to avoid re-creating it over and over, use a WeakMap
863
+ */
864
+ const cache = new WeakMap()
865
+ function getSubStyleProps(defaultProps: Object, baseProps: Object, specificProps: Object) {
866
+ const key = specificProps || baseProps
867
+ // can cache based only on specific it's always referentially consistent with base
868
+ if (!cache.has(key)) {
869
+ cache.set(key, {
870
+ ...defaultProps,
871
+ ...baseProps,
872
+ ...specificProps,
873
+ })
874
+ }
875
+ return cache.get(key)!
876
+ }
877
+
878
+ function mergeStyle(
879
+ { usedKeys, classNames, flatTransforms, viewProps, style }: GetStyleState,
880
+ key: string,
881
+ val: any,
882
+ dontSetUsed = false
883
+ ) {
884
+ if (!dontSetUsed) {
885
+ usedKeys[key] = usedKeys[key] || 1
886
+ }
887
+ if (val && val[0] === '_') {
888
+ classNames[key] = val
889
+ } else if (key in stylePropsTransform) {
890
+ flatTransforms ||= {}
891
+ flatTransforms[key] = val
892
+ } else {
893
+ const out = normalizeValueWithProperty(val, key)
894
+ if (key in validStylesOnBaseProps) {
895
+ viewProps[key] = out
896
+ } else {
897
+ style[key] = out
898
+ }
899
+ }
900
+ }
901
+
902
+ export const getSubStyle = (
903
+ styleState: GetStyleState,
904
+ subKey: string,
905
+ styleIn: Object,
906
+ avoidDefaultProps?: boolean,
907
+ avoidMergeTransform?: boolean
908
+ ): ViewStyle => {
909
+ const { staticConfig, theme, props, state, conf, languageContext } = styleState
910
+ const styleOut: ViewStyle = {}
911
+
912
+ for (let key in styleIn) {
913
+ const val = styleIn[key]
914
+ key = conf.shorthands[key] || key
915
+ const expanded = staticConfig.propMapper(
916
+ key,
917
+ val,
918
+ theme,
919
+ getSubStyleProps(staticConfig.defaultProps, props, props[subKey]),
920
+ state,
921
+ languageContext,
922
+ avoidDefaultProps
923
+ )
924
+ if (!expanded) continue
925
+ for (const [skey, sval] of expanded) {
926
+ if (!avoidMergeTransform && skey in stylePropsTransform) {
927
+ mergeTransform(styleOut, skey, sval)
928
+ } else {
929
+ styleOut[skey] = normalizeValueWithProperty(sval, key)
930
+ }
931
+ }
932
+ }
933
+
934
+ fixStyles(styleOut)
935
+
936
+ return styleOut
937
+ }
938
+
939
+ export const insertSplitStyles: StyleSplitter = (...args) => {
940
+ const res = getSplitStyles(...args)
941
+ insertStyleRules(res.rulesToInsert)
942
+ return res
943
+ }
944
+
945
+ // on native no need to insert any css
946
+ const useInsertEffectCompat = isWeb ? useInsertionEffect || useIsomorphicLayoutEffect : () => {}
947
+
948
+ export const useSplitStyles: StyleSplitter = (...args) => {
949
+ const res = getSplitStyles(...args)
950
+
951
+ if (!isRSC) {
952
+ useInsertEffectCompat(() => {
953
+ insertStyleRules(res.rulesToInsert)
954
+ }, [res.rulesToInsert])
955
+ }
956
+
957
+ return res
958
+ }
959
+
960
+ function addStyleToInsertRules(rulesToInsert: RulesToInsert, styleObject: PartialStyleObject) {
961
+ if (process.env.TAMAGUI_TARGET === 'web') {
962
+ if (!shouldInsertStyleRules(styleObject)) {
963
+ return
964
+ }
965
+ updateRules(styleObject.identifier, styleObject.rules)
966
+ rulesToInsert.push(styleObject)
967
+ }
968
+ }
969
+
970
+ function processIDRefList(idRefList: string | Array<string>): string {
971
+ return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList
972
+ }
973
+
974
+ const animatableDefaults = {
975
+ opacity: 1,
976
+ scale: 1,
977
+ rotate: '0deg',
978
+ rotateY: '0deg',
979
+ rotateX: '0deg',
980
+ }