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

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 +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 +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 +516 -212
  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 +842 -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 +511 -196
  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 +1461 -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 +856 -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 +265 -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,856 @@
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 (keyInit === 'id' || keyInit === 'nativeID') {
261
+ usedKeys[keyInit] = 1
262
+ if (staticConfig.isReactNative) {
263
+ viewProps.nativeID = valInit
264
+ } else {
265
+ viewProps.id = valInit
266
+ }
267
+ continue
268
+ }
269
+
270
+ let didUseKeyInit = true
271
+
272
+ if (staticConfig.isReactNative) {
273
+ didUseKeyInit = false
274
+ } else {
275
+ if (accessibilityDirectMap[keyInit]) {
276
+ viewProps[accessibilityDirectMap[keyInit]] = valInit
277
+ usedKeys[keyInit] = 1
278
+ continue
279
+ }
280
+
281
+ switch (keyInit) {
282
+ case 'accessibilityRole': {
283
+ if (valInit === 'none') {
284
+ viewProps.role = 'presentation'
285
+ } else {
286
+ viewProps.role = accessibilityRoleToWebRole[valInit] || valInit
287
+ }
288
+ break
289
+ }
290
+ case 'accessibilityControls': {
291
+ viewProps['aria-controls'] = processIDRefList(valInit)
292
+ break
293
+ }
294
+ case 'accessibilityDescribedBy': {
295
+ viewProps['aria-describedby'] = processIDRefList(valInit)
296
+ break
297
+ }
298
+ case 'accessibilityFlowTo': {
299
+ viewProps['aria-flowto'] = processIDRefList(valInit)
300
+ break
301
+ }
302
+ case 'accessibilityLabelledBy': {
303
+ viewProps['aria-labelledby'] = processIDRefList(valInit)
304
+ break
305
+ }
306
+ case 'accessibilityKeyShortcuts': {
307
+ if (Array.isArray(valInit)) {
308
+ viewProps['aria-keyshortcuts'] = valInit.join(' ')
309
+ }
310
+ break
311
+ }
312
+ case 'accessibilityLiveRegion': {
313
+ viewProps['aria-live'] = valInit === 'none' ? 'off' : valInit
314
+ break
315
+ }
316
+ case 'accessibilityReadOnly': {
317
+ viewProps['aria-readonly'] = valInit
318
+ // Enhance with native semantics
319
+ if (elementType === 'input' || elementType === 'select' || elementType === 'textarea') {
320
+ viewProps.readOnly = true
321
+ }
322
+ break
323
+ }
324
+ case 'accessibilityRequired': {
325
+ viewProps['aria-required'] = valInit
326
+ // Enhance with native semantics
327
+ if (elementType === 'input' || elementType === 'select' || elementType === 'textarea') {
328
+ viewProps.required = true
329
+ }
330
+ break
331
+ }
332
+ default: {
333
+ didUseKeyInit = false
334
+ }
335
+ }
336
+ }
337
+
338
+ if (didUseKeyInit) {
339
+ usedKeys[keyInit] = 1
340
+ continue
341
+ }
342
+
343
+ if (keyInit === 'className') {
344
+ let nonTamaguis = ''
345
+ if (!valInit) continue
346
+ for (const cn of valInit.split(' ')) {
347
+ if (cn[0] === '_') {
348
+ // tamagui, merge it expanded on key, eventually this will go away with better compiler
349
+ const [shorthand, mediaOrPseudo] = cn.slice(1).split('-')
350
+ const isMedia = mediaOrPseudo[0] === '_'
351
+ const isPseudo = mediaOrPseudo[0] === '0'
352
+ const isMediaOrPseudo = isMedia || isPseudo
353
+ let fullKey = conf.shorthands[shorthand]
354
+ if (isMedia) {
355
+ // is media
356
+ let mediaShortKey = mediaOrPseudo.slice(1)
357
+ mediaShortKey = mediaShortKey.slice(0, mediaShortKey.indexOf('_'))
358
+ fullKey += `${PROP_SPLIT}${mediaShortKey}`
359
+ } else if (isPseudo) {
360
+ // is pseudo
361
+ const pseudoShortKey = mediaOrPseudo.slice(1)
362
+ fullKey += `${PROP_SPLIT}${pseudoShortKey}`
363
+ }
364
+ usedKeys[fullKey] = 1
365
+ mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo)
366
+ } else {
367
+ nonTamaguis += ' ' + cn
368
+ }
369
+ }
370
+ if (nonTamaguis) {
371
+ usedKeys[keyInit] = 1
372
+ mergeClassName(transforms, classNames, keyInit, nonTamaguis)
373
+ }
374
+ continue
375
+ }
376
+
377
+ if (valInit && valInit[0] === '_') {
378
+ // if valid style key (or pseudo like color-hover):
379
+ // this conditional and esp the pseudo check rarely runs so not a perf issue
380
+ const isValidClassName = validStyles[keyInit]
381
+ const isMediaOrPseudo =
382
+ !isValidClassName &&
383
+ keyInit.includes(PROP_SPLIT) &&
384
+ validStyles[keyInit.split(PROP_SPLIT)[0]]
385
+ if (isValidClassName || isMediaOrPseudo) {
386
+ usedKeys[keyInit] = 1
387
+ mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo)
388
+ continue
389
+ }
390
+ }
391
+ }
392
+
393
+ if (state.keepVariantsAsProps) {
394
+ if (
395
+ (staticConfig.defaultVariants && keyInit in staticConfig.defaultVariants) ||
396
+ // may want to just: not compile styled() into classnames, always do this, and always pass in all values in extras.props
397
+ // but we'd want to add styled({ extracted: true }) or something at compile time to save on parsing a bit...
398
+ (staticConfig.variants && keyInit in staticConfig.variants)
399
+ ) {
400
+ viewProps[keyInit] = valInit
401
+ }
402
+ }
403
+
404
+ /**
405
+ * There's (some) reason to this madness: we want to allow returning media/pseudo from variants
406
+ * Say you have a variant hoverable: { true: { hoverStyle: {} } }
407
+ * We run propMapper first to expand variant, then we run the inner loop and look again
408
+ * for if there's a pseudo/media returned from it.
409
+ */
410
+
411
+ let isMedia = isMediaKey(keyInit)
412
+ let isPseudo = validPseudoKeys[keyInit]
413
+
414
+ if (
415
+ !isMedia &&
416
+ !isPseudo &&
417
+ !staticConfig.variants?.[keyInit] &&
418
+ !validStyleProps[keyInit] &&
419
+ !conf.shorthands[keyInit]
420
+ ) {
421
+ usedKeys[keyInit] = 1
422
+ viewProps[keyInit] = valInit
423
+ continue
424
+ }
425
+
426
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
427
+ // eslint-disable-next-line no-console
428
+ console.groupCollapsed(' 🔹 styles', keyInit, valInit)
429
+ }
430
+
431
+ const expanded =
432
+ isMedia || isPseudo
433
+ ? [[keyInit, valInit]]
434
+ : staticConfig.propMapper(
435
+ keyInit,
436
+ valInit,
437
+ theme,
438
+ props,
439
+ state,
440
+ languageContext,
441
+ undefined,
442
+ debug
443
+ )
444
+
445
+ if (!fontFamily) {
446
+ fontFamily = getPropMappedFontFamily(expanded)
447
+ }
448
+
449
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
450
+ if (isClient) {
451
+ // eslint-disable-next-line no-console
452
+ console.log('expanded', expanded)
453
+ // eslint-disable-next-line no-console
454
+ console.log('usedKeys', usedKeys)
455
+ }
456
+ // eslint-disable-next-line no-console
457
+ console.groupEnd()
458
+ }
459
+
460
+ if (!expanded) continue
461
+
462
+ for (const [key, val] of expanded) {
463
+ if (val === undefined) continue
464
+
465
+ isMedia = isMediaKey(key)
466
+ isPseudo = validPseudoKeys[key]
467
+ const isMediaOrPseudo = isMedia || isPseudo
468
+
469
+ if (!isMediaOrPseudo && usedKeys[key]) {
470
+ continue
471
+ }
472
+
473
+ if (
474
+ staticConfig.deoptProps?.has(key) ||
475
+ staticConfig.inlineProps?.has(key) ||
476
+ staticConfig.inlineWhenUnflattened?.has(key)
477
+ ) {
478
+ usedKeys[key] = 1
479
+ viewProps[key] = props[key] ?? val
480
+ }
481
+
482
+ // pseudo
483
+ if (isPseudo) {
484
+ if (!val) continue
485
+ if (key === 'enterStyle' && state.mounted) {
486
+ // once mounted we can ignore enterStyle
487
+ continue
488
+ }
489
+ pseudos[key] ??= {}
490
+ const pseudoStyleObject = getSubStyle(
491
+ key,
492
+ val,
493
+ staticConfig,
494
+ theme,
495
+ props,
496
+ state,
497
+ conf,
498
+ languageContext,
499
+ true
500
+ )
501
+
502
+ pseudos[key] = {
503
+ ...pseudoStyleObject,
504
+ ...pseudos[key],
505
+ }
506
+
507
+ if (key === 'enterStyle' || key === 'exitStyle') {
508
+ continue
509
+ }
510
+
511
+ if (shouldDoClasses) {
512
+ const pseudoStyles = getAtomicStyle(pseudoStyleObject, pseudoDescriptors[key])
513
+ for (const style of pseudoStyles) {
514
+ const postfix = pseudoDescriptors[key]?.name || key // exitStyle/enterStyle dont have pseudoDescriptors
515
+ const fullKey = `${style.property}${PROP_SPLIT}${postfix}`
516
+ if (!usedKeys[fullKey]) {
517
+ usedKeys[fullKey] = 1
518
+ addStyleToInsertRules(rulesToInsert, style)
519
+ mergeClassName(transforms, classNames, fullKey, style.identifier, isMediaOrPseudo)
520
+ }
521
+ }
522
+ } else {
523
+ // need same treatment as media (individual merge + importance) + can avoid calling getSubStyle entirely when state = off
524
+ }
525
+ continue
526
+ }
527
+
528
+ // media
529
+ if (isMedia) {
530
+ const mediaKey = key
531
+ const mediaKeyShort = mediaKey.slice(1)
532
+ mediaKeys.push(mediaKeyShort)
533
+
534
+ // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR
535
+ // we avoid passing in default props for media queries because that would confuse things like SizableText.size:
536
+
537
+ const mediaStyle = getSubStyle(
538
+ key,
539
+ val,
540
+ staticConfig,
541
+ theme,
542
+ props,
543
+ state,
544
+ conf,
545
+ languageContext
546
+ )
547
+
548
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
549
+ // prettier-ignore
550
+ // eslint-disable-next-line no-console
551
+ console.log(` 📺 ${mediaKey}`, mediaState[mediaKeyShort], { mediaKey, mediaStyle, props, shouldDoClasses, mediaState: { ...mediaState } })
552
+ }
553
+
554
+ if (shouldDoClasses) {
555
+ const mediaStyles = getStylesAtomic(mediaStyle)
556
+ for (const style of mediaStyles) {
557
+ const out = createMediaStyle(style, mediaKeyShort, mediaQueryConfig)
558
+ const fullKey = `${style.property}${PROP_SPLIT}${mediaKeyShort}`
559
+ if (!usedKeys[fullKey]) {
560
+ usedKeys[fullKey] = 1
561
+ addStyleToInsertRules(rulesToInsert, out)
562
+ mergeClassName(transforms, classNames, fullKey, out.identifier, true)
563
+ }
564
+ }
565
+ } else if (mediaState[mediaKeyShort]) {
566
+ for (const key in mediaStyle) {
567
+ const didMerge = mergeMediaByImportance(style, key, mediaStyle[key], usedKeys)
568
+ if (didMerge && key === 'fontFamily') {
569
+ fontFamily = mediaStyle[key]
570
+ }
571
+ }
572
+ }
573
+ continue
574
+ }
575
+
576
+ if (!isWeb && key === 'pointerEvents') {
577
+ usedKeys[key] = 1
578
+ viewProps[key] = val
579
+ continue
580
+ }
581
+
582
+ if (key === 'fontFamily' && !fontFamily && valInit && val) {
583
+ fontFamily = valInit[0] === '$' ? valInit : val
584
+ }
585
+
586
+ if (validStyleProps[key]) {
587
+ usedKeys[key] = 1
588
+ if (val && val[0] === '_') {
589
+ classNames[key] = val
590
+ } else if (key in stylePropsTransform) {
591
+ mergeTransform(style, key, val, true)
592
+ } else {
593
+ style[key] = normalizeValueWithProperty(val, key)
594
+ }
595
+ continue
596
+ }
597
+
598
+ // pass to view props
599
+ if (!staticConfig.variants || !(key in staticConfig.variants)) {
600
+ if (!skipProps[key]) {
601
+ viewProps[key] = val
602
+ usedKeys[key] = 1
603
+ }
604
+ }
605
+ }
606
+ }
607
+
608
+ fixStyles(style)
609
+ if (isWeb) {
610
+ styleToCSS(style)
611
+ }
612
+
613
+ // add in defaults if not set:
614
+ if (parentSplitStyles) {
615
+ if (process.env.TAMAGUI_TARGET === 'web') {
616
+ for (const key in parentSplitStyles.classNames) {
617
+ if (key in classNames) continue
618
+ if (key in style) continue
619
+ const val = parentSplitStyles.classNames[key]
620
+ if (!shouldDoClasses) {
621
+ style[key] = reverseMapClassNameToValue(key, val)
622
+ } else {
623
+ classNames[key] = val
624
+ }
625
+ }
626
+ }
627
+ if (!shouldDoClasses) {
628
+ for (const key in parentSplitStyles.style) {
629
+ if (key in classNames) continue
630
+ if (key in style) continue
631
+ style[key] = parentSplitStyles.style[key]
632
+ }
633
+ }
634
+ }
635
+
636
+ if (process.env.TAMAGUI_TARGET === 'web') {
637
+ if (shouldDoClasses) {
638
+ const atomic = getStylesAtomic(style)
639
+ for (const atomicStyle of atomic) {
640
+ const key = atomicStyle.property
641
+ addStyleToInsertRules(rulesToInsert, atomicStyle)
642
+ mergeClassName(transforms, classNames, key, atomicStyle.identifier)
643
+ }
644
+ }
645
+
646
+ if (transforms) {
647
+ for (const namespace in transforms) {
648
+ if (!transforms[namespace]) {
649
+ if (process.env.NODE_ENV === 'development') {
650
+ // eslint-disable-next-line no-console
651
+ console.warn('Error no transform', transforms, namespace)
652
+ }
653
+ continue
654
+ }
655
+ const [hash, val] = transforms[namespace]
656
+ const identifier = `_transform${hash}`
657
+ if (isClient) {
658
+ if (!insertedTransforms[identifier]) {
659
+ const rule = `.${identifier} { transform: ${val}; }`
660
+ addStyleToInsertRules(rulesToInsert, {
661
+ identifier,
662
+ rules: [rule],
663
+ property: namespace,
664
+ })
665
+ }
666
+ }
667
+ classNames[namespace] = identifier
668
+ }
669
+ }
670
+ }
671
+
672
+ if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
673
+ if (isDevTools) {
674
+ // prettier-ignore
675
+ // eslint-disable-next-line no-console
676
+ console.groupCollapsed(' 🔹 styles =>')
677
+ const logs = { style, pseudos, medias, classNames, viewProps, state, rulesToInsert }
678
+ for (const key in logs) {
679
+ // eslint-disable-next-line no-console
680
+ console.log(key, logs[key])
681
+ }
682
+ // eslint-disable-next-line no-console
683
+ console.groupEnd()
684
+ }
685
+ }
686
+
687
+ return {
688
+ fontFamily,
689
+ viewProps,
690
+ style,
691
+ medias,
692
+ mediaKeys,
693
+ pseudos,
694
+ classNames,
695
+ rulesToInsert,
696
+ }
697
+ }
698
+
699
+ function mergeClassName(
700
+ transforms: Record<string, any[]>,
701
+ classNames: Record<string, string>,
702
+ key: string,
703
+ val: string,
704
+ isMediaOrPseudo = false
705
+ ) {
706
+ if (process.env.TAMAGUI_TARGET === 'web') {
707
+ // empty classnames passed by compiler sometimes
708
+ if (!val) return
709
+ if (val.startsWith('_transform-')) {
710
+ const namespace: TransformNamespaceKey = isMediaOrPseudo ? key : 'transform'
711
+ let transform = insertedTransforms[val]
712
+ if (isClient) {
713
+ if (!transform) {
714
+ // HMR or loaded a new chunk
715
+ updateInserted()
716
+ transform = insertedTransforms[val]
717
+ if (process.env.NODE_ENV === 'development') {
718
+ if (!transform) {
719
+ // eslint-disable-next-line no-console
720
+ console.warn('no transform found', { insertedTransforms, val })
721
+ }
722
+ }
723
+ }
724
+ if (!transform) {
725
+ if (isWeb && val[0] !== '_') {
726
+ // runtime insert
727
+ transform = val
728
+ }
729
+ }
730
+ }
731
+ transforms[namespace] = transforms[namespace] || ['', '']
732
+ const identifier = val.replace('_transform', '')
733
+ transforms[namespace][0] += identifier
734
+ // ssr doesn't need to do anything just make the right classname
735
+ if (transform) {
736
+ transforms[namespace][1] += transform
737
+ }
738
+ } else {
739
+ classNames[key] = val
740
+ }
741
+ }
742
+ }
743
+
744
+ /**
745
+ * getSubStyle calls propMapper with props
746
+ * those should be specific to the substyle, but fallback to the base props
747
+ * so given props:
748
+ *
749
+ * { fontSize: 12, color: 'red', $sm: { color: 'blue' } }
750
+ *
751
+ * getSubStyle props should be a proxy that ends up like:
752
+ *
753
+ * { fontSize: 12, color: 'blue' }
754
+ *
755
+ * and to avoid re-creating it over and over, use a WeakMap
756
+ */
757
+ const propProxies = new WeakMap()
758
+ function getSubStyleProxiedProps(defaultProps: Object, baseProps: Object, specificProps: Object) {
759
+ if (!specificProps) {
760
+ // functional variants may want to eventually do something like:
761
+ // have a hooks-like rule (no conditionals)
762
+ // then we run them once on compile with a proxy to capture the keys accessed
763
+ // then add those keys to `inlineProps` so we know we must inline them
764
+ // for now this will trigger because compiled away
765
+ // right now also we don't pass in any pre-extracted styled() props but we should pass them in..
766
+ return baseProps
767
+ }
768
+ // can cache based only on specific it's always referentially consistent with base
769
+ if (propProxies.has(specificProps)) {
770
+ return propProxies.get(specificProps)
771
+ }
772
+ const next = createProxy(specificProps, {
773
+ has(_, key) {
774
+ return key in defaultProps || key in specificProps || key in baseProps
775
+ },
776
+ get(_, key) {
777
+ return defaultProps[key] ?? specificProps[key] ?? baseProps[key]
778
+ },
779
+ })
780
+ propProxies.set(specificProps, next)
781
+ return next
782
+ }
783
+
784
+ export const getSubStyle = (
785
+ subKey: string,
786
+ styleIn: Object,
787
+ staticConfig: StaticConfigParsed,
788
+ theme: ThemeParsed,
789
+ props: any,
790
+ state: SplitStyleState,
791
+ conf: TamaguiInternalConfig,
792
+ languageContext?: FontLanguageProps,
793
+ avoidDefaultProps?: boolean
794
+ ): ViewStyle => {
795
+ const styleOut: ViewStyle = {}
796
+ for (let key in styleIn) {
797
+ const val = styleIn[key]
798
+ key = conf.shorthands[key] || key
799
+ const expanded = staticConfig.propMapper(
800
+ key,
801
+ val,
802
+ theme,
803
+ getSubStyleProxiedProps(staticConfig.defaultProps, props, props[subKey]),
804
+ state,
805
+ languageContext,
806
+ avoidDefaultProps
807
+ )
808
+ if (!expanded) continue
809
+ for (const [skey, sval] of expanded) {
810
+ if (skey in stylePropsTransform) {
811
+ mergeTransform(styleOut, skey, sval)
812
+ } else {
813
+ styleOut[skey] = normalizeValueWithProperty(sval, key)
814
+ }
815
+ }
816
+ }
817
+
818
+ fixStyles(styleOut)
819
+
820
+ return styleOut
821
+ }
822
+
823
+ export const insertSplitStyles: StyleSplitter = (...args) => {
824
+ const res = getSplitStyles(...args)
825
+ insertStyleRules(res.rulesToInsert)
826
+ return res
827
+ }
828
+
829
+ // on native no need to insert any css
830
+ const useInsertEffectCompat = isWeb ? useInsertionEffect || useIsomorphicLayoutEffect : () => {}
831
+
832
+ export const useSplitStyles: StyleSplitter = (...args) => {
833
+ const res = getSplitStyles(...args)
834
+
835
+ if (!isRSC) {
836
+ useInsertEffectCompat(() => {
837
+ insertStyleRules(res.rulesToInsert)
838
+ }, [res.rulesToInsert])
839
+ }
840
+
841
+ return res
842
+ }
843
+
844
+ function addStyleToInsertRules(rulesToInsert: RulesToInsert, styleObject: PartialStyleObject) {
845
+ if (process.env.TAMAGUI_TARGET === 'web') {
846
+ if (!shouldInsertStyleRules(styleObject)) {
847
+ return
848
+ }
849
+ updateRules(styleObject.identifier, styleObject.rules)
850
+ rulesToInsert.push(styleObject)
851
+ }
852
+ }
853
+
854
+ function processIDRefList(idRefList: string | Array<string>): string {
855
+ return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList
856
+ }