@tamagui/core 1.0.1-beta.19 → 1.0.1-beta.191

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 (764) hide show
  1. package/dist/cjs/Tamagui.js +14 -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} +33 -19
  6. package/dist/cjs/config.js.map +7 -0
  7. package/dist/cjs/constants/constants.js +11 -23
  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/{views → contexts}/TextAncestorContext.js +11 -13
  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 +925 -484
  24. package/dist/cjs/createComponent.js.map +3 -3
  25. package/dist/cjs/createFont.js +5 -8
  26. package/dist/cjs/createFont.js.map +2 -2
  27. package/dist/cjs/createShorthands.js +1 -2
  28. package/dist/cjs/createShorthands.js.map +2 -2
  29. package/dist/cjs/createTamagui.js +129 -177
  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 +52 -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} +54 -52
  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/calc.js +71 -0
  50. package/dist/cjs/helpers/calc.js.map +7 -0
  51. package/dist/cjs/helpers/createMediaStyle.js +17 -9
  52. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  53. package/dist/cjs/helpers/createPropMapper.js +272 -122
  54. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  55. package/dist/cjs/helpers/createShallowUpdate.js +14 -25
  56. package/dist/cjs/helpers/createShallowUpdate.js.map +2 -2
  57. package/dist/cjs/helpers/expandStyle.js +90 -0
  58. package/dist/cjs/helpers/expandStyle.js.map +7 -0
  59. package/dist/cjs/helpers/expandStyles.js +115 -0
  60. package/dist/cjs/helpers/expandStyles.js.map +7 -0
  61. package/dist/cjs/helpers/extendStaticConfig.js +49 -37
  62. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  63. package/dist/cjs/helpers/fixNativeShadow.js +3 -3
  64. package/dist/cjs/helpers/fixNativeShadow.js.map +1 -1
  65. package/dist/cjs/helpers/getAnimationDriver.js +32 -0
  66. package/dist/cjs/helpers/getAnimationDriver.js.map +7 -0
  67. package/dist/cjs/helpers/getExpandedShorthands.js +4 -5
  68. package/dist/cjs/helpers/getExpandedShorthands.js.map +2 -2
  69. package/dist/cjs/helpers/{getTextSize.js → getFont.js} +22 -12
  70. package/dist/cjs/helpers/getFont.js.map +7 -0
  71. package/dist/cjs/helpers/getFontLanguage.js +29 -0
  72. package/dist/cjs/helpers/getFontLanguage.js.map +7 -0
  73. package/dist/cjs/helpers/getSize.js +19 -10
  74. package/dist/cjs/helpers/getSize.js.map +2 -2
  75. package/dist/cjs/helpers/getSplitStyles.js +381 -208
  76. package/dist/cjs/helpers/getSplitStyles.js.map +3 -3
  77. package/dist/cjs/helpers/getStackSize.js +46 -0
  78. package/dist/cjs/helpers/getStackSize.js.map +7 -0
  79. package/dist/cjs/helpers/getStylesAtomic.js +199 -133
  80. package/dist/cjs/helpers/getStylesAtomic.js.map +3 -3
  81. package/dist/cjs/helpers/getStylesAtomic.native.js +1 -2
  82. package/dist/cjs/helpers/getStylesAtomic.native.js.map +1 -1
  83. package/dist/cjs/helpers/getThemeCSSRules.js +103 -0
  84. package/dist/cjs/helpers/getThemeCSSRules.js.map +7 -0
  85. package/dist/cjs/{nativeGestureHandler.native.js → helpers/getThemeCSSRules.native.js} +18 -5
  86. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +7 -0
  87. package/dist/cjs/helpers/getVariantExtras.js +88 -0
  88. package/dist/cjs/helpers/getVariantExtras.js.map +7 -0
  89. package/dist/cjs/helpers/insertStyleRule.js +83 -52
  90. package/dist/cjs/helpers/insertStyleRule.js.map +3 -3
  91. package/dist/cjs/helpers/isObj.js +2 -2
  92. package/dist/cjs/helpers/isObj.js.map +1 -1
  93. package/dist/cjs/helpers/isTamaguiComponent.js +37 -0
  94. package/dist/cjs/helpers/isTamaguiComponent.js.map +7 -0
  95. package/dist/cjs/helpers/isTamaguiElement.js +5 -5
  96. package/dist/cjs/helpers/isTamaguiElement.js.map +2 -2
  97. package/dist/cjs/helpers/matchMedia.js +7 -6
  98. package/dist/cjs/helpers/matchMedia.js.map +2 -2
  99. package/dist/cjs/helpers/matchMedia.native.js +6 -3
  100. package/dist/cjs/helpers/matchMedia.native.js.map +2 -2
  101. package/dist/cjs/helpers/mergeProps.js +54 -0
  102. package/dist/cjs/helpers/mergeProps.js.map +7 -0
  103. package/dist/cjs/helpers/mergeTransform.js +42 -0
  104. package/dist/cjs/helpers/mergeTransform.js.map +7 -0
  105. package/dist/cjs/helpers/normalizeColor.js +80 -0
  106. package/dist/cjs/helpers/normalizeColor.js.map +7 -0
  107. package/dist/cjs/helpers/normalizeValueWithProperty.js +93 -0
  108. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +7 -0
  109. package/dist/cjs/helpers/proxyThemeVariables.js +7 -4
  110. package/dist/cjs/helpers/proxyThemeVariables.js.map +2 -2
  111. package/dist/cjs/helpers/pseudoDescriptors.js +42 -0
  112. package/dist/cjs/helpers/pseudoDescriptors.js.map +7 -0
  113. package/dist/cjs/helpers/registerCSSVariable.js +40 -0
  114. package/dist/cjs/helpers/registerCSSVariable.js.map +7 -0
  115. package/dist/cjs/helpers/{wrapThemeManagerContext.js → startTransition.js} +12 -15
  116. package/dist/cjs/helpers/startTransition.js.map +7 -0
  117. package/dist/cjs/helpers/themeable.js +17 -40
  118. package/dist/cjs/helpers/themeable.js.map +3 -3
  119. package/dist/cjs/helpers/themes.js +79 -0
  120. package/dist/cjs/helpers/themes.js.map +7 -0
  121. package/dist/cjs/helpers/useShallowSetState.js +44 -0
  122. package/dist/cjs/helpers/useShallowSetState.js.map +7 -0
  123. package/dist/cjs/helpers/validate.js +1 -122
  124. package/dist/cjs/helpers/validate.js.map +3 -3
  125. package/dist/cjs/helpers/withStaticProperties.js +3 -3
  126. package/dist/cjs/helpers/withStaticProperties.js.map +1 -1
  127. package/dist/cjs/hooks/getThemeUnwrapped.js +39 -0
  128. package/dist/cjs/hooks/getThemeUnwrapped.js.map +7 -0
  129. package/dist/cjs/hooks/useConstant.js +4 -2
  130. package/dist/cjs/hooks/useConstant.js.map +2 -2
  131. package/dist/cjs/hooks/useDidFinishSSR.js +60 -0
  132. package/dist/cjs/hooks/useDidFinishSSR.js.map +7 -0
  133. package/dist/cjs/hooks/useId.js +3 -33
  134. package/dist/cjs/hooks/useId.js.map +2 -2
  135. package/dist/cjs/hooks/useIsMounted.js +3 -4
  136. package/dist/cjs/hooks/useIsMounted.js.map +2 -2
  137. package/dist/cjs/hooks/useIsSSR.js +46 -0
  138. package/dist/cjs/hooks/useIsSSR.js.map +7 -0
  139. package/dist/cjs/hooks/useIsTouchDevice.js +11 -9
  140. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  141. package/dist/cjs/hooks/useMedia.js +162 -113
  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 +60 -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 +166 -132
  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 +59 -21
  154. package/dist/cjs/index.js.map +2 -2
  155. package/dist/cjs/injectStyles.js +40 -0
  156. package/dist/cjs/injectStyles.js.map +7 -0
  157. package/dist/cjs/insertFont.js +93 -0
  158. package/dist/cjs/insertFont.js.map +7 -0
  159. package/dist/cjs/static.js +22 -15
  160. package/dist/cjs/static.js.map +2 -2
  161. package/dist/cjs/styled.js +47 -44
  162. package/dist/cjs/styled.js.map +2 -2
  163. package/dist/cjs/types-rnw.js +1 -0
  164. package/dist/cjs/types-rnw.js.map +2 -2
  165. package/dist/cjs/types.js +1 -0
  166. package/dist/cjs/types.js.map +2 -2
  167. package/dist/cjs/updateTheme.js +47 -0
  168. package/dist/cjs/updateTheme.js.map +7 -0
  169. package/dist/cjs/vendor/Pressability.js +32 -0
  170. package/dist/cjs/vendor/Pressability.js.map +7 -0
  171. package/dist/cjs/vendor/Pressability.native.js +32 -0
  172. package/dist/cjs/vendor/Pressability.native.js.map +7 -0
  173. package/dist/cjs/views/FontLanguage.js +38 -0
  174. package/dist/cjs/views/FontLanguage.js.map +7 -0
  175. package/dist/cjs/views/FontLanguage.native.js +38 -0
  176. package/dist/cjs/views/FontLanguage.native.js.map +7 -0
  177. package/dist/cjs/{helpers/nativeGestureHandler.native.js → views/FontLanguage.types.js} +4 -5
  178. package/dist/cjs/views/FontLanguage.types.js.map +7 -0
  179. package/dist/cjs/views/Slot.js +64 -72
  180. package/dist/cjs/views/Slot.js.map +2 -2
  181. package/dist/cjs/views/Stack.js +4 -19
  182. package/dist/cjs/views/Stack.js.map +1 -1
  183. package/dist/cjs/views/TamaguiProvider.js +82 -0
  184. package/dist/cjs/views/TamaguiProvider.js.map +7 -0
  185. package/dist/cjs/views/Text.js +28 -29
  186. package/dist/cjs/views/Text.js.map +2 -2
  187. package/dist/cjs/views/Theme.js +43 -21
  188. package/dist/cjs/views/Theme.js.map +3 -3
  189. package/dist/cjs/views/ThemeInverse.js +25 -25
  190. package/dist/cjs/views/ThemeInverse.js.map +2 -2
  191. package/dist/cjs/views/ThemeProvider.js +35 -23
  192. package/dist/cjs/views/ThemeProvider.js.map +3 -3
  193. package/dist/cjs/views/ThemeReset.js +18 -12
  194. package/dist/cjs/views/ThemeReset.js.map +3 -3
  195. package/dist/esm/Tamagui.js +8 -11
  196. package/dist/esm/Tamagui.js.map +2 -2
  197. package/dist/esm/addTheme.js +56 -0
  198. package/dist/esm/addTheme.js.map +7 -0
  199. package/dist/esm/config.js +45 -0
  200. package/dist/esm/config.js.map +7 -0
  201. package/dist/esm/constants/constants.js +2 -2
  202. package/dist/esm/constants/constants.js.map +2 -2
  203. package/dist/esm/constants/isDevTools.js +5 -0
  204. package/dist/esm/constants/isDevTools.js.map +7 -0
  205. package/dist/esm/constants/platform.js +25 -12
  206. package/dist/esm/constants/platform.js.map +2 -2
  207. package/dist/esm/constants/platform.native.js +28 -0
  208. package/dist/esm/constants/platform.native.js.map +7 -0
  209. package/dist/esm/contexts/ButtonInsideButtonContext.js +0 -0
  210. package/dist/esm/contexts/ButtonInsideButtonContext.js.map +1 -1
  211. package/dist/esm/contexts/FontLanguageContext.js +6 -0
  212. package/dist/esm/contexts/FontLanguageContext.js.map +7 -0
  213. package/dist/esm/contexts/TextAncestorContext.js +17 -0
  214. package/dist/esm/contexts/TextAncestorContext.js.map +7 -0
  215. package/dist/esm/{ThemeContext.js → contexts/ThemeContext.js} +0 -0
  216. package/dist/esm/contexts/ThemeContext.js.map +7 -0
  217. package/dist/esm/createComponent.js +891 -389
  218. package/dist/esm/createComponent.js.map +3 -3
  219. package/dist/esm/createFont.js +4 -9
  220. package/dist/esm/createFont.js.map +2 -2
  221. package/dist/esm/createShorthands.js +0 -3
  222. package/dist/esm/createShorthands.js.map +2 -2
  223. package/dist/esm/createTamagui.js +128 -158
  224. package/dist/esm/createTamagui.js.map +3 -3
  225. package/dist/esm/createTheme.js +3 -3
  226. package/dist/esm/createTheme.js.map +2 -2
  227. package/dist/esm/createTokens.js +3 -24
  228. package/dist/esm/createTokens.js.map +2 -2
  229. package/dist/esm/createVariable.js +47 -26
  230. package/dist/esm/createVariable.js.map +2 -2
  231. package/dist/esm/createVariables.js +28 -0
  232. package/dist/esm/createVariables.js.map +7 -0
  233. package/dist/esm/helpers/RNComponents.js +11 -8
  234. package/dist/esm/helpers/RNComponents.js.map +2 -2
  235. package/dist/esm/{ThemeManager.js → helpers/ThemeManager.js} +53 -53
  236. package/dist/esm/helpers/ThemeManager.js.map +7 -0
  237. package/dist/esm/helpers/areEqualSets.js +2 -4
  238. package/dist/esm/helpers/areEqualSets.js.map +1 -1
  239. package/dist/esm/helpers/assignNativePropsToWeb.js +164 -0
  240. package/dist/esm/helpers/assignNativePropsToWeb.js.map +7 -0
  241. package/dist/esm/helpers/assignNativePropsToWeb.native.js +6 -0
  242. package/dist/esm/helpers/assignNativePropsToWeb.native.js.map +7 -0
  243. package/dist/esm/helpers/calc.js +47 -0
  244. package/dist/esm/helpers/calc.js.map +7 -0
  245. package/dist/esm/helpers/createMediaStyle.js +16 -10
  246. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  247. package/dist/esm/helpers/createPropMapper.js +267 -123
  248. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  249. package/dist/esm/helpers/createShallowUpdate.js +13 -12
  250. package/dist/esm/helpers/createShallowUpdate.js.map +2 -2
  251. package/dist/esm/helpers/expandStyle.js +66 -0
  252. package/dist/esm/helpers/expandStyle.js.map +7 -0
  253. package/dist/esm/helpers/expandStyles.js +89 -0
  254. package/dist/esm/helpers/expandStyles.js.map +7 -0
  255. package/dist/esm/helpers/extendStaticConfig.js +35 -28
  256. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  257. package/dist/esm/helpers/fixNativeShadow.js +2 -4
  258. package/dist/esm/helpers/fixNativeShadow.js.map +1 -1
  259. package/dist/esm/helpers/getAnimationDriver.js +8 -0
  260. package/dist/esm/helpers/getAnimationDriver.js.map +7 -0
  261. package/dist/esm/helpers/getExpandedShorthands.js +2 -5
  262. package/dist/esm/helpers/getExpandedShorthands.js.map +2 -2
  263. package/dist/esm/helpers/{getTextSize.js → getFont.js} +17 -9
  264. package/dist/esm/helpers/getFont.js.map +7 -0
  265. package/dist/esm/helpers/getFontLanguage.js +5 -0
  266. package/dist/esm/helpers/getFontLanguage.js.map +7 -0
  267. package/dist/esm/helpers/getSize.js +16 -10
  268. package/dist/esm/helpers/getSize.js.map +2 -2
  269. package/dist/esm/helpers/getSplitStyles.js +364 -188
  270. package/dist/esm/helpers/getSplitStyles.js.map +3 -3
  271. package/dist/esm/helpers/getStackSize.js +22 -0
  272. package/dist/esm/helpers/getStackSize.js.map +7 -0
  273. package/dist/esm/helpers/getStylesAtomic.js +187 -108
  274. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  275. package/dist/esm/helpers/getStylesAtomic.native.js +0 -3
  276. package/dist/esm/helpers/getStylesAtomic.native.js.map +1 -1
  277. package/dist/esm/helpers/getThemeCSSRules.js +79 -0
  278. package/dist/esm/helpers/getThemeCSSRules.js.map +7 -0
  279. package/dist/esm/helpers/getThemeCSSRules.native.js +7 -0
  280. package/dist/esm/helpers/getThemeCSSRules.native.js.map +7 -0
  281. package/dist/esm/helpers/getVariantExtras.js +63 -0
  282. package/dist/esm/helpers/getVariantExtras.js.map +7 -0
  283. package/dist/esm/helpers/insertStyleRule.js +78 -50
  284. package/dist/esm/helpers/insertStyleRule.js.map +3 -3
  285. package/dist/esm/helpers/isObj.js +1 -3
  286. package/dist/esm/helpers/isObj.js.map +1 -1
  287. package/dist/esm/helpers/isTamaguiComponent.js +13 -0
  288. package/dist/esm/helpers/isTamaguiComponent.js.map +7 -0
  289. package/dist/esm/helpers/isTamaguiElement.js +4 -6
  290. package/dist/esm/helpers/isTamaguiElement.js.map +2 -2
  291. package/dist/esm/helpers/matchMedia.js +6 -7
  292. package/dist/esm/helpers/matchMedia.js.map +2 -2
  293. package/dist/esm/helpers/matchMedia.native.js +1 -3
  294. package/dist/esm/helpers/matchMedia.native.js.map +1 -1
  295. package/dist/esm/helpers/mergeProps.js +30 -0
  296. package/dist/esm/helpers/mergeProps.js.map +7 -0
  297. package/dist/esm/helpers/mergeTransform.js +17 -0
  298. package/dist/esm/helpers/mergeTransform.js.map +7 -0
  299. package/dist/esm/helpers/normalizeColor.js +49 -0
  300. package/dist/esm/helpers/normalizeColor.js.map +7 -0
  301. package/dist/esm/helpers/normalizeValueWithProperty.js +69 -0
  302. package/dist/esm/helpers/normalizeValueWithProperty.js.map +7 -0
  303. package/dist/esm/helpers/proxyThemeVariables.js +6 -5
  304. package/dist/esm/helpers/proxyThemeVariables.js.map +2 -2
  305. package/dist/esm/helpers/pseudoDescriptors.js +18 -0
  306. package/dist/esm/helpers/pseudoDescriptors.js.map +7 -0
  307. package/dist/esm/helpers/registerCSSVariable.js +14 -0
  308. package/dist/esm/helpers/registerCSSVariable.js.map +7 -0
  309. package/dist/esm/helpers/startTransition.js +6 -0
  310. package/dist/esm/helpers/startTransition.js.map +7 -0
  311. package/dist/esm/helpers/themeable.js +11 -9
  312. package/dist/esm/helpers/themeable.js.map +2 -2
  313. package/dist/esm/helpers/themes.js +54 -0
  314. package/dist/esm/helpers/themes.js.map +7 -0
  315. package/dist/esm/helpers/useShallowSetState.js +20 -0
  316. package/dist/esm/helpers/useShallowSetState.js.map +7 -0
  317. package/dist/esm/helpers/validate.js +0 -75
  318. package/dist/esm/helpers/validate.js.map +3 -3
  319. package/dist/esm/helpers/withStaticProperties.js +2 -4
  320. package/dist/esm/helpers/withStaticProperties.js.map +1 -1
  321. package/dist/esm/hooks/getThemeUnwrapped.js +14 -0
  322. package/dist/esm/hooks/getThemeUnwrapped.js.map +7 -0
  323. package/dist/esm/hooks/useConstant.js +4 -4
  324. package/dist/esm/hooks/useConstant.js.map +2 -2
  325. package/dist/esm/hooks/useDidFinishSSR.js +35 -0
  326. package/dist/esm/hooks/useDidFinishSSR.js.map +7 -0
  327. package/dist/esm/hooks/useId.js +1 -31
  328. package/dist/esm/hooks/useId.js.map +2 -2
  329. package/dist/esm/hooks/useIsMounted.js +1 -4
  330. package/dist/esm/hooks/useIsMounted.js.map +2 -2
  331. package/dist/esm/hooks/useIsSSR.js +22 -0
  332. package/dist/esm/hooks/useIsSSR.js.map +7 -0
  333. package/dist/esm/hooks/useIsTouchDevice.js +10 -10
  334. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  335. package/dist/esm/hooks/useMedia.js +157 -103
  336. package/dist/esm/hooks/useMedia.js.map +3 -3
  337. package/dist/esm/hooks/usePressable.js +2 -4
  338. package/dist/esm/hooks/usePressable.js.map +1 -1
  339. package/dist/esm/hooks/useSafeRef.js +36 -0
  340. package/dist/esm/hooks/useSafeRef.js.map +7 -0
  341. package/dist/esm/hooks/useServerHooks.js +11 -0
  342. package/dist/esm/hooks/useServerHooks.js.map +7 -0
  343. package/dist/esm/hooks/useTheme.js +159 -109
  344. package/dist/esm/hooks/useTheme.js.map +3 -3
  345. package/dist/esm/hooks/useUnmountEffect.js +0 -3
  346. package/dist/esm/hooks/useUnmountEffect.js.map +1 -1
  347. package/dist/esm/index.js +51 -13
  348. package/dist/esm/index.js.map +2 -2
  349. package/dist/esm/injectStyles.js +16 -0
  350. package/dist/esm/injectStyles.js.map +7 -0
  351. package/dist/esm/insertFont.js +67 -0
  352. package/dist/esm/insertFont.js.map +7 -0
  353. package/dist/esm/static.js +15 -15
  354. package/dist/esm/static.js.map +2 -2
  355. package/dist/esm/styled.js +40 -12
  356. package/dist/esm/styled.js.map +2 -2
  357. package/dist/esm/types-rnw.js +0 -0
  358. package/dist/esm/types-rnw.js.map +0 -0
  359. package/dist/esm/types.js +0 -0
  360. package/dist/esm/types.js.map +0 -0
  361. package/dist/esm/updateTheme.js +23 -0
  362. package/dist/esm/updateTheme.js.map +7 -0
  363. package/dist/esm/vendor/Pressability.js +7 -0
  364. package/dist/esm/vendor/Pressability.js.map +7 -0
  365. package/dist/esm/vendor/Pressability.native.js +7 -0
  366. package/dist/esm/vendor/Pressability.native.js.map +7 -0
  367. package/dist/esm/views/FontLanguage.js +14 -0
  368. package/dist/esm/views/FontLanguage.js.map +7 -0
  369. package/dist/esm/views/FontLanguage.native.js +14 -0
  370. package/dist/esm/views/FontLanguage.native.js.map +7 -0
  371. package/dist/esm/views/FontLanguage.types.js +1 -0
  372. package/dist/{cjs/defaultComponentState.js.map → esm/views/FontLanguage.types.js.map} +0 -0
  373. package/dist/esm/views/Slot.js +55 -37
  374. package/dist/esm/views/Slot.js.map +2 -2
  375. package/dist/esm/views/Stack.js +0 -0
  376. package/dist/esm/views/Stack.js.map +1 -1
  377. package/dist/esm/views/TamaguiProvider.js +52 -0
  378. package/dist/esm/views/TamaguiProvider.js.map +7 -0
  379. package/dist/esm/views/Text.js +13 -5
  380. package/dist/esm/views/Text.js.map +2 -2
  381. package/dist/esm/views/Theme.js +35 -19
  382. package/dist/esm/views/Theme.js.map +3 -3
  383. package/dist/esm/views/ThemeInverse.js +22 -20
  384. package/dist/esm/views/ThemeInverse.js.map +2 -2
  385. package/dist/esm/views/ThemeProvider.js +28 -21
  386. package/dist/esm/views/ThemeProvider.js.map +2 -2
  387. package/dist/esm/views/ThemeReset.js +13 -12
  388. package/dist/esm/views/ThemeReset.js.map +2 -2
  389. package/package.json +49 -16
  390. package/reset.css +25 -4
  391. package/src/Tamagui.ts +44 -0
  392. package/src/addTheme.ts +68 -0
  393. package/src/config.ts +45 -0
  394. package/src/constants/constants.ts +15 -0
  395. package/src/constants/isDevTools.ts +6 -0
  396. package/src/contexts/ButtonInsideButtonContext.tsx +3 -0
  397. package/src/contexts/FontLanguageContext.tsx +5 -0
  398. package/src/contexts/TextAncestorContext.tsx +10 -0
  399. package/src/contexts/ThemeContext.tsx +5 -0
  400. package/src/createComponent.tsx +1601 -0
  401. package/src/createFont.ts +29 -0
  402. package/src/createShorthands.ts +7 -0
  403. package/src/createTamagui.ts +229 -0
  404. package/src/createTheme.ts +13 -0
  405. package/src/createTokens.ts +35 -0
  406. package/src/createVariable.ts +85 -0
  407. package/src/createVariables.ts +42 -0
  408. package/src/helpers/RNComponents.tsx +14 -0
  409. package/src/helpers/ThemeManager.tsx +235 -0
  410. package/src/helpers/areEqualSets.tsx +9 -0
  411. package/src/helpers/assignNativePropsToWeb.native.tsx +1 -0
  412. package/src/helpers/assignNativePropsToWeb.tsx +178 -0
  413. package/src/helpers/calc.ts +68 -0
  414. package/src/helpers/createMediaStyle.ts +48 -0
  415. package/src/helpers/createPropMapper.ts +526 -0
  416. package/src/helpers/expandStyle.ts +81 -0
  417. package/src/helpers/expandStyles.ts +107 -0
  418. package/src/helpers/extendStaticConfig.ts +76 -0
  419. package/src/helpers/fixNativeShadow.tsx +2 -0
  420. package/src/helpers/getAnimationDriver.tsx +5 -0
  421. package/src/helpers/getExpandedShorthands.ts +15 -0
  422. package/src/helpers/getFont.tsx +43 -0
  423. package/src/helpers/getFontLanguage.ts +2 -0
  424. package/src/helpers/getSize.ts +22 -0
  425. package/src/helpers/getSplitStyles.tsx +738 -0
  426. package/src/helpers/getStackSize.ts +22 -0
  427. package/src/helpers/getStylesAtomic.native.ts +3 -0
  428. package/src/helpers/getStylesAtomic.ts +292 -0
  429. package/src/helpers/getThemeCSSRules.native.ts +3 -0
  430. package/src/helpers/getThemeCSSRules.ts +105 -0
  431. package/src/helpers/getVariantExtras.tsx +84 -0
  432. package/src/helpers/insertStyleRule.tsx +150 -0
  433. package/src/helpers/isObj.ts +1 -0
  434. package/src/helpers/isTamaguiComponent.tsx +15 -0
  435. package/src/helpers/isTamaguiElement.tsx +12 -0
  436. package/src/helpers/matchMedia.native.ts +6 -0
  437. package/src/helpers/matchMedia.ts +16 -0
  438. package/src/helpers/mergeProps.ts +56 -0
  439. package/src/helpers/mergeTransform.ts +16 -0
  440. package/src/helpers/normalizeColor.ts +53 -0
  441. package/src/helpers/normalizeValueWithProperty.ts +80 -0
  442. package/src/helpers/proxyThemeVariables.tsx +18 -0
  443. package/src/helpers/pseudoDescriptors.ts +18 -0
  444. package/src/helpers/registerCSSVariable.ts +11 -0
  445. package/src/helpers/startTransition.ts +4 -0
  446. package/src/helpers/themeable.tsx +45 -0
  447. package/src/helpers/themes.ts +69 -0
  448. package/src/helpers/useShallowSetState.tsx +20 -0
  449. package/src/helpers/validate.ts +80 -0
  450. package/src/helpers/withStaticProperties.tsx +7 -0
  451. package/src/hooks/getThemeUnwrapped.tsx +8 -0
  452. package/src/hooks/useConstant.tsx +19 -0
  453. package/src/hooks/useId.tsx +1 -0
  454. package/src/hooks/useIsMounted.ts +16 -0
  455. package/src/hooks/useIsTouchDevice.tsx +20 -0
  456. package/src/hooks/useMedia.tsx +266 -0
  457. package/src/hooks/usePressable.tsx +9 -0
  458. package/src/hooks/useSafeRef.ts +49 -0
  459. package/src/hooks/useServerHooks.tsx +12 -0
  460. package/src/hooks/useTheme.tsx +299 -0
  461. package/src/hooks/useUnmountEffect.ts +5 -0
  462. package/src/index.ts +83 -0
  463. package/src/injectStyles.ts +20 -0
  464. package/src/insertFont.ts +70 -0
  465. package/src/static.ts +15 -0
  466. package/src/styled.tsx +198 -0
  467. package/src/types-rnw.tsx +162 -0
  468. package/src/types.tsx +1326 -0
  469. package/src/updateTheme.ts +23 -0
  470. package/src/vendor/Pressability.native.tsx +3 -0
  471. package/src/vendor/Pressability.tsx +2 -0
  472. package/src/views/FontLanguage.native.tsx +9 -0
  473. package/src/views/FontLanguage.tsx +18 -0
  474. package/src/views/FontLanguage.types.ts +13 -0
  475. package/src/views/Slot.tsx +147 -0
  476. package/src/views/Stack.tsx +24 -0
  477. package/src/views/TamaguiProvider.tsx +56 -0
  478. package/src/views/Text.tsx +79 -0
  479. package/src/views/Theme.tsx +72 -0
  480. package/src/views/ThemeInverse.tsx +33 -0
  481. package/src/views/ThemeProvider.tsx +63 -0
  482. package/src/views/ThemeReset.tsx +43 -0
  483. package/types/Tamagui.d.ts +7 -9
  484. package/types/addTheme.d.ts +11 -0
  485. package/types/config.d.ts +47 -0
  486. package/types/constants/constants.d.ts +1 -1
  487. package/types/constants/isDevTools.d.ts +2 -0
  488. package/types/constants/platform.d.ts +7 -6
  489. package/types/constants/platform.native.d.ts +13 -0
  490. package/types/contexts/FontLanguageContext.d.ts +5 -0
  491. package/types/{views → contexts}/TextAncestorContext.d.ts +0 -0
  492. package/types/{ThemeContext.d.ts → contexts/ThemeContext.d.ts} +1 -1
  493. package/types/createComponent.d.ts +32 -15
  494. package/types/createShorthands.d.ts +2 -1
  495. package/types/createTamagui.d.ts +2 -17
  496. package/types/createTheme.d.ts +1 -1
  497. package/types/createTokens.d.ts +5 -6
  498. package/types/createVariable.d.ts +24 -12
  499. package/types/createVariables.d.ts +10 -0
  500. package/types/helpers/RNComponents.d.ts +1 -1
  501. package/types/helpers/ThemeManager.d.ts +46 -0
  502. package/types/helpers/assignNativePropsToWeb.d.ts +2 -0
  503. package/types/helpers/assignNativePropsToWeb.native.d.ts +2 -0
  504. package/types/helpers/calc.d.ts +17 -0
  505. package/types/helpers/createMediaStyle.d.ts +2 -4
  506. package/types/helpers/createPropMapper.d.ts +6 -3
  507. package/types/helpers/expandStyle.d.ts +6 -0
  508. package/types/helpers/expandStyles.d.ts +26 -0
  509. package/types/helpers/getAnimationDriver.d.ts +6 -0
  510. package/types/helpers/getFont.d.ts +3 -0
  511. package/types/helpers/getFontLanguage.d.ts +2 -0
  512. package/types/helpers/getSize.d.ts +3 -2
  513. package/types/helpers/getSplitStyles.d.ts +16 -9
  514. package/types/helpers/getStackSize.d.ts +8 -0
  515. package/types/helpers/getStylesAtomic.d.ts +17 -22
  516. package/types/helpers/getThemeCSSRules.d.ts +8 -0
  517. package/types/helpers/getThemeCSSRules.native.d.ts +2 -0
  518. package/types/helpers/getVariantExtras.d.ts +5 -0
  519. package/types/helpers/insertStyleRule.d.ts +7 -3
  520. package/types/helpers/isTamaguiComponent.d.ts +5 -0
  521. package/types/helpers/isTamaguiElement.d.ts +5 -1
  522. package/types/helpers/matchMedia.d.ts +1 -1
  523. package/types/helpers/mergeProps.d.ts +17 -0
  524. package/types/helpers/mergeTransform.d.ts +7 -0
  525. package/types/helpers/normalizeColor.d.ts +3 -0
  526. package/types/helpers/normalizeValueWithProperty.d.ts +6 -0
  527. package/types/helpers/pseudoDescriptors.d.ts +16 -0
  528. package/types/helpers/registerCSSVariable.d.ts +5 -0
  529. package/types/helpers/startTransition.d.ts +3 -0
  530. package/types/helpers/themes.d.ts +4 -0
  531. package/types/helpers/useShallowSetState.d.ts +3 -0
  532. package/types/helpers/validate.d.ts +0 -3
  533. package/types/hooks/getThemeUnwrapped.d.ts +3 -0
  534. package/types/hooks/useId.d.ts +1 -8
  535. package/types/hooks/useMedia.d.ts +20 -6
  536. package/types/hooks/useSafeRef.d.ts +4 -0
  537. package/types/hooks/useServerHooks.d.ts +4 -0
  538. package/types/hooks/useTheme.d.ts +21 -31
  539. package/types/index.d.ts +29 -9
  540. package/types/injectStyles.d.ts +7 -0
  541. package/types/insertFont.d.ts +9 -0
  542. package/types/static.d.ts +2 -15
  543. package/types/styled.d.ts +7 -3
  544. package/types/types.d.ts +303 -92
  545. package/types/updateTheme.d.ts +9 -0
  546. package/types/vendor/Pressability.d.ts +3 -0
  547. package/types/vendor/Pressability.native.d.ts +3 -0
  548. package/types/views/FontLanguage.d.ts +4 -0
  549. package/types/views/FontLanguage.native.d.ts +4 -0
  550. package/types/views/FontLanguage.types.d.ts +11 -0
  551. package/types/views/Slot.d.ts +5 -4
  552. package/types/views/TamaguiProvider.d.ts +4 -0
  553. package/types/views/Theme.d.ts +3 -9
  554. package/types/views/ThemeInverse.d.ts +4 -8
  555. package/types/views/ThemeProvider.d.ts +2 -1
  556. package/dist/cjs/ThemeContext.js.map +0 -7
  557. package/dist/cjs/ThemeManager.js.map +0 -7
  558. package/dist/cjs/conf.js.map +0 -7
  559. package/dist/cjs/constants/rnw.js +0 -46
  560. package/dist/cjs/constants/rnw.js.map +0 -7
  561. package/dist/cjs/defaultComponentState.js +0 -1
  562. package/dist/cjs/helpers/addStylesUsingClassname.js +0 -87
  563. package/dist/cjs/helpers/addStylesUsingClassname.js.map +0 -7
  564. package/dist/cjs/helpers/createTamaguiProvider.js +0 -93
  565. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  566. package/dist/cjs/helpers/fixNativeShadow.native.js +0 -53
  567. package/dist/cjs/helpers/fixNativeShadow.native.js.map +0 -7
  568. package/dist/cjs/helpers/getButtonSize.js +0 -45
  569. package/dist/cjs/helpers/getButtonSize.js.map +0 -7
  570. package/dist/cjs/helpers/getTextSize.js.map +0 -7
  571. package/dist/cjs/helpers/nativeGestureHandler.js.map +0 -7
  572. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  573. package/dist/cjs/helpers/wrapThemeManagerContext.js.map +0 -7
  574. package/dist/cjs/hooks/useFeatures.js +0 -228
  575. package/dist/cjs/hooks/useFeatures.js.map +0 -7
  576. package/dist/cjs/hooks/usePrevious.js +0 -1
  577. package/dist/cjs/hooks/usePrevious.js.map +0 -7
  578. package/dist/cjs/nativeGestureHandler.native.js.map +0 -7
  579. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  580. package/dist/esm/ThemeContext.js.map +0 -7
  581. package/dist/esm/ThemeManager.js.map +0 -7
  582. package/dist/esm/conf.js +0 -36
  583. package/dist/esm/conf.js.map +0 -7
  584. package/dist/esm/constants/rnw.js +0 -24
  585. package/dist/esm/constants/rnw.js.map +0 -7
  586. package/dist/esm/defaultComponentState.js +0 -1
  587. package/dist/esm/defaultComponentState.js.map +0 -7
  588. package/dist/esm/helpers/addStylesUsingClassname.js +0 -64
  589. package/dist/esm/helpers/addStylesUsingClassname.js.map +0 -7
  590. package/dist/esm/helpers/createTamaguiProvider.js +0 -40
  591. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  592. package/dist/esm/helpers/fixNativeShadow.native.js +0 -32
  593. package/dist/esm/helpers/fixNativeShadow.native.js.map +0 -7
  594. package/dist/esm/helpers/getButtonSize.js +0 -24
  595. package/dist/esm/helpers/getButtonSize.js.map +0 -7
  596. package/dist/esm/helpers/getTextSize.js.map +0 -7
  597. package/dist/esm/helpers/nativeGestureHandler.js +0 -7
  598. package/dist/esm/helpers/nativeGestureHandler.js.map +0 -7
  599. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  600. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  601. package/dist/esm/helpers/wrapThemeManagerContext.js +0 -14
  602. package/dist/esm/helpers/wrapThemeManagerContext.js.map +0 -7
  603. package/dist/esm/hooks/useFeatures.js +0 -173
  604. package/dist/esm/hooks/useFeatures.js.map +0 -7
  605. package/dist/esm/hooks/usePrevious.js +0 -1
  606. package/dist/esm/hooks/usePrevious.js.map +0 -7
  607. package/dist/esm/nativeGestureHandler.native.js +0 -2
  608. package/dist/esm/nativeGestureHandler.native.js.map +0 -7
  609. package/dist/esm/views/TextAncestorContext.js +0 -18
  610. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  611. package/dist/jsx/Tamagui.js +0 -41
  612. package/dist/jsx/ThemeContext.js +0 -5
  613. package/dist/jsx/ThemeManager.js +0 -186
  614. package/dist/jsx/conf.js +0 -35
  615. package/dist/jsx/constants/constants.js +0 -17
  616. package/dist/jsx/constants/platform.js +0 -25
  617. package/dist/jsx/constants/rnw.js +0 -23
  618. package/dist/jsx/contexts/ButtonInsideButtonContext.js +0 -5
  619. package/dist/jsx/createComponent.js +0 -636
  620. package/dist/jsx/createFont.js +0 -27
  621. package/dist/jsx/createShorthands.js +0 -9
  622. package/dist/jsx/createTamagui.js +0 -201
  623. package/dist/jsx/createTheme.js +0 -6
  624. package/dist/jsx/createTokens.js +0 -28
  625. package/dist/jsx/createVariable.js +0 -48
  626. package/dist/jsx/defaultComponentState.js +0 -0
  627. package/dist/jsx/helpers/RNComponents.js +0 -11
  628. package/dist/jsx/helpers/addStylesUsingClassname.js +0 -63
  629. package/dist/jsx/helpers/areEqualSets.js +0 -15
  630. package/dist/jsx/helpers/createMediaStyle.js +0 -30
  631. package/dist/jsx/helpers/createPropMapper.js +0 -237
  632. package/dist/jsx/helpers/createShallowUpdate.js +0 -18
  633. package/dist/jsx/helpers/createTamaguiProvider.js +0 -34
  634. package/dist/jsx/helpers/extendStaticConfig.js +0 -61
  635. package/dist/jsx/helpers/fixNativeShadow.js +0 -7
  636. package/dist/jsx/helpers/fixNativeShadow.native.js +0 -31
  637. package/dist/jsx/helpers/getButtonSize.js +0 -23
  638. package/dist/jsx/helpers/getExpandedShorthands.js +0 -18
  639. package/dist/jsx/helpers/getSize.js +0 -12
  640. package/dist/jsx/helpers/getSplitStyles.js +0 -322
  641. package/dist/jsx/helpers/getStylesAtomic.js +0 -130
  642. package/dist/jsx/helpers/getStylesAtomic.native.js +0 -9
  643. package/dist/jsx/helpers/getTextSize.js +0 -33
  644. package/dist/jsx/helpers/insertStyleRule.js +0 -94
  645. package/dist/jsx/helpers/isObj.js +0 -6
  646. package/dist/jsx/helpers/isTamaguiElement.js +0 -10
  647. package/dist/jsx/helpers/matchMedia.js +0 -17
  648. package/dist/jsx/helpers/matchMedia.native.js +0 -8
  649. package/dist/jsx/helpers/nativeGestureHandler.js +0 -6
  650. package/dist/jsx/helpers/nativeGestureHandler.native.js +0 -1
  651. package/dist/jsx/helpers/proxyThemeVariables.js +0 -17
  652. package/dist/jsx/helpers/themeable.js +0 -24
  653. package/dist/jsx/helpers/validate.js +0 -75
  654. package/dist/jsx/helpers/withStaticProperties.js +0 -9
  655. package/dist/jsx/helpers/wrapThemeManagerContext.js +0 -10
  656. package/dist/jsx/hooks/useConstant.js +0 -14
  657. package/dist/jsx/hooks/useFeatures.js +0 -167
  658. package/dist/jsx/hooks/useId.js +0 -34
  659. package/dist/jsx/hooks/useIsMounted.js +0 -18
  660. package/dist/jsx/hooks/useIsTouchDevice.js +0 -16
  661. package/dist/jsx/hooks/useMedia.js +0 -158
  662. package/dist/jsx/hooks/usePressable.js +0 -13
  663. package/dist/jsx/hooks/usePrevious.js +0 -0
  664. package/dist/jsx/hooks/useTheme.js +0 -177
  665. package/dist/jsx/hooks/useUnmountEffect.js +0 -10
  666. package/dist/jsx/index.js +0 -54
  667. package/dist/jsx/nativeGestureHandler.native.js +0 -1
  668. package/dist/jsx/static.js +0 -16
  669. package/dist/jsx/styled.js +0 -47
  670. package/dist/jsx/types-rnw.js +0 -0
  671. package/dist/jsx/types.js +0 -0
  672. package/dist/jsx/views/Slot.js +0 -75
  673. package/dist/jsx/views/Stack.js +0 -12
  674. package/dist/jsx/views/Text.js +0 -56
  675. package/dist/jsx/views/TextAncestorContext.js +0 -15
  676. package/dist/jsx/views/Theme.js +0 -31
  677. package/dist/jsx/views/ThemeInverse.js +0 -27
  678. package/dist/jsx/views/ThemeProvider.js +0 -35
  679. package/dist/jsx/views/ThemeReset.js +0 -34
  680. package/types/Tamagui.d.ts.map +0 -1
  681. package/types/ThemeContext.d.ts.map +0 -1
  682. package/types/ThemeManager.d.ts +0 -49
  683. package/types/ThemeManager.d.ts.map +0 -1
  684. package/types/conf.d.ts +0 -27
  685. package/types/conf.d.ts.map +0 -1
  686. package/types/constants/constants.d.ts.map +0 -1
  687. package/types/constants/platform.d.ts.map +0 -1
  688. package/types/constants/rnw.d.ts +0 -2
  689. package/types/constants/rnw.d.ts.map +0 -1
  690. package/types/contexts/ButtonInsideButtonContext.d.ts.map +0 -1
  691. package/types/createComponent.d.ts.map +0 -1
  692. package/types/createFont.d.ts.map +0 -1
  693. package/types/createShorthands.d.ts.map +0 -1
  694. package/types/createTamagui.d.ts.map +0 -1
  695. package/types/createTheme.d.ts.map +0 -1
  696. package/types/createTokens.d.ts.map +0 -1
  697. package/types/createVariable.d.ts.map +0 -1
  698. package/types/defaultComponentState.d.ts +0 -1
  699. package/types/defaultComponentState.d.ts.map +0 -1
  700. package/types/helpers/RNComponents.d.ts.map +0 -1
  701. package/types/helpers/addStylesUsingClassname.d.ts +0 -3
  702. package/types/helpers/addStylesUsingClassname.d.ts.map +0 -1
  703. package/types/helpers/areEqualSets.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 -4
  707. package/types/helpers/createShallowUpdate.d.ts.map +0 -1
  708. package/types/helpers/createTamaguiProvider.d.ts +0 -7
  709. package/types/helpers/createTamaguiProvider.d.ts.map +0 -1
  710. package/types/helpers/extendStaticConfig.d.ts.map +0 -1
  711. package/types/helpers/fixNativeShadow.d.ts.map +0 -1
  712. package/types/helpers/fixNativeShadow.native.d.ts +0 -3
  713. package/types/helpers/fixNativeShadow.native.d.ts.map +0 -1
  714. package/types/helpers/getButtonSize.d.ts +0 -8
  715. package/types/helpers/getButtonSize.d.ts.map +0 -1
  716. package/types/helpers/getExpandedShorthands.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/getStylesAtomic.d.ts.map +0 -1
  720. package/types/helpers/getStylesAtomic.native.d.ts.map +0 -1
  721. package/types/helpers/getTextSize.d.ts +0 -3
  722. package/types/helpers/getTextSize.d.ts.map +0 -1
  723. package/types/helpers/insertStyleRule.d.ts.map +0 -1
  724. package/types/helpers/isObj.d.ts.map +0 -1
  725. package/types/helpers/isTamaguiElement.d.ts.map +0 -1
  726. package/types/helpers/matchMedia.d.ts.map +0 -1
  727. package/types/helpers/matchMedia.native.d.ts.map +0 -1
  728. package/types/helpers/nativeGestureHandler.d.ts +0 -2
  729. package/types/helpers/nativeGestureHandler.d.ts.map +0 -1
  730. package/types/helpers/nativeGestureHandler.native.d.ts +0 -2
  731. package/types/helpers/nativeGestureHandler.native.d.ts.map +0 -1
  732. package/types/helpers/proxyThemeVariables.d.ts.map +0 -1
  733. package/types/helpers/themeable.d.ts.map +0 -1
  734. package/types/helpers/validate.d.ts.map +0 -1
  735. package/types/helpers/withStaticProperties.d.ts.map +0 -1
  736. package/types/helpers/wrapThemeManagerContext.d.ts +0 -3
  737. package/types/helpers/wrapThemeManagerContext.d.ts.map +0 -1
  738. package/types/hooks/useConstant.d.ts.map +0 -1
  739. package/types/hooks/useFeatures.d.ts +0 -18
  740. package/types/hooks/useFeatures.d.ts.map +0 -1
  741. package/types/hooks/useId.d.ts.map +0 -1
  742. package/types/hooks/useIsMounted.d.ts.map +0 -1
  743. package/types/hooks/useIsTouchDevice.d.ts.map +0 -1
  744. package/types/hooks/useMedia.d.ts.map +0 -1
  745. package/types/hooks/usePressable.d.ts.map +0 -1
  746. package/types/hooks/usePrevious.d.ts +0 -1
  747. package/types/hooks/usePrevious.d.ts.map +0 -1
  748. package/types/hooks/useTheme.d.ts.map +0 -1
  749. package/types/hooks/useUnmountEffect.d.ts.map +0 -1
  750. package/types/index.d.ts.map +0 -1
  751. package/types/nativeGestureHandler.native.d.ts +0 -2
  752. package/types/nativeGestureHandler.native.d.ts.map +0 -1
  753. package/types/static.d.ts.map +0 -1
  754. package/types/styled.d.ts.map +0 -1
  755. package/types/types-rnw.d.ts.map +0 -1
  756. package/types/types.d.ts.map +0 -1
  757. package/types/views/Slot.d.ts.map +0 -1
  758. package/types/views/Stack.d.ts.map +0 -1
  759. package/types/views/Text.d.ts.map +0 -1
  760. package/types/views/TextAncestorContext.d.ts.map +0 -1
  761. package/types/views/Theme.d.ts.map +0 -1
  762. package/types/views/ThemeInverse.d.ts.map +0 -1
  763. package/types/views/ThemeProvider.d.ts.map +0 -1
  764. package/types/views/ThemeReset.d.ts.map +0 -1
@@ -0,0 +1,22 @@
1
+ import { SizeTokens, VariantSpreadExtras } from '../types'
2
+ import { getSize, stepTokenUpOrDown } from './getSize'
3
+
4
+ export type ScaleVariantExtras = Pick<VariantSpreadExtras<any>, 'tokens' | 'props' | 'fonts'>
5
+
6
+ export const getButtonSize = (val: SizeTokens | number, { tokens }: VariantSpreadExtras<any>) => {
7
+ if (typeof val === 'number') {
8
+ return {
9
+ paddingHorizontal: val * 0.25,
10
+ height: val,
11
+ borderRadius: val * 0.2,
12
+ }
13
+ }
14
+ const ySize = getSize(val, 0)
15
+ const xSize = stepTokenUpOrDown(tokens.space, val)
16
+ const radiusToken = tokens.radius[val] ?? tokens.radius['$4']
17
+ return {
18
+ paddingHorizontal: xSize,
19
+ height: ySize,
20
+ borderRadius: radiusToken,
21
+ }
22
+ }
@@ -0,0 +1,3 @@
1
+ export function getStylesAtomic() {
2
+ console.warn('no-op native')
3
+ }
@@ -0,0 +1,292 @@
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 hyphenateStyleName from 'hyphenate-style-name'
8
+ import type { TextStyle, ViewStyle } from 'react-native'
9
+
10
+ import { getConfig } from '../config'
11
+ import { TamaguiInternalConfig } from '../types'
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
+ // cache
170
+ type Value = Object | Array<any> | string | number
171
+ export type Style = { [key: string]: Value }
172
+ class Cache {
173
+ values: Record<string, any> = {}
174
+
175
+ get(key: string, valStr: string) {
176
+ return this.values[key]?.[valStr]
177
+ }
178
+
179
+ set(key: string, valStr: string, object: any) {
180
+ this.values[key] ??= {}
181
+ this.values[key][valStr] = object
182
+ }
183
+ }
184
+ const cache = new Cache()
185
+
186
+ function createDeclarationBlock(style: Style, important = false) {
187
+ let declarations = ''
188
+ for (const key in style) {
189
+ const prop = hyphenateStyleName(key)
190
+ const value = style[key]
191
+ declarations += `${prop}:${value}${important ? ` !important` : ''};`
192
+ }
193
+ return `{${declarations}}`
194
+ }
195
+
196
+ const pseudoSelectorPrefixes = (() => {
197
+ const res: Record<string, string> = {}
198
+ for (const key in pseudoDescriptors) {
199
+ const pseudo = pseudoDescriptors[key]
200
+ res[pseudo.name] = [...Array(pseudo.priority)].map(() => ':root').join('') + ' '
201
+ }
202
+ return res
203
+ })()
204
+
205
+ function createAtomicRules(
206
+ identifier: string,
207
+ property: string,
208
+ value: any,
209
+ pseudo?: PseudoDescriptor
210
+ ): string[] {
211
+ const selector = pseudo
212
+ ? `${pseudoSelectorPrefixes[pseudo.name]} .${identifier}:${pseudo.name}`
213
+ : `.${identifier}`
214
+ const important = !!pseudo
215
+
216
+ let rules: string[] = []
217
+
218
+ // Handle non-standard properties and object values that require multiple
219
+ // CSS rules to be created.
220
+ switch (property) {
221
+ // Equivalent to using '::placeholder'
222
+ case 'placeholderTextColor': {
223
+ const block = createDeclarationBlock({ color: value, opacity: 1 }, important)
224
+ rules.push(`${selector}::placeholder${block}`)
225
+ break
226
+ }
227
+
228
+ // all webkit prefixed rules
229
+ case 'backgroundClip':
230
+ case 'userSelect': {
231
+ const propertyCapitalized = `${property[0].toUpperCase()}${property.slice(1)}`
232
+ const webkitProperty = `Webkit${propertyCapitalized}`
233
+ const block = createDeclarationBlock(
234
+ { [property]: value, [webkitProperty]: value },
235
+ important
236
+ )
237
+ rules.push(`${selector}${block}`)
238
+ break
239
+ }
240
+
241
+ // Polyfill for additional 'pointer-events' values
242
+ // See d13f78622b233a0afc0c7a200c0a0792c8ca9e58
243
+ case 'pointerEvents': {
244
+ let finalValue = value
245
+ if (value === 'auto' || value === 'box-only') {
246
+ finalValue = 'auto'
247
+ if (value === 'box-only') {
248
+ rules.push(`${selector}>*${boxOnly}`)
249
+ }
250
+ } else if (value === 'none' || value === 'box-none') {
251
+ finalValue = 'none'
252
+ if (value === 'box-none') {
253
+ rules.push(`${selector}>*${boxNone}`)
254
+ }
255
+ }
256
+ const block = createDeclarationBlock({ pointerEvents: finalValue }, true)
257
+ rules.push(`${selector}${block}`)
258
+ break
259
+ }
260
+
261
+ // Polyfill for draft spec
262
+ // https://drafts.csswg.org/css-scrollbars-1/
263
+ case 'scrollbarWidth': {
264
+ if (value === 'none') {
265
+ rules.push(`${selector}::-webkit-scrollbar{display:none}`)
266
+ }
267
+ const block = createDeclarationBlock({ scrollbarWidth: value }, important)
268
+ rules.push(`${selector}${block}`)
269
+ break
270
+ }
271
+
272
+ default: {
273
+ const block = createDeclarationBlock({ [property]: value }, important)
274
+ rules.push(`${selector}${block}`)
275
+ break
276
+ }
277
+ }
278
+
279
+ // hover styles need to be conditional
280
+ // perhaps this can be generalized but for now lets just shortcut
281
+ // and hardcode for hover styles, if we need to later we can
282
+ // WEIRD SYNTAX, SEE:
283
+ // https://stackoverflow.com/questions/40532204/media-query-for-devices-supporting-hover
284
+ if (pseudo && pseudo.name === 'hover') {
285
+ rules = rules.map((r) => `@media not all and (hover: none) { ${r} }`)
286
+ }
287
+
288
+ return rules
289
+ }
290
+
291
+ const boxNone = createDeclarationBlock({ pointerEvents: 'auto' }, true)
292
+ 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,84 @@
1
+ import { getConfig } from '../config'
2
+ import { GenericFonts } from '../types'
3
+ import { LanguageContextType } from '../views/FontLanguage.types'
4
+
5
+ const extrasCache = new WeakMap()
6
+
7
+ export function getVariantExtras(
8
+ props: any,
9
+ languageContext?: LanguageContextType,
10
+ theme?: any,
11
+ defaultProps?: any,
12
+ avoidDefaultProps = false
13
+ ) {
14
+ const conf = getConfig()
15
+
16
+ if (extrasCache.has(props)) {
17
+ return extrasCache.get(props)
18
+ }
19
+
20
+ let fonts = conf.fontsParsed
21
+ if (languageContext) {
22
+ fonts = getFontsForLanguage(conf.fontsParsed, languageContext)
23
+ }
24
+
25
+ const next = {
26
+ fonts,
27
+ tokens: conf.tokensParsed,
28
+ theme,
29
+ // TODO do this in splitstlye
30
+ // we avoid passing in default props for media queries because that would confuse things like SizableText.size:
31
+ props: avoidDefaultProps
32
+ ? props
33
+ : new Proxy(props, {
34
+ // handles shorthands
35
+ get(target, key) {
36
+ const shorthand = conf.inverseShorthands[key as any]
37
+ // shorthands before longhand because a styled() with longhand combined with inline shorthand
38
+ // shorthand will always be the overriding key
39
+ if (shorthand && Reflect.has(target, shorthand)) {
40
+ return Reflect.get(target, shorthand)
41
+ }
42
+ if (Reflect.has(target, key)) {
43
+ return Reflect.get(target, key)
44
+ }
45
+ // these props may be extracted into classNames, but we still want to access them
46
+ // at runtime, so we proxy back to defaultProps but don't pass them
47
+ if (defaultProps) {
48
+ if (shorthand && Reflect.has(defaultProps, shorthand)) {
49
+ return Reflect.get(defaultProps, shorthand)
50
+ }
51
+ if (Reflect.has(defaultProps, key)) {
52
+ return Reflect.get(defaultProps, key)
53
+ }
54
+ }
55
+ },
56
+ }),
57
+ }
58
+
59
+ extrasCache.set(props, next)
60
+
61
+ return next
62
+ }
63
+
64
+ const fontLanguageCache = new WeakMap()
65
+
66
+ export function getFontsForLanguage(fonts: GenericFonts, language: LanguageContextType) {
67
+ if (fontLanguageCache.has(language)) {
68
+ return fontLanguageCache.get(language)
69
+ }
70
+ const next = {
71
+ ...fonts,
72
+ ...Object.fromEntries(
73
+ Object.entries(language).map(([name, lang]) => {
74
+ if (lang === 'default') {
75
+ return []
76
+ }
77
+ const langKey = `$${name}_${lang}`
78
+ return [`$${name}`, fonts[langKey]]
79
+ })
80
+ ),
81
+ }
82
+ fontLanguageCache.set(language, next)
83
+ return next
84
+ }
@@ -0,0 +1,150 @@
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 = {}
8
+ const allRules = {}
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] = process.env.NODE_ENV === 'development' ? cssRule.cssText : true
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
+ // // pointerevents can have more than one, others could to needs some refactor
138
+ for (const { identifier, rules } of rulesToInsert) {
139
+ if (allSelectors[identifier] || !sheet) return
140
+ allSelectors[identifier] = process.env.NODE_ENV === 'development' ? rules : true
141
+ updateRules(identifier, rules)
142
+ for (const rule of rules) {
143
+ sheet.insertRule(rule, sheet.cssRules.length)
144
+ }
145
+ }
146
+ }
147
+
148
+ export function shouldInsertStyleRules(styleObject: PartialStyleObject) {
149
+ return !allSelectors[styleObject.identifier]
150
+ }
@@ -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
+ }