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

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 (772) 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 +1 -1
  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 +268 -120
  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 +87 -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 +63 -65
  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 +1 -1
  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 +263 -121
  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 +82 -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 +50 -32
  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 +48 -16
  390. package/reset.css +25 -4
  391. package/src/Tamagui.ts +44 -0
  392. package/src/addTheme.ts +67 -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/constants/platform.native.ts +14 -0
  397. package/src/constants/platform.ts +41 -0
  398. package/src/contexts/ButtonInsideButtonContext.tsx +3 -0
  399. package/src/contexts/FontLanguageContext.tsx +5 -0
  400. package/src/contexts/TextAncestorContext.tsx +10 -0
  401. package/src/contexts/ThemeContext.tsx +5 -0
  402. package/src/createComponent.tsx +1599 -0
  403. package/src/createFont.ts +29 -0
  404. package/src/createShorthands.ts +5 -0
  405. package/src/createTamagui.ts +229 -0
  406. package/src/createTheme.ts +13 -0
  407. package/src/createTokens.ts +35 -0
  408. package/src/createVariable.ts +85 -0
  409. package/src/createVariables.ts +42 -0
  410. package/src/helpers/RNComponents.tsx +14 -0
  411. package/src/helpers/ThemeManager.tsx +235 -0
  412. package/src/helpers/areEqualSets.tsx +9 -0
  413. package/src/helpers/assignNativePropsToWeb.native.tsx +1 -0
  414. package/src/helpers/assignNativePropsToWeb.tsx +178 -0
  415. package/src/helpers/calc.ts +68 -0
  416. package/src/helpers/createMediaStyle.ts +48 -0
  417. package/src/helpers/createPropMapper.ts +523 -0
  418. package/src/helpers/expandStyle.ts +81 -0
  419. package/src/helpers/expandStyles.ts +106 -0
  420. package/src/helpers/extendStaticConfig.ts +76 -0
  421. package/src/helpers/fixNativeShadow.tsx +2 -0
  422. package/src/helpers/getAnimationDriver.tsx +5 -0
  423. package/src/helpers/getExpandedShorthands.ts +15 -0
  424. package/src/helpers/getFont.tsx +43 -0
  425. package/src/helpers/getFontLanguage.ts +2 -0
  426. package/src/helpers/getSize.ts +22 -0
  427. package/src/helpers/getSplitStyles.tsx +738 -0
  428. package/src/helpers/getStackSize.ts +22 -0
  429. package/src/helpers/getStylesAtomic.native.ts +3 -0
  430. package/src/helpers/getStylesAtomic.ts +292 -0
  431. package/src/helpers/getThemeCSSRules.native.ts +3 -0
  432. package/src/helpers/getThemeCSSRules.ts +105 -0
  433. package/src/helpers/getVariantExtras.tsx +84 -0
  434. package/src/helpers/insertStyleRule.tsx +150 -0
  435. package/src/helpers/isObj.ts +1 -0
  436. package/src/helpers/isTamaguiComponent.tsx +15 -0
  437. package/src/helpers/isTamaguiElement.tsx +12 -0
  438. package/src/helpers/matchMedia.native.ts +6 -0
  439. package/src/helpers/matchMedia.ts +16 -0
  440. package/src/helpers/mergeProps.ts +56 -0
  441. package/src/helpers/mergeTransform.ts +16 -0
  442. package/src/helpers/normalizeColor.ts +53 -0
  443. package/src/helpers/normalizeValueWithProperty.ts +80 -0
  444. package/src/helpers/proxyThemeVariables.tsx +18 -0
  445. package/src/helpers/pseudoDescriptors.ts +18 -0
  446. package/src/helpers/registerCSSVariable.ts +11 -0
  447. package/src/helpers/startTransition.ts +4 -0
  448. package/src/helpers/themeable.tsx +45 -0
  449. package/src/helpers/themes.ts +69 -0
  450. package/src/helpers/useShallowSetState.tsx +20 -0
  451. package/src/helpers/validate.ts +80 -0
  452. package/src/helpers/withStaticProperties.tsx +7 -0
  453. package/src/hooks/getThemeUnwrapped.tsx +8 -0
  454. package/src/hooks/useConstant.tsx +19 -0
  455. package/src/hooks/useId.tsx +1 -0
  456. package/src/hooks/useIsMounted.ts +16 -0
  457. package/src/hooks/useIsTouchDevice.tsx +20 -0
  458. package/src/hooks/useMedia.tsx +266 -0
  459. package/src/hooks/usePressable.tsx +9 -0
  460. package/src/hooks/useSafeRef.ts +49 -0
  461. package/src/hooks/useServerHooks.tsx +12 -0
  462. package/src/hooks/useTheme.tsx +299 -0
  463. package/src/hooks/useUnmountEffect.ts +5 -0
  464. package/src/index.ts +83 -0
  465. package/src/injectStyles.ts +20 -0
  466. package/src/insertFont.ts +70 -0
  467. package/src/static.ts +15 -0
  468. package/src/styled.tsx +198 -0
  469. package/src/types-rnw.tsx +162 -0
  470. package/src/types.tsx +1307 -0
  471. package/src/updateTheme.ts +23 -0
  472. package/src/vendor/Pressability.native.tsx +3 -0
  473. package/src/vendor/Pressability.tsx +2 -0
  474. package/src/views/FontLanguage.native.tsx +9 -0
  475. package/src/views/FontLanguage.tsx +18 -0
  476. package/src/views/FontLanguage.types.ts +13 -0
  477. package/src/views/Slot.tsx +151 -0
  478. package/src/views/Stack.tsx +24 -0
  479. package/src/views/TamaguiProvider.tsx +56 -0
  480. package/src/views/Text.tsx +79 -0
  481. package/src/views/Theme.tsx +72 -0
  482. package/src/views/ThemeInverse.tsx +33 -0
  483. package/src/views/ThemeProvider.tsx +63 -0
  484. package/src/views/ThemeReset.tsx +43 -0
  485. package/types/Tamagui.d.ts +6 -8
  486. package/types/addTheme.d.ts +11 -0
  487. package/types/conf.d.ts +4 -5
  488. package/types/config.d.ts +47 -0
  489. package/types/constants/constants.d.ts +1 -1
  490. package/types/constants/isDevTools.d.ts +2 -0
  491. package/types/constants/platform.d.ts +7 -6
  492. package/types/constants/platform.native.d.ts +13 -0
  493. package/types/contexts/FontLanguageContext.d.ts +5 -0
  494. package/types/{views → contexts}/TextAncestorContext.d.ts +0 -0
  495. package/types/{ThemeContext.d.ts → contexts/ThemeContext.d.ts} +1 -1
  496. package/types/createComponent.d.ts +32 -15
  497. package/types/createComponent.server.d.ts +36 -0
  498. package/types/createTamagui.d.ts +2 -17
  499. package/types/createTheme.d.ts +1 -1
  500. package/types/createTokens.d.ts +5 -6
  501. package/types/createVariable.d.ts +24 -12
  502. package/types/createVariables.d.ts +10 -0
  503. package/types/helpers/RNComponents.d.ts +1 -1
  504. package/types/helpers/ThemeManager.d.ts +46 -0
  505. package/types/helpers/assignNativePropsToWeb.d.ts +2 -0
  506. package/types/helpers/assignNativePropsToWeb.native.d.ts +2 -0
  507. package/types/helpers/calc.d.ts +17 -0
  508. package/types/helpers/createMediaStyle.d.ts +2 -4
  509. package/types/helpers/createPropMapper.d.ts +6 -3
  510. package/types/helpers/createShallowUpdate.d.ts +1 -2
  511. package/types/helpers/cssHash.d.ts +2 -0
  512. package/types/helpers/expandStyle.d.ts +6 -0
  513. package/types/helpers/expandStyles.d.ts +26 -0
  514. package/types/helpers/getAnimationDriver.d.ts +6 -0
  515. package/types/helpers/getFont.d.ts +3 -0
  516. package/types/helpers/getFontLanguage.d.ts +2 -0
  517. package/types/helpers/getSize.d.ts +3 -2
  518. package/types/helpers/getSplitStyles.d.ts +16 -9
  519. package/types/helpers/getStackSize.d.ts +8 -0
  520. package/types/helpers/getStylesAtomic.d.ts +17 -22
  521. package/types/helpers/getThemeCSSRules.d.ts +8 -0
  522. package/types/helpers/getThemeCSSRules.native.d.ts +2 -0
  523. package/types/helpers/getVariantExtras.d.ts +5 -0
  524. package/types/helpers/insertStyleRule.d.ts +7 -3
  525. package/types/helpers/isTamaguiComponent.d.ts +5 -0
  526. package/types/helpers/isTamaguiElement.d.ts +5 -1
  527. package/types/helpers/matchMedia.d.ts +1 -1
  528. package/types/helpers/mergeProps.d.ts +17 -0
  529. package/types/helpers/mergeTransform.d.ts +7 -0
  530. package/types/helpers/normalizeColor.d.ts +3 -0
  531. package/types/helpers/normalizeValueWithProperty.d.ts +6 -0
  532. package/types/helpers/pseudoDescriptors.d.ts +16 -0
  533. package/types/helpers/registerCSSVariable.d.ts +5 -0
  534. package/types/helpers/startTransition.d.ts +3 -0
  535. package/types/helpers/themes.d.ts +4 -0
  536. package/types/helpers/useAnimationDriver.d.ts +1 -0
  537. package/types/helpers/useShallowSetState.d.ts +3 -0
  538. package/types/helpers/validate.d.ts +0 -3
  539. package/types/hooks/getThemeUnwrapped.d.ts +3 -0
  540. package/types/hooks/useAnimationDriver.d.ts +1 -0
  541. package/types/hooks/useDidFinishSSR.d.ts +3 -0
  542. package/types/hooks/useFeatures.d.ts +10 -5
  543. package/types/hooks/useId.d.ts +1 -8
  544. package/types/hooks/useIsSSR.d.ts +4 -0
  545. package/types/hooks/useMedia.d.ts +20 -6
  546. package/types/hooks/useSafeRef.d.ts +4 -0
  547. package/types/hooks/useServerContext.d.ts +2 -0
  548. package/types/hooks/useServerHooks.d.ts +4 -0
  549. package/types/hooks/useTheme.d.ts +21 -31
  550. package/types/index.d.ts +29 -9
  551. package/types/injectStyles.d.ts +7 -0
  552. package/types/insertFont.d.ts +9 -0
  553. package/types/static.d.ts +2 -15
  554. package/types/styled.d.ts +7 -3
  555. package/types/types.d.ts +277 -77
  556. package/types/updateTheme.d.ts +9 -0
  557. package/types/vendor/Pressability.d.ts +3 -0
  558. package/types/vendor/Pressability.native.d.ts +3 -0
  559. package/types/views/FontLanguage.d.ts +4 -0
  560. package/types/views/FontLanguage.native.d.ts +4 -0
  561. package/types/views/FontLanguage.types.d.ts +11 -0
  562. package/types/views/Slot.d.ts +1 -0
  563. package/types/views/TamaguiProvider.d.ts +4 -0
  564. package/types/views/Theme.d.ts +3 -9
  565. package/types/views/ThemeInverse.d.ts +4 -8
  566. package/types/views/ThemeProvider.d.ts +2 -1
  567. package/dist/cjs/ThemeContext.js.map +0 -7
  568. package/dist/cjs/ThemeManager.js.map +0 -7
  569. package/dist/cjs/conf.js.map +0 -7
  570. package/dist/cjs/constants/rnw.js +0 -46
  571. package/dist/cjs/constants/rnw.js.map +0 -7
  572. package/dist/cjs/defaultComponentState.js +0 -1
  573. package/dist/cjs/helpers/addStylesUsingClassname.js +0 -87
  574. package/dist/cjs/helpers/addStylesUsingClassname.js.map +0 -7
  575. package/dist/cjs/helpers/createTamaguiProvider.js +0 -93
  576. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  577. package/dist/cjs/helpers/fixNativeShadow.native.js +0 -53
  578. package/dist/cjs/helpers/fixNativeShadow.native.js.map +0 -7
  579. package/dist/cjs/helpers/getButtonSize.js +0 -45
  580. package/dist/cjs/helpers/getButtonSize.js.map +0 -7
  581. package/dist/cjs/helpers/getTextSize.js.map +0 -7
  582. package/dist/cjs/helpers/nativeGestureHandler.js.map +0 -7
  583. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  584. package/dist/cjs/helpers/wrapThemeManagerContext.js.map +0 -7
  585. package/dist/cjs/hooks/useFeatures.js +0 -228
  586. package/dist/cjs/hooks/useFeatures.js.map +0 -7
  587. package/dist/cjs/hooks/usePrevious.js +0 -1
  588. package/dist/cjs/hooks/usePrevious.js.map +0 -7
  589. package/dist/cjs/nativeGestureHandler.native.js.map +0 -7
  590. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  591. package/dist/esm/ThemeContext.js.map +0 -7
  592. package/dist/esm/ThemeManager.js.map +0 -7
  593. package/dist/esm/conf.js +0 -36
  594. package/dist/esm/conf.js.map +0 -7
  595. package/dist/esm/constants/rnw.js +0 -24
  596. package/dist/esm/constants/rnw.js.map +0 -7
  597. package/dist/esm/defaultComponentState.js +0 -1
  598. package/dist/esm/defaultComponentState.js.map +0 -7
  599. package/dist/esm/helpers/addStylesUsingClassname.js +0 -64
  600. package/dist/esm/helpers/addStylesUsingClassname.js.map +0 -7
  601. package/dist/esm/helpers/createTamaguiProvider.js +0 -40
  602. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  603. package/dist/esm/helpers/fixNativeShadow.native.js +0 -32
  604. package/dist/esm/helpers/fixNativeShadow.native.js.map +0 -7
  605. package/dist/esm/helpers/getButtonSize.js +0 -24
  606. package/dist/esm/helpers/getButtonSize.js.map +0 -7
  607. package/dist/esm/helpers/getTextSize.js.map +0 -7
  608. package/dist/esm/helpers/nativeGestureHandler.js +0 -7
  609. package/dist/esm/helpers/nativeGestureHandler.js.map +0 -7
  610. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  611. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  612. package/dist/esm/helpers/wrapThemeManagerContext.js +0 -14
  613. package/dist/esm/helpers/wrapThemeManagerContext.js.map +0 -7
  614. package/dist/esm/hooks/useFeatures.js +0 -173
  615. package/dist/esm/hooks/useFeatures.js.map +0 -7
  616. package/dist/esm/hooks/usePrevious.js +0 -1
  617. package/dist/esm/hooks/usePrevious.js.map +0 -7
  618. package/dist/esm/nativeGestureHandler.native.js +0 -2
  619. package/dist/esm/nativeGestureHandler.native.js.map +0 -7
  620. package/dist/esm/views/TextAncestorContext.js +0 -18
  621. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  622. package/dist/jsx/Tamagui.js +0 -41
  623. package/dist/jsx/ThemeContext.js +0 -5
  624. package/dist/jsx/ThemeManager.js +0 -186
  625. package/dist/jsx/conf.js +0 -35
  626. package/dist/jsx/constants/constants.js +0 -17
  627. package/dist/jsx/constants/platform.js +0 -25
  628. package/dist/jsx/constants/rnw.js +0 -23
  629. package/dist/jsx/contexts/ButtonInsideButtonContext.js +0 -5
  630. package/dist/jsx/createComponent.js +0 -636
  631. package/dist/jsx/createFont.js +0 -27
  632. package/dist/jsx/createShorthands.js +0 -9
  633. package/dist/jsx/createTamagui.js +0 -201
  634. package/dist/jsx/createTheme.js +0 -6
  635. package/dist/jsx/createTokens.js +0 -28
  636. package/dist/jsx/createVariable.js +0 -48
  637. package/dist/jsx/defaultComponentState.js +0 -0
  638. package/dist/jsx/helpers/RNComponents.js +0 -11
  639. package/dist/jsx/helpers/addStylesUsingClassname.js +0 -63
  640. package/dist/jsx/helpers/areEqualSets.js +0 -15
  641. package/dist/jsx/helpers/createMediaStyle.js +0 -30
  642. package/dist/jsx/helpers/createPropMapper.js +0 -237
  643. package/dist/jsx/helpers/createShallowUpdate.js +0 -18
  644. package/dist/jsx/helpers/createTamaguiProvider.js +0 -34
  645. package/dist/jsx/helpers/extendStaticConfig.js +0 -61
  646. package/dist/jsx/helpers/fixNativeShadow.js +0 -7
  647. package/dist/jsx/helpers/fixNativeShadow.native.js +0 -31
  648. package/dist/jsx/helpers/getButtonSize.js +0 -23
  649. package/dist/jsx/helpers/getExpandedShorthands.js +0 -18
  650. package/dist/jsx/helpers/getSize.js +0 -12
  651. package/dist/jsx/helpers/getSplitStyles.js +0 -322
  652. package/dist/jsx/helpers/getStylesAtomic.js +0 -130
  653. package/dist/jsx/helpers/getStylesAtomic.native.js +0 -9
  654. package/dist/jsx/helpers/getTextSize.js +0 -33
  655. package/dist/jsx/helpers/insertStyleRule.js +0 -94
  656. package/dist/jsx/helpers/isObj.js +0 -6
  657. package/dist/jsx/helpers/isTamaguiElement.js +0 -10
  658. package/dist/jsx/helpers/matchMedia.js +0 -17
  659. package/dist/jsx/helpers/matchMedia.native.js +0 -8
  660. package/dist/jsx/helpers/nativeGestureHandler.js +0 -6
  661. package/dist/jsx/helpers/nativeGestureHandler.native.js +0 -1
  662. package/dist/jsx/helpers/proxyThemeVariables.js +0 -17
  663. package/dist/jsx/helpers/themeable.js +0 -24
  664. package/dist/jsx/helpers/validate.js +0 -75
  665. package/dist/jsx/helpers/withStaticProperties.js +0 -9
  666. package/dist/jsx/helpers/wrapThemeManagerContext.js +0 -10
  667. package/dist/jsx/hooks/useConstant.js +0 -14
  668. package/dist/jsx/hooks/useFeatures.js +0 -167
  669. package/dist/jsx/hooks/useId.js +0 -34
  670. package/dist/jsx/hooks/useIsMounted.js +0 -18
  671. package/dist/jsx/hooks/useIsTouchDevice.js +0 -16
  672. package/dist/jsx/hooks/useMedia.js +0 -158
  673. package/dist/jsx/hooks/usePressable.js +0 -13
  674. package/dist/jsx/hooks/usePrevious.js +0 -0
  675. package/dist/jsx/hooks/useTheme.js +0 -177
  676. package/dist/jsx/hooks/useUnmountEffect.js +0 -10
  677. package/dist/jsx/index.js +0 -54
  678. package/dist/jsx/nativeGestureHandler.native.js +0 -1
  679. package/dist/jsx/static.js +0 -16
  680. package/dist/jsx/styled.js +0 -47
  681. package/dist/jsx/types-rnw.js +0 -0
  682. package/dist/jsx/types.js +0 -0
  683. package/dist/jsx/views/Slot.js +0 -75
  684. package/dist/jsx/views/Stack.js +0 -12
  685. package/dist/jsx/views/Text.js +0 -56
  686. package/dist/jsx/views/TextAncestorContext.js +0 -15
  687. package/dist/jsx/views/Theme.js +0 -31
  688. package/dist/jsx/views/ThemeInverse.js +0 -27
  689. package/dist/jsx/views/ThemeProvider.js +0 -35
  690. package/dist/jsx/views/ThemeReset.js +0 -34
  691. package/types/Tamagui.d.ts.map +0 -1
  692. package/types/ThemeContext.d.ts.map +0 -1
  693. package/types/ThemeManager.d.ts +0 -49
  694. package/types/ThemeManager.d.ts.map +0 -1
  695. package/types/conf.d.ts.map +0 -1
  696. package/types/constants/constants.d.ts.map +0 -1
  697. package/types/constants/platform.d.ts.map +0 -1
  698. package/types/constants/rnw.d.ts +0 -2
  699. package/types/constants/rnw.d.ts.map +0 -1
  700. package/types/contexts/ButtonInsideButtonContext.d.ts.map +0 -1
  701. package/types/createComponent.d.ts.map +0 -1
  702. package/types/createFont.d.ts.map +0 -1
  703. package/types/createShorthands.d.ts.map +0 -1
  704. package/types/createTamagui.d.ts.map +0 -1
  705. package/types/createTheme.d.ts.map +0 -1
  706. package/types/createTokens.d.ts.map +0 -1
  707. package/types/createVariable.d.ts.map +0 -1
  708. package/types/defaultComponentState.d.ts +0 -1
  709. package/types/defaultComponentState.d.ts.map +0 -1
  710. package/types/helpers/RNComponents.d.ts.map +0 -1
  711. package/types/helpers/addStylesUsingClassname.d.ts +0 -3
  712. package/types/helpers/addStylesUsingClassname.d.ts.map +0 -1
  713. package/types/helpers/areEqualSets.d.ts.map +0 -1
  714. package/types/helpers/createMediaStyle.d.ts.map +0 -1
  715. package/types/helpers/createPropMapper.d.ts.map +0 -1
  716. package/types/helpers/createShallowUpdate.d.ts.map +0 -1
  717. package/types/helpers/createTamaguiProvider.d.ts +0 -7
  718. package/types/helpers/createTamaguiProvider.d.ts.map +0 -1
  719. package/types/helpers/extendStaticConfig.d.ts.map +0 -1
  720. package/types/helpers/fixNativeShadow.d.ts.map +0 -1
  721. package/types/helpers/fixNativeShadow.native.d.ts +0 -3
  722. package/types/helpers/fixNativeShadow.native.d.ts.map +0 -1
  723. package/types/helpers/getButtonSize.d.ts +0 -8
  724. package/types/helpers/getButtonSize.d.ts.map +0 -1
  725. package/types/helpers/getExpandedShorthands.d.ts.map +0 -1
  726. package/types/helpers/getSize.d.ts.map +0 -1
  727. package/types/helpers/getSplitStyles.d.ts.map +0 -1
  728. package/types/helpers/getStylesAtomic.d.ts.map +0 -1
  729. package/types/helpers/getStylesAtomic.native.d.ts.map +0 -1
  730. package/types/helpers/getTextSize.d.ts +0 -3
  731. package/types/helpers/getTextSize.d.ts.map +0 -1
  732. package/types/helpers/insertStyleRule.d.ts.map +0 -1
  733. package/types/helpers/isObj.d.ts.map +0 -1
  734. package/types/helpers/isTamaguiElement.d.ts.map +0 -1
  735. package/types/helpers/matchMedia.d.ts.map +0 -1
  736. package/types/helpers/matchMedia.native.d.ts.map +0 -1
  737. package/types/helpers/nativeGestureHandler.d.ts +0 -2
  738. package/types/helpers/nativeGestureHandler.d.ts.map +0 -1
  739. package/types/helpers/nativeGestureHandler.native.d.ts +0 -2
  740. package/types/helpers/nativeGestureHandler.native.d.ts.map +0 -1
  741. package/types/helpers/proxyThemeVariables.d.ts.map +0 -1
  742. package/types/helpers/themeable.d.ts.map +0 -1
  743. package/types/helpers/validate.d.ts.map +0 -1
  744. package/types/helpers/withStaticProperties.d.ts.map +0 -1
  745. package/types/helpers/wrapThemeManagerContext.d.ts +0 -3
  746. package/types/helpers/wrapThemeManagerContext.d.ts.map +0 -1
  747. package/types/hooks/useConstant.d.ts.map +0 -1
  748. package/types/hooks/useFeatures.d.ts.map +0 -1
  749. package/types/hooks/useId.d.ts.map +0 -1
  750. package/types/hooks/useIsMounted.d.ts.map +0 -1
  751. package/types/hooks/useIsTouchDevice.d.ts.map +0 -1
  752. package/types/hooks/useMedia.d.ts.map +0 -1
  753. package/types/hooks/usePressable.d.ts.map +0 -1
  754. package/types/hooks/usePrevious.d.ts +0 -1
  755. package/types/hooks/usePrevious.d.ts.map +0 -1
  756. package/types/hooks/useTheme.d.ts.map +0 -1
  757. package/types/hooks/useUnmountEffect.d.ts.map +0 -1
  758. package/types/index.d.ts.map +0 -1
  759. package/types/nativeGestureHandler.native.d.ts +0 -2
  760. package/types/nativeGestureHandler.native.d.ts.map +0 -1
  761. package/types/static.d.ts.map +0 -1
  762. package/types/styled.d.ts.map +0 -1
  763. package/types/types-rnw.d.ts.map +0 -1
  764. package/types/types.d.ts.map +0 -1
  765. package/types/views/Slot.d.ts.map +0 -1
  766. package/types/views/Stack.d.ts.map +0 -1
  767. package/types/views/Text.d.ts.map +0 -1
  768. package/types/views/TextAncestorContext.d.ts.map +0 -1
  769. package/types/views/Theme.d.ts.map +0 -1
  770. package/types/views/ThemeInverse.d.ts.map +0 -1
  771. package/types/views/ThemeProvider.d.ts.map +0 -1
  772. 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 { 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
+ // sometimes getting empty style rules from webpack... :/ only in dev
21
+ if (css.indexOf('{ }')) {
22
+ console.log('wah wah')
23
+ return false
24
+ }
25
+ console.groupCollapsed(`❌ Invalid transform, likely used deg/% improperly ${identifier}`)
26
+ console.log('rule:', rule)
27
+ console.trace()
28
+ console.groupEnd()
29
+ } else {
30
+ console.warn(`Missing transform`, identifier, css, rule)
31
+ }
32
+ return false
33
+ }
34
+ const startI = s + 'transform:'.length
35
+ const endI = css.indexOf(';')
36
+ const value = css.slice(startI, endI)
37
+ if (!insertedTransforms[identifier]) {
38
+ insertedTransforms[identifier] = value
39
+ return true
40
+ }
41
+ return false
42
+ }
43
+
44
+ const isClient = typeof document !== 'undefined'
45
+
46
+ // gets existing ones (client side)
47
+ // takes ~0.1ms for a fairly large page
48
+ // used now for three things:
49
+ // 1. debugging at dev time
50
+ // 2. avoid duplicate insert styles at runtime
51
+ // 3. used now for merging transforms atomically
52
+ const scannedNum = new WeakMap<CSSStyleSheet, number>()
53
+
54
+ export function updateInserted() {
55
+ if (process.env.NODE_ENV === 'test') return
56
+ if (!isClient) return
57
+ const sheets = document.styleSheets
58
+ if (!sheets) return
59
+ for (let i = 0; i < sheets.length; i++) {
60
+ const sheet = sheets[i]
61
+ if (!sheet) continue
62
+
63
+ // avoid errors on cross origin sheets
64
+ // https://stackoverflow.com/questions/49993633/uncaught-domexception-failed-to-read-the-cssrules-property
65
+ let rules: CSSRuleList
66
+ try {
67
+ rules = sheet.cssRules
68
+ } catch {
69
+ continue
70
+ }
71
+
72
+ const len = rules.length
73
+ const lastScanned = scannedNum.get(sheet) ?? 0
74
+ if (lastScanned === len) {
75
+ continue
76
+ }
77
+ for (let i = lastScanned; i < len; i++) {
78
+ const rule = rules[i]
79
+ const response = getTamaguiSelector(rule)
80
+ if (!response) {
81
+ continue
82
+ }
83
+ const [identifier, cssRule] = response
84
+ if (!allSelectors[identifier]) {
85
+ const isTransform = identifier.startsWith('_transform')
86
+ const shouldInsert = isTransform ? addTransform(identifier, cssRule.cssText, cssRule) : true
87
+ if (shouldInsert) {
88
+ allSelectors[identifier] = process.env.NODE_ENV === 'development' ? cssRule.cssText : true
89
+ }
90
+ }
91
+ }
92
+ scannedNum.set(sheet, i)
93
+ }
94
+ }
95
+
96
+ function getTamaguiSelector(rule: CSSRule | null): readonly [string, CSSStyleRule] | null {
97
+ if (rule instanceof CSSStyleRule) {
98
+ if (rule.selectorText.startsWith('._')) {
99
+ return [rule.selectorText.slice(1), rule]
100
+ }
101
+ if (rule.selectorText.startsWith(':root') && rule.selectorText.includes('._')) {
102
+ return [getIdentifierFromTamaguiSelector(rule.selectorText), 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
+ }