@tamagui/core 1.0.1-beta.20 → 1.0.1-beta.200

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