@tamagui/core 1.0.1-beta.138 → 1.0.1-beta.141

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