@tamagui/core 1.0.1-beta.99 → 1.0.1-rc.0.1

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