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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (790) hide show
  1. package/dist/cjs/Tamagui.js +16 -12
  2. package/dist/cjs/Tamagui.js.map +2 -2
  3. package/dist/cjs/addTheme.js +80 -0
  4. package/dist/cjs/addTheme.js.map +7 -0
  5. package/dist/cjs/{conf.js → config.js} +34 -21
  6. package/dist/cjs/config.js.map +7 -0
  7. package/dist/cjs/constants/constants.js +17 -24
  8. package/dist/cjs/constants/constants.js.map +2 -2
  9. package/dist/cjs/{helpers/nativeGestureHandler.js → constants/isDevTools.js} +8 -8
  10. package/dist/cjs/constants/isDevTools.js.map +7 -0
  11. package/dist/cjs/constants/platform.js +32 -16
  12. package/dist/cjs/constants/platform.js.map +2 -2
  13. package/dist/cjs/constants/platform.native.js +62 -0
  14. package/dist/cjs/constants/platform.native.js.map +7 -0
  15. package/dist/cjs/contexts/ButtonInsideButtonContext.js +1 -0
  16. package/dist/cjs/contexts/ButtonInsideButtonContext.js.map +1 -1
  17. package/dist/cjs/contexts/FontLanguageContext.js +30 -0
  18. package/dist/cjs/contexts/FontLanguageContext.js.map +7 -0
  19. package/dist/cjs/contexts/TextAncestorContext.js +30 -0
  20. package/dist/cjs/contexts/TextAncestorContext.js.map +7 -0
  21. package/dist/cjs/{ThemeContext.js → contexts/ThemeContext.js} +1 -0
  22. package/dist/cjs/contexts/ThemeContext.js.map +7 -0
  23. package/dist/cjs/createComponent.js +880 -509
  24. package/dist/cjs/createComponent.js.map +3 -3
  25. package/dist/cjs/createFont.js +32 -21
  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 +553 -215
  78. package/dist/cjs/helpers/getSplitStyles.js.map +3 -3
  79. package/dist/cjs/helpers/getStackSize.js +19 -38
  80. package/dist/cjs/helpers/getStackSize.js.map +2 -2
  81. package/dist/cjs/helpers/getStylesAtomic.js +177 -131
  82. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  83. package/dist/cjs/helpers/getStylesAtomic.native.js +1 -2
  84. package/dist/cjs/helpers/getStylesAtomic.native.js.map +1 -1
  85. package/dist/cjs/helpers/getThemeCSSRules.js +103 -0
  86. package/dist/cjs/helpers/getThemeCSSRules.js.map +7 -0
  87. package/dist/cjs/{nativeGestureHandler.native.js → helpers/getThemeCSSRules.native.js} +18 -5
  88. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +7 -0
  89. package/dist/cjs/helpers/getVariantExtras.js +89 -0
  90. package/dist/cjs/helpers/getVariantExtras.js.map +7 -0
  91. package/dist/cjs/helpers/insertStyleRule.js +94 -51
  92. package/dist/cjs/helpers/insertStyleRule.js.map +3 -3
  93. package/dist/cjs/helpers/isObj.js +2 -2
  94. package/dist/cjs/helpers/isObj.js.map +1 -1
  95. package/dist/cjs/helpers/isTamaguiComponent.js +37 -0
  96. package/dist/cjs/helpers/isTamaguiComponent.js.map +7 -0
  97. package/dist/cjs/helpers/isTamaguiElement.js +5 -5
  98. package/dist/cjs/helpers/isTamaguiElement.js.map +2 -2
  99. package/dist/cjs/helpers/matchMedia.js +7 -6
  100. package/dist/cjs/helpers/matchMedia.js.map +2 -2
  101. package/dist/cjs/helpers/matchMedia.native.js +6 -3
  102. package/dist/cjs/helpers/matchMedia.native.js.map +2 -2
  103. package/dist/cjs/helpers/mergeProps.js +54 -0
  104. package/dist/cjs/helpers/mergeProps.js.map +7 -0
  105. package/dist/cjs/helpers/mergeTransform.js +42 -0
  106. package/dist/cjs/helpers/mergeTransform.js.map +7 -0
  107. package/dist/cjs/helpers/normalizeColor.js +80 -0
  108. package/dist/cjs/helpers/normalizeColor.js.map +7 -0
  109. package/dist/cjs/helpers/normalizeValueWithProperty.js +123 -0
  110. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +7 -0
  111. package/dist/cjs/helpers/proxyThemeVariables.js +4 -4
  112. package/dist/cjs/helpers/proxyThemeVariables.js.map +2 -2
  113. package/dist/cjs/helpers/pseudoDescriptors.js +42 -0
  114. package/dist/cjs/helpers/pseudoDescriptors.js.map +7 -0
  115. package/dist/cjs/helpers/registerCSSVariable.js +40 -0
  116. package/dist/cjs/helpers/registerCSSVariable.js.map +7 -0
  117. package/dist/cjs/helpers/{wrapThemeManagerContext.js → startTransition.js} +12 -15
  118. package/dist/cjs/helpers/startTransition.js.map +7 -0
  119. package/dist/cjs/helpers/themeable.js +17 -40
  120. package/dist/cjs/helpers/themeable.js.map +3 -3
  121. package/dist/cjs/helpers/themes.js +79 -0
  122. package/dist/cjs/helpers/themes.js.map +7 -0
  123. package/dist/cjs/helpers/useShallowSetState.js +49 -0
  124. package/dist/cjs/helpers/useShallowSetState.js.map +7 -0
  125. package/dist/cjs/helpers/validate.js +1 -122
  126. package/dist/cjs/helpers/validate.js.map +3 -3
  127. package/dist/cjs/helpers/withStaticProperties.js +3 -3
  128. package/dist/cjs/helpers/withStaticProperties.js.map +1 -1
  129. package/dist/cjs/hooks/getThemeUnwrapped.js +37 -0
  130. package/dist/cjs/hooks/getThemeUnwrapped.js.map +7 -0
  131. package/dist/cjs/hooks/useConstant.js +4 -2
  132. package/dist/cjs/hooks/useConstant.js.map +2 -2
  133. package/dist/cjs/hooks/useElementLayout.js +92 -0
  134. package/dist/cjs/hooks/useElementLayout.js.map +7 -0
  135. package/dist/cjs/hooks/useId.js +3 -33
  136. package/dist/cjs/hooks/useId.js.map +2 -2
  137. package/dist/cjs/hooks/useIsMounted.js +3 -4
  138. package/dist/cjs/hooks/useIsMounted.js.map +2 -2
  139. package/dist/cjs/hooks/useIsTouchDevice.js +6 -12
  140. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  141. package/dist/cjs/hooks/useMedia.js +166 -123
  142. package/dist/cjs/hooks/useMedia.js.map +3 -3
  143. package/dist/cjs/hooks/usePressable.js +4 -18
  144. package/dist/cjs/hooks/usePressable.js.map +1 -1
  145. package/dist/cjs/hooks/useSafeRef.js +58 -0
  146. package/dist/cjs/hooks/useSafeRef.js.map +7 -0
  147. package/dist/cjs/hooks/useServerHooks.js +36 -0
  148. package/dist/cjs/hooks/useServerHooks.js.map +7 -0
  149. package/dist/cjs/hooks/useTheme.js +168 -134
  150. package/dist/cjs/hooks/useTheme.js.map +3 -3
  151. package/dist/cjs/hooks/useUnmountEffect.js +1 -2
  152. package/dist/cjs/hooks/useUnmountEffect.js.map +1 -1
  153. package/dist/cjs/index.js +49 -26
  154. package/dist/cjs/index.js.map +2 -2
  155. package/dist/cjs/inject-styles.js +40 -0
  156. package/dist/cjs/inject-styles.js.map +7 -0
  157. package/dist/cjs/injectStyles.js +40 -0
  158. package/dist/cjs/injectStyles.js.map +7 -0
  159. package/dist/cjs/insertFont.js +93 -0
  160. package/dist/cjs/insertFont.js.map +7 -0
  161. package/dist/cjs/react-native.js +22 -0
  162. package/dist/cjs/react-native.js.map +7 -0
  163. package/dist/cjs/setupReactNative.js +37 -0
  164. package/dist/cjs/setupReactNative.js.map +7 -0
  165. package/dist/cjs/static.js +2 -15
  166. package/dist/cjs/static.js.map +2 -2
  167. package/dist/cjs/styled.js +57 -51
  168. package/dist/cjs/styled.js.map +2 -2
  169. package/dist/cjs/types-rnw.js +1 -0
  170. package/dist/cjs/types-rnw.js.map +2 -2
  171. package/dist/cjs/types.js +1 -0
  172. package/dist/cjs/types.js.map +2 -2
  173. package/dist/cjs/updateTheme.js +47 -0
  174. package/dist/cjs/updateTheme.js.map +7 -0
  175. package/dist/cjs/vendor/Pressability.js +32 -0
  176. package/dist/cjs/vendor/Pressability.js.map +7 -0
  177. package/dist/cjs/vendor/Pressability.native.js +32 -0
  178. package/dist/cjs/vendor/Pressability.native.js.map +7 -0
  179. package/dist/cjs/views/FontLanguage.js +38 -0
  180. package/dist/cjs/views/FontLanguage.js.map +7 -0
  181. package/dist/cjs/views/FontLanguage.native.js +38 -0
  182. package/dist/cjs/views/FontLanguage.native.js.map +7 -0
  183. package/dist/cjs/{helpers/nativeGestureHandler.native.js → views/FontLanguage.types.js} +4 -5
  184. package/dist/cjs/views/FontLanguage.types.js.map +7 -0
  185. package/dist/cjs/views/Slot.js +64 -72
  186. package/dist/cjs/views/Slot.js.map +2 -2
  187. package/dist/cjs/views/Stack.js +4 -19
  188. package/dist/cjs/views/Stack.js.map +2 -2
  189. package/dist/cjs/views/TamaguiProvider.js +86 -0
  190. package/dist/cjs/views/TamaguiProvider.js.map +7 -0
  191. package/dist/cjs/views/Text.js +32 -29
  192. package/dist/cjs/views/Text.js.map +2 -2
  193. package/dist/cjs/views/Theme.js +43 -21
  194. package/dist/cjs/views/Theme.js.map +3 -3
  195. package/dist/cjs/views/ThemeInverse.js +25 -25
  196. package/dist/cjs/views/ThemeInverse.js.map +2 -2
  197. package/dist/cjs/views/ThemeProvider.js +35 -23
  198. package/dist/cjs/views/ThemeProvider.js.map +3 -3
  199. package/dist/cjs/views/ThemeReset.js +26 -20
  200. package/dist/cjs/views/ThemeReset.js.map +3 -3
  201. package/dist/esm/Tamagui.js +11 -12
  202. package/dist/esm/Tamagui.js.map +2 -2
  203. package/dist/esm/addTheme.js +56 -0
  204. package/dist/esm/addTheme.js.map +7 -0
  205. package/dist/esm/config.js +44 -0
  206. package/dist/esm/config.js.map +7 -0
  207. package/dist/esm/constants/constants.js +12 -8
  208. package/dist/esm/constants/constants.js.map +2 -2
  209. package/dist/esm/constants/isDevTools.js +5 -0
  210. package/dist/esm/constants/isDevTools.js.map +7 -0
  211. package/dist/esm/constants/platform.js +25 -12
  212. package/dist/esm/constants/platform.js.map +2 -2
  213. package/dist/esm/constants/platform.native.js +28 -0
  214. package/dist/esm/constants/platform.native.js.map +7 -0
  215. package/dist/esm/contexts/ButtonInsideButtonContext.js +0 -0
  216. package/dist/esm/contexts/ButtonInsideButtonContext.js.map +1 -1
  217. package/dist/esm/contexts/FontLanguageContext.js +6 -0
  218. package/dist/esm/contexts/FontLanguageContext.js.map +7 -0
  219. package/dist/esm/contexts/TextAncestorContext.js +6 -0
  220. package/dist/esm/contexts/TextAncestorContext.js.map +7 -0
  221. package/dist/esm/{ThemeContext.js → contexts/ThemeContext.js} +0 -0
  222. package/dist/esm/contexts/ThemeContext.js.map +7 -0
  223. package/dist/esm/createComponent.js +846 -416
  224. package/dist/esm/createComponent.js.map +3 -3
  225. package/dist/esm/createFont.js +31 -22
  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 +548 -199
  278. package/dist/esm/helpers/getSplitStyles.js.map +3 -3
  279. package/dist/esm/helpers/getStackSize.js +17 -37
  280. package/dist/esm/helpers/getStackSize.js.map +2 -2
  281. package/dist/esm/helpers/getStylesAtomic.js +174 -108
  282. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  283. package/dist/esm/helpers/getStylesAtomic.native.js +0 -3
  284. package/dist/esm/helpers/getStylesAtomic.native.js.map +1 -1
  285. package/dist/esm/helpers/getThemeCSSRules.js +79 -0
  286. package/dist/esm/helpers/getThemeCSSRules.js.map +7 -0
  287. package/dist/esm/helpers/getThemeCSSRules.native.js +7 -0
  288. package/dist/esm/helpers/getThemeCSSRules.native.js.map +7 -0
  289. package/dist/esm/helpers/getVariantExtras.js +64 -0
  290. package/dist/esm/helpers/getVariantExtras.js.map +7 -0
  291. package/dist/esm/helpers/insertStyleRule.js +89 -49
  292. package/dist/esm/helpers/insertStyleRule.js.map +3 -3
  293. package/dist/esm/helpers/isObj.js +1 -3
  294. package/dist/esm/helpers/isObj.js.map +1 -1
  295. package/dist/esm/helpers/isTamaguiComponent.js +13 -0
  296. package/dist/esm/helpers/isTamaguiComponent.js.map +7 -0
  297. package/dist/esm/helpers/isTamaguiElement.js +4 -6
  298. package/dist/esm/helpers/isTamaguiElement.js.map +2 -2
  299. package/dist/esm/helpers/matchMedia.js +6 -7
  300. package/dist/esm/helpers/matchMedia.js.map +2 -2
  301. package/dist/esm/helpers/matchMedia.native.js +1 -3
  302. package/dist/esm/helpers/matchMedia.native.js.map +1 -1
  303. package/dist/esm/helpers/mergeProps.js +30 -0
  304. package/dist/esm/helpers/mergeProps.js.map +7 -0
  305. package/dist/esm/helpers/mergeTransform.js +17 -0
  306. package/dist/esm/helpers/mergeTransform.js.map +7 -0
  307. package/dist/esm/helpers/normalizeColor.js +49 -0
  308. package/dist/esm/helpers/normalizeColor.js.map +7 -0
  309. package/dist/esm/helpers/normalizeValueWithProperty.js +98 -0
  310. package/dist/esm/helpers/normalizeValueWithProperty.js.map +7 -0
  311. package/dist/esm/helpers/proxyThemeVariables.js +3 -5
  312. package/dist/esm/helpers/proxyThemeVariables.js.map +2 -2
  313. package/dist/esm/helpers/pseudoDescriptors.js +18 -0
  314. package/dist/esm/helpers/pseudoDescriptors.js.map +7 -0
  315. package/dist/esm/helpers/registerCSSVariable.js +14 -0
  316. package/dist/esm/helpers/registerCSSVariable.js.map +7 -0
  317. package/dist/esm/helpers/startTransition.js +6 -0
  318. package/dist/esm/helpers/startTransition.js.map +7 -0
  319. package/dist/esm/helpers/themeable.js +11 -9
  320. package/dist/esm/helpers/themeable.js.map +2 -2
  321. package/dist/esm/helpers/themes.js +54 -0
  322. package/dist/esm/helpers/themes.js.map +7 -0
  323. package/dist/esm/helpers/useShallowSetState.js +25 -0
  324. package/dist/esm/helpers/useShallowSetState.js.map +7 -0
  325. package/dist/esm/helpers/validate.js +0 -75
  326. package/dist/esm/helpers/validate.js.map +3 -3
  327. package/dist/esm/helpers/withStaticProperties.js +2 -4
  328. package/dist/esm/helpers/withStaticProperties.js.map +1 -1
  329. package/dist/esm/hooks/getThemeUnwrapped.js +12 -0
  330. package/dist/esm/hooks/getThemeUnwrapped.js.map +7 -0
  331. package/dist/esm/hooks/useConstant.js +4 -4
  332. package/dist/esm/hooks/useConstant.js.map +2 -2
  333. package/dist/esm/hooks/useElementLayout.js +66 -0
  334. package/dist/esm/hooks/useElementLayout.js.map +7 -0
  335. package/dist/esm/hooks/useId.js +1 -31
  336. package/dist/esm/hooks/useId.js.map +2 -2
  337. package/dist/esm/hooks/useIsMounted.js +1 -4
  338. package/dist/esm/hooks/useIsMounted.js.map +2 -2
  339. package/dist/esm/hooks/useIsTouchDevice.js +5 -13
  340. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  341. package/dist/esm/hooks/useMedia.js +159 -113
  342. package/dist/esm/hooks/useMedia.js.map +3 -3
  343. package/dist/esm/hooks/usePressable.js +2 -4
  344. package/dist/esm/hooks/usePressable.js.map +1 -1
  345. package/dist/esm/hooks/useSafeRef.js +34 -0
  346. package/dist/esm/hooks/useSafeRef.js.map +7 -0
  347. package/dist/esm/hooks/useServerHooks.js +11 -0
  348. package/dist/esm/hooks/useServerHooks.js.map +7 -0
  349. package/dist/esm/hooks/useTheme.js +161 -111
  350. package/dist/esm/hooks/useTheme.js.map +3 -3
  351. package/dist/esm/hooks/useUnmountEffect.js +0 -3
  352. package/dist/esm/hooks/useUnmountEffect.js.map +1 -1
  353. package/dist/esm/index.js +44 -18
  354. package/dist/esm/index.js.map +2 -2
  355. package/dist/esm/inject-styles.js +16 -0
  356. package/dist/esm/inject-styles.js.map +7 -0
  357. package/dist/esm/injectStyles.js +16 -0
  358. package/dist/esm/injectStyles.js.map +7 -0
  359. package/dist/esm/insertFont.js +67 -0
  360. package/dist/esm/insertFont.js.map +7 -0
  361. package/dist/esm/react-native.js +3 -0
  362. package/dist/esm/react-native.js.map +7 -0
  363. package/dist/esm/setupReactNative.js +12 -0
  364. package/dist/esm/setupReactNative.js.map +7 -0
  365. package/dist/esm/static.js +1 -15
  366. package/dist/esm/static.js.map +2 -2
  367. package/dist/esm/styled.js +50 -19
  368. package/dist/esm/styled.js.map +2 -2
  369. package/dist/esm/types-rnw.js +0 -0
  370. package/dist/esm/types-rnw.js.map +0 -0
  371. package/dist/esm/types.js +0 -0
  372. package/dist/esm/types.js.map +0 -0
  373. package/dist/esm/updateTheme.js +23 -0
  374. package/dist/esm/updateTheme.js.map +7 -0
  375. package/dist/esm/vendor/Pressability.js +7 -0
  376. package/dist/esm/vendor/Pressability.js.map +7 -0
  377. package/dist/esm/vendor/Pressability.native.js +7 -0
  378. package/dist/esm/vendor/Pressability.native.js.map +7 -0
  379. package/dist/esm/views/FontLanguage.js +14 -0
  380. package/dist/esm/views/FontLanguage.js.map +7 -0
  381. package/dist/esm/views/FontLanguage.native.js +14 -0
  382. package/dist/esm/views/FontLanguage.native.js.map +7 -0
  383. package/dist/esm/views/FontLanguage.types.js +1 -0
  384. package/dist/{cjs/defaultComponentState.js.map → esm/views/FontLanguage.types.js.map} +0 -0
  385. package/dist/esm/views/Slot.js +55 -37
  386. package/dist/esm/views/Slot.js.map +2 -2
  387. package/dist/esm/views/Stack.js +0 -0
  388. package/dist/esm/views/Stack.js.map +2 -2
  389. package/dist/esm/views/TamaguiProvider.js +56 -0
  390. package/dist/esm/views/TamaguiProvider.js.map +7 -0
  391. package/dist/esm/views/Text.js +17 -5
  392. package/dist/esm/views/Text.js.map +2 -2
  393. package/dist/esm/views/Theme.js +35 -19
  394. package/dist/esm/views/Theme.js.map +3 -3
  395. package/dist/esm/views/ThemeInverse.js +22 -20
  396. package/dist/esm/views/ThemeInverse.js.map +2 -2
  397. package/dist/esm/views/ThemeProvider.js +28 -21
  398. package/dist/esm/views/ThemeProvider.js.map +2 -2
  399. package/dist/esm/views/ThemeReset.js +21 -20
  400. package/dist/esm/views/ThemeReset.js.map +2 -2
  401. package/package.json +52 -16
  402. package/reset.css +25 -4
  403. package/src/Tamagui.ts +48 -0
  404. package/src/addTheme.ts +68 -0
  405. package/src/config.ts +44 -0
  406. package/src/constants/constants.ts +19 -0
  407. package/src/constants/isDevTools.ts +6 -0
  408. package/src/contexts/ButtonInsideButtonContext.tsx +3 -0
  409. package/src/contexts/FontLanguageContext.tsx +5 -0
  410. package/src/contexts/TextAncestorContext.tsx +3 -0
  411. package/src/contexts/ThemeContext.tsx +5 -0
  412. package/src/createComponent.tsx +1494 -0
  413. package/src/createFont.ts +44 -0
  414. package/src/createShorthands.ts +7 -0
  415. package/src/createTamagui.ts +228 -0
  416. package/src/createTheme.ts +13 -0
  417. package/src/createTokens.ts +35 -0
  418. package/src/createVariable.ts +83 -0
  419. package/src/createVariables.ts +42 -0
  420. package/src/helpers/RNComponents.tsx +14 -0
  421. package/src/helpers/ThemeManager.tsx +227 -0
  422. package/src/helpers/areEqualSets.tsx +9 -0
  423. package/src/helpers/cache.ts +18 -0
  424. package/src/helpers/createMediaStyle.ts +55 -0
  425. package/src/helpers/createPropMapper.ts +526 -0
  426. package/src/helpers/createProxy.ts +16 -0
  427. package/src/helpers/expandStyle.ts +81 -0
  428. package/src/helpers/expandStyles.ts +106 -0
  429. package/src/helpers/extendStaticConfig.ts +75 -0
  430. package/src/helpers/fixNativeShadow.tsx +2 -0
  431. package/src/helpers/getAnimationDriver.tsx +5 -0
  432. package/src/helpers/getExpandedShorthands.ts +15 -0
  433. package/src/helpers/getFontLanguage.ts +2 -0
  434. package/src/helpers/getSize.ts +22 -0
  435. package/src/helpers/getSplitStyles.tsx +891 -0
  436. package/src/helpers/getStylesAtomic.native.ts +3 -0
  437. package/src/helpers/getStylesAtomic.ts +272 -0
  438. package/src/helpers/getThemeCSSRules.native.ts +3 -0
  439. package/src/helpers/getThemeCSSRules.ts +105 -0
  440. package/src/helpers/getVariantExtras.tsx +85 -0
  441. package/src/helpers/insertStyleRule.tsx +163 -0
  442. package/src/helpers/isObj.ts +1 -0
  443. package/src/helpers/isTamaguiComponent.tsx +15 -0
  444. package/src/helpers/isTamaguiElement.tsx +12 -0
  445. package/src/helpers/matchMedia.native.ts +6 -0
  446. package/src/helpers/matchMedia.ts +17 -0
  447. package/src/helpers/mergeProps.ts +56 -0
  448. package/src/helpers/mergeTransform.ts +16 -0
  449. package/src/helpers/normalizeColor.ts +53 -0
  450. package/src/helpers/normalizeValueWithProperty.ts +110 -0
  451. package/src/helpers/proxyThemeVariables.tsx +15 -0
  452. package/src/helpers/pseudoDescriptors.ts +18 -0
  453. package/src/helpers/registerCSSVariable.ts +11 -0
  454. package/src/helpers/themeable.tsx +40 -0
  455. package/src/helpers/themes.ts +69 -0
  456. package/src/helpers/useShallowSetState.tsx +27 -0
  457. package/src/helpers/withStaticProperties.tsx +7 -0
  458. package/src/hooks/getThemeUnwrapped.tsx +7 -0
  459. package/src/hooks/useElementLayout.tsx +90 -0
  460. package/src/hooks/useId.tsx +1 -0
  461. package/src/hooks/useIsTouchDevice.tsx +6 -0
  462. package/src/hooks/useMedia.tsx +265 -0
  463. package/src/hooks/useSafeRef.ts +48 -0
  464. package/src/hooks/useServerHooks.tsx +12 -0
  465. package/src/hooks/useTheme.tsx +300 -0
  466. package/src/index.ts +74 -0
  467. package/src/inject-styles.ts +20 -0
  468. package/src/insertFont.ts +70 -0
  469. package/src/setupReactNative.ts +9 -0
  470. package/src/static.ts +5 -0
  471. package/src/styled.tsx +204 -0
  472. package/src/types-rnw.tsx +162 -0
  473. package/src/types.tsx +1326 -0
  474. package/src/updateTheme.ts +23 -0
  475. package/src/vendor/Pressability.native.tsx +3 -0
  476. package/src/vendor/Pressability.tsx +2 -0
  477. package/src/views/FontLanguage.native.tsx +10 -0
  478. package/src/views/FontLanguage.tsx +18 -0
  479. package/src/views/FontLanguage.types.ts +13 -0
  480. package/src/views/Slot.tsx +147 -0
  481. package/src/views/Stack.tsx +24 -0
  482. package/src/views/TamaguiProvider.tsx +60 -0
  483. package/src/views/Text.tsx +86 -0
  484. package/src/views/Theme.tsx +72 -0
  485. package/src/views/ThemeInverse.tsx +33 -0
  486. package/src/views/ThemeProvider.tsx +63 -0
  487. package/src/views/ThemeReset.tsx +43 -0
  488. package/types/Tamagui.d.ts +11 -11
  489. package/types/addTheme.d.ts +11 -0
  490. package/types/config.d.ts +47 -0
  491. package/types/constants/constants.d.ts +15 -4
  492. package/types/constants/isDevTools.d.ts +2 -0
  493. package/types/constants/platform.d.ts +7 -6
  494. package/types/constants/platform.native.d.ts +13 -0
  495. package/types/contexts/FontLanguageContext.d.ts +5 -0
  496. package/types/contexts/TextAncestorContext.d.ts +3 -0
  497. package/types/{ThemeContext.d.ts → contexts/ThemeContext.d.ts} +1 -1
  498. package/types/createComponent.d.ts +16 -14
  499. package/types/createShorthands.d.ts +2 -1
  500. package/types/createTamagui.d.ts +2 -17
  501. package/types/createTheme.d.ts +1 -1
  502. package/types/createTokens.d.ts +5 -6
  503. package/types/createVariable.d.ts +24 -12
  504. package/types/createVariables.d.ts +10 -0
  505. package/types/helpers/RNComponents.d.ts +1 -1
  506. package/types/helpers/ThemeManager.d.ts +45 -0
  507. package/types/helpers/assignNativePropsToWeb.d.ts +2 -0
  508. package/types/helpers/assignNativePropsToWeb.native.d.ts +2 -0
  509. package/types/helpers/cache.d.ts +12 -0
  510. package/types/helpers/calc.d.ts +1 -0
  511. package/types/helpers/createMediaStyle.d.ts +2 -4
  512. package/types/helpers/createPropMapper.d.ts +6 -3
  513. package/types/helpers/createProxy.d.ts +2 -0
  514. package/types/helpers/expandStyle.d.ts +6 -0
  515. package/types/helpers/expandStyles.d.ts +26 -0
  516. package/types/helpers/getAnimationDriver.d.ts +6 -0
  517. package/types/helpers/getFont.d.ts +3 -0
  518. package/types/helpers/getFontLanguage.d.ts +2 -0
  519. package/types/helpers/getSize.d.ts +3 -2
  520. package/types/helpers/getSplitStyles.d.ts +15 -12
  521. package/types/helpers/getStackSize.d.ts +6 -30
  522. package/types/helpers/getStylesAtomic.d.ts +14 -23
  523. package/types/helpers/getThemeCSSRules.d.ts +8 -0
  524. package/types/helpers/getThemeCSSRules.native.d.ts +2 -0
  525. package/types/helpers/getVariantExtras.d.ts +5 -0
  526. package/types/helpers/insertStyleRule.d.ts +8 -4
  527. package/types/helpers/isTamaguiComponent.d.ts +5 -0
  528. package/types/helpers/isTamaguiElement.d.ts +5 -1
  529. package/types/helpers/matchMedia.d.ts +1 -1
  530. package/types/helpers/mergeProps.d.ts +17 -0
  531. package/types/helpers/mergeTransform.d.ts +7 -0
  532. package/types/helpers/normalizeColor.d.ts +3 -0
  533. package/types/helpers/normalizeValueWithProperty.d.ts +7 -0
  534. package/types/helpers/pseudoDescriptors.d.ts +16 -0
  535. package/types/helpers/registerCSSVariable.d.ts +5 -0
  536. package/types/helpers/startTransition.d.ts +3 -0
  537. package/types/helpers/themeable.d.ts +4 -7
  538. package/types/helpers/themes.d.ts +4 -0
  539. package/types/helpers/useShallowSetState.d.ts +3 -0
  540. package/types/helpers/validate.d.ts +0 -3
  541. package/types/hooks/getThemeUnwrapped.d.ts +3 -0
  542. package/types/hooks/useElementLayout.d.ts +27 -0
  543. package/types/hooks/useId.d.ts +1 -8
  544. package/types/hooks/useMedia.d.ts +22 -6
  545. package/types/hooks/useMedia.test.d.ts +1 -0
  546. package/types/hooks/usePressablePressResponder.d.ts +84 -0
  547. package/types/hooks/useSafeRef.d.ts +4 -0
  548. package/types/hooks/useServerHooks.d.ts +4 -0
  549. package/types/hooks/useTheme.d.ts +22 -32
  550. package/types/index.d.ts +25 -14
  551. package/types/inject-styles.d.ts +7 -0
  552. package/types/injectStyles.d.ts +7 -0
  553. package/types/insertFont.d.ts +9 -0
  554. package/types/react-native.d.ts +8 -0
  555. package/types/setupReactNative.d.ts +3 -0
  556. package/types/static.d.ts +1 -15
  557. package/types/styled.d.ts +7 -3
  558. package/types/types.d.ts +313 -108
  559. package/types/updateTheme.d.ts +9 -0
  560. package/types/vendor/Pressability.d.ts +3 -0
  561. package/types/vendor/Pressability.native.d.ts +3 -0
  562. package/types/views/AbsoluteFill.d.ts +5 -0
  563. package/types/views/AbsoluteFill.native.d.ts +3 -0
  564. package/types/views/FontLanguage.d.ts +4 -0
  565. package/types/views/FontLanguage.native.d.ts +4 -0
  566. package/types/views/FontLanguage.types.d.ts +11 -0
  567. package/types/views/Slot.d.ts +5 -4
  568. package/types/views/Stack.d.ts +1 -1
  569. package/types/views/TamaguiProvider.d.ts +4 -0
  570. package/types/views/Text.d.ts +1 -1
  571. package/types/views/Theme.d.ts +3 -9
  572. package/types/views/ThemeInverse.d.ts +4 -8
  573. package/types/views/ThemeProvider.d.ts +2 -1
  574. package/dist/cjs/ThemeContext.js.map +0 -7
  575. package/dist/cjs/ThemeManager.js.map +0 -7
  576. package/dist/cjs/conf.js.map +0 -7
  577. package/dist/cjs/constants/rnw.js +0 -46
  578. package/dist/cjs/constants/rnw.js.map +0 -7
  579. package/dist/cjs/defaultComponentState.js +0 -1
  580. package/dist/cjs/helpers/addStylesUsingClassname.js +0 -87
  581. package/dist/cjs/helpers/addStylesUsingClassname.js.map +0 -7
  582. package/dist/cjs/helpers/createShallowUpdate.js +0 -55
  583. package/dist/cjs/helpers/createShallowUpdate.js.map +0 -7
  584. package/dist/cjs/helpers/createTamaguiProvider.js +0 -93
  585. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  586. package/dist/cjs/helpers/fixNativeShadow.native.js +0 -53
  587. package/dist/cjs/helpers/fixNativeShadow.native.js.map +0 -7
  588. package/dist/cjs/helpers/getButtonSize.js +0 -45
  589. package/dist/cjs/helpers/getButtonSize.js.map +0 -7
  590. package/dist/cjs/helpers/getTextSize.js.map +0 -7
  591. package/dist/cjs/helpers/nativeGestureHandler.js.map +0 -7
  592. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  593. package/dist/cjs/helpers/wrapThemeManagerContext.js.map +0 -7
  594. package/dist/cjs/hooks/useFeatures.js +0 -228
  595. package/dist/cjs/hooks/useFeatures.js.map +0 -7
  596. package/dist/cjs/hooks/usePrevious.js +0 -1
  597. package/dist/cjs/hooks/usePrevious.js.map +0 -7
  598. package/dist/cjs/nativeGestureHandler.native.js.map +0 -7
  599. package/dist/cjs/views/TextAncestorContext.js +0 -45
  600. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  601. package/dist/esm/ThemeContext.js.map +0 -7
  602. package/dist/esm/ThemeManager.js.map +0 -7
  603. package/dist/esm/conf.js +0 -36
  604. package/dist/esm/conf.js.map +0 -7
  605. package/dist/esm/constants/rnw.js +0 -24
  606. package/dist/esm/constants/rnw.js.map +0 -7
  607. package/dist/esm/defaultComponentState.js +0 -1
  608. package/dist/esm/defaultComponentState.js.map +0 -7
  609. package/dist/esm/helpers/addStylesUsingClassname.js +0 -64
  610. package/dist/esm/helpers/addStylesUsingClassname.js.map +0 -7
  611. package/dist/esm/helpers/createShallowUpdate.js +0 -19
  612. package/dist/esm/helpers/createShallowUpdate.js.map +0 -7
  613. package/dist/esm/helpers/createTamaguiProvider.js +0 -40
  614. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  615. package/dist/esm/helpers/fixNativeShadow.native.js +0 -32
  616. package/dist/esm/helpers/fixNativeShadow.native.js.map +0 -7
  617. package/dist/esm/helpers/getButtonSize.js +0 -24
  618. package/dist/esm/helpers/getButtonSize.js.map +0 -7
  619. package/dist/esm/helpers/getTextSize.js.map +0 -7
  620. package/dist/esm/helpers/nativeGestureHandler.js +0 -7
  621. package/dist/esm/helpers/nativeGestureHandler.js.map +0 -7
  622. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  623. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  624. package/dist/esm/helpers/wrapThemeManagerContext.js +0 -14
  625. package/dist/esm/helpers/wrapThemeManagerContext.js.map +0 -7
  626. package/dist/esm/hooks/useFeatures.js +0 -173
  627. package/dist/esm/hooks/useFeatures.js.map +0 -7
  628. package/dist/esm/hooks/usePrevious.js +0 -1
  629. package/dist/esm/hooks/usePrevious.js.map +0 -7
  630. package/dist/esm/nativeGestureHandler.native.js +0 -2
  631. package/dist/esm/nativeGestureHandler.native.js.map +0 -7
  632. package/dist/esm/views/TextAncestorContext.js +0 -18
  633. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  634. package/dist/jsx/Tamagui.js +0 -41
  635. package/dist/jsx/ThemeContext.js +0 -5
  636. package/dist/jsx/ThemeManager.js +0 -186
  637. package/dist/jsx/conf.js +0 -35
  638. package/dist/jsx/constants/constants.js +0 -17
  639. package/dist/jsx/constants/platform.js +0 -25
  640. package/dist/jsx/constants/rnw.js +0 -23
  641. package/dist/jsx/contexts/ButtonInsideButtonContext.js +0 -5
  642. package/dist/jsx/createComponent.js +0 -636
  643. package/dist/jsx/createFont.js +0 -27
  644. package/dist/jsx/createShorthands.js +0 -9
  645. package/dist/jsx/createTamagui.js +0 -201
  646. package/dist/jsx/createTheme.js +0 -6
  647. package/dist/jsx/createTokens.js +0 -28
  648. package/dist/jsx/createVariable.js +0 -48
  649. package/dist/jsx/defaultComponentState.js +0 -0
  650. package/dist/jsx/helpers/RNComponents.js +0 -11
  651. package/dist/jsx/helpers/addStylesUsingClassname.js +0 -63
  652. package/dist/jsx/helpers/areEqualSets.js +0 -15
  653. package/dist/jsx/helpers/createMediaStyle.js +0 -30
  654. package/dist/jsx/helpers/createPropMapper.js +0 -237
  655. package/dist/jsx/helpers/createShallowUpdate.js +0 -18
  656. package/dist/jsx/helpers/createTamaguiProvider.js +0 -34
  657. package/dist/jsx/helpers/extendStaticConfig.js +0 -61
  658. package/dist/jsx/helpers/fixNativeShadow.js +0 -7
  659. package/dist/jsx/helpers/fixNativeShadow.native.js +0 -31
  660. package/dist/jsx/helpers/getButtonSize.js +0 -23
  661. package/dist/jsx/helpers/getExpandedShorthands.js +0 -18
  662. package/dist/jsx/helpers/getSize.js +0 -12
  663. package/dist/jsx/helpers/getSplitStyles.js +0 -322
  664. package/dist/jsx/helpers/getStackSize.js +0 -41
  665. package/dist/jsx/helpers/getStylesAtomic.js +0 -130
  666. package/dist/jsx/helpers/getStylesAtomic.native.js +0 -9
  667. package/dist/jsx/helpers/getTextSize.js +0 -33
  668. package/dist/jsx/helpers/insertStyleRule.js +0 -94
  669. package/dist/jsx/helpers/isObj.js +0 -6
  670. package/dist/jsx/helpers/isTamaguiElement.js +0 -10
  671. package/dist/jsx/helpers/matchMedia.js +0 -17
  672. package/dist/jsx/helpers/matchMedia.native.js +0 -8
  673. package/dist/jsx/helpers/nativeGestureHandler.js +0 -6
  674. package/dist/jsx/helpers/nativeGestureHandler.native.js +0 -1
  675. package/dist/jsx/helpers/proxyThemeVariables.js +0 -17
  676. package/dist/jsx/helpers/themeable.js +0 -24
  677. package/dist/jsx/helpers/validate.js +0 -75
  678. package/dist/jsx/helpers/withStaticProperties.js +0 -9
  679. package/dist/jsx/helpers/wrapThemeManagerContext.js +0 -10
  680. package/dist/jsx/hooks/useConstant.js +0 -14
  681. package/dist/jsx/hooks/useFeatures.js +0 -167
  682. package/dist/jsx/hooks/useId.js +0 -34
  683. package/dist/jsx/hooks/useIsMounted.js +0 -18
  684. package/dist/jsx/hooks/useIsTouchDevice.js +0 -16
  685. package/dist/jsx/hooks/useMedia.js +0 -158
  686. package/dist/jsx/hooks/usePressable.js +0 -13
  687. package/dist/jsx/hooks/usePrevious.js +0 -0
  688. package/dist/jsx/hooks/useTheme.js +0 -177
  689. package/dist/jsx/hooks/useUnmountEffect.js +0 -10
  690. package/dist/jsx/index.js +0 -54
  691. package/dist/jsx/nativeGestureHandler.native.js +0 -1
  692. package/dist/jsx/static.js +0 -16
  693. package/dist/jsx/styled.js +0 -47
  694. package/dist/jsx/types-rnw.js +0 -0
  695. package/dist/jsx/types.js +0 -0
  696. package/dist/jsx/views/Slot.js +0 -75
  697. package/dist/jsx/views/Stack.js +0 -12
  698. package/dist/jsx/views/Text.js +0 -56
  699. package/dist/jsx/views/TextAncestorContext.js +0 -15
  700. package/dist/jsx/views/Theme.js +0 -31
  701. package/dist/jsx/views/ThemeInverse.js +0 -27
  702. package/dist/jsx/views/ThemeProvider.js +0 -35
  703. package/dist/jsx/views/ThemeReset.js +0 -34
  704. package/types/Tamagui.d.ts.map +0 -1
  705. package/types/ThemeContext.d.ts.map +0 -1
  706. package/types/ThemeManager.d.ts +0 -49
  707. package/types/ThemeManager.d.ts.map +0 -1
  708. package/types/conf.d.ts +0 -27
  709. package/types/conf.d.ts.map +0 -1
  710. package/types/constants/constants.d.ts.map +0 -1
  711. package/types/constants/platform.d.ts.map +0 -1
  712. package/types/constants/rnw.d.ts +0 -2
  713. package/types/constants/rnw.d.ts.map +0 -1
  714. package/types/contexts/ButtonInsideButtonContext.d.ts.map +0 -1
  715. package/types/createComponent.d.ts.map +0 -1
  716. package/types/createFont.d.ts.map +0 -1
  717. package/types/createShorthands.d.ts.map +0 -1
  718. package/types/createTamagui.d.ts.map +0 -1
  719. package/types/createTheme.d.ts.map +0 -1
  720. package/types/createTokens.d.ts.map +0 -1
  721. package/types/createVariable.d.ts.map +0 -1
  722. package/types/defaultComponentState.d.ts +0 -1
  723. package/types/defaultComponentState.d.ts.map +0 -1
  724. package/types/helpers/RNComponents.d.ts.map +0 -1
  725. package/types/helpers/addStylesUsingClassname.d.ts +0 -3
  726. package/types/helpers/addStylesUsingClassname.d.ts.map +0 -1
  727. package/types/helpers/areEqualSets.d.ts.map +0 -1
  728. package/types/helpers/createMediaStyle.d.ts.map +0 -1
  729. package/types/helpers/createPropMapper.d.ts.map +0 -1
  730. package/types/helpers/createShallowUpdate.d.ts +0 -4
  731. package/types/helpers/createShallowUpdate.d.ts.map +0 -1
  732. package/types/helpers/createTamaguiProvider.d.ts +0 -7
  733. package/types/helpers/createTamaguiProvider.d.ts.map +0 -1
  734. package/types/helpers/extendStaticConfig.d.ts.map +0 -1
  735. package/types/helpers/fixNativeShadow.d.ts.map +0 -1
  736. package/types/helpers/fixNativeShadow.native.d.ts +0 -3
  737. package/types/helpers/fixNativeShadow.native.d.ts.map +0 -1
  738. package/types/helpers/getButtonSize.d.ts +0 -8
  739. package/types/helpers/getButtonSize.d.ts.map +0 -1
  740. package/types/helpers/getExpandedShorthands.d.ts.map +0 -1
  741. package/types/helpers/getSize.d.ts.map +0 -1
  742. package/types/helpers/getSplitStyles.d.ts.map +0 -1
  743. package/types/helpers/getStackSize.d.ts.map +0 -1
  744. package/types/helpers/getStylesAtomic.d.ts.map +0 -1
  745. package/types/helpers/getStylesAtomic.native.d.ts.map +0 -1
  746. package/types/helpers/getTextSize.d.ts +0 -3
  747. package/types/helpers/getTextSize.d.ts.map +0 -1
  748. package/types/helpers/insertStyleRule.d.ts.map +0 -1
  749. package/types/helpers/isObj.d.ts.map +0 -1
  750. package/types/helpers/isTamaguiElement.d.ts.map +0 -1
  751. package/types/helpers/matchMedia.d.ts.map +0 -1
  752. package/types/helpers/matchMedia.native.d.ts.map +0 -1
  753. package/types/helpers/nativeGestureHandler.d.ts +0 -2
  754. package/types/helpers/nativeGestureHandler.d.ts.map +0 -1
  755. package/types/helpers/nativeGestureHandler.native.d.ts +0 -2
  756. package/types/helpers/nativeGestureHandler.native.d.ts.map +0 -1
  757. package/types/helpers/proxyThemeVariables.d.ts.map +0 -1
  758. package/types/helpers/themeable.d.ts.map +0 -1
  759. package/types/helpers/validate.d.ts.map +0 -1
  760. package/types/helpers/withStaticProperties.d.ts.map +0 -1
  761. package/types/helpers/wrapThemeManagerContext.d.ts +0 -3
  762. package/types/helpers/wrapThemeManagerContext.d.ts.map +0 -1
  763. package/types/hooks/useConstant.d.ts.map +0 -1
  764. package/types/hooks/useFeatures.d.ts +0 -18
  765. package/types/hooks/useFeatures.d.ts.map +0 -1
  766. package/types/hooks/useId.d.ts.map +0 -1
  767. package/types/hooks/useIsMounted.d.ts.map +0 -1
  768. package/types/hooks/useIsTouchDevice.d.ts.map +0 -1
  769. package/types/hooks/useMedia.d.ts.map +0 -1
  770. package/types/hooks/usePressable.d.ts.map +0 -1
  771. package/types/hooks/usePrevious.d.ts +0 -1
  772. package/types/hooks/usePrevious.d.ts.map +0 -1
  773. package/types/hooks/useTheme.d.ts.map +0 -1
  774. package/types/hooks/useUnmountEffect.d.ts.map +0 -1
  775. package/types/index.d.ts.map +0 -1
  776. package/types/nativeGestureHandler.native.d.ts +0 -2
  777. package/types/nativeGestureHandler.native.d.ts.map +0 -1
  778. package/types/static.d.ts.map +0 -1
  779. package/types/styled.d.ts.map +0 -1
  780. package/types/types-rnw.d.ts.map +0 -1
  781. package/types/types.d.ts.map +0 -1
  782. package/types/views/Slot.d.ts.map +0 -1
  783. package/types/views/Stack.d.ts.map +0 -1
  784. package/types/views/Text.d.ts.map +0 -1
  785. package/types/views/TextAncestorContext.d.ts +0 -5
  786. package/types/views/TextAncestorContext.d.ts.map +0 -1
  787. package/types/views/Theme.d.ts.map +0 -1
  788. package/types/views/ThemeInverse.d.ts.map +0 -1
  789. package/types/views/ThemeProvider.d.ts.map +0 -1
  790. package/types/views/ThemeReset.d.ts.map +0 -1
@@ -0,0 +1,3 @@
1
+ export function getStylesAtomic() {
2
+ console.warn('no-op native')
3
+ }
@@ -0,0 +1,272 @@
1
+ /**
2
+ * Some parts adapted from react-native-web
3
+ * Copyright (c) Nicolas Gallagher licensed under the MIT license.
4
+ */
5
+
6
+ import { StyleObject, simpleHash } from '@tamagui/helpers'
7
+ import type { TextStyle, ViewStyle } from '@tamagui/types-react-native'
8
+
9
+ import { getConfig } from '../config'
10
+ import { TamaguiInternalConfig } from '../types'
11
+ import { Style, cache } from './cache'
12
+ import { defaultOffset } from './expandStyles'
13
+ import { normalizeValueWithProperty } from './normalizeValueWithProperty.js'
14
+ import { PseudoDescriptor, pseudoDescriptors } from './pseudoDescriptors'
15
+
16
+ // refactor this file away next...
17
+
18
+ type ViewOrTextStyle = ViewStyle | TextStyle
19
+
20
+ export type ViewStyleWithPseudos = ViewOrTextStyle & {
21
+ hoverStyle?: ViewOrTextStyle
22
+ pressStyle?: ViewOrTextStyle
23
+ focusStyle?: ViewOrTextStyle
24
+ }
25
+
26
+ const pseudosOrdered = Object.values(pseudoDescriptors)
27
+
28
+ export function getStylesAtomic(stylesIn: ViewStyleWithPseudos) {
29
+ // performance optimization
30
+ if (!stylesIn.hoverStyle && !stylesIn.pressStyle && !stylesIn.focusStyle) {
31
+ return getAtomicStyle(stylesIn)
32
+ }
33
+
34
+ // only for pseudos
35
+ const { hoverStyle, pressStyle, focusStyle, ...base } = stylesIn
36
+ let res: StyleObject[] = []
37
+ // *1 order matched to *0
38
+ for (const [index, style] of [hoverStyle, pressStyle, focusStyle, base].entries()) {
39
+ if (!style) continue
40
+ const pseudo = pseudosOrdered[index]
41
+ res = [...res, ...getAtomicStyle(style, pseudo)]
42
+ }
43
+ return res
44
+ }
45
+
46
+ export function getAtomicStyle(style: ViewOrTextStyle, pseudo?: PseudoDescriptor): StyleObject[] {
47
+ if (process.env.NODE_ENV === 'development') {
48
+ if (!style || typeof style !== 'object') {
49
+ throw new Error(`Wrong style type: "${typeof style}": ${style}`)
50
+ }
51
+ } else {
52
+ if (!style) {
53
+ if (process.env.NODE_ENV === 'development') {
54
+ // eslint-disable-next-line no-console
55
+ console.warn(`Invalid style`)
56
+ }
57
+ return []
58
+ }
59
+ }
60
+
61
+ return generateAtomicStyles(style, pseudo)
62
+ }
63
+
64
+ let conf: TamaguiInternalConfig
65
+
66
+ const generateAtomicStyles = (
67
+ styleIn: ViewStyle & TextStyle,
68
+ pseudo?: PseudoDescriptor
69
+ ): StyleObject[] => {
70
+ conf = conf || getConfig()
71
+
72
+ // were converting to css styles
73
+ const style = styleIn as Record<string, string | null | undefined>
74
+
75
+ // transform
76
+ if (style.transform) {
77
+ if (Array.isArray(style.transform)) {
78
+ style.transform = style.transform.map(mapTransform).join(' ')
79
+ }
80
+ }
81
+
82
+ styleToCSS(style)
83
+
84
+ const out: StyleObject[] = []
85
+ for (const key in style) {
86
+ const value = style[key]
87
+ if (value != null && value != undefined) {
88
+ const uid = key + (pseudo?.name || '')
89
+ const cachedResult = cache.get(uid, value)
90
+ if (cachedResult != undefined) {
91
+ out.push(cachedResult)
92
+ } else {
93
+ const hash = presetHashes[value]
94
+ ? value
95
+ : typeof value === 'string'
96
+ ? simpleHash(value)
97
+ : `${value}`.replace('.', 'dot')
98
+
99
+ const pseudoPrefix = pseudo ? `0${pseudo.name}-` : ''
100
+ const shortProp = conf.inverseShorthands[key] || key
101
+ const identifier = `_${shortProp}-${pseudoPrefix}${hash}`
102
+ const rules = createAtomicRules(identifier, key, value, pseudo)
103
+ const styleObject: StyleObject = {
104
+ property: key,
105
+ pseudo: pseudo?.name,
106
+ value,
107
+ identifier,
108
+ rules,
109
+ }
110
+
111
+ cache.set(uid, value, styleObject)
112
+ out.push(styleObject)
113
+ }
114
+ }
115
+ }
116
+ return out
117
+ }
118
+
119
+ const presetHashes = {
120
+ none: true,
121
+ }
122
+
123
+ const n = (val: any) => normalizeValueWithProperty(val)
124
+
125
+ export function styleToCSS(style: Record<string, any>) {
126
+ // box-shadow
127
+ const { shadowOffset, shadowRadius, shadowColor } = style
128
+ if (style.shadowRadius !== undefined) {
129
+ const offset = shadowOffset || defaultOffset
130
+ const shadow = `${n(offset.width)} ${n(offset.height)} ${n(shadowRadius)} ${shadowColor}`
131
+ style.boxShadow = style.boxShadow ? `${style.boxShadow}, ${shadow}` : shadow
132
+ delete style.shadowOffset
133
+ delete style.shadowRadius
134
+ delete style.shadowColor
135
+ }
136
+
137
+ // text-shadow
138
+ const { textShadowColor, textShadowOffset, textShadowRadius } = style
139
+ if (textShadowColor || textShadowOffset || textShadowRadius) {
140
+ const { height, width } = textShadowOffset || defaultOffset
141
+ const radius = textShadowRadius || 0
142
+ const color = normalizeValueWithProperty(textShadowColor, 'textShadowColor')
143
+ if (color && (height !== 0 || width !== 0 || radius !== 0)) {
144
+ const blurRadius = normalizeValueWithProperty(radius)
145
+ const offsetX = normalizeValueWithProperty(width)
146
+ const offsetY = normalizeValueWithProperty(height)
147
+ style.textShadow = `${offsetX} ${offsetY} ${blurRadius} ${color}`
148
+ }
149
+ delete style.textShadowColor
150
+ delete style.textShadowOffset
151
+ delete style.textShadowRadius
152
+ }
153
+ }
154
+
155
+ // { scale: 2 } => 'scale(2)'
156
+ // { translateX: 20 } => 'translateX(20px)'
157
+ // { matrix: [1,2,3,4,5,6] } => 'matrix(1,2,3,4,5,6)'
158
+ const mapTransform = (transform) => {
159
+ const type = Object.keys(transform)[0]
160
+ const value = transform[type]
161
+ if (type === 'matrix' || type === 'matrix3d') {
162
+ return `${type}(${value.join(',')})`
163
+ } else {
164
+ const normalizedValue = normalizeValueWithProperty(value, type)
165
+ return `${type}(${normalizedValue})`
166
+ }
167
+ }
168
+
169
+ function createDeclarationBlock(style: Style, important = false) {
170
+ let next = ''
171
+ for (const key in style) {
172
+ const prop = hyphenateStyleName(key)
173
+ const value = style[key]
174
+ next += `${prop}:${value}${important ? ` !important` : ''};`
175
+ }
176
+ return `{${next}}`
177
+ }
178
+
179
+ const hcache = {}
180
+ const toHyphenLower = (match: string) => `-${match.toLowerCase()}`
181
+ const hyphenateStyleName = (key: string) => {
182
+ let val = hcache[key]
183
+ if (val) return val
184
+ hcache[key] = val = key.replace(/[A-Z]/g, toHyphenLower)
185
+ return val
186
+ }
187
+
188
+ const pseudoSelectorPrefixes = (() => {
189
+ const res: Record<string, string> = {}
190
+ for (const key in pseudoDescriptors) {
191
+ const pseudo = pseudoDescriptors[key]
192
+ res[pseudo.name] = [...Array(pseudo.priority)].map(() => ':root').join('') + ' '
193
+ }
194
+ return res
195
+ })()
196
+
197
+ function createAtomicRules(
198
+ identifier: string,
199
+ property: string,
200
+ value: any,
201
+ pseudo?: PseudoDescriptor
202
+ ): string[] {
203
+ const selector = pseudo
204
+ ? `${pseudoSelectorPrefixes[pseudo.name]} .${identifier}:${pseudo.name}`
205
+ : `.${identifier}`
206
+ const important = !!pseudo
207
+
208
+ let rules: string[] = []
209
+
210
+ // Handle non-standard properties and object values that require multiple
211
+ // CSS rules to be created.
212
+ switch (property) {
213
+ // Equivalent to using '::placeholder'
214
+ case 'placeholderTextColor': {
215
+ const block = createDeclarationBlock({ color: value, opacity: 1 }, important)
216
+ rules.push(`${selector}::placeholder${block}`)
217
+ break
218
+ }
219
+
220
+ // all webkit prefixed rules
221
+ case 'backgroundClip':
222
+ case 'userSelect': {
223
+ const propertyCapitalized = `${property[0].toUpperCase()}${property.slice(1)}`
224
+ const webkitProperty = `Webkit${propertyCapitalized}`
225
+ const block = createDeclarationBlock(
226
+ { [property]: value, [webkitProperty]: value },
227
+ important
228
+ )
229
+ rules.push(`${selector}${block}`)
230
+ break
231
+ }
232
+
233
+ // Polyfill for additional 'pointer-events' values
234
+ case 'pointerEvents': {
235
+ let finalValue = value
236
+ if (value === 'auto' || value === 'box-only') {
237
+ finalValue = 'auto'
238
+ if (value === 'box-only') {
239
+ rules.push(`${selector}>*${boxOnly}`)
240
+ }
241
+ } else if (value === 'none' || value === 'box-none') {
242
+ finalValue = 'none'
243
+ if (value === 'box-none') {
244
+ rules.push(`${selector}>*${boxNone}`)
245
+ }
246
+ }
247
+ const block = createDeclarationBlock({ pointerEvents: finalValue }, true)
248
+ rules.push(`${selector}${block}`)
249
+ break
250
+ }
251
+
252
+ default: {
253
+ const block = createDeclarationBlock({ [property]: value }, important)
254
+ rules.push(`${selector}${block}`)
255
+ break
256
+ }
257
+ }
258
+
259
+ // hover styles need to be conditional
260
+ // perhaps this can be generalized but for now lets just shortcut
261
+ // and hardcode for hover styles, if we need to later we can
262
+ // WEIRD SYNTAX, SEE:
263
+ // https://stackoverflow.com/questions/40532204/media-query-for-devices-supporting-hover
264
+ if (pseudo && pseudo.name === 'hover') {
265
+ rules = rules.map((r) => `@media not all and (hover: none) { ${r} }`)
266
+ }
267
+
268
+ return rules
269
+ }
270
+
271
+ const boxNone = createDeclarationBlock({ pointerEvents: 'auto' }, true)
272
+ const boxOnly = createDeclarationBlock({ pointerEvents: 'none' }, true)
@@ -0,0 +1,3 @@
1
+ export function getThemeCSSRules() {
2
+ return []
3
+ }
@@ -0,0 +1,105 @@
1
+ import { THEME_CLASSNAME_PREFIX } from '../constants/constants'
2
+ import { Variable, variableToString } from '../createVariable'
3
+ import { CreateTamaguiProps, ThemeParsed } from '../types'
4
+ import { tokensValueToVariable } from './registerCSSVariable'
5
+
6
+ export function getThemeCSSRules({
7
+ config,
8
+ themeName,
9
+ theme,
10
+ names,
11
+ }: {
12
+ config: CreateTamaguiProps
13
+ themeName: string
14
+ theme: ThemeParsed
15
+ names: string[]
16
+ }) {
17
+ const cssRuleSets: string[] = []
18
+
19
+ // special case for SSR
20
+ const hasDarkLight = 'light' in config.themes && 'dark' in config.themes
21
+ const CNP = `.${THEME_CLASSNAME_PREFIX}`
22
+ let vars = ''
23
+
24
+ // themeToVariableToValueMap.set(theme, {})
25
+ // const varToValMap = themeToVariableToValueMap.get(theme)
26
+ for (const themeKey in theme) {
27
+ const variable = theme[themeKey] as Variable
28
+ let value: any = null
29
+ // if (varToValMap) {
30
+ // varToValMap[variable.variable] = variable.val
31
+ // }
32
+ if (variable.isFloating || !tokensValueToVariable.has(variable.val)) {
33
+ value = variable.val
34
+ } else {
35
+ value = tokensValueToVariable.get(variable.val)!.variable
36
+ }
37
+ vars += `--${themeKey}:${value};`
38
+ }
39
+
40
+ const isDarkOrLightBase = themeName === 'dark' || themeName === 'light'
41
+ const selectors = names.map((name) => {
42
+ return `${CNP}${name}`
43
+ })
44
+
45
+ // since we dont specify dark/light in classnames we have to do an awkward specificity war
46
+ // use config.maxDarkLightNesting to determine how deep you can nest until it breaks
47
+ if (hasDarkLight) {
48
+ for (const subName of names) {
49
+ const isDark = isDarkOrLightBase || subName.startsWith('dark_')
50
+ const max = config.maxDarkLightNesting ?? 3
51
+
52
+ if (!isDark && !subName.startsWith('light_')) {
53
+ // neither light nor dark subtheme, just generate one selector with :root:root which
54
+ // will override all :root light/dark selectors generated below
55
+ selectors.push(`:root:root ${CNP}${subName}`)
56
+ continue
57
+ }
58
+
59
+ const childSelector = `${CNP}${subName.replace(isDark ? 'dark_' : 'light_', '')}`
60
+ const order = isDark ? ['dark', 'light'] : ['light', 'dark']
61
+ if (isDarkOrLightBase) {
62
+ order.reverse()
63
+ }
64
+ const [stronger, weaker] = order
65
+ const numSelectors = Math.round(max * 1.5)
66
+
67
+ for (let pi = 0; pi < numSelectors; pi++) {
68
+ const isOdd = pi % 2 === 1
69
+ if (isOdd && pi < 3) continue
70
+ const parents = new Array(pi + 1).fill(undefined).map((_, psi) => {
71
+ return `${CNP}${psi % 2 === 0 ? stronger : weaker}`
72
+ })
73
+ let parentSelectors = parents.length > 1 ? parents.slice(1) : parents
74
+ if (isOdd) {
75
+ const [_first, second, ...rest] = parentSelectors
76
+ parentSelectors = [second, ...rest, second]
77
+ }
78
+ // avoid .t_light .t_light at the end (make sure child is unique from last parent)
79
+ const lastParentSelector = parentSelectors[parentSelectors.length - 1]
80
+ selectors.push(
81
+ `${parentSelectors.join(' ')} ${
82
+ childSelector === lastParentSelector ? '' : childSelector
83
+ }`
84
+ )
85
+ }
86
+ }
87
+ }
88
+
89
+ const rootSep = config.themeClassNameOnRoot ? '' : ' '
90
+ const css = `${selectors.map((x) => `:root${rootSep}${x}`).join(', ')} {${vars}}`
91
+ cssRuleSets.push(css)
92
+
93
+ if (config.shouldAddPrefersColorThemes && isDarkOrLightBase) {
94
+ // add media prefers for dark/light base
95
+ const isDark = themeName.startsWith('dark')
96
+ cssRuleSets.push(
97
+ `@media(prefers-color-scheme: ${isDark ? 'dark' : 'light'}) {
98
+ body { background:${variableToString(theme.background)}; color: ${variableToString(theme.color)} }
99
+ :root {${vars} }
100
+ }`
101
+ )
102
+ }
103
+
104
+ return cssRuleSets
105
+ }
@@ -0,0 +1,85 @@
1
+ import { getConfig } from '../config'
2
+ import { GenericFonts } from '../types'
3
+ import { LanguageContextType } from '../views/FontLanguage.types'
4
+ import { createProxy } from './createProxy'
5
+
6
+ const extrasCache = new WeakMap()
7
+
8
+ export function getVariantExtras(
9
+ props: any,
10
+ languageContext?: LanguageContextType,
11
+ theme?: any,
12
+ defaultProps?: any,
13
+ avoidDefaultProps = false
14
+ ) {
15
+ const conf = getConfig()
16
+
17
+ if (extrasCache.has(props)) {
18
+ return extrasCache.get(props)
19
+ }
20
+
21
+ let fonts = conf.fontsParsed
22
+ if (languageContext) {
23
+ fonts = getFontsForLanguage(conf.fontsParsed, languageContext)
24
+ }
25
+
26
+ const next = {
27
+ fonts,
28
+ tokens: conf.tokensParsed,
29
+ theme,
30
+ // TODO do this in splitstlye
31
+ // we avoid passing in default props for media queries because that would confuse things like SizableText.size:
32
+ props: avoidDefaultProps
33
+ ? props
34
+ : createProxy(props, {
35
+ // handles shorthands
36
+ get(target, key) {
37
+ const shorthand = conf.inverseShorthands[key as any]
38
+ // shorthands before longhand because a styled() with longhand combined with inline shorthand
39
+ // shorthand will always be the overriding key
40
+ if (shorthand && Reflect.has(target, shorthand)) {
41
+ return Reflect.get(target, shorthand)
42
+ }
43
+ if (Reflect.has(target, key)) {
44
+ return Reflect.get(target, key)
45
+ }
46
+ // these props may be extracted into classNames, but we still want to access them
47
+ // at runtime, so we proxy back to defaultProps but don't pass them
48
+ if (defaultProps) {
49
+ if (shorthand && Reflect.has(defaultProps, shorthand)) {
50
+ return Reflect.get(defaultProps, shorthand)
51
+ }
52
+ if (Reflect.has(defaultProps, key)) {
53
+ return Reflect.get(defaultProps, key)
54
+ }
55
+ }
56
+ },
57
+ }),
58
+ }
59
+
60
+ extrasCache.set(props, next)
61
+
62
+ return next
63
+ }
64
+
65
+ const fontLanguageCache = new WeakMap()
66
+
67
+ export function getFontsForLanguage(fonts: GenericFonts, language: LanguageContextType) {
68
+ if (fontLanguageCache.has(language)) {
69
+ return fontLanguageCache.get(language)
70
+ }
71
+ const next = {
72
+ ...fonts,
73
+ ...Object.fromEntries(
74
+ Object.entries(language).map(([name, lang]) => {
75
+ if (lang === 'default') {
76
+ return []
77
+ }
78
+ const langKey = `$${name}_${lang}`
79
+ return [`$${name}`, fonts[langKey]]
80
+ })
81
+ ),
82
+ }
83
+ fontLanguageCache.set(language, next)
84
+ return next
85
+ }
@@ -0,0 +1,163 @@
1
+ // this needs to check if its inserted already? 99% of the time it is
2
+ // this should avoid re-inserts, but need to test the perf trade-offs
3
+ // i tested with the site itself and the initial insert was trivial
4
+
5
+ import type { StyleObject } from '@tamagui/helpers'
6
+
7
+ const allSelectors: Record<string, string> = {}
8
+ const allRules: Record<string, boolean | string[]> = {}
9
+ export const insertedTransforms = {}
10
+
11
+ export const getAllSelectors = () => allSelectors
12
+ export const getAllRules = () => Object.values(allRules)
13
+ export const getAllTransforms = () => insertedTransforms
14
+
15
+ // keep transforms in map for merging later
16
+ function addTransform(identifier: string, css: string, rule?: CSSRule) {
17
+ const s = css.indexOf('transform:')
18
+ if (s === -1) {
19
+ if (process.env.NODE_ENV === 'development') {
20
+ // eslint-disable-next-line no-console
21
+ console.groupCollapsed(`❌ Invalid transform, likely used deg/% improperly ${identifier}`)
22
+ // eslint-disable-next-line no-console
23
+ console.log('rule:', rule)
24
+ // eslint-disable-next-line no-console
25
+ console.trace()
26
+ // eslint-disable-next-line no-console
27
+ console.groupEnd()
28
+ } else {
29
+ // missing transform
30
+ }
31
+ return false
32
+ }
33
+ const startI = s + 'transform:'.length
34
+ const endI = css.indexOf(';')
35
+ const value = css.slice(startI, endI)
36
+ if (!insertedTransforms[identifier]) {
37
+ insertedTransforms[identifier] = value
38
+ return true
39
+ }
40
+ return false
41
+ }
42
+
43
+ const isClient = typeof document !== 'undefined'
44
+
45
+ // gets existing ones (client side)
46
+ // takes ~0.1ms for a fairly large page
47
+ // used now for three things:
48
+ // 1. debugging at dev time
49
+ // 2. avoid duplicate insert styles at runtime
50
+ // 3. used now for merging transforms atomically
51
+ const scannedNum = new WeakMap<CSSStyleSheet, number>()
52
+
53
+ export function updateInserted() {
54
+ if (process.env.NODE_ENV === 'test') return
55
+ if (!isClient) return
56
+ const sheets = document.styleSheets
57
+ if (!sheets) return
58
+ for (let i = 0; i < sheets.length; i++) {
59
+ const sheet = sheets[i]
60
+ if (!sheet) continue
61
+
62
+ // avoid errors on cross origin sheets
63
+ // https://stackoverflow.com/questions/49993633/uncaught-domexception-failed-to-read-the-cssrules-property
64
+ let rules: CSSRuleList
65
+ try {
66
+ rules = sheet.cssRules
67
+ } catch {
68
+ continue
69
+ }
70
+
71
+ const len = rules.length
72
+ const lastScanned = scannedNum.get(sheet) ?? 0
73
+ if (lastScanned === len) {
74
+ continue
75
+ }
76
+ for (let i = lastScanned; i < len; i++) {
77
+ const rule = rules[i]
78
+ const response = getTamaguiSelector(rule)
79
+ if (!response) {
80
+ continue
81
+ }
82
+ const [identifier, cssRule] = response
83
+ if (!allSelectors[identifier]) {
84
+ const isTransform = identifier.startsWith('_transform')
85
+ const shouldInsert = isTransform ? addTransform(identifier, cssRule.cssText, cssRule) : true
86
+ if (shouldInsert) {
87
+ allSelectors[identifier] = cssRule.cssText
88
+ }
89
+ }
90
+ }
91
+ scannedNum.set(sheet, i)
92
+ }
93
+ }
94
+
95
+ function getTamaguiSelector(rule: CSSRule | null): readonly [string, CSSStyleRule] | null {
96
+ if (rule instanceof CSSStyleRule) {
97
+ const text = rule.selectorText
98
+ if (text.startsWith('._')) {
99
+ return [text.slice(1), rule]
100
+ }
101
+ if (text.startsWith(':root') && text.includes('._')) {
102
+ return [getIdentifierFromTamaguiSelector(text), rule]
103
+ }
104
+ } else if (rule instanceof CSSMediaRule) {
105
+ // tamagui only ever inserts 1 rule per media
106
+ if (rule.cssRules.length > 1) return null
107
+ return getTamaguiSelector(rule.cssRules[0])
108
+ }
109
+ return null
110
+ }
111
+
112
+ const getIdentifierFromTamaguiSelector = (selector: string) =>
113
+ selector
114
+ .replace(/(:root)+\s+/, '')
115
+ .replace(/:[a-z]+$/, '')
116
+ .slice(1)
117
+
118
+ // move this to probably inside createTamagui
119
+ updateInserted()
120
+
121
+ const sheet = isClient ? document.head.appendChild(document.createElement('style')).sheet : null
122
+
123
+ export function updateRules(identifier: string, rules: string[]) {
124
+ if (allRules[identifier]) return false
125
+ allRules[identifier] = rules
126
+ if (identifier.startsWith('_transform')) {
127
+ return addTransform(identifier, rules[0])
128
+ }
129
+ return true
130
+ }
131
+
132
+ // [property, identifier, rules]
133
+ export type PartialStyleObject = Pick<StyleObject, 'identifier' | 'property' | 'rules'>
134
+ export type RulesToInsert = PartialStyleObject[]
135
+
136
+ export function insertStyleRules(rulesToInsert: RulesToInsert) {
137
+ if (isClient && !sheet) {
138
+ if (process.env.NODE_ENV === 'development') {
139
+ // eslint-disable-next-line no-console
140
+ console.warn(`Missing sheet`)
141
+ }
142
+ return
143
+ }
144
+ for (const { identifier, rules } of rulesToInsert) {
145
+ if (allSelectors[identifier]) continue
146
+ allSelectors[identifier] = process.env.NODE_ENV === 'development' ? rules.join('\n') : ''
147
+ updateRules(identifier, rules)
148
+ if (sheet) {
149
+ for (const rule of rules) {
150
+ sheet.insertRule(rule, sheet.cssRules.length)
151
+ }
152
+ }
153
+ }
154
+ }
155
+
156
+ const IS_STATIC = process.env.IS_STATIC === 'is_static'
157
+
158
+ export function shouldInsertStyleRules(styleObject: PartialStyleObject) {
159
+ if (IS_STATIC) {
160
+ return true
161
+ }
162
+ return !allSelectors[styleObject.identifier]
163
+ }
@@ -0,0 +1 @@
1
+ export const isObj = (x: any) => x && !Array.isArray(x) && typeof x === 'object'
@@ -0,0 +1,15 @@
1
+ import { StaticConfig, StaticConfigParsed } from '../types'
2
+
3
+ export function isTamaguiComponent<A>(
4
+ comp: A,
5
+ name?: string
6
+ ): comp is A & {
7
+ staticConfig: StaticConfig
8
+ } {
9
+ const config = comp && (comp['staticConfig'] as StaticConfigParsed | undefined)
10
+ if (!config || !config.parsed) return false
11
+ if (name) {
12
+ return name === config.componentName
13
+ }
14
+ return true
15
+ }
@@ -0,0 +1,12 @@
1
+ import React, { isValidElement } from 'react'
2
+
3
+ import { TamaguiComponent } from '../types'
4
+ import { isTamaguiComponent } from './isTamaguiComponent'
5
+
6
+ export type TamaguiReactElement<P = any> = React.ReactElement<P> & {
7
+ type: TamaguiComponent
8
+ }
9
+
10
+ export const isTamaguiElement = (child: any, name?: string): child is TamaguiReactElement => {
11
+ return isValidElement(child) && isTamaguiComponent(child.type, name)
12
+ }
@@ -0,0 +1,6 @@
1
+ import MediaQueryList from '@expo/match-media/build/MediaQueryList.js'
2
+
3
+ export const matchMedia = (media: string) => new MediaQueryList(media)
4
+
5
+ // @ts-ignore
6
+ globalThis['matchMedia'] = matchMedia
@@ -0,0 +1,17 @@
1
+ export const matchMedia = (typeof window !== 'undefined' && window.matchMedia) || matchMediaFallback
2
+
3
+ function matchMediaFallback(query: string): MediaQueryList {
4
+ if (
5
+ process.env.NODE_ENV === 'development' &&
6
+ !process.env.IS_STATIC &&
7
+ process.env.TAMAGUI_TARGET !== 'web'
8
+ ) {
9
+ // eslint-disable-next-line no-console
10
+ console.log('warning: matchMedia not loading! Native not picking up .native.js files?')
11
+ }
12
+ return {
13
+ addListener() {},
14
+ removeListener() {},
15
+ matches: false,
16
+ } as any
17
+ }