@tamagui/core 1.0.1-beta.19 → 1.0.1-beta.190

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 (772) hide show
  1. package/dist/cjs/Tamagui.js +14 -12
  2. package/dist/cjs/Tamagui.js.map +2 -2
  3. package/dist/cjs/addTheme.js +80 -0
  4. package/dist/cjs/addTheme.js.map +7 -0
  5. package/dist/cjs/{conf.js → config.js} +33 -19
  6. package/dist/cjs/config.js.map +7 -0
  7. package/dist/cjs/constants/constants.js +11 -23
  8. package/dist/cjs/constants/constants.js.map +2 -2
  9. package/dist/cjs/{helpers/nativeGestureHandler.js → constants/isDevTools.js} +8 -8
  10. package/dist/cjs/constants/isDevTools.js.map +7 -0
  11. package/dist/cjs/constants/platform.js +32 -16
  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/FontLanguageContext.js +30 -0
  18. package/dist/cjs/contexts/FontLanguageContext.js.map +7 -0
  19. package/dist/cjs/{views → contexts}/TextAncestorContext.js +11 -13
  20. package/dist/cjs/contexts/TextAncestorContext.js.map +7 -0
  21. package/dist/cjs/{ThemeContext.js → contexts/ThemeContext.js} +1 -0
  22. package/dist/cjs/contexts/ThemeContext.js.map +7 -0
  23. package/dist/cjs/createComponent.js +925 -484
  24. package/dist/cjs/createComponent.js.map +3 -3
  25. package/dist/cjs/createFont.js +5 -8
  26. package/dist/cjs/createFont.js.map +2 -2
  27. package/dist/cjs/createShorthands.js +1 -2
  28. package/dist/cjs/createShorthands.js.map +1 -1
  29. package/dist/cjs/createTamagui.js +129 -177
  30. package/dist/cjs/createTamagui.js.map +3 -3
  31. package/dist/cjs/createTheme.js +4 -2
  32. package/dist/cjs/createTheme.js.map +2 -2
  33. package/dist/cjs/createTokens.js +5 -25
  34. package/dist/cjs/createTokens.js.map +2 -2
  35. package/dist/cjs/createVariable.js +52 -28
  36. package/dist/cjs/createVariable.js.map +2 -2
  37. package/dist/cjs/createVariables.js +52 -0
  38. package/dist/cjs/createVariables.js.map +7 -0
  39. package/dist/cjs/helpers/RNComponents.js +12 -11
  40. package/dist/cjs/helpers/RNComponents.js.map +2 -2
  41. package/dist/cjs/{ThemeManager.js → helpers/ThemeManager.js} +54 -52
  42. package/dist/cjs/helpers/ThemeManager.js.map +7 -0
  43. package/dist/cjs/helpers/areEqualSets.js +3 -3
  44. package/dist/cjs/helpers/areEqualSets.js.map +1 -1
  45. package/dist/cjs/helpers/assignNativePropsToWeb.js +188 -0
  46. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +7 -0
  47. package/dist/cjs/helpers/assignNativePropsToWeb.native.js +30 -0
  48. package/dist/cjs/helpers/assignNativePropsToWeb.native.js.map +7 -0
  49. package/dist/cjs/helpers/calc.js +71 -0
  50. package/dist/cjs/helpers/calc.js.map +7 -0
  51. package/dist/cjs/helpers/createMediaStyle.js +17 -9
  52. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  53. package/dist/cjs/helpers/createPropMapper.js +268 -120
  54. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  55. package/dist/cjs/helpers/createShallowUpdate.js +14 -25
  56. package/dist/cjs/helpers/createShallowUpdate.js.map +2 -2
  57. package/dist/cjs/helpers/expandStyle.js +90 -0
  58. package/dist/cjs/helpers/expandStyle.js.map +7 -0
  59. package/dist/cjs/helpers/expandStyles.js +115 -0
  60. package/dist/cjs/helpers/expandStyles.js.map +7 -0
  61. package/dist/cjs/helpers/extendStaticConfig.js +49 -37
  62. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  63. package/dist/cjs/helpers/fixNativeShadow.js +3 -3
  64. package/dist/cjs/helpers/fixNativeShadow.js.map +1 -1
  65. package/dist/cjs/helpers/getAnimationDriver.js +32 -0
  66. package/dist/cjs/helpers/getAnimationDriver.js.map +7 -0
  67. package/dist/cjs/helpers/getExpandedShorthands.js +4 -5
  68. package/dist/cjs/helpers/getExpandedShorthands.js.map +2 -2
  69. package/dist/cjs/helpers/{getTextSize.js → getFont.js} +22 -12
  70. package/dist/cjs/helpers/getFont.js.map +7 -0
  71. package/dist/cjs/helpers/getFontLanguage.js +29 -0
  72. package/dist/cjs/helpers/getFontLanguage.js.map +7 -0
  73. package/dist/cjs/helpers/getSize.js +19 -10
  74. package/dist/cjs/helpers/getSize.js.map +2 -2
  75. package/dist/cjs/helpers/getSplitStyles.js +381 -208
  76. package/dist/cjs/helpers/getSplitStyles.js.map +3 -3
  77. package/dist/cjs/helpers/getStackSize.js +46 -0
  78. package/dist/cjs/helpers/getStackSize.js.map +7 -0
  79. package/dist/cjs/helpers/getStylesAtomic.js +199 -133
  80. package/dist/cjs/helpers/getStylesAtomic.js.map +3 -3
  81. package/dist/cjs/helpers/getStylesAtomic.native.js +1 -2
  82. package/dist/cjs/helpers/getStylesAtomic.native.js.map +1 -1
  83. package/dist/cjs/helpers/getThemeCSSRules.js +103 -0
  84. package/dist/cjs/helpers/getThemeCSSRules.js.map +7 -0
  85. package/dist/cjs/{nativeGestureHandler.native.js → helpers/getThemeCSSRules.native.js} +18 -5
  86. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +7 -0
  87. package/dist/cjs/helpers/getVariantExtras.js +88 -0
  88. package/dist/cjs/helpers/getVariantExtras.js.map +7 -0
  89. package/dist/cjs/helpers/insertStyleRule.js +87 -52
  90. package/dist/cjs/helpers/insertStyleRule.js.map +3 -3
  91. package/dist/cjs/helpers/isObj.js +2 -2
  92. package/dist/cjs/helpers/isObj.js.map +1 -1
  93. package/dist/cjs/helpers/isTamaguiComponent.js +37 -0
  94. package/dist/cjs/helpers/isTamaguiComponent.js.map +7 -0
  95. package/dist/cjs/helpers/isTamaguiElement.js +5 -5
  96. package/dist/cjs/helpers/isTamaguiElement.js.map +2 -2
  97. package/dist/cjs/helpers/matchMedia.js +7 -6
  98. package/dist/cjs/helpers/matchMedia.js.map +2 -2
  99. package/dist/cjs/helpers/matchMedia.native.js +6 -3
  100. package/dist/cjs/helpers/matchMedia.native.js.map +2 -2
  101. package/dist/cjs/helpers/mergeProps.js +54 -0
  102. package/dist/cjs/helpers/mergeProps.js.map +7 -0
  103. package/dist/cjs/helpers/mergeTransform.js +42 -0
  104. package/dist/cjs/helpers/mergeTransform.js.map +7 -0
  105. package/dist/cjs/helpers/normalizeColor.js +80 -0
  106. package/dist/cjs/helpers/normalizeColor.js.map +7 -0
  107. package/dist/cjs/helpers/normalizeValueWithProperty.js +93 -0
  108. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +7 -0
  109. package/dist/cjs/helpers/proxyThemeVariables.js +7 -4
  110. package/dist/cjs/helpers/proxyThemeVariables.js.map +2 -2
  111. package/dist/cjs/helpers/pseudoDescriptors.js +42 -0
  112. package/dist/cjs/helpers/pseudoDescriptors.js.map +7 -0
  113. package/dist/cjs/helpers/registerCSSVariable.js +40 -0
  114. package/dist/cjs/helpers/registerCSSVariable.js.map +7 -0
  115. package/dist/cjs/helpers/{wrapThemeManagerContext.js → startTransition.js} +12 -15
  116. package/dist/cjs/helpers/startTransition.js.map +7 -0
  117. package/dist/cjs/helpers/themeable.js +17 -40
  118. package/dist/cjs/helpers/themeable.js.map +3 -3
  119. package/dist/cjs/helpers/themes.js +79 -0
  120. package/dist/cjs/helpers/themes.js.map +7 -0
  121. package/dist/cjs/helpers/useShallowSetState.js +44 -0
  122. package/dist/cjs/helpers/useShallowSetState.js.map +7 -0
  123. package/dist/cjs/helpers/validate.js +1 -122
  124. package/dist/cjs/helpers/validate.js.map +3 -3
  125. package/dist/cjs/helpers/withStaticProperties.js +3 -3
  126. package/dist/cjs/helpers/withStaticProperties.js.map +1 -1
  127. package/dist/cjs/hooks/getThemeUnwrapped.js +39 -0
  128. package/dist/cjs/hooks/getThemeUnwrapped.js.map +7 -0
  129. package/dist/cjs/hooks/useConstant.js +4 -2
  130. package/dist/cjs/hooks/useConstant.js.map +2 -2
  131. package/dist/cjs/hooks/useDidFinishSSR.js +60 -0
  132. package/dist/cjs/hooks/useDidFinishSSR.js.map +7 -0
  133. package/dist/cjs/hooks/useId.js +3 -33
  134. package/dist/cjs/hooks/useId.js.map +2 -2
  135. package/dist/cjs/hooks/useIsMounted.js +3 -4
  136. package/dist/cjs/hooks/useIsMounted.js.map +2 -2
  137. package/dist/cjs/hooks/useIsSSR.js +46 -0
  138. package/dist/cjs/hooks/useIsSSR.js.map +7 -0
  139. package/dist/cjs/hooks/useIsTouchDevice.js +11 -9
  140. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  141. package/dist/cjs/hooks/useMedia.js +162 -113
  142. package/dist/cjs/hooks/useMedia.js.map +3 -3
  143. package/dist/cjs/hooks/usePressable.js +4 -18
  144. package/dist/cjs/hooks/usePressable.js.map +1 -1
  145. package/dist/cjs/hooks/useSafeRef.js +60 -0
  146. package/dist/cjs/hooks/useSafeRef.js.map +7 -0
  147. package/dist/cjs/hooks/useServerHooks.js +36 -0
  148. package/dist/cjs/hooks/useServerHooks.js.map +7 -0
  149. package/dist/cjs/hooks/useTheme.js +166 -132
  150. package/dist/cjs/hooks/useTheme.js.map +3 -3
  151. package/dist/cjs/hooks/useUnmountEffect.js +1 -2
  152. package/dist/cjs/hooks/useUnmountEffect.js.map +1 -1
  153. package/dist/cjs/index.js +59 -21
  154. package/dist/cjs/index.js.map +2 -2
  155. package/dist/cjs/injectStyles.js +40 -0
  156. package/dist/cjs/injectStyles.js.map +7 -0
  157. package/dist/cjs/insertFont.js +93 -0
  158. package/dist/cjs/insertFont.js.map +7 -0
  159. package/dist/cjs/static.js +22 -15
  160. package/dist/cjs/static.js.map +2 -2
  161. package/dist/cjs/styled.js +47 -44
  162. package/dist/cjs/styled.js.map +2 -2
  163. package/dist/cjs/types-rnw.js +1 -0
  164. package/dist/cjs/types-rnw.js.map +2 -2
  165. package/dist/cjs/types.js +1 -0
  166. package/dist/cjs/types.js.map +2 -2
  167. package/dist/cjs/updateTheme.js +47 -0
  168. package/dist/cjs/updateTheme.js.map +7 -0
  169. package/dist/cjs/vendor/Pressability.js +32 -0
  170. package/dist/cjs/vendor/Pressability.js.map +7 -0
  171. package/dist/cjs/vendor/Pressability.native.js +32 -0
  172. package/dist/cjs/vendor/Pressability.native.js.map +7 -0
  173. package/dist/cjs/views/FontLanguage.js +38 -0
  174. package/dist/cjs/views/FontLanguage.js.map +7 -0
  175. package/dist/cjs/views/FontLanguage.native.js +38 -0
  176. package/dist/cjs/views/FontLanguage.native.js.map +7 -0
  177. package/dist/cjs/{helpers/nativeGestureHandler.native.js → views/FontLanguage.types.js} +4 -5
  178. package/dist/cjs/views/FontLanguage.types.js.map +7 -0
  179. package/dist/cjs/views/Slot.js +63 -65
  180. package/dist/cjs/views/Slot.js.map +2 -2
  181. package/dist/cjs/views/Stack.js +4 -19
  182. package/dist/cjs/views/Stack.js.map +1 -1
  183. package/dist/cjs/views/TamaguiProvider.js +82 -0
  184. package/dist/cjs/views/TamaguiProvider.js.map +7 -0
  185. package/dist/cjs/views/Text.js +28 -29
  186. package/dist/cjs/views/Text.js.map +2 -2
  187. package/dist/cjs/views/Theme.js +43 -21
  188. package/dist/cjs/views/Theme.js.map +3 -3
  189. package/dist/cjs/views/ThemeInverse.js +25 -25
  190. package/dist/cjs/views/ThemeInverse.js.map +2 -2
  191. package/dist/cjs/views/ThemeProvider.js +35 -23
  192. package/dist/cjs/views/ThemeProvider.js.map +3 -3
  193. package/dist/cjs/views/ThemeReset.js +18 -12
  194. package/dist/cjs/views/ThemeReset.js.map +3 -3
  195. package/dist/esm/Tamagui.js +8 -11
  196. package/dist/esm/Tamagui.js.map +2 -2
  197. package/dist/esm/addTheme.js +56 -0
  198. package/dist/esm/addTheme.js.map +7 -0
  199. package/dist/esm/config.js +45 -0
  200. package/dist/esm/config.js.map +7 -0
  201. package/dist/esm/constants/constants.js +2 -2
  202. package/dist/esm/constants/constants.js.map +2 -2
  203. package/dist/esm/constants/isDevTools.js +5 -0
  204. package/dist/esm/constants/isDevTools.js.map +7 -0
  205. package/dist/esm/constants/platform.js +25 -12
  206. package/dist/esm/constants/platform.js.map +2 -2
  207. package/dist/esm/constants/platform.native.js +28 -0
  208. package/dist/esm/constants/platform.native.js.map +7 -0
  209. package/dist/esm/contexts/ButtonInsideButtonContext.js +0 -0
  210. package/dist/esm/contexts/ButtonInsideButtonContext.js.map +1 -1
  211. package/dist/esm/contexts/FontLanguageContext.js +6 -0
  212. package/dist/esm/contexts/FontLanguageContext.js.map +7 -0
  213. package/dist/esm/contexts/TextAncestorContext.js +17 -0
  214. package/dist/esm/contexts/TextAncestorContext.js.map +7 -0
  215. package/dist/esm/{ThemeContext.js → contexts/ThemeContext.js} +0 -0
  216. package/dist/esm/contexts/ThemeContext.js.map +7 -0
  217. package/dist/esm/createComponent.js +891 -389
  218. package/dist/esm/createComponent.js.map +3 -3
  219. package/dist/esm/createFont.js +4 -9
  220. package/dist/esm/createFont.js.map +2 -2
  221. package/dist/esm/createShorthands.js +0 -3
  222. package/dist/esm/createShorthands.js.map +1 -1
  223. package/dist/esm/createTamagui.js +128 -158
  224. package/dist/esm/createTamagui.js.map +3 -3
  225. package/dist/esm/createTheme.js +3 -3
  226. package/dist/esm/createTheme.js.map +2 -2
  227. package/dist/esm/createTokens.js +3 -24
  228. package/dist/esm/createTokens.js.map +2 -2
  229. package/dist/esm/createVariable.js +47 -26
  230. package/dist/esm/createVariable.js.map +2 -2
  231. package/dist/esm/createVariables.js +28 -0
  232. package/dist/esm/createVariables.js.map +7 -0
  233. package/dist/esm/helpers/RNComponents.js +11 -8
  234. package/dist/esm/helpers/RNComponents.js.map +2 -2
  235. package/dist/esm/{ThemeManager.js → helpers/ThemeManager.js} +53 -53
  236. package/dist/esm/helpers/ThemeManager.js.map +7 -0
  237. package/dist/esm/helpers/areEqualSets.js +2 -4
  238. package/dist/esm/helpers/areEqualSets.js.map +1 -1
  239. package/dist/esm/helpers/assignNativePropsToWeb.js +164 -0
  240. package/dist/esm/helpers/assignNativePropsToWeb.js.map +7 -0
  241. package/dist/esm/helpers/assignNativePropsToWeb.native.js +6 -0
  242. package/dist/esm/helpers/assignNativePropsToWeb.native.js.map +7 -0
  243. package/dist/esm/helpers/calc.js +47 -0
  244. package/dist/esm/helpers/calc.js.map +7 -0
  245. package/dist/esm/helpers/createMediaStyle.js +16 -10
  246. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  247. package/dist/esm/helpers/createPropMapper.js +263 -121
  248. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  249. package/dist/esm/helpers/createShallowUpdate.js +13 -12
  250. package/dist/esm/helpers/createShallowUpdate.js.map +2 -2
  251. package/dist/esm/helpers/expandStyle.js +66 -0
  252. package/dist/esm/helpers/expandStyle.js.map +7 -0
  253. package/dist/esm/helpers/expandStyles.js +89 -0
  254. package/dist/esm/helpers/expandStyles.js.map +7 -0
  255. package/dist/esm/helpers/extendStaticConfig.js +35 -28
  256. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  257. package/dist/esm/helpers/fixNativeShadow.js +2 -4
  258. package/dist/esm/helpers/fixNativeShadow.js.map +1 -1
  259. package/dist/esm/helpers/getAnimationDriver.js +8 -0
  260. package/dist/esm/helpers/getAnimationDriver.js.map +7 -0
  261. package/dist/esm/helpers/getExpandedShorthands.js +2 -5
  262. package/dist/esm/helpers/getExpandedShorthands.js.map +2 -2
  263. package/dist/esm/helpers/{getTextSize.js → getFont.js} +17 -9
  264. package/dist/esm/helpers/getFont.js.map +7 -0
  265. package/dist/esm/helpers/getFontLanguage.js +5 -0
  266. package/dist/esm/helpers/getFontLanguage.js.map +7 -0
  267. package/dist/esm/helpers/getSize.js +16 -10
  268. package/dist/esm/helpers/getSize.js.map +2 -2
  269. package/dist/esm/helpers/getSplitStyles.js +364 -188
  270. package/dist/esm/helpers/getSplitStyles.js.map +3 -3
  271. package/dist/esm/helpers/getStackSize.js +22 -0
  272. package/dist/esm/helpers/getStackSize.js.map +7 -0
  273. package/dist/esm/helpers/getStylesAtomic.js +187 -108
  274. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  275. package/dist/esm/helpers/getStylesAtomic.native.js +0 -3
  276. package/dist/esm/helpers/getStylesAtomic.native.js.map +1 -1
  277. package/dist/esm/helpers/getThemeCSSRules.js +79 -0
  278. package/dist/esm/helpers/getThemeCSSRules.js.map +7 -0
  279. package/dist/esm/helpers/getThemeCSSRules.native.js +7 -0
  280. package/dist/esm/helpers/getThemeCSSRules.native.js.map +7 -0
  281. package/dist/esm/helpers/getVariantExtras.js +63 -0
  282. package/dist/esm/helpers/getVariantExtras.js.map +7 -0
  283. package/dist/esm/helpers/insertStyleRule.js +82 -50
  284. package/dist/esm/helpers/insertStyleRule.js.map +3 -3
  285. package/dist/esm/helpers/isObj.js +1 -3
  286. package/dist/esm/helpers/isObj.js.map +1 -1
  287. package/dist/esm/helpers/isTamaguiComponent.js +13 -0
  288. package/dist/esm/helpers/isTamaguiComponent.js.map +7 -0
  289. package/dist/esm/helpers/isTamaguiElement.js +4 -6
  290. package/dist/esm/helpers/isTamaguiElement.js.map +2 -2
  291. package/dist/esm/helpers/matchMedia.js +6 -7
  292. package/dist/esm/helpers/matchMedia.js.map +2 -2
  293. package/dist/esm/helpers/matchMedia.native.js +1 -3
  294. package/dist/esm/helpers/matchMedia.native.js.map +1 -1
  295. package/dist/esm/helpers/mergeProps.js +30 -0
  296. package/dist/esm/helpers/mergeProps.js.map +7 -0
  297. package/dist/esm/helpers/mergeTransform.js +17 -0
  298. package/dist/esm/helpers/mergeTransform.js.map +7 -0
  299. package/dist/esm/helpers/normalizeColor.js +49 -0
  300. package/dist/esm/helpers/normalizeColor.js.map +7 -0
  301. package/dist/esm/helpers/normalizeValueWithProperty.js +69 -0
  302. package/dist/esm/helpers/normalizeValueWithProperty.js.map +7 -0
  303. package/dist/esm/helpers/proxyThemeVariables.js +6 -5
  304. package/dist/esm/helpers/proxyThemeVariables.js.map +2 -2
  305. package/dist/esm/helpers/pseudoDescriptors.js +18 -0
  306. package/dist/esm/helpers/pseudoDescriptors.js.map +7 -0
  307. package/dist/esm/helpers/registerCSSVariable.js +14 -0
  308. package/dist/esm/helpers/registerCSSVariable.js.map +7 -0
  309. package/dist/esm/helpers/startTransition.js +6 -0
  310. package/dist/esm/helpers/startTransition.js.map +7 -0
  311. package/dist/esm/helpers/themeable.js +11 -9
  312. package/dist/esm/helpers/themeable.js.map +2 -2
  313. package/dist/esm/helpers/themes.js +54 -0
  314. package/dist/esm/helpers/themes.js.map +7 -0
  315. package/dist/esm/helpers/useShallowSetState.js +20 -0
  316. package/dist/esm/helpers/useShallowSetState.js.map +7 -0
  317. package/dist/esm/helpers/validate.js +0 -75
  318. package/dist/esm/helpers/validate.js.map +3 -3
  319. package/dist/esm/helpers/withStaticProperties.js +2 -4
  320. package/dist/esm/helpers/withStaticProperties.js.map +1 -1
  321. package/dist/esm/hooks/getThemeUnwrapped.js +14 -0
  322. package/dist/esm/hooks/getThemeUnwrapped.js.map +7 -0
  323. package/dist/esm/hooks/useConstant.js +4 -4
  324. package/dist/esm/hooks/useConstant.js.map +2 -2
  325. package/dist/esm/hooks/useDidFinishSSR.js +35 -0
  326. package/dist/esm/hooks/useDidFinishSSR.js.map +7 -0
  327. package/dist/esm/hooks/useId.js +1 -31
  328. package/dist/esm/hooks/useId.js.map +2 -2
  329. package/dist/esm/hooks/useIsMounted.js +1 -4
  330. package/dist/esm/hooks/useIsMounted.js.map +2 -2
  331. package/dist/esm/hooks/useIsSSR.js +22 -0
  332. package/dist/esm/hooks/useIsSSR.js.map +7 -0
  333. package/dist/esm/hooks/useIsTouchDevice.js +10 -10
  334. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  335. package/dist/esm/hooks/useMedia.js +157 -103
  336. package/dist/esm/hooks/useMedia.js.map +3 -3
  337. package/dist/esm/hooks/usePressable.js +2 -4
  338. package/dist/esm/hooks/usePressable.js.map +1 -1
  339. package/dist/esm/hooks/useSafeRef.js +36 -0
  340. package/dist/esm/hooks/useSafeRef.js.map +7 -0
  341. package/dist/esm/hooks/useServerHooks.js +11 -0
  342. package/dist/esm/hooks/useServerHooks.js.map +7 -0
  343. package/dist/esm/hooks/useTheme.js +159 -109
  344. package/dist/esm/hooks/useTheme.js.map +3 -3
  345. package/dist/esm/hooks/useUnmountEffect.js +0 -3
  346. package/dist/esm/hooks/useUnmountEffect.js.map +1 -1
  347. package/dist/esm/index.js +51 -13
  348. package/dist/esm/index.js.map +2 -2
  349. package/dist/esm/injectStyles.js +16 -0
  350. package/dist/esm/injectStyles.js.map +7 -0
  351. package/dist/esm/insertFont.js +67 -0
  352. package/dist/esm/insertFont.js.map +7 -0
  353. package/dist/esm/static.js +15 -15
  354. package/dist/esm/static.js.map +2 -2
  355. package/dist/esm/styled.js +40 -12
  356. package/dist/esm/styled.js.map +2 -2
  357. package/dist/esm/types-rnw.js +0 -0
  358. package/dist/esm/types-rnw.js.map +0 -0
  359. package/dist/esm/types.js +0 -0
  360. package/dist/esm/types.js.map +0 -0
  361. package/dist/esm/updateTheme.js +23 -0
  362. package/dist/esm/updateTheme.js.map +7 -0
  363. package/dist/esm/vendor/Pressability.js +7 -0
  364. package/dist/esm/vendor/Pressability.js.map +7 -0
  365. package/dist/esm/vendor/Pressability.native.js +7 -0
  366. package/dist/esm/vendor/Pressability.native.js.map +7 -0
  367. package/dist/esm/views/FontLanguage.js +14 -0
  368. package/dist/esm/views/FontLanguage.js.map +7 -0
  369. package/dist/esm/views/FontLanguage.native.js +14 -0
  370. package/dist/esm/views/FontLanguage.native.js.map +7 -0
  371. package/dist/esm/views/FontLanguage.types.js +1 -0
  372. package/dist/{cjs/defaultComponentState.js.map → esm/views/FontLanguage.types.js.map} +0 -0
  373. package/dist/esm/views/Slot.js +50 -32
  374. package/dist/esm/views/Slot.js.map +2 -2
  375. package/dist/esm/views/Stack.js +0 -0
  376. package/dist/esm/views/Stack.js.map +1 -1
  377. package/dist/esm/views/TamaguiProvider.js +52 -0
  378. package/dist/esm/views/TamaguiProvider.js.map +7 -0
  379. package/dist/esm/views/Text.js +13 -5
  380. package/dist/esm/views/Text.js.map +2 -2
  381. package/dist/esm/views/Theme.js +35 -19
  382. package/dist/esm/views/Theme.js.map +3 -3
  383. package/dist/esm/views/ThemeInverse.js +22 -20
  384. package/dist/esm/views/ThemeInverse.js.map +2 -2
  385. package/dist/esm/views/ThemeProvider.js +28 -21
  386. package/dist/esm/views/ThemeProvider.js.map +2 -2
  387. package/dist/esm/views/ThemeReset.js +13 -12
  388. package/dist/esm/views/ThemeReset.js.map +2 -2
  389. package/package.json +48 -16
  390. package/reset.css +25 -4
  391. package/src/Tamagui.ts +44 -0
  392. package/src/addTheme.ts +67 -0
  393. package/src/config.ts +45 -0
  394. package/src/constants/constants.ts +15 -0
  395. package/src/constants/isDevTools.ts +6 -0
  396. package/src/constants/platform.native.ts +14 -0
  397. package/src/constants/platform.ts +41 -0
  398. package/src/contexts/ButtonInsideButtonContext.tsx +3 -0
  399. package/src/contexts/FontLanguageContext.tsx +5 -0
  400. package/src/contexts/TextAncestorContext.tsx +10 -0
  401. package/src/contexts/ThemeContext.tsx +5 -0
  402. package/src/createComponent.tsx +1599 -0
  403. package/src/createFont.ts +29 -0
  404. package/src/createShorthands.ts +5 -0
  405. package/src/createTamagui.ts +229 -0
  406. package/src/createTheme.ts +13 -0
  407. package/src/createTokens.ts +35 -0
  408. package/src/createVariable.ts +85 -0
  409. package/src/createVariables.ts +42 -0
  410. package/src/helpers/RNComponents.tsx +14 -0
  411. package/src/helpers/ThemeManager.tsx +235 -0
  412. package/src/helpers/areEqualSets.tsx +9 -0
  413. package/src/helpers/assignNativePropsToWeb.native.tsx +1 -0
  414. package/src/helpers/assignNativePropsToWeb.tsx +178 -0
  415. package/src/helpers/calc.ts +68 -0
  416. package/src/helpers/createMediaStyle.ts +48 -0
  417. package/src/helpers/createPropMapper.ts +523 -0
  418. package/src/helpers/expandStyle.ts +81 -0
  419. package/src/helpers/expandStyles.ts +106 -0
  420. package/src/helpers/extendStaticConfig.ts +76 -0
  421. package/src/helpers/fixNativeShadow.tsx +2 -0
  422. package/src/helpers/getAnimationDriver.tsx +5 -0
  423. package/src/helpers/getExpandedShorthands.ts +15 -0
  424. package/src/helpers/getFont.tsx +43 -0
  425. package/src/helpers/getFontLanguage.ts +2 -0
  426. package/src/helpers/getSize.ts +22 -0
  427. package/src/helpers/getSplitStyles.tsx +738 -0
  428. package/src/helpers/getStackSize.ts +22 -0
  429. package/src/helpers/getStylesAtomic.native.ts +3 -0
  430. package/src/helpers/getStylesAtomic.ts +292 -0
  431. package/src/helpers/getThemeCSSRules.native.ts +3 -0
  432. package/src/helpers/getThemeCSSRules.ts +105 -0
  433. package/src/helpers/getVariantExtras.tsx +84 -0
  434. package/src/helpers/insertStyleRule.tsx +150 -0
  435. package/src/helpers/isObj.ts +1 -0
  436. package/src/helpers/isTamaguiComponent.tsx +15 -0
  437. package/src/helpers/isTamaguiElement.tsx +12 -0
  438. package/src/helpers/matchMedia.native.ts +6 -0
  439. package/src/helpers/matchMedia.ts +16 -0
  440. package/src/helpers/mergeProps.ts +56 -0
  441. package/src/helpers/mergeTransform.ts +16 -0
  442. package/src/helpers/normalizeColor.ts +53 -0
  443. package/src/helpers/normalizeValueWithProperty.ts +80 -0
  444. package/src/helpers/proxyThemeVariables.tsx +18 -0
  445. package/src/helpers/pseudoDescriptors.ts +18 -0
  446. package/src/helpers/registerCSSVariable.ts +11 -0
  447. package/src/helpers/startTransition.ts +4 -0
  448. package/src/helpers/themeable.tsx +45 -0
  449. package/src/helpers/themes.ts +69 -0
  450. package/src/helpers/useShallowSetState.tsx +20 -0
  451. package/src/helpers/validate.ts +80 -0
  452. package/src/helpers/withStaticProperties.tsx +7 -0
  453. package/src/hooks/getThemeUnwrapped.tsx +8 -0
  454. package/src/hooks/useConstant.tsx +19 -0
  455. package/src/hooks/useId.tsx +1 -0
  456. package/src/hooks/useIsMounted.ts +16 -0
  457. package/src/hooks/useIsTouchDevice.tsx +20 -0
  458. package/src/hooks/useMedia.tsx +266 -0
  459. package/src/hooks/usePressable.tsx +9 -0
  460. package/src/hooks/useSafeRef.ts +49 -0
  461. package/src/hooks/useServerHooks.tsx +12 -0
  462. package/src/hooks/useTheme.tsx +299 -0
  463. package/src/hooks/useUnmountEffect.ts +5 -0
  464. package/src/index.ts +83 -0
  465. package/src/injectStyles.ts +20 -0
  466. package/src/insertFont.ts +70 -0
  467. package/src/static.ts +15 -0
  468. package/src/styled.tsx +198 -0
  469. package/src/types-rnw.tsx +162 -0
  470. package/src/types.tsx +1307 -0
  471. package/src/updateTheme.ts +23 -0
  472. package/src/vendor/Pressability.native.tsx +3 -0
  473. package/src/vendor/Pressability.tsx +2 -0
  474. package/src/views/FontLanguage.native.tsx +9 -0
  475. package/src/views/FontLanguage.tsx +18 -0
  476. package/src/views/FontLanguage.types.ts +13 -0
  477. package/src/views/Slot.tsx +151 -0
  478. package/src/views/Stack.tsx +24 -0
  479. package/src/views/TamaguiProvider.tsx +56 -0
  480. package/src/views/Text.tsx +79 -0
  481. package/src/views/Theme.tsx +72 -0
  482. package/src/views/ThemeInverse.tsx +33 -0
  483. package/src/views/ThemeProvider.tsx +63 -0
  484. package/src/views/ThemeReset.tsx +43 -0
  485. package/types/Tamagui.d.ts +6 -8
  486. package/types/addTheme.d.ts +11 -0
  487. package/types/conf.d.ts +4 -5
  488. package/types/config.d.ts +47 -0
  489. package/types/constants/constants.d.ts +1 -1
  490. package/types/constants/isDevTools.d.ts +2 -0
  491. package/types/constants/platform.d.ts +7 -6
  492. package/types/constants/platform.native.d.ts +13 -0
  493. package/types/contexts/FontLanguageContext.d.ts +5 -0
  494. package/types/{views → contexts}/TextAncestorContext.d.ts +0 -0
  495. package/types/{ThemeContext.d.ts → contexts/ThemeContext.d.ts} +1 -1
  496. package/types/createComponent.d.ts +32 -15
  497. package/types/createComponent.server.d.ts +36 -0
  498. package/types/createTamagui.d.ts +2 -17
  499. package/types/createTheme.d.ts +1 -1
  500. package/types/createTokens.d.ts +5 -6
  501. package/types/createVariable.d.ts +24 -12
  502. package/types/createVariables.d.ts +10 -0
  503. package/types/helpers/RNComponents.d.ts +1 -1
  504. package/types/helpers/ThemeManager.d.ts +46 -0
  505. package/types/helpers/assignNativePropsToWeb.d.ts +2 -0
  506. package/types/helpers/assignNativePropsToWeb.native.d.ts +2 -0
  507. package/types/helpers/calc.d.ts +17 -0
  508. package/types/helpers/createMediaStyle.d.ts +2 -4
  509. package/types/helpers/createPropMapper.d.ts +6 -3
  510. package/types/helpers/createShallowUpdate.d.ts +1 -2
  511. package/types/helpers/cssHash.d.ts +2 -0
  512. package/types/helpers/expandStyle.d.ts +6 -0
  513. package/types/helpers/expandStyles.d.ts +26 -0
  514. package/types/helpers/getAnimationDriver.d.ts +6 -0
  515. package/types/helpers/getFont.d.ts +3 -0
  516. package/types/helpers/getFontLanguage.d.ts +2 -0
  517. package/types/helpers/getSize.d.ts +3 -2
  518. package/types/helpers/getSplitStyles.d.ts +16 -9
  519. package/types/helpers/getStackSize.d.ts +8 -0
  520. package/types/helpers/getStylesAtomic.d.ts +17 -22
  521. package/types/helpers/getThemeCSSRules.d.ts +8 -0
  522. package/types/helpers/getThemeCSSRules.native.d.ts +2 -0
  523. package/types/helpers/getVariantExtras.d.ts +5 -0
  524. package/types/helpers/insertStyleRule.d.ts +7 -3
  525. package/types/helpers/isTamaguiComponent.d.ts +5 -0
  526. package/types/helpers/isTamaguiElement.d.ts +5 -1
  527. package/types/helpers/matchMedia.d.ts +1 -1
  528. package/types/helpers/mergeProps.d.ts +17 -0
  529. package/types/helpers/mergeTransform.d.ts +7 -0
  530. package/types/helpers/normalizeColor.d.ts +3 -0
  531. package/types/helpers/normalizeValueWithProperty.d.ts +6 -0
  532. package/types/helpers/pseudoDescriptors.d.ts +16 -0
  533. package/types/helpers/registerCSSVariable.d.ts +5 -0
  534. package/types/helpers/startTransition.d.ts +3 -0
  535. package/types/helpers/themes.d.ts +4 -0
  536. package/types/helpers/useAnimationDriver.d.ts +1 -0
  537. package/types/helpers/useShallowSetState.d.ts +3 -0
  538. package/types/helpers/validate.d.ts +0 -3
  539. package/types/hooks/getThemeUnwrapped.d.ts +3 -0
  540. package/types/hooks/useAnimationDriver.d.ts +1 -0
  541. package/types/hooks/useDidFinishSSR.d.ts +3 -0
  542. package/types/hooks/useFeatures.d.ts +10 -5
  543. package/types/hooks/useId.d.ts +1 -8
  544. package/types/hooks/useIsSSR.d.ts +4 -0
  545. package/types/hooks/useMedia.d.ts +20 -6
  546. package/types/hooks/useSafeRef.d.ts +4 -0
  547. package/types/hooks/useServerContext.d.ts +2 -0
  548. package/types/hooks/useServerHooks.d.ts +4 -0
  549. package/types/hooks/useTheme.d.ts +21 -31
  550. package/types/index.d.ts +29 -9
  551. package/types/injectStyles.d.ts +7 -0
  552. package/types/insertFont.d.ts +9 -0
  553. package/types/static.d.ts +2 -15
  554. package/types/styled.d.ts +7 -3
  555. package/types/types.d.ts +277 -77
  556. package/types/updateTheme.d.ts +9 -0
  557. package/types/vendor/Pressability.d.ts +3 -0
  558. package/types/vendor/Pressability.native.d.ts +3 -0
  559. package/types/views/FontLanguage.d.ts +4 -0
  560. package/types/views/FontLanguage.native.d.ts +4 -0
  561. package/types/views/FontLanguage.types.d.ts +11 -0
  562. package/types/views/Slot.d.ts +1 -0
  563. package/types/views/TamaguiProvider.d.ts +4 -0
  564. package/types/views/Theme.d.ts +3 -9
  565. package/types/views/ThemeInverse.d.ts +4 -8
  566. package/types/views/ThemeProvider.d.ts +2 -1
  567. package/dist/cjs/ThemeContext.js.map +0 -7
  568. package/dist/cjs/ThemeManager.js.map +0 -7
  569. package/dist/cjs/conf.js.map +0 -7
  570. package/dist/cjs/constants/rnw.js +0 -46
  571. package/dist/cjs/constants/rnw.js.map +0 -7
  572. package/dist/cjs/defaultComponentState.js +0 -1
  573. package/dist/cjs/helpers/addStylesUsingClassname.js +0 -87
  574. package/dist/cjs/helpers/addStylesUsingClassname.js.map +0 -7
  575. package/dist/cjs/helpers/createTamaguiProvider.js +0 -93
  576. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  577. package/dist/cjs/helpers/fixNativeShadow.native.js +0 -53
  578. package/dist/cjs/helpers/fixNativeShadow.native.js.map +0 -7
  579. package/dist/cjs/helpers/getButtonSize.js +0 -45
  580. package/dist/cjs/helpers/getButtonSize.js.map +0 -7
  581. package/dist/cjs/helpers/getTextSize.js.map +0 -7
  582. package/dist/cjs/helpers/nativeGestureHandler.js.map +0 -7
  583. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  584. package/dist/cjs/helpers/wrapThemeManagerContext.js.map +0 -7
  585. package/dist/cjs/hooks/useFeatures.js +0 -228
  586. package/dist/cjs/hooks/useFeatures.js.map +0 -7
  587. package/dist/cjs/hooks/usePrevious.js +0 -1
  588. package/dist/cjs/hooks/usePrevious.js.map +0 -7
  589. package/dist/cjs/nativeGestureHandler.native.js.map +0 -7
  590. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  591. package/dist/esm/ThemeContext.js.map +0 -7
  592. package/dist/esm/ThemeManager.js.map +0 -7
  593. package/dist/esm/conf.js +0 -36
  594. package/dist/esm/conf.js.map +0 -7
  595. package/dist/esm/constants/rnw.js +0 -24
  596. package/dist/esm/constants/rnw.js.map +0 -7
  597. package/dist/esm/defaultComponentState.js +0 -1
  598. package/dist/esm/defaultComponentState.js.map +0 -7
  599. package/dist/esm/helpers/addStylesUsingClassname.js +0 -64
  600. package/dist/esm/helpers/addStylesUsingClassname.js.map +0 -7
  601. package/dist/esm/helpers/createTamaguiProvider.js +0 -40
  602. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  603. package/dist/esm/helpers/fixNativeShadow.native.js +0 -32
  604. package/dist/esm/helpers/fixNativeShadow.native.js.map +0 -7
  605. package/dist/esm/helpers/getButtonSize.js +0 -24
  606. package/dist/esm/helpers/getButtonSize.js.map +0 -7
  607. package/dist/esm/helpers/getTextSize.js.map +0 -7
  608. package/dist/esm/helpers/nativeGestureHandler.js +0 -7
  609. package/dist/esm/helpers/nativeGestureHandler.js.map +0 -7
  610. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  611. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  612. package/dist/esm/helpers/wrapThemeManagerContext.js +0 -14
  613. package/dist/esm/helpers/wrapThemeManagerContext.js.map +0 -7
  614. package/dist/esm/hooks/useFeatures.js +0 -173
  615. package/dist/esm/hooks/useFeatures.js.map +0 -7
  616. package/dist/esm/hooks/usePrevious.js +0 -1
  617. package/dist/esm/hooks/usePrevious.js.map +0 -7
  618. package/dist/esm/nativeGestureHandler.native.js +0 -2
  619. package/dist/esm/nativeGestureHandler.native.js.map +0 -7
  620. package/dist/esm/views/TextAncestorContext.js +0 -18
  621. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  622. package/dist/jsx/Tamagui.js +0 -41
  623. package/dist/jsx/ThemeContext.js +0 -5
  624. package/dist/jsx/ThemeManager.js +0 -186
  625. package/dist/jsx/conf.js +0 -35
  626. package/dist/jsx/constants/constants.js +0 -17
  627. package/dist/jsx/constants/platform.js +0 -25
  628. package/dist/jsx/constants/rnw.js +0 -23
  629. package/dist/jsx/contexts/ButtonInsideButtonContext.js +0 -5
  630. package/dist/jsx/createComponent.js +0 -636
  631. package/dist/jsx/createFont.js +0 -27
  632. package/dist/jsx/createShorthands.js +0 -9
  633. package/dist/jsx/createTamagui.js +0 -201
  634. package/dist/jsx/createTheme.js +0 -6
  635. package/dist/jsx/createTokens.js +0 -28
  636. package/dist/jsx/createVariable.js +0 -48
  637. package/dist/jsx/defaultComponentState.js +0 -0
  638. package/dist/jsx/helpers/RNComponents.js +0 -11
  639. package/dist/jsx/helpers/addStylesUsingClassname.js +0 -63
  640. package/dist/jsx/helpers/areEqualSets.js +0 -15
  641. package/dist/jsx/helpers/createMediaStyle.js +0 -30
  642. package/dist/jsx/helpers/createPropMapper.js +0 -237
  643. package/dist/jsx/helpers/createShallowUpdate.js +0 -18
  644. package/dist/jsx/helpers/createTamaguiProvider.js +0 -34
  645. package/dist/jsx/helpers/extendStaticConfig.js +0 -61
  646. package/dist/jsx/helpers/fixNativeShadow.js +0 -7
  647. package/dist/jsx/helpers/fixNativeShadow.native.js +0 -31
  648. package/dist/jsx/helpers/getButtonSize.js +0 -23
  649. package/dist/jsx/helpers/getExpandedShorthands.js +0 -18
  650. package/dist/jsx/helpers/getSize.js +0 -12
  651. package/dist/jsx/helpers/getSplitStyles.js +0 -322
  652. package/dist/jsx/helpers/getStylesAtomic.js +0 -130
  653. package/dist/jsx/helpers/getStylesAtomic.native.js +0 -9
  654. package/dist/jsx/helpers/getTextSize.js +0 -33
  655. package/dist/jsx/helpers/insertStyleRule.js +0 -94
  656. package/dist/jsx/helpers/isObj.js +0 -6
  657. package/dist/jsx/helpers/isTamaguiElement.js +0 -10
  658. package/dist/jsx/helpers/matchMedia.js +0 -17
  659. package/dist/jsx/helpers/matchMedia.native.js +0 -8
  660. package/dist/jsx/helpers/nativeGestureHandler.js +0 -6
  661. package/dist/jsx/helpers/nativeGestureHandler.native.js +0 -1
  662. package/dist/jsx/helpers/proxyThemeVariables.js +0 -17
  663. package/dist/jsx/helpers/themeable.js +0 -24
  664. package/dist/jsx/helpers/validate.js +0 -75
  665. package/dist/jsx/helpers/withStaticProperties.js +0 -9
  666. package/dist/jsx/helpers/wrapThemeManagerContext.js +0 -10
  667. package/dist/jsx/hooks/useConstant.js +0 -14
  668. package/dist/jsx/hooks/useFeatures.js +0 -167
  669. package/dist/jsx/hooks/useId.js +0 -34
  670. package/dist/jsx/hooks/useIsMounted.js +0 -18
  671. package/dist/jsx/hooks/useIsTouchDevice.js +0 -16
  672. package/dist/jsx/hooks/useMedia.js +0 -158
  673. package/dist/jsx/hooks/usePressable.js +0 -13
  674. package/dist/jsx/hooks/usePrevious.js +0 -0
  675. package/dist/jsx/hooks/useTheme.js +0 -177
  676. package/dist/jsx/hooks/useUnmountEffect.js +0 -10
  677. package/dist/jsx/index.js +0 -54
  678. package/dist/jsx/nativeGestureHandler.native.js +0 -1
  679. package/dist/jsx/static.js +0 -16
  680. package/dist/jsx/styled.js +0 -47
  681. package/dist/jsx/types-rnw.js +0 -0
  682. package/dist/jsx/types.js +0 -0
  683. package/dist/jsx/views/Slot.js +0 -75
  684. package/dist/jsx/views/Stack.js +0 -12
  685. package/dist/jsx/views/Text.js +0 -56
  686. package/dist/jsx/views/TextAncestorContext.js +0 -15
  687. package/dist/jsx/views/Theme.js +0 -31
  688. package/dist/jsx/views/ThemeInverse.js +0 -27
  689. package/dist/jsx/views/ThemeProvider.js +0 -35
  690. package/dist/jsx/views/ThemeReset.js +0 -34
  691. package/types/Tamagui.d.ts.map +0 -1
  692. package/types/ThemeContext.d.ts.map +0 -1
  693. package/types/ThemeManager.d.ts +0 -49
  694. package/types/ThemeManager.d.ts.map +0 -1
  695. package/types/conf.d.ts.map +0 -1
  696. package/types/constants/constants.d.ts.map +0 -1
  697. package/types/constants/platform.d.ts.map +0 -1
  698. package/types/constants/rnw.d.ts +0 -2
  699. package/types/constants/rnw.d.ts.map +0 -1
  700. package/types/contexts/ButtonInsideButtonContext.d.ts.map +0 -1
  701. package/types/createComponent.d.ts.map +0 -1
  702. package/types/createFont.d.ts.map +0 -1
  703. package/types/createShorthands.d.ts.map +0 -1
  704. package/types/createTamagui.d.ts.map +0 -1
  705. package/types/createTheme.d.ts.map +0 -1
  706. package/types/createTokens.d.ts.map +0 -1
  707. package/types/createVariable.d.ts.map +0 -1
  708. package/types/defaultComponentState.d.ts +0 -1
  709. package/types/defaultComponentState.d.ts.map +0 -1
  710. package/types/helpers/RNComponents.d.ts.map +0 -1
  711. package/types/helpers/addStylesUsingClassname.d.ts +0 -3
  712. package/types/helpers/addStylesUsingClassname.d.ts.map +0 -1
  713. package/types/helpers/areEqualSets.d.ts.map +0 -1
  714. package/types/helpers/createMediaStyle.d.ts.map +0 -1
  715. package/types/helpers/createPropMapper.d.ts.map +0 -1
  716. package/types/helpers/createShallowUpdate.d.ts.map +0 -1
  717. package/types/helpers/createTamaguiProvider.d.ts +0 -7
  718. package/types/helpers/createTamaguiProvider.d.ts.map +0 -1
  719. package/types/helpers/extendStaticConfig.d.ts.map +0 -1
  720. package/types/helpers/fixNativeShadow.d.ts.map +0 -1
  721. package/types/helpers/fixNativeShadow.native.d.ts +0 -3
  722. package/types/helpers/fixNativeShadow.native.d.ts.map +0 -1
  723. package/types/helpers/getButtonSize.d.ts +0 -8
  724. package/types/helpers/getButtonSize.d.ts.map +0 -1
  725. package/types/helpers/getExpandedShorthands.d.ts.map +0 -1
  726. package/types/helpers/getSize.d.ts.map +0 -1
  727. package/types/helpers/getSplitStyles.d.ts.map +0 -1
  728. package/types/helpers/getStylesAtomic.d.ts.map +0 -1
  729. package/types/helpers/getStylesAtomic.native.d.ts.map +0 -1
  730. package/types/helpers/getTextSize.d.ts +0 -3
  731. package/types/helpers/getTextSize.d.ts.map +0 -1
  732. package/types/helpers/insertStyleRule.d.ts.map +0 -1
  733. package/types/helpers/isObj.d.ts.map +0 -1
  734. package/types/helpers/isTamaguiElement.d.ts.map +0 -1
  735. package/types/helpers/matchMedia.d.ts.map +0 -1
  736. package/types/helpers/matchMedia.native.d.ts.map +0 -1
  737. package/types/helpers/nativeGestureHandler.d.ts +0 -2
  738. package/types/helpers/nativeGestureHandler.d.ts.map +0 -1
  739. package/types/helpers/nativeGestureHandler.native.d.ts +0 -2
  740. package/types/helpers/nativeGestureHandler.native.d.ts.map +0 -1
  741. package/types/helpers/proxyThemeVariables.d.ts.map +0 -1
  742. package/types/helpers/themeable.d.ts.map +0 -1
  743. package/types/helpers/validate.d.ts.map +0 -1
  744. package/types/helpers/withStaticProperties.d.ts.map +0 -1
  745. package/types/helpers/wrapThemeManagerContext.d.ts +0 -3
  746. package/types/helpers/wrapThemeManagerContext.d.ts.map +0 -1
  747. package/types/hooks/useConstant.d.ts.map +0 -1
  748. package/types/hooks/useFeatures.d.ts.map +0 -1
  749. package/types/hooks/useId.d.ts.map +0 -1
  750. package/types/hooks/useIsMounted.d.ts.map +0 -1
  751. package/types/hooks/useIsTouchDevice.d.ts.map +0 -1
  752. package/types/hooks/useMedia.d.ts.map +0 -1
  753. package/types/hooks/usePressable.d.ts.map +0 -1
  754. package/types/hooks/usePrevious.d.ts +0 -1
  755. package/types/hooks/usePrevious.d.ts.map +0 -1
  756. package/types/hooks/useTheme.d.ts.map +0 -1
  757. package/types/hooks/useUnmountEffect.d.ts.map +0 -1
  758. package/types/index.d.ts.map +0 -1
  759. package/types/nativeGestureHandler.native.d.ts +0 -2
  760. package/types/nativeGestureHandler.native.d.ts.map +0 -1
  761. package/types/static.d.ts.map +0 -1
  762. package/types/styled.d.ts.map +0 -1
  763. package/types/types-rnw.d.ts.map +0 -1
  764. package/types/types.d.ts.map +0 -1
  765. package/types/views/Slot.d.ts.map +0 -1
  766. package/types/views/Stack.d.ts.map +0 -1
  767. package/types/views/Text.d.ts.map +0 -1
  768. package/types/views/TextAncestorContext.d.ts.map +0 -1
  769. package/types/views/Theme.d.ts.map +0 -1
  770. package/types/views/ThemeInverse.d.ts.map +0 -1
  771. package/types/views/ThemeProvider.d.ts.map +0 -1
  772. package/types/views/ThemeReset.d.ts.map +0 -1
@@ -0,0 +1,738 @@
1
+ import { isClient, isRSC, isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
2
+ import { stylePropsText, stylePropsTransform, validPseudoKeys, validStyles } from '@tamagui/helpers'
3
+ import { useInsertionEffect } from 'react'
4
+ import type { ViewStyle } from 'react-native'
5
+
6
+ import { getConfig } from '../config'
7
+ import { isDevTools } from '../constants/isDevTools'
8
+ import { mediaState as globalMediaState, mediaQueryConfig } from '../hooks/useMedia'
9
+ import type {
10
+ DebugProp,
11
+ MediaQueryKey,
12
+ PseudoPropKeys,
13
+ PseudoStyles,
14
+ SplitStyleState,
15
+ StackProps,
16
+ StaticConfigParsed,
17
+ TamaguiInternalConfig,
18
+ ThemeParsed,
19
+ } from '../types'
20
+ import { FontLanguageProps, LanguageContextType } from '../views/FontLanguage.types'
21
+ import { createMediaStyle } from './createMediaStyle'
22
+ import { getPropMappedFontFamily } from './createPropMapper'
23
+ import { fixStyles } from './expandStyles'
24
+ import { getAtomicStyle, getStylesAtomic, styleToCSS } from './getStylesAtomic'
25
+ import {
26
+ PartialStyleObject,
27
+ RulesToInsert,
28
+ insertStyleRules,
29
+ insertedTransforms,
30
+ shouldInsertStyleRules,
31
+ updateInserted,
32
+ updateRules,
33
+ } from './insertStyleRule'
34
+ import { mergeProps } from './mergeProps'
35
+ import { mergeTransform } from './mergeTransform'
36
+ import { normalizeValueWithProperty } from './normalizeValueWithProperty.js'
37
+ import { pseudoDescriptors } from './pseudoDescriptors'
38
+
39
+ export type SplitStyles = ReturnType<typeof getSplitStyles>
40
+ export type ClassNamesObject = Record<string, string>
41
+ export type SplitStyleResult = ReturnType<typeof getSplitStyles>
42
+
43
+ const skipProps = {
44
+ animation: true,
45
+ animateOnly: true,
46
+ debug: true,
47
+ componentName: true,
48
+
49
+ ...(!isWeb && {
50
+ tag: true,
51
+ whiteSpace: true,
52
+ wordWrap: true,
53
+ textOverflow: true,
54
+ textDecorationDistance: true,
55
+ userSelect: true,
56
+ selectable: true,
57
+ cursor: true,
58
+ contain: true,
59
+ boxSizing: true,
60
+ boxShadow: true,
61
+ }),
62
+ }
63
+
64
+ type TransformNamespaceKey = 'transform' | PseudoPropKeys | MediaQueryKey
65
+
66
+ let conf: TamaguiInternalConfig
67
+
68
+ type StyleSplitter = (
69
+ props: { [key: string]: any },
70
+ staticConfig: StaticConfigParsed,
71
+ theme: ThemeParsed,
72
+ state: SplitStyleState,
73
+ defaultClassNames?: any,
74
+ languageContext?: LanguageContextType,
75
+ debug?: DebugProp
76
+ ) => {
77
+ pseudos: PseudoStyles
78
+ medias: Record<MediaQueryKey, ViewStyle>
79
+ style: ViewStyle
80
+ classNames: ClassNamesObject
81
+ rulesToInsert: RulesToInsert
82
+ viewProps: StackProps
83
+ fontFamily: string | undefined
84
+ mediaKeys: string[]
85
+ }
86
+
87
+ export const PROP_SPLIT = '-'
88
+
89
+ // this is how compiler outputs psueodo identifier
90
+ // TODO remove in next refactor
91
+ export const pseudoCNInverse = {
92
+ hover: 'hoverStyle',
93
+ focus: 'focusStyle',
94
+ press: 'pressStyle',
95
+ }
96
+
97
+ // loop props backwards
98
+ // track used keys:
99
+ // const keys = new Set<string>()
100
+ // keep classnames and styles separate:
101
+ // const styles = {}
102
+ // const classNames = {}
103
+
104
+ export const getSplitStyles: StyleSplitter = (
105
+ props,
106
+ staticConfig,
107
+ theme,
108
+ state,
109
+ defaultClassNames,
110
+ languageContext,
111
+ debug
112
+ ) => {
113
+ conf = conf || getConfig()
114
+ const validStyleProps = staticConfig.isText ? stylePropsText : validStyles
115
+ const mediaKeys: string[] = []
116
+ const viewProps: StackProps = {}
117
+ const pseudos: PseudoStyles = {}
118
+ const medias: Record<MediaQueryKey, ViewStyle> = {}
119
+ const mediaState = state.mediaState || globalMediaState
120
+ const usedKeys = new Set<string>()
121
+ const propKeys = Object.keys(props)
122
+ const shouldDoClasses =
123
+ staticConfig.acceptsClassName &&
124
+ (isWeb || process.env.IS_STATIC === 'is_static') &&
125
+ !state.noClassNames &&
126
+ !props.animation
127
+ const len = propKeys.length
128
+ const rulesToInsert: RulesToInsert = []
129
+ const style: ViewStyle = {}
130
+ // TODO make this CSS, not compile-friendly
131
+ if (state.hasTextAncestor) {
132
+ // parity with react-native-web
133
+ style.display = 'inline-flex' as any
134
+ }
135
+ const classNames: ClassNamesObject = {}
136
+ // we need to gather these specific to each media query / pseudo
137
+ // value is [hash, val], so ["-jnjad-asdnjk", "scaleX(1) rotate(10deg)"]
138
+ const transforms: Record<TransformNamespaceKey, [string, string]> = {}
139
+ // fontFamily is our special baby, ensure we grab the latest set one always
140
+ let fontFamily: string | undefined
141
+
142
+ // loop backwards so we can skip already-used props
143
+ for (let i = len - 1; i >= 0; i--) {
144
+ let keyInit = propKeys[i]
145
+ const valInit = props[keyInit]
146
+
147
+ // normalize shorthands up front
148
+ const expandedKey = conf.shorthands[keyInit]
149
+ if (expandedKey) {
150
+ keyInit = expandedKey
151
+ }
152
+
153
+ if (usedKeys.has(keyInit)) continue
154
+ if (skipProps[keyInit]) continue
155
+ if (!isWeb && keyInit.startsWith('data-')) continue
156
+
157
+ if (keyInit === 'style' || keyInit.startsWith('_style')) {
158
+ if (!valInit) continue
159
+ for (const key in valInit) {
160
+ if (usedKeys.has(key)) continue
161
+ if (valInit && typeof valInit === 'object') {
162
+ // newer react native versions return a full object instead of ID
163
+ for (const skey in valInit) {
164
+ if (usedKeys.has(skey)) continue
165
+ usedKeys.add(skey)
166
+ style[skey] = valInit[skey]
167
+ }
168
+ } else {
169
+ usedKeys.add(key)
170
+ style[key] = valInit
171
+ }
172
+ }
173
+ continue
174
+ }
175
+
176
+ if (process.env.TAMAGUI_TARGET === 'web') {
177
+ if (keyInit === 'className') {
178
+ let nonTamaguis = ''
179
+ if (!valInit) continue
180
+ for (const cn of valInit.split(' ')) {
181
+ if (cn[0] === '_') {
182
+ // tamagui, merge it expanded on key, eventually this will go away with better compiler
183
+ const [shorthand, mediaOrPseudo] = cn.slice(1).split('-')
184
+ const isMedia = mediaOrPseudo[0] === '_'
185
+ const isPseudo = mediaOrPseudo[0] === '0'
186
+ const isMediaOrPseudo = isMedia || isPseudo
187
+ let fullKey = conf.shorthands[shorthand]
188
+ if (isMedia) {
189
+ // is media
190
+ let mediaShortKey = mediaOrPseudo.slice(1)
191
+ mediaShortKey = mediaShortKey.slice(0, mediaShortKey.indexOf('_'))
192
+ fullKey += `${PROP_SPLIT}${mediaShortKey}`
193
+ } else if (isPseudo) {
194
+ // is pseudo
195
+ const pseudoShortKey = mediaOrPseudo.slice(1)
196
+ fullKey += `${PROP_SPLIT}${pseudoShortKey}`
197
+ }
198
+ usedKeys.add(fullKey)
199
+ mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo)
200
+ } else {
201
+ nonTamaguis += ' ' + cn
202
+ }
203
+ }
204
+ if (nonTamaguis) {
205
+ usedKeys.add(keyInit)
206
+ mergeClassName(transforms, classNames, keyInit, nonTamaguis)
207
+ }
208
+ continue
209
+ }
210
+
211
+ if (valInit && valInit[0] === '_') {
212
+ // if valid style key (or pseudo like color-hover):
213
+ // this conditional and esp the pseudo check rarely runs so not a perf issue
214
+ const isValidClassName = validStyles[keyInit]
215
+ const isMediaOrPseudo =
216
+ !isValidClassName &&
217
+ keyInit.includes(PROP_SPLIT) &&
218
+ validStyles[keyInit.split(PROP_SPLIT)[0]]
219
+ if (isValidClassName || isMediaOrPseudo) {
220
+ usedKeys.add(keyInit)
221
+ mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo)
222
+ continue
223
+ }
224
+ }
225
+ }
226
+
227
+ if (state.keepVariantsAsProps) {
228
+ if (
229
+ (staticConfig.defaultVariants && keyInit in staticConfig.defaultVariants) ||
230
+ // may want to just: not compile styled() into classnames, always do this, and always pass in all values in extras.props
231
+ // but we'd want to add styled({ extracted: true }) or something at compile time to save on parsing a bit...
232
+ (staticConfig.variants && keyInit in staticConfig.variants)
233
+ ) {
234
+ viewProps[keyInit] = valInit
235
+ }
236
+ }
237
+
238
+ /**
239
+ * There's (some) reason to this madness: we want to allow returning media/pseudo from variants
240
+ * Say you have a variant hoverable: { true: { hoverStyle: {} } }
241
+ * We run propMapper first to expand variant, then we run the inner loop and look again
242
+ * for if there's a pseudo/media returned from it.
243
+ */
244
+
245
+ let isMedia = keyInit[0] === '$'
246
+ let isPseudo = validPseudoKeys[keyInit]
247
+ let isMediaOrPseudo = isMedia || isPseudo
248
+
249
+ if (
250
+ !isMedia &&
251
+ !isPseudo &&
252
+ !staticConfig.variants?.[keyInit] &&
253
+ !validStyleProps[keyInit] &&
254
+ !conf.shorthands[keyInit]
255
+ ) {
256
+ usedKeys.add(keyInit)
257
+ viewProps[keyInit] = valInit
258
+ continue
259
+ }
260
+
261
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
262
+ // eslint-disable-next-line no-console
263
+ console.groupCollapsed(' 🔹 styles', keyInit, valInit)
264
+ }
265
+
266
+ const expanded =
267
+ isMedia || isPseudo
268
+ ? [[keyInit, valInit]]
269
+ : staticConfig.propMapper(
270
+ keyInit,
271
+ valInit,
272
+ theme,
273
+ props,
274
+ state,
275
+ languageContext,
276
+ undefined,
277
+ debug
278
+ )
279
+
280
+ if (!fontFamily) {
281
+ fontFamily = getPropMappedFontFamily(expanded)
282
+ }
283
+
284
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
285
+ // eslint-disable-next-line no-console
286
+ console.log('expanded', expanded)
287
+ // eslint-disable-next-line no-console
288
+ console.log('usedKeys', [...usedKeys])
289
+ // eslint-disable-next-line no-console
290
+ console.groupEnd()
291
+ }
292
+
293
+ if (!expanded) {
294
+ continue
295
+ }
296
+
297
+ for (const [key, val] of expanded) {
298
+ if (val === undefined) continue
299
+
300
+ isMedia = key[0] === '$'
301
+ isPseudo = validPseudoKeys[key]
302
+ isMediaOrPseudo = isMedia || isPseudo
303
+
304
+ if (!isMediaOrPseudo) {
305
+ if (usedKeys.has(key)) continue
306
+ }
307
+
308
+ if (
309
+ (staticConfig.deoptProps && staticConfig.deoptProps.has(key)) ||
310
+ (staticConfig.inlineProps && staticConfig.inlineProps.has(key)) ||
311
+ (staticConfig.inlineWhenUnflattened && staticConfig.inlineWhenUnflattened.has(key))
312
+ ) {
313
+ usedKeys.add(key)
314
+ viewProps[key] = props[key] ?? val
315
+ }
316
+
317
+ // pseudo
318
+ if (isPseudo) {
319
+ if (!val) continue
320
+ if (key === 'enterStyle' && state.mounted) {
321
+ // once mounted we can ignore enterStyle
322
+ continue
323
+ }
324
+ pseudos[key] = pseudos[key] || {}
325
+ const pseudoStyleObject = getSubStyle(
326
+ key,
327
+ val,
328
+ staticConfig,
329
+ theme,
330
+ props,
331
+ state,
332
+ conf,
333
+ languageContext,
334
+ true
335
+ )
336
+
337
+ pseudos[key] = {
338
+ ...pseudoStyleObject,
339
+ ...pseudos[key],
340
+ }
341
+
342
+ if (shouldDoClasses && key !== 'enterStyle' && key !== 'exitStyle') {
343
+ const pseudoStyles = getAtomicStyle(pseudoStyleObject, pseudoDescriptors[key])
344
+ for (const style of pseudoStyles) {
345
+ const postfix = pseudoDescriptors[key]?.name || key // exitStyle/enterStyle dont have pseudoDescriptors
346
+ const fullKey = `${style.property}${PROP_SPLIT}${postfix}`
347
+ if (!usedKeys.has(fullKey)) {
348
+ usedKeys.add(fullKey)
349
+ addStyleToInsertRules(rulesToInsert, style)
350
+ mergeClassName(transforms, classNames, fullKey, style.identifier, isMediaOrPseudo)
351
+ }
352
+ }
353
+ }
354
+ continue
355
+ }
356
+
357
+ // media
358
+ if (isMedia) {
359
+ const mediaKey = key
360
+ const mediaKeyShort = mediaKey.slice(1)
361
+
362
+ mediaKeys.push(mediaKeyShort)
363
+
364
+ if (!mediaQueryConfig[mediaKeyShort]) {
365
+ if (process.env.NODE_ENV === 'development' && debug) {
366
+ // eslint-disable-next-line no-console
367
+ console.warn(
368
+ `Warning: using a $ prefixed prop that doesn't match to a media query, may be an error`,
369
+ key
370
+ )
371
+ }
372
+ if (!usedKeys.has(key)) {
373
+ // this isn't a media key, pass through
374
+ viewProps[key] = val
375
+ }
376
+ continue
377
+ }
378
+
379
+ // dont check if media is active, we just apply *all* media styles
380
+ // we combine the media props on top regular props, could proxy this
381
+ // TODO test proxy here instead of merge
382
+ // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR
383
+ // we avoid passing in default props for media queries because that would confuse things like SizableText.size:
384
+ const mediaStyle = getSubStyle(
385
+ key,
386
+ val,
387
+ staticConfig,
388
+ theme,
389
+ props,
390
+ state,
391
+ conf,
392
+ languageContext
393
+ )
394
+
395
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
396
+ // prettier-ignore
397
+ // eslint-disable-next-line no-console
398
+ console.log(` 📺 ${mediaKey}`, mediaState[mediaKeyShort], { mediaKey, mediaStyle, props, shouldDoClasses, mediaState: { ...mediaState } })
399
+ }
400
+
401
+ if (shouldDoClasses) {
402
+ const mediaStyles = getStylesAtomic(mediaStyle)
403
+ for (const style of mediaStyles) {
404
+ const out = createMediaStyle(style, mediaKeyShort, mediaQueryConfig)
405
+ const fullKey = `${style.property}${PROP_SPLIT}${mediaKeyShort}`
406
+ if (!usedKeys.has(fullKey)) {
407
+ usedKeys.add(fullKey)
408
+ addStyleToInsertRules(rulesToInsert, out)
409
+ mergeClassName(transforms, classNames, fullKey, out.identifier, true)
410
+ }
411
+ }
412
+ } else {
413
+ if (mediaState[mediaKeyShort]) {
414
+ if (process.env.NODE_ENV === 'development' && debug) {
415
+ // eslint-disable-next-line no-console
416
+ console.log('apply media style', mediaKey, mediaState)
417
+ }
418
+ if (shouldDoClasses) {
419
+ Object.assign(medias, mediaStyle)
420
+ } else {
421
+ for (const key in mediaStyle) {
422
+ // TODO we should likely account for importance here to match CSS, right??
423
+ usedKeys.add(key)
424
+ style[key] = mediaStyle[key]
425
+ if (key === 'fontFamily') {
426
+ fontFamily = mediaStyle[key]
427
+ }
428
+ }
429
+ }
430
+ }
431
+ }
432
+ continue
433
+ }
434
+
435
+ if (!isWeb && key === 'pointerEvents') {
436
+ usedKeys.add(key)
437
+ viewProps[key] = val
438
+ continue
439
+ }
440
+
441
+ if (key === 'fontFamily' && !fontFamily && valInit && val) {
442
+ fontFamily = valInit[0] === '$' ? valInit : val
443
+ }
444
+
445
+ if (validStyleProps[key]) {
446
+ usedKeys.add(key)
447
+ if (val && val[0] === '_') {
448
+ classNames[key] = val
449
+ } else if (key in stylePropsTransform) {
450
+ mergeTransform(style, key, val, true)
451
+ } else {
452
+ style[key] = normalizeValueWithProperty(val, key)
453
+ }
454
+ continue
455
+ }
456
+
457
+ // pass to view props
458
+ if (!staticConfig.variants || !(key in staticConfig.variants)) {
459
+ if (!skipProps[key]) {
460
+ viewProps[key] = val
461
+ usedKeys.add(key)
462
+ }
463
+ }
464
+ }
465
+ }
466
+
467
+ fixStyles(style)
468
+ if (isWeb) {
469
+ styleToCSS(style)
470
+ }
471
+
472
+ // add in defaults if not set:
473
+ if (defaultClassNames) {
474
+ for (const key in defaultClassNames) {
475
+ if (!(key in classNames)) {
476
+ classNames[key] = defaultClassNames[key]
477
+ }
478
+ }
479
+ }
480
+
481
+ if (shouldDoClasses) {
482
+ const atomic = getStylesAtomic(style)
483
+ for (const atomicStyle of atomic) {
484
+ const key = atomicStyle.property
485
+ // pointerEvents box-none must be CSS-ified
486
+ // should probably have a few more exceptions here!
487
+ if (key === 'pointerEvents' || !state.dynamicStylesInline) {
488
+ addStyleToInsertRules(rulesToInsert, atomicStyle)
489
+ mergeClassName(transforms, classNames, key, atomicStyle.identifier)
490
+ } else {
491
+ style[key] = atomicStyle.value
492
+ }
493
+ }
494
+ }
495
+
496
+ // else {
497
+ // if (classNames && state.resolveVariablesAs === 'value') {
498
+ // getting real values for colors for animations (reverse mapped from CSS)
499
+ // this isn't beautiful, but will do relatively fine performance for now
500
+ // has a bug still - try adding <Switch theme="bouncy" /> should animate bg color on active
501
+ // const selectors = getAllSelectors()
502
+ // for (const key in classNames) {
503
+ // if (key.endsWith('Color')) {
504
+ // const selector = classNames[key]
505
+ // let value = selectorValuesCache[selector]
506
+ // if (!value) {
507
+ // const css = selectors[selector]
508
+ // value = css.replace(/.*:/, '').replace(/;.*/, '')
509
+ // if (value) {
510
+ // const themeUnwrapped = getThemeUnwrapped(theme)
511
+ // const map = themeToVariableToValueMap.get(themeUnwrapped)
512
+ // if (map && value.startsWith('var(')) {
513
+ // value = map[value]
514
+ // }
515
+ // if (value) {
516
+ // selectorValuesCache[selector] = value
517
+ // }
518
+ // } else {
519
+ // // err
520
+ // continue
521
+ // }
522
+ // }
523
+ // if (value) {
524
+ // style[key] = value
525
+ // }
526
+ // }
527
+ // }
528
+ // }
529
+ // }
530
+
531
+ if (process.env.TAMAGUI_TARGET === 'web') {
532
+ if (transforms) {
533
+ for (const namespace in transforms) {
534
+ if (!transforms[namespace]) {
535
+ if (process.env.NODE_ENV === 'development') {
536
+ // eslint-disable-next-line no-console
537
+ console.warn('Error no transform', transforms, namespace)
538
+ }
539
+ continue
540
+ }
541
+ const [hash, val] = transforms[namespace]
542
+ const identifier = `_transform${hash}`
543
+ if (isClient) {
544
+ if (!insertedTransforms[identifier]) {
545
+ const rule = `.${identifier} { transform: ${val}; }`
546
+ addStyleToInsertRules(rulesToInsert, {
547
+ identifier,
548
+ rules: [rule],
549
+ property: namespace,
550
+ })
551
+ }
552
+ }
553
+ classNames[namespace] = identifier
554
+ }
555
+ }
556
+ }
557
+
558
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
559
+ if (isDevTools) {
560
+ // prettier-ignore
561
+ // eslint-disable-next-line no-console
562
+ console.groupCollapsed(' 🔹 styles =>')
563
+ const logs = { style, pseudos, medias, classNames, viewProps, state, rulesToInsert }
564
+ for (const key in logs) {
565
+ // eslint-disable-next-line no-console
566
+ console.log(key, logs[key])
567
+ }
568
+ // eslint-disable-next-line no-console
569
+ console.groupEnd()
570
+ }
571
+ }
572
+
573
+ return {
574
+ fontFamily,
575
+ viewProps,
576
+ style,
577
+ medias,
578
+ mediaKeys,
579
+ pseudos,
580
+ classNames,
581
+ rulesToInsert,
582
+ }
583
+ }
584
+
585
+ function mergeClassName(
586
+ transforms: Record<string, any[]>,
587
+ classNames: Record<string, string>,
588
+ key: string,
589
+ val: string,
590
+ isMediaOrPseudo = false
591
+ ) {
592
+ if (process.env.TAMAGUI_TARGET === 'web') {
593
+ // empty classnames passed by compiler sometimes
594
+ if (!val) return
595
+ if (val.startsWith('_transform-')) {
596
+ const namespace: TransformNamespaceKey = isMediaOrPseudo ? key : 'transform'
597
+ let transform = insertedTransforms[val]
598
+ if (isClient) {
599
+ if (!transform) {
600
+ // HMR or loaded a new chunk
601
+ updateInserted()
602
+ transform = insertedTransforms[val]
603
+ if (process.env.NODE_ENV === 'development') {
604
+ if (!transform) {
605
+ // eslint-disable-next-line no-console
606
+ console.warn('no transform found', { insertedTransforms, val })
607
+ }
608
+ }
609
+ }
610
+ if (!transform) {
611
+ if (isWeb && val[0] !== '_') {
612
+ // runtime insert
613
+ transform = val
614
+ }
615
+ }
616
+ }
617
+ transforms[namespace] = transforms[namespace] || ['', '']
618
+ const identifier = val.replace('_transform', '')
619
+ transforms[namespace][0] += identifier
620
+ // ssr doesn't need to do anything just make the right classname
621
+ if (transform) {
622
+ transforms[namespace][1] += transform
623
+ }
624
+ } else {
625
+ classNames[key] = val
626
+ }
627
+ }
628
+ }
629
+
630
+ /**
631
+ * getSubStyle calls propMapper with props
632
+ * those should be specific to the substyle, but fallback to the base props
633
+ * so given props:
634
+ *
635
+ * { fontSize: 12, color: 'red', $sm: { color: 'blue' } }
636
+ *
637
+ * getSubStyle props should be a proxy that ends up like:
638
+ *
639
+ * { fontSize: 12, color: 'blue' }
640
+ *
641
+ * and to avoid re-creating it over and over, use a WeakMap
642
+ */
643
+ const propProxies = new WeakMap()
644
+ function getSubStyleProxiedProps(defaultProps: Object, baseProps: Object, specificProps: Object) {
645
+ if (!specificProps) {
646
+ // functional variants may want to eventually do something like:
647
+ // have a hooks-like rule (no conditionals)
648
+ // then we run them once on compile with a proxy to capture the keys accessed
649
+ // then add those keys to `inlineProps` so we know we must inline them
650
+ // for now this will trigger because compiled away
651
+ // right now also we don't pass in any pre-extracted styled() props but we should pass them in..
652
+ return baseProps
653
+ }
654
+ // can cache based only on specific it's always referentially consistent with base
655
+ if (propProxies.has(specificProps)) {
656
+ return propProxies.get(specificProps)
657
+ }
658
+ const next = new Proxy(specificProps, {
659
+ has(_, key) {
660
+ return key in defaultProps || key in specificProps || key in baseProps
661
+ },
662
+ get(_, key) {
663
+ return defaultProps[key] ?? specificProps[key] ?? baseProps[key]
664
+ },
665
+ })
666
+ propProxies.set(specificProps, next)
667
+ return next
668
+ }
669
+
670
+ export const getSubStyle = (
671
+ subKey: string,
672
+ styleIn: Object,
673
+ staticConfig: StaticConfigParsed,
674
+ theme: ThemeParsed,
675
+ props: any,
676
+ state: SplitStyleState,
677
+ conf: TamaguiInternalConfig,
678
+ languageContext?: FontLanguageProps,
679
+ avoidDefaultProps?: boolean
680
+ ): ViewStyle => {
681
+ const styleOut: ViewStyle = {}
682
+ for (let key in styleIn) {
683
+ const val = styleIn[key]
684
+ key = conf.shorthands[key] || key
685
+ const expanded = staticConfig.propMapper(
686
+ key,
687
+ val,
688
+ theme,
689
+ getSubStyleProxiedProps(staticConfig.defaultProps, props, props[subKey]),
690
+ state,
691
+ languageContext,
692
+ avoidDefaultProps
693
+ )
694
+ if (!expanded) continue
695
+ for (const [skey, sval] of expanded) {
696
+ if (skey in stylePropsTransform) {
697
+ mergeTransform(styleOut, skey, sval)
698
+ } else {
699
+ styleOut[skey] = normalizeValueWithProperty(sval, key)
700
+ }
701
+ }
702
+ }
703
+
704
+ fixStyles(styleOut)
705
+
706
+ return styleOut
707
+ }
708
+
709
+ export const insertSplitStyles: StyleSplitter = (...args) => {
710
+ const res = getSplitStyles(...args)
711
+ insertStyleRules(res.rulesToInsert)
712
+ return res
713
+ }
714
+
715
+ // on native no need to insert any css
716
+ const useInsertEffectCompat = isWeb ? useInsertionEffect || useIsomorphicLayoutEffect : () => {}
717
+
718
+ export const useSplitStyles: StyleSplitter = (...args) => {
719
+ const res = getSplitStyles(...args)
720
+
721
+ if (!isRSC) {
722
+ useInsertEffectCompat(() => {
723
+ insertStyleRules(res.rulesToInsert)
724
+ }, [res.rulesToInsert])
725
+ }
726
+
727
+ return res
728
+ }
729
+
730
+ function addStyleToInsertRules(rulesToInsert: RulesToInsert, styleObject: PartialStyleObject) {
731
+ if (process.env.TAMAGUI_TARGET === 'web') {
732
+ if (!shouldInsertStyleRules(styleObject)) {
733
+ return
734
+ }
735
+ updateRules(styleObject.identifier, styleObject.rules)
736
+ rulesToInsert.push(styleObject)
737
+ }
738
+ }