@tamagui/core 1.0.1-beta.21 → 1.0.1-beta.210

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